@sensigo/realm 0.41.0 → 0.42.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/dist/adapters/gorgias-adapter.d.ts.map +1 -1
- package/dist/adapters/gorgias-adapter.js +39 -10
- package/dist/adapters/gorgias-adapter.js.map +1 -1
- package/dist/engine/execution-loop.d.ts.map +1 -1
- package/dist/engine/execution-loop.js +124 -21
- package/dist/engine/execution-loop.js.map +1 -1
- package/dist/engine/run-health.d.ts +1 -1
- package/dist/engine/run-health.d.ts.map +1 -1
- package/dist/engine/run-health.js +49 -4
- package/dist/engine/run-health.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/types/run-record.d.ts +11 -1
- package/dist/types/run-record.d.ts.map +1 -1
- package/dist/types/run-record.js.map +1 -1
- package/dist/types/workflow-definition.d.ts +146 -10
- package/dist/types/workflow-definition.d.ts.map +1 -1
- package/dist/types/workflow-definition.js +225 -0
- package/dist/types/workflow-definition.js.map +1 -1
- package/dist/types/workflow-error.d.ts +1 -1
- package/dist/types/workflow-error.d.ts.map +1 -1
- package/dist/types/workflow-error.js.map +1 -1
- package/dist/workflow/diagnostics.d.ts +7 -5
- package/dist/workflow/diagnostics.d.ts.map +1 -1
- package/dist/workflow/diagnostics.js +6 -6
- package/dist/workflow/diagnostics.js.map +1 -1
- package/dist/workflow/registrar.d.ts +42 -0
- package/dist/workflow/registrar.d.ts.map +1 -1
- package/dist/workflow/registrar.js +57 -0
- package/dist/workflow/registrar.js.map +1 -1
- package/dist/workflow/step-key-registry.d.ts +1258 -0
- package/dist/workflow/step-key-registry.d.ts.map +1 -0
- package/dist/workflow/step-key-registry.js +1217 -0
- package/dist/workflow/step-key-registry.js.map +1 -0
- package/dist/workflow/yaml-loader.d.ts +16 -0
- package/dist/workflow/yaml-loader.d.ts.map +1 -1
- package/dist/workflow/yaml-loader.js +494 -340
- package/dist/workflow/yaml-loader.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,228 @@
|
|
|
1
|
+
// issue #508 (final correction): a `types/ -> workflow/` edge, added for `buildTrustRefusal`
|
|
2
|
+
// below — audit-verified to create no cycle (`diagnostics.ts` imports only from its own
|
|
3
|
+
// directory's `source-positions.ts`, which imports only `js-yaml`'s types; neither imports
|
|
4
|
+
// anything from this file).
|
|
5
|
+
import { closestKey } from '../workflow/diagnostics.js';
|
|
6
|
+
/**
|
|
7
|
+
* Every value `TrustLevel` declares — the step-level vocabulary. Single-sourced (issue #508):
|
|
8
|
+
* before this, the two-literal gate test (`=== 'human_confirmed' || === 'human_reviewed'`) was
|
|
9
|
+
* copied by hand at FOUR call sites (the engine's gate mint, the protocol generator ×2, the
|
|
10
|
+
* loader's gate-choices check), and NO site validated the value at all — `human_confrimed`,
|
|
11
|
+
* `Human_Confirmed`, `engine_delivered`, `""`, `123`, `null` all loaded clean and ran with no
|
|
12
|
+
* gate. See `classifyStepTrust`/`isGateTrust` below, and `docs/reference/yaml-schema.md`'s
|
|
13
|
+
* `## Trust levels` section for the authoring contract.
|
|
14
|
+
*
|
|
15
|
+
* **`as const satisfies readonly TrustLevel[]` is NORMATIVE, not stylistic.** An explicit
|
|
16
|
+
* `readonly TrustLevel[]` type annotation WIDENS the array's member type to the full `TrustLevel`
|
|
17
|
+
* union regardless of which literals are actually listed — under that annotation, the
|
|
18
|
+
* `Exclude<>`-based drift guards below type-check even with members missing, shipping dead.
|
|
19
|
+
* `as const` preserves the literal tuple type the guards need to see a real difference. This is
|
|
20
|
+
* the house pattern (`KNOWN_STEP_KEYS`/`KNOWN_RETRY_KEYS` above), and verified here by actually
|
|
21
|
+
* deleting a member and confirming a real compile error results (not merely asserted).
|
|
22
|
+
*/
|
|
23
|
+
export const TRUST_LEVELS = [
|
|
24
|
+
'auto',
|
|
25
|
+
'human_confirmed',
|
|
26
|
+
'human_reviewed',
|
|
27
|
+
];
|
|
28
|
+
/** The subset of `TRUST_LEVELS` that actually opens a human gate — `'auto'` is the sole
|
|
29
|
+
* non-gating member of `TrustLevel`. Kept as its OWN array (not derived by filtering
|
|
30
|
+
* `TRUST_LEVELS` at the type level) so a single hardcoded `TRUST_LEVELS` collapse at the mint
|
|
31
|
+
* can never silently widen who gets gated — see `classifyStepTrust`'s arm-order comment for why
|
|
32
|
+
* the drift this guards against is a real, previously-considered mutant shape. */
|
|
33
|
+
export const GATE_TRUST_LEVELS = [
|
|
34
|
+
'human_confirmed',
|
|
35
|
+
'human_reviewed',
|
|
36
|
+
];
|
|
37
|
+
/** Every value `ServiceTrust` declares — the `services: <name>: trust:` vocabulary. A DIFFERENT
|
|
38
|
+
* key from a step's own `trust:` (the dominant real-world confusion this PR's L1 refusal names
|
|
39
|
+
* directly — six of realm's nine shipped examples carried a `ServiceTrust` literal on a step).
|
|
40
|
+
* Minted here, single-sourced, so the loader's own Ajv enum (`yaml-loader.ts`) and this PR's
|
|
41
|
+
* service-trust-confusion refusal can never drift apart into a THIRD hardcoded copy. */
|
|
42
|
+
export const SERVICE_TRUST_LEVELS = [
|
|
43
|
+
'engine_delivered',
|
|
44
|
+
'engine_managed',
|
|
45
|
+
'agent_provided',
|
|
46
|
+
];
|
|
47
|
+
const _trustLevelsMissingCheck = true;
|
|
48
|
+
const _trustLevelsExtraCheck = true;
|
|
49
|
+
const _gateTrustSubsetCheck = true;
|
|
50
|
+
const _serviceTrustLevelsMissingCheck = true;
|
|
51
|
+
const _serviceTrustLevelsExtraCheck = true;
|
|
52
|
+
/**
|
|
53
|
+
* Classifies a step's declared `trust` value against its execution kind. `kind` is
|
|
54
|
+
* `ExecutionMode | undefined` because one real call site (`yaml-loader.ts`'s per-step walk) sees
|
|
55
|
+
* this before `execution` has been validated — a step with `execution: bogus` (or a missing
|
|
56
|
+
* `execution` at all) reaches trust classification before the malformed-kind error is the whole
|
|
57
|
+
* verdict, and `undefined` here must classify as harmlessly as an absent trust value: covered by
|
|
58
|
+
* the FIRST arm below.
|
|
59
|
+
*
|
|
60
|
+
* **Arm order is normative** (issue #508 design review, mutant (iii)): `GATE_TRUST_LEVELS`
|
|
61
|
+
* membership is tested BEFORE the `'auto'` shortcut on auto/agent. With the shortcut checked
|
|
62
|
+
* first, collapsing `GATE_TRUST_LEVELS` into `TRUST_LEVELS` (a plausible single-sourcing
|
|
63
|
+
* shortcut) would change NOTHING observable — 'auto' is caught by its own branch either way,
|
|
64
|
+
* and `TRUST_LEVELS` membership alone can never distinguish 'human_confirmed' from 'auto' when
|
|
65
|
+
* the shortcut already resolved it — making that mutation a GUARANTEED EQUIVALENT MUTANT rather
|
|
66
|
+
* than a real regression test. Testing `GATE_TRUST_LEVELS` first means the collapse is
|
|
67
|
+
* observable: `classifyStepTrust('auto', 'auto')` would flip from `'lawful_no_gate'` to
|
|
68
|
+
* `'gates'`, since `TRUST_LEVELS` (unlike `GATE_TRUST_LEVELS`) contains `'auto'`.
|
|
69
|
+
*/
|
|
70
|
+
export function classifyStepTrust(kind, value) {
|
|
71
|
+
if (value === undefined)
|
|
72
|
+
return 'lawful_no_gate';
|
|
73
|
+
if (kind === 'auto' || kind === 'agent') {
|
|
74
|
+
if (GATE_TRUST_LEVELS.includes(value))
|
|
75
|
+
return 'gates';
|
|
76
|
+
if (value === 'auto')
|
|
77
|
+
return 'lawful_no_gate';
|
|
78
|
+
return 'refuse';
|
|
79
|
+
}
|
|
80
|
+
if (kind === 'finalizer') {
|
|
81
|
+
return value === 'auto' ? 'lawful_no_gate' : 'refuse';
|
|
82
|
+
}
|
|
83
|
+
// guard, and any kind outside the four (undefined, or a value the loader would itself refuse
|
|
84
|
+
// as an invalid `execution`) — trust is never meaningful there, declared or not.
|
|
85
|
+
return 'refuse';
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Pure VALUE question — "is this a gate-opening literal" — for the two call sites that have no
|
|
89
|
+
* kind in scope at all: the engine's gate mint (`execution-loop.ts`, which only ever reaches a
|
|
90
|
+
* step whose kind already passed L1/L2, so the kind conjunct `classifyStepTrust` would add is
|
|
91
|
+
* inert there) and the loader's gate-choices-empty check (`yaml-loader.ts`, evaluated on a raw
|
|
92
|
+
* step object before this file's own kind-narrowing block). `classifyStepTrust` CONSUMES this
|
|
93
|
+
* function for its own 'gates' arm, so there remains exactly one membership fact — passing a
|
|
94
|
+
* fabricated kind to reach a single call site would not be single-sourcing, it would be lying to
|
|
95
|
+
* a parameter to get there.
|
|
96
|
+
*/
|
|
97
|
+
export function isGateTrust(value) {
|
|
98
|
+
return GATE_TRUST_LEVELS.includes(value);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Renders a `trust` value into prose — the ONE rendering rule every trust-value message shares,
|
|
102
|
+
* exported so a NON-refusal disclosure (the protocol generator's guard/finalizer inert-trust
|
|
103
|
+
* note) can consume it too, rather than hand-rolling its own renderer that could drift from this
|
|
104
|
+
* one. `JSON.stringify`, unconditionally, no exceptions: `String()` makes `''` print as the
|
|
105
|
+
* unreadable `'trust: '` (reads as MISSING, not empty), `null` print as `'trust: null'`
|
|
106
|
+
* (indistinguishable from the three-character string `"null"`), and — worst — an ARRAY print as
|
|
107
|
+
* its own first element (`String(['a','b'])` is `'a,b'`; a value the author declared as a list is
|
|
108
|
+
* shown as if it were a scalar, with no sign anything was ever dropped).
|
|
109
|
+
*/
|
|
110
|
+
export function renderTrustValue(value) {
|
|
111
|
+
return JSON.stringify(value);
|
|
112
|
+
}
|
|
113
|
+
function selectTrustRefusalArm(value) {
|
|
114
|
+
if (SERVICE_TRUST_LEVELS.includes(value))
|
|
115
|
+
return 'service';
|
|
116
|
+
if (value === 'human_notified')
|
|
117
|
+
return 'removed';
|
|
118
|
+
return 'generic';
|
|
119
|
+
}
|
|
120
|
+
function trustRefusalConsequence(surface) {
|
|
121
|
+
switch (surface) {
|
|
122
|
+
case 'load':
|
|
123
|
+
// No error-code mention: L1's throw carries `VALIDATION_WORKFLOW_SCHEMA` (yaml-loader.ts
|
|
124
|
+
// joins every load-time error into one `WorkflowError` under that single code) — never
|
|
125
|
+
// `VALIDATION_TRUST_VALUE`, which is exclusively L2's (execution-loop.ts's) code. Naming
|
|
126
|
+
// it here would be a claim this surface cannot back.
|
|
127
|
+
return ('refused at load: this workflow cannot create a run while the value is wrong, so no ' +
|
|
128
|
+
'step of it — gated or not — ever executes under it');
|
|
129
|
+
case 'dispatch':
|
|
130
|
+
// No inline code mention either, but for the OPPOSITE reason: `error_code` is a real,
|
|
131
|
+
// separate, structured field on the envelope here (`VALIDATION_TRUST_VALUE`, set on the
|
|
132
|
+
// `WorkflowError` this text becomes the message of) — a reader with programmatic access
|
|
133
|
+
// already has it without parsing prose for it.
|
|
134
|
+
return ('refused at dispatch: no gate opens and this step does not run; this run is now ' +
|
|
135
|
+
'parked, non-terminal, until the value is corrected, and any step depending on this ' +
|
|
136
|
+
"one returns 'blocked' in the meantime");
|
|
137
|
+
case 'finding':
|
|
138
|
+
// `RunHealthFinding` has no separate code field the way `dispatch`'s envelope does — the
|
|
139
|
+
// code is only ever visible if it is IN this string.
|
|
140
|
+
return 'the engine will refuse this step at dispatch (VALIDATION_TRUST_VALUE)';
|
|
141
|
+
case 'briefing':
|
|
142
|
+
// Same reasoning as `finding`: `ProtocolStep.agent_involvement` is a bare string, and this
|
|
143
|
+
// is a genuinely true prediction of what L2 will throw if the agent calls execute_step
|
|
144
|
+
// anyway — the code is real information, not decoration.
|
|
145
|
+
return ('calling execute_step here will be refused (VALIDATION_TRUST_VALUE): no gate opens ' +
|
|
146
|
+
'and this step does not run; the run would then park, non-terminal, until the value ' +
|
|
147
|
+
"is corrected, with any step depending on this one returning 'blocked'");
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* The accepted-set / did-you-mean / remedy tail. `kind: 'finalizer'` is the ONE case that
|
|
152
|
+
* replaces this entirely with the finalizer's own kind clause — reachable only on
|
|
153
|
+
* `surface: 'load'` (see `buildTrustRefusal`'s own doc for why `dispatch`/`finding`/`briefing`
|
|
154
|
+
* never see a finalizer step at all): the generic accepted-set-plus-live-run-remedy text would
|
|
155
|
+
* wrongly imply the two human-gate literals are meaningful on a kind that can never gate.
|
|
156
|
+
*/
|
|
157
|
+
function trustRefusalTail(kind, surface, didYouMean) {
|
|
158
|
+
if (kind === 'finalizer') {
|
|
159
|
+
return (`'trust' accepts ${TRUST_LEVELS.join(', ')}, and only 'auto' is meaningful on ` +
|
|
160
|
+
`execution: finalizer steps.`);
|
|
161
|
+
}
|
|
162
|
+
switch (surface) {
|
|
163
|
+
case 'load':
|
|
164
|
+
return (`A step's 'trust' accepts ${TRUST_LEVELS.join(', ')}.` +
|
|
165
|
+
(didYouMean !== undefined ? ` Did you mean '${didYouMean}'?` : '') +
|
|
166
|
+
` Correct the value, then 'realm workflow register <path>' — any run of this ` +
|
|
167
|
+
`workflow picks up the corrected definition on its next attempt at this step.`);
|
|
168
|
+
case 'dispatch':
|
|
169
|
+
return (`A step's 'trust' accepts ${TRUST_LEVELS.join(', ')}.` +
|
|
170
|
+
(didYouMean !== undefined ? ` Did you mean '${didYouMean}'?` : '') +
|
|
171
|
+
` Correct the value, then 'realm workflow register <path>' and retry this step — ` +
|
|
172
|
+
`this run picks up the corrected definition.`);
|
|
173
|
+
case 'finding':
|
|
174
|
+
return (`Accepts ${TRUST_LEVELS.join(', ')}` +
|
|
175
|
+
(didYouMean !== undefined ? `; did you mean '${didYouMean}'?` : '') +
|
|
176
|
+
` — correct the value and 'realm workflow register <path>'.`);
|
|
177
|
+
case 'briefing':
|
|
178
|
+
return (`A step's 'trust' accepts ${TRUST_LEVELS.join(', ')}.` +
|
|
179
|
+
(didYouMean !== undefined ? ` Did you mean '${didYouMean}'?` : '') +
|
|
180
|
+
` Do NOT call execute_step for it; report this to the user, who must correct the ` +
|
|
181
|
+
`workflow definition and re-register it.`);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* The ONE trust-refusal message composer (issue #508 final correction). Four consumers —
|
|
186
|
+
* `yaml-loader.ts`'s load-time refusal (auto/agent, and the finalizer's own non-gate-literal
|
|
187
|
+
* branch), `execution-loop.ts`'s dispatch-time refusal, `run-health.ts`'s `trust_value_invalid`
|
|
188
|
+
* finding, and the protocol generator's pre-dispatch agent briefing — used to hand-compose this
|
|
189
|
+
* text independently, and every defect this issue's prior rounds found (arm divergence across
|
|
190
|
+
* surfaces, mixed bare/quoted value rendering, an array printing as its own first element, a
|
|
191
|
+
* grammar seam where a sentence-ending clause met a lowercase continuation) fell out of that
|
|
192
|
+
* duplication, not out of four separate bugs. This function is the single point where value
|
|
193
|
+
* rendering, arm selection, and the per-surface consequence sentence are assembled — no call site
|
|
194
|
+
* chooses an arm or renders a value on its own again.
|
|
195
|
+
*
|
|
196
|
+
* `kind` only changes the output when `kind === 'finalizer'` — and even then, only reachable on
|
|
197
|
+
* `surface: 'load'`. `dispatch`/`finding`/`briefing` are all scoped, structurally, to
|
|
198
|
+
* `findEligibleSteps`'s auto/agent-only population (see each call site's own comment for why),
|
|
199
|
+
* so a finalizer step's trust value can only ever reach this function through `yaml-loader.ts`'s
|
|
200
|
+
* load-time check. `kind: 'guard'` must never reach this function at all: a guard's blanket
|
|
201
|
+
* `trust` prohibition is a KIND prohibition (the key is the offense, the value is irrelevant),
|
|
202
|
+
* minted by the #517 registry walk, and structurally never routes through a value-refusal
|
|
203
|
+
* composer.
|
|
204
|
+
*/
|
|
205
|
+
export function buildTrustRefusal(args) {
|
|
206
|
+
const { kind, value, step, surface } = args;
|
|
207
|
+
const arm = selectTrustRefusalArm(value);
|
|
208
|
+
// `closestKey` throws a TypeError on `null` — guarded by the `typeof` check, which also
|
|
209
|
+
// correctly excludes every other non-string value (123, [], {}) from the suggestion without a
|
|
210
|
+
// special case for each. Only the generic arm ever suggests: a service-trust value or the
|
|
211
|
+
// retired tombstone are exact membership matches, not near-misses.
|
|
212
|
+
const didYouMean = arm === 'generic' && typeof value === 'string' ? closestKey(value, TRUST_LEVELS) : undefined;
|
|
213
|
+
const rendered = renderTrustValue(value);
|
|
214
|
+
const armClause = arm === 'service'
|
|
215
|
+
? `'trust: ${rendered}' is a SERVICE's trust level (declared under 'services: <name>: ` +
|
|
216
|
+
`trust:'), not a step's`
|
|
217
|
+
: arm === 'removed'
|
|
218
|
+
? `'trust: ${rendered}' was removed (issue #508): it never triggered a notification, ` +
|
|
219
|
+
`it never opened a gate, and most workflows should simply delete the key`
|
|
220
|
+
: `'trust: ${rendered}' is not a recognized value`;
|
|
221
|
+
const prefix = surface === 'load' || surface === 'dispatch' ? `Step '${step}': ` : '';
|
|
222
|
+
const consequence = trustRefusalConsequence(surface);
|
|
223
|
+
const tail = trustRefusalTail(kind, surface, didYouMean);
|
|
224
|
+
return `${prefix}${armClause} — ${consequence}. ${tail}`;
|
|
225
|
+
}
|
|
1
226
|
/**
|
|
2
227
|
* Every key RetryConfig declares. Used by the YAML loader (issue #140) to warn when a `retry:`
|
|
3
228
|
* block declares a key that isn't recognized (misspelling, or a stale field) — same non-breaking
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-definition.js","sourceRoot":"","sources":["../../src/types/workflow-definition.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workflow-definition.js","sourceRoot":"","sources":["../../src/types/workflow-definition.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { LoaderWarning } from '../workflow/diagnostics.js';
|
|
2
2
|
export type ErrorCategory = 'NETWORK' | 'SERVICE' | 'STATE' | 'VALIDATION' | 'ENGINE' | 'RESOURCE';
|
|
3
3
|
export type AgentAction = 'report_to_user' | 'provide_input' | 'resolve_precondition' | 'stop' | 'wait_for_human' | 'wait_and_proceed';
|
|
4
|
-
export type ErrorCode = 'NETWORK_TIMEOUT' | 'NETWORK_UNREACHABLE' | 'NETWORK_DNS_FAILED' | 'NETWORK_CONNECTION_RESET' | 'SERVICE_HTTP_4XX' | 'SERVICE_HTTP_5XX' | 'SERVICE_RATE_LIMITED' | 'SERVICE_AUTH_FAILED' | 'SERVICE_NOT_FOUND' | 'SERVICE_RESPONSE_INVALID' | 'SERVICE_UNEXPECTED_REDIRECT' | 'STATE_BLOCKED' | 'STATE_PRECONDITION_FAILED' | 'STATE_RUN_NOT_FOUND' | 'STATE_WORKFLOW_NOT_FOUND' | 'STATE_RUN_TERMINAL' | 'STATE_SNAPSHOT_MISMATCH' | 'STATE_RUN_LOCKED' | 'STATE_RUN_BUSY' | 'STATE_TRANSITION_DENIED' | 'STATE_RUN_RESURRECTED' | 'STATE_LEGACY_FORMAT' | 'STATE_STEP_ALREADY_CLAIMED' | 'STATE_STEP_NOT_ELIGIBLE' | 'STATE_STEP_ALREADY_SETTLED' | 'STATE_CLAIM_LOST' | 'STATE_RUN_DIVERGED' | 'STATE_RUN_ALREADY_ACTIVE' | 'STATE_IDEMPOTENCY_KEY_USED' | 'RUN_ABORTING' | 'VALIDATION_INPUT_SCHEMA' | 'VALIDATION_OUTPUT_SCHEMA' | 'VALIDATION_TRACE_SCHEMA' | 'VALIDATION_EXHAUSTED' | 'VALIDATION_WORKFLOW_SCHEMA' | 'VALIDATION_HASH_MISMATCH' | 'VALIDATION_QUOTE_NOT_FOUND' | 'VALIDATION_FIELD_UNKNOWN' | 'VALIDATION_FIELD_EXCLUDED' | 'VALIDATION_EMPTY_VALUE' | 'VALIDATION_BATCH_TOO_LARGE' | 'VALIDATION_BATCH_ITEMS' | 'STEP_HANDLER_ERROR' | 'ENGINE_INTERNAL' | 'ENGINE_STORE_FAILED' | 'ENGINE_ARTIFACT_DELETE_FAILED' | 'ENGINE_ADAPTER_FAILED' | 'ENGINE_ADAPTER_NOT_REGISTERED' | 'ENGINE_PROCESSOR_FAILED' | 'ENGINE_HANDLER_FAILED' | 'ENGINE_HANDLER_NOT_REGISTERED' | 'ENGINE_STEP_FAILED' | 'ENGINE_GATE_OPEN_FAILED' | 'GATE_MESSAGE_UNRESOLVABLE' | 'FILTER_UNKNOWN' | 'ADAPTER_OP_UNSUPPORTED' | 'ADAPTER_VALIDATION_FAILED' | 'ADAPTER_REQUEST_FAILED' | 'STEP_TIMEOUT' | 'STEP_ABORTED' | 'STEP_RETRY_EXHAUSTED' | 'STATE_STEP_PENDING' | 'STATE_SEAL_UNSTAMPED' | 'STATE_SEAL_ORPHANED' | 'STATE_SEAL_ERASED' | 'STATE_SEAL_UNKNOWN_ARM' | 'STATE_SEAL_INCOHERENT' | 'STATE_SEAL_REWRITTEN' | 'STEP_NOT_FOUND' | 'GUARD_RESOLUTION_ERROR' | 'INPUT_MAP_DEPTH_EXCEEDED' | 'INPUT_MAP_UNKNOWN_DIRECTIVE' | 'RESOURCE_FETCH_FAILED' | 'RESOURCE_TOO_LARGE' | 'RESOURCE_FORMAT_INVALID' | 'RESOURCE_NOT_ACCESSIBLE' | 'BUFFER_FULL' | 'TRACE_CAPABILITY_INCONSISTENT' | 'MCP_CONNECTION_FAILED' | 'MCP_TOOL_NOT_FOUND' | 'MCP_TOOL_NAME_COLLISION';
|
|
4
|
+
export type ErrorCode = 'NETWORK_TIMEOUT' | 'NETWORK_UNREACHABLE' | 'NETWORK_DNS_FAILED' | 'NETWORK_CONNECTION_RESET' | 'SERVICE_HTTP_4XX' | 'SERVICE_HTTP_5XX' | 'SERVICE_RATE_LIMITED' | 'SERVICE_AUTH_FAILED' | 'SERVICE_NOT_FOUND' | 'SERVICE_RESPONSE_INVALID' | 'SERVICE_UNEXPECTED_REDIRECT' | 'STATE_BLOCKED' | 'STATE_PRECONDITION_FAILED' | 'STATE_RUN_NOT_FOUND' | 'STATE_WORKFLOW_NOT_FOUND' | 'STATE_RUN_TERMINAL' | 'STATE_SNAPSHOT_MISMATCH' | 'STATE_RUN_LOCKED' | 'STATE_RUN_BUSY' | 'STATE_TRANSITION_DENIED' | 'STATE_RUN_RESURRECTED' | 'STATE_LEGACY_FORMAT' | 'STATE_STEP_ALREADY_CLAIMED' | 'STATE_STEP_NOT_ELIGIBLE' | 'STATE_STEP_ALREADY_SETTLED' | 'STATE_CLAIM_LOST' | 'STATE_RUN_DIVERGED' | 'STATE_RUN_ALREADY_ACTIVE' | 'STATE_IDEMPOTENCY_KEY_USED' | 'RUN_ABORTING' | 'VALIDATION_INPUT_SCHEMA' | 'VALIDATION_OUTPUT_SCHEMA' | 'VALIDATION_TRACE_SCHEMA' | 'VALIDATION_EXHAUSTED' | 'VALIDATION_WORKFLOW_SCHEMA' | 'VALIDATION_HASH_MISMATCH' | 'VALIDATION_QUOTE_NOT_FOUND' | 'VALIDATION_FIELD_UNKNOWN' | 'VALIDATION_FIELD_EXCLUDED' | 'VALIDATION_EMPTY_VALUE' | 'VALIDATION_BATCH_TOO_LARGE' | 'VALIDATION_BATCH_ITEMS' | 'VALIDATION_TRUST_VALUE' | 'STEP_HANDLER_ERROR' | 'ENGINE_INTERNAL' | 'ENGINE_STORE_FAILED' | 'ENGINE_ARTIFACT_DELETE_FAILED' | 'ENGINE_ADAPTER_FAILED' | 'ENGINE_ADAPTER_NOT_REGISTERED' | 'ENGINE_PROCESSOR_FAILED' | 'ENGINE_HANDLER_FAILED' | 'ENGINE_HANDLER_NOT_REGISTERED' | 'ENGINE_STEP_FAILED' | 'ENGINE_GATE_OPEN_FAILED' | 'GATE_MESSAGE_UNRESOLVABLE' | 'FILTER_UNKNOWN' | 'ADAPTER_OP_UNSUPPORTED' | 'ADAPTER_VALIDATION_FAILED' | 'ADAPTER_REQUEST_FAILED' | 'STEP_TIMEOUT' | 'STEP_ABORTED' | 'STEP_RETRY_EXHAUSTED' | 'STATE_STEP_PENDING' | 'STATE_SEAL_UNSTAMPED' | 'STATE_SEAL_ORPHANED' | 'STATE_SEAL_ERASED' | 'STATE_SEAL_UNKNOWN_ARM' | 'STATE_SEAL_INCOHERENT' | 'STATE_SEAL_REWRITTEN' | 'STEP_NOT_FOUND' | 'GUARD_RESOLUTION_ERROR' | 'INPUT_MAP_DEPTH_EXCEEDED' | 'INPUT_MAP_UNKNOWN_DIRECTIVE' | 'RESOURCE_FETCH_FAILED' | 'RESOURCE_TOO_LARGE' | 'RESOURCE_FORMAT_INVALID' | 'RESOURCE_NOT_ACCESSIBLE' | 'BUFFER_FULL' | 'TRACE_CAPABILITY_INCONSISTENT' | 'MCP_CONNECTION_FAILED' | 'MCP_TOOL_NOT_FOUND' | 'MCP_TOOL_NAME_COLLISION';
|
|
5
5
|
export interface WorkflowErrorOptions {
|
|
6
6
|
code: ErrorCode;
|
|
7
7
|
category: ErrorCategory;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-error.d.ts","sourceRoot":"","sources":["../../src/types/workflow-error.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workflow-error.d.ts","sourceRoot":"","sources":["../../src/types/workflow-error.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-error.js","sourceRoot":"","sources":["../../src/types/workflow-error.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workflow-error.js","sourceRoot":"","sources":["../../src/types/workflow-error.ts"],"names":[],"mappings":"AA6MA,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC7B,IAAI,CAAY;IAChB,QAAQ,CAAgB;IACxB,WAAW,CAAc;IACzB,SAAS,CAAU;IACnB,OAAO,CAA0B;IACjC,MAAM,CAAU;IAChB,SAAS,CAAS;IAClB,OAAO,CAAS;IAChB,WAAW,CAAU;IAC9B;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAA4B;IACpC;;;;;;;;;OASG;IACH,MAAM,CAAqB;IAE3B,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACrC,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC/D,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;QACpC,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;YAAE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAC9E,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;YAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACrE,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACjE,CAAC;CACF"}
|
|
@@ -6,11 +6,13 @@
|
|
|
6
6
|
import type { SourcePosition } from './source-positions.js';
|
|
7
7
|
export type WarningCode = 'UNKNOWN_WORKFLOW_KEY' | 'UNKNOWN_STEP_KEY' | 'UNKNOWN_CREATE_WORKFLOW_KEY' | 'IDEMPOTENT_INERT_IN_FINALIZER' | 'DUAL_SCHEMA_DECLARED' | 'RETRY_NO_TIMEOUT' | 'EXTENSION_SENTINEL' | 'UNKNOWN_RETRY_KEY' | 'ON_TIMEOUT_SINGLE_ATTEMPT' | 'TOTAL_TIMEOUT_BELOW_ATTEMPT' | 'TOTAL_TIMEOUT_NON_AUTO' | 'RETRY_INERT_NON_AUTO' | 'UNKNOWN_VALIDATION_EXHAUSTION_KEY' | 'DEAD_VALIDATION_EXHAUSTION_CONFIG' | 'UNKNOWN_GATE_KEY' | 'DEAD_GATE_CONFIG';
|
|
8
8
|
/**
|
|
9
|
-
* A single structured diagnostic. `message` is the full human-readable text
|
|
10
|
-
* unknown-key
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
9
|
+
* A single structured diagnostic. `message` is the full human-readable text, minted once at the
|
|
10
|
+
* source (`findUnknownKeys` below, for the unknown-key family) — `renderLoaderWarning` never
|
|
11
|
+
* reconstructs it from the structured fields; it only ECHOES `message` verbatim, prefixed with
|
|
12
|
+
* `⚠ `. `scope`/`id`/`step`/`key`/`did_you_mean` are populated only by the unknown-key family and
|
|
13
|
+
* exist for consumers that want the PARTS (a machine reader, a different renderer), not for
|
|
14
|
+
* `renderLoaderWarning` to recompose from — that would risk a second, drifting copy of the same
|
|
15
|
+
* prose. Other codes carry just `code`/`severity`/`message`.
|
|
14
16
|
*/
|
|
15
17
|
export interface LoaderWarning {
|
|
16
18
|
code: WarningCode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/workflow/diagnostics.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,MAAM,WAAW,GACnB,sBAAsB,GACtB,kBAAkB,GAClB,6BAA6B,GAC7B,+BAA+B,GAC/B,sBAAsB,GACtB,kBAAkB,GAClB,oBAAoB,GAEpB,mBAAmB,GACnB,2BAA2B,GAC3B,6BAA6B,GAC7B,wBAAwB,GAGxB,sBAAsB,GAEtB,mCAAmC,GACnC,mCAAmC,GAInC,kBAAkB,GAClB,kBAAkB,CAAC;AAEvB
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/workflow/diagnostics.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,MAAM,WAAW,GACnB,sBAAsB,GACtB,kBAAkB,GAClB,6BAA6B,GAC7B,+BAA+B,GAC/B,sBAAsB,GACtB,kBAAkB,GAClB,oBAAoB,GAEpB,mBAAmB,GACnB,2BAA2B,GAC3B,6BAA6B,GAC7B,wBAAwB,GAGxB,sBAAsB,GAEtB,mCAAmC,GACnC,mCAAmC,GAInC,kBAAkB,GAClB,kBAAkB,CAAC;AAEvB;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;;;;;OAcG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAiBhE,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,WAAW,EACjB,MAAM,GAAE,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAkB,GAC7D,MAAM,GAAG,OAAO,CAElB;AAuBD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAYxF;AAgCD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,GAAG,EAAE;IACH,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,CAAC;CAC1D,GACA,aAAa,EAAE,CA6BjB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAE5D"}
|
|
@@ -91,12 +91,12 @@ export function closestKey(key, allowList) {
|
|
|
91
91
|
/**
|
|
92
92
|
* Builds the templated "unknown key" message text (everything after the `⚠ ` prefix).
|
|
93
93
|
*
|
|
94
|
-
* The position is spliced in HERE, at the mint, rather than at any render site (issue #392)
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
94
|
+
* The position is spliced in HERE, at the mint, rather than at any render site (issue #392):
|
|
95
|
+
* `renderLoaderWarning` is the single source of the `⚠ ` line format and stays byte-untouched, so
|
|
96
|
+
* nothing downstream has to learn about positions. (Issue #540 removed the one other reason this
|
|
97
|
+
* comment used to give — a CLI print-time substitution that rewrote `— ignored` for a refusing
|
|
98
|
+
* boundary, and whose anchor this splice point had to land before. That substitution is gone;
|
|
99
|
+
* `— ignored` now renders unmodified everywhere. See `plans/issue-540/design-d2.md`.)
|
|
100
100
|
*
|
|
101
101
|
* The prose carries the START line only. A human reading an error wants somewhere to look, not a
|
|
102
102
|
* range; the range lives on the structured channel where a span-editing agent can use it.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/workflow/diagnostics.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,EAAE;AACF,4FAA4F;AAC5F,8FAA8F;AAC9F,gGAAgG;AAChG,gGAAgG;AAChG,+FAA+F;
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/workflow/diagnostics.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { WorkflowDefinition } from '../types/workflow-definition.js';
|
|
2
|
+
import type { RunRecord } from '../types/run-record.js';
|
|
2
3
|
export interface WorkflowRegistrar {
|
|
3
4
|
/** Persist a WorkflowDefinition under its id, overwriting any previous registration. */
|
|
4
5
|
register(definition: WorkflowDefinition): Promise<void>;
|
|
@@ -43,4 +44,45 @@ export declare class JsonWorkflowStore implements WorkflowRegistrar {
|
|
|
43
44
|
}>;
|
|
44
45
|
}>;
|
|
45
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Fetches the workflow definition a run-context resolution needs, wrapping a
|
|
49
|
+
* `STATE_WORKFLOW_NOT_FOUND` throw with the one-time-register remedy (issue #456) — the ONE
|
|
50
|
+
* chokepoint every run-context site (`respond`, `resume`, `replay`, `drain`, `agent --run-id`,
|
|
51
|
+
* and the MCP `submit_human_response`/`execute_step`/`append_trace` tools) calls, instead of each
|
|
52
|
+
* hand-wrapping its own raw `store.get(run.workflow_id)`.
|
|
53
|
+
*
|
|
54
|
+
* The `store` and `run` parameters are narrowed to exactly what this function uses
|
|
55
|
+
* (`Pick<WorkflowRegistrar, 'get'>` / `Pick<RunRecord, 'workflow_id'>`) — by necessity, not taste:
|
|
56
|
+
* `resolveRunAttach`'s own dependency type IS that narrower `Pick` (its test doubles are get-only,
|
|
57
|
+
* and a full `WorkflowRegistrar` parameter here would not compile at that call site). Every other
|
|
58
|
+
* caller passes a full registrar and a full run record, both structurally assignable to the
|
|
59
|
+
* narrower type.
|
|
60
|
+
*
|
|
61
|
+
* HEDGED reasoning, moved here from `run-attach.ts`'s inline comment (its call site now just
|
|
62
|
+
* points back here): this function genuinely cannot know WHY the workflow is missing. A wiped
|
|
63
|
+
* store, a different `$HOME`, and a run created from a file without `--register` all mint the
|
|
64
|
+
* identical `STATE_WORKFLOW_NOT_FOUND` from the registrar — so the remedy says "most often",
|
|
65
|
+
* never "because". Keyed on the stable error CODE, never on message text.
|
|
66
|
+
*
|
|
67
|
+
* PRECONDITION — run-context resolution ONLY. A by-id lookup with no run behind it (`start_run`,
|
|
68
|
+
* `start_run_batch`, `get_workflow_protocol`) must never call this: there the hedge would be
|
|
69
|
+
* false — "this run was created from a file without --register" presumes a run that does not
|
|
70
|
+
* exist yet.
|
|
71
|
+
*
|
|
72
|
+
* Every OTHER `WorkflowError` (e.g. `STATE_LEGACY_FORMAT`, which already carries its own correct
|
|
73
|
+
* "Re-register it with: …" remedy) passes through completely untouched, by identity — wrapping it
|
|
74
|
+
* would double-remedy. A non-`WorkflowError` throw also passes through untouched.
|
|
75
|
+
*
|
|
76
|
+
* issue #493 seam: if definition snapshots ever land on the run record, the snapshot-wins
|
|
77
|
+
* resolution order belongs INSIDE this function — every run-context caller updates for free.
|
|
78
|
+
*
|
|
79
|
+
* @param store Anything that can `.get()` a workflow by id.
|
|
80
|
+
* @param run The run whose `workflow_id` to resolve.
|
|
81
|
+
* @param opts `retryVerb` — the verb this call site's remedy should recommend retrying with
|
|
82
|
+
* (e.g. `'re-attach'`, `'respond again'`, `'resume again'`, `'replay again'`,
|
|
83
|
+
* `'drain again'`, or the MCP-neutral `'retry'`).
|
|
84
|
+
*/
|
|
85
|
+
export declare function getWorkflowForRun(store: Pick<WorkflowRegistrar, 'get'>, run: Pick<RunRecord, 'workflow_id'>, opts: {
|
|
86
|
+
retryVerb: string;
|
|
87
|
+
}): Promise<WorkflowDefinition>;
|
|
46
88
|
//# sourceMappingURL=registrar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registrar.d.ts","sourceRoot":"","sources":["../../src/workflow/registrar.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"registrar.d.ts","sourceRoot":"","sources":["../../src/workflow/registrar.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAKxD,MAAM,WAAW,iBAAiB;IAChC,wFAAwF;IACxF,QAAQ,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,8EAA8E;IAC9E,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrD,qCAAqC;IACrC,IAAI,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,qBAAa,iBAAkB,YAAW,iBAAiB;IACzD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;gBAEjB,OAAO,CAAC,EAAE,MAAM;IAKtB,QAAQ,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvD,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAgCpD,IAAI,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAQ3C;;;;;;;;;;;;;;OAcG;IACG,mBAAmB,IAAI,OAAO,CAAC;QACnC,SAAS,EAAE,kBAAkB,EAAE,CAAC;QAChC,UAAU,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACpD,UAAU,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACjD,CAAC;CAqBH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,EACrC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,EACnC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1B,OAAO,CAAC,kBAAkB,CAAC,CAoB7B"}
|
|
@@ -89,4 +89,61 @@ export class JsonWorkflowStore {
|
|
|
89
89
|
return { workflows, unreadable, mismatched };
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Fetches the workflow definition a run-context resolution needs, wrapping a
|
|
94
|
+
* `STATE_WORKFLOW_NOT_FOUND` throw with the one-time-register remedy (issue #456) — the ONE
|
|
95
|
+
* chokepoint every run-context site (`respond`, `resume`, `replay`, `drain`, `agent --run-id`,
|
|
96
|
+
* and the MCP `submit_human_response`/`execute_step`/`append_trace` tools) calls, instead of each
|
|
97
|
+
* hand-wrapping its own raw `store.get(run.workflow_id)`.
|
|
98
|
+
*
|
|
99
|
+
* The `store` and `run` parameters are narrowed to exactly what this function uses
|
|
100
|
+
* (`Pick<WorkflowRegistrar, 'get'>` / `Pick<RunRecord, 'workflow_id'>`) — by necessity, not taste:
|
|
101
|
+
* `resolveRunAttach`'s own dependency type IS that narrower `Pick` (its test doubles are get-only,
|
|
102
|
+
* and a full `WorkflowRegistrar` parameter here would not compile at that call site). Every other
|
|
103
|
+
* caller passes a full registrar and a full run record, both structurally assignable to the
|
|
104
|
+
* narrower type.
|
|
105
|
+
*
|
|
106
|
+
* HEDGED reasoning, moved here from `run-attach.ts`'s inline comment (its call site now just
|
|
107
|
+
* points back here): this function genuinely cannot know WHY the workflow is missing. A wiped
|
|
108
|
+
* store, a different `$HOME`, and a run created from a file without `--register` all mint the
|
|
109
|
+
* identical `STATE_WORKFLOW_NOT_FOUND` from the registrar — so the remedy says "most often",
|
|
110
|
+
* never "because". Keyed on the stable error CODE, never on message text.
|
|
111
|
+
*
|
|
112
|
+
* PRECONDITION — run-context resolution ONLY. A by-id lookup with no run behind it (`start_run`,
|
|
113
|
+
* `start_run_batch`, `get_workflow_protocol`) must never call this: there the hedge would be
|
|
114
|
+
* false — "this run was created from a file without --register" presumes a run that does not
|
|
115
|
+
* exist yet.
|
|
116
|
+
*
|
|
117
|
+
* Every OTHER `WorkflowError` (e.g. `STATE_LEGACY_FORMAT`, which already carries its own correct
|
|
118
|
+
* "Re-register it with: …" remedy) passes through completely untouched, by identity — wrapping it
|
|
119
|
+
* would double-remedy. A non-`WorkflowError` throw also passes through untouched.
|
|
120
|
+
*
|
|
121
|
+
* issue #493 seam: if definition snapshots ever land on the run record, the snapshot-wins
|
|
122
|
+
* resolution order belongs INSIDE this function — every run-context caller updates for free.
|
|
123
|
+
*
|
|
124
|
+
* @param store Anything that can `.get()` a workflow by id.
|
|
125
|
+
* @param run The run whose `workflow_id` to resolve.
|
|
126
|
+
* @param opts `retryVerb` — the verb this call site's remedy should recommend retrying with
|
|
127
|
+
* (e.g. `'re-attach'`, `'respond again'`, `'resume again'`, `'replay again'`,
|
|
128
|
+
* `'drain again'`, or the MCP-neutral `'retry'`).
|
|
129
|
+
*/
|
|
130
|
+
export async function getWorkflowForRun(store, run, opts) {
|
|
131
|
+
try {
|
|
132
|
+
return await store.get(run.workflow_id);
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
if (err instanceof WorkflowError && err.code === 'STATE_WORKFLOW_NOT_FOUND') {
|
|
136
|
+
throw new WorkflowError(`${err.message} — most often this run was created from a file without --register. ` +
|
|
137
|
+
`Register the workflow (realm workflow register <file>) and ${opts.retryVerb}.`, {
|
|
138
|
+
code: err.code,
|
|
139
|
+
category: err.category,
|
|
140
|
+
agentAction: err.agentAction,
|
|
141
|
+
retryable: err.retryable,
|
|
142
|
+
details: err.details,
|
|
143
|
+
...(err.warnings !== undefined ? { warnings: err.warnings } : {}),
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
throw err;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
92
149
|
//# sourceMappingURL=registrar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registrar.js","sourceRoot":"","sources":["../../src/workflow/registrar.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"registrar.js","sourceRoot":"","sources":["../../src/workflow/registrar.ts"],"names":[],"mappings":"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"}
|