@llblab/pi-actors 0.42.3 → 0.43.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/AGENTS.md +127 -175
- package/BACKLOG.md +189 -1
- package/CHANGELOG.md +183 -292
- package/README.md +115 -276
- package/dist/fixtures/protocol/control-endpoint.json +6 -0
- package/dist/fixtures/protocol/control-record.json +9 -0
- package/dist/fixtures/protocol/recipe-summary.json +4 -12
- package/dist/fixtures/protocol/trace-event.json +9 -0
- package/dist/index.js +1 -1
- package/dist/lib/async-runs.d.ts +15 -38
- package/dist/lib/async-runs.js +173 -111
- package/dist/lib/automatic-review-runtime.d.ts +1 -1
- package/dist/lib/automatic-review-runtime.js +5 -5
- package/dist/lib/command-templates.d.ts +2 -0
- package/dist/lib/command-templates.js +38 -4
- package/dist/lib/control-projection.d.ts +20 -0
- package/dist/lib/control-projection.js +66 -0
- package/dist/lib/control.d.ts +15 -0
- package/dist/lib/control.js +97 -0
- package/dist/lib/draft-sleep.js +3 -3
- package/dist/lib/execution-sessions.d.ts +17 -0
- package/dist/lib/execution-sessions.js +85 -0
- package/dist/lib/file-state.d.ts +2 -0
- package/dist/lib/file-state.js +114 -46
- package/dist/lib/inspector-actions.d.ts +2 -2
- package/dist/lib/inspector-actions.js +2 -2
- package/dist/lib/inspector-command.js +3 -3
- package/dist/lib/inspector-overlay.d.ts +54 -70
- package/dist/lib/inspector-overlay.js +576 -910
- package/dist/lib/inspector.d.ts +3 -71
- package/dist/lib/inspector.js +19 -665
- package/dist/lib/limits.d.ts +7 -3
- package/dist/lib/limits.js +7 -3
- package/dist/lib/observability.d.ts +16 -16
- package/dist/lib/observability.js +43 -82
- package/dist/lib/prompts.d.ts +1 -1
- package/dist/lib/prompts.js +3 -3
- package/dist/lib/recipe-control.d.ts +7 -0
- package/dist/lib/recipe-control.js +43 -0
- package/dist/lib/recipes-discovery.js +2 -0
- package/dist/lib/recipes-references.d.ts +1 -14
- package/dist/lib/recipes-references.js +6 -21
- package/dist/lib/review-control.d.ts +1 -1
- package/dist/lib/review-control.js +4 -5
- package/dist/lib/review-projection.js +1 -5
- package/dist/lib/run-ui-runtime.js +2 -2
- package/dist/lib/runs-control-delivery.d.ts +28 -0
- package/dist/lib/runs-control-delivery.js +150 -0
- package/dist/lib/runs-controls.d.ts +37 -0
- package/dist/lib/runs-controls.js +146 -0
- package/dist/lib/runs-retention.d.ts +7 -0
- package/dist/lib/runs-retention.js +27 -3
- package/dist/lib/runs-start.js +4 -2
- package/dist/lib/runs-status.js +11 -6
- package/dist/lib/runs-trace.d.ts +24 -0
- package/dist/lib/runs-trace.js +102 -0
- package/dist/lib/runtime-identity.d.ts +7 -0
- package/dist/lib/runtime-identity.js +35 -0
- package/dist/lib/runtime-notifier.d.ts +1 -1
- package/dist/lib/runtime-notifier.js +1 -1
- package/dist/lib/runtime-triage.d.ts +29 -0
- package/dist/lib/runtime-triage.js +76 -0
- package/dist/lib/tool-review-scheduler.js +7 -7
- package/dist/lib/tools-inspect.d.ts +3 -3
- package/dist/lib/tools-inspect.js +241 -707
- package/dist/lib/tools-local.js +2 -10
- package/dist/lib/tools-message.d.ts +6 -7
- package/dist/lib/tools-message.js +95 -396
- package/dist/lib/tools-response.d.ts +1 -5
- package/dist/lib/tools-response.js +5 -48
- package/dist/lib/tools-spawn.js +16 -28
- package/dist/lib/tools.d.ts +1 -1
- package/dist/lib/tools.js +2 -3
- package/dist/lib/trace-projection.d.ts +22 -0
- package/dist/lib/trace-projection.js +185 -0
- package/dist/recipes/draft-review.json +0 -10
- package/dist/recipes/lens-swarm.json +0 -14
- package/dist/recipes/music-player.json +10 -19
- package/dist/recipes/pipeline-architect-coordinator.json +0 -11
- package/dist/recipes/pipeline-artifact-bundle.json +1 -22
- package/dist/recipes/pipeline-artifact-report.json +1 -18
- package/dist/recipes/pipeline-artifact-write.json +1 -18
- package/dist/recipes/pipeline-async-run-ops.json +0 -12
- package/dist/recipes/pipeline-checkpoint-continuation.json +0 -14
- package/dist/recipes/pipeline-development-tasking.json +0 -12
- package/dist/recipes/pipeline-docs-maintenance.json +0 -12
- package/dist/recipes/pipeline-media-library.json +0 -12
- package/dist/recipes/pipeline-quorum-review.json +0 -12
- package/dist/recipes/pipeline-release-readiness.json +0 -12
- package/dist/recipes/pipeline-release-summary.json +0 -12
- package/dist/recipes/pipeline-repo-health.json +0 -12
- package/dist/recipes/pipeline-research-synthesis.json +0 -11
- package/dist/recipes/pipeline-review-readiness.json +0 -12
- package/dist/recipes/resource-locker.json +27 -0
- package/dist/recipes/subagent-artifact.json +0 -9
- package/dist/recipes/subagent-checkpoint.json +0 -10
- package/dist/recipes/subagent-conflict-report.json +0 -11
- package/dist/recipes/subagent-contradiction-map.json +0 -11
- package/dist/recipes/subagent-critic.json +0 -11
- package/dist/recipes/subagent-evidence-map.json +0 -11
- package/dist/recipes/subagent-followup.json +0 -10
- package/dist/recipes/subagent-judge.json +0 -11
- package/dist/recipes/subagent-merge.json +0 -11
- package/dist/recipes/subagent-normalize.json +0 -11
- package/dist/recipes/subagent-plan.json +0 -11
- package/dist/recipes/subagent-preflight.json +0 -11
- package/dist/recipes/subagent-prompt.json +0 -10
- package/dist/recipes/subagent-quorum.json +0 -10
- package/dist/recipes/subagent-review-coordinator.json +0 -14
- package/dist/recipes/subagent-review.json +0 -11
- package/dist/recipes/subagent-task-card.json +0 -11
- package/dist/recipes/subagent-tools.json +0 -10
- package/dist/recipes/subagent-verify.json +0 -11
- package/dist/recipes/subagents-prompts.json +0 -10
- package/dist/recipes/tool-review.json +0 -10
- package/dist/scripts/async-runner.mjs +25 -25
- package/dist/scripts/conformance.mjs +4 -2
- package/dist/scripts/locker.mjs +196 -69
- package/dist/scripts/music-player.mjs +162 -159
- package/dist/scripts/recipe-utils.mjs +6 -96
- package/dist/scripts/release-gates.mjs +91 -0
- package/dist/scripts/validate-recipe.mjs +8 -57
- package/dist/skills/actors/SKILL.md +57 -265
- package/dist/skills/swarm/SKILL.md +10 -34
- package/docs/0.43-baseline.md +39 -0
- package/docs/README.md +4 -6
- package/docs/actor-inspector.md +26 -64
- package/docs/async-runs.md +81 -328
- package/docs/command-templates.md +8 -118
- package/docs/recipe-library.md +55 -182
- package/docs/releasing.md +28 -0
- package/docs/template-recipes.md +76 -289
- package/docs/tool-registry.md +41 -161
- package/fixtures/protocol/control-endpoint.json +6 -0
- package/fixtures/protocol/control-record.json +9 -0
- package/fixtures/protocol/recipe-summary.json +4 -12
- package/fixtures/protocol/trace-event.json +9 -0
- package/index.ts +1 -1
- package/lib/async-runs.ts +218 -204
- package/lib/automatic-review-runtime.ts +7 -7
- package/lib/command-templates.ts +44 -4
- package/lib/control-projection.ts +105 -0
- package/lib/control.ts +117 -0
- package/lib/draft-sleep.ts +3 -3
- package/lib/execution-sessions.ts +111 -0
- package/lib/file-state.ts +84 -64
- package/lib/inspector-actions.ts +2 -2
- package/lib/inspector-command.ts +3 -3
- package/lib/inspector-overlay.ts +617 -1126
- package/lib/inspector.ts +46 -979
- package/lib/limits.ts +7 -3
- package/lib/observability.ts +60 -101
- package/lib/prompts.ts +3 -3
- package/lib/recipe-control.ts +52 -0
- package/lib/recipes-discovery.ts +2 -0
- package/lib/recipes-references.ts +9 -45
- package/lib/review-control.ts +4 -5
- package/lib/review-projection.ts +1 -5
- package/lib/run-ui-runtime.ts +2 -2
- package/lib/runs-control-delivery.ts +209 -0
- package/lib/runs-controls.ts +213 -0
- package/lib/runs-retention.ts +38 -3
- package/lib/runs-start.ts +4 -2
- package/lib/runs-status.ts +11 -6
- package/lib/runs-trace.ts +136 -0
- package/lib/runtime-identity.ts +39 -0
- package/lib/runtime-notifier.ts +1 -1
- package/lib/runtime-triage.ts +120 -0
- package/lib/tool-review-scheduler.ts +7 -7
- package/lib/tools-inspect.ts +283 -900
- package/lib/tools-local.ts +2 -12
- package/lib/tools-message.ts +112 -520
- package/lib/tools-response.ts +5 -64
- package/lib/tools-spawn.ts +16 -32
- package/lib/tools.ts +5 -6
- package/lib/trace-projection.ts +244 -0
- package/package.json +2 -1
- package/recipes/draft-review.json +0 -10
- package/recipes/lens-swarm.json +0 -14
- package/recipes/music-player.json +10 -19
- package/recipes/pipeline-architect-coordinator.json +0 -11
- package/recipes/pipeline-artifact-bundle.json +1 -22
- package/recipes/pipeline-artifact-report.json +1 -18
- package/recipes/pipeline-artifact-write.json +1 -18
- package/recipes/pipeline-async-run-ops.json +0 -12
- package/recipes/pipeline-checkpoint-continuation.json +0 -14
- package/recipes/pipeline-development-tasking.json +0 -12
- package/recipes/pipeline-docs-maintenance.json +0 -12
- package/recipes/pipeline-media-library.json +0 -12
- package/recipes/pipeline-quorum-review.json +0 -12
- package/recipes/pipeline-release-readiness.json +0 -12
- package/recipes/pipeline-release-summary.json +0 -12
- package/recipes/pipeline-repo-health.json +0 -12
- package/recipes/pipeline-research-synthesis.json +0 -11
- package/recipes/pipeline-review-readiness.json +0 -12
- package/recipes/resource-locker.json +27 -0
- package/recipes/subagent-artifact.json +0 -9
- package/recipes/subagent-checkpoint.json +0 -10
- package/recipes/subagent-conflict-report.json +0 -11
- package/recipes/subagent-contradiction-map.json +0 -11
- package/recipes/subagent-critic.json +0 -11
- package/recipes/subagent-evidence-map.json +0 -11
- package/recipes/subagent-followup.json +0 -10
- package/recipes/subagent-judge.json +0 -11
- package/recipes/subagent-merge.json +0 -11
- package/recipes/subagent-normalize.json +0 -11
- package/recipes/subagent-plan.json +0 -11
- package/recipes/subagent-preflight.json +0 -11
- package/recipes/subagent-prompt.json +0 -10
- package/recipes/subagent-quorum.json +0 -10
- package/recipes/subagent-review-coordinator.json +0 -14
- package/recipes/subagent-review.json +0 -11
- package/recipes/subagent-task-card.json +0 -11
- package/recipes/subagent-tools.json +0 -10
- package/recipes/subagent-verify.json +0 -11
- package/recipes/subagents-prompts.json +0 -10
- package/recipes/tool-review.json +0 -10
- package/scripts/async-runner.mjs +25 -25
- package/scripts/conformance.mjs +4 -2
- package/scripts/locker.mjs +196 -69
- package/scripts/music-player.mjs +162 -159
- package/scripts/recipe-utils.mjs +6 -96
- package/scripts/release-gates.mjs +91 -0
- package/scripts/validate-recipe.mjs +8 -57
- package/skills/actors/SKILL.md +57 -265
- package/skills/swarm/SKILL.md +10 -34
- package/dist/fixtures/protocol/actor-message-branch.json +0 -13
- package/dist/fixtures/protocol/mailbox-contract.json +0 -15
- package/dist/fixtures/protocol/room-message.json +0 -11
- package/dist/fixtures/protocol/room-roster.json +0 -11
- package/dist/fixtures/protocol/run-inbox-message.json +0 -9
- package/dist/fixtures/protocol/run-outbox-event.json +0 -9
- package/dist/lib/mailbox-loop.d.ts +0 -41
- package/dist/lib/mailbox-loop.js +0 -60
- package/dist/lib/messages.d.ts +0 -25
- package/dist/lib/messages.js +0 -122
- package/dist/lib/rooms.d.ts +0 -104
- package/dist/lib/rooms.js +0 -647
- package/dist/lib/runs-mailbox.d.ts +0 -25
- package/dist/lib/runs-mailbox.js +0 -146
- package/dist/lib/runs-messages.d.ts +0 -15
- package/dist/lib/runs-messages.js +0 -179
- package/dist/lib/runs-outbox.d.ts +0 -41
- package/dist/lib/runs-outbox.js +0 -87
- package/dist/lib/tools-mailbox.d.ts +0 -8
- package/dist/lib/tools-mailbox.js +0 -48
- package/dist/recipes/actor-worker.json +0 -39
- package/dist/recipes/coordinator-locker.json +0 -45
- package/dist/recipes/locker.json +0 -45
- package/dist/recipes/pipeline-room-swarm.json +0 -50
- package/dist/recipes/subagent-message.json +0 -32
- package/dist/recipes/utility-actor-message.json +0 -23
- package/dist/scripts/actor-worker.mjs +0 -214
- package/dist/scripts/coordinator.mjs +0 -799
- package/docs/actor-messages.md +0 -225
- package/docs/actors-deep-reference.md +0 -66
- package/docs/component-recipes.md +0 -148
- package/docs/task-first-recipes.md +0 -263
- package/fixtures/protocol/actor-message-branch.json +0 -13
- package/fixtures/protocol/mailbox-contract.json +0 -15
- package/fixtures/protocol/room-message.json +0 -11
- package/fixtures/protocol/room-roster.json +0 -11
- package/fixtures/protocol/run-inbox-message.json +0 -9
- package/fixtures/protocol/run-outbox-event.json +0 -9
- package/lib/mailbox-loop.ts +0 -144
- package/lib/messages.ts +0 -151
- package/lib/rooms.ts +0 -939
- package/lib/runs-mailbox.ts +0 -208
- package/lib/runs-messages.ts +0 -252
- package/lib/runs-outbox.ts +0 -144
- package/lib/tools-mailbox.ts +0 -56
- package/recipes/actor-worker.json +0 -39
- package/recipes/coordinator-locker.json +0 -45
- package/recipes/locker.json +0 -45
- package/recipes/pipeline-room-swarm.json +0 -50
- package/recipes/subagent-message.json +0 -32
- package/recipes/utility-actor-message.json +0 -23
- package/scripts/actor-worker.mjs +0 -214
- package/scripts/coordinator.mjs +0 -799
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure runtime Control triage policy.
|
|
3
|
+
* Zones: pending admission, status-age classification, terminal/replacement staleness
|
|
4
|
+
* Owns Control triage decisions; journal reads and owner filtering stay in adapters, while safe fields come from control-projection.
|
|
5
|
+
*/
|
|
6
|
+
import * as ControlProjection from "./control-projection.ts";
|
|
7
|
+
export declare const RUNTIME_CONTROL_STALE_AFTER_MS: number;
|
|
8
|
+
export interface RuntimeTriageRun {
|
|
9
|
+
run: string;
|
|
10
|
+
runInstanceId?: string;
|
|
11
|
+
status: string;
|
|
12
|
+
}
|
|
13
|
+
export interface RuntimePendingControl extends ControlProjection.ProjectedRunControl {
|
|
14
|
+
age_ms: number;
|
|
15
|
+
reason: "age_threshold_reached" | "run_generation_replaced" | "run_generation_unavailable" | "run_terminal" | "within_age_threshold";
|
|
16
|
+
run: string;
|
|
17
|
+
status: "queued" | "delivered" | "claimed";
|
|
18
|
+
status_at: string;
|
|
19
|
+
}
|
|
20
|
+
export interface RuntimeControlDiagnostic {
|
|
21
|
+
reason: "invalid_action" | "invalid_control_id" | "invalid_generation" | "invalid_record" | "invalid_status" | "invalid_status_timestamp";
|
|
22
|
+
run: string;
|
|
23
|
+
}
|
|
24
|
+
export interface RuntimeControlClassification {
|
|
25
|
+
diagnostic?: RuntimeControlDiagnostic;
|
|
26
|
+
pending?: RuntimePendingControl;
|
|
27
|
+
stale?: RuntimePendingControl;
|
|
28
|
+
}
|
|
29
|
+
export declare function classifyRuntimeControl(run: RuntimeTriageRun, value: unknown, nowMs: number): RuntimeControlClassification;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure runtime Control triage policy.
|
|
3
|
+
* Zones: pending admission, status-age classification, terminal/replacement staleness
|
|
4
|
+
* Owns Control triage decisions; journal reads and owner filtering stay in adapters, while safe fields come from control-projection.
|
|
5
|
+
*/
|
|
6
|
+
import * as ControlProjection from "./control-projection.js";
|
|
7
|
+
export const RUNTIME_CONTROL_STALE_AFTER_MS = 5 * 60 * 1_000;
|
|
8
|
+
const PENDING_STATUSES = new Set([
|
|
9
|
+
"queued",
|
|
10
|
+
"delivered",
|
|
11
|
+
"claimed",
|
|
12
|
+
]);
|
|
13
|
+
const TERMINAL_STATUSES = new Set(["handled", "failed"]);
|
|
14
|
+
function diagnostic(run, reason) {
|
|
15
|
+
return { diagnostic: { reason, run } };
|
|
16
|
+
}
|
|
17
|
+
function statusTimestamp(record, status) {
|
|
18
|
+
if (status === "failed")
|
|
19
|
+
return record.failed_at;
|
|
20
|
+
if (status === "handled")
|
|
21
|
+
return record.handled_at;
|
|
22
|
+
if (status === "claimed")
|
|
23
|
+
return record.claimed_at;
|
|
24
|
+
if (status === "delivered")
|
|
25
|
+
return record.delivered_at;
|
|
26
|
+
return record.queued_at;
|
|
27
|
+
}
|
|
28
|
+
export function classifyRuntimeControl(run, value, nowMs) {
|
|
29
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
30
|
+
return diagnostic(run.run, "invalid_record");
|
|
31
|
+
}
|
|
32
|
+
const record = value;
|
|
33
|
+
const status = record.status;
|
|
34
|
+
if (!PENDING_STATUSES.has(status) && !TERMINAL_STATUSES.has(status)) {
|
|
35
|
+
return diagnostic(run.run, "invalid_status");
|
|
36
|
+
}
|
|
37
|
+
if (typeof record.id !== "string" || !record.id) {
|
|
38
|
+
return diagnostic(run.run, "invalid_control_id");
|
|
39
|
+
}
|
|
40
|
+
if (typeof record.action !== "string" || !record.action) {
|
|
41
|
+
return diagnostic(run.run, "invalid_action");
|
|
42
|
+
}
|
|
43
|
+
if (typeof record.run_instance_id !== "string" || !record.run_instance_id) {
|
|
44
|
+
return diagnostic(run.run, "invalid_generation");
|
|
45
|
+
}
|
|
46
|
+
const timestamp = statusTimestamp(record, status);
|
|
47
|
+
const timestampMs = typeof timestamp === "string" ? Date.parse(timestamp) : Number.NaN;
|
|
48
|
+
if (!Number.isFinite(timestampMs)) {
|
|
49
|
+
return diagnostic(run.run, "invalid_status_timestamp");
|
|
50
|
+
}
|
|
51
|
+
if (TERMINAL_STATUSES.has(status))
|
|
52
|
+
return {};
|
|
53
|
+
const ageMs = Math.max(0, Math.floor(nowMs - timestampMs));
|
|
54
|
+
const staleReason = !run.runInstanceId
|
|
55
|
+
? "run_generation_unavailable"
|
|
56
|
+
: record.run_instance_id !== run.runInstanceId
|
|
57
|
+
? "run_generation_replaced"
|
|
58
|
+
: run.status !== "running"
|
|
59
|
+
? "run_terminal"
|
|
60
|
+
: ageMs >= RUNTIME_CONTROL_STALE_AFTER_MS
|
|
61
|
+
? "age_threshold_reached"
|
|
62
|
+
: undefined;
|
|
63
|
+
const projected = ControlProjection.projectRunControl(record);
|
|
64
|
+
const pending = {
|
|
65
|
+
...projected,
|
|
66
|
+
age_ms: ageMs,
|
|
67
|
+
reason: staleReason ?? "within_age_threshold",
|
|
68
|
+
run: run.run,
|
|
69
|
+
status: status,
|
|
70
|
+
status_at: statusTimestamp(projected, status),
|
|
71
|
+
};
|
|
72
|
+
return {
|
|
73
|
+
pending,
|
|
74
|
+
...(staleReason ? { stale: pending } : {}),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
@@ -264,7 +264,7 @@ export function applyApprovedToolReviewAtSessionBoundary(options = {}) {
|
|
|
264
264
|
...state,
|
|
265
265
|
failedStage: "approval_state",
|
|
266
266
|
lastError: "approved review path is unavailable",
|
|
267
|
-
nextAction: "message
|
|
267
|
+
nextAction: "message target=runtime action=review.retry input={\"scope\":\"tool\"}",
|
|
268
268
|
phase: "processing_failed",
|
|
269
269
|
updatedAt: (options.now ?? (() => new Date()))().toISOString(),
|
|
270
270
|
};
|
|
@@ -287,7 +287,7 @@ export function applyApprovedToolReviewAtSessionBoundary(options = {}) {
|
|
|
287
287
|
...state,
|
|
288
288
|
failedStage: "transaction",
|
|
289
289
|
lastError: `tool review transaction remained ${transaction.phase}`,
|
|
290
|
-
nextAction: "message
|
|
290
|
+
nextAction: "message target=runtime action=review.retry input={\"scope\":\"tool\"}",
|
|
291
291
|
phase: "processing_failed",
|
|
292
292
|
updatedAt: (options.now ?? (() => new Date()))().toISOString(),
|
|
293
293
|
};
|
|
@@ -316,7 +316,7 @@ export function applyApprovedToolReviewAtSessionBoundary(options = {}) {
|
|
|
316
316
|
...pending,
|
|
317
317
|
failedStage: "lineage",
|
|
318
318
|
lastError: error instanceof Error ? error.message : String(error),
|
|
319
|
-
nextAction: "message
|
|
319
|
+
nextAction: "message target=runtime action=review.retry input={\"scope\":\"tool\"}",
|
|
320
320
|
};
|
|
321
321
|
writeJsonAtomic(statePath, failedPending);
|
|
322
322
|
return { outcome: "lineage_pending", state: failedPending };
|
|
@@ -337,7 +337,7 @@ export function applyApprovedToolReviewAtSessionBoundary(options = {}) {
|
|
|
337
337
|
...state,
|
|
338
338
|
failedStage: "transaction",
|
|
339
339
|
lastError: error instanceof Error ? error.message : String(error),
|
|
340
|
-
nextAction: "message
|
|
340
|
+
nextAction: "message target=runtime action=review.retry input={\"scope\":\"tool\"}",
|
|
341
341
|
phase: "processing_failed",
|
|
342
342
|
updatedAt: (options.now ?? (() => new Date()))().toISOString(),
|
|
343
343
|
};
|
|
@@ -401,7 +401,7 @@ export function createToolReviewScheduler(deps) {
|
|
|
401
401
|
...existing,
|
|
402
402
|
failedStage: processed.stage ?? "review_result",
|
|
403
403
|
lastError: processed.error ?? "automatic tool reviewer failed",
|
|
404
|
-
nextAction: "message
|
|
404
|
+
nextAction: "message target=runtime action=review.retry input={\"scope\":\"tool\"}",
|
|
405
405
|
phase: processed.outcome === "processing_failed"
|
|
406
406
|
? "processing_failed"
|
|
407
407
|
: "failed",
|
|
@@ -437,7 +437,7 @@ export function createToolReviewScheduler(deps) {
|
|
|
437
437
|
attempts: existing.attempts + 1,
|
|
438
438
|
failedStage: "review_launch",
|
|
439
439
|
lastError: error instanceof Error ? error.message : String(error),
|
|
440
|
-
nextAction: "message
|
|
440
|
+
nextAction: "message target=runtime action=review.retry input={\"scope\":\"tool\"}",
|
|
441
441
|
phase: "failed",
|
|
442
442
|
updatedAt: now().toISOString(),
|
|
443
443
|
});
|
|
@@ -471,7 +471,7 @@ export function createToolReviewScheduler(deps) {
|
|
|
471
471
|
failedStage: "review_launch",
|
|
472
472
|
inputPath: batch.inputPath,
|
|
473
473
|
lastError: error instanceof Error ? error.message : String(error),
|
|
474
|
-
nextAction: "message
|
|
474
|
+
nextAction: "message target=runtime action=review.retry input={\"scope\":\"tool\"}",
|
|
475
475
|
phase: "failed",
|
|
476
476
|
reviewerInputPath: batch.reviewerInputPath,
|
|
477
477
|
reviewId: batch.reviewId,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Public inspect tool behavior
|
|
3
|
-
* Zones:
|
|
4
|
-
* Owns
|
|
2
|
+
* Public inspect tool behavior.
|
|
3
|
+
* Zones: Run Recipe/Trace/Control views and runtime/recipe/tool diagnostics
|
|
4
|
+
* Owns exact inspect target/view dispatch; source projection stays in domain modules.
|
|
5
5
|
*/
|
|
6
6
|
export interface InspectToolDeps<TContext = unknown> {
|
|
7
7
|
getRunStatus?: (runOrDir: string) => Record<string, any>;
|