diff --git a/docs/genaisrc/technical.genai.js b/docs/genaisrc/review-docs.genai.js similarity index 100% rename from docs/genaisrc/technical.genai.js rename to docs/genaisrc/review-docs.genai.js diff --git a/docs/src/content/docs/reference/scripts/system.mdx b/docs/src/content/docs/reference/scripts/system.mdx index 30b4303f59..39d3209a25 100644 --- a/docs/src/content/docs/reference/scripts/system.mdx +++ b/docs/src/content/docs/reference/scripts/system.mdx @@ -1090,7 +1090,7 @@ defTool( if (frontmatter) { const files = [] for (const { filename } of res) { - const file = { + const file: WorkspaceFile & { frontmatter?: string } = { filename, } files.push(file) @@ -2108,7 +2108,11 @@ defTool( if (!matches?.length) return "No files found." const q = await host.promiseQueue(5) const files = await q.mapAll(matches, async ({ filename, content }) => { - const file = { + const file: WorkspaceFile & { + title?: string + description?: string + summary?: string + } = { filename, } try { diff --git a/package.json b/package.json index 665577e99e..213436d718 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "retrieval:search": "node packages/cli/built/genaiscript.cjs retrieval search lorem \"packages/sample/src/rag/*\"", "retrieval:codequery": "node packages/cli/built/genaiscript.cjs code query packages/core/src/progress.ts \"(interface_declaration) @i\"", "test:tokens": "node packages/cli/built/genaiscript.cjs retrieval tokens packages/sample/src/rag/*", - "test:system": "cd packages/core && node ../cli/built/genaiscript.cjs scripts compile", + "test:system": "cd packages/cli && node ./built/genaiscript.cjs scripts compile", "test:compile": "node packages/cli/built/genaiscript.cjs scripts compile", "test:fix": "node packages/cli/built/genaiscript.cjs scripts fix", "test:infomodel": "node packages/cli/built/genaiscript.cjs scripts model", diff --git a/packages/core/src/genaisrc/.gitattributes b/packages/cli/genaisrc/.gitattributes similarity index 100% rename from packages/core/src/genaisrc/.gitattributes rename to packages/cli/genaisrc/.gitattributes diff --git a/packages/core/src/genaisrc/.gitignore b/packages/cli/genaisrc/.gitignore similarity index 100% rename from packages/core/src/genaisrc/.gitignore rename to packages/cli/genaisrc/.gitignore diff --git a/packages/core/src/genaisrc/system.agent_data.genai.js b/packages/cli/genaisrc/system.agent_data.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.agent_data.genai.js rename to packages/cli/genaisrc/system.agent_data.genai.mts diff --git a/packages/core/src/genaisrc/system.agent_docs.genai.js b/packages/cli/genaisrc/system.agent_docs.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.agent_docs.genai.js rename to packages/cli/genaisrc/system.agent_docs.genai.mts diff --git a/packages/core/src/genaisrc/system.agent_fs.genai.js b/packages/cli/genaisrc/system.agent_fs.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.agent_fs.genai.js rename to packages/cli/genaisrc/system.agent_fs.genai.mts diff --git a/packages/core/src/genaisrc/system.agent_git.genai.js b/packages/cli/genaisrc/system.agent_git.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.agent_git.genai.js rename to packages/cli/genaisrc/system.agent_git.genai.mts diff --git a/packages/core/src/genaisrc/system.agent_github.genai.js b/packages/cli/genaisrc/system.agent_github.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.agent_github.genai.js rename to packages/cli/genaisrc/system.agent_github.genai.mts diff --git a/packages/core/src/genaisrc/system.agent_interpreter.genai.js b/packages/cli/genaisrc/system.agent_interpreter.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.agent_interpreter.genai.js rename to packages/cli/genaisrc/system.agent_interpreter.genai.mts diff --git a/packages/core/src/genaisrc/system.agent_planner.genai.js b/packages/cli/genaisrc/system.agent_planner.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.agent_planner.genai.js rename to packages/cli/genaisrc/system.agent_planner.genai.mts diff --git a/packages/core/src/genaisrc/system.agent_user_input.genai.js b/packages/cli/genaisrc/system.agent_user_input.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.agent_user_input.genai.js rename to packages/cli/genaisrc/system.agent_user_input.genai.mts diff --git a/packages/core/src/genaisrc/system.agent_video.genai.js b/packages/cli/genaisrc/system.agent_video.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.agent_video.genai.js rename to packages/cli/genaisrc/system.agent_video.genai.mts diff --git a/packages/core/src/genaisrc/system.agent_web.genai.js b/packages/cli/genaisrc/system.agent_web.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.agent_web.genai.js rename to packages/cli/genaisrc/system.agent_web.genai.mts diff --git a/packages/core/src/genaisrc/system.annotations.genai.js b/packages/cli/genaisrc/system.annotations.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.annotations.genai.js rename to packages/cli/genaisrc/system.annotations.genai.mts diff --git a/packages/core/src/genaisrc/system.assistant.genai.js b/packages/cli/genaisrc/system.assistant.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.assistant.genai.js rename to packages/cli/genaisrc/system.assistant.genai.mts diff --git a/packages/core/src/genaisrc/system.changelog.genai.js b/packages/cli/genaisrc/system.changelog.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.changelog.genai.js rename to packages/cli/genaisrc/system.changelog.genai.mts diff --git a/packages/core/src/genaisrc/system.diagrams.genai.js b/packages/cli/genaisrc/system.diagrams.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.diagrams.genai.js rename to packages/cli/genaisrc/system.diagrams.genai.mts diff --git a/packages/core/src/genaisrc/system.diff.genai.js b/packages/cli/genaisrc/system.diff.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.diff.genai.js rename to packages/cli/genaisrc/system.diff.genai.mts diff --git a/packages/core/src/genaisrc/system.english.genai.js b/packages/cli/genaisrc/system.english.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.english.genai.js rename to packages/cli/genaisrc/system.english.genai.mts diff --git a/packages/core/src/genaisrc/system.explanations.genai.js b/packages/cli/genaisrc/system.explanations.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.explanations.genai.js rename to packages/cli/genaisrc/system.explanations.genai.mts diff --git a/packages/core/src/genaisrc/system.files.genai.js b/packages/cli/genaisrc/system.files.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.files.genai.js rename to packages/cli/genaisrc/system.files.genai.mts diff --git a/packages/core/src/genaisrc/system.files_schema.genai.js b/packages/cli/genaisrc/system.files_schema.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.files_schema.genai.js rename to packages/cli/genaisrc/system.files_schema.genai.mts diff --git a/packages/core/src/genaisrc/system.fs_ask_file.genai.js b/packages/cli/genaisrc/system.fs_ask_file.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.fs_ask_file.genai.js rename to packages/cli/genaisrc/system.fs_ask_file.genai.mts diff --git a/packages/core/src/genaisrc/system.fs_data_query.genai.js b/packages/cli/genaisrc/system.fs_data_query.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.fs_data_query.genai.js rename to packages/cli/genaisrc/system.fs_data_query.genai.mts diff --git a/packages/core/src/genaisrc/system.fs_diff_files.genai.js b/packages/cli/genaisrc/system.fs_diff_files.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.fs_diff_files.genai.js rename to packages/cli/genaisrc/system.fs_diff_files.genai.mts diff --git a/packages/core/src/genaisrc/system.fs_find_files.genai.js b/packages/cli/genaisrc/system.fs_find_files.genai.mts similarity index 97% rename from packages/core/src/genaisrc/system.fs_find_files.genai.js rename to packages/cli/genaisrc/system.fs_find_files.genai.mts index 072c780eb2..77daa91315 100644 --- a/packages/core/src/genaisrc/system.fs_find_files.genai.js +++ b/packages/cli/genaisrc/system.fs_find_files.genai.mts @@ -60,7 +60,7 @@ defTool( if (frontmatter) { const files = [] for (const { filename } of res) { - const file = { + const file: WorkspaceFile & { frontmatter?: string } = { filename, } files.push(file) diff --git a/packages/core/src/genaisrc/system.fs_read_file.genai.js b/packages/cli/genaisrc/system.fs_read_file.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.fs_read_file.genai.js rename to packages/cli/genaisrc/system.fs_read_file.genai.mts diff --git a/packages/core/src/genaisrc/system.genai.js b/packages/cli/genaisrc/system.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.genai.js rename to packages/cli/genaisrc/system.genai.mts diff --git a/packages/core/src/genaisrc/system.git.genai.js b/packages/cli/genaisrc/system.git.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.git.genai.js rename to packages/cli/genaisrc/system.git.genai.mts diff --git a/packages/core/src/genaisrc/system.git_diff.genai.js b/packages/cli/genaisrc/system.git_diff.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.git_diff.genai.js rename to packages/cli/genaisrc/system.git_diff.genai.mts diff --git a/packages/core/src/genaisrc/system.git_info.genai.js b/packages/cli/genaisrc/system.git_info.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.git_info.genai.js rename to packages/cli/genaisrc/system.git_info.genai.mts diff --git a/packages/core/src/genaisrc/system.github_actions.genai.js b/packages/cli/genaisrc/system.github_actions.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.github_actions.genai.js rename to packages/cli/genaisrc/system.github_actions.genai.mts diff --git a/packages/core/src/genaisrc/system.github_files.genai.js b/packages/cli/genaisrc/system.github_files.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.github_files.genai.js rename to packages/cli/genaisrc/system.github_files.genai.mts diff --git a/packages/core/src/genaisrc/system.github_info.genai.js b/packages/cli/genaisrc/system.github_info.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.github_info.genai.js rename to packages/cli/genaisrc/system.github_info.genai.mts diff --git a/packages/core/src/genaisrc/system.github_issues.genai.js b/packages/cli/genaisrc/system.github_issues.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.github_issues.genai.js rename to packages/cli/genaisrc/system.github_issues.genai.mts diff --git a/packages/core/src/genaisrc/system.github_pulls.genai.js b/packages/cli/genaisrc/system.github_pulls.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.github_pulls.genai.js rename to packages/cli/genaisrc/system.github_pulls.genai.mts diff --git a/packages/core/src/genaisrc/system.math.genai.js b/packages/cli/genaisrc/system.math.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.math.genai.js rename to packages/cli/genaisrc/system.math.genai.mts diff --git a/packages/core/src/genaisrc/system.md_find_files.genai.js b/packages/cli/genaisrc/system.md_find_files.genai.mts similarity index 95% rename from packages/core/src/genaisrc/system.md_find_files.genai.js rename to packages/cli/genaisrc/system.md_find_files.genai.mts index 62991c4f15..f2b60e1600 100644 --- a/packages/core/src/genaisrc/system.md_find_files.genai.js +++ b/packages/cli/genaisrc/system.md_find_files.genai.mts @@ -36,7 +36,11 @@ defTool( if (!matches?.length) return "No files found." const q = await host.promiseQueue(5) const files = await q.mapAll(matches, async ({ filename, content }) => { - const file = { + const file: WorkspaceFile & { + title?: string + description?: string + summary?: string + } = { filename, } try { diff --git a/packages/core/src/genaisrc/system.md_frontmatter.genai.js b/packages/cli/genaisrc/system.md_frontmatter.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.md_frontmatter.genai.js rename to packages/cli/genaisrc/system.md_frontmatter.genai.mts diff --git a/packages/core/src/genaisrc/system.meta_prompt.genai.js b/packages/cli/genaisrc/system.meta_prompt.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.meta_prompt.genai.js rename to packages/cli/genaisrc/system.meta_prompt.genai.mts diff --git a/packages/core/src/genaisrc/system.meta_schema.genai.js b/packages/cli/genaisrc/system.meta_schema.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.meta_schema.genai.js rename to packages/cli/genaisrc/system.meta_schema.genai.mts diff --git a/packages/core/src/genaisrc/system.node_info.genai.js b/packages/cli/genaisrc/system.node_info.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.node_info.genai.js rename to packages/cli/genaisrc/system.node_info.genai.mts diff --git a/packages/core/src/genaisrc/system.node_test.genai.js b/packages/cli/genaisrc/system.node_test.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.node_test.genai.js rename to packages/cli/genaisrc/system.node_test.genai.mts diff --git a/packages/core/src/genaisrc/system.output_ini.genai.js b/packages/cli/genaisrc/system.output_ini.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.output_ini.genai.js rename to packages/cli/genaisrc/system.output_ini.genai.mts diff --git a/packages/core/src/genaisrc/system.output_json.genai.js b/packages/cli/genaisrc/system.output_json.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.output_json.genai.js rename to packages/cli/genaisrc/system.output_json.genai.mts diff --git a/packages/core/src/genaisrc/system.output_markdown.genai.js b/packages/cli/genaisrc/system.output_markdown.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.output_markdown.genai.js rename to packages/cli/genaisrc/system.output_markdown.genai.mts diff --git a/packages/core/src/genaisrc/system.output_plaintext.genai.js b/packages/cli/genaisrc/system.output_plaintext.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.output_plaintext.genai.js rename to packages/cli/genaisrc/system.output_plaintext.genai.mts diff --git a/packages/core/src/genaisrc/system.output_yaml.genai.js b/packages/cli/genaisrc/system.output_yaml.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.output_yaml.genai.js rename to packages/cli/genaisrc/system.output_yaml.genai.mts diff --git a/packages/core/src/genaisrc/system.planner.genai.js b/packages/cli/genaisrc/system.planner.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.planner.genai.js rename to packages/cli/genaisrc/system.planner.genai.mts diff --git a/packages/core/src/genaisrc/system.python.genai.js b/packages/cli/genaisrc/system.python.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.python.genai.js rename to packages/cli/genaisrc/system.python.genai.mts diff --git a/packages/core/src/genaisrc/system.python_code_interpreter.genai.js b/packages/cli/genaisrc/system.python_code_interpreter.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.python_code_interpreter.genai.js rename to packages/cli/genaisrc/system.python_code_interpreter.genai.mts diff --git a/packages/core/src/genaisrc/system.python_types.genai.js b/packages/cli/genaisrc/system.python_types.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.python_types.genai.js rename to packages/cli/genaisrc/system.python_types.genai.mts diff --git a/packages/core/src/genaisrc/system.retrieval_fuzz_search.genai.js b/packages/cli/genaisrc/system.retrieval_fuzz_search.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.retrieval_fuzz_search.genai.js rename to packages/cli/genaisrc/system.retrieval_fuzz_search.genai.mts diff --git a/packages/core/src/genaisrc/system.retrieval_vector_search.genai.js b/packages/cli/genaisrc/system.retrieval_vector_search.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.retrieval_vector_search.genai.js rename to packages/cli/genaisrc/system.retrieval_vector_search.genai.mts diff --git a/packages/core/src/genaisrc/system.retrieval_web_search.genai.js b/packages/cli/genaisrc/system.retrieval_web_search.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.retrieval_web_search.genai.js rename to packages/cli/genaisrc/system.retrieval_web_search.genai.mts diff --git a/packages/core/src/genaisrc/system.safety_canary_word.genai.js b/packages/cli/genaisrc/system.safety_canary_word.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.safety_canary_word.genai.js rename to packages/cli/genaisrc/system.safety_canary_word.genai.mts diff --git a/packages/core/src/genaisrc/system.safety_harmful_content.genai.js b/packages/cli/genaisrc/system.safety_harmful_content.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.safety_harmful_content.genai.js rename to packages/cli/genaisrc/system.safety_harmful_content.genai.mts diff --git a/packages/core/src/genaisrc/system.safety_jailbreak.genai.js b/packages/cli/genaisrc/system.safety_jailbreak.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.safety_jailbreak.genai.js rename to packages/cli/genaisrc/system.safety_jailbreak.genai.mts diff --git a/packages/core/src/genaisrc/system.safety_protected_material.genai.js b/packages/cli/genaisrc/system.safety_protected_material.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.safety_protected_material.genai.js rename to packages/cli/genaisrc/system.safety_protected_material.genai.mts diff --git a/packages/core/src/genaisrc/system.safety_ungrounded_content_summarization.genai.js b/packages/cli/genaisrc/system.safety_ungrounded_content_summarization.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.safety_ungrounded_content_summarization.genai.js rename to packages/cli/genaisrc/system.safety_ungrounded_content_summarization.genai.mts diff --git a/packages/core/src/genaisrc/system.safety_validate_harmful_content.genai.js b/packages/cli/genaisrc/system.safety_validate_harmful_content.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.safety_validate_harmful_content.genai.js rename to packages/cli/genaisrc/system.safety_validate_harmful_content.genai.mts diff --git a/packages/core/src/genaisrc/system.schema.genai.js b/packages/cli/genaisrc/system.schema.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.schema.genai.js rename to packages/cli/genaisrc/system.schema.genai.mts diff --git a/packages/core/src/genaisrc/system.tasks.genai.js b/packages/cli/genaisrc/system.tasks.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.tasks.genai.js rename to packages/cli/genaisrc/system.tasks.genai.mts diff --git a/packages/core/src/genaisrc/system.technical.genai.js b/packages/cli/genaisrc/system.technical.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.technical.genai.js rename to packages/cli/genaisrc/system.technical.genai.mts diff --git a/packages/core/src/genaisrc/system.tool_calls.genai.js b/packages/cli/genaisrc/system.tool_calls.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.tool_calls.genai.js rename to packages/cli/genaisrc/system.tool_calls.genai.mts diff --git a/packages/core/src/genaisrc/system.tools.genai.js b/packages/cli/genaisrc/system.tools.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.tools.genai.js rename to packages/cli/genaisrc/system.tools.genai.mts diff --git a/packages/core/src/genaisrc/system.transcribe.genai.js b/packages/cli/genaisrc/system.transcribe.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.transcribe.genai.js rename to packages/cli/genaisrc/system.transcribe.genai.mts diff --git a/packages/core/src/genaisrc/system.typescript.genai.js b/packages/cli/genaisrc/system.typescript.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.typescript.genai.js rename to packages/cli/genaisrc/system.typescript.genai.mts diff --git a/packages/core/src/genaisrc/system.user_input.genai.js b/packages/cli/genaisrc/system.user_input.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.user_input.genai.js rename to packages/cli/genaisrc/system.user_input.genai.mts diff --git a/packages/core/src/genaisrc/system.video.genai.js b/packages/cli/genaisrc/system.video.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.video.genai.js rename to packages/cli/genaisrc/system.video.genai.mts diff --git a/packages/core/src/genaisrc/system.vision_ask_images.genai.js b/packages/cli/genaisrc/system.vision_ask_images.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.vision_ask_images.genai.js rename to packages/cli/genaisrc/system.vision_ask_images.genai.mts diff --git a/packages/core/src/genaisrc/system.zero_shot_cot.genai.js b/packages/cli/genaisrc/system.zero_shot_cot.genai.mts similarity index 100% rename from packages/core/src/genaisrc/system.zero_shot_cot.genai.js rename to packages/cli/genaisrc/system.zero_shot_cot.genai.mts diff --git a/packages/cli/package.json b/packages/cli/package.json index 4ff31a6dd5..c68f1a22cc 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -25,7 +25,8 @@ "built/markdown.css", "built/codicon.css", "built/codicon.ttf", - "built/favicon.svg" + "built/favicon.svg", + "genaisrc/*.genai.mts" ], "publisher": "Microsoft", "repository": { diff --git a/packages/core/bundleprompts.js b/packages/core/bundleprompts.js index 5835137e21..f1a8142287 100644 --- a/packages/core/bundleprompts.js +++ b/packages/core/bundleprompts.js @@ -2,7 +2,7 @@ const { readdirSync, readFileSync, writeFileSync } = require("fs") const { parse } = require("json5") async function main() { - const dir = "./src/genaisrc" + const dir = "../cli/genaisrc" const fp = "./src/default_prompts.ts" const fmp = "../../docs/src/content/docs/reference/scripts/system.mdx" const fnp = "../../docs/src/components/BuiltinTools.mdx" @@ -11,10 +11,10 @@ async function main() { const promptMap = {} const prompts = readdirSync(dir) for (const prompt of prompts) { - if (!/\.genai\.js$/.test(prompt)) continue + if (!/\.genai\.m?ts$/.test(prompt)) continue const text = readFileSync(`${dir}/${prompt}`, "utf-8") if (/^system\./.test(prompt)) { - const id = prompt.replace(/\.genai\.m?js$/i, "") + const id = prompt.replace(/\.genai\.m?ts$/i, "") if (promptMap[id]) throw new Error(`duplicate prompt ${id}`) promptMap[id] = text } @@ -105,12 +105,6 @@ async function main() { console.log(`found ${functions.length} tools`) const text = `// autogenerated - node bundleprompts.mjs -export const defaultPrompts = Object.freeze>(${JSON.stringify( - promptMap, - null, - 4 - )}); - export const promptDefinitions = Object.freeze>(${JSON.stringify( promptDefs, null, diff --git a/packages/core/src/constants.ts b/packages/core/src/constants.ts index b02d2c06b7..c8538d216c 100644 --- a/packages/core/src/constants.ts +++ b/packages/core/src/constants.ts @@ -71,7 +71,6 @@ export const TRANSCRIPTION_MODEL_ID = "transcription" export const SPEECH_MODEL_ID = "speech" export const DEFAULT_FENCE_FORMAT: FenceFormat = "xml" export const DEFAULT_TEMPERATURE = 0.8 -export const BUILTIN_PREFIX = "_builtin/" export const CACHE_LLMREQUEST_PREFIX = "genaiscript/cache/llm/" export const CACHE_AIREQUEST_TRACE_PREFIX = "genaiscript/cache/ai/trace/" export const CACHE_AIREQUEST_TEXT_PREFIX = "genaiscript/cache/ai/text/" diff --git a/packages/core/src/genaisrc/jsconfig.json b/packages/core/src/genaisrc/jsconfig.json deleted file mode 100644 index 4c21c58ce6..0000000000 --- a/packages/core/src/genaisrc/jsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "compilerOptions": { - "lib": [ - "ES2022" - ], - "target": "ES2022", - "module": "ES2022", - "moduleDetection": "force", - "checkJs": true, - "allowJs": true, - "skipLibCheck": true - }, - "include": [ - "*.js", - "./genaiscript.d.ts" - ] -} \ No newline at end of file diff --git a/packages/core/src/genaisrc/tsconfig.json b/packages/core/src/genaisrc/tsconfig.json deleted file mode 100644 index 510eefe8f9..0000000000 --- a/packages/core/src/genaisrc/tsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "compilerOptions": { - "lib": [ - "ES2022" - ], - "target": "ES2023", - "module": "NodeNext", - "moduleDetection": "force", - "moduleResolution": "nodenext", - "checkJs": true, - "allowJs": true, - "skipLibCheck": true, - "noEmit": true, - "allowImportingTsExtensions": true - }, - "include": [ - "*.mjs", - "*.mts", - "./genaiscript.d.ts" - ] -} \ No newline at end of file diff --git a/packages/core/src/parser.ts b/packages/core/src/parser.ts index 5d214154a8..891b2a45ae 100644 --- a/packages/core/src/parser.ts +++ b/packages/core/src/parser.ts @@ -1,12 +1,15 @@ // Importing utility functions and constants from other files -import { logVerbose, strcmp } from "./util" // String comparison function -import { defaultPrompts } from "./default_prompts" // Default prompt data +import { logVerbose, logWarn, strcmp } from "./util" // String comparison function import { parsePromptScript } from "./template" // Function to parse scripts import { readText } from "./fs" // Function to read text from a file -import { BUILTIN_PREFIX } from "./constants" // Constants for MIME types and prefixes +import { GENAI_ANYTS_REGEX } from "./constants" // Constants for MIME types and prefixes import { Project } from "./server/messages" import { resolveSystems } from "./systems" import { resolveScriptParametersSchema } from "./vars" +import { dirname, join, resolve } from "node:path" +import { fileURLToPath } from "node:url" +import { readdir } from "node:fs/promises" +import { uniq } from "es-toolkit" /** * Converts a string to a character position represented as [row, column]. @@ -30,25 +33,44 @@ export async function parseProject(options: { scriptFiles: string[] }) { const prj: Project = { scripts: [], diagnostics: [], - } // Initialize a new project instance - - // Clone the default prompts - const deflPr: Record = Object.assign({}, defaultPrompts) - + } + const genaisrcDir = resolve( + join( + dirname(dirname(__filename ?? fileURLToPath(import.meta.url))), + "genaisrc" + ) + ) // ignore esbuild warning + const systemPrompts = await ( + await readdir(genaisrcDir) + ).filter((f) => GENAI_ANYTS_REGEX.test(f)) // Process each script file, parsing its content and updating the project - for (const f of scriptFiles) { - const tmpl = await parsePromptScript(f, await readText(f), prj) + const scripts: Record = {} + for (const fn of systemPrompts) { + const f = join(genaisrcDir, fn) + const tmpl = await parsePromptScript(f, await readText(f)) if (!tmpl) { - logVerbose(`skipping invalid script file: ${f}`) + logWarn(`skipping invalid system script: ${fn}`) continue } // Skip if no template is parsed - delete deflPr[tmpl.id] // Remove the parsed template from defaults prj.scripts.push(tmpl) // Add to project templates + scripts[tmpl.id] = tmpl } - // Add remaining default prompts to the project - for (const [id, v] of Object.entries(deflPr)) { - prj.scripts.push(await parsePromptScript(BUILTIN_PREFIX + id, v, prj)) + for (const f of uniq(scriptFiles).filter( + (f) => resolve(dirname(f)) !== genaisrcDir + )) { + const tmpl = await parsePromptScript(f, await readText(f)) + if (!tmpl) { + logWarn(`skipping invalid script ${f}`) + continue + } // Skip if no template is parsed + if (scripts[tmpl.id]) { + logWarn(`duplicate script '${tmpl.id}' (${f})`) + logVerbose(` already defined in ${scripts[tmpl.id].filename}`) + continue + } + prj.scripts.push(tmpl) // Add t + scripts[tmpl.id] = tmpl } /** diff --git a/packages/core/src/scripts.ts b/packages/core/src/scripts.ts index b9dab61354..54b2760d6f 100644 --- a/packages/core/src/scripts.ts +++ b/packages/core/src/scripts.ts @@ -33,14 +33,13 @@ export async function fixPromptDefinitions(project: Project) { const { dirname, ts, js } = folder { const fn = host.path.join(dirname, ".gitignore") - const current = await tryReadText(fn) - const content = dedent`# auto-generated - genaiscript.d.ts + const current = (await tryReadText(fn)) || "" + const content = dedent`genaiscript.d.ts tsconfig.json jsconfig.json` - if (current !== content) { + if (!current.includes(content)) { logVerbose(`updating ${fn}`) - await writeText(fn, content) + await writeText(fn, current + "\n#GenAIScript\n" + content) } } for (let [defName, defContent] of Object.entries(promptDefinitions)) { diff --git a/packages/core/src/systems.ts b/packages/core/src/systems.ts index 50b82f0d1b..299c7d955c 100644 --- a/packages/core/src/systems.ts +++ b/packages/core/src/systems.ts @@ -101,7 +101,7 @@ export function resolveSystems( if (responseSchema && !responseType) systems.push("system.output_json") // Include tools-related systems if specified in the script - if (tools.length) { + if (tools.length || resolvedTools?.length) { systems.push("system.tools") // Resolve and add each tool's systems based on its definition in the project tools.forEach((tool) => diff --git a/packages/core/src/template.ts b/packages/core/src/template.ts index 155f9cc11e..20f8249635 100644 --- a/packages/core/src/template.ts +++ b/packages/core/src/template.ts @@ -4,13 +4,10 @@ * data types and formats. */ -import { Project } from "./server/messages" -import { BUILTIN_PREFIX, GENAI_ANY_REGEX, PROMPTY_REGEX } from "./constants" -import { errorMessage } from "./error" +import { GENAI_ANY_REGEX, PROMPTY_REGEX } from "./constants" import { host } from "./host" import { JSON5TryParse } from "./json5" import { humanize } from "inflection" -import { validateSchema } from "./schema" import { promptyParse, promptyToGenAIScript } from "./prompty" /** @@ -76,11 +73,7 @@ function parsePromptScriptTools(jsSource: string) { * @param finalizer - Finalizer function to perform additional validation. * @returns The parsed PromptScript or undefined in case of errors. */ -async function parsePromptTemplateCore( - filename: string, - content: string, - prj: Project -) { +async function parsePromptTemplateCore(filename: string, content: string) { const r = { id: templateIdFromFileName(filename), title: humanize( @@ -88,8 +81,7 @@ async function parsePromptTemplateCore( ), jsSource: content, } as PromptScript - if (!filename.startsWith(BUILTIN_PREFIX)) - r.filename = host.path.resolve(filename) + r.filename = host.path.resolve(filename) const meta = parsePromptScriptMeta(r.jsSource) Object.assign(r, meta) return r @@ -103,11 +95,7 @@ async function parsePromptTemplateCore( * @param prj - The Project instance containing diagnostics. * @returns The parsed PromptScript or undefined in case of errors. */ -export async function parsePromptScript( - filename: string, - content: string, - prj: Project -) { +export async function parsePromptScript(filename: string, content: string) { let text: string = undefined if (PROMPTY_REGEX.test(filename)) { text = content @@ -115,7 +103,7 @@ export async function parsePromptScript( content = await promptyToGenAIScript(doc) } - const script = await parsePromptTemplateCore(filename, content, prj) + const script = await parsePromptTemplateCore(filename, content) if (text) script.text = text return script } diff --git a/packages/sample/src/poem.prompty b/packages/sample/src/short-poem.prompty similarity index 100% rename from packages/sample/src/poem.prompty rename to packages/sample/src/short-poem.prompty diff --git a/packages/vscode/src/markdowndocumentprovider.ts b/packages/vscode/src/markdowndocumentprovider.ts index 1447cb40ae..c2c5a50bd6 100644 --- a/packages/vscode/src/markdowndocumentprovider.ts +++ b/packages/vscode/src/markdowndocumentprovider.ts @@ -13,12 +13,8 @@ import { TRACE_NODE_PREFIX, CACHE_LLMREQUEST_PREFIX, CACHE_AIREQUEST_TRACE_PREFIX, - BUILTIN_PREFIX, - GENAI_ANY_REGEX, CACHE_AIREQUEST_TEXT_PREFIX, - GENAI_MJS_EXT, } from "../../core/src/constants" -import { defaultPrompts } from "../../core/src/default_prompts" import { extractFenced, renderFencedVariables } from "../../core/src/fence" import { prettifyMarkdown } from "../../core/src/markdown" import { @@ -131,12 +127,6 @@ ${prettifyMarkdown(md)} .replace(/\.md$/, "") return this.previewAIRequest(sha, "text") } - if (uri.path.startsWith(BUILTIN_PREFIX)) { - const id = uri.path - .slice(BUILTIN_PREFIX.length) - .replace(GENAI_ANY_REGEX, "") - return defaultPrompts[id] ?? `No such builtin prompt: ${id}` - } return "" } @@ -207,13 +197,6 @@ export function infoUri(path: string) { return vscode.Uri.from({ scheme: SCHEME, path }) } -export function builtinPromptUri(id: string) { - return vscode.Uri.from({ - scheme: SCHEME, - path: BUILTIN_PREFIX + id + GENAI_MJS_EXT, - }) -} - export function activateMarkdownTextDocumentContentProvider( state: ExtensionState ) { diff --git a/packages/vscode/src/promptcommands.ts b/packages/vscode/src/promptcommands.ts index e5fe3137d7..69f7fd9e2b 100644 --- a/packages/vscode/src/promptcommands.ts +++ b/packages/vscode/src/promptcommands.ts @@ -1,6 +1,5 @@ import * as vscode from "vscode" import { ExtensionState } from "./state" -import { builtinPromptUri } from "./markdowndocumentprovider" import { templatesToQuickPickItems } from "./fragmentcommands" import { registerCommand } from "./commands" import { createScript } from "../../core/src/scripts" @@ -67,9 +66,7 @@ export function activatePromptCommands(state: ExtensionState) { registerCommand( "genaiscript.prompt.navigate", async (prompt: PromptScript) => { - const uri = prompt.filename - ? host.toUri(prompt.filename) - : builtinPromptUri(prompt.id) + const uri = host.toUri(prompt.filename) await vscode.window.showTextDocument(uri) } )