@zhihaohong52/sonata 0.4.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.
Files changed (183) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +437 -0
  3. package/dist/adapters/claude.js +83 -0
  4. package/dist/adapters/claude.js.map +1 -0
  5. package/dist/adapters/codex.js +382 -0
  6. package/dist/adapters/codex.js.map +1 -0
  7. package/dist/adapters/index.js +21 -0
  8. package/dist/adapters/index.js.map +1 -0
  9. package/dist/adapters/opencode.js +104 -0
  10. package/dist/adapters/opencode.js.map +1 -0
  11. package/dist/adapters/pi.js +152 -0
  12. package/dist/adapters/pi.js.map +1 -0
  13. package/dist/adapters/reasonix.js +358 -0
  14. package/dist/adapters/reasonix.js.map +1 -0
  15. package/dist/adapters/types.js +2 -0
  16. package/dist/adapters/types.js.map +1 -0
  17. package/dist/agent-markers.js +3 -0
  18. package/dist/agent-markers.js.map +1 -0
  19. package/dist/aipricing.js +109 -0
  20. package/dist/aipricing.js.map +1 -0
  21. package/dist/catalog.js +274 -0
  22. package/dist/catalog.js.map +1 -0
  23. package/dist/cli.js +766 -0
  24. package/dist/cli.js.map +1 -0
  25. package/dist/commands/approve.js +23 -0
  26. package/dist/commands/approve.js.map +1 -0
  27. package/dist/commands/auth.js +41 -0
  28. package/dist/commands/auth.js.map +1 -0
  29. package/dist/commands/catalog.js +172 -0
  30. package/dist/commands/catalog.js.map +1 -0
  31. package/dist/commands/code.js +113 -0
  32. package/dist/commands/code.js.map +1 -0
  33. package/dist/commands/dispatch.js +148 -0
  34. package/dist/commands/dispatch.js.map +1 -0
  35. package/dist/commands/doctor.js +545 -0
  36. package/dist/commands/doctor.js.map +1 -0
  37. package/dist/commands/gc.js +25 -0
  38. package/dist/commands/gc.js.map +1 -0
  39. package/dist/commands/init-log.js +83 -0
  40. package/dist/commands/init-log.js.map +1 -0
  41. package/dist/commands/init.js +157 -0
  42. package/dist/commands/init.js.map +1 -0
  43. package/dist/commands/log.js +24 -0
  44. package/dist/commands/log.js.map +1 -0
  45. package/dist/commands/route.js +660 -0
  46. package/dist/commands/route.js.map +1 -0
  47. package/dist/commands/run.js +199 -0
  48. package/dist/commands/run.js.map +1 -0
  49. package/dist/commands/runs.js +37 -0
  50. package/dist/commands/runs.js.map +1 -0
  51. package/dist/commands/serve.js +818 -0
  52. package/dist/commands/serve.js.map +1 -0
  53. package/dist/commands/status.js +14 -0
  54. package/dist/commands/status.js.map +1 -0
  55. package/dist/commands/sync.js +258 -0
  56. package/dist/commands/sync.js.map +1 -0
  57. package/dist/commands/tail.js +229 -0
  58. package/dist/commands/tail.js.map +1 -0
  59. package/dist/commands/usage.js +85 -0
  60. package/dist/commands/usage.js.map +1 -0
  61. package/dist/commands/verify.js +69 -0
  62. package/dist/commands/verify.js.map +1 -0
  63. package/dist/commands/wait.js +38 -0
  64. package/dist/commands/wait.js.map +1 -0
  65. package/dist/config.js +588 -0
  66. package/dist/config.js.map +1 -0
  67. package/dist/detect.js +445 -0
  68. package/dist/detect.js.map +1 -0
  69. package/dist/filelock.js +83 -0
  70. package/dist/filelock.js.map +1 -0
  71. package/dist/init/apply.js +96 -0
  72. package/dist/init/apply.js.map +1 -0
  73. package/dist/init/candidates.js +115 -0
  74. package/dist/init/candidates.js.map +1 -0
  75. package/dist/init/discover.js +216 -0
  76. package/dist/init/discover.js.map +1 -0
  77. package/dist/init/helpers.js +429 -0
  78. package/dist/init/helpers.js.map +1 -0
  79. package/dist/init/interactive-state.js +128 -0
  80. package/dist/init/interactive-state.js.map +1 -0
  81. package/dist/init/plan.js +225 -0
  82. package/dist/init/plan.js.map +1 -0
  83. package/dist/init/scripted-state.js +130 -0
  84. package/dist/init/scripted-state.js.map +1 -0
  85. package/dist/init/toml.js +83 -0
  86. package/dist/init/toml.js.map +1 -0
  87. package/dist/init/validate.js +149 -0
  88. package/dist/init/validate.js.map +1 -0
  89. package/dist/ledger.js +123 -0
  90. package/dist/ledger.js.map +1 -0
  91. package/dist/mcp/protocol.js +64 -0
  92. package/dist/mcp/protocol.js.map +1 -0
  93. package/dist/mcp/server.js +96 -0
  94. package/dist/mcp/server.js.map +1 -0
  95. package/dist/mcp/tools.js +210 -0
  96. package/dist/mcp/tools.js.map +1 -0
  97. package/dist/mode.js +64 -0
  98. package/dist/mode.js.map +1 -0
  99. package/dist/native/claude-shim.js +228 -0
  100. package/dist/native/claude-shim.js.map +1 -0
  101. package/dist/native/codex-auth.js +177 -0
  102. package/dist/native/codex-auth.js.map +1 -0
  103. package/dist/native/copilot-auth.js +105 -0
  104. package/dist/native/copilot-auth.js.map +1 -0
  105. package/dist/native/credentials.js +83 -0
  106. package/dist/native/credentials.js.map +1 -0
  107. package/dist/native/hosts.js +60 -0
  108. package/dist/native/hosts.js.map +1 -0
  109. package/dist/native/litellm.js +103 -0
  110. package/dist/native/litellm.js.map +1 -0
  111. package/dist/native/models.js +96 -0
  112. package/dist/native/models.js.map +1 -0
  113. package/dist/native/oauth-login.js +112 -0
  114. package/dist/native/oauth-login.js.map +1 -0
  115. package/dist/native/router.js +469 -0
  116. package/dist/native/router.js.map +1 -0
  117. package/dist/native/tls.js +73 -0
  118. package/dist/native/tls.js.map +1 -0
  119. package/dist/native/usage.js +119 -0
  120. package/dist/native/usage.js.map +1 -0
  121. package/dist/normalize.js +98 -0
  122. package/dist/normalize.js.map +1 -0
  123. package/dist/pricing.js +86 -0
  124. package/dist/pricing.js.map +1 -0
  125. package/dist/roles.js +49 -0
  126. package/dist/roles.js.map +1 -0
  127. package/dist/sessions.js +62 -0
  128. package/dist/sessions.js.map +1 -0
  129. package/dist/settings.js +131 -0
  130. package/dist/settings.js.map +1 -0
  131. package/dist/store.js +70 -0
  132. package/dist/store.js.map +1 -0
  133. package/dist/tmux.js +89 -0
  134. package/dist/tmux.js.map +1 -0
  135. package/dist/tui-ink/app-state.js +340 -0
  136. package/dist/tui-ink/app-state.js.map +1 -0
  137. package/dist/tui-ink/app.js +156 -0
  138. package/dist/tui-ink/app.js.map +1 -0
  139. package/dist/tui-ink/components/byok-step.js +102 -0
  140. package/dist/tui-ink/components/byok-step.js.map +1 -0
  141. package/dist/tui-ink/components/login-screen.js +80 -0
  142. package/dist/tui-ink/components/login-screen.js.map +1 -0
  143. package/dist/tui-ink/components/models-step.js +92 -0
  144. package/dist/tui-ink/components/models-step.js.map +1 -0
  145. package/dist/tui-ink/components/multi-select-state.js +56 -0
  146. package/dist/tui-ink/components/multi-select-state.js.map +1 -0
  147. package/dist/tui-ink/components/multi-select.js +69 -0
  148. package/dist/tui-ink/components/multi-select.js.map +1 -0
  149. package/dist/tui-ink/components/providers-step.js +285 -0
  150. package/dist/tui-ink/components/providers-step.js.map +1 -0
  151. package/dist/tui-ink/components/ranked-select-state.js +41 -0
  152. package/dist/tui-ink/components/ranked-select-state.js.map +1 -0
  153. package/dist/tui-ink/components/ranked-select.js +61 -0
  154. package/dist/tui-ink/components/ranked-select.js.map +1 -0
  155. package/dist/tui-ink/components/search-select.js +47 -0
  156. package/dist/tui-ink/components/search-select.js.map +1 -0
  157. package/dist/tui-ink/components/text-input-state.js +42 -0
  158. package/dist/tui-ink/components/text-input-state.js.map +1 -0
  159. package/dist/tui-ink/components/text-input.js +48 -0
  160. package/dist/tui-ink/components/text-input.js.map +1 -0
  161. package/dist/tui-ink/run.js +38 -0
  162. package/dist/tui-ink/run.js.map +1 -0
  163. package/dist/tui-ink/test-compile.js +4 -0
  164. package/dist/tui-ink/test-compile.js.map +1 -0
  165. package/dist/tui-ink/types.js +2 -0
  166. package/dist/tui-ink/types.js.map +1 -0
  167. package/dist/tui.js +330 -0
  168. package/dist/tui.js.map +1 -0
  169. package/dist/types.js +2 -0
  170. package/dist/types.js.map +1 -0
  171. package/dist/watchdog.js +85 -0
  172. package/dist/watchdog.js.map +1 -0
  173. package/hooks/capture-mode.mjs +56 -0
  174. package/hooks/ensure-serve.mjs +140 -0
  175. package/hooks/hooks.json +12 -0
  176. package/hooks/route-session.mjs +47 -0
  177. package/hooks/route-subagent.mjs +54 -0
  178. package/package.json +64 -0
  179. package/roles/code.md +13 -0
  180. package/roles/explore.md +9 -0
  181. package/roles/plan.md +10 -0
  182. package/roles/review.md +11 -0
  183. package/skills/loop/SKILL.md +43 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export function recentRoutes(rows, limit) {
2
+ return [...rows]
3
+ .sort((a, b) => Date.parse(b.ts) - Date.parse(a.ts))
4
+ .slice(0, limit)
5
+ .map((row) => ({
6
+ alias: row.alias,
7
+ attempts: row.attempts,
8
+ served: row.key ?? (row.attempts.length === 0 ? row.alias : undefined),
9
+ status: row.status,
10
+ input: row.tokens.input,
11
+ output: row.tokens.output,
12
+ }));
13
+ }
14
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAqBA,MAAM,UAAU,YAAY,CAAC,IAAiB,EAAE,KAAa;IAC3D,OAAO,CAAC,GAAG,IAAI,CAAC;SACb,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACnD,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;SACf,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACb,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK;QACvB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM;KAC1B,CAAC,CAAC,CAAC;AACR,CAAC"}
@@ -0,0 +1,258 @@
1
+ import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { generatedAgents, generatedNativeAgents, expectedAgentNames, isReadOnlyRole, loadConfig, TIER_NAMES, tiersCollapse } from '../config.js';
4
+ import { isSonataAgent, staleAgents } from '../detect.js';
5
+ import { TIER_AGENT_MARKER } from '../agent-markers.js';
6
+ import { ROLE_BLURB } from '../roles.js';
7
+ export { TIER_AGENT_MARKER } from '../agent-markers.js';
8
+ /**
9
+ * Tools that let a generated agent spawn further agents.
10
+ *
11
+ * `Task` is the pre-rename alias for `Agent`; both are listed because sonata
12
+ * generates files for whatever Claude Code version the user has, and a stale
13
+ * name in an allow-list matches nothing while a missing one silently drops the
14
+ * capability.
15
+ */
16
+ const FANOUT_TOOLS = 'Agent, Task, Workflow';
17
+ const DELEGATING = `## Delegating
18
+
19
+ You may spawn subagents. Delegate only to read-only agent types — \`review-*\`,
20
+ \`explore-*\`, \`plan-*\`. This run is read-only, and delegating to a \`code-*\` agent
21
+ writes to the repository through it. Nothing enforces this but you.
22
+
23
+ Keep fan-out proportionate: every subagent spends tokens your caller pays for, and
24
+ nothing bounds how deep this nests.
25
+ `;
26
+ /**
27
+ * A read-only role's frontmatter tool list. Fan-out is granted to read-only
28
+ * roles explicitly because their `tools:` line is an allow-list — omitting the
29
+ * agent tools there is what would remove the capability, whereas a
30
+ * write-capable role has no `tools:` line at all and already inherits them.
31
+ */
32
+ function toolsForRole(role) {
33
+ if (!isReadOnlyRole(role)) {
34
+ // Write-capable agents already inherit the full tool set, including fan-out.
35
+ return '';
36
+ }
37
+ return `tools: Read, Grep, Glob, ${FANOUT_TOOLS}\n`;
38
+ }
39
+ function delegatingForRole(role) {
40
+ return isReadOnlyRole(role) ? `\n\n${DELEGATING}` : '';
41
+ }
42
+ export function agentMarkdown(spec) {
43
+ const name = `${spec.role}-${spec.model}`;
44
+ const blurb = ROLE_BLURB[spec.role] ?? spec.role;
45
+ return `---
46
+ name: ${name}
47
+ description: Delegates ${blurb} to ${spec.model} running under ${spec.harness}. Use when this work should run on ${spec.model} rather than Claude — typically to save cost on bulk work, or to get a different model's judgement.
48
+ model: haiku
49
+ tools: Bash(sonata dispatch:*), Bash(sonata wait:*), Bash(sonata approve:*)
50
+ ---
51
+
52
+ You are a forwarding wrapper around the sonata runtime. You run ${spec.model}
53
+ via ${spec.harness}. You do no work of your own.
54
+
55
+ Do not read files, inspect the repository, edit anything, grep, or reason about
56
+ the task. Your entire job is to launch the run and return its report.
57
+
58
+ **You may not answer anything yourself, however easy it looks.** If the task is
59
+ "say the word done", you dispatch it — you do not say it. A wrapper once
60
+ answered a trivial question in under two seconds with no dispatch at all, and
61
+ nothing downstream could tell that from a real run except the missing
62
+ provenance line. Answering from your own head is not a shortcut, it is a
63
+ fabricated result: everything downstream believes a foreign model ran.
64
+
65
+ Before sending your final message, check it contains a line beginning
66
+ \`— sonata \`. If it does not, you did not dispatch — say so instead of
67
+ answering.
68
+
69
+ ## Procedure
70
+
71
+ 1. Run this Bash command exactly once, from the caller's own working directory:
72
+
73
+ sonata dispatch --model ${spec.model} --role ${spec.role} --task-file <path>
74
+
75
+ The task must reach the model as a **file or via stdin**, never spliced
76
+ into the shell command line as text: a task containing backticks,
77
+ \`$(...)\`, quotes, or \`$HOME\`-style expansions would corrupt or hijack
78
+ the command if embedded directly into a shell string, and you have no
79
+ tool to escape it safely.
80
+
81
+ - If the caller gave you a **file path** holding the task, pass it with
82
+ \`--task-file <path>\` and do not open the file yourself. A path cannot
83
+ be paraphrased, and forwarding it **verbatim, byte for byte** — never
84
+ summarised, shortened, or rewritten — is the whole job: a 3,000-word
85
+ spec once reached the model as a single sentence, so it never saw the
86
+ instructions it was meant to follow.
87
+ - If the caller instead gave you the task as inline text, pass it via
88
+ stdin using Bash single-quoting — the ONE mechanically complete way to
89
+ make arbitrary text (backticks, \`$(...)\`, \`$HOME\`, quotes, anything)
90
+ safe in a shell command, with no judgment call and no possibility of
91
+ collision (unlike picking a delimiter string, which depends on hoping
92
+ the text doesn't contain it):
93
+
94
+ 1. In the task text, replace every single-quote character (\`'\`) with
95
+ the four characters \`'\\''\` (a closing quote, a backslash-escaped
96
+ quote, and a reopening quote). Leave every other character
97
+ untouched — nothing else needs escaping inside single quotes.
98
+ 2. Wrap the ENTIRE result (start to finish) in a pair of single quotes.
99
+ 3. Feed it to \`sonata dispatch\` via a Bash here-string and
100
+ \`--task-stdin\` — NOT a pipe: your only allowed command is
101
+ \`sonata dispatch\`, and a pipe would start the line with a
102
+ different command (\`printf\`) that isn't covered by that
103
+ permission. A here-string keeps the whole line starting with
104
+ \`sonata dispatch\`:
105
+
106
+ sonata dispatch --model ${spec.model} --role ${spec.role} --task-stdin <<< '<escaped task text>'
107
+
108
+ Worked example: if the task text is \`it's done\`, step 1 turns the
109
+ single quote into \`it'\\''s done\`, and step 2 wraps it as
110
+ \`'it'\\''s done'\` — giving:
111
+
112
+ sonata dispatch --model ${spec.model} --role ${spec.role} --task-stdin <<< 'it'\\''s done'
113
+
114
+ Apply this to the WHOLE task text exactly once, including any
115
+ backticks, dollar signs, or newlines it contains — do not additionally
116
+ escape those; single-quoting already neutralizes them. Never rewrite,
117
+ summarise, or add anything to the task text itself before escaping it.
118
+
119
+ The command blocks until the run is worth reporting, so one call is
120
+ usually the whole job. Do not add your own waiting.
121
+
122
+ 2. Its first line of output is \`<STATE> model=<key> id=<id>\`. Act on \`<STATE>\`:
123
+
124
+ - **DONE** — the report follows on subsequent lines. Return it as your
125
+ final message and stop. Include its closing \`— sonata <id>: …\`
126
+ provenance line exactly as given: it is the evidence the run really
127
+ happened. If the report is marked degraded, say so in your first line;
128
+ the harness exited without writing a report and the content is scraped
129
+ terminal output.
130
+ - **PAUSED** — the output includes \`PROMPT: <text>\` and a
131
+ \`sonata approve <id>\` line. Stop and return immediately. Your final
132
+ message must be exactly: \`PAUSED <id>\` on the first line, then the
133
+ pending action. You cannot approve it yourself; the main thread will ask
134
+ the user and run \`sonata approve <id> --yes\`/\`--no\` itself. The tmux
135
+ session stays alive, so nothing is lost.
136
+ - **RUNNING** — the output includes a \`sonata wait <id>\` line. Run that
137
+ exact command, then act on what it returns (its own first line is a bare
138
+ \`<STATE>\`, not \`<STATE> model=... id=...\`). This is the only case
139
+ where you make a second call.
140
+ - **FAILED** — the output lists every candidate tried, one per line, with
141
+ its state and reason. Stop and return: first line \`FAILED <id>\`, then
142
+ that list. Do not retry it yourself.
143
+ - **STALLED** — no report and no further output. Stop and return: first
144
+ line \`STALLED <id>\`. Do not try to diagnose it.
145
+
146
+ 3. Never run \`sonata approve\` yourself. Never start a second run. The main
147
+ thread runs \`sonata approve <id>\` itself if it answers a paused run.
148
+
149
+ 4. If the command itself is refused — a permission denial rather than any of
150
+ the states above — stop and say so as your first line:
151
+ \`BLOCKED <tool> denied\`. Do not retry it, work around it, or summarise the
152
+ task from nothing. The run may still be executing in tmux and is now
153
+ unobserved, which is the one outcome worse than a failed dispatch: the
154
+ human needs to know a model is writing to their repository with nothing
155
+ watching it.
156
+
157
+ To watch the run live, a human can attach with \`tmux attach -r -t sonata-<id>\`
158
+ (\`-r\` is read-only; drop it to steer a cheap model mid-run). Sonata cannot
159
+ stream the harness conversation into Claude Code — a subagent receives text
160
+ only as tool results — so attaching is the way to see it as it happens.
161
+
162
+ Your final message must end with a line naming the run:
163
+
164
+ run: <id> model: ${spec.model}
165
+ `;
166
+ }
167
+ export function nativeAgentMarkdown(spec) {
168
+ const blurb = ROLE_BLURB[spec.role] ?? spec.role;
169
+ const tools = toolsForRole(spec.role);
170
+ const delegating = delegatingForRole(spec.role);
171
+ return `---
172
+ name: native-${spec.role}-${spec.model}
173
+ description: Runs ${blurb} natively on ${spec.model} inside Claude Code's own loop. Requires a routed session (sonata code, or sonata route on).
174
+ model: ${spec.model}
175
+ ${tools}---
176
+
177
+ This agent only works in a routed session (sonata code, or sonata route on).
178
+
179
+ Focus on ${blurb}.${delegating}
180
+ `;
181
+ }
182
+ export function tierAgentMarkdown(spec) {
183
+ const blurb = ROLE_BLURB[spec.role] ?? spec.role;
184
+ const tier = spec.tier;
185
+ const name = tier === undefined ? spec.role : `${spec.role}-${tier}`;
186
+ const model = tier === undefined ? `sonata-${spec.role}` : `sonata-${spec.role}-${tier}`;
187
+ const tools = toolsForRole(spec.role);
188
+ const delegating = delegatingForRole(spec.role);
189
+ const description = tier === undefined
190
+ ? `Runs ${blurb} on a ranked list of foreign models, natively inside Claude Code's loop. Requires a routed session (sonata code, or sonata route on/auto).`
191
+ : `Runs ${blurb} on a ranked list of foreign models (${tier} tier), natively inside Claude Code's loop. Simple = mechanical, well-specified, contained work (single file, clear spec, bulk edits). Complex = cross-cutting, ambiguous, design-sensitive, or needs sustained reasoning. When unsure, use -complex. Requires a routed session (sonata code, or sonata route on/auto).`;
192
+ return `---
193
+ name: ${name}
194
+ description: ${description}
195
+ model: ${model}
196
+ ${tools}---
197
+
198
+ This agent only works in a routed session (sonata code, or sonata route on/auto).
199
+
200
+ ${TIER_AGENT_MARKER} — edits here are overwritten on the next sync.
201
+
202
+ Focus on ${blurb}.${delegating}
203
+ `;
204
+ }
205
+ export function cmdSync(opts) {
206
+ const config = loadConfig(opts.cwd, opts.home);
207
+ mkdirSync(opts.agentsDir, { recursive: true });
208
+ if (config.tiers !== undefined) {
209
+ const written = [];
210
+ const skipped = [];
211
+ for (const [role, lists] of Object.entries(config.tiers)) {
212
+ const tiers = tiersCollapse(lists) ? [undefined] : [...TIER_NAMES];
213
+ for (const tier of tiers) {
214
+ const path = join(opts.agentsDir, `${role}${tier === undefined ? '' : `-${tier}`}.md`);
215
+ if (existsSync(path) && !isSonataAgent(path)) {
216
+ skipped.push(path);
217
+ continue;
218
+ }
219
+ writeFileSync(path, tierAgentMarkdown({ role, tier }));
220
+ written.push(path);
221
+ }
222
+ }
223
+ return {
224
+ written,
225
+ stale: staleAgents(opts.agentsDir, expectedAgentNames(config)),
226
+ skipped,
227
+ };
228
+ }
229
+ const wanted = generatedAgents(config);
230
+ const written = [];
231
+ for (const { role, model } of wanted) {
232
+ const harness = config.models[model].harness;
233
+ const path = join(opts.agentsDir, `${role}-${model}.md`);
234
+ writeFileSync(path, agentMarkdown({ role, model, harness }));
235
+ written.push(path);
236
+ }
237
+ // Native models get both a native agent (for sonata code sessions) and a
238
+ // wrapper agent (for dispatch from normal sessions via the claude harness).
239
+ const nativeWanted = generatedNativeAgents(config);
240
+ for (const { role, model } of nativeWanted) {
241
+ const nativePath = join(opts.agentsDir, `native-${role}-${model}.md`);
242
+ writeFileSync(nativePath, nativeAgentMarkdown({ role, model }));
243
+ written.push(nativePath);
244
+ // Skip the wrapper if a harness-based one already covers this role+model
245
+ const wrapperName = `${role}-${model}`;
246
+ if (!wanted.some((a) => `${a.role}-${a.model}` === wrapperName)) {
247
+ const wrapperPath = join(opts.agentsDir, `${wrapperName}.md`);
248
+ writeFileSync(wrapperPath, agentMarkdown({ role, model, harness: 'claude' }));
249
+ written.push(wrapperPath);
250
+ }
251
+ }
252
+ return {
253
+ written,
254
+ stale: staleAgents(opts.agentsDir, expectedAgentNames(config)),
255
+ skipped: [],
256
+ };
257
+ }
258
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,229 @@
1
+ import { statSync, existsSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { loadConfig } from '../config.js';
4
+ import { getAdapter } from '../adapters/index.js';
5
+ import { tryCapturePane } from '../tmux.js';
6
+ import { cleanPane, newLines } from '../normalize.js';
7
+ import { readMeta, readExit, readReport, readCursor, writeCursor, appendEvents, writeMeta, runDir, readAnsweredPrompt, clearAnsweredPrompt, } from '../store.js';
8
+ import { cmdVerify } from './verify.js';
9
+ /**
10
+ * The provenance line appended to every finished report.
11
+ *
12
+ * Built from the run's own meta.json, so it cannot be produced by a wrapper
13
+ * that skipped the dispatch and answered from memory — the failure `sonata
14
+ * verify` was written to catch, but which only helped when someone remembered
15
+ * to run it.
16
+ */
17
+ function provenance(cwd, id) {
18
+ const v = cmdVerify({ cwd, id });
19
+ return v.ok ? `— sonata ${v.detail}` : `— sonata could NOT verify this run: ${v.detail}`;
20
+ }
21
+ /**
22
+ * The harness's own output: everything in the pane that sonata did not put
23
+ * there. tmux echoes the launch command, and the shell prints a prompt around
24
+ * it, so a pane that "has content" is not evidence a model ever spoke.
25
+ */
26
+ export function harnessOutput(paneTail, launchMarker) {
27
+ return paneTail.filter((line) => {
28
+ const t = line.trim();
29
+ if (t.length === 0)
30
+ return false;
31
+ if (launchMarker !== undefined && t.includes(launchMarker))
32
+ return false;
33
+ // The watchdog foregrounds the harness job with `fg`, which echoes the
34
+ // job's command line — `bash '<runDir>/harness.sh'`. That is sonata's own
35
+ // plumbing, not the model speaking. Left in, it streamed to the user as if
36
+ // the harness had said it, and worse, it counted towards `spoke`, so a run
37
+ // that produced nothing at all could look like it had answered. Anchored to
38
+ // `bash '` so a model quoting its own harness path is not swallowed.
39
+ if (/^bash '.*\/harness\.sh'$/.test(t))
40
+ return false;
41
+ return true;
42
+ });
43
+ }
44
+ /** Pure state machine. Order matters: completion beats a stale prompt match. */
45
+ export function decide(input) {
46
+ if (input.exitCode !== null) {
47
+ // A run that could never write a report is not degraded for lacking one —
48
+ // its terminal output IS the report. Only a clean exit qualifies: a
49
+ // read-only run that crashed is still a failure worth flagging.
50
+ //
51
+ // The output must also be non-empty. Without that check, ANY clean exit
52
+ // was accepted as success for a read-only role, so a harness that died
53
+ // before saying anything — a locked database, an expired token, a bad
54
+ // model id — was reported DONE and not degraded, with the launch command
55
+ // echo standing in for a report. That is the silent success this whole
56
+ // design exists to prevent: nothing else downstream can tell the
57
+ // difference between "answered" and "never ran".
58
+ const spoke = harnessOutput(input.paneTail, input.launchMarker).length > 0;
59
+ const reportImpossible = input.canWriteReport === false
60
+ && input.report === null
61
+ && input.exitCode === 0
62
+ && !input.timedOut
63
+ && spoke;
64
+ // A timed-out run is degraded even if a report file happens to exist: the
65
+ // work was cut short, so the report cannot be trusted as complete.
66
+ const degraded = input.timedOut || (input.report === null && !reportImpossible);
67
+ const report = input.timedOut
68
+ ? `[timed out: sonata killed the run after the configured run_timeout_seconds]\n\n${input.paneTail.join('\n')}`
69
+ : reportImpossible
70
+ ? `[read-only run: the harness cannot write a report file, so this is its terminal output]\n\n${input.paneTail.join('\n')}`
71
+ : degraded && !spoke
72
+ ? `[degraded: the harness exited ${input.exitCode} without producing any output — nothing ran]\n\n${input.paneTail.join('\n')}`
73
+ : degraded
74
+ ? `[degraded: harness exited ${input.exitCode} without writing a report]\n\n${input.paneTail.join('\n')}`
75
+ : input.report;
76
+ return {
77
+ state: 'DONE',
78
+ lines: input.newLines,
79
+ exitCode: input.exitCode,
80
+ degraded,
81
+ report,
82
+ };
83
+ }
84
+ if (input.promptText !== null) {
85
+ return { state: 'PAUSED', lines: input.newLines, prompt: input.promptText };
86
+ }
87
+ if (input.newLines.length > 0) {
88
+ return { state: 'PROGRESS', lines: input.newLines };
89
+ }
90
+ if (input.silentUntilExit !== true && input.msSinceLastChange >= input.stallTimeoutMs) {
91
+ return { state: 'STALLED', lines: input.paneTail };
92
+ }
93
+ return { state: 'PROGRESS', lines: [] };
94
+ }
95
+ function lastChangeMs(cwd, id, now) {
96
+ try {
97
+ const lastWrite = statSync(join(runDir(cwd, id), 'events.jsonl')).mtimeMs;
98
+ return lastWrite <= now() ? lastWrite : now();
99
+ }
100
+ catch {
101
+ return now();
102
+ }
103
+ }
104
+ function paneSnapshotPath(cwd, id) {
105
+ return join(runDir(cwd, id), 'pane.snapshot');
106
+ }
107
+ function readPaneSnapshot(cwd, id) {
108
+ const p = paneSnapshotPath(cwd, id);
109
+ if (!existsSync(p))
110
+ return [];
111
+ const raw = readFileSync(p, 'utf8');
112
+ return raw.length === 0 ? [] : raw.split('\n');
113
+ }
114
+ function writePaneSnapshot(cwd, id, lines) {
115
+ writeFileSync(paneSnapshotPath(cwd, id), lines.join('\n'));
116
+ }
117
+ export async function cmdTail(opts) {
118
+ const now = opts.now ?? (() => Date.now());
119
+ const pollMs = opts.pollMs ?? 500;
120
+ const settleMs = opts.settleMs ?? 500;
121
+ const config = loadConfig(opts.cwd);
122
+ const meta = readMeta(opts.cwd, opts.id);
123
+ const adapter = getAdapter(meta.harness);
124
+ const deadline = now() + opts.waitSeconds * 1000;
125
+ let lastChange = lastChangeMs(opts.cwd, opts.id, now);
126
+ // The exact path tmux echoes when the run starts, so pane lines sonata
127
+ // caused can be told from output the harness produced.
128
+ const scriptPath = join(runDir(opts.cwd, opts.id), 'cmd.sh');
129
+ for (;;) {
130
+ const cursor = readCursor(opts.cwd, opts.id);
131
+ const prevPane = readPaneSnapshot(opts.cwd, opts.id);
132
+ // Diff against the PREVIOUS PANE, not the accumulated event log. The event
133
+ // log contains older, already-scrolled content, so suffix-overlap against
134
+ // it fails and re-emits the whole pane on every poll — which makes every
135
+ // call return PROGRESS immediately and starves the caller's poll budget.
136
+ //
137
+ // A failed capture (null, common when tmux is busy) must not be mistaken
138
+ // for an emptied pane: writing an empty snapshot would make the next poll
139
+ // re-emit everything, producing the same starvation.
140
+ const captured = await tryCapturePane(meta.session);
141
+ const paneNow = captured === null ? prevPane : cleanPane(captured);
142
+ const freshNow = captured === null ? [] : newLines(prevPane, paneNow);
143
+ if (captured !== null)
144
+ writePaneSnapshot(opts.cwd, opts.id, paneNow);
145
+ if (freshNow.length > 0) {
146
+ appendEvents(opts.cwd, opts.id, freshNow);
147
+ writeCursor(opts.cwd, opts.id, cursor + freshNow.length);
148
+ // A real repeat prompt has output between asks. Forget the old answer as
149
+ // soon as the pane advances so we do not hide that new request forever.
150
+ clearAnsweredPrompt(opts.cwd, opts.id);
151
+ lastChange = now();
152
+ }
153
+ let exitCode = readExit(opts.cwd, opts.id);
154
+ let pane = paneNow;
155
+ let fresh = freshNow;
156
+ // The exit sentinel is a file write; the harness's last output reaches the
157
+ // pane via a terminal flush. Under load the sentinel wins the race, which
158
+ // would truncate a degraded report of exactly the crash we need to see.
159
+ // Take one settling capture before declaring the run finished.
160
+ if (exitCode !== null) {
161
+ await new Promise((r) => setTimeout(r, settleMs));
162
+ const settled = await tryCapturePane(meta.session);
163
+ if (settled !== null) {
164
+ const settledPane = cleanPane(settled);
165
+ const extra = newLines(pane, settledPane);
166
+ if (extra.length > 0) {
167
+ appendEvents(opts.cwd, opts.id, extra);
168
+ writeCursor(opts.cwd, opts.id, readCursor(opts.cwd, opts.id) + extra.length);
169
+ clearAnsweredPrompt(opts.cwd, opts.id);
170
+ fresh = [...fresh, ...extra];
171
+ }
172
+ writePaneSnapshot(opts.cwd, opts.id, settledPane);
173
+ pane = settledPane;
174
+ }
175
+ exitCode = readExit(opts.cwd, opts.id);
176
+ }
177
+ const output = harnessOutput(fresh, scriptPath);
178
+ if (output.length > 0) {
179
+ try {
180
+ opts.onLines?.(output);
181
+ }
182
+ catch {
183
+ // Progress notifications are cosmetic; never let their transport stop a run.
184
+ }
185
+ }
186
+ // Prefer the model's own report; fall back to a final message the harness
187
+ // wrote itself (codex `-o`) before giving up and returning pane text.
188
+ const fallbackPath = adapter.fallbackReportFile
189
+ ? join(runDir(opts.cwd, opts.id), adapter.fallbackReportFile)
190
+ : null;
191
+ const fallback = fallbackPath && existsSync(fallbackPath)
192
+ ? readFileSync(fallbackPath, 'utf8').trim() || null
193
+ : null;
194
+ const detectedPrompt = meta.interactive ? adapter.describePrompt(pane) : null;
195
+ const answeredPrompt = readAnsweredPrompt(opts.cwd, opts.id);
196
+ const result = decide({
197
+ newLines: fresh,
198
+ exitCode,
199
+ report: readReport(opts.cwd, opts.id) ?? fallback,
200
+ promptText: detectedPrompt === answeredPrompt ? null : detectedPrompt,
201
+ msSinceLastChange: now() - lastChange,
202
+ stallTimeoutMs: config.run.stallTimeoutSeconds * 1000,
203
+ paneTail: pane.slice(-20),
204
+ timedOut: existsSync(join(runDir(opts.cwd, opts.id), 'timeout')),
205
+ canWriteReport: meta.canWriteReport,
206
+ silentUntilExit: meta.silentUntilExit,
207
+ launchMarker: scriptPath,
208
+ });
209
+ if (result.state === 'DONE') {
210
+ writeMeta(opts.cwd, {
211
+ ...meta,
212
+ endedAt: new Date().toISOString(),
213
+ exitCode: result.exitCode,
214
+ degraded: result.degraded,
215
+ });
216
+ // Every finished report carries its own provenance, so verification is
217
+ // not a step someone has to remember. A wrapper that answers from its
218
+ // own head instead of dispatching cannot produce this line: it is built
219
+ // from the run's meta.json, which only a real run writes.
220
+ return { ...result, report: `${result.report ?? ''}\n\n${provenance(opts.cwd, opts.id)}` };
221
+ }
222
+ if (result.state !== 'PROGRESS' || result.lines.length > 0)
223
+ return result;
224
+ if (now() >= deadline)
225
+ return result;
226
+ await new Promise((r) => setTimeout(r, pollMs));
227
+ }
228
+ }
229
+ //# sourceMappingURL=tail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tail.js","sourceRoot":"","sources":["../../src/commands/tail.ts"],"names":[],"mappings":"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"}