@autonome-research/thread-phase 3.2.2 → 3.4.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/agent/index.d.ts +1 -1
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +1 -1
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/parse-json.d.ts +16 -0
- package/dist/agent/parse-json.d.ts.map +1 -1
- package/dist/agent/parse-json.js +82 -11
- package/dist/agent/parse-json.js.map +1 -1
- package/dist/agent/runner.d.ts.map +1 -1
- package/dist/agent/runner.js +16 -12
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent-runner.d.ts +1 -1
- package/dist/agent-runner.d.ts.map +1 -1
- package/dist/agent-runner.js +1 -1
- package/dist/agent-runner.js.map +1 -1
- package/dist/agents/serialize-error.d.ts +10 -1
- package/dist/agents/serialize-error.d.ts.map +1 -1
- package/dist/agents/serialize-error.js +42 -3
- package/dist/agents/serialize-error.js.map +1 -1
- package/dist/cache.d.ts +13 -2
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +36 -6
- package/dist/cache.js.map +1 -1
- package/dist/helpers/hook.d.ts +34 -2
- package/dist/helpers/hook.d.ts.map +1 -1
- package/dist/helpers/hook.js +72 -5
- package/dist/helpers/hook.js.map +1 -1
- package/dist/helpers/index.d.ts +11 -1
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/index.js +11 -1
- package/dist/helpers/index.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/internal/error-message.d.ts +20 -0
- package/dist/internal/error-message.d.ts.map +1 -0
- package/dist/internal/error-message.js +57 -0
- package/dist/internal/error-message.js.map +1 -0
- package/dist/internal/sleep.d.ts +17 -0
- package/dist/internal/sleep.d.ts.map +1 -0
- package/dist/internal/sleep.js +51 -0
- package/dist/internal/sleep.js.map +1 -0
- package/dist/messages.d.ts +11 -1
- package/dist/messages.d.ts.map +1 -1
- package/dist/orchestrator.d.ts +1 -1
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +21 -2
- package/dist/orchestrator.js.map +1 -1
- package/dist/patterns/bounded-fanout-of.d.ts +2 -6
- package/dist/patterns/bounded-fanout-of.d.ts.map +1 -1
- package/dist/patterns/bounded-fanout-of.js +11 -8
- package/dist/patterns/bounded-fanout-of.js.map +1 -1
- package/dist/patterns/index.d.ts +22 -0
- package/dist/patterns/index.d.ts.map +1 -1
- package/dist/patterns/index.js +22 -0
- package/dist/patterns/index.js.map +1 -1
- package/dist/patterns/parallel-phases.d.ts +7 -2
- package/dist/patterns/parallel-phases.d.ts.map +1 -1
- package/dist/patterns/parallel-phases.js +70 -16
- package/dist/patterns/parallel-phases.js.map +1 -1
- package/dist/patterns/sub-pipeline.d.ts.map +1 -1
- package/dist/patterns/sub-pipeline.js +10 -6
- package/dist/patterns/sub-pipeline.js.map +1 -1
- package/dist/patterns/with-retry.d.ts.map +1 -1
- package/dist/patterns/with-retry.js +5 -2
- package/dist/patterns/with-retry.js.map +1 -1
- package/dist/phase.d.ts +3 -0
- package/dist/phase.d.ts.map +1 -1
- package/dist/phase.js.map +1 -1
- package/dist/session/sse.d.ts +5 -1
- package/dist/session/sse.d.ts.map +1 -1
- package/dist/session/sse.js +56 -16
- package/dist/session/sse.js.map +1 -1
- package/dist/tools/registry.d.ts +6 -1
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +2 -2
- package/dist/tools/registry.js.map +1 -1
- package/dist/triggers/run-trigger.d.ts.map +1 -1
- package/dist/triggers/run-trigger.js +4 -1
- package/dist/triggers/run-trigger.js.map +1 -1
- package/dist/triggers/timer-trigger.d.ts +13 -1
- package/dist/triggers/timer-trigger.d.ts.map +1 -1
- package/dist/triggers/timer-trigger.js +35 -3
- package/dist/triggers/timer-trigger.js.map +1 -1
- package/package.json +1 -1
package/dist/agent/index.d.ts
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* is intentionally NOT a configured package subpath).
|
|
21
21
|
*/
|
|
22
22
|
export { runAgentWithTools } from './runner.js';
|
|
23
|
-
export { parseJSON } from './parse-json.js';
|
|
23
|
+
export { parseJSON, parseJSONStrict } from './parse-json.js';
|
|
24
24
|
export type { AgentConfig, ActivityEntry, AgentRunResult, AgentRunnerOptions, AgentStreamEvent, FinishReason, UsageInfo, } from './types.js';
|
|
25
25
|
export { toOpenAIMessages, toOpenAITools } from './openai-adapter.js';
|
|
26
26
|
export { consumeStream, looksLikeToolCallText, normalizeFinishReason, type AccumulatedRound, } from './stream-consumer.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAE7D,YAAY,EACV,WAAW,EACX,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,SAAS,GACV,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,qBAAqB,EACrB,KAAK,gBAAgB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/agent/index.js
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* is intentionally NOT a configured package subpath).
|
|
21
21
|
*/
|
|
22
22
|
export { runAgentWithTools } from './runner.js';
|
|
23
|
-
export { parseJSON } from './parse-json.js';
|
|
23
|
+
export { parseJSON, parseJSONStrict } from './parse-json.js';
|
|
24
24
|
// @internal — see file header. Lower-level pieces for advanced callers.
|
|
25
25
|
export { toOpenAIMessages, toOpenAITools } from './openai-adapter.js';
|
|
26
26
|
export { consumeStream, looksLikeToolCallText, normalizeFinishReason, } from './stream-consumer.js';
|
package/dist/agent/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAY7D,wEAAwE;AACxE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,qBAAqB,GAEtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -3,10 +3,26 @@
|
|
|
3
3
|
* the first {...} object from surrounding prose. Returns the supplied fallback
|
|
4
4
|
* on parse failure.
|
|
5
5
|
*
|
|
6
|
+
* Contract: this function MUST NOT throw. Adversarial agent output (deeply
|
|
7
|
+
* nested structures, malformed prose, megabytes of text) returns the
|
|
8
|
+
* fallback and reports via `onError` (or `console.warn` if no handler).
|
|
9
|
+
*
|
|
6
10
|
* Note on the silent-fallback behavior: when the agent's output was truncated
|
|
7
11
|
* (i.e. `AgentRunResult.finishReason === 'length'`), this almost always
|
|
8
12
|
* fails to parse. Callers should branch on `finishReason` BEFORE trusting
|
|
9
13
|
* the parsed value — otherwise truncation is invisible.
|
|
10
14
|
*/
|
|
11
15
|
export declare function parseJSON<T>(text: string, fallback: T, onError?: (preview: string, err: Error) => void): T;
|
|
16
|
+
/**
|
|
17
|
+
* Strict counterpart to `parseJSON`: same extraction logic (markdown
|
|
18
|
+
* fences, embedded `{...}`, depth guard) but throws on failure instead
|
|
19
|
+
* of returning a fallback. Use this when the caller has already checked
|
|
20
|
+
* `AgentRunResult.finishReason` and KNOWS the response should be valid
|
|
21
|
+
* JSON — surfacing the parse error is more useful than a silent default.
|
|
22
|
+
*
|
|
23
|
+
* Throws `SyntaxError` for malformed JSON; throws `RangeError` if input
|
|
24
|
+
* nesting exceeds MAX_PARSE_DEPTH (mirroring the V8 safeguard in the
|
|
25
|
+
* tolerant variant).
|
|
26
|
+
*/
|
|
27
|
+
export declare function parseJSONStrict<T>(text: string): T;
|
|
12
28
|
//# sourceMappingURL=parse-json.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-json.d.ts","sourceRoot":"","sources":["../../src/agent/parse-json.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"parse-json.d.ts","sourceRoot":"","sources":["../../src/agent/parse-json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAYH,wBAAgB,SAAS,CAAC,CAAC,EACzB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,EACX,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,KAAK,IAAI,GAC9C,CAAC,CAOH;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAElD"}
|
package/dist/agent/parse-json.js
CHANGED
|
@@ -3,29 +3,100 @@
|
|
|
3
3
|
* the first {...} object from surrounding prose. Returns the supplied fallback
|
|
4
4
|
* on parse failure.
|
|
5
5
|
*
|
|
6
|
+
* Contract: this function MUST NOT throw. Adversarial agent output (deeply
|
|
7
|
+
* nested structures, malformed prose, megabytes of text) returns the
|
|
8
|
+
* fallback and reports via `onError` (or `console.warn` if no handler).
|
|
9
|
+
*
|
|
6
10
|
* Note on the silent-fallback behavior: when the agent's output was truncated
|
|
7
11
|
* (i.e. `AgentRunResult.finishReason === 'length'`), this almost always
|
|
8
12
|
* fails to parse. Callers should branch on `finishReason` BEFORE trusting
|
|
9
13
|
* the parsed value — otherwise truncation is invisible.
|
|
10
14
|
*/
|
|
15
|
+
/**
|
|
16
|
+
* V8's `JSON.parse` is recursive — input nested past ~10k levels can blow
|
|
17
|
+
* the stack with a `RangeError` that is NOT reliably catchable from the
|
|
18
|
+
* surrounding try/catch (the throw happens at a depth where the catch
|
|
19
|
+
* frame itself can't run). We pre-check the candidate string's brace
|
|
20
|
+
* nesting and bail to fallback before calling `JSON.parse` when nesting
|
|
21
|
+
* is adversarially deep. Realistic agent output never approaches this.
|
|
22
|
+
*/
|
|
23
|
+
const MAX_PARSE_DEPTH = 1000;
|
|
11
24
|
export function parseJSON(text, fallback, onError) {
|
|
12
|
-
const fenced = text.match(/```(?:json)?\s*([\s\S]*?)```/);
|
|
13
|
-
const braced = text.match(/(\{[\s\S]*\})/);
|
|
14
|
-
const jsonStr = fenced ? fenced[1] : braced ? braced[1] : text;
|
|
15
25
|
try {
|
|
16
|
-
return
|
|
26
|
+
return parseCandidate(text);
|
|
17
27
|
}
|
|
18
28
|
catch (err) {
|
|
19
|
-
const preview = text.slice(0, 200);
|
|
20
29
|
const errObj = err instanceof Error ? err : new Error(String(err));
|
|
21
|
-
|
|
22
|
-
|
|
30
|
+
return report(text, errObj, fallback, onError);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Strict counterpart to `parseJSON`: same extraction logic (markdown
|
|
35
|
+
* fences, embedded `{...}`, depth guard) but throws on failure instead
|
|
36
|
+
* of returning a fallback. Use this when the caller has already checked
|
|
37
|
+
* `AgentRunResult.finishReason` and KNOWS the response should be valid
|
|
38
|
+
* JSON — surfacing the parse error is more useful than a silent default.
|
|
39
|
+
*
|
|
40
|
+
* Throws `SyntaxError` for malformed JSON; throws `RangeError` if input
|
|
41
|
+
* nesting exceeds MAX_PARSE_DEPTH (mirroring the V8 safeguard in the
|
|
42
|
+
* tolerant variant).
|
|
43
|
+
*/
|
|
44
|
+
export function parseJSONStrict(text) {
|
|
45
|
+
return parseCandidate(text);
|
|
46
|
+
}
|
|
47
|
+
function parseCandidate(text) {
|
|
48
|
+
const fenced = text.match(/```(?:json)?\s*([\s\S]*?)```/);
|
|
49
|
+
const braced = text.match(/(\{[\s\S]*\})/);
|
|
50
|
+
const jsonStr = (fenced ? fenced[1] : braced ? braced[1] : text).trim();
|
|
51
|
+
if (exceedsMaxDepth(jsonStr, MAX_PARSE_DEPTH)) {
|
|
52
|
+
throw new RangeError(`parseJSON: input nesting exceeds MAX_PARSE_DEPTH=${MAX_PARSE_DEPTH}`);
|
|
53
|
+
}
|
|
54
|
+
return JSON.parse(jsonStr);
|
|
55
|
+
}
|
|
56
|
+
function report(text, err, fallback, onError) {
|
|
57
|
+
const preview = text.slice(0, 200);
|
|
58
|
+
if (onError) {
|
|
59
|
+
onError(preview, err);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
// eslint-disable-next-line no-console
|
|
63
|
+
console.warn(`[parseJSON] failed to parse agent output, using fallback. Preview: "${preview}..."`, err);
|
|
64
|
+
}
|
|
65
|
+
return fallback;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* O(n) scan tracking string/escape state so braces inside string literals
|
|
69
|
+
* don't inflate the depth count. Returns true as soon as `max` is exceeded —
|
|
70
|
+
* does NOT walk the full input once the verdict is decided.
|
|
71
|
+
*/
|
|
72
|
+
function exceedsMaxDepth(s, max) {
|
|
73
|
+
let depth = 0;
|
|
74
|
+
let inString = false;
|
|
75
|
+
let escaped = false;
|
|
76
|
+
for (let i = 0; i < s.length; i++) {
|
|
77
|
+
const c = s.charCodeAt(i);
|
|
78
|
+
if (escaped) {
|
|
79
|
+
escaped = false;
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
if (inString) {
|
|
83
|
+
if (c === 0x5c /* \ */)
|
|
84
|
+
escaped = true;
|
|
85
|
+
else if (c === 0x22 /* " */)
|
|
86
|
+
inString = false;
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
if (c === 0x22 /* " */) {
|
|
90
|
+
inString = true;
|
|
91
|
+
}
|
|
92
|
+
else if (c === 0x7b /* { */ || c === 0x5b /* [ */) {
|
|
93
|
+
if (++depth > max)
|
|
94
|
+
return true;
|
|
23
95
|
}
|
|
24
|
-
else {
|
|
25
|
-
|
|
26
|
-
console.warn(`[parseJSON] failed to parse agent output, using fallback. Preview: "${preview}..."`, err);
|
|
96
|
+
else if (c === 0x7d /* } */ || c === 0x5d /* ] */) {
|
|
97
|
+
depth--;
|
|
27
98
|
}
|
|
28
|
-
return fallback;
|
|
29
99
|
}
|
|
100
|
+
return false;
|
|
30
101
|
}
|
|
31
102
|
//# sourceMappingURL=parse-json.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-json.js","sourceRoot":"","sources":["../../src/agent/parse-json.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"parse-json.js","sourceRoot":"","sources":["../../src/agent/parse-json.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/agent/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,OAAO,KAAK,EACV,OAAO,EAGR,MAAM,gBAAgB,CAAC;AAaxB,OAAO,KAAK,EAEV,WAAW,EACX,kBAAkB,EAClB,cAAc,EAGf,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/agent/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,OAAO,KAAK,EACV,OAAO,EAGR,MAAM,gBAAgB,CAAC;AAaxB,OAAO,KAAK,EAEV,WAAW,EACX,kBAAkB,EAClB,cAAc,EAGf,MAAM,YAAY,CAAC;AAMpB,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,WAAW,EACnB,eAAe,EAAE,OAAO,EAAE,EAC1B,OAAO,EAAE,kBAAkB,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,CAAC,CAuSzB"}
|
package/dist/agent/runner.js
CHANGED
|
@@ -25,6 +25,7 @@ import { DeterministicCompressor, AggressiveCompressor, sanitizeToolPairs, } fro
|
|
|
25
25
|
import { toOpenAIMessages, toOpenAITools } from './openai-adapter.js';
|
|
26
26
|
import { consumeStream, looksLikeToolCallText } from './stream-consumer.js';
|
|
27
27
|
import { isRetryableError, isAbortError } from './retry.js';
|
|
28
|
+
import { toErrorMessage } from '../internal/error-message.js';
|
|
28
29
|
export async function runAgentWithTools(config, initialMessages, options, agentLabel) {
|
|
29
30
|
const label = agentLabel ?? config.name;
|
|
30
31
|
const activity = [];
|
|
@@ -57,15 +58,15 @@ export async function runAgentWithTools(config, initialMessages, options, agentL
|
|
|
57
58
|
result = verified;
|
|
58
59
|
}
|
|
59
60
|
catch (err) {
|
|
60
|
-
const
|
|
61
|
+
const message = toErrorMessage(err);
|
|
61
62
|
activity.push({
|
|
62
63
|
agent: label,
|
|
63
64
|
action: 'verify_failed',
|
|
64
|
-
detail:
|
|
65
|
+
detail: message.slice(0, 200),
|
|
65
66
|
});
|
|
66
67
|
return {
|
|
67
68
|
...result,
|
|
68
|
-
text: JSON.stringify({ _error: true, message:
|
|
69
|
+
text: JSON.stringify({ _error: true, message: message || 'verifyResult threw' }),
|
|
69
70
|
finishReason: 'error',
|
|
70
71
|
};
|
|
71
72
|
}
|
|
@@ -207,8 +208,11 @@ export async function runAgentWithTools(config, initialMessages, options, agentL
|
|
|
207
208
|
});
|
|
208
209
|
emit?.({ type: 'tool_call_started', agent: label, toolCall: tc });
|
|
209
210
|
}
|
|
210
|
-
// Execute tools in parallel.
|
|
211
|
-
|
|
211
|
+
// Execute tools in parallel. Forward the run's AbortSignal so
|
|
212
|
+
// long-running tool implementations can cancel cooperatively
|
|
213
|
+
// rather than running to completion before the next round's
|
|
214
|
+
// between-round abort check fires.
|
|
215
|
+
const results = await Promise.all(assistantMsg.toolCalls.map((tc) => options.toolExecutor.execute(tc.name, tc.id, tc.input, options.signal)));
|
|
212
216
|
// --- Layer 1: cap each tool result ---
|
|
213
217
|
for (let i = 0; i < results.length; i++) {
|
|
214
218
|
const r = results[i];
|
|
@@ -242,27 +246,27 @@ export async function runAgentWithTools(config, initialMessages, options, agentL
|
|
|
242
246
|
return finalize(lastAssistant?.content ?? '{}', 'length');
|
|
243
247
|
}
|
|
244
248
|
catch (err) {
|
|
245
|
-
const
|
|
249
|
+
const message = toErrorMessage(err);
|
|
246
250
|
if (isAbortError(err)) {
|
|
247
|
-
activity.push({ agent: label, action: 'aborted', detail:
|
|
251
|
+
activity.push({ agent: label, action: 'aborted', detail: message.slice(0, 120) });
|
|
248
252
|
return finalize('', 'error');
|
|
249
253
|
}
|
|
250
|
-
activity.push({ agent: label, action: 'error', detail:
|
|
254
|
+
activity.push({ agent: label, action: 'error', detail: message.slice(0, 120) });
|
|
251
255
|
if (attempt < maxRetries && isRetryableError(err)) {
|
|
252
256
|
const delay = 2000 + Math.random() * 3000;
|
|
253
257
|
activity.push({
|
|
254
258
|
agent: label,
|
|
255
259
|
action: 'retry',
|
|
256
|
-
detail: `Retrying after ${
|
|
260
|
+
detail: `Retrying after ${message.slice(0, 60)}`,
|
|
257
261
|
});
|
|
258
262
|
// eslint-disable-next-line no-console
|
|
259
|
-
console.warn(`[${label}] retryable error, waiting ${Math.round(delay)}ms: ${
|
|
263
|
+
console.warn(`[${label}] retryable error, waiting ${Math.round(delay)}ms: ${message.slice(0, 100)}`);
|
|
260
264
|
await new Promise((r) => setTimeout(r, delay));
|
|
261
265
|
continue;
|
|
262
266
|
}
|
|
263
267
|
// eslint-disable-next-line no-console
|
|
264
|
-
console.error(`[${label}] agent failed (attempt ${attempt + 1}):`,
|
|
265
|
-
return finalize(JSON.stringify({ _error: true, message
|
|
268
|
+
console.error(`[${label}] agent failed (attempt ${attempt + 1}):`, message);
|
|
269
|
+
return finalize(JSON.stringify({ _error: true, message }), 'error');
|
|
266
270
|
}
|
|
267
271
|
}
|
|
268
272
|
return finalize('{}', 'error');
|
package/dist/agent/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/agent/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAWH,OAAO,EACL,kBAAkB,EAClB,YAAY,GAEb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAUlC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/agent/runner.ts"],"names":[],"mappings":"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"}
|
package/dist/agent-runner.d.ts
CHANGED
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
* For new code, import from `thread-phase` (or directly from `./agent/*`)
|
|
7
7
|
* rather than this path.
|
|
8
8
|
*/
|
|
9
|
-
export { runAgentWithTools, parseJSON, type AgentConfig, type ActivityEntry, type AgentRunResult, type AgentRunnerOptions, type AgentStreamEvent, type FinishReason, type UsageInfo, } from './agent/index.js';
|
|
9
|
+
export { runAgentWithTools, parseJSON, parseJSONStrict, type AgentConfig, type ActivityEntry, type AgentRunResult, type AgentRunnerOptions, type AgentStreamEvent, type FinishReason, type UsageInfo, } from './agent/index.js';
|
|
10
10
|
//# sourceMappingURL=agent-runner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runner.d.ts","sourceRoot":"","sources":["../src/agent-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,SAAS,GACf,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"agent-runner.d.ts","sourceRoot":"","sources":["../src/agent-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,SAAS,GACf,MAAM,kBAAkB,CAAC"}
|
package/dist/agent-runner.js
CHANGED
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
* For new code, import from `thread-phase` (or directly from `./agent/*`)
|
|
7
7
|
* rather than this path.
|
|
8
8
|
*/
|
|
9
|
-
export { runAgentWithTools, parseJSON, } from './agent/index.js';
|
|
9
|
+
export { runAgentWithTools, parseJSON, parseJSONStrict, } from './agent/index.js';
|
|
10
10
|
//# sourceMappingURL=agent-runner.js.map
|
package/dist/agent-runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../src/agent-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,iBAAiB,EACjB,SAAS,
|
|
1
|
+
{"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../src/agent-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,eAAe,GAQhB,MAAM,kBAAkB,CAAC"}
|
|
@@ -3,15 +3,24 @@
|
|
|
3
3
|
* that adapters emit on `error` events. Walks the `cause` chain so wrapped
|
|
4
4
|
* errors don't lose context across the subprocess boundary.
|
|
5
5
|
*
|
|
6
|
+
* Contract: MUST NOT throw — adapters call this on every error before
|
|
7
|
+
* emitting an `error` event, so a throw here would crash the adapter
|
|
8
|
+
* harness instead of producing the documented payload.
|
|
9
|
+
*
|
|
6
10
|
* @internal
|
|
7
11
|
*/
|
|
8
12
|
import type { SerializableError } from './protocol.js';
|
|
9
13
|
/**
|
|
10
14
|
* Normalize any thrown value to a `SerializableError`. Non-`Error` throws
|
|
11
|
-
* become `{ name: 'NonError', message:
|
|
15
|
+
* become `{ name: 'NonError', message: <stringified> }` so the field shape
|
|
12
16
|
* stays uniform — consumers can rely on `name` and `message` always being
|
|
13
17
|
* present.
|
|
14
18
|
*
|
|
19
|
+
* Cycles in `Error.cause` chains (which can occur in real code via wrapped
|
|
20
|
+
* errors that re-reference the original) are detected via a visited set
|
|
21
|
+
* and surface as `{ name: 'CycleDetected', ... }` instead of recursing
|
|
22
|
+
* past the JS stack limit.
|
|
23
|
+
*
|
|
15
24
|
* @internal
|
|
16
25
|
*/
|
|
17
26
|
export declare function serializeError(err: unknown): SerializableError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize-error.d.ts","sourceRoot":"","sources":["../../src/agents/serialize-error.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"serialize-error.d.ts","sourceRoot":"","sources":["../../src/agents/serialize-error.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,iBAAiB,CAE9D"}
|
|
@@ -3,25 +3,64 @@
|
|
|
3
3
|
* that adapters emit on `error` events. Walks the `cause` chain so wrapped
|
|
4
4
|
* errors don't lose context across the subprocess boundary.
|
|
5
5
|
*
|
|
6
|
+
* Contract: MUST NOT throw — adapters call this on every error before
|
|
7
|
+
* emitting an `error` event, so a throw here would crash the adapter
|
|
8
|
+
* harness instead of producing the documented payload.
|
|
9
|
+
*
|
|
6
10
|
* @internal
|
|
7
11
|
*/
|
|
8
12
|
/**
|
|
9
13
|
* Normalize any thrown value to a `SerializableError`. Non-`Error` throws
|
|
10
|
-
* become `{ name: 'NonError', message:
|
|
14
|
+
* become `{ name: 'NonError', message: <stringified> }` so the field shape
|
|
11
15
|
* stays uniform — consumers can rely on `name` and `message` always being
|
|
12
16
|
* present.
|
|
13
17
|
*
|
|
18
|
+
* Cycles in `Error.cause` chains (which can occur in real code via wrapped
|
|
19
|
+
* errors that re-reference the original) are detected via a visited set
|
|
20
|
+
* and surface as `{ name: 'CycleDetected', ... }` instead of recursing
|
|
21
|
+
* past the JS stack limit.
|
|
22
|
+
*
|
|
14
23
|
* @internal
|
|
15
24
|
*/
|
|
16
25
|
export function serializeError(err) {
|
|
26
|
+
return serializeInner(err, new WeakSet());
|
|
27
|
+
}
|
|
28
|
+
function serializeInner(err, seen) {
|
|
17
29
|
if (err instanceof Error) {
|
|
30
|
+
if (seen.has(err)) {
|
|
31
|
+
return {
|
|
32
|
+
name: 'CycleDetected',
|
|
33
|
+
message: `cyclic Error.cause reference back to ${err.name}: ${err.message}`,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
seen.add(err);
|
|
18
37
|
return {
|
|
19
38
|
name: err.name,
|
|
20
39
|
message: err.message,
|
|
21
40
|
stack: err.stack,
|
|
22
|
-
cause: err.cause !== undefined ?
|
|
41
|
+
cause: err.cause !== undefined ? serializeInner(err.cause, seen) : undefined,
|
|
23
42
|
};
|
|
24
43
|
}
|
|
25
|
-
return { name: 'NonError', message:
|
|
44
|
+
return { name: 'NonError', message: safeStringify(err) };
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Stringify an arbitrary value without ever propagating an exception.
|
|
48
|
+
*
|
|
49
|
+
* Hostile inputs — Proxies whose traps throw, objects with throwing
|
|
50
|
+
* `Symbol.toPrimitive` or `toString`, getter chains that recurse — would
|
|
51
|
+
* otherwise crash this function and break the adapter safety-net invariant.
|
|
52
|
+
*/
|
|
53
|
+
function safeStringify(v) {
|
|
54
|
+
try {
|
|
55
|
+
return String(v);
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
try {
|
|
59
|
+
return Object.prototype.toString.call(v);
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return '<unserializable>';
|
|
63
|
+
}
|
|
64
|
+
}
|
|
26
65
|
}
|
|
27
66
|
//# sourceMappingURL=serialize-error.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize-error.js","sourceRoot":"","sources":["../../src/agents/serialize-error.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"serialize-error.js","sourceRoot":"","sources":["../../src/agents/serialize-error.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,OAAO,cAAc,CAAC,GAAG,EAAE,IAAI,OAAO,EAAU,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,cAAc,CACrB,GAAY,EACZ,IAAqB;IAErB,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO;gBACL,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,wCAAwC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE;aAC5E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,KAAK,EACH,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SACxE,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;AAC3D,CAAC;AAED;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,CAAU;IAC/B,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC;YACH,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,kBAAkB,CAAC;QAC5B,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/dist/cache.d.ts
CHANGED
|
@@ -13,13 +13,24 @@
|
|
|
13
13
|
*/
|
|
14
14
|
export declare class PipelineCache {
|
|
15
15
|
private readonly store;
|
|
16
|
+
private readonly pending;
|
|
16
17
|
private readonly prefix;
|
|
17
|
-
constructor(store?: Map<string, unknown>, prefix?: string);
|
|
18
|
+
constructor(store?: Map<string, unknown>, prefix?: string, pending?: Map<string, Promise<unknown>>);
|
|
18
19
|
private k;
|
|
19
20
|
get<T>(key: string): T | undefined;
|
|
20
21
|
set(key: string, value: unknown): void;
|
|
21
22
|
has(key: string): boolean;
|
|
22
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* Cache-or-fetch.
|
|
25
|
+
*
|
|
26
|
+
* Concurrent callers on the same key share one in-flight fetch — the
|
|
27
|
+
* second-through-Nth caller awaits the first caller's promise instead of
|
|
28
|
+
* each running its own. This preserves the cache's central invariant
|
|
29
|
+
* (one fetch per key per pipeline run) under fanout.
|
|
30
|
+
*
|
|
31
|
+
* On fetcher rejection the pending entry is evicted so the next caller
|
|
32
|
+
* may retry; rejections are NOT cached.
|
|
33
|
+
*/
|
|
23
34
|
getOrFetch<T>(key: string, fetcher: () => Promise<T>): Promise<T>;
|
|
24
35
|
/**
|
|
25
36
|
* Clear cache entries.
|
package/dist/cache.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgC;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAG9B,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,MAAM,GAAE,MAAW,EACnB,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAOzC,OAAO,CAAC,CAAC;IAIT,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAIlC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAItC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;;;;;;;;;OAUG;IACG,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAsBvE;;;;;;;OAOG;IACH,KAAK,IAAI,IAAI;IAcb;;;OAGG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;;;OAMG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;CAIvC"}
|
package/dist/cache.js
CHANGED
|
@@ -13,9 +13,11 @@
|
|
|
13
13
|
*/
|
|
14
14
|
export class PipelineCache {
|
|
15
15
|
store;
|
|
16
|
+
pending;
|
|
16
17
|
prefix;
|
|
17
|
-
constructor(store, prefix = '') {
|
|
18
|
+
constructor(store, prefix = '', pending) {
|
|
18
19
|
this.store = store ?? new Map();
|
|
20
|
+
this.pending = pending ?? new Map();
|
|
19
21
|
this.prefix = prefix;
|
|
20
22
|
}
|
|
21
23
|
k(key) {
|
|
@@ -30,15 +32,38 @@ export class PipelineCache {
|
|
|
30
32
|
has(key) {
|
|
31
33
|
return this.store.has(this.k(key));
|
|
32
34
|
}
|
|
33
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* Cache-or-fetch.
|
|
37
|
+
*
|
|
38
|
+
* Concurrent callers on the same key share one in-flight fetch — the
|
|
39
|
+
* second-through-Nth caller awaits the first caller's promise instead of
|
|
40
|
+
* each running its own. This preserves the cache's central invariant
|
|
41
|
+
* (one fetch per key per pipeline run) under fanout.
|
|
42
|
+
*
|
|
43
|
+
* On fetcher rejection the pending entry is evicted so the next caller
|
|
44
|
+
* may retry; rejections are NOT cached.
|
|
45
|
+
*/
|
|
34
46
|
async getOrFetch(key, fetcher) {
|
|
35
47
|
const fullKey = this.k(key);
|
|
36
48
|
if (this.store.has(fullKey)) {
|
|
37
49
|
return this.store.get(fullKey);
|
|
38
50
|
}
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
51
|
+
const inflight = this.pending.get(fullKey);
|
|
52
|
+
if (inflight) {
|
|
53
|
+
return inflight;
|
|
54
|
+
}
|
|
55
|
+
const p = (async () => {
|
|
56
|
+
try {
|
|
57
|
+
const value = await fetcher();
|
|
58
|
+
this.store.set(fullKey, value);
|
|
59
|
+
return value;
|
|
60
|
+
}
|
|
61
|
+
finally {
|
|
62
|
+
this.pending.delete(fullKey);
|
|
63
|
+
}
|
|
64
|
+
})();
|
|
65
|
+
this.pending.set(fullKey, p);
|
|
66
|
+
return p;
|
|
42
67
|
}
|
|
43
68
|
/**
|
|
44
69
|
* Clear cache entries.
|
|
@@ -51,12 +76,17 @@ export class PipelineCache {
|
|
|
51
76
|
clear() {
|
|
52
77
|
if (!this.prefix) {
|
|
53
78
|
this.store.clear();
|
|
79
|
+
this.pending.clear();
|
|
54
80
|
return;
|
|
55
81
|
}
|
|
56
82
|
for (const k of [...this.store.keys()]) {
|
|
57
83
|
if (k.startsWith(this.prefix))
|
|
58
84
|
this.store.delete(k);
|
|
59
85
|
}
|
|
86
|
+
for (const k of [...this.pending.keys()]) {
|
|
87
|
+
if (k.startsWith(this.prefix))
|
|
88
|
+
this.pending.delete(k);
|
|
89
|
+
}
|
|
60
90
|
}
|
|
61
91
|
/**
|
|
62
92
|
* Total entries in the underlying store, across all namespaces. This is
|
|
@@ -75,7 +105,7 @@ export class PipelineCache {
|
|
|
75
105
|
namespace(name) {
|
|
76
106
|
if (!name)
|
|
77
107
|
throw new Error('PipelineCache.namespace: name must be non-empty');
|
|
78
|
-
return new PipelineCache(this.store, `${this.prefix}${name}
|
|
108
|
+
return new PipelineCache(this.store, `${this.prefix}${name}:`, this.pending);
|
|
79
109
|
}
|
|
80
110
|
}
|
|
81
111
|
//# sourceMappingURL=cache.js.map
|
package/dist/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,OAAO,aAAa;IACP,KAAK,CAAuB;IAC5B,MAAM,CAAS;IAEhC,
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
|