@sentropic/h2a 0.81.0 → 0.83.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 (82) hide show
  1. package/README.md +5 -0
  2. package/dist/bin-routing.d.ts +13 -0
  3. package/dist/bin-routing.d.ts.map +1 -0
  4. package/dist/bin-routing.js +46 -0
  5. package/dist/bin-routing.js.map +1 -0
  6. package/dist/bin.js +40 -11
  7. package/dist/bin.js.map +1 -1
  8. package/dist/cli-contract.d.ts.map +1 -1
  9. package/dist/cli-contract.js +22 -6
  10. package/dist/cli-contract.js.map +1 -1
  11. package/dist/cli.d.ts +16 -0
  12. package/dist/cli.d.ts.map +1 -1
  13. package/dist/cli.js +197 -11
  14. package/dist/cli.js.map +1 -1
  15. package/dist/index.d.ts +1 -1
  16. package/dist/mcp.d.ts +1 -1
  17. package/dist/mcp.d.ts.map +1 -1
  18. package/dist/mcp.js +3 -1
  19. package/dist/mcp.js.map +1 -1
  20. package/dist/runtime/canevas/adapter.d.ts +11 -0
  21. package/dist/runtime/canevas/adapter.d.ts.map +1 -0
  22. package/dist/runtime/canevas/adapter.js +22 -0
  23. package/dist/runtime/canevas/adapter.js.map +1 -0
  24. package/dist/runtime/canevas/aggregate.d.ts +56 -0
  25. package/dist/runtime/canevas/aggregate.d.ts.map +1 -0
  26. package/dist/runtime/canevas/aggregate.js +84 -0
  27. package/dist/runtime/canevas/aggregate.js.map +1 -0
  28. package/dist/runtime/canevas/answer.d.ts +21 -0
  29. package/dist/runtime/canevas/answer.d.ts.map +1 -0
  30. package/dist/runtime/canevas/answer.js +62 -0
  31. package/dist/runtime/canevas/answer.js.map +1 -0
  32. package/dist/runtime/canevas/app.d.ts +19 -0
  33. package/dist/runtime/canevas/app.d.ts.map +1 -0
  34. package/dist/runtime/canevas/app.js +49 -0
  35. package/dist/runtime/canevas/app.js.map +1 -0
  36. package/dist/runtime/canevas/gather.d.ts +3 -0
  37. package/dist/runtime/canevas/gather.d.ts.map +1 -0
  38. package/dist/runtime/canevas/gather.js +39 -0
  39. package/dist/runtime/canevas/gather.js.map +1 -0
  40. package/dist/runtime/canevas/reply.d.ts +27 -0
  41. package/dist/runtime/canevas/reply.d.ts.map +1 -0
  42. package/dist/runtime/canevas/reply.js +31 -0
  43. package/dist/runtime/canevas/reply.js.map +1 -0
  44. package/dist/runtime/canevas/serve.d.ts +11 -0
  45. package/dist/runtime/canevas/serve.d.ts.map +1 -0
  46. package/dist/runtime/canevas/serve.js +42 -0
  47. package/dist/runtime/canevas/serve.js.map +1 -0
  48. package/dist/runtime/canevas/ui.d.ts +2 -0
  49. package/dist/runtime/canevas/ui.d.ts.map +1 -0
  50. package/dist/runtime/canevas/ui.js +124 -0
  51. package/dist/runtime/canevas/ui.js.map +1 -0
  52. package/dist/runtime/loop/engine/adapters.d.ts +91 -0
  53. package/dist/runtime/loop/engine/adapters.d.ts.map +1 -0
  54. package/dist/runtime/loop/engine/adapters.js +292 -0
  55. package/dist/runtime/loop/engine/adapters.js.map +1 -0
  56. package/dist/runtime/loop/engine/decision.d.ts +71 -0
  57. package/dist/runtime/loop/engine/decision.d.ts.map +1 -0
  58. package/dist/runtime/loop/engine/decision.js +141 -0
  59. package/dist/runtime/loop/engine/decision.js.map +1 -0
  60. package/dist/runtime/loop/engine/execute.d.ts +33 -0
  61. package/dist/runtime/loop/engine/execute.d.ts.map +1 -0
  62. package/dist/runtime/loop/engine/execute.js +69 -0
  63. package/dist/runtime/loop/engine/execute.js.map +1 -0
  64. package/dist/runtime/loop/engine/tick.d.ts +27 -0
  65. package/dist/runtime/loop/engine/tick.d.ts.map +1 -0
  66. package/dist/runtime/loop/engine/tick.js +72 -0
  67. package/dist/runtime/loop/engine/tick.js.map +1 -0
  68. package/dist/runtime/loop/index.d.ts +14 -0
  69. package/dist/runtime/loop/index.d.ts.map +1 -1
  70. package/dist/runtime/loop/index.js +23 -0
  71. package/dist/runtime/loop/index.js.map +1 -1
  72. package/dist/runtime/mcp/handlers.d.ts +12 -0
  73. package/dist/runtime/mcp/handlers.d.ts.map +1 -1
  74. package/dist/runtime/mcp/handlers.js +42 -0
  75. package/dist/runtime/mcp/handlers.js.map +1 -1
  76. package/dist/runtime/mcp/server.d.ts.map +1 -1
  77. package/dist/runtime/mcp/server.js +5 -1
  78. package/dist/runtime/mcp/server.js.map +1 -1
  79. package/dist/runtime/mcp/tools.d.ts.map +1 -1
  80. package/dist/runtime/mcp/tools.js +22 -0
  81. package/dist/runtime/mcp/tools.js.map +1 -1
  82. package/package.json +4 -4
@@ -0,0 +1,141 @@
1
+ // Objective-loop tick — PURE decision core.
2
+ //
3
+ // GOLDEN RULE: this module has ZERO IO and NEVER imports `@sentropic/h2a-runtime`,
4
+ // node-pty, tmux, k8s or the track CLI. It only sees plain data. The imperative
5
+ // shell (`tick.ts`) gathers inputs via adapters and EXECUTES the plan — the
6
+ // human-typing guard is re-checked there, at the last moment before any tmux
7
+ // injection, NOT here (the core's view can be stale).
8
+ //
9
+ // Double-consensus (opus-4-8 + codex xhigh, 2026-07-02): option (c) —
10
+ // functional core / imperative shell. `remote-facade.test.js` scans this file to
11
+ // forbid any runtime import (see RISK #1).
12
+ const TARGET_ROLES = new Set(["primary", "target"]);
13
+ /** Stable join key for a declared loop track-ref. Adapters MUST use the same. */
14
+ export function loopRefLocator(ref) {
15
+ return `${ref.system}:${ref.repoKey}:${ref.workspace}:${ref.aggregateKind}:${ref.aggregateId}`;
16
+ }
17
+ function action(a) {
18
+ return a;
19
+ }
20
+ /** True if the loop agent is present & not dead in the runtime projection. */
21
+ function findProjected(loopAgent, projected) {
22
+ return projected.find((p) => (loopAgent.h2aInstance !== undefined && p.h2aInstance === loopAgent.h2aInstance) ||
23
+ (loopAgent.remoteJobId !== undefined && p.jobId === loopAgent.remoteJobId) ||
24
+ (loopAgent.remoteAgentId !== undefined && p.id === loopAgent.remoteAgentId));
25
+ }
26
+ const DEAD_STATES = new Set(["dead", "failed", "done"]);
27
+ const IDLE_STATES = new Set(["idle", "detached"]);
28
+ /**
29
+ * Pure objective-loop tick decision. Deterministic; no IO. Implements the spec
30
+ * (2026-06-26 §Relaunch + §C completion) at MVP scope: degraded short-circuit,
31
+ * multi-ref completion rollup, and conservative launch/wake/route intents.
32
+ *
33
+ * The shell never auto-closes unless `close===true` (policy.closeWhenRefsSatisfied).
34
+ */
35
+ export function planLoopTick(input) {
36
+ const { loop, agents, refs, inbox } = input;
37
+ const reasons = [];
38
+ const actions = [];
39
+ // 1) DEGRADED — runtime or track source unreachable. Never invent state, never
40
+ // inject, never close. Only surface pending human decisions (no injection).
41
+ if (agents.degraded || refs.degraded) {
42
+ if (agents.degraded)
43
+ reasons.push("agents source unreachable (runtime absent/degraded)");
44
+ if (refs.degraded)
45
+ reasons.push("track refs source unreachable");
46
+ for (const d of inbox.pendingDecisions) {
47
+ actions.push(action({
48
+ type: "route-decision",
49
+ decisionId: d.id,
50
+ reason: "pending decision surfaced while degraded",
51
+ ...(d.forAgent !== undefined ? { agentId: d.forAgent } : {}),
52
+ }));
53
+ }
54
+ return { loopId: loop.id, degraded: true, outcome: "degraded", close: false, actions, reasons };
55
+ }
56
+ // 2) REF ROLLUP — join declared loop.refs with the rollup statuses.
57
+ const statusByLocator = new Map(refs.refs.map((r) => [r.locator, r.status]));
58
+ const statusOf = (ref) => statusByLocator.get(loopRefLocator(ref)) ?? "unknown";
59
+ const targetRefs = loop.refs.filter((r) => TARGET_ROLES.has(r.role));
60
+ const blockerRefs = loop.refs.filter((r) => r.role === "blocker");
61
+ const decisionGateRefs = loop.refs.filter((r) => r.role === "decision-gate");
62
+ const targetStatuses = targetRefs.map(statusOf);
63
+ const anyTargetRejected = targetStatuses.includes("rejected");
64
+ const anyTargetUnresolved = targetStatuses.some((s) => s === "pending" || s === "unknown" || s === "stale" || s === "blocked");
65
+ const allTargetsSatisfied = targetRefs.length > 0 && targetStatuses.every((s) => s === "accepted" || s === "done");
66
+ const openBlockers = blockerRefs.filter((r) => {
67
+ const s = statusOf(r);
68
+ return s !== "done" && s !== "accepted";
69
+ });
70
+ const openDecisionGates = decisionGateRefs.filter((r) => {
71
+ const s = statusOf(r);
72
+ return s !== "accepted" && s !== "done";
73
+ });
74
+ const hasOpenDecision = inbox.pendingDecisions.length > 0 || openDecisionGates.length > 0;
75
+ const workPending = !allTargetsSatisfied;
76
+ // 3) OUTCOME — deterministic precedence (spec §C).
77
+ let outcome;
78
+ let close = false;
79
+ if (anyTargetRejected) {
80
+ outcome = "failed";
81
+ reasons.push("a primary/target ref is rejected/failed");
82
+ }
83
+ else if (openBlockers.length > 0) {
84
+ outcome = "stalled";
85
+ reasons.push(`${openBlockers.length} open blocker ref(s)`);
86
+ }
87
+ else if (hasOpenDecision) {
88
+ outcome = "waiting-human";
89
+ reasons.push("open decision gate(s) / pending decision(s)");
90
+ }
91
+ else if (allTargetsSatisfied) {
92
+ outcome = "eligible-for-close";
93
+ reasons.push("all primary/target refs accepted/done");
94
+ close = loop.policy.closeWhenRefsSatisfied === true;
95
+ if (close)
96
+ actions.push(action({ type: "close", reason: "refs satisfied and policy.closeWhenRefsSatisfied" }));
97
+ }
98
+ else if (anyTargetUnresolved) {
99
+ outcome = "waiting-agent";
100
+ reasons.push("primary/target refs still pending");
101
+ }
102
+ else if (targetRefs.length === 0) {
103
+ outcome = "running";
104
+ reasons.push("no primary/target refs declared");
105
+ }
106
+ else {
107
+ outcome = "running";
108
+ }
109
+ // 4) DECISIONS — surface pending human decisions (route only; no injection here).
110
+ if (outcome !== "failed") {
111
+ for (const d of inbox.pendingDecisions) {
112
+ actions.push(action({
113
+ type: "route-decision",
114
+ decisionId: d.id,
115
+ reason: "pending decision",
116
+ ...(d.forAgent !== undefined ? { agentId: d.forAgent } : {}),
117
+ }));
118
+ }
119
+ }
120
+ // 5) AGENTS — conservative launch/wake INTENTS, only when work is pending and
121
+ // the objective is not failed/closing. The shell decides feasibility +
122
+ // re-checks the human-typing guard before any real injection.
123
+ if (workPending && outcome !== "failed" && !close) {
124
+ for (const a of loop.agents) {
125
+ if (a.status === "done" || a.status === "cancelled" || a.status === "failed")
126
+ continue;
127
+ const projected = findProjected(a, agents.agents);
128
+ if (!projected || DEAD_STATES.has(projected.state)) {
129
+ actions.push(action({ type: "request-launch", agentId: a.id, reason: "enrolled agent missing/dead while work pending" }));
130
+ continue;
131
+ }
132
+ if (IDLE_STATES.has(projected.state) || a.status === "idle") {
133
+ actions.push(action({ type: "wake", agentId: a.id, reason: "agent idle while work pending" }));
134
+ }
135
+ }
136
+ }
137
+ if (actions.length === 0)
138
+ actions.push(action({ type: "noop", reason: "nothing to do this tick" }));
139
+ return { loopId: loop.id, degraded: false, outcome, close, actions, reasons };
140
+ }
141
+ //# sourceMappingURL=decision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decision.js","sourceRoot":"","sources":["../../../../src/runtime/loop/engine/decision.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { TickAction, TickPlan } from "./decision.js";
2
+ export type ActionOutcome = "done" | "deferred" | "skipped" | "failed";
3
+ export interface ActionContext {
4
+ readonly root: string;
5
+ readonly loopId: string;
6
+ readonly now: number;
7
+ }
8
+ export interface ActionSink {
9
+ close(action: TickAction, ctx: ActionContext): Promise<ActionOutcome>;
10
+ requestLaunch(action: TickAction, ctx: ActionContext): Promise<ActionOutcome>;
11
+ wake(action: TickAction, ctx: ActionContext): Promise<ActionOutcome>;
12
+ routeDecision(action: TickAction, ctx: ActionContext): Promise<ActionOutcome>;
13
+ }
14
+ export interface ActionResult {
15
+ readonly type: TickAction["type"];
16
+ readonly agentId?: string;
17
+ readonly outcome: ActionOutcome;
18
+ readonly reason: string;
19
+ }
20
+ export interface ExecReport {
21
+ readonly loopId: string;
22
+ readonly executed: boolean;
23
+ readonly results: readonly ActionResult[];
24
+ readonly counts: Record<ActionOutcome, number>;
25
+ }
26
+ /** Stable idempotency key for an action (used by sinks + event journal). */
27
+ export declare function actionKey(a: TickAction, loopId: string): string;
28
+ /**
29
+ * Execute a plan through the sink. A `degraded` plan runs NOTHING (safety). Each
30
+ * executed action appends a `loop.action.*` event. Returns a typed report.
31
+ */
32
+ export declare function executePlan(root: string, loopId: string, plan: TickPlan, sink: ActionSink, now: number): Promise<ExecReport>;
33
+ //# sourceMappingURL=execute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../../src/runtime/loop/engine/execute.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE1D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEvE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACtE,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9E,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACrE,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAC/E;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;CAChD;AAED,4EAA4E;AAC5E,wBAAgB,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE/D;AASD;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,UAAU,CAAC,CAyCrB"}
@@ -0,0 +1,69 @@
1
+ // Objective-loop tick — ACTION EXECUTOR (imperative shell).
2
+ //
3
+ // Thin orchestrator: takes a decided `TickPlan` + an injected `ActionSink`, runs
4
+ // each action through the sink, and records a per-action event. It performs NO
5
+ // tmux/store IO itself (only `appendLoopEvent`) — all effects live behind the
6
+ // sink (real impl in `adapters.ts::buildActionSink`, fakes in tests). Must NOT
7
+ // import `@sentropic/h2a-runtime` (only `adapters.ts` may); the golden-rule scan
8
+ // enforces it.
9
+ //
10
+ // Double-consensus (opus-4-8 + codex xhigh, 2026-07-02): tranche 1 executes ONLY
11
+ // `close`; wake/request-launch/route-decision are wired to the sink but return
12
+ // `skipped` ("not-enabled") until their guarded slices land. A `degraded` plan
13
+ // executes NOTHING.
14
+ import { appendLoopEvent } from "../index.js";
15
+ /** Stable idempotency key for an action (used by sinks + event journal). */
16
+ export function actionKey(a, loopId) {
17
+ return `${a.type}:${a.agentId ?? a.decisionId ?? a.refLocator ?? loopId}`;
18
+ }
19
+ const EVENT_FOR = {
20
+ done: "loop.action.applied",
21
+ deferred: "loop.action.deferred",
22
+ failed: "loop.action.failed",
23
+ skipped: "loop.action.skipped"
24
+ };
25
+ /**
26
+ * Execute a plan through the sink. A `degraded` plan runs NOTHING (safety). Each
27
+ * executed action appends a `loop.action.*` event. Returns a typed report.
28
+ */
29
+ export async function executePlan(root, loopId, plan, sink, now) {
30
+ const ctx = { root, loopId, now };
31
+ const results = [];
32
+ const counts = { done: 0, deferred: 0, skipped: 0, failed: 0 };
33
+ const at = new Date(now).toISOString();
34
+ const actions = plan.degraded ? [] : plan.actions;
35
+ for (const a of actions) {
36
+ let outcome;
37
+ switch (a.type) {
38
+ case "close":
39
+ outcome = await sink.close(a, ctx);
40
+ break;
41
+ case "request-launch":
42
+ outcome = await sink.requestLaunch(a, ctx);
43
+ break;
44
+ case "wake":
45
+ outcome = await sink.wake(a, ctx);
46
+ break;
47
+ case "route-decision":
48
+ outcome = await sink.routeDecision(a, ctx);
49
+ break;
50
+ default:
51
+ continue; // noop
52
+ }
53
+ counts[outcome] += 1;
54
+ results.push({
55
+ type: a.type,
56
+ ...(a.agentId !== undefined ? { agentId: a.agentId } : {}),
57
+ outcome,
58
+ reason: a.reason
59
+ });
60
+ appendLoopEvent(root, {
61
+ type: EVENT_FOR[outcome],
62
+ loopId,
63
+ at,
64
+ payload: { action: a.type, key: actionKey(a, loopId), reason: a.reason }
65
+ });
66
+ }
67
+ return { loopId, executed: true, results, counts };
68
+ }
69
+ //# sourceMappingURL=execute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../../src/runtime/loop/engine/execute.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { type TickPlan } from "./decision.js";
2
+ import { type ExecReport } from "./execute.js";
3
+ export interface RunTickResult {
4
+ readonly plan: TickPlan;
5
+ readonly exec?: ExecReport;
6
+ }
7
+ /**
8
+ * One tick: gather → decide → record observation → return the plan. DRY-RUN by
9
+ * default (executes nothing). With `execute:true`, runs the plan through the
10
+ * action sink (tranche 1: only `close` acts; a `degraded` plan executes nothing).
11
+ */
12
+ export declare function runTick(root: string, loopId: string, opts?: {
13
+ now?: number;
14
+ execute?: boolean;
15
+ }): Promise<RunTickResult>;
16
+ export interface WatchOptions {
17
+ readonly intervalMs?: number;
18
+ readonly max?: number;
19
+ readonly signal?: AbortSignal;
20
+ readonly stdout: {
21
+ write(s: string): void;
22
+ };
23
+ }
24
+ /** Periodic dry-run watch: tick, emit the plan (JSONL), repeat until a terminal
25
+ * outcome, the `--max` cap, or an abort signal. Executes nothing. */
26
+ export declare function runLoopWatch(root: string, loopId: string, opts: WatchOptions): Promise<number>;
27
+ //# sourceMappingURL=tick.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tick.d.ts","sourceRoot":"","sources":["../../../../src/runtime/loop/engine/tick.ts"],"names":[],"mappings":"AASA,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE5D,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;CAC5B;AAID;;;;GAIG;AACH,wBAAsB,OAAO,CAC3B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7C,OAAO,CAAC,aAAa,CAAC,CAuBxB;AAaD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE;QAAE,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CAC7C;AAED;sEACsE;AACtE,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,MAAM,CAAC,CAajB"}
@@ -0,0 +1,72 @@
1
+ // Objective-loop tick — IMPERATIVE SHELL.
2
+ //
3
+ // Gathers inputs via adapters, calls the PURE core `planLoopTick`, and (SLICE-1)
4
+ // only OBSERVES: it records a `loop.tick` event and returns the plan. It executes
5
+ // NO injection/relaunch/close yet — those land in the next slice behind the
6
+ // human-typing guard. This file must NOT import `@sentropic/h2a-runtime`
7
+ // (only `adapters.ts` may); `remote-facade.test.js` enforces it.
8
+ import { appendLoopEvent, readObjectiveLoop } from "../index.js";
9
+ import { planLoopTick } from "./decision.js";
10
+ import { buildActionSink, readAgents, readInbox, readRefsRollup } from "./adapters.js";
11
+ import { executePlan } from "./execute.js";
12
+ const TERMINAL_OUTCOMES = new Set(["failed", "eligible-for-close"]);
13
+ /**
14
+ * One tick: gather → decide → record observation → return the plan. DRY-RUN by
15
+ * default (executes nothing). With `execute:true`, runs the plan through the
16
+ * action sink (tranche 1: only `close` acts; a `degraded` plan executes nothing).
17
+ */
18
+ export async function runTick(root, loopId, opts = {}) {
19
+ const now = opts.now ?? Date.now();
20
+ const loop = readObjectiveLoop(root, loopId); // throws if missing → shell maps to exit code
21
+ const agents = await readAgents();
22
+ const refs = readRefsRollup(loop);
23
+ const inbox = readInbox(loop, root);
24
+ const plan = planLoopTick({ loop, agents, refs, inbox, now });
25
+ appendLoopEvent(root, {
26
+ type: "loop.tick",
27
+ loopId,
28
+ at: new Date(now).toISOString(),
29
+ payload: {
30
+ outcome: plan.outcome,
31
+ degraded: plan.degraded,
32
+ actions: plan.actions.map((a) => a.type),
33
+ dryRun: !opts.execute,
34
+ },
35
+ });
36
+ if (!opts.execute)
37
+ return { plan };
38
+ const exec = await executePlan(root, loopId, plan, buildActionSink(), now);
39
+ return { plan, exec };
40
+ }
41
+ function delay(ms, signal) {
42
+ return new Promise((res) => {
43
+ if (signal?.aborted)
44
+ return res();
45
+ const t = setTimeout(res, ms);
46
+ signal?.addEventListener("abort", () => {
47
+ clearTimeout(t);
48
+ res();
49
+ }, { once: true });
50
+ });
51
+ }
52
+ /** Periodic dry-run watch: tick, emit the plan (JSONL), repeat until a terminal
53
+ * outcome, the `--max` cap, or an abort signal. Executes nothing. */
54
+ export async function runLoopWatch(root, loopId, opts) {
55
+ const interval = opts.intervalMs && opts.intervalMs > 0 ? opts.intervalMs : 60_000;
56
+ let n = 0;
57
+ for (;;) {
58
+ const { plan } = await runTick(root, loopId);
59
+ opts.stdout.write(`${JSON.stringify(plan)}\n`);
60
+ n += 1;
61
+ if (TERMINAL_OUTCOMES.has(plan.outcome))
62
+ return 0;
63
+ if (opts.max !== undefined && n >= opts.max)
64
+ return 0;
65
+ if (opts.signal?.aborted)
66
+ return 0;
67
+ await delay(interval, opts.signal);
68
+ if (opts.signal?.aborted)
69
+ return 0;
70
+ }
71
+ }
72
+ //# sourceMappingURL=tick.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tick.js","sourceRoot":"","sources":["../../../../src/runtime/loop/engine/tick.ts"],"names":[],"mappings":"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"}
@@ -70,4 +70,18 @@ export declare function createObjectiveLoop(root: string, input: CreateObjective
70
70
  export declare function readObjectiveLoop(root: string, loopId: string): H2AObjectiveLoop;
71
71
  export declare function listObjectiveLoops(root: string): H2AObjectiveLoop[];
72
72
  export declare function listLoopEvents(root: string, loopId: string): H2ALoopEvent[];
73
+ /**
74
+ * Transition a loop to a new status. IDEMPOTENT: if the loop is already at
75
+ * `status`, nothing is written and `changed:false` is returned. On a real
76
+ * change, rewrites `state.json` (status + updatedAt) and appends `loop.closed`
77
+ * (for "done") or `loop.status-changed`. This is the ONLY store write the
78
+ * objective-loop tick executor performs for the `close` action — no injection.
79
+ */
80
+ export declare function updateObjectiveLoopStatus(root: string, loopId: string, status: H2ALoopStatus, opts?: {
81
+ now?: number;
82
+ reason?: string;
83
+ }): {
84
+ changed: boolean;
85
+ loop: H2AObjectiveLoop;
86
+ };
73
87
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/loop/index.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,SAAS,GACT,eAAe,GACf,eAAe,GACf,SAAS,GACT,UAAU,GACV,MAAM,GACN,QAAQ,GACR,WAAW,CAAC;AAEhB,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,WAAW,GACX,SAAS,GACT,MAAM,GACN,SAAS,GACT,SAAS,GACT,mBAAmB,GACnB,cAAc,GACd,eAAe,GACf,MAAM,GACN,MAAM,GACN,QAAQ,GACR,WAAW,CAAC;AAEhB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC;IAC1F,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;IACxF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EACd,OAAO,GACP,QAAQ,GACR,MAAM,GACN,gBAAgB,GAChB,iBAAiB,GACjB,mBAAmB,GACnB,oBAAoB,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,uBAAuB,EAAE,IAAI,CAAC;IACvC,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,eAAe,EAAE,sBAAsB,GAAG,4BAA4B,GAAG,mBAAmB,CAAC;IACtG,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,eAAe,CAAC;CACnE;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,uBAAuB,EAAE,aAQrC,CAAC;AAsBF,wBAAgB,YAAY,CAAC,GAAG,GAAE,MAAmB,GAAG,MAAM,CAE7D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,CAI/E;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,wBAAwB,EAC/B,GAAG,GAAE,MAAmB,GACvB,gBAAgB,CA2BlB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAIhF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAkBnE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,CAQ3E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/loop/index.ts"],"names":[],"mappings":"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"}
@@ -104,4 +104,27 @@ export function listLoopEvents(root, loopId) {
104
104
  .filter((line) => line.length > 0)
105
105
  .map((line) => JSON.parse(line));
106
106
  }
107
+ /**
108
+ * Transition a loop to a new status. IDEMPOTENT: if the loop is already at
109
+ * `status`, nothing is written and `changed:false` is returned. On a real
110
+ * change, rewrites `state.json` (status + updatedAt) and appends `loop.closed`
111
+ * (for "done") or `loop.status-changed`. This is the ONLY store write the
112
+ * objective-loop tick executor performs for the `close` action — no injection.
113
+ */
114
+ export function updateObjectiveLoopStatus(root, loopId, status, opts = {}) {
115
+ const loop = readObjectiveLoop(root, loopId);
116
+ if (loop.status === status)
117
+ return { changed: false, loop };
118
+ const now = opts.now ?? Date.now();
119
+ const at = new Date(now).toISOString();
120
+ const next = { ...loop, status, updatedAt: at };
121
+ writeFileSync(stateFile(root, loopId), `${JSON.stringify(next, null, 2)}\n`, "utf8");
122
+ appendLoopEvent(root, {
123
+ type: status === "done" ? "loop.closed" : "loop.status-changed",
124
+ loopId,
125
+ at,
126
+ payload: { status, ...(opts.reason !== undefined ? { reason: opts.reason } : {}) }
127
+ });
128
+ return { changed: true, loop: next };
129
+ }
107
130
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/loop/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/loop/index.ts"],"names":[],"mappings":"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"}
@@ -192,5 +192,17 @@ export declare function handleConductorLaunch(root: string, args: {
192
192
  instance?: string;
193
193
  } | undefined): McpToolResult | McpErrorResult;
194
194
  export declare function notImplemented(toolName: string): McpErrorResult;
195
+ /**
196
+ * h2a_loop_list — read-only projection of the objective loops in the local store.
197
+ */
198
+ export declare function handleLoopList(root: string): McpToolResult;
199
+ /**
200
+ * h2a_loop_status — one loop's full state + its LAST recorded tick observation
201
+ * (from the journal) + recent events. Read-only; a fresh live plan needs the
202
+ * async `h2a loop tick` CLI (agents/refs/inbox gathering).
203
+ */
204
+ export declare function handleLoopStatus(root: string, args: {
205
+ loopId?: string;
206
+ } | undefined): McpToolResult | McpErrorResult;
195
207
  export {};
196
208
  //# sourceMappingURL=handlers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/runtime/mcp/handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/runtime/mcp/handlers.ts"],"names":[],"mappings":"AAGA,OAAO,EAsBL,KAAK,oBAAoB,EAEzB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,OAAO,EAGZ,KAAK,mBAAmB,EAExB,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AAsBxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAI1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGrD,MAAM,WAAW,aAAa;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf;AAaD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE;IAAE,YAAY,CAAC,EAAE,oBAAoB,CAAA;CAAE,GAAG,SAAS,GACxD,aAAa,GAAG,cAAc,CAUhC;AAyCD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACnD,aAAa,GAAG,cAAc,CAmBhC;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,UAAU,EACjB,IAAI,EACA;IACE,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACD,SAAS,GACZ,aAAa,GAAG,cAAc,CAyFhC;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAA;CAAE,GAAG,SAAS,GACjF,aAAa,GAAG,cAAc,CAahC;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,oBAAoB,CAAA;CAAE,GAAG,SAAS,GAClD,aAAa,GAAG,cAAc,CAUhC;AAED,UAAU,aAAa;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAsED,wBAAgB,WAAW,CACzB,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,aAAa,GAAG,SAAS,GAC9B,aAAa,GAAG,cAAc,CAEhC;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,aAAa,GAAG,SAAS,GAC9B,aAAa,GAAG,cAAc,CAEhC;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,UAAU,EACjB,IAAI,EACA;IACE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GACD,SAAS,GACZ,aAAa,GAAG,cAAc,CA4ChC;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GAC7D,aAAa,GAAG,cAAc,CAoBhC;AAcD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,UAAU,EACjB,IAAI,EACA;IACE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GACD,SAAS,GACZ,aAAa,GAAG,cAAc,CA2EhC;AASD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,UAAU,EACjB,IAAI,EACA;IACE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,GACD,SAAS,GACZ,aAAa,GAAG,cAAc,CAgChC;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GAC3C,aAAa,GAAG,cAAc,CAYhC;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,UAAU,EACjB,IAAI,EACA;IACE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GACD,SAAS,GACZ,aAAa,GAAG,cAAc,CAqChC;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,eAAe,EACzB,IAAI,EACA;IACE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACzC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACD,SAAS,GACZ,aAAa,GAAG,cAAc,CAyChC;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,eAAe,EACzB,IAAI,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,eAAe,CAAA;CAAE,GAAG,SAAS,GAChE,aAAa,GAAG,cAAc,CAkBhC;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,eAAe,EACzB,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACrE,aAAa,GAAG,cAAc,CAkChC;AAID,wBAAgB,eAAe,CAC7B,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE;IAAE,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACjD,aAAa,GAAG,cAAc,CAehC;AAGD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE;IAAE,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACjD,aAAa,GAAG,cAAc,CAgBhC;AAID,wBAAgB,eAAe,CAC7B,KAAK,EAAE,UAAU,EACjB,IAAI,EACA;IACE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,GACD,SAAS,GACZ,aAAa,GAAG,cAAc,CAwChC;AAGD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACvD,aAAa,GAAG,cAAc,CAUhC;AAGD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GAC5D,aAAa,GAAG,cAAc,CAiBhC;AAID,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACvF,aAAa,GAAG,cAAc,CAkBhC;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,GACrD,aAAa,GAAG,cAAc,CAShC;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACnD,aAAa,GAAG,cAAc,CAiBhC;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACjE,aAAa,GAAG,cAAc,CAqBhC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACpF,aAAa,GAAG,cAAc,CA8BhC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACpF,aAAa,GAAG,cAAc,CA8BhC;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GAClF,aAAa,GAAG,cAAc,CA8BhC;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,IAAI,EACA;IACE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACD,SAAS,GACZ,aAAa,GAAG,cAAc,CAuHhC;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAE/D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAW1D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACpC,aAAa,GAAG,cAAc,CAmBhC"}
@@ -21,6 +21,7 @@ import { createLocalStore } from "../local-files/store.js";
21
21
  import { lastSpawnRequestAt, recordSpawnRequest, spawnAllowed } from "../governance/spawns.js";
22
22
  import { gatherNhiSnapshot } from "../nhi.js";
23
23
  import { agentVersion } from "../version/agent-version.js";
24
+ import { listLoopEvents, listObjectiveLoops, readObjectiveLoop } from "../loop/index.js";
24
25
  const ESCALATION_CHANNELS = new Set(["advise", "decide", "alert"]);
25
26
  function safeError(reason) {
26
27
  if (reason instanceof Error)
@@ -1022,4 +1023,45 @@ export function handleConductorLaunch(root, args) {
1022
1023
  export function notImplemented(toolName) {
1023
1024
  return { error: `${toolName}: not implemented in this slice` };
1024
1025
  }
1026
+ /**
1027
+ * h2a_loop_list — read-only projection of the objective loops in the local store.
1028
+ */
1029
+ export function handleLoopList(root) {
1030
+ const loops = listObjectiveLoops(root).map((l) => ({
1031
+ id: l.id,
1032
+ name: l.name,
1033
+ goal: l.goal,
1034
+ status: l.status,
1035
+ refs: l.refs.length,
1036
+ agents: l.agents.length,
1037
+ updatedAt: l.updatedAt
1038
+ }));
1039
+ return { kind: "loop-list", version: 1, loops };
1040
+ }
1041
+ /**
1042
+ * h2a_loop_status — one loop's full state + its LAST recorded tick observation
1043
+ * (from the journal) + recent events. Read-only; a fresh live plan needs the
1044
+ * async `h2a loop tick` CLI (agents/refs/inbox gathering).
1045
+ */
1046
+ export function handleLoopStatus(root, args) {
1047
+ if (typeof args?.loopId !== "string" || args.loopId.length === 0) {
1048
+ return { error: "h2a_loop_status: loopId is required" };
1049
+ }
1050
+ let loop;
1051
+ try {
1052
+ loop = readObjectiveLoop(root, args.loopId);
1053
+ }
1054
+ catch (err) {
1055
+ return { error: err.message };
1056
+ }
1057
+ const events = listLoopEvents(root, args.loopId);
1058
+ const lastTick = [...events].reverse().find((e) => e.type === "loop.tick");
1059
+ return {
1060
+ kind: "loop-status",
1061
+ version: 1,
1062
+ loop,
1063
+ ...(lastTick ? { lastTick: lastTick.payload } : {}),
1064
+ recentEvents: events.slice(-10)
1065
+ };
1066
+ }
1025
1067
  //# sourceMappingURL=handlers.js.map