@xrkseek/harness 0.5.10 → 0.5.11
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/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts +4 -3
- package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/index.js +22 -60
- package/node_modules/@xrkseek/core-agent-loop/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/settle-batch.d.ts +11 -3
- package/node_modules/@xrkseek/core-agent-loop/dist/settle-batch.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/settle-batch.js +23 -8
- package/node_modules/@xrkseek/core-agent-loop/dist/settle-batch.js.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/sqlite-store.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/sqlite-store.js +27 -1
- package/node_modules/@xrkseek/core-session/dist/sqlite-store.js.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/index.d.ts +1 -1
- package/node_modules/@xrkseek/core-tools/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/index.js +1 -1
- package/node_modules/@xrkseek/core-tools/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.d.ts +9 -0
- package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.js +45 -18
- package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.js.map +1 -1
- package/node_modules/@xrkseek/exec-fs/dist/index.d.ts +9 -1
- package/node_modules/@xrkseek/exec-fs/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-fs/dist/index.js +18 -13
- package/node_modules/@xrkseek/exec-fs/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/exec-fs/dist/paths.d.ts +11 -0
- package/node_modules/@xrkseek/exec-fs/dist/paths.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-fs/dist/paths.js +40 -0
- package/node_modules/@xrkseek/exec-fs/dist/paths.js.map +1 -1
- package/node_modules/@xrkseek/exec-memory/dist/index.d.ts +2 -2
- package/node_modules/@xrkseek/exec-memory/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-memory/dist/index.js +2 -2
- package/node_modules/@xrkseek/exec-memory/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/exec-memory/dist/store.d.ts +18 -0
- package/node_modules/@xrkseek/exec-memory/dist/store.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-memory/dist/store.js +108 -7
- package/node_modules/@xrkseek/exec-memory/dist/store.js.map +1 -1
- package/node_modules/@xrkseek/exec-memory/dist/tools.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-memory/dist/tools.js +17 -1
- package/node_modules/@xrkseek/exec-memory/dist/tools.js.map +1 -1
- package/node_modules/@xrkseek/exec-memory/dist/write-path.d.ts +2 -0
- package/node_modules/@xrkseek/exec-memory/dist/write-path.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-memory/dist/write-path.js +28 -3
- package/node_modules/@xrkseek/exec-memory/dist/write-path.js.map +1 -1
- package/node_modules/@xrkseek/exec-sandbox/dist/resolve.d.ts +7 -4
- package/node_modules/@xrkseek/exec-sandbox/dist/resolve.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-sandbox/dist/resolve.js +4 -0
- package/node_modules/@xrkseek/exec-sandbox/dist/resolve.js.map +1 -1
- package/node_modules/@xrkseek/exec-sandbox/dist/service.d.ts +7 -0
- package/node_modules/@xrkseek/exec-sandbox/dist/service.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-sandbox/dist/service.js +18 -8
- package/node_modules/@xrkseek/exec-sandbox/dist/service.js.map +1 -1
- package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts +16 -0
- package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts.map +1 -1
- package/node_modules/@xrkseek/preset-harness/dist/preset.js +13 -2
- package/node_modules/@xrkseek/preset-harness/dist/preset.js.map +1 -1
- package/node_modules/@xrkseek/preset-harness/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@xrkseek/preset-minimal/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@xrkseek/preset-server/dist/preset.d.ts.map +1 -1
- package/node_modules/@xrkseek/preset-server/dist/preset.js +4 -1
- package/node_modules/@xrkseek/preset-server/dist/preset.js.map +1 -1
- package/node_modules/@xrkseek/preset-server/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@xrkseek/server-face/dist/adapt/index.d.ts +1 -1
- package/node_modules/@xrkseek/server-face/dist/adapt/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/adapt/index.js +1 -1
- package/node_modules/@xrkseek/server-face/dist/adapt/index.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/adapt/model-route.d.ts +5 -0
- package/node_modules/@xrkseek/server-face/dist/adapt/model-route.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/adapt/model-route.js +16 -0
- package/node_modules/@xrkseek/server-face/dist/adapt/model-route.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.d.ts +32 -0
- package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.js +87 -0
- package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/agent-roster-store.d.ts +102 -0
- package/node_modules/@xrkseek/server-face/dist/agent-roster-store.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/agent-roster-store.js +495 -0
- package/node_modules/@xrkseek/server-face/dist/agent-roster-store.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/agent-roster-tools.d.ts +12 -0
- package/node_modules/@xrkseek/server-face/dist/agent-roster-tools.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/agent-roster-tools.js +141 -0
- package/node_modules/@xrkseek/server-face/dist/agent-roster-tools.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/agent-team-roles.d.ts +6 -0
- package/node_modules/@xrkseek/server-face/dist/agent-team-roles.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/agent-team-roles.js +61 -0
- package/node_modules/@xrkseek/server-face/dist/agent-team-roles.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/capture-member-playbook.d.ts +6 -0
- package/node_modules/@xrkseek/server-face/dist/capture-member-playbook.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/capture-member-playbook.js +43 -0
- package/node_modules/@xrkseek/server-face/dist/capture-member-playbook.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/context.d.ts +4 -0
- package/node_modules/@xrkseek/server-face/dist/context.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/dispatch.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/dispatch.js +19 -0
- package/node_modules/@xrkseek/server-face/dist/dispatch.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/fork-cut.d.ts +3 -2
- package/node_modules/@xrkseek/server-face/dist/fork-cut.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/fork-cut.js +58 -20
- package/node_modules/@xrkseek/server-face/dist/fork-cut.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/handlers/session.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/handlers/session.js +60 -20
- package/node_modules/@xrkseek/server-face/dist/handlers/session.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/handlers/subagent.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/handlers/subagent.js +5 -0
- package/node_modules/@xrkseek/server-face/dist/handlers/subagent.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/handlers/team.d.ts +11 -0
- package/node_modules/@xrkseek/server-face/dist/handlers/team.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/handlers/team.js +268 -0
- package/node_modules/@xrkseek/server-face/dist/handlers/team.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/index.d.ts +4 -0
- package/node_modules/@xrkseek/server-face/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/index.js +4 -0
- package/node_modules/@xrkseek/server-face/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/model-catalog.d.ts +11 -1
- package/node_modules/@xrkseek/server-face/dist/model-catalog.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/model-catalog.js +27 -1
- package/node_modules/@xrkseek/server-face/dist/model-catalog.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/presence-tools.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/presence-tools.js +15 -6
- package/node_modules/@xrkseek/server-face/dist/presence-tools.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/presets-catalog.d.ts +16 -0
- package/node_modules/@xrkseek/server-face/dist/presets-catalog.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/presets-catalog.js +5 -0
- package/node_modules/@xrkseek/server-face/dist/presets-catalog.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/projections/units/turn-outline.d.ts +8 -2
- package/node_modules/@xrkseek/server-face/dist/projections/units/turn-outline.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/projections/units/turn-outline.js +14 -12
- package/node_modules/@xrkseek/server-face/dist/projections/units/turn-outline.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/runtime.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/runtime.js +19 -0
- package/node_modules/@xrkseek/server-face/dist/runtime.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/session-model-store.d.ts +2 -0
- package/node_modules/@xrkseek/server-face/dist/session-model-store.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/session-model-store.js +14 -0
- package/node_modules/@xrkseek/server-face/dist/session-model-store.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/session-status.d.ts +13 -0
- package/node_modules/@xrkseek/server-face/dist/session-status.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/session-status.js +19 -2
- package/node_modules/@xrkseek/server-face/dist/session-status.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/session-thread-publish.d.ts +17 -0
- package/node_modules/@xrkseek/server-face/dist/session-thread-publish.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/session-thread-publish.js +34 -0
- package/node_modules/@xrkseek/server-face/dist/session-thread-publish.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/session-thread-store.d.ts +38 -0
- package/node_modules/@xrkseek/server-face/dist/session-thread-store.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/session-thread-store.js +207 -0
- package/node_modules/@xrkseek/server-face/dist/session-thread-store.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/session-thread-tools.d.ts +12 -0
- package/node_modules/@xrkseek/server-face/dist/session-thread-tools.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/session-thread-tools.js +223 -0
- package/node_modules/@xrkseek/server-face/dist/session-thread-tools.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/settings-document.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/settings-document.js +10 -11
- package/node_modules/@xrkseek/server-face/dist/settings-document.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/settings-schemas.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/settings-schemas.js +5 -10
- package/node_modules/@xrkseek/server-face/dist/settings-schemas.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/subagent-registry.d.ts +19 -0
- package/node_modules/@xrkseek/server-face/dist/subagent-registry.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/subagent-registry.js +47 -13
- package/node_modules/@xrkseek/server-face/dist/subagent-registry.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts +21 -0
- package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/subagent-tools.js +148 -37
- package/node_modules/@xrkseek/server-face/dist/subagent-tools.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/types.d.ts +9 -0
- package/node_modules/@xrkseek/server-face/dist/types.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/wire/paths.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/wire/paths.js +2 -0
- package/node_modules/@xrkseek/server-face/dist/wire/paths.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/workspace-face.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/workspace-face.js +7 -0
- package/node_modules/@xrkseek/server-face/dist/workspace-face.js.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/agent-cache.d.ts +5 -1
- package/node_modules/@xrkseek/server-host/dist/agent-cache.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/agent-cache.js +29 -3
- package/node_modules/@xrkseek/server-host/dist/agent-cache.js.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/index.d.ts +21 -0
- package/node_modules/@xrkseek/server-host/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/index.js +105 -8
- package/node_modules/@xrkseek/server-host/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/static.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/static.js +45 -5
- package/node_modules/@xrkseek/server-http/dist/static.js.map +1 -1
- package/node_modules/@xrkseek/workspace/dist/ecosystem-instructions.d.ts +8 -0
- package/node_modules/@xrkseek/workspace/dist/ecosystem-instructions.d.ts.map +1 -1
- package/node_modules/@xrkseek/workspace/dist/ecosystem-instructions.js +6 -2
- package/node_modules/@xrkseek/workspace/dist/ecosystem-instructions.js.map +1 -1
- package/node_modules/@xrkseek/workspace/dist/index.d.ts +16 -0
- package/node_modules/@xrkseek/workspace/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/workspace/dist/index.js +17 -8
- package/node_modules/@xrkseek/workspace/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-registry.js","sourceRoot":"","sources":["../src/subagent-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"subagent-registry.js","sourceRoot":"","sources":["../src/subagent-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ToolRegistry } from "@xrkseek/core-tools";
|
|
2
2
|
import { SUBAGENT_ROUTING_PROMPT_TEXT } from "@xrkseek/core-tools";
|
|
3
|
+
import type { SessionEvent } from "@xrkseek/protocol";
|
|
3
4
|
import type { FaceRuntime } from "./context.js";
|
|
4
5
|
import { boundChildAnswer, SUBAGENT_ANSWER_INLINE_BYTES } from "./adapt/subagent-answer-bound.js";
|
|
5
6
|
export { boundChildAnswer, SUBAGENT_ANSWER_INLINE_BYTES };
|
|
@@ -21,6 +22,19 @@ export interface SubagentQuotaCaps {
|
|
|
21
22
|
export declare function resolveSubagentQuota(runtime: FaceRuntime, sessionId: string): SubagentQuotaCaps;
|
|
22
23
|
export { parseExternalAgentKind, parseExternalAgentProduct, runExternalAgentTurn, resolveExternalAgentLaunch, openExternalAgentLiveSession, supportsExternalContinuable, ExternalAgentError, ExternalAgentSessionRegistry, externalAgentHandlesPath, isChildSessionActive, startExternalContinuable, promptExternalContinuable, interruptExternalContinuable, type ExternalAgentKind, type ContinuableExternalKind, type ExternalAgentLiveSession, type ExternalAgentHandleRecord, type ExternalAgentProductConfig, type ExternalSpawn, type RunExternalAgentOptions, } from "./external-agent-runtime.js";
|
|
23
24
|
export declare function subagentDepth(runtime: FaceRuntime, sessionId: string): number;
|
|
25
|
+
/**
|
|
26
|
+
* How a parent gets work back out of a child that outlived the foreground
|
|
27
|
+
* wait. One place on purpose: background spawn, timeout salvage and failure
|
|
28
|
+
* replies must not drift apart, or a parent learns the recovery verbs only
|
|
29
|
+
* on the happy path.
|
|
30
|
+
*/
|
|
31
|
+
export declare function childResumeHint(childId: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* The slice of a child's log the parent owns: seeded parent text never counts.
|
|
34
|
+
* One read, two projections (`lastAssistantBodyText` for the salvaged answer,
|
|
35
|
+
* `lastModelRetryNotice` for what its model request was doing).
|
|
36
|
+
*/
|
|
37
|
+
export declare function childOwnedEvents(runtime: Pick<FaceRuntime, "store" | "subagents">, childId: string): readonly SessionEvent[];
|
|
24
38
|
export interface BindSubagentToolsOptions {
|
|
25
39
|
readonly runtime: FaceRuntime;
|
|
26
40
|
readonly parentSessionId: string;
|
|
@@ -34,6 +48,13 @@ export interface BindSubagentToolsOptions {
|
|
|
34
48
|
readonly externalSpawn?: ExternalSpawn;
|
|
35
49
|
/** Override env for external launch resolution (tests). */
|
|
36
50
|
readonly externalEnv?: NodeJS.ProcessEnv;
|
|
51
|
+
/**
|
|
52
|
+
* Foreground wait budget in ms (default {@link FOREGROUND_WAIT_MS}, 10 min).
|
|
53
|
+
* A child that outruns it is not discarded — its answer is salvaged and the
|
|
54
|
+
* parent gets the resume verbs — but the budget itself has to be raisable
|
|
55
|
+
* for legitimately long research children.
|
|
56
|
+
*/
|
|
57
|
+
readonly foregroundWaitMs?: number;
|
|
37
58
|
}
|
|
38
59
|
/** Register model-facing subagent tools on a live Agent tool registry. */
|
|
39
60
|
export declare function bindSubagentTools(tools: ToolRegistry, options: BindSubagentToolsOptions): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-tools.d.ts","sourceRoot":"","sources":["../src/subagent-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"subagent-tools.d.ts","sourceRoot":"","sources":["../src/subagent-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAOhD,OAAO,EACL,gBAAgB,EAChB,4BAA4B,EAC7B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,CAAC;AAE1D,OAAO,EACL,2BAA2B,EAC3B,iBAAiB,EAElB,MAAM,sBAAsB,CAAC;AAK9B,OAAO,EAQL,KAAK,aAAa,EACnB,MAAM,6BAA6B,CAAC;AAuCrC,OAAO,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,CAAC;AAExF,wEAAwE;AACxE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,GAChB,iBAAiB,CAmDnB;AAqBD,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,oBAAoB,EACpB,0BAA0B,EAC1B,4BAA4B,EAC5B,2BAA2B,EAC3B,kBAAkB,EAClB,4BAA4B,EAC5B,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,4BAA4B,EAC5B,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,aAAa,EAClB,KAAK,uBAAuB,GAC7B,MAAM,6BAA6B,CAAC;AAErC,wBAAgB,aAAa,CAC3B,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,GAChB,MAAM,CAWR;AAuGD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAOvD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,WAAW,CAAC,EACjD,OAAO,EAAE,MAAM,GACd,SAAS,YAAY,EAAE,CAGzB;AAoCD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,oDAAoD;IACpD,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC,2DAA2D;IAC3D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACzC;;;;;OAKG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC;AA2uDD,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,wBAAwB,GAChC,IAAI,CAkBN"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { SUBAGENT_ROUTING_PROMPT_TEXT } from "@xrkseek/core-tools";
|
|
2
2
|
import { listPendingAdmits, readSessionEvents, } from "@xrkseek/core-session";
|
|
3
3
|
import { dispatchFaceMethod } from "./dispatch.js";
|
|
4
|
-
import { lastAssistantBodyText } from "./adapt/subagent-notice.js";
|
|
4
|
+
import { formatChildOutcome, lastAssistantBodyText, lastModelRetryNotice, } from "./adapt/subagent-notice.js";
|
|
5
5
|
import { boundChildAnswer, SUBAGENT_ANSWER_INLINE_BYTES, } from "./adapt/subagent-answer-bound.js";
|
|
6
6
|
export { boundChildAnswer, SUBAGENT_ANSWER_INLINE_BYTES };
|
|
7
7
|
import { subagentOwnedEvents } from "./subagent-registry.js";
|
|
8
8
|
import { DEFAULT_MAX_ACTIVE_CHILDREN, DEFAULT_MAX_DEPTH, resolveAgentPresetProfile, } from "./presets-catalog.js";
|
|
9
9
|
import { effectiveSessionAgentPreset } from "./session-agent-preset.js";
|
|
10
10
|
import { resolveSessionCwd } from "./session-cwd.js";
|
|
11
|
+
import { canvasWorkspaceIdForSession } from "./canvas-tools.js";
|
|
12
|
+
import { formatRosterCatalog } from "./agent-roster-store.js";
|
|
11
13
|
import { ExternalAgentError, parseExternalAgentKind, parseExternalAgentProduct, runExternalAgentTurn, supportsExternalContinuable, startExternalContinuable, isChildSessionActive, } from "./external-agent-runtime.js";
|
|
12
14
|
import { createSubagentWorktree, finalizeSubagentWorktree, formatWorktreeResult, worktreeContextNote, worktreeSkippedForRemote, } from "./subagent-worktree.js";
|
|
13
15
|
import { resolveSessionModelSelection, resolveSubagentModelSetting, } from "./model-catalog.js";
|
|
@@ -116,16 +118,16 @@ async function waitDrainIdle(runtime, sessionId, signal, timeoutMs = FOREGROUND_
|
|
|
116
118
|
await raceDeadline(abortable(run(sessionId), signal), timeoutMs, sessionId);
|
|
117
119
|
return;
|
|
118
120
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
121
|
+
// Same deadline semantics as the hub.run branch above — one throw site, one
|
|
122
|
+
// message, so a caller (or a log grep) cannot tell the two paths apart.
|
|
123
|
+
await raceDeadline((async () => {
|
|
124
|
+
while (runtime.drain.isActive(sessionId)) {
|
|
125
|
+
if (signal?.aborted) {
|
|
126
|
+
throw new DOMException("aborted", "AbortError");
|
|
127
|
+
}
|
|
128
|
+
await new Promise((r) => setTimeout(r, POLL_MS));
|
|
126
129
|
}
|
|
127
|
-
|
|
128
|
-
}
|
|
130
|
+
})(), timeoutMs, sessionId);
|
|
129
131
|
}
|
|
130
132
|
/**
|
|
131
133
|
* Reject once `timeoutMs` elapses, naming the session so the failure reads
|
|
@@ -173,6 +175,27 @@ function abortError(reason) {
|
|
|
173
175
|
err.name = "AbortError";
|
|
174
176
|
return err;
|
|
175
177
|
}
|
|
178
|
+
/**
|
|
179
|
+
* How a parent gets work back out of a child that outlived the foreground
|
|
180
|
+
* wait. One place on purpose: background spawn, timeout salvage and failure
|
|
181
|
+
* replies must not drift apart, or a parent learns the recovery verbs only
|
|
182
|
+
* on the happy path.
|
|
183
|
+
*/
|
|
184
|
+
export function childResumeHint(childId) {
|
|
185
|
+
return (`Child session \`${childId}\` is not gone: \`wait_agent\` keeps waiting for it, ` +
|
|
186
|
+
`\`session_read\` replays its history, \`session_trace\` shows its lineage, ` +
|
|
187
|
+
`\`list_agents\` its state, and \`followup_task\` wakes a new turn on it. Read it ` +
|
|
188
|
+
`before spawning a replacement so the new task does not repeat work it already did.`);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* The slice of a child's log the parent owns: seeded parent text never counts.
|
|
192
|
+
* One read, two projections (`lastAssistantBodyText` for the salvaged answer,
|
|
193
|
+
* `lastModelRetryNotice` for what its model request was doing).
|
|
194
|
+
*/
|
|
195
|
+
export function childOwnedEvents(runtime, childId) {
|
|
196
|
+
const link = runtime.subagents.getByChild(childId);
|
|
197
|
+
return subagentOwnedEvents(link, readSessionEvents(runtime.store, childId));
|
|
198
|
+
}
|
|
176
199
|
function formatSubagentAbortReason(reason) {
|
|
177
200
|
if (reason === undefined || reason === null)
|
|
178
201
|
return "aborted";
|
|
@@ -326,27 +349,40 @@ function createSubagentTool(options) {
|
|
|
326
349
|
active: quota.active,
|
|
327
350
|
};
|
|
328
351
|
};
|
|
352
|
+
const foregroundWaitMs = options.foregroundWaitMs ?? FOREGROUND_WAIT_MS;
|
|
353
|
+
const description = "Delegate a self-contained task to a teammate subagent (separate session, same workspace as this session unless worktree:true). " +
|
|
354
|
+
"Use for focused independent work — research, a scoped implementation, analysis, or read-only review — " +
|
|
355
|
+
"so it does not consume this conversation's context. " +
|
|
356
|
+
"By default the child cannot see this chat — give a complete standalone prompt (paths, goals, constraints, persona). " +
|
|
357
|
+
"Do not tell the child to read AGENTS.md to discover who it is; Face prepends parent/child session ids, mode, role, and cwd. " +
|
|
358
|
+
"Set inherit_context true to seed the child with this session's completed turns only " +
|
|
359
|
+
"(the current in-flight turn is excluded). " +
|
|
360
|
+
"By default waits for the result (one-shot, no later human messages on that child). " +
|
|
361
|
+
"That foreground wait is bounded (10 min by default): on expiry the child is NOT discarded — " +
|
|
362
|
+
"whatever answer it already wrote is salvaged into this result and the child id stays readable " +
|
|
363
|
+
"(session_read / followup_task), so prefer run_in_background for genuinely long work instead of retrying blind. " +
|
|
364
|
+
"Set run_in_background true for a continuable child (chat companion / long task) and continue via followup_task / send_message. " +
|
|
365
|
+
"Prefer Agent Team member_id (catalog on this tool and team_list) over restating playbook or tools; " +
|
|
366
|
+
"optional role (worker|researcher|reviewer|lead) is only the fallback when no member fits; " +
|
|
367
|
+
"optional output_schema appends an OUTPUT CONTRACT and validates the final JSON; " +
|
|
368
|
+
"optional task_id / task_name register the work on the Agent Teams task board. " +
|
|
369
|
+
"Optional provider / model / reasoning_effort pin the child's LLM (model alone keeps the parent provider). " +
|
|
370
|
+
"Optional runtime: omit or in-process (default Face child); acp / app-server / claude-code spawn an external subprocess. " +
|
|
371
|
+
"acp / app-server support run_in_background + followup_task / send_message / wait_agent / interrupt_agent on the same list surface; claude-code remains one-shot print. " +
|
|
372
|
+
"The child's answer is returned inline in this tool result when short. " +
|
|
373
|
+
"Only when the UTF-8 body exceeds ~12KB does Face spill it under ~/.xrk/spill/tool-outputs/ " +
|
|
374
|
+
"and replace the body with a path + head/tail preview — then read_file that path. " +
|
|
375
|
+
"An empty or missing tool-outputs directory means nothing spilled; the full answer is already in this result (or the session event log), not on disk.";
|
|
329
376
|
return {
|
|
330
377
|
name: "subagent",
|
|
331
|
-
description
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
"Set run_in_background true for a continuable child (chat companion / long task) and continue via followup_task / send_message. " +
|
|
340
|
-
"Optional role (worker|researcher|reviewer|lead) prefixes a role reminder; " +
|
|
341
|
-
"optional output_schema appends an OUTPUT CONTRACT and validates the final JSON; " +
|
|
342
|
-
"optional task_id / task_name register the work on the Agent Teams task board. " +
|
|
343
|
-
"Optional provider / model / reasoning_effort pin the child's LLM (model alone keeps the parent provider). " +
|
|
344
|
-
"Optional runtime: omit or in-process (default Face child); acp / app-server / claude-code spawn an external subprocess. " +
|
|
345
|
-
"acp / app-server support run_in_background + followup_task / send_message / wait_agent / interrupt_agent on the same list surface; claude-code remains one-shot print. " +
|
|
346
|
-
"The child's answer is returned inline in this tool result when short. " +
|
|
347
|
-
"Only when the UTF-8 body exceeds ~12KB does Face spill it under ~/.xrk/spill/tool-outputs/ " +
|
|
348
|
-
"and replace the body with a path + head/tail preview — then read_file that path. " +
|
|
349
|
-
"An empty or missing tool-outputs directory means nothing spilled; the full answer is already in this result (or the session event log), not on disk.",
|
|
378
|
+
description,
|
|
379
|
+
dynamicSchema: () => {
|
|
380
|
+
const ws = canvasWorkspaceIdForSession(options.runtime, options.parentSessionId);
|
|
381
|
+
const catalog = formatRosterCatalog(options.runtime.agentRoster.listVisible(ws));
|
|
382
|
+
return {
|
|
383
|
+
description: `${description}\n\nPrefer member_id from this Agent Team catalog:\n${catalog}`,
|
|
384
|
+
};
|
|
385
|
+
},
|
|
350
386
|
parameters: {
|
|
351
387
|
type: "object",
|
|
352
388
|
properties: {
|
|
@@ -365,6 +401,10 @@ function createSubagentTool(options) {
|
|
|
365
401
|
type: "boolean",
|
|
366
402
|
description: "If true, seed the child with this session's completed-turn prefix (open turn excluded). Default false. Ignored for external runtimes.",
|
|
367
403
|
},
|
|
404
|
+
member_id: {
|
|
405
|
+
type: "string",
|
|
406
|
+
description: "Agent Team member id. Face applies that member's tools, inject, and playbook — the same three surfaces the parent already edits. Prefer this over restating those in prompt.",
|
|
407
|
+
},
|
|
368
408
|
run_in_background: {
|
|
369
409
|
type: "boolean",
|
|
370
410
|
description: "If true, return the child session id immediately (continuable). Default false (wait for the child's final answer). Supported for in-process and external acp / app-server (not claude-code).",
|
|
@@ -432,10 +472,11 @@ function createSubagentTool(options) {
|
|
|
432
472
|
isError: true,
|
|
433
473
|
};
|
|
434
474
|
}
|
|
435
|
-
const
|
|
436
|
-
if (!
|
|
475
|
+
const promptBare = String(a.prompt ?? "").trim();
|
|
476
|
+
if (!promptBare) {
|
|
437
477
|
return { content: "subagent: empty prompt", isError: true };
|
|
438
478
|
}
|
|
479
|
+
let prompt = promptBare;
|
|
439
480
|
const roleRaw = a.role ?? a.agent_type;
|
|
440
481
|
let spawnRole;
|
|
441
482
|
if (roleRaw !== undefined && String(roleRaw).trim()) {
|
|
@@ -447,6 +488,23 @@ function createSubagentTool(options) {
|
|
|
447
488
|
};
|
|
448
489
|
}
|
|
449
490
|
}
|
|
491
|
+
const memberId = String(a.member_id ?? "").trim();
|
|
492
|
+
let rosterMember;
|
|
493
|
+
if (memberId) {
|
|
494
|
+
const workspaceId = canvasWorkspaceIdForSession(options.runtime, options.parentSessionId);
|
|
495
|
+
rosterMember = options.runtime.agentRoster.get(workspaceId, memberId);
|
|
496
|
+
if (!rosterMember) {
|
|
497
|
+
return {
|
|
498
|
+
content: `subagent: unknown member_id "${memberId}" (team_list first)`,
|
|
499
|
+
isError: true,
|
|
500
|
+
};
|
|
501
|
+
}
|
|
502
|
+
prompt = `${rosterMember.playbook.trim()}\n\nTASK:\n${promptBare}`;
|
|
503
|
+
if (spawnRole === undefined && rosterMember.role !== "default") {
|
|
504
|
+
spawnRole = rosterMember.role;
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
const memberSpawn = memberId ? { memberId } : {};
|
|
450
508
|
const schemaCoerce = coerceOutputSchema(a.output_schema);
|
|
451
509
|
if (schemaCoerce.error) {
|
|
452
510
|
return {
|
|
@@ -509,6 +567,10 @@ function createSubagentTool(options) {
|
|
|
509
567
|
parentSessionId: options.parentSessionId,
|
|
510
568
|
label,
|
|
511
569
|
mode: "continuable",
|
|
570
|
+
...memberSpawn,
|
|
571
|
+
...(spawnRole && spawnRole !== "default"
|
|
572
|
+
? { role: spawnRole }
|
|
573
|
+
: {}),
|
|
512
574
|
});
|
|
513
575
|
if (!created.result.ok) {
|
|
514
576
|
return {
|
|
@@ -752,6 +814,9 @@ function createSubagentTool(options) {
|
|
|
752
814
|
sessionId: options.parentSessionId,
|
|
753
815
|
linkMode,
|
|
754
816
|
label,
|
|
817
|
+
...(spawnRole && spawnRole !== "default"
|
|
818
|
+
? { role: spawnRole }
|
|
819
|
+
: {}),
|
|
755
820
|
});
|
|
756
821
|
}
|
|
757
822
|
catch {
|
|
@@ -768,6 +833,10 @@ function createSubagentTool(options) {
|
|
|
768
833
|
parentSessionId: options.parentSessionId,
|
|
769
834
|
label,
|
|
770
835
|
mode: linkMode,
|
|
836
|
+
...memberSpawn,
|
|
837
|
+
...(spawnRole && spawnRole !== "default"
|
|
838
|
+
? { role: spawnRole }
|
|
839
|
+
: {}),
|
|
771
840
|
});
|
|
772
841
|
if (!created.result.ok) {
|
|
773
842
|
dropIsolated();
|
|
@@ -799,6 +868,10 @@ function createSubagentTool(options) {
|
|
|
799
868
|
parentSessionId: options.parentSessionId,
|
|
800
869
|
label,
|
|
801
870
|
mode: linkMode,
|
|
871
|
+
...memberSpawn,
|
|
872
|
+
...(spawnRole && spawnRole !== "default"
|
|
873
|
+
? { role: spawnRole }
|
|
874
|
+
: {}),
|
|
802
875
|
});
|
|
803
876
|
if (!created.result.ok) {
|
|
804
877
|
dropIsolated();
|
|
@@ -838,6 +911,9 @@ function createSubagentTool(options) {
|
|
|
838
911
|
inheritContext: inherit,
|
|
839
912
|
cwd: isolated?.path ?? parentCwd,
|
|
840
913
|
isolatedWorktree: isolated !== null,
|
|
914
|
+
...(rosterMember
|
|
915
|
+
? { memberId: rosterMember.id, inject: rosterMember.inject }
|
|
916
|
+
: {}),
|
|
841
917
|
// The human's own asks: a child that only sees the parent's paraphrase
|
|
842
918
|
// drifts from what was actually authorized (Codex
|
|
843
919
|
// `control/user_authorization.rs`). A forked child already carries
|
|
@@ -897,7 +973,8 @@ function createSubagentTool(options) {
|
|
|
897
973
|
outputSchema
|
|
898
974
|
? "OUTPUT CONTRACT attached; result will be schema-checked on idle."
|
|
899
975
|
: undefined,
|
|
900
|
-
|
|
976
|
+
childResumeHint(childId),
|
|
977
|
+
"Use followup_task to wake a new task, send_message (delivery queue|steer) to continue, wait_agent for results, interrupt_agent (takeover true to pause for human) to stop, analytics for quota.",
|
|
901
978
|
"Keep working; do not busy-poll.",
|
|
902
979
|
worktreeLine(true) || undefined,
|
|
903
980
|
]
|
|
@@ -906,18 +983,45 @@ function createSubagentTool(options) {
|
|
|
906
983
|
};
|
|
907
984
|
}
|
|
908
985
|
try {
|
|
909
|
-
await waitDrainIdle(options.runtime, childId, signal);
|
|
986
|
+
await waitDrainIdle(options.runtime, childId, signal, foregroundWaitMs);
|
|
910
987
|
}
|
|
911
988
|
catch (err) {
|
|
912
989
|
const message = err instanceof Error ? err.message : String(err);
|
|
913
|
-
|
|
990
|
+
const timedOut = /timed out waiting/i.test(message);
|
|
991
|
+
// Salvage before cancelling: `session.cancel` drops the chain, so a
|
|
992
|
+
// child that had already written its answer would bill the parent for
|
|
993
|
+
// nothing. A child that produced nothing is stuck, so it still gets
|
|
994
|
+
// cancelled instead of left dangling.
|
|
995
|
+
const owned = childOwnedEvents(options.runtime, childId);
|
|
996
|
+
const salvaged = lastAssistantBodyText(owned);
|
|
997
|
+
const retrying = timedOut
|
|
998
|
+
? lastModelRetryNotice(owned)
|
|
999
|
+
: undefined;
|
|
1000
|
+
if (!salvaged) {
|
|
1001
|
+
await dispatchFaceMethod(options.runtime, "session.cancel", `tool-sa-c-${childId}`,
|
|
1002
|
+
// `parent`, not the default `user`: a parent that gave up waiting
|
|
1003
|
+
// is not a human hitting Stop. The old default stamped
|
|
1004
|
+
// turn/end `reason: user`, so every timed-out child read as "stopped
|
|
1005
|
+
// by the user" in the child log and in the completion notice.
|
|
1006
|
+
{ sessionId: childId, cause: { kind: "parent" } }).catch(() => undefined);
|
|
1007
|
+
}
|
|
914
1008
|
options.runtime.agentTeamTasks.complete(task.id, {
|
|
915
1009
|
ok: false,
|
|
916
1010
|
preview: message,
|
|
917
1011
|
});
|
|
918
1012
|
const extra = worktreeLine(false);
|
|
919
1013
|
return {
|
|
920
|
-
content: [
|
|
1014
|
+
content: [
|
|
1015
|
+
salvaged
|
|
1016
|
+
? `${message}, but the child finished work before the wait expired — its last answer is salvaged below.`
|
|
1017
|
+
: `subagent failed: ${message}`,
|
|
1018
|
+
salvaged || undefined,
|
|
1019
|
+
timedOut ? childResumeHint(childId) : undefined,
|
|
1020
|
+
retrying,
|
|
1021
|
+
extra,
|
|
1022
|
+
]
|
|
1023
|
+
.filter(Boolean)
|
|
1024
|
+
.join("\n"),
|
|
921
1025
|
isError: true,
|
|
922
1026
|
};
|
|
923
1027
|
}
|
|
@@ -1003,7 +1107,8 @@ function createSubagentTool(options) {
|
|
|
1003
1107
|
function createListAgentsTool(options) {
|
|
1004
1108
|
return {
|
|
1005
1109
|
name: "list_agents",
|
|
1006
|
-
description: "List direct child subagents of this session (id, label, mode, running, model, inbox queue/steer
|
|
1110
|
+
description: "List direct child subagents of this session (id, label, mode, running, model, inbox queue/steer, " +
|
|
1111
|
+
"and how each child's last turn actually ended — finished vs aborted by parent/user vs error, with idle age). " +
|
|
1007
1112
|
"Prefaces with depth/active quota. Prefer `analytics` for a fuller quota snapshot.",
|
|
1008
1113
|
parameters: { type: "object", properties: {} },
|
|
1009
1114
|
isConcurrencySafe: () => true,
|
|
@@ -1037,7 +1142,13 @@ function createListAgentsTool(options) {
|
|
|
1037
1142
|
? childInboxCounts(options.runtime, id)
|
|
1038
1143
|
: { queued: 0, steering: 0 };
|
|
1039
1144
|
const route = e.model ? `\t${e.model}` : "";
|
|
1040
|
-
|
|
1145
|
+
// `idle` alone reads the same for a child that finished and one the
|
|
1146
|
+
// parent's wait budget cut off; the outcome line is what separates
|
|
1147
|
+
// "delivered" from "killed".
|
|
1148
|
+
const outcome = id === "?" || e.kind === "diagnostic"
|
|
1149
|
+
? ""
|
|
1150
|
+
: `\t${formatChildOutcome(readSessionEvents(options.runtime.store, id))}`;
|
|
1151
|
+
return `${id}\t${label}\t${mode}\t${activity}${route}${outcome}\tq=${inbox.queued}\tsteer=${inbox.steering}`;
|
|
1041
1152
|
});
|
|
1042
1153
|
return { content: [header, ...lines].join("\n") };
|
|
1043
1154
|
},
|