@monoes/monomindcli 2.10.10 → 2.10.13

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 (233) hide show
  1. package/.claude/commands/mastermind/brain.md +14 -14
  2. package/.claude/commands/mastermind/help.md +2 -2
  3. package/.claude/commands/mastermind/master.md +24 -19
  4. package/.claude/commands/mastermind/memory.md +8 -8
  5. package/.claude/commands/mastermind/monoswarm.md +4 -4
  6. package/.claude/commands/mastermind.md +7 -7
  7. package/.claude/commands/truth/start.md +3 -3
  8. package/.claude/skills/mastermind/SKILL.md +7 -16
  9. package/.claude/skills/mastermind-debug/SKILL.md +3 -3
  10. package/.claude/skills/mastermind-design/SKILL.md +2 -0
  11. package/.claude/skills/mastermind-execute/SKILL.md +66 -11
  12. package/.claude/skills/mastermind-idea/SKILL.md +9 -2
  13. package/.claude/skills/mastermind-intake/SKILL.md +31 -7
  14. package/.claude/skills/mastermind-issue-detail/SKILL.md +70 -16
  15. package/.claude/skills/mastermind-issues/SKILL.md +111 -16
  16. package/.claude/skills/mastermind-liveness/SKILL.md +96 -26
  17. package/.claude/skills/mastermind-my-issues/SKILL.md +40 -8
  18. package/.claude/skills/mastermind-org/SKILL.md +2 -0
  19. package/.claude/skills/mastermind-plan/SKILL.md +7 -16
  20. package/.claude/skills/mastermind-plan-to-tasks/SKILL.md +132 -24
  21. package/.claude/skills/mastermind-protocol/SKILL.md +33 -22
  22. package/.claude/skills/mastermind-runorg/SKILL.md +22 -3
  23. package/.claude/skills/mastermind-skill-builder/SKILL.md +1 -1
  24. package/.claude/skills/mastermind-tasks/SKILL.md +5 -0
  25. package/.claude/skills/mastermind-techport/SKILL.md +1 -1
  26. package/.claude/skills/performance-analysis/SKILL.md +1 -1
  27. package/.claude/skills/verification-quality/SKILL.md +2 -3
  28. package/README.md +2 -2
  29. package/dist/src/commands/doc.js +2 -2
  30. package/dist/src/commands/doc.js.map +1 -1
  31. package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
  32. package/dist/src/commands/doctor-project-checks.js +20 -1
  33. package/dist/src/commands/doctor-project-checks.js.map +1 -1
  34. package/dist/src/commands/monograph.d.ts.map +1 -1
  35. package/dist/src/commands/monograph.js +11 -4
  36. package/dist/src/commands/monograph.js.map +1 -1
  37. package/dist/src/commands/org-observe.d.ts.map +1 -1
  38. package/dist/src/commands/org-observe.js +56 -6
  39. package/dist/src/commands/org-observe.js.map +1 -1
  40. package/dist/src/commands/org.d.ts +26 -0
  41. package/dist/src/commands/org.d.ts.map +1 -1
  42. package/dist/src/commands/org.js +144 -28
  43. package/dist/src/commands/org.js.map +1 -1
  44. package/dist/src/init/executor.d.ts.map +1 -1
  45. package/dist/src/init/executor.js +10 -9
  46. package/dist/src/init/executor.js.map +1 -1
  47. package/dist/src/init/settings-generator.d.ts.map +1 -1
  48. package/dist/src/init/settings-generator.js.map +1 -1
  49. package/dist/src/init/write-codex.d.ts.map +1 -1
  50. package/dist/src/init/write-codex.js.map +1 -1
  51. package/dist/src/knowledge/document-pipeline.d.ts +5 -0
  52. package/dist/src/knowledge/document-pipeline.d.ts.map +1 -1
  53. package/dist/src/knowledge/document-pipeline.js +32 -16
  54. package/dist/src/knowledge/document-pipeline.js.map +1 -1
  55. package/dist/src/mcp-tools/hooks-routing.d.ts +9 -0
  56. package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -1
  57. package/dist/src/mcp-tools/hooks-routing.js +12 -1
  58. package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
  59. package/dist/src/mcp-tools/knowledge-tools.d.ts.map +1 -1
  60. package/dist/src/mcp-tools/knowledge-tools.js +105 -13
  61. package/dist/src/mcp-tools/knowledge-tools.js.map +1 -1
  62. package/dist/src/mcp-tools/memory-tools.d.ts +13 -0
  63. package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
  64. package/dist/src/mcp-tools/memory-tools.js +257 -31
  65. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  66. package/dist/src/mcp-tools/monograph/health-tools.d.ts.map +1 -1
  67. package/dist/src/mcp-tools/monograph/health-tools.js +99 -42
  68. package/dist/src/mcp-tools/monograph/health-tools.js.map +1 -1
  69. package/dist/src/mcp-tools/monograph/impact-tools.d.ts.map +1 -1
  70. package/dist/src/mcp-tools/monograph/impact-tools.js +123 -51
  71. package/dist/src/mcp-tools/monograph/impact-tools.js.map +1 -1
  72. package/dist/src/mcp-tools/monograph/query-tools.d.ts.map +1 -1
  73. package/dist/src/mcp-tools/monograph/query-tools.js +113 -96
  74. package/dist/src/mcp-tools/monograph/query-tools.js.map +1 -1
  75. package/dist/src/mcp-tools/monograph/shared.d.ts +37 -4
  76. package/dist/src/mcp-tools/monograph/shared.d.ts.map +1 -1
  77. package/dist/src/mcp-tools/monograph/shared.js +75 -56
  78. package/dist/src/mcp-tools/monograph/shared.js.map +1 -1
  79. package/dist/src/memory/memory-bridge.d.ts +60 -1
  80. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  81. package/dist/src/memory/memory-bridge.js +172 -42
  82. package/dist/src/memory/memory-bridge.js.map +1 -1
  83. package/dist/src/memory/memory-kg.d.ts +495 -28
  84. package/dist/src/memory/memory-kg.d.ts.map +1 -1
  85. package/dist/src/memory/memory-kg.js +2186 -251
  86. package/dist/src/memory/memory-kg.js.map +1 -1
  87. package/dist/src/memory/query-router.d.ts +51 -0
  88. package/dist/src/memory/query-router.d.ts.map +1 -1
  89. package/dist/src/memory/query-router.js +38 -2
  90. package/dist/src/memory/query-router.js.map +1 -1
  91. package/dist/src/orgrt/agent-exec.d.ts.map +1 -1
  92. package/dist/src/orgrt/agent-exec.js +7 -0
  93. package/dist/src/orgrt/agent-exec.js.map +1 -1
  94. package/dist/src/orgrt/agent-runner.d.ts +26 -1
  95. package/dist/src/orgrt/agent-runner.d.ts.map +1 -1
  96. package/dist/src/orgrt/agent-runner.js +73 -22
  97. package/dist/src/orgrt/agent-runner.js.map +1 -1
  98. package/dist/src/orgrt/antigravity-runner.d.ts +1 -1
  99. package/dist/src/orgrt/antigravity-runner.d.ts.map +1 -1
  100. package/dist/src/orgrt/antigravity-runner.js +36 -19
  101. package/dist/src/orgrt/antigravity-runner.js.map +1 -1
  102. package/dist/src/orgrt/approvals.d.ts +26 -2
  103. package/dist/src/orgrt/approvals.d.ts.map +1 -1
  104. package/dist/src/orgrt/approvals.js +67 -7
  105. package/dist/src/orgrt/approvals.js.map +1 -1
  106. package/dist/src/orgrt/broker.d.ts +21 -2
  107. package/dist/src/orgrt/broker.d.ts.map +1 -1
  108. package/dist/src/orgrt/broker.js +56 -8
  109. package/dist/src/orgrt/broker.js.map +1 -1
  110. package/dist/src/orgrt/bus.d.ts +8 -0
  111. package/dist/src/orgrt/bus.d.ts.map +1 -1
  112. package/dist/src/orgrt/bus.js +27 -0
  113. package/dist/src/orgrt/bus.js.map +1 -1
  114. package/dist/src/orgrt/checkpoint-ops.d.ts.map +1 -1
  115. package/dist/src/orgrt/checkpoint-ops.js +15 -5
  116. package/dist/src/orgrt/checkpoint-ops.js.map +1 -1
  117. package/dist/src/orgrt/checkpoint.d.ts +42 -4
  118. package/dist/src/orgrt/checkpoint.d.ts.map +1 -1
  119. package/dist/src/orgrt/checkpoint.js +75 -4
  120. package/dist/src/orgrt/checkpoint.js.map +1 -1
  121. package/dist/src/orgrt/codex-runner.d.ts +1 -1
  122. package/dist/src/orgrt/codex-runner.d.ts.map +1 -1
  123. package/dist/src/orgrt/codex-runner.js +50 -23
  124. package/dist/src/orgrt/codex-runner.js.map +1 -1
  125. package/dist/src/orgrt/copilot-runner.d.ts +24 -2
  126. package/dist/src/orgrt/copilot-runner.d.ts.map +1 -1
  127. package/dist/src/orgrt/copilot-runner.js +257 -157
  128. package/dist/src/orgrt/copilot-runner.js.map +1 -1
  129. package/dist/src/orgrt/cross-org.d.ts +10 -3
  130. package/dist/src/orgrt/cross-org.d.ts.map +1 -1
  131. package/dist/src/orgrt/cross-org.js +225 -10
  132. package/dist/src/orgrt/cross-org.js.map +1 -1
  133. package/dist/src/orgrt/crush-runner.d.ts +22 -2
  134. package/dist/src/orgrt/crush-runner.d.ts.map +1 -1
  135. package/dist/src/orgrt/crush-runner.js +227 -120
  136. package/dist/src/orgrt/crush-runner.js.map +1 -1
  137. package/dist/src/orgrt/daemon.d.ts +77 -7
  138. package/dist/src/orgrt/daemon.d.ts.map +1 -1
  139. package/dist/src/orgrt/daemon.js +989 -385
  140. package/dist/src/orgrt/daemon.js.map +1 -1
  141. package/dist/src/orgrt/decisions.d.ts +2 -2
  142. package/dist/src/orgrt/decisions.d.ts.map +1 -1
  143. package/dist/src/orgrt/decisions.js +90 -18
  144. package/dist/src/orgrt/decisions.js.map +1 -1
  145. package/dist/src/orgrt/grok-runner.d.ts +29 -3
  146. package/dist/src/orgrt/grok-runner.d.ts.map +1 -1
  147. package/dist/src/orgrt/grok-runner.js +286 -150
  148. package/dist/src/orgrt/grok-runner.js.map +1 -1
  149. package/dist/src/orgrt/kimicode-runner.d.ts +5 -5
  150. package/dist/src/orgrt/kimicode-runner.d.ts.map +1 -1
  151. package/dist/src/orgrt/kimicode-runner.js +53 -32
  152. package/dist/src/orgrt/kimicode-runner.js.map +1 -1
  153. package/dist/src/orgrt/mailbox.d.ts +15 -0
  154. package/dist/src/orgrt/mailbox.d.ts.map +1 -1
  155. package/dist/src/orgrt/mailbox.js +29 -1
  156. package/dist/src/orgrt/mailbox.js.map +1 -1
  157. package/dist/src/orgrt/migrate.d.ts.map +1 -1
  158. package/dist/src/orgrt/migrate.js +8 -5
  159. package/dist/src/orgrt/migrate.js.map +1 -1
  160. package/dist/src/orgrt/opencode-runner.d.ts +1 -1
  161. package/dist/src/orgrt/opencode-runner.d.ts.map +1 -1
  162. package/dist/src/orgrt/opencode-runner.js +29 -3
  163. package/dist/src/orgrt/opencode-runner.js.map +1 -1
  164. package/dist/src/orgrt/org-memory.d.ts +19 -3
  165. package/dist/src/orgrt/org-memory.d.ts.map +1 -1
  166. package/dist/src/orgrt/org-memory.js +110 -38
  167. package/dist/src/orgrt/org-memory.js.map +1 -1
  168. package/dist/src/orgrt/pi-rpc-runner.d.ts +3 -1
  169. package/dist/src/orgrt/pi-rpc-runner.d.ts.map +1 -1
  170. package/dist/src/orgrt/pi-rpc-runner.js +35 -3
  171. package/dist/src/orgrt/pi-rpc-runner.js.map +1 -1
  172. package/dist/src/orgrt/pi-runner.d.ts +25 -2
  173. package/dist/src/orgrt/pi-runner.d.ts.map +1 -1
  174. package/dist/src/orgrt/pi-runner.js +271 -152
  175. package/dist/src/orgrt/pi-runner.js.map +1 -1
  176. package/dist/src/orgrt/policy.d.ts +1 -0
  177. package/dist/src/orgrt/policy.d.ts.map +1 -1
  178. package/dist/src/orgrt/policy.js +199 -39
  179. package/dist/src/orgrt/policy.js.map +1 -1
  180. package/dist/src/orgrt/provider.d.ts +4 -0
  181. package/dist/src/orgrt/provider.d.ts.map +1 -1
  182. package/dist/src/orgrt/provider.js +16 -0
  183. package/dist/src/orgrt/provider.js.map +1 -1
  184. package/dist/src/orgrt/qwen-rpc-runner.d.ts +3 -1
  185. package/dist/src/orgrt/qwen-rpc-runner.d.ts.map +1 -1
  186. package/dist/src/orgrt/qwen-rpc-runner.js +35 -3
  187. package/dist/src/orgrt/qwen-rpc-runner.js.map +1 -1
  188. package/dist/src/orgrt/qwen-runner.d.ts +30 -3
  189. package/dist/src/orgrt/qwen-runner.d.ts.map +1 -1
  190. package/dist/src/orgrt/qwen-runner.js +282 -142
  191. package/dist/src/orgrt/qwen-runner.js.map +1 -1
  192. package/dist/src/orgrt/role-slot.d.ts +88 -0
  193. package/dist/src/orgrt/role-slot.d.ts.map +1 -0
  194. package/dist/src/orgrt/role-slot.js +133 -0
  195. package/dist/src/orgrt/role-slot.js.map +1 -0
  196. package/dist/src/orgrt/runtime-options.d.ts +17 -0
  197. package/dist/src/orgrt/runtime-options.d.ts.map +1 -0
  198. package/dist/src/orgrt/runtime-options.js +32 -0
  199. package/dist/src/orgrt/runtime-options.js.map +1 -0
  200. package/dist/src/orgrt/scheduler-integration.d.ts +11 -0
  201. package/dist/src/orgrt/scheduler-integration.d.ts.map +1 -1
  202. package/dist/src/orgrt/scheduler-integration.js +75 -17
  203. package/dist/src/orgrt/scheduler-integration.js.map +1 -1
  204. package/dist/src/orgrt/scheduler.d.ts +4 -0
  205. package/dist/src/orgrt/scheduler.d.ts.map +1 -1
  206. package/dist/src/orgrt/scheduler.js +7 -1
  207. package/dist/src/orgrt/scheduler.js.map +1 -1
  208. package/dist/src/orgrt/server.d.ts +8 -3
  209. package/dist/src/orgrt/server.d.ts.map +1 -1
  210. package/dist/src/orgrt/server.js +48 -13
  211. package/dist/src/orgrt/server.js.map +1 -1
  212. package/dist/src/orgrt/session.d.ts +26 -2
  213. package/dist/src/orgrt/session.d.ts.map +1 -1
  214. package/dist/src/orgrt/session.js +98 -4
  215. package/dist/src/orgrt/session.js.map +1 -1
  216. package/dist/src/orgrt/task-dag.d.ts +5 -0
  217. package/dist/src/orgrt/task-dag.d.ts.map +1 -1
  218. package/dist/src/orgrt/task-dag.js +41 -0
  219. package/dist/src/orgrt/task-dag.js.map +1 -1
  220. package/dist/src/orgrt/test-loop.js +2 -2
  221. package/dist/src/orgrt/test-loop.js.map +1 -1
  222. package/dist/src/orgrt/types.d.ts +14 -2
  223. package/dist/src/orgrt/types.d.ts.map +1 -1
  224. package/dist/src/orgrt/types.js +15 -1
  225. package/dist/src/orgrt/types.js.map +1 -1
  226. package/dist/src/orgrt/vercel-runner.d.ts.map +1 -1
  227. package/dist/src/orgrt/vercel-runner.js +4 -0
  228. package/dist/src/orgrt/vercel-runner.js.map +1 -1
  229. package/dist/src/ui/routes-org.mjs +27 -7
  230. package/dist/src/ui/server.mjs +82 -48
  231. package/dist/tsconfig.tsbuildinfo +1 -1
  232. package/package.json +3 -2
  233. package/dist/src/ui/data/mastermind-sessions.json +0 -1
@@ -9,6 +9,22 @@
9
9
  * Auth: GitHub's own device/browser login flow (`copilot` handles this
10
10
  * itself on first run). No env vars set here.
11
11
  *
12
+ * Streaming / liveness — WHY INCREMENTAL (#204):
13
+ * This runner originally buffered ALL of copilot's stdout until the
14
+ * subprocess exited before parsing anything, so any turn longer than
15
+ * session.ts's 4-minute silent-stream watchdog (SILENT_SESSION_MS) yielded
16
+ * zero messages in time — abort, retry, kill, circuit breaker. Same bug
17
+ * class the kimi/antigravity/codex runners had (#204 audit). This runner
18
+ * now parses stdout LINE BY LINE as data arrives: a liveness `tool_use`
19
+ * message is yielded the moment the subprocess spawns (deterministically
20
+ * winning the watchdog's first-pull race regardless of copilot's latency),
21
+ * and each assistant-shaped NDJSON event is yielded as it lands rather
22
+ * than accumulated until process close. Any tool-activity-shaped event
23
+ * (see handleLine's `kind.startsWith('tool')` check) is forwarded as a
24
+ * `tool_use` liveness message too — a wrong guess there only costs a
25
+ * missed heartbeat, unlike assistant text, which still fails closed (no
26
+ * text extracted) on an unrecognized shape per the note below.
27
+ *
12
28
  * Subprocess protocol — per public docs, NOT byte-verified against a running
13
29
  * binary:
14
30
  * - Invocation: `copilot -p "<prompt>" --output-format json -s
@@ -24,7 +40,7 @@
24
40
  * Copilot's non-interactive mode; this runner was missing `--no-ask-user`
25
41
  * until that cross-check.
26
42
  * - Output: NDJSON; assistant text arrives on `assistant.message`-shaped
27
- * events. The exact full field list isn't published, so parseCopilotEvents
43
+ * events. The exact full field list isn't published, so handleLine
28
44
  * tolerates a couple of plausible shapes (an explicit `type`/`kind` of
29
45
  * 'assistant.message' or 'assistant' carrying `content`/`text`) and
30
46
  * fails closed (no text extracted) on anything else, rather than
@@ -39,22 +55,25 @@
39
55
  * CLI has no documented custom-base-URL override (it talks to GitHub's
40
56
  * own Copilot backend, not a passthrough-able OpenAI/Anthropic
41
57
  * endpoint), so this runner does not attempt usage-proxy accounting —
42
- * it always reports 0 tokens. UPDATE (issue #181 research): Copilot CLI
43
- * does expose token counts via OpenTelemetry file export
44
- * (`COPILOT_OTEL_ENABLED=true`, `COPILOT_OTEL_EXPORTER_TYPE=file`,
45
- * `COPILOT_OTEL_FILE_EXPORTER_PATH=<path>`, writing to
46
- * `~/.copilot/otel/*.jsonl` by default), but this is opt-in (not emitted
47
- * on `--output-format json` stdout) and no source with literal, quotable
48
- * JSON field names for the OTel span schema was found — only prose
49
- * descriptions ("chat spans ... cache read/creation ... reasoning output
50
- * tokens"). Implementing a parser against a guessed schema risks the
51
- * exact wrong-guess failure mode `pi-rpc-runner.ts`'s header warns
52
- * against. Still needs a live `copilot` install with OTel file export
53
- * enabled to capture a real JSONL sample before this can be wired up.
58
+ * it always reports 0 tokens (issue #181, out of scope here). UPDATE
59
+ * (issue #181 research): Copilot CLI does expose token counts via
60
+ * OpenTelemetry file export (`COPILOT_OTEL_ENABLED=true`,
61
+ * `COPILOT_OTEL_EXPORTER_TYPE=file`, `COPILOT_OTEL_FILE_EXPORTER_PATH=<path>`,
62
+ * writing to `~/.copilot/otel/*.jsonl` by default), but this is opt-in
63
+ * (not emitted on `--output-format json` stdout) and no source with
64
+ * literal, quotable JSON field names for the OTel span schema was found —
65
+ * only prose descriptions ("chat spans ... cache read/creation ...
66
+ * reasoning output tokens"). Implementing a parser against a guessed
67
+ * schema risks the exact wrong-guess failure mode `pi-rpc-runner.ts`'s
68
+ * header warns against. Still needs a live `copilot` install with OTel
69
+ * file export enabled to capture a real JSONL sample before this can be
70
+ * wired up.
54
71
  *
55
72
  * Org tools — FENCE PROTOCOL: same approach as the other subprocess runners.
56
73
  */
57
74
  import { spawn } from 'node:child_process';
75
+ import { killOnAbort, } from './agent-runner.js';
76
+ import { classifyStderr } from './kimicode-runner.js';
58
77
  import { buildToolProtocol, executeToolCall, formatToolResults, MAX_TOOL_ROUNDS, parseToolCalls, TOOL_CALL_RE, } from './tool-fence.js';
59
78
  const TURN_TIMEOUT_MS = 2 * 60 * 60 * 1000;
60
79
  /** Distinct from TURN_TIMEOUT_MS: catches a hung first-run interactive prompt
@@ -75,33 +94,56 @@ function coerceText(v) {
75
94
  }
76
95
  return undefined;
77
96
  }
97
+ /** Parse ONE NDJSON line into a normalized stream event (or null if it
98
+ * carries nothing to yield). Shared by the incremental streaming path and
99
+ * the batch parseCopilotEvents helper below (kept for unit testing against
100
+ * fixture lines — copilot-runner.test.ts). */
101
+ function handleLine(line) {
102
+ const trimmed = line.trim();
103
+ if (!trimmed?.startsWith('{'))
104
+ return null;
105
+ let ev;
106
+ try {
107
+ ev = JSON.parse(trimmed);
108
+ }
109
+ catch {
110
+ return null;
111
+ }
112
+ const kind = ev.type ?? ev.kind;
113
+ if (kind === 'assistant.message' || kind === 'assistant') {
114
+ const text = coerceText(ev.content) ?? ev.text ?? coerceText(ev.message?.content) ?? ev.message?.text;
115
+ if (!text)
116
+ return null;
117
+ return {
118
+ kind: 'assistant',
119
+ rawText: text,
120
+ text: text.replace(TOOL_CALL_RE, '').trim() || undefined,
121
+ };
122
+ }
123
+ if (ev.role === 'assistant') {
124
+ const text = coerceText(ev.content) ?? ev.text;
125
+ if (!text)
126
+ return null;
127
+ return {
128
+ kind: 'assistant',
129
+ rawText: text,
130
+ text: text.replace(TOOL_CALL_RE, '').trim() || undefined,
131
+ };
132
+ }
133
+ if (typeof kind === 'string' && kind.startsWith('tool')) {
134
+ const label = coerceText(ev.content) ?? ev.text ?? kind;
135
+ return { kind: 'tool', toolName: label.slice(0, 200) };
136
+ }
137
+ return null;
138
+ }
78
139
  /** Pure NDJSON parser — exported for unit testing against fixture lines
79
140
  * (copilot-runner.test.ts). */
80
141
  export function parseCopilotEvents(lines) {
81
142
  const rawTexts = [];
82
143
  for (const line of lines) {
83
- const trimmed = line.trim();
84
- if (!trimmed?.startsWith('{'))
85
- continue;
86
- let ev;
87
- try {
88
- ev = JSON.parse(trimmed);
89
- }
90
- catch {
91
- continue;
92
- }
93
- const kind = ev.type ?? ev.kind;
94
- if (kind === 'assistant.message' || kind === 'assistant') {
95
- const text = coerceText(ev.content) ?? ev.text ?? coerceText(ev.message?.content) ?? ev.message?.text;
96
- if (text)
97
- rawTexts.push(text);
98
- continue;
99
- }
100
- if (ev.role === 'assistant') {
101
- const text = coerceText(ev.content) ?? ev.text;
102
- if (text)
103
- rawTexts.push(text);
104
- }
144
+ const out = handleLine(line);
145
+ if (out?.kind === 'assistant' && out.rawText !== undefined)
146
+ rawTexts.push(out.rawText);
105
147
  }
106
148
  const texts = rawTexts.map((t) => t.replace(TOOL_CALL_RE, '').trim());
107
149
  return { texts, rawTexts };
@@ -118,7 +160,34 @@ export class CopilotAgentRunner {
118
160
  const text = typeof p === 'string' ? p : (p?.message?.content ?? String(p ?? ''));
119
161
  let nextPrompt = `${args.systemPrompt}${buildToolProtocol(args.tools)}\n\n---\n\n${text}`;
120
162
  for (let round = 0; round <= MAX_TOOL_ROUNDS; round++) {
121
- const outcome = await this.runTurn(bin, nextPrompt, args);
163
+ // Filled in by streamTurn as the subprocess runs and when it exits.
164
+ const outcome = {
165
+ exitCode: 1,
166
+ stderrTail: '',
167
+ timedOut: false,
168
+ hangSuspected: false,
169
+ };
170
+ // Raw assistant texts (fences intact) for end-of-turn tool-call
171
+ // parsing — fence parsing needs the complete text, so fences are
172
+ // collected here while the stripped prose streams out live below.
173
+ const rawTexts = [];
174
+ for await (const ev of this.streamTurn(bin, nextPrompt, args, outcome)) {
175
+ if (ev.kind === 'assistant' && ev.rawText !== undefined) {
176
+ rawTexts.push(ev.rawText);
177
+ // Yield assistant prose AS IT ARRIVES (per NDJSON line, not
178
+ // after process exit): a copilot turn can run many minutes,
179
+ // and session.ts's watchdog must see messages DURING the turn.
180
+ if (ev.text)
181
+ yield { type: 'assistant', text: ev.text };
182
+ }
183
+ else if (ev.kind === 'tool') {
184
+ // Liveness for copilot's own tool activity (or the spawn-time
185
+ // yield): session.ts never renders tool_use as chat — it only
186
+ // feeds the StateDetector ('tool-call' state) and refreshes
187
+ // last-activity.
188
+ yield { type: 'tool_use', text: ev.toolName };
189
+ }
190
+ }
122
191
  if (outcome.hangSuspected) {
123
192
  throw new Error(`CopilotAgentRunner: copilot produced no output within ${STARTUP_GRACE_MS / 1000}s and was ` +
124
193
  'killed. This is a documented copilot CLI issue: its directory-trust/path-access prompts can ' +
@@ -127,18 +196,10 @@ export class CopilotAgentRunner {
127
196
  `covers every path it needs), then retry.${outcome.stderrTail ? `\nstderr: ${outcome.stderrTail.slice(-500)}` : ''}`);
128
197
  }
129
198
  if (outcome.exitCode !== 0) {
130
- throw new Error(`CopilotAgentRunner: copilot failed (exit ${outcome.exitCode})` +
131
- (outcome.timedOut
132
- ? ` — killed after exceeding the ${TURN_TIMEOUT_MS / 3_600_000}h turn timeout`
133
- : '') +
134
- (outcome.stderrTail ? `\nstderr: ${outcome.stderrTail.slice(-500)}` : ''));
135
- }
136
- for (const t of outcome.texts) {
137
- if (t.trim())
138
- yield { type: 'assistant', text: t };
199
+ throw turnError(outcome);
139
200
  }
140
201
  const malformed = [];
141
- const calls = parseToolCalls(outcome.rawTexts, (raw, err) => malformed.push(`[monomind] ignored malformed tool_call fence (${err}): ${raw.slice(0, 200)}`));
202
+ const calls = parseToolCalls(rawTexts, (raw, err) => malformed.push(`[monomind] ignored malformed tool_call fence (${err}): ${raw.slice(0, 200)}`));
142
203
  for (const note of malformed)
143
204
  yield { type: 'assistant', text: note };
144
205
  if (calls.length === 0) {
@@ -169,124 +230,163 @@ export class CopilotAgentRunner {
169
230
  throw err;
170
231
  }
171
232
  }
172
- runTurn(bin, prompt, args) {
173
- return new Promise((resolve, reject) => {
174
- const cliArgs = [
175
- '-p',
176
- prompt,
177
- '--output-format',
178
- 'json',
179
- '-s',
180
- '--allow-all-tools',
181
- '--no-ask-user',
182
- ];
183
- if (args.model)
184
- cliArgs.push(`--model=${args.model}`);
185
- cliArgs.push('--add-dir', args.cwd);
186
- const child = spawn(bin, cliArgs, {
187
- cwd: args.cwd,
188
- env: { ...process.env, ...args.env },
189
- stdio: ['ignore', 'pipe', 'pipe'],
190
- });
191
- let stderrTail = '';
192
- child.stderr?.on('data', (c) => {
193
- stderrTail = (stderrTail + c.toString()).slice(-4000);
194
- });
195
- let sawOutput = false;
196
- let timedOut = false;
197
- let hangSuspected = false;
198
- const KILL_GRACE_MS = 5000;
199
- let killTimer;
200
- const timer = setTimeout(() => {
201
- timedOut = true;
202
- child.kill('SIGTERM');
203
- killTimer = setTimeout(() => {
204
- try {
205
- child.kill('SIGKILL');
206
- }
207
- catch {
208
- /* already gone */
209
- }
210
- }, KILL_GRACE_MS);
211
- killTimer.unref?.();
212
- }, TURN_TIMEOUT_MS);
213
- // See STARTUP_GRACE_MS — disarmed by the first stdout chunk below.
214
- let hangTimer = setTimeout(() => {
215
- hangSuspected = true;
233
+ /**
234
+ * Run one `copilot` invocation and stream its NDJSON output
235
+ * INCREMENTALLY: each parsed line is yielded as soon as it arrives on
236
+ * stdout (see the header's "Streaming / liveness" note for why buffering
237
+ * until process exit was a bug, #204). End-of-turn facts (exit code,
238
+ * stderr tail, timeout/hang flags) are written into `outcome`, which the
239
+ * caller reads after this generator completes.
240
+ */
241
+ async *streamTurn(bin, prompt, args, outcome) {
242
+ const cliArgs = [
243
+ '-p',
244
+ prompt,
245
+ '--output-format',
246
+ 'json',
247
+ '-s',
248
+ '--allow-all-tools',
249
+ '--no-ask-user',
250
+ ];
251
+ if (args.model)
252
+ cliArgs.push(`--model=${args.model}`);
253
+ cliArgs.push('--add-dir', args.cwd);
254
+ const child = spawn(bin, cliArgs, {
255
+ cwd: args.cwd,
256
+ env: { ...process.env, ...args.env },
257
+ stdio: ['ignore', 'pipe', 'pipe'],
258
+ });
259
+ let stderrTail = '';
260
+ child.stderr?.on('data', (c) => {
261
+ stderrTail = (stderrTail + c.toString()).slice(-4000);
262
+ });
263
+ // Arm the turn timeout BEFORE consuming stdout — a hung CLI must be
264
+ // killed while we're still reading, not after it finishes.
265
+ let timedOut = false;
266
+ let hangSuspected = false;
267
+ // SIGTERM→SIGKILL escalation, shared by the turn timeout, the startup
268
+ // hang check, the abort signal, and the abandoned-stream path in
269
+ // `finally` — a CLI that ignores SIGTERM must not leak a zombie per turn.
270
+ const KILL_GRACE_MS = 5000;
271
+ let killTimer;
272
+ const killChild = () => {
273
+ try {
216
274
  child.kill('SIGTERM');
217
- killTimer = setTimeout(() => {
218
- try {
219
- child.kill('SIGKILL');
220
- }
221
- catch {
222
- /* already gone */
223
- }
224
- }, KILL_GRACE_MS);
225
- killTimer.unref?.();
226
- }, STARTUP_GRACE_MS);
227
- const exitPromise = new Promise((res, rej) => {
228
- child.on('error', rej);
229
- child.on('close', (code) => res(code ?? 1));
230
- });
231
- exitPromise.catch(() => { });
232
- const readLines = (async () => {
233
- const lines = [];
234
- let buf = '';
235
- for await (const chunk of child.stdout) {
236
- if (!sawOutput) {
237
- sawOutput = true;
238
- if (hangTimer) {
239
- clearTimeout(hangTimer);
240
- hangTimer = undefined;
241
- }
242
- }
243
- buf += chunk.toString();
244
- const parts = buf.split('\n');
245
- buf = parts.pop() ?? '';
246
- lines.push(...parts);
247
- }
248
- if (buf.trim())
249
- lines.push(buf);
250
- return lines;
251
- })();
252
- // Timer cleanup lives in a top-level .finally() (not nested inside a
253
- // success-path .then()) so it runs on EITHER path — a stdout stream
254
- // error would otherwise skip straight to reject() and leave the
255
- // TURN_TIMEOUT_MS/hangTimer/killTimer timers running past the
256
- // process's actual lifetime.
257
- Promise.all([readLines, exitPromise])
258
- .then(([lines, exitCode]) => {
259
- const parsed = parseCopilotEvents(lines);
260
- resolve({
261
- texts: parsed.texts,
262
- rawTexts: parsed.rawTexts,
263
- exitCode,
264
- stderrTail,
265
- timedOut,
266
- hangSuspected,
267
- });
268
- }, (err) => {
269
- // A stdout stream error (the reject path) means the process is
270
- // still ALIVE and unmanaged — none of the timeout/hang timers
271
- // would have fired to kill it. Without this, that error would
272
- // orphan the child. child.kill() on an already-dead process is a
273
- // documented no-op, so this is safe on every path.
275
+ }
276
+ catch {
277
+ /* already gone */
278
+ }
279
+ killTimer = setTimeout(() => {
274
280
  try {
275
- child.kill('SIGTERM');
281
+ child.kill('SIGKILL');
276
282
  }
277
283
  catch {
278
284
  /* already gone */
279
285
  }
280
- reject(err);
281
- })
282
- .finally(() => {
283
- clearTimeout(timer);
284
- if (hangTimer)
285
- clearTimeout(hangTimer);
286
- if (killTimer)
287
- clearTimeout(killTimer);
288
- });
286
+ }, KILL_GRACE_MS);
287
+ killTimer.unref?.();
288
+ };
289
+ const timer = setTimeout(() => {
290
+ timedOut = true;
291
+ killChild();
292
+ }, TURN_TIMEOUT_MS);
293
+ // See STARTUP_GRACE_MS — disarmed by the first stdout chunk below.
294
+ let sawOutput = false;
295
+ let hangTimer = setTimeout(() => {
296
+ hangSuspected = true;
297
+ killChild();
298
+ }, STARTUP_GRACE_MS);
299
+ // Abort hook (see AgentRunArgs.signal): kill the child so the stdout
300
+ // loop below unblocks instead of orphaning it on iterator.return().
301
+ const unsubscribeAbort = killOnAbort(args.signal, child, KILL_GRACE_MS);
302
+ // Attach the exit promise BEFORE consuming stdout: on a spawn failure
303
+ // (ENOENT, bad binary) the 'error' event fires almost immediately — if
304
+ // no listener is attached yet it escapes as an unhandled 'error' event
305
+ // and crashes the process instead of reaching our catch block.
306
+ const exitPromise = new Promise((res, rej) => {
307
+ child.on('error', rej);
308
+ child.on('close', (code) => res(code ?? 1));
289
309
  });
310
+ // Prevent an unhandled-rejection crash if the stdout loop below throws
311
+ // before we await exitPromise (the await still sees the rejection).
312
+ exitPromise.catch(() => { });
313
+ try {
314
+ // Immediate liveness yield: session.ts races the FIRST pull from this
315
+ // runner against a 4-minute silent-stream watchdog, and copilot's
316
+ // first line can itself take minutes. Yielding at spawn wins that
317
+ // race deterministically instead of depending on copilot's latency.
318
+ yield { kind: 'tool', toolName: 'turn started' };
319
+ let buf = '';
320
+ for await (const chunk of child.stdout) {
321
+ if (!sawOutput) {
322
+ sawOutput = true;
323
+ if (hangTimer) {
324
+ clearTimeout(hangTimer);
325
+ hangTimer = undefined;
326
+ }
327
+ }
328
+ buf += chunk.toString();
329
+ const parts = buf.split('\n');
330
+ buf = parts.pop() ?? '';
331
+ for (const line of parts) {
332
+ const out = handleLine(line);
333
+ if (out)
334
+ yield out;
335
+ }
336
+ }
337
+ if (buf.trim()) {
338
+ const out = handleLine(buf);
339
+ if (out)
340
+ yield out;
341
+ }
342
+ }
343
+ finally {
344
+ clearTimeout(timer);
345
+ if (hangTimer)
346
+ clearTimeout(hangTimer);
347
+ unsubscribeAbort();
348
+ if (child.exitCode === null && child.signalCode === null) {
349
+ // NOT confirmed dead. Either the consumer abandoned this stream
350
+ // mid-turn (session.ts's silent abort calls iterator.return(), the
351
+ // mailbox closes, or an error is thrown downstream) — kill it, WITH
352
+ // the SIGKILL escalation — or a SIGTERM from the timeout/hang/abort
353
+ // is still inside its grace period: leave that escalation armed,
354
+ // since clearing it here would orphan a CLI that ignores SIGTERM and
355
+ // then wait on `exitPromise` forever (same fix as codex/kimi/pi-rpc).
356
+ if (!child.killed)
357
+ killChild();
358
+ }
359
+ else if (killTimer) {
360
+ clearTimeout(killTimer);
361
+ }
362
+ }
363
+ const exitCode = await exitPromise;
364
+ if (killTimer)
365
+ clearTimeout(killTimer);
366
+ outcome.exitCode = exitCode;
367
+ outcome.stderrTail = stderrTail;
368
+ outcome.timedOut = timedOut;
369
+ outcome.hangSuspected = hangSuspected;
370
+ }
371
+ }
372
+ /** Build the actionable error for a failed copilot turn (hangSuspected is
373
+ * handled separately by the caller — it has its own, more specific message). */
374
+ function turnError(outcome) {
375
+ // Fatal provider errors (auth/permission/quota — classified from stderr):
376
+ // report what actually happened, and tag the error so the daemon does NOT
377
+ // restart into the same guaranteed failure (a restart on quota exhaustion
378
+ // can only hang or fail again).
379
+ const cls = classifyStderr(outcome.stderrTail);
380
+ if (cls.fatal) {
381
+ const err = new Error(`CopilotAgentRunner: FATAL provider error (${cls.label}) — not retrying.` +
382
+ (outcome.stderrTail ? ` stderr: ${outcome.stderrTail.slice(-500)}` : ''));
383
+ err.fatal = true;
384
+ return err;
290
385
  }
386
+ return new Error(`CopilotAgentRunner: copilot failed (exit ${outcome.exitCode})` +
387
+ (outcome.timedOut
388
+ ? ` — killed after exceeding the ${TURN_TIMEOUT_MS / 3_600_000}h turn timeout`
389
+ : '') +
390
+ (outcome.stderrTail ? `\nstderr: ${outcome.stderrTail.slice(-500)}` : ''));
291
391
  }
292
392
  //# sourceMappingURL=copilot-runner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"copilot-runner.js","sourceRoot":"","sources":["../../../src/orgrt/copilot-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"copilot-runner.js","sourceRoot":"","sources":["../../../src/orgrt/copilot-runner.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { OrgDaemon, RunningOrg } from './daemon.js';
1
+ import { type OrgDaemon, type RunningOrg } from './daemon.js';
2
2
  /**
3
3
  * Resolves an org_send `to` address ("role" for same-org, "org:role" for
4
4
  * cross-org) into its parts. Centralizes the one addressing rule that
@@ -17,16 +17,23 @@ export declare function resolveAddress(fromOrg: string, to: string): {
17
17
  * written to <org workdir>/.mail/<message-id>.md and replaced with a ~1KB
18
18
  * digest plus a pointer; smaller messages stay byte-identical. */
19
19
  export declare function mailBody(root: string, orgName: string, org: RunningOrg | undefined, header: string, body: string, id: string): string;
20
+ /** SEC: the ONE place an inter-agent message enters a role's mailbox. Every
21
+ * inbound path — live deliver(), inbound cross-process receiveRemote(), and
22
+ * the queued-inbox drains (startOrg, deferred spawns) — must go through here
23
+ * so a role with `scanMessages` on is fenced on all of them, not just the
24
+ * first. Returns false when the fence blocked the body (scanMessage already
25
+ * emitted the audit event) or the recipient can't take mail. */
26
+ export declare function pushMessage(daemon: OrgDaemon, orgName: string, org: RunningOrg, toRole: string, from: string, subject: string, body: string, id: string): Promise<boolean>;
20
27
  /** Route a message. to = "role" (same org) or "org:role" (cross-org). Returns a receipt string. */
21
28
  export declare function deliver(daemon: OrgDaemon, fromOrg: string, fromRole: string, to: string, subject: string, body: string): Promise<string>;
22
29
  /** Inbound handler for cross-process delivery — called by the server's POST /api/xdeliver route
23
30
  * when ANOTHER process's deliverRemote() reaches this daemon. Pushes straight into the target
24
31
  * agent's mailbox; the agent picks it up on its own next turn (see Mailbox — never interrupts). */
25
- export declare function receiveRemote(daemon: OrgDaemon, toOrg: string, toRole: string, fromQualified: string, subject: string, body: string): {
32
+ export declare function receiveRemote(daemon: OrgDaemon, toOrg: string, toRole: string, fromQualified: string, subject: string, body: string, fromCredential?: string): Promise<{
26
33
  ok: true;
27
34
  receipt: string;
28
35
  } | {
29
36
  ok: false;
30
37
  error: string;
31
- };
38
+ }>;
32
39
  //# sourceMappingURL=cross-org.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cross-org.d.ts","sourceRoot":"","sources":["../../../src/orgrt/cross-org.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAUzD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,GACT;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAMtE;AAED;;;mEAGmE;AACnE,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,UAAU,GAAG,SAAS,EAC3B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACT,MAAM,CAWR;AAED,mGAAmG;AACnG,wBAAsB,OAAO,CAC3B,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAuNjB;AA0ID;;oGAEoG;AACpG,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,GACX;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAkG9D"}
1
+ {"version":3,"file":"cross-org.d.ts","sourceRoot":"","sources":["../../../src/orgrt/cross-org.ts"],"names":[],"mappings":"AAOA,OAAO,EAAmB,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AA2D/E;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,GACT;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAMtE;AAED;;;mEAGmE;AACnE,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,UAAU,GAAG,SAAS,EAC3B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACT,MAAM,CAWR;AAED;;;;;iEAKiE;AACjE,wBAAsB,WAAW,CAC/B,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,OAAO,CAAC,CAgClB;AAED,mGAAmG;AACnG,wBAAsB,OAAO,CAC3B,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAqQjB;AA2JD;;oGAEoG;AACpG,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAwKvE"}