@archmax-ai/harness 0.0.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.
- package/LICENSE +21 -0
- package/README.md +219 -0
- package/dist/agent.d.ts +174 -0
- package/dist/agent.js +140 -0
- package/dist/agent.js.map +1 -0
- package/dist/assembly/compose.d.ts +170 -0
- package/dist/assembly/compose.js +391 -0
- package/dist/assembly/compose.js.map +1 -0
- package/dist/assembly/delegation-registry.d.ts +5 -0
- package/dist/assembly/delegation-registry.js +118 -0
- package/dist/assembly/delegation-registry.js.map +1 -0
- package/dist/assembly/index.d.ts +192 -0
- package/dist/assembly/index.js +265 -0
- package/dist/assembly/index.js.map +1 -0
- package/dist/assembly/plain.d.ts +7 -0
- package/dist/assembly/plain.js +41 -0
- package/dist/assembly/plain.js.map +1 -0
- package/dist/authoring-skill/archmax-harness/README.md +76 -0
- package/dist/authoring-skill/archmax-harness/SKILL.md +241 -0
- package/dist/authoring-skill/archmax-harness/references/backend-integration.md +626 -0
- package/dist/authoring-skill/archmax-harness/references/cases.md +41 -0
- package/dist/authoring-skill/archmax-harness/references/diagnostics.md +51 -0
- package/dist/authoring-skill/archmax-harness/references/hook-and-test-scripts.md +1070 -0
- package/dist/authoring-skill/archmax-harness/references/hooks-and-scripts.md +82 -0
- package/dist/authoring-skill/archmax-harness/references/wiring.md +101 -0
- package/dist/authoring-skill/archmax-harness/references/workflow-schema.md +1631 -0
- package/dist/authoring-skill/archmax-harness/references/workflow-yaml.md +241 -0
- package/dist/behaviour/support.d.ts +232 -0
- package/dist/behaviour/support.js +339 -0
- package/dist/behaviour/support.js.map +1 -0
- package/dist/cli/banner.d.ts +11 -0
- package/dist/cli/banner.js +29 -0
- package/dist/cli/banner.js.map +1 -0
- package/dist/cli/bootstrap.d.ts +33 -0
- package/dist/cli/bootstrap.js +153 -0
- package/dist/cli/bootstrap.js.map +1 -0
- package/dist/cli/command.d.ts +39 -0
- package/dist/cli/command.js +97 -0
- package/dist/cli/command.js.map +1 -0
- package/dist/cli/state-flow.d.ts +46 -0
- package/dist/cli/state-flow.js +268 -0
- package/dist/cli/state-flow.js.map +1 -0
- package/dist/cli/style.d.ts +41 -0
- package/dist/cli/style.js +64 -0
- package/dist/cli/style.js.map +1 -0
- package/dist/cli/turn.d.ts +41 -0
- package/dist/cli/turn.js +161 -0
- package/dist/cli/turn.js.map +1 -0
- package/dist/cli.d.ts +10 -0
- package/dist/cli.js +426 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/code-description.d.ts +22 -0
- package/dist/core/code-description.js +38 -0
- package/dist/core/code-description.js.map +1 -0
- package/dist/core/deepagents.d.ts +183 -0
- package/dist/core/deepagents.js +128 -0
- package/dist/core/deepagents.js.map +1 -0
- package/dist/core/events.d.ts +350 -0
- package/dist/core/events.js +205 -0
- package/dist/core/events.js.map +1 -0
- package/dist/core/frontmatter.d.ts +15 -0
- package/dist/core/frontmatter.js +32 -0
- package/dist/core/frontmatter.js.map +1 -0
- package/dist/core/listing-redact.d.ts +37 -0
- package/dist/core/listing-redact.js +88 -0
- package/dist/core/listing-redact.js.map +1 -0
- package/dist/core/match.d.ts +26 -0
- package/dist/core/match.js +75 -0
- package/dist/core/match.js.map +1 -0
- package/dist/core/message-readers.d.ts +84 -0
- package/dist/core/message-readers.js +159 -0
- package/dist/core/message-readers.js.map +1 -0
- package/dist/core/messages.d.ts +49 -0
- package/dist/core/messages.js +85 -0
- package/dist/core/messages.js.map +1 -0
- package/dist/core/mount-prompt.d.ts +28 -0
- package/dist/core/mount-prompt.js +55 -0
- package/dist/core/mount-prompt.js.map +1 -0
- package/dist/core/mount-redact.d.ts +28 -0
- package/dist/core/mount-redact.js +32 -0
- package/dist/core/mount-redact.js.map +1 -0
- package/dist/core/mounts.d.ts +88 -0
- package/dist/core/mounts.js +147 -0
- package/dist/core/mounts.js.map +1 -0
- package/dist/core/path-mapping.d.ts +52 -0
- package/dist/core/path-mapping.js +113 -0
- package/dist/core/path-mapping.js.map +1 -0
- package/dist/core/platform-prompt.generated.d.ts +2 -0
- package/dist/core/platform-prompt.generated.js +4 -0
- package/dist/core/platform-prompt.generated.js.map +1 -0
- package/dist/core/prompt.d.ts +42 -0
- package/dist/core/prompt.js +75 -0
- package/dist/core/prompt.js.map +1 -0
- package/dist/core/session-id.d.ts +38 -0
- package/dist/core/session-id.js +61 -0
- package/dist/core/session-id.js.map +1 -0
- package/dist/core/session-store.d.ts +85 -0
- package/dist/core/session-store.js +149 -0
- package/dist/core/session-store.js.map +1 -0
- package/dist/core/session-zone.d.ts +54 -0
- package/dist/core/session-zone.js +82 -0
- package/dist/core/session-zone.js.map +1 -0
- package/dist/core/skill-prompt.d.ts +31 -0
- package/dist/core/skill-prompt.js +54 -0
- package/dist/core/skill-prompt.js.map +1 -0
- package/dist/core/skill-redact.d.ts +15 -0
- package/dist/core/skill-redact.js +27 -0
- package/dist/core/skill-redact.js.map +1 -0
- package/dist/core/skills.d.ts +172 -0
- package/dist/core/skills.js +214 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/tool-mocks.d.ts +23 -0
- package/dist/core/tool-mocks.js +39 -0
- package/dist/core/tool-mocks.js.map +1 -0
- package/dist/core/tool-telemetry.d.ts +16 -0
- package/dist/core/tool-telemetry.js +40 -0
- package/dist/core/tool-telemetry.js.map +1 -0
- package/dist/core/usage.d.ts +114 -0
- package/dist/core/usage.js +226 -0
- package/dist/core/usage.js.map +1 -0
- package/dist/core/workspace-context.d.ts +136 -0
- package/dist/core/workspace-context.js +178 -0
- package/dist/core/workspace-context.js.map +1 -0
- package/dist/core/workspace-prompt.d.ts +7 -0
- package/dist/core/workspace-prompt.js +102 -0
- package/dist/core/workspace-prompt.js.map +1 -0
- package/dist/core/workspace-router.d.ts +61 -0
- package/dist/core/workspace-router.js +145 -0
- package/dist/core/workspace-router.js.map +1 -0
- package/dist/core/workspace.d.ts +85 -0
- package/dist/core/workspace.js +193 -0
- package/dist/core/workspace.js.map +1 -0
- package/dist/core/zones.d.ts +181 -0
- package/dist/core/zones.js +202 -0
- package/dist/core/zones.js.map +1 -0
- package/dist/env.d.ts +99 -0
- package/dist/env.js +271 -0
- package/dist/env.js.map +1 -0
- package/dist/index.d.ts +265 -0
- package/dist/index.js +197 -0
- package/dist/index.js.map +1 -0
- package/dist/kernel/kernel.d.ts +192 -0
- package/dist/kernel/kernel.js +751 -0
- package/dist/kernel/kernel.js.map +1 -0
- package/dist/lifecycle/hook-shape.d.ts +44 -0
- package/dist/lifecycle/hook-shape.js +66 -0
- package/dist/lifecycle/hook-shape.js.map +1 -0
- package/dist/lifecycle/runner.d.ts +177 -0
- package/dist/lifecycle/runner.js +372 -0
- package/dist/lifecycle/runner.js.map +1 -0
- package/dist/lifecycle/transcript.d.ts +27 -0
- package/dist/lifecycle/transcript.js +43 -0
- package/dist/lifecycle/transcript.js.map +1 -0
- package/dist/machine/allow.d.ts +65 -0
- package/dist/machine/allow.js +107 -0
- package/dist/machine/allow.js.map +1 -0
- package/dist/machine/delegation.d.ts +9 -0
- package/dist/machine/delegation.js +10 -0
- package/dist/machine/delegation.js.map +1 -0
- package/dist/machine/diagnostic.d.ts +14 -0
- package/dist/machine/diagnostic.js +2 -0
- package/dist/machine/diagnostic.js.map +1 -0
- package/dist/machine/lint-spec.d.ts +4 -0
- package/dist/machine/lint-spec.js +266 -0
- package/dist/machine/lint-spec.js.map +1 -0
- package/dist/machine/load-spec.d.ts +90 -0
- package/dist/machine/load-spec.js +120 -0
- package/dist/machine/load-spec.js.map +1 -0
- package/dist/machine/machine.d.ts +273 -0
- package/dist/machine/machine.js +551 -0
- package/dist/machine/machine.js.map +1 -0
- package/dist/machine/mount-grants.d.ts +25 -0
- package/dist/machine/mount-grants.js +24 -0
- package/dist/machine/mount-grants.js.map +1 -0
- package/dist/machine/slug.d.ts +14 -0
- package/dist/machine/slug.js +17 -0
- package/dist/machine/slug.js.map +1 -0
- package/dist/machine/spec-schema.d.ts +662 -0
- package/dist/machine/spec-schema.js +717 -0
- package/dist/machine/spec-schema.js.map +1 -0
- package/dist/machine/tool-names.d.ts +98 -0
- package/dist/machine/tool-names.js +144 -0
- package/dist/machine/tool-names.js.map +1 -0
- package/dist/machine/triggers.d.ts +114 -0
- package/dist/machine/triggers.js +165 -0
- package/dist/machine/triggers.js.map +1 -0
- package/dist/machine/types.d.ts +186 -0
- package/dist/machine/types.js +12 -0
- package/dist/machine/types.js.map +1 -0
- package/dist/machine/validate-spec.d.ts +42 -0
- package/dist/machine/validate-spec.js +29 -0
- package/dist/machine/validate-spec.js.map +1 -0
- package/dist/machine/variables.d.ts +196 -0
- package/dist/machine/variables.js +415 -0
- package/dist/machine/variables.js.map +1 -0
- package/dist/public/cli.d.ts +15 -0
- package/dist/public/cli.js +14 -0
- package/dist/public/cli.js.map +1 -0
- package/dist/public/messages.d.ts +33 -0
- package/dist/public/messages.js +33 -0
- package/dist/public/messages.js.map +1 -0
- package/dist/public/sandbox.d.ts +99 -0
- package/dist/public/sandbox.js +32 -0
- package/dist/public/sandbox.js.map +1 -0
- package/dist/public/spec.d.ts +147 -0
- package/dist/public/spec.js +149 -0
- package/dist/public/spec.js.map +1 -0
- package/dist/public/testing.d.ts +71 -0
- package/dist/public/testing.js +39 -0
- package/dist/public/testing.js.map +1 -0
- package/dist/rubrics/rubrics.d.ts +135 -0
- package/dist/rubrics/rubrics.js +145 -0
- package/dist/rubrics/rubrics.js.map +1 -0
- package/dist/runtime/contract.d.ts +73 -0
- package/dist/runtime/contract.js +96 -0
- package/dist/runtime/contract.js.map +1 -0
- package/dist/sandbox/assets/parts/core.js +22 -0
- package/dist/sandbox/assets/parts/lifecycle-hook.js +47 -0
- package/dist/sandbox/bridge.d.ts +16 -0
- package/dist/sandbox/bridge.js +95 -0
- package/dist/sandbox/bridge.js.map +1 -0
- package/dist/sandbox/executor.d.ts +46 -0
- package/dist/sandbox/executor.js +119 -0
- package/dist/sandbox/executor.js.map +1 -0
- package/dist/sandbox/imports.d.ts +33 -0
- package/dist/sandbox/imports.js +67 -0
- package/dist/sandbox/imports.js.map +1 -0
- package/dist/sandbox/prelude.d.ts +12 -0
- package/dist/sandbox/prelude.js +51 -0
- package/dist/sandbox/prelude.js.map +1 -0
- package/dist/sandbox/ptc-gateway.d.ts +104 -0
- package/dist/sandbox/ptc-gateway.js +167 -0
- package/dist/sandbox/ptc-gateway.js.map +1 -0
- package/dist/sandbox/runtime.d.ts +59 -0
- package/dist/sandbox/runtime.js +51 -0
- package/dist/sandbox/runtime.js.map +1 -0
- package/dist/sandbox/tools.d.ts +34 -0
- package/dist/sandbox/tools.js +147 -0
- package/dist/sandbox/tools.js.map +1 -0
- package/dist/sessions/operations.d.ts +79 -0
- package/dist/sessions/operations.js +121 -0
- package/dist/sessions/operations.js.map +1 -0
- package/dist/sessions/resolve.d.ts +97 -0
- package/dist/sessions/resolve.js +145 -0
- package/dist/sessions/resolve.js.map +1 -0
- package/dist/sessions/resume.d.ts +242 -0
- package/dist/sessions/resume.js +288 -0
- package/dist/sessions/resume.js.map +1 -0
- package/dist/sessions/scope.d.ts +99 -0
- package/dist/sessions/scope.js +145 -0
- package/dist/sessions/scope.js.map +1 -0
- package/dist/sessions/summary.d.ts +65 -0
- package/dist/sessions/summary.js +56 -0
- package/dist/sessions/summary.js.map +1 -0
- package/dist/testing/assertions.d.ts +30 -0
- package/dist/testing/assertions.js +231 -0
- package/dist/testing/assertions.js.map +1 -0
- package/dist/testing/case-document.d.ts +141 -0
- package/dist/testing/case-document.js +51 -0
- package/dist/testing/case-document.js.map +1 -0
- package/dist/testing/case-schema.d.ts +29 -0
- package/dist/testing/case-schema.js +519 -0
- package/dist/testing/case-schema.js.map +1 -0
- package/dist/testing/discovery.d.ts +10 -0
- package/dist/testing/discovery.js +24 -0
- package/dist/testing/discovery.js.map +1 -0
- package/dist/testing/driver.d.ts +78 -0
- package/dist/testing/driver.js +117 -0
- package/dist/testing/driver.js.map +1 -0
- package/dist/testing/grade.d.ts +116 -0
- package/dist/testing/grade.js +261 -0
- package/dist/testing/grade.js.map +1 -0
- package/dist/testing/interpreter.d.ts +55 -0
- package/dist/testing/interpreter.js +103 -0
- package/dist/testing/interpreter.js.map +1 -0
- package/dist/testing/mock-middleware.d.ts +5 -0
- package/dist/testing/mock-middleware.js +33 -0
- package/dist/testing/mock-middleware.js.map +1 -0
- package/dist/testing/runner.d.ts +205 -0
- package/dist/testing/runner.js +266 -0
- package/dist/testing/runner.js.map +1 -0
- package/dist/testing/target.d.ts +27 -0
- package/dist/testing/target.js +21 -0
- package/dist/testing/target.js.map +1 -0
- package/dist/validate/validate.d.ts +41 -0
- package/dist/validate/validate.js +669 -0
- package/dist/validate/validate.js.map +1 -0
- package/dist/workflow/agent-tools.d.ts +10 -0
- package/dist/workflow/agent-tools.js +10 -0
- package/dist/workflow/agent-tools.js.map +1 -0
- package/dist/workflow/checkpointer.d.ts +52 -0
- package/dist/workflow/checkpointer.js +200 -0
- package/dist/workflow/checkpointer.js.map +1 -0
- package/dist/workflow/control-tools.d.ts +174 -0
- package/dist/workflow/control-tools.js +468 -0
- package/dist/workflow/control-tools.js.map +1 -0
- package/dist/workflow/governance.d.ts +104 -0
- package/dist/workflow/governance.js +546 -0
- package/dist/workflow/governance.js.map +1 -0
- package/dist/workflow/middleware.d.ts +85 -0
- package/dist/workflow/middleware.js +283 -0
- package/dist/workflow/middleware.js.map +1 -0
- package/dist/workflow/on-error.d.ts +25 -0
- package/dist/workflow/on-error.js +58 -0
- package/dist/workflow/on-error.js.map +1 -0
- package/dist/workflow/parks.d.ts +46 -0
- package/dist/workflow/parks.js +513 -0
- package/dist/workflow/parks.js.map +1 -0
- package/dist/workflow/paths.d.ts +67 -0
- package/dist/workflow/paths.js +108 -0
- package/dist/workflow/paths.js.map +1 -0
- package/dist/workflow/prompt-cache.d.ts +70 -0
- package/dist/workflow/prompt-cache.js +103 -0
- package/dist/workflow/prompt-cache.js.map +1 -0
- package/dist/workflow/prompt-pruning.d.ts +20 -0
- package/dist/workflow/prompt-pruning.js +83 -0
- package/dist/workflow/prompt-pruning.js.map +1 -0
- package/dist/workflow/render-prompt.d.ts +45 -0
- package/dist/workflow/render-prompt.js +140 -0
- package/dist/workflow/render-prompt.js.map +1 -0
- package/dist/workflow/runtime-config.d.ts +7 -0
- package/dist/workflow/runtime-config.js +9 -0
- package/dist/workflow/runtime-config.js.map +1 -0
- package/dist/workflow/session-artifacts.d.ts +90 -0
- package/dist/workflow/session-artifacts.js +134 -0
- package/dist/workflow/session-artifacts.js.map +1 -0
- package/dist/workflow/session-view.d.ts +31 -0
- package/dist/workflow/session-view.js +94 -0
- package/dist/workflow/session-view.js.map +1 -0
- package/dist/workflow/snapshot.d.ts +14 -0
- package/dist/workflow/snapshot.js +97 -0
- package/dist/workflow/snapshot.js.map +1 -0
- package/dist/workflow/state.d.ts +347 -0
- package/dist/workflow/state.js +322 -0
- package/dist/workflow/state.js.map +1 -0
- package/dist/workflow/sub-workflow.d.ts +174 -0
- package/dist/workflow/sub-workflow.js +392 -0
- package/dist/workflow/sub-workflow.js.map +1 -0
- package/dist/workflow/tool-service.d.ts +48 -0
- package/dist/workflow/tool-service.js +291 -0
- package/dist/workflow/tool-service.js.map +1 -0
- package/dist/workflow/turn-boundary.d.ts +39 -0
- package/dist/workflow/turn-boundary.js +128 -0
- package/dist/workflow/turn-boundary.js.map +1 -0
- package/dist/workflow/turn-runner.d.ts +40 -0
- package/dist/workflow/turn-runner.js +122 -0
- package/dist/workflow/turn-runner.js.map +1 -0
- package/dist/workflow/workflow-tools.d.ts +46 -0
- package/dist/workflow/workflow-tools.js +90 -0
- package/dist/workflow/workflow-tools.js.map +1 -0
- package/package.json +119 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/workflow/state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sub-workflow dispatch: running another governed machine to completion from
|
|
3
|
+
* inside a session, as its own child session (see `sessions/scope.ts`).
|
|
4
|
+
*
|
|
5
|
+
* Two invariants carry the feature's safety. **Every failure is closed**: a
|
|
6
|
+
* rejected child, an exhausted budget, a refused depth or cycle, an unloadable
|
|
7
|
+
* target, an unresolvable param, and a child that parks with nothing to resume
|
|
8
|
+
* it all raise {@link SubWorkflowError}; nothing returns a half-finished sub-run.
|
|
9
|
+
* **Nothing crosses implicitly**: down, only the arguments the call passed; up,
|
|
10
|
+
* only the closing message, the declared returns, and what the child wrote to
|
|
11
|
+
* the run zone.
|
|
12
|
+
*/
|
|
13
|
+
import type { RunnableConfig } from "@langchain/core/runnables";
|
|
14
|
+
import { type WorkflowEventHandler } from "../core/events.js";
|
|
15
|
+
import { type VariableStore } from "../machine/variables.js";
|
|
16
|
+
import { DEFAULT_SUB_WORKFLOW_CONCURRENCY, DEFAULT_SUB_WORKFLOW_DEPTH } from "../machine/delegation.js";
|
|
17
|
+
import type { GovernanceRule } from "../kernel/kernel.js";
|
|
18
|
+
import type { WorkflowMachine } from "../machine/machine.js";
|
|
19
|
+
export { DEFAULT_SUB_WORKFLOW_CONCURRENCY, DEFAULT_SUB_WORKFLOW_DEPTH };
|
|
20
|
+
/** Why a sub-run did not produce a result. Each is a fail-closed outcome. */
|
|
21
|
+
export type SubWorkflowFailureKind = "unresolved-param" | "missing-param" | "missing-return" | "depth-exceeded" | "cycle" | "unknown-workflow" | "not-delegatable" | "disabled" | "parked" | "rejected" | "budget" | "error";
|
|
22
|
+
/**
|
|
23
|
+
* The kinds where nothing ran: a refusal is a governed "no" the caller may
|
|
24
|
+
* correct and retry within the turn (a blocked call); a failure means a child
|
|
25
|
+
* ran and did not finish (a tool error).
|
|
26
|
+
*/
|
|
27
|
+
export declare const SUB_WORKFLOW_REFUSAL_KINDS: ReadonlySet<SubWorkflowFailureKind>;
|
|
28
|
+
export declare function isSubWorkflowRefusal(err: unknown): err is SubWorkflowError;
|
|
29
|
+
/** A sub-run that did not complete, with its kind and the slug of the machine that failed. */
|
|
30
|
+
export declare class SubWorkflowError extends Error {
|
|
31
|
+
readonly kind: SubWorkflowFailureKind;
|
|
32
|
+
readonly workflow: string;
|
|
33
|
+
constructor(kind: SubWorkflowFailureKind, workflow: string, message: string, options?: {
|
|
34
|
+
cause?: unknown;
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* What a parked sub-run leaves on its `GraphInterrupt` so the caller can park
|
|
39
|
+
* with it and hand the decision back on resume. Attached rather than replacing
|
|
40
|
+
* the interrupt, which still has to reach whatever suspends on it.
|
|
41
|
+
*/
|
|
42
|
+
export declare const SUB_WORKFLOW_PARK: unique symbol;
|
|
43
|
+
export interface SubWorkflowPark {
|
|
44
|
+
workflow: string;
|
|
45
|
+
/** The sub-run's identity — what its session id derives from. */
|
|
46
|
+
identity: string;
|
|
47
|
+
dispatchId: string;
|
|
48
|
+
/** The child's own pending decision. */
|
|
49
|
+
decision: unknown;
|
|
50
|
+
}
|
|
51
|
+
/** The park a sub-run left on its suspension, if this error carries one. */
|
|
52
|
+
export declare function subWorkflowParkOf(err: unknown): SubWorkflowPark | undefined;
|
|
53
|
+
/** A composed child runtime: the invocable graph of its governed agent and the machine governing it. */
|
|
54
|
+
export interface SubWorkflowRuntime {
|
|
55
|
+
graph: {
|
|
56
|
+
invoke(input: unknown, config: RunnableConfig): Promise<Record<string, unknown>>;
|
|
57
|
+
};
|
|
58
|
+
machine: WorkflowMachine;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Who is dispatching: what a child's composition depends on beyond its own
|
|
62
|
+
* slug. Denials accumulate down the chain, so the same target composed under
|
|
63
|
+
* two different callers is two compositions.
|
|
64
|
+
*/
|
|
65
|
+
export interface DelegationCaller {
|
|
66
|
+
/** Workflow slugs from the outermost session's first delegation down to the caller (empty at the root). */
|
|
67
|
+
chain: readonly string[];
|
|
68
|
+
/**
|
|
69
|
+
* The denials the child inherits: every ancestor's `policy` — the root's and
|
|
70
|
+
* each intermediate caller's — compiled ahead of the child's own rules.
|
|
71
|
+
*/
|
|
72
|
+
inheritedPolicyRules: GovernanceRule[];
|
|
73
|
+
}
|
|
74
|
+
/** Lazily composes and memoizes a child runtime per workflow slug and delegation chain. */
|
|
75
|
+
export interface SubWorkflowRegistry {
|
|
76
|
+
resolve(workflow: string, caller?: DelegationCaller): Promise<SubWorkflowRuntime>;
|
|
77
|
+
/** The target's declared signature, for the price of a spec read; `title` is prose, the rest is enforced. */
|
|
78
|
+
signature(workflow: string): Promise<{
|
|
79
|
+
requires?: string[];
|
|
80
|
+
returns?: string[];
|
|
81
|
+
title?: string;
|
|
82
|
+
/** Whether the target declares itself out of service; the dispatch refuses on it. */
|
|
83
|
+
disabled?: boolean;
|
|
84
|
+
}>;
|
|
85
|
+
}
|
|
86
|
+
export interface DispatchSubWorkflowInput {
|
|
87
|
+
workflow: string;
|
|
88
|
+
/** Inputs for this dispatch, seeded into the sub-run as locked variables. Strings resolve `${{…}}` against `variables`. */
|
|
89
|
+
params?: Record<string, unknown>;
|
|
90
|
+
/** The dispatching run's variables. */
|
|
91
|
+
variables: VariableStore;
|
|
92
|
+
/** The parent's run config — the session, scope, and dispatch chain come from it. */
|
|
93
|
+
config: RunnableConfig;
|
|
94
|
+
/** The calling state's slug. */
|
|
95
|
+
state: string;
|
|
96
|
+
/** The tool call this dispatch answers. */
|
|
97
|
+
toolCallId?: string;
|
|
98
|
+
signal?: AbortSignal;
|
|
99
|
+
}
|
|
100
|
+
export interface SubWorkflowResult {
|
|
101
|
+
/** The child's closing message. */
|
|
102
|
+
result: string;
|
|
103
|
+
workflow: string;
|
|
104
|
+
/** The state the child finished in. */
|
|
105
|
+
state: string;
|
|
106
|
+
/** The variables the child's `manual` trigger declared in `returns`; absent when it declares none. */
|
|
107
|
+
returns?: Record<string, unknown>;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* The line a sub-run opens with. A chat request needs a message, and this is the
|
|
111
|
+
* child's whole transcript at that moment, so it stays human-role, marked as an
|
|
112
|
+
* `opening` runtime note.
|
|
113
|
+
*/
|
|
114
|
+
export declare const SUB_RUN_OPENING: string;
|
|
115
|
+
export declare const NO_RESULT_MESSAGE = "(the sub-workflow completed without a closing message)";
|
|
116
|
+
export interface SubWorkflowDispatcherOptions {
|
|
117
|
+
registry: SubWorkflowRegistry;
|
|
118
|
+
machine: WorkflowMachine;
|
|
119
|
+
/**
|
|
120
|
+
* The denials a child of this composition inherits: what this composition
|
|
121
|
+
* itself inherited plus its own `policy`, so a grandchild is bound by the root
|
|
122
|
+
* and by every caller between. Absent, the registry falls back to the root's.
|
|
123
|
+
*/
|
|
124
|
+
childPolicyRules?: GovernanceRule[];
|
|
125
|
+
/** `maxDepth` bounds nesting, `maxConcurrent` bounds one session's in-flight sub-runs. */
|
|
126
|
+
bounds?: {
|
|
127
|
+
maxDepth?: number;
|
|
128
|
+
maxConcurrent?: number;
|
|
129
|
+
};
|
|
130
|
+
onEvent?: WorkflowEventHandler;
|
|
131
|
+
}
|
|
132
|
+
export interface SubWorkflowDispatcher {
|
|
133
|
+
dispatch(input: DispatchSubWorkflowInput): Promise<SubWorkflowResult>;
|
|
134
|
+
/** Why this dispatch would be refused (reported as a refused dispatch pair), or `undefined`. */
|
|
135
|
+
refusal(input: DispatchSubWorkflowInput): Promise<SubWorkflowError | undefined>;
|
|
136
|
+
/** Continue a sub-run that stopped for a person, addressed by identity. */
|
|
137
|
+
resume(input: ResumeSubWorkflowInput): Promise<SubWorkflowResult>;
|
|
138
|
+
signature(workflow: string): Promise<{
|
|
139
|
+
requires?: string[];
|
|
140
|
+
returns?: string[];
|
|
141
|
+
disabled?: boolean;
|
|
142
|
+
}>;
|
|
143
|
+
/**
|
|
144
|
+
* Take the sub-runs completed in this session since the last drain. A ledger,
|
|
145
|
+
* because a script's dispatch reaches the PTC gateway, which cannot write graph state.
|
|
146
|
+
*/
|
|
147
|
+
drainDispatches(sessionId: string): SubWorkflowDispatchRecord[];
|
|
148
|
+
/** Release a session's ledger, and every sub-run scope beneath it. */
|
|
149
|
+
release(sessionId: string): void;
|
|
150
|
+
}
|
|
151
|
+
export interface SubWorkflowDispatchRecord {
|
|
152
|
+
workflow: string;
|
|
153
|
+
status: "ok" | "error";
|
|
154
|
+
reason?: string;
|
|
155
|
+
}
|
|
156
|
+
export interface ResumeSubWorkflowInput {
|
|
157
|
+
workflow: string;
|
|
158
|
+
identity: string;
|
|
159
|
+
dispatchId: string;
|
|
160
|
+
config: RunnableConfig;
|
|
161
|
+
/** What the person decided, handed to the child's suspended `interrupt()`. */
|
|
162
|
+
resume: unknown;
|
|
163
|
+
/** The calling state, for events. */
|
|
164
|
+
state: string;
|
|
165
|
+
}
|
|
166
|
+
export declare function createSubWorkflowDispatcher(opts: SubWorkflowDispatcherOptions): SubWorkflowDispatcher;
|
|
167
|
+
/**
|
|
168
|
+
* Resolve a dispatch's params against the dispatching run's variables: strings
|
|
169
|
+
* are substituted, everything else passes through. Fails closed on an unresolved
|
|
170
|
+
* reference: a literal `${{…}}` must never become a sub-run's fact.
|
|
171
|
+
*/
|
|
172
|
+
export declare function resolveParams(params: Record<string, unknown> | undefined, variables: VariableStore, workflow: string): Record<string, unknown>;
|
|
173
|
+
/** The child's closing message: its last assistant text, or an explicit note when it said nothing. */
|
|
174
|
+
export declare function closingMessage(state: unknown): string;
|
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sub-workflow dispatch: running another governed machine to completion from
|
|
3
|
+
* inside a session, as its own child session (see `sessions/scope.ts`).
|
|
4
|
+
*
|
|
5
|
+
* Two invariants carry the feature's safety. **Every failure is closed**: a
|
|
6
|
+
* rejected child, an exhausted budget, a refused depth or cycle, an unloadable
|
|
7
|
+
* target, an unresolvable param, and a child that parks with nothing to resume
|
|
8
|
+
* it all raise {@link SubWorkflowError}; nothing returns a half-finished sub-run.
|
|
9
|
+
* **Nothing crosses implicitly**: down, only the arguments the call passed; up,
|
|
10
|
+
* only the closing message, the declared returns, and what the child wrote to
|
|
11
|
+
* the run zone.
|
|
12
|
+
*/
|
|
13
|
+
import { Command, isGraphInterrupt } from "@langchain/langgraph";
|
|
14
|
+
import { humanNote, lastAgentText } from "../core/messages.js";
|
|
15
|
+
import { createWorkflowEventEmitter, withEventContext, } from "../core/events.js";
|
|
16
|
+
import { DEFAULT_RECURSION_LIMIT } from "../core/deepagents.js";
|
|
17
|
+
import { resolveText } from "../machine/variables.js";
|
|
18
|
+
import { MANUAL_TRIGGER } from "../machine/triggers.js";
|
|
19
|
+
import { workflowToolName } from "../machine/tool-names.js";
|
|
20
|
+
import { DEFAULT_SUB_WORKFLOW_CONCURRENCY, DEFAULT_SUB_WORKFLOW_DEPTH } from "../machine/delegation.js";
|
|
21
|
+
import { findMock, readMocks } from "../core/tool-mocks.js";
|
|
22
|
+
import { readReturns, readWorkflowState, WORKFLOW_STATUSES } from "./state.js";
|
|
23
|
+
import { childRunConfig, releaseScopes, sessionScopeFrom, SEED_VARIABLES_KEY, subRunIdentity, } from "../sessions/scope.js";
|
|
24
|
+
// --- Dispatch -------------------------------------------------------------------
|
|
25
|
+
// The default bounds are pure vocabulary (`machine/delegation.ts`); re-exported
|
|
26
|
+
// so the dispatcher and what it enforces by default are reached from one module.
|
|
27
|
+
export { DEFAULT_SUB_WORKFLOW_CONCURRENCY, DEFAULT_SUB_WORKFLOW_DEPTH };
|
|
28
|
+
/**
|
|
29
|
+
* The kinds where nothing ran: a refusal is a governed "no" the caller may
|
|
30
|
+
* correct and retry within the turn (a blocked call); a failure means a child
|
|
31
|
+
* ran and did not finish (a tool error).
|
|
32
|
+
*/
|
|
33
|
+
export const SUB_WORKFLOW_REFUSAL_KINDS = new Set([
|
|
34
|
+
"depth-exceeded",
|
|
35
|
+
"cycle",
|
|
36
|
+
"missing-param",
|
|
37
|
+
"unknown-workflow",
|
|
38
|
+
"not-delegatable",
|
|
39
|
+
"disabled",
|
|
40
|
+
"unresolved-param",
|
|
41
|
+
]);
|
|
42
|
+
export function isSubWorkflowRefusal(err) {
|
|
43
|
+
return err instanceof SubWorkflowError && SUB_WORKFLOW_REFUSAL_KINDS.has(err.kind);
|
|
44
|
+
}
|
|
45
|
+
/** A sub-run that did not complete, with its kind and the slug of the machine that failed. */
|
|
46
|
+
export class SubWorkflowError extends Error {
|
|
47
|
+
kind;
|
|
48
|
+
workflow;
|
|
49
|
+
constructor(kind, workflow, message, options) {
|
|
50
|
+
super(message, options);
|
|
51
|
+
this.kind = kind;
|
|
52
|
+
this.workflow = workflow;
|
|
53
|
+
this.name = "SubWorkflowError";
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* What a parked sub-run leaves on its `GraphInterrupt` so the caller can park
|
|
58
|
+
* with it and hand the decision back on resume. Attached rather than replacing
|
|
59
|
+
* the interrupt, which still has to reach whatever suspends on it.
|
|
60
|
+
*/
|
|
61
|
+
export const SUB_WORKFLOW_PARK = Symbol.for("archmax.subWorkflowPark");
|
|
62
|
+
function markPark(err, of) {
|
|
63
|
+
Object.defineProperty(err, SUB_WORKFLOW_PARK, {
|
|
64
|
+
value: { ...of, decision: err.interrupts[0]?.value },
|
|
65
|
+
enumerable: false,
|
|
66
|
+
configurable: true,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/** The park a sub-run left on its suspension, if this error carries one. */
|
|
70
|
+
export function subWorkflowParkOf(err) {
|
|
71
|
+
const park = err?.[SUB_WORKFLOW_PARK];
|
|
72
|
+
return park;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* The line a sub-run opens with. A chat request needs a message, and this is the
|
|
76
|
+
* child's whole transcript at that moment, so it stays human-role, marked as an
|
|
77
|
+
* `opening` runtime note.
|
|
78
|
+
*/
|
|
79
|
+
export const SUB_RUN_OPENING = "Begin. Your instructions and your inputs are already in context; read any input you " +
|
|
80
|
+
"need with archmax_get_variables.";
|
|
81
|
+
export const NO_RESULT_MESSAGE = "(the sub-workflow completed without a closing message)";
|
|
82
|
+
/** A counting semaphore: excess dispatches queue rather than fail. */
|
|
83
|
+
function createSemaphore(limit) {
|
|
84
|
+
let active = 0;
|
|
85
|
+
const waiting = [];
|
|
86
|
+
return async function withSlot(fn) {
|
|
87
|
+
while (active >= limit)
|
|
88
|
+
await new Promise((resolve) => waiting.push(resolve));
|
|
89
|
+
active += 1;
|
|
90
|
+
try {
|
|
91
|
+
return await fn();
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
active -= 1;
|
|
95
|
+
waiting.shift()?.();
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
let dispatchSeq = 0;
|
|
100
|
+
export function createSubWorkflowDispatcher(opts) {
|
|
101
|
+
const emit = createWorkflowEventEmitter(opts.onEvent);
|
|
102
|
+
const maxDepth = opts.bounds?.maxDepth ?? DEFAULT_SUB_WORKFLOW_DEPTH;
|
|
103
|
+
const maxConcurrent = opts.bounds?.maxConcurrent ?? DEFAULT_SUB_WORKFLOW_CONCURRENCY;
|
|
104
|
+
const withSlot = createSemaphore(maxConcurrent);
|
|
105
|
+
let ordinal = 0;
|
|
106
|
+
/** Sub-runs completed per session, awaiting a drain into the trail. */
|
|
107
|
+
const dispatched = new Map();
|
|
108
|
+
const record = (config, entry) => {
|
|
109
|
+
const key = sessionScopeFrom(config).sessionId;
|
|
110
|
+
const ledger = dispatched.get(key);
|
|
111
|
+
if (ledger)
|
|
112
|
+
ledger.push(entry);
|
|
113
|
+
else
|
|
114
|
+
dispatched.set(key, [entry]);
|
|
115
|
+
};
|
|
116
|
+
const failed = (workflow, finishedIn, rejected) => new SubWorkflowError("rejected", workflow, `Sub-workflow '${workflow}' was rejected in state '${finishedIn}': ${rejected}`);
|
|
117
|
+
/** Everything that can refuse a dispatch, before anything is composed. Shared by `dispatch` and `refusal`. */
|
|
118
|
+
async function check(input) {
|
|
119
|
+
const { workflow } = input;
|
|
120
|
+
const scope = sessionScopeFrom(input.config);
|
|
121
|
+
const depth = scope.depth + 1;
|
|
122
|
+
const chain = [...scope.chain, workflow].join(" → ");
|
|
123
|
+
if (depth > maxDepth) {
|
|
124
|
+
throw new SubWorkflowError("depth-exceeded", workflow, `Refusing to run sub-workflow '${workflow}': it would be ${depth} delegations deep, ` +
|
|
125
|
+
`past the dispatcher's limit of ${maxDepth}. Chain so far: ${chain}.`);
|
|
126
|
+
}
|
|
127
|
+
if (scope.chain.includes(workflow)) {
|
|
128
|
+
throw new SubWorkflowError("cycle", workflow, `Refusing to run sub-workflow '${workflow}': it is already running in this chain ` +
|
|
129
|
+
`(${chain}), so the run would not terminate.`);
|
|
130
|
+
}
|
|
131
|
+
const params = resolveParams(input.params, input.variables, workflow);
|
|
132
|
+
// A declared mock stands in for the whole sub-run and is served here, so a
|
|
133
|
+
// mocked dispatch is indistinguishable from a real one except that no child runs.
|
|
134
|
+
const mock = findMock(readMocks(input.config.configurable), workflowToolName(workflow), params);
|
|
135
|
+
const signature = await opts.registry.signature(workflow).catch((err) => {
|
|
136
|
+
if (mock)
|
|
137
|
+
return {};
|
|
138
|
+
throw err;
|
|
139
|
+
});
|
|
140
|
+
if (signature.disabled) {
|
|
141
|
+
throw new SubWorkflowError("disabled", workflow, `Refusing to run sub-workflow '${workflow}': it is disabled ` +
|
|
142
|
+
`('disabled: true' in its workflow.yaml), so it starts no run. Remove that ` +
|
|
143
|
+
`flag to re-enable it.`);
|
|
144
|
+
}
|
|
145
|
+
const missing = (signature.requires ?? []).filter((name) => !Object.hasOwn(params, name));
|
|
146
|
+
if (missing.length > 0) {
|
|
147
|
+
throw new SubWorkflowError("missing-param", workflow, `Refusing to run sub-workflow '${workflow}': it requires ` +
|
|
148
|
+
`${missing.map((n) => `'${n}'`).join(", ")}, which this call does not supply. ` +
|
|
149
|
+
`Call it again with ${missing.length === 1 ? "that argument" : "those arguments"}.`);
|
|
150
|
+
}
|
|
151
|
+
return { params, signature, ...(mock ? { mock } : {}) };
|
|
152
|
+
}
|
|
153
|
+
async function refusal(input) {
|
|
154
|
+
try {
|
|
155
|
+
await check(input);
|
|
156
|
+
return undefined;
|
|
157
|
+
}
|
|
158
|
+
catch (err) {
|
|
159
|
+
if (!isSubWorkflowRefusal(err))
|
|
160
|
+
return undefined;
|
|
161
|
+
reportRefusal(input, err);
|
|
162
|
+
return err;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/** Bracket a dispatch that never ran, so an attempted delegation that was stopped is visible. */
|
|
166
|
+
function reportRefusal(input, err) {
|
|
167
|
+
const scope = sessionScopeFrom(input.config);
|
|
168
|
+
const dispatchId = `subwf-${++dispatchSeq}`;
|
|
169
|
+
const common = {
|
|
170
|
+
state: input.state,
|
|
171
|
+
workflow: input.workflow,
|
|
172
|
+
dispatchId,
|
|
173
|
+
...(input.toolCallId ? { toolCallId: input.toolCallId } : {}),
|
|
174
|
+
};
|
|
175
|
+
emit({
|
|
176
|
+
type: "sub-workflow-start",
|
|
177
|
+
...common,
|
|
178
|
+
depth: scope.depth + 1,
|
|
179
|
+
...(scope.chain.length ? { chain: [...scope.chain] } : {}),
|
|
180
|
+
});
|
|
181
|
+
emit({ type: "sub-workflow-result", ...common, status: "error", durationMs: 0, reason: err.message });
|
|
182
|
+
}
|
|
183
|
+
async function dispatch(input) {
|
|
184
|
+
const { workflow, state } = input;
|
|
185
|
+
const scope = sessionScopeFrom(input.config);
|
|
186
|
+
const dispatchId = `subwf-${++dispatchSeq}`;
|
|
187
|
+
const identity = subRunIdentity(state, workflow, ordinal++);
|
|
188
|
+
emit({
|
|
189
|
+
type: "sub-workflow-start",
|
|
190
|
+
state,
|
|
191
|
+
workflow,
|
|
192
|
+
dispatchId,
|
|
193
|
+
depth: scope.depth + 1,
|
|
194
|
+
...(input.toolCallId ? { toolCallId: input.toolCallId } : {}),
|
|
195
|
+
...(scope.chain.length ? { chain: [...scope.chain] } : {}),
|
|
196
|
+
});
|
|
197
|
+
const startedAt = Date.now();
|
|
198
|
+
// Return names only: this stream is a diagnostic channel, not a data one.
|
|
199
|
+
const settle = (status, reason, returns) => emit({
|
|
200
|
+
type: "sub-workflow-result",
|
|
201
|
+
state,
|
|
202
|
+
workflow,
|
|
203
|
+
dispatchId,
|
|
204
|
+
...(input.toolCallId ? { toolCallId: input.toolCallId } : {}),
|
|
205
|
+
status,
|
|
206
|
+
durationMs: Date.now() - startedAt,
|
|
207
|
+
...(reason ? { reason } : {}),
|
|
208
|
+
...(returns ? { returns: Object.keys(returns) } : {}),
|
|
209
|
+
});
|
|
210
|
+
try {
|
|
211
|
+
const { params, signature, mock } = await check(input);
|
|
212
|
+
if (mock) {
|
|
213
|
+
const mocked = applyMock(mock, workflow, signature.returns);
|
|
214
|
+
settle("ok", undefined, mocked.returns);
|
|
215
|
+
record(input.config, { workflow, status: "ok" });
|
|
216
|
+
return mocked;
|
|
217
|
+
}
|
|
218
|
+
const result = await withSlot(() => run({ ...input, dispatchId, identity, params, returns: signature.returns }));
|
|
219
|
+
settle("ok", undefined, result.returns);
|
|
220
|
+
record(input.config, { workflow, status: "ok" });
|
|
221
|
+
return result;
|
|
222
|
+
}
|
|
223
|
+
catch (err) {
|
|
224
|
+
// A child parking surfaces as a `GraphInterrupt`: not a failure, marked so
|
|
225
|
+
// the caller can park with the child, and rethrown untouched.
|
|
226
|
+
if (isGraphInterrupt(err)) {
|
|
227
|
+
settle("parked");
|
|
228
|
+
markPark(err, { workflow, identity, dispatchId });
|
|
229
|
+
throw err;
|
|
230
|
+
}
|
|
231
|
+
const failure = err instanceof SubWorkflowError
|
|
232
|
+
? err
|
|
233
|
+
: new SubWorkflowError(err?.name === "AbortError" ? "budget" : "error", workflow, `Sub-workflow '${workflow}' failed: ${err?.message ?? String(err)}`, { cause: err });
|
|
234
|
+
settle("error", failure.message);
|
|
235
|
+
record(input.config, { workflow, status: "error", reason: failure.message });
|
|
236
|
+
throw failure;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/** The config a child is invoked with: its own session, the dispatch chain, and a whole-turn bound. */
|
|
240
|
+
/** This composition as the caller of a dispatch made under `config`. */
|
|
241
|
+
function caller(config) {
|
|
242
|
+
if (!opts.childPolicyRules)
|
|
243
|
+
return undefined;
|
|
244
|
+
return { chain: sessionScopeFrom(config).chain, inheritedPolicyRules: opts.childPolicyRules };
|
|
245
|
+
}
|
|
246
|
+
function childConfig(parent, child) {
|
|
247
|
+
return { recursionLimit: DEFAULT_RECURSION_LIMIT, ...childRunConfig(parent, child) };
|
|
248
|
+
}
|
|
249
|
+
async function run(input) {
|
|
250
|
+
const { workflow } = input;
|
|
251
|
+
const child = await opts.registry.resolve(workflow, caller(input.config));
|
|
252
|
+
const config = childConfig(input.config, {
|
|
253
|
+
identity: input.identity,
|
|
254
|
+
workflow,
|
|
255
|
+
dispatchId: input.dispatchId,
|
|
256
|
+
});
|
|
257
|
+
// Exactly what the caller declared: the child seeds them as its host would, locked.
|
|
258
|
+
const configurable = { ...(config.configurable ?? {}), [SEED_VARIABLES_KEY]: { ...input.params } };
|
|
259
|
+
// Everything the child emits is tagged with this dispatch.
|
|
260
|
+
const state = await withEventContext({ subWorkflowDispatchId: input.dispatchId }, () => child.graph.invoke({ messages: [humanNote("opening", SUB_RUN_OPENING)] }, { ...config, configurable, ...(input.signal ? { signal: input.signal } : {}) }));
|
|
261
|
+
const fields = readWorkflowState(state);
|
|
262
|
+
const finishedIn = fields.workflowState ?? child.machine.entry;
|
|
263
|
+
// A park normally leaves through the `GraphInterrupt` above; settling in an
|
|
264
|
+
// awaiting status means nothing would ever resume the child, so it fails closed.
|
|
265
|
+
if (fields.status === WORKFLOW_STATUSES.awaitingInput ||
|
|
266
|
+
fields.status === WORKFLOW_STATUSES.awaitingDecision) {
|
|
267
|
+
throw new SubWorkflowError("parked", workflow, `Sub-workflow '${workflow}' settled in state '${finishedIn}' with status ` +
|
|
268
|
+
`'${fields.status}' but no pending suspension, so nothing could resume it.`);
|
|
269
|
+
}
|
|
270
|
+
if (fields.rejected)
|
|
271
|
+
throw failed(workflow, finishedIn, fields.rejected);
|
|
272
|
+
const returns = readReturns(state, input.returns);
|
|
273
|
+
return { result: closingMessage(state), workflow, state: finishedIn, ...(returns ? { returns } : {}) };
|
|
274
|
+
}
|
|
275
|
+
/** Continue a child that stopped for a person: the same invoke, entered with a `Command({ resume })`. */
|
|
276
|
+
async function resume(input) {
|
|
277
|
+
const { workflow, state: callingState } = input;
|
|
278
|
+
const startedAt = Date.now();
|
|
279
|
+
const child = await opts.registry.resolve(workflow, caller(input.config));
|
|
280
|
+
const config = childConfig(input.config, {
|
|
281
|
+
identity: input.identity,
|
|
282
|
+
workflow,
|
|
283
|
+
dispatchId: input.dispatchId,
|
|
284
|
+
});
|
|
285
|
+
const settle = (outcome) => emit({
|
|
286
|
+
type: "sub-workflow-result",
|
|
287
|
+
state: callingState,
|
|
288
|
+
workflow,
|
|
289
|
+
dispatchId: input.dispatchId,
|
|
290
|
+
status: outcome.status,
|
|
291
|
+
durationMs: Date.now() - startedAt,
|
|
292
|
+
...(outcome.status === "error" ? { reason: outcome.reason } : {}),
|
|
293
|
+
...(outcome.status === "ok" && outcome.returns ? { returns: Object.keys(outcome.returns) } : {}),
|
|
294
|
+
});
|
|
295
|
+
try {
|
|
296
|
+
const state = await withEventContext({ subWorkflowDispatchId: input.dispatchId }, () => child.graph.invoke(new Command({ resume: input.resume }), config));
|
|
297
|
+
const fields = readWorkflowState(state);
|
|
298
|
+
const finishedIn = fields.workflowState ?? child.machine.entry;
|
|
299
|
+
if (fields.rejected)
|
|
300
|
+
throw failed(workflow, finishedIn, fields.rejected);
|
|
301
|
+
const returns = readReturns(state, (await opts.registry.signature(workflow)).returns);
|
|
302
|
+
settle({ status: "ok", returns });
|
|
303
|
+
return { result: closingMessage(state), workflow, state: finishedIn, ...(returns ? { returns } : {}) };
|
|
304
|
+
}
|
|
305
|
+
catch (err) {
|
|
306
|
+
if (isGraphInterrupt(err)) {
|
|
307
|
+
markPark(err, { workflow, identity: input.identity, dispatchId: input.dispatchId });
|
|
308
|
+
throw err;
|
|
309
|
+
}
|
|
310
|
+
const failure = err instanceof SubWorkflowError
|
|
311
|
+
? err
|
|
312
|
+
: new SubWorkflowError("error", workflow, `Sub-workflow '${workflow}' failed after resuming: ` +
|
|
313
|
+
`${err?.message ?? String(err)}`, { cause: err });
|
|
314
|
+
settle({ status: "error", reason: failure.message });
|
|
315
|
+
throw failure;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
return {
|
|
319
|
+
dispatch,
|
|
320
|
+
refusal,
|
|
321
|
+
resume,
|
|
322
|
+
signature: (w) => opts.registry.signature(w),
|
|
323
|
+
drainDispatches(sessionId) {
|
|
324
|
+
const ledger = dispatched.get(sessionId) ?? [];
|
|
325
|
+
dispatched.delete(sessionId);
|
|
326
|
+
return ledger;
|
|
327
|
+
},
|
|
328
|
+
release(sessionId) {
|
|
329
|
+
releaseScopes(dispatched, sessionId);
|
|
330
|
+
dispatched.delete(sessionId);
|
|
331
|
+
},
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
/** Turn a matched mock into the dispatch's result, held to the target's declared contract like a real sub-run. */
|
|
335
|
+
function applyMock(mock, workflow, returns) {
|
|
336
|
+
const declared = mock.result;
|
|
337
|
+
if (declared != null && typeof declared === "object" && "error" in declared) {
|
|
338
|
+
throw new SubWorkflowError("rejected", workflow, `Sub-workflow '${workflow}' failed (mocked): ${String(declared.error)}`);
|
|
339
|
+
}
|
|
340
|
+
const asObject = declared != null && typeof declared === "object" ? declared : undefined;
|
|
341
|
+
const result = typeof asObject?.message === "string"
|
|
342
|
+
? asObject.message
|
|
343
|
+
: typeof declared === "string"
|
|
344
|
+
? declared
|
|
345
|
+
: JSON.stringify(declared ?? null);
|
|
346
|
+
const state = typeof asObject?.state === "string" ? asObject.state : "(mocked)";
|
|
347
|
+
const wanted = returns ?? [];
|
|
348
|
+
if (wanted.length === 0)
|
|
349
|
+
return { result, workflow, state };
|
|
350
|
+
const supplied = asObject?.returns;
|
|
351
|
+
const unset = wanted.filter((name) => supplied?.[name] === undefined);
|
|
352
|
+
if (unset.length > 0) {
|
|
353
|
+
throw new SubWorkflowError("missing-return", workflow, `Mocked sub-workflow '${workflow}' supplies no ${unset.map((n) => `'${n}'`).join(", ")}, ` +
|
|
354
|
+
`which it declares in its '${MANUAL_TRIGGER}' trigger's 'returns'. Add ` +
|
|
355
|
+
`${unset.length === 1 ? "it" : "them"} under the mock's 'returns' — a mock stands in ` +
|
|
356
|
+
`for the sub-run, not for its contract.`);
|
|
357
|
+
}
|
|
358
|
+
return {
|
|
359
|
+
result,
|
|
360
|
+
workflow,
|
|
361
|
+
state,
|
|
362
|
+
returns: Object.fromEntries(wanted.map((n) => [n, supplied[n]])),
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Resolve a dispatch's params against the dispatching run's variables: strings
|
|
367
|
+
* are substituted, everything else passes through. Fails closed on an unresolved
|
|
368
|
+
* reference: a literal `${{…}}` must never become a sub-run's fact.
|
|
369
|
+
*/
|
|
370
|
+
export function resolveParams(params, variables, workflow) {
|
|
371
|
+
if (!params)
|
|
372
|
+
return {};
|
|
373
|
+
const resolved = {};
|
|
374
|
+
for (const [name, value] of Object.entries(params)) {
|
|
375
|
+
if (typeof value !== "string") {
|
|
376
|
+
resolved[name] = value;
|
|
377
|
+
continue;
|
|
378
|
+
}
|
|
379
|
+
const substituted = resolveText(value, variables);
|
|
380
|
+
if (!substituted.ok) {
|
|
381
|
+
throw new SubWorkflowError("unresolved-param", workflow, `Cannot run sub-workflow '${workflow}': its param '${name}' references ` +
|
|
382
|
+
`${substituted.detail}.`);
|
|
383
|
+
}
|
|
384
|
+
resolved[name] = substituted.pattern;
|
|
385
|
+
}
|
|
386
|
+
return resolved;
|
|
387
|
+
}
|
|
388
|
+
/** The child's closing message: its last assistant text, or an explicit note when it said nothing. */
|
|
389
|
+
export function closingMessage(state) {
|
|
390
|
+
return lastAgentText(state?.messages ?? []) || NO_RESULT_MESSAGE;
|
|
391
|
+
}
|
|
392
|
+
//# sourceMappingURL=sub-workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sub-workflow.js","sourceRoot":"","sources":["../../src/workflow/sub-workflow.ts"],"names":[],"mappings":"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"}
|