@jungjaehoon/mama-os 0.36.0 → 0.36.1
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 +2 -1
- package/dist/agent/agent-loop.d.ts.map +1 -1
- 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 +25 -2
- package/dist/agent/code-act/host-bridge.js.map +1 -1
- package/dist/agent/code-act/type-definition-generator.d.ts.map +1 -1
- package/dist/agent/code-act/type-definition-generator.js +3 -1
- package/dist/agent/code-act/type-definition-generator.js.map +1 -1
- package/dist/agent/context-compile-service.d.ts +2 -0
- package/dist/agent/context-compile-service.d.ts.map +1 -1
- package/dist/agent/context-compile-service.js +1 -1
- package/dist/agent/context-compile-service.js.map +1 -1
- package/dist/agent/gateway-tool-executor.d.ts +5 -4
- package/dist/agent/gateway-tool-executor.d.ts.map +1 -1
- package/dist/agent/gateway-tool-executor.js +66 -20
- package/dist/agent/gateway-tool-executor.js.map +1 -1
- package/dist/api/report-handler.d.ts +9 -5
- package/dist/api/report-handler.d.ts.map +1 -1
- package/dist/api/report-handler.js +26 -13
- package/dist/api/report-handler.js.map +1 -1
- package/dist/api/report-persistence.d.ts.map +1 -1
- package/dist/api/report-persistence.js +6 -3
- package/dist/api/report-persistence.js.map +1 -1
- package/dist/api/runtime-status-handler.d.ts +1 -0
- package/dist/api/runtime-status-handler.d.ts.map +1 -1
- package/dist/api/runtime-status-handler.js +1 -0
- package/dist/api/runtime-status-handler.js.map +1 -1
- package/dist/cli/commands/start.d.ts +14 -1
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +69 -47
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/status.d.ts +6 -0
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +89 -0
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/index.js +2 -15
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/runtime/api-routes-init.d.ts +7 -1
- package/dist/cli/runtime/api-routes-init.d.ts.map +1 -1
- package/dist/cli/runtime/api-routes-init.js +104 -29
- package/dist/cli/runtime/api-routes-init.js.map +1 -1
- package/dist/cli/runtime/api-server-init.d.ts.map +1 -1
- package/dist/cli/runtime/api-server-init.js +3 -0
- package/dist/cli/runtime/api-server-init.js.map +1 -1
- package/dist/operator/action-verifier.d.ts +2 -0
- package/dist/operator/action-verifier.d.ts.map +1 -1
- package/dist/operator/action-verifier.js +3 -2
- package/dist/operator/action-verifier.js.map +1 -1
- package/dist/operator/board-reconcile.d.ts +2 -2
- package/dist/operator/board-reconcile.d.ts.map +1 -1
- package/dist/operator/board-reconcile.js +10 -2
- package/dist/operator/board-reconcile.js.map +1 -1
- package/dist/operator/board-refresh-gate.d.ts +34 -0
- package/dist/operator/board-refresh-gate.d.ts.map +1 -0
- package/dist/operator/board-refresh-gate.js +82 -0
- package/dist/operator/board-refresh-gate.js.map +1 -0
- package/dist/operator/briefs.d.ts.map +1 -1
- package/dist/operator/briefs.js +92 -4
- package/dist/operator/briefs.js.map +1 -1
- package/dist/operator/workorder-hooks.d.ts +14 -0
- package/dist/operator/workorder-hooks.d.ts.map +1 -1
- package/dist/operator/workorder-hooks.js +64 -0
- package/dist/operator/workorder-hooks.js.map +1 -1
- package/dist/operator/workorder-publishers.d.ts +10 -0
- package/dist/operator/workorder-publishers.d.ts.map +1 -1
- package/dist/operator/workorder-publishers.js +39 -8
- package/dist/operator/workorder-publishers.js.map +1 -1
- package/dist/package-version.d.ts +3 -0
- package/dist/package-version.d.ts.map +1 -0
- package/dist/package-version.js +18 -0
- package/dist/package-version.js.map +1 -0
- package/package.json +2 -2
- package/public/viewer/js/modules/system.js +1 -0
- package/public/viewer/src/modules/system.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-verifier.js","sourceRoot":"","sources":["../../src/operator/action-verifier.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;
|
|
1
|
+
{"version":3,"file":"action-verifier.js","sourceRoot":"","sources":["../../src/operator/action-verifier.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;AAiDH,0CAWC;AAED,wCAoCC;AAoBD,sEAYC;AAED,oDAqEC;AAvMD,6CAAyC;AAEzC,6DAK8B;AAEjB,QAAA,eAAe,GAAG;IAC7B,gBAAgB;IAChB,aAAa;IACb,aAAa;IACb,oBAAoB;CACZ,CAAC;AAiCX,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,MAAM,gBAAgB,GAAG,UAAU,GAAG,MAAM,CAAC,eAAe,CAAC;IAC7D,IAAI,gBAAgB,EAAE,CAAC;QACrB,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,mBAAmB,EAAE,eAAe,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC;AACvF,CAAC;AAoBD,SAAgB,6BAA6B,CAC3C,IAA0B,EAC1B,SAAiB;IAEjB,MAAM,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;IACxD,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,kDAAkD,SAAS,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,GAAG,OAAO;QACV,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAA,0CAAqB,EAAC,OAAO,CAAC,CAAC;KACzE,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,oBAAoB,CAClC,IAA0B,EAC1B,MAA8B;IAE9B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACzD,IAAI,CAAC,OAAO;QAAE,OAAO,eAAe,CAAC,iCAAiC,EAAE,OAAO,CAAC,CAAC;IACjF,MAAM,YAAY,GAAG,IAAA,kDAA6B,EAAC,OAAO,EAAE;QAC1D,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,cAAc,EAAE,MAAM,CAAC,QAAQ;KAChC,CAAC,CAAC;IACH,IAAI,YAAY;QAAE,OAAO,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAEhE,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACpE,IACE,CAAC,UAAU;QACX,UAAU,CAAC,aAAa,KAAK,MAAM,CAAC,aAAa;QACjD,UAAU,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;QACnC,UAAU,CAAC,aAAa,KAAK,MAAM,CAAC,aAAa;QACjD,UAAU,CAAC,aAAa,KAAK,MAAM,CAAC,aAAa;QACjD,UAAU,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO;QACrC,UAAU,CAAC,eAAe,KAAK,MAAM,CAAC,SAAS;QAC/C,UAAU,CAAC,WAAW,KAAK,OAAO,CAAC,OAAO,EAC1C,CAAC;QACD,OAAO,eAAe,CAAC,sCAAsC,EAAE,OAAO,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,KAAK,iBAAiB,IAAI,OAAO,CAAC,OAAO,KAAK,UAAU,CAAC;IAC7F,IACE,YAAY;QACZ,IAAI,CAAC,kBAAkB,CAAC,IAAA,0CAAqB,EAAC,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,eAAe,EAChF,CAAC;QACD,OAAO,eAAe,CAAC,6CAA6C,EAAE,OAAO,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI;QAAE,OAAO,eAAe,CAAC,qCAAqC,EAAE,OAAO,CAAC,CAAC;IAClF,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;QAC9B,OAAO,eAAe,CAAC,uCAAuC,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1C,OAAO,eAAe,CAAC,+CAA+C,EAAE,OAAO,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACtD,OAAO,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,mCAAmC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,CAAC;IACrE,CAAC;IACD,IACE,IAAI,CAAC,qBAAqB,KAAK,MAAM,CAAC,SAAS;QAC/C,IAAI,CAAC,qBAAqB,KAAK,OAAO,CAAC,SAAS,EAChD,CAAC;QACD,OAAO,eAAe,CAAC,6CAA6C,EAAE,OAAO,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,KAAK,UAAU,IAAI,OAAO,CAAC,OAAO,KAAK,iBAAiB,EAAE,CAAC;QAC5E,IACE,IAAI,CAAC,+BAA+B,KAAK,MAAM,CAAC,aAAa;YAC7D,IAAI,CAAC,mBAAmB,KAAK,IAAI,EACjC,CAAC;YACD,OAAO,eAAe,CAAC,+CAA+C,EAAE,OAAO,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;SAAM,IAAI,IAAI,CAAC,mBAAmB,KAAK,OAAO,CAAC,mBAAmB,EAAE,CAAC;QACpE,OAAO,eAAe,CAAC,6CAA6C,EAAE,OAAO,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,eAAe,CAAC,MAAc,EAAE,OAAiB;IACxD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC9C,CAAC"}
|
|
@@ -33,7 +33,7 @@ export interface ReconcileSchedulerOptions {
|
|
|
33
33
|
globalMaxPerHour?: number;
|
|
34
34
|
/** Bounded pending lines kept per channel while deferred. */
|
|
35
35
|
maxPendingLines?: number;
|
|
36
|
-
run: (channelKey: string, deltaLines: string[], eventIds: string[]) => Promise<void>;
|
|
36
|
+
run: (channelKey: string, deltaLines: string[], eventIds: string[], repairGeneration: number) => Promise<void>;
|
|
37
37
|
log: (line: string) => void;
|
|
38
38
|
now?: () => number;
|
|
39
39
|
}
|
|
@@ -50,7 +50,7 @@ export declare class ReconcileScheduler {
|
|
|
50
50
|
private retryTimer;
|
|
51
51
|
private stopped;
|
|
52
52
|
constructor(opts: ReconcileSchedulerOptions);
|
|
53
|
-
enqueue(channelKey: string, lines: string[], eventIds?: readonly string[]): void;
|
|
53
|
+
enqueue(channelKey: string, lines: string[], eventIds?: readonly string[], repairGeneration?: number): void;
|
|
54
54
|
/** Channels currently holding deferred/pending work (for observability). */
|
|
55
55
|
dirtyChannels(): string[];
|
|
56
56
|
stop(): void;
|
|
@@ -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;AAKnD,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,
|
|
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;AAKnD,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,CACH,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAAE,EACpB,QAAQ,EAAE,MAAM,EAAE,EAClB,gBAAgB,EAAE,MAAM,KACrB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAmBD,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,CACL,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,GAAE,SAAS,MAAM,EAAO,EAChC,gBAAgB,SAAI,GACnB,IAAI;IAuCP,4EAA4E;IAC5E,aAAa,IAAI,MAAM,EAAE;IAMzB,IAAI,IAAI,IAAI;IAUZ,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,aAAa;YAcP,IAAI;CAyCnB"}
|
|
@@ -41,12 +41,16 @@ class ReconcileScheduler {
|
|
|
41
41
|
this.log = opts.log;
|
|
42
42
|
this.now = opts.now ?? Date.now;
|
|
43
43
|
}
|
|
44
|
-
enqueue(channelKey, lines, eventIds = []) {
|
|
44
|
+
enqueue(channelKey, lines, eventIds = [], repairGeneration = 0) {
|
|
45
45
|
if (this.stopped)
|
|
46
46
|
return;
|
|
47
|
+
if (!Number.isSafeInteger(repairGeneration) || repairGeneration < 0) {
|
|
48
|
+
throw new Error('reconcile repairGeneration must be a non-negative safe integer');
|
|
49
|
+
}
|
|
47
50
|
const state = this.channels.get(channelKey) ?? {
|
|
48
51
|
pendingLines: [],
|
|
49
52
|
pendingEventIds: [],
|
|
53
|
+
repairGeneration: 0,
|
|
50
54
|
debounceTimer: null,
|
|
51
55
|
firstEnqueuedAt: null,
|
|
52
56
|
};
|
|
@@ -58,6 +62,7 @@ class ReconcileScheduler {
|
|
|
58
62
|
this.log(`[reconcile] ${channelKey}: cause set exceeded ${MAX_PENDING_EVENT_IDS}; dropping the oldest ${mergedIds.length - MAX_PENDING_EVENT_IDS}`);
|
|
59
63
|
}
|
|
60
64
|
state.pendingEventIds = mergedIds.slice(-MAX_PENDING_EVENT_IDS);
|
|
65
|
+
state.repairGeneration = Math.max(state.repairGeneration, repairGeneration);
|
|
61
66
|
if (state.firstEnqueuedAt === null)
|
|
62
67
|
state.firstEnqueuedAt = this.now();
|
|
63
68
|
this.channels.set(channelKey, state);
|
|
@@ -125,12 +130,14 @@ class ReconcileScheduler {
|
|
|
125
130
|
}
|
|
126
131
|
const lines = state.pendingLines;
|
|
127
132
|
const eventIds = state.pendingEventIds;
|
|
133
|
+
const repairGeneration = state.repairGeneration;
|
|
128
134
|
state.pendingLines = [];
|
|
129
135
|
state.pendingEventIds = [];
|
|
136
|
+
state.repairGeneration = 0;
|
|
130
137
|
state.firstEnqueuedAt = null;
|
|
131
138
|
this.runTimestamps.push(this.now());
|
|
132
139
|
try {
|
|
133
|
-
await this.run(channelKey, lines, eventIds);
|
|
140
|
+
await this.run(channelKey, lines, eventIds, repairGeneration);
|
|
134
141
|
}
|
|
135
142
|
catch (err) {
|
|
136
143
|
// Run failure keeps the channel dirty for retry; the scheduler survives. The cause
|
|
@@ -138,6 +145,7 @@ class ReconcileScheduler {
|
|
|
138
145
|
// would run on evidence it could no longer name.
|
|
139
146
|
state.pendingLines = [...lines, ...state.pendingLines].slice(-this.maxPendingLines);
|
|
140
147
|
state.pendingEventIds = [...new Set([...eventIds, ...state.pendingEventIds])].slice(-MAX_PENDING_EVENT_IDS);
|
|
148
|
+
state.repairGeneration = Math.max(repairGeneration, state.repairGeneration);
|
|
141
149
|
if (state.firstEnqueuedAt === null)
|
|
142
150
|
state.firstEnqueuedAt = this.now();
|
|
143
151
|
this.log(`[reconcile] run failed for ${channelKey}: ${err instanceof Error ? err.message : String(err)}; kept dirty for retry`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board-reconcile.js","sourceRoot":"","sources":["../../src/operator/board-reconcile.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAYH,yFAAyF;AAC5E,QAAA,mBAAmB,GAAG,eAAe,CAAC;AAEnD,qFAAqF;AACrF,MAAM,qBAAqB,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"board-reconcile.js","sourceRoot":"","sources":["../../src/operator/board-reconcile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory repair authority for the event-driven Board path (TG-06).
|
|
3
|
+
*
|
|
4
|
+
* The gate starts dirty so every boot earns one full repair. Channel deltas
|
|
5
|
+
* receive monotonically increasing generations before debounce/budgeting. A
|
|
6
|
+
* completion may clear only the generation it captured; later ingress stays
|
|
7
|
+
* dirty and is repaired by a later reconcile or full pass.
|
|
8
|
+
*/
|
|
9
|
+
export interface BoardRefreshGateOptions {
|
|
10
|
+
/** Test seam. Production seeds from epoch milliseconds to order across boots. */
|
|
11
|
+
initialGeneration?: number;
|
|
12
|
+
now?: () => number;
|
|
13
|
+
}
|
|
14
|
+
export interface FullRepairCapture {
|
|
15
|
+
repairGeneration: number;
|
|
16
|
+
noUpdateScope: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function boardFullNoUpdateScope(repairGeneration: number): string;
|
|
19
|
+
export declare class BoardRefreshGate {
|
|
20
|
+
private generation;
|
|
21
|
+
private readonly bootGeneration;
|
|
22
|
+
private bootDirty;
|
|
23
|
+
private readonly channelGenerations;
|
|
24
|
+
constructor(options?: BoardRefreshGateOptions);
|
|
25
|
+
needsFullRepair(): boolean;
|
|
26
|
+
markChannelDirty(channelKey: string): number;
|
|
27
|
+
dirtyGeneration(channelKey: string): number | null;
|
|
28
|
+
captureFullRepair(): FullRepairCapture;
|
|
29
|
+
completeVerifiedReconcile(channelKey: string, capturedGeneration: number): void;
|
|
30
|
+
consumeUnauthorizedPartition(channelKey: string, capturedGeneration: number): void;
|
|
31
|
+
completeVerifiedFull(capturedGeneration: number): void;
|
|
32
|
+
private clearCapturedChannelGeneration;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=board-refresh-gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"board-refresh-gate.d.ts","sourceRoot":"","sources":["../../src/operator/board-refresh-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,uBAAuB;IACtC,iFAAiF;IACjF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,sBAAsB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAGvE;AAQD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA6B;gBAEpD,OAAO,GAAE,uBAA4B;IAOjD,eAAe,IAAI,OAAO;IAI1B,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAY5C,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIlD,iBAAiB,IAAI,iBAAiB;IAOtC,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,IAAI;IAI/E,4BAA4B,CAAC,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,IAAI;IAIlF,oBAAoB,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI;IAYtD,OAAO,CAAC,8BAA8B;CAOvC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* In-memory repair authority for the event-driven Board path (TG-06).
|
|
4
|
+
*
|
|
5
|
+
* The gate starts dirty so every boot earns one full repair. Channel deltas
|
|
6
|
+
* receive monotonically increasing generations before debounce/budgeting. A
|
|
7
|
+
* completion may clear only the generation it captured; later ingress stays
|
|
8
|
+
* dirty and is repaired by a later reconcile or full pass.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.BoardRefreshGate = void 0;
|
|
12
|
+
exports.boardFullNoUpdateScope = boardFullNoUpdateScope;
|
|
13
|
+
function boardFullNoUpdateScope(repairGeneration) {
|
|
14
|
+
assertRepairGeneration(repairGeneration);
|
|
15
|
+
return `full:${repairGeneration}`;
|
|
16
|
+
}
|
|
17
|
+
function assertRepairGeneration(value) {
|
|
18
|
+
if (!Number.isSafeInteger(value) || value < 0) {
|
|
19
|
+
throw new Error(`board repair generation must be a non-negative safe integer`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
class BoardRefreshGate {
|
|
23
|
+
generation;
|
|
24
|
+
bootGeneration;
|
|
25
|
+
bootDirty = true;
|
|
26
|
+
channelGenerations = new Map();
|
|
27
|
+
constructor(options = {}) {
|
|
28
|
+
const initial = options.initialGeneration ?? (options.now ?? Date.now)();
|
|
29
|
+
assertRepairGeneration(initial);
|
|
30
|
+
this.generation = initial;
|
|
31
|
+
this.bootGeneration = initial;
|
|
32
|
+
}
|
|
33
|
+
needsFullRepair() {
|
|
34
|
+
return this.bootDirty || this.channelGenerations.size > 0;
|
|
35
|
+
}
|
|
36
|
+
markChannelDirty(channelKey) {
|
|
37
|
+
if (channelKey.length === 0) {
|
|
38
|
+
throw new Error('board repair channelKey must be non-empty');
|
|
39
|
+
}
|
|
40
|
+
if (this.generation >= Number.MAX_SAFE_INTEGER) {
|
|
41
|
+
throw new Error('board repair generation exhausted');
|
|
42
|
+
}
|
|
43
|
+
this.generation += 1;
|
|
44
|
+
this.channelGenerations.set(channelKey, this.generation);
|
|
45
|
+
return this.generation;
|
|
46
|
+
}
|
|
47
|
+
dirtyGeneration(channelKey) {
|
|
48
|
+
return this.channelGenerations.get(channelKey) ?? null;
|
|
49
|
+
}
|
|
50
|
+
captureFullRepair() {
|
|
51
|
+
return {
|
|
52
|
+
repairGeneration: this.generation,
|
|
53
|
+
noUpdateScope: boardFullNoUpdateScope(this.generation),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
completeVerifiedReconcile(channelKey, capturedGeneration) {
|
|
57
|
+
this.clearCapturedChannelGeneration(channelKey, capturedGeneration);
|
|
58
|
+
}
|
|
59
|
+
consumeUnauthorizedPartition(channelKey, capturedGeneration) {
|
|
60
|
+
this.clearCapturedChannelGeneration(channelKey, capturedGeneration);
|
|
61
|
+
}
|
|
62
|
+
completeVerifiedFull(capturedGeneration) {
|
|
63
|
+
assertRepairGeneration(capturedGeneration);
|
|
64
|
+
if (capturedGeneration >= this.bootGeneration) {
|
|
65
|
+
this.bootDirty = false;
|
|
66
|
+
}
|
|
67
|
+
for (const [channelKey, generation] of this.channelGenerations) {
|
|
68
|
+
if (generation <= capturedGeneration) {
|
|
69
|
+
this.channelGenerations.delete(channelKey);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
clearCapturedChannelGeneration(channelKey, capturedGeneration) {
|
|
74
|
+
assertRepairGeneration(capturedGeneration);
|
|
75
|
+
const current = this.channelGenerations.get(channelKey);
|
|
76
|
+
if (current !== undefined && current <= capturedGeneration) {
|
|
77
|
+
this.channelGenerations.delete(channelKey);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.BoardRefreshGate = BoardRefreshGate;
|
|
82
|
+
//# sourceMappingURL=board-refresh-gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"board-refresh-gate.js","sourceRoot":"","sources":["../../src/operator/board-refresh-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"briefs.d.ts","sourceRoot":"","sources":["../../src/operator/briefs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMvE,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,2CAA2C,CAAC;AAiCnD,wBAAgB,SAAS,CAAC,OAAO,GAAE,MAAkB,GAAG,MAAM,CAE7D;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,GAAE,MAAkB,GAAG,MAAM,CAElF;AAED,iFAAiF;AACjF,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,GAAE,MAAkB,GAAG,MAAM,GAAG,IAAI,CAIzF;
|
|
1
|
+
{"version":3,"file":"briefs.d.ts","sourceRoot":"","sources":["../../src/operator/briefs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMvE,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,2CAA2C,CAAC;AAiCnD,wBAAgB,SAAS,CAAC,OAAO,GAAE,MAAkB,GAAG,MAAM,CAE7D;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,GAAE,MAAkB,GAAG,MAAM,CAElF;AAED,iFAAiF;AACjF,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,GAAE,MAAkB,GAAG,MAAM,GAAG,IAAI,CAIzF;AAuFD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAW7D;AAkGD,mFAAmF;AACnF,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,aAAa,EACnB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,sBAAsB,GAC7B,MAAM,CAcR;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,MAAkB,GAAG,aAAa,EAAE,CAgBzE"}
|
package/dist/operator/briefs.js
CHANGED
|
@@ -69,10 +69,14 @@ function loadBrief(kind, homeDir = (0, node_os_1.homedir)()) {
|
|
|
69
69
|
const stripManagedMarker = (persona) => persona.replace(/^<!-- MAMA managed [^\n]*-->\n*/, '');
|
|
70
70
|
const BOARD_WORKORDER_CONTRACT = `
|
|
71
71
|
## Work order contract (Stage 2)
|
|
72
|
+
This managed contract supersedes any earlier Stage-2 instructions in this brief.
|
|
73
|
+
|
|
72
74
|
Your work order input is a JSON object:
|
|
73
75
|
- mode: "full" | "reconcile"
|
|
74
76
|
- force: true when the owner explicitly requested a fresh board - do NOT reply
|
|
75
77
|
NO_UPDATE; rebuild and publish even if nothing changed.
|
|
78
|
+
- repairGeneration: the host-captured Board repair generation.
|
|
79
|
+
- noUpdateScope: the exact host-authored scope for a full-run no-op.
|
|
76
80
|
- channelKey + deltaLines: present in reconcile mode only.
|
|
77
81
|
- attempts: retry counter (informational).
|
|
78
82
|
|
|
@@ -80,8 +84,12 @@ mode "full" = the scheduled board rewrite. Before writing, check whether an
|
|
|
80
84
|
update is needed: agent_notices({limit: 100}) for the last board publish
|
|
81
85
|
boundary, then a recency check (mama_search({limit: 30}) with NO query,
|
|
82
86
|
compare created_at). If nothing substantive is newer and force is not set,
|
|
83
|
-
|
|
84
|
-
|
|
87
|
+
call contract_no_update({reason, scope: input.noUpdateScope}) with that exact
|
|
88
|
+
scope when noUpdateScope is present, then respond NO_UPDATE and stop. When
|
|
89
|
+
noUpdateScope is absent, respond NO_UPDATE and stop without calling
|
|
90
|
+
contract_no_update; do not substitute or derive another scope. Otherwise follow
|
|
91
|
+
"How to Write" and publish ALL
|
|
92
|
+
FOUR slots in ONE report_publish({slots: {briefing, action_required, decisions, pipeline}}) call.
|
|
85
93
|
|
|
86
94
|
mode "reconcile" = a single-channel delta reconcile for input.channelKey using
|
|
87
95
|
input.deltaLines. Apply the RECONCILE RUN rules from this brief (the mode
|
|
@@ -101,6 +109,13 @@ host does not prescribe an outcome or tool order. You must not use task_update f
|
|
|
101
109
|
statuses, or evidence. When there are no candidates, preserve ordinary reconcile
|
|
102
110
|
behavior unchanged.
|
|
103
111
|
`;
|
|
112
|
+
const MANAGED_BOARD_CONTRACT_START = '<!-- MAMA managed board work-order contract v1:start -->';
|
|
113
|
+
const MANAGED_BOARD_CONTRACT_END = '<!-- MAMA managed board work-order contract v1:end -->';
|
|
114
|
+
const MANAGED_BOARD_WORKORDER_CONTRACT = [
|
|
115
|
+
MANAGED_BOARD_CONTRACT_START,
|
|
116
|
+
BOARD_WORKORDER_CONTRACT.trim(),
|
|
117
|
+
MANAGED_BOARD_CONTRACT_END,
|
|
118
|
+
].join('\n');
|
|
104
119
|
const WIKI_WORKORDER_CONTRACT = `
|
|
105
120
|
## Work order contract (Stage 2)
|
|
106
121
|
Your work order input is a JSON object: { batchId, events, attempts }.
|
|
@@ -133,7 +148,7 @@ scheduledAt as the current time reference.
|
|
|
133
148
|
function buildDefaultBrief(kind) {
|
|
134
149
|
switch (kind) {
|
|
135
150
|
case 'board':
|
|
136
|
-
return `${stripManagedMarker(dashboard_agent_persona_js_1.DASHBOARD_AGENT_PERSONA)}\n${
|
|
151
|
+
return `${stripManagedMarker(dashboard_agent_persona_js_1.DASHBOARD_AGENT_PERSONA)}\n\n${MANAGED_BOARD_WORKORDER_CONTRACT}\n`;
|
|
137
152
|
case 'wiki':
|
|
138
153
|
return `${stripManagedMarker(wiki_agent_persona_js_1.WIKI_AGENT_PERSONA)}\n${WIKI_WORKORDER_CONTRACT}`;
|
|
139
154
|
case 'memory-curation':
|
|
@@ -155,10 +170,83 @@ function stripLegacyPrivateLines(kind, raw) {
|
|
|
155
170
|
}
|
|
156
171
|
return projected;
|
|
157
172
|
}
|
|
173
|
+
function openingMarkdownFence(line) {
|
|
174
|
+
const match = /^ {0,3}(`{3,}|~{3,})/.exec(line);
|
|
175
|
+
if (!match?.[1])
|
|
176
|
+
return null;
|
|
177
|
+
return {
|
|
178
|
+
marker: match[1][0],
|
|
179
|
+
length: match[1].length,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
function closesMarkdownFence(line, fence) {
|
|
183
|
+
const marker = fence.marker === '`' ? '\\`' : '~';
|
|
184
|
+
return new RegExp(`^ {0,3}${marker}{${fence.length},}[ \\t]*$`).test(line);
|
|
185
|
+
}
|
|
186
|
+
function findManagedBoardContracts(raw) {
|
|
187
|
+
let fence = null;
|
|
188
|
+
let pending = null;
|
|
189
|
+
const contracts = [];
|
|
190
|
+
let lineStart = 0;
|
|
191
|
+
while (lineStart < raw.length) {
|
|
192
|
+
const newline = raw.indexOf('\n', lineStart);
|
|
193
|
+
const nextLineStart = newline === -1 ? raw.length : newline + 1;
|
|
194
|
+
let contentEnd = newline === -1 ? raw.length : newline;
|
|
195
|
+
if (contentEnd > lineStart && raw[contentEnd - 1] === '\r') {
|
|
196
|
+
contentEnd -= 1;
|
|
197
|
+
}
|
|
198
|
+
const line = raw.slice(lineStart, contentEnd);
|
|
199
|
+
if (fence) {
|
|
200
|
+
if (closesMarkdownFence(line, fence)) {
|
|
201
|
+
fence = null;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
const openingFence = openingMarkdownFence(line);
|
|
206
|
+
if (openingFence) {
|
|
207
|
+
fence = openingFence;
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
const start = /^<!-- MAMA managed board work-order contract v(\d+):start -->$/.exec(line);
|
|
211
|
+
if (start?.[1]) {
|
|
212
|
+
pending = { start: lineStart, version: start[1] };
|
|
213
|
+
}
|
|
214
|
+
else if (pending) {
|
|
215
|
+
const end = /^<!-- MAMA managed board work-order contract v(\d+):end -->$/.exec(line);
|
|
216
|
+
if (end?.[1] === pending.version) {
|
|
217
|
+
contracts.push({ start: pending.start, end: contentEnd });
|
|
218
|
+
pending = null;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
lineStart = nextLineStart;
|
|
224
|
+
}
|
|
225
|
+
return contracts;
|
|
226
|
+
}
|
|
227
|
+
function projectCurrentBoardContract(raw) {
|
|
228
|
+
const managed = findManagedBoardContracts(raw);
|
|
229
|
+
if (managed.length === 0) {
|
|
230
|
+
const separator = raw.length === 0 ? '' : raw.endsWith('\n\n') ? '' : raw.endsWith('\n') ? '\n' : '\n\n';
|
|
231
|
+
return `${raw}${separator}${MANAGED_BOARD_WORKORDER_CONTRACT}\n`;
|
|
232
|
+
}
|
|
233
|
+
let projected = '';
|
|
234
|
+
let cursor = 0;
|
|
235
|
+
for (const [index, contract] of managed.entries()) {
|
|
236
|
+
projected += raw.slice(cursor, contract.start);
|
|
237
|
+
if (index === 0) {
|
|
238
|
+
projected += MANAGED_BOARD_WORKORDER_CONTRACT;
|
|
239
|
+
}
|
|
240
|
+
cursor = contract.end;
|
|
241
|
+
}
|
|
242
|
+
return projected + raw.slice(cursor);
|
|
243
|
+
}
|
|
158
244
|
/** Project a user-owned work-order brief for one run without changing its file. */
|
|
159
245
|
function projectWorkOrderBriefForPrompt(kind, raw, policy) {
|
|
160
246
|
const overlay = (0, private_prompt_overlay_js_1.buildPrivatePromptOverlay)((0, private_connector_policy_js_1.resolveWorkOrderPrivateSurface)(kind), policy);
|
|
161
|
-
const
|
|
247
|
+
const withoutMarkedOverlay = (0, private_prompt_overlay_js_1.stripMarkedPrivatePromptOverlays)(raw);
|
|
248
|
+
const contracted = kind === 'board' ? projectCurrentBoardContract(withoutMarkedOverlay) : withoutMarkedOverlay;
|
|
249
|
+
const projected = (0, private_prompt_overlay_js_1.stripDisabledPrivatePromptRecipes)(stripLegacyPrivateLines(kind, contracted), overlay.length > 0);
|
|
162
250
|
if (!overlay) {
|
|
163
251
|
return projected;
|
|
164
252
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"briefs.js","sourceRoot":"","sources":["../../src/operator/briefs.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AA+CH,8BAEC;AAED,8BAEC;AAGD,8BAIC;
|
|
1
|
+
{"version":3,"file":"briefs.js","sourceRoot":"","sources":["../../src/operator/briefs.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,18 @@ import type { WorkOrderEffectVerdict, WorkOrderHook } from './workorder-consumer
|
|
|
19
19
|
export interface BoardCandidateReceiptInspector {
|
|
20
20
|
inspectBoardCandidateAttempt(attemptId: number): BoardCandidateAttemptState;
|
|
21
21
|
}
|
|
22
|
+
export interface BoardRefreshGatePort {
|
|
23
|
+
completeVerifiedReconcile(channelKey: string, capturedGeneration: number): void;
|
|
24
|
+
completeVerifiedFull(capturedGeneration: number): void;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Clear repair dirt only when both independent authorities agree: the
|
|
28
|
+
* run-bound action verifier observed an effect and candidate receipts (when
|
|
29
|
+
* present) are complete. The receipt verdict remains the consumer verdict so
|
|
30
|
+
* the existing retry policy is unchanged; unverified prose simply leaves the
|
|
31
|
+
* gate dirty for the scheduled repair pass.
|
|
32
|
+
*/
|
|
33
|
+
export declare function applyBoardRefreshVerdict(workOrder: WorkOrderRecord, actionVerified: boolean, receiptVerdict: WorkOrderEffectVerdict, gate: BoardRefreshGatePort): WorkOrderEffectVerdict;
|
|
22
34
|
/** Candidate completion is established by receipts, never verifier telemetry. */
|
|
23
35
|
export declare function boardCandidateReceiptVerdict(workOrder: WorkOrderRecord, inspector: BoardCandidateReceiptInspector | null | undefined): WorkOrderEffectVerdict;
|
|
24
36
|
/**
|
|
@@ -59,6 +71,8 @@ export interface WorkerTraceQueries {
|
|
|
59
71
|
getTraceMaxId: () => number;
|
|
60
72
|
countObligatedTraceRowsSince: (maxId: number) => number;
|
|
61
73
|
}
|
|
74
|
+
/** Completed, attempt-bound report_publish evidence for a complete Board repair. */
|
|
75
|
+
export declare function buildFullBoardTraceQueries(sessionsDb: SQLiteDatabase | undefined, workerChannelId: string, workorderAttemptId: number): WorkerTraceQueries;
|
|
62
76
|
export declare function buildWorkerTraceQueries(sessionsDb: SQLiteDatabase | undefined, workerChannelId: string, obligatedTools?: readonly string[]): WorkerTraceQueries;
|
|
63
77
|
export interface PromotionHookEvents {
|
|
64
78
|
emitAgentAction: (action: 'promoted' | 'no_update', target: string) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workorder-hooks.d.ts","sourceRoot":"","sources":["../../src/operator/workorder-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAErF,MAAM,WAAW,8BAA8B;IAC7C,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,0BAA0B,CAAC;CAC7E;AAED,iFAAiF;AACjF,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,eAAe,EAC1B,SAAS,EAAE,8BAA8B,GAAG,IAAI,GAAG,SAAS,GAC3D,sBAAsB,CAmBxB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,oBAAoB;;;;CAkBqB,CAAC;AAEvD;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB;;;CAGyB,CAAC;AAavD,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,MAAM,CAAC;IAC5B,4BAA4B,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACzD;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,cAAc,GAAG,SAAS,EACtC,eAAe,EAAE,MAAM,EACvB,cAAc,GAAE,SAAS,MAAM,EAAoB,GAClD,kBAAkB,CAkCpB;AAED,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5E,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,SAAS;IACxB,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAMzD;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,MAAM,GACjB;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAqBrC;AAED,MAAM,WAAW,iBAAiB;IAChC,+DAA+D;IAC/D,MAAM,EAAE,kBAAkB,CAAC;IAC3B;;;OAGG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,yEAAyE;IACzE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,mBAAmB,EAC3B,IAAI,CAAC,EAAE,iBAAiB,GACvB,CAAC,EAAE,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAiCnE;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC3B,IAAI,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,GACpC,CAAC,EAAE,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAmBnE;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,oBAAoB,GAAG,aAAa,CAsBpF"}
|
|
1
|
+
{"version":3,"file":"workorder-hooks.d.ts","sourceRoot":"","sources":["../../src/operator/workorder-hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,9 @@
|
|
|
15
15
|
*/
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.LANE_WRITE_TOOLS = exports.LANE_OBLIGATED_TOOLS = void 0;
|
|
18
|
+
exports.applyBoardRefreshVerdict = applyBoardRefreshVerdict;
|
|
18
19
|
exports.boardCandidateReceiptVerdict = boardCandidateReceiptVerdict;
|
|
20
|
+
exports.buildFullBoardTraceQueries = buildFullBoardTraceQueries;
|
|
19
21
|
exports.buildWorkerTraceQueries = buildWorkerTraceQueries;
|
|
20
22
|
exports.readLaneClaim = readLaneClaim;
|
|
21
23
|
exports.reconcileClaimAgainstTraces = reconcileClaimAgainstTraces;
|
|
@@ -24,6 +26,32 @@ exports.buildWikiAfterHook = buildWikiAfterHook;
|
|
|
24
26
|
exports.buildTemporalWorkOrderHook = buildTemporalWorkOrderHook;
|
|
25
27
|
const action_verifier_js_1 = require("./action-verifier.js");
|
|
26
28
|
const action_verifier_js_2 = require("./action-verifier.js");
|
|
29
|
+
/**
|
|
30
|
+
* Clear repair dirt only when both independent authorities agree: the
|
|
31
|
+
* run-bound action verifier observed an effect and candidate receipts (when
|
|
32
|
+
* present) are complete. The receipt verdict remains the consumer verdict so
|
|
33
|
+
* the existing retry policy is unchanged; unverified prose simply leaves the
|
|
34
|
+
* gate dirty for the scheduled repair pass.
|
|
35
|
+
*/
|
|
36
|
+
function applyBoardRefreshVerdict(workOrder, actionVerified, receiptVerdict, gate) {
|
|
37
|
+
if (!actionVerified || receiptVerdict.disposition !== 'complete') {
|
|
38
|
+
return receiptVerdict;
|
|
39
|
+
}
|
|
40
|
+
const generation = workOrder.payload.repairGeneration;
|
|
41
|
+
if (!Number.isSafeInteger(generation) || generation < 0) {
|
|
42
|
+
return receiptVerdict;
|
|
43
|
+
}
|
|
44
|
+
if (workOrder.payload.mode === 'reconcile') {
|
|
45
|
+
const channelKey = workOrder.payload.channelKey;
|
|
46
|
+
if (typeof channelKey === 'string' && channelKey.length > 0) {
|
|
47
|
+
gate.completeVerifiedReconcile(channelKey, generation);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else if (workOrder.payload.mode === 'full') {
|
|
51
|
+
gate.completeVerifiedFull(generation);
|
|
52
|
+
}
|
|
53
|
+
return receiptVerdict;
|
|
54
|
+
}
|
|
27
55
|
/** Candidate completion is established by receipts, never verifier telemetry. */
|
|
28
56
|
function boardCandidateReceiptVerdict(workOrder, inspector) {
|
|
29
57
|
const candidates = workOrder.payload.candidates;
|
|
@@ -103,6 +131,42 @@ function traceToolList(tools) {
|
|
|
103
131
|
}
|
|
104
132
|
return tools.map((t) => `'${t}'`).join(',');
|
|
105
133
|
}
|
|
134
|
+
const REQUIRED_FULL_BOARD_SLOTS = ['briefing', 'action_required', 'decisions', 'pipeline'];
|
|
135
|
+
/** Completed, attempt-bound report_publish evidence for a complete Board repair. */
|
|
136
|
+
function buildFullBoardTraceQueries(sessionsDb, workerChannelId, workorderAttemptId) {
|
|
137
|
+
if (!Number.isSafeInteger(workorderAttemptId) || workorderAttemptId < 1) {
|
|
138
|
+
throw new Error('[workorder-hooks] full Board attempt id must be a positive integer');
|
|
139
|
+
}
|
|
140
|
+
const requiredSlotPredicates = REQUIRED_FULL_BOARD_SLOTS.map(() => `EXISTS (SELECT 1 FROM json_each(json_extract(details, '$.report_slot_ids')) WHERE value = ?)`).join(' AND ');
|
|
141
|
+
return {
|
|
142
|
+
getTraceMaxId: () => {
|
|
143
|
+
if (!sessionsDb)
|
|
144
|
+
return 0;
|
|
145
|
+
const row = sessionsDb
|
|
146
|
+
.prepare(`SELECT MAX(id) AS max_id FROM agent_activity
|
|
147
|
+
WHERE type = 'gateway_tool_call'
|
|
148
|
+
AND json_extract(details, '$.channel_id') = ?`)
|
|
149
|
+
.get(workerChannelId);
|
|
150
|
+
return row.max_id ?? 0;
|
|
151
|
+
},
|
|
152
|
+
countObligatedTraceRowsSince: (maxId) => {
|
|
153
|
+
if (!sessionsDb)
|
|
154
|
+
return 0;
|
|
155
|
+
const row = sessionsDb
|
|
156
|
+
.prepare(`SELECT COUNT(*) AS n FROM agent_activity
|
|
157
|
+
WHERE type = 'gateway_tool_call'
|
|
158
|
+
AND json_extract(details, '$.channel_id') = ?
|
|
159
|
+
AND json_extract(details, '$.workorder_attempt_id') = ?
|
|
160
|
+
AND execution_status = 'completed'
|
|
161
|
+
AND id > ?
|
|
162
|
+
AND normalized_tool_name = 'report_publish'
|
|
163
|
+
AND json_type(details, '$.report_slot_ids') = 'array'
|
|
164
|
+
AND ${requiredSlotPredicates}`)
|
|
165
|
+
.get(workerChannelId, workorderAttemptId, maxId, ...REQUIRED_FULL_BOARD_SLOTS);
|
|
166
|
+
return row.n;
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
}
|
|
106
170
|
function buildWorkerTraceQueries(sessionsDb, workerChannelId, obligatedTools = action_verifier_js_1.OBLIGATED_TOOLS) {
|
|
107
171
|
const TRACE_TOOL_LIST = traceToolList(obligatedTools);
|
|
108
172
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workorder-hooks.js","sourceRoot":"","sources":["../../src/operator/workorder-hooks.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;
|
|
1
|
+
{"version":3,"file":"workorder-hooks.js","sourceRoot":"","sources":["../../src/operator/workorder-hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,12 @@ export declare const STAGE2_FLAG_ENV = "MAMA_STAGE2_WORKORDERS";
|
|
|
19
19
|
*/
|
|
20
20
|
export declare function assertStage2FlagCompatible(env?: NodeJS.ProcessEnv): void;
|
|
21
21
|
export declare function boardFullKey(now: number): string;
|
|
22
|
+
/**
|
|
23
|
+
* Enabled reconcile mode has one repair occurrence open at a time. TaskLedger
|
|
24
|
+
* dedupes this key only while pending/in-progress; terminal rows release it so
|
|
25
|
+
* a later dirty generation can reuse the same key.
|
|
26
|
+
*/
|
|
27
|
+
export declare function boardRepairKey(): string;
|
|
22
28
|
/** Manual/forced orders get their own key (plan M2): a forced refresh must
|
|
23
29
|
* never dedup against a pending scheduled FULL that lacks force. */
|
|
24
30
|
export declare function boardManualKey(now: number): string;
|
|
@@ -37,6 +43,10 @@ export interface BoardPayload {
|
|
|
37
43
|
mode: 'full' | 'reconcile';
|
|
38
44
|
/** Owner-forced refresh: brief must publish even on NO_UPDATE. */
|
|
39
45
|
force?: boolean;
|
|
46
|
+
/** Gate generation captured before enqueue. */
|
|
47
|
+
repairGeneration?: number;
|
|
48
|
+
/** Exact full-run contract_no_update scope: full:<repairGeneration>. */
|
|
49
|
+
noUpdateScope?: string;
|
|
40
50
|
channelKey?: string;
|
|
41
51
|
readonly deltaLines?: readonly string[];
|
|
42
52
|
/** The delta batch this reconcile rests on; becomes the cause of what it changes. */
|