dsh-plugin-subagent-director 0.5.0-beta.2 → 0.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/CHANGELOG.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  本项目的所有显著变更都会记录在此文件中。格式遵循 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/),版本号遵循 [SemVer](https://semver.org/lang/zh-CN/)。
4
4
 
5
- ## [Unreleased]
5
+ ## [0.5.0] - 2026-09-04
6
6
 
7
7
  ### 变更
8
8
 
package/README.md CHANGED
@@ -5,11 +5,11 @@
5
5
  <p align="center">
6
6
  <img alt="npm version" src="https://img.shields.io/npm/v/dsh-plugin-subagent-director?label=npm">
7
7
  <img alt="license" src="https://img.shields.io/npm/l/dsh-plugin-subagent-director">
8
- <img alt="DeepSeek Harness" src="https://img.shields.io/badge/DeepSeek%20Harness-0.1.0--rc.6-blue">
8
+ <img alt="DeepSeek Harness" src="https://img.shields.io/badge/DeepSeek%20Harness-0.1.2--alpha.4-blue">
9
9
  <img alt="Awesome DSH Plugin" src="https://awesome-dsh-plugin.com/badge.svg">
10
10
  </p>
11
11
 
12
- [English](#english) · [特性](#特性) · [快速开始](#快速开始) · [角色模板](#角色模板) · [术语](#术语) · [开发](#开发) · [FAQ](#faq)
12
+ [English](#english) · [特性](#特性) · [官方选择器适配](#与官方子代理选择器的适配) · [快速开始](#快速开始) · [角色模板](#角色模板) · [术语](#术语) · [开发](#开发) · [FAQ](#faq)
13
13
 
14
14
  ---
15
15
 
@@ -33,6 +33,22 @@
33
33
  - **可观测性** —— 打开子代理会话时,composer 下方显示其实际运行的供应商/模型
34
34
  (从会话 `request/header` 记录读取真实路由;读不到时优雅降级);
35
35
 
36
+ ## 与官方子代理选择器的适配
37
+
38
+ > **兼容性**:v0.5.0 支持 DSH **0.1.2-alpha.4+**(`alpha4-probe` + real-cordis 探针 278/278 通过,实测 alpha.4/alpha.5 依赖集)。旧版 DSH(0.1.0-rc.6 及更早)请使用最后兼容的 npm 版本 **0.4.0**。
39
+
40
+ DSH alpha.4 起,官方内置 subagent 的模型选择收敛到 `subagent-model-selection` 设置段(`allowedModels` 授权列表)。本插件 v0.5.0 完全适配该机制:
41
+
42
+ - **只从授权列表选择** —— `route-resolver` 把 provider/model 约束在官方
43
+ `subagent-model-selection.allowedModels` 内:显式传入未授权路由为**硬错误**;
44
+ 插件默认层 / 角色绑定层的未授权路由被**丢弃并回退继承主代理**;
45
+ - **不再双重写模型路由** —— 移除 rc 时代的 `applyDefaultRoute` 补丁缝,插件与
46
+ 官方选择器不会各自覆盖同一条路由(设置面板可选的 provider/model 即官方
47
+ 「插件-插件配置-Subagent池」里的选项);
48
+ - **客户端半同步移植** —— 移除 rc 时代对 `@deepseek-ai/dsh-client-runtime/client`
49
+ 的全部引用(alpha.4/alpha.5 宿主均不携带该包),dock 读数改读 alpha.4 会话
50
+ `request/header` 记录,设置页在 alpha.4/alpha.5 宿主均可正常加载。
51
+
36
52
  ## 快速开始
37
53
 
38
54
  ### 安装
@@ -209,4 +225,6 @@ DSH 的 Web API 只向白名单内的 settings 命名空间开放读写。本插
209
225
  - **Release continuable children** — a model-facing `close_subagent(subagent_id)` tool plus a "Release subagent" button in the subagent session header, freeing resident children through the core `drainContinuableChildren` API;
210
226
  - **Observability** — the addressed subagent’s actual provider/model shown under the composer, read from the session’s `request/header` records (graceful degradation when no run is recorded yet).
211
227
 
228
+ **Official subagent selector adaptation (v0.5.0+)** — since DSH alpha.4 the built-in subagent constrains model selection to the official `subagent-model-selection` allowlist (`allowedModels`). v0.5.0 aligns with it: routes are selected only from the allowlist (unauthorized explicit routes hard-fail; unauthorized default/role routes are dropped and fall back to inheritance), the rc-era `applyDefaultRoute` patch seam is removed (no double-writing of model routes with the official selector), and the client half no longer references the rc-era `dsh-client-runtime` package. **Compatibility**: v0.5.0 targets DSH **0.1.2-alpha.4+**; for older DSH releases use npm version **0.4.0**.
229
+
212
230
  **Install** — `dsh plugin --profile <name> add dsh-plugin-subagent-director` mounts the main and bridge entries automatically from the package's bundle patch (`cordis.patch.yml`); optionally override the main entry's config in your profile's cordis.patch.yml (see the Chinese section above). License: MIT.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-plugin-subagent-director",
3
- "version": "0.5.0-beta.2",
3
+ "version": "0.5.0",
4
4
  "description": "Subagent Director: choose an LLM provider/model for each subagent (call args > role binding > plugin default > inherit parent) and plan main-agent/subagent responsibilities with role templates, plus a settings UI.",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -1,72 +0,0 @@
1
- /**
2
- * close_subagent lifecycle tool (issue #1).
3
- *
4
- * A model-facing tool that lets the calling agent close/release one resident
5
- * continuable subagent it started: a thin adapter over
6
- * ctx.subagents.drainContinuableChildren(parent, [subagent_id]), mirroring how
7
- * the core's interrupt_agent adapts ctx.subagents.interrupt() (see
8
- * @deepseek-ai/dsh-tool-subagent-control). Lifecycle authority stays with the
9
- * subagent service — the tool only forwards the exact calling agent as the
10
- * parent and performs no routing of its own.
11
- *
12
- * Semantics (documented by drainContinuableChildren): absent targets and a
13
- * manager-less composition are accepted no-ops; a resident child owned by a
14
- * different parent is rejected with a SubagentError `UNAUTHORIZED`. Unlike
15
- * interrupt_agent this is teardown: the released child no longer stays
16
- * resident and cannot be resumed with send_message afterwards, so its memory
17
- * and session context are freed before the parent session ends.
18
- *
19
- * The tool is registered unconditionally (like the core control tools) —
20
- * drainContinuableChildren is a no-op in one-shot compositions — and
21
- * registerCloseSubagent guards against duplicate registration so several
22
- * plugin instances (distinct toolName) share one close_subagent.
23
- */
24
- import type { Context } from '@deepseek-ai/cordis';
25
- import { type ToolDefinition } from '@deepseek-ai/dsh-tools';
26
- /** The canonical model-visible tool name (mirrors interrupt_agent naming). */
27
- export declare const CLOSE_SUBAGENT_TOOL_NAME = "close_subagent";
28
- /** The model-facing arguments: the durable id of the continuable child to release. */
29
- export interface CloseSubagentArgs {
30
- /** The subagent id returned when the background subagent was started. */
31
- subagent_id: string;
32
- }
33
- /**
34
- * Build the model-facing parameter schema. Exposed as a pure function so unit
35
- * tests can assert the model-visible shape without a live context. The literal
36
- * return type (via `satisfies`) lets defineTool infer the validated args shape.
37
- */
38
- export declare function createCloseSubagentParameters(): {
39
- subagent_id: {
40
- type: "string";
41
- required: true;
42
- description: string;
43
- };
44
- };
45
- /** The model-facing output schema: a closed object confirming the release. */
46
- export declare function createCloseSubagentOutputSchema(): {
47
- type: "object";
48
- additionalProperties: false;
49
- properties: {
50
- closed: {
51
- type: "boolean";
52
- required: true;
53
- };
54
- };
55
- };
56
- /** Pure renderer for a close_subagent result (extracted for unit testing). */
57
- export declare function renderCloseResult(args: CloseSubagentArgs, _value: unknown): string;
58
- /**
59
- * Create the close_subagent ToolDefinition for one mounted context. execute
60
- * releases the named resident continuable direct child of the exact calling
61
- * agent via ctx.subagents.drainContinuableChildren; the service authorizes the
62
- * exact live caller, so the tool adds no authority of its own.
63
- */
64
- export declare function createCloseSubagentTool(ctx: Context): ToolDefinition;
65
- /**
66
- * Register close_subagent once per context. Returns the registry disposer, or
67
- * undefined when a tool with the same name is already registered (a second
68
- * plugin instance with a distinct delegation toolName must not double-register
69
- * the shared control tool).
70
- */
71
- export declare function registerCloseSubagent(ctx: Context): (() => void) | undefined;
72
- //# sourceMappingURL=close-subagent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"close-subagent.d.ts","sourceRoot":"","sources":["../src/close-subagent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAwC,KAAK,cAAc,EAAwB,MAAM,wBAAwB,CAAC;AAEzH,8EAA8E;AAC9E,eAAO,MAAM,wBAAwB,mBAAmB,CAAC;AAKzD,sFAAsF;AACtF,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B;;;;;;EAQ5C;AAED,8EAA8E;AAC9E,wBAAgB,+BAA+B;;;;;;;;;EAQ9C;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAElF;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,CAqBpE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAG5E"}
@@ -1,74 +0,0 @@
1
- import { SessionId } from '@deepseek-ai/dsh-session';
2
- import { defineTool } from '@deepseek-ai/dsh-tools';
3
- /** The canonical model-visible tool name (mirrors interrupt_agent naming). */
4
- export const CLOSE_SUBAGENT_TOOL_NAME = 'close_subagent';
5
- /** The canonical error prefix used across structured failures (FR-8.1 convention). */
6
- const ERROR_PREFIX = 'subagent-director:';
7
- /**
8
- * Build the model-facing parameter schema. Exposed as a pure function so unit
9
- * tests can assert the model-visible shape without a live context. The literal
10
- * return type (via `satisfies`) lets defineTool infer the validated args shape.
11
- */
12
- export function createCloseSubagentParameters() {
13
- return {
14
- subagent_id: {
15
- type: 'string',
16
- required: true,
17
- description: 'The subagent id returned when the background subagent was started (see list_agents for resident ids).',
18
- },
19
- };
20
- }
21
- /** The model-facing output schema: a closed object confirming the release. */
22
- export function createCloseSubagentOutputSchema() {
23
- return {
24
- type: 'object',
25
- additionalProperties: false,
26
- properties: {
27
- closed: { type: 'boolean', required: true },
28
- },
29
- };
30
- }
31
- /** Pure renderer for a close_subagent result (extracted for unit testing). */
32
- export function renderCloseResult(args, _value) {
33
- return `closed subagent ${args.subagent_id}`;
34
- }
35
- /**
36
- * Create the close_subagent ToolDefinition for one mounted context. execute
37
- * releases the named resident continuable direct child of the exact calling
38
- * agent via ctx.subagents.drainContinuableChildren; the service authorizes the
39
- * exact live caller, so the tool adds no authority of its own.
40
- */
41
- export function createCloseSubagentTool(ctx) {
42
- return defineTool({
43
- name: CLOSE_SUBAGENT_TOOL_NAME,
44
- description: 'Close/release a resident continuable subagent by its subagent id, freeing its memory and session context. ' +
45
- 'The target must be a direct continuable child of the exact calling agent: absent or already-released ids are accepted no-ops, ' +
46
- 'and a resident child owned by another parent is rejected. ' +
47
- 'This is teardown, not interrupt — the released child no longer stays resident and cannot be resumed with `send_message` afterwards. ' +
48
- 'Use `list_agents` to see which subagents are still resident.',
49
- parameters: createCloseSubagentParameters(),
50
- output: {
51
- schema: createCloseSubagentOutputSchema(),
52
- render: (args, value) => [{ type: 'text', text: renderCloseResult(args, value) }],
53
- },
54
- async execute(args, exec) {
55
- const parent = exec.agent;
56
- if (!parent)
57
- throw new Error(`${ERROR_PREFIX} close_subagent requires a calling agent (exec.agent was undefined)`);
58
- await ctx.subagents.drainContinuableChildren(parent, [SessionId(args.subagent_id)]);
59
- return { closed: true };
60
- },
61
- });
62
- }
63
- /**
64
- * Register close_subagent once per context. Returns the registry disposer, or
65
- * undefined when a tool with the same name is already registered (a second
66
- * plugin instance with a distinct delegation toolName must not double-register
67
- * the shared control tool).
68
- */
69
- export function registerCloseSubagent(ctx) {
70
- if (ctx.tools.get(CLOSE_SUBAGENT_TOOL_NAME) !== undefined)
71
- return undefined;
72
- return ctx.tools.register(createCloseSubagentTool(ctx));
73
- }
74
- //# sourceMappingURL=close-subagent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"close-subagent.js","sourceRoot":"","sources":["../src/close-subagent.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,UAAU,EAAuE,MAAM,wBAAwB,CAAC;AAEzH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;AAEzD,sFAAsF;AACtF,MAAM,YAAY,GAAG,oBAAoB,CAAC;AAQ1C;;;;GAIG;AACH,MAAM,UAAU,6BAA6B;IAC3C,OAAO;QACL,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,uGAAuG;SACrH;KAC4B,CAAC;AAClC,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,+BAA+B;IAC7C,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,oBAAoB,EAAE,KAAK;QAC3B,UAAU,EAAE;YACV,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;SAC5C;KACwB,CAAC;AAC9B,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,iBAAiB,CAAC,IAAuB,EAAE,MAAe;IACxE,OAAO,mBAAmB,IAAI,CAAC,WAAW,EAAE,CAAC;AAC/C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAY;IAClD,OAAO,UAAU,CAAC;QAChB,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,4GAA4G;YAC5G,gIAAgI;YAChI,4DAA4D;YAC5D,sIAAsI;YACtI,8DAA8D;QAChE,UAAU,EAAE,6BAA6B,EAAE;QAC3C,MAAM,EAAE;YACN,MAAM,EAAE,+BAA+B,EAAE;YACzC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,CAAC,IAAyB,EAAE,KAAK,CAAC,EAAE,CAAC;SACvG;QACD,KAAK,CAAC,OAAO,CAAC,IAAuB,EAAE,IAAI;YACzC,MAAM,MAAM,GAAsB,IAAI,CAAC,KAAK,CAAC;YAC7C,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,YAAY,qEAAqE,CAAC,CAAC;YACnH,MAAM,GAAG,CAAC,SAAS,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACpF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAY;IAChD,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5E,OAAO,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,CAAC"}
@@ -1,46 +0,0 @@
1
- /**
2
- * Default route seam (design: 默认模型兜底).
3
- *
4
- * Makes the plugin's configured `defaultProvider`/`defaultModel` apply to ANY
5
- * subagent start that did not carry an explicit `agentOptions` — including
6
- * starts initiated by the built-in `subagent` / `subagent_fork` tools, not just
7
- * the plugin's own `subagent_role`. This closes the gap where the model picks
8
- * the built-in tool and the configured defaults never take effect.
9
- *
10
- * Layering: explicit `agentOptions` (even partial) always wins; the seam is a
11
- * best-effort default. An un-routable default provider falls back to
12
- * inheritance and never throws, so a bad default cannot break built-in
13
- * delegation; the strict `fallbackOnInvalid` error semantics remain the
14
- * property of `subagent_role`'s explicit path (route-resolver.ts).
15
- */
16
- import type { AgentOptions } from '@deepseek-ai/dsh-agent';
17
- import type { ContinuableStart, ContinuableStartSpec, SubagentRun, SubagentStartRequest } from '@deepseek-ai/dsh-subagent';
18
- import type { SubagentDirectorSettings } from './route-resolver.js';
19
- export interface SeamResolveInput {
20
- agentOptions?: AgentOptions;
21
- settings: SubagentDirectorSettings;
22
- isRoutable?: (provider: string) => boolean;
23
- }
24
- export declare function resolveSeamAgentOptions(input: SeamResolveInput): Pick<AgentOptions, 'provider' | 'model'> | undefined;
25
- /** The subset of the subagent service the seam wraps. */
26
- export interface SubagentsSeam {
27
- start(name: string, request: SubagentStartRequest): Promise<SubagentRun>;
28
- startContinuable(spec: ContinuableStartSpec): Promise<ContinuableStart>;
29
- }
30
- /** Structural context the seam needs; keeps the wrapper unit-testable. */
31
- export interface DefaultRouteSeamContext {
32
- get(name: string): unknown;
33
- logger: {
34
- info(message: string): void;
35
- warn(message: string): void;
36
- };
37
- subagents: SubagentsSeam;
38
- }
39
- /**
40
- * Wrap `ctx.subagents.start` / `startContinuable` so a subagent start without
41
- * explicit `agentOptions` receives the configured defaults. Returns a disposer
42
- * that restores the original methods (registered via `ctx.effect` by the
43
- * caller, so it runs when the plugin fiber unloads).
44
- */
45
- export declare function applyDefaultRouteSeam(ctx: DefaultRouteSeamContext, getSettings: () => SubagentDirectorSettings): () => void;
46
- //# sourceMappingURL=default-route.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"default-route.d.ts","sourceRoot":"","sources":["../src/default-route.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACpB,WAAW,EACX,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAEpE,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,QAAQ,EAAE,wBAAwB,CAAC;IACnC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;CAC5C;AAMD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,SAAS,CAUrH;AAED,yDAAyD;AACzD,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACzE,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACzE;AAED,0EAA0E;AAC1E,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,MAAM,EAAE;QAAE,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACrE,SAAS,EAAE,aAAa,CAAC;CAC1B;AAQD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,uBAAuB,EAC5B,WAAW,EAAE,MAAM,wBAAwB,GAC1C,MAAM,IAAI,CAmCZ"}
@@ -1,56 +0,0 @@
1
- function isEmpty(value) {
2
- return value === undefined || value === '';
3
- }
4
- export function resolveSeamAgentOptions(input) {
5
- const { agentOptions, settings, isRoutable } = input;
6
- if (agentOptions !== undefined && (agentOptions.provider !== undefined || agentOptions.model !== undefined)) {
7
- return undefined;
8
- }
9
- const provider = settings.defaultProvider;
10
- const model = settings.defaultModel;
11
- if (isEmpty(provider) || isEmpty(model))
12
- return undefined;
13
- if (isRoutable !== undefined && !isRoutable(provider))
14
- return undefined;
15
- return { provider, model };
16
- }
17
- function makeIsRoutable(ctx) {
18
- const llm = ctx.get('llm');
19
- if (llm === undefined)
20
- return undefined;
21
- return (provider) => llm.listProviders().some((entry) => entry.id === provider);
22
- }
23
- /**
24
- * Wrap `ctx.subagents.start` / `startContinuable` so a subagent start without
25
- * explicit `agentOptions` receives the configured defaults. Returns a disposer
26
- * that restores the original methods (registered via `ctx.effect` by the
27
- * caller, so it runs when the plugin fiber unloads).
28
- */
29
- export function applyDefaultRouteSeam(ctx, getSettings) {
30
- const subagents = ctx.subagents;
31
- const originalStart = subagents.start;
32
- const originalStartContinuable = subagents.startContinuable;
33
- const isRoutable = makeIsRoutable(ctx);
34
- const resolve = (request) => resolveSeamAgentOptions({ agentOptions: request.agentOptions, settings: getSettings(), isRoutable });
35
- subagents.start = (name, request) => {
36
- const agentOptions = resolve(request);
37
- if (agentOptions !== undefined) {
38
- ctx.logger.info(`[subagent-director] default route seam: applying ${agentOptions.provider}/${agentOptions.model} to ${name} subagent`);
39
- return originalStart.call(subagents, name, { ...request, agentOptions });
40
- }
41
- return originalStart.call(subagents, name, request);
42
- };
43
- subagents.startContinuable = (spec) => {
44
- const agentOptions = resolve(spec.request);
45
- if (agentOptions !== undefined) {
46
- ctx.logger.info(`[subagent-director] default route seam: applying ${agentOptions.provider}/${agentOptions.model} to continuable subagent`);
47
- return originalStartContinuable.call(subagents, { ...spec, request: { ...spec.request, agentOptions } });
48
- }
49
- return originalStartContinuable.call(subagents, spec);
50
- };
51
- return () => {
52
- subagents.start = originalStart;
53
- subagents.startContinuable = originalStartContinuable;
54
- };
55
- }
56
- //# sourceMappingURL=default-route.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"default-route.js","sourceRoot":"","sources":["../src/default-route.ts"],"names":[],"mappings":"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"}