>From Michael Blow <[email protected]>:

Michael Blow has uploaded this change for review. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/21044?usp=email )


Change subject: [NO ISSUE][HYR] Add annotation for citation for AI contributions
......................................................................

[NO ISSUE][HYR] Add annotation for citation for AI contributions

Change-Id: I00907d92d85ba9460b183794704a06ff73612329
---
A 
hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/annotations/AiProvenance.java
1 file changed, 173 insertions(+), 0 deletions(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/44/21044/1

diff --git 
a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/annotations/AiProvenance.java
 
b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/annotations/AiProvenance.java
new file mode 100644
index 0000000..e3fc808
--- /dev/null
+++ 
b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/annotations/AiProvenance.java
@@ -0,0 +1,173 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.hyracks.util.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ *
+ */
+@Retention(RetentionPolicy.SOURCE)
+@Target({ElementType.TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR, 
ElementType.FIELD})
+public @interface AiProvenance {
+    Agent agent();
+    Interface aiInterface();
+    AiContributionKind contributionKind();
+    String notes() default "";
+
+    enum AiContributionKind {
+        GENERATED,
+        ASSISTED,
+        REFACTORED,
+        TEST_GENERATED,
+        DOC_GENERATED
+    }
+
+    enum Agent {
+        // OpenAI
+        GPT_5_4("openai", "gpt-5.4", "GPT-5.4"),
+        GPT_5_3("openai", "gpt-5.3", "GPT-5.3"),
+        GPT_5_2("openai", "gpt-5.2", "GPT-5.2"),
+        GPT_4_1("openai", "gpt-4.1", "GPT-4.1"),
+        GPT_4O("openai", "gpt-4o", "GPT-4o"),
+        GPT_4O_MINI("openai", "gpt-4o-mini", "GPT-4o Mini"),
+
+        // Anthropic
+        CLAUDE_OPUS_3("anthropic", "claude-3-opus", "Claude 3 Opus"),
+        CLAUDE_SONNET_3_5("anthropic", "claude-3.5-sonnet", "Claude 3.5 
Sonnet"),
+        CLAUDE_HAIKU_3("anthropic", "claude-3-haiku", "Claude 3 Haiku"),
+
+        // Google
+        GEMINI_1_5_PRO("google", "gemini-1.5-pro", "Gemini 1.5 Pro"),
+        GEMINI_1_5_FLASH("google", "gemini-1.5-flash", "Gemini 1.5 Flash"),
+
+        // Meta
+        LLAMA_3_70B("meta", "llama-3-70b", "LLaMA 3 70B"),
+        LLAMA_3_8B("meta", "llama-3-8b", "LLaMA 3 8B"),
+
+        // Mistral
+        MISTRAL_LARGE("mistral", "mistral-large", "Mistral Large"),
+        MISTRAL_SMALL("mistral", "mistral-small", "Mistral Small"),
+        MIXTRAL_8X7B("mistral", "mixtral-8x7b", "Mixtral 8x7B"),
+
+        // Cohere
+        COMMAND_R_PLUS("cohere", "command-r-plus", "Command R+"),
+        COMMAND_R("cohere", "command-r", "Command R"),
+
+        // OSS / local
+        DEEPSEEK_CHAT("deepseek", "deepseek-chat", "DeepSeek Chat"),
+        DEEPSEEK_CODER("deepseek", "deepseek-coder", "DeepSeek Coder"),
+        QWEN_2("alibaba", "qwen-2", "Qwen 2"),
+        PHI_3("microsoft", "phi-3", "Phi-3"),
+
+        // Fallback
+        OTHER("other", "other", "Other");
+
+        private final String provider;
+        private final String modelId;
+        private final String displayName;
+
+        Agent(String provider, String modelId, String displayName) {
+            this.provider = provider;
+            this.modelId = modelId;
+            this.displayName = displayName;
+        }
+
+        public String provider() {
+            return provider;
+        }
+
+        public String modelId() {
+            return modelId;
+        }
+
+        public String displayName() {
+            return displayName;
+        }
+    }
+
+    enum Interface {
+
+        // Web / Chat UIs
+        CHATGPT_UI("openai", "chatgpt-ui", "ChatGPT"),
+        CLAUDE_UI("anthropic", "claude-ui", "Claude UI"),
+        GEMINI_UI("google", "gemini-ui", "Gemini UI"),
+        PERPLEXITY("perplexity", "perplexity", "Perplexity"),
+
+        // IDE integrations
+        GITHUB_COPILOT("github", "copilot", "GitHub Copilot"),
+        GEMINI_CODE_ASSIST("google", "gemini-code-assist", "Gemini Code 
Assist"),
+        CURSOR("cursor", "cursor", "Cursor"),
+        WINDSURF("windsurf", "windsurf", "Windsurf"),
+        INTELLIJ_AI_ASSISTANT("jetbrains", "ai-assistant", "JetBrains AI 
Assistant"),
+        VSCODE_AI_EXTENSION("microsoft", "vscode-ai", "VS Code AI Extension"),
+
+        // APIs / SDK usage
+        OPENAI_API("openai", "api", "OpenAI API"),
+        ANTHROPIC_API("anthropic", "api", "Anthropic API"),
+        GOOGLE_AI_API("google", "api", "Google AI API"),
+        GENERIC_API("generic", "api", "Generic API"),
+
+        // Agent / orchestration platforms
+        FACTORY("factory", "factory-ai", "Factory.ai"),
+        LANGCHAIN("langchain", "langchain", "LangChain"),
+        LLAMAINDEX("llamaindex", "llamaindex", "LlamaIndex"),
+        CUSTOM_AGENT("custom", "custom-agent", "Custom Agent Runtime"),
+
+        // CLI tools
+        OPENAI_CLI("openai", "cli", "OpenAI CLI"),
+        ANTHROPIC_CLI("anthropic", "cli", "Anthropic CLI"),
+        FACTORY_CLI("factory", "factory-cli", "Factory.ai CLI"),
+
+        // Fallback
+        OTHER("other", "other", "Other");
+
+        private final String provider;
+        private final String id;
+        private final String displayName;
+
+        Interface(String provider, String id, String displayName) {
+            this.provider = provider;
+            this.id = id;
+            this.displayName = displayName;
+        }
+
+        public String provider() {
+            return provider;
+        }
+
+        public String id() {
+            return id;
+        }
+
+        public String displayName() {
+            return displayName;
+        }
+
+        /**
+         * Useful for logging / tagging (e.g. "factory/factory-cli")
+         */
+        public String qualifiedName() {
+            return provider + "/" + id;
+        }
+    }
+}
\ No newline at end of file

--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/21044?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings?usp=email

Gerrit-MessageType: newchange
Gerrit-Project: asterixdb
Gerrit-Branch: phoenix
Gerrit-Change-Id: I00907d92d85ba9460b183794704a06ff73612329
Gerrit-Change-Number: 21044
Gerrit-PatchSet: 1
Gerrit-Owner: Michael Blow <[email protected]>

Reply via email to