@rryando/arcs 3.2.6 → 3.3.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.
@@ -53,3 +53,23 @@ Before reading code, understand context:
53
53
  2. `arcs git-log <slug> --json` — understand commit intent
54
54
  3. `arcs task get <slug> <taskId> --json` — read the task spec being implemented
55
55
  4. Then review code against spec + conventions
56
+
57
+ ## Output Format
58
+
59
+ Your output is consumed by the orchestrator (an LLM), not a human. Be structured and terse.
60
+
61
+ \`\`\`
62
+ VERDICT: <approve | request-changes | comment-only>
63
+
64
+ FINDINGS:
65
+ - [CRITICAL] <file:line> — <issue>
66
+ - [HIGH] <file:line> — <issue>
67
+ - [MEDIUM] <file:line> — <issue>
68
+ - [LOW] <file:line> — <issue>
69
+
70
+ TASKS: <none | suggested follow-up tasks for orchestrator>
71
+
72
+ YAGNI: <none | speculative code identified with file:line>
73
+ \`\`\`
74
+
75
+ No prose narrative. No "Overall this looks..." — go straight to VERDICT.
@@ -52,3 +52,23 @@ When creating entries, select the correct kind:
52
52
  | `module` | Module-level descriptions (from graphify) | Individual files |
53
53
 
54
54
  Always run `arcs knowledge list <slug> --json` before creating — check for existing entries to update rather than duplicate.
55
+
56
+ ## Output Format
57
+
58
+ Your output is consumed by the orchestrator (an LLM), not a human. Be structured and terse.
59
+
60
+ \`\`\`
61
+ RESEARCH: <topic summary — one line>
62
+
63
+ FINDINGS:
64
+ - <finding with source citation>
65
+
66
+ EXISTING_DAG: <relevant entries already in DAG, or "none found">
67
+
68
+ PROPOSED_ENTRIES:
69
+ - kind:<kind> title:"<title>" summary:"<summary>"
70
+
71
+ GAPS: <none | what couldn't be answered and why>
72
+ \`\`\`
73
+
74
+ No prose narrative. No "I researched..." — go straight to RESEARCH.
@@ -107,8 +107,18 @@ All commands support `--json` for machine-readable output. Reads return `{ok, da
107
107
 
108
108
  ## Output Format
109
109
 
110
- Return a structured answer:
111
- 1. **Answer** — direct response to the question
112
- 2. **Evidence** — DAG entry IDs or file:line citations
113
- 3. **Fallback used**if file-system tools were needed, state why the DAG was insufficient
114
- 4. **Proposed captures** — any `arcs knowledge create` commands for durable findings
110
+ Your output is consumed by the orchestrator (an LLM), not a human. Be structured and terse.
111
+
112
+ ```
113
+ ANSWER: <direct responsefacts only, no filler>
114
+
115
+ EVIDENCE:
116
+ - <DAG entry ID or file:line citation>
117
+ - <DAG entry ID or file:line citation>
118
+
119
+ FALLBACK: <none | reason DAG was insufficient>
120
+
121
+ CAPTURES: <none | proposed arcs knowledge create commands>
122
+ ```
123
+
124
+ Omit FALLBACK/CAPTURES if none. No prose preamble. No "I found that..." — go straight to ANSWER.
@@ -52,3 +52,26 @@ When investigating a bug, failure, or production incident:
52
52
  6. `arcs knowledge create <slug> "<resolution method>" --kind=lesson --summary="..." --json` — capture the fix
53
53
 
54
54
  **DAG is context-reference only during active incidents.** Don't waste investigation time updating task status — do that after resolution.
55
+
56
+ ## Output Format
57
+
58
+ Your output is consumed by the orchestrator (an LLM), not a human. Be structured and terse.
59
+
60
+ \`\`\`
61
+ STATUS: <investigating | root-cause-found | resolved | blocked>
62
+
63
+ ROOT_CAUSE: <one-line description or "pending">
64
+
65
+ EVIDENCE:
66
+ - <file:line, log output, or command result>
67
+
68
+ FIX:
69
+ - <what was done or what needs to be done>
70
+
71
+ VERIFY:
72
+ - <command ran>: <pass/fail>
73
+
74
+ CAPTURES: <arcs knowledge create commands for gotcha/lesson>
75
+ \`\`\`
76
+
77
+ No prose narrative. No "After investigating..." — go straight to STATUS.
@@ -52,3 +52,25 @@ You are invoked BEFORE a feature lands — not after. Your job is to find proble
52
52
  5. `arcs search <slug> "<feature keywords>" --lean --json` — find all related context
53
53
  6. Cross-module grep: `rg "<symbol>" --type ts` — trace usage across boundaries
54
54
  7. Report: severity-grouped findings with file:line evidence
55
+
56
+ ## Output Format
57
+
58
+ Your output is consumed by the orchestrator (an LLM), not a human. Be structured and terse.
59
+
60
+ \`\`\`
61
+ AUDIT: <what was audited — scope in one line>
62
+
63
+ FINDINGS:
64
+ - [CRITICAL] <file:line> — <issue>
65
+ - [HIGH] <file:line> — <issue>
66
+ - [MEDIUM] <file:line> — <issue>
67
+
68
+ CONVENTIONS:
69
+ - <compliant | violations with file:line>
70
+
71
+ TASKS: <none | suggested tasks for orchestrator to create>
72
+
73
+ KNOWLEDGE: <none | proposed arcs knowledge create for patterns found>
74
+ \`\`\`
75
+
76
+ No prose narrative. No "I audited..." — go straight to AUDIT.
@@ -33,16 +33,22 @@ MANDATORY EXIT GATE: Before claiming any work is complete, you MUST run verifica
33
33
 
34
34
  All commands support `--json` for machine-readable output. Reads return `{ok, data}`; failures return `{ok:false, code, message, hint?}`. **Routing:** success → stdout, errors → stderr — always capture both with `2>&1`.
35
35
 
36
- ## Diagram-First Execution
37
-
38
- When working from a plan with a `.diagram.mmd` file:
39
- 1. Run `arcs diagram ready <slug> <planId>` to find executable tasks (nodes whose dependencies are all `:::done`)
40
- 2. Read per-node metadata (`%% node:`, `%% skill:`, `%% scope:`, `%% acceptance:`, `%% verify:`) for task context — this provides full dispatch context without loading plan prose
41
- 3. After completing a task, report status in your final summary — the orchestrator handles diagram updates via:
42
- ```bash
43
- arcs task transition <slug> <taskId> done --planId=<planId> --diagramNodeId=T001 --json
44
- ```
45
- Both `--planId` and `--diagramNodeId` are required for the atomic task+diagram update.
46
- 4. NEVER edit `.mmd` files directly — the orchestrator owns all diagram updates
47
- 5. If node metadata is incomplete (missing `scope`, `acceptance`, or `verify`), fall back to reading the plan body for that specific task's details
48
- 6. If you discover a scope change (task added, removed, or dependency changed), report it in your final summary — the orchestrator handles diagram regeneration
36
+ ## Output Format
37
+
38
+ Your output is consumed by the orchestrator (an LLM), not a human. Be structured and terse.
39
+
40
+ \`\`\`
41
+ STATUS: <done | blocked | partial>
42
+
43
+ CHANGES:
44
+ - <file:path> — <what changed, one line>
45
+
46
+ VERIFY:
47
+ - <command ran>: <pass/fail>
48
+
49
+ SCOPE_CHANGE: <none | tasks added/removed/deps changed — orchestrator handles diagram>
50
+
51
+ KNOWLEDGE: <none | reusable pattern/gotcha discovered — propose arcs knowledge create>
52
+ \`\`\`
53
+
54
+ No prose narrative. No "I implemented..." — go straight to STATUS.
@@ -51,6 +51,27 @@ When dispatched for structural design or migration planning:
51
51
 
52
52
  Your scope is project TOPOLOGY — how projects relate, where boundaries should be, what migrates where. Single-project deep analysis belongs to tech-architect.
53
53
 
54
+ ## Output Format
55
+
56
+ Your output is consumed by the orchestrator (an LLM), not a human. Be structured and terse.
57
+
58
+ \`\`\`
59
+ DELIVERABLE: <plan | design | knowledge entry | migration sequence>
60
+
61
+ DECISIONS:
62
+ - <decision with rationale, one line each>
63
+
64
+ BOUNDARIES:
65
+ - <module/project boundary defined or changed>
66
+
67
+ RISKS:
68
+ - <risk with severity and mitigation>
69
+
70
+ ARTIFACTS: <arcs commands executed or proposed>
71
+ \`\`\`
72
+
73
+ No prose narrative. No "After analyzing..." — go straight to DELIVERABLE.
74
+
54
75
  ## Diagrams as Execution Maps
55
76
 
56
77
  ARCS plan diagrams (`.diagram.mmd` files) serve dual purposes:
@@ -52,3 +52,24 @@ When dispatched for structural analysis:
52
52
  7. `arcs knowledge create <slug> "<finding>" --kind=architecture --summary="..." --json` — record findings
53
53
 
54
54
  Output: severity-ranked findings with evidence (file paths, metrics, dependency chains).
55
+
56
+ ## Output Format
57
+
58
+ Your output is consumed by the orchestrator (an LLM), not a human. Be structured and terse.
59
+
60
+ \`\`\`
61
+ ANALYSIS: <one-line summary of what was analyzed>
62
+
63
+ FINDINGS:
64
+ - [CRITICAL|HIGH|MEDIUM] <finding> — evidence: <file:line or metric>
65
+
66
+ RECOMMENDATIONS:
67
+ - <action with rationale, one line each>
68
+
69
+ RISKS:
70
+ - <risk if recommendation is NOT followed>
71
+
72
+ ARTIFACTS: <arcs commands executed or proposed>
73
+ \`\`\`
74
+
75
+ No prose narrative. No "I examined..." — go straight to ANALYSIS.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rryando/arcs",
3
- "version": "3.2.6",
3
+ "version": "3.3.0",
4
4
  "description": "ARCS — DAG-based task orchestration for AI agents. Persistent workflow continuity via graph-structured context.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -67,6 +67,33 @@ const destination = scope === "project" ? projectRoot : configRoot;
67
67
  const DEFAULT_AGENT = "arcs-orchestrate";
68
68
  const SKILL_PREFIX = "arcs-";
69
69
 
70
+ // ---------------------------------------------------------------------------
71
+ // Model tier configuration
72
+ // ---------------------------------------------------------------------------
73
+ // Env vars: DEPLOY_MODEL_HEAVY, DEPLOY_MODEL_STANDARD, DEPLOY_MODEL_LIGHT
74
+ // Each defaults to "inherit" if unset.
75
+ const tierModels = {
76
+ heavy: process.env.DEPLOY_MODEL_HEAVY || "inherit",
77
+ standard: process.env.DEPLOY_MODEL_STANDARD || "inherit",
78
+ light: process.env.DEPLOY_MODEL_LIGHT || "inherit",
79
+ };
80
+
81
+ /** Maps each agent stem to a tier. Falls back to "standard". */
82
+ const agentTierMap = {
83
+ "software-engineer": "heavy",
84
+ "docs-researcher": "heavy",
85
+ "arcs-docs": "heavy",
86
+ "oncall-ops": "heavy",
87
+ "system-architect": "heavy",
88
+ general: "heavy",
89
+ "arcs-orchestrate": "standard",
90
+ "arcs-orchestrate-caveman": "standard",
91
+ "devil-advocate": "standard",
92
+ "code-reviewer": "light",
93
+ "tech-architect": "light",
94
+ "qa-analyst": "light",
95
+ };
96
+
70
97
  const agentMetadata = {
71
98
  "software-engineer": {
72
99
  name: "Software Engineer",
@@ -191,6 +218,9 @@ function buildAgentSources() {
191
218
  model: "inherit",
192
219
  };
193
220
 
221
+ const tier = agentTierMap[stem] || "standard";
222
+ const model = tierModels[tier];
223
+
194
224
  const toolsArray = meta.tools.split(",").map((t) => t.trim());
195
225
  const toolsYaml = `[${toolsArray.map((t) => `"${t}"`).join(", ")}]`;
196
226
 
@@ -198,7 +228,7 @@ function buildAgentSources() {
198
228
  "---",
199
229
  `name: ${meta.name}`,
200
230
  `description: ${meta.description}`,
201
- `model: ${meta.model}`,
231
+ `model: ${model}`,
202
232
  `tools: ${toolsYaml}`,
203
233
  "---",
204
234
  "",
@@ -396,6 +426,7 @@ function main() {
396
426
  dryRun,
397
427
  source: bundleRoot,
398
428
  destination,
429
+ modelConfig: tierModels,
399
430
  filesAdded,
400
431
  filesChanged,
401
432
  filesRemoved,