@claudexor/orchestrator 3.0.3 → 3.1.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 +1 -1
- package/dist/attemptFinalize.d.ts +162 -0
- package/dist/attemptFinalize.d.ts.map +1 -0
- package/dist/attemptFinalize.js +368 -0
- package/dist/attemptFinalize.js.map +1 -0
- package/dist/attemptTelemetry.d.ts +88 -7
- package/dist/attemptTelemetry.d.ts.map +1 -1
- package/dist/attemptTelemetry.js +276 -14
- package/dist/attemptTelemetry.js.map +1 -1
- package/dist/budgetFailure.d.ts +70 -0
- package/dist/budgetFailure.d.ts.map +1 -0
- package/dist/budgetFailure.js +114 -0
- package/dist/budgetFailure.js.map +1 -0
- package/dist/candidateEvidence.d.ts +55 -1
- package/dist/candidateEvidence.d.ts.map +1 -1
- package/dist/candidateEvidence.js +72 -0
- package/dist/candidateEvidence.js.map +1 -1
- package/dist/continuation.d.ts +77 -0
- package/dist/continuation.d.ts.map +1 -0
- package/dist/continuation.js +92 -0
- package/dist/continuation.js.map +1 -0
- package/dist/deepScanReducer.d.ts +148 -0
- package/dist/deepScanReducer.d.ts.map +1 -0
- package/dist/deepScanReducer.js +352 -0
- package/dist/deepScanReducer.js.map +1 -0
- package/dist/harnessFailure.d.ts +27 -0
- package/dist/harnessFailure.d.ts.map +1 -0
- package/dist/harnessFailure.js +61 -0
- package/dist/harnessFailure.js.map +1 -0
- package/dist/orchestrator.d.ts +97 -10
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +1213 -295
- package/dist/orchestrator.js.map +1 -1
- package/dist/planQuestions.d.ts.map +1 -1
- package/dist/planQuestions.js +105 -50
- package/dist/planQuestions.js.map +1 -1
- package/dist/planRun.d.ts +15 -7
- package/dist/planRun.d.ts.map +1 -1
- package/dist/planRun.js +88 -42
- package/dist/planRun.js.map +1 -1
- package/dist/planTerminal.d.ts +36 -0
- package/dist/planTerminal.d.ts.map +1 -0
- package/dist/planTerminal.js +63 -0
- package/dist/planTerminal.js.map +1 -0
- package/dist/runSupport.d.ts +50 -2
- package/dist/runSupport.d.ts.map +1 -1
- package/dist/runSupport.js +60 -6
- package/dist/runSupport.js.map +1 -1
- package/dist/runTelemetryWriter.d.ts +6 -1
- package/dist/runTelemetryWriter.d.ts.map +1 -1
- package/dist/runTelemetryWriter.js +2 -0
- package/dist/runTelemetryWriter.js.map +1 -1
- package/dist/runTerminals.d.ts +15 -4
- package/dist/runTerminals.d.ts.map +1 -1
- package/dist/runTerminals.js +16 -1
- package/dist/runTerminals.js.map +1 -1
- package/dist/structuredOutput.d.ts +27 -0
- package/dist/structuredOutput.d.ts.map +1 -1
- package/dist/structuredOutput.js +65 -7
- package/dist/structuredOutput.js.map +1 -1
- package/dist/transientClassify.d.ts +59 -0
- package/dist/transientClassify.d.ts.map +1 -0
- package/dist/transientClassify.js +109 -0
- package/dist/transientClassify.js.map +1 -0
- package/package.json +17 -17
|
@@ -4,6 +4,33 @@ export interface StructuredOutputVerdict {
|
|
|
4
4
|
status: "passed" | "failed";
|
|
5
5
|
reason: string | null;
|
|
6
6
|
}
|
|
7
|
+
/** A declared dialect is caller-actionable, not a retryable engine failure. */
|
|
8
|
+
export declare class UnsupportedOutputSchemaDialectError extends Error {
|
|
9
|
+
readonly dialect: unknown;
|
|
10
|
+
readonly status = 400;
|
|
11
|
+
readonly code = "unsupported_schema_dialect";
|
|
12
|
+
readonly retryable = false;
|
|
13
|
+
readonly supportedDialects: {
|
|
14
|
+
dialect: "draft-07" | "draft-2020-12";
|
|
15
|
+
uri: "http://json-schema.org/draft-07/schema#" | "https://json-schema.org/draft/2020-12/schema";
|
|
16
|
+
}[];
|
|
17
|
+
readonly context: {
|
|
18
|
+
supportedDialects: {
|
|
19
|
+
dialect: "draft-07" | "draft-2020-12";
|
|
20
|
+
uri: "http://json-schema.org/draft-07/schema#" | "https://json-schema.org/draft/2020-12/schema";
|
|
21
|
+
}[];
|
|
22
|
+
};
|
|
23
|
+
readonly requiredActions: string[];
|
|
24
|
+
constructor(dialect: unknown);
|
|
25
|
+
}
|
|
26
|
+
/** A malformed schema is a caller error and retrying the same input cannot help. */
|
|
27
|
+
export declare class InvalidOutputSchemaError extends Error {
|
|
28
|
+
readonly status = 400;
|
|
29
|
+
readonly code = "invalid_output_schema";
|
|
30
|
+
readonly retryable = false;
|
|
31
|
+
readonly requiredActions: string[];
|
|
32
|
+
constructor(cause: unknown);
|
|
33
|
+
}
|
|
7
34
|
/** Preflight: prove a caller schema COMPILES under the same ajv the validator
|
|
8
35
|
* uses, so a malformed schema is refused before any run dir exists instead of
|
|
9
36
|
* crashing the validator mid-run. Throws on a schema ajv cannot build. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structuredOutput.d.ts","sourceRoot":"","sources":["../src/structuredOutput.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"structuredOutput.d.ts","sourceRoot":"","sources":["../src/structuredOutput.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAWrD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,+EAA+E;AAC/E,qBAAa,mCAAoC,SAAQ,KAAK;IAUhD,QAAQ,CAAC,OAAO,EAAE,OAAO;IATrC,QAAQ,CAAC,MAAM,OAAO;IACtB,QAAQ,CAAC,IAAI,gCAAgC;IAC7C,QAAQ,CAAC,SAAS,SAAS;IAC3B,QAAQ,CAAC,iBAAiB;;;QAAwE;IAClG,QAAQ,CAAC,OAAO;;;;;MAAiD;IACjE,QAAQ,CAAC,eAAe,WAEtB;gBAEmB,OAAO,EAAE,OAAO;CAMtC;AAED,oFAAoF;AACpF,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,QAAQ,CAAC,MAAM,OAAO;IACtB,QAAQ,CAAC,IAAI,2BAA2B;IACxC,QAAQ,CAAC,SAAS,SAAS;IAC3B,QAAQ,CAAC,eAAe,WAA+C;gBAE3D,KAAK,EAAE,OAAO;CAO3B;AA8BD;;2EAE2E;AAC3E,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAOhF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,QAAQ,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACvC,GAAG,uBAAuB,CAsE1B"}
|
package/dist/structuredOutput.js
CHANGED
|
@@ -1,21 +1,76 @@
|
|
|
1
1
|
import { join } from "node:path";
|
|
2
2
|
import AjvModule from "ajv";
|
|
3
|
+
import Ajv2020Module from "ajv/dist/2020.js";
|
|
3
4
|
// ajv ships CJS; under NodeNext the default import resolves to the module
|
|
4
5
|
// namespace whose `.default` is the constructor (module.exports.default is set
|
|
5
6
|
// by ajv itself, so this is correct at runtime in both ESM and CJS).
|
|
6
7
|
const Ajv = AjvModule.default ?? AjvModule;
|
|
7
|
-
|
|
8
|
-
import {
|
|
8
|
+
const Ajv2020 = Ajv2020Module.default ?? Ajv2020Module;
|
|
9
|
+
import { DEFAULT_OUTPUT_SCHEMA_DIALECT, OUTPUT_SCHEMA_DIALECTS, outputSchemaDialectFromUri, SCHEMA_VERSION, StructuredOutputConformance, } from "@claudexor/schema";
|
|
10
|
+
import { hashJson, nowIso } from "@claudexor/util";
|
|
11
|
+
/** A declared dialect is caller-actionable, not a retryable engine failure. */
|
|
12
|
+
export class UnsupportedOutputSchemaDialectError extends Error {
|
|
13
|
+
dialect;
|
|
14
|
+
status = 400;
|
|
15
|
+
code = "unsupported_schema_dialect";
|
|
16
|
+
retryable = false;
|
|
17
|
+
supportedDialects = OUTPUT_SCHEMA_DIALECTS.map(({ dialect, uri }) => ({ dialect, uri }));
|
|
18
|
+
context = { supportedDialects: this.supportedDialects };
|
|
19
|
+
requiredActions = [
|
|
20
|
+
`set $schema to one of: ${OUTPUT_SCHEMA_DIALECTS.map(({ uri }) => uri).join(", ")}; or omit $schema for ${DEFAULT_OUTPUT_SCHEMA_DIALECT}`,
|
|
21
|
+
];
|
|
22
|
+
constructor(dialect) {
|
|
23
|
+
super(`unsupported outputSchema dialect ${JSON.stringify(dialect)}; supported dialects: ${OUTPUT_SCHEMA_DIALECTS.map(({ uri }) => uri).join(", ")} (omitted $schema defaults to ${DEFAULT_OUTPUT_SCHEMA_DIALECT})`);
|
|
24
|
+
this.dialect = dialect;
|
|
25
|
+
this.name = "UnsupportedOutputSchemaDialectError";
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/** A malformed schema is a caller error and retrying the same input cannot help. */
|
|
29
|
+
export class InvalidOutputSchemaError extends Error {
|
|
30
|
+
status = 400;
|
|
31
|
+
code = "invalid_output_schema";
|
|
32
|
+
retryable = false;
|
|
33
|
+
requiredActions = ["fix the output schema and retry the run"];
|
|
34
|
+
constructor(cause) {
|
|
35
|
+
super(`outputSchema is not a compilable JSON Schema: ${cause instanceof Error ? cause.message : String(cause)}`, { cause });
|
|
36
|
+
this.name = "InvalidOutputSchemaError";
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function outputSchemaDialect(schema) {
|
|
40
|
+
const declared = schema["$schema"];
|
|
41
|
+
if (declared === undefined)
|
|
42
|
+
return DEFAULT_OUTPUT_SCHEMA_DIALECT;
|
|
43
|
+
if (typeof declared !== "string")
|
|
44
|
+
throw new UnsupportedOutputSchemaDialectError(declared);
|
|
45
|
+
const dialect = outputSchemaDialectFromUri(declared);
|
|
46
|
+
if (dialect)
|
|
47
|
+
return dialect;
|
|
48
|
+
throw new UnsupportedOutputSchemaDialectError(declared);
|
|
49
|
+
}
|
|
50
|
+
function outputSchemaCompiler(schema) {
|
|
51
|
+
const dialect = outputSchemaDialect(schema);
|
|
52
|
+
// The selected Ajv class already fixes the dialect. Removing the declaration
|
|
53
|
+
// lets us accept the URI's harmless http/https and trailing-# spellings while
|
|
54
|
+
// still compiling the caller's validation keywords under the declared draft.
|
|
55
|
+
const schemaForCompiler = { ...schema };
|
|
56
|
+
delete schemaForCompiler["$schema"];
|
|
57
|
+
return {
|
|
58
|
+
ajv: dialect === "draft-2020-12"
|
|
59
|
+
? new Ajv2020({ allErrors: true, strict: false })
|
|
60
|
+
: new Ajv({ allErrors: true, strict: false }),
|
|
61
|
+
schema: schemaForCompiler,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
9
64
|
/** Preflight: prove a caller schema COMPILES under the same ajv the validator
|
|
10
65
|
* uses, so a malformed schema is refused before any run dir exists instead of
|
|
11
66
|
* crashing the validator mid-run. Throws on a schema ajv cannot build. */
|
|
12
67
|
export function assertOutputSchemaCompiles(schema) {
|
|
13
|
-
const
|
|
68
|
+
const compiler = outputSchemaCompiler(schema);
|
|
14
69
|
try {
|
|
15
|
-
ajv.compile(schema);
|
|
70
|
+
compiler.ajv.compile(compiler.schema);
|
|
16
71
|
}
|
|
17
72
|
catch (err) {
|
|
18
|
-
throw new
|
|
73
|
+
throw new InvalidOutputSchemaError(err);
|
|
19
74
|
}
|
|
20
75
|
}
|
|
21
76
|
/**
|
|
@@ -34,6 +89,7 @@ export function assertOutputSchemaCompiles(schema) {
|
|
|
34
89
|
* (diagnostic) for the embedder to inspect; an unparsable answer writes nothing.
|
|
35
90
|
*/
|
|
36
91
|
export function finalizeStructuredOutput(opts) {
|
|
92
|
+
const schemaDialect = outputSchemaDialect(opts.schema);
|
|
37
93
|
const text = opts.answerText?.trim() ?? "";
|
|
38
94
|
let value;
|
|
39
95
|
let parsed = false;
|
|
@@ -57,9 +113,9 @@ export function finalizeStructuredOutput(opts) {
|
|
|
57
113
|
// strict:false — accept the JSON Schema dialect as-authored; do not
|
|
58
114
|
// re-litigate meta-schema strictness (the boundary already proved it
|
|
59
115
|
// compiles). This validates the ORIGINAL caller schema.
|
|
60
|
-
const
|
|
116
|
+
const compiler = outputSchemaCompiler(opts.schema);
|
|
61
117
|
try {
|
|
62
|
-
const validate = ajv.compile(
|
|
118
|
+
const validate = compiler.ajv.compile(compiler.schema);
|
|
63
119
|
if (validate(value) === true) {
|
|
64
120
|
status = "passed";
|
|
65
121
|
}
|
|
@@ -88,6 +144,8 @@ export function finalizeStructuredOutput(opts) {
|
|
|
88
144
|
}
|
|
89
145
|
const receipt = StructuredOutputConformance.parse({
|
|
90
146
|
schema_version: SCHEMA_VERSION,
|
|
147
|
+
schema_dialect: schemaDialect,
|
|
148
|
+
schema_hash: hashJson(opts.schema),
|
|
91
149
|
status,
|
|
92
150
|
reason: status === "passed" ? null : reason,
|
|
93
151
|
output_path: outputPath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structuredOutput.js","sourceRoot":"","sources":["../src/structuredOutput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,SAAS,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"structuredOutput.js","sourceRoot":"","sources":["../src/structuredOutput.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed harness-failure taxonomy (GH #31): the SINGLE place that classifies an
|
|
3
|
+
* adapter/stream failure at the adapter→orchestrator boundary into a
|
|
4
|
+
* `HarnessFailureCategory` + `retryable` verdict, preserving the safe provider
|
|
5
|
+
* metadata. Governance is fully typed — only typed event fields
|
|
6
|
+
* (`transient`/`rate_limit`/`status.error_category`) and the run loop's typed
|
|
7
|
+
* exit disclosure are read, never prose. The retry policy gates on `retryable`;
|
|
8
|
+
* required-actions attach auth guidance only on `auth_failed`.
|
|
9
|
+
*/
|
|
10
|
+
import type { HarnessEvent, HarnessFailureCategory } from "@claudexor/schema";
|
|
11
|
+
/**
|
|
12
|
+
* A single classified transient failure. `kind` keeps the fine-grained adapter
|
|
13
|
+
* label; `category` is the typed taxonomy the retry policy and required-actions
|
|
14
|
+
* read; `retryable` is the centralized gate. Provider metadata (HTTP status,
|
|
15
|
+
* retry delay, kill signal, adapter code) is preserved as disclosed evidence —
|
|
16
|
+
* never fabricated.
|
|
17
|
+
*/
|
|
18
|
+
export interface TransientFailureObservation {
|
|
19
|
+
kind: NonNullable<HarnessEvent["transient"]>["kind"];
|
|
20
|
+
category: HarnessFailureCategory;
|
|
21
|
+
retryable: boolean;
|
|
22
|
+
retryDelayMs: number | null;
|
|
23
|
+
httpStatus: number | null;
|
|
24
|
+
signal: string | null;
|
|
25
|
+
adapterCode: string | null;
|
|
26
|
+
}
|
|
27
|
+
/** A typed `transient` signal: a `timeout` kind is the timeout category; every
|
|
28
|
+
* other adapter-declared transient is a generic retryable harness error. */
|
|
29
|
+
export declare function classifyTransientSignal(t: NonNullable<HarnessEvent["transient"]>): TransientFailureObservation;
|
|
30
|
+
/** A typed `rate_limit` signal is a first-class transient category (not only a
|
|
31
|
+
* W5.4 rotation signal). */
|
|
32
|
+
export declare function classifyRateLimit(retryDelayMs: number | null): TransientFailureObservation;
|
|
33
|
+
/** Map the vendor's typed `status.error_category` onto the taxonomy. Only the
|
|
34
|
+
* deterministic FAILURE classes are surfaced here; rate limits arrive via the
|
|
35
|
+
* dedicated `rate_limit` signal, and transient/overload retries the vendor
|
|
36
|
+
* drives itself are not our failures (returns null → not recorded). */
|
|
37
|
+
export declare function classifyStatusError(ec: NonNullable<NonNullable<HarnessEvent["status"]>["error_category"]>, retryDelayMs: number | null): TransientFailureObservation | null;
|
|
38
|
+
/**
|
|
39
|
+
* Classify a process crash from the run loop's TYPED `completed` payload
|
|
40
|
+
* (never prose): a spawn failure is a config/environment error (retrying
|
|
41
|
+
* replays the same missing binary/bad config); a non-aborted signal kill or
|
|
42
|
+
* non-zero exit is a settled crash. An aborted completion (our watchdog/cancel)
|
|
43
|
+
* is never a crash. Returns null when the completion carries no crash evidence.
|
|
44
|
+
*/
|
|
45
|
+
export declare function classifyCompletedCrash(payload: Record<string, unknown> | undefined): TransientFailureObservation | null;
|
|
46
|
+
/**
|
|
47
|
+
* Classify an adapter/stream throw. The inactivity watchdog surfaces a typed
|
|
48
|
+
* `HarnessInactivityTimeoutError` (timeout); every other throw is a process
|
|
49
|
+
* crash. A THROWN failure is a give-up, not a mid-stream recoverable transient:
|
|
50
|
+
* the watchdog already aborted a wedged stream and a crashed child is settled,
|
|
51
|
+
* so it is classified and disclosed but never auto-retried here (preserving the
|
|
52
|
+
* pre-#31 terminate-on-throw behavior). Never parses prose — `errorName` is the
|
|
53
|
+
* constructor name.
|
|
54
|
+
*/
|
|
55
|
+
export declare function classifyAdapterThrow(opts: {
|
|
56
|
+
errorName: string | null;
|
|
57
|
+
signal?: string | null;
|
|
58
|
+
}): TransientFailureObservation;
|
|
59
|
+
//# sourceMappingURL=transientClassify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transientClassify.d.ts","sourceRoot":"","sources":["../src/transientClassify.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACrD,QAAQ,EAAE,sBAAsB,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAoCD;4EAC4E;AAC5E,wBAAgB,uBAAuB,CACrC,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,GACxC,2BAA2B,CAI7B;AAED;4BAC4B;AAC5B,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,2BAA2B,CAE1F;AAED;;;uEAGuE;AACvE,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,EACtE,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,2BAA2B,GAAG,IAAI,CAqBpC;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAC3C,2BAA2B,GAAG,IAAI,CAepC;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,GAAG,2BAA2B,CAO9B"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether a classified category admits a bounded stream retry. Only failures
|
|
3
|
+
* the adapter DISCLOSED mid-stream as recoverable (a typed transient or a rate
|
|
4
|
+
* limit) are retried — retrying replays the work with a fresh session. Auth /
|
|
5
|
+
* capability / config are deterministic refusals. A process crash and an
|
|
6
|
+
* inactivity-watchdog give-up are NOT auto-retried here (the watchdog exists to
|
|
7
|
+
* STOP a wedged stream; a crashed child is settled, not replayed): they are
|
|
8
|
+
* still classified and disclosed, but the run terminates on them.
|
|
9
|
+
*/
|
|
10
|
+
const CATEGORY_RETRYABLE = {
|
|
11
|
+
timeout: true,
|
|
12
|
+
rate_limited: true,
|
|
13
|
+
unknown_harness_error: true,
|
|
14
|
+
process_crash: false,
|
|
15
|
+
auth_failed: false,
|
|
16
|
+
capability_refused: false,
|
|
17
|
+
config_error: false,
|
|
18
|
+
};
|
|
19
|
+
function observation(category, extra = {}) {
|
|
20
|
+
return {
|
|
21
|
+
kind: extra.kind ?? "unknown",
|
|
22
|
+
category,
|
|
23
|
+
retryable: CATEGORY_RETRYABLE[category],
|
|
24
|
+
retryDelayMs: extra.retryDelayMs ?? null,
|
|
25
|
+
httpStatus: extra.httpStatus ?? null,
|
|
26
|
+
signal: extra.signal ?? null,
|
|
27
|
+
adapterCode: extra.adapterCode ?? null,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/** A typed `transient` signal: a `timeout` kind is the timeout category; every
|
|
31
|
+
* other adapter-declared transient is a generic retryable harness error. */
|
|
32
|
+
export function classifyTransientSignal(t) {
|
|
33
|
+
const category = t.kind === "timeout" ? "timeout" : "unknown_harness_error";
|
|
34
|
+
return observation(category, { kind: t.kind, retryDelayMs: t.retry_delay_ms ?? null });
|
|
35
|
+
}
|
|
36
|
+
/** A typed `rate_limit` signal is a first-class transient category (not only a
|
|
37
|
+
* W5.4 rotation signal). */
|
|
38
|
+
export function classifyRateLimit(retryDelayMs) {
|
|
39
|
+
return observation("rate_limited", { retryDelayMs });
|
|
40
|
+
}
|
|
41
|
+
/** Map the vendor's typed `status.error_category` onto the taxonomy. Only the
|
|
42
|
+
* deterministic FAILURE classes are surfaced here; rate limits arrive via the
|
|
43
|
+
* dedicated `rate_limit` signal, and transient/overload retries the vendor
|
|
44
|
+
* drives itself are not our failures (returns null → not recorded). */
|
|
45
|
+
export function classifyStatusError(ec, retryDelayMs) {
|
|
46
|
+
let category;
|
|
47
|
+
switch (ec) {
|
|
48
|
+
case "authentication_failed":
|
|
49
|
+
category = "auth_failed";
|
|
50
|
+
break;
|
|
51
|
+
case "oauth_org_not_allowed":
|
|
52
|
+
case "model_not_found":
|
|
53
|
+
category = "capability_refused";
|
|
54
|
+
break;
|
|
55
|
+
case "billing_error":
|
|
56
|
+
case "invalid_request":
|
|
57
|
+
case "max_output_tokens":
|
|
58
|
+
category = "config_error";
|
|
59
|
+
break;
|
|
60
|
+
default:
|
|
61
|
+
// rate_limit/overloaded/server_error/unknown: not surfaced from status.
|
|
62
|
+
category = null;
|
|
63
|
+
}
|
|
64
|
+
if (!category)
|
|
65
|
+
return null;
|
|
66
|
+
return observation(category, { retryDelayMs, adapterCode: ec });
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Classify a process crash from the run loop's TYPED `completed` payload
|
|
70
|
+
* (never prose): a spawn failure is a config/environment error (retrying
|
|
71
|
+
* replays the same missing binary/bad config); a non-aborted signal kill or
|
|
72
|
+
* non-zero exit is a settled crash. An aborted completion (our watchdog/cancel)
|
|
73
|
+
* is never a crash. Returns null when the completion carries no crash evidence.
|
|
74
|
+
*/
|
|
75
|
+
export function classifyCompletedCrash(payload) {
|
|
76
|
+
if (!payload || payload["aborted"])
|
|
77
|
+
return null;
|
|
78
|
+
const spawnFailed = payload["spawn_failed"] === true;
|
|
79
|
+
const signal = typeof payload["exit_signal"] === "string" ? payload["exit_signal"] : null;
|
|
80
|
+
const exitCode = typeof payload["exit_code"] === "number" ? payload["exit_code"] : null;
|
|
81
|
+
if (spawnFailed) {
|
|
82
|
+
return observation("config_error", { signal, adapterCode: "spawn_failed" });
|
|
83
|
+
}
|
|
84
|
+
if (signal !== null || (exitCode !== null && exitCode !== 0)) {
|
|
85
|
+
return observation("process_crash", {
|
|
86
|
+
signal,
|
|
87
|
+
adapterCode: exitCode !== null ? `exit_${exitCode}` : null,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Classify an adapter/stream throw. The inactivity watchdog surfaces a typed
|
|
94
|
+
* `HarnessInactivityTimeoutError` (timeout); every other throw is a process
|
|
95
|
+
* crash. A THROWN failure is a give-up, not a mid-stream recoverable transient:
|
|
96
|
+
* the watchdog already aborted a wedged stream and a crashed child is settled,
|
|
97
|
+
* so it is classified and disclosed but never auto-retried here (preserving the
|
|
98
|
+
* pre-#31 terminate-on-throw behavior). Never parses prose — `errorName` is the
|
|
99
|
+
* constructor name.
|
|
100
|
+
*/
|
|
101
|
+
export function classifyAdapterThrow(opts) {
|
|
102
|
+
const isTimeout = opts.errorName === "HarnessInactivityTimeoutError";
|
|
103
|
+
const base = observation(isTimeout ? "timeout" : "process_crash", {
|
|
104
|
+
kind: isTimeout ? "timeout" : "unknown",
|
|
105
|
+
signal: opts.signal ?? null,
|
|
106
|
+
});
|
|
107
|
+
return { ...base, retryable: false };
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=transientClassify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transientClassify.js","sourceRoot":"","sources":["../src/transientClassify.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@claudexor/orchestrator",
|
|
3
|
-
"version": "3.0
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Hub that composes all subsystems and implements the three canonical intents (ask, plan, agent) with their strategy flags (ask deep-scan, plan solo/council, agent best-of-N race, attempt caps, until-clean, create, delegate).",
|
|
6
6
|
"type": "module",
|
|
@@ -17,24 +17,24 @@
|
|
|
17
17
|
],
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"ajv": "^8.20.0",
|
|
20
|
-
"@claudexor/arbitration": "3.0
|
|
21
|
-
"@claudexor/artifact-store": "3.0
|
|
22
|
-
"@claudexor/budget": "3.0
|
|
23
|
-
"@claudexor/config": "3.0
|
|
24
|
-
"@claudexor/
|
|
25
|
-
"@claudexor/
|
|
26
|
-
"@claudexor/delivery": "3.0
|
|
27
|
-
"@claudexor/
|
|
28
|
-
"@claudexor/
|
|
29
|
-
"@claudexor/
|
|
30
|
-
"@claudexor/review": "3.0
|
|
31
|
-
"@claudexor/schema": "3.0
|
|
32
|
-
"@claudexor/
|
|
33
|
-
"@claudexor/
|
|
34
|
-
"@claudexor/workspace": "3.0
|
|
20
|
+
"@claudexor/arbitration": "3.1.0",
|
|
21
|
+
"@claudexor/artifact-store": "3.1.0",
|
|
22
|
+
"@claudexor/budget": "3.1.0",
|
|
23
|
+
"@claudexor/config": "3.1.0",
|
|
24
|
+
"@claudexor/core": "3.1.0",
|
|
25
|
+
"@claudexor/context": "3.1.0",
|
|
26
|
+
"@claudexor/delivery": "3.1.0",
|
|
27
|
+
"@claudexor/gateway": "3.1.0",
|
|
28
|
+
"@claudexor/event-log": "3.1.0",
|
|
29
|
+
"@claudexor/policy": "3.1.0",
|
|
30
|
+
"@claudexor/review": "3.1.0",
|
|
31
|
+
"@claudexor/schema": "3.1.0",
|
|
32
|
+
"@claudexor/synthesis": "3.1.0",
|
|
33
|
+
"@claudexor/util": "3.1.0",
|
|
34
|
+
"@claudexor/workspace": "3.1.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@claudexor/harness-fake": "3.0
|
|
37
|
+
"@claudexor/harness-fake": "3.1.0"
|
|
38
38
|
},
|
|
39
39
|
"repository": {
|
|
40
40
|
"type": "git",
|