@xrkseek/harness 0.4.0-rc.4 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/checkpoint/README.md +88 -0
- package/node_modules/@xrkseek/checkpoint/dist/index.d.ts +5 -0
- package/node_modules/@xrkseek/checkpoint/dist/index.d.ts.map +1 -0
- package/node_modules/@xrkseek/checkpoint/dist/index.js +5 -0
- package/node_modules/@xrkseek/checkpoint/dist/index.js.map +1 -0
- package/node_modules/@xrkseek/checkpoint/dist/json-file.d.ts +5 -0
- package/node_modules/@xrkseek/checkpoint/dist/json-file.d.ts.map +1 -0
- package/node_modules/@xrkseek/checkpoint/dist/json-file.js +29 -0
- package/node_modules/@xrkseek/checkpoint/dist/json-file.js.map +1 -0
- package/node_modules/@xrkseek/checkpoint/dist/process-git.d.ts +8 -0
- package/node_modules/@xrkseek/checkpoint/dist/process-git.d.ts.map +1 -0
- package/node_modules/@xrkseek/checkpoint/dist/process-git.js +40 -0
- package/node_modules/@xrkseek/checkpoint/dist/process-git.js.map +1 -0
- package/node_modules/@xrkseek/checkpoint/dist/store.d.ts +101 -0
- package/node_modules/@xrkseek/checkpoint/dist/store.d.ts.map +1 -0
- package/node_modules/@xrkseek/checkpoint/dist/store.js +312 -0
- package/node_modules/@xrkseek/checkpoint/dist/store.js.map +1 -0
- package/node_modules/@xrkseek/checkpoint/dist/types.d.ts +65 -0
- package/node_modules/@xrkseek/checkpoint/dist/types.d.ts.map +1 -0
- package/node_modules/@xrkseek/checkpoint/dist/types.js +18 -0
- package/node_modules/@xrkseek/checkpoint/dist/types.js.map +1 -0
- package/node_modules/@xrkseek/checkpoint/package.json +23 -0
- package/node_modules/@xrkseek/code-runtime/README.md +11 -4
- package/node_modules/@xrkseek/code-runtime/dist/index.d.ts +43 -3
- package/node_modules/@xrkseek/code-runtime/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/code-runtime/dist/index.js +209 -7
- package/node_modules/@xrkseek/code-runtime/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/context-fragments/README.md +28 -0
- package/node_modules/@xrkseek/context-fragments/dist/index.d.ts +104 -0
- package/node_modules/@xrkseek/context-fragments/dist/index.d.ts.map +1 -0
- package/node_modules/@xrkseek/context-fragments/dist/index.js +192 -0
- package/node_modules/@xrkseek/context-fragments/dist/index.js.map +1 -0
- package/node_modules/@xrkseek/context-fragments/package.json +27 -0
- package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts +1 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/index.js +7 -4
- package/node_modules/@xrkseek/core-agent-loop/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/invariant.d.ts +11 -0
- package/node_modules/@xrkseek/core-agent-loop/dist/invariant.d.ts.map +1 -0
- package/node_modules/@xrkseek/core-agent-loop/dist/invariant.js +21 -0
- package/node_modules/@xrkseek/core-agent-loop/dist/invariant.js.map +1 -0
- package/node_modules/@xrkseek/core-agent-loop/dist/tool-result-bound.d.ts +7 -5
- package/node_modules/@xrkseek/core-agent-loop/dist/tool-result-bound.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/tool-result-bound.js +24 -109
- package/node_modules/@xrkseek/core-agent-loop/dist/tool-result-bound.js.map +1 -1
- package/node_modules/@xrkseek/core-agent-loop/package.json +7 -0
- package/node_modules/@xrkseek/core-session/README.md +3 -1
- package/node_modules/@xrkseek/core-session/dist/invariant.d.ts +18 -0
- package/node_modules/@xrkseek/core-session/dist/invariant.d.ts.map +1 -0
- package/node_modules/@xrkseek/core-session/dist/invariant.js +114 -0
- package/node_modules/@xrkseek/core-session/dist/invariant.js.map +1 -0
- package/node_modules/@xrkseek/core-session/dist/session-interchange.d.ts +2 -1
- package/node_modules/@xrkseek/core-session/dist/session-interchange.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/session-interchange.js +6 -1
- package/node_modules/@xrkseek/core-session/dist/session-interchange.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 +37 -23
- package/node_modules/@xrkseek/core-session/dist/sqlite-store.js.map +1 -1
- package/node_modules/@xrkseek/core-session/package.json +33 -26
- package/node_modules/@xrkseek/core-system-prompt/README.md +7 -7
- package/node_modules/@xrkseek/core-system-prompt/dist/index.d.ts +1 -1
- package/node_modules/@xrkseek/core-system-prompt/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-system-prompt/dist/index.js +1 -1
- package/node_modules/@xrkseek/core-system-prompt/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/core-system-prompt/dist/three-layer.d.ts +55 -3
- package/node_modules/@xrkseek/core-system-prompt/dist/three-layer.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-system-prompt/dist/three-layer.js +107 -11
- package/node_modules/@xrkseek/core-system-prompt/dist/three-layer.js.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/guards.d.ts +9 -1
- package/node_modules/@xrkseek/core-tools/dist/guards.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/guards.js +53 -9
- package/node_modules/@xrkseek/core-tools/dist/guards.js.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/index.d.ts +2 -1
- package/node_modules/@xrkseek/core-tools/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/index.js +2 -1
- package/node_modules/@xrkseek/core-tools/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/session-query-prompt.d.ts +5 -0
- package/node_modules/@xrkseek/core-tools/dist/session-query-prompt.d.ts.map +1 -0
- package/node_modules/@xrkseek/core-tools/dist/session-query-prompt.js +12 -0
- package/node_modules/@xrkseek/core-tools/dist/session-query-prompt.js.map +1 -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 +6 -2
- package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.js.map +1 -1
- package/node_modules/@xrkseek/exec-computer-use/README.md +1 -1
- package/node_modules/@xrkseek/exec-computer-use/dist/format.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-computer-use/dist/format.js +7 -5
- package/node_modules/@xrkseek/exec-computer-use/dist/format.js.map +1 -1
- package/node_modules/@xrkseek/exec-computer-use/dist/index.d.ts +14 -3
- package/node_modules/@xrkseek/exec-computer-use/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-computer-use/dist/index.js +22 -8
- package/node_modules/@xrkseek/exec-computer-use/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/exec-computer-use/dist/keys.d.ts +10 -0
- package/node_modules/@xrkseek/exec-computer-use/dist/keys.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-computer-use/dist/keys.js +89 -0
- package/node_modules/@xrkseek/exec-computer-use/dist/keys.js.map +1 -0
- package/node_modules/@xrkseek/exec-computer-use/dist/tools.d.ts +3 -1
- package/node_modules/@xrkseek/exec-computer-use/dist/tools.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-computer-use/dist/tools.js +12 -8
- package/node_modules/@xrkseek/exec-computer-use/dist/tools.js.map +1 -1
- package/node_modules/@xrkseek/exec-computer-use/dist/windows-uia.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-computer-use/dist/windows-uia.js +138 -2
- package/node_modules/@xrkseek/exec-computer-use/dist/windows-uia.js.map +1 -1
- package/node_modules/@xrkseek/exec-fs/README.md +12 -9
- package/node_modules/@xrkseek/exec-fs/dist/apply-patch-apply.d.ts +32 -0
- package/node_modules/@xrkseek/exec-fs/dist/apply-patch-apply.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-fs/dist/apply-patch-apply.js +203 -0
- package/node_modules/@xrkseek/exec-fs/dist/apply-patch-apply.js.map +1 -0
- package/node_modules/@xrkseek/exec-fs/dist/apply-patch-parser.d.ts +52 -0
- package/node_modules/@xrkseek/exec-fs/dist/apply-patch-parser.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-fs/dist/apply-patch-parser.js +260 -0
- package/node_modules/@xrkseek/exec-fs/dist/apply-patch-parser.js.map +1 -0
- package/node_modules/@xrkseek/exec-fs/dist/apply-patch.d.ts +27 -0
- package/node_modules/@xrkseek/exec-fs/dist/apply-patch.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-fs/dist/apply-patch.js +69 -0
- package/node_modules/@xrkseek/exec-fs/dist/apply-patch.js.map +1 -0
- package/node_modules/@xrkseek/exec-fs/dist/index.d.ts +6 -1
- package/node_modules/@xrkseek/exec-fs/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-fs/dist/index.js +72 -3
- package/node_modules/@xrkseek/exec-fs/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/exec-fs/dist/present.d.ts +4 -0
- package/node_modules/@xrkseek/exec-fs/dist/present.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-fs/dist/present.js +25 -0
- package/node_modules/@xrkseek/exec-fs/dist/present.js.map +1 -1
- package/node_modules/@xrkseek/exec-fs/dist/routing-prompt.d.ts +1 -1
- package/node_modules/@xrkseek/exec-fs/dist/routing-prompt.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-fs/dist/routing-prompt.js +10 -6
- package/node_modules/@xrkseek/exec-fs/dist/routing-prompt.js.map +1 -1
- package/node_modules/@xrkseek/exec-image-gen/dist/index.d.ts +15 -2
- package/node_modules/@xrkseek/exec-image-gen/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-image-gen/dist/index.js +14 -7
- package/node_modules/@xrkseek/exec-image-gen/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/exec-image-gen/dist/tools.d.ts +6 -1
- package/node_modules/@xrkseek/exec-image-gen/dist/tools.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-image-gen/dist/tools.js +14 -8
- package/node_modules/@xrkseek/exec-image-gen/dist/tools.js.map +1 -1
- package/node_modules/@xrkseek/exec-memory/README.md +5 -3
- package/node_modules/@xrkseek/exec-memory/dist/http.d.ts +42 -0
- package/node_modules/@xrkseek/exec-memory/dist/http.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-memory/dist/http.js +232 -0
- package/node_modules/@xrkseek/exec-memory/dist/http.js.map +1 -0
- package/node_modules/@xrkseek/exec-memory/dist/index.d.ts +5 -2
- package/node_modules/@xrkseek/exec-memory/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-memory/dist/index.js +3 -1
- package/node_modules/@xrkseek/exec-memory/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/exec-memory/dist/provider.d.ts +19 -0
- package/node_modules/@xrkseek/exec-memory/dist/provider.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-memory/dist/provider.js +8 -0
- package/node_modules/@xrkseek/exec-memory/dist/provider.js.map +1 -0
- package/node_modules/@xrkseek/exec-memory/dist/resolve.d.ts +25 -0
- package/node_modules/@xrkseek/exec-memory/dist/resolve.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-memory/dist/resolve.js +46 -0
- package/node_modules/@xrkseek/exec-memory/dist/resolve.js.map +1 -0
- package/node_modules/@xrkseek/exec-memory/dist/store.d.ts +8 -4
- package/node_modules/@xrkseek/exec-memory/dist/store.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-memory/dist/store.js +6 -0
- 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 +12 -9
- package/node_modules/@xrkseek/exec-memory/dist/tools.js.map +1 -1
- package/node_modules/@xrkseek/exec-memory/dist/write-path.d.ts +17 -6
- package/node_modules/@xrkseek/exec-memory/dist/write-path.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-memory/dist/write-path.js +81 -20
- package/node_modules/@xrkseek/exec-memory/dist/write-path.js.map +1 -1
- package/node_modules/@xrkseek/exec-memory/package.json +1 -0
- package/node_modules/@xrkseek/exec-sandbox/dist/doctor.d.ts +24 -0
- package/node_modules/@xrkseek/exec-sandbox/dist/doctor.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-sandbox/dist/doctor.js +118 -0
- package/node_modules/@xrkseek/exec-sandbox/dist/doctor.js.map +1 -0
- package/node_modules/@xrkseek/exec-sandbox/dist/hardline.d.ts +24 -0
- package/node_modules/@xrkseek/exec-sandbox/dist/hardline.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-sandbox/dist/hardline.js +93 -0
- package/node_modules/@xrkseek/exec-sandbox/dist/hardline.js.map +1 -0
- package/node_modules/@xrkseek/exec-sandbox/dist/index.d.ts +3 -1
- package/node_modules/@xrkseek/exec-sandbox/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-sandbox/dist/index.js +3 -1
- package/node_modules/@xrkseek/exec-sandbox/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/exec-sandbox/dist/resolve.d.ts +17 -0
- package/node_modules/@xrkseek/exec-sandbox/dist/resolve.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-sandbox/dist/resolve.js +47 -5
- package/node_modules/@xrkseek/exec-sandbox/dist/resolve.js.map +1 -1
- package/node_modules/@xrkseek/exec-sandbox/dist/service.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-sandbox/dist/service.js +2 -5
- package/node_modules/@xrkseek/exec-sandbox/dist/service.js.map +1 -1
- package/node_modules/@xrkseek/exec-ssh/README.md +16 -16
- package/node_modules/@xrkseek/exec-ssh/dist/config.d.ts +10 -0
- package/node_modules/@xrkseek/exec-ssh/dist/config.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-ssh/dist/config.js +50 -0
- package/node_modules/@xrkseek/exec-ssh/dist/config.js.map +1 -1
- package/node_modules/@xrkseek/exec-ssh/dist/fs.d.ts +1 -1
- package/node_modules/@xrkseek/exec-ssh/dist/fs.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-ssh/dist/fs.js +18 -1
- package/node_modules/@xrkseek/exec-ssh/dist/fs.js.map +1 -1
- package/node_modules/@xrkseek/exec-ssh/dist/index.d.ts +1 -1
- package/node_modules/@xrkseek/exec-ssh/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-ssh/dist/index.js +1 -1
- package/node_modules/@xrkseek/exec-ssh/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/exec-video-gen/dist/index.d.ts +15 -2
- package/node_modules/@xrkseek/exec-video-gen/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-video-gen/dist/index.js +14 -9
- package/node_modules/@xrkseek/exec-video-gen/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/exec-video-gen/dist/tools.d.ts +6 -1
- package/node_modules/@xrkseek/exec-video-gen/dist/tools.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-video-gen/dist/tools.js +14 -10
- package/node_modules/@xrkseek/exec-video-gen/dist/tools.js.map +1 -1
- package/node_modules/@xrkseek/exec-voice/README.md +25 -25
- package/node_modules/@xrkseek/exec-voice/dist/index.d.ts +16 -3
- package/node_modules/@xrkseek/exec-voice/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-voice/dist/index.js +14 -8
- package/node_modules/@xrkseek/exec-voice/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/exec-voice/dist/readiness.d.ts +26 -0
- package/node_modules/@xrkseek/exec-voice/dist/readiness.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-voice/dist/readiness.js +69 -0
- package/node_modules/@xrkseek/exec-voice/dist/readiness.js.map +1 -0
- package/node_modules/@xrkseek/exec-voice/dist/tools.d.ts +4 -1
- package/node_modules/@xrkseek/exec-voice/dist/tools.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-voice/dist/tools.js +3 -14
- package/node_modules/@xrkseek/exec-voice/dist/tools.js.map +1 -1
- package/node_modules/@xrkseek/exec-web/README.md +11 -11
- package/node_modules/@xrkseek/exec-web/dist/browser-cdp.d.ts +22 -0
- package/node_modules/@xrkseek/exec-web/dist/browser-cdp.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-web/dist/browser-cdp.js +32 -1
- package/node_modules/@xrkseek/exec-web/dist/browser-cdp.js.map +1 -1
- package/node_modules/@xrkseek/exec-web/dist/browser-runtime-registry.d.ts +21 -0
- package/node_modules/@xrkseek/exec-web/dist/browser-runtime-registry.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-web/dist/browser-runtime-registry.js +52 -0
- package/node_modules/@xrkseek/exec-web/dist/browser-runtime-registry.js.map +1 -0
- package/node_modules/@xrkseek/exec-web/dist/browser-session.d.ts +2 -0
- package/node_modules/@xrkseek/exec-web/dist/browser-session.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-web/dist/browser-session.js +3 -0
- package/node_modules/@xrkseek/exec-web/dist/browser-session.js.map +1 -1
- package/node_modules/@xrkseek/exec-web/dist/browser-tools.d.ts +9 -0
- package/node_modules/@xrkseek/exec-web/dist/browser-tools.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-web/dist/browser-tools.js +34 -15
- package/node_modules/@xrkseek/exec-web/dist/browser-tools.js.map +1 -1
- package/node_modules/@xrkseek/exec-web/dist/fetch-http.d.ts +7 -0
- package/node_modules/@xrkseek/exec-web/dist/fetch-http.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-web/dist/fetch-http.js +8 -2
- package/node_modules/@xrkseek/exec-web/dist/fetch-http.js.map +1 -1
- package/node_modules/@xrkseek/exec-web/dist/format.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-web/dist/format.js +4 -3
- package/node_modules/@xrkseek/exec-web/dist/format.js.map +1 -1
- package/node_modules/@xrkseek/exec-web/dist/index.d.ts +4 -2
- package/node_modules/@xrkseek/exec-web/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-web/dist/index.js +8 -3
- package/node_modules/@xrkseek/exec-web/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/exec-web/dist/outbound-allowlist.d.ts +46 -0
- package/node_modules/@xrkseek/exec-web/dist/outbound-allowlist.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-web/dist/outbound-allowlist.js +144 -0
- package/node_modules/@xrkseek/exec-web/dist/outbound-allowlist.js.map +1 -0
- package/node_modules/@xrkseek/exec-web/dist/url-policy.d.ts +6 -1
- package/node_modules/@xrkseek/exec-web/dist/url-policy.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-web/dist/url-policy.js +5 -2
- package/node_modules/@xrkseek/exec-web/dist/url-policy.js.map +1 -1
- package/node_modules/@xrkseek/im-gateway-contract/README.md +50 -0
- package/node_modules/@xrkseek/im-gateway-contract/dist/index.d.ts +77 -0
- package/node_modules/@xrkseek/im-gateway-contract/dist/index.d.ts.map +1 -0
- package/node_modules/@xrkseek/im-gateway-contract/dist/index.js +120 -0
- package/node_modules/@xrkseek/im-gateway-contract/dist/index.js.map +1 -0
- package/node_modules/@xrkseek/im-gateway-contract/examples/mock-sidecar.mjs +124 -0
- package/node_modules/@xrkseek/im-gateway-contract/package.json +25 -0
- package/node_modules/@xrkseek/mcp/dist/index.d.ts +1 -0
- package/node_modules/@xrkseek/mcp/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/mcp/dist/index.js +1 -0
- package/node_modules/@xrkseek/mcp/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/mcp/dist/oauth-product.d.ts +31 -0
- package/node_modules/@xrkseek/mcp/dist/oauth-product.d.ts.map +1 -0
- package/node_modules/@xrkseek/mcp/dist/oauth-product.js +72 -0
- package/node_modules/@xrkseek/mcp/dist/oauth-product.js.map +1 -0
- package/node_modules/@xrkseek/policy/README.md +18 -15
- package/node_modules/@xrkseek/policy/dist/index.d.ts +1 -0
- package/node_modules/@xrkseek/policy/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/policy/dist/index.js +1 -0
- package/node_modules/@xrkseek/policy/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/policy/dist/permission-pre.d.ts.map +1 -1
- package/node_modules/@xrkseek/policy/dist/permission-pre.js +1 -0
- package/node_modules/@xrkseek/policy/dist/permission-pre.js.map +1 -1
- package/node_modules/@xrkseek/policy/dist/security-guidance.d.ts +50 -0
- package/node_modules/@xrkseek/policy/dist/security-guidance.d.ts.map +1 -0
- package/node_modules/@xrkseek/policy/dist/security-guidance.js +262 -0
- package/node_modules/@xrkseek/policy/dist/security-guidance.js.map +1 -0
- package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts +81 -7
- package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts.map +1 -1
- package/node_modules/@xrkseek/preset-harness/dist/preset.js +307 -63
- 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-harness/package.json +53 -52
- package/node_modules/@xrkseek/preset-minimal/dist/preset.d.ts.map +1 -1
- package/node_modules/@xrkseek/preset-minimal/dist/preset.js +7 -2
- package/node_modules/@xrkseek/preset-minimal/dist/preset.js.map +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 +19 -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/protocol/dist/json-schema.d.ts.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/json-schema.js +3 -0
- package/node_modules/@xrkseek/protocol/dist/json-schema.js.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/session-events.d.ts +18 -0
- package/node_modules/@xrkseek/protocol/dist/session-events.d.ts.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/session-events.js.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/validate.d.ts.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/validate.js +30 -0
- package/node_modules/@xrkseek/protocol/dist/validate.js.map +1 -1
- package/node_modules/@xrkseek/runtime-invariants/README.md +28 -0
- package/node_modules/@xrkseek/runtime-invariants/dist/index.d.ts +94 -0
- package/node_modules/@xrkseek/runtime-invariants/dist/index.d.ts.map +1 -0
- package/node_modules/@xrkseek/runtime-invariants/dist/index.js +163 -0
- package/node_modules/@xrkseek/runtime-invariants/dist/index.js.map +1 -0
- package/node_modules/@xrkseek/runtime-invariants/package.json +27 -0
- package/node_modules/@xrkseek/secrets/README.md +28 -0
- package/node_modules/@xrkseek/secrets/dist/index.d.ts +11 -0
- package/node_modules/@xrkseek/secrets/dist/index.d.ts.map +1 -0
- package/node_modules/@xrkseek/secrets/dist/index.js +23 -0
- package/node_modules/@xrkseek/secrets/dist/index.js.map +1 -0
- package/node_modules/@xrkseek/secrets/dist/keyring.d.ts +10 -0
- package/node_modules/@xrkseek/secrets/dist/keyring.d.ts.map +1 -0
- package/node_modules/@xrkseek/secrets/dist/keyring.js +77 -0
- package/node_modules/@xrkseek/secrets/dist/keyring.js.map +1 -0
- package/node_modules/@xrkseek/secrets/dist/memory.d.ts +4 -0
- package/node_modules/@xrkseek/secrets/dist/memory.d.ts.map +1 -0
- package/node_modules/@xrkseek/secrets/dist/memory.js +21 -0
- package/node_modules/@xrkseek/secrets/dist/memory.js.map +1 -0
- package/node_modules/@xrkseek/secrets/dist/redact.d.ts +23 -0
- package/node_modules/@xrkseek/secrets/dist/redact.d.ts.map +1 -0
- package/node_modules/@xrkseek/secrets/dist/redact.js +38 -0
- package/node_modules/@xrkseek/secrets/dist/redact.js.map +1 -0
- package/node_modules/@xrkseek/secrets/dist/resolve.d.ts +10 -0
- package/node_modules/@xrkseek/secrets/dist/resolve.d.ts.map +1 -0
- package/node_modules/@xrkseek/secrets/dist/resolve.js +24 -0
- package/node_modules/@xrkseek/secrets/dist/resolve.js.map +1 -0
- package/node_modules/@xrkseek/secrets/dist/types.d.ts +27 -0
- package/node_modules/@xrkseek/secrets/dist/types.d.ts.map +1 -0
- package/node_modules/@xrkseek/secrets/dist/types.js +15 -0
- package/node_modules/@xrkseek/secrets/dist/types.js.map +1 -0
- package/node_modules/@xrkseek/secrets/package.json +29 -0
- package/node_modules/@xrkseek/server-config/dist/index.d.ts +6 -0
- package/node_modules/@xrkseek/server-config/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-config/dist/index.js +12 -0
- package/node_modules/@xrkseek/server-config/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/server-cron/README.md +1 -1
- package/node_modules/@xrkseek/server-cron/dist/index.d.ts +10 -1
- package/node_modules/@xrkseek/server-cron/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-cron/dist/index.js +9 -2
- package/node_modules/@xrkseek/server-cron/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/adapt/wire-event.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/adapt/wire-event.js +6 -2
- package/node_modules/@xrkseek/server-face/dist/adapt/wire-event.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/agent-team-output.d.ts +34 -0
- package/node_modules/@xrkseek/server-face/dist/agent-team-output.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/agent-team-output.js +140 -0
- package/node_modules/@xrkseek/server-face/dist/agent-team-output.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/agent-team-roles.d.ts +13 -0
- package/node_modules/@xrkseek/server-face/dist/agent-team-roles.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/agent-team-roles.js +67 -0
- package/node_modules/@xrkseek/server-face/dist/agent-team-roles.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/agent-team-tasks.d.ts +79 -0
- package/node_modules/@xrkseek/server-face/dist/agent-team-tasks.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/agent-team-tasks.js +230 -0
- package/node_modules/@xrkseek/server-face/dist/agent-team-tasks.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/approval-category.d.ts +25 -0
- package/node_modules/@xrkseek/server-face/dist/approval-category.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/approval-category.js +108 -0
- package/node_modules/@xrkseek/server-face/dist/approval-category.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/approvals.d.ts +17 -0
- package/node_modules/@xrkseek/server-face/dist/approvals.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/approvals.js +50 -0
- package/node_modules/@xrkseek/server-face/dist/approvals.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/context.d.ts +22 -0
- package/node_modules/@xrkseek/server-face/dist/context.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/cost-meter-store.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/cost-meter-store.js +22 -0
- package/node_modules/@xrkseek/server-face/dist/cost-meter-store.js.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 +14 -2
- package/node_modules/@xrkseek/server-face/dist/dispatch.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/external-agent-runtime.d.ts +87 -2
- package/node_modules/@xrkseek/server-face/dist/external-agent-runtime.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/external-agent-runtime.js +456 -32
- package/node_modules/@xrkseek/server-face/dist/external-agent-runtime.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/goal-round-driver.d.ts +48 -0
- package/node_modules/@xrkseek/server-face/dist/goal-round-driver.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/goal-round-driver.js +69 -0
- package/node_modules/@xrkseek/server-face/dist/goal-round-driver.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/goal-store.d.ts +6 -1
- package/node_modules/@xrkseek/server-face/dist/goal-store.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/goal-store.js +45 -9
- package/node_modules/@xrkseek/server-face/dist/goal-store.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/goal-tools.d.ts +13 -0
- package/node_modules/@xrkseek/server-face/dist/goal-tools.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/goal-tools.js +131 -0
- package/node_modules/@xrkseek/server-face/dist/goal-tools.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/handlers/checkpoint.d.ts +10 -0
- package/node_modules/@xrkseek/server-face/dist/handlers/checkpoint.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/handlers/checkpoint.js +156 -0
- package/node_modules/@xrkseek/server-face/dist/handlers/checkpoint.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/handlers/session.d.ts +7 -0
- package/node_modules/@xrkseek/server-face/dist/handlers/session.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/handlers/session.js +88 -2
- 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 +62 -3
- package/node_modules/@xrkseek/server-face/dist/handlers/subagent.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/index.d.ts +19 -5
- package/node_modules/@xrkseek/server-face/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/index.js +18 -4
- package/node_modules/@xrkseek/server-face/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/managed-worktree.d.ts +115 -0
- package/node_modules/@xrkseek/server-face/dist/managed-worktree.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/managed-worktree.js +330 -0
- package/node_modules/@xrkseek/server-face/dist/managed-worktree.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/mcp-oauth.d.ts +33 -0
- package/node_modules/@xrkseek/server-face/dist/mcp-oauth.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/mcp-oauth.js +352 -0
- package/node_modules/@xrkseek/server-face/dist/mcp-oauth.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/projections/index.d.ts +1 -1
- package/node_modules/@xrkseek/server-face/dist/projections/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/projections/index.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/projections/units/context-timeline.d.ts +15 -1
- package/node_modules/@xrkseek/server-face/dist/projections/units/context-timeline.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/projections/units/context-timeline.js +26 -2
- package/node_modules/@xrkseek/server-face/dist/projections/units/context-timeline.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/propose-skill.d.ts +20 -0
- package/node_modules/@xrkseek/server-face/dist/propose-skill.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/propose-skill.js +65 -0
- package/node_modules/@xrkseek/server-face/dist/propose-skill.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/ralph-tool.d.ts +33 -0
- package/node_modules/@xrkseek/server-face/dist/ralph-tool.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/ralph-tool.js +366 -0
- package/node_modules/@xrkseek/server-face/dist/ralph-tool.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/reference-discovery.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/reference-discovery.js +1 -0
- package/node_modules/@xrkseek/server-face/dist/reference-discovery.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/rollout-trace.d.ts +58 -0
- package/node_modules/@xrkseek/server-face/dist/rollout-trace.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/rollout-trace.js +194 -0
- package/node_modules/@xrkseek/server-face/dist/rollout-trace.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/runtime.d.ts +7 -0
- package/node_modules/@xrkseek/server-face/dist/runtime.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/runtime.js +93 -4
- package/node_modules/@xrkseek/server-face/dist/runtime.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/session-export.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/session-export.js +74 -0
- package/node_modules/@xrkseek/server-face/dist/session-export.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/session-query-tools.d.ts +23 -0
- package/node_modules/@xrkseek/server-face/dist/session-query-tools.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/session-query-tools.js +275 -0
- package/node_modules/@xrkseek/server-face/dist/session-query-tools.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/session-status.d.ts +209 -0
- package/node_modules/@xrkseek/server-face/dist/session-status.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/session-status.js +559 -0
- package/node_modules/@xrkseek/server-face/dist/session-status.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/settings-credentials.d.ts +2 -0
- package/node_modules/@xrkseek/server-face/dist/settings-credentials.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/settings-credentials.js +67 -0
- package/node_modules/@xrkseek/server-face/dist/settings-credentials.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/settings-document.d.ts +5 -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 +69 -0
- 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 +220 -1
- package/node_modules/@xrkseek/server-face/dist/settings-schemas.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/slash.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/slash.js +70 -16
- package/node_modules/@xrkseek/server-face/dist/slash.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/subagent-registry.d.ts +4 -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 +4 -0
- package/node_modules/@xrkseek/server-face/dist/subagent-registry.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts +14 -1
- package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/subagent-tools.js +614 -62
- package/node_modules/@xrkseek/server-face/dist/subagent-tools.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/subagent-worktree.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/subagent-worktree.js +7 -2
- package/node_modules/@xrkseek/server-face/dist/subagent-worktree.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/types.d.ts +4 -0
- package/node_modules/@xrkseek/server-face/dist/types.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/wire/rpc-error.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/wire/rpc-error.js +11 -0
- package/node_modules/@xrkseek/server-face/dist/wire/rpc-error.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/workspace-checkpoint.d.ts +40 -0
- package/node_modules/@xrkseek/server-face/dist/workspace-checkpoint.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/workspace-checkpoint.js +154 -0
- package/node_modules/@xrkseek/server-face/dist/workspace-checkpoint.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/workspace-face.d.ts +1 -0
- package/node_modules/@xrkseek/server-face/dist/workspace-face.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/workspace-face.js +25 -0
- package/node_modules/@xrkseek/server-face/dist/workspace-face.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/workspace-registry.d.ts +11 -0
- package/node_modules/@xrkseek/server-face/dist/workspace-registry.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/workspace-registry.js +14 -4
- package/node_modules/@xrkseek/server-face/dist/workspace-registry.js.map +1 -1
- package/node_modules/@xrkseek/server-face/package.json +3 -0
- package/node_modules/@xrkseek/server-host/dist/index.d.ts +61 -0
- package/node_modules/@xrkseek/server-host/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/index.js +376 -10
- package/node_modules/@xrkseek/server-host/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/invariants-fail-fast.d.ts +16 -0
- package/node_modules/@xrkseek/server-host/dist/invariants-fail-fast.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-host/dist/invariants-fail-fast.js +24 -0
- package/node_modules/@xrkseek/server-host/dist/invariants-fail-fast.js.map +1 -0
- package/node_modules/@xrkseek/server-host/dist/standing-tools.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/standing-tools.js +4 -1
- package/node_modules/@xrkseek/server-host/dist/standing-tools.js.map +1 -1
- package/node_modules/@xrkseek/server-host/package.json +10 -0
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-providers.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-providers.js +10 -4
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-providers.js.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-types.d.ts +17 -0
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-types.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-classifier.d.ts +8 -0
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-classifier.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-classifier.js +20 -5
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-classifier.js.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-http.js +1 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-http.js.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-compat-matrix.js +2 -2
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-compat-matrix.js.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-gateway-sidecar.d.ts +5 -17
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-gateway-sidecar.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-gateway-sidecar.js +50 -49
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-gateway-sidecar.js.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/memory-embeddings.d.ts +14 -4
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/memory-embeddings.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/memory-embeddings.js +30 -14
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/memory-embeddings.js.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/noema.d.ts +3 -0
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/noema.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/noema.js +5 -5
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/noema.js.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-adapter.d.ts +5 -0
- package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-adapter.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-adapter.js +1 -0
- package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-adapter.js.map +1 -1
- package/node_modules/@xrkseek/server-http/package.json +1 -0
- package/node_modules/@xrkseek/server-loader/dist/index.d.ts +1 -1
- package/node_modules/@xrkseek/server-loader/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-loader/dist/index.js +1 -1
- package/node_modules/@xrkseek/server-loader/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/server-loader/dist/shell-hooks.d.ts +75 -3
- package/node_modules/@xrkseek/server-loader/dist/shell-hooks.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-loader/dist/shell-hooks.js +415 -46
- package/node_modules/@xrkseek/server-loader/dist/shell-hooks.js.map +1 -1
- package/node_modules/@xrkseek/session-format/README.md +20 -0
- package/node_modules/@xrkseek/session-format/dist/catalog.d.ts +27 -0
- package/node_modules/@xrkseek/session-format/dist/catalog.d.ts.map +1 -0
- package/node_modules/@xrkseek/session-format/dist/catalog.js +36 -0
- package/node_modules/@xrkseek/session-format/dist/catalog.js.map +1 -0
- package/node_modules/@xrkseek/session-format/dist/chain.d.ts +38 -0
- package/node_modules/@xrkseek/session-format/dist/chain.d.ts.map +1 -0
- package/node_modules/@xrkseek/session-format/dist/chain.js +86 -0
- package/node_modules/@xrkseek/session-format/dist/chain.js.map +1 -0
- package/node_modules/@xrkseek/session-format/dist/detect.d.ts +29 -0
- package/node_modules/@xrkseek/session-format/dist/detect.d.ts.map +1 -0
- package/node_modules/@xrkseek/session-format/dist/detect.js +68 -0
- package/node_modules/@xrkseek/session-format/dist/detect.js.map +1 -0
- package/node_modules/@xrkseek/session-format/dist/index.d.ts +12 -0
- package/node_modules/@xrkseek/session-format/dist/index.d.ts.map +1 -0
- package/node_modules/@xrkseek/session-format/dist/index.js +12 -0
- package/node_modules/@xrkseek/session-format/dist/index.js.map +1 -0
- package/node_modules/@xrkseek/session-format/dist/interchange-version.d.ts +6 -0
- package/node_modules/@xrkseek/session-format/dist/interchange-version.d.ts.map +1 -0
- package/node_modules/@xrkseek/session-format/dist/interchange-version.js +6 -0
- package/node_modules/@xrkseek/session-format/dist/interchange-version.js.map +1 -0
- package/node_modules/@xrkseek/session-format/dist/sqlite-schema.d.ts +31 -0
- package/node_modules/@xrkseek/session-format/dist/sqlite-schema.d.ts.map +1 -0
- package/node_modules/@xrkseek/session-format/dist/sqlite-schema.js +52 -0
- package/node_modules/@xrkseek/session-format/dist/sqlite-schema.js.map +1 -0
- package/node_modules/@xrkseek/session-format/package.json +24 -0
- package/node_modules/@xrkseek/session-telemetry/dist/index.d.ts +18 -4
- package/node_modules/@xrkseek/session-telemetry/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/session-telemetry/dist/index.js +97 -36
- package/node_modules/@xrkseek/session-telemetry/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/spill/README.md +27 -0
- package/node_modules/@xrkseek/spill/dist/index.d.ts +11 -0
- package/node_modules/@xrkseek/spill/dist/index.d.ts.map +1 -0
- package/node_modules/@xrkseek/spill/dist/index.js +11 -0
- package/node_modules/@xrkseek/spill/dist/index.js.map +1 -0
- package/node_modules/@xrkseek/spill/dist/local-store.d.ts +30 -0
- package/node_modules/@xrkseek/spill/dist/local-store.d.ts.map +1 -0
- package/node_modules/@xrkseek/spill/dist/local-store.js +73 -0
- package/node_modules/@xrkseek/spill/dist/local-store.js.map +1 -0
- package/node_modules/@xrkseek/spill/dist/policy.d.ts +59 -0
- package/node_modules/@xrkseek/spill/dist/policy.d.ts.map +1 -0
- package/node_modules/@xrkseek/spill/dist/policy.js +143 -0
- package/node_modules/@xrkseek/spill/dist/policy.js.map +1 -0
- package/node_modules/@xrkseek/spill/dist/types.d.ts +46 -0
- package/node_modules/@xrkseek/spill/dist/types.d.ts.map +1 -0
- package/node_modules/@xrkseek/spill/dist/types.js +8 -0
- package/node_modules/@xrkseek/spill/dist/types.js.map +1 -0
- package/node_modules/@xrkseek/spill/package.json +27 -0
- package/node_modules/@xrkseek/workspace/dist/ecosystem-instructions.d.ts.map +1 -1
- package/node_modules/@xrkseek/workspace/dist/ecosystem-instructions.js +2 -0
- package/node_modules/@xrkseek/workspace/dist/ecosystem-instructions.js.map +1 -1
- package/node_modules/@xrkseek/workspace/dist/index.d.ts +1 -0
- package/node_modules/@xrkseek/workspace/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/workspace/dist/index.js +1 -0
- package/node_modules/@xrkseek/workspace/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/workspace/dist/skill-propose.d.ts +71 -0
- package/node_modules/@xrkseek/workspace/dist/skill-propose.d.ts.map +1 -0
- package/node_modules/@xrkseek/workspace/dist/skill-propose.js +259 -0
- package/node_modules/@xrkseek/workspace/dist/skill-propose.js.map +1 -0
- package/node_modules/@xrkseek/xrk-file-reference-local/README.md +46 -45
- package/node_modules/@xrkseek/xrk-file-reference-local/README.zh.md +46 -45
- package/node_modules/@xrkseek/xrk-file-reference-local/dist/gitignore.d.ts +37 -0
- package/node_modules/@xrkseek/xrk-file-reference-local/dist/gitignore.d.ts.map +1 -0
- package/node_modules/@xrkseek/xrk-file-reference-local/dist/gitignore.js +91 -0
- package/node_modules/@xrkseek/xrk-file-reference-local/dist/gitignore.js.map +1 -0
- package/node_modules/@xrkseek/xrk-file-reference-local/dist/search.d.ts +7 -0
- package/node_modules/@xrkseek/xrk-file-reference-local/dist/search.d.ts.map +1 -1
- package/node_modules/@xrkseek/xrk-file-reference-local/dist/search.js +46 -4
- package/node_modules/@xrkseek/xrk-file-reference-local/dist/search.js.map +1 -1
- package/node_modules/@xrkseek/xrk-file-reference-local/package.json +30 -29
- package/node_modules/ignore/LICENSE-MIT +21 -0
- package/node_modules/ignore/README.md +452 -0
- package/node_modules/ignore/index.d.ts +81 -0
- package/node_modules/ignore/index.js +793 -0
- package/node_modules/ignore/legacy.js +690 -0
- package/node_modules/ignore/package.json +87 -0
- package/package.json +17 -1
|
@@ -1,15 +1,70 @@
|
|
|
1
1
|
import { SUBAGENT_ROUTING_PROMPT_TEXT } from "@xrkseek/core-tools";
|
|
2
|
-
import { readSessionEvents } from "@xrkseek/core-session";
|
|
2
|
+
import { listPendingAdmits, readSessionEvents, } from "@xrkseek/core-session";
|
|
3
3
|
import { dispatchFaceMethod } from "./dispatch.js";
|
|
4
4
|
import { lastAssistantBodyText } from "./adapt/subagent-notice.js";
|
|
5
|
-
import { DEFAULT_MAX_ACTIVE_CHILDREN, DEFAULT_MAX_DEPTH } from "./presets-catalog.js";
|
|
5
|
+
import { DEFAULT_MAX_ACTIVE_CHILDREN, DEFAULT_MAX_DEPTH, resolveAgentPresetProfile, } from "./presets-catalog.js";
|
|
6
6
|
import { resolveSessionCwd } from "./session-cwd.js";
|
|
7
|
-
import { ExternalAgentError, parseExternalAgentKind, runExternalAgentTurn, } from "./external-agent-runtime.js";
|
|
7
|
+
import { ExternalAgentError, parseExternalAgentKind, parseExternalAgentProduct, runExternalAgentTurn, supportsExternalContinuable, startExternalContinuable, isChildSessionActive, } from "./external-agent-runtime.js";
|
|
8
8
|
import { createSubagentWorktree, finalizeSubagentWorktree, formatWorktreeResult, worktreeContextNote, worktreeSkippedForRemote, } from "./subagent-worktree.js";
|
|
9
|
+
import { appendOutputContract, buildOutputSchemaRetryMessage, coerceOutputSchema, validateOutputAgainstSchema, } from "./agent-team-output.js";
|
|
10
|
+
import { applySpawnRoleReminder, parseAgentTeamSpawnRole, } from "./agent-team-roles.js";
|
|
11
|
+
import { bindRalphTool } from "./ralph-tool.js";
|
|
9
12
|
const FOREGROUND_WAIT_MS = 10 * 60 * 1000;
|
|
13
|
+
const WAIT_AGENT_DEFAULT_MS = 5 * 60 * 1000;
|
|
14
|
+
const WAIT_AGENT_MIN_MS = 1_000;
|
|
10
15
|
const POLL_MS = 50;
|
|
11
16
|
export { SUBAGENT_ROUTING_PROMPT_TEXT, DEFAULT_MAX_ACTIVE_CHILDREN, DEFAULT_MAX_DEPTH };
|
|
12
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Resolve live quota for Status / `analytics` (Face agent-loop ∩ badge ceiling).
|
|
19
|
+
*/
|
|
20
|
+
export function resolveSubagentQuota(runtime, sessionId) {
|
|
21
|
+
const loopValue = runtime.settingsNamespaces.view("agent-loop").value;
|
|
22
|
+
const faceDepth = typeof loopValue.maxSubagentDepth === "number" &&
|
|
23
|
+
Number.isFinite(loopValue.maxSubagentDepth) &&
|
|
24
|
+
loopValue.maxSubagentDepth >= 1
|
|
25
|
+
? Math.min(3, Math.floor(loopValue.maxSubagentDepth))
|
|
26
|
+
: DEFAULT_MAX_DEPTH;
|
|
27
|
+
const faceActive = typeof loopValue.maxActiveSubagents === "number" &&
|
|
28
|
+
Number.isFinite(loopValue.maxActiveSubagents) &&
|
|
29
|
+
loopValue.maxActiveSubagents >= 1
|
|
30
|
+
? Math.min(16, Math.floor(loopValue.maxActiveSubagents))
|
|
31
|
+
: DEFAULT_MAX_ACTIVE_CHILDREN;
|
|
32
|
+
const presetId = runtime.sessionAgentPresets.get(sessionId);
|
|
33
|
+
const profile = resolveAgentPresetProfile(presetId);
|
|
34
|
+
const maxDepth = profile.subagents.maxDepth !== undefined
|
|
35
|
+
? Math.min(faceDepth, profile.subagents.maxDepth)
|
|
36
|
+
: faceDepth;
|
|
37
|
+
const maxActive = profile.subagents.maxActiveChildren !== undefined
|
|
38
|
+
? Math.min(faceActive, profile.subagents.maxActiveChildren)
|
|
39
|
+
: faceActive;
|
|
40
|
+
const depth = subagentDepth(runtime, sessionId);
|
|
41
|
+
const active = countActiveChildren(runtime, sessionId);
|
|
42
|
+
const delegated = runtime.subagents.listDelegated(sessionId).length;
|
|
43
|
+
return {
|
|
44
|
+
depth,
|
|
45
|
+
maxDepth,
|
|
46
|
+
active,
|
|
47
|
+
maxActive,
|
|
48
|
+
delegated,
|
|
49
|
+
slotsFree: Math.max(0, maxActive - active),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function childInboxCounts(runtime, childSessionId) {
|
|
53
|
+
if (!runtime.store.has(childSessionId)) {
|
|
54
|
+
return { queued: 0, steering: 0 };
|
|
55
|
+
}
|
|
56
|
+
const pending = listPendingAdmits(readSessionEvents(runtime.store, childSessionId), childSessionId);
|
|
57
|
+
let queued = 0;
|
|
58
|
+
let steering = 0;
|
|
59
|
+
for (const admit of pending) {
|
|
60
|
+
if (admit.delivery === "steer")
|
|
61
|
+
steering += 1;
|
|
62
|
+
else
|
|
63
|
+
queued += 1;
|
|
64
|
+
}
|
|
65
|
+
return { queued, steering };
|
|
66
|
+
}
|
|
67
|
+
export { parseExternalAgentKind, parseExternalAgentProduct, runExternalAgentTurn, resolveExternalAgentLaunch, openExternalAgentLiveSession, supportsExternalContinuable, ExternalAgentError, ExternalAgentSessionRegistry, isChildSessionActive, startExternalContinuable, promptExternalContinuable, interruptExternalContinuable, } from "./external-agent-runtime.js";
|
|
13
68
|
export function subagentDepth(runtime, sessionId) {
|
|
14
69
|
let depth = 0;
|
|
15
70
|
let cur = sessionId;
|
|
@@ -44,7 +99,7 @@ async function waitDrainIdle(runtime, sessionId, signal, timeoutMs = FOREGROUND_
|
|
|
44
99
|
function countActiveChildren(runtime, parentSessionId) {
|
|
45
100
|
let n = 0;
|
|
46
101
|
for (const link of runtime.subagents.listDelegated(parentSessionId)) {
|
|
47
|
-
if (runtime
|
|
102
|
+
if (isChildSessionActive(runtime, link.childSessionId))
|
|
48
103
|
n += 1;
|
|
49
104
|
}
|
|
50
105
|
return n;
|
|
@@ -54,14 +109,18 @@ function createSubagentTool(options) {
|
|
|
54
109
|
const maxActiveChildren = options.maxActiveChildren ?? DEFAULT_MAX_ACTIVE_CHILDREN;
|
|
55
110
|
return {
|
|
56
111
|
name: "subagent",
|
|
57
|
-
description: "Delegate a self-contained task to a subagent (separate session/context). " +
|
|
112
|
+
description: "Delegate a self-contained task to a teammate subagent (separate session/context). " +
|
|
58
113
|
"Use for focused independent work — research, a scoped implementation, analysis, or read-only review — " +
|
|
59
114
|
"so it does not consume this conversation's context. " +
|
|
60
115
|
"By default the child cannot see this chat — give a complete standalone prompt. " +
|
|
61
116
|
"Set inherit_context true to seed the child with this session's completed turns only " +
|
|
62
117
|
"(the current in-flight turn is excluded). " +
|
|
63
118
|
"By default waits for the result; set run_in_background true to get a durable child id and continue later via send_message. " +
|
|
64
|
-
"Optional
|
|
119
|
+
"Optional role (worker|researcher|reviewer|lead) prefixes a role reminder; " +
|
|
120
|
+
"optional output_schema appends an OUTPUT CONTRACT and validates the final JSON; " +
|
|
121
|
+
"optional task_id / task_name register the work on the Agent Teams task board. " +
|
|
122
|
+
"Optional runtime: omit or in-process (default Face child); acp / app-server / claude-code spawn an external subprocess. " +
|
|
123
|
+
"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.",
|
|
65
124
|
parameters: {
|
|
66
125
|
type: "object",
|
|
67
126
|
properties: {
|
|
@@ -79,11 +138,31 @@ function createSubagentTool(options) {
|
|
|
79
138
|
},
|
|
80
139
|
run_in_background: {
|
|
81
140
|
type: "boolean",
|
|
82
|
-
description: "If true, return the child session id immediately (continuable). Default false (wait for the child's final answer).
|
|
141
|
+
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).",
|
|
142
|
+
},
|
|
143
|
+
role: {
|
|
144
|
+
type: "string",
|
|
145
|
+
description: "Spawn role template: default | worker | researcher | reviewer | lead (alias: agent_type).",
|
|
146
|
+
},
|
|
147
|
+
agent_type: {
|
|
148
|
+
type: "string",
|
|
149
|
+
description: "Alias of role (Codex agent_type).",
|
|
150
|
+
},
|
|
151
|
+
task_id: {
|
|
152
|
+
type: "string",
|
|
153
|
+
description: "Optional stable task id on the Agent Teams board (auto-minted when omitted).",
|
|
154
|
+
},
|
|
155
|
+
task_name: {
|
|
156
|
+
type: "string",
|
|
157
|
+
description: "Task board title (defaults to description / task_id).",
|
|
158
|
+
},
|
|
159
|
+
output_schema: {
|
|
160
|
+
type: "object",
|
|
161
|
+
description: "Optional JSON Schema for the child's FINAL answer (Hermes OUTPUT CONTRACT). Validated after the turn; one correction turn on failure for foreground waits.",
|
|
83
162
|
},
|
|
84
163
|
runtime: {
|
|
85
164
|
type: "string",
|
|
86
|
-
description: "Delegation runtime: in-process (default), acp (XRK_ACP_AGENT), app-server (
|
|
165
|
+
description: "Delegation runtime: in-process (default), acp (Settings external-agent.acpAgent / XRK_ACP_AGENT), app-server (Settings / XRK_CODEX_APP_SERVER), claude-code (Settings / XRK_CLAUDE_CODE).",
|
|
87
166
|
},
|
|
88
167
|
worktree: {
|
|
89
168
|
type: "boolean",
|
|
@@ -106,6 +185,25 @@ function createSubagentTool(options) {
|
|
|
106
185
|
if (!prompt) {
|
|
107
186
|
return { content: "subagent: empty prompt", isError: true };
|
|
108
187
|
}
|
|
188
|
+
const roleRaw = a.role ?? a.agent_type;
|
|
189
|
+
let spawnRole;
|
|
190
|
+
if (roleRaw !== undefined && String(roleRaw).trim()) {
|
|
191
|
+
spawnRole = parseAgentTeamSpawnRole(roleRaw);
|
|
192
|
+
if (!spawnRole) {
|
|
193
|
+
return {
|
|
194
|
+
content: "subagent: role/agent_type must be default | worker | researcher | reviewer | lead",
|
|
195
|
+
isError: true,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
const schemaCoerce = coerceOutputSchema(a.output_schema);
|
|
200
|
+
if (schemaCoerce.error) {
|
|
201
|
+
return {
|
|
202
|
+
content: `subagent: ${schemaCoerce.error}`,
|
|
203
|
+
isError: true,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
const outputSchema = schemaCoerce.schema;
|
|
109
207
|
const runtimeKind = parseExternalAgentKind(a.runtime);
|
|
110
208
|
if (runtimeKind === undefined) {
|
|
111
209
|
return {
|
|
@@ -114,19 +212,93 @@ function createSubagentTool(options) {
|
|
|
114
212
|
};
|
|
115
213
|
}
|
|
116
214
|
if (runtimeKind !== "in-process") {
|
|
117
|
-
|
|
215
|
+
const background = a.run_in_background === true;
|
|
216
|
+
if (background && !supportsExternalContinuable(runtimeKind)) {
|
|
118
217
|
return {
|
|
119
|
-
content: "subagent: run_in_background is not supported for
|
|
218
|
+
content: "subagent: run_in_background is not supported for claude-code (print); use acp or app-server",
|
|
219
|
+
isError: true,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
const depth = subagentDepth(options.runtime, options.parentSessionId);
|
|
223
|
+
if (depth >= maxDepth) {
|
|
224
|
+
return {
|
|
225
|
+
content: `subagent: max depth ${maxDepth} reached (current depth ${depth})`,
|
|
226
|
+
isError: true,
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
const active = countActiveChildren(options.runtime, options.parentSessionId);
|
|
230
|
+
if (active >= maxActiveChildren) {
|
|
231
|
+
return {
|
|
232
|
+
content: `subagent: max active children ${maxActiveChildren} reached (active ${active})`,
|
|
120
233
|
isError: true,
|
|
121
234
|
};
|
|
122
235
|
}
|
|
123
236
|
try {
|
|
237
|
+
const product = parseExternalAgentProduct(options.runtime.settingsNamespaces.view("external-agent").value);
|
|
238
|
+
if (background && supportsExternalContinuable(runtimeKind)) {
|
|
239
|
+
const label = String(a.description ?? "").trim() ||
|
|
240
|
+
String(a.task_name ?? "").trim() ||
|
|
241
|
+
`external-${runtimeKind}`;
|
|
242
|
+
const created = await dispatchFaceMethod(options.runtime, "session.create", `tool-sa-ext-${Date.now()}`, {
|
|
243
|
+
parentSessionId: options.parentSessionId,
|
|
244
|
+
label,
|
|
245
|
+
mode: "continuable",
|
|
246
|
+
});
|
|
247
|
+
if (!created.result.ok) {
|
|
248
|
+
return {
|
|
249
|
+
content: `subagent create failed: ${created.result.error.message}`,
|
|
250
|
+
isError: true,
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
const childId = String(created.result.value.sessionId);
|
|
254
|
+
const taskTitle = String(a.task_name ?? "").trim() || label;
|
|
255
|
+
const task = options.runtime.agentTeamTasks.open({
|
|
256
|
+
parentSessionId: options.parentSessionId,
|
|
257
|
+
title: taskTitle,
|
|
258
|
+
childSessionId: childId,
|
|
259
|
+
...(spawnRole && spawnRole !== "default"
|
|
260
|
+
? { role: spawnRole }
|
|
261
|
+
: {}),
|
|
262
|
+
...(String(a.task_id ?? "").trim()
|
|
263
|
+
? { taskId: String(a.task_id).trim() }
|
|
264
|
+
: {}),
|
|
265
|
+
});
|
|
266
|
+
if (outputSchema) {
|
|
267
|
+
options.runtime.agentTeamTasks.setOutputSchema(task.id, outputSchema);
|
|
268
|
+
}
|
|
269
|
+
await startExternalContinuable({
|
|
270
|
+
runtime: options.runtime,
|
|
271
|
+
faceSessionId: childId,
|
|
272
|
+
kind: runtimeKind,
|
|
273
|
+
cwd: resolveSessionCwd(options.runtime, options.parentSessionId) ?? options.runtime.workspaceRoot,
|
|
274
|
+
prompt,
|
|
275
|
+
background: true,
|
|
276
|
+
...(signal ? { signal } : {}),
|
|
277
|
+
...(options.externalEnv ? { env: options.externalEnv } : {}),
|
|
278
|
+
...(product ? { product } : {}),
|
|
279
|
+
...(options.externalSpawn
|
|
280
|
+
? { spawnImpl: options.externalSpawn }
|
|
281
|
+
: {}),
|
|
282
|
+
});
|
|
283
|
+
return {
|
|
284
|
+
content: [
|
|
285
|
+
`Started background external subagent \`${childId}\` (${label} · ${runtimeKind}).`,
|
|
286
|
+
`task ${task.id}` +
|
|
287
|
+
(spawnRole && spawnRole !== "default"
|
|
288
|
+
? ` · role ${spawnRole}`
|
|
289
|
+
: ""),
|
|
290
|
+
"Use followup_task / send_message / wait_agent / interrupt_agent / list_agents / analytics.",
|
|
291
|
+
"Keep working; do not busy-poll.",
|
|
292
|
+
].join("\n"),
|
|
293
|
+
};
|
|
294
|
+
}
|
|
124
295
|
const result = await runExternalAgentTurn({
|
|
125
296
|
kind: runtimeKind,
|
|
126
297
|
cwd: options.runtime.workspaceRoot,
|
|
127
298
|
prompt,
|
|
128
299
|
...(signal ? { signal } : {}),
|
|
129
300
|
...(options.externalEnv ? { env: options.externalEnv } : {}),
|
|
301
|
+
...(product ? { product } : {}),
|
|
130
302
|
...(options.externalSpawn
|
|
131
303
|
? { spawnImpl: options.externalSpawn }
|
|
132
304
|
: {}),
|
|
@@ -161,26 +333,104 @@ function createSubagentTool(options) {
|
|
|
161
333
|
const background = a.run_in_background === true;
|
|
162
334
|
const inherit = a.inherit_context === true;
|
|
163
335
|
const label = String(a.description ?? "").trim() ||
|
|
336
|
+
String(a.task_name ?? "").trim() ||
|
|
164
337
|
(background ? "subagent" : "subagent-task");
|
|
165
338
|
const linkMode = background ? "continuable" : "one-shot";
|
|
166
339
|
const parentCwd = resolveSessionCwd(options.runtime, options.parentSessionId);
|
|
167
340
|
let isolated = null;
|
|
341
|
+
let managedLease = null;
|
|
168
342
|
let worktreeSkip = "";
|
|
169
343
|
if (a.worktree === true) {
|
|
170
344
|
if (worktreeSkippedForRemote(options.runtime.remoteExecution)) {
|
|
171
345
|
worktreeSkip = "worktree skipped: not a local terminal";
|
|
172
346
|
}
|
|
173
347
|
else {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
348
|
+
managedLease =
|
|
349
|
+
options.runtime.managedWorktrees.allocate({
|
|
350
|
+
parentCwd,
|
|
351
|
+
parentSessionId: options.parentSessionId,
|
|
352
|
+
}) ?? null;
|
|
353
|
+
if (managedLease) {
|
|
354
|
+
isolated = {
|
|
355
|
+
path: managedLease.path,
|
|
356
|
+
branch: managedLease.branch,
|
|
357
|
+
repoRoot: managedLease.repoRoot,
|
|
358
|
+
baseCommit: managedLease.baseCommit,
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
else {
|
|
362
|
+
// Fall back to one-shot create when the registry path fails.
|
|
363
|
+
isolated = createSubagentWorktree(parentCwd);
|
|
364
|
+
if (!isolated) {
|
|
365
|
+
worktreeSkip =
|
|
366
|
+
"worktree skipped: not a git repository or worktree add failed";
|
|
367
|
+
}
|
|
178
368
|
}
|
|
179
369
|
}
|
|
180
370
|
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
371
|
+
let childPrompt = applySpawnRoleReminder(prompt, spawnRole);
|
|
372
|
+
if (outputSchema) {
|
|
373
|
+
childPrompt = appendOutputContract(childPrompt, outputSchema);
|
|
374
|
+
}
|
|
375
|
+
childPrompt = isolated
|
|
376
|
+
? `${childPrompt}\n\n${worktreeContextNote(isolated)}`
|
|
377
|
+
: childPrompt;
|
|
378
|
+
const taskTitle = String(a.task_name ?? "").trim() || label;
|
|
379
|
+
const taskIdHint = String(a.task_id ?? "").trim() || undefined;
|
|
380
|
+
const openTask = (childSessionId) => {
|
|
381
|
+
const task = options.runtime.agentTeamTasks.open({
|
|
382
|
+
parentSessionId: options.parentSessionId,
|
|
383
|
+
title: taskTitle,
|
|
384
|
+
childSessionId,
|
|
385
|
+
...(spawnRole && spawnRole !== "default" ? { role: spawnRole } : {}),
|
|
386
|
+
...(taskIdHint ? { taskId: taskIdHint } : {}),
|
|
387
|
+
});
|
|
388
|
+
if (outputSchema) {
|
|
389
|
+
options.runtime.agentTeamTasks.setOutputSchema(task.id, outputSchema);
|
|
390
|
+
}
|
|
391
|
+
if (managedLease) {
|
|
392
|
+
options.runtime.managedWorktrees.bind(managedLease.id, {
|
|
393
|
+
childSessionId,
|
|
394
|
+
teamTaskId: task.id,
|
|
395
|
+
});
|
|
396
|
+
options.runtime.agentTeamTasks.bindWorktree(task.id, {
|
|
397
|
+
path: managedLease.path,
|
|
398
|
+
branch: managedLease.branch,
|
|
399
|
+
id: managedLease.id,
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
else if (isolated) {
|
|
403
|
+
options.runtime.agentTeamTasks.bindWorktree(task.id, {
|
|
404
|
+
path: isolated.path,
|
|
405
|
+
branch: isolated.branch,
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
return task;
|
|
409
|
+
};
|
|
410
|
+
const reclaimIsolated = (keep) => {
|
|
411
|
+
if (worktreeSkip)
|
|
412
|
+
return worktreeSkip;
|
|
413
|
+
if (!isolated)
|
|
414
|
+
return "";
|
|
415
|
+
if (keep) {
|
|
416
|
+
return `[worktree] ${isolated.path}\nbranch ${isolated.branch}\nleft in place (child still running)`;
|
|
417
|
+
}
|
|
418
|
+
if (managedLease) {
|
|
419
|
+
return formatWorktreeResult(options.runtime.managedWorktrees.reclaim(managedLease.id) ??
|
|
420
|
+
finalizeSubagentWorktree(isolated));
|
|
421
|
+
}
|
|
422
|
+
return formatWorktreeResult(finalizeSubagentWorktree(isolated));
|
|
423
|
+
};
|
|
424
|
+
const dropIsolated = () => {
|
|
425
|
+
if (!isolated)
|
|
426
|
+
return;
|
|
427
|
+
if (managedLease) {
|
|
428
|
+
options.runtime.managedWorktrees.reclaim(managedLease.id);
|
|
429
|
+
}
|
|
430
|
+
else {
|
|
431
|
+
finalizeSubagentWorktree(isolated);
|
|
432
|
+
}
|
|
433
|
+
};
|
|
184
434
|
let childId;
|
|
185
435
|
let seedEventCount = 0;
|
|
186
436
|
if (inherit) {
|
|
@@ -198,8 +448,7 @@ function createSubagentTool(options) {
|
|
|
198
448
|
mode: linkMode,
|
|
199
449
|
});
|
|
200
450
|
if (!created.result.ok) {
|
|
201
|
-
|
|
202
|
-
finalizeSubagentWorktree(isolated);
|
|
451
|
+
dropIsolated();
|
|
203
452
|
return {
|
|
204
453
|
content: `subagent create failed: ${created.result.error.message}`,
|
|
205
454
|
isError: true,
|
|
@@ -208,8 +457,7 @@ function createSubagentTool(options) {
|
|
|
208
457
|
childId = String(created.result.value.sessionId);
|
|
209
458
|
}
|
|
210
459
|
else {
|
|
211
|
-
|
|
212
|
-
finalizeSubagentWorktree(isolated);
|
|
460
|
+
dropIsolated();
|
|
213
461
|
return {
|
|
214
462
|
content: `subagent seed failed: ${forked.result.error.message}`,
|
|
215
463
|
isError: true,
|
|
@@ -228,8 +476,7 @@ function createSubagentTool(options) {
|
|
|
228
476
|
mode: linkMode,
|
|
229
477
|
});
|
|
230
478
|
if (!created.result.ok) {
|
|
231
|
-
|
|
232
|
-
finalizeSubagentWorktree(isolated);
|
|
479
|
+
dropIsolated();
|
|
233
480
|
return {
|
|
234
481
|
content: `subagent create failed: ${created.result.error.message}`,
|
|
235
482
|
isError: true,
|
|
@@ -241,16 +488,8 @@ function createSubagentTool(options) {
|
|
|
241
488
|
options.runtime.sessionCwds.set(childId, isolated.path);
|
|
242
489
|
await options.runtime.invalidateAgent?.(childId);
|
|
243
490
|
}
|
|
244
|
-
const
|
|
245
|
-
|
|
246
|
-
return worktreeSkip;
|
|
247
|
-
if (!isolated)
|
|
248
|
-
return "";
|
|
249
|
-
if (keep) {
|
|
250
|
-
return `[worktree] ${isolated.path}\nbranch ${isolated.branch}\nleft in place (child still running)`;
|
|
251
|
-
}
|
|
252
|
-
return formatWorktreeResult(finalizeSubagentWorktree(isolated));
|
|
253
|
-
};
|
|
491
|
+
const task = openTask(childId);
|
|
492
|
+
const worktreeLine = reclaimIsolated;
|
|
254
493
|
const prompted = await dispatchFaceMethod(options.runtime, "session.prompt", `tool-sa-p-${childId}`, {
|
|
255
494
|
sessionId: childId,
|
|
256
495
|
mode: "queue",
|
|
@@ -269,10 +508,15 @@ function createSubagentTool(options) {
|
|
|
269
508
|
return {
|
|
270
509
|
content: [
|
|
271
510
|
`Started background subagent \`${childId}\` (${label}).`,
|
|
511
|
+
`task ${task.id}` +
|
|
512
|
+
(spawnRole && spawnRole !== "default" ? ` · role ${spawnRole}` : ""),
|
|
272
513
|
inherit
|
|
273
514
|
? "Seeded with this session's completed turns (open turn excluded)."
|
|
274
515
|
: undefined,
|
|
275
|
-
|
|
516
|
+
outputSchema
|
|
517
|
+
? "OUTPUT CONTRACT attached; result will be schema-checked on idle."
|
|
518
|
+
: undefined,
|
|
519
|
+
"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, list_agents / analytics for quota.",
|
|
276
520
|
"Keep working; do not busy-poll.",
|
|
277
521
|
worktreeLine(true) || undefined,
|
|
278
522
|
]
|
|
@@ -286,6 +530,10 @@ function createSubagentTool(options) {
|
|
|
286
530
|
catch (err) {
|
|
287
531
|
const message = err instanceof Error ? err.message : String(err);
|
|
288
532
|
await dispatchFaceMethod(options.runtime, "session.cancel", `tool-sa-c-${childId}`, { sessionId: childId }).catch(() => undefined);
|
|
533
|
+
options.runtime.agentTeamTasks.complete(task.id, {
|
|
534
|
+
ok: false,
|
|
535
|
+
preview: message,
|
|
536
|
+
});
|
|
289
537
|
const extra = worktreeLine(false);
|
|
290
538
|
return {
|
|
291
539
|
content: [`subagent failed: ${message}`, extra].filter(Boolean).join("\n"),
|
|
@@ -294,8 +542,48 @@ function createSubagentTool(options) {
|
|
|
294
542
|
}
|
|
295
543
|
const all = readSessionEvents(options.runtime.store, childId);
|
|
296
544
|
// Never return seeded parent assistant text as the child's result.
|
|
297
|
-
|
|
298
|
-
|
|
545
|
+
let owned = seedEventCount > 0 ? all.slice(seedEventCount) : all;
|
|
546
|
+
let text = lastAssistantBodyText(owned);
|
|
547
|
+
let schemaValid;
|
|
548
|
+
let schemaErrors;
|
|
549
|
+
if (outputSchema && text) {
|
|
550
|
+
let checked = validateOutputAgainstSchema(text, outputSchema);
|
|
551
|
+
if (!checked.valid) {
|
|
552
|
+
const retry = await dispatchFaceMethod(options.runtime, "session.prompt", `tool-sa-schema-${childId}`, {
|
|
553
|
+
sessionId: childId,
|
|
554
|
+
mode: "queue",
|
|
555
|
+
content: [
|
|
556
|
+
{
|
|
557
|
+
type: "text",
|
|
558
|
+
text: buildOutputSchemaRetryMessage(checked.errors),
|
|
559
|
+
},
|
|
560
|
+
],
|
|
561
|
+
});
|
|
562
|
+
if (retry.result.ok) {
|
|
563
|
+
try {
|
|
564
|
+
await waitDrainIdle(options.runtime, childId, signal);
|
|
565
|
+
}
|
|
566
|
+
catch {
|
|
567
|
+
/* keep first answer */
|
|
568
|
+
}
|
|
569
|
+
owned = seedEventCount > 0
|
|
570
|
+
? readSessionEvents(options.runtime.store, childId).slice(seedEventCount)
|
|
571
|
+
: readSessionEvents(options.runtime.store, childId);
|
|
572
|
+
text = lastAssistantBodyText(owned) || text;
|
|
573
|
+
checked = validateOutputAgainstSchema(text, outputSchema);
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
schemaValid = checked.valid;
|
|
577
|
+
schemaErrors = checked.errors;
|
|
578
|
+
}
|
|
579
|
+
options.runtime.agentTeamTasks.complete(task.id, {
|
|
580
|
+
ok: true,
|
|
581
|
+
...(text ? { preview: text } : {}),
|
|
582
|
+
...(schemaValid !== undefined ? { schemaValid } : {}),
|
|
583
|
+
...(schemaErrors && schemaErrors.length > 0
|
|
584
|
+
? { schemaErrors }
|
|
585
|
+
: {}),
|
|
586
|
+
});
|
|
299
587
|
const extra = worktreeLine(false);
|
|
300
588
|
if (!text) {
|
|
301
589
|
return {
|
|
@@ -304,14 +592,23 @@ function createSubagentTool(options) {
|
|
|
304
592
|
.join("\n"),
|
|
305
593
|
};
|
|
306
594
|
}
|
|
307
|
-
|
|
595
|
+
const schemaLine = schemaValid === undefined
|
|
596
|
+
? undefined
|
|
597
|
+
: schemaValid
|
|
598
|
+
? "schema_valid=true"
|
|
599
|
+
: `schema_valid=false\n${(schemaErrors ?? []).map((e) => `- ${e}`).join("\n")}`;
|
|
600
|
+
return {
|
|
601
|
+
content: [text, schemaLine, extra].filter(Boolean).join("\n"),
|
|
602
|
+
...(schemaValid === false ? { isError: true } : {}),
|
|
603
|
+
};
|
|
308
604
|
},
|
|
309
605
|
};
|
|
310
606
|
}
|
|
311
607
|
function createListAgentsTool(options) {
|
|
312
608
|
return {
|
|
313
609
|
name: "list_agents",
|
|
314
|
-
description: "List direct child subagents of this session (id, label, mode, running)."
|
|
610
|
+
description: "List direct child subagents of this session (id, label, mode, running, inbox queue/steer). " +
|
|
611
|
+
"Prefaces with depth/active quota. Prefer `analytics` for a fuller quota snapshot.",
|
|
315
612
|
parameters: { type: "object", properties: {} },
|
|
316
613
|
isConcurrencySafe: () => true,
|
|
317
614
|
async execute() {
|
|
@@ -324,31 +621,40 @@ function createListAgentsTool(options) {
|
|
|
324
621
|
}
|
|
325
622
|
const value = listed.result.value;
|
|
326
623
|
const entries = value.entries ?? [];
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
624
|
+
const quota = resolveSubagentQuota(options.runtime, options.parentSessionId);
|
|
625
|
+
const header = `quota depth ${quota.depth}/${quota.maxDepth}` +
|
|
626
|
+
` · active ${quota.active}/${quota.maxActive}` +
|
|
627
|
+
` · slots_free ${quota.slotsFree}` +
|
|
628
|
+
` · delegated ${quota.delegated}`;
|
|
629
|
+
if (!entries.length) {
|
|
630
|
+
return { content: `${header}\n(no subagents)` };
|
|
631
|
+
}
|
|
632
|
+
const lines = entries.map((e) => {
|
|
633
|
+
if (e.kind === "diagnostic") {
|
|
634
|
+
return `${e.id ?? "?"}\tdiagnostic\t${e.reason ?? "unavailable"}`;
|
|
635
|
+
}
|
|
636
|
+
const id = e.id ?? "?";
|
|
637
|
+
const label = e.label ?? "subagent";
|
|
638
|
+
const mode = e.mode ?? "?";
|
|
639
|
+
const activity = e.activity ?? "idle";
|
|
640
|
+
const inbox = id !== "?"
|
|
641
|
+
? childInboxCounts(options.runtime, id)
|
|
642
|
+
: { queued: 0, steering: 0 };
|
|
643
|
+
return `${id}\t${label}\t${mode}\t${activity}\tq=${inbox.queued}\tsteer=${inbox.steering}`;
|
|
644
|
+
});
|
|
645
|
+
return { content: [header, ...lines].join("\n") };
|
|
343
646
|
},
|
|
344
647
|
};
|
|
345
648
|
}
|
|
346
649
|
function createSendMessageTool(options) {
|
|
347
650
|
return {
|
|
348
651
|
name: "send_message",
|
|
349
|
-
description: "
|
|
350
|
-
"
|
|
351
|
-
"
|
|
652
|
+
description: "Pass a message to a continuable background subagent without forcing a new task turn by default. " +
|
|
653
|
+
"delivery=queue (default): land in the child's inbox if it is still working. " +
|
|
654
|
+
"delivery=steer: nudge at the next tool-step / turn boundary. " +
|
|
655
|
+
"For a new task that should trigger a turn, prefer `followup_task`. " +
|
|
656
|
+
"Clears human takeover pause on the Agent Teams task board. " +
|
|
657
|
+
"Returns delivery confirmation only — not the child's answer (use `wait_agent`).",
|
|
352
658
|
parameters: {
|
|
353
659
|
type: "object",
|
|
354
660
|
properties: {
|
|
@@ -357,6 +663,10 @@ function createSendMessageTool(options) {
|
|
|
357
663
|
description: "Child session id from subagent / list_agents.",
|
|
358
664
|
},
|
|
359
665
|
message: { type: "string", description: "Follow-up text for the child." },
|
|
666
|
+
delivery: {
|
|
667
|
+
type: "string",
|
|
668
|
+
description: "queue (default) or steer.",
|
|
669
|
+
},
|
|
360
670
|
},
|
|
361
671
|
required: ["agent_id", "message"],
|
|
362
672
|
},
|
|
@@ -370,10 +680,60 @@ function createSendMessageTool(options) {
|
|
|
370
680
|
isError: true,
|
|
371
681
|
};
|
|
372
682
|
}
|
|
683
|
+
const delivery = a.delivery === "steer" || a.delivery === "queue" ? a.delivery : "queue";
|
|
373
684
|
const prompted = await dispatchFaceMethod(options.runtime, "subagent.prompt", `tool-sa-sm-${childId}`, {
|
|
374
685
|
parentSessionId: options.parentSessionId,
|
|
375
686
|
childSessionId: childId,
|
|
376
687
|
mode: "continuable",
|
|
688
|
+
delivery,
|
|
689
|
+
content: [{ type: "text", text: message }],
|
|
690
|
+
});
|
|
691
|
+
if (!prompted.result.ok) {
|
|
692
|
+
return {
|
|
693
|
+
content: prompted.result.error.message,
|
|
694
|
+
isError: true,
|
|
695
|
+
};
|
|
696
|
+
}
|
|
697
|
+
options.runtime.agentTeamTasks.markResumed(childId);
|
|
698
|
+
return { content: `sent to ${childId} (${delivery})` };
|
|
699
|
+
},
|
|
700
|
+
};
|
|
701
|
+
}
|
|
702
|
+
function createFollowupTaskTool(options) {
|
|
703
|
+
return {
|
|
704
|
+
name: "followup_task",
|
|
705
|
+
description: "Give an existing continuable subagent a new task and trigger a turn (Codex followup_task / TriggerTurn). " +
|
|
706
|
+
"Unlike `send_message` (default queue-only), this always wakes the child. " +
|
|
707
|
+
"Returns delivery confirmation only — use `wait_agent` for the answer.",
|
|
708
|
+
parameters: {
|
|
709
|
+
type: "object",
|
|
710
|
+
properties: {
|
|
711
|
+
agent_id: {
|
|
712
|
+
type: "string",
|
|
713
|
+
description: "Child session id from subagent / list_agents.",
|
|
714
|
+
},
|
|
715
|
+
message: {
|
|
716
|
+
type: "string",
|
|
717
|
+
description: "New task text for the child (triggers a turn).",
|
|
718
|
+
},
|
|
719
|
+
},
|
|
720
|
+
required: ["agent_id", "message"],
|
|
721
|
+
},
|
|
722
|
+
async execute(args) {
|
|
723
|
+
const a = args;
|
|
724
|
+
const childId = String(a.agent_id ?? "").trim();
|
|
725
|
+
const message = String(a.message ?? "").trim();
|
|
726
|
+
if (!childId || !message) {
|
|
727
|
+
return {
|
|
728
|
+
content: "followup_task requires agent_id and message",
|
|
729
|
+
isError: true,
|
|
730
|
+
};
|
|
731
|
+
}
|
|
732
|
+
const prompted = await dispatchFaceMethod(options.runtime, "subagent.prompt", `tool-sa-fu-${childId}`, {
|
|
733
|
+
parentSessionId: options.parentSessionId,
|
|
734
|
+
childSessionId: childId,
|
|
735
|
+
mode: "continuable",
|
|
736
|
+
delivery: "steer",
|
|
377
737
|
content: [{ type: "text", text: message }],
|
|
378
738
|
});
|
|
379
739
|
if (!prompted.result.ok) {
|
|
@@ -382,14 +742,187 @@ function createSendMessageTool(options) {
|
|
|
382
742
|
isError: true,
|
|
383
743
|
};
|
|
384
744
|
}
|
|
385
|
-
|
|
745
|
+
options.runtime.agentTeamTasks.markResumed(childId);
|
|
746
|
+
return { content: `followup_task sent to ${childId} (steer)` };
|
|
747
|
+
},
|
|
748
|
+
};
|
|
749
|
+
}
|
|
750
|
+
function parseWaitTargets(args) {
|
|
751
|
+
const out = [];
|
|
752
|
+
const push = (raw) => {
|
|
753
|
+
const id = String(raw ?? "").trim();
|
|
754
|
+
if (id && !out.includes(id))
|
|
755
|
+
out.push(id);
|
|
756
|
+
};
|
|
757
|
+
if (Array.isArray(args.targets)) {
|
|
758
|
+
for (const t of args.targets)
|
|
759
|
+
push(t);
|
|
760
|
+
}
|
|
761
|
+
else if (typeof args.targets === "string" && args.targets.trim()) {
|
|
762
|
+
for (const part of args.targets.split(/[\s,]+/))
|
|
763
|
+
push(part);
|
|
764
|
+
}
|
|
765
|
+
push(args.agent_id);
|
|
766
|
+
return out;
|
|
767
|
+
}
|
|
768
|
+
function createWaitAgentTool(options) {
|
|
769
|
+
return {
|
|
770
|
+
name: "wait_agent",
|
|
771
|
+
description: "Wait until listed child subagents become idle (Codex wait_agent targets). " +
|
|
772
|
+
"Returns each child's final status and last assistant text when idle. " +
|
|
773
|
+
"Prefer longer timeouts (minutes) over busy-polling with list_agents.",
|
|
774
|
+
parameters: {
|
|
775
|
+
type: "object",
|
|
776
|
+
properties: {
|
|
777
|
+
targets: {
|
|
778
|
+
type: "array",
|
|
779
|
+
description: "Child session ids to wait on (from subagent / list_agents).",
|
|
780
|
+
items: { type: "string" },
|
|
781
|
+
},
|
|
782
|
+
agent_id: {
|
|
783
|
+
type: "string",
|
|
784
|
+
description: "Convenience single-target alias of targets=[agent_id].",
|
|
785
|
+
},
|
|
786
|
+
timeout_ms: {
|
|
787
|
+
type: "number",
|
|
788
|
+
description: `Max wait in ms (default ${WAIT_AGENT_DEFAULT_MS}; max ${FOREGROUND_WAIT_MS}).`,
|
|
789
|
+
},
|
|
790
|
+
},
|
|
791
|
+
},
|
|
792
|
+
async execute(args, signal) {
|
|
793
|
+
const a = args;
|
|
794
|
+
const targets = parseWaitTargets(a);
|
|
795
|
+
if (!targets.length) {
|
|
796
|
+
return {
|
|
797
|
+
content: "wait_agent requires targets or agent_id",
|
|
798
|
+
isError: true,
|
|
799
|
+
};
|
|
800
|
+
}
|
|
801
|
+
let timeoutMs = WAIT_AGENT_DEFAULT_MS;
|
|
802
|
+
if (typeof a.timeout_ms === "number" && Number.isFinite(a.timeout_ms)) {
|
|
803
|
+
timeoutMs = Math.min(FOREGROUND_WAIT_MS, Math.max(WAIT_AGENT_MIN_MS, Math.floor(a.timeout_ms)));
|
|
804
|
+
}
|
|
805
|
+
for (const childId of targets) {
|
|
806
|
+
const link = options.runtime.subagents.getByChild(childId);
|
|
807
|
+
if (!link ||
|
|
808
|
+
link.parentSessionId !== options.parentSessionId ||
|
|
809
|
+
link.mode === "fork") {
|
|
810
|
+
return {
|
|
811
|
+
content: `wait_agent: ${childId} is not a delegated child of this session`,
|
|
812
|
+
isError: true,
|
|
813
|
+
};
|
|
814
|
+
}
|
|
815
|
+
}
|
|
816
|
+
const deadline = Date.now() + timeoutMs;
|
|
817
|
+
const stillRunning = () => targets.some((id) => isChildSessionActive(options.runtime, id));
|
|
818
|
+
while (stillRunning()) {
|
|
819
|
+
if (signal?.aborted) {
|
|
820
|
+
throw new DOMException("aborted", "AbortError");
|
|
821
|
+
}
|
|
822
|
+
if (Date.now() > deadline)
|
|
823
|
+
break;
|
|
824
|
+
const remaining = Math.max(0, deadline - Date.now());
|
|
825
|
+
const slice = Math.min(POLL_MS * 20, remaining);
|
|
826
|
+
const activeOnes = targets.filter((id) => isChildSessionActive(options.runtime, id));
|
|
827
|
+
if (activeOnes.length === 1 &&
|
|
828
|
+
options.runtime.drain.run &&
|
|
829
|
+
!options.runtime.externalAgents.has(activeOnes[0])) {
|
|
830
|
+
try {
|
|
831
|
+
await Promise.race([
|
|
832
|
+
options.runtime.drain.run(activeOnes[0]),
|
|
833
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error("wait slice")), Math.max(POLL_MS, slice))),
|
|
834
|
+
]);
|
|
835
|
+
}
|
|
836
|
+
catch {
|
|
837
|
+
/* keep polling until deadline */
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
else {
|
|
841
|
+
await new Promise((r) => setTimeout(r, Math.max(POLL_MS, slice)));
|
|
842
|
+
}
|
|
843
|
+
}
|
|
844
|
+
const timedOut = stillRunning();
|
|
845
|
+
const lines = [
|
|
846
|
+
timedOut
|
|
847
|
+
? `wait_agent timed out after ${timeoutMs}ms`
|
|
848
|
+
: `wait_agent completed (${timeoutMs}ms budget)`,
|
|
849
|
+
];
|
|
850
|
+
for (const childId of targets) {
|
|
851
|
+
const running = isChildSessionActive(options.runtime, childId);
|
|
852
|
+
const text = running
|
|
853
|
+
? undefined
|
|
854
|
+
: lastAssistantBodyText(readSessionEvents(options.runtime.store, childId));
|
|
855
|
+
const inbox = childInboxCounts(options.runtime, childId);
|
|
856
|
+
lines.push([
|
|
857
|
+
childId,
|
|
858
|
+
running ? "running" : "idle",
|
|
859
|
+
`q=${inbox.queued}`,
|
|
860
|
+
`steer=${inbox.steering}`,
|
|
861
|
+
text
|
|
862
|
+
? `answer:\n${text}`
|
|
863
|
+
: running
|
|
864
|
+
? "(still running)"
|
|
865
|
+
: "(no assistant text)",
|
|
866
|
+
].join("\t"));
|
|
867
|
+
}
|
|
868
|
+
return {
|
|
869
|
+
content: lines.join("\n"),
|
|
870
|
+
...(timedOut ? { isError: true } : {}),
|
|
871
|
+
};
|
|
872
|
+
},
|
|
873
|
+
};
|
|
874
|
+
}
|
|
875
|
+
function createAnalyticsTool(options) {
|
|
876
|
+
return {
|
|
877
|
+
name: "analytics",
|
|
878
|
+
description: "Local subagent quota and queue snapshot for this session (not cloud telemetry). " +
|
|
879
|
+
"Shows depth/active caps, free slots, and each child's running state plus inbox queue/steer counts.",
|
|
880
|
+
parameters: { type: "object", properties: {} },
|
|
881
|
+
isConcurrencySafe: () => true,
|
|
882
|
+
async execute() {
|
|
883
|
+
const quota = resolveSubagentQuota(options.runtime, options.parentSessionId);
|
|
884
|
+
const parentPending = listPendingAdmits(readSessionEvents(options.runtime.store, options.parentSessionId), options.parentSessionId);
|
|
885
|
+
let parentQueued = 0;
|
|
886
|
+
let parentSteer = 0;
|
|
887
|
+
for (const admit of parentPending) {
|
|
888
|
+
if (admit.delivery === "steer")
|
|
889
|
+
parentSteer += 1;
|
|
890
|
+
else
|
|
891
|
+
parentQueued += 1;
|
|
892
|
+
}
|
|
893
|
+
const lines = [
|
|
894
|
+
`purpose: local-debug`,
|
|
895
|
+
`depth: ${quota.depth}/${quota.maxDepth}`,
|
|
896
|
+
`active: ${quota.active}/${quota.maxActive}`,
|
|
897
|
+
`slots_free: ${quota.slotsFree}`,
|
|
898
|
+
`delegated: ${quota.delegated}`,
|
|
899
|
+
`parent_inbox: queue=${parentQueued} steer=${parentSteer}`,
|
|
900
|
+
"children:",
|
|
901
|
+
];
|
|
902
|
+
const children = options.runtime.subagents.listDelegated(options.parentSessionId);
|
|
903
|
+
if (!children.length) {
|
|
904
|
+
lines.push(" (none)");
|
|
905
|
+
}
|
|
906
|
+
else {
|
|
907
|
+
for (const link of children) {
|
|
908
|
+
const activity = isChildSessionActive(options.runtime, link.childSessionId)
|
|
909
|
+
? "running"
|
|
910
|
+
: "idle";
|
|
911
|
+
const inbox = childInboxCounts(options.runtime, link.childSessionId);
|
|
912
|
+
lines.push(` ${link.childSessionId}\t${link.label ?? "subagent"}\t${link.mode}\t${activity}\tq=${inbox.queued}\tsteer=${inbox.steering}`);
|
|
913
|
+
}
|
|
914
|
+
}
|
|
915
|
+
return { content: lines.join("\n") };
|
|
386
916
|
},
|
|
387
917
|
};
|
|
388
918
|
}
|
|
389
919
|
function createInterruptAgentTool(options) {
|
|
390
920
|
return {
|
|
391
921
|
name: "interrupt_agent",
|
|
392
|
-
description: "Interrupt a running child subagent by session id."
|
|
922
|
+
description: "Interrupt a running child subagent by session id. " +
|
|
923
|
+
"Suppresses the automatic parent completion steer for this idle stretch. " +
|
|
924
|
+
"Set takeover true to mark the Agent Teams task as paused for human ownership " +
|
|
925
|
+
"(open the child session in the UI; resume later with send_message).",
|
|
393
926
|
parameters: {
|
|
394
927
|
type: "object",
|
|
395
928
|
properties: {
|
|
@@ -397,18 +930,25 @@ function createInterruptAgentTool(options) {
|
|
|
397
930
|
type: "string",
|
|
398
931
|
description: "Child session id from subagent / list_agents.",
|
|
399
932
|
},
|
|
933
|
+
takeover: {
|
|
934
|
+
type: "boolean",
|
|
935
|
+
description: "If true, pause the task board entry and hand the child to a human (no auto completion notice).",
|
|
936
|
+
},
|
|
400
937
|
},
|
|
401
938
|
required: ["agent_id"],
|
|
402
939
|
},
|
|
403
940
|
async execute(args) {
|
|
404
|
-
const
|
|
941
|
+
const a = args;
|
|
942
|
+
const childId = String(a.agent_id ?? "").trim();
|
|
405
943
|
if (!childId) {
|
|
406
944
|
return { content: "interrupt_agent requires agent_id", isError: true };
|
|
407
945
|
}
|
|
946
|
+
const takeover = a.takeover === true;
|
|
408
947
|
const stopped = await dispatchFaceMethod(options.runtime, "subagent.interrupt", `tool-sa-int-${childId}`, {
|
|
409
948
|
parentSessionId: options.parentSessionId,
|
|
410
949
|
childSessionId: childId,
|
|
411
950
|
mode: "continuable",
|
|
951
|
+
...(takeover ? { takeover: true } : {}),
|
|
412
952
|
});
|
|
413
953
|
if (!stopped.result.ok) {
|
|
414
954
|
// one-shot children: fall back to session.cancel
|
|
@@ -419,8 +959,16 @@ function createInterruptAgentTool(options) {
|
|
|
419
959
|
isError: true,
|
|
420
960
|
};
|
|
421
961
|
}
|
|
962
|
+
options.runtime.suppressOwnedSubagentCompletion(childId);
|
|
422
963
|
}
|
|
423
|
-
|
|
964
|
+
if (takeover) {
|
|
965
|
+
options.runtime.agentTeamTasks.markTakeover(childId);
|
|
966
|
+
}
|
|
967
|
+
return {
|
|
968
|
+
content: takeover
|
|
969
|
+
? `interrupted ${childId} (human takeover — task paused)`
|
|
970
|
+
: `interrupted ${childId}`,
|
|
971
|
+
};
|
|
424
972
|
},
|
|
425
973
|
};
|
|
426
974
|
}
|
|
@@ -430,6 +978,9 @@ export function bindSubagentTools(tools, options) {
|
|
|
430
978
|
createSubagentTool(options),
|
|
431
979
|
createListAgentsTool(options),
|
|
432
980
|
createSendMessageTool(options),
|
|
981
|
+
createFollowupTaskTool(options),
|
|
982
|
+
createWaitAgentTool(options),
|
|
983
|
+
createAnalyticsTool(options),
|
|
433
984
|
createInterruptAgentTool(options),
|
|
434
985
|
]) {
|
|
435
986
|
if (tools.get(tool.name)) {
|
|
@@ -439,5 +990,6 @@ export function bindSubagentTools(tools, options) {
|
|
|
439
990
|
tools.register(tool);
|
|
440
991
|
}
|
|
441
992
|
}
|
|
993
|
+
bindRalphTool(tools, options);
|
|
442
994
|
}
|
|
443
995
|
//# sourceMappingURL=subagent-tools.js.map
|