@jungjaehoon/mama-os 0.49.2 → 0.50.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/dist/agent/agent-loop.d.ts +5 -1
- package/dist/agent/agent-loop.d.ts.map +1 -1
- package/dist/agent/agent-loop.js +24 -4
- package/dist/agent/agent-loop.js.map +1 -1
- package/dist/agent/code-act/host-bridge.d.ts.map +1 -1
- package/dist/agent/code-act/host-bridge.js +39 -7
- package/dist/agent/code-act/host-bridge.js.map +1 -1
- package/dist/agent/codex-app-server-process.d.ts.map +1 -1
- package/dist/agent/codex-app-server-process.js +37 -0
- package/dist/agent/codex-app-server-process.js.map +1 -1
- package/dist/agent/gateway-tool-executor.d.ts +17 -6
- package/dist/agent/gateway-tool-executor.d.ts.map +1 -1
- package/dist/agent/gateway-tool-executor.js +512 -143
- package/dist/agent/gateway-tool-executor.js.map +1 -1
- package/dist/agent/gateway-tools.md +7 -6
- package/dist/agent/native-effect-observer.d.ts +19 -0
- package/dist/agent/native-effect-observer.d.ts.map +1 -0
- package/dist/agent/native-effect-observer.js +70 -0
- package/dist/agent/native-effect-observer.js.map +1 -0
- package/dist/agent/persistent-cli-process.d.ts.map +1 -1
- package/dist/agent/persistent-cli-process.js +6 -1
- package/dist/agent/persistent-cli-process.js.map +1 -1
- package/dist/agent/tool-registry.d.ts.map +1 -1
- package/dist/agent/tool-registry.js +15 -8
- package/dist/agent/tool-registry.js.map +1 -1
- package/dist/agent/types.d.ts +8 -2
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/api/report-handler.d.ts +19 -3
- package/dist/api/report-handler.d.ts.map +1 -1
- package/dist/api/report-handler.js +123 -17
- package/dist/api/report-handler.js.map +1 -1
- package/dist/api/report-persistence.d.ts +3 -3
- package/dist/api/report-persistence.d.ts.map +1 -1
- package/dist/api/report-persistence.js +11 -21
- package/dist/api/report-persistence.js.map +1 -1
- package/dist/cli/commands/start.d.ts +4 -0
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +49 -157
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/runtime/agent-loop-init.d.ts.map +1 -1
- package/dist/cli/runtime/agent-loop-init.js +1 -0
- package/dist/cli/runtime/agent-loop-init.js.map +1 -1
- package/dist/cli/runtime/api-routes-init.d.ts +5 -19
- package/dist/cli/runtime/api-routes-init.d.ts.map +1 -1
- package/dist/cli/runtime/api-routes-init.js +7 -79
- package/dist/cli/runtime/api-routes-init.js.map +1 -1
- package/dist/db/migrations/operator-owner-action-candidates.d.ts +19 -0
- package/dist/db/migrations/operator-owner-action-candidates.d.ts.map +1 -0
- package/dist/db/migrations/operator-owner-action-candidates.js +254 -0
- package/dist/db/migrations/operator-owner-action-candidates.js.map +1 -0
- package/dist/db/migrations/operator-task-external-lifecycle.d.ts +9 -0
- package/dist/db/migrations/operator-task-external-lifecycle.d.ts.map +1 -1
- package/dist/db/migrations/operator-task-external-lifecycle.js +52 -22
- package/dist/db/migrations/operator-task-external-lifecycle.js.map +1 -1
- package/dist/db/migrations/operator-task-review-lifecycle.d.ts.map +1 -1
- package/dist/db/migrations/operator-task-review-lifecycle.js +3 -0
- package/dist/db/migrations/operator-task-review-lifecycle.js.map +1 -1
- package/dist/db/migrations/owner-action-effects.d.ts +18 -0
- package/dist/db/migrations/owner-action-effects.d.ts.map +1 -0
- package/dist/db/migrations/owner-action-effects.js +111 -0
- package/dist/db/migrations/owner-action-effects.js.map +1 -0
- package/dist/gateways/message-router.d.ts.map +1 -1
- package/dist/gateways/message-router.js +14 -4
- package/dist/gateways/message-router.js.map +1 -1
- package/dist/gateways/telegram-text-entities.d.ts +99 -0
- package/dist/gateways/telegram-text-entities.d.ts.map +1 -0
- package/dist/gateways/telegram-text-entities.js +189 -0
- package/dist/gateways/telegram-text-entities.js.map +1 -0
- package/dist/gateways/telegram.d.ts.map +1 -1
- package/dist/gateways/telegram.js +13 -2
- package/dist/gateways/telegram.js.map +1 -1
- package/dist/gateways/types.d.ts +8 -0
- package/dist/gateways/types.d.ts.map +1 -1
- package/dist/operator/board-read-views.d.ts +9 -4
- package/dist/operator/board-read-views.d.ts.map +1 -1
- package/dist/operator/board-read-views.js +11 -0
- package/dist/operator/board-read-views.js.map +1 -1
- package/dist/operator/external-lifecycle-candidates.d.ts +15 -1
- package/dist/operator/external-lifecycle-candidates.d.ts.map +1 -1
- package/dist/operator/external-lifecycle-candidates.js +164 -0
- package/dist/operator/external-lifecycle-candidates.js.map +1 -1
- package/dist/operator/external-lifecycle-discovery.d.ts +61 -0
- package/dist/operator/external-lifecycle-discovery.d.ts.map +1 -0
- package/dist/operator/external-lifecycle-discovery.js +103 -0
- package/dist/operator/external-lifecycle-discovery.js.map +1 -0
- package/dist/operator/external-lifecycle.d.ts +23 -0
- package/dist/operator/external-lifecycle.d.ts.map +1 -1
- package/dist/operator/owner-action-effects.d.ts +101 -0
- package/dist/operator/owner-action-effects.d.ts.map +1 -0
- package/dist/operator/owner-action-effects.js +335 -0
- package/dist/operator/owner-action-effects.js.map +1 -0
- package/dist/operator/owner-event-inbox.d.ts +1 -0
- package/dist/operator/owner-event-inbox.d.ts.map +1 -1
- package/dist/operator/owner-event-inbox.js +6 -0
- package/dist/operator/owner-event-inbox.js.map +1 -1
- package/dist/operator/owner-event-loop.d.ts +3 -0
- package/dist/operator/owner-event-loop.d.ts.map +1 -1
- package/dist/operator/owner-event-loop.js +34 -0
- package/dist/operator/owner-event-loop.js.map +1 -1
- package/dist/operator/owner-event-outcome.d.ts.map +1 -1
- package/dist/operator/owner-event-outcome.js +6 -0
- 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 +2 -26
- package/dist/operator/owner-event-policy.js.map +1 -1
- package/dist/operator/owner-event-prompt.d.ts.map +1 -1
- package/dist/operator/owner-event-prompt.js +2 -5
- package/dist/operator/owner-event-prompt.js.map +1 -1
- package/dist/operator/task-ledger.d.ts +93 -14
- package/dist/operator/task-ledger.d.ts.map +1 -1
- package/dist/operator/task-ledger.js +430 -103
- package/dist/operator/task-ledger.js.map +1 -1
- package/dist/operator/temporal-reconcile.d.ts.map +1 -1
- package/dist/operator/temporal-reconcile.js +6 -2
- package/dist/operator/temporal-reconcile.js.map +1 -1
- package/dist/operator/workorder-consumer.d.ts +2 -0
- package/dist/operator/workorder-consumer.d.ts.map +1 -1
- package/dist/operator/workorder-consumer.js +20 -5
- package/dist/operator/workorder-consumer.js.map +1 -1
- package/dist/scheduler/heartbeat.d.ts.map +1 -1
- package/dist/scheduler/heartbeat.js +1 -0
- package/dist/scheduler/heartbeat.js.map +1 -1
- package/dist/sqlite.d.ts +1 -1
- package/dist/sqlite.d.ts.map +1 -1
- package/dist/sqlite.js +3 -2
- package/dist/sqlite.js.map +1 -1
- package/dist/wiki/wiki-read.d.ts +2 -1
- package/dist/wiki/wiki-read.d.ts.map +1 -1
- package/dist/wiki/wiki-read.js +13 -2
- package/dist/wiki/wiki-read.js.map +1 -1
- package/dist/wiki/wiki-turn-contract.js +1 -1
- package/dist/wiki/wiki-turn-contract.js.map +1 -1
- package/package.json +1 -1
- package/public/viewer/operator/operator.js +3 -1
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EXTERNAL_LIFECYCLE_RECEIPTS_COLUMNS_SQL = exports.EXTERNAL_BINDING_RECEIPTS_COLUMNS_SQL = exports.EXTERNAL_TASK_BINDINGS_COLUMNS_SQL = void 0;
|
|
3
4
|
exports.applyOperatorTaskExternalLifecycleMigration = applyOperatorTaskExternalLifecycleMigration;
|
|
4
5
|
/**
|
|
5
6
|
* External lifecycle storage is installed inside TaskLedger's migration
|
|
6
7
|
* transaction. It intentionally does not infer bindings from legacy task
|
|
7
8
|
* provenance: only a receipted, candidate-bound decision can create one.
|
|
8
9
|
*/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Current column shapes (Task B2). A Board attempt id is optional audit
|
|
12
|
+
* metadata: rows may instead carry a verified origin run, owner scope and
|
|
13
|
+
* envelope (CHECK). Legacy NOT NULL tables are rebuilt to this shape by
|
|
14
|
+
* `applyOperatorOwnerActionCandidatesMigration`, which runs after this one.
|
|
15
|
+
*/
|
|
16
|
+
exports.EXTERNAL_TASK_BINDINGS_COLUMNS_SQL = `
|
|
12
17
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
13
18
|
revision INTEGER NOT NULL DEFAULT 1 CHECK (revision >= 1),
|
|
14
19
|
task_id INTEGER NOT NULL REFERENCES operator_tasks(id),
|
|
@@ -16,21 +21,30 @@ function applyOperatorTaskExternalLifecycleMigration(db) {
|
|
|
16
21
|
source_type TEXT NOT NULL CHECK (source_type = 'kanban_card'),
|
|
17
22
|
external_source_id TEXT NOT NULL,
|
|
18
23
|
last_observation_seq INTEGER NOT NULL CHECK (last_observation_seq >= 1),
|
|
19
|
-
created_by_attempt_id INTEGER
|
|
24
|
+
created_by_attempt_id INTEGER REFERENCES operator_tasks(id),
|
|
25
|
+
created_by_run_id TEXT,
|
|
26
|
+
created_by_owner_scope TEXT,
|
|
27
|
+
created_by_envelope_hash TEXT,
|
|
20
28
|
active INTEGER NOT NULL DEFAULT 1 CHECK (active IN (0, 1)),
|
|
21
29
|
created_at INTEGER NOT NULL,
|
|
22
|
-
updated_at INTEGER NOT NULL
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
updated_at INTEGER NOT NULL,
|
|
31
|
+
CHECK (
|
|
32
|
+
created_by_attempt_id IS NOT NULL
|
|
33
|
+
OR (created_by_run_id IS NOT NULL
|
|
34
|
+
AND created_by_owner_scope IS NOT NULL
|
|
35
|
+
AND created_by_envelope_hash IS NOT NULL)
|
|
36
|
+
)`;
|
|
37
|
+
const RECEIPT_ORIGIN_CHECK_SQL = `
|
|
38
|
+
CHECK (
|
|
39
|
+
workorder_attempt_id IS NOT NULL
|
|
40
|
+
OR (origin_run_id IS NOT NULL
|
|
41
|
+
AND origin_owner_scope IS NOT NULL
|
|
42
|
+
AND origin_envelope_hash IS NOT NULL)
|
|
43
|
+
)`;
|
|
44
|
+
exports.EXTERNAL_BINDING_RECEIPTS_COLUMNS_SQL = `
|
|
31
45
|
candidate_id TEXT PRIMARY KEY,
|
|
32
46
|
decision TEXT NOT NULL CHECK (decision IN ('bind','decline')),
|
|
33
|
-
workorder_attempt_id INTEGER
|
|
47
|
+
workorder_attempt_id INTEGER REFERENCES operator_tasks(id),
|
|
34
48
|
task_id INTEGER NOT NULL REFERENCES operator_tasks(id),
|
|
35
49
|
event_id TEXT NOT NULL,
|
|
36
50
|
connector TEXT NOT NULL CHECK (connector = 'kagemusha'),
|
|
@@ -47,15 +61,13 @@ function applyOperatorTaskExternalLifecycleMigration(db) {
|
|
|
47
61
|
binding_id INTEGER REFERENCES operator_external_task_bindings(id),
|
|
48
62
|
origin_run_id TEXT,
|
|
49
63
|
origin_cause_event_ids TEXT NOT NULL,
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
CREATE TABLE IF NOT EXISTS operator_external_lifecycle_receipts (
|
|
64
|
+
origin_owner_scope TEXT,
|
|
65
|
+
origin_envelope_hash TEXT,
|
|
66
|
+
created_at INTEGER NOT NULL,${RECEIPT_ORIGIN_CHECK_SQL}`;
|
|
67
|
+
exports.EXTERNAL_LIFECYCLE_RECEIPTS_COLUMNS_SQL = `
|
|
56
68
|
candidate_id TEXT PRIMARY KEY,
|
|
57
69
|
decision TEXT NOT NULL CHECK (decision IN ('apply','retain')),
|
|
58
|
-
workorder_attempt_id INTEGER
|
|
70
|
+
workorder_attempt_id INTEGER REFERENCES operator_tasks(id),
|
|
59
71
|
task_id INTEGER NOT NULL REFERENCES operator_tasks(id),
|
|
60
72
|
event_id TEXT NOT NULL,
|
|
61
73
|
connector TEXT NOT NULL CHECK (connector = 'kagemusha'),
|
|
@@ -74,7 +86,25 @@ function applyOperatorTaskExternalLifecycleMigration(db) {
|
|
|
74
86
|
reason TEXT NOT NULL,
|
|
75
87
|
origin_run_id TEXT,
|
|
76
88
|
origin_cause_event_ids TEXT NOT NULL,
|
|
77
|
-
|
|
89
|
+
origin_owner_scope TEXT,
|
|
90
|
+
origin_envelope_hash TEXT,
|
|
91
|
+
created_at INTEGER NOT NULL,${RECEIPT_ORIGIN_CHECK_SQL}`;
|
|
92
|
+
function applyOperatorTaskExternalLifecycleMigration(db) {
|
|
93
|
+
db.exec(`
|
|
94
|
+
CREATE TABLE IF NOT EXISTS operator_external_task_bindings (${exports.EXTERNAL_TASK_BINDINGS_COLUMNS_SQL}
|
|
95
|
+
);
|
|
96
|
+
|
|
97
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_operator_external_binding_active_task
|
|
98
|
+
ON operator_external_task_bindings(task_id) WHERE active = 1;
|
|
99
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_operator_external_binding_active_external
|
|
100
|
+
ON operator_external_task_bindings(connector, source_type, external_source_id) WHERE active = 1;
|
|
101
|
+
|
|
102
|
+
CREATE TABLE IF NOT EXISTS operator_external_binding_receipts (${exports.EXTERNAL_BINDING_RECEIPTS_COLUMNS_SQL}
|
|
103
|
+
);
|
|
104
|
+
CREATE INDEX IF NOT EXISTS idx_operator_external_binding_receipts_attempt
|
|
105
|
+
ON operator_external_binding_receipts(workorder_attempt_id, candidate_id);
|
|
106
|
+
|
|
107
|
+
CREATE TABLE IF NOT EXISTS operator_external_lifecycle_receipts (${exports.EXTERNAL_LIFECYCLE_RECEIPTS_COLUMNS_SQL}
|
|
78
108
|
);
|
|
79
109
|
CREATE INDEX IF NOT EXISTS idx_operator_external_lifecycle_receipts_attempt
|
|
80
110
|
ON operator_external_lifecycle_receipts(workorder_attempt_id, candidate_id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operator-task-external-lifecycle.js","sourceRoot":"","sources":["../../../src/db/migrations/operator-task-external-lifecycle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"operator-task-external-lifecycle.js","sourceRoot":"","sources":["../../../src/db/migrations/operator-task-external-lifecycle.ts"],"names":[],"mappings":";;;AA6FA,kGAsHC;AAjND;;;;GAIG;AACH;;;;;GAKG;AACU,QAAA,kCAAkC,GAAG;;;;;;;;;;;;;;;;;;;;QAoB1C,CAAC;AAET,MAAM,wBAAwB,GAAG;;;;;;QAMzB,CAAC;AAEI,QAAA,qCAAqC,GAAG;;;;;;;;;;;;;;;;;;;;;;oCAsBjB,wBAAwB,EAAE,CAAC;AAElD,QAAA,uCAAuC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;oCAwBnB,wBAAwB,EAAE,CAAC;AAE/D,SAAgB,2CAA2C,CAAC,EAAkB;IAC5E,EAAE,CAAC,IAAI,CAAC;kEACwD,0CAAkC;;;;;;;;qEAQ/B,6CAAqC;;;;;uEAKnC,+CAAuC;;;;;;;;;;GAU3G,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,EAAE;SAClB,OAAO,CACN;;;;eAIS,CACV;SACA,GAAG,EAAqC,CAAC;IAC5C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,0EAA0E,UAAU,CAAC,CAAC,CAAE,CAAC,YAAY,GAAG,CACzG,CAAC;IACJ,CAAC;IAED,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;GAUP,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,EAAE;SACpB,OAAO,CACN;;;;;;;;;eASS,CACV;SACA,GAAG,EAAqC,CAAC;IAC5C,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,qEAAqE,YAAY,CAAC,CAAC,CAAE,CAAC,YAAY,GAAG,CACtG,CAAC;IACJ,CAAC;IAED,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CP,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operator-task-review-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/operator-task-review-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,sFAAsF;AACtF,wBAAgB,yCAAyC,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"operator-task-review-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/operator-task-review-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,sFAAsF;AACtF,wBAAgB,yCAAyC,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAelF"}
|
|
@@ -10,5 +10,8 @@ function applyOperatorTaskReviewLifecycleMigration(db) {
|
|
|
10
10
|
if (!columns.has('review_anchor_event_id')) {
|
|
11
11
|
db.exec('ALTER TABLE operator_tasks ADD COLUMN review_anchor_event_id TEXT');
|
|
12
12
|
}
|
|
13
|
+
if (!columns.has('review_anchor_source_channel')) {
|
|
14
|
+
db.exec('ALTER TABLE operator_tasks ADD COLUMN review_anchor_source_channel TEXT');
|
|
15
|
+
}
|
|
13
16
|
}
|
|
14
17
|
//# sourceMappingURL=operator-task-review-lifecycle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operator-task-review-lifecycle.js","sourceRoot":"","sources":["../../../src/db/migrations/operator-task-review-lifecycle.ts"],"names":[],"mappings":";;AAGA,
|
|
1
|
+
{"version":3,"file":"operator-task-review-lifecycle.js","sourceRoot":"","sources":["../../../src/db/migrations/operator-task-review-lifecycle.ts"],"names":[],"mappings":";;AAGA,8FAeC;AAhBD,sFAAsF;AACtF,SAAgB,yCAAyC,CAAC,EAAkB;IAC1E,MAAM,OAAO,GAAG,IAAI,GAAG,CACpB,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,EAA8B,CAAC,GAAG,CACpF,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CACxB,CACF,CAAC;IACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACtC,EAAE,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE,CAAC;QAC3C,EAAE,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,EAAE,CAAC;QACjD,EAAE,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;IACrF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { SQLiteDatabase } from '../../sqlite.js';
|
|
2
|
+
/**
|
|
3
|
+
* Additive storage for input-independent owner action receipts (Task E).
|
|
4
|
+
*
|
|
5
|
+
* One row per (owner namespace, host-derived occurrence, logical action). The
|
|
6
|
+
* row is reserved BEFORE the effect runs and can only move
|
|
7
|
+
* transmitting -> unknown | confirmed; confirmed is final. The originating
|
|
8
|
+
* model run / envelope are audit metadata: a later authorized attempt of the
|
|
9
|
+
* same occurrence reconciles this row instead of creating another effect.
|
|
10
|
+
*
|
|
11
|
+
* This table is separate from the legacy integer batch-keyed
|
|
12
|
+
* `owner_event_effects` table, which is neither read, altered, nor migrated
|
|
13
|
+
* here. Nothing in this migration is destructive; it is safe to run on every
|
|
14
|
+
* open, including on a database that already carries the table.
|
|
15
|
+
*/
|
|
16
|
+
export declare const OWNER_ACTION_EFFECTS_TABLE = "owner_action_effects";
|
|
17
|
+
export declare function applyOwnerActionEffectsMigration(db: SQLiteDatabase): void;
|
|
18
|
+
//# sourceMappingURL=owner-action-effects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"owner-action-effects.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/owner-action-effects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,0BAA0B,yBAAyB,CAAC;AAoBjE,wBAAgB,gCAAgC,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAsFzE"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OWNER_ACTION_EFFECTS_TABLE = void 0;
|
|
4
|
+
exports.applyOwnerActionEffectsMigration = applyOwnerActionEffectsMigration;
|
|
5
|
+
/**
|
|
6
|
+
* Additive storage for input-independent owner action receipts (Task E).
|
|
7
|
+
*
|
|
8
|
+
* One row per (owner namespace, host-derived occurrence, logical action). The
|
|
9
|
+
* row is reserved BEFORE the effect runs and can only move
|
|
10
|
+
* transmitting -> unknown | confirmed; confirmed is final. The originating
|
|
11
|
+
* model run / envelope are audit metadata: a later authorized attempt of the
|
|
12
|
+
* same occurrence reconciles this row instead of creating another effect.
|
|
13
|
+
*
|
|
14
|
+
* This table is separate from the legacy integer batch-keyed
|
|
15
|
+
* `owner_event_effects` table, which is neither read, altered, nor migrated
|
|
16
|
+
* here. Nothing in this migration is destructive; it is safe to run on every
|
|
17
|
+
* open, including on a database that already carries the table.
|
|
18
|
+
*/
|
|
19
|
+
exports.OWNER_ACTION_EFFECTS_TABLE = 'owner_action_effects';
|
|
20
|
+
const REQUIRED_COLUMNS = [
|
|
21
|
+
'owner_scope',
|
|
22
|
+
'occurrence_key',
|
|
23
|
+
'action_key',
|
|
24
|
+
'effect_kind',
|
|
25
|
+
'status',
|
|
26
|
+
'intent_json',
|
|
27
|
+
'intent_sha256',
|
|
28
|
+
'result_json',
|
|
29
|
+
'last_error',
|
|
30
|
+
'origin_model_run_id',
|
|
31
|
+
'origin_envelope_hash',
|
|
32
|
+
'origin_workorder_attempt_id',
|
|
33
|
+
'settled_model_run_id',
|
|
34
|
+
'created_at',
|
|
35
|
+
'updated_at',
|
|
36
|
+
];
|
|
37
|
+
function applyOwnerActionEffectsMigration(db) {
|
|
38
|
+
db.exec(`
|
|
39
|
+
CREATE TABLE IF NOT EXISTS ${exports.OWNER_ACTION_EFFECTS_TABLE} (
|
|
40
|
+
owner_scope TEXT NOT NULL CHECK (length(trim(owner_scope)) > 0),
|
|
41
|
+
occurrence_key TEXT NOT NULL CHECK (length(trim(occurrence_key)) > 0),
|
|
42
|
+
action_key TEXT NOT NULL CHECK (length(trim(action_key)) > 0),
|
|
43
|
+
effect_kind TEXT NOT NULL CHECK (length(trim(effect_kind)) > 0),
|
|
44
|
+
status TEXT NOT NULL CHECK (status IN ('transmitting','unknown','confirmed')),
|
|
45
|
+
intent_json TEXT NOT NULL,
|
|
46
|
+
intent_sha256 TEXT NOT NULL,
|
|
47
|
+
result_json TEXT,
|
|
48
|
+
last_error TEXT,
|
|
49
|
+
origin_model_run_id TEXT NOT NULL CHECK (length(trim(origin_model_run_id)) > 0),
|
|
50
|
+
origin_envelope_hash TEXT NOT NULL CHECK (length(trim(origin_envelope_hash)) > 0),
|
|
51
|
+
origin_workorder_attempt_id INTEGER,
|
|
52
|
+
settled_model_run_id TEXT,
|
|
53
|
+
created_at INTEGER NOT NULL,
|
|
54
|
+
updated_at INTEGER NOT NULL,
|
|
55
|
+
PRIMARY KEY (owner_scope, occurrence_key, action_key)
|
|
56
|
+
);
|
|
57
|
+
CREATE INDEX IF NOT EXISTS idx_owner_action_effects_pending
|
|
58
|
+
ON ${exports.OWNER_ACTION_EFFECTS_TABLE} (owner_scope, occurrence_key, status, created_at, action_key);
|
|
59
|
+
`);
|
|
60
|
+
// Fail loudly rather than run against a same-named table with a different
|
|
61
|
+
// shape: a silent partial schema would make receipts unreadable.
|
|
62
|
+
const columns = new Set(db.prepare(`PRAGMA table_info(${exports.OWNER_ACTION_EFFECTS_TABLE})`).all().map((column) => column.name));
|
|
63
|
+
const missing = REQUIRED_COLUMNS.filter((column) => !columns.has(column));
|
|
64
|
+
if (missing.length > 0) {
|
|
65
|
+
throw new Error(`${exports.OWNER_ACTION_EFFECTS_TABLE} exists without required column(s): ${missing.join(', ')}`);
|
|
66
|
+
}
|
|
67
|
+
const info = db.prepare(`PRAGMA table_info(${exports.OWNER_ACTION_EFFECTS_TABLE})`).all();
|
|
68
|
+
const primaryKey = info
|
|
69
|
+
.filter((column) => column.pk > 0)
|
|
70
|
+
.sort((a, b) => a.pk - b.pk)
|
|
71
|
+
.map((column) => column.name);
|
|
72
|
+
if (primaryKey.join(',') !== 'owner_scope,occurrence_key,action_key') {
|
|
73
|
+
throw new Error(`${exports.OWNER_ACTION_EFFECTS_TABLE} has an invalid receipt primary key`);
|
|
74
|
+
}
|
|
75
|
+
const nullable = new Set([
|
|
76
|
+
'result_json',
|
|
77
|
+
'last_error',
|
|
78
|
+
'origin_workorder_attempt_id',
|
|
79
|
+
'settled_model_run_id',
|
|
80
|
+
]);
|
|
81
|
+
if (info.some((column) => !nullable.has(column.name) && column.notnull !== 1)) {
|
|
82
|
+
throw new Error(`${exports.OWNER_ACTION_EFFECTS_TABLE} is missing a required NOT NULL constraint`);
|
|
83
|
+
}
|
|
84
|
+
const schema = db
|
|
85
|
+
.prepare('SELECT sql FROM sqlite_master WHERE type = ? AND name = ?')
|
|
86
|
+
.get('table', exports.OWNER_ACTION_EFFECTS_TABLE);
|
|
87
|
+
const normalized = schema.sql.toLowerCase().replace(/\s+/g, '');
|
|
88
|
+
const checks = [
|
|
89
|
+
"check(statusin('transmitting','unknown','confirmed'))",
|
|
90
|
+
...[
|
|
91
|
+
'owner_scope',
|
|
92
|
+
'occurrence_key',
|
|
93
|
+
'action_key',
|
|
94
|
+
'effect_kind',
|
|
95
|
+
'origin_model_run_id',
|
|
96
|
+
'origin_envelope_hash',
|
|
97
|
+
].map((column) => `check(length(trim(${column}))>0)`),
|
|
98
|
+
];
|
|
99
|
+
if (checks.some((check) => !normalized.includes(check))) {
|
|
100
|
+
throw new Error(`${exports.OWNER_ACTION_EFFECTS_TABLE} is missing a required CHECK constraint`);
|
|
101
|
+
}
|
|
102
|
+
db.exec(`
|
|
103
|
+
CREATE TRIGGER IF NOT EXISTS owner_action_effects_confirmed_immutable
|
|
104
|
+
BEFORE UPDATE ON ${exports.OWNER_ACTION_EFFECTS_TABLE} WHEN OLD.status = 'confirmed'
|
|
105
|
+
BEGIN SELECT RAISE(ABORT, 'confirmed owner action receipt is immutable'); END;
|
|
106
|
+
CREATE TRIGGER IF NOT EXISTS owner_action_effects_confirmed_no_delete
|
|
107
|
+
BEFORE DELETE ON ${exports.OWNER_ACTION_EFFECTS_TABLE} WHEN OLD.status = 'confirmed'
|
|
108
|
+
BEGIN SELECT RAISE(ABORT, 'confirmed owner action receipt is immutable'); END;
|
|
109
|
+
`);
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=owner-action-effects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"owner-action-effects.js","sourceRoot":"","sources":["../../../src/db/migrations/owner-action-effects.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-router.d.ts","sourceRoot":"","sources":["../../src/gateways/message-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAyC,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAClG,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAChG,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC/B,MAAM,6BAA6B,CAAC;AAYrC,OAAO,KAAK,EAAgB,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"message-router.d.ts","sourceRoot":"","sources":["../../src/gateways/message-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -78,6 +78,7 @@ const turn_observer_js_1 = require("../operator/turn-observer.js");
|
|
|
78
78
|
const learning_markers_js_1 = require("../operator/learning-markers.js");
|
|
79
79
|
const recall_bundle_formatter_js_1 = require("../memory/recall-bundle-formatter.js");
|
|
80
80
|
const untrusted_content_js_1 = require("../utils/untrusted-content.js");
|
|
81
|
+
const telegram_text_entities_js_1 = require("./telegram-text-entities.js");
|
|
81
82
|
const security_monitor_js_1 = require("../security/security-monitor.js");
|
|
82
83
|
const agent_store_js_1 = require("../db/agent-store.js");
|
|
83
84
|
const reactive_config_js_1 = require("../envelope/reactive-config.js");
|
|
@@ -873,10 +874,16 @@ This protects your credentials from being exposed in chat logs.`;
|
|
|
873
874
|
};
|
|
874
875
|
try {
|
|
875
876
|
const mediaInstructions = buildUploadedMediaInstructions(message, agentContext.role.allowedTools, agentContext.roleName === 'owner_console');
|
|
877
|
+
// Task G: Telegram sender styling rides directly after the body as data
|
|
878
|
+
// on BOTH model paths and in the persisted user turn. '' when absent, so
|
|
879
|
+
// plain messages and non-Telegram sources are byte-identical to before.
|
|
880
|
+
const formattingSuffix = (0, telegram_text_entities_js_1.buildTelegramFormattingSuffix)(message);
|
|
876
881
|
// Save user message immediately for crash/refresh resilience.
|
|
877
882
|
this.sessionStore.appendMessage(session.id, {
|
|
878
883
|
role: 'user',
|
|
879
|
-
content: [message.text
|
|
884
|
+
content: [`${message.text}${formattingSuffix}`, mediaInstructions]
|
|
885
|
+
.filter(Boolean)
|
|
886
|
+
.join('\n\n'),
|
|
880
887
|
timestamp: Date.now(),
|
|
881
888
|
});
|
|
882
889
|
let response = '';
|
|
@@ -1052,7 +1059,10 @@ This protects your credentials from being exposed in chat logs.`;
|
|
|
1052
1059
|
sourceTurnId,
|
|
1053
1060
|
sourceMessageRef,
|
|
1054
1061
|
...(runtimeSessionKey === owner_runtime_js_1.OWNER_RUNTIME_SESSION_KEY
|
|
1055
|
-
? {
|
|
1062
|
+
? {
|
|
1063
|
+
ownerJournalPrompt: `${message.text}${formattingSuffix}`,
|
|
1064
|
+
ownerJournalTrust: 'owner',
|
|
1065
|
+
}
|
|
1056
1066
|
: {}),
|
|
1057
1067
|
// The owner's message is what caused whatever this turn changes, and the router
|
|
1058
1068
|
// knows it BEFORE the agent runs - the same shape as a reconcile work order
|
|
@@ -1168,7 +1178,7 @@ This protects your credentials from being exposed in chat logs.`;
|
|
|
1168
1178
|
}
|
|
1169
1179
|
// Add text content (with memory context, skill context, and page context)
|
|
1170
1180
|
const pageCtx = isPublicLane ? '' : this.getPageContextPrefix(message);
|
|
1171
|
-
const effectiveMessageText = `${pageCtx}${memoryPrefix}${learningPrefix}${skillPrefix}${messageText || ''}`;
|
|
1181
|
+
const effectiveMessageText = `${pageCtx}${memoryPrefix}${learningPrefix}${skillPrefix}${messageText || ''}${formattingSuffix}`;
|
|
1172
1182
|
if (effectiveMessageText) {
|
|
1173
1183
|
contentBlocks.push({ type: 'text', text: effectiveMessageText });
|
|
1174
1184
|
}
|
|
@@ -1212,7 +1222,7 @@ This protects your credentials from being exposed in chat logs.`;
|
|
|
1212
1222
|
}
|
|
1213
1223
|
else {
|
|
1214
1224
|
const pageCtx = isPublicLane ? '' : this.getPageContextPrefix(message);
|
|
1215
|
-
const effectiveText = `${pageCtx}${memoryPrefix}${learningPrefix}${skillPrefix}${message.text}`;
|
|
1225
|
+
const effectiveText = `${pageCtx}${memoryPrefix}${learningPrefix}${skillPrefix}${message.text}${formattingSuffix}`;
|
|
1216
1226
|
const turnStart = Date.now();
|
|
1217
1227
|
const result = await this.agentLoop.run(effectiveText, options);
|
|
1218
1228
|
response = result.response;
|