@open-multi-agent/core 1.4.2 → 1.5.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/README.md +100 -53
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +5 -0
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/runner.d.ts +12 -0
- package/dist/agent/runner.d.ts.map +1 -1
- package/dist/agent/runner.js +48 -12
- package/dist/agent/runner.js.map +1 -1
- package/dist/cli/oma.d.ts +10 -2
- package/dist/cli/oma.d.ts.map +1 -1
- package/dist/cli/oma.js +10 -5
- package/dist/cli/oma.js.map +1 -1
- package/dist/dashboard/render-team-run-dashboard.d.ts.map +1 -1
- package/dist/dashboard/render-team-run-dashboard.js +177 -84
- package/dist/dashboard/render-team-run-dashboard.js.map +1 -1
- package/dist/llm/adapter.d.ts +3 -1
- package/dist/llm/adapter.d.ts.map +1 -1
- package/dist/llm/adapter.js +10 -0
- package/dist/llm/adapter.js.map +1 -1
- package/dist/llm/ai-sdk.d.ts +2 -1
- package/dist/llm/ai-sdk.d.ts.map +1 -1
- package/dist/llm/ai-sdk.js +45 -13
- package/dist/llm/ai-sdk.js.map +1 -1
- package/dist/llm/anthropic.d.ts.map +1 -1
- package/dist/llm/anthropic.js +24 -13
- package/dist/llm/anthropic.js.map +1 -1
- package/dist/llm/azure-openai.js +2 -2
- package/dist/llm/azure-openai.js.map +1 -1
- package/dist/llm/bedrock.d.ts.map +1 -1
- package/dist/llm/bedrock.js +29 -19
- package/dist/llm/bedrock.js.map +1 -1
- package/dist/llm/copilot.js +2 -2
- package/dist/llm/copilot.js.map +1 -1
- package/dist/llm/deepseek.d.ts +9 -2
- package/dist/llm/deepseek.d.ts.map +1 -1
- package/dist/llm/deepseek.js +21 -2
- package/dist/llm/deepseek.js.map +1 -1
- package/dist/llm/doubao.d.ts +21 -0
- package/dist/llm/doubao.d.ts.map +1 -0
- package/dist/llm/doubao.js +24 -0
- package/dist/llm/doubao.js.map +1 -0
- package/dist/llm/gemini.d.ts.map +1 -1
- package/dist/llm/gemini.js +32 -18
- package/dist/llm/gemini.js.map +1 -1
- package/dist/llm/mimo.d.ts +24 -0
- package/dist/llm/mimo.d.ts.map +1 -0
- package/dist/llm/mimo.js +30 -0
- package/dist/llm/mimo.js.map +1 -0
- package/dist/llm/openai-common.d.ts +3 -17
- package/dist/llm/openai-common.d.ts.map +1 -1
- package/dist/llm/openai-common.js +66 -42
- package/dist/llm/openai-common.js.map +1 -1
- package/dist/llm/openai.d.ts +22 -1
- package/dist/llm/openai.d.ts.map +1 -1
- package/dist/llm/openai.js +44 -5
- package/dist/llm/openai.js.map +1 -1
- package/dist/llm/reasoning-fallback.d.ts +80 -15
- package/dist/llm/reasoning-fallback.d.ts.map +1 -1
- package/dist/llm/reasoning-fallback.js +45 -12
- package/dist/llm/reasoning-fallback.js.map +1 -1
- package/dist/orchestrator/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator/orchestrator.js +35 -2
- package/dist/orchestrator/orchestrator.js.map +1 -1
- package/dist/tool/built-in/bash.d.ts +1 -1
- package/dist/tool/built-in/bash.d.ts.map +1 -1
- package/dist/tool/built-in/bash.js +60 -7
- package/dist/tool/built-in/bash.js.map +1 -1
- package/dist/tool/built-in/file-edit.d.ts.map +1 -1
- package/dist/tool/built-in/file-edit.js +13 -8
- package/dist/tool/built-in/file-edit.js.map +1 -1
- package/dist/tool/built-in/file-read.d.ts.map +1 -1
- package/dist/tool/built-in/file-read.js +9 -4
- package/dist/tool/built-in/file-read.js.map +1 -1
- package/dist/tool/built-in/file-write.d.ts.map +1 -1
- package/dist/tool/built-in/file-write.js +11 -6
- package/dist/tool/built-in/file-write.js.map +1 -1
- package/dist/tool/built-in/fs-walk.d.ts.map +1 -1
- package/dist/tool/built-in/fs-walk.js +6 -3
- package/dist/tool/built-in/fs-walk.js.map +1 -1
- package/dist/tool/built-in/glob.d.ts.map +1 -1
- package/dist/tool/built-in/glob.js +10 -4
- package/dist/tool/built-in/glob.js.map +1 -1
- package/dist/tool/built-in/grep.d.ts.map +1 -1
- package/dist/tool/built-in/grep.js +15 -6
- package/dist/tool/built-in/grep.js.map +1 -1
- package/dist/tool/built-in/path-safety.d.ts +30 -0
- package/dist/tool/built-in/path-safety.d.ts.map +1 -0
- package/dist/tool/built-in/path-safety.js +106 -0
- package/dist/tool/built-in/path-safety.js.map +1 -0
- package/dist/tool/mcp.d.ts.map +1 -1
- package/dist/tool/mcp.js +58 -33
- package/dist/tool/mcp.js.map +1 -1
- package/dist/types.d.ts +108 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/redaction.d.ts +4 -0
- package/dist/utils/redaction.d.ts.map +1 -0
- package/dist/utils/redaction.js +78 -0
- package/dist/utils/redaction.js.map +1 -0
- package/package.json +1 -2
- package/docs/DECISIONS.md +0 -49
- package/docs/cli.md +0 -265
- package/docs/context-management.md +0 -64
- package/docs/featured-partner.md +0 -28
- package/docs/observability.md +0 -56
- package/docs/providers/minimax.md +0 -75
- package/docs/providers.md +0 -80
- package/docs/shared-memory.md +0 -27
- package/docs/tool-configuration.md +0 -152
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-common.js","sourceRoot":"","sources":["../../src/llm/openai-common.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAsBH,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"openai-common.js","sourceRoot":"","sources":["../../src/llm/openai-common.ts"],"names":[],"mappings":"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"}
|
package/dist/llm/openai.d.ts
CHANGED
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
* ```
|
|
31
31
|
*/
|
|
32
32
|
import type { ContentBlock, LLMAdapter, LLMChatOptions, LLMMessage, LLMResponse, LLMStreamOptions, LLMToolDef, StreamEvent } from '../types.js';
|
|
33
|
+
import type { ReasoningOutboundOptions } from './reasoning-fallback.js';
|
|
33
34
|
/**
|
|
34
35
|
* LLM adapter backed by the OpenAI Chat Completions API.
|
|
35
36
|
*
|
|
@@ -39,9 +40,29 @@ export declare class OpenAIAdapter implements LLMAdapter {
|
|
|
39
40
|
#private;
|
|
40
41
|
readonly name: string;
|
|
41
42
|
readonly capabilities: {
|
|
42
|
-
echoesReasoning:
|
|
43
|
+
readonly echoesReasoning: 'never' | 'own-issued' | 'tool-use-only';
|
|
43
44
|
};
|
|
44
45
|
constructor(apiKey?: string, baseURL?: string);
|
|
46
|
+
/**
|
|
47
|
+
* Build the per-call options forwarded to {@link buildOpenAIMessageList}.
|
|
48
|
+
*
|
|
49
|
+
* Composes two orthogonal mechanisms:
|
|
50
|
+
* 1. **`nativeReasoningEchoProvider`** — set when this adapter's
|
|
51
|
+
* capability is `'tool-use-only'` (DeepSeek). Triggers native
|
|
52
|
+
* `reasoning_content` echo on assistant messages whose reasoning
|
|
53
|
+
* blocks carry matching provenance AND the conversation contains
|
|
54
|
+
* `tool_use`. See PR #251 / DeepSeek V4 thinking-mode spec.
|
|
55
|
+
* 2. **`preserveReasoningAsText` / `compressReasoningText`** — opt-in
|
|
56
|
+
* `<thinking>` text fallback from the user's `AgentConfig`. Applies
|
|
57
|
+
* to foreign-provenance reasoning AND to all reasoning on `'never'`
|
|
58
|
+
* adapters. See #223 Phase 2.
|
|
59
|
+
*
|
|
60
|
+
* The two paths are mutually exclusive per block: native echo claims
|
|
61
|
+
* own-provenance blocks first; text fallback claims everything else.
|
|
62
|
+
* Subclasses inherit `chat()` / `stream()` and so automatically pick up
|
|
63
|
+
* both behaviours; no subclass override needed.
|
|
64
|
+
*/
|
|
65
|
+
protected buildMessageOptions(options: LLMChatOptions): ReasoningOutboundOptions | undefined;
|
|
45
66
|
/**
|
|
46
67
|
* Send a synchronous (non-streaming) chat request and return the complete
|
|
47
68
|
* {@link LLMResponse}.
|
package/dist/llm/openai.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/llm/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AASH,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,WAAW,EAGZ,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/llm/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AASH,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,WAAW,EAGZ,MAAM,aAAa,CAAA;AASpB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;AAOvE;;;;GAIG;AACH,qBAAa,aAAc,YAAW,UAAU;;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAW;IAchC,QAAQ,CAAC,YAAY,EAAE;QAAE,QAAQ,CAAC,eAAe,EAAE,OAAO,GAAG,YAAY,GAAG,eAAe,CAAA;KAAE,CAE5F;gBAIW,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAO7C;;;;;;;;;;;;;;;;;;OAkBG;IACH,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,wBAAwB,GAAG,SAAS;IAe5F;;;;;;OAMG;IACG,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;IAuCjF;;;;;;;;;OASG;IACI,MAAM,CACX,QAAQ,EAAE,UAAU,EAAE,EACtB,OAAO,EAAE,gBAAgB,GACxB,aAAa,CAAC,WAAW,CAAC;CA6K9B;AAGD,YAAY,EACV,YAAY,EACZ,UAAU,EACV,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,WAAW,GACZ,CAAA"}
|
package/dist/llm/openai.js
CHANGED
|
@@ -42,10 +42,19 @@ import { extractToolCallsFromText } from '../tool/text-tool-extractor.js';
|
|
|
42
42
|
*/
|
|
43
43
|
export class OpenAIAdapter {
|
|
44
44
|
name = 'openai';
|
|
45
|
+
// The field type is intentionally widened to the full union (rather than
|
|
46
|
+
// narrowed to `'never'` via `as const`) so subclasses can override with a
|
|
47
|
+
// different value — DeepSeek currently uses `'tool-use-only'` for native
|
|
48
|
+
// `reasoning_content` echo on tool-use turns (per PR #251).
|
|
49
|
+
//
|
|
50
|
+
// OpenAI itself stays `'never'`: Chat Completions does not accept
|
|
51
|
+
// `reasoning_content` on input under any circumstance. When the user sets
|
|
52
|
+
// `AgentConfig.preserveReasoningAsText` (PR #260 / #223 Phase 2), the
|
|
53
|
+
// outbound conversion in `toOpenAIMessages` downgrades each reasoning
|
|
54
|
+
// block to inline `<thinking>` text via the shared helper in
|
|
55
|
+
// `reasoning-fallback.ts`. Without the opt-in, reasoning blocks are
|
|
56
|
+
// dropped silently on outbound.
|
|
45
57
|
capabilities = {
|
|
46
|
-
// OpenAI Chat Completions does not accept `reasoning_content` on input;
|
|
47
|
-
// any reasoning replay must go through the `<thinking>` text fallback
|
|
48
|
-
// already shipped in #234 (see openai-common.ts replay options).
|
|
49
58
|
echoesReasoning: 'never',
|
|
50
59
|
};
|
|
51
60
|
#client;
|
|
@@ -55,6 +64,36 @@ export class OpenAIAdapter {
|
|
|
55
64
|
baseURL,
|
|
56
65
|
});
|
|
57
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Build the per-call options forwarded to {@link buildOpenAIMessageList}.
|
|
69
|
+
*
|
|
70
|
+
* Composes two orthogonal mechanisms:
|
|
71
|
+
* 1. **`nativeReasoningEchoProvider`** — set when this adapter's
|
|
72
|
+
* capability is `'tool-use-only'` (DeepSeek). Triggers native
|
|
73
|
+
* `reasoning_content` echo on assistant messages whose reasoning
|
|
74
|
+
* blocks carry matching provenance AND the conversation contains
|
|
75
|
+
* `tool_use`. See PR #251 / DeepSeek V4 thinking-mode spec.
|
|
76
|
+
* 2. **`preserveReasoningAsText` / `compressReasoningText`** — opt-in
|
|
77
|
+
* `<thinking>` text fallback from the user's `AgentConfig`. Applies
|
|
78
|
+
* to foreign-provenance reasoning AND to all reasoning on `'never'`
|
|
79
|
+
* adapters. See #223 Phase 2.
|
|
80
|
+
*
|
|
81
|
+
* The two paths are mutually exclusive per block: native echo claims
|
|
82
|
+
* own-provenance blocks first; text fallback claims everything else.
|
|
83
|
+
* Subclasses inherit `chat()` / `stream()` and so automatically pick up
|
|
84
|
+
* both behaviours; no subclass override needed.
|
|
85
|
+
*/
|
|
86
|
+
buildMessageOptions(options) {
|
|
87
|
+
const wantsNativeEcho = this.capabilities.echoesReasoning === 'tool-use-only';
|
|
88
|
+
const wantsTextFallback = options.preserveReasoningAsText === true;
|
|
89
|
+
if (!wantsNativeEcho && !wantsTextFallback)
|
|
90
|
+
return undefined;
|
|
91
|
+
return {
|
|
92
|
+
preserveReasoningAsText: options.preserveReasoningAsText,
|
|
93
|
+
compressReasoningText: options.compressReasoningText,
|
|
94
|
+
nativeReasoningEchoProvider: wantsNativeEcho ? this.name : undefined,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
58
97
|
// -------------------------------------------------------------------------
|
|
59
98
|
// chat()
|
|
60
99
|
// -------------------------------------------------------------------------
|
|
@@ -66,7 +105,7 @@ export class OpenAIAdapter {
|
|
|
66
105
|
* handle these (e.g. rate limits, context length exceeded).
|
|
67
106
|
*/
|
|
68
107
|
async chat(messages, options) {
|
|
69
|
-
const openAIMessages = buildOpenAIMessageList(messages, options.systemPrompt);
|
|
108
|
+
const openAIMessages = buildOpenAIMessageList(messages, options.systemPrompt, this.buildMessageOptions(options));
|
|
70
109
|
const completion = await this.#client.chat.completions.create({
|
|
71
110
|
// Sampling params first so extraBody can override them. Structural
|
|
72
111
|
// fields (model/messages/tools/stream) come after extraBody so users
|
|
@@ -108,7 +147,7 @@ export class OpenAIAdapter {
|
|
|
108
147
|
* - Exactly one terminal event: `done` or `error`
|
|
109
148
|
*/
|
|
110
149
|
async *stream(messages, options) {
|
|
111
|
-
const openAIMessages = buildOpenAIMessageList(messages, options.systemPrompt);
|
|
150
|
+
const openAIMessages = buildOpenAIMessageList(messages, options.systemPrompt, this.buildMessageOptions(options));
|
|
112
151
|
// We request usage in the final chunk so we can include it in the `done` event.
|
|
113
152
|
const streamResponse = await this.#client.chat.completions.create({
|
|
114
153
|
// See chat() above for the rationale behind this field ordering.
|
package/dist/llm/openai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/llm/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAA;AAoB3B,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/llm/openai.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,34 +19,99 @@
|
|
|
19
19
|
* produced from native API extraction (and always stamped with
|
|
20
20
|
* `provenance`), never from text parsing.
|
|
21
21
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* outbound path to call this helper when appropriate.
|
|
30
|
-
* - Fold the OpenAI-family private helper added in #234 into this one
|
|
31
|
-
* so there is a single source of truth.
|
|
22
|
+
* Wiring (post #223 Phase 2): every adapter outbound path consults
|
|
23
|
+
* {@link ReasoningOutboundOptions} resolved from
|
|
24
|
+
* {@link AgentConfig.preserveReasoningAsText} +
|
|
25
|
+
* {@link AgentConfig.compressReasoningText}. When opt-in is off, reasoning
|
|
26
|
+
* blocks that can't be native-echoed are dropped silently (preserving
|
|
27
|
+
* pre-Phase-2 behaviour). When opt-in is on, they pass through
|
|
28
|
+
* {@link reasoningBlockToInlineText} and become inline `<thinking>` text.
|
|
32
29
|
*/
|
|
33
30
|
import type { ReasoningBlock } from '../types.js';
|
|
34
31
|
/**
|
|
35
32
|
* Default maximum character budget per `<thinking>` block after truncation.
|
|
36
33
|
* Aligned with the value used by the OpenAI-family private replay helper
|
|
37
|
-
* shipped in #234
|
|
38
|
-
* behaviour-preserving.
|
|
34
|
+
* shipped in #234 so the Phase 2 consolidation is behaviour-preserving.
|
|
39
35
|
*/
|
|
40
36
|
export declare const DEFAULT_REASONING_FALLBACK_MAX_CHARS = 1200;
|
|
37
|
+
/**
|
|
38
|
+
* Sentinel value the resolver returns when the caller explicitly disables
|
|
39
|
+
* truncation (`compressReasoningText: false`). Exported so the special-case
|
|
40
|
+
* branch in {@link resolveMaxChars} stays searchable — removing the branch
|
|
41
|
+
* would silently re-introduce truncation for users who opted out.
|
|
42
|
+
*
|
|
43
|
+
* Equal to `Number.POSITIVE_INFINITY`; the resolver maps it to
|
|
44
|
+
* `Number.MAX_SAFE_INTEGER` so `text.length <= maxChars` is always true.
|
|
45
|
+
*/
|
|
46
|
+
export declare const NO_TRUNCATION: number;
|
|
41
47
|
export interface ReasoningFallbackOptions {
|
|
42
48
|
/**
|
|
43
49
|
* Hard upper bound on the inner text length (the `<thinking>` wrapper
|
|
44
|
-
* itself is not counted).
|
|
45
|
-
*
|
|
46
|
-
* {@link
|
|
50
|
+
* itself is not counted). Special values:
|
|
51
|
+
* - `undefined` → defaults to {@link DEFAULT_REASONING_FALLBACK_MAX_CHARS}.
|
|
52
|
+
* - {@link NO_TRUNCATION} (`Number.POSITIVE_INFINITY`) → no truncation;
|
|
53
|
+
* the entire reasoning text passes through unchanged. This is the
|
|
54
|
+
* sentinel returned by {@link resolveReasoningOutboundMaxChars} when
|
|
55
|
+
* the caller sets `compressReasoningText: false`.
|
|
56
|
+
* - Any other non-finite value (`NaN`, `-Infinity`) → clamped to 1
|
|
57
|
+
* (defensive — these values are invalid input).
|
|
58
|
+
* - Finite values below 1 → clamped to 1.
|
|
59
|
+
* - Finite values ≥ 1 → used as-is (floored).
|
|
47
60
|
*/
|
|
48
61
|
readonly maxChars?: number;
|
|
49
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Outbound-conversion options derived from {@link AgentConfig}'s reasoning
|
|
65
|
+
* fields. Threaded through every adapter's outbound IR-to-native conversion
|
|
66
|
+
* so each can opt the user into the cross-provider `<thinking>` text
|
|
67
|
+
* fallback (see #223). Internal to the LLM layer — adapters pick the values
|
|
68
|
+
* out of {@link LLMChatOptions} themselves.
|
|
69
|
+
*/
|
|
70
|
+
export interface ReasoningOutboundOptions {
|
|
71
|
+
/** Mirrors {@link LLMChatOptions.preserveReasoningAsText}. */
|
|
72
|
+
readonly preserveReasoningAsText?: boolean;
|
|
73
|
+
/** Mirrors {@link LLMChatOptions.compressReasoningText}. */
|
|
74
|
+
readonly compressReasoningText?: boolean | {
|
|
75
|
+
readonly minChars?: number;
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Adapter name to use for native `reasoning_content` echo on outbound
|
|
79
|
+
* assistant messages inside a tool-calling conversation. Wired by adapters
|
|
80
|
+
* whose {@link LLMAdapter.capabilities.echoesReasoning} is `'tool-use-only'`
|
|
81
|
+
* (currently DeepSeek V4 thinking-mode — see PR #251 / DeepSeek API spec).
|
|
82
|
+
*
|
|
83
|
+
* When set, each assistant message is scanned for {@link ReasoningBlock}s
|
|
84
|
+
* whose {@link ReasoningBlock.provenance} matches this value. The collected
|
|
85
|
+
* reasoning is attached as a `reasoning_content` field on the outbound
|
|
86
|
+
* payload (a non-standard OpenAI-compat field) IF AND ONLY IF the overall
|
|
87
|
+
* conversation contains at least one `tool_use` block somewhere in its
|
|
88
|
+
* history. Non-tool conversations skip the attachment entirely.
|
|
89
|
+
*
|
|
90
|
+
* Foreign-provenance blocks fall through to the {@link preserveReasoningAsText}
|
|
91
|
+
* `<thinking>` text path when that flag is on, so the two mechanisms
|
|
92
|
+
* compose: native echo for own-provenance + tool-use; text fallback for
|
|
93
|
+
* everything else.
|
|
94
|
+
*
|
|
95
|
+
* Adapters that don't need this leave it unset (default `'never'` and
|
|
96
|
+
* `'own-issued'` capability paths).
|
|
97
|
+
*/
|
|
98
|
+
readonly nativeReasoningEchoProvider?: string;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Resolve {@link ReasoningOutboundOptions} to the `maxChars` value accepted
|
|
102
|
+
* by {@link reasoningBlockToInlineText}. Encodes the
|
|
103
|
+
* default-on-when-preserve-on semantics documented in #223:
|
|
104
|
+
*
|
|
105
|
+
* - `preserve=false` → returns `undefined` (fallback never runs;
|
|
106
|
+
* callers must check `preserve` themselves)
|
|
107
|
+
* - `compress=undefined`/`true`→ returns `undefined` so the helper applies
|
|
108
|
+
* its own default head+tail budget
|
|
109
|
+
* - `compress=false` → returns {@link NO_TRUNCATION}; the helper
|
|
110
|
+
* treats this as a no-op cap (full text)
|
|
111
|
+
* - `compress={minChars: N}` → `N` (the threshold value also serves as
|
|
112
|
+
* the truncation cap)
|
|
113
|
+
*/
|
|
114
|
+
export declare function resolveReasoningOutboundMaxChars(options: ReasoningOutboundOptions | undefined): number | undefined;
|
|
50
115
|
/**
|
|
51
116
|
* Convert a {@link ReasoningBlock} into its `<thinking>...</thinking>` text
|
|
52
117
|
* representation for outbound replay through adapters that cannot natively
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reasoning-fallback.d.ts","sourceRoot":"","sources":["../../src/llm/reasoning-fallback.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"reasoning-fallback.d.ts","sourceRoot":"","sources":["../../src/llm/reasoning-fallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD;;;;GAIG;AACH,eAAO,MAAM,oCAAoC,OAAO,CAAA;AAExD;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,QAA2B,CAAA;AAQrD,MAAM,WAAW,wBAAwB;IACvC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,wBAAwB;IACvC,8DAA8D;IAC9D,QAAQ,CAAC,uBAAuB,CAAC,EAAE,OAAO,CAAA;IAC1C,4DAA4D;IAC5D,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,GAAG;QAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACzE;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,QAAQ,CAAC,2BAA2B,CAAC,EAAE,MAAM,CAAA;CAC9C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,wBAAwB,GAAG,SAAS,GAC5C,MAAM,GAAG,SAAS,CAQpB;AA0BD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,cAAc,EACrB,OAAO,CAAC,EAAE,wBAAwB,GACjC,MAAM,CAOR"}
|
|
@@ -19,31 +19,64 @@
|
|
|
19
19
|
* produced from native API extraction (and always stamped with
|
|
20
20
|
* `provenance`), never from text parsing.
|
|
21
21
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* outbound path to call this helper when appropriate.
|
|
30
|
-
* - Fold the OpenAI-family private helper added in #234 into this one
|
|
31
|
-
* so there is a single source of truth.
|
|
22
|
+
* Wiring (post #223 Phase 2): every adapter outbound path consults
|
|
23
|
+
* {@link ReasoningOutboundOptions} resolved from
|
|
24
|
+
* {@link AgentConfig.preserveReasoningAsText} +
|
|
25
|
+
* {@link AgentConfig.compressReasoningText}. When opt-in is off, reasoning
|
|
26
|
+
* blocks that can't be native-echoed are dropped silently (preserving
|
|
27
|
+
* pre-Phase-2 behaviour). When opt-in is on, they pass through
|
|
28
|
+
* {@link reasoningBlockToInlineText} and become inline `<thinking>` text.
|
|
32
29
|
*/
|
|
33
30
|
/**
|
|
34
31
|
* Default maximum character budget per `<thinking>` block after truncation.
|
|
35
32
|
* Aligned with the value used by the OpenAI-family private replay helper
|
|
36
|
-
* shipped in #234
|
|
37
|
-
* behaviour-preserving.
|
|
33
|
+
* shipped in #234 so the Phase 2 consolidation is behaviour-preserving.
|
|
38
34
|
*/
|
|
39
35
|
export const DEFAULT_REASONING_FALLBACK_MAX_CHARS = 1200;
|
|
36
|
+
/**
|
|
37
|
+
* Sentinel value the resolver returns when the caller explicitly disables
|
|
38
|
+
* truncation (`compressReasoningText: false`). Exported so the special-case
|
|
39
|
+
* branch in {@link resolveMaxChars} stays searchable — removing the branch
|
|
40
|
+
* would silently re-introduce truncation for users who opted out.
|
|
41
|
+
*
|
|
42
|
+
* Equal to `Number.POSITIVE_INFINITY`; the resolver maps it to
|
|
43
|
+
* `Number.MAX_SAFE_INTEGER` so `text.length <= maxChars` is always true.
|
|
44
|
+
*/
|
|
45
|
+
export const NO_TRUNCATION = Number.POSITIVE_INFINITY;
|
|
40
46
|
/** Marker inserted between head and tail when reasoning text is truncated. */
|
|
41
47
|
const TRUNCATION_MARKER = '...[truncated]...';
|
|
42
48
|
/** Placeholder emitted in place of opaque encrypted (redacted) reasoning. */
|
|
43
49
|
const REDACTED_PLACEHOLDER = '<thinking>[redacted]</thinking>';
|
|
50
|
+
/**
|
|
51
|
+
* Resolve {@link ReasoningOutboundOptions} to the `maxChars` value accepted
|
|
52
|
+
* by {@link reasoningBlockToInlineText}. Encodes the
|
|
53
|
+
* default-on-when-preserve-on semantics documented in #223:
|
|
54
|
+
*
|
|
55
|
+
* - `preserve=false` → returns `undefined` (fallback never runs;
|
|
56
|
+
* callers must check `preserve` themselves)
|
|
57
|
+
* - `compress=undefined`/`true`→ returns `undefined` so the helper applies
|
|
58
|
+
* its own default head+tail budget
|
|
59
|
+
* - `compress=false` → returns {@link NO_TRUNCATION}; the helper
|
|
60
|
+
* treats this as a no-op cap (full text)
|
|
61
|
+
* - `compress={minChars: N}` → `N` (the threshold value also serves as
|
|
62
|
+
* the truncation cap)
|
|
63
|
+
*/
|
|
64
|
+
export function resolveReasoningOutboundMaxChars(options) {
|
|
65
|
+
if (options?.preserveReasoningAsText !== true)
|
|
66
|
+
return undefined;
|
|
67
|
+
const compress = options.compressReasoningText;
|
|
68
|
+
if (compress === false)
|
|
69
|
+
return NO_TRUNCATION;
|
|
70
|
+
if (compress === undefined || compress === true) {
|
|
71
|
+
return undefined; // helper applies its own default when maxChars omitted
|
|
72
|
+
}
|
|
73
|
+
return compress.minChars; // undefined → helper default, number → that cap
|
|
74
|
+
}
|
|
44
75
|
function resolveMaxChars(value) {
|
|
45
76
|
if (value === undefined)
|
|
46
77
|
return DEFAULT_REASONING_FALLBACK_MAX_CHARS;
|
|
78
|
+
if (value === NO_TRUNCATION)
|
|
79
|
+
return Number.MAX_SAFE_INTEGER;
|
|
47
80
|
if (!Number.isFinite(value))
|
|
48
81
|
return 1;
|
|
49
82
|
const floored = Math.floor(value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reasoning-fallback.js","sourceRoot":"","sources":["../../src/llm/reasoning-fallback.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"reasoning-fallback.js","sourceRoot":"","sources":["../../src/llm/reasoning-fallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAIH;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,IAAI,CAAA;AAExD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,iBAAiB,CAAA;AAErD,8EAA8E;AAC9E,MAAM,iBAAiB,GAAG,mBAAmB,CAAA;AAE7C,6EAA6E;AAC7E,MAAM,oBAAoB,GAAG,iCAAiC,CAAA;AAuD9D;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gCAAgC,CAC9C,OAA6C;IAE7C,IAAI,OAAO,EAAE,uBAAuB,KAAK,IAAI;QAAE,OAAO,SAAS,CAAA;IAC/D,MAAM,QAAQ,GAAG,OAAO,CAAC,qBAAqB,CAAA;IAC9C,IAAI,QAAQ,KAAK,KAAK;QAAE,OAAO,aAAa,CAAA;IAC5C,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,SAAS,CAAA,CAAE,uDAAuD;IAC3E,CAAC;IACD,OAAO,QAAQ,CAAC,QAAQ,CAAA,CAAE,gDAAgD;AAC5E,CAAC;AAED,SAAS,eAAe,CAAC,KAAyB;IAChD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,oCAAoC,CAAA;IACpE,IAAI,KAAK,KAAK,aAAa;QAAE,OAAO,MAAM,CAAC,gBAAgB,CAAA;IAC3D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAA;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACjC,IAAI,OAAO,GAAG,CAAC;QAAE,OAAO,CAAC,CAAA;IACzB,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,IAAY,EAAE,QAAgB;IAC9C,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAA;IACxC,IAAI,iBAAiB,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;IACxE,MAAM,MAAM,GAAG,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAA;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAA;IACpC,MAAM,IAAI,GAAG,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAA;AACtF,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAqB,EACrB,OAAkC;IAElC,IAAI,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5E,OAAO,oBAAoB,CAAA;IAC7B,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACtC,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAC9C,OAAO,aAAa,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAA;AAC5D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EAEd,cAAc,EACd,kBAAkB,EAElB,IAAI,EAIJ,UAAU,EAEV,aAAa,EAEd,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,7 @@ import { emitTrace, generateRunId } from '../utils/trace.js';
|
|
|
46
46
|
import { ToolRegistry } from '../tool/framework.js';
|
|
47
47
|
import { ToolExecutor } from '../tool/executor.js';
|
|
48
48
|
import { registerBuiltInTools } from '../tool/built-in/index.js';
|
|
49
|
+
import { defaultWorkspaceDir } from '../tool/built-in/path-safety.js';
|
|
49
50
|
import { Team } from '../team/team.js';
|
|
50
51
|
import { TaskQueue } from '../task/queue.js';
|
|
51
52
|
import { createTask } from '../task/task.js';
|
|
@@ -380,6 +381,7 @@ function buildTaskAgentTeamInfo(ctx, taskId, traceBase, delegationDepth, delegat
|
|
|
380
381
|
provider: targetConfig.provider ?? ctx.config.defaultProvider,
|
|
381
382
|
baseURL: targetConfig.baseURL ?? ctx.config.defaultBaseURL,
|
|
382
383
|
apiKey: targetConfig.apiKey ?? ctx.config.defaultApiKey,
|
|
384
|
+
cwd: targetConfig.cwd === undefined ? ctx.config.defaultCwd : targetConfig.cwd,
|
|
383
385
|
};
|
|
384
386
|
const tempAgent = buildAgent(effective, { includeDelegateTool: true });
|
|
385
387
|
const nestedTeam = buildTaskAgentTeamInfo(ctx, taskId, traceBase, delegationDepth + 1, [...delegationChain, targetAgent]);
|
|
@@ -719,6 +721,10 @@ export class OpenMultiAgent {
|
|
|
719
721
|
defaultProvider: config.defaultProvider ?? 'anthropic',
|
|
720
722
|
defaultBaseURL: config.defaultBaseURL,
|
|
721
723
|
defaultApiKey: config.defaultApiKey,
|
|
724
|
+
// `defaultCwd === undefined` means "use the default sandbox rooted at
|
|
725
|
+
// <cwd>/.agent-workspace". An explicit `null` propagates through to
|
|
726
|
+
// disable the filesystem sandbox; a string sets a custom sandbox root.
|
|
727
|
+
defaultCwd: config.defaultCwd === undefined ? defaultWorkspaceDir() : config.defaultCwd,
|
|
722
728
|
maxTokenBudget: config.maxTokenBudget,
|
|
723
729
|
onApproval: config.onApproval,
|
|
724
730
|
onPlanReady: config.onPlanReady,
|
|
@@ -769,6 +775,7 @@ export class OpenMultiAgent {
|
|
|
769
775
|
provider: config.provider ?? this.config.defaultProvider,
|
|
770
776
|
baseURL: config.baseURL ?? this.config.defaultBaseURL,
|
|
771
777
|
apiKey: config.apiKey ?? this.config.defaultApiKey,
|
|
778
|
+
cwd: config.cwd === undefined ? this.config.defaultCwd : config.cwd,
|
|
772
779
|
maxTokenBudget: effectiveBudget,
|
|
773
780
|
};
|
|
774
781
|
const agent = buildAgent(effective);
|
|
@@ -856,6 +863,7 @@ export class OpenMultiAgent {
|
|
|
856
863
|
provider: bestAgent.provider ?? this.config.defaultProvider,
|
|
857
864
|
baseURL: bestAgent.baseURL ?? this.config.defaultBaseURL,
|
|
858
865
|
apiKey: bestAgent.apiKey ?? this.config.defaultApiKey,
|
|
866
|
+
cwd: bestAgent.cwd === undefined ? this.config.defaultCwd : bestAgent.cwd,
|
|
859
867
|
maxTokenBudget: effectiveBudget,
|
|
860
868
|
};
|
|
861
869
|
const agent = buildAgent(effective);
|
|
@@ -928,6 +936,9 @@ export class OpenMultiAgent {
|
|
|
928
936
|
toolPreset: coordinatorOverrides?.toolPreset,
|
|
929
937
|
tools: coordinatorOverrides?.tools,
|
|
930
938
|
disallowedTools: coordinatorOverrides?.disallowedTools,
|
|
939
|
+
cwd: coordinatorOverrides?.cwd === undefined
|
|
940
|
+
? this.config.defaultCwd
|
|
941
|
+
: coordinatorOverrides.cwd,
|
|
931
942
|
loopDetection: coordinatorOverrides?.loopDetection,
|
|
932
943
|
timeoutMs: coordinatorOverrides?.timeoutMs,
|
|
933
944
|
};
|
|
@@ -1069,6 +1080,9 @@ export class OpenMultiAgent {
|
|
|
1069
1080
|
// ------------------------------------------------------------------
|
|
1070
1081
|
// Step 5: Coordinator synthesises final result
|
|
1071
1082
|
// ------------------------------------------------------------------
|
|
1083
|
+
if (options?.abortSignal?.aborted) {
|
|
1084
|
+
return this.buildTeamRunResult(agentResults, goal, taskRecords);
|
|
1085
|
+
}
|
|
1072
1086
|
if (maxTokenBudget !== undefined
|
|
1073
1087
|
&& cumulativeUsage.input_tokens + cumulativeUsage.output_tokens > maxTokenBudget) {
|
|
1074
1088
|
return this.buildTeamRunResult(agentResults, goal, taskRecords);
|
|
@@ -1319,6 +1333,12 @@ export class OpenMultiAgent {
|
|
|
1319
1333
|
*/
|
|
1320
1334
|
loadSpecsIntoQueue(specs, agentConfigs, queue) {
|
|
1321
1335
|
const agentNames = new Set(agentConfigs.map((a) => a.name));
|
|
1336
|
+
const normalizeTitle = (title) => title.toLowerCase().trim();
|
|
1337
|
+
const titleCounts = new Map();
|
|
1338
|
+
for (const spec of specs) {
|
|
1339
|
+
const key = normalizeTitle(spec.title);
|
|
1340
|
+
titleCounts.set(key, (titleCounts.get(key) ?? 0) + 1);
|
|
1341
|
+
}
|
|
1322
1342
|
// First pass: create tasks (without dependencies) to get stable IDs.
|
|
1323
1343
|
const titleToId = new Map();
|
|
1324
1344
|
const createdTasks = [];
|
|
@@ -1334,7 +1354,10 @@ export class OpenMultiAgent {
|
|
|
1334
1354
|
retryDelayMs: spec.retryDelayMs,
|
|
1335
1355
|
retryBackoff: spec.retryBackoff,
|
|
1336
1356
|
});
|
|
1337
|
-
|
|
1357
|
+
const titleKey = normalizeTitle(spec.title);
|
|
1358
|
+
if ((titleCounts.get(titleKey) ?? 0) === 1) {
|
|
1359
|
+
titleToId.set(titleKey, task.id);
|
|
1360
|
+
}
|
|
1338
1361
|
createdTasks.push(task);
|
|
1339
1362
|
}
|
|
1340
1363
|
// Second pass: resolve title-based dependsOn to IDs.
|
|
@@ -1346,20 +1369,29 @@ export class OpenMultiAgent {
|
|
|
1346
1369
|
continue;
|
|
1347
1370
|
}
|
|
1348
1371
|
const resolvedDeps = [];
|
|
1372
|
+
const unresolvedDeps = [];
|
|
1349
1373
|
for (const depRef of spec.dependsOn) {
|
|
1350
1374
|
// Accept both raw IDs and title strings
|
|
1351
1375
|
const byId = createdTasks.find((t) => t.id === depRef);
|
|
1352
|
-
const
|
|
1376
|
+
const depTitleKey = normalizeTitle(depRef);
|
|
1377
|
+
const byTitle = titleToId.get(depTitleKey);
|
|
1353
1378
|
const resolvedId = byId?.id ?? byTitle;
|
|
1354
1379
|
if (resolvedId) {
|
|
1355
1380
|
resolvedDeps.push(resolvedId);
|
|
1356
1381
|
}
|
|
1382
|
+
else {
|
|
1383
|
+
const count = titleCounts.get(depTitleKey) ?? 0;
|
|
1384
|
+
unresolvedDeps.push(count > 1 ? `${depRef} (ambiguous duplicate title)` : depRef);
|
|
1385
|
+
}
|
|
1357
1386
|
}
|
|
1358
1387
|
const taskWithDeps = {
|
|
1359
1388
|
...task,
|
|
1360
1389
|
dependsOn: resolvedDeps.length > 0 ? resolvedDeps : undefined,
|
|
1361
1390
|
};
|
|
1362
1391
|
queue.add(taskWithDeps);
|
|
1392
|
+
if (unresolvedDeps.length > 0) {
|
|
1393
|
+
queue.fail(task.id, `Unresolved dependency reference(s): ${unresolvedDeps.join(', ')}`);
|
|
1394
|
+
}
|
|
1363
1395
|
}
|
|
1364
1396
|
}
|
|
1365
1397
|
/** Build an {@link AgentPool} from a list of agent configurations. */
|
|
@@ -1372,6 +1404,7 @@ export class OpenMultiAgent {
|
|
|
1372
1404
|
provider: config.provider ?? this.config.defaultProvider,
|
|
1373
1405
|
baseURL: config.baseURL ?? this.config.defaultBaseURL,
|
|
1374
1406
|
apiKey: config.apiKey ?? this.config.defaultApiKey,
|
|
1407
|
+
cwd: config.cwd === undefined ? this.config.defaultCwd : config.cwd,
|
|
1375
1408
|
};
|
|
1376
1409
|
pool.add(buildAgent(effective, { includeDelegateTool: true }));
|
|
1377
1410
|
}
|