@jungjaehoon/mama-os 0.40.0 → 0.41.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 (109) hide show
  1. package/README.md +2 -2
  2. package/dist/agent/code-act/host-bridge.d.ts.map +1 -1
  3. package/dist/agent/code-act/host-bridge.js +0 -22
  4. package/dist/agent/code-act/host-bridge.js.map +1 -1
  5. package/dist/agent/gateway-tool-executor.d.ts +6 -7
  6. package/dist/agent/gateway-tool-executor.d.ts.map +1 -1
  7. package/dist/agent/gateway-tool-executor.js +38 -76
  8. package/dist/agent/gateway-tool-executor.js.map +1 -1
  9. package/dist/agent/gateway-tools.md +1 -3
  10. package/dist/agent/tool-registry.d.ts.map +1 -1
  11. package/dist/agent/tool-registry.js +6 -18
  12. package/dist/agent/tool-registry.js.map +1 -1
  13. package/dist/agent/types.d.ts +1 -8
  14. package/dist/agent/types.d.ts.map +1 -1
  15. package/dist/agent/types.js.map +1 -1
  16. package/dist/cli/commands/start.d.ts +45 -52
  17. package/dist/cli/commands/start.d.ts.map +1 -1
  18. package/dist/cli/commands/start.js +247 -202
  19. package/dist/cli/commands/start.js.map +1 -1
  20. package/dist/cli/config/types.d.ts.map +1 -1
  21. package/dist/cli/config/types.js +0 -2
  22. package/dist/cli/config/types.js.map +1 -1
  23. package/dist/cli/runtime/api-routes-init.d.ts +0 -3
  24. package/dist/cli/runtime/api-routes-init.d.ts.map +1 -1
  25. package/dist/cli/runtime/api-routes-init.js +8 -32
  26. package/dist/cli/runtime/api-routes-init.js.map +1 -1
  27. package/dist/connectors/private-connector-policy.d.ts +1 -3
  28. package/dist/connectors/private-connector-policy.d.ts.map +1 -1
  29. package/dist/connectors/private-connector-policy.js +1 -26
  30. package/dist/connectors/private-connector-policy.js.map +1 -1
  31. package/dist/gateways/message-router.d.ts.map +1 -1
  32. package/dist/gateways/message-router.js +2 -3
  33. package/dist/gateways/message-router.js.map +1 -1
  34. package/dist/multi-agent/dashboard-agent-persona.d.ts +1 -1
  35. package/dist/multi-agent/dashboard-agent-persona.d.ts.map +1 -1
  36. package/dist/multi-agent/dashboard-agent-persona.js +6 -7
  37. package/dist/multi-agent/dashboard-agent-persona.js.map +1 -1
  38. package/dist/operator/board-pipeline-render.d.ts +17 -0
  39. package/dist/operator/board-pipeline-render.d.ts.map +1 -0
  40. package/dist/operator/board-pipeline-render.js +73 -0
  41. package/dist/operator/board-pipeline-render.js.map +1 -0
  42. package/dist/operator/board-slot-instructions.d.ts +0 -8
  43. package/dist/operator/board-slot-instructions.d.ts.map +1 -1
  44. package/dist/operator/board-slot-instructions.js +3 -37
  45. package/dist/operator/board-slot-instructions.js.map +1 -1
  46. package/dist/operator/console-brief.d.ts +1 -1
  47. package/dist/operator/console-brief.d.ts.map +1 -1
  48. package/dist/operator/console-brief.js +5 -4
  49. package/dist/operator/console-brief.js.map +1 -1
  50. package/dist/operator/owner-event-inbox.d.ts +10 -1
  51. package/dist/operator/owner-event-inbox.d.ts.map +1 -1
  52. package/dist/operator/owner-event-inbox.js +22 -6
  53. package/dist/operator/owner-event-inbox.js.map +1 -1
  54. package/dist/operator/owner-event-loop.d.ts +4 -2
  55. package/dist/operator/owner-event-loop.d.ts.map +1 -1
  56. package/dist/operator/owner-event-loop.js +20 -3
  57. package/dist/operator/owner-event-loop.js.map +1 -1
  58. package/dist/operator/owner-event-outcome.d.ts +3 -3
  59. package/dist/operator/owner-event-outcome.d.ts.map +1 -1
  60. package/dist/operator/owner-event-outcome.js +66 -9
  61. package/dist/operator/owner-event-outcome.js.map +1 -1
  62. package/dist/operator/owner-event-policy.d.ts.map +1 -1
  63. package/dist/operator/owner-event-policy.js +18 -8
  64. package/dist/operator/owner-event-policy.js.map +1 -1
  65. package/dist/operator/owner-event-prompt.d.ts +2 -0
  66. package/dist/operator/owner-event-prompt.d.ts.map +1 -1
  67. package/dist/operator/owner-event-prompt.js +14 -5
  68. package/dist/operator/owner-event-prompt.js.map +1 -1
  69. package/dist/operator/report-context.d.ts +12 -0
  70. package/dist/operator/report-context.d.ts.map +1 -1
  71. package/dist/operator/report-context.js +60 -0
  72. package/dist/operator/report-context.js.map +1 -1
  73. package/dist/operator/task-ledger.d.ts +20 -1
  74. package/dist/operator/task-ledger.d.ts.map +1 -1
  75. package/dist/operator/task-ledger.js +58 -1
  76. package/dist/operator/task-ledger.js.map +1 -1
  77. package/dist/operator/temporal-worker.d.ts +0 -1
  78. package/dist/operator/temporal-worker.d.ts.map +1 -1
  79. package/dist/operator/temporal-worker.js +0 -29
  80. package/dist/operator/temporal-worker.js.map +1 -1
  81. package/dist/operator/worker-run.d.ts +1 -1
  82. package/dist/operator/worker-run.d.ts.map +1 -1
  83. package/dist/operator/worker-run.js +5 -4
  84. package/dist/operator/worker-run.js.map +1 -1
  85. package/dist/operator/workorder-consumer.d.ts +18 -2
  86. package/dist/operator/workorder-consumer.d.ts.map +1 -1
  87. package/dist/operator/workorder-consumer.js +92 -1
  88. package/dist/operator/workorder-consumer.js.map +1 -1
  89. package/dist/operator/workorder-hooks.d.ts +1 -7
  90. package/dist/operator/workorder-hooks.d.ts.map +1 -1
  91. package/dist/operator/workorder-hooks.js +1 -5
  92. package/dist/operator/workorder-hooks.js.map +1 -1
  93. package/dist/operator/workorder-publishers.d.ts +0 -7
  94. package/dist/operator/workorder-publishers.d.ts.map +1 -1
  95. package/dist/operator/workorder-publishers.js +0 -22
  96. package/dist/operator/workorder-publishers.js.map +1 -1
  97. package/package.json +1 -1
  98. package/dist/db/migrations/owner-event-board-refresh.d.ts +0 -10
  99. package/dist/db/migrations/owner-event-board-refresh.d.ts.map +0 -1
  100. package/dist/db/migrations/owner-event-board-refresh.js +0 -27
  101. package/dist/db/migrations/owner-event-board-refresh.js.map +0 -1
  102. package/dist/operator/briefs.d.ts +0 -50
  103. package/dist/operator/briefs.d.ts.map +0 -1
  104. package/dist/operator/briefs.js +0 -451
  105. package/dist/operator/briefs.js.map +0 -1
  106. package/dist/operator/owner-event-board-refresh.d.ts +0 -51
  107. package/dist/operator/owner-event-board-refresh.d.ts.map +0 -1
  108. package/dist/operator/owner-event-board-refresh.js +0 -260
  109. package/dist/operator/owner-event-board-refresh.js.map +0 -1
@@ -1,260 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OwnerEventBoardRefreshLedger = exports.OWNER_EVENT_BOARD_CLAIM_WINDOW_MS = void 0;
4
- exports.resolveInitialBoardRepairGeneration = resolveInitialBoardRepairGeneration;
5
- const owner_event_board_refresh_js_1 = require("../db/migrations/owner-event-board-refresh.js");
6
- const board_refresh_gate_js_1 = require("./board-refresh-gate.js");
7
- const workorder_publishers_js_1 = require("./workorder-publishers.js");
8
- exports.OWNER_EVENT_BOARD_CLAIM_WINDOW_MS = 20 * 60 * 1000;
9
- function assertNonNegativeSafeInteger(value, field) {
10
- if (!Number.isSafeInteger(value) || value < 0) {
11
- throw new Error(`${field} must be a non-negative safe integer`);
12
- }
13
- }
14
- function canonicalEventIds(value, field) {
15
- if (!Array.isArray(value) || value.length === 0) {
16
- throw new Error(`${field} must contain at least one event id`);
17
- }
18
- const normalized = value.map((eventId) => {
19
- if (typeof eventId !== 'string' || eventId.trim().length === 0) {
20
- throw new Error(`${field} must contain only non-empty event ids`);
21
- }
22
- return eventId;
23
- });
24
- const unique = [...new Set(normalized)].sort();
25
- if (unique.length !== normalized.length) {
26
- throw new Error(`${field} must not contain duplicate event ids`);
27
- }
28
- return unique;
29
- }
30
- function acceptanceFromRow(row) {
31
- return {
32
- batchId: row.batch_id,
33
- batchKey: row.batch_key,
34
- repairGeneration: row.repair_generation,
35
- workOrderId: row.workorder_id,
36
- appliedAt: row.applied_at,
37
- };
38
- }
39
- function resolveInitialBoardRepairGeneration(now, pendingGeneration) {
40
- assertNonNegativeSafeInteger(now, 'board repair wall time');
41
- if (pendingGeneration === null)
42
- return now;
43
- assertNonNegativeSafeInteger(pendingGeneration, 'pending board repair generation');
44
- if (pendingGeneration >= Number.MAX_SAFE_INTEGER) {
45
- throw new Error('pending board repair generation exhausted');
46
- }
47
- return Math.max(now, pendingGeneration + 1);
48
- }
49
- /**
50
- * Durable many-to-one relation between exact owner-event batches and the
51
- * shared Board repair workorder (TG-06).
52
- *
53
- * SQLite owns acceptance. The in-memory set owns only a best-effort wakeup
54
- * after the current workorder becomes terminal; unapplied rows recover it on
55
- * the next boot if the process dies in that narrow window.
56
- */
57
- class OwnerEventBoardRefreshLedger {
58
- db;
59
- taskLedger;
60
- clock;
61
- postTerminalFollowups = new Set();
62
- constructor(db, taskLedger, clock = () => Date.now()) {
63
- this.db = db;
64
- this.taskLedger = taskLedger;
65
- this.clock = clock;
66
- (0, owner_event_board_refresh_js_1.applyOwnerEventBoardRefreshMigration)(this.db);
67
- }
68
- maxPendingGeneration() {
69
- const row = this.db
70
- .prepare(`SELECT MAX(repair_generation) AS generation
71
- FROM owner_event_board_refresh_intents
72
- WHERE applied_at IS NULL`)
73
- .get();
74
- return row?.generation ?? null;
75
- }
76
- accept(input) {
77
- if (!Number.isSafeInteger(input.batchId) || input.batchId <= 0) {
78
- throw new Error('owner-event Board batchId must be a positive safe integer');
79
- }
80
- assertNonNegativeSafeInteger(input.repair.repairGeneration, 'board repair generation');
81
- if (input.repair.noUpdateScope !== (0, board_refresh_gate_js_1.boardFullNoUpdateScope)(input.repair.repairGeneration)) {
82
- throw new Error('owner-event Board no-update scope does not match its repair generation');
83
- }
84
- const requestedEventIds = canonicalEventIds(input.eventIds, 'owner-event Board eventIds');
85
- const inboxRow = this.db
86
- .prepare(`SELECT event_ids_json FROM owner_event_inbox WHERE id = ?`)
87
- .get(input.batchId);
88
- if (!inboxRow) {
89
- throw new Error(`owner-event Board batch ${input.batchId} does not exist`);
90
- }
91
- const storedEventIds = canonicalEventIds(JSON.parse(inboxRow.event_ids_json), 'stored owner-event Board eventIds');
92
- const batchKey = (0, workorder_publishers_js_1.boardBatchKey)(requestedEventIds);
93
- if ((0, workorder_publishers_js_1.boardBatchKey)(storedEventIds) !== batchKey) {
94
- throw new Error(`owner-event Board batch ${input.batchId} conflicts with its stored event identity`);
95
- }
96
- this.db.exec('BEGIN IMMEDIATE');
97
- try {
98
- const existing = this.readAcceptance(input.batchId);
99
- if (existing) {
100
- if (existing.batchKey !== batchKey) {
101
- throw new Error(`owner-event Board batch ${input.batchId} conflicts with its durable acceptance`);
102
- }
103
- this.db.exec('COMMIT');
104
- return existing;
105
- }
106
- const payload = {
107
- mode: 'full',
108
- force: false,
109
- repairGeneration: input.repair.repairGeneration,
110
- noUpdateScope: input.repair.noUpdateScope,
111
- };
112
- (0, workorder_publishers_js_1.validateWorkOrderPayload)('board', payload);
113
- const workOrder = this.taskLedger.enqueueWorkOrder({
114
- workKind: 'board',
115
- idempotencyKey: (0, workorder_publishers_js_1.boardRepairKey)(),
116
- input: payload,
117
- priority: 'high',
118
- });
119
- const now = this.clock();
120
- assertNonNegativeSafeInteger(now, 'owner-event Board intent time');
121
- this.db
122
- .prepare(`INSERT INTO owner_event_board_refresh_intents
123
- (batch_id, batch_key, repair_generation, workorder_id,
124
- applied_at, created_at, updated_at)
125
- VALUES (?, ?, ?, ?, NULL, ?, ?)`)
126
- .run(input.batchId, batchKey, input.repair.repairGeneration, workOrder.id, now, now);
127
- this.attachPendingToWorkOrderInTransaction(workOrder.id, {}, now);
128
- const inserted = this.readAcceptance(input.batchId);
129
- if (!inserted) {
130
- throw new Error('owner-event Board acceptance disappeared after insert');
131
- }
132
- this.db.exec('COMMIT');
133
- return inserted;
134
- }
135
- catch (error) {
136
- this.db.exec('ROLLBACK');
137
- throw error;
138
- }
139
- }
140
- findAcceptance(batchId) {
141
- if (!Number.isSafeInteger(batchId) || batchId <= 0)
142
- return null;
143
- return this.readAcceptance(batchId);
144
- }
145
- attachPendingToWorkOrder(workOrderId, options = {}) {
146
- const now = this.clock();
147
- assertNonNegativeSafeInteger(now, 'owner-event Board attachment time');
148
- this.db.exec('BEGIN IMMEDIATE');
149
- try {
150
- const changes = this.attachPendingToWorkOrderInTransaction(workOrderId, options, now);
151
- this.db.exec('COMMIT');
152
- return changes;
153
- }
154
- catch (error) {
155
- this.db.exec('ROLLBACK');
156
- throw error;
157
- }
158
- }
159
- markVerified(workOrderId, capturedGeneration) {
160
- assertNonNegativeSafeInteger(capturedGeneration, 'captured Board repair generation');
161
- const now = this.clock();
162
- assertNonNegativeSafeInteger(now, 'owner-event Board application time');
163
- let applied = 0;
164
- let followupPending = false;
165
- this.db.exec('BEGIN IMMEDIATE');
166
- try {
167
- this.assertBoardWorkOrder(workOrderId);
168
- applied = this.db
169
- .prepare(`UPDATE owner_event_board_refresh_intents
170
- SET applied_at = ?, updated_at = ?
171
- WHERE applied_at IS NULL AND repair_generation <= ?`)
172
- .run(now, now, capturedGeneration).changes;
173
- this.db
174
- .prepare(`UPDATE operator_tasks
175
- SET status = 'cancelled', latest_event = ?, updated_at = ?
176
- WHERE kind = 'system'
177
- AND source_channel = 'workorder:board'
178
- AND source_event_id = ?
179
- AND status = 'pending'
180
- AND NOT EXISTS (
181
- SELECT 1 FROM owner_event_board_refresh_intents intent
182
- WHERE intent.workorder_id = operator_tasks.id AND intent.applied_at IS NULL
183
- )`)
184
- .run('owner-event Board obligations applied by verified full repair', now, (0, workorder_publishers_js_1.boardRepairKey)());
185
- followupPending = this.maxPendingGeneration() !== null;
186
- this.db.exec('COMMIT');
187
- }
188
- catch (error) {
189
- this.db.exec('ROLLBACK');
190
- throw error;
191
- }
192
- if (followupPending) {
193
- this.postTerminalFollowups.add(workOrderId);
194
- }
195
- return { applied, followupPending };
196
- }
197
- consumePostTerminalFollowup(workOrderId) {
198
- if (!this.postTerminalFollowups.delete(workOrderId))
199
- return false;
200
- return this.maxPendingGeneration() !== null;
201
- }
202
- readAcceptance(batchId) {
203
- const row = this.db
204
- .prepare(`SELECT batch_id, batch_key, repair_generation, workorder_id, applied_at
205
- FROM owner_event_board_refresh_intents WHERE batch_id = ?`)
206
- .get(batchId);
207
- return row ? acceptanceFromRow(row) : null;
208
- }
209
- attachPendingToWorkOrderInTransaction(workOrderId, options, now) {
210
- const row = this.readBoardWorkOrder(workOrderId);
211
- const result = this.db
212
- .prepare(`UPDATE owner_event_board_refresh_intents
213
- SET workorder_id = ?, updated_at = ?
214
- WHERE applied_at IS NULL AND workorder_id <> ?`)
215
- .run(workOrderId, now, workOrderId);
216
- if (row.status !== 'pending')
217
- return result.changes;
218
- const generation = this.maxPendingGeneration();
219
- if (generation === null)
220
- return result.changes;
221
- const storedPayload = JSON.parse(row.payload);
222
- const { attempts, ...publisherPayload } = storedPayload;
223
- const currentGeneration = Number.isSafeInteger(publisherPayload.repairGeneration) &&
224
- publisherPayload.repairGeneration >= 0
225
- ? publisherPayload.repairGeneration
226
- : generation;
227
- const repairGeneration = Math.max(currentGeneration, generation);
228
- const nextPublisherPayload = {
229
- ...publisherPayload,
230
- repairGeneration,
231
- noUpdateScope: (0, board_refresh_gate_js_1.boardFullNoUpdateScope)(repairGeneration),
232
- };
233
- (0, workorder_publishers_js_1.validateWorkOrderPayload)('board', nextPublisherPayload);
234
- const dueAt = options.readyNow ? now : (row.due_at ?? now + exports.OWNER_EVENT_BOARD_CLAIM_WINDOW_MS);
235
- this.db
236
- .prepare(`UPDATE operator_tasks
237
- SET payload = ?, due_at = ?, updated_at = ?
238
- WHERE id = ? AND status = 'pending'`)
239
- .run(JSON.stringify({ ...nextPublisherPayload, attempts }), dueAt, now, workOrderId);
240
- return result.changes;
241
- }
242
- readBoardWorkOrder(workOrderId) {
243
- if (!Number.isSafeInteger(workOrderId) || workOrderId <= 0) {
244
- throw new Error('Board workorder id must be a positive safe integer');
245
- }
246
- const row = this.db
247
- .prepare(`SELECT status, payload, due_at FROM operator_tasks
248
- WHERE id = ? AND kind = 'system' AND source_channel = 'workorder:board'`)
249
- .get(workOrderId);
250
- if (!row) {
251
- throw new Error(`Board workorder ${workOrderId} does not exist`);
252
- }
253
- return row;
254
- }
255
- assertBoardWorkOrder(workOrderId) {
256
- this.readBoardWorkOrder(workOrderId);
257
- }
258
- }
259
- exports.OwnerEventBoardRefreshLedger = OwnerEventBoardRefreshLedger;
260
- //# sourceMappingURL=owner-event-board-refresh.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"owner-event-board-refresh.js","sourceRoot":"","sources":["../../src/operator/owner-event-board-refresh.ts"],"names":[],"mappings":"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"}