@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.
- package/README.md +2 -2
- package/dist/agent/code-act/host-bridge.d.ts.map +1 -1
- package/dist/agent/code-act/host-bridge.js +0 -22
- package/dist/agent/code-act/host-bridge.js.map +1 -1
- package/dist/agent/gateway-tool-executor.d.ts +6 -7
- package/dist/agent/gateway-tool-executor.d.ts.map +1 -1
- package/dist/agent/gateway-tool-executor.js +38 -76
- package/dist/agent/gateway-tool-executor.js.map +1 -1
- package/dist/agent/gateway-tools.md +1 -3
- package/dist/agent/tool-registry.d.ts.map +1 -1
- package/dist/agent/tool-registry.js +6 -18
- package/dist/agent/tool-registry.js.map +1 -1
- package/dist/agent/types.d.ts +1 -8
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/cli/commands/start.d.ts +45 -52
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +247 -202
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/config/types.d.ts.map +1 -1
- package/dist/cli/config/types.js +0 -2
- package/dist/cli/config/types.js.map +1 -1
- package/dist/cli/runtime/api-routes-init.d.ts +0 -3
- package/dist/cli/runtime/api-routes-init.d.ts.map +1 -1
- package/dist/cli/runtime/api-routes-init.js +8 -32
- package/dist/cli/runtime/api-routes-init.js.map +1 -1
- package/dist/connectors/private-connector-policy.d.ts +1 -3
- package/dist/connectors/private-connector-policy.d.ts.map +1 -1
- package/dist/connectors/private-connector-policy.js +1 -26
- package/dist/connectors/private-connector-policy.js.map +1 -1
- package/dist/gateways/message-router.d.ts.map +1 -1
- package/dist/gateways/message-router.js +2 -3
- package/dist/gateways/message-router.js.map +1 -1
- package/dist/multi-agent/dashboard-agent-persona.d.ts +1 -1
- package/dist/multi-agent/dashboard-agent-persona.d.ts.map +1 -1
- package/dist/multi-agent/dashboard-agent-persona.js +6 -7
- package/dist/multi-agent/dashboard-agent-persona.js.map +1 -1
- package/dist/operator/board-pipeline-render.d.ts +17 -0
- package/dist/operator/board-pipeline-render.d.ts.map +1 -0
- package/dist/operator/board-pipeline-render.js +73 -0
- package/dist/operator/board-pipeline-render.js.map +1 -0
- package/dist/operator/board-slot-instructions.d.ts +0 -8
- package/dist/operator/board-slot-instructions.d.ts.map +1 -1
- package/dist/operator/board-slot-instructions.js +3 -37
- package/dist/operator/board-slot-instructions.js.map +1 -1
- package/dist/operator/console-brief.d.ts +1 -1
- package/dist/operator/console-brief.d.ts.map +1 -1
- package/dist/operator/console-brief.js +5 -4
- package/dist/operator/console-brief.js.map +1 -1
- package/dist/operator/owner-event-inbox.d.ts +10 -1
- package/dist/operator/owner-event-inbox.d.ts.map +1 -1
- package/dist/operator/owner-event-inbox.js +22 -6
- package/dist/operator/owner-event-inbox.js.map +1 -1
- package/dist/operator/owner-event-loop.d.ts +4 -2
- package/dist/operator/owner-event-loop.d.ts.map +1 -1
- package/dist/operator/owner-event-loop.js +20 -3
- package/dist/operator/owner-event-loop.js.map +1 -1
- package/dist/operator/owner-event-outcome.d.ts +3 -3
- package/dist/operator/owner-event-outcome.d.ts.map +1 -1
- package/dist/operator/owner-event-outcome.js +66 -9
- package/dist/operator/owner-event-outcome.js.map +1 -1
- package/dist/operator/owner-event-policy.d.ts.map +1 -1
- package/dist/operator/owner-event-policy.js +18 -8
- package/dist/operator/owner-event-policy.js.map +1 -1
- package/dist/operator/owner-event-prompt.d.ts +2 -0
- package/dist/operator/owner-event-prompt.d.ts.map +1 -1
- package/dist/operator/owner-event-prompt.js +14 -5
- package/dist/operator/owner-event-prompt.js.map +1 -1
- package/dist/operator/report-context.d.ts +12 -0
- package/dist/operator/report-context.d.ts.map +1 -1
- package/dist/operator/report-context.js +60 -0
- package/dist/operator/report-context.js.map +1 -1
- package/dist/operator/task-ledger.d.ts +20 -1
- package/dist/operator/task-ledger.d.ts.map +1 -1
- package/dist/operator/task-ledger.js +58 -1
- package/dist/operator/task-ledger.js.map +1 -1
- package/dist/operator/temporal-worker.d.ts +0 -1
- package/dist/operator/temporal-worker.d.ts.map +1 -1
- package/dist/operator/temporal-worker.js +0 -29
- package/dist/operator/temporal-worker.js.map +1 -1
- package/dist/operator/worker-run.d.ts +1 -1
- package/dist/operator/worker-run.d.ts.map +1 -1
- package/dist/operator/worker-run.js +5 -4
- package/dist/operator/worker-run.js.map +1 -1
- package/dist/operator/workorder-consumer.d.ts +18 -2
- package/dist/operator/workorder-consumer.d.ts.map +1 -1
- package/dist/operator/workorder-consumer.js +92 -1
- package/dist/operator/workorder-consumer.js.map +1 -1
- package/dist/operator/workorder-hooks.d.ts +1 -7
- package/dist/operator/workorder-hooks.d.ts.map +1 -1
- package/dist/operator/workorder-hooks.js +1 -5
- package/dist/operator/workorder-hooks.js.map +1 -1
- package/dist/operator/workorder-publishers.d.ts +0 -7
- package/dist/operator/workorder-publishers.d.ts.map +1 -1
- package/dist/operator/workorder-publishers.js +0 -22
- package/dist/operator/workorder-publishers.js.map +1 -1
- package/package.json +1 -1
- package/dist/db/migrations/owner-event-board-refresh.d.ts +0 -10
- package/dist/db/migrations/owner-event-board-refresh.d.ts.map +0 -1
- package/dist/db/migrations/owner-event-board-refresh.js +0 -27
- package/dist/db/migrations/owner-event-board-refresh.js.map +0 -1
- package/dist/operator/briefs.d.ts +0 -50
- package/dist/operator/briefs.d.ts.map +0 -1
- package/dist/operator/briefs.js +0 -451
- package/dist/operator/briefs.js.map +0 -1
- package/dist/operator/owner-event-board-refresh.d.ts +0 -51
- package/dist/operator/owner-event-board-refresh.d.ts.map +0 -1
- package/dist/operator/owner-event-board-refresh.js +0 -260
- package/dist/operator/owner-event-board-refresh.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"console-brief.d.ts","sourceRoot":"","sources":["../../src/operator/console-brief.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"console-brief.d.ts","sourceRoot":"","sources":["../../src/operator/console-brief.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AAOxF;0DAC0D;AAC1D,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAU9C,eAAO,MAAM,qBAAqB,+8DA6CjC,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,MAAkB,GAAG,MAAM,CAEpE;AAED;6EAC6E;AAC7E,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,MAAkB,GAAG,OAAO,CAQvE;AAED,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,MAAkB,GAAG,MAAM,CAIpE;AAeD,4EAA4E;AAC5E,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAWhG;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAkB,GAAG,MAAM,CA4B5F"}
|
|
@@ -15,8 +15,9 @@ exports.appendConsoleBriefLesson = appendConsoleBriefLesson;
|
|
|
15
15
|
* the system seeds a mechanism skeleton once and provides the write path;
|
|
16
16
|
* the agent fills it from experience (console_brief_update, log-loud).
|
|
17
17
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
18
|
+
* Ownership contract: seeded only when missing, agent/user edits always win, NO
|
|
19
|
+
* managed auto-upgrade. Since One MAMA this is the ONE brief every turn (chat,
|
|
20
|
+
* event, scheduled) starts from; scheduled turns append a host turn-kind section.
|
|
20
21
|
* The immutable behavioural floor (act-vs-ask boundary, evidence rules) stays
|
|
21
22
|
* code-owned in message-router's discipline - this file layers the EVOLVING
|
|
22
23
|
* knowledge on top and must never be treated as the security boundary.
|
|
@@ -59,8 +60,8 @@ failure.
|
|
|
59
60
|
|
|
60
61
|
## Procedure recipes (grow this section from experience)
|
|
61
62
|
|
|
62
|
-
- Status questions: artifacts first (board_read,
|
|
63
|
-
|
|
63
|
+
- Status questions: artifacts first (board_read, audit_findings_read), then
|
|
64
|
+
live queries; memory recall last and cited.
|
|
64
65
|
- Business data: use only tools present in the current run catalog. Start with
|
|
65
66
|
a broad summary, narrow to active entities or tasks, then inspect specific
|
|
66
67
|
channels without widening a supplied time window.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"console-brief.js","sourceRoot":"","sources":["../../src/operator/console-brief.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"console-brief.js","sourceRoot":"","sources":["../../src/operator/console-brief.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,6 +33,8 @@ export interface InboxRow extends InboxBatch {
|
|
|
33
33
|
id: number;
|
|
34
34
|
status: 'pending' | 'claimed' | 'acked' | 'dead';
|
|
35
35
|
attempts: number;
|
|
36
|
+
/** Enqueue wall time; bounds which durable effects may count as this batch's receipt. */
|
|
37
|
+
createdAt: number;
|
|
36
38
|
}
|
|
37
39
|
export type OwnerEventBatch = InboxRow;
|
|
38
40
|
export declare class OwnerEventInbox {
|
|
@@ -63,7 +65,14 @@ export declare class OwnerEventInbox {
|
|
|
63
65
|
*/
|
|
64
66
|
enqueue(batch: InboxBatch): number | null;
|
|
65
67
|
claimNext(): InboxRow | null;
|
|
66
|
-
|
|
68
|
+
/** ACK a batch; `unresolvedReason` names why it completed without a ledger change. */
|
|
69
|
+
ack(id: number, unresolvedReason?: string | null): void;
|
|
70
|
+
/** Batches ACKed without a ledger change since `sinceMs`, newest first. */
|
|
71
|
+
unresolvedAcks(sinceMs?: number, limit?: number): Array<{
|
|
72
|
+
id: number;
|
|
73
|
+
reason: string;
|
|
74
|
+
ackedAt: number;
|
|
75
|
+
}>;
|
|
67
76
|
/**
|
|
68
77
|
* Return a claim to pending, or park it dead after MAX_ATTEMPTS. Returns
|
|
69
78
|
* the resulting status so the caller can be LOUD about a dead batch - a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"owner-event-inbox.d.ts","sourceRoot":"","sources":["../../src/operator/owner-event-inbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAmB/D,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,+EAA+E;IAC/E,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,6EAA6E;IAC7E,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,QAAS,SAAQ,UAAU;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;IACjD,QAAQ,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"owner-event-inbox.d.ts","sourceRoot":"","sources":["../../src/operator/owner-event-inbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAmB/D,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,+EAA+E;IAC/E,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,6EAA6E;IAC7E,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,QAAS,SAAQ,UAAU;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,yFAAyF;IACzF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;AAyBvC,qBAAa,eAAe;IAexB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAfxB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAClC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAGR,EAAE,EAAE,cAAc,EAClB,KAAK,GAAE,MAAM,MAAyB;IA6GzD,OAAO,CAAC,GAAG;IAIX;;;;;;;;OAQG;IACH,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI;IAgCzC,SAAS,IAAI,QAAQ,GAAG,IAAI;IA+B5B,sFAAsF;IACtF,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,GAAE,MAAM,GAAG,IAAW,GAAG,IAAI;IAI7D,2EAA2E;IAC3E,cAAc,CAAC,OAAO,SAAI,EAAE,KAAK,SAAM,GAAG,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAgBhG;;;;OAIG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM;IAS7D,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,MAAM;IAI1D,mBAAmB,CACjB,WAAW,EAAE,MAAM,EACnB,GAAG,SAAa,GACf;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,eAAe,EAAE,CAAA;KAAE;IAmCrD,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;CAS5D"}
|
|
@@ -26,6 +26,7 @@ function deadBatch(row, attempts) {
|
|
|
26
26
|
activations: JSON.parse(row.activations_json),
|
|
27
27
|
status: 'dead',
|
|
28
28
|
attempts,
|
|
29
|
+
createdAt: row.created_at,
|
|
29
30
|
};
|
|
30
31
|
}
|
|
31
32
|
class OwnerEventInbox {
|
|
@@ -75,19 +76,24 @@ class OwnerEventInbox {
|
|
|
75
76
|
if (!columns.some((column) => column.name === 'retry_after')) {
|
|
76
77
|
this.db.exec(`ALTER TABLE owner_event_inbox ADD COLUMN retry_after INTEGER`);
|
|
77
78
|
}
|
|
79
|
+
// Host-written reason when a batch was ACKed without a ledger change (the
|
|
80
|
+
// [decision] escape hatch). Counted, never self-graded by the model.
|
|
81
|
+
if (!columns.some((column) => column.name === 'unresolved_reason')) {
|
|
82
|
+
this.db.exec(`ALTER TABLE owner_event_inbox ADD COLUMN unresolved_reason TEXT`);
|
|
83
|
+
}
|
|
78
84
|
// Prepared once: enqueue runs per channel per drain tick and re-preparing
|
|
79
85
|
// statements per call was measurable on backfill drains.
|
|
80
86
|
this.stmtInsertEvent = this.db.prepare(`INSERT OR IGNORE INTO owner_event_inbox_events (event_id, seen_at) VALUES (?, ?)`);
|
|
81
87
|
this.stmtInsertBatch = this.db.prepare(`INSERT INTO owner_event_inbox
|
|
82
88
|
(channel_key, event_ids_json, lines_json, activations_json, created_at)
|
|
83
89
|
VALUES (?, ?, ?, ?, ?)`);
|
|
84
|
-
this.stmtClaimSelect = this.db.prepare(`SELECT id, channel_key, event_ids_json, lines_json, activations_json, attempts
|
|
90
|
+
this.stmtClaimSelect = this.db.prepare(`SELECT id, channel_key, event_ids_json, lines_json, activations_json, attempts, created_at
|
|
85
91
|
FROM owner_event_inbox
|
|
86
92
|
WHERE status = 'pending' AND COALESCE(retry_after, 0) <= ?
|
|
87
93
|
ORDER BY id ASC LIMIT 1`);
|
|
88
94
|
this.stmtClaimUpdate = this.db.prepare(`UPDATE owner_event_inbox SET status = 'claimed', claimed_at = ?
|
|
89
95
|
WHERE id = ? AND status = 'pending'`);
|
|
90
|
-
this.stmtAck = this.db.prepare(`UPDATE owner_event_inbox SET status = 'acked', acked_at = ? WHERE id = ?`);
|
|
96
|
+
this.stmtAck = this.db.prepare(`UPDATE owner_event_inbox SET status = 'acked', acked_at = ?, unresolved_reason = ? WHERE id = ?`);
|
|
91
97
|
this.stmtRetry = this.db.prepare(`UPDATE owner_event_inbox
|
|
92
98
|
SET status = CASE WHEN attempts + 1 >= ${MAX_ATTEMPTS} THEN 'dead' ELSE 'pending' END,
|
|
93
99
|
attempts = attempts + 1, last_error = ?, claimed_at = NULL,
|
|
@@ -176,10 +182,20 @@ class OwnerEventInbox {
|
|
|
176
182
|
activations: JSON.parse(row.activations_json),
|
|
177
183
|
status: 'claimed',
|
|
178
184
|
attempts: row.attempts,
|
|
185
|
+
createdAt: row.created_at,
|
|
179
186
|
};
|
|
180
187
|
}
|
|
181
|
-
|
|
182
|
-
|
|
188
|
+
/** ACK a batch; `unresolvedReason` names why it completed without a ledger change. */
|
|
189
|
+
ack(id, unresolvedReason = null) {
|
|
190
|
+
this.stmtAck.run(this.now(), unresolvedReason, id);
|
|
191
|
+
}
|
|
192
|
+
/** Batches ACKed without a ledger change since `sinceMs`, newest first. */
|
|
193
|
+
unresolvedAcks(sinceMs = 0, limit = 200) {
|
|
194
|
+
return this.db
|
|
195
|
+
.prepare(`SELECT id, unresolved_reason, acked_at FROM owner_event_inbox
|
|
196
|
+
WHERE status = 'acked' AND unresolved_reason IS NOT NULL AND acked_at >= ?
|
|
197
|
+
ORDER BY acked_at DESC, id DESC LIMIT ?`)
|
|
198
|
+
.all(sinceMs, Math.min(Math.max(limit, 1), 1000)).map((row) => ({ id: row.id, reason: row.unresolved_reason, ackedAt: row.acked_at }));
|
|
183
199
|
}
|
|
184
200
|
/**
|
|
185
201
|
* Return a claim to pending, or park it dead after MAX_ATTEMPTS. Returns
|
|
@@ -202,7 +218,7 @@ class OwnerEventInbox {
|
|
|
202
218
|
// as dead (visible, bounded), and the dedupe table keeps a wide but
|
|
203
219
|
// finite horizon - no table here grows without bound.
|
|
204
220
|
const stalePending = this.db
|
|
205
|
-
.prepare(`SELECT id, channel_key, event_ids_json, lines_json, activations_json, attempts
|
|
221
|
+
.prepare(`SELECT id, channel_key, event_ids_json, lines_json, activations_json, attempts, created_at
|
|
206
222
|
FROM owner_event_inbox
|
|
207
223
|
WHERE status = 'pending' AND created_at <= ?
|
|
208
224
|
ORDER BY id ASC`)
|
|
@@ -212,7 +228,7 @@ class OwnerEventInbox {
|
|
|
212
228
|
this.stmtPruneEvents.run(now - EVENT_RETENTION_MS);
|
|
213
229
|
const cutoff = now - olderThanMs;
|
|
214
230
|
const dying = this.db
|
|
215
|
-
.prepare(`SELECT id, channel_key, event_ids_json, lines_json, activations_json, attempts
|
|
231
|
+
.prepare(`SELECT id, channel_key, event_ids_json, lines_json, activations_json, attempts, created_at
|
|
216
232
|
FROM owner_event_inbox
|
|
217
233
|
WHERE status = 'claimed' AND attempts + 1 >= ${MAX_ATTEMPTS}
|
|
218
234
|
AND COALESCE(claimed_at, 0) <= ?
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"owner-event-inbox.js","sourceRoot":"","sources":["../../src/operator/owner-event-inbox.ts"],"names":[],"mappings":";;;AAgBA,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,kBAAkB,GAAG,CAAC,GAAG,UAAU,CAAC;AAC1C;;;GAGG;AACH,MAAM,oBAAoB,GAAG,CAAC,GAAG,UAAU,CAAC;AAC5C;;;;;;GAMG;AACH,MAAM,kBAAkB,GAAG,EAAE,GAAG,UAAU,CAAC;AAC3C,MAAM,UAAU,GAAG,GAAG,CAAC,CAAC,wCAAwC;
|
|
1
|
+
{"version":3,"file":"owner-event-inbox.js","sourceRoot":"","sources":["../../src/operator/owner-event-inbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import type { Envelope } from '../envelope/types.js';
|
|
|
3
3
|
import type { OwnerEventBatch, OwnerEventInbox } from './owner-event-inbox.js';
|
|
4
4
|
import { buildOwnerEventEffectAuthority } from './owner-event-effects.js';
|
|
5
5
|
import { type OwnerEventHistoryMessage, type OwnerEventOutcome } from './owner-event-outcome.js';
|
|
6
|
-
type OwnerEventTerminalReceipt = Exclude<OwnerEventOutcome, {
|
|
6
|
+
export type OwnerEventTerminalReceipt = Exclude<OwnerEventOutcome, {
|
|
7
7
|
status: 'retry';
|
|
8
8
|
}>;
|
|
9
9
|
interface OwnerEventRunner {
|
|
@@ -27,7 +27,9 @@ export interface OwnerEventLoopDeps {
|
|
|
27
27
|
inbox: OwnerEventInbox;
|
|
28
28
|
runner: OwnerEventRunner;
|
|
29
29
|
agentContext: AgentContext;
|
|
30
|
-
buildPrompt: (batch: OwnerEventBatch) => Promise<string> | string;
|
|
30
|
+
buildPrompt: (batch: OwnerEventBatch, packet: string | null) => Promise<string> | string;
|
|
31
|
+
/** Host-compiled channel packet (serialized); null or a throw means "no packet". */
|
|
32
|
+
compilePacket?: (batch: OwnerEventBatch) => Promise<string | null>;
|
|
31
33
|
issueEnvelope: (batch: OwnerEventBatch) => Promise<Envelope>;
|
|
32
34
|
getNoUpdateMaxId: (scope: string) => number;
|
|
33
35
|
getTerminalReceipt?: (batch: OwnerEventBatch) => OwnerEventTerminalReceipt | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"owner-event-loop.d.ts","sourceRoot":"","sources":["../../src/operator/owner-event-loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EACvB,MAAM,0BAA0B,CAAC;AAElC,
|
|
1
|
+
{"version":3,"file":"owner-event-loop.d.ts","sourceRoot":"","sources":["../../src/operator/owner-event-loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,7 +49,17 @@ class OwnerEventLoop {
|
|
|
49
49
|
}
|
|
50
50
|
const noUpdateBefore = this.deps.getNoUpdateMaxId(scope);
|
|
51
51
|
try {
|
|
52
|
-
|
|
52
|
+
let packet = null;
|
|
53
|
+
if (this.deps.compilePacket) {
|
|
54
|
+
try {
|
|
55
|
+
packet = await this.deps.compilePacket(batch);
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
// The delta itself is the minimum evidence; receipts still gate completion.
|
|
59
|
+
this.deps.log(`[owner-event] packet compile failed for batch ${batch.id}: ${error instanceof Error ? error.message : String(error)}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const prompt = await this.deps.buildPrompt(batch, packet);
|
|
53
63
|
const envelope = await this.deps.issueEnvelope(batch);
|
|
54
64
|
const result = await this.deps.runner.run(prompt, {
|
|
55
65
|
sessionKey: `owner-event:${batch.channelKey}`,
|
|
@@ -86,10 +96,17 @@ class OwnerEventLoop {
|
|
|
86
96
|
this.deps.log(`[owner-event] batch ${batch.id} ${retry}: ${outcome.reason} (${batch.channelKey})`);
|
|
87
97
|
return 'failed';
|
|
88
98
|
}
|
|
89
|
-
|
|
99
|
+
// A send-only completion is allowed only behind the [decision] marker; the
|
|
100
|
+
// host records WHY it completed without a ledger change so it can be counted.
|
|
101
|
+
const unresolvedReason = outcome.status === 'acted' &&
|
|
102
|
+
outcome.ownerDecisionRequested &&
|
|
103
|
+
outcome.tools.every((tool) => tool === 'telegram_send')
|
|
104
|
+
? 'owner_decision_requested'
|
|
105
|
+
: null;
|
|
106
|
+
this.deps.inbox.ack(batch.id, unresolvedReason);
|
|
90
107
|
this.recordTriggerOutcomes(batch, 'succeeded');
|
|
91
108
|
processed += 1;
|
|
92
|
-
this.deps.log(`[owner-event] batch ${batch.id} ${outcome.status}${outcome.tools.length > 0 ? ` via ${outcome.tools.join(',')}` : ''}`);
|
|
109
|
+
this.deps.log(`[owner-event] batch ${batch.id} ${outcome.status}${outcome.tools.length > 0 ? ` via ${outcome.tools.join(',')}` : ''}${unresolvedReason ? ` unresolved_reason=${unresolvedReason}` : ''}`);
|
|
93
110
|
}
|
|
94
111
|
catch (error) {
|
|
95
112
|
const reason = error instanceof Error ? error.message : String(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"owner-event-loop.js","sourceRoot":"","sources":["../../src/operator/owner-event-loop.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"owner-event-loop.js","sourceRoot":"","sources":["../../src/operator/owner-event-loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,9 +12,7 @@ export interface OwnerEventHistoryMessage {
|
|
|
12
12
|
export type OwnerEventOutcome = {
|
|
13
13
|
status: 'acted';
|
|
14
14
|
tools: string[];
|
|
15
|
-
|
|
16
|
-
status: 'delegated';
|
|
17
|
-
tools: string[];
|
|
15
|
+
ownerDecisionRequested: boolean;
|
|
18
16
|
} | {
|
|
19
17
|
status: 'no_update';
|
|
20
18
|
tools: string[];
|
|
@@ -23,6 +21,8 @@ export type OwnerEventOutcome = {
|
|
|
23
21
|
tools: string[];
|
|
24
22
|
reason: string;
|
|
25
23
|
};
|
|
24
|
+
/** The marker that turns a send-only turn into a completed one: a question only the owner can answer. */
|
|
25
|
+
export declare const OWNER_DECISION_MARKER: RegExp;
|
|
26
26
|
export declare function classifyOwnerEventOutcome(input: {
|
|
27
27
|
history: ReadonlyArray<OwnerEventHistoryMessage>;
|
|
28
28
|
noUpdateRecorded: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"owner-event-outcome.d.ts","sourceRoot":"","sources":["../../src/operator/owner-event-outcome.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"owner-event-outcome.d.ts","sourceRoot":"","sources":["../../src/operator/owner-event-outcome.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,sBAAsB,EAAE,OAAO,CAAA;CAAE,GACrE;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GACxC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,yGAAyG;AACzG,eAAO,MAAM,qBAAqB,QAAsB,CAAC;AA8HzD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,OAAO,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAC;IACjD,gBAAgB,EAAE,OAAO,CAAC;CAC3B,GAAG,iBAAiB,CAoBpB"}
|
|
@@ -7,9 +7,23 @@
|
|
|
7
7
|
* host-authored root execution ledger.
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.OWNER_DECISION_MARKER = void 0;
|
|
10
11
|
exports.classifyOwnerEventOutcome = classifyOwnerEventOutcome;
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
/** The marker that turns a send-only turn into a completed one: a question only the owner can answer. */
|
|
13
|
+
exports.OWNER_DECISION_MARKER = /^\s*\[decision\]/i;
|
|
14
|
+
/**
|
|
15
|
+
* A batch is complete when it durably changed what the system knows or holds.
|
|
16
|
+
* Notification is not completion: a turn that only sends a Telegram line has
|
|
17
|
+
* moved nothing, and counting it produced 362 sends against a dead ledger.
|
|
18
|
+
*/
|
|
19
|
+
const LEDGER_EFFECT_TOOLS = new Set([
|
|
20
|
+
'task_create',
|
|
21
|
+
'task_update',
|
|
22
|
+
'mama_save',
|
|
23
|
+
'mama_update',
|
|
24
|
+
'drive_upload',
|
|
25
|
+
]);
|
|
26
|
+
const NOTIFY_TOOLS = new Set(['telegram_send']);
|
|
13
27
|
function normalizeToolName(name) {
|
|
14
28
|
const match = /^mcp__[A-Za-z0-9_-]+__(.+)$/.exec(name);
|
|
15
29
|
return match ? match[1] : name;
|
|
@@ -51,6 +65,44 @@ function nestedHostTools(value) {
|
|
|
51
65
|
return execution.success === true && typeof execution.name === 'string' ? [execution.name] : [];
|
|
52
66
|
});
|
|
53
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Did a SUCCESSFUL direct telegram_send carry the [decision] marker in the text it actually
|
|
70
|
+
* sent? Read from the tool_use input, never from the assistant's final prose: a run can say
|
|
71
|
+
* "[decision]" in its response while the message it delivered was a plain notification.
|
|
72
|
+
* Nested Code-Act sends carry no input in the host ledger and therefore never qualify.
|
|
73
|
+
*/
|
|
74
|
+
function sentOwnerDecision(history) {
|
|
75
|
+
const okResults = new Set();
|
|
76
|
+
for (const message of history) {
|
|
77
|
+
if (message.role !== 'user' || !Array.isArray(message.content))
|
|
78
|
+
continue;
|
|
79
|
+
for (const block of message.content) {
|
|
80
|
+
if (block.type !== 'tool_result' || typeof block.tool_use_id !== 'string')
|
|
81
|
+
continue;
|
|
82
|
+
if (successfulResult(block.content, block.is_error)) {
|
|
83
|
+
okResults.add(block.tool_use_id);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
for (const message of history) {
|
|
88
|
+
if (message.role !== 'assistant' || !Array.isArray(message.content))
|
|
89
|
+
continue;
|
|
90
|
+
for (const block of message.content) {
|
|
91
|
+
if (block.type !== 'tool_use' || typeof block.id !== 'string')
|
|
92
|
+
continue;
|
|
93
|
+
if (typeof block.name !== 'string' || normalizeToolName(block.name) !== 'telegram_send') {
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
if (!okResults.has(block.id))
|
|
97
|
+
continue;
|
|
98
|
+
const input = parseObject(block.input);
|
|
99
|
+
const text = input?.message;
|
|
100
|
+
if (typeof text === 'string' && exports.OWNER_DECISION_MARKER.test(text))
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
54
106
|
function executedTools(history) {
|
|
55
107
|
const results = new Map();
|
|
56
108
|
for (const message of history) {
|
|
@@ -91,18 +143,23 @@ function executedTools(history) {
|
|
|
91
143
|
}
|
|
92
144
|
function classifyOwnerEventOutcome(input) {
|
|
93
145
|
const tools = executedTools(input.history);
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
146
|
+
const ledger = tools.filter((tool) => LEDGER_EFFECT_TOOLS.has(tool));
|
|
147
|
+
const notified = tools.filter((tool) => NOTIFY_TOOLS.has(tool));
|
|
148
|
+
const ownerDecisionRequested = notified.length > 0 && sentOwnerDecision(input.history);
|
|
149
|
+
if (ledger.length > 0) {
|
|
150
|
+
return { status: 'acted', tools: [...ledger, ...notified], ownerDecisionRequested };
|
|
151
|
+
}
|
|
152
|
+
if (ownerDecisionRequested) {
|
|
153
|
+
return { status: 'acted', tools: notified, ownerDecisionRequested: true };
|
|
154
|
+
}
|
|
100
155
|
if (input.noUpdateRecorded)
|
|
101
156
|
return { status: 'no_update', tools: [] };
|
|
102
157
|
return {
|
|
103
158
|
status: 'retry',
|
|
104
159
|
tools: [],
|
|
105
|
-
reason:
|
|
160
|
+
reason: notified.length > 0
|
|
161
|
+
? 'notification without a ledger change'
|
|
162
|
+
: 'no durable action or exact no-update receipt',
|
|
106
163
|
};
|
|
107
164
|
}
|
|
108
165
|
//# sourceMappingURL=owner-event-outcome.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"owner-event-outcome.js","sourceRoot":"","sources":["../../src/operator/owner-event-outcome.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG
|
|
1
|
+
{"version":3,"file":"owner-event-outcome.js","sourceRoot":"","sources":["../../src/operator/owner-event-outcome.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"owner-event-policy.d.ts","sourceRoot":"","sources":["../../src/operator/owner-event-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"owner-event-policy.d.ts","sourceRoot":"","sources":["../../src/operator/owner-event-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AA8BxF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,QAAQ,EAAE,KAAK,GAAG,SAAS,GAAG,UAAU,CAAC;IACzC,YAAY,EAAE,OAAO,CAAC;CACvB,GAAG;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAIzD;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,UAAU,CAAC;IACtB,sBAAsB,EAAE,sBAAsB,CAAC;CAChD,GAAG,YAAY,CA2Bf"}
|
|
@@ -2,22 +2,32 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.resolveOwnerEventExecution = resolveOwnerEventExecution;
|
|
4
4
|
exports.buildOwnerEventAgentContext = buildOwnerEventAgentContext;
|
|
5
|
+
/**
|
|
6
|
+
* One MAMA (2026-09-04): the event turn holds the owner console grant minus the
|
|
7
|
+
* entries below, each with the reason it is not "minus nothing". Ledger and memory
|
|
8
|
+
* tools (task_create/task_update/mama_save/mama_update) are deliberately NOT here
|
|
9
|
+
* any more - blocking them since v0.37.0 is what left the owner ledger without a
|
|
10
|
+
* single agent-authored task for two weeks.
|
|
11
|
+
*/
|
|
5
12
|
const OWNER_EVENT_BLOCKED_TOOLS = new Set([
|
|
13
|
+
// administration: owner-authored chat only
|
|
6
14
|
'member_register',
|
|
7
15
|
'member_suspend',
|
|
8
16
|
'member_offboard',
|
|
9
17
|
'member_scope_grant',
|
|
10
18
|
'member_scope_revoke',
|
|
19
|
+
// an event turn is driven by UNTRUSTED connector content; letting it rewrite the
|
|
20
|
+
// one operating brief is a prompt-injection amplifier. Brief edits stay on chat.
|
|
11
21
|
'console_brief_update',
|
|
12
|
-
|
|
13
|
-
'task_update',
|
|
14
|
-
'mama_save',
|
|
15
|
-
'mama_update',
|
|
16
|
-
'drive_translate_conti',
|
|
17
|
-
'obsidian',
|
|
18
|
-
'report_publish',
|
|
22
|
+
// fire-and-forget into another model turn = a second judgment surface
|
|
19
23
|
'report_request',
|
|
20
|
-
|
|
24
|
+
// not in the completion set (owner-event-outcome.ts) and not receipted anywhere the
|
|
25
|
+
// crash-recovery resolver can read: `obsidian` covers reads as well as writes, and
|
|
26
|
+
// drive_translate_conti uploads outside the owner-event effect ledger, so a retry
|
|
27
|
+
// would upload again. Granting a durable-looking tool that can never complete the
|
|
28
|
+
// turn only repeats its side effect until the batch dies.
|
|
29
|
+
'obsidian',
|
|
30
|
+
'drive_translate_conti',
|
|
21
31
|
]);
|
|
22
32
|
function resolveOwnerEventExecution(input) {
|
|
23
33
|
return input.issuance !== 'off' && input.hasAuthority
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"owner-event-policy.js","sourceRoot":"","sources":["../../src/operator/owner-event-policy.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"owner-event-policy.js","sourceRoot":"","sources":["../../src/operator/owner-event-policy.ts"],"names":[],"mappings":";;AAiCA,gEAOC;AAED,kEAgCC;AArED;;;;;;GAMG;AACH,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC;IACxC,2CAA2C;IAC3C,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;IACjB,oBAAoB;IACpB,qBAAqB;IACrB,iFAAiF;IACjF,iFAAiF;IACjF,sBAAsB;IACtB,sEAAsE;IACtE,gBAAgB;IAChB,oFAAoF;IACpF,mFAAmF;IACnF,kFAAkF;IAClF,kFAAkF;IAClF,0DAA0D;IAC1D,UAAU;IACV,uBAAuB;CACxB,CAAC,CAAC;AAEH,SAAgB,0BAA0B,CAAC,KAG1C;IACC,OAAO,KAAK,CAAC,QAAQ,KAAK,KAAK,IAAI,KAAK,CAAC,YAAY;QACnD,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;QACnB,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,yCAAyC,EAAE,CAAC;AAC5E,CAAC;AAED,SAAgB,2BAA2B,CAAC,KAK3C;IACC,MAAM,SAAS,GAAG,KAAK,CAAC,sBAAsB,CAAC,WAAW,CAAC,eAAe,EAAE;QAC1E,GAAG,KAAK,CAAC,SAAS;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,YAAY,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,MAAM,CACxF,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,CAC/C;QACD,YAAY,EAAE;YACZ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,GAAG,yBAAyB,CAAC,CAAC;SACpF;QACD,YAAY,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;KACxD,CAAC,CAAC;IACH,OAAO;QACL,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,eAAe;QACzB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE;YACP,SAAS,EAAE,aAAa;YACxB,SAAS,EAAE,aAAa;YACxB,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB;QACD,YAAY,EAAE,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC;QACzC,WAAW,EAAE,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,IAAI,EAAE,CAAC;QAC/E,IAAI,EAAE,CAAC;QACP,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC;AACJ,CAAC"}
|
|
@@ -4,6 +4,8 @@ export interface OwnerEventPromptInput {
|
|
|
4
4
|
ownerBrief: string;
|
|
5
5
|
skillContent?: string | null;
|
|
6
6
|
ownerTelegramChatId?: string | null;
|
|
7
|
+
/** Serialized OwnerReportContextV1 for this channel, compiled by the host. */
|
|
8
|
+
packet?: string | null;
|
|
7
9
|
}
|
|
8
10
|
/** Build one event turn for the same MAMA owner agent used by the owner console. */
|
|
9
11
|
export declare function buildOwnerEventPrompt(input: OwnerEventPromptInput): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"owner-event-prompt.d.ts","sourceRoot":"","sources":["../../src/operator/owner-event-prompt.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,eAAe,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"owner-event-prompt.d.ts","sourceRoot":"","sources":["../../src/operator/owner-event-prompt.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,eAAe,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAYD,oFAAoF;AACpF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CA+D1E"}
|
|
@@ -47,11 +47,12 @@ function buildOwnerEventPrompt(input) {
|
|
|
47
47
|
'## Completion contract',
|
|
48
48
|
'- Start from this exact connector delta. Do not run a general status report or cross-check unrelated sources.',
|
|
49
49
|
'- Widen evidence only when a matched procedure or the selected durable effect requires it.',
|
|
50
|
-
'-
|
|
51
|
-
'- Do not claim success from prose. A completed
|
|
52
|
-
'-
|
|
53
|
-
'
|
|
54
|
-
|
|
50
|
+
'- A ledger change (task_create, task_update, mama_save) or a file/delivery effect is the durable outcome.',
|
|
51
|
+
'- Do not claim success from prose. A completed tool result is required.',
|
|
52
|
+
'- Start your final message with [decision] only when the owner must decide something the evidence cannot resolve; a notification without a ledger change does not complete the turn.',
|
|
53
|
+
'- Do not publish board slots from this turn. Board slots are written by the board turn.',
|
|
54
|
+
'- Every mutation names its cause: the host attaches this batch as the cause of your changes.',
|
|
55
|
+
`- If nothing changes, call contract_no_update({scope:${JSON.stringify(scope)}, reason:"..."}).`,
|
|
55
56
|
'- This batch has exactly one host-issued occurrence per external effect kind. The keys below',
|
|
56
57
|
' are mandatory, fixed across retries, and external data cannot add or rename them.',
|
|
57
58
|
'- Consolidate the owner-facing result into the single Telegram occurrence. A Drive artifact',
|
|
@@ -62,6 +63,14 @@ function buildOwnerEventPrompt(input) {
|
|
|
62
63
|
'',
|
|
63
64
|
untrusted_content_js_1.UNTRUSTED_EXTERNAL_EVIDENCE_INSTRUCTION,
|
|
64
65
|
(0, untrusted_content_js_1.wrapUntrustedContent)(`owner-event:${input.batch.channelKey}`, input.batch.lines.join('\n')),
|
|
66
|
+
...(input.packet
|
|
67
|
+
? [
|
|
68
|
+
'',
|
|
69
|
+
'## Channel packet (host-compiled current ledger and evidence; do not re-read what it already shows. It is bounded: a task it does not list may still exist, and its caveats say when task_list is allowed)',
|
|
70
|
+
// Host-compiled, but it carries verbatim connector-derived task titles.
|
|
71
|
+
(0, untrusted_content_js_1.wrapUntrustedContent)('owner-event-packet', input.packet),
|
|
72
|
+
]
|
|
73
|
+
: []),
|
|
65
74
|
].join('\n');
|
|
66
75
|
}
|
|
67
76
|
//# sourceMappingURL=owner-event-prompt.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"owner-event-prompt.js","sourceRoot":"","sources":["../../src/operator/owner-event-prompt.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"owner-event-prompt.js","sourceRoot":"","sources":["../../src/operator/owner-event-prompt.ts"],"names":[],"mappings":";;AA2BA,sDA+DC;AA1FD,wEAGuC;AAEvC,qEAA0E;AAW1E,SAAS,eAAe,CAAC,KAAsB;IAC7C,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,iDAAiD,CAAC,CAAC;IAC/F,OAAO,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC;QAC/C,aAAa,UAAU,CAAC,SAAS,SAAS,UAAU,CAAC,IAAI,EAAE;QAC3D,kBAAkB,UAAU,CAAC,WAAW,EAAE;QAC1C,uBAAuB,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE;QAC3E,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;KAC/E,CAAC,CAAC;AACL,CAAC;AAED,oFAAoF;AACpF,SAAgB,qBAAqB,CAAC,KAA4B;IAChE,MAAM,KAAK,GAAG,eAAe,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IAC9C,MAAM,eAAe,GAAG,IAAA,uDAA8B,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,cAAc,GAAG;QACrB,gCAAgC,eAAe,CAAC,UAAU,CAAC,aAAa,EAAE;QAC1E,6BAA6B,eAAe,CAAC,UAAU,CAAC,YAAY,EAAE;KACvE,CAAC;IACF,MAAM,WAAW,GAAG,KAAK,CAAC,mBAAmB;QAC3C,CAAC,CAAC;YACE,mEAAmE;YACnE,0BAA0B,IAAI,CAAC,SAAS,CACtC,KAAK,CAAC,mBAAmB,CAC1B,iCAAiC,IAAI,CAAC,SAAS,CAC9C,eAAe,CAAC,UAAU,CAAC,aAAa,CACzC,IAAI;SACN;QACH,CAAC,CAAC,CAAC,4DAA4D,CAAC,CAAC;IAEnE,OAAO;QACL,yBAAyB;QACzB,+EAA+E;QAC/E,sFAAsF;QACtF,sFAAsF;QACtF,EAAE;QACF,kCAAkC;QAClC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,SAAS;QACpC,EAAE;QACF,4BAA4B;QAC5B,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,QAAQ;QACtC,EAAE;QACF,gCAAgC;QAChC,yFAAyF;QACzF,kEAAkE;QAClE,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,EAAE;QACF,wBAAwB;QACxB,+GAA+G;QAC/G,4FAA4F;QAC5F,2GAA2G;QAC3G,yEAAyE;QACzE,sLAAsL;QACtL,yFAAyF;QACzF,8FAA8F;QAC9F,wDAAwD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,mBAAmB;QAChG,8FAA8F;QAC9F,qFAAqF;QACrF,6FAA6F;QAC7F,2FAA2F;QAC3F,GAAG,cAAc;QACjB,GAAG,WAAW;QACd,oDAAoD;QACpD,EAAE;QACF,8DAAuC;QACvC,IAAA,2CAAoB,EAAC,eAAe,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3F,GAAG,CAAC,KAAK,CAAC,MAAM;YACd,CAAC,CAAC;gBACE,EAAE;gBACF,4MAA4M;gBAC5M,wEAAwE;gBACxE,IAAA,2CAAoB,EAAC,oBAAoB,EAAE,KAAK,CAAC,MAAM,CAAC;aACzD;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -156,4 +156,16 @@ export declare function compileOwnerReportContext(input: {
|
|
|
156
156
|
windowEvidence: ReportWindowEvidence;
|
|
157
157
|
since: string;
|
|
158
158
|
}, deps: OwnerReportContextDeps): Promise<OwnerReportContextV1>;
|
|
159
|
+
/**
|
|
160
|
+
* One MAMA (Phase 1 Task 3): the event turn starts from the same host-compiled
|
|
161
|
+
* packet as the report, narrowed to its channel. The read scope MUST be the
|
|
162
|
+
* owner-event scope the run's envelope holds - reading under another principal
|
|
163
|
+
* is the mismatch that fails the envelope scope audit.
|
|
164
|
+
*/
|
|
165
|
+
export declare function compileChannelPacket(input: {
|
|
166
|
+
readScope: OwnerReportReadScope;
|
|
167
|
+
channelKey: string;
|
|
168
|
+
eventIds: string[];
|
|
169
|
+
since: string;
|
|
170
|
+
}, deps: OwnerReportContextDeps): Promise<OwnerReportContextV1>;
|
|
159
171
|
//# sourceMappingURL=report-context.d.ts.map
|