@jungjaehoon/mama-os 0.22.1 → 0.24.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 (257) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +3 -1
  3. package/dist/agent/agent-loop.d.ts +3 -9
  4. package/dist/agent/agent-loop.d.ts.map +1 -1
  5. package/dist/agent/agent-loop.js +419 -216
  6. package/dist/agent/agent-loop.js.map +1 -1
  7. package/dist/agent/code-act/constants.d.ts +2 -2
  8. package/dist/agent/code-act/constants.d.ts.map +1 -1
  9. package/dist/agent/code-act/constants.js +16 -9
  10. package/dist/agent/code-act/constants.js.map +1 -1
  11. package/dist/agent/code-act/host-bridge.d.ts +12 -11
  12. package/dist/agent/code-act/host-bridge.d.ts.map +1 -1
  13. package/dist/agent/code-act/host-bridge.js +92 -15
  14. package/dist/agent/code-act/host-bridge.js.map +1 -1
  15. package/dist/agent/code-act/index.d.ts +2 -0
  16. package/dist/agent/code-act/index.d.ts.map +1 -1
  17. package/dist/agent/code-act/index.js +5 -1
  18. package/dist/agent/code-act/index.js.map +1 -1
  19. package/dist/agent/code-act/tool-policy.d.ts +42 -0
  20. package/dist/agent/code-act/tool-policy.d.ts.map +1 -0
  21. package/dist/agent/code-act/tool-policy.js +122 -0
  22. package/dist/agent/code-act/tool-policy.js.map +1 -0
  23. package/dist/agent/code-act/type-definition-generator.d.ts +4 -3
  24. package/dist/agent/code-act/type-definition-generator.d.ts.map +1 -1
  25. package/dist/agent/code-act/type-definition-generator.js +26 -48
  26. package/dist/agent/code-act/type-definition-generator.js.map +1 -1
  27. package/dist/agent/codex-app-server-process.d.ts +116 -0
  28. package/dist/agent/codex-app-server-process.d.ts.map +1 -0
  29. package/dist/agent/codex-app-server-process.js +1382 -0
  30. package/dist/agent/codex-app-server-process.js.map +1 -0
  31. package/dist/agent/codex-home.d.ts +9 -0
  32. package/dist/agent/codex-home.d.ts.map +1 -1
  33. package/dist/agent/codex-home.js +626 -4
  34. package/dist/agent/codex-home.js.map +1 -1
  35. package/dist/agent/codex-thread-registry.d.ts +63 -0
  36. package/dist/agent/codex-thread-registry.d.ts.map +1 -0
  37. package/dist/agent/codex-thread-registry.js +433 -0
  38. package/dist/agent/codex-thread-registry.js.map +1 -0
  39. package/dist/agent/gateway-tool-executor.d.ts +20 -7
  40. package/dist/agent/gateway-tool-executor.d.ts.map +1 -1
  41. package/dist/agent/gateway-tool-executor.js +254 -90
  42. package/dist/agent/gateway-tool-executor.js.map +1 -1
  43. package/dist/agent/gateway-tools.md +10 -5
  44. package/dist/agent/managed-agent-runtime-sync.d.ts.map +1 -1
  45. package/dist/agent/managed-agent-runtime-sync.js +0 -3
  46. package/dist/agent/managed-agent-runtime-sync.js.map +1 -1
  47. package/dist/agent/managed-agent-validation.js +1 -1
  48. package/dist/agent/managed-agent-validation.js.map +1 -1
  49. package/dist/agent/model-runner.d.ts +51 -3
  50. package/dist/agent/model-runner.d.ts.map +1 -1
  51. package/dist/agent/model-runner.js +1 -1
  52. package/dist/agent/model-runner.js.map +1 -1
  53. package/dist/agent/persistent-cli-adapter.d.ts +1 -0
  54. package/dist/agent/persistent-cli-adapter.d.ts.map +1 -1
  55. package/dist/agent/persistent-cli-adapter.js +3 -0
  56. package/dist/agent/persistent-cli-adapter.js.map +1 -1
  57. package/dist/agent/role-manager.d.ts +22 -1
  58. package/dist/agent/role-manager.d.ts.map +1 -1
  59. package/dist/agent/role-manager.js +39 -2
  60. package/dist/agent/role-manager.js.map +1 -1
  61. package/dist/agent/session-pool.d.ts +2 -2
  62. package/dist/agent/session-pool.d.ts.map +1 -1
  63. package/dist/agent/session-pool.js +6 -6
  64. package/dist/agent/session-pool.js.map +1 -1
  65. package/dist/agent/tool-registry.d.ts +14 -0
  66. package/dist/agent/tool-registry.d.ts.map +1 -1
  67. package/dist/agent/tool-registry.js +81 -12
  68. package/dist/agent/tool-registry.js.map +1 -1
  69. package/dist/agent/types.d.ts +49 -7
  70. package/dist/agent/types.d.ts.map +1 -1
  71. package/dist/agent/types.js.map +1 -1
  72. package/dist/api/graph-api.d.ts.map +1 -1
  73. package/dist/api/graph-api.js +62 -40
  74. package/dist/api/graph-api.js.map +1 -1
  75. package/dist/api/operator-tasks-handler.d.ts.map +1 -1
  76. package/dist/api/operator-tasks-handler.js +6 -2
  77. package/dist/api/operator-tasks-handler.js.map +1 -1
  78. package/dist/cli/commands/init.d.ts +1 -1
  79. package/dist/cli/commands/init.d.ts.map +1 -1
  80. package/dist/cli/commands/init.js +22 -14
  81. package/dist/cli/commands/init.js.map +1 -1
  82. package/dist/cli/commands/run.d.ts.map +1 -1
  83. package/dist/cli/commands/run.js +7 -4
  84. package/dist/cli/commands/run.js.map +1 -1
  85. package/dist/cli/commands/start.d.ts +2 -0
  86. package/dist/cli/commands/start.d.ts.map +1 -1
  87. package/dist/cli/commands/start.js +259 -23
  88. package/dist/cli/commands/start.js.map +1 -1
  89. package/dist/cli/commands/status.js +2 -2
  90. package/dist/cli/commands/status.js.map +1 -1
  91. package/dist/cli/config/config-manager.d.ts +0 -5
  92. package/dist/cli/config/config-manager.d.ts.map +1 -1
  93. package/dist/cli/config/config-manager.js +78 -6
  94. package/dist/cli/config/config-manager.js.map +1 -1
  95. package/dist/cli/config/types.d.ts +4 -4
  96. package/dist/cli/config/types.d.ts.map +1 -1
  97. package/dist/cli/config/types.js +36 -0
  98. package/dist/cli/config/types.js.map +1 -1
  99. package/dist/cli/index.js +2 -2
  100. package/dist/cli/index.js.map +1 -1
  101. package/dist/cli/runtime/agent-loop-init.d.ts +1 -1
  102. package/dist/cli/runtime/agent-loop-init.d.ts.map +1 -1
  103. package/dist/cli/runtime/agent-loop-init.js +106 -60
  104. package/dist/cli/runtime/agent-loop-init.js.map +1 -1
  105. package/dist/cli/runtime/api-routes-init.d.ts +3 -0
  106. package/dist/cli/runtime/api-routes-init.d.ts.map +1 -1
  107. package/dist/cli/runtime/api-routes-init.js +226 -51
  108. package/dist/cli/runtime/api-routes-init.js.map +1 -1
  109. package/dist/cli/runtime/connector-init.d.ts.map +1 -1
  110. package/dist/cli/runtime/connector-init.js +13 -17
  111. package/dist/cli/runtime/connector-init.js.map +1 -1
  112. package/dist/cli/runtime/envelope-bootstrap.d.ts.map +1 -1
  113. package/dist/cli/runtime/envelope-bootstrap.js +13 -1
  114. package/dist/cli/runtime/envelope-bootstrap.js.map +1 -1
  115. package/dist/cli/runtime/gateway-init.d.ts +1 -1
  116. package/dist/cli/runtime/gateway-init.d.ts.map +1 -1
  117. package/dist/cli/runtime/gateway-init.js +5 -0
  118. package/dist/cli/runtime/gateway-init.js.map +1 -1
  119. package/dist/cli/runtime/mama-core-init.d.ts +2 -2
  120. package/dist/cli/runtime/mama-core-init.d.ts.map +1 -1
  121. package/dist/cli/runtime/mama-core-init.js +17 -0
  122. package/dist/cli/runtime/mama-core-init.js.map +1 -1
  123. package/dist/cli/runtime/memory-agent-init.d.ts +1 -1
  124. package/dist/cli/runtime/memory-agent-init.d.ts.map +1 -1
  125. package/dist/cli/runtime/memory-agent-init.js +16 -6
  126. package/dist/cli/runtime/memory-agent-init.js.map +1 -1
  127. package/dist/cli/runtime/types.d.ts +4 -26
  128. package/dist/cli/runtime/types.d.ts.map +1 -1
  129. package/dist/cli/runtime/utilities.js +2 -2
  130. package/dist/cli/runtime/utilities.js.map +1 -1
  131. package/dist/connectors/config-loader.d.ts +24 -0
  132. package/dist/connectors/config-loader.d.ts.map +1 -0
  133. package/dist/connectors/config-loader.js +205 -0
  134. package/dist/connectors/config-loader.js.map +1 -0
  135. package/dist/connectors/framework/types.d.ts +2 -0
  136. package/dist/connectors/framework/types.d.ts.map +1 -1
  137. package/dist/connectors/kagemusha/query-tools.js +2 -2
  138. package/dist/connectors/kagemusha/query-tools.js.map +1 -1
  139. package/dist/envelope/reactive-config.d.ts +2 -2
  140. package/dist/envelope/reactive-config.d.ts.map +1 -1
  141. package/dist/envelope/reactive-config.js +36 -4
  142. package/dist/envelope/reactive-config.js.map +1 -1
  143. package/dist/gateways/context-injector.d.ts +2 -1
  144. package/dist/gateways/context-injector.d.ts.map +1 -1
  145. package/dist/gateways/context-injector.js.map +1 -1
  146. package/dist/gateways/message-router.d.ts +19 -1
  147. package/dist/gateways/message-router.d.ts.map +1 -1
  148. package/dist/gateways/message-router.js +179 -24
  149. package/dist/gateways/message-router.js.map +1 -1
  150. package/dist/gateways/telegram.d.ts.map +1 -1
  151. package/dist/gateways/telegram.js +13 -0
  152. package/dist/gateways/telegram.js.map +1 -1
  153. package/dist/gateways/types.d.ts +4 -1
  154. package/dist/gateways/types.d.ts.map +1 -1
  155. package/dist/memory/history-extractor.d.ts +0 -24
  156. package/dist/memory/history-extractor.d.ts.map +1 -1
  157. package/dist/memory/history-extractor.js +0 -132
  158. package/dist/memory/history-extractor.js.map +1 -1
  159. package/dist/memory/save-candidate-extractor.d.ts +3 -0
  160. package/dist/memory/save-candidate-extractor.d.ts.map +1 -1
  161. package/dist/memory/save-candidate-extractor.js +12 -1
  162. package/dist/memory/save-candidate-extractor.js.map +1 -1
  163. package/dist/memory/secret-filter.d.ts +22 -0
  164. package/dist/memory/secret-filter.d.ts.map +1 -0
  165. package/dist/memory/secret-filter.js +77 -0
  166. package/dist/memory/secret-filter.js.map +1 -0
  167. package/dist/multi-agent/agent-process-manager.d.ts +9 -1
  168. package/dist/multi-agent/agent-process-manager.d.ts.map +1 -1
  169. package/dist/multi-agent/agent-process-manager.js +197 -49
  170. package/dist/multi-agent/agent-process-manager.js.map +1 -1
  171. package/dist/multi-agent/multi-agent-base.d.ts.map +1 -1
  172. package/dist/multi-agent/multi-agent-base.js +2 -1
  173. package/dist/multi-agent/multi-agent-base.js.map +1 -1
  174. package/dist/multi-agent/runtime-process.d.ts +18 -15
  175. package/dist/multi-agent/runtime-process.d.ts.map +1 -1
  176. package/dist/multi-agent/runtime-process.js +63 -59
  177. package/dist/multi-agent/runtime-process.js.map +1 -1
  178. package/dist/multi-agent/types.d.ts +13 -7
  179. package/dist/multi-agent/types.d.ts.map +1 -1
  180. package/dist/multi-agent/types.js.map +1 -1
  181. package/dist/multi-agent/workflow-engine.js +3 -3
  182. package/dist/multi-agent/workflow-engine.js.map +1 -1
  183. package/dist/multi-agent/workflow-types.d.ts +2 -2
  184. package/dist/multi-agent/workflow-types.d.ts.map +1 -1
  185. package/dist/observability/code-audit.d.ts +4 -0
  186. package/dist/observability/code-audit.d.ts.map +1 -1
  187. package/dist/observability/code-audit.js +69 -0
  188. package/dist/observability/code-audit.js.map +1 -1
  189. package/dist/operator/briefs.d.ts +26 -0
  190. package/dist/operator/briefs.d.ts.map +1 -0
  191. package/dist/operator/briefs.js +128 -0
  192. package/dist/operator/briefs.js.map +1 -0
  193. package/dist/operator/operator-trigger-loop.d.ts +27 -0
  194. package/dist/operator/operator-trigger-loop.d.ts.map +1 -1
  195. package/dist/operator/operator-trigger-loop.js +72 -12
  196. package/dist/operator/operator-trigger-loop.js.map +1 -1
  197. package/dist/operator/report-carry.d.ts +29 -0
  198. package/dist/operator/report-carry.d.ts.map +1 -0
  199. package/dist/operator/report-carry.js +81 -0
  200. package/dist/operator/report-carry.js.map +1 -0
  201. package/dist/operator/report-run.d.ts +4 -4
  202. package/dist/operator/shadow-capture.d.ts +20 -0
  203. package/dist/operator/shadow-capture.d.ts.map +1 -0
  204. package/dist/operator/shadow-capture.js +34 -0
  205. package/dist/operator/shadow-capture.js.map +1 -0
  206. package/dist/operator/situation-report.d.ts +9 -0
  207. package/dist/operator/situation-report.d.ts.map +1 -1
  208. package/dist/operator/situation-report.js +56 -26
  209. package/dist/operator/situation-report.js.map +1 -1
  210. package/dist/operator/task-ledger.d.ts +90 -2
  211. package/dist/operator/task-ledger.d.ts.map +1 -1
  212. package/dist/operator/task-ledger.js +359 -23
  213. package/dist/operator/task-ledger.js.map +1 -1
  214. package/dist/operator/trigger-author.d.ts +35 -1
  215. package/dist/operator/trigger-author.d.ts.map +1 -1
  216. package/dist/operator/trigger-author.js +73 -10
  217. package/dist/operator/trigger-author.js.map +1 -1
  218. package/dist/operator/worker-run.d.ts +89 -0
  219. package/dist/operator/worker-run.d.ts.map +1 -0
  220. package/dist/operator/worker-run.js +127 -0
  221. package/dist/operator/worker-run.js.map +1 -0
  222. package/dist/operator/workorder-consumer.d.ts +121 -0
  223. package/dist/operator/workorder-consumer.d.ts.map +1 -0
  224. package/dist/operator/workorder-consumer.js +253 -0
  225. package/dist/operator/workorder-consumer.js.map +1 -0
  226. package/dist/operator/workorder-hooks.d.ts +30 -0
  227. package/dist/operator/workorder-hooks.d.ts.map +1 -0
  228. package/dist/operator/workorder-hooks.js +70 -0
  229. package/dist/operator/workorder-hooks.js.map +1 -0
  230. package/dist/operator/workorder-publishers.d.ts +68 -0
  231. package/dist/operator/workorder-publishers.d.ts.map +1 -0
  232. package/dist/operator/workorder-publishers.js +150 -0
  233. package/dist/operator/workorder-publishers.js.map +1 -0
  234. package/dist/security/security-monitor.d.ts +7 -0
  235. package/dist/security/security-monitor.d.ts.map +1 -1
  236. package/dist/security/security-monitor.js +17 -0
  237. package/dist/security/security-monitor.js.map +1 -1
  238. package/dist/setup/setup-prompt.d.ts +1 -1
  239. package/dist/setup/setup-prompt.d.ts.map +1 -1
  240. package/dist/setup/setup-prompt.js +4 -5
  241. package/dist/setup/setup-prompt.js.map +1 -1
  242. package/dist/utils/untrusted-content.d.ts +13 -0
  243. package/dist/utils/untrusted-content.d.ts.map +1 -1
  244. package/dist/utils/untrusted-content.js +43 -0
  245. package/dist/utils/untrusted-content.js.map +1 -1
  246. package/package.json +2 -2
  247. package/public/viewer/js/modules/agents.js +13 -9
  248. package/public/viewer/js/modules/settings.js +15 -10
  249. package/public/viewer/src/modules/agents.ts +12 -10
  250. package/public/viewer/src/modules/settings.ts +17 -12
  251. package/public/viewer/src/utils/api.ts +2 -2
  252. package/templates/AGENTS.codex.md +2 -23
  253. package/templates/personas/conductor.md +1 -1
  254. package/dist/agent/codex-mcp-process.d.ts +0 -105
  255. package/dist/agent/codex-mcp-process.d.ts.map +0 -1
  256. package/dist/agent/codex-mcp-process.js +0 -748
  257. package/dist/agent/codex-mcp-process.js.map +0 -1
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ /**
3
+ * Context carry for the owner console (plan v6 S1-T4).
4
+ *
5
+ * Kagemusha's continuity mechanism, minimal form: the chat persona can
6
+ * reference "the report you just received" because the last DELIVERED full
7
+ * report is persisted at delivery time and injected per turn. Carry is
8
+ * DERIVED state (storage-layer, never session accumulation - owner principle
9
+ * "session = cache").
10
+ *
11
+ * Injection rides the user-message prefix path - the only channel that flows
12
+ * on EVERY turn including CONTINUE (per-call system prompts never reach a
13
+ * pooled CLI process).
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.defaultCarryPath = defaultCarryPath;
17
+ exports.persistLastFullReport = persistLastFullReport;
18
+ exports.loadLastFullReport = loadLastFullReport;
19
+ exports.buildReportCarryPrefix = buildReportCarryPrefix;
20
+ const node_fs_1 = require("node:fs");
21
+ const untrusted_content_js_1 = require("../utils/untrusted-content.js");
22
+ const node_os_1 = require("node:os");
23
+ const node_path_1 = require("node:path");
24
+ const CARRY_SUMMARY_MAX_CHARS = 700;
25
+ function defaultCarryPath() {
26
+ return (0, node_path_1.join)((0, node_os_1.homedir)(), '.mama', 'operator', 'last-full-report.json');
27
+ }
28
+ /** Persist the delivered full report (atomic write, same pattern as the schedule store). */
29
+ function persistLastFullReport(deliveredAtIso, text, path = defaultCarryPath()) {
30
+ (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(path), { recursive: true });
31
+ const tmp = (0, node_path_1.join)((0, node_path_1.dirname)(path), `.last-full-report.${process.pid}.tmp`);
32
+ // 0600: the carried report is owner operational data.
33
+ (0, node_fs_1.writeFileSync)(tmp, JSON.stringify({ deliveredAt: deliveredAtIso, text }), {
34
+ mode: 0o600,
35
+ });
36
+ (0, node_fs_1.renameSync)(tmp, path);
37
+ }
38
+ /** Load the last delivered full report; null when none exists or the file is unreadable. */
39
+ function loadLastFullReport(path = defaultCarryPath()) {
40
+ let raw;
41
+ try {
42
+ raw = (0, node_fs_1.readFileSync)(path, 'utf8');
43
+ }
44
+ catch {
45
+ // Missing file is the normal no-report-yet state.
46
+ return null;
47
+ }
48
+ try {
49
+ const parsed = JSON.parse(raw);
50
+ if (typeof parsed.deliveredAt !== 'string' || typeof parsed.text !== 'string') {
51
+ console.warn(`[report-carry] carry file has invalid shape, ignoring: ${path}`);
52
+ return null;
53
+ }
54
+ return { deliveredAt: parsed.deliveredAt, text: parsed.text };
55
+ }
56
+ catch (error) {
57
+ // Corrupt state must be LOUD (repo rule), then fall back to no-carry.
58
+ console.warn(`[report-carry] carry file corrupt, ignoring (${path}): ${error instanceof Error ? error.message : String(error)}`);
59
+ return null;
60
+ }
61
+ }
62
+ /**
63
+ * Build the per-turn carry prefix for the owner console. Empty string when no
64
+ * report has been delivered yet (nothing to carry - the persona should use
65
+ * report_request/board_read instead).
66
+ */
67
+ function buildReportCarryPrefix(path = defaultCarryPath()) {
68
+ const last = loadLastFullReport(path);
69
+ if (!last) {
70
+ return '';
71
+ }
72
+ const summary = last.text.length > CARRY_SUMMARY_MAX_CHARS
73
+ ? `${last.text.slice(0, CARRY_SUMMARY_MAX_CHARS)}\n[... truncated - full text was delivered to the owner channel]`
74
+ : last.text;
75
+ // The report is agent-authored but SUMMARIZES third-party content; wrapping
76
+ // it keeps reproduced instructions inert across every future turn it rides.
77
+ return (`[Operator context] The last FULL situation report was delivered at ${last.deliveredAt}.\n` +
78
+ `If the owner asks for a report or current status, reference/refresh THIS instead of ` +
79
+ `reconstructing state from memory. Content:\n${(0, untrusted_content_js_1.wrapUntrustedContent)('operator-report-carry', summary)}\n---\n`);
80
+ }
81
+ //# sourceMappingURL=report-carry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-carry.js","sourceRoot":"","sources":["../../src/operator/report-carry.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,10 @@
2
2
  * Operator report-run wiring + tool-use audit (M3 "Operator Hands").
3
3
  *
4
4
  * PURE half (this file, Task 1): classify the gateway tools the persona agent actually EXECUTED
5
- * during a report. Gateway calls are prompt-based ```tool_call blocks, parsed by AgentLoop into
6
- * tool_use blocks (agent-loop.ts:1218-1226,1330-1333); each execution's tool_result is pushed
7
- * into the NEXT user message (agent-loop.ts:1408-1411). We pair tool_use.id with its tool_result
8
- * and count executions only - errored results and envelope denials ("success":false /
5
+ * during a report. Claude text-gateway calls and Codex native host calls are both recorded by
6
+ * AgentLoop as assistant tool_use followed by user tool_result history entries. We pair
7
+ * tool_use.id with its tool_result and count executions only - errored results and envelope
8
+ * denials ("success":false /
9
9
  * envelope_missing, gateway-tool-executor.ts:1090-1142) do NOT count. History is read
10
10
  * structurally (no agent-internal imports) so the audit is trivially unit-testable.
11
11
  *
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Shadow capture store (Stage-2 S2-T4) - TEMPORARY migration harness.
3
+ *
4
+ * At MAMA_STAGE2_WORKORDERS=shadow, board workorder runs get a capture
5
+ * publisher injected via reportPublisherOverride: their report_publish calls
6
+ * land HERE (JSONL under ~/.mama/operator/) instead of the live report store.
7
+ * The T6 equivalence gate compares these captures (brief-driven output)
8
+ * against the legacy live publishes (persona-driven output) by kagemusha-id
9
+ * overlap.
10
+ *
11
+ * KILL-LIST: this whole file is deleted at cutover (plan T6) - keep it
12
+ * self-contained.
13
+ */
14
+ export declare function shadowCapturePath(homeDir?: string): string;
15
+ export interface ShadowCapture {
16
+ /** Drop-in report_publish target - appends, never touches the live store. */
17
+ publisher: (slots: Record<string, string>) => void;
18
+ }
19
+ export declare function createShadowCapture(homeDir?: string): ShadowCapture;
20
+ //# sourceMappingURL=shadow-capture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadow-capture.d.ts","sourceRoot":"","sources":["../../src/operator/shadow-capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,MAAkB,GAAG,MAAM,CAErE;AAED,MAAM,WAAW,aAAa;IAC5B,6EAA6E;IAC7E,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;CACpD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,MAAkB,GAAG,aAAa,CAW9E"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ /**
3
+ * Shadow capture store (Stage-2 S2-T4) - TEMPORARY migration harness.
4
+ *
5
+ * At MAMA_STAGE2_WORKORDERS=shadow, board workorder runs get a capture
6
+ * publisher injected via reportPublisherOverride: their report_publish calls
7
+ * land HERE (JSONL under ~/.mama/operator/) instead of the live report store.
8
+ * The T6 equivalence gate compares these captures (brief-driven output)
9
+ * against the legacy live publishes (persona-driven output) by kagemusha-id
10
+ * overlap.
11
+ *
12
+ * KILL-LIST: this whole file is deleted at cutover (plan T6) - keep it
13
+ * self-contained.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.shadowCapturePath = shadowCapturePath;
17
+ exports.createShadowCapture = createShadowCapture;
18
+ const node_fs_1 = require("node:fs");
19
+ const node_os_1 = require("node:os");
20
+ const node_path_1 = require("node:path");
21
+ function shadowCapturePath(homeDir = (0, node_os_1.homedir)()) {
22
+ return (0, node_path_1.join)(homeDir, '.mama', 'operator', 'shadow-capture.jsonl');
23
+ }
24
+ function createShadowCapture(homeDir = (0, node_os_1.homedir)()) {
25
+ const path = shadowCapturePath(homeDir);
26
+ (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(path), { recursive: true });
27
+ return {
28
+ publisher: (slots) => {
29
+ (0, node_fs_1.appendFileSync)(path, `${JSON.stringify({ ts: Date.now(), slots })}\n`, 'utf-8');
30
+ console.log(`[stage2] shadow capture: ${Object.keys(slots).length} slot(s) -> ${path} (live store untouched)`);
31
+ },
32
+ };
33
+ }
34
+ //# sourceMappingURL=shadow-capture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadow-capture.js","sourceRoot":"","sources":["../../src/operator/shadow-capture.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;AAMH,8CAEC;AAOD,kDAWC;AAxBD,qCAAoD;AACpD,qCAAkC;AAClC,yCAA0C;AAE1C,SAAgB,iBAAiB,CAAC,UAAkB,IAAA,iBAAO,GAAE;IAC3D,OAAO,IAAA,gBAAI,EAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,sBAAsB,CAAC,CAAC;AACpE,CAAC;AAOD,SAAgB,mBAAmB,CAAC,UAAkB,IAAA,iBAAO,GAAE;IAC7D,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACxC,IAAA,mBAAS,EAAC,IAAA,mBAAO,EAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,OAAO;QACL,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACnB,IAAA,wBAAc,EAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAChF,OAAO,CAAC,GAAG,CACT,4BAA4B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,eAAe,IAAI,yBAAyB,CAClG,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -17,6 +17,7 @@
17
17
  */
18
18
  import type { OperatorChannelEvent, OutputSink } from './operator-interfaces.js';
19
19
  import type { AskAgent } from './trigger-author.js';
20
+ import type { BackendType } from '../agent/model-runner.js';
20
21
  /**
21
22
  * Machine frame tag prepended to the FULL report prompt so the report-run wiring can tell a full
22
23
  * report from a digest for tool-use auditing (report-run.ts). Kagemusha frames its scheduled full
@@ -34,6 +35,8 @@ export interface FireActivity {
34
35
  }
35
36
  export type ReportMode = 'digest' | 'full';
36
37
  export interface SituationReporterOptions {
38
+ /** Model provider controls only the tool-call syntax; report workflow/content stays shared. */
39
+ backend?: BackendType;
37
40
  /**
38
41
  * M2.3: tool-call instructions injected into the FULL report framing so the agent
39
42
  * ACTIVELY gathers current context (channels, tasks, memory) before writing - the
@@ -62,6 +65,12 @@ export interface SituationReporterOptions {
62
65
  * of being elimination-only. Uncited fires stay NEUTRAL - not failures.
63
66
  */
64
67
  recordTriggerUse?: (triggerIds: string[]) => void;
68
+ /**
69
+ * Context carry (plan v6 S1-T4): called with (deliveredAtIso, reportText)
70
+ * after a FULL report is successfully delivered. Runtime wiring persists it
71
+ * so the owner console can reference the latest report per chat turn.
72
+ */
73
+ persistLastFullReport?: (deliveredAtIso: string, text: string) => void;
65
74
  }
66
75
  export declare class SituationReporter {
67
76
  private windowByChannel;
@@ -1 +1 @@
1
- {"version":3,"file":"situation-report.d.ts","sourceRoot":"","sources":["../../src/operator/situation-report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGpD;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,2BAA2B,CAAC;AAEjE,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAChD;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;AAqB3C,MAAM,WAAW,wBAAwB;IACvC;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC;IAC9C;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACnD;AAKD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,IAAI,CAA2B;gBAE3B,IAAI,GAAE,wBAA6B;IAI/C,0EAA0E;IAC1E,YAAY,CAAC,MAAM,EAAE,oBAAoB,EAAE,GAAG,IAAI;IAgBlD,2FAA2F;IAC3F,UAAU,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAmBxC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC,uFAAuF;IACvF,WAAW,IAAI,OAAO;IAItB;;;OAGG;IACG,MAAM,CACV,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,EAChC,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,OAAO,CAAC;IA2CnB,OAAO,CAAC,KAAK;IAQb,kGAAkG;IAClG,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;CAuHtC"}
1
+ {"version":3,"file":"situation-report.d.ts","sourceRoot":"","sources":["../../src/operator/situation-report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,2BAA2B,CAAC;AAEjE,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAChD;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;AAqB3C,MAAM,WAAW,wBAAwB;IACvC,+FAA+F;IAC/F,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC;IAC9C;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAClD;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACxE;AAKD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,IAAI,CAA2B;gBAE3B,IAAI,GAAE,wBAA6B;IAI/C,0EAA0E;IAC1E,YAAY,CAAC,MAAM,EAAE,oBAAoB,EAAE,GAAG,IAAI;IAgBlD,2FAA2F;IAC3F,UAAU,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAmBxC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC,uFAAuF;IACvF,WAAW,IAAI,OAAO;IAItB;;;OAGG;IACG,MAAM,CACV,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,EAChC,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,OAAO,CAAC;IA2DnB,OAAO,CAAC,KAAK;IAQb,kGAAkG;IAClG,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;CAyItC"}
@@ -106,6 +106,19 @@ class SituationReporter {
106
106
  if (cited.length > 0) {
107
107
  this.opts.recordTriggerUse?.(cited);
108
108
  }
109
+ // Context carry (plan v6 S1-T4): persist the DELIVERED full report so the
110
+ // chat console can reference "the report you just got" instead of
111
+ // fabricating one. Same success condition as the delta anchor.
112
+ if (mode === 'full') {
113
+ try {
114
+ this.opts.persistLastFullReport?.(new Date().toISOString(), text);
115
+ }
116
+ catch (error) {
117
+ // Carry is derived state - persistence failure must not fail the
118
+ // delivered report, but it must be loud.
119
+ console.warn(`[situation-report] failed to persist last full report for context carry: ${error instanceof Error ? error.message : String(error)}`);
120
+ }
121
+ }
109
122
  this.reset();
110
123
  return true;
111
124
  }
@@ -137,6 +150,48 @@ class SituationReporter {
137
150
  ? this.opts.selfGatherLines()
138
151
  : (this.opts.selfGatherLines ?? [])
139
152
  : [];
153
+ const gatherInstructions = this.opts.backend === 'codex'
154
+ ? [
155
+ 'Before writing, ACTIVELY gather current context with your injected native host tools directly.',
156
+ 'Call each tool through the native model tool interface and wait for its result before',
157
+ 'the next call; never emit Markdown or JavaScript substitutes for tool calls.',
158
+ 'Gather with these injected native host tools:',
159
+ ...gatherLines.map((line) => `- ${line}`),
160
+ 'These tool names are already injected for this run. Do not search for them, and do',
161
+ 'not fall back to Bash or curl against any API.',
162
+ 'Use ONLY these injected host tools to gather. Do NOT read log files, databases, or',
163
+ 'the filesystem with Bash, Read, or other unrelated tools - those are not the task',
164
+ 'board and will make the report wrong. Your tool findings are the primary source;',
165
+ 'the window summary below is only a hint.',
166
+ '',
167
+ 'After gathering, if the window contains a durable decision or lesson worth keeping,',
168
+ 'persist exactly ONE by calling the injected native mama_save host tool (type',
169
+ '"decision", with topic, decision, reasoning). Only save when it is genuinely',
170
+ 'durable; skip the save otherwise. This is your judgement, not a requirement.',
171
+ ]
172
+ : [
173
+ 'Before writing, ACTIVELY gather current context by CALLING your gateway tools.',
174
+ 'Emit each call as a fenced tool_call JSON block and wait for the result before',
175
+ 'the next call. The block format is exactly:',
176
+ '```tool_call',
177
+ '{"name": "kagemusha_tasks", "input": {"status": "in_progress"}}',
178
+ '```',
179
+ 'Gather with these gateway tool calls:',
180
+ ...gatherLines.map((line) => `- ${line}`),
181
+ 'These gateway tools are NOT native or deferred CLI tools: ToolSearch cannot',
182
+ 'load them and will find nothing. Invoke them ONLY as fenced tool_call JSON',
183
+ 'blocks in your reply text - do not search for them, and do not fall back to',
184
+ 'Bash or curl against any API.',
185
+ 'Use ONLY these gateway tool_call blocks to gather. Do NOT read log files,',
186
+ 'databases, or the filesystem with Bash, Read, or other native tools - those are',
187
+ 'not the task board and will make the report wrong. Your gateway tool findings',
188
+ 'are the primary source; the window summary below is only a hint.',
189
+ '',
190
+ 'After gathering, if the window contains a durable decision or lesson worth',
191
+ 'keeping, persist exactly ONE with a gateway tool_call to mama_save (type',
192
+ '"decision", with topic, decision, reasoning). Only save when it is genuinely',
193
+ 'durable; skip the save otherwise. This is your judgement, not a requirement.',
194
+ ];
140
195
  // M2.1 posture: the full report is a DUTY report (always arrives - a quiet window is
141
196
  // reported as quiet, the aliveness signal owners rely on); the digest defaults to briefing
142
197
  // and keeps NOTHING only for pure noise.
@@ -151,32 +206,7 @@ class SituationReporter {
151
206
  "Structure the report with these sections (render the headings in the owner's language;",
152
207
  'omit a section only when it is truly empty):',
153
208
  '1) Key situation 2) Action required 3) Decisions needed 4) Pipeline 5) Next actions',
154
- ...(gatherLines.length > 0
155
- ? [
156
- '',
157
- 'Before writing, ACTIVELY gather current context by CALLING your gateway tools.',
158
- 'Emit each call as a fenced tool_call JSON block and wait for the result before',
159
- 'the next call. The block format is exactly:',
160
- '```tool_call',
161
- '{"name": "kagemusha_tasks", "input": {"status": "in_progress"}}',
162
- '```',
163
- 'Gather with these gateway tool calls:',
164
- ...gatherLines.map((line) => `- ${line}`),
165
- 'These gateway tools are NOT native or deferred CLI tools: ToolSearch cannot',
166
- 'load them and will find nothing. Invoke them ONLY as fenced tool_call JSON',
167
- 'blocks in your reply text - do not search for them, and do not fall back to',
168
- 'Bash or curl against any API.',
169
- 'Use ONLY these gateway tool_call blocks to gather. Do NOT read log files,',
170
- 'databases, or the filesystem with Bash, Read, or other native tools - those are',
171
- 'not the task board and will make the report wrong. Your gateway tool findings',
172
- 'are the primary source; the window summary below is only a hint.',
173
- '',
174
- 'After gathering, if the window contains a durable decision or lesson worth',
175
- 'keeping, persist exactly ONE with a gateway tool_call to mama_save (type',
176
- '"decision", with topic, decision, reasoning). Only save when it is genuinely',
177
- 'durable; skip the save otherwise. This is your judgement, not a requirement.',
178
- ]
179
- : []),
209
+ ...(gatherLines.length > 0 ? ['', ...gatherInstructions] : []),
180
210
  ...(this.opts.boardPublishLines && this.opts.boardPublishLines.length > 0
181
211
  ? ['', ...this.opts.boardPublishLines]
182
212
  : []),
@@ -1 +1 @@
1
- {"version":3,"file":"situation-report.js","sourceRoot":"","sources":["../../src/operator/situation-report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"situation-report.js","sourceRoot":"","sources":["../../src/operator/situation-report.ts"],"names":[],"mappings":";;;AAoBA,wEAAqE;AAErE;;;;GAIG;AACU,QAAA,wBAAwB,GAAG,wBAAwB,CAAC;AAWjE,kGAAkG;AAClG,MAAM,wBAAwB,GAAG,CAAC,CAAC;AACnC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAClC,MAAM,YAAY,GAAG,EAAE,CAAC;AAsDxB,oFAAoF;AACpF,MAAM,qBAAqB,GAAG,iCAAiC,CAAC;AAEhE,MAAa,iBAAiB;IACpB,eAAe,GAAG,IAAI,GAAG,EAAyB,CAAC;IACnD,WAAW,GAAG,CAAC,CAAC;IAChB,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;IACrC,QAAQ,GAAG,CAAC,CAAC;IACb,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,sCAAsC;IAC5E,IAAI,CAA2B;IAEvC,YAAY,OAAiC,EAAE;QAC7C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,0EAA0E;IAC1E,YAAY,CAAC,MAA8B;QACzC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;YAC9E,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YACb,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,IAAI,EAAE,CAAC;gBACT,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC;gBAClD,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,wBAAwB,EAAE,CAAC;oBACjD,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACrB,CAAC;YACH,CAAC;YACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACzC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,2FAA2F;IAC3F,UAAU,CAAC,QAAsB;QAC/B,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI;YACnC,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,IAAI,GAAG,EAAU;SAC1B,CAAC;QACF,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;QACf,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAClC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,YAAY,EAAE,CAAC;gBACrE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,cAAc,CAAC,KAAa;QAC1B,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC;IACzB,CAAC;IAED,uFAAuF;IACvF,WAAW;QACT,OAAO,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IAC5E,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CACV,QAAkB,EAClB,MAAgC,EAChC,IAAgB;QAEhB,yFAAyF;QACzF,4FAA4F;QAC5F,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO,KAAK,CAAC;QAEzD,MAAM,GAAG,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5D,IAAI,GAAG,KAAK,EAAE,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,iEAAiE;YAC/E,OAAO,KAAK,CAAC;QACf,CAAC;QAED,4EAA4E;QAC5E,6EAA6E;QAC7E,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3D,IAAI,KAAK,GAAa,EAAE,CAAC;QACzB,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YAC9E,KAAK,GAAG;gBACN,GAAG,IAAI,GAAG,CACR,KAAK,CAAC,CAAC,CAAC;qBACL,KAAK,CAAC,GAAG,CAAC;qBACV,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;qBACtB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,MAAM,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CACrF;aACF,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAChB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,iEAAiE;YAC/E,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,gEAAgE;QACzF,2EAA2E;QAC3E,sEAAsE;QACtE,wEAAwE;QACxE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QACD,0EAA0E;QAC1E,kEAAkE;QAClE,+DAA+D;QAC/D,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;YACpE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,iEAAiE;gBACjE,yCAAyC;gBACzC,OAAO,CAAC,IAAI,CACV,4EACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE,CACH,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK;QACX,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,kGAAkG;IAClG,WAAW,CAAC,IAAgB;QAC1B,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7F,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;QACxD,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAC3B,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CACjB,KAAK,SAAS,KAAK,CAAC,CAAC,KAAK,oBAAoB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,QAAQ,EAAE,CACrF,CAAC;QACF,IAAI,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACpF,WAAW,CAAC,IAAI,CACd,OAAO,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,qBAAqB,SAAS,UAAU,CAC9E,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAC9C,CAAC,CAAC,EAAE,EAAE,CACJ,cAAc,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,SAAS,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CACtI,CAAC;QACF,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAClD,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,KAAK,OAAO,EAAE,CAC/C,CAAC;QAEF,uFAAuF;QACvF,wFAAwF;QACxF,0FAA0F;QAC1F,yFAAyF;QACzF,gFAAgF;QAChF,MAAM,WAAW,GACf,IAAI,KAAK,MAAM;YACb,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,KAAK,UAAU;gBAC/C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBAC7B,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC;YACrC,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,kBAAkB,GACtB,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO;YAC3B,CAAC,CAAC;gBACE,gGAAgG;gBAChG,uFAAuF;gBACvF,8EAA8E;gBAC9E,+CAA+C;gBAC/C,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;gBACzC,oFAAoF;gBACpF,gDAAgD;gBAChD,oFAAoF;gBACpF,mFAAmF;gBACnF,kFAAkF;gBAClF,0CAA0C;gBAC1C,EAAE;gBACF,qFAAqF;gBACrF,8EAA8E;gBAC9E,8EAA8E;gBAC9E,8EAA8E;aAC/E;YACH,CAAC,CAAC;gBACE,gFAAgF;gBAChF,gFAAgF;gBAChF,6CAA6C;gBAC7C,cAAc;gBACd,iEAAiE;gBACjE,KAAK;gBACL,uCAAuC;gBACvC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;gBACzC,6EAA6E;gBAC7E,4EAA4E;gBAC5E,6EAA6E;gBAC7E,+BAA+B;gBAC/B,2EAA2E;gBAC3E,iFAAiF;gBACjF,+EAA+E;gBAC/E,kEAAkE;gBAClE,EAAE;gBACF,4EAA4E;gBAC5E,0EAA0E;gBAC1E,8EAA8E;gBAC9E,8EAA8E;aAC/E,CAAC;QAER,qFAAqF;QACrF,2FAA2F;QAC3F,yCAAyC;QACzC,MAAM,OAAO,GACX,IAAI,KAAK,MAAM;YACb,CAAC,CAAC;gBACE,gCAAwB;gBACxB,yFAAyF;gBACzF,wFAAwF;gBACxF,sFAAsF;gBACtF,qFAAqF;gBACrF,iDAAiD;gBACjD,wFAAwF;gBACxF,8CAA8C;gBAC9C,yFAAyF;gBACzF,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9D,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;oBACvE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;oBACtC,CAAC,CAAC,EAAE,CAAC;aACR;YACH,CAAC,CAAC;gBACE,qFAAqF;gBACrF,yFAAyF;gBACzF,wFAAwF;gBACxF,iFAAiF;gBACjF,gEAAgE;aACjE,CAAC;QAER,OAAO;YACL,GAAG,OAAO;YACV,8EAA8E;YAC9E,8CAA8C;YAC9C,uFAAuF;YACvF,mFAAmF;YACnF,2EAA2E;YAC3E,gEAAgE;YAChE,iEAAiE;YACjE,uFAAuF;YACvF,yEAAyE;YACzE,iFAAiF;YACjF,mCAAmC;YACnC,4FAA4F;YAC5F,qFAAqF;YACrF,iFAAiF;YACjF,uBAAuB,IAAI,IAAI,EAAE,CAAC,cAAc,EAAE,4CAA4C;YAC9F,EAAE;YACF,2CAA2C;YAC3C,IAAA,2CAAoB,EAClB,kBAAkB,EAClB,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,qCAAqC,CACxF;YACD,EAAE;YACF,wCAAwC,IAAI,CAAC,QAAQ,EAAE;YACvD,gBAAgB;YAChB,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC;YAC7E,EAAE;YACF,4CAA4C;YAC5C,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;SACzD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;CACF;AA/QD,8CA+QC"}
@@ -20,14 +20,42 @@
20
20
  */
21
21
  import type { SQLiteDatabase } from '../sqlite.js';
22
22
  import type { OperatorTask, TaskSource } from './operator-interfaces.js';
23
- export declare const TASK_STATUSES: readonly ["pending", "in_progress", "review", "blocked", "done", "cancelled"];
23
+ export declare const TASK_STATUSES: readonly ["pending", "in_progress", "review", "blocked", "done", "cancelled", "failed"];
24
24
  export type TaskStatus = (typeof TASK_STATUSES)[number];
25
25
  export declare const TASK_PRIORITIES: readonly ["high", "normal", "low"];
26
26
  export type TaskPriority = (typeof TASK_PRIORITIES)[number];
27
+ export declare const TASK_KINDS: readonly ["owner", "system"];
28
+ export type TaskKind = (typeof TASK_KINDS)[number];
29
+ export declare const WORKORDER_KINDS: readonly ["board", "wiki", "memory-curation"];
30
+ export type WorkOrderKind = (typeof WORKORDER_KINDS)[number];
31
+ /** source_channel namespace for workorder rows: 'workorder:<workKind>'. */
32
+ export declare const WORKORDER_CHANNEL_PREFIX = "workorder:";
33
+ export interface EnqueueWorkOrderInput {
34
+ workKind: WorkOrderKind;
35
+ /** Per-occurrence idempotency key (schedule slot / event batch / manual ts). */
36
+ idempotencyKey: string;
37
+ /** Kind-specific payload; `attempts` is managed by the ledger (starts at 1). */
38
+ input: Record<string, unknown>;
39
+ priority?: TaskPriority;
40
+ }
41
+ export interface WorkOrderRecord {
42
+ id: number;
43
+ workKind: WorkOrderKind;
44
+ status: TaskStatus;
45
+ priority: TaskPriority;
46
+ idempotencyKey: string;
47
+ /** Parsed payload; always carries `attempts` (>= 1). */
48
+ payload: Record<string, unknown> & {
49
+ attempts: number;
50
+ };
51
+ createdAt: number;
52
+ updatedAt: number;
53
+ }
27
54
  /** Extended record: satisfies OperatorTask (numeric deadline) and carries the ISO original. */
28
55
  export interface TaskRecord extends OperatorTask {
29
56
  status: TaskStatus;
30
57
  priority: TaskPriority;
58
+ kind: TaskKind;
31
59
  /** ISO YYYY-MM-DD as stored; `deadline` (OperatorTask) is its UTC-midnight epoch ms. */
32
60
  deadlineIso: string | null;
33
61
  assignee: string | null;
@@ -72,11 +100,24 @@ export declare class TaskLedger implements TaskSource {
72
100
  private db;
73
101
  constructor(db: SQLiteDatabase);
74
102
  private runMigration;
103
+ /** Full current column set - single source for CREATE and the rebuild copy. */
104
+ private static readonly TABLE_COLUMNS_SQL;
105
+ private static readonly INDEXES_SQL;
106
+ /**
107
+ * Stage-2 in-place upgrade for pre-existing tables. Guards are re-checked
108
+ * INSIDE `BEGIN IMMEDIATE`: two connections construct TaskLedger (boot +
109
+ * lazy API handler) and both run this - the loser must see the winner's
110
+ * finished work, not rebuild an already-migrated table.
111
+ */
112
+ private upgradeSchema;
75
113
  /** TaskSource conformance: open items in canonical board order. */
76
114
  getTasks(): OperatorTask[];
77
115
  countOpenUnconfirmed(): number;
78
116
  list(filter?: ListTasksFilter): TaskRecord[];
117
+ /** Owner rows only - system workorder rows are invisible to external reads. */
79
118
  getById(id: number): TaskRecord | null;
119
+ /** Internal fetch without the kind filter (guards and workorder paths). */
120
+ private getRowById;
80
121
  /**
81
122
  * Create a task. Idempotent under at-least-once delivery: a duplicate
82
123
  * (source_channel, source_event_id) UPSERTS - the existing row gets the new
@@ -84,8 +125,55 @@ export declare class TaskLedger implements TaskSource {
84
125
  */
85
126
  create(input: CreateTaskInput): TaskRecord;
86
127
  update(id: number, patch: UpdateTaskInput): TaskRecord;
87
- /** Stable hash over ordered rows - the Phase-2 verifier's ledger snapshot. */
128
+ /**
129
+ * Stable hash over ordered OWNER rows - the Phase-2 verifier's ledger
130
+ * snapshot. kind filter keeps concurrent system enqueues from shaking the
131
+ * hash mid-bracket (evidence-only signal, but noise is noise).
132
+ */
88
133
  payloadHash(): string;
134
+ /**
135
+ * Enqueue a workorder. Idempotent per occurrence key: an open (pending or
136
+ * in_progress) keyed row dedups; a terminal keyed row frees the slot (the
137
+ * unique index excludes terminal statuses) and a fresh row is inserted.
138
+ */
139
+ enqueueWorkOrder(order: EnqueueWorkOrderInput): WorkOrderRecord;
140
+ /**
141
+ * Claim the next pending workorder: priority high>normal>low, then id ASC
142
+ * (plan D2/E2 - CASE mapping, never lexicographic on the TEXT enum).
143
+ * pending -> in_progress. Single serial consumer; transaction for atomicity.
144
+ */
145
+ claimNextWorkOrder(): WorkOrderRecord | null;
146
+ /**
147
+ * Atomic fail-and-requeue (PR bot round): the failure mark and the
148
+ * replacement row commit together - a crash between the two would lose
149
+ * the retry (the old row terminal, the new one never inserted). The
150
+ * replacement can only be inserted AFTER the old row leaves the partial
151
+ * unique index, hence one transaction, not two calls.
152
+ */
153
+ requeueWorkOrder(wo: WorkOrderRecord, reason: string): WorkOrderRecord;
154
+ completeWorkOrder(id: number): void;
155
+ failWorkOrder(id: number, reason: string): void;
156
+ countPendingWorkOrders(): number;
157
+ /** In-progress system rows at boot = crash artifacts (single serial consumer). */
158
+ listStaleClaims(): WorkOrderRecord[];
159
+ /**
160
+ * Boot cleanup (plan D3 + review N4): open system rows -> cancelled. A
161
+ * rollback is not a failure - excluded from failed counters/alarms; caller
162
+ * logs ONE summary line with the returned count. `onlyKinds` scopes the
163
+ * cancellation (shadow rollback cancels non-board orders only).
164
+ */
165
+ cancelOpenWorkOrders(reason: string, onlyKinds?: WorkOrderKind[]): number;
166
+ /** Per-kind stats for the workorder_status surface. */
167
+ workOrderStats(): Array<{
168
+ workKind: WorkOrderKind;
169
+ lastRunAt: number | null;
170
+ lastStatus: TaskStatus | null;
171
+ failedCount: number;
172
+ lastFailureReason: string | null;
173
+ }>;
174
+ private getWorkOrderById;
175
+ private transitionWorkOrder;
176
+ private rowToWorkOrder;
89
177
  /** contract_no_update: silence as a verifiable judgment, scoped to one reconcile run. */
90
178
  recordNoUpdate(scope: string, reason: string): {
91
179
  id: number;
@@ -1 +1 @@
1
- {"version":3,"file":"task-ledger.d.ts","sourceRoot":"","sources":["../../src/operator/task-ledger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task-ledger.d.ts","sourceRoot":"","sources":["../../src/operator/task-ledger.ts"],"names":[],"mappings":"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"}