>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]>
