@xopcai/xopc 0.0.369 → 0.0.371
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +59 -174
- package/README.zh-CN.md +59 -174
- package/dist/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/esm/_md.js +131 -0
- package/dist/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/esm/_u64.js +30 -0
- package/dist/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/esm/sha2.js +252 -0
- package/dist/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/esm/sha256.js +16 -0
- package/dist/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/esm/utils.js +66 -0
- package/dist/browser-ext/dist/sidepanel.js +21 -1
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-Stj17S9u.js → agent-avatar-dicebear-C8MqXy6W.js} +1 -1
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-BLaL4law.js +1 -0
- package/dist/gateway/static/root/assets/agent-plugin-dialog-BrysdA6F.js +1 -0
- package/dist/gateway/static/root/assets/agents-BJRyMNx2.js +66 -0
- package/dist/gateway/static/root/assets/{app-management-settings-panel-pJFe6M6c.js → app-management-settings-panel-Bi02swpZ.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-BrxSpBWa.js → appearance-settings-rr0qirDm.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-DegSl5Lh.js → apps-page-Sz3wl3lV.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-BZQ_VHjp.js → automations-page-DqdbP0hD.js} +1 -1
- package/dist/gateway/static/root/assets/automations-workspace-CxgKlA5d.js +6 -0
- package/dist/gateway/static/root/assets/{block-editor-3XjFv3kK.js → block-editor-CfVR1zGa.js} +3 -3
- package/dist/gateway/static/root/assets/browser-automations-page-DeYnh3mY.js +3 -0
- package/dist/gateway/static/root/assets/{browser-settings-page-ch2_bQF0.js → browser-settings-page-DDZvlGCD.js} +2 -2
- package/dist/gateway/static/root/assets/{capabilities-DO-vfNKI.js → capabilities-CY4SiHcP.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-B48r0DDa.js → capabilities-gjQtMhKu.js} +1 -1
- package/dist/gateway/static/root/assets/capabilities-page-Bl6PZqx3.js +2 -0
- package/dist/gateway/static/root/assets/{capabilities-settings-panel-NckMsJ5N.js → capabilities-settings-panel-B-MM4LJA.js} +4 -4
- package/dist/gateway/static/root/assets/{capability-header-actions-CY8KCO9j.js → capability-header-actions-CAiY7HK1.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-CHOS2CGa.js → channels-D1_fDkhu.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-terminal-dock-Bwknnb4c.js → chat-terminal-dock-D6slpF2a.js} +2 -2
- package/dist/gateway/static/root/assets/{computer-settings-page-B2xeFCSt.js → computer-settings-page-D1n_uQHN.js} +1 -1
- package/dist/gateway/static/root/assets/{connector-service-page-C83DnAqK.js → connector-service-page-FvSCyJzn.js} +1 -1
- package/dist/gateway/static/root/assets/connectors-page-DroD-gQn.js +1 -0
- package/dist/gateway/static/root/assets/copy-text-row-C1gaJwlZ.js +1 -0
- package/dist/gateway/static/root/assets/{date-picker-Bq9GR-DU.js → date-picker-Bl-HqvGU.js} +1 -1
- package/dist/gateway/static/root/assets/dependency-picker-DY4nU-HL.js +1 -0
- package/dist/gateway/static/root/assets/{desktop-pet-BwsbQw8V.js → desktop-pet-_A89B2xw.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-sL9i44pP.js → desktop-pet-settings-BJWkGynu.js} +1 -1
- package/dist/gateway/static/root/assets/device-pairing-wizard-DJ_ITvkI.js +1 -0
- package/dist/gateway/static/root/assets/{directory-picker-path-field-BFlDmsS5.js → directory-picker-path-field-Bj2Cpmxs.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-7Z1Tp7-w.js → extension-debug-page-BfAtjhoK.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-uGqvb8QX.js → extension-page-BFjc1zDp.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-provider-xlSyz4Z6.js → extension-provider-Br6LXyIj.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-CKHgrjOs.js → extension-settings-page-oAwllsMb.js} +1 -1
- package/dist/gateway/static/root/assets/{fallback-models-BwQg0G1D.js → fallback-models-KHd6tw_t.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-realtime-F6D4A7N5.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-settings-BAQnSEMJ.js → gateway-settings-BIyhyiOq.js} +1 -1
- package/dist/gateway/static/root/assets/home-page-CEjaIUTF.js +2 -0
- package/dist/gateway/static/root/assets/{imports-page-re1_Nh64.js → imports-page-ClFqRiGQ.js} +1 -1
- package/dist/gateway/static/root/assets/index-BGBkIIzM.css +1 -0
- package/dist/gateway/static/root/assets/index-GBFmI8im.js +106 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-B_xja9LN.js → keyboard-shortcuts-settings-Ca9_GJSQ.js} +1 -1
- package/dist/gateway/static/root/assets/{local-app-workbench-page-CErdCrPX.js → local-app-workbench-page-BaK9zX1-.js} +1 -1
- package/dist/gateway/static/root/assets/{local-apps-page-BPL2RXdK.js → local-apps-page-1CjSftZ3.js} +1 -1
- package/dist/gateway/static/root/assets/local-session-drafts-pox8evDV.js +1 -0
- package/dist/gateway/static/root/assets/logs-page-6joZBbcx.js +2 -0
- package/dist/gateway/static/root/assets/management-settings-Cnubkklb.js +1 -0
- package/dist/gateway/static/root/assets/note-detail-panel-B6DHbMzT.js +5 -0
- package/dist/gateway/static/root/assets/notes-page-CGZkIKdi.js +8 -0
- package/dist/gateway/static/root/assets/{page-context-capture-button-tf77xIz3.js → page-context-capture-button-y3QmhTu2.js} +1 -1
- package/dist/gateway/static/root/assets/personal-page-C_roXCJB.js +1 -0
- package/dist/gateway/static/root/assets/{product-open-page-Dc3Y-Y7J.js → product-open-page-CSRYWt0f.js} +1 -1
- package/dist/gateway/static/root/assets/{product-preview-content-MG_hmVA3.js → product-preview-content-DuOML6gs.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-v7xtnvha.js +1 -0
- package/dist/gateway/static/root/assets/{projects-page-MllfNLGA.js → projects-page-BuJCBT6n.js} +1 -1
- package/dist/gateway/static/root/assets/{remote-access-hub-Bs-C70el.js → remote-access-hub-DpHnyBnG.js} +1 -1
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-DpJ5jNzR.js → runtime-tools-settings-panel-DTMTL0hy.js} +1 -1
- package/dist/gateway/static/root/assets/{scenes-page-Dpxamkw6.js → scenes-page-B0JqO_fM.js} +2 -2
- package/dist/gateway/static/root/assets/{schema-form-DUeyQ1zh.js → schema-form-g4z7GH4W.js} +1 -1
- package/dist/gateway/static/root/assets/{send-session-input-Dgn4BRk_.js → send-session-input-BW40VHiL.js} +1 -1
- package/dist/gateway/static/root/assets/session-manager-BqlvrjPE.js +16 -0
- package/dist/gateway/static/root/assets/sessions-page-CftImbH7.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-BkvbSieZ.js +1 -0
- package/dist/gateway/static/root/assets/{settings-page-DouHuBXt.js → settings-page-YD-U8BVw.js} +1 -1
- package/dist/gateway/static/root/assets/setup-status-panel-q_X3kxw2.js +1 -0
- package/dist/gateway/static/root/assets/{share-link-dialog-DJTabLAM.js → share-link-dialog-HCHM8qnf.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-jw7h4t_B.js → share-preview-page-Ce6FNWt1.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-KHRg_-03.js +1 -0
- package/dist/gateway/static/root/assets/{skill-api-CfyX_0zN.js → skill-api-BpqDMkNB.js} +1 -1
- package/dist/gateway/static/root/assets/skills-page-Bnfn51ks.js +2 -0
- package/dist/gateway/static/root/assets/{system-settings-panel-DWf256TE.js → system-settings-panel-CncvC2CI.js} +1 -1
- package/dist/gateway/static/root/assets/{task-detail-page-DE6N1ZQe.js → task-detail-page-BVJKdnMC.js} +2 -2
- package/dist/gateway/static/root/assets/{tunnel-api-BBm9esrY.js → tunnel-api-g7etuoaT.js} +1 -1
- package/dist/gateway/static/root/assets/{usage-page-C93x89uW.js → usage-page-Dao1I-5F.js} +1 -1
- package/dist/gateway/static/root/assets/{use-composer-attachments-C7Gaaai1.js → use-composer-attachments-DJya1hIL.js} +1 -1
- package/dist/gateway/static/root/assets/use-file-preview-expanded-C5ONO7sF.js +2 -0
- package/dist/gateway/static/root/assets/user-model-page-jr986ucl.js +2 -0
- package/dist/gateway/static/root/assets/{work-discovery-overlay-Bs2MKiTv.js → work-discovery-overlay-CC3mr7tX.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-BR_U_snV.js → workflow-run-setup-panel-CqpXZJxs.js} +2 -2
- package/dist/gateway/static/root/assets/workflows-page-DOk6tBbK.js +6 -0
- package/dist/gateway/static/root/assets/{workspace-api-Si2o3inw.js → workspace-api-WhbMvdBE.js} +2 -2
- package/dist/gateway/static/root/index.html +18 -20
- package/dist/package.js +1 -1
- package/dist/packages/endpoint-tools-client/src/index.js +189 -0
- package/dist/packages/endpoint-tools-protocol/src/bridge.js +105 -0
- package/dist/packages/endpoint-tools-protocol/src/index.js +95 -2
- package/dist/packages/endpoint-tools-protocol/src/location.js +109 -0
- package/dist/packages/endpoint-tools-protocol/src/personal.js +149 -0
- package/dist/packages/gateway-contract/src/session-input-command.js +30 -5
- package/dist/src/agent/agent-manager.js +23 -27
- package/dist/src/agent/background-review/run-background-review.js +1 -1
- package/dist/src/agent/embedded/codemode-extension.d.ts +7 -0
- package/dist/src/agent/embedded/codemode-extension.js +232 -0
- package/dist/src/agent/embedded/codemode-output.d.ts +2 -0
- package/dist/src/agent/embedded/codemode-output.js +34 -0
- package/dist/src/agent/embedded/external-tool-discovery.d.ts +6 -0
- package/dist/src/agent/embedded/external-tool-discovery.js +60 -0
- package/dist/src/agent/embedded/model-runtime.js +5 -2
- package/dist/src/agent/embedded/run-for-session.js +10 -1
- package/dist/src/agent/embedded/run-turn.js +10 -3
- package/dist/src/agent/embedded/session-runner.d.ts +9 -1
- package/dist/src/agent/embedded/session-runner.js +111 -23
- package/dist/src/agent/embedded/session-tool-result-guard.d.ts +2 -0
- package/dist/src/agent/embedded/session-tool-result-guard.js +17 -0
- package/dist/src/agent/embedded/subscribe-session.js +14 -4
- package/dist/src/agent/embedded/tool-metadata.d.ts +15 -0
- package/dist/src/agent/embedded/tool-metadata.js +38 -0
- package/dist/src/agent/embedded/tool-search-extension.d.ts +5 -0
- package/dist/src/agent/embedded/tool-search-extension.js +31 -0
- package/dist/src/agent/embedded/types.d.ts +7 -0
- package/dist/src/agent/embedded/xopc-tools-bridge.js +6 -0
- package/dist/src/agent/external-tools/endpoint-provider.d.ts +1 -1
- package/dist/src/agent/external-tools/endpoint-provider.js +174 -53
- package/dist/src/agent/external-tools/extension-provider.js +8 -1
- package/dist/src/agent/external-tools/gateway-tools.d.ts +1 -1
- package/dist/src/agent/external-tools/gateway-tools.js +45 -22
- package/dist/src/agent/external-tools/index.js +46 -14
- package/dist/src/agent/external-tools/memory-provider.js +8 -1
- package/dist/src/agent/external-tools/read-policy.js +2 -1
- package/dist/src/agent/external-tools/service.d.ts +2 -0
- package/dist/src/agent/external-tools/service.js +25 -3
- package/dist/src/agent/external-tools/tool-registry.d.ts +14 -0
- package/dist/src/agent/external-tools/tool-registry.js +14 -0
- package/dist/src/agent/external-tools/types.d.ts +8 -1
- package/dist/src/agent/external-tools/types.js +0 -1
- package/dist/src/agent/inbound/attachment-pipeline.js +1 -1
- package/dist/src/agent/mcp/config.d.ts +18 -0
- package/dist/src/agent/mcp/{bundle-mcp-config.js → config.js} +8 -25
- package/dist/src/agent/mcp/native-mcp.d.ts +6 -0
- package/dist/src/agent/mcp/native-mcp.js +73 -0
- package/dist/src/agent/service.js +3 -6
- package/dist/src/agent/skills/index.js +1 -1
- package/dist/src/agent/skills/installer.js +1 -1
- package/dist/src/agent/skills/managed-store.js +1 -1
- package/dist/src/agent/skills/skill-manage-ops.js +1 -1
- package/dist/src/agent/skills/skill-manager.js +1 -1
- package/dist/src/agent/skills/skill-sources.js +1 -1
- package/dist/src/agent/source-context/index.d.ts +0 -1
- package/dist/src/agent/source-context/index.js +1 -2
- package/dist/src/agent/source-context/injector.js +1 -0
- package/dist/src/agent/source-context/types.d.ts +2 -2
- package/dist/src/agent/source-context/types.js +1 -1
- package/dist/src/agent/tools/cli-clarify.js +1 -1
- package/dist/src/agent/tools/codemode-permissions.d.ts +4 -0
- package/dist/src/agent/tools/codemode-permissions.js +23 -0
- package/dist/src/agent/tools/dataBatch.js +3 -1
- package/dist/src/agent/tools/delegation-parent-policy.js +1 -4
- package/dist/src/agent/tools/factory.js +4 -3
- package/dist/src/agent/tools/xopc-use-tool.js +2 -2
- package/dist/src/agent/transcript/provider-capabilities.js +0 -1
- package/dist/src/agent/transcript/transcript-policy.js +1 -2
- package/dist/src/agent-catalog/capabilities.js +2 -2
- package/dist/src/agent-catalog/migrations/legacy-config-cutover.js +1 -1
- package/dist/src/agent-catalog/repository.js +1 -1
- package/dist/src/agent-config/schema.d.ts +28 -0
- package/dist/src/agent-config/schema.js +7 -0
- package/dist/src/auth/credentials.js +7 -20
- package/dist/src/auth/model-credential-store.js +11 -4
- package/dist/src/auth/oauth/index.d.ts +1 -1
- package/dist/src/auth/oauth/index.js +3 -3
- package/dist/src/auth/oauth/openai.d.ts +2 -0
- package/dist/src/auth/oauth/openai.js +90 -0
- package/dist/src/auth/oauth/registry.js +3 -3
- package/dist/src/auth/oauth/types.d.ts +1 -0
- package/dist/src/auth/oauth/xopc-cloud.js +1 -1
- package/dist/src/auth/sync-provider-auth.js +5 -0
- package/dist/src/automations/capabilities/drafts.js +1 -1
- package/dist/src/bootstrap/application-state.js +1 -1
- package/dist/src/capabilities/runtime/dispatcher.js +1 -1
- package/dist/src/capabilities/runtime/product.js +1 -1
- package/dist/src/chat-commands/builtins/model.js +2 -2
- package/dist/src/cli/command-manifest.js +1 -1
- package/dist/src/cli/commands/agents.js +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/doctor/checks/provider-auth.js +1 -1
- package/dist/src/cli/commands/extension-agent-plugin.js +0 -19
- package/dist/src/cli/commands/mcp.js +36 -2
- package/dist/src/cli/commands/models.js +2 -2
- package/dist/src/cli/commands/onboard/model.js +2 -2
- package/dist/src/cli/utils/init-workspace-core.js +1 -1
- package/dist/src/cli/utils/oauth-login.js +2 -2
- package/dist/src/config/agent-profile.js +1 -1
- package/dist/src/config/index.js +3 -3
- package/dist/src/config/mcp-config-normalize.d.ts +0 -3
- package/dist/src/config/mcp-config-normalize.js +2 -22
- package/dist/src/config/models-json.d.ts +0 -5
- package/dist/src/config/models-json.js +13 -4
- package/dist/src/config/paths.d.ts +0 -1
- package/dist/src/config/paths.js +1 -4
- package/dist/src/config/schema.d.ts +130 -36
- package/dist/src/config/schema.js +52 -35
- package/dist/src/connectors/auth-provider-registry.d.ts +1 -1
- package/dist/src/connectors/auth-provider-registry.js +1 -21
- package/dist/src/connectors/china-catalog.js +5 -5
- package/dist/src/connectors/connection-recovery-service.d.ts +1 -6
- package/dist/src/connectors/connection-recovery-service.js +3 -105
- package/dist/src/connectors/health.d.ts +1 -2
- package/dist/src/connectors/health.js +2 -101
- package/dist/src/connectors/types.d.ts +1 -1
- package/dist/src/endpoint-tools/binding-service.d.ts +2 -0
- package/dist/src/endpoint-tools/binding-service.js +14 -2
- package/dist/src/endpoint-tools/bridge-host.d.ts +15 -0
- package/dist/src/endpoint-tools/bridge-host.js +166 -0
- package/dist/src/endpoint-tools/bridge.d.ts +27 -0
- package/dist/src/endpoint-tools/bridge.js +88 -0
- package/dist/src/endpoint-tools/capability-catalog.d.ts +2 -0
- package/dist/src/endpoint-tools/capability-catalog.js +8 -0
- package/dist/src/endpoint-tools/grant-service.d.ts +69 -0
- package/dist/src/endpoint-tools/grant-service.js +113 -0
- package/dist/src/endpoint-tools/index.js +1 -1
- package/dist/src/endpoint-tools/invocation-service.js +21 -4
- package/dist/src/endpoint-tools/location-task.d.ts +22 -0
- package/dist/src/endpoint-tools/location-task.js +114 -0
- package/dist/src/endpoint-tools/policy.js +21 -1
- package/dist/src/endpoint-tools/registry.d.ts +2 -0
- package/dist/src/endpoint-tools/registry.js +9 -0
- package/dist/src/endpoint-tools/result-projector.d.ts +15 -0
- package/dist/src/endpoint-tools/result-projector.js +31 -0
- package/dist/src/endpoint-tools/runtime.d.ts +2 -0
- package/dist/src/endpoint-tools/runtime.js +15 -2
- package/dist/src/endpoint-tools/target-resolver.d.ts +12 -0
- package/dist/src/endpoint-tools/target-resolver.js +27 -0
- package/dist/src/endpoint-tools/turn-context.d.ts +6 -0
- package/dist/src/endpoint-tools/turn-context.js +29 -0
- package/dist/src/endpoint-tools/upload-service.d.ts +4 -2
- package/dist/src/endpoint-tools/upload-service.js +29 -4
- package/dist/src/extensions/agent-plugins/auth.d.ts +0 -2
- package/dist/src/extensions/agent-plugins/auth.js +2 -19
- package/dist/src/extensions/agent-plugins/credentials.js +3 -19
- package/dist/src/extensions/agent-plugins/inventory.d.ts +2 -2
- package/dist/src/extensions/agent-plugins/mcp-adapter.js +1 -5
- package/dist/src/extensions/agent-plugins/source-http-fetch.d.ts +2 -0
- package/dist/src/{agent/mcp/plugin-http-fetch.js → extensions/agent-plugins/source-http-fetch.js} +7 -7
- package/dist/src/extensions/agent-plugins/sources.js +2 -2
- package/dist/src/extensions/agent-plugins/store.js +1 -3
- package/dist/src/extensions/agent-plugins/validation.d.ts +0 -4
- package/dist/src/extensions/agent-plugins/validation.js +14 -21
- package/dist/src/gateway/agents-admin.d.ts +5 -0
- package/dist/src/gateway/agents-admin.js +58 -3
- package/dist/src/gateway/chat-stream/mapper.js +9 -0
- package/dist/src/gateway/chat-stream/protocol.d.ts +4 -4
- package/dist/src/gateway/hono/lib/config-payload.d.ts +9 -4
- package/dist/src/gateway/hono/lib/config-payload.js +2 -5
- package/dist/src/gateway/hono/oauth-async.js +9 -2
- package/dist/src/gateway/hono/routes/agent-plugins.js +4 -9
- package/dist/src/gateway/hono/routes/agents.js +5 -4
- package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
- package/dist/src/gateway/hono/routes/connection-waits.js +2 -5
- package/dist/src/gateway/hono/routes/connectors.js +5 -60
- package/dist/src/gateway/hono/routes/device-authorizations.d.ts +3 -0
- package/dist/src/gateway/hono/routes/device-authorizations.js +74 -0
- package/dist/src/gateway/hono/routes/endpoint-compatibility.js +8 -0
- package/dist/src/gateway/hono/routes/endpoint-tools.d.ts +1 -0
- package/dist/src/gateway/hono/routes/endpoint-tools.js +70 -3
- package/dist/src/gateway/hono/routes/lazy-bundles.js +17 -1
- package/dist/src/gateway/hono/routes/mcp.d.ts +1 -1
- package/dist/src/gateway/hono/routes/mcp.js +11 -237
- package/dist/src/gateway/hono/routes/notes.js +2 -2
- package/dist/src/gateway/hono/routes/projects.js +2 -2
- package/dist/src/gateway/hono/routes/session-command-handler.js +11 -1
- package/dist/src/gateway/hono/routes/session-input-handler.d.ts +8 -2
- package/dist/src/gateway/hono/routes/session-input-handler.js +26 -2
- package/dist/src/gateway/hono/routes/tasks.js +1 -1
- package/dist/src/gateway/image-generation-setup.js +1 -1
- package/dist/src/gateway/service/config-coordinator.js +2 -5
- package/dist/src/gateway/service/marketplace-service.js +2 -2
- package/dist/src/gateway/service/run-gateway-agent.js +13 -5
- package/dist/src/gateway/service/session-input-coordinator.d.ts +1 -1
- package/dist/src/gateway/service/session-input-coordinator.js +29 -9
- package/dist/src/gateway/service/sessions-api.js +0 -6
- package/dist/src/gateway/service.js +7 -16
- package/dist/src/gateway/session-reset-service.js +0 -6
- package/dist/src/gateway/xopc-cloud-capability-setup.js +1 -1
- package/dist/src/home-intelligence/host.js +2 -2
- package/dist/src/imports/compatibility.js +12 -10
- package/dist/src/local-apps/service.js +1 -1
- package/dist/src/mcp/channel-bridge.js +1 -1
- package/dist/src/notes/agent-context.js +1 -1
- package/dist/src/personal-agent/service.js +1 -1
- package/dist/src/providers/env-keys.js +1 -1
- package/dist/src/providers/index.js +26 -24
- package/dist/src/providers/model-call.d.ts +0 -2
- package/dist/src/providers/model-call.js +2 -6
- package/dist/src/providers/model-registry.js +4 -2
- package/dist/src/providers/model-supplements.d.ts +3 -3
- package/dist/src/providers/model-supplements.js +6 -27
- package/dist/src/providers/presentation.js +3 -8
- package/dist/src/providers/prompt-cache-plan.js +1 -1
- package/dist/src/providers/provider-auth-service.d.ts +1 -1
- package/dist/src/providers/provider-auth-service.js +7 -2
- package/dist/src/providers/provider-policy.d.ts +3 -0
- package/dist/src/providers/provider-policy.js +14 -0
- package/dist/src/providers/register-runtime-providers.js +6 -1
- package/dist/src/realtime/runtime.js +1 -1
- package/dist/src/session/store.js +7 -1
- package/dist/src/session/transcript-events.d.ts +5 -0
- package/dist/src/session/transcript-events.js +1 -0
- package/dist/src/session/types.d.ts +2 -0
- package/dist/src/storage/sqlite/device-grant-audit-repository.d.ts +11 -0
- package/dist/src/storage/sqlite/device-grant-audit-repository.js +10 -0
- package/dist/src/storage/sqlite/endpoint-device-settings-repository.d.ts +7 -0
- package/dist/src/storage/sqlite/endpoint-device-settings-repository.js +17 -0
- package/dist/src/storage/sqlite/migrations/240_device_settings.sql +5 -0
- package/dist/src/storage/sqlite/migrations/241_device_grant_audit.sql +13 -0
- package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/runner.js +3 -3
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/storage/sqlite/session-input-repository.d.ts +1 -0
- package/dist/src/storage/sqlite/session-input-repository.js +5 -1
- package/dist/src/tasks/capabilities/read.js +2 -2
- package/dist/src/tui/backends/embedded-backend.js +1 -1
- package/dist/src/tui/backends/gateway-realtime-backend.js +1 -1
- package/dist/src/tui/xopc-tui-keybindings.d.ts +4 -4
- package/dist/src/voice/realtime/persona-context.js +1 -1
- package/package.json +20 -9
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-CCRfvuov.js +0 -1
- package/dist/gateway/static/root/assets/agent-plugin-dialog-CRlzd8El.js +0 -1
- package/dist/gateway/static/root/assets/agents-_ug2LCQb.js +0 -66
- package/dist/gateway/static/root/assets/automations-workspace-BQywN6nG.js +0 -6
- package/dist/gateway/static/root/assets/browser-automations-page-yiEuG1v7.js +0 -3
- package/dist/gateway/static/root/assets/capabilities-page-BEnFt_dj.js +0 -2
- package/dist/gateway/static/root/assets/connectors-page-D6wTmWA6.js +0 -2
- package/dist/gateway/static/root/assets/copy-text-row-BHDs3cBa.js +0 -1
- package/dist/gateway/static/root/assets/dependency-picker-BTERkA9X.js +0 -1
- package/dist/gateway/static/root/assets/device-pairing-wizard-DI2bqaKO.js +0 -1
- package/dist/gateway/static/root/assets/dist-Che_jiQF.js +0 -1
- package/dist/gateway/static/root/assets/gateway-realtime-DDWymi-o.js +0 -1
- package/dist/gateway/static/root/assets/home-page-BZDjvwet.js +0 -2
- package/dist/gateway/static/root/assets/index-BB1z8QxA.js +0 -106
- package/dist/gateway/static/root/assets/index-D9R6tU7r.css +0 -1
- package/dist/gateway/static/root/assets/link-2-D_ZKYUW7.js +0 -1
- package/dist/gateway/static/root/assets/local-session-drafts-DRPsDCj1.js +0 -1
- package/dist/gateway/static/root/assets/logs-page-DL-BM0xq.js +0 -2
- package/dist/gateway/static/root/assets/management-settings-BOVRHhXk.js +0 -1
- package/dist/gateway/static/root/assets/note-detail-panel-DJJK2yL4.js +0 -5
- package/dist/gateway/static/root/assets/notes-page-oCxO7ZTv.js +0 -8
- package/dist/gateway/static/root/assets/personal-page-DOk9gUK5.js +0 -1
- package/dist/gateway/static/root/assets/project-detail-page-3uAzbW4T.js +0 -1
- package/dist/gateway/static/root/assets/session-manager-LInoZ_Yi.js +0 -16
- package/dist/gateway/static/root/assets/sessions-page-BCVlNHtq.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-Bz-ue9fZ.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-B5BoZ-1y.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-BlnlzGjH.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-DjdTeYzm.js +0 -2
- package/dist/gateway/static/root/assets/use-file-preview-expanded-Db2VYg1b.js +0 -2
- package/dist/gateway/static/root/assets/user-model-page-B74LkVbp.js +0 -2
- package/dist/gateway/static/root/assets/workflows-page-Crk4SxtC.js +0 -6
- package/dist/src/agent/embedded/system-prompt-override.d.ts +0 -2
- package/dist/src/agent/embedded/system-prompt-override.js +0 -21
- package/dist/src/agent/external-tools/mcp-provider.d.ts +0 -32
- package/dist/src/agent/external-tools/mcp-provider.js +0 -208
- package/dist/src/agent/mcp/bundle-mcp-config.d.ts +0 -20
- package/dist/src/agent/mcp/bundle-mcp-gateway.d.ts +0 -79
- package/dist/src/agent/mcp/bundle-mcp-gateway.js +0 -93
- package/dist/src/agent/mcp/bundle-mcp-names.d.ts +0 -1
- package/dist/src/agent/mcp/bundle-mcp-names.js +0 -25
- package/dist/src/agent/mcp/bundle-mcp-policy.d.ts +0 -1
- package/dist/src/agent/mcp/bundle-mcp-policy.js +0 -6
- package/dist/src/agent/mcp/bundle-mcp-runtime.d.ts +0 -46
- package/dist/src/agent/mcp/bundle-mcp-runtime.js +0 -571
- package/dist/src/agent/mcp/bundle-mcp-tools.d.ts +0 -2
- package/dist/src/agent/mcp/bundle-mcp-tools.js +0 -2
- package/dist/src/agent/mcp/bundle-mcp-types.d.ts +0 -76
- package/dist/src/agent/mcp/bundle-mcp-types.js +0 -1
- package/dist/src/agent/mcp/embedded-mcp.d.ts +0 -10
- package/dist/src/agent/mcp/embedded-mcp.js +0 -14
- package/dist/src/agent/mcp/index.d.ts +0 -5
- package/dist/src/agent/mcp/index.js +0 -12
- package/dist/src/agent/mcp/mcp-config-shared.d.ts +0 -8
- package/dist/src/agent/mcp/mcp-config-shared.js +0 -39
- package/dist/src/agent/mcp/mcp-http.d.ts +0 -23
- package/dist/src/agent/mcp/mcp-http.js +0 -67
- package/dist/src/agent/mcp/mcp-resource-id.d.ts +0 -6
- package/dist/src/agent/mcp/mcp-resource-id.js +0 -19
- package/dist/src/agent/mcp/mcp-stdio-transport.d.ts +0 -26
- package/dist/src/agent/mcp/mcp-stdio-transport.js +0 -120
- package/dist/src/agent/mcp/mcp-stdio.d.ts +0 -18
- package/dist/src/agent/mcp/mcp-stdio.js +0 -35
- package/dist/src/agent/mcp/mcp-transport-config.d.ts +0 -28
- package/dist/src/agent/mcp/mcp-transport-config.js +0 -91
- package/dist/src/agent/mcp/mcp-transport.d.ts +0 -17
- package/dist/src/agent/mcp/mcp-transport.js +0 -141
- package/dist/src/agent/mcp/oauth/index.d.ts +0 -6
- package/dist/src/agent/mcp/oauth/index.js +0 -6
- package/dist/src/agent/mcp/oauth/mcp-oauth-errors.d.ts +0 -5
- package/dist/src/agent/mcp/oauth/mcp-oauth-errors.js +0 -14
- package/dist/src/agent/mcp/oauth/mcp-oauth-manager.d.ts +0 -30
- package/dist/src/agent/mcp/oauth/mcp-oauth-manager.js +0 -276
- package/dist/src/agent/mcp/oauth/mcp-oauth-provider.d.ts +0 -33
- package/dist/src/agent/mcp/oauth/mcp-oauth-provider.js +0 -103
- package/dist/src/agent/mcp/oauth/mcp-oauth-session.d.ts +0 -31
- package/dist/src/agent/mcp/oauth/mcp-oauth-session.js +0 -181
- package/dist/src/agent/mcp/oauth/mcp-oauth-store.d.ts +0 -12
- package/dist/src/agent/mcp/oauth/mcp-oauth-store.js +0 -91
- package/dist/src/agent/mcp/oauth/mcp-oauth-types.d.ts +0 -22
- package/dist/src/agent/mcp/oauth/mcp-oauth-types.js +0 -1
- package/dist/src/agent/mcp/plugin-http-fetch.d.ts +0 -2
- package/dist/src/agent/source-context/mcp-resource-context.d.ts +0 -8
- package/dist/src/agent/source-context/mcp-resource-context.js +0 -30
- package/dist/src/auth/oauth/openai-codex.d.ts +0 -9
- package/dist/src/auth/oauth/openai-codex.js +0 -414
- package/dist/src/connectors/plugin-mcp-recovery.d.ts +0 -28
- package/dist/src/connectors/plugin-mcp-recovery.js +0 -90
- package/dist/src/extensions/agent-plugins/connection.d.ts +0 -8
- package/dist/src/extensions/agent-plugins/connection.js +0 -41
- package/dist/src/extensions/agent-plugins/health.d.ts +0 -4
- package/dist/src/extensions/agent-plugins/health.js +0 -48
- package/dist/src/extensions/agent-plugins/plugin-oauth-scope.d.ts +0 -1
- package/dist/src/extensions/agent-plugins/plugin-oauth-scope.js +0 -8
|
@@ -10,6 +10,7 @@ import { setTraceIdentity, traceOperation, traceRun, traceTools } from "../../ob
|
|
|
10
10
|
import { resolveEffectiveAgentConfigForSession } from "../../config/agent-profile.js";
|
|
11
11
|
import { continuesAfterTool, trackAiUsageStream } from "../../usage/recorder.js";
|
|
12
12
|
import { runWithEmbeddedExecutionSession } from "./execution-context.js";
|
|
13
|
+
import { externalPolicyContext } from "./tool-metadata.js";
|
|
13
14
|
import { isComputerControlActive, isComputerLeaseTool, stopComputerControl } from "../../computer/control-guard.js";
|
|
14
15
|
import { EmbeddedRunConflictError, abortEmbeddedRun, acquireEmbeddedRunLease, queueEmbeddedSteer } from "./runs.js";
|
|
15
16
|
import { lastAssistantPlainText, subscribeEmbeddedSessionEvents } from "./subscribe-session.js";
|
|
@@ -282,6 +283,8 @@ async function runXopcEmbeddedTurnInner(params) {
|
|
|
282
283
|
model: resolvedModel,
|
|
283
284
|
modelRef: params.modelRef,
|
|
284
285
|
tools,
|
|
286
|
+
codemode: params.codemode,
|
|
287
|
+
mcp: params.mcp,
|
|
285
288
|
systemPrompt: [systemPrompt, rootInstructions].filter(Boolean).join("\n\n"),
|
|
286
289
|
thinkingLevel: configuredThinking ?? thinkingLevel ?? "medium",
|
|
287
290
|
transcriptRuntime
|
|
@@ -529,7 +532,7 @@ async function runXopcEmbeddedTurnInner(params) {
|
|
|
529
532
|
reason: "Waiting for the user to answer.",
|
|
530
533
|
terminate: true
|
|
531
534
|
};
|
|
532
|
-
const decision = await params.turnPolicy?.beforeToolCall(context, signal);
|
|
535
|
+
const decision = await params.turnPolicy?.beforeToolCall(externalPolicyContext(context, tools), signal);
|
|
533
536
|
if (decision?.block) {
|
|
534
537
|
policyStopped ||= decision.terminate === true;
|
|
535
538
|
return decision;
|
|
@@ -561,10 +564,13 @@ async function runXopcEmbeddedTurnInner(params) {
|
|
|
561
564
|
text: scoped
|
|
562
565
|
});
|
|
563
566
|
await params.turnPolicy?.afterToolCall({
|
|
564
|
-
...context,
|
|
567
|
+
...externalPolicyContext(context, tools),
|
|
565
568
|
...checked
|
|
566
569
|
});
|
|
567
|
-
return
|
|
570
|
+
return {
|
|
571
|
+
...checked.result,
|
|
572
|
+
isError: checked.isError
|
|
573
|
+
};
|
|
568
574
|
};
|
|
569
575
|
const baseFinishTurn = session.agent.finishTurn;
|
|
570
576
|
session.agent.finishTurn = async (context, signal) => {
|
|
@@ -675,6 +681,7 @@ async function runXopcEmbeddedTurnInner(params) {
|
|
|
675
681
|
});
|
|
676
682
|
if (runAbortSignal.aborted) return {
|
|
677
683
|
ok: false,
|
|
684
|
+
retryable: false,
|
|
678
685
|
errorMessage: "aborted"
|
|
679
686
|
};
|
|
680
687
|
if (isAssistantTurnAborted(session.agent)) return {
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { AgentTool } from '@earendil-works/pi-agent-core';
|
|
2
2
|
import type { ThinkingLevel } from '@earendil-works/pi-agent-core';
|
|
3
|
-
import { type AgentSession } from '@earendil-works/pi-coding-agent';
|
|
3
|
+
import { type LoadedMcpConfig, type AgentSession } from '@earendil-works/pi-coding-agent';
|
|
4
4
|
import type { Model, Api } from '@earendil-works/pi-ai';
|
|
5
5
|
import { type GuardedPiTranscriptManager } from './session-tool-result-guard.js';
|
|
6
6
|
import type { EmbeddedTranscriptRuntime } from './transcript-runtime.js';
|
|
7
|
+
import { type CodemodePolicy } from './codemode-extension.js';
|
|
7
8
|
export type EmbeddedRunnerFingerprintInput = {
|
|
8
9
|
transcriptId: string;
|
|
9
10
|
workspaceDir: string;
|
|
@@ -13,6 +14,8 @@ export type EmbeddedRunnerFingerprintInput = {
|
|
|
13
14
|
systemPrompt: string;
|
|
14
15
|
thinkingLevel: string;
|
|
15
16
|
credentialRevision: string;
|
|
17
|
+
codemode?: CodemodePolicy;
|
|
18
|
+
mcp?: LoadedMcpConfig;
|
|
16
19
|
};
|
|
17
20
|
export declare function buildEmbeddedRunnerFingerprint(input: EmbeddedRunnerFingerprintInput): string;
|
|
18
21
|
export type AcquireEmbeddedSessionRunnerParams = {
|
|
@@ -25,6 +28,8 @@ export type AcquireEmbeddedSessionRunnerParams = {
|
|
|
25
28
|
systemPrompt: string;
|
|
26
29
|
thinkingLevel: ThinkingLevel;
|
|
27
30
|
transcriptRuntime: EmbeddedTranscriptRuntime;
|
|
31
|
+
codemode?: CodemodePolicy;
|
|
32
|
+
mcp?: LoadedMcpConfig;
|
|
28
33
|
};
|
|
29
34
|
export type AcquiredEmbeddedSessionRunner = {
|
|
30
35
|
session: AgentSession;
|
|
@@ -51,6 +56,8 @@ export interface EmbeddedSessionRunnerPoolOptions {
|
|
|
51
56
|
* Owns the per-runtime pool of pi `AgentSession` runners.
|
|
52
57
|
*/
|
|
53
58
|
export declare class EmbeddedSessionRunnerPool {
|
|
59
|
+
private readonly shutdowns;
|
|
60
|
+
drainShutdowns(): Promise<void>;
|
|
54
61
|
private readonly pool;
|
|
55
62
|
private readonly isEnabledFn;
|
|
56
63
|
private readonly getIdleTtlMsFn;
|
|
@@ -72,3 +79,4 @@ export declare function resetEmbeddedSessionRunnerForTest(): void;
|
|
|
72
79
|
export declare function evictEmbeddedSessionRunner(runtimeId: string, reason?: string): void;
|
|
73
80
|
export declare function evictAllEmbeddedSessionRunners(reason?: string): void;
|
|
74
81
|
export declare function acquireEmbeddedSessionRunner(params: AcquireEmbeddedSessionRunnerParams): Promise<AcquiredEmbeddedSessionRunner>;
|
|
82
|
+
export declare function drainEmbeddedSessionRunnerShutdowns(): Promise<void>;
|
|
@@ -1,15 +1,28 @@
|
|
|
1
1
|
import { createLogger } from "../../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
|
+
import { isCodemodeCoreRead } from "../tools/codemode-permissions.js";
|
|
4
|
+
import { deferredToolContract, getXopcToolMetadata } from "./tool-metadata.js";
|
|
5
|
+
import { abortEmbeddedRun } from "./runs.js";
|
|
3
6
|
import { guardSessionManager } from "./session-tool-result-guard.js";
|
|
4
7
|
import { transformUserMessageForPersistence } from "../inbound/attachment-pipeline.js";
|
|
5
8
|
import { createEmbeddedModelRuntime, resolveEmbeddedProviderApiKeySync } from "./model-runtime.js";
|
|
6
9
|
import { wrapStreamFnForXopcExtensions } from "./xopc-stream-bridge.js";
|
|
7
10
|
import { xopcToolsToDefinitions } from "./xopc-tools-bridge.js";
|
|
8
|
-
import {
|
|
11
|
+
import { createXopcCodemodeExtension } from "./codemode-extension.js";
|
|
12
|
+
import { TOOL_DISCOVERY_STATE, createXopcToolSearchExtension } from "./tool-search-extension.js";
|
|
13
|
+
import { getNativePiAgentDir } from "../mcp/native-mcp.js";
|
|
14
|
+
import { join } from "node:path";
|
|
9
15
|
import { createHash } from "node:crypto";
|
|
10
|
-
import { DefaultResourceLoader, SettingsManager, createAgentSession,
|
|
16
|
+
import { DefaultResourceLoader, SettingsManager, createAgentSession, createMcpExtension } from "@earendil-works/pi-coding-agent";
|
|
11
17
|
//#region src/agent/embedded/session-runner.ts
|
|
12
18
|
init_logger();
|
|
19
|
+
const toolContract = (tool) => JSON.stringify([
|
|
20
|
+
tool.name,
|
|
21
|
+
tool.parameters,
|
|
22
|
+
tool.description,
|
|
23
|
+
isCodemodeCoreRead(tool),
|
|
24
|
+
getXopcToolMetadata(tool)
|
|
25
|
+
]);
|
|
13
26
|
const log = createLogger("EmbeddedSessionRunner");
|
|
14
27
|
const DEFAULT_IDLE_TTL_MS = 5 * 6e4;
|
|
15
28
|
function providerCredentialRevision(providerId) {
|
|
@@ -26,7 +39,9 @@ function buildEmbeddedRunnerFingerprint(input) {
|
|
|
26
39
|
[...input.toolContracts].sort().join("\0"),
|
|
27
40
|
input.systemPrompt,
|
|
28
41
|
input.thinkingLevel,
|
|
29
|
-
input.credentialRevision
|
|
42
|
+
input.credentialRevision,
|
|
43
|
+
JSON.stringify(input.codemode ?? null),
|
|
44
|
+
JSON.stringify(input.mcp ?? null)
|
|
30
45
|
].join("\0")).digest("base64url");
|
|
31
46
|
}
|
|
32
47
|
function isEmbeddedSessionRunnerEnabled() {
|
|
@@ -41,7 +56,10 @@ function getEmbeddedSessionRunnerIdleTtlMs() {
|
|
|
41
56
|
return Number.isFinite(parsed) && parsed > 0 ? parsed : DEFAULT_IDLE_TTL_MS;
|
|
42
57
|
}
|
|
43
58
|
function createEmbeddedSettingsManager(cwd) {
|
|
44
|
-
const sm = SettingsManager.inMemory({
|
|
59
|
+
const sm = SettingsManager.inMemory({
|
|
60
|
+
compaction: { enabled: false },
|
|
61
|
+
retry: { enabled: false }
|
|
62
|
+
});
|
|
45
63
|
sm.setCompactionEnabled(false);
|
|
46
64
|
return sm;
|
|
47
65
|
}
|
|
@@ -49,6 +67,10 @@ function createEmbeddedSettingsManager(cwd) {
|
|
|
49
67
|
* Owns the per-runtime pool of pi `AgentSession` runners.
|
|
50
68
|
*/
|
|
51
69
|
var EmbeddedSessionRunnerPool = class {
|
|
70
|
+
shutdowns = /* @__PURE__ */ new Set();
|
|
71
|
+
async drainShutdowns() {
|
|
72
|
+
await Promise.allSettled([...this.shutdowns]);
|
|
73
|
+
}
|
|
52
74
|
pool = /* @__PURE__ */ new Map();
|
|
53
75
|
isEnabledFn;
|
|
54
76
|
getIdleTtlMsFn;
|
|
@@ -69,8 +91,7 @@ var EmbeddedSessionRunnerPool = class {
|
|
|
69
91
|
};
|
|
70
92
|
}
|
|
71
93
|
resetForTest() {
|
|
72
|
-
|
|
73
|
-
this.pool.clear();
|
|
94
|
+
this.evictAll("test_reset");
|
|
74
95
|
this.stats = {
|
|
75
96
|
acquires: 0,
|
|
76
97
|
reuses: 0,
|
|
@@ -93,10 +114,12 @@ var EmbeddedSessionRunnerPool = class {
|
|
|
93
114
|
workspaceDir: params.workspaceDir,
|
|
94
115
|
modelRef: params.modelRef,
|
|
95
116
|
toolNames: params.tools.map((t) => t.name),
|
|
96
|
-
toolContracts: params.tools.map(
|
|
117
|
+
toolContracts: params.tools.map(toolContract),
|
|
97
118
|
systemPrompt: params.systemPrompt,
|
|
98
119
|
thinkingLevel: params.thinkingLevel ?? "medium",
|
|
99
|
-
credentialRevision: providerCredentialRevision(params.model.provider)
|
|
120
|
+
credentialRevision: providerCredentialRevision(params.model.provider),
|
|
121
|
+
codemode: params.codemode,
|
|
122
|
+
mcp: params.mcp
|
|
100
123
|
});
|
|
101
124
|
const reuseEnabled = this.isEnabledFn();
|
|
102
125
|
const existing = this.pool.get(params.runtimeId);
|
|
@@ -108,7 +131,6 @@ var EmbeddedSessionRunnerPool = class {
|
|
|
108
131
|
entry.lastUsedAt = Date.now();
|
|
109
132
|
reused = true;
|
|
110
133
|
this.stats.reuses += 1;
|
|
111
|
-
applySystemPromptOverrideToSession(entry.session, params.systemPrompt);
|
|
112
134
|
entry.session.agent.streamFunction = entry.baseStreamFn;
|
|
113
135
|
log.debug({ runtimeId: params.runtimeId }, "Reusing pooled embedded session runner");
|
|
114
136
|
} else {
|
|
@@ -148,11 +170,33 @@ var EmbeddedSessionRunnerPool = class {
|
|
|
148
170
|
}
|
|
149
171
|
disposePooledRunner(runtimeId, entry, reason) {
|
|
150
172
|
this.clearIdleTimer(entry);
|
|
173
|
+
for (const release of entry.releaseInvalidations) release();
|
|
151
174
|
this.pool.delete(runtimeId);
|
|
152
175
|
this.stats.evictions += 1;
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
176
|
+
const shutdown = Promise.resolve(entry.session.abort?.()).catch((err) => {
|
|
177
|
+
log.warn({
|
|
178
|
+
err,
|
|
179
|
+
runtimeId
|
|
180
|
+
}, "Embedded runner abort failed");
|
|
181
|
+
}).then(async () => {
|
|
182
|
+
try {
|
|
183
|
+
await entry.session.extensionRunner?.emit({
|
|
184
|
+
type: "session_shutdown",
|
|
185
|
+
reason: "quit"
|
|
186
|
+
});
|
|
187
|
+
} finally {
|
|
188
|
+
try {
|
|
189
|
+
entry.piSm.flushPendingToolResults?.();
|
|
190
|
+
} finally {
|
|
191
|
+
entry.session.dispose?.();
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}).catch((err) => log.warn({
|
|
195
|
+
err,
|
|
196
|
+
runtimeId
|
|
197
|
+
}, "Embedded runner disposal failed"));
|
|
198
|
+
this.shutdowns.add(shutdown);
|
|
199
|
+
shutdown.finally(() => this.shutdowns.delete(shutdown));
|
|
156
200
|
log.debug({
|
|
157
201
|
runtimeId,
|
|
158
202
|
reason
|
|
@@ -163,17 +207,46 @@ var EmbeddedSessionRunnerPool = class {
|
|
|
163
207
|
const settingsManager = createEmbeddedSettingsManager(workspaceDir);
|
|
164
208
|
const piSm = guardSessionManager(params.transcriptRuntime.openSessionManager(workspaceDir), {
|
|
165
209
|
conversationId: params.transcriptRuntime.persistent ? runtimeId : void 0,
|
|
210
|
+
persistCustomTypes: ["codemode-store", TOOL_DISCOVERY_STATE],
|
|
166
211
|
contextWindowTokens: model.contextWindow ?? 128e3,
|
|
167
212
|
transformMessageForPersistence: params.transcriptRuntime.persistent ? (message) => transformUserMessageForPersistence(runtimeId, message) : void 0
|
|
168
213
|
});
|
|
169
214
|
const toolDefs = xopcToolsToDefinitions(tools);
|
|
170
|
-
const toolNames = tools.map((
|
|
215
|
+
const toolNames = tools.filter((tool) => getXopcToolMetadata(tool)?.exposure !== "deferred").map((tool) => tool.name);
|
|
216
|
+
const discoveryState = piSm.getBranch().findLast((entry) => entry.type === "custom" && entry.customType === "xopc-tool-discovery");
|
|
217
|
+
const saved = discoveryState?.type === "custom" ? discoveryState.data : void 0;
|
|
218
|
+
const restored = new Map((saved?.loaded ?? []).map((tool) => [tool.name, tool.contract]));
|
|
219
|
+
toolNames.push(...tools.filter((tool) => getXopcToolMetadata(tool)?.exposure === "deferred" && restored.get(tool.name) === deferredToolContract(tool)).map((tool) => tool.name));
|
|
220
|
+
let boundSession;
|
|
221
|
+
const mcp = params.mcp;
|
|
222
|
+
const hasMcp = Boolean(mcp?.servers.length);
|
|
223
|
+
const usesMcpCodemode = mcp?.servers.some((server) => server.config.enabled !== false && [server.config.exposure ?? "codemode", ...Object.values(server.config.toolExposure ?? {})].includes("codemode"));
|
|
224
|
+
const codemode = params.codemode?.enabled ? params.codemode : usesMcpCodemode ? {
|
|
225
|
+
enabled: true,
|
|
226
|
+
timeoutMs: 6e4,
|
|
227
|
+
maxConcurrentCalls: 4,
|
|
228
|
+
maxCalls: 32,
|
|
229
|
+
maxOutputTokens: 4e3
|
|
230
|
+
} : void 0;
|
|
231
|
+
if (codemode) toolNames.push("codemode");
|
|
232
|
+
const discovery = hasMcp || tools.some((tool) => getXopcToolMetadata(tool)?.exposure === "deferred");
|
|
233
|
+
if (discovery) toolNames.push("tool_search");
|
|
171
234
|
const modelRuntime = await createEmbeddedModelRuntime(model.provider);
|
|
172
235
|
const resourceLoader = new DefaultResourceLoader({
|
|
173
236
|
cwd: workspaceDir,
|
|
174
|
-
agentDir:
|
|
237
|
+
agentDir: getNativePiAgentDir(),
|
|
175
238
|
settingsManager,
|
|
176
|
-
|
|
239
|
+
systemPrompt,
|
|
240
|
+
noContextFiles: true,
|
|
241
|
+
noExtensions: true,
|
|
242
|
+
extensionFactories: [
|
|
243
|
+
...codemode ? [createXopcCodemodeExtension(codemode, tools, () => boundSession)] : [],
|
|
244
|
+
...discovery ? [createXopcToolSearchExtension(tools)] : [],
|
|
245
|
+
...mcp ? [createMcpExtension({
|
|
246
|
+
loadConfig: () => mcp,
|
|
247
|
+
logPath: join(getNativePiAgentDir(), "mcp.log")
|
|
248
|
+
})] : []
|
|
249
|
+
]
|
|
177
250
|
});
|
|
178
251
|
await resourceLoader.reload();
|
|
179
252
|
const { session } = await createAgentSession({
|
|
@@ -185,10 +258,11 @@ var EmbeddedSessionRunnerPool = class {
|
|
|
185
258
|
modelRuntime,
|
|
186
259
|
resourceLoader,
|
|
187
260
|
noTools: "builtin",
|
|
188
|
-
customTools: toolDefs
|
|
189
|
-
tools: toolNames
|
|
261
|
+
customTools: toolDefs
|
|
190
262
|
});
|
|
191
|
-
|
|
263
|
+
boundSession = session;
|
|
264
|
+
session.setActiveToolsByName(toolNames);
|
|
265
|
+
if (codemode || discovery || mcp) await session.bindExtensions({});
|
|
192
266
|
const baseStreamFn = wrapStreamFnForXopcExtensions(session.agent.streamFunction);
|
|
193
267
|
session.agent.streamFunction = baseStreamFn;
|
|
194
268
|
return {
|
|
@@ -197,18 +271,29 @@ var EmbeddedSessionRunnerPool = class {
|
|
|
197
271
|
transcriptId,
|
|
198
272
|
workspaceDir,
|
|
199
273
|
modelRef: params.modelRef,
|
|
200
|
-
toolNames,
|
|
201
|
-
toolContracts: tools.map(
|
|
274
|
+
toolNames: tools.map((tool) => tool.name),
|
|
275
|
+
toolContracts: tools.map(toolContract),
|
|
202
276
|
systemPrompt,
|
|
203
277
|
thinkingLevel: thinkingLevel ?? "medium",
|
|
204
|
-
credentialRevision: providerCredentialRevision(model.provider)
|
|
278
|
+
credentialRevision: providerCredentialRevision(model.provider),
|
|
279
|
+
codemode: params.codemode,
|
|
280
|
+
mcp: params.mcp
|
|
205
281
|
}),
|
|
206
282
|
session,
|
|
207
283
|
piSm,
|
|
208
284
|
settingsManager,
|
|
209
285
|
baseStreamFn,
|
|
210
286
|
lastUsedAt: Date.now(),
|
|
211
|
-
idleTimer: null
|
|
287
|
+
idleTimer: null,
|
|
288
|
+
releaseInvalidations: tools.flatMap((tool) => {
|
|
289
|
+
const subscribe = getXopcToolMetadata(tool)?.subscribeInvalidation;
|
|
290
|
+
if (!subscribe) return [];
|
|
291
|
+
return [subscribe(() => {
|
|
292
|
+
if (this.pool.get(runtimeId)?.session !== session) return;
|
|
293
|
+
abortEmbeddedRun(runtimeId);
|
|
294
|
+
this.evict(runtimeId, "external_tool_catalog_changed");
|
|
295
|
+
})];
|
|
296
|
+
})
|
|
212
297
|
};
|
|
213
298
|
}
|
|
214
299
|
};
|
|
@@ -228,5 +313,8 @@ function evictAllEmbeddedSessionRunners(reason = "dispose_all") {
|
|
|
228
313
|
function acquireEmbeddedSessionRunner(params) {
|
|
229
314
|
return defaultEmbeddedSessionRunnerPool.acquire(params);
|
|
230
315
|
}
|
|
316
|
+
function drainEmbeddedSessionRunnerShutdowns() {
|
|
317
|
+
return defaultEmbeddedSessionRunnerPool.drainShutdowns();
|
|
318
|
+
}
|
|
231
319
|
//#endregion
|
|
232
|
-
export { EmbeddedSessionRunnerPool, acquireEmbeddedSessionRunner, buildEmbeddedRunnerFingerprint, defaultEmbeddedSessionRunnerPool, evictAllEmbeddedSessionRunners, evictEmbeddedSessionRunner, getEmbeddedSessionRunnerIdleTtlMs, getEmbeddedSessionRunnerStats, isEmbeddedSessionRunnerEnabled, resetEmbeddedSessionRunnerForTest };
|
|
320
|
+
export { EmbeddedSessionRunnerPool, acquireEmbeddedSessionRunner, buildEmbeddedRunnerFingerprint, defaultEmbeddedSessionRunnerPool, drainEmbeddedSessionRunnerShutdowns, evictAllEmbeddedSessionRunners, evictEmbeddedSessionRunner, getEmbeddedSessionRunnerIdleTtlMs, getEmbeddedSessionRunnerStats, isEmbeddedSessionRunnerEnabled, resetEmbeddedSessionRunnerForTest };
|
|
@@ -28,6 +28,7 @@ export type BeforeMessageWriteHookResult = {
|
|
|
28
28
|
message?: AgentMessage;
|
|
29
29
|
} | undefined;
|
|
30
30
|
export interface ToolResultGuardOptions {
|
|
31
|
+
persistCustomTypes?: readonly string[];
|
|
31
32
|
/** Optional session key for transcript update broadcasts. */
|
|
32
33
|
conversationId?: string;
|
|
33
34
|
/** Optional transform applied to any message before persistence. */
|
|
@@ -93,6 +94,7 @@ export declare function guardSessionManager(sessionManager: SessionManager, opts
|
|
|
93
94
|
missingToolResultText?: string;
|
|
94
95
|
allowedToolNames?: Iterable<string>;
|
|
95
96
|
transformMessageForPersistence?: (message: AgentMessage) => AgentMessage;
|
|
97
|
+
persistCustomTypes?: readonly string[];
|
|
96
98
|
}): GuardedPiTranscriptManager;
|
|
97
99
|
/**
|
|
98
100
|
* Recover the original (un-guarded) appendMessage for a session manager.
|
|
@@ -32,6 +32,7 @@ function guardSessionManager(sessionManager, opts) {
|
|
|
32
32
|
if (typeof sessionManager.flushPendingToolResults === "function") return sessionManager;
|
|
33
33
|
const result = installSessionToolResultGuard(sessionManager, {
|
|
34
34
|
conversationId: opts?.conversationId,
|
|
35
|
+
persistCustomTypes: opts?.persistCustomTypes,
|
|
35
36
|
transformMessageForPersistence: opts?.transformMessageForPersistence,
|
|
36
37
|
allowSyntheticToolResults: opts?.allowSyntheticToolResults,
|
|
37
38
|
missingToolResultText: opts?.missingToolResultText,
|
|
@@ -287,6 +288,22 @@ var ToolResultGuard = class {
|
|
|
287
288
|
attach() {
|
|
288
289
|
const bound = this.guardedAppend.bind(this);
|
|
289
290
|
this.sessionManager.appendMessage = bound;
|
|
291
|
+
if (this.opts.conversationId && this.opts.persistCustomTypes?.length) {
|
|
292
|
+
const appendCustom = this.sessionManager.appendCustomEntry.bind(this.sessionManager);
|
|
293
|
+
this.sessionManager.appendCustomEntry = (customType, data) => {
|
|
294
|
+
const id = appendCustom(customType, data);
|
|
295
|
+
if (this.opts.persistCustomTypes?.includes(customType)) emitSessionTranscriptUpdate({
|
|
296
|
+
conversationId: this.opts.conversationId,
|
|
297
|
+
customEntry: {
|
|
298
|
+
customType,
|
|
299
|
+
data,
|
|
300
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
301
|
+
},
|
|
302
|
+
messageId: id
|
|
303
|
+
});
|
|
304
|
+
return id;
|
|
305
|
+
};
|
|
306
|
+
}
|
|
290
307
|
}
|
|
291
308
|
setActiveTurnId(turnId) {
|
|
292
309
|
this.activeTurnId = normalizeOptionalString(turnId) ?? null;
|
|
@@ -2,15 +2,21 @@ import { extractTextContent } from "../context/workspace.js";
|
|
|
2
2
|
//#region src/agent/embedded/subscribe-session.ts
|
|
3
3
|
function subscribeEmbeddedSessionEvents(session, onEvent, onAgentEvent) {
|
|
4
4
|
return session.subscribe((event) => {
|
|
5
|
+
if (event.type === "agent_settled") {
|
|
6
|
+
onEvent({
|
|
7
|
+
type: "agent_end",
|
|
8
|
+
aborted: event.aborted
|
|
9
|
+
});
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
5
12
|
const base = event;
|
|
13
|
+
const parent = "parentToolCallId" in event && event.parentToolCallId ? { parentToolCallId: event.parentToolCallId } : {};
|
|
6
14
|
onAgentEvent?.(base);
|
|
7
15
|
switch (base.type) {
|
|
8
16
|
case "agent_start":
|
|
9
17
|
onEvent({ type: "agent_start" });
|
|
10
18
|
break;
|
|
11
|
-
case "agent_end":
|
|
12
|
-
onEvent({ type: "agent_end" });
|
|
13
|
-
break;
|
|
19
|
+
case "agent_end": break;
|
|
14
20
|
case "message_start": {
|
|
15
21
|
const m = base.message;
|
|
16
22
|
onEvent({
|
|
@@ -40,6 +46,7 @@ function subscribeEmbeddedSessionEvents(session, onEvent, onAgentEvent) {
|
|
|
40
46
|
const t = base;
|
|
41
47
|
onEvent({
|
|
42
48
|
type: "tool_execution_start",
|
|
49
|
+
...parent,
|
|
43
50
|
toolName: t.toolName,
|
|
44
51
|
toolCallId: t.toolCallId,
|
|
45
52
|
args: t.args
|
|
@@ -50,10 +57,12 @@ function subscribeEmbeddedSessionEvents(session, onEvent, onAgentEvent) {
|
|
|
50
57
|
const t = base;
|
|
51
58
|
onEvent({
|
|
52
59
|
type: "tool_execution_end",
|
|
60
|
+
...parent,
|
|
53
61
|
toolName: t.toolName,
|
|
54
62
|
toolCallId: t.toolCallId,
|
|
55
63
|
isError: t.isError,
|
|
56
|
-
result: t.result
|
|
64
|
+
result: t.result,
|
|
65
|
+
durationMs: t.durationMs
|
|
57
66
|
});
|
|
58
67
|
break;
|
|
59
68
|
}
|
|
@@ -61,6 +70,7 @@ function subscribeEmbeddedSessionEvents(session, onEvent, onAgentEvent) {
|
|
|
61
70
|
const t = base;
|
|
62
71
|
onEvent({
|
|
63
72
|
type: "tool_execution_update",
|
|
73
|
+
...parent,
|
|
64
74
|
toolName: t.toolName,
|
|
65
75
|
toolCallId: t.toolCallId,
|
|
66
76
|
args: t.args,
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { AgentTool, BeforeToolCallContext } from '@earendil-works/pi-agent-core';
|
|
2
|
+
import type { ToolDefinition } from '@earendil-works/pi-coding-agent';
|
|
3
|
+
export type XopcToolMetadata = Pick<ToolDefinition, 'exposure' | 'namespace' | 'annotations' | 'outputSchema'> & {
|
|
4
|
+
external?: {
|
|
5
|
+
toolRef: string;
|
|
6
|
+
revision: string;
|
|
7
|
+
readOnly: boolean;
|
|
8
|
+
};
|
|
9
|
+
subscribeInvalidation?: (listener: () => void) => () => void;
|
|
10
|
+
};
|
|
11
|
+
export declare function setXopcToolMetadata(tool: AgentTool, metadata: XopcToolMetadata): AgentTool;
|
|
12
|
+
export declare function getXopcToolMetadata(tool: AgentTool): XopcToolMetadata | undefined;
|
|
13
|
+
export declare function deferredToolContract(tool: AgentTool): string;
|
|
14
|
+
/** Deferred declarations retain the policy identity of the existing external gateway. */
|
|
15
|
+
export declare function externalPolicyContext(context: BeforeToolCallContext, tools: readonly AgentTool[]): BeforeToolCallContext;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
//#region src/agent/embedded/tool-metadata.ts
|
|
3
|
+
const metadataKey = Symbol("xopc.sdkToolMetadata");
|
|
4
|
+
function setXopcToolMetadata(tool, metadata) {
|
|
5
|
+
return Object.assign(tool, { [metadataKey]: metadata });
|
|
6
|
+
}
|
|
7
|
+
function getXopcToolMetadata(tool) {
|
|
8
|
+
return Reflect.get(tool, metadataKey);
|
|
9
|
+
}
|
|
10
|
+
function deferredToolContract(tool) {
|
|
11
|
+
return createHash("sha256").update(JSON.stringify([
|
|
12
|
+
tool.name,
|
|
13
|
+
tool.description,
|
|
14
|
+
tool.parameters,
|
|
15
|
+
getXopcToolMetadata(tool)
|
|
16
|
+
])).digest("base64url");
|
|
17
|
+
}
|
|
18
|
+
/** Deferred declarations retain the policy identity of the existing external gateway. */
|
|
19
|
+
function externalPolicyContext(context, tools) {
|
|
20
|
+
const tool = tools.find((candidate) => candidate.name === context.toolCall.name);
|
|
21
|
+
const external = tool && getXopcToolMetadata(tool)?.external;
|
|
22
|
+
if (!external) return context;
|
|
23
|
+
const args = {
|
|
24
|
+
...external,
|
|
25
|
+
arguments: context.args
|
|
26
|
+
};
|
|
27
|
+
return {
|
|
28
|
+
...context,
|
|
29
|
+
args,
|
|
30
|
+
toolCall: {
|
|
31
|
+
...context.toolCall,
|
|
32
|
+
name: "xopc_tool_execute",
|
|
33
|
+
arguments: args
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
export { deferredToolContract, externalPolicyContext, getXopcToolMetadata, setXopcToolMetadata };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { AgentTool } from '@earendil-works/pi-agent-core';
|
|
2
|
+
import { type ExtensionFactory } from '@earendil-works/pi-coding-agent';
|
|
3
|
+
export declare const TOOL_DISCOVERY_STATE = "xopc-tool-discovery";
|
|
4
|
+
/** xopc deliberately excludes pi system declarations from SQLite; retain only discovery state. */
|
|
5
|
+
export declare function createXopcToolSearchExtension(tools: readonly AgentTool[]): ExtensionFactory;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { deferredToolContract, getXopcToolMetadata } from "./tool-metadata.js";
|
|
2
|
+
import { createToolSearchExtension } from "@earendil-works/pi-coding-agent";
|
|
3
|
+
//#region src/agent/embedded/tool-search-extension.ts
|
|
4
|
+
const TOOL_DISCOVERY_STATE = "xopc-tool-discovery";
|
|
5
|
+
/** xopc deliberately excludes pi system declarations from SQLite; retain only discovery state. */
|
|
6
|
+
function createXopcToolSearchExtension(tools) {
|
|
7
|
+
const deferred = tools.filter((tool) => getXopcToolMetadata(tool)?.exposure === "deferred");
|
|
8
|
+
return (pi) => createToolSearchExtension()({
|
|
9
|
+
...pi,
|
|
10
|
+
registerTool(definition) {
|
|
11
|
+
pi.registerTool({
|
|
12
|
+
...definition,
|
|
13
|
+
async execute(id, params, signal, update, context) {
|
|
14
|
+
const input = params;
|
|
15
|
+
if ((input.limit ?? 8) > 20 || (input.query?.length ?? 0) > 2e3) throw new Error("Tool search permits at most 20 matches and 2000 query characters");
|
|
16
|
+
return definition.execute(id, params, signal, update, context);
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
},
|
|
20
|
+
setActiveTools(names) {
|
|
21
|
+
pi.setActiveTools(names);
|
|
22
|
+
const active = new Set(pi.getActiveTools());
|
|
23
|
+
pi.appendEntry(TOOL_DISCOVERY_STATE, { loaded: deferred.filter((tool) => active.has(tool.name)).map((tool) => ({
|
|
24
|
+
name: tool.name,
|
|
25
|
+
contract: deferredToolContract(tool)
|
|
26
|
+
})) });
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
//#endregion
|
|
31
|
+
export { TOOL_DISCOVERY_STATE, createXopcToolSearchExtension };
|
|
@@ -10,6 +10,7 @@ export type EmbeddedStreamEvent = {
|
|
|
10
10
|
} | {
|
|
11
11
|
type: 'agent_end';
|
|
12
12
|
runId?: string;
|
|
13
|
+
aborted?: boolean;
|
|
13
14
|
} | {
|
|
14
15
|
type: 'message_start';
|
|
15
16
|
runId?: string;
|
|
@@ -27,10 +28,12 @@ export type EmbeddedStreamEvent = {
|
|
|
27
28
|
type: 'tool_execution_start';
|
|
28
29
|
runId?: string;
|
|
29
30
|
toolCallId: string;
|
|
31
|
+
parentToolCallId?: string;
|
|
30
32
|
toolName: string;
|
|
31
33
|
args: unknown;
|
|
32
34
|
} | {
|
|
33
35
|
type: 'tool_execution_update';
|
|
36
|
+
parentToolCallId?: string;
|
|
34
37
|
runId?: string;
|
|
35
38
|
toolCallId: string;
|
|
36
39
|
toolName: string;
|
|
@@ -38,11 +41,13 @@ export type EmbeddedStreamEvent = {
|
|
|
38
41
|
partialResult: AgentToolResult<any>;
|
|
39
42
|
} | {
|
|
40
43
|
type: 'tool_execution_end';
|
|
44
|
+
parentToolCallId?: string;
|
|
41
45
|
runId?: string;
|
|
42
46
|
toolCallId: string;
|
|
43
47
|
toolName: string;
|
|
44
48
|
result: AgentToolResult<any>;
|
|
45
49
|
isError: boolean;
|
|
50
|
+
durationMs?: number;
|
|
46
51
|
} | {
|
|
47
52
|
type: 'progress';
|
|
48
53
|
runId?: string;
|
|
@@ -75,6 +80,8 @@ export type RunXopcEmbeddedTurnParams = {
|
|
|
75
80
|
thinkingLevel?: ThinkingLevel;
|
|
76
81
|
compactionPolicy?: import('../memory/compaction-policy.js').ResolvedCompactionPolicy;
|
|
77
82
|
promptCachePolicy?: import('../../providers/prompt-cache-plan.js').PromptCachePolicy;
|
|
83
|
+
codemode?: import('./codemode-extension.js').CodemodePolicy;
|
|
84
|
+
mcp?: import('@earendil-works/pi-coding-agent').LoadedMcpConfig;
|
|
78
85
|
workspaceDir: string;
|
|
79
86
|
sessionStore?: SessionStore;
|
|
80
87
|
transcriptRuntime?: EmbeddedTranscriptRuntime;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getXopcToolMetadata } from "./tool-metadata.js";
|
|
1
2
|
import { withDataToolPermissions } from "../tools/dataBatch.js";
|
|
2
3
|
//#region src/agent/embedded/xopc-tools-bridge.ts
|
|
3
4
|
const APPLY_PATCH_BEGIN_MARKER = "*** Begin Patch";
|
|
@@ -95,7 +96,12 @@ function invalidApplyPatchEnvelopeResult(error) {
|
|
|
95
96
|
function xopcToolsToDefinitions(tools) {
|
|
96
97
|
return tools.map((tool) => {
|
|
97
98
|
const promptHints = TOOL_PROMPT_HINTS[tool.name];
|
|
99
|
+
const metadata = getXopcToolMetadata(tool);
|
|
98
100
|
return {
|
|
101
|
+
exposure: metadata?.exposure,
|
|
102
|
+
namespace: metadata?.namespace,
|
|
103
|
+
annotations: metadata?.annotations,
|
|
104
|
+
outputSchema: metadata?.outputSchema,
|
|
99
105
|
name: tool.name,
|
|
100
106
|
label: tool.label ?? tool.name,
|
|
101
107
|
description: tool.description ?? tool.name,
|
|
@@ -12,6 +12,6 @@ export declare class EndpointToolProvider implements ExternalToolProvider {
|
|
|
12
12
|
search(_query: string): Promise<ExternalToolSearchHit[]>;
|
|
13
13
|
describe(toolRef: string): Promise<ExternalToolDescriptor | undefined>;
|
|
14
14
|
execute(toolRef: string, args: Record<string, unknown>, _approvalId: string | undefined, context: ExternalToolExecutionContext): Promise<AgentToolResult<Record<string, unknown>>>;
|
|
15
|
-
private
|
|
15
|
+
private targetResolver;
|
|
16
16
|
private resolve;
|
|
17
17
|
}
|