@jungjaehoon/mama-os 0.36.0 → 0.37.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 (158) hide show
  1. package/dist/agent/agent-loop.d.ts +2 -1
  2. package/dist/agent/agent-loop.d.ts.map +1 -1
  3. package/dist/agent/agent-loop.js +17 -12
  4. package/dist/agent/agent-loop.js.map +1 -1
  5. package/dist/agent/code-act/host-bridge.d.ts.map +1 -1
  6. package/dist/agent/code-act/host-bridge.js +27 -2
  7. package/dist/agent/code-act/host-bridge.js.map +1 -1
  8. package/dist/agent/code-act/type-definition-generator.d.ts.map +1 -1
  9. package/dist/agent/code-act/type-definition-generator.js +3 -1
  10. package/dist/agent/code-act/type-definition-generator.js.map +1 -1
  11. package/dist/agent/context-compile-service.d.ts +2 -0
  12. package/dist/agent/context-compile-service.d.ts.map +1 -1
  13. package/dist/agent/context-compile-service.js +1 -1
  14. package/dist/agent/context-compile-service.js.map +1 -1
  15. package/dist/agent/drive-tools.d.ts +27 -1
  16. package/dist/agent/drive-tools.d.ts.map +1 -1
  17. package/dist/agent/drive-tools.js +68 -2
  18. package/dist/agent/drive-tools.js.map +1 -1
  19. package/dist/agent/gateway-tool-executor.d.ts +11 -6
  20. package/dist/agent/gateway-tool-executor.d.ts.map +1 -1
  21. package/dist/agent/gateway-tool-executor.js +210 -37
  22. package/dist/agent/gateway-tool-executor.js.map +1 -1
  23. package/dist/agent/gateway-tools.md +2 -2
  24. package/dist/agent/tool-registry.js +2 -2
  25. package/dist/agent/tool-registry.js.map +1 -1
  26. package/dist/agent/types.d.ts +15 -0
  27. package/dist/agent/types.d.ts.map +1 -1
  28. package/dist/agent/types.js.map +1 -1
  29. package/dist/api/report-handler.d.ts +9 -5
  30. package/dist/api/report-handler.d.ts.map +1 -1
  31. package/dist/api/report-handler.js +26 -13
  32. package/dist/api/report-handler.js.map +1 -1
  33. package/dist/api/report-persistence.d.ts.map +1 -1
  34. package/dist/api/report-persistence.js +6 -3
  35. package/dist/api/report-persistence.js.map +1 -1
  36. package/dist/api/runtime-status-handler.d.ts +1 -0
  37. package/dist/api/runtime-status-handler.d.ts.map +1 -1
  38. package/dist/api/runtime-status-handler.js +1 -0
  39. package/dist/api/runtime-status-handler.js.map +1 -1
  40. package/dist/cli/commands/start.d.ts +14 -20
  41. package/dist/cli/commands/start.d.ts.map +1 -1
  42. package/dist/cli/commands/start.js +207 -248
  43. package/dist/cli/commands/start.js.map +1 -1
  44. package/dist/cli/commands/status.d.ts +6 -0
  45. package/dist/cli/commands/status.d.ts.map +1 -1
  46. package/dist/cli/commands/status.js +89 -0
  47. package/dist/cli/commands/status.js.map +1 -1
  48. package/dist/cli/config/types.d.ts +0 -21
  49. package/dist/cli/config/types.d.ts.map +1 -1
  50. package/dist/cli/config/types.js +0 -7
  51. package/dist/cli/config/types.js.map +1 -1
  52. package/dist/cli/index.js +2 -15
  53. package/dist/cli/index.js.map +1 -1
  54. package/dist/cli/runtime/agent-loop-init.d.ts +2 -2
  55. package/dist/cli/runtime/agent-loop-init.d.ts.map +1 -1
  56. package/dist/cli/runtime/agent-loop-init.js +3 -3
  57. package/dist/cli/runtime/agent-loop-init.js.map +1 -1
  58. package/dist/cli/runtime/api-routes-init.d.ts +7 -1
  59. package/dist/cli/runtime/api-routes-init.d.ts.map +1 -1
  60. package/dist/cli/runtime/api-routes-init.js +99 -38
  61. package/dist/cli/runtime/api-routes-init.js.map +1 -1
  62. package/dist/cli/runtime/api-server-init.d.ts.map +1 -1
  63. package/dist/cli/runtime/api-server-init.js +3 -0
  64. package/dist/cli/runtime/api-server-init.js.map +1 -1
  65. package/dist/gateways/message-router.js +10 -10
  66. package/dist/gateways/message-router.js.map +1 -1
  67. package/dist/gateways/telegram.d.ts +2 -2
  68. package/dist/gateways/telegram.d.ts.map +1 -1
  69. package/dist/gateways/telegram.js +13 -7
  70. package/dist/gateways/telegram.js.map +1 -1
  71. package/dist/multi-agent/agent-event-bus.d.ts +0 -5
  72. package/dist/multi-agent/agent-event-bus.d.ts.map +1 -1
  73. package/dist/multi-agent/agent-event-bus.js.map +1 -1
  74. package/dist/operator/action-verifier.d.ts +2 -0
  75. package/dist/operator/action-verifier.d.ts.map +1 -1
  76. package/dist/operator/action-verifier.js +3 -2
  77. package/dist/operator/action-verifier.js.map +1 -1
  78. package/dist/operator/board-reconcile.d.ts +2 -2
  79. package/dist/operator/board-reconcile.d.ts.map +1 -1
  80. package/dist/operator/board-reconcile.js +10 -2
  81. package/dist/operator/board-reconcile.js.map +1 -1
  82. package/dist/operator/board-refresh-gate.d.ts +34 -0
  83. package/dist/operator/board-refresh-gate.d.ts.map +1 -0
  84. package/dist/operator/board-refresh-gate.js +82 -0
  85. package/dist/operator/board-refresh-gate.js.map +1 -0
  86. package/dist/operator/briefs.d.ts.map +1 -1
  87. package/dist/operator/briefs.js +92 -4
  88. package/dist/operator/briefs.js.map +1 -1
  89. package/dist/operator/operator-trigger-loop.d.ts +7 -22
  90. package/dist/operator/operator-trigger-loop.d.ts.map +1 -1
  91. package/dist/operator/operator-trigger-loop.js +33 -34
  92. package/dist/operator/operator-trigger-loop.js.map +1 -1
  93. package/dist/operator/owner-event-effects.d.ts +34 -0
  94. package/dist/operator/owner-event-effects.d.ts.map +1 -0
  95. package/dist/operator/owner-event-effects.js +131 -0
  96. package/dist/operator/owner-event-effects.js.map +1 -0
  97. package/dist/operator/{conductor-inbox.d.ts → owner-event-inbox.d.ts} +23 -12
  98. package/dist/operator/owner-event-inbox.d.ts.map +1 -0
  99. package/dist/operator/{conductor-inbox.js → owner-event-inbox.js} +97 -40
  100. package/dist/operator/owner-event-inbox.js.map +1 -0
  101. package/dist/operator/owner-event-loop.d.ts +59 -0
  102. package/dist/operator/owner-event-loop.d.ts.map +1 -0
  103. package/dist/operator/owner-event-loop.js +141 -0
  104. package/dist/operator/owner-event-loop.js.map +1 -0
  105. package/dist/operator/owner-event-outcome.d.ts +30 -0
  106. package/dist/operator/owner-event-outcome.d.ts.map +1 -0
  107. package/dist/operator/owner-event-outcome.js +108 -0
  108. package/dist/operator/owner-event-outcome.js.map +1 -0
  109. package/dist/operator/owner-event-policy.d.ts +20 -0
  110. package/dist/operator/owner-event-policy.d.ts.map +1 -0
  111. package/dist/operator/owner-event-policy.js +50 -0
  112. package/dist/operator/owner-event-policy.js.map +1 -0
  113. package/dist/operator/owner-event-prompt.d.ts +10 -0
  114. package/dist/operator/owner-event-prompt.d.ts.map +1 -0
  115. package/dist/operator/owner-event-prompt.js +63 -0
  116. package/dist/operator/owner-event-prompt.js.map +1 -0
  117. package/dist/operator/task-ledger.d.ts +2 -0
  118. package/dist/operator/task-ledger.d.ts.map +1 -1
  119. package/dist/operator/task-ledger.js +12 -1
  120. package/dist/operator/task-ledger.js.map +1 -1
  121. package/dist/operator/trigger-matcher.d.ts.map +1 -1
  122. package/dist/operator/trigger-matcher.js +4 -1
  123. package/dist/operator/trigger-matcher.js.map +1 -1
  124. package/dist/operator/trigger-registry.d.ts +1 -1
  125. package/dist/operator/trigger-registry.d.ts.map +1 -1
  126. package/dist/operator/trigger-registry.js +2 -2
  127. package/dist/operator/trigger-registry.js.map +1 -1
  128. package/dist/operator/trigger-types.d.ts +2 -0
  129. package/dist/operator/trigger-types.d.ts.map +1 -1
  130. package/dist/operator/workorder-hooks.d.ts +14 -0
  131. package/dist/operator/workorder-hooks.d.ts.map +1 -1
  132. package/dist/operator/workorder-hooks.js +64 -0
  133. package/dist/operator/workorder-hooks.js.map +1 -1
  134. package/dist/operator/workorder-publishers.d.ts +14 -4
  135. package/dist/operator/workorder-publishers.d.ts.map +1 -1
  136. package/dist/operator/workorder-publishers.js +51 -13
  137. package/dist/operator/workorder-publishers.js.map +1 -1
  138. package/dist/package-version.d.ts +3 -0
  139. package/dist/package-version.d.ts.map +1 -0
  140. package/dist/package-version.js +18 -0
  141. package/dist/package-version.js.map +1 -0
  142. package/package.json +2 -2
  143. package/public/viewer/js/modules/system.js +1 -0
  144. package/public/viewer/src/modules/system.ts +2 -0
  145. package/dist/operator/board-reground.d.ts +0 -19
  146. package/dist/operator/board-reground.d.ts.map +0 -1
  147. package/dist/operator/board-reground.js +0 -31
  148. package/dist/operator/board-reground.js.map +0 -1
  149. package/dist/operator/conductor-inbox.d.ts.map +0 -1
  150. package/dist/operator/conductor-inbox.js.map +0 -1
  151. package/dist/operator/conductor-session.d.ts +0 -55
  152. package/dist/operator/conductor-session.d.ts.map +0 -1
  153. package/dist/operator/conductor-session.js +0 -110
  154. package/dist/operator/conductor-session.js.map +0 -1
  155. package/dist/operator/conductor.d.ts +0 -69
  156. package/dist/operator/conductor.d.ts.map +0 -1
  157. package/dist/operator/conductor.js +0 -90
  158. package/dist/operator/conductor.js.map +0 -1
@@ -1,110 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ConductorSession = exports.CONDUCTOR_POOL_KEY = exports.CONDUCTOR_SESSION_KEY = exports.CONDUCTOR_CHANNEL_ID = exports.CONDUCTOR_SOURCE = void 0;
4
- /**
5
- * Session lifecycle for the stateful conductor.
6
- *
7
- * Injected text persists in a long-lived buffer - that is the pivot's one new
8
- * risk, and this class is the antidote: sessions are disposable on age, turn,
9
- * token, idle, or suspicion budgets, and every fresh session (boot included)
10
- * owes the board one re-ground before its first judgment. State survives
11
- * because it lives in cards; the buffer never has to.
12
- *
13
- * Recycle does NOT touch the pool directly: agent-loop's `freshSession: true`
14
- * is the one sanctioned reset path (it resets the pool entry AND marks the
15
- * run new in the same place - review F5: `pool.resetSession()` alone swaps a
16
- * UUID while the fallback branch overwrites `resumeSession` with the pool's
17
- * own `isNew`, so the old buffer survives). The conductor passes
18
- * `freshSession: true` whenever `needsReground()` is true.
19
- */
20
- const session_pool_js_1 = require("../agent/session-pool.js");
21
- exports.CONDUCTOR_SOURCE = 'conductor';
22
- exports.CONDUCTOR_CHANNEL_ID = 'conductor';
23
- // THREE keys, one identity. The LANE comes from the session key's FIRST
24
- // `:` segment (agent-loop.ts resolveGlobalLaneForSession) - NOT from
25
- // options.source. 'operator:conductor' would resolve to the GLOBAL operator
26
- // lane where Stage-2 workers serialize (review F1), so the key must lead
27
- // with a segment absent from SOURCE_GLOBAL_LANES.
28
- exports.CONDUCTOR_SESSION_KEY = 'conductor:main'; // lane: session:conductor:main
29
- /** Pool identity: agent-loop derives it from (source, channelId). */
30
- exports.CONDUCTOR_POOL_KEY = (0, session_pool_js_1.buildChannelKey)(exports.CONDUCTOR_SOURCE, exports.CONDUCTOR_CHANNEL_ID);
31
- const DEFAULTS = {
32
- maxAgeMs: 6 * 60 * 60 * 1000,
33
- maxTurns: 400,
34
- // Below the pool's own 160k context threshold (session-pool.ts
35
- // CONTEXT_THRESHOLD_TOKENS) so the conductor always recycles BEFORE the
36
- // pool silently swaps the session out from under it.
37
- maxTokens: 150_000,
38
- idleExpiryMs: 25 * 60 * 1000,
39
- };
40
- class ConductorSession {
41
- pool;
42
- now;
43
- policy;
44
- bornAt;
45
- turns = 0;
46
- lastRunAt;
47
- suspicion = null;
48
- regroundDue = true; // boot = fresh session = restart recovery
49
- constructor(pool, policy = {}, now = () => Date.now()) {
50
- this.pool = pool;
51
- this.now = now;
52
- this.policy = { ...DEFAULTS, ...policy };
53
- this.bornAt = this.now();
54
- this.lastRunAt = this.bornAt;
55
- }
56
- noteTurn() {
57
- this.turns += 1;
58
- this.lastRunAt = this.now();
59
- }
60
- /**
61
- * Force a recycle on the next tick. No production detector calls this yet -
62
- * wiring one (denied-tool patterns, instruction-shaped batch lines) is named
63
- * S2 work. The recycle path itself is pinned by tests so the hook is live
64
- * the day a detector exists.
65
- */
66
- flagSuspicion(reason) {
67
- this.suspicion = reason;
68
- }
69
- shouldRecycle() {
70
- if (this.suspicion) {
71
- return `suspicion: ${this.suspicion}`;
72
- }
73
- if (this.now() - this.bornAt > this.policy.maxAgeMs) {
74
- return 'max_age';
75
- }
76
- if (this.now() - this.lastRunAt > this.policy.idleExpiryMs) {
77
- return 'idle_expiry';
78
- }
79
- if (this.turns >= this.policy.maxTurns) {
80
- return 'max_turns';
81
- }
82
- if (this.pool.getTokenUsage(exports.CONDUCTOR_POOL_KEY) >= this.policy.maxTokens) {
83
- return 'max_tokens';
84
- }
85
- return null;
86
- }
87
- recycle(reason) {
88
- this.bornAt = this.now();
89
- this.lastRunAt = this.bornAt;
90
- this.turns = 0;
91
- this.suspicion = null;
92
- this.regroundDue = true;
93
- return { needsReground: true, reason };
94
- }
95
- /** Read-only: does the next run owe the board a re-ground? */
96
- needsReground() {
97
- return this.regroundDue;
98
- }
99
- /**
100
- * Called ONLY after a successful re-grounded run. A failed run must not
101
- * consume the re-ground - the retry still owes the board its context
102
- * (review: consume-before-run dropped the re-ground on the floor when the
103
- * first run of a fresh session threw).
104
- */
105
- markRegrounded() {
106
- this.regroundDue = false;
107
- }
108
- }
109
- exports.ConductorSession = ConductorSession;
110
- //# sourceMappingURL=conductor-session.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conductor-session.js","sourceRoot":"","sources":["../../src/operator/conductor-session.ts"],"names":[],"mappings":"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"}
@@ -1,69 +0,0 @@
1
- /**
2
- * The stateful conductor: consumes the durable inbox, judges each batch in
3
- * ONE long-lived session, and delegates by COMMITTING work orders only - it
4
- * never awaits a worker from its model turn.
5
- *
6
- * Lane: the session key 'conductor:main' leads with a segment absent from
7
- * SOURCE_GLOBAL_LANES, so runs land on session:conductor:main - fully
8
- * separate from the global operator lane where Stage-2 workers serialize
9
- * (worker-run.ts documents the deadlock seal). The lane is derived from the
10
- * session key's FIRST segment, not options.source (agent-loop.ts
11
- * resolveGlobalLaneForSession) - tests pin this axis.
12
- *
13
- * Trust boundary: batch lines are connector-channel text - attacker-authored
14
- * by definition, and this session's buffer is long-lived. Every batch enters
15
- * the prompt through wrapUntrustedContent (the spec's standing "wrapping
16
- * remains the first line"), under an owner-authored framing instruction.
17
- */
18
- import type { ConductorInbox } from './conductor-inbox.js';
19
- import { type ConductorSession } from './conductor-session.js';
20
- import type { AgentContext } from '../agent/types.js';
21
- import type { Envelope } from '../envelope/types.js';
22
- interface RunnerLike {
23
- run(prompt: string, options?: {
24
- sessionKey?: string;
25
- source?: string;
26
- channelId?: string;
27
- resumeSession?: boolean;
28
- freshSession?: boolean;
29
- agentContext?: AgentContext;
30
- envelope?: Envelope;
31
- causeEventIds?: readonly string[];
32
- }): Promise<{
33
- response: string;
34
- }>;
35
- }
36
- export declare class Conductor {
37
- private readonly deps;
38
- private readonly leaseMs;
39
- private readonly maxBatchesPerTick;
40
- constructor(deps: {
41
- inbox: ConductorInbox;
42
- session: ConductorSession;
43
- runner: RunnerLike;
44
- reground: () => string;
45
- /**
46
- * Per-run scoped authority, mirroring the report lane: without an
47
- * agentContext the executor's permission checks take their documented
48
- * "no context - allow all" branch, and without an envelope every
49
- * model_tool call dies 'envelope_missing' while the run still resolves
50
- * and acks (review F2). Both are REQUIRED wiring in start.ts; optional
51
- * here only so unit tests can run the loop without the full boot.
52
- */
53
- agentContext?: AgentContext;
54
- issueEnvelope?: () => Promise<Envelope | null>;
55
- log?: (line: string) => void;
56
- leaseMs?: number;
57
- /** Burst backpressure budget: batches processed per tick before yielding. */
58
- maxBatchesPerTick?: number;
59
- });
60
- tick(): Promise<'idle' | 'processed' | 'failed'>;
61
- /**
62
- * A growing inbox must be loud - silence is how backlogs hide. Runs on the
63
- * failure path too: a batch stuck in retries (attempts 1-4) is exactly when
64
- * the backlog grows unattended (review).
65
- */
66
- private logDepth;
67
- }
68
- export {};
69
- //# sourceMappingURL=conductor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conductor.d.ts","sourceRoot":"","sources":["../../src/operator/conductor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EACL,KAAK,gBAAgB,EAItB,MAAM,wBAAwB,CAAC;AAKhC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,UAAU,UAAU;IAClB,GAAG,CACD,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,QAAQ,CAAC,EAAE,QAAQ,CAAC;QACpB,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;KACnC,GACA,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClC;AAED,qBAAa,SAAS;IAKlB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;gBAGxB,IAAI,EAAE;QACrB,KAAK,EAAE,cAAc,CAAC;QACtB,OAAO,EAAE,gBAAgB,CAAC;QAC1B,MAAM,EAAE,UAAU,CAAC;QACnB,QAAQ,EAAE,MAAM,MAAM,CAAC;QACvB;;;;;;;WAOG;QACH,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;QAC/C,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;QAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,6EAA6E;QAC7E,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B;IAMG,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IA6EtD;;;;OAIG;IACH,OAAO,CAAC,QAAQ;CAQjB"}
@@ -1,90 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Conductor = void 0;
4
- const conductor_session_js_1 = require("./conductor-session.js");
5
- const untrusted_content_js_1 = require("../utils/untrusted-content.js");
6
- class Conductor {
7
- deps;
8
- leaseMs;
9
- maxBatchesPerTick;
10
- constructor(deps) {
11
- this.deps = deps;
12
- this.leaseMs = deps.leaseMs ?? 10 * 60_000;
13
- this.maxBatchesPerTick = deps.maxBatchesPerTick ?? 8;
14
- }
15
- async tick() {
16
- const replayed = this.deps.inbox.replayStale(this.leaseMs);
17
- if (replayed > 0) {
18
- this.deps.log?.(`[conductor] replayed ${replayed} stale claim(s)`);
19
- }
20
- const reason = this.deps.session.shouldRecycle();
21
- if (reason) {
22
- this.deps.session.recycle(reason);
23
- this.deps.log?.(`[conductor] session recycled: ${reason}`);
24
- }
25
- let processed = 0;
26
- for (; processed < this.maxBatchesPerTick;) {
27
- const batch = this.deps.inbox.claimNext();
28
- if (!batch) {
29
- break;
30
- }
31
- const fresh = this.deps.session.needsReground();
32
- const parts = [];
33
- if (fresh) {
34
- parts.push(this.deps.reground());
35
- }
36
- parts.push(untrusted_content_js_1.UNTRUSTED_EXTERNAL_EVIDENCE_INSTRUCTION, (0, untrusted_content_js_1.wrapUntrustedContent)(`channel:${batch.channelKey}`, batch.lines.join('\n')));
37
- try {
38
- // freshSession is the ONE sanctioned reset path: agent-loop resets the
39
- // pool entry AND marks the run new together. resumeSession alone is
40
- // overwritten by the pool's own isNew in the fallback branch, so it
41
- // cannot express "start over" (review F5).
42
- const envelope = (await this.deps.issueEnvelope?.()) ?? undefined;
43
- await this.deps.runner.run(parts.join('\n'), {
44
- sessionKey: conductor_session_js_1.CONDUCTOR_SESSION_KEY, // lane (first segment picks it)
45
- source: conductor_session_js_1.CONDUCTOR_SOURCE, // pool key half 1
46
- channelId: conductor_session_js_1.CONDUCTOR_CHANNEL_ID, // pool key half 2
47
- ...(fresh ? { freshSession: true } : { resumeSession: true }),
48
- agentContext: this.deps.agentContext,
49
- envelope,
50
- // The host already holds the batch (inbox identity = the whole
51
- // batch). Handing it to the run is what makes every judgment-borne
52
- // board change attributed - the HOST batch wins over anything the
53
- // agent could restate (S2 review #1: without this one field the
54
- // conductor's stream is causeless at the source).
55
- causeEventIds: batch.eventIds,
56
- });
57
- this.deps.inbox.ack(batch.id);
58
- this.deps.session.noteTurn();
59
- if (fresh) {
60
- this.deps.session.markRegrounded();
61
- }
62
- processed += 1;
63
- }
64
- catch (error) {
65
- const outcome = this.deps.inbox.retry(batch.id, error instanceof Error ? error.message : String(error));
66
- if (outcome === 'dead') {
67
- // A dead batch is a permanent loss - it must never die quietly.
68
- this.deps.log?.(`[conductor] batch ${batch.id} (${batch.channelKey}) parked DEAD after repeated failures: ${error instanceof Error ? error.message : String(error)}`);
69
- }
70
- this.logDepth(processed);
71
- return 'failed';
72
- }
73
- }
74
- this.logDepth(processed);
75
- return processed > 0 ? 'processed' : 'idle';
76
- }
77
- /**
78
- * A growing inbox must be loud - silence is how backlogs hide. Runs on the
79
- * failure path too: a batch stuck in retries (attempts 1-4) is exactly when
80
- * the backlog grows unattended (review).
81
- */
82
- logDepth(processed) {
83
- const depth = this.deps.inbox.depth();
84
- if (depth.pending > 0 || depth.dead > 0) {
85
- this.deps.log?.(`[conductor] tick budget spent: ${processed} processed, ${depth.pending} pending, ${depth.dead} dead`);
86
- }
87
- }
88
- }
89
- exports.Conductor = Conductor;
90
- //# sourceMappingURL=conductor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conductor.js","sourceRoot":"","sources":["../../src/operator/conductor.ts"],"names":[],"mappings":";;;AAkBA,iEAKgC;AAChC,wEAGuC;AAoBvC,MAAa,SAAS;IAKD;IAJF,OAAO,CAAS;IAChB,iBAAiB,CAAS;IAE3C,YACmB,IAmBhB;QAnBgB,SAAI,GAAJ,IAAI,CAmBpB;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,GAAG,MAAM,CAAC;QAC3C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3D,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,wBAAwB,QAAQ,iBAAiB,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QACjD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,iCAAiC,MAAM,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,OAAO,SAAS,GAAG,IAAI,CAAC,iBAAiB,GAAI,CAAC;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM;YACR,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAChD,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACnC,CAAC;YACD,KAAK,CAAC,IAAI,CACR,8DAAuC,EACvC,IAAA,2CAAoB,EAAC,WAAW,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAC5E,CAAC;YAEF,IAAI,CAAC;gBACH,uEAAuE;gBACvE,oEAAoE;gBACpE,oEAAoE;gBACpE,2CAA2C;gBAC3C,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;gBAClE,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC3C,UAAU,EAAE,4CAAqB,EAAE,gCAAgC;oBACnE,MAAM,EAAE,uCAAgB,EAAE,kBAAkB;oBAC5C,SAAS,EAAE,2CAAoB,EAAE,kBAAkB;oBACnD,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;oBAC7D,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY;oBACpC,QAAQ;oBACR,+DAA+D;oBAC/D,mEAAmE;oBACnE,kEAAkE;oBAClE,gEAAgE;oBAChE,kDAAkD;oBAClD,aAAa,EAAE,KAAK,CAAC,QAAQ;iBAC9B,CAAC,CAAC;gBACH,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAC7B,IAAI,KAAK,EAAE,CAAC;oBACV,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;gBACrC,CAAC;gBACD,SAAS,IAAI,CAAC,CAAC;YACjB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CACnC,KAAK,CAAC,EAAE,EACR,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;gBACF,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;oBACvB,gEAAgE;oBAChE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CACb,qBAAqB,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,UAAU,0CAChD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE,CACH,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACzB,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACzB,OAAO,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACK,QAAQ,CAAC,SAAiB;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CACb,kCAAkC,SAAS,eAAe,KAAK,CAAC,OAAO,aAAa,KAAK,CAAC,IAAI,OAAO,CACtG,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAxHD,8BAwHC"}