@rryando/arcs 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +448 -0
- package/dist/cli/arcs-orchestrate-caveman.d.ts +16 -0
- package/dist/cli/arcs-orchestrate-caveman.d.ts.map +1 -0
- package/dist/cli/arcs-orchestrate-caveman.js +109 -0
- package/dist/cli/arcs-orchestrate-caveman.js.map +1 -0
- package/dist/cli/arcs-orchestrate.d.ts +2 -0
- package/dist/cli/arcs-orchestrate.d.ts.map +1 -0
- package/dist/cli/arcs-orchestrate.js +431 -0
- package/dist/cli/arcs-orchestrate.js.map +1 -0
- package/dist/cli/arg-parser.d.ts +20 -0
- package/dist/cli/arg-parser.d.ts.map +1 -0
- package/dist/cli/arg-parser.js +216 -0
- package/dist/cli/arg-parser.js.map +1 -0
- package/dist/cli/brief-renderer.d.ts +32 -0
- package/dist/cli/brief-renderer.d.ts.map +1 -0
- package/dist/cli/brief-renderer.js +67 -0
- package/dist/cli/brief-renderer.js.map +1 -0
- package/dist/cli/bundle-installer.d.ts +77 -0
- package/dist/cli/bundle-installer.d.ts.map +1 -0
- package/dist/cli/bundle-installer.js +328 -0
- package/dist/cli/bundle-installer.js.map +1 -0
- package/dist/cli/command-registry.d.ts +52 -0
- package/dist/cli/command-registry.d.ts.map +1 -0
- package/dist/cli/command-registry.js +68 -0
- package/dist/cli/command-registry.js.map +1 -0
- package/dist/cli/commands/batch.d.ts +2 -0
- package/dist/cli/commands/batch.d.ts.map +1 -0
- package/dist/cli/commands/batch.js +307 -0
- package/dist/cli/commands/batch.js.map +1 -0
- package/dist/cli/commands/brief.d.ts +2 -0
- package/dist/cli/commands/brief.d.ts.map +1 -0
- package/dist/cli/commands/brief.js +146 -0
- package/dist/cli/commands/brief.js.map +1 -0
- package/dist/cli/commands/bundle.d.ts +2 -0
- package/dist/cli/commands/bundle.d.ts.map +1 -0
- package/dist/cli/commands/bundle.js +90 -0
- package/dist/cli/commands/bundle.js.map +1 -0
- package/dist/cli/commands/dependency.d.ts +2 -0
- package/dist/cli/commands/dependency.d.ts.map +1 -0
- package/dist/cli/commands/dependency.js +260 -0
- package/dist/cli/commands/dependency.js.map +1 -0
- package/dist/cli/commands/diagnostics.d.ts +2 -0
- package/dist/cli/commands/diagnostics.d.ts.map +1 -0
- package/dist/cli/commands/diagnostics.js +91 -0
- package/dist/cli/commands/diagnostics.js.map +1 -0
- package/dist/cli/commands/diagram.d.ts +2 -0
- package/dist/cli/commands/diagram.d.ts.map +1 -0
- package/dist/cli/commands/diagram.js +305 -0
- package/dist/cli/commands/diagram.js.map +1 -0
- package/dist/cli/commands/done.d.ts +2 -0
- package/dist/cli/commands/done.d.ts.map +1 -0
- package/dist/cli/commands/done.js +140 -0
- package/dist/cli/commands/done.js.map +1 -0
- package/dist/cli/commands/graph.d.ts +2 -0
- package/dist/cli/commands/graph.d.ts.map +1 -0
- package/dist/cli/commands/graph.js +105 -0
- package/dist/cli/commands/graph.js.map +1 -0
- package/dist/cli/commands/index.d.ts +21 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +22 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/knowledge-search.d.ts +2 -0
- package/dist/cli/commands/knowledge-search.d.ts.map +1 -0
- package/dist/cli/commands/knowledge-search.js +43 -0
- package/dist/cli/commands/knowledge-search.js.map +1 -0
- package/dist/cli/commands/knowledge.d.ts +2 -0
- package/dist/cli/commands/knowledge.d.ts.map +1 -0
- package/dist/cli/commands/knowledge.js +416 -0
- package/dist/cli/commands/knowledge.js.map +1 -0
- package/dist/cli/commands/loop.d.ts +2 -0
- package/dist/cli/commands/loop.d.ts.map +1 -0
- package/dist/cli/commands/loop.js +192 -0
- package/dist/cli/commands/loop.js.map +1 -0
- package/dist/cli/commands/maintenance.d.ts +2 -0
- package/dist/cli/commands/maintenance.d.ts.map +1 -0
- package/dist/cli/commands/maintenance.js +231 -0
- package/dist/cli/commands/maintenance.js.map +1 -0
- package/dist/cli/commands/next.d.ts +2 -0
- package/dist/cli/commands/next.d.ts.map +1 -0
- package/dist/cli/commands/next.js +116 -0
- package/dist/cli/commands/next.js.map +1 -0
- package/dist/cli/commands/plan.d.ts +2 -0
- package/dist/cli/commands/plan.d.ts.map +1 -0
- package/dist/cli/commands/plan.js +340 -0
- package/dist/cli/commands/plan.js.map +1 -0
- package/dist/cli/commands/project-updates.d.ts +2 -0
- package/dist/cli/commands/project-updates.d.ts.map +1 -0
- package/dist/cli/commands/project-updates.js +243 -0
- package/dist/cli/commands/project-updates.js.map +1 -0
- package/dist/cli/commands/project.d.ts +2 -0
- package/dist/cli/commands/project.d.ts.map +1 -0
- package/dist/cli/commands/project.js +362 -0
- package/dist/cli/commands/project.js.map +1 -0
- package/dist/cli/commands/remember.d.ts +2 -0
- package/dist/cli/commands/remember.d.ts.map +1 -0
- package/dist/cli/commands/remember.js +70 -0
- package/dist/cli/commands/remember.js.map +1 -0
- package/dist/cli/commands/status.d.ts +2 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +104 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/task.d.ts +6 -0
- package/dist/cli/commands/task.d.ts.map +1 -0
- package/dist/cli/commands/task.js +361 -0
- package/dist/cli/commands/task.js.map +1 -0
- package/dist/cli/commands/utility.d.ts +9 -0
- package/dist/cli/commands/utility.d.ts.map +1 -0
- package/dist/cli/commands/utility.js +302 -0
- package/dist/cli/commands/utility.js.map +1 -0
- package/dist/cli/config.d.ts +42 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +134 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/dag-commands.d.ts +7 -0
- package/dist/cli/dag-commands.d.ts.map +1 -0
- package/dist/cli/dag-commands.js +152 -0
- package/dist/cli/dag-commands.js.map +1 -0
- package/dist/cli/diagram-renderer.d.ts +26 -0
- package/dist/cli/diagram-renderer.d.ts.map +1 -0
- package/dist/cli/diagram-renderer.js +118 -0
- package/dist/cli/diagram-renderer.js.map +1 -0
- package/dist/cli/help-generator.d.ts +21 -0
- package/dist/cli/help-generator.d.ts.map +1 -0
- package/dist/cli/help-generator.js +100 -0
- package/dist/cli/help-generator.js.map +1 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +95 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/instructions.d.ts +53 -0
- package/dist/cli/instructions.d.ts.map +1 -0
- package/dist/cli/instructions.js +219 -0
- package/dist/cli/instructions.js.map +1 -0
- package/dist/cli/lean-output.d.ts +15 -0
- package/dist/cli/lean-output.d.ts.map +1 -0
- package/dist/cli/lean-output.js +66 -0
- package/dist/cli/lean-output.js.map +1 -0
- package/dist/cli/md-renderer.d.ts +6 -0
- package/dist/cli/md-renderer.d.ts.map +1 -0
- package/dist/cli/md-renderer.js +396 -0
- package/dist/cli/md-renderer.js.map +1 -0
- package/dist/cli/output-envelope.d.ts +15 -0
- package/dist/cli/output-envelope.d.ts.map +1 -0
- package/dist/cli/output-envelope.js +61 -0
- package/dist/cli/output-envelope.js.map +1 -0
- package/dist/cli/setup.d.ts +11 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +415 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/cli/status-dashboard.d.ts +5 -0
- package/dist/cli/status-dashboard.d.ts.map +1 -0
- package/dist/cli/status-dashboard.js +248 -0
- package/dist/cli/status-dashboard.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/retrieval/bm25.d.ts +23 -0
- package/dist/retrieval/bm25.d.ts.map +1 -0
- package/dist/retrieval/bm25.js +92 -0
- package/dist/retrieval/bm25.js.map +1 -0
- package/dist/retrieval/cross-project-search.d.ts +30 -0
- package/dist/retrieval/cross-project-search.d.ts.map +1 -0
- package/dist/retrieval/cross-project-search.js +109 -0
- package/dist/retrieval/cross-project-search.js.map +1 -0
- package/dist/retrieval/graph-builder.d.ts +6 -0
- package/dist/retrieval/graph-builder.d.ts.map +1 -0
- package/dist/retrieval/graph-builder.js +196 -0
- package/dist/retrieval/graph-builder.js.map +1 -0
- package/dist/retrieval/graph-cache.d.ts +15 -0
- package/dist/retrieval/graph-cache.d.ts.map +1 -0
- package/dist/retrieval/graph-cache.js +66 -0
- package/dist/retrieval/graph-cache.js.map +1 -0
- package/dist/retrieval/graph-invalidate.d.ts +18 -0
- package/dist/retrieval/graph-invalidate.d.ts.map +1 -0
- package/dist/retrieval/graph-invalidate.js +23 -0
- package/dist/retrieval/graph-invalidate.js.map +1 -0
- package/dist/retrieval/graph-retrieval.d.ts +24 -0
- package/dist/retrieval/graph-retrieval.d.ts.map +1 -0
- package/dist/retrieval/graph-retrieval.js +165 -0
- package/dist/retrieval/graph-retrieval.js.map +1 -0
- package/dist/retrieval/graph-traverse.d.ts +3 -0
- package/dist/retrieval/graph-traverse.d.ts.map +1 -0
- package/dist/retrieval/graph-traverse.js +53 -0
- package/dist/retrieval/graph-traverse.js.map +1 -0
- package/dist/retrieval/graph-types.d.ts +37 -0
- package/dist/retrieval/graph-types.d.ts.map +1 -0
- package/dist/retrieval/graph-types.js +12 -0
- package/dist/retrieval/graph-types.js.map +1 -0
- package/dist/retrieval/index-builder.d.ts +21 -0
- package/dist/retrieval/index-builder.d.ts.map +1 -0
- package/dist/retrieval/index-builder.js +94 -0
- package/dist/retrieval/index-builder.js.map +1 -0
- package/dist/retrieval/knowledge-selection.d.ts +7 -0
- package/dist/retrieval/knowledge-selection.d.ts.map +1 -0
- package/dist/retrieval/knowledge-selection.js +80 -0
- package/dist/retrieval/knowledge-selection.js.map +1 -0
- package/dist/retrieval/task-scoped.d.ts +23 -0
- package/dist/retrieval/task-scoped.d.ts.map +1 -0
- package/dist/retrieval/task-scoped.js +51 -0
- package/dist/retrieval/task-scoped.js.map +1 -0
- package/dist/utils/content-assembly.d.ts +44 -0
- package/dist/utils/content-assembly.d.ts.map +1 -0
- package/dist/utils/content-assembly.js +101 -0
- package/dist/utils/content-assembly.js.map +1 -0
- package/dist/utils/dag.d.ts +28 -0
- package/dist/utils/dag.d.ts.map +1 -0
- package/dist/utils/dag.js +68 -0
- package/dist/utils/dag.js.map +1 -0
- package/dist/utils/diagram-generator.d.ts +17 -0
- package/dist/utils/diagram-generator.d.ts.map +1 -0
- package/dist/utils/diagram-generator.js +38 -0
- package/dist/utils/diagram-generator.js.map +1 -0
- package/dist/utils/errors.d.ts +40 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +83 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/file-lock.d.ts +13 -0
- package/dist/utils/file-lock.d.ts.map +1 -0
- package/dist/utils/file-lock.js +80 -0
- package/dist/utils/file-lock.js.map +1 -0
- package/dist/utils/git.d.ts +14 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +56 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/graphify-knowledge.d.ts +6 -0
- package/dist/utils/graphify-knowledge.d.ts.map +1 -0
- package/dist/utils/graphify-knowledge.js +60 -0
- package/dist/utils/graphify-knowledge.js.map +1 -0
- package/dist/utils/graphify.d.ts +49 -0
- package/dist/utils/graphify.d.ts.map +1 -0
- package/dist/utils/graphify.js +306 -0
- package/dist/utils/graphify.js.map +1 -0
- package/dist/utils/json-schemas.d.ts +723 -0
- package/dist/utils/json-schemas.d.ts.map +1 -0
- package/dist/utils/json-schemas.js +147 -0
- package/dist/utils/json-schemas.js.map +1 -0
- package/dist/utils/json.d.ts +15 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/json.js +39 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/knowledge-store.d.ts +49 -0
- package/dist/utils/knowledge-store.d.ts.map +1 -0
- package/dist/utils/knowledge-store.js +191 -0
- package/dist/utils/knowledge-store.js.map +1 -0
- package/dist/utils/loop-state.d.ts +51 -0
- package/dist/utils/loop-state.d.ts.map +1 -0
- package/dist/utils/loop-state.js +123 -0
- package/dist/utils/loop-state.js.map +1 -0
- package/dist/utils/paths.d.ts +16 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +66 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/plan-store.d.ts +46 -0
- package/dist/utils/plan-store.d.ts.map +1 -0
- package/dist/utils/plan-store.js +184 -0
- package/dist/utils/plan-store.js.map +1 -0
- package/dist/utils/project-documents.d.ts +20 -0
- package/dist/utils/project-documents.d.ts.map +1 -0
- package/dist/utils/project-documents.js +10 -0
- package/dist/utils/project-documents.js.map +1 -0
- package/dist/utils/project-memory.d.ts +16 -0
- package/dist/utils/project-memory.d.ts.map +1 -0
- package/dist/utils/project-memory.js +16 -0
- package/dist/utils/project-memory.js.map +1 -0
- package/dist/utils/project-resolver.d.ts +28 -0
- package/dist/utils/project-resolver.d.ts.map +1 -0
- package/dist/utils/project-resolver.js +119 -0
- package/dist/utils/project-resolver.js.map +1 -0
- package/dist/utils/quick-scan.d.ts +13 -0
- package/dist/utils/quick-scan.d.ts.map +1 -0
- package/dist/utils/quick-scan.js +156 -0
- package/dist/utils/quick-scan.js.map +1 -0
- package/dist/utils/schemas.d.ts +13 -0
- package/dist/utils/schemas.d.ts.map +1 -0
- package/dist/utils/schemas.js +6 -0
- package/dist/utils/schemas.js.map +1 -0
- package/dist/utils/slug.d.ts +10 -0
- package/dist/utils/slug.d.ts.map +1 -0
- package/dist/utils/slug.js +18 -0
- package/dist/utils/slug.js.map +1 -0
- package/dist/utils/stdin.d.ts +6 -0
- package/dist/utils/stdin.d.ts.map +1 -0
- package/dist/utils/stdin.js +25 -0
- package/dist/utils/stdin.js.map +1 -0
- package/dist/utils/storage-utils.d.ts +48 -0
- package/dist/utils/storage-utils.d.ts.map +1 -0
- package/dist/utils/storage-utils.js +175 -0
- package/dist/utils/storage-utils.js.map +1 -0
- package/dist/utils/task-store.d.ts +49 -0
- package/dist/utils/task-store.d.ts.map +1 -0
- package/dist/utils/task-store.js +178 -0
- package/dist/utils/task-store.js.map +1 -0
- package/dist/utils/template.d.ts +15 -0
- package/dist/utils/template.d.ts.map +1 -0
- package/dist/utils/template.js +27 -0
- package/dist/utils/template.js.map +1 -0
- package/dist/utils/tool-response.d.ts +37 -0
- package/dist/utils/tool-response.d.ts.map +1 -0
- package/dist/utils/tool-response.js +44 -0
- package/dist/utils/tool-response.js.map +1 -0
- package/dist/utils/workflow-policy.d.ts +50 -0
- package/dist/utils/workflow-policy.d.ts.map +1 -0
- package/dist/utils/workflow-policy.js +111 -0
- package/dist/utils/workflow-policy.js.map +1 -0
- package/dist/utils/workspace-match.d.ts +35 -0
- package/dist/utils/workspace-match.d.ts.map +1 -0
- package/dist/utils/workspace-match.js +58 -0
- package/dist/utils/workspace-match.js.map +1 -0
- package/opencode/arcs/.opencode/plugins/arcs.js +348 -0
- package/opencode/arcs/bundle-runtime.json +68 -0
- package/opencode/arcs/manifest.json +279 -0
- package/opencode/arcs/prompts/arcs-docs.txt +124 -0
- package/opencode/arcs/prompts/arcs-orchestrate-caveman.txt +529 -0
- package/opencode/arcs/prompts/arcs-orchestrate.txt +437 -0
- package/opencode/arcs/prompts/code-reviewer.txt +55 -0
- package/opencode/arcs/prompts/devil-advocate.txt +121 -0
- package/opencode/arcs/prompts/docs-researcher.txt +54 -0
- package/opencode/arcs/prompts/oncall-ops.txt +54 -0
- package/opencode/arcs/prompts/qa-analyst.txt +54 -0
- package/opencode/arcs/prompts/software-engineer.txt +48 -0
- package/opencode/arcs/prompts/system-architect.txt +60 -0
- package/opencode/arcs/prompts/tech-architect.txt +54 -0
- package/opencode/arcs/skills/brainstorming/SKILL.md +144 -0
- package/opencode/arcs/skills/brainstorming/scripts/frame-template.html +214 -0
- package/opencode/arcs/skills/brainstorming/scripts/helper.js +88 -0
- package/opencode/arcs/skills/brainstorming/scripts/server.js +338 -0
- package/opencode/arcs/skills/brainstorming/scripts/start-server.sh +137 -0
- package/opencode/arcs/skills/brainstorming/scripts/stop-server.sh +31 -0
- package/opencode/arcs/skills/brainstorming/spec-document-reviewer-prompt.md +50 -0
- package/opencode/arcs/skills/brainstorming/visual-companion.md +277 -0
- package/opencode/arcs/skills/caveman-commit/SKILL.md +51 -0
- package/opencode/arcs/skills/code-agent/SKILL.md +58 -0
- package/opencode/arcs/skills/deep-pr-review/SKILL.md +191 -0
- package/opencode/arcs/skills/deep-pr-review/graphify-diff.md +102 -0
- package/opencode/arcs/skills/deep-pr-review/review-template.md +69 -0
- package/opencode/arcs/skills/executing-plans/SKILL.md +91 -0
- package/opencode/arcs/skills/init-project/SKILL.md +150 -0
- package/opencode/arcs/skills/quick-dev/SKILL.md +47 -0
- package/opencode/arcs/skills/requesting-code-review/SKILL.md +47 -0
- package/opencode/arcs/skills/requesting-code-review/code-reviewer.md +179 -0
- package/opencode/arcs/skills/subagent-driven-development/SKILL.md +162 -0
- package/opencode/arcs/skills/subagent-driven-development/code-quality-reviewer-prompt.md +53 -0
- package/opencode/arcs/skills/subagent-driven-development/implementer-prompt.md +148 -0
- package/opencode/arcs/skills/subagent-driven-development/spec-reviewer-prompt.md +85 -0
- package/opencode/arcs/skills/systematic-debugging/SKILL.md +174 -0
- package/opencode/arcs/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/opencode/arcs/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/opencode/arcs/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/opencode/arcs/skills/systematic-debugging/find-polluter.sh +63 -0
- package/opencode/arcs/skills/systematic-debugging/phases-reference.md +168 -0
- package/opencode/arcs/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/opencode/arcs/skills/test-driven-development/SKILL.md +72 -0
- package/opencode/arcs/skills/test-driven-development/tdd-rationalizations-and-examples.md +157 -0
- package/opencode/arcs/skills/test-driven-development/testing-anti-patterns.md +299 -0
- package/opencode/arcs/skills/to-diagram/SKILL.md +235 -0
- package/opencode/arcs/skills/to-diagram/scripts/manage-diagram.mjs +963 -0
- package/opencode/arcs/skills/writing-plans/SKILL.md +179 -0
- package/opencode/arcs/skills/writing-plans/plan-document-reviewer-prompt.md +52 -0
- package/package.json +60 -0
- package/scripts/arcs-cli.mjs +45 -0
- package/skills/explore-dag.md +57 -0
- package/skills/init-project.md +105 -0
- package/skills/orchestrate.md +94 -0
- package/skills/update-docs.md +72 -0
- package/templates/dependency.md.tmpl +9 -0
- package/templates/knowledge.md.tmpl +15 -0
- package/templates/project-meta.json.tmpl +13 -0
- package/templates/project.md.tmpl +11 -0
- package/templates/task.md.tmpl +9 -0
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { dirname, resolve } from "node:path";
|
|
4
|
+
import { readJsonSafeSync } from "../utils/json.js";
|
|
5
|
+
import { ORCHESTRATE_PROMPT_TEXT } from "./arcs-orchestrate.js";
|
|
6
|
+
import { ORCHESTRATE_CAVEMAN_PROMPT_TEXT } from "./arcs-orchestrate-caveman.js";
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
// Helpers
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
/** Safely parse a JSON file. Returns empty object on any error. */
|
|
11
|
+
function readJsonFile(path) {
|
|
12
|
+
return readJsonSafeSync(path) ?? {};
|
|
13
|
+
}
|
|
14
|
+
/** Write JSON content to disk, creating parent dirs as needed. */
|
|
15
|
+
function writeJsonFile(path, data) {
|
|
16
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
17
|
+
writeFileSync(path, `${JSON.stringify(data, null, 2)}\n`, "utf-8");
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Deep-set a nested key path on an object (mutates in place).
|
|
21
|
+
* E.g. deepSet(obj, ["agent", "ARCS Orchestrator"], value)
|
|
22
|
+
*/
|
|
23
|
+
function _deepSet(obj, keys, value) {
|
|
24
|
+
let current = obj;
|
|
25
|
+
for (let i = 0; i < keys.length - 1; i++) {
|
|
26
|
+
const k = keys[i];
|
|
27
|
+
if (typeof current[k] !== "object" || current[k] === null || Array.isArray(current[k])) {
|
|
28
|
+
current[k] = {};
|
|
29
|
+
}
|
|
30
|
+
current = current[k];
|
|
31
|
+
}
|
|
32
|
+
current[keys[keys.length - 1]] = value;
|
|
33
|
+
}
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
// Agent Model Resolution
|
|
36
|
+
// ---------------------------------------------------------------------------
|
|
37
|
+
/** Tier assignment for each known agent. */
|
|
38
|
+
const AGENT_TIER_MAP = {
|
|
39
|
+
"software-engineer": "heavy",
|
|
40
|
+
"docs-researcher": "heavy",
|
|
41
|
+
"arcs-docs": "heavy",
|
|
42
|
+
"oncall-ops": "heavy",
|
|
43
|
+
"system-architect": "heavy",
|
|
44
|
+
plan: "heavy",
|
|
45
|
+
general: "heavy",
|
|
46
|
+
build: "standard",
|
|
47
|
+
"ARCS Orchestrator": "standard",
|
|
48
|
+
"ARCS Caveman": "standard",
|
|
49
|
+
explore: "light",
|
|
50
|
+
"code-reviewer": "light",
|
|
51
|
+
"tech-architect": "light",
|
|
52
|
+
"qa-analyst": "light",
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Resolves the model for a given agent based on tier config and per-agent overrides.
|
|
56
|
+
*/
|
|
57
|
+
function resolveAgentModel(agentName, tier, modelConfig) {
|
|
58
|
+
return modelConfig.perAgent?.[agentName] ?? modelConfig[tier];
|
|
59
|
+
}
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
// Public API
|
|
62
|
+
// ---------------------------------------------------------------------------
|
|
63
|
+
/**
|
|
64
|
+
* Formats a short summary of an IDE config path for display.
|
|
65
|
+
* Replaces $HOME with ~ for readability.
|
|
66
|
+
*/
|
|
67
|
+
export function displayPath(p) {
|
|
68
|
+
const home = homedir();
|
|
69
|
+
return p.startsWith(home) ? `~${p.slice(home.length)}` : p;
|
|
70
|
+
}
|
|
71
|
+
// ---------------------------------------------------------------------------
|
|
72
|
+
// OpenCode Agent Registration
|
|
73
|
+
// ---------------------------------------------------------------------------
|
|
74
|
+
/** Path to the OpenCode config directory. */
|
|
75
|
+
function opencodeConfigDir() {
|
|
76
|
+
return resolve(homedir(), ".config", "opencode");
|
|
77
|
+
}
|
|
78
|
+
/** Path to the OpenCode prompts directory. */
|
|
79
|
+
function opencodePromptsDir() {
|
|
80
|
+
return resolve(opencodeConfigDir(), "prompts");
|
|
81
|
+
}
|
|
82
|
+
/** Path to the ARCS orchestrator prompt file. */
|
|
83
|
+
function opencodePromptPath() {
|
|
84
|
+
return resolve(opencodePromptsDir(), "arcs-orchestrate.txt");
|
|
85
|
+
}
|
|
86
|
+
/** Path to the ARCS Caveman orchestrator prompt file. */
|
|
87
|
+
function opencodeCavemanPromptPath() {
|
|
88
|
+
return resolve(opencodePromptsDir(), "arcs-orchestrate-caveman.txt");
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* The OpenCode agent entry for ARCS orchestrator.
|
|
92
|
+
*/
|
|
93
|
+
export const ARCS_AGENT_ENTRY = {
|
|
94
|
+
description: "ARCS - (Orchestrator)",
|
|
95
|
+
mode: "primary",
|
|
96
|
+
prompt: "{file:./prompts/arcs-orchestrate.txt}",
|
|
97
|
+
color: "#00bcd4",
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* The OpenCode agent entry for ARCS Caveman — same capabilities as ARCS
|
|
101
|
+
* Orchestrator, but with caveman speech layered on top for token efficiency.
|
|
102
|
+
*/
|
|
103
|
+
export const ARCS_CAVEMAN_AGENT_ENTRY = {
|
|
104
|
+
description: "ARCS - Caveman (token-efficient orchestrator)",
|
|
105
|
+
mode: "primary",
|
|
106
|
+
prompt: "{file:./prompts/arcs-orchestrate-caveman.txt}",
|
|
107
|
+
color: "#d2691e",
|
|
108
|
+
};
|
|
109
|
+
/** The key used for the ARCS agent entry in opencode.json → agent.<key>. */
|
|
110
|
+
const ARCS_AGENT_KEY = "ARCS Orchestrator";
|
|
111
|
+
/** The key used for the ARCS Caveman agent entry. */
|
|
112
|
+
const ARCS_CAVEMAN_AGENT_KEY = "ARCS Caveman";
|
|
113
|
+
/**
|
|
114
|
+
* Checks whether the ARCS agent is already registered in opencode.json.
|
|
115
|
+
*/
|
|
116
|
+
export function opencodeHasAgent() {
|
|
117
|
+
const configFile = resolve(opencodeConfigDir(), "opencode.json");
|
|
118
|
+
if (!existsSync(configFile))
|
|
119
|
+
return false;
|
|
120
|
+
try {
|
|
121
|
+
const config = readJsonSafeSync(configFile) ?? {};
|
|
122
|
+
const agents = config.agent;
|
|
123
|
+
// Presence gate: if the orchestrator is registered, ARCS is "configured".
|
|
124
|
+
// writeOpencodeAgent() always installs both the orchestrator and Caveman,
|
|
125
|
+
// so existing installs auto-upgrade to gain Caveman on re-run.
|
|
126
|
+
return agents != null && ARCS_AGENT_KEY in agents;
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Registers the ARCS orchestrator agents (standard + Caveman) as primary
|
|
134
|
+
* agents in opencode.json. Also writes both prompt text files to
|
|
135
|
+
* ~/.config/opencode/prompts/.
|
|
136
|
+
*
|
|
137
|
+
* Both agents share full ARCS tool access and workflow rules; ARCS Caveman
|
|
138
|
+
* layers caveman-speak on top for token-efficient chat output.
|
|
139
|
+
*/
|
|
140
|
+
export function writeOpencodeAgent(modelConfig) {
|
|
141
|
+
const alreadyConfigured = opencodeHasAgent();
|
|
142
|
+
const configFile = resolve(opencodeConfigDir(), "opencode.json");
|
|
143
|
+
const promptFile = opencodePromptPath();
|
|
144
|
+
const cavemanPromptFile = opencodeCavemanPromptPath();
|
|
145
|
+
const existed = existsSync(configFile);
|
|
146
|
+
// Write both prompt text files
|
|
147
|
+
mkdirSync(opencodePromptsDir(), { recursive: true });
|
|
148
|
+
writeFileSync(promptFile, `${ORCHESTRATE_PROMPT_TEXT}\n`, "utf-8");
|
|
149
|
+
writeFileSync(cavemanPromptFile, `${ORCHESTRATE_CAVEMAN_PROMPT_TEXT}\n`, "utf-8");
|
|
150
|
+
// Merge agent entries into opencode.json with controlled key order:
|
|
151
|
+
// 1. ARCS Orchestrator (always first — controls Tab-cycle position in OpenCode)
|
|
152
|
+
// 2. ARCS Caveman (second — Tab once to reach token-efficient mode)
|
|
153
|
+
// 3. build (third, if already present in config)
|
|
154
|
+
// 4. all other existing agents in their original order
|
|
155
|
+
const existing = readJsonFile(configFile);
|
|
156
|
+
const existingAgents = (existing.agent ?? {});
|
|
157
|
+
// Primary agents get a model field resolved from tier map (standard) unless
|
|
158
|
+
// the user provided a perAgent override, which always wins.
|
|
159
|
+
const orchestratorEntry = { ...ARCS_AGENT_ENTRY };
|
|
160
|
+
if (modelConfig) {
|
|
161
|
+
orchestratorEntry.model = resolveAgentModel(ARCS_AGENT_KEY, AGENT_TIER_MAP[ARCS_AGENT_KEY] ?? "standard", modelConfig);
|
|
162
|
+
}
|
|
163
|
+
const cavemanEntry = { ...ARCS_CAVEMAN_AGENT_ENTRY };
|
|
164
|
+
if (modelConfig) {
|
|
165
|
+
cavemanEntry.model = resolveAgentModel(ARCS_CAVEMAN_AGENT_KEY, AGENT_TIER_MAP[ARCS_CAVEMAN_AGENT_KEY] ?? "standard", modelConfig);
|
|
166
|
+
}
|
|
167
|
+
const orderedAgents = {
|
|
168
|
+
[ARCS_AGENT_KEY]: orchestratorEntry,
|
|
169
|
+
[ARCS_CAVEMAN_AGENT_KEY]: cavemanEntry,
|
|
170
|
+
};
|
|
171
|
+
if ("build" in existingAgents) {
|
|
172
|
+
orderedAgents.build = existingAgents.build;
|
|
173
|
+
}
|
|
174
|
+
for (const [key, value] of Object.entries(existingAgents)) {
|
|
175
|
+
if (key !== ARCS_AGENT_KEY && key !== ARCS_CAVEMAN_AGENT_KEY && key !== "build") {
|
|
176
|
+
orderedAgents[key] = value;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
existing.agent = orderedAgents;
|
|
180
|
+
// Set ARCS Orchestrator as the startup default agent (Caveman is opt-in via Tab)
|
|
181
|
+
existing.default_agent = ARCS_AGENT_KEY;
|
|
182
|
+
writeJsonFile(configFile, existing);
|
|
183
|
+
return {
|
|
184
|
+
configPath: configFile,
|
|
185
|
+
promptPath: promptFile,
|
|
186
|
+
cavemanPromptPath: cavemanPromptFile,
|
|
187
|
+
action: existed ? "updated" : "created",
|
|
188
|
+
alreadyConfigured,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
// ---------------------------------------------------------------------------
|
|
192
|
+
// Apply Model Config to All Agents
|
|
193
|
+
// ---------------------------------------------------------------------------
|
|
194
|
+
/**
|
|
195
|
+
* Applies ModelTierConfig to all known agent entries in opencode.json.
|
|
196
|
+
* Each agent (primary or sub-agent) listed in AGENT_TIER_MAP gets a `model`
|
|
197
|
+
* field resolved from its tier. perAgent overrides always win.
|
|
198
|
+
* Call this AFTER bundle install so it overwrites hardcoded manifest models.
|
|
199
|
+
*/
|
|
200
|
+
export function applyAgentModelConfig(modelConfig) {
|
|
201
|
+
const configFile = resolve(opencodeConfigDir(), "opencode.json");
|
|
202
|
+
if (!existsSync(configFile))
|
|
203
|
+
return;
|
|
204
|
+
const config = readJsonFile(configFile);
|
|
205
|
+
const agents = config.agent;
|
|
206
|
+
if (!agents)
|
|
207
|
+
return;
|
|
208
|
+
for (const [name, entry] of Object.entries(agents)) {
|
|
209
|
+
if (typeof entry !== "object" || entry === null)
|
|
210
|
+
continue;
|
|
211
|
+
const tier = AGENT_TIER_MAP[name];
|
|
212
|
+
if (tier) {
|
|
213
|
+
entry.model = resolveAgentModel(name, tier, modelConfig);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
config.agent = agents;
|
|
217
|
+
writeJsonFile(configFile, config);
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=instructions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/cli/instructions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recursively strips noise from an object for leaner JSON output.
|
|
3
|
+
* Removes: null/undefined values, empty arrays/objects/strings,
|
|
4
|
+
* timestamp fields, and redundant normalizedId.
|
|
5
|
+
*/
|
|
6
|
+
export declare function leanify(obj: unknown): unknown;
|
|
7
|
+
/**
|
|
8
|
+
* Check if lean mode is active from args or environment.
|
|
9
|
+
*/
|
|
10
|
+
export declare function isLeanMode(args: string[]): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Format JSON output, applying leanify when lean mode is active.
|
|
13
|
+
*/
|
|
14
|
+
export declare function formatJsonOutput(data: unknown, lean: boolean): string;
|
|
15
|
+
//# sourceMappingURL=lean-output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lean-output.d.ts","sourceRoot":"","sources":["../../src/cli/lean-output.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CA0C7C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAIlD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAGrE"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Lean Output — strips noise from JSON output for LLM token savings
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
const STRIP_FIELDS = new Set(["createdAt", "updatedAt"]);
|
|
5
|
+
/**
|
|
6
|
+
* Recursively strips noise from an object for leaner JSON output.
|
|
7
|
+
* Removes: null/undefined values, empty arrays/objects/strings,
|
|
8
|
+
* timestamp fields, and redundant normalizedId.
|
|
9
|
+
*/
|
|
10
|
+
export function leanify(obj) {
|
|
11
|
+
if (obj === null || obj === undefined)
|
|
12
|
+
return undefined;
|
|
13
|
+
if (Array.isArray(obj)) {
|
|
14
|
+
const cleaned = obj.map((item) => leanify(item)).filter((item) => item !== undefined);
|
|
15
|
+
return cleaned.length === 0 ? undefined : cleaned;
|
|
16
|
+
}
|
|
17
|
+
if (typeof obj === "object") {
|
|
18
|
+
const input = obj;
|
|
19
|
+
const hasId = "id" in input;
|
|
20
|
+
const result = {};
|
|
21
|
+
for (const [key, value] of Object.entries(input)) {
|
|
22
|
+
// Strip known noisy fields
|
|
23
|
+
if (STRIP_FIELDS.has(key))
|
|
24
|
+
continue;
|
|
25
|
+
// Strip normalizedId when id is present
|
|
26
|
+
if (key === "normalizedId" && hasId)
|
|
27
|
+
continue;
|
|
28
|
+
const cleaned = leanify(value);
|
|
29
|
+
if (cleaned === undefined)
|
|
30
|
+
continue;
|
|
31
|
+
// Skip empty strings
|
|
32
|
+
if (cleaned === "")
|
|
33
|
+
continue;
|
|
34
|
+
// Skip empty arrays (already handled by recursive leanify returning undefined)
|
|
35
|
+
// Skip empty objects
|
|
36
|
+
if (typeof cleaned === "object" &&
|
|
37
|
+
!Array.isArray(cleaned) &&
|
|
38
|
+
Object.keys(cleaned).length === 0)
|
|
39
|
+
continue;
|
|
40
|
+
result[key] = cleaned;
|
|
41
|
+
}
|
|
42
|
+
return Object.keys(result).length === 0 ? undefined : result;
|
|
43
|
+
}
|
|
44
|
+
// Primitives (number, boolean, non-empty string)
|
|
45
|
+
if (typeof obj === "string" && obj === "")
|
|
46
|
+
return undefined;
|
|
47
|
+
return obj;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Check if lean mode is active from args or environment.
|
|
51
|
+
*/
|
|
52
|
+
export function isLeanMode(args) {
|
|
53
|
+
if (args.includes("--lean"))
|
|
54
|
+
return true;
|
|
55
|
+
if (process.env.ARCS_LEAN === "1")
|
|
56
|
+
return true;
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Format JSON output, applying leanify when lean mode is active.
|
|
61
|
+
*/
|
|
62
|
+
export function formatJsonOutput(data, lean) {
|
|
63
|
+
const output = lean ? leanify(data) : data;
|
|
64
|
+
return JSON.stringify(output);
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=lean-output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lean-output.js","sourceRoot":"","sources":["../../src/cli/lean-output.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,oEAAoE;AACpE,8EAA8E;AAE9E,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;AAEzD;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,GAAY;IAClC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAExD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QACtF,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;IACpD,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,GAA8B,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAI,IAAI,KAAK,CAAC;QAC5B,MAAM,MAAM,GAA4B,EAAE,CAAC;QAE3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,2BAA2B;YAC3B,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YACpC,wCAAwC;YACxC,IAAI,GAAG,KAAK,cAAc,IAAI,KAAK;gBAAE,SAAS;YAE9C,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,OAAO,KAAK,SAAS;gBAAE,SAAS;YAEpC,qBAAqB;YACrB,IAAI,OAAO,KAAK,EAAE;gBAAE,SAAS;YAC7B,+EAA+E;YAC/E,qBAAqB;YACrB,IACE,OAAO,OAAO,KAAK,QAAQ;gBAC3B,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,OAAiB,CAAC,CAAC,MAAM,KAAK,CAAC;gBAE3C,SAAS;YAEX,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QACxB,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/D,CAAC;IAED,iDAAiD;IACjD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAC5D,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAc;IACvC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAC/C,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAa,EAAE,IAAa;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renders structured CLI data as plain markdown for OpenCode chat panels.
|
|
3
|
+
* Returns null for commands that don't benefit from markdown formatting.
|
|
4
|
+
*/
|
|
5
|
+
export declare function renderMarkdown(command: string, data: unknown): string | null;
|
|
6
|
+
//# sourceMappingURL=md-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"md-renderer.d.ts","sourceRoot":"","sources":["../../src/cli/md-renderer.ts"],"names":[],"mappings":"AAsVA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CA0E5E"}
|