@chinhae/atw-cli 0.6.0 → 0.7.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 (241) hide show
  1. package/README.md +128 -451
  2. package/dist/cli/index.d.ts.map +1 -1
  3. package/dist/cli/index.js +24 -1
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/commands/channel/adapters/claude.d.ts +44 -2
  6. package/dist/commands/channel/adapters/claude.d.ts.map +1 -1
  7. package/dist/commands/channel/adapters/claude.js +124 -23
  8. package/dist/commands/channel/adapters/claude.js.map +1 -1
  9. package/dist/commands/channel/adapters/codex.d.ts +36 -6
  10. package/dist/commands/channel/adapters/codex.d.ts.map +1 -1
  11. package/dist/commands/channel/adapters/codex.js +150 -10
  12. package/dist/commands/channel/adapters/codex.js.map +1 -1
  13. package/dist/commands/channel/adapters/index.d.ts +33 -4
  14. package/dist/commands/channel/adapters/index.d.ts.map +1 -1
  15. package/dist/commands/channel/adapters/index.js +159 -6
  16. package/dist/commands/channel/adapters/index.js.map +1 -1
  17. package/dist/commands/channel/adapters/omp.d.ts +106 -0
  18. package/dist/commands/channel/adapters/omp.d.ts.map +1 -0
  19. package/dist/commands/channel/adapters/omp.js +405 -0
  20. package/dist/commands/channel/adapters/omp.js.map +1 -0
  21. package/dist/commands/channel/adapters/pi.d.ts +123 -0
  22. package/dist/commands/channel/adapters/pi.d.ts.map +1 -0
  23. package/dist/commands/channel/adapters/pi.js +387 -0
  24. package/dist/commands/channel/adapters/pi.js.map +1 -0
  25. package/dist/commands/channel/adapters/types.d.ts +16 -0
  26. package/dist/commands/channel/adapters/types.d.ts.map +1 -1
  27. package/dist/commands/channel/agent-loader.d.ts +1 -0
  28. package/dist/commands/channel/agent-loader.d.ts.map +1 -1
  29. package/dist/commands/channel/agent-loader.js +45 -5
  30. package/dist/commands/channel/agent-loader.js.map +1 -1
  31. package/dist/commands/channel/dev-parse-trace.d.ts +1 -1
  32. package/dist/commands/channel/dev-parse-trace.d.ts.map +1 -1
  33. package/dist/commands/channel/dev-parse-trace.js +25 -2
  34. package/dist/commands/channel/dev-parse-trace.js.map +1 -1
  35. package/dist/commands/channel/index.d.ts.map +1 -1
  36. package/dist/commands/channel/index.js +44 -12
  37. package/dist/commands/channel/index.js.map +1 -1
  38. package/dist/commands/channel/run.d.ts +39 -2
  39. package/dist/commands/channel/run.d.ts.map +1 -1
  40. package/dist/commands/channel/run.js +227 -68
  41. package/dist/commands/channel/run.js.map +1 -1
  42. package/dist/commands/channel/spawn.d.ts +7 -2
  43. package/dist/commands/channel/spawn.d.ts.map +1 -1
  44. package/dist/commands/channel/spawn.js +35 -1
  45. package/dist/commands/channel/spawn.js.map +1 -1
  46. package/dist/commands/channel/store/events.d.ts +2 -2
  47. package/dist/commands/channel/store/events.d.ts.map +1 -1
  48. package/dist/commands/channel/store/events.js +1 -1
  49. package/dist/commands/channel/store/events.js.map +1 -1
  50. package/dist/commands/channel/supervisor/shutdown.d.ts +2 -0
  51. package/dist/commands/channel/supervisor/shutdown.d.ts.map +1 -1
  52. package/dist/commands/channel/supervisor/shutdown.js +6 -1
  53. package/dist/commands/channel/supervisor/shutdown.js.map +1 -1
  54. package/dist/commands/channel/supervisor.d.ts +2 -2
  55. package/dist/commands/channel/supervisor.d.ts.map +1 -1
  56. package/dist/commands/channel/supervisor.js +26 -3
  57. package/dist/commands/channel/supervisor.js.map +1 -1
  58. package/dist/commands/init.d.ts.map +1 -1
  59. package/dist/commands/init.js +6 -1
  60. package/dist/commands/init.js.map +1 -1
  61. package/dist/commands/mem.d.ts +2 -1
  62. package/dist/commands/mem.d.ts.map +1 -1
  63. package/dist/commands/mem.js +162 -13
  64. package/dist/commands/mem.js.map +1 -1
  65. package/dist/commands/mode.d.ts.map +1 -1
  66. package/dist/commands/mode.js +5 -3
  67. package/dist/commands/mode.js.map +1 -1
  68. package/dist/commands/uninstall.d.ts +5 -3
  69. package/dist/commands/uninstall.d.ts.map +1 -1
  70. package/dist/commands/uninstall.js +40 -16
  71. package/dist/commands/uninstall.js.map +1 -1
  72. package/dist/commands/update.d.ts +34 -0
  73. package/dist/commands/update.d.ts.map +1 -1
  74. package/dist/commands/update.js +209 -11
  75. package/dist/commands/update.js.map +1 -1
  76. package/dist/commands/verify.d.ts +18 -0
  77. package/dist/commands/verify.d.ts.map +1 -0
  78. package/dist/commands/verify.js +75 -0
  79. package/dist/commands/verify.js.map +1 -0
  80. package/dist/configurators/index.d.ts.map +1 -1
  81. package/dist/configurators/index.js +3 -2
  82. package/dist/configurators/index.js.map +1 -1
  83. package/dist/configurators/omp.d.ts +22 -0
  84. package/dist/configurators/omp.d.ts.map +1 -1
  85. package/dist/configurators/omp.js +101 -2
  86. package/dist/configurators/omp.js.map +1 -1
  87. package/dist/configurators/shared.d.ts.map +1 -1
  88. package/dist/configurators/shared.js +39 -7
  89. package/dist/configurators/shared.js.map +1 -1
  90. package/dist/configurators/workflow.d.ts.map +1 -1
  91. package/dist/configurators/workflow.js +5 -1
  92. package/dist/configurators/workflow.js.map +1 -1
  93. package/dist/constants/paths.d.ts +4 -0
  94. package/dist/constants/paths.d.ts.map +1 -1
  95. package/dist/constants/paths.js +4 -0
  96. package/dist/constants/paths.js.map +1 -1
  97. package/dist/migrations/manifests/0.7.0.json +1378 -0
  98. package/dist/templates/atw/definition-of-done.md +65 -0
  99. package/dist/templates/atw/gitignore.txt +7 -0
  100. package/dist/templates/atw/index.d.ts +11 -0
  101. package/dist/templates/atw/index.d.ts.map +1 -1
  102. package/dist/templates/atw/index.js +22 -0
  103. package/dist/templates/atw/index.js.map +1 -1
  104. package/dist/templates/atw/scripts/common/active_task.py +2 -2
  105. package/dist/templates/atw/scripts/common/workflow_phase.py +33 -0
  106. package/dist/templates/atw/scripts/cross_model_review.py +3312 -0
  107. package/dist/templates/atw/scripts/decision_log.py +2002 -0
  108. package/dist/templates/atw/scripts/floor_guard.py +642 -0
  109. package/dist/templates/atw/scripts/task.py +25 -6
  110. package/dist/templates/atw/scripts/tickets.py +480 -10
  111. package/dist/templates/atw/workflow-general.md +6 -1
  112. package/dist/templates/atw/workflow.md +346 -26
  113. package/dist/templates/claude/settings.json +12 -0
  114. package/dist/templates/codex/hooks/session-start.py +2 -2
  115. package/dist/templates/common/bundled-skills/atw-askme/SKILL.md +1 -1
  116. package/dist/templates/common/bundled-skills/atw-askme-with-docs/SKILL.md +1 -1
  117. package/dist/templates/common/bundled-skills/atw-channel/SKILL.md +5 -2
  118. package/dist/templates/common/bundled-skills/atw-channel/references/command-reference.md +44 -5
  119. package/dist/templates/common/bundled-skills/atw-channel/references/progress-debugging.md +9 -0
  120. package/dist/templates/common/bundled-skills/atw-channel/references/workers.md +48 -4
  121. package/dist/templates/common/bundled-skills/atw-code-review/SKILL.md +78 -3
  122. package/dist/templates/common/bundled-skills/atw-codebase-design/SKILL.md +2 -2
  123. package/dist/templates/common/bundled-skills/atw-codebase-design/{DESIGN-IT-TWICE.md → design-it-twice.md} +3 -3
  124. package/dist/templates/common/bundled-skills/atw-cross-model-review/SKILL.md +361 -0
  125. package/dist/templates/common/bundled-skills/atw-cross-model-review/agents/openai.yaml +5 -0
  126. package/dist/templates/common/bundled-skills/atw-cross-model-review/references/four-tiers.md +42 -0
  127. package/dist/templates/common/bundled-skills/atw-cross-model-review/references/log-review-questions.md +38 -0
  128. package/dist/templates/common/bundled-skills/atw-cross-model-review/references/questions.md +54 -0
  129. package/dist/templates/common/bundled-skills/atw-cross-model-review/references/recheck-questions.md +42 -0
  130. package/dist/templates/common/bundled-skills/atw-cross-model-review/references/report-format.md +22 -0
  131. package/dist/templates/common/bundled-skills/atw-diagnosing-bugs/SKILL.md +13 -2
  132. package/dist/templates/common/bundled-skills/atw-domain-modeling/SKILL.md +2 -2
  133. package/dist/templates/common/bundled-skills/atw-handoff/SKILL.md +1 -1
  134. package/dist/templates/common/bundled-skills/atw-implement/SKILL.md +37 -1
  135. package/dist/templates/common/bundled-skills/atw-implement-all/SKILL.md +219 -24
  136. package/dist/templates/common/bundled-skills/atw-implement-spec/SKILL.md +237 -18
  137. package/dist/templates/common/bundled-skills/atw-improve-codebase-architecture/SKILL.md +2 -2
  138. package/dist/templates/common/bundled-skills/atw-init-repo/SKILL.md +1 -1
  139. package/dist/templates/common/bundled-skills/atw-init-repo/references/issue-tracker-atw-local.md +7 -1
  140. package/dist/templates/common/bundled-skills/atw-init-repo/references/issue-tracker-atw.md +7 -1
  141. package/dist/templates/common/bundled-skills/atw-map/SKILL.md +1 -1
  142. package/dist/templates/common/bundled-skills/atw-meta/SKILL.md +1 -1
  143. package/dist/templates/common/bundled-skills/atw-meta/references/customize-local/add-project-local-conventions.md +4 -3
  144. package/dist/templates/common/bundled-skills/atw-meta/references/customize-local/change-skills-or-commands.md +21 -16
  145. package/dist/templates/common/bundled-skills/atw-meta/references/customize-local/change-task-lifecycle.md +1 -1
  146. package/dist/templates/common/bundled-skills/atw-meta/references/customize-local/overview.md +1 -0
  147. package/dist/templates/common/bundled-skills/atw-meta/references/local-architecture/task-system.md +2 -1
  148. package/dist/templates/common/bundled-skills/atw-meta/references/platform-files/hooks-and-settings.md +1 -0
  149. package/dist/templates/common/bundled-skills/atw-noob-mode/SKILL.md +1 -1
  150. package/dist/templates/common/bundled-skills/atw-performance/SKILL.md +134 -0
  151. package/dist/templates/common/bundled-skills/atw-performance/agents/openai.yaml +3 -0
  152. package/dist/templates/common/bundled-skills/atw-performance/references/optimization-patterns.md +250 -0
  153. package/dist/templates/common/bundled-skills/atw-performance/references/performance-checklist.md +238 -0
  154. package/dist/templates/common/bundled-skills/atw-performance/references/performance-optimization.md +264 -0
  155. package/dist/templates/common/bundled-skills/atw-prototype/SKILL.md +3 -3
  156. package/dist/templates/common/bundled-skills/atw-prototype/{LOGIC.md → logic.md} +1 -1
  157. package/dist/templates/common/bundled-skills/atw-prototype/references/design-direction.md +1 -1
  158. package/dist/templates/common/bundled-skills/atw-prototype/references/style-explorer.md +1 -1
  159. package/dist/templates/common/bundled-skills/atw-prototype/{UI.md → ui.md} +4 -4
  160. package/dist/templates/common/bundled-skills/atw-reflect/SKILL.md +77 -0
  161. package/dist/templates/common/bundled-skills/atw-reflect/agents/openai.yaml +5 -0
  162. package/dist/templates/common/bundled-skills/atw-reflect/references/divergent-reviewer.md +38 -0
  163. package/dist/templates/common/bundled-skills/atw-reflect/references/judgment-reviewer.md +37 -0
  164. package/dist/templates/common/bundled-skills/atw-reflect/references/synthesizer.md +63 -0
  165. package/dist/templates/common/bundled-skills/atw-reflect/references/tooling-reviewer.md +48 -0
  166. package/dist/templates/common/bundled-skills/atw-security/SKILL.md +248 -0
  167. package/dist/templates/common/bundled-skills/atw-security/agents/openai.yaml +3 -0
  168. package/dist/templates/common/bundled-skills/atw-security/references/hardening-patterns.md +324 -0
  169. package/dist/templates/common/bundled-skills/atw-security/references/security-checklist.md +248 -0
  170. package/dist/templates/common/bundled-skills/atw-session-insight/SKILL.md +1 -1
  171. package/dist/templates/common/bundled-skills/atw-session-insight/references/cli-quick-reference.md +11 -2
  172. package/dist/templates/common/bundled-skills/atw-spec/SKILL.md +1 -1
  173. package/dist/templates/common/bundled-skills/atw-tdd/SKILL.md +25 -0
  174. package/dist/templates/common/bundled-skills/atw-tickets/SKILL.md +1 -1
  175. package/dist/templates/common/bundled-skills/atw-triage/SKILL.md +5 -5
  176. package/dist/templates/common/bundled-skills/atw-ui/SKILL.md +54 -1
  177. package/dist/templates/common/bundled-skills/atw-ui/references/accessibility-checklist.md +160 -0
  178. package/dist/templates/common/bundled-skills/atw-verify-skill/SKILL.md +58 -0
  179. package/dist/templates/common/bundled-skills/atw-verify-skill/agents/openai.yaml +5 -0
  180. package/dist/templates/common/bundled-skills/atw-verify-skill/references/feature-map-example/README.md +47 -0
  181. package/dist/templates/common/bundled-skills/atw-verify-skill/references/feature-map-example/create-note.md +39 -0
  182. package/dist/templates/common/bundled-skills/atw-verify-skill/references/feature-map-example/search.md +45 -0
  183. package/dist/templates/common/bundled-skills/atw-verify-skill/references/generate.md +107 -0
  184. package/dist/templates/common/bundled-skills/atw-verify-skill/references/health-check.md +100 -0
  185. package/dist/templates/common/bundled-skills/atw-verify-skill/references/verify-skill-template.md +99 -0
  186. package/dist/templates/common/bundled-skills/atw-what-happened/SKILL.md +49 -0
  187. package/dist/templates/common/bundled-skills/atw-what-happened/agents/openai.yaml +5 -0
  188. package/dist/templates/common/commands/finish-work.md +10 -1
  189. package/dist/templates/common/commands/start.md +3 -1
  190. package/dist/templates/common/skills/update-spec.md +40 -4
  191. package/dist/templates/copilot/hooks/session-start.py +2 -2
  192. package/dist/templates/dsh/DSH.md +2 -2
  193. package/dist/templates/markdown/spec/backend/quality-guidelines.md.txt +10 -0
  194. package/dist/templates/markdown/spec/frontend/quality-guidelines.md.txt +10 -0
  195. package/dist/templates/omp/config.yml +15 -0
  196. package/dist/templates/omp/extensions/atw/index.ts.txt +135 -18
  197. package/dist/templates/omp/index.d.ts +1 -0
  198. package/dist/templates/omp/index.d.ts.map +1 -1
  199. package/dist/templates/omp/index.js +3 -0
  200. package/dist/templates/omp/index.js.map +1 -1
  201. package/dist/templates/opencode/lib/session-utils.js +4 -2
  202. package/dist/templates/opencode/plugins/inject-workflow-state.js +5 -1
  203. package/dist/templates/pi/extensions/atw/index.ts.txt +80 -7
  204. package/dist/templates/shared-hooks/index.d.ts +8 -1
  205. package/dist/templates/shared-hooks/index.d.ts.map +1 -1
  206. package/dist/templates/shared-hooks/index.js +8 -0
  207. package/dist/templates/shared-hooks/index.js.map +1 -1
  208. package/dist/templates/shared-hooks/inject-workflow-state.py +131 -14
  209. package/dist/templates/shared-hooks/session-start.py +4 -2
  210. package/dist/templates/shared-hooks/show-notice.py +135 -0
  211. package/dist/templates/snow/SNOW.md +1 -1
  212. package/dist/utils/initialized.d.ts +9 -0
  213. package/dist/utils/initialized.d.ts.map +1 -0
  214. package/dist/utils/initialized.js +24 -0
  215. package/dist/utils/initialized.js.map +1 -0
  216. package/dist/utils/managed-removal.d.ts +2 -0
  217. package/dist/utils/managed-removal.d.ts.map +1 -1
  218. package/dist/utils/managed-removal.js +23 -3
  219. package/dist/utils/managed-removal.js.map +1 -1
  220. package/dist/utils/optional-skills.d.ts +2 -0
  221. package/dist/utils/optional-skills.d.ts.map +1 -1
  222. package/dist/utils/optional-skills.js +1 -1
  223. package/dist/utils/optional-skills.js.map +1 -1
  224. package/dist/utils/template-hash.d.ts.map +1 -1
  225. package/dist/utils/template-hash.js +3 -0
  226. package/dist/utils/template-hash.js.map +1 -1
  227. package/dist/utils/uninstall-scrubbers.d.ts +10 -0
  228. package/dist/utils/uninstall-scrubbers.d.ts.map +1 -1
  229. package/dist/utils/uninstall-scrubbers.js +50 -0
  230. package/dist/utils/uninstall-scrubbers.js.map +1 -1
  231. package/dist/utils/verify-entries.d.ts +51 -0
  232. package/dist/utils/verify-entries.d.ts.map +1 -0
  233. package/dist/utils/verify-entries.js +399 -0
  234. package/dist/utils/verify-entries.js.map +1 -0
  235. package/package.json +2 -2
  236. /package/dist/templates/common/bundled-skills/atw-codebase-design/{DEEPENING.md → deepening.md} +0 -0
  237. /package/dist/templates/common/bundled-skills/atw-domain-modeling/{ADR-FORMAT.md → adr-format.md} +0 -0
  238. /package/dist/templates/common/bundled-skills/atw-domain-modeling/{GLOSSARY-FORMAT.md → glossary-format.md} +0 -0
  239. /package/dist/templates/common/bundled-skills/atw-improve-codebase-architecture/{HTML-REPORT.md → html-report.md} +0 -0
  240. /package/dist/templates/common/bundled-skills/atw-triage/{AGENT-BRIEF.md → agent-brief.md} +0 -0
  241. /package/dist/templates/common/bundled-skills/atw-triage/{OUT-OF-SCOPE.md → out-of-scope.md} +0 -0
@@ -0,0 +1,387 @@
1
+ export function createPiCtx() {
2
+ return {
3
+ nextId: 1,
4
+ ready: false,
5
+ stateSeen: false,
6
+ baseSeen: false,
7
+ active: false,
8
+ streamSeq: 0,
9
+ turnCost: 0,
10
+ };
11
+ }
12
+ const LEVELS_ID = "atw-levels";
13
+ const STATE_ID = "atw-state";
14
+ const BASE_STATS_ID = "atw-stats-base";
15
+ function command(id, type, extra = {}) {
16
+ return JSON.stringify({ id, type, ...extra }) + "\n";
17
+ }
18
+ export function encodePiLevelsRequest() {
19
+ return command(LEVELS_ID, "get_available_thinking_levels");
20
+ }
21
+ export function encodePiStateRequest() {
22
+ return command(STATE_ID, "get_state");
23
+ }
24
+ export function encodePiBaseStatsRequest() {
25
+ return command(BASE_STATS_ID, "get_session_stats");
26
+ }
27
+ function promptLine(ctx, text) {
28
+ ctx.active = true;
29
+ return command(`atw-prompt-${ctx.nextId++}`, "prompt", { message: text });
30
+ }
31
+ export function encodePiUserMessage(ctx, text) {
32
+ return promptLine(ctx, text);
33
+ }
34
+ /**
35
+ * Running turn → `abort` now, replacement prompt after its response. Idle
36
+ * (or settled but still waiting for stats) → the prompt goes straight out;
37
+ * a held terminal belongs to the old turn and must not end the new one.
38
+ */
39
+ export function encodePiInterruptMessage(ctx, text) {
40
+ if (ctx.held)
41
+ ctx.held.stale = true;
42
+ if (!ctx.active)
43
+ return promptLine(ctx, text);
44
+ const id = `atw-abort-${ctx.nextId++}`;
45
+ ctx.abort = { id, prompt: text };
46
+ return command(id, "abort");
47
+ }
48
+ const DIALOG_METHODS = new Set(["select", "confirm", "input", "editor"]);
49
+ export function isObject(x) {
50
+ return typeof x === "object" && x !== null && !Array.isArray(x);
51
+ }
52
+ function summarizeInput(input, max = 120) {
53
+ if (input === null || input === undefined)
54
+ return "";
55
+ let s;
56
+ try {
57
+ s = typeof input === "string" ? input : JSON.stringify(input);
58
+ }
59
+ catch {
60
+ s = String(input);
61
+ }
62
+ return s.length > max ? s.slice(0, max) + "…" : s;
63
+ }
64
+ export function parsePiLine(line, ctx) {
65
+ const trimmed = line.trim();
66
+ if (!trimmed)
67
+ return { events: [] };
68
+ let msg;
69
+ try {
70
+ msg = JSON.parse(trimmed);
71
+ }
72
+ catch {
73
+ return {
74
+ events: [
75
+ {
76
+ kind: "error",
77
+ payload: {
78
+ message: "Failed to parse pi stdout line",
79
+ raw_excerpt: trimmed.slice(0, 200),
80
+ },
81
+ },
82
+ ],
83
+ };
84
+ }
85
+ if (!isObject(msg))
86
+ return { events: [] };
87
+ switch (msg.type) {
88
+ case "response":
89
+ return handleResponse(msg, ctx);
90
+ case "message_start":
91
+ if (isObject(msg.message) && msg.message.role === "assistant") {
92
+ ctx.streamSeq += 1;
93
+ }
94
+ return { events: [] };
95
+ case "message_update":
96
+ return handleMessageUpdate(msg, ctx);
97
+ case "message_end":
98
+ return handleMessageEnd(msg, ctx);
99
+ case "tool_execution_start":
100
+ if (ctx.abort)
101
+ return { events: [] };
102
+ return toolProgress(msg);
103
+ case "agent_settled":
104
+ return handleSettled(msg, ctx);
105
+ case "extension_ui_request":
106
+ return cancelDialog(msg);
107
+ default:
108
+ return { events: [] };
109
+ }
110
+ }
111
+ /** Tool calls become progress (pi and omp share the `tool_execution_start` frame). */
112
+ export function toolProgress(msg) {
113
+ return {
114
+ events: [
115
+ {
116
+ kind: "progress",
117
+ payload: {
118
+ detail: {
119
+ tool: typeof msg.toolName === "string" ? msg.toolName : "",
120
+ input_summary: summarizeInput(msg.args),
121
+ },
122
+ },
123
+ },
124
+ ],
125
+ };
126
+ }
127
+ /** A dialog `extension_ui_request` would block until answered: answer it cancelled. */
128
+ export function cancelDialog(msg) {
129
+ if (typeof msg.id !== "string" || !DIALOG_METHODS.has(String(msg.method))) {
130
+ return { events: [] };
131
+ }
132
+ return {
133
+ events: [],
134
+ side: {
135
+ reply: [
136
+ JSON.stringify({
137
+ type: "extension_ui_response",
138
+ id: msg.id,
139
+ cancelled: true,
140
+ }) + "\n",
141
+ ],
142
+ },
143
+ };
144
+ }
145
+ /** `get_state.model` as `provider/id` (pi and omp). */
146
+ export function modelEvents(data) {
147
+ const model = isObject(data.model) ? data.model : undefined;
148
+ if (!model || typeof model.id !== "string" || !model.id)
149
+ return [];
150
+ const name = typeof model.provider === "string" && model.provider
151
+ ? `${model.provider}/${model.id}`
152
+ : model.id;
153
+ const detail = { kind: "model", model: name };
154
+ return [{ kind: "progress", payload: { detail } }];
155
+ }
156
+ /** `get_session_stats.tokens` (pi and omp). */
157
+ export function tokenUsageEvents(data) {
158
+ if (!isObject(data.tokens))
159
+ return [];
160
+ const detail = {
161
+ kind: "token_usage",
162
+ usage: { total: data.tokens },
163
+ };
164
+ return [{ kind: "progress", payload: { detail } }];
165
+ }
166
+ /** All text blocks of one assistant message joined, as pi's get_last_assistant_text. */
167
+ export function assistantText(message) {
168
+ let text = "";
169
+ for (const block of Array.isArray(message.content) ? message.content : []) {
170
+ if (isObject(block) &&
171
+ block.type === "text" &&
172
+ typeof block.text === "string") {
173
+ text += block.text;
174
+ }
175
+ }
176
+ return text;
177
+ }
178
+ function handleResponse(msg, ctx) {
179
+ const data = isObject(msg.data) ? msg.data : {};
180
+ const failed = msg.success === false;
181
+ const error = typeof msg.error === "string" ? msg.error : "";
182
+ if (msg.id === LEVELS_ID) {
183
+ ctx.levels = Array.isArray(data.levels)
184
+ ? data.levels.filter((l) => typeof l === "string")
185
+ : [];
186
+ return { events: [] };
187
+ }
188
+ if (msg.id === STATE_ID) {
189
+ ctx.stateSeen = true;
190
+ const events = modelEvents(data);
191
+ const sessionId = data.sessionId;
192
+ return typeof sessionId === "string" && sessionId
193
+ ? { events, side: { persistSessionId: sessionId } }
194
+ : { events };
195
+ }
196
+ if (msg.id === BASE_STATS_ID) {
197
+ ctx.baseSeen = true;
198
+ if (typeof data.cost === "number")
199
+ ctx.statsCost = data.cost;
200
+ return { events: [] };
201
+ }
202
+ if (ctx.abort && msg.id === ctx.abort.id) {
203
+ const prompt = ctx.abort.prompt;
204
+ ctx.abort = undefined;
205
+ return { events: [], side: { reply: [promptLine(ctx, prompt)] } };
206
+ }
207
+ if (ctx.held && msg.id === ctx.held.statsId) {
208
+ const held = ctx.held;
209
+ ctx.held = undefined;
210
+ const events = tokenUsageEvents(data);
211
+ const turnCost = takeTurnCost(ctx, held.messageCost, typeof data.cost === "number" ? data.cost : undefined);
212
+ events.push(costEvent(turnCost, held.aborted));
213
+ // 打断撞上取花费的空当:这一轮已被 supervisor 记为打断,不再发结束事件。
214
+ if (held.stale)
215
+ return { events };
216
+ events.push(held.aborted || held.failed
217
+ ? {
218
+ kind: "error",
219
+ payload: {
220
+ message: held.errorMessage ??
221
+ (held.aborted ? "pi aborted the turn" : "pi turn failed"),
222
+ },
223
+ }
224
+ : { kind: "done", payload: { total_cost_usd: turnCost } });
225
+ return { events };
226
+ }
227
+ if (msg.command === "prompt" && failed) {
228
+ ctx.active = false;
229
+ return {
230
+ events: [
231
+ {
232
+ kind: "error",
233
+ payload: { message: error || "pi rejected the prompt" },
234
+ },
235
+ ],
236
+ };
237
+ }
238
+ return { events: [] };
239
+ }
240
+ function handleMessageUpdate(msg, ctx) {
241
+ if (ctx.abort)
242
+ return { events: [] };
243
+ const ev = msg.assistantMessageEvent;
244
+ if (!isObject(ev) || ev.type !== "text_delta")
245
+ return { events: [] };
246
+ if (typeof ev.delta !== "string" || !ev.delta)
247
+ return { events: [] };
248
+ const detail = {
249
+ kind: "output",
250
+ text_delta: ev.delta,
251
+ stream_id: `pi-msg-${ctx.streamSeq}`,
252
+ };
253
+ return { events: [{ kind: "progress", payload: { detail } }] };
254
+ }
255
+ function handleMessageEnd(msg, ctx) {
256
+ const message = isObject(msg.message) ? msg.message : undefined;
257
+ if (message?.role !== "assistant")
258
+ return { events: [] };
259
+ const usage = isObject(message.usage) ? message.usage : undefined;
260
+ const cost = usage && isObject(usage.cost) ? usage.cost.total : undefined;
261
+ if (typeof cost === "number")
262
+ ctx.turnCost += cost;
263
+ const stopReason = typeof message.stopReason === "string" ? message.stopReason : undefined;
264
+ ctx.lastStopReason = stopReason;
265
+ ctx.lastErrorMessage =
266
+ typeof message.errorMessage === "string" ? message.errorMessage : undefined;
267
+ // 被打断的半截消息不当回答发出;半截文字已在增量里。
268
+ if (ctx.abort || stopReason === "aborted")
269
+ return { events: [] };
270
+ // 一条助手消息的几个文字块合成一条,与 pi 自己的 get_last_assistant_text 一致。
271
+ const text = assistantText(message);
272
+ return text
273
+ ? { events: [{ kind: "message", payload: { text } }] }
274
+ : { events: [] };
275
+ }
276
+ function handleSettled(msg, ctx) {
277
+ const aborted = msg.aborted === true || ctx.lastStopReason === "aborted";
278
+ const failed = ctx.lastStopReason === "error";
279
+ const messageCost = ctx.turnCost;
280
+ const errorMessage = ctx.lastErrorMessage;
281
+ ctx.turnCost = 0;
282
+ ctx.lastStopReason = undefined;
283
+ ctx.lastErrorMessage = undefined;
284
+ // 旧一轮被我们打断:supervisor 已开始新一轮,这条结束事件不能算新一轮的。
285
+ if (ctx.abort) {
286
+ return { events: [costEvent(takeTurnCost(ctx, messageCost), true)] };
287
+ }
288
+ ctx.active = false;
289
+ const statsId = `atw-stats-${ctx.nextId++}`;
290
+ ctx.held = {
291
+ statsId,
292
+ messageCost,
293
+ aborted,
294
+ failed,
295
+ errorMessage,
296
+ stale: false,
297
+ };
298
+ return {
299
+ events: [],
300
+ side: { reply: [command(statsId, "get_session_stats")] },
301
+ };
302
+ }
303
+ /**
304
+ * The turn's cost: growth of the stats running total when both readings are
305
+ * known, otherwise the turn's `message_end` costs (which also advance the
306
+ * remembered total, so the next reading is not counted twice).
307
+ */
308
+ export function takeTurnCost(ctx, messageCost, statsCost) {
309
+ const previous = ctx.statsCost;
310
+ if (statsCost !== undefined) {
311
+ ctx.statsCost = statsCost;
312
+ if (previous !== undefined)
313
+ return Math.max(0, statsCost - previous);
314
+ return messageCost;
315
+ }
316
+ if (previous !== undefined)
317
+ ctx.statsCost = previous + messageCost;
318
+ return messageCost;
319
+ }
320
+ /** pi reports 0 for an interrupted turn (measured, S2) although it did cost. */
321
+ export function costEvent(cost, interrupted) {
322
+ const detail = {
323
+ kind: "turn_cost",
324
+ cost_usd: cost,
325
+ ...(cost === 0 && interrupted ? { unreported: true } : {}),
326
+ };
327
+ return { kind: "progress", payload: { detail } };
328
+ }
329
+ /** Prompt files and text both go through `--append-system-prompt` (pi reads a path's contents). */
330
+ export function buildPiArgs(opts) {
331
+ const modes = opts.modes ?? {};
332
+ const args = ["--mode", "rpc"];
333
+ if (modes.readOnly)
334
+ args.push("--tools", "read,grep,find,ls");
335
+ if (modes.clean) {
336
+ args.push("--no-extensions", "--no-mcp", "--no-skills", "--no-prompt-templates", "--no-themes", "--no-context-files", "--no-approve");
337
+ }
338
+ if (modes.noSession)
339
+ args.push("--no-session");
340
+ if (modes.effort)
341
+ args.push("--thinking", modes.effort);
342
+ // pi 没有快速档设置,--standard-speed 不用传任何参数。
343
+ if (opts.resumeSessionId)
344
+ args.push("--session-id", opts.resumeSessionId);
345
+ if (opts.model)
346
+ args.push("--model", opts.model);
347
+ if (opts.systemPromptFile) {
348
+ args.push("--append-system-prompt", opts.systemPromptFile);
349
+ }
350
+ else if (opts.systemPrompt?.trim()) {
351
+ args.push("--append-system-prompt", opts.systemPrompt);
352
+ }
353
+ return args;
354
+ }
355
+ /** `pi --help` 1.2.0 `--thinking`. Which of these a model has is checked in the handshake. */
356
+ export const PI_EFFORT_LEVELS = [
357
+ "off",
358
+ "minimal",
359
+ "low",
360
+ "medium",
361
+ "high",
362
+ "xhigh",
363
+ "max",
364
+ ];
365
+ /**
366
+ * pi only warns on an unknown `--thinking` and falls back to the default.
367
+ * `--session-id` (resume) and `--no-session` cannot be combined.
368
+ */
369
+ export function validatePiModes(modes) {
370
+ if (modes.resume && modes.noSession) {
371
+ throw new Error("pi: --resume cannot be combined with --no-session (an unsaved session cannot be resumed)");
372
+ }
373
+ if (modes.effort !== undefined &&
374
+ !PI_EFFORT_LEVELS.includes(modes.effort)) {
375
+ throw new Error(`Invalid --effort '${modes.effort}' for pi. Must be one of: ${PI_EFFORT_LEVELS.join(", ")}`);
376
+ }
377
+ }
378
+ /**
379
+ * pi (and omp) silently clamp a level the model lacks to the nearest one it
380
+ * has, so the handshake refuses it before any message reaches the model.
381
+ */
382
+ export function checkPiEffortForModel(effort, levels, model, tool = "pi") {
383
+ if (!levels.includes(effort)) {
384
+ throw new Error(`${tool}: --effort '${effort}' is not available for model ${model ?? `(${tool} default)`}; available: ${levels.join(", ") || "(none)"}`);
385
+ }
386
+ }
387
+ //# sourceMappingURL=pi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi.js","sourceRoot":"","sources":["../../../../src/commands/channel/adapters/pi.ts"],"names":[],"mappings":"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"}
@@ -30,4 +30,20 @@ export interface ParseResult {
30
30
  events: AdapterEvent[];
31
31
  side?: AdapterSideEffect;
32
32
  }
33
+ /**
34
+ * Reviewer-mode switches shared by `channel spawn` / `channel run`
35
+ * (`--read-only`, `--clean`, `--no-session`, `--effort`, `--standard-speed`).
36
+ * All unset means the worker launches exactly as before.
37
+ */
38
+ export interface WorkerModes {
39
+ readOnly?: boolean;
40
+ /** Ignore the user's and project's settings, hooks, MCP, plugins, instruction files. */
41
+ clean?: boolean;
42
+ /** Leave no session record on disk. */
43
+ noSession?: boolean;
44
+ /** Tool-native effort level, validated per tool before launch. */
45
+ effort?: string;
46
+ /** Do not use the fast tier the user configured for this tool. */
47
+ standardSpeed?: boolean;
48
+ }
33
49
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/commands/channel/adapters/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oFAAoF;IACpF,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;CAChE;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/commands/channel/adapters/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oFAAoF;IACpF,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;CAChE;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wFAAwF;IACxF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,uCAAuC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB"}
@@ -29,4 +29,5 @@ export interface AgentDefinition {
29
29
  }
30
30
  export declare function findAgentFile(name: string, cwd: string, trustedRoots?: string[]): string | null;
31
31
  export declare function loadAgent(name: string, cwd?: string, trustedRoots?: string[]): AgentDefinition;
32
+ export declare function parseFrontmatter(text: string): Record<string, string>;
32
33
  //# sourceMappingURL=agent-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-loader.d.ts","sourceRoot":"","sources":["../../../src/commands/channel/agent-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,YAAY,GAAE,MAAM,EAAO,GAC1B,MAAM,GAAG,IAAI,CA8Bf;AAED,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,MAAsB,EAC3B,YAAY,GAAE,MAAM,EAAO,GAC1B,eAAe,CAyCjB"}
1
+ {"version":3,"file":"agent-loader.d.ts","sourceRoot":"","sources":["../../../src/commands/channel/agent-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,YAAY,GAAE,MAAM,EAAO,GAC1B,MAAM,GAAG,IAAI,CA8Bf;AAED,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,MAAsB,EAC3B,YAAY,GAAE,MAAM,EAAO,GAC1B,eAAe,CAyCjB;AAkED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAuDrE"}
@@ -97,13 +97,52 @@ function normalizeProvider(v) {
97
97
  * line one
98
98
  * line two
99
99
  *
100
+ * 块写法(`|`、`>`,可带 `-` 或 `+`)按标准 YAML 读,`text` 视作末尾还跟着一个换行
101
+ * (即收尾 `---` 前那个)。
102
+ *
100
103
  * Lists / nested objects beyond this are returned as their raw string form.
101
104
  */
102
105
  // Dangerous keys that would corrupt Object.prototype if assigned naïvely.
103
106
  // We use Object.create(null) as the bag, but also reject these to keep
104
107
  // callers safe when they iterate / spread the result.
105
108
  const FORBIDDEN_KEYS = new Set(["__proto__", "prototype", "constructor"]);
106
- function parseFrontmatter(text) {
109
+ const BLOCK_HEADER = /^([|>])([+-]?)\s*$/;
110
+ /** 按 YAML 块写法规则还原值:缩进取首个非空行,`>` 折叠,`-` 去尾、`+` 保留、默认留一个换行。 */
111
+ function readBlockScalar(rawLines, folded, chomp) {
112
+ const indent = rawLines.find((l) => l.trim())?.match(/^ */)?.[0].length ?? 0;
113
+ const lines = rawLines.map((l) => (l.trim() ? l.slice(indent) : ""));
114
+ let end = lines.length;
115
+ while (end > 0 && lines[end - 1] === "")
116
+ end--;
117
+ const trailing = lines.length - end;
118
+ if (end === 0)
119
+ return chomp === "+" ? "\n".repeat(trailing) : "";
120
+ let start = 0;
121
+ while (lines[start] === "")
122
+ start++;
123
+ let text = "\n".repeat(start) + lines[start];
124
+ for (let k = start + 1; k < end;) {
125
+ let empties = 0;
126
+ while (lines[k] === "") {
127
+ empties++;
128
+ k++;
129
+ }
130
+ const prev = lines[k - empties - 1];
131
+ const next = lines[k];
132
+ // 折叠只发生在两行普通文字之间;多缩进的行前后换行照留。
133
+ const spaced = /^[ \t]/.test(prev) || /^[ \t]/.test(next);
134
+ if (!folded || spaced)
135
+ text += "\n".repeat(empties + 1);
136
+ else
137
+ text += empties === 0 ? " " : "\n".repeat(empties);
138
+ text += next;
139
+ k++;
140
+ }
141
+ if (chomp === "-")
142
+ return text;
143
+ return chomp === "+" ? text + "\n".repeat(trailing + 1) : text + "\n";
144
+ }
145
+ export function parseFrontmatter(text) {
107
146
  // Prototype-less object: assignment to `__proto__` etc. won't traverse
108
147
  // up to Object.prototype.
109
148
  const out = Object.create(null);
@@ -125,7 +164,7 @@ function parseFrontmatter(text) {
125
164
  if (FORBIDDEN_KEYS.has(key)) {
126
165
  process.stderr.write(`[channel agent-loader] refusing dangerous frontmatter key '${key}'\n`);
127
166
  // Still need to consume any block scalar continuation lines.
128
- if (inline === "|" || inline === ">") {
167
+ if (BLOCK_HEADER.test(inline)) {
129
168
  i++;
130
169
  while (i < lines.length && !lines[i].match(/^\S/))
131
170
  i++;
@@ -135,7 +174,8 @@ function parseFrontmatter(text) {
135
174
  }
136
175
  continue;
137
176
  }
138
- if (inline === "|" || inline === ">") {
177
+ const header = BLOCK_HEADER.exec(inline);
178
+ if (header) {
139
179
  // Block scalar — collect indented continuation lines
140
180
  const block = [];
141
181
  i++;
@@ -143,10 +183,10 @@ function parseFrontmatter(text) {
143
183
  const cont = lines[i];
144
184
  if (cont.match(/^\S/))
145
185
  break;
146
- block.push(cont.replace(/^ {2}/, ""));
186
+ block.push(cont);
147
187
  i++;
148
188
  }
149
- out[key] = block.join("\n").trim();
189
+ out[key] = readBlockScalar(block, header[1] === ">", header[2]);
150
190
  }
151
191
  else {
152
192
  out[key] = inline.trim();
@@ -1 +1 @@
1
- {"version":3,"file":"agent-loader.js","sourceRoot":"","sources":["../../../src/commands/channel/agent-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-loader.js","sourceRoot":"","sources":["../../../src/commands/channel/agent-loader.ts"],"names":[],"mappings":"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"}
@@ -10,5 +10,5 @@
10
10
  * trace; we pre-seed the ctx with the ids the probe used (1 for initialize,
11
11
  * 2 for thread/start, 3 for turn/start) so id-matching works.
12
12
  */
13
- export declare function parseTrace(adapter: "claude" | "codex", file: string): void;
13
+ export declare function parseTrace(adapter: "claude" | "codex" | "pi" | "omp", file: string): void;
14
14
  //# sourceMappingURL=dev-parse-trace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dev-parse-trace.d.ts","sourceRoot":"","sources":["../../../src/commands/channel/dev-parse-trace.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CA6B1E"}
1
+ {"version":3,"file":"dev-parse-trace.d.ts","sourceRoot":"","sources":["../../../src/commands/channel/dev-parse-trace.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,EAC1C,IAAI,EAAE,MAAM,GACX,IAAI,CAkDN"}
@@ -1,6 +1,8 @@
1
1
  import fs from "node:fs";
2
- import { parseClaudeLine } from "./adapters/claude.js";
2
+ import { createClaudeCtx, parseClaudeLine } from "./adapters/claude.js";
3
3
  import { createCodexCtx, parseCodexLine } from "./adapters/codex.js";
4
+ import { createOmpCtx, parseOmpLine } from "./adapters/omp.js";
5
+ import { createPiCtx, parsePiLine } from "./adapters/pi.js";
4
6
  /**
5
7
  * Dev-only command: feed a recorded stream-json / wire trace into the
6
8
  * matching adapter and print the resulting channel events as JSON lines.
@@ -18,15 +20,36 @@ export function parseTrace(adapter, file) {
18
20
  const lines = raw.split("\n");
19
21
  let lineNo = 0;
20
22
  if (adapter === "claude") {
23
+ const claudeCtx = createClaudeCtx();
21
24
  for (const line of lines) {
22
25
  lineNo++;
23
26
  if (!line.trim())
24
27
  continue;
25
- const result = parseClaudeLine(line);
28
+ const result = parseClaudeLine(line, claudeCtx);
26
29
  printResult(lineNo, result);
27
30
  }
28
31
  return;
29
32
  }
33
+ if (adapter === "pi") {
34
+ const piCtx = createPiCtx();
35
+ for (const line of lines) {
36
+ lineNo++;
37
+ if (!line.trim())
38
+ continue;
39
+ printResult(lineNo, parsePiLine(line, piCtx));
40
+ }
41
+ return;
42
+ }
43
+ if (adapter === "omp") {
44
+ const ompCtx = createOmpCtx();
45
+ for (const line of lines) {
46
+ lineNo++;
47
+ if (!line.trim())
48
+ continue;
49
+ printResult(lineNo, parseOmpLine(line, ompCtx));
50
+ }
51
+ return;
52
+ }
30
53
  // adapter === "codex"
31
54
  const ctx = createCodexCtx();
32
55
  // Pre-seed pending so the recorded responses (id=1,2,3) match.
@@ -1 +1 @@
1
- {"version":3,"file":"dev-parse-trace.js","sourceRoot":"","sources":["../../../src/commands/channel/dev-parse-trace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dev-parse-trace.js","sourceRoot":"","sources":["../../../src/commands/channel/dev-parse-trace.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/channel/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAwC/D,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA24B7D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/channel/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAiF/D,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAy5B7D"}