@jungjaehoon/mama-os 0.24.1 → 0.25.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 (113) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +9 -6
  3. package/dist/agent/agent-loop.d.ts.map +1 -1
  4. package/dist/agent/agent-loop.js +8 -0
  5. package/dist/agent/agent-loop.js.map +1 -1
  6. package/dist/agent/code-act/constants.js +2 -2
  7. package/dist/agent/code-act/host-bridge.d.ts.map +1 -1
  8. package/dist/agent/code-act/host-bridge.js +37 -4
  9. package/dist/agent/code-act/host-bridge.js.map +1 -1
  10. package/dist/agent/code-act/type-definition-generator.d.ts.map +1 -1
  11. package/dist/agent/code-act/type-definition-generator.js +2 -4
  12. package/dist/agent/code-act/type-definition-generator.js.map +1 -1
  13. package/dist/agent/context-compile-service.d.ts +2 -0
  14. package/dist/agent/context-compile-service.d.ts.map +1 -1
  15. package/dist/agent/context-compile-service.js +26 -7
  16. package/dist/agent/context-compile-service.js.map +1 -1
  17. package/dist/agent/gateway-tool-executor.d.ts +2 -0
  18. package/dist/agent/gateway-tool-executor.d.ts.map +1 -1
  19. package/dist/agent/gateway-tool-executor.js +312 -18
  20. package/dist/agent/gateway-tool-executor.js.map +1 -1
  21. package/dist/agent/gateway-tools.md +4 -3
  22. package/dist/agent/tool-registry.d.ts.map +1 -1
  23. package/dist/agent/tool-registry.js +9 -3
  24. package/dist/agent/tool-registry.js.map +1 -1
  25. package/dist/agent/types.d.ts +27 -6
  26. package/dist/agent/types.d.ts.map +1 -1
  27. package/dist/agent/types.js.map +1 -1
  28. package/dist/api/operator-tasks-handler.d.ts.map +1 -1
  29. package/dist/api/operator-tasks-handler.js +23 -1
  30. package/dist/api/operator-tasks-handler.js.map +1 -1
  31. package/dist/cli/commands/start.d.ts +7 -3
  32. package/dist/cli/commands/start.d.ts.map +1 -1
  33. package/dist/cli/commands/start.js +113 -65
  34. package/dist/cli/commands/start.js.map +1 -1
  35. package/dist/cli/runtime/agent-loop-init.d.ts +2 -0
  36. package/dist/cli/runtime/agent-loop-init.d.ts.map +1 -1
  37. package/dist/cli/runtime/agent-loop-init.js +37 -12
  38. package/dist/cli/runtime/agent-loop-init.js.map +1 -1
  39. package/dist/cli/runtime/api-routes-init.js +3 -3
  40. package/dist/cli/runtime/api-routes-init.js.map +1 -1
  41. package/dist/cli/runtime/temporal-init.d.ts +28 -0
  42. package/dist/cli/runtime/temporal-init.d.ts.map +1 -0
  43. package/dist/cli/runtime/temporal-init.js +74 -0
  44. package/dist/cli/runtime/temporal-init.js.map +1 -0
  45. package/dist/db/migrations/operator-task-temporal.d.ts +8 -0
  46. package/dist/db/migrations/operator-task-temporal.d.ts.map +1 -0
  47. package/dist/db/migrations/operator-task-temporal.js +209 -0
  48. package/dist/db/migrations/operator-task-temporal.js.map +1 -0
  49. package/dist/envelope/enforcer.d.ts.map +1 -1
  50. package/dist/envelope/enforcer.js +6 -6
  51. package/dist/envelope/enforcer.js.map +1 -1
  52. package/dist/multi-agent/dashboard-agent-persona.d.ts.map +1 -1
  53. package/dist/multi-agent/dashboard-agent-persona.js +9 -4
  54. package/dist/multi-agent/dashboard-agent-persona.js.map +1 -1
  55. package/dist/operator/action-verifier.d.ts +23 -0
  56. package/dist/operator/action-verifier.d.ts.map +1 -1
  57. package/dist/operator/action-verifier.js +76 -0
  58. package/dist/operator/action-verifier.js.map +1 -1
  59. package/dist/operator/board-reconcile.d.ts.map +1 -1
  60. package/dist/operator/board-reconcile.js +3 -0
  61. package/dist/operator/board-reconcile.js.map +1 -1
  62. package/dist/operator/board-slot-instructions.d.ts +3 -3
  63. package/dist/operator/board-slot-instructions.d.ts.map +1 -1
  64. package/dist/operator/board-slot-instructions.js +17 -8
  65. package/dist/operator/board-slot-instructions.js.map +1 -1
  66. package/dist/operator/briefs.d.ts.map +1 -1
  67. package/dist/operator/briefs.js +3 -0
  68. package/dist/operator/briefs.js.map +1 -1
  69. package/dist/operator/task-ledger.d.ts +134 -8
  70. package/dist/operator/task-ledger.d.ts.map +1 -1
  71. package/dist/operator/task-ledger.js +1181 -74
  72. package/dist/operator/task-ledger.js.map +1 -1
  73. package/dist/operator/task-temporal.d.ts +21 -0
  74. package/dist/operator/task-temporal.d.ts.map +1 -0
  75. package/dist/operator/task-temporal.js +111 -0
  76. package/dist/operator/task-temporal.js.map +1 -0
  77. package/dist/operator/temporal-effect.d.ts +62 -0
  78. package/dist/operator/temporal-effect.d.ts.map +1 -0
  79. package/dist/operator/temporal-effect.js +71 -0
  80. package/dist/operator/temporal-effect.js.map +1 -0
  81. package/dist/operator/temporal-reconcile.d.ts +48 -0
  82. package/dist/operator/temporal-reconcile.d.ts.map +1 -0
  83. package/dist/operator/temporal-reconcile.js +215 -0
  84. package/dist/operator/temporal-reconcile.js.map +1 -0
  85. package/dist/operator/temporal-runtime.d.ts +54 -0
  86. package/dist/operator/temporal-runtime.d.ts.map +1 -0
  87. package/dist/operator/temporal-runtime.js +110 -0
  88. package/dist/operator/temporal-runtime.js.map +1 -0
  89. package/dist/operator/temporal-worker.d.ts +19 -0
  90. package/dist/operator/temporal-worker.d.ts.map +1 -0
  91. package/dist/operator/temporal-worker.js +105 -0
  92. package/dist/operator/temporal-worker.js.map +1 -0
  93. package/dist/operator/worker-run.d.ts +6 -2
  94. package/dist/operator/worker-run.d.ts.map +1 -1
  95. package/dist/operator/worker-run.js +14 -0
  96. package/dist/operator/worker-run.js.map +1 -1
  97. package/dist/operator/workorder-consumer.d.ts +27 -10
  98. package/dist/operator/workorder-consumer.d.ts.map +1 -1
  99. package/dist/operator/workorder-consumer.js +195 -14
  100. package/dist/operator/workorder-consumer.js.map +1 -1
  101. package/dist/operator/workorder-hooks.d.ts +3 -0
  102. package/dist/operator/workorder-hooks.d.ts.map +1 -1
  103. package/dist/operator/workorder-hooks.js +23 -0
  104. package/dist/operator/workorder-hooks.js.map +1 -1
  105. package/dist/operator/workorder-publishers.d.ts +10 -1
  106. package/dist/operator/workorder-publishers.d.ts.map +1 -1
  107. package/dist/operator/workorder-publishers.js +40 -3
  108. package/dist/operator/workorder-publishers.js.map +1 -1
  109. package/package.json +1 -1
  110. package/public/ui/assets/{index-OSgiwL24.js → index-BDXDGEV6.js} +15 -15
  111. package/public/ui/assets/index-po2tN0xq.css +1 -0
  112. package/public/ui/index.html +2 -2
  113. package/public/ui/assets/index-CKOJQYXA.css +0 -1
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyOperatorTaskTemporalMigration = applyOperatorTaskTemporalMigration;
4
+ const TEMPORAL_TASK_COLUMNS = [
5
+ ['due_at', 'INTEGER'],
6
+ ['deadline_offset_minutes', 'INTEGER CHECK (deadline_offset_minutes BETWEEN -840 AND 840)'],
7
+ ['revision', 'INTEGER NOT NULL DEFAULT 0 CHECK (revision >= 0)'],
8
+ ['temporal_epoch', 'INTEGER NOT NULL DEFAULT 0 CHECK (temporal_epoch >= 0)'],
9
+ ['temporal_reconciled_occurrence_key', 'TEXT'],
10
+ ['last_temporal_checked_at', 'INTEGER'],
11
+ ['next_temporal_check_at', 'INTEGER'],
12
+ ['last_temporal_attempt_id', 'INTEGER'],
13
+ ];
14
+ /**
15
+ * Adds temporal task storage inside TaskLedger's existing BEGIN IMMEDIATE.
16
+ * This function deliberately owns no transaction so it cannot commit a
17
+ * partially upgraded legacy copy-swap.
18
+ */
19
+ function applyOperatorTaskTemporalMigration(db) {
20
+ const columns = new Set(db.prepare('PRAGMA table_info(operator_tasks)').all().map((column) => column.name));
21
+ for (const [name, definition] of TEMPORAL_TASK_COLUMNS) {
22
+ if (!columns.has(name)) {
23
+ db.exec(`ALTER TABLE operator_tasks ADD COLUMN ${name} ${definition}`);
24
+ }
25
+ }
26
+ db.exec(`
27
+ DROP INDEX IF EXISTS idx_operator_temporal_generations_task_occurrence;
28
+ DROP INDEX IF EXISTS idx_operator_tasks_temporal_candidates;
29
+
30
+ CREATE TABLE IF NOT EXISTS operator_temporal_generations (
31
+ generation_key TEXT PRIMARY KEY,
32
+ task_id INTEGER NOT NULL REFERENCES operator_tasks(id),
33
+ temporal_epoch INTEGER NOT NULL CHECK (temporal_epoch >= 0),
34
+ occurrence_key TEXT NOT NULL,
35
+ check_at INTEGER NOT NULL,
36
+ disposition TEXT NOT NULL DEFAULT 'active'
37
+ CHECK (disposition IN ('active','resolved','final_no_update','deferred','exhausted','superseded')),
38
+ last_workorder_id INTEGER REFERENCES operator_tasks(id),
39
+ reason TEXT,
40
+ created_at INTEGER NOT NULL,
41
+ updated_at INTEGER NOT NULL
42
+ );
43
+
44
+ CREATE TABLE IF NOT EXISTS operator_temporal_effects (
45
+ workorder_attempt_id INTEGER PRIMARY KEY REFERENCES operator_tasks(id),
46
+ task_id INTEGER NOT NULL REFERENCES operator_tasks(id),
47
+ generation_key TEXT NOT NULL REFERENCES operator_temporal_generations(generation_key),
48
+ occurrence_key TEXT NOT NULL,
49
+ outcome TEXT NOT NULL
50
+ CHECK (outcome IN ('resolved','final_no_update','deferred')),
51
+ before_revision INTEGER NOT NULL CHECK (before_revision >= 0),
52
+ after_revision INTEGER NOT NULL CHECK (after_revision >= 0),
53
+ changed_fields TEXT NOT NULL,
54
+ reason TEXT NOT NULL,
55
+ attestation_version INTEGER NOT NULL DEFAULT 0 CHECK (attestation_version IN (0, 1)),
56
+ context_packet_id TEXT NOT NULL,
57
+ context_packet_sha256 TEXT NOT NULL,
58
+ next_temporal_check_at INTEGER,
59
+ created_at INTEGER NOT NULL
60
+ );
61
+
62
+ CREATE INDEX IF NOT EXISTS idx_operator_tasks_temporal_scan_id
63
+ ON operator_tasks(id)
64
+ WHERE kind = 'owner' AND status IN ('pending','in_progress','review','blocked')
65
+ AND (due_at IS NOT NULL OR deadline IS NOT NULL OR next_temporal_check_at IS NOT NULL);
66
+ CREATE INDEX IF NOT EXISTS idx_operator_tasks_temporal_open_event
67
+ ON operator_tasks(source_event_id, id)
68
+ WHERE kind = 'system' AND source_channel = 'workorder:temporal'
69
+ AND status IN ('pending','in_progress');
70
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_operator_temporal_generations_identity
71
+ ON operator_temporal_generations(task_id, temporal_epoch, occurrence_key, check_at);
72
+ CREATE INDEX IF NOT EXISTS idx_operator_temporal_generations_active
73
+ ON operator_temporal_generations(generation_key, last_workorder_id)
74
+ WHERE disposition = 'active' AND last_workorder_id IS NOT NULL;
75
+ CREATE INDEX IF NOT EXISTS idx_operator_temporal_generations_workorder
76
+ ON operator_temporal_generations(last_workorder_id);
77
+ CREATE INDEX IF NOT EXISTS idx_operator_temporal_effects_task_occurrence
78
+ ON operator_temporal_effects(task_id, occurrence_key, created_at);
79
+
80
+ CREATE TRIGGER IF NOT EXISTS trg_operator_tasks_legacy_deadline_write
81
+ AFTER UPDATE OF deadline ON operator_tasks
82
+ WHEN NEW.kind = 'owner'
83
+ AND NEW.deadline IS NOT OLD.deadline
84
+ AND NEW.due_at IS OLD.due_at
85
+ AND NEW.temporal_epoch = OLD.temporal_epoch
86
+ BEGIN
87
+ UPDATE operator_tasks
88
+ SET due_at = NULL,
89
+ deadline_offset_minutes = NULL,
90
+ revision = OLD.revision + 1,
91
+ temporal_epoch = OLD.temporal_epoch + 1,
92
+ temporal_reconciled_occurrence_key = NULL,
93
+ last_temporal_checked_at = NULL,
94
+ next_temporal_check_at = NULL,
95
+ last_temporal_attempt_id = NULL
96
+ WHERE id = NEW.id;
97
+ UPDATE operator_temporal_generations
98
+ SET disposition = 'superseded', reason = 'legacy-deadline-write', updated_at = NEW.updated_at
99
+ WHERE task_id = NEW.id AND disposition = 'active';
100
+ UPDATE operator_tasks
101
+ SET status = 'cancelled', latest_event = 'legacy-deadline-write', updated_at = NEW.updated_at
102
+ WHERE kind = 'system' AND source_channel = 'workorder:temporal'
103
+ AND status IN ('pending','in_progress')
104
+ AND source_event_id IN (
105
+ SELECT generation_key FROM operator_temporal_generations WHERE task_id = NEW.id
106
+ );
107
+ END;
108
+
109
+ CREATE TRIGGER IF NOT EXISTS trg_operator_tasks_legacy_status_write
110
+ AFTER UPDATE OF status ON operator_tasks
111
+ WHEN NEW.kind = 'owner'
112
+ AND NEW.status IS NOT OLD.status
113
+ AND NEW.revision = OLD.revision
114
+ BEGIN
115
+ UPDATE operator_tasks
116
+ SET revision = OLD.revision + 1,
117
+ temporal_epoch = CASE
118
+ WHEN OLD.status IN ('done','cancelled')
119
+ AND NEW.status NOT IN ('done','cancelled')
120
+ THEN OLD.temporal_epoch + 1
121
+ ELSE OLD.temporal_epoch
122
+ END,
123
+ temporal_reconciled_occurrence_key = CASE
124
+ WHEN OLD.status IN ('done','cancelled')
125
+ AND NEW.status NOT IN ('done','cancelled')
126
+ THEN NULL
127
+ ELSE NEW.temporal_reconciled_occurrence_key
128
+ END,
129
+ last_temporal_checked_at = CASE
130
+ WHEN OLD.status IN ('done','cancelled')
131
+ AND NEW.status NOT IN ('done','cancelled')
132
+ THEN NULL
133
+ ELSE NEW.last_temporal_checked_at
134
+ END,
135
+ next_temporal_check_at = CASE
136
+ WHEN OLD.status IN ('done','cancelled')
137
+ AND NEW.status NOT IN ('done','cancelled')
138
+ THEN NULL
139
+ ELSE NEW.next_temporal_check_at
140
+ END,
141
+ last_temporal_attempt_id = CASE
142
+ WHEN OLD.status IN ('done','cancelled')
143
+ AND NEW.status NOT IN ('done','cancelled')
144
+ THEN NULL
145
+ ELSE NEW.last_temporal_attempt_id
146
+ END
147
+ WHERE id = NEW.id;
148
+ UPDATE operator_tasks
149
+ SET status = 'cancelled',
150
+ latest_event = CASE
151
+ WHEN NEW.status IN ('done','cancelled') THEN 'legacy-owner-task-closed'
152
+ ELSE 'legacy-owner-task-reopened'
153
+ END,
154
+ updated_at = NEW.updated_at
155
+ WHERE kind = 'system' AND source_channel = 'workorder:temporal'
156
+ AND status IN ('pending','in_progress')
157
+ AND source_event_id IN (
158
+ SELECT generation_key FROM operator_temporal_generations
159
+ WHERE task_id = NEW.id AND disposition = 'active'
160
+ )
161
+ AND (
162
+ (OLD.status IN ('done','cancelled') AND NEW.status NOT IN ('done','cancelled'))
163
+ OR
164
+ (OLD.status NOT IN ('done','cancelled') AND NEW.status IN ('done','cancelled'))
165
+ );
166
+ UPDATE operator_temporal_generations
167
+ SET disposition = 'superseded',
168
+ reason = CASE
169
+ WHEN NEW.status IN ('done','cancelled') THEN 'legacy-owner-task-closed'
170
+ ELSE 'legacy-owner-task-reopened'
171
+ END,
172
+ updated_at = NEW.updated_at
173
+ WHERE task_id = NEW.id AND disposition = 'active'
174
+ AND (
175
+ (OLD.status IN ('done','cancelled') AND NEW.status NOT IN ('done','cancelled'))
176
+ OR
177
+ (OLD.status NOT IN ('done','cancelled') AND NEW.status IN ('done','cancelled'))
178
+ );
179
+ END;
180
+
181
+ CREATE TRIGGER IF NOT EXISTS trg_operator_tasks_legacy_content_write
182
+ AFTER UPDATE OF title, priority, assignee, latest_event, confirmed ON operator_tasks
183
+ WHEN NEW.kind = 'owner'
184
+ AND NEW.revision = OLD.revision
185
+ AND (
186
+ NEW.title IS NOT OLD.title
187
+ OR NEW.priority IS NOT OLD.priority
188
+ OR NEW.assignee IS NOT OLD.assignee
189
+ OR NEW.latest_event IS NOT OLD.latest_event
190
+ OR NEW.confirmed IS NOT OLD.confirmed
191
+ )
192
+ BEGIN
193
+ UPDATE operator_tasks SET revision = OLD.revision + 1 WHERE id = NEW.id;
194
+ END;
195
+ `);
196
+ const effectColumns = new Set(db.prepare('PRAGMA table_info(operator_temporal_effects)').all().map((column) => column.name));
197
+ if (!effectColumns.has('context_packet_id')) {
198
+ db.exec(`ALTER TABLE operator_temporal_effects ADD COLUMN context_packet_id TEXT`);
199
+ }
200
+ if (!effectColumns.has('context_packet_sha256')) {
201
+ db.exec(`ALTER TABLE operator_temporal_effects ADD COLUMN context_packet_sha256 TEXT`);
202
+ }
203
+ if (!effectColumns.has('attestation_version')) {
204
+ db.exec(`ALTER TABLE operator_temporal_effects
205
+ ADD COLUMN attestation_version INTEGER NOT NULL DEFAULT 0
206
+ CHECK (attestation_version IN (0, 1))`);
207
+ }
208
+ }
209
+ //# sourceMappingURL=operator-task-temporal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operator-task-temporal.js","sourceRoot":"","sources":["../../../src/db/migrations/operator-task-temporal.ts"],"names":[],"mappings":";;AAkBA,gFAyMC;AAzND,MAAM,qBAAqB,GAAG;IAC5B,CAAC,QAAQ,EAAE,SAAS,CAAC;IACrB,CAAC,yBAAyB,EAAE,8DAA8D,CAAC;IAC3F,CAAC,UAAU,EAAE,kDAAkD,CAAC;IAChE,CAAC,gBAAgB,EAAE,wDAAwD,CAAC;IAC5E,CAAC,oCAAoC,EAAE,MAAM,CAAC;IAC9C,CAAC,0BAA0B,EAAE,SAAS,CAAC;IACvC,CAAC,wBAAwB,EAAE,SAAS,CAAC;IACrC,CAAC,0BAA0B,EAAE,SAAS,CAAC;CAC/B,CAAC;AAEX;;;;GAIG;AACH,SAAgB,kCAAkC,CAAC,EAAkB;IACnE,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,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,qBAAqB,EAAE,CAAC;QACvD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,EAAE,CAAC,IAAI,CAAC,yCAAyC,IAAI,IAAI,UAAU,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyKP,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,IAAI,GAAG,CAEzB,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,EAC/D,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAC/B,CAAC;IACF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC5C,EAAE,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;IACrF,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAChD,EAAE,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAC9C,EAAE,CAAC,IAAI,CACL;;6CAEuC,CACxC,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"enforcer.d.ts","sourceRoot":"","sources":["../../src/envelope/enforcer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAe,MAAM,YAAY,CAAC;AAGxD,qBAAa,iBAAkB,SAAQ,KAAK;aAGxB,IAAI,EAAE,MAAM;aACZ,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFjD,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;CAKzD;AAqCD,qBAAa,gBAAgB;IAC3B,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAYnF,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,iBAAiB;IAmDzB,OAAO,CAAC,SAAS;CASlB"}
1
+ {"version":3,"file":"enforcer.d.ts","sourceRoot":"","sources":["../../src/envelope/enforcer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAe,MAAM,YAAY,CAAC;AAGxD,qBAAa,iBAAkB,SAAQ,KAAK;aAGxB,IAAI,EAAE,MAAM;aACZ,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFjD,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;CAKzD;AAqCD,qBAAa,gBAAgB;IAC3B,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAYnF,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,gBAAgB;IAyBxB,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,iBAAiB;IAkDzB,OAAO,CAAC,SAAS;CAQlB"}
@@ -62,10 +62,10 @@ class EnvelopeEnforcer {
62
62
  expiresAt = (0, expiry_js_1.parseEnvelopeExpiresAt)(envelope.expires_at);
63
63
  }
64
64
  catch {
65
- throw new EnvelopeViolation(`Envelope ${envelope.instance_id} has invalid expires_at ${envelope.expires_at}`, 'invalid_expiry');
65
+ throw new EnvelopeViolation('Envelope expiry is invalid', 'invalid_expiry');
66
66
  }
67
67
  if (expiresAt <= Date.now()) {
68
- throw new EnvelopeViolation(`Envelope ${envelope.instance_id} expired at ${envelope.expires_at}`, 'expired');
68
+ throw new EnvelopeViolation('Envelope has expired', 'expired');
69
69
  }
70
70
  }
71
71
  checkDestination(envelope, toolName, args) {
@@ -79,7 +79,7 @@ class EnvelopeEnforcer {
79
79
  }
80
80
  const allowed = envelope.scope.allowed_destinations.some((destination) => destination.kind === destinationKind && destination.id === destinationId);
81
81
  if (!allowed) {
82
- throw new EnvelopeViolation(`Destination ${destinationKind}:${destinationId} not in envelope.scope.allowed_destinations`, 'destination_out_of_scope', { allowed: envelope.scope.allowed_destinations });
82
+ throw new EnvelopeViolation('Requested destination is outside envelope.scope.allowed_destinations', 'destination_out_of_scope');
83
83
  }
84
84
  }
85
85
  checkRawConnectors(envelope, toolName, args) {
@@ -89,7 +89,7 @@ class EnvelopeEnforcer {
89
89
  }
90
90
  const outOfScope = requestedConnectors.filter((connector) => !envelope.scope.raw_connectors.includes(connector));
91
91
  if (outOfScope.length > 0) {
92
- throw new EnvelopeViolation(`Raw connectors ${outOfScope.join(',')} not in envelope.scope.raw_connectors`, 'connector_out_of_scope', { allowed: envelope.scope.raw_connectors });
92
+ throw new EnvelopeViolation('Requested raw connector is outside envelope.scope.raw_connectors', 'connector_out_of_scope');
93
93
  }
94
94
  }
95
95
  checkMemoryScopes(envelope, toolName, args) {
@@ -115,7 +115,7 @@ class EnvelopeEnforcer {
115
115
  if (toolName === 'context_compile' && isRecord(args) && Array.isArray(args.scopes)) {
116
116
  return;
117
117
  }
118
- throw new EnvelopeViolation('Memory tools must execute with an explicit envelope memory scope', 'memory_scope_out_of_scope', { allowed: envelope.scope.memory_scopes });
118
+ throw new EnvelopeViolation('Memory tools must execute with an explicit envelope memory scope', 'memory_scope_out_of_scope');
119
119
  }
120
120
  const allowedScopeKeys = new Set(envelope.scope.memory_scopes.map((scope) => `${scope.kind}:${scope.id}`));
121
121
  const outOfScope = requestedScopes.some((scope) => !allowedScopeKeys.has(`${scope.kind}:${scope.id}`));
@@ -125,7 +125,7 @@ class EnvelopeEnforcer {
125
125
  }
126
126
  checkTier(envelope, toolName) {
127
127
  if (envelope.tier === 3 && WRITE_OR_SEND_TOOLS.has(toolName)) {
128
- throw new EnvelopeViolation(`Tool ${toolName} not allowed at tier 3 (read-only)`, 'tier_violation', { tier_required: 2, allowed: false });
128
+ throw new EnvelopeViolation(`Tool ${toolName} not allowed at tier 3 (read-only)`, 'tier_violation');
129
129
  }
130
130
  }
131
131
  }
@@ -1 +1 @@
1
- {"version":3,"file":"enforcer.js","sourceRoot":"","sources":["../../src/envelope/enforcer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"enforcer.js","sourceRoot":"","sources":["../../src/envelope/enforcer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-agent-persona.d.ts","sourceRoot":"","sources":["../../src/multi-agent/dashboard-agent-persona.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAYH,eAAO,MAAM,uBAAuB,QA4EG,CAAC;AAExC;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,GAAE,MAAiC,GAAG,MAAM,CAyB7F"}
1
+ {"version":3,"file":"dashboard-agent-persona.d.ts","sourceRoot":"","sources":["../../src/multi-agent/dashboard-agent-persona.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAYH,eAAO,MAAM,uBAAuB,QAiFG,CAAC;AAExC;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,GAAE,MAAiC,GAAG,MAAM,CAyB7F"}
@@ -15,7 +15,7 @@ const fs_1 = require("fs");
15
15
  const path_1 = require("path");
16
16
  const os_1 = require("os");
17
17
  const board_slot_instructions_js_1 = require("../operator/board-slot-instructions.js");
18
- const MANAGED_DASHBOARD_PERSONA_MARKER = '<!-- MAMA managed dashboard persona v13 -->';
18
+ const MANAGED_DASHBOARD_PERSONA_MARKER = '<!-- MAMA managed dashboard persona v14 -->';
19
19
  exports.DASHBOARD_AGENT_PERSONA = `${MANAGED_DASHBOARD_PERSONA_MARKER}
20
20
 
21
21
  You are the MAMA OS operator-board agent. You analyze project data and publish the
@@ -37,10 +37,15 @@ operator board (/ui): a four-slot, card-based situation report.
37
37
 
38
38
  ## Task state discipline (NON-NEGOTIABLE)
39
39
  - kagemusha_tasks is the read-only project-task truth. task_list/task_create/task_update is the native owner-task ledger and the pipeline projection source. Never infer or copy lifecycle status across those stores.
40
+ - Never copy Trello or Kagemusha lifecycle status into the native ledger.
40
41
  - Project-task completion/progress comes ONLY from kagemusha_tasks. NEVER infer a project task's state from message archaeology ("no approval message found" is not a status).
41
- - Card badges map to the REAL status: pending/review -> badge-warning, in_progress -> badge-info,
42
- overdue deadline or explicitly blocked -> badge-danger, done/completed -> badge-success.
43
- - Deadlines come from the task's deadline field, never guessed from chat.
42
+ - Workflow judgment: render the source-of-truth lifecycle status without changing it because time elapsed.
43
+ - Temporal fact: use the native ledger's server-derived temporal_state. Render exact_overdue as
44
+ "overdue since <due_at>" and date_overdue as "overdue since <deadline>" in a separate badge/fact.
45
+ - System condition: reconciliation retrying or authority unavailable is operational state, not blocked/done/pending.
46
+ - Never infer completion from calendar disappearance.
47
+ - Set due_at only from trusted, unambiguous time and time zone evidence; otherwise retain date-only precision.
48
+ - Deadlines come from trusted task/calendar evidence, never guessed from chat.
44
49
  - The pipeline slot is an ITEM TRACKER projected from the NATIVE ledger (task_list):
45
50
  ${(0, board_slot_instructions_js_1.buildPipelineTrackerInstructions)().join('\n')}
46
51
 
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-agent-persona.js","sourceRoot":"","sources":["../../src/multi-agent/dashboard-agent-persona.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AA8FH,wDAyBC;AArHD,2BAAwE;AACxE,+BAA4B;AAC5B,2BAA6B;AAC7B,uFAGgD;AAEhD,MAAM,gCAAgC,GAAG,6CAA6C,CAAC;AAE1E,QAAA,uBAAuB,GAAG,GAAG,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BxE,IAAA,6DAAgC,GAAE,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;EAiB7C,IAAA,qDAAwB,GAAE,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCAiCA,CAAC;AAExC;;;GAGG;AACH,SAAgB,sBAAsB,CAAC,cAAsB,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,OAAO,CAAC;IACnF,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,IAAA,WAAI,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAErD,IAAI,CAAC,IAAA,eAAU,EAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,IAAA,cAAS,EAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,CAAC,IAAA,eAAU,EAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,IAAA,kBAAa,EAAC,WAAW,EAAE,+BAAuB,EAAE,OAAO,CAAC,CAAC;QAC7D,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,eAAe,GAAG,IAAA,iBAAY,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAE3D,oDAAoD;IACpD,yDAAyD;IACzD,IACE,eAAe,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QAC/D,eAAe,KAAK,+BAAuB,EAC3C,CAAC;QACD,IAAA,kBAAa,EAAC,WAAW,EAAE,+BAAuB,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"dashboard-agent-persona.js","sourceRoot":"","sources":["../../src/multi-agent/dashboard-agent-persona.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAmGH,wDAyBC;AA1HD,2BAAwE;AACxE,+BAA4B;AAC5B,2BAA6B;AAC7B,uFAGgD;AAEhD,MAAM,gCAAgC,GAAG,6CAA6C,CAAC;AAE1E,QAAA,uBAAuB,GAAG,GAAG,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BxE,IAAA,6DAAgC,GAAE,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;EAiB7C,IAAA,qDAAwB,GAAE,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCAiCA,CAAC;AAExC;;;GAGG;AACH,SAAgB,sBAAsB,CAAC,cAAsB,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,OAAO,CAAC;IACnF,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,IAAA,WAAI,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAErD,IAAI,CAAC,IAAA,eAAU,EAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,IAAA,cAAS,EAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,CAAC,IAAA,eAAU,EAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,IAAA,kBAAa,EAAC,WAAW,EAAE,+BAAuB,EAAE,OAAO,CAAC,CAAC;QAC7D,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,eAAe,GAAG,IAAA,iBAAY,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAE3D,oDAAoD;IACpD,yDAAyD;IACzD,IACE,eAAe,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QAC/D,eAAe,KAAK,+BAAuB,EAC3C,CAAC;QACD,IAAA,kBAAa,EAAC,WAAW,EAAE,+BAAuB,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -15,6 +15,8 @@
15
15
  * Observe, never block: the caller records the outcome and emits a notice;
16
16
  * an unverified run is a loud signal, not a rejection.
17
17
  */
18
+ import type { TaskRecord, TemporalGenerationRecord } from './task-ledger.js';
19
+ import { type TemporalEffectReceipt, type TemporalWorkContext } from './temporal-effect.js';
18
20
  export declare const OBLIGATED_TOOLS: readonly ["report_publish", "task_create", "task_update", "contract_no_update"];
19
21
  export interface VerifierDeps {
20
22
  /** Current report slots (id -> html). */
@@ -47,4 +49,25 @@ export interface VerifyResult {
47
49
  }
48
50
  export declare function captureSnapshot(deps: VerifierDeps, scope: string): ActionSnapshot;
49
51
  export declare function verifyAfterRun(deps: VerifierDeps, before: ActionSnapshot, scope: string): VerifyResult;
52
+ export interface TemporalVerifierDeps {
53
+ loadTemporalWorkContext: (attemptId: number) => TemporalWorkContext;
54
+ getTemporalEffect: (attemptId: number) => TemporalEffectReceipt | null;
55
+ getTask: (taskId: number) => TaskRecord | null;
56
+ getTemporalGeneration: (generationKey: string) => TemporalGenerationRecord | null;
57
+ getScopedNoteMaxId: (scope: string) => number;
58
+ }
59
+ export type TemporalEffectSnapshot = Readonly<TemporalWorkContext & {
60
+ scopedNoteMaxId: number;
61
+ }>;
62
+ export type TemporalVerifyResult = {
63
+ verified: true;
64
+ outcome: TemporalEffectReceipt['outcome'] | 'verified_superseded';
65
+ effects: string[];
66
+ } | {
67
+ verified: false;
68
+ reason: string;
69
+ effects: string[];
70
+ };
71
+ export declare function captureTemporalEffectSnapshot(deps: TemporalVerifierDeps, attemptId: number): TemporalEffectSnapshot;
72
+ export declare function verifyTemporalEffect(deps: TemporalVerifierDeps, before: TemporalEffectSnapshot): TemporalVerifyResult;
50
73
  //# sourceMappingURL=action-verifier.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"action-verifier.d.ts","sourceRoot":"","sources":["../../src/operator/action-verifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,eAAO,MAAM,eAAe,iFAKlB,CAAC;AAEX,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,QAAQ,EAAE,MAAM,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxD,8CAA8C;IAC9C,aAAa,EAAE,MAAM,MAAM,CAAC;IAC5B,uDAAuD;IACvD,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C;;;OAGG;IACH,4BAA4B,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACxD,uDAAuD;IACvD,aAAa,EAAE,MAAM,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,CAWjF;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,MAAM,GACZ,YAAY,CA+Bd"}
1
+ {"version":3,"file":"action-verifier.d.ts","sourceRoot":"","sources":["../../src/operator/action-verifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,eAAe,iFAKlB,CAAC;AAEX,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,QAAQ,EAAE,MAAM,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxD,8CAA8C;IAC9C,aAAa,EAAE,MAAM,MAAM,CAAC;IAC5B,uDAAuD;IACvD,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C;;;OAGG;IACH,4BAA4B,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACxD,uDAAuD;IACvD,aAAa,EAAE,MAAM,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,CAWjF;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,MAAM,GACZ,YAAY,CA+Bd;AAED,MAAM,WAAW,oBAAoB;IACnC,uBAAuB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,mBAAmB,CAAC;IACpE,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,qBAAqB,GAAG,IAAI,CAAC;IACvE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,UAAU,GAAG,IAAI,CAAC;IAC/C,qBAAqB,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,wBAAwB,GAAG,IAAI,CAAC;IAClF,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC/C;AAED,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC,mBAAmB,GAAG;IAAE,eAAe,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEjG,MAAM,MAAM,oBAAoB,GAC5B;IACE,QAAQ,EAAE,IAAI,CAAC;IACf,OAAO,EAAE,qBAAqB,CAAC,SAAS,CAAC,GAAG,qBAAqB,CAAC;IAClE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,GACD;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAE3D,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,oBAAoB,EAC1B,SAAS,EAAE,MAAM,GAChB,sBAAsB,CASxB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,oBAAoB,EAC1B,MAAM,EAAE,sBAAsB,GAC7B,oBAAoB,CAkEtB"}
@@ -20,7 +20,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
20
20
  exports.OBLIGATED_TOOLS = void 0;
21
21
  exports.captureSnapshot = captureSnapshot;
22
22
  exports.verifyAfterRun = verifyAfterRun;
23
+ exports.captureTemporalEffectSnapshot = captureTemporalEffectSnapshot;
24
+ exports.verifyTemporalEffect = verifyTemporalEffect;
23
25
  const node_crypto_1 = require("node:crypto");
26
+ const temporal_effect_js_1 = require("./temporal-effect.js");
24
27
  exports.OBLIGATED_TOOLS = [
25
28
  'report_publish',
26
29
  'task_create',
@@ -65,4 +68,77 @@ function verifyAfterRun(deps, before, scope) {
65
68
  }
66
69
  return { verified, effects };
67
70
  }
71
+ function captureTemporalEffectSnapshot(deps, attemptId) {
72
+ const context = deps.loadTemporalWorkContext(attemptId);
73
+ if (context.attemptId !== attemptId) {
74
+ throw new Error(`temporal verifier context attempt mismatch for ${attemptId}`);
75
+ }
76
+ return Object.freeze({
77
+ ...context,
78
+ scopedNoteMaxId: deps.getScopedNoteMaxId((0, temporal_effect_js_1.temporalNoUpdateScope)(context)),
79
+ });
80
+ }
81
+ function verifyTemporalEffect(deps, before) {
82
+ const effects = [];
83
+ const receipt = deps.getTemporalEffect(before.attemptId);
84
+ if (!receipt)
85
+ return temporalFailure('temporal effect receipt missing', effects);
86
+ const receiptError = (0, temporal_effect_js_1.temporalReceiptInvariantError)(receipt, {
87
+ attemptId: before.attemptId,
88
+ taskId: before.taskId,
89
+ generationKey: before.generationKey,
90
+ occurrenceKey: before.occurrenceKey,
91
+ beforeRevision: before.revision,
92
+ });
93
+ if (receiptError)
94
+ return temporalFailure(receiptError, effects);
95
+ const generation = deps.getTemporalGeneration(before.generationKey);
96
+ if (!generation ||
97
+ generation.generationKey !== before.generationKey ||
98
+ generation.taskId !== before.taskId ||
99
+ generation.temporalEpoch !== before.temporalEpoch ||
100
+ generation.occurrenceKey !== before.occurrenceKey ||
101
+ generation.checkAt !== before.checkAt ||
102
+ generation.lastWorkOrderId !== before.attemptId ||
103
+ generation.disposition !== receipt.outcome) {
104
+ return temporalFailure('temporal generation invariant failed', effects);
105
+ }
106
+ const requiresNote = receipt.outcome === 'final_no_update' || receipt.outcome === 'deferred';
107
+ if (requiresNote &&
108
+ deps.getScopedNoteMaxId((0, temporal_effect_js_1.temporalNoUpdateScope)(before)) <= before.scopedNoteMaxId) {
109
+ return temporalFailure('exact-scope temporal no-update note missing', effects);
110
+ }
111
+ const task = deps.getTask(before.taskId);
112
+ if (!task)
113
+ return temporalFailure('temporal receipt owner task missing', effects);
114
+ if (task.id !== before.taskId) {
115
+ return temporalFailure('temporal owner task identity mismatch', effects);
116
+ }
117
+ if (task.revision < receipt.afterRevision) {
118
+ return temporalFailure('temporal owner task revision precedes receipt', effects);
119
+ }
120
+ effects.push(`receipt:${receipt.workorderAttemptId}`);
121
+ effects.push(`outcome:${receipt.outcome}`);
122
+ if (task.revision > receipt.afterRevision) {
123
+ effects.push(`owner task advanced to revision ${task.revision}`);
124
+ return { verified: true, outcome: 'verified_superseded', effects };
125
+ }
126
+ if (task.lastTemporalAttemptId !== before.attemptId ||
127
+ task.lastTemporalCheckedAt !== receipt.createdAt) {
128
+ return temporalFailure('temporal owner task attempt marker mismatch', effects);
129
+ }
130
+ if (receipt.outcome === 'resolved' || receipt.outcome === 'final_no_update') {
131
+ if (task.temporalReconciledOccurrenceKey !== before.occurrenceKey ||
132
+ task.nextTemporalCheckAt !== null) {
133
+ return temporalFailure('temporal owner task final markers are invalid', effects);
134
+ }
135
+ }
136
+ else if (task.nextTemporalCheckAt !== receipt.nextTemporalCheckAt) {
137
+ return temporalFailure('temporal owner task deferred check mismatch', effects);
138
+ }
139
+ return { verified: true, outcome: receipt.outcome, effects };
140
+ }
141
+ function temporalFailure(reason, effects) {
142
+ return { verified: false, reason, effects };
143
+ }
68
144
  //# sourceMappingURL=action-verifier.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"action-verifier.js","sourceRoot":"","sources":["../../src/operator/action-verifier.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;AAwCH,0CAWC;AAED,wCAmCC;AAtFD,6CAAyC;AAE5B,QAAA,eAAe,GAAG;IAC7B,gBAAgB;IAChB,aAAa;IACb,aAAa;IACb,oBAAoB;CACZ,CAAC;AA+BX,SAAgB,eAAe,CAAC,IAAkB,EAAE,KAAa;IAC/D,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;QACnC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjF,CAAC;IACD,OAAO;QACL,UAAU;QACV,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE;QAChC,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;QAC/C,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE;KACjC,CAAC;AACJ,CAAC;AAED,SAAgB,cAAc,CAC5B,IAAkB,EAClB,MAAsB,EACtB,KAAa;IAEb,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,yEAAyE;IACzE,MAAM,eAAe,GAAG,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7E,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;QACxB,QAAQ,GAAG,IAAI,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,0BAA0B,eAAe,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,sEAAsE;IACtE,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,UAAU,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QACxC,QAAQ,GAAG,IAAI,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,kCAAkC,KAAK,GAAG,CAAC,CAAC;IAC3D,CAAC;IAED,iEAAiE;IACjE,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CACpF,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CACvD,CAAC;IACF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,kBAAkB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"action-verifier.js","sourceRoot":"","sources":["../../src/operator/action-verifier.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"board-reconcile.d.ts","sourceRoot":"","sources":["../../src/operator/board-reconcile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,oBAAoB;IACnC,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,yFAAyF;AACzF,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AAEnD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAwBxE;AAED,MAAM,WAAW,yBAAyB;IACxC,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yFAAyF;IACzF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6DAA6D;IAC7D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAQD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAmC;IACvD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAmC;IACvD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IAEnC,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,OAAO,CAAS;gBAEZ,IAAI,EAAE,yBAAyB;IAU3C,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAwBlD,4EAA4E;IAC5E,aAAa,IAAI,MAAM,EAAE;IAMzB,IAAI,IAAI,IAAI;IAUZ,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,aAAa;YAcP,IAAI;CA+BnB"}
1
+ {"version":3,"file":"board-reconcile.d.ts","sourceRoot":"","sources":["../../src/operator/board-reconcile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,oBAAoB;IACnC,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,yFAAyF;AACzF,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AAEnD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CA2BxE;AAED,MAAM,WAAW,yBAAyB;IACxC,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yFAAyF;IACzF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6DAA6D;IAC7D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAQD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAmC;IACvD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAmC;IACvD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IAEnC,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,OAAO,CAAS;gBAEZ,IAAI,EAAE,yBAAyB;IAU3C,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAwBlD,4EAA4E;IAC5E,aAAa,IAAI,MAAM,EAAE;IAMzB,IAAI,IAAI,IAAI;IAUZ,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,aAAa;YAcP,IAAI;CA+BnB"}
@@ -38,6 +38,9 @@ function buildReconcilePrompt(input) {
38
38
  '5. Finish with exactly one line: RECONCILED <comma-separated slots or none>.',
39
39
  '',
40
40
  'Constraints: do not rewrite unaffected slots; no mama_save; no follow-up questions.',
41
+ '- Set due_at only from trusted, unambiguous time and time zone evidence; otherwise retain date-only precision.',
42
+ '- Never infer completion from calendar disappearance.',
43
+ '- Never copy Trello or Kagemusha lifecycle status into the native ledger.',
41
44
  '',
42
45
  `<latest-delta channel="${input.channelKey}">`,
43
46
  ...input.deltaLines,
@@ -1 +1 @@
1
- {"version":3,"file":"board-reconcile.js","sourceRoot":"","sources":["../../src/operator/board-reconcile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"board-reconcile.js","sourceRoot":"","sources":["../../src/operator/board-reconcile.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAeH,oDA2BC;AA9BD,yFAAyF;AAC5E,QAAA,mBAAmB,GAAG,eAAe,CAAC;AAEnD,SAAgB,oBAAoB,CAAC,KAA2B;IAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,UAAU,CAAC;IACrD,MAAM,KAAK,GAAG,aAAa,KAAK,CAAC,UAAU,EAAE,CAAC;IAC9C,OAAO;QACL,GAAG,2BAAmB,gBAAgB,KAAK,KAAK,KAAK,CAAC,UAAU,eAAe,KAAK,CAAC,QAAQ,GAAG;QAChG,wFAAwF;QACxF,wCAAwC;QACxC,gCAAgC;QAChC,yCAAyC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,yFAAyF,CAAC,CAAC,CAAC,EAAE,GAAG;QACnK,wFAAwF;QACxF,gFAAgF;QAChF,mFAAmF;QACnF,mFAAmF;QACnF,qFAAqF;QACrF,mFAAmF;QACnF,wDAAwD,KAAK,cAAc;QAC3E,8EAA8E;QAC9E,EAAE;QACF,qFAAqF;QACrF,gHAAgH;QAChH,uDAAuD;QACvD,2EAA2E;QAC3E,EAAE;QACF,0BAA0B,KAAK,CAAC,UAAU,IAAI;QAC9C,GAAG,KAAK,CAAC,UAAU;QACnB,iBAAiB;KAClB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAsBD,MAAa,kBAAkB;IACZ,UAAU,CAAS;IACnB,SAAS,CAAS;IAClB,gBAAgB,CAAS;IACzB,eAAe,CAAS;IACxB,GAAG,CAAmC;IACtC,GAAG,CAAmC;IACtC,GAAG,CAAe;IAE3B,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC3C,aAAa,GAAa,EAAE,CAAC;IAC7B,UAAU,GAAyC,IAAI,CAAC;IACxD,OAAO,GAAG,KAAK,CAAC;IAExB,YAAY,IAA+B;QACzC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC;QAC3C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC;QACpD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC;QAClD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IAClC,CAAC;IAED,OAAO,CAAC,UAAkB,EAAE,KAAe;QACzC,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI;YAC7C,YAAY,EAAE,EAAE;YAChB,aAAa,EAAE,IAAI;YACnB,eAAe,EAAE,IAAI;SACtB,CAAC;QACF,KAAK,CAAC,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACpF,IAAI,KAAK,CAAC,eAAe,KAAK,IAAI;YAAE,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAErC,IAAI,KAAK,CAAC,aAAa;YAAE,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC3D,qEAAqE;QACrE,mEAAmE;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,eAAe,CAAC;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC;QAClF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;YAC3B,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC,EAAE,KAAK,CAAC,CAAC;QACV,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QAChB,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,4EAA4E;IAC5E,aAAa;QACX,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;aAChC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;aAC5C,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,IAAI;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,IAAI,KAAK,CAAC,aAAa;gBAAE,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAC3D,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;QAC7B,CAAC;QACD,IAAI,IAAI,CAAC,UAAU;YAAE,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAEO,eAAe;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC;IAC3D,CAAC;IAEO,aAAa;QACnB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QAC5C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACnC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACrC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,aAAa;oBAAE,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzD,CAAC;QACH,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QAChB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,UAAkB;QACnC,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEtD,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YAC5B,4EAA4E;YAC5E,IAAI,CAAC,GAAG,CACN,wCAAwC,IAAI,CAAC,gBAAgB,kBAAkB,UAAU,KAAK,KAAK,CAAC,YAAY,CAAC,MAAM,cAAc,CACtI,CAAC;YACF,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC;QACjC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC;QACxB,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAEpC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,yEAAyE;YACzE,KAAK,CAAC,YAAY,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACpF,IAAI,KAAK,CAAC,eAAe,KAAK,IAAI;gBAAE,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvE,IAAI,CAAC,GAAG,CACN,8BAA8B,UAAU,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,wBAAwB,CACtH,CAAC;YACF,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;CACF;AApHD,gDAoHC"}
@@ -16,9 +16,9 @@ export declare function buildBoardHtmlVocabulary(): string[];
16
16
  /**
17
17
  * Pipeline slot = item tracker projection (M8 Phase 3). Injected into EVERY
18
18
  * board writer (dashboard persona, cron prompt, the trigger loop's full
19
- * report) so both writers project the same tracker. D-day arithmetic uses the
20
- * "Today is <date>" line each RUN PROMPT carries -- personas are static files
21
- * and must never bake in a date.
19
+ * report) so both writers project the same tracker. The server-derived
20
+ * temporal_state is the canonical time category; personas are static files
21
+ * and must never recompute it from a baked-in date.
22
22
  */
23
23
  export declare function buildPipelineTrackerInstructions(): string[];
24
24
  /** Instruction block that makes a report run also publish the board slots. */
@@ -1 +1 @@
1
- {"version":3,"file":"board-slot-instructions.d.ts","sourceRoot":"","sources":["../../src/operator/board-slot-instructions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,gBAAgB,mEAAoE,CAAC;AAElG,8DAA8D;AAC9D,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAenD;AAED;;;;;;GAMG;AACH,wBAAgB,gCAAgC,IAAI,MAAM,EAAE,CAe3D;AAED,8EAA8E;AAC9E,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAcjD"}
1
+ {"version":3,"file":"board-slot-instructions.d.ts","sourceRoot":"","sources":["../../src/operator/board-slot-instructions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,gBAAgB,mEAAoE,CAAC;AAElG,8DAA8D;AAC9D,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAiBnD;AAED;;;;;;GAMG;AACH,wBAAgB,gCAAgC,IAAI,MAAM,EAAE,CAsB3D;AAED,8EAA8E;AAC9E,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAcjD"}
@@ -28,8 +28,10 @@ function buildBoardHtmlVocabulary() {
28
28
  ' <span class="card-badge badge-warning">STATE</span></div>',
29
29
  ' <div class="card-tags"><span class="tag tag-channel">CHANNEL</span></div>',
30
30
  ' <div class="card-action">CONCRETE NEXT ACTION</div></div>',
31
- '- Badge classes by state: badge-danger (blocked/overdue), badge-warning (waiting/needs confirmation),',
31
+ '- Workflow badge classes: badge-danger (blocked), badge-warning (waiting/needs confirmation),',
32
32
  ' badge-info (in progress), badge-success (done/quiet).',
33
+ '- Temporal badges are separate facts: badge-danger (overdue), badge-warning (due today),',
34
+ ' badge-info (upcoming), badge-success (closed).',
33
35
  '- Pipeline table: <table class="report-table"><thead><tr><th>...</th></tr></thead><tbody>rows</tbody></table>',
34
36
  'No <script>, <iframe>, or event handlers: the board sanitizes them out and the CSP blocks them.',
35
37
  ];
@@ -37,19 +39,26 @@ function buildBoardHtmlVocabulary() {
37
39
  /**
38
40
  * Pipeline slot = item tracker projection (M8 Phase 3). Injected into EVERY
39
41
  * board writer (dashboard persona, cron prompt, the trigger loop's full
40
- * report) so both writers project the same tracker. D-day arithmetic uses the
41
- * "Today is <date>" line each RUN PROMPT carries -- personas are static files
42
- * and must never bake in a date.
42
+ * report) so both writers project the same tracker. The server-derived
43
+ * temporal_state is the canonical time category; personas are static files
44
+ * and must never recompute it from a baked-in date.
43
45
  */
44
46
  function buildPipelineTrackerInstructions() {
45
47
  return [
46
48
  'The pipeline slot is an ITEM TRACKER, not a summary. Build it from',
47
49
  'task_list({order: "deadline_priority", limit: 12}) -- the native task ledger is the',
48
50
  'projection source. Render one report-table with a row per open item:',
49
- ' #id | title | status badge | assignee (or "unassigned") | D-day | source | latest event',
50
- '- D-day: compute from the item\'s deadline against the run prompt\'s "Today is" date',
51
- ' (D-3 = due in 3 days, D+2 = 2 days overdue). No deadline -> "-".',
52
- '- Overdue -> badge-danger. Unassigned AND due within 7 days -> badge-warning with the',
51
+ ' #id | title | workflow status | temporal fact | D-day | assignee (or "unassigned") | source | latest event',
52
+ '- Temporal fact: use temporal_state as the canonical category. Show exact_overdue as',
53
+ ' "overdue since <due_at>" and date_overdue as "overdue since <deadline>".',
54
+ '- Workflow judgment: render status independently; overdue never changes status to blocked.',
55
+ '- System condition: report reconciliation retrying/authority unavailable separately; never',
56
+ ' turn an infrastructure condition into a task lifecycle status.',
57
+ '- D-day is an optional display aid computed from deadline and the run date; never use it',
58
+ ' to replace or recompute temporal_state.',
59
+ '- Never infer completion from calendar disappearance.',
60
+ '- Never copy Trello or Kagemusha lifecycle status into the native ledger.',
61
+ '- Unassigned AND due within 7 days -> badge-warning with the',
53
62
  ' literal word "unassigned" visible.',
54
63
  '- Items with auto_created true and confirmed false render "(unconfirmed)" after the title',
55
64
  ' so model-created items are visually distinct from owner-confirmed ones.',