@xopcai/xopc 0.0.385 → 0.0.387
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/browser-ext/dist/sidepanel.js +1 -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-Cb9eaXxR.js → agent-avatar-dicebear-Bv8M5ygD.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-DEV-xtgm.js → agent-defaults-settings-panel-UBy01-65.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-plugin-dialog-DXKc3Luj.js → agent-plugin-dialog-Q9guA8kU.js} +1 -1
- package/dist/gateway/static/root/assets/{agents-DcNxwpJQ.js → agents-yfJFubD0.js} +3 -3
- package/dist/gateway/static/root/assets/{app-management-settings-panel-X5i0Tz7_.js → app-management-settings-panel-Cdyad8c1.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-CmHHzquT.js → appearance-settings-DPPvnKH_.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-ChFA4Zp0.js → apps-page-Bn_jwaeA.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-BFqsIqOI.js → automations-page-CAB2sLJ5.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-workspace-Blfak-fT.js → automations-workspace-CYRUhhH4.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-CpOLG3Co.js → block-editor-B9DmMEa8.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automations-page-BSbTJ9j2.js → browser-automations-page-BHAWpZE2.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-settings-page-BUlILJrB.js → browser-settings-page-BG_17NcQ.js} +2 -2
- package/dist/gateway/static/root/assets/{capabilities-2Do3eKMM.js → capabilities-BX1rCiVm.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-XFwwUNU3.js → capabilities-CW389yo6.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-page-CeRdkwRf.js → capabilities-page-BAnBYWlY.js} +2 -2
- package/dist/gateway/static/root/assets/{capabilities-settings-panel-S-cKsGja.js → capabilities-settings-panel-Ca-d6lXk.js} +3 -3
- package/dist/gateway/static/root/assets/{capability-header-actions-6w8pQhnn.js → capability-header-actions-B3TL8TcF.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-DfNTGBmp.js → channels-BadpS-nq.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-terminal-dock-DnoQHpDc.js → chat-terminal-dock-C_vntFpP.js} +1 -1
- package/dist/gateway/static/root/assets/{chunk-KS7C4IRE-BMYIfy9x.js → chunk-KS7C4IRE--EKdQGRF.js} +1 -1
- package/dist/gateway/static/root/assets/{computer-settings-page-7yliE7sG.js → computer-settings-page-B-5kxk70.js} +1 -1
- package/dist/gateway/static/root/assets/{connector-service-page-DOLAUFSW.js → connector-service-page-DTnfpLHL.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-page-DAsn97XG.js → connectors-page-CmJV7gqj.js} +1 -1
- package/dist/gateway/static/root/assets/constants-DeXt1mV-.js +1 -0
- package/dist/gateway/static/root/assets/{date-picker-DNDqr4Fk.js → date-picker-D5zYeC8q.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-B5oG7RgE.js → dependency-picker-D72vT-tb.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-K7kUCX1O.js → desktop-pet-DvoeVPf_.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-KgOAuqSh.js → desktop-pet-settings-Dfb392hs.js} +1 -1
- package/dist/gateway/static/root/assets/{device-pairing-wizard-DvqniZDm.js → device-pairing-wizard-B06Sqn5D.js} +1 -1
- package/dist/gateway/static/root/assets/{directory-picker-path-field-BmOguLDl.js → directory-picker-path-field-CA3H3bc-.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-DtHNy4TE.js → extension-debug-page-B0wTBCx4.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-DSSuMQxp.js → extension-page-BeHiXhB1.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-provider-nbgU7xBS.js → extension-provider-CJZ5EVpQ.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-DSd__mNd.js → extension-settings-page-Q88-LFCJ.js} +1 -1
- package/dist/gateway/static/root/assets/{fallback-models-D7bjbiwZ.js → fallback-models-BXoPCvzq.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-hSXGWumL.js → gateway-settings-IICLMGDI.js} +1 -1
- package/dist/gateway/static/root/assets/{highlighted-body-KQOG7T2V-C7xJwE61.js → highlighted-body-KQOG7T2V-D336so8z.js} +1 -1
- package/dist/gateway/static/root/assets/home-page--MvqsFhQ.js +2 -0
- package/dist/gateway/static/root/assets/{imports-page-BufZPzGE.js → imports-page-muV1SduS.js} +1 -1
- package/dist/gateway/static/root/assets/index-D0qMv3jf.js +260 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-B8pPP5RF.js → keyboard-shortcuts-settings-i1sDWcwl.js} +1 -1
- package/dist/gateway/static/root/assets/{local-app-workbench-page-zEtvE7pJ.js → local-app-workbench-page-DY9tXEO6.js} +1 -1
- package/dist/gateway/static/root/assets/{local-apps-page-Bli7e_eg.js → local-apps-page-BHD73STy.js} +1 -1
- package/dist/gateway/static/root/assets/local-session-drafts-Be4BGM4Z.js +1 -0
- package/dist/gateway/static/root/assets/{logs-page-BimZk3R4.js → logs-page-DsPpe8Ws.js} +1 -1
- package/dist/gateway/static/root/assets/{management-settings-5Y4COyU9.js → management-settings-Buwi2wQE.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-view-DHfQAvZQ.js → markdown-view-CBjl-XEc.js} +2 -2
- package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-D2mip-f9.js +1 -0
- package/dist/gateway/static/root/assets/{note-detail-panel-KLDPLVg7.js → note-detail-panel-D8n80Gbr.js} +3 -3
- package/dist/gateway/static/root/assets/{notes-api-nqN2wKYc.js → notes-api-BlGP533W.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-page-DST0oPXD.js → notes-page-Btf-jSS_.js} +5 -5
- package/dist/gateway/static/root/assets/{page-context-capture-button-Bmed83-6.js → page-context-capture-button-97RL8Gc7.js} +1 -1
- package/dist/gateway/static/root/assets/{personal-page-BG4Ystrm.js → personal-page-B04L8Oz5.js} +1 -1
- package/dist/gateway/static/root/assets/product-open-page-9zEDvZa7.js +1 -0
- package/dist/gateway/static/root/assets/{product-preview-content-DjmupQSq.js → product-preview-content-DynBrIXq.js} +1 -1
- package/dist/gateway/static/root/assets/{project-detail-page-CzBmV0P6.js → project-detail-page-BM7MsoVA.js} +1 -1
- package/dist/gateway/static/root/assets/{projects-page-DByqe5Em.js → projects-page-pcyeEJnz.js} +1 -1
- package/dist/gateway/static/root/assets/{remote-access-hub-DTjj-odF.js → remote-access-hub-CphyTu22.js} +1 -1
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-B_ptn3T8.js → runtime-tools-settings-panel-DPafoO0G.js} +1 -1
- package/dist/gateway/static/root/assets/{scenes-page-wkua4l5y.js → scenes-page-j97FrDRW.js} +2 -2
- package/dist/gateway/static/root/assets/{schema-form-VvOSM84Y.js → schema-form-CuJNwKHO.js} +1 -1
- package/dist/gateway/static/root/assets/{send-session-input-BCAF-Ikt.js → send-session-input-C293-Hbx.js} +1 -1
- package/dist/gateway/static/root/assets/session-manager-COd9RECl.js +16 -0
- package/dist/gateway/static/root/assets/{sessions-page-D06XwYAT.js → sessions-page-D8t_8fMl.js} +1 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-CDkitNHA.js +1 -0
- package/dist/gateway/static/root/assets/{settings-page-C-6BJdb1.js → settings-page-DS9DMYUe.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-L0JSG0K-.js → setup-status-panel-DRDvm9yZ.js} +1 -1
- package/dist/gateway/static/root/assets/{share-link-dialog-C47Xgzta.js → share-link-dialog-BKGI8Kr0.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-nJ2FWAEP.js → share-preview-page-BF2WaO43.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-settings-BbgAUM3v.js → shares-settings-DQTQZu6V.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-api-BFU1tPyw.js → skill-api-DzVa7G-O.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page-DZw6el4o.js → skills-page-CfJIjRdS.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-DshSGWNg.js → system-settings-panel-Bzhqed-a.js} +1 -1
- package/dist/gateway/static/root/assets/task-detail-page-BYQFC0-U.js +2 -0
- package/dist/gateway/static/root/assets/task-expandable-content-C9ohICpw.js +1 -0
- package/dist/gateway/static/root/assets/{tasks-DJIeIk9C.js → tasks-PuIUgF9L.js} +1 -1
- package/dist/gateway/static/root/assets/{tunnel-api-DFDXwWnU.js → tunnel-api-DrgpZ81I.js} +1 -1
- package/dist/gateway/static/root/assets/{usage-page-2RJLg54s.js → usage-page-Drk8FWnj.js} +1 -1
- package/dist/gateway/static/root/assets/{use-composer-attachments-BFP3k6oC.js → use-composer-attachments-rgW7h4sD.js} +1 -1
- package/dist/gateway/static/root/assets/{use-file-preview-expanded-B1BiTQNS.js → use-file-preview-expanded-DSKIxfz9.js} +1 -1
- package/dist/gateway/static/root/assets/{user-model-page-y1gjGYPI.js → user-model-page-07t2-nFE.js} +2 -2
- package/dist/gateway/static/root/assets/{work-discovery-overlay-Ch-KfpCF.js → work-discovery-overlay-TQ5bjVot.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-CTu297Hc.js → workflow-run-setup-panel-C9HP2uGG.js} +1 -1
- package/dist/gateway/static/root/assets/{workflows-page-CRZXG_rm.js → workflows-page-DK01JRI1.js} +3 -3
- package/dist/gateway/static/root/assets/{workspace-api-Xr3wz8T3.js → workspace-api-JWHOFos6.js} +2 -2
- package/dist/gateway/static/root/assets/{xopc-cloud-account-card-hEfjVjnc.js → xopc-cloud-account-card-B-BhQdAf.js} +1 -1
- package/dist/gateway/static/root/index.html +16 -16
- package/dist/package.js +1 -1
- package/dist/packages/gateway-contract/src/index.js +4 -0
- package/dist/packages/gateway-contract/src/result-reference.js +25 -0
- package/dist/packages/gateway-contract/src/session-input-command.js +2 -1
- package/dist/packages/gateway-contract/src/task-research-result.js +90 -0
- package/dist/packages/gateway-contract/src/task-result-delivery.js +21 -0
- package/dist/packages/gateway-contract/src/tasks.js +7 -1
- package/dist/packages/gateway-contract/src/turn-outcome.js +4 -0
- package/dist/src/agent/agent-manager.js +3 -3
- package/dist/src/agent/background-review/run-background-review.js +1 -1
- package/dist/src/agent/child-agent-factory.d.ts +4 -1
- package/dist/src/agent/child-agent-factory.js +86 -12
- package/dist/src/agent/context/connection-objective-context.d.ts +1 -0
- package/dist/src/agent/context/connection-objective-context.js +33 -0
- package/dist/src/agent/data-acquisition/service.js +41 -6
- package/dist/src/agent/data-acquisition/types.d.ts +2 -0
- package/dist/src/agent/embedded/agent-profile-context.d.ts +7 -0
- package/dist/src/agent/embedded/agent-profile-context.js +92 -0
- package/dist/src/agent/embedded/run-for-session.js +5 -2
- package/dist/src/agent/embedded/run-turn.js +19 -6
- package/dist/src/agent/embedded/runs.d.ts +9 -2
- package/dist/src/agent/embedded/runs.js +30 -7
- package/dist/src/agent/embedded/session-runner.js +5 -2
- package/dist/src/agent/embedded/types.d.ts +4 -0
- package/dist/src/agent/embedded/xopc-tools-bridge.js +13 -2
- package/dist/src/agent/external-tools/cliProvider.js +1 -1
- package/dist/src/agent/external-tools/composio-provider.js +2 -2
- package/dist/src/agent/external-tools/endpoint-provider.js +2 -2
- package/dist/src/agent/external-tools/gateway-tools.js +8 -4
- package/dist/src/agent/inbound/attachment-pipeline.js +1 -1
- package/dist/src/agent/orchestration/agent-run-supervisor.js +2 -1
- package/dist/src/agent/orchestration/agent-turn-policy.js +5 -1
- package/dist/src/agent/orchestration/delegation-budget.d.ts +7 -1
- package/dist/src/agent/orchestration/delegation-budget.js +17 -9
- package/dist/src/agent/orchestration/research-checkpoint.d.ts +56 -0
- package/dist/src/agent/orchestration/research-checkpoint.js +64 -0
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.d.ts +3 -1
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +15 -2
- package/dist/src/agent/orchestration/run-termination.d.ts +12 -0
- package/dist/src/agent/orchestration/run-termination.js +24 -0
- package/dist/src/agent/orchestration/turn-recovery.d.ts +4 -1
- package/dist/src/agent/orchestration/turn-recovery.js +19 -3
- package/dist/src/agent/prompt/sections/agent-identity.js +12 -7
- package/dist/src/agent/prompt/sections/messaging-runtime.js +1 -1
- package/dist/src/agent/prompt/sections/project-context.js +1 -1
- package/dist/src/agent/prompt/sections/response-language.d.ts +1 -1
- package/dist/src/agent/prompt/sections/response-language.js +6 -2
- package/dist/src/agent/prompt/subagent-context.js +1 -1
- package/dist/src/agent/prompt/system-prompt.js +4 -6
- package/dist/src/agent/service/direct-turn-helpers.d.ts +2 -0
- package/dist/src/agent/service/direct-turn-helpers.js +4 -0
- package/dist/src/agent/service/process-direct-one-shot.js +4 -1
- package/dist/src/agent/service/process-direct-streaming.js +3 -2
- package/dist/src/agent/service.js +2 -2
- package/dist/src/agent/skills/index.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/source-context/index.js +1 -1
- package/dist/src/agent/source-context/result-context.d.ts +2 -0
- package/dist/src/agent/source-context/result-context.js +32 -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/tasks/task-judge-service.js +3 -1
- package/dist/src/agent/tools/apply-patch.js +1 -1
- package/dist/src/agent/tools/delegate-tool.js +216 -121
- package/dist/src/agent/tools/delegation-policy.js +13 -1
- package/dist/src/agent/tools/exec-command.js +47 -2
- package/dist/src/agent/tools/factory.js +19 -10
- package/dist/src/agent/tools/index.d.ts +1 -0
- package/dist/src/agent/tools/index.js +2 -1
- package/dist/src/agent/tools/language-diagnostics.js +1 -1
- package/dist/src/agent/tools/personal-performance.d.ts +2 -0
- package/dist/src/agent/tools/personal-performance.js +82 -0
- package/dist/src/agent/tools/personal-read-tool.js +1 -1
- package/dist/src/agent/tools/personal-request-tool.js +9 -14
- package/dist/src/agent/tools/personal-result-tool.d.ts +2 -0
- package/dist/src/agent/tools/personal-result-tool.js +106 -0
- package/dist/src/agent/tools/personal-task-tool.d.ts +12 -3
- package/dist/src/agent/tools/personal-task-tool.js +115 -10
- package/dist/src/agent/tools/publish-artifacts.js +1 -1
- package/dist/src/agent/tools/research-checkpoint-tool.d.ts +3 -0
- package/dist/src/agent/tools/research-checkpoint-tool.js +28 -0
- package/dist/src/agent/tools/review-workspace.js +21 -2
- package/dist/src/agent/tools/search/cache.d.ts +20 -0
- package/dist/src/agent/tools/search/cache.js +19 -0
- package/dist/src/agent/tools/search/errors.d.ts +19 -0
- package/dist/src/agent/tools/search/errors.js +69 -0
- package/dist/src/agent/tools/search/providers/bing-api.js +2 -1
- package/dist/src/agent/tools/search/providers/bing-html.js +2 -1
- package/dist/src/agent/tools/search/providers/brave.js +2 -1
- package/dist/src/agent/tools/search/providers/duckduckgo-html.js +2 -1
- package/dist/src/agent/tools/search/providers/searxng.js +2 -1
- package/dist/src/agent/tools/search/providers/tavily.js +2 -1
- package/dist/src/agent/tools/search/providers/xopc-cloud.d.ts +1 -0
- package/dist/src/agent/tools/search/providers/xopc-cloud.js +7 -2
- package/dist/src/agent/tools/search/registry.d.ts +21 -5
- package/dist/src/agent/tools/search/registry.js +252 -25
- package/dist/src/agent/tools/search/types.d.ts +25 -0
- package/dist/src/agent/tools/send-media.js +1 -1
- package/dist/src/agent/tools/task-collaboration-tool.d.ts +9 -1
- package/dist/src/agent/tools/task-collaboration-tool.js +121 -2
- package/dist/src/agent/tools/task-evidence.d.ts +3 -0
- package/dist/src/agent/tools/task-evidence.js +71 -0
- package/dist/src/agent/tools/task-result-tool.d.ts +2 -0
- package/dist/src/agent/tools/task-result-tool.js +93 -0
- package/dist/src/agent/tools/tool-media.js +1 -1
- package/dist/src/agent/tools/web.d.ts +16 -2
- package/dist/src/agent/tools/web.js +74 -29
- package/dist/src/agent/tools/xopc-use-tool.js +27 -6
- package/dist/src/agent/workspace-runtime/registry.js +1 -1
- package/dist/src/agent-catalog/capabilities.js +2 -2
- package/dist/src/automations/capabilities/drafts.js +1 -1
- package/dist/src/automations/capabilities/write.d.ts +4 -4
- package/dist/src/automations/domain/validation.d.ts +8 -8
- package/dist/src/automations/draft/automation-draft-validator.d.ts +2 -2
- package/dist/src/automations/service/action-executor.js +1 -1
- package/dist/src/bootstrap/application-state.js +1 -1
- package/dist/src/browser/automations/schema.d.ts +2 -2
- package/dist/src/browser/automations/service.d.ts +2 -2
- package/dist/src/capabilities/runtime/dispatcher.js +1 -1
- package/dist/src/capabilities/runtime/product.js +1 -1
- package/dist/src/chat-commands/agent-edit.js +1 -1
- package/dist/src/cli/commands/agent.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/models.js +1 -1
- package/dist/src/cli/commands/onboard/model.js +1 -1
- package/dist/src/cli/utils/init-workspace-core.js +1 -1
- package/dist/src/config/agent-profile.js +2 -2
- package/dist/src/config/index.js +2 -2
- package/dist/src/config/loader.js +1 -1
- package/dist/src/config/models-json.js +1 -1
- package/dist/src/config/schema.d.ts +1 -0
- package/dist/src/config/schema.js +5 -2
- package/dist/src/connectors/connection-recovery-service.d.ts +3 -1
- package/dist/src/connectors/connection-recovery-service.js +67 -6
- package/dist/src/discussions/action-tasks.d.ts +2 -2
- package/dist/src/extensions/agent-plugins/validation.js +1 -1
- package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
- package/dist/src/gateway/agents-admin.js +2 -2
- package/dist/src/gateway/hono/lib/config-payload.js +1 -1
- package/dist/src/gateway/hono/routes/agent-stream.js +1 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js +2 -2
- package/dist/src/gateway/hono/routes/connectors.js +1 -1
- package/dist/src/gateway/hono/routes/context-sources.js +1 -1
- package/dist/src/gateway/hono/routes/notes.js +2 -2
- package/dist/src/gateway/hono/routes/projects.js +3 -3
- package/dist/src/gateway/hono/routes/session-input-handler.d.ts +18 -2
- package/dist/src/gateway/hono/routes/session-input-handler.js +2 -2
- package/dist/src/gateway/hono/routes/tasks.js +2 -2
- package/dist/src/gateway/image-generation-setup.js +1 -1
- package/dist/src/gateway/lock.js +1 -1
- package/dist/src/gateway/media-access.js +1 -1
- package/dist/src/gateway/service/agent-runner.d.ts +2 -0
- package/dist/src/gateway/service/agent-runner.js +30 -17
- package/dist/src/gateway/service/run-gateway-agent.js +32 -2
- package/dist/src/gateway/service/session-input-coordinator.d.ts +10 -1
- package/dist/src/gateway/service/session-input-coordinator.js +214 -27
- package/dist/src/gateway/service.d.ts +1 -0
- package/dist/src/gateway/service.js +49 -16
- package/dist/src/gateway/session-context-summary.js +1 -1
- package/dist/src/gateway/xopc-cloud-capability-setup.js +1 -1
- package/dist/src/home-intelligence/host.js +2 -2
- package/dist/src/local-apps/service.js +1 -1
- package/dist/src/media/session-references.js +1 -1
- package/dist/src/personal-agent/communication.js +1 -0
- package/dist/src/personal-agent/performance.d.ts +83 -0
- package/dist/src/personal-agent/performance.js +65 -0
- package/dist/src/personal-agent/policy.d.ts +1 -1
- package/dist/src/personal-agent/policy.js +1 -0
- package/dist/src/personal-agent/proactivity/service.js +1 -1
- package/dist/src/personal-agent/prompt-context.js +3 -1
- package/dist/src/personal-agent/prompts.js +10 -4
- package/dist/src/personal-agent/reply-composer.d.ts +1 -0
- package/dist/src/personal-agent/reply-composer.js +149 -20
- package/dist/src/personal-agent/reply-style.d.ts +1 -1
- package/dist/src/personal-agent/reply-style.js +1 -0
- package/dist/src/personal-agent/repository.d.ts +1 -1
- package/dist/src/personal-agent/repository.js +1 -1
- package/dist/src/personal-agent/request-delivery.js +3 -1
- package/dist/src/personal-agent/request-repository.d.ts +2 -0
- package/dist/src/personal-agent/request-service.d.ts +4 -0
- package/dist/src/personal-agent/request-service.js +91 -20
- package/dist/src/personal-agent/result-extraction.d.ts +42 -0
- package/dist/src/personal-agent/result-extraction.js +209 -0
- package/dist/src/personal-agent/result-file-links.d.ts +3 -0
- package/dist/src/personal-agent/result-file-links.js +21 -0
- package/dist/src/personal-agent/result-read-continuations.d.ts +13 -0
- package/dist/src/personal-agent/result-read-continuations.js +78 -0
- package/dist/src/personal-agent/result-reader.d.ts +43 -0
- package/dist/src/personal-agent/result-reader.js +461 -0
- package/dist/src/personal-agent/service.js +2 -2
- package/dist/src/personal-agent/task-cancel.js +85 -35
- package/dist/src/providers/model-catalog-persistence.js +1 -1
- package/dist/src/routing/resolve-route.js +1 -1
- package/dist/src/routing/resolve-tui-session-key.js +1 -1
- package/dist/src/scenes/taskFollowUp/service.d.ts +15 -5
- package/dist/src/session/client-history.d.ts +1 -1
- package/dist/src/session/client-history.js +1 -1
- package/dist/src/session/session-context-for-llm.js +4 -2
- package/dist/src/session/store.d.ts +3 -1
- package/dist/src/session/store.js +13 -3
- package/dist/src/share/hosted-session-share.js +1 -1
- package/dist/src/storage/sqlite/connection-wait-repository.d.ts +5 -2
- package/dist/src/storage/sqlite/connection-wait-repository.js +42 -17
- package/dist/src/storage/sqlite/index.d.ts +1 -0
- package/dist/src/storage/sqlite/index.js +3 -1
- package/dist/src/storage/sqlite/migrations/250_research_checkpoints.sql +15 -0
- package/dist/src/storage/sqlite/migrations/251_personal_result_reads.sql +40 -0
- package/dist/src/storage/sqlite/migrations/252_task_work_revisions.sql +15 -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/research-checkpoint-repository.d.ts +24 -0
- package/dist/src/storage/sqlite/research-checkpoint-repository.js +91 -0
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/storage/sqlite/session-creation-repository.js +3 -2
- package/dist/src/storage/sqlite/session-input-repository.d.ts +16 -0
- package/dist/src/storage/sqlite/session-input-repository.js +41 -7
- package/dist/src/tasks/capabilities/management.d.ts +2 -2
- package/dist/src/tasks/capabilities/read.js +2 -2
- package/dist/src/tasks/capabilities/relations.d.ts +7 -7
- package/dist/src/tasks/capabilities/write.d.ts +2 -2
- package/dist/src/tasks/capabilities/write.js +1 -1
- package/dist/src/tasks/index.js +1 -1
- package/dist/src/tasks/task-allocation-service.d.ts +2 -0
- package/dist/src/tasks/task-allocation-service.js +100 -8
- package/dist/src/tasks/task-application-service.d.ts +18 -0
- package/dist/src/tasks/task-application-service.js +133 -2
- package/dist/src/tasks/task-context-assembler.js +13 -5
- package/dist/src/tasks/task-continuation.d.ts +1 -0
- package/dist/src/tasks/task-continuation.js +1 -0
- package/dist/src/tasks/task-contract-definition.d.ts +3 -0
- package/dist/src/tasks/task-contract-planner.d.ts +1 -0
- package/dist/src/tasks/task-contract-planner.js +61 -20
- package/dist/src/tasks/task-conversation-repository.js +1 -1
- package/dist/src/tasks/task-evidence-ranges.d.ts +7 -0
- package/dist/src/tasks/task-evidence-ranges.js +20 -0
- package/dist/src/tasks/task-execution-capabilities.d.ts +26 -0
- package/dist/src/tasks/task-execution-capabilities.js +117 -0
- package/dist/src/tasks/task-handoff-service.js +1 -1
- package/dist/src/tasks/task-handoff.d.ts +56 -0
- package/dist/src/tasks/task-handoff.js +510 -0
- package/dist/src/tasks/task-model-call.d.ts +7 -0
- package/dist/src/tasks/task-model-call.js +35 -0
- package/dist/src/tasks/task-read-model-projector.d.ts +6 -0
- package/dist/src/tasks/task-read-model-projector.js +12 -1
- package/dist/src/tasks/task-research-repair.d.ts +19 -0
- package/dist/src/tasks/task-research-repair.js +79 -0
- package/dist/src/tasks/task-research-result.d.ts +99 -0
- package/dist/src/tasks/task-research-result.js +478 -0
- package/dist/src/tasks/task-result-delivery-repository.js +37 -3
- package/dist/src/tasks/task-result-delivery-service.js +38 -10
- package/dist/src/tasks/task-run-coordinator.js +71 -15
- package/dist/src/tasks/task-run-dispatcher.d.ts +1 -0
- package/dist/src/tasks/task-run-dispatcher.js +3 -1
- package/dist/src/tasks/task-run-repository.d.ts +5 -0
- package/dist/src/tasks/task-run-repository.js +88 -1
- package/dist/src/tui/backends/embedded-backend.js +2 -2
- package/dist/src/voice/realtime/persona-context.js +1 -1
- package/package.json +12 -6
- package/dist/gateway/static/root/assets/constants-Dy8Gw0sF.js +0 -1
- package/dist/gateway/static/root/assets/home-page-DJNmlMfH.js +0 -2
- package/dist/gateway/static/root/assets/index-K8SXDtxr.js +0 -260
- package/dist/gateway/static/root/assets/local-session-drafts-D_tYFy7d.js +0 -1
- package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-DBRj4-1-.js +0 -1
- package/dist/gateway/static/root/assets/product-open-page-CXkYP9xE.js +0 -1
- package/dist/gateway/static/root/assets/session-manager-_yy4bxhT.js +0 -16
- package/dist/gateway/static/root/assets/settings-advanced-gate-DoAHy1wj.js +0 -1
- package/dist/gateway/static/root/assets/task-detail-page-CfZhq4XZ.js +0 -2
- package/dist/gateway/static/root/assets/task-expandable-content-CF6Bj-Qa.js +0 -1
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { init_research_checkpoint, researchResumeContext } from "../orchestration/research-checkpoint.js";
|
|
2
|
+
import { claimResearchCheckpoint, createResearchCheckpoint, finishResearchCheckpoint, getResearchCheckpoint, init_research_checkpoint_repository, recordResearchEvidence, recordResearchSearch, saveResearchCheckpoint } from "../../storage/sqlite/research-checkpoint-repository.js";
|
|
3
|
+
import { resolveAgentAbortReason } from "../orchestration/run-termination.js";
|
|
1
4
|
import { readWorkspaceRevision } from "../coding/workspace-revision.js";
|
|
2
5
|
import { EXTERNAL_TOOL_NAMES } from "../external-tools/gateway-tools.js";
|
|
3
6
|
import "../external-tools/index.js";
|
|
@@ -8,8 +11,11 @@ import { runGit } from "../../execution-environments/git.js";
|
|
|
8
11
|
import { LocalWorktreeManager } from "../../execution-environments/local-worktree-manager.js";
|
|
9
12
|
import { SessionEnvironmentService } from "../../execution-environments/session-environment-service.js";
|
|
10
13
|
import { DELEGATION_CAPABILITIES, DELEGATION_TOOL_CAPABILITIES, protectDelegatedTool, resolveDelegationTools } from "./delegation-policy.js";
|
|
14
|
+
import { resolve } from "node:path";
|
|
11
15
|
import { Type } from "@sinclair/typebox";
|
|
12
16
|
//#region src/agent/tools/delegate-tool.ts
|
|
17
|
+
init_research_checkpoint();
|
|
18
|
+
init_research_checkpoint_repository();
|
|
13
19
|
const DEFAULT_DELEGATE_TOOLS = resolveDelegationTools(Object.keys(DELEGATION_TOOL_CAPABILITIES), "research").granted;
|
|
14
20
|
/** Tools never passed to a delegated sub-agent (even if requested). */
|
|
15
21
|
const DELEGATE_BLOCKED_TOOLS = new Set([
|
|
@@ -25,10 +31,23 @@ const DELEGATE_BLOCKED_TOOLS = new Set([
|
|
|
25
31
|
"skill_install",
|
|
26
32
|
EXTERNAL_TOOL_NAMES.requireConnection,
|
|
27
33
|
EXTERNAL_TOOL_NAMES.updateConnectionObjective,
|
|
28
|
-
"managed_job"
|
|
34
|
+
"managed_job",
|
|
35
|
+
"research_checkpoint"
|
|
29
36
|
]);
|
|
30
37
|
const DelegateTaskSchema = Type.Object({
|
|
31
|
-
goal: Type.String({
|
|
38
|
+
goal: Type.String({
|
|
39
|
+
minLength: 1,
|
|
40
|
+
maxLength: 8e3
|
|
41
|
+
}),
|
|
42
|
+
resumeId: Type.Optional(Type.String({
|
|
43
|
+
format: "uuid",
|
|
44
|
+
description: "Resume a saved research checkpoint owned by this conversation and workspace; preserve the original goal."
|
|
45
|
+
})),
|
|
46
|
+
maxAttempts: Type.Optional(Type.Integer({
|
|
47
|
+
minimum: 1,
|
|
48
|
+
maximum: 3,
|
|
49
|
+
description: "Research attempts in this call, including bounded automatic continuation after budget exhaustion. Default 2; cancellation, permissions and provider failures are not automatically retried."
|
|
50
|
+
})),
|
|
32
51
|
context: Type.Optional(Type.String()),
|
|
33
52
|
mode: Type.Optional(Type.Union([
|
|
34
53
|
"inspect",
|
|
@@ -54,16 +73,48 @@ function createDelegateTool(deps) {
|
|
|
54
73
|
name: "delegate_task",
|
|
55
74
|
label: "Delegate task",
|
|
56
75
|
parameters: DelegateTaskSchema,
|
|
57
|
-
description: "Delegate a bounded task with a fresh context; supply relevant facts and constraints in context. Default research inherits the parent's local, web, knowledge, skill and approved external read tools. read/inspect/review are local read-only. toolset and capabilities only narrow parent access; custom requires explicit capabilities. Browser interaction is opt-in. implement requires a project and clean Git workspace and returns changes in a separate worktree for review. No nested delegation, external writes, installation or background jobs. budgetTier selects light, standard (default), or deep; token budgets sum all model requests, not context size. Reports stop reason, budget usage, partial handoff and rejected tools.",
|
|
76
|
+
description: "Delegate a bounded task with a fresh context; supply relevant facts and constraints in context. Default research inherits the parent's local, web, knowledge, skill and approved external read tools. read/inspect/review are local read-only. toolset and capabilities only narrow parent access; custom requires explicit capabilities. Browser interaction is opt-in. implement requires a project and clean Git workspace and returns changes in a separate worktree for review. No nested delegation, external writes, installation or background jobs. budgetTier selects light, standard (default), or deep; token budgets sum all model requests, not context size. Research saves structured findings and source evidence durably for the current conversation. Use resumeId to continue unfinished work; maxAttempts bounds automatic budget continuation (default 2). Reports stop reason, budget usage, partial handoff and rejected tools.",
|
|
58
77
|
supportsParallel: false,
|
|
59
78
|
idempotent: false,
|
|
79
|
+
timeoutMs: DELEGATION_BUDGETS.deep.timeoutMs * 3 + 3e4,
|
|
60
80
|
async execute(_id, input, signal) {
|
|
61
81
|
signal?.throwIfAborted();
|
|
62
82
|
const mode = input.mode ?? "research";
|
|
83
|
+
if (input.resumeId && mode !== "research") throw new Error("resumeId is only supported for research");
|
|
63
84
|
const scope = getDelegationScope();
|
|
64
85
|
const parentTools = scope?.tools ?? deps.getParentTools();
|
|
65
86
|
const access = resolveDelegationTools(parentTools.map((tool) => tool.name), mode, input.toolset, input.capabilities);
|
|
66
87
|
const tools = access.granted;
|
|
88
|
+
const parentConversationId = deps.getCurrentContext?.()?.conversationId;
|
|
89
|
+
let workspace = deps.workspace, environmentId;
|
|
90
|
+
if (mode === "implement") {
|
|
91
|
+
if (!parentConversationId) throw new Error("Implementation delegation requires a project session");
|
|
92
|
+
const parent = new SessionEnvironmentService().get(parentConversationId);
|
|
93
|
+
if (!parent?.projectId) throw new Error("Attach this session to a project before implementation delegation");
|
|
94
|
+
const environment = await new LocalWorktreeManager().provisionManagedWorktree({
|
|
95
|
+
projectId: parent.projectId,
|
|
96
|
+
repositoryPath: workspace
|
|
97
|
+
});
|
|
98
|
+
workspace = environment.rootPath;
|
|
99
|
+
environmentId = environment.id;
|
|
100
|
+
}
|
|
101
|
+
const revision = mode === "review" ? await readWorkspaceRevision(workspace) : void 0;
|
|
102
|
+
const authorizeToolCall = scope?.authorizeToolCall ?? deps.createParentPolicy?.().beforeToolCall;
|
|
103
|
+
let research = mode === "research" && parentConversationId && (tools.length > 0 || input.resumeId) ? input.resumeId ? getResearchCheckpoint(input.resumeId, parentConversationId, resolve(workspace)) : createResearchCheckpoint(parentConversationId, resolve(workspace), input.goal) : void 0;
|
|
104
|
+
if (input.resumeId && !research) throw new Error("Research checkpoint not found in this conversation and workspace");
|
|
105
|
+
if (research && research.goal !== input.goal) throw new Error("Resuming research must preserve the original goal");
|
|
106
|
+
if (research?.status === "completed") return {
|
|
107
|
+
content: [{
|
|
108
|
+
type: "text",
|
|
109
|
+
text: research.summary + "\n" + JSON.stringify(research.checkpoint)
|
|
110
|
+
}],
|
|
111
|
+
details: {
|
|
112
|
+
status: "success",
|
|
113
|
+
stopReason: "completed",
|
|
114
|
+
resumeId: research.id,
|
|
115
|
+
checkpoint: research.checkpoint
|
|
116
|
+
}
|
|
117
|
+
};
|
|
67
118
|
if (!tools.length) return {
|
|
68
119
|
content: [{
|
|
69
120
|
type: "text",
|
|
@@ -77,130 +128,174 @@ function createDelegateTool(deps) {
|
|
|
77
128
|
stopReason: "parent_policy",
|
|
78
129
|
mode,
|
|
79
130
|
grantedTools: tools,
|
|
80
|
-
rejectedTools: access.rejected
|
|
131
|
+
rejectedTools: access.rejected,
|
|
132
|
+
...research ? {
|
|
133
|
+
resumeId: research.id,
|
|
134
|
+
checkpoint: research.checkpoint
|
|
135
|
+
} : {}
|
|
81
136
|
}
|
|
82
137
|
};
|
|
83
|
-
const parentConversationId = deps.getCurrentContext?.()?.conversationId;
|
|
84
138
|
const model = deps.getSubagentModel();
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
139
|
+
const attemptLimit = research ? Math.min(3, Math.max(1, input.maxAttempts ?? 2)) : 1;
|
|
140
|
+
let attempt = 0;
|
|
141
|
+
const attemptBudgets = [];
|
|
142
|
+
let result;
|
|
143
|
+
do {
|
|
144
|
+
signal?.throwIfAborted();
|
|
145
|
+
attempt++;
|
|
146
|
+
if (research) research = claimResearchCheckpoint(research, DELEGATION_BUDGETS[input.budgetTier ?? "standard"].timeoutMs + 1e4);
|
|
147
|
+
const claimedResearch = research;
|
|
148
|
+
const checkpointSink = claimedResearch ? {
|
|
149
|
+
read: () => getResearchCheckpoint(claimedResearch.id, claimedResearch.conversationId, claimedResearch.workspace).checkpoint,
|
|
150
|
+
save: (update) => saveResearchCheckpoint(claimedResearch, update),
|
|
151
|
+
recordEvidence: (evidence) => recordResearchEvidence(claimedResearch, evidence),
|
|
152
|
+
recordSearch: (entry) => recordResearchSearch(claimedResearch, entry)
|
|
153
|
+
} : void 0;
|
|
154
|
+
let child;
|
|
155
|
+
const abort = () => child?.abort(resolveAgentAbortReason(signal?.reason));
|
|
156
|
+
try {
|
|
157
|
+
child = createDelegateChildHandle({
|
|
158
|
+
workspace,
|
|
159
|
+
goal: mode === "review" ? `Independently review the actual changes. Inspect review_workspace and relevant source/tests. Report actionable defects with file and line evidence, severity and a concrete failure example. If there are no findings, state the checks and remaining uncertainty. Do not treat the parent's completion claim as evidence.\n\n${input.goal}` : input.goal,
|
|
160
|
+
context: [input.context, research ? researchResumeContext(research.checkpoint) : void 0].filter(Boolean).join("\n\n") || void 0,
|
|
161
|
+
researchCheckpoint: checkpointSink,
|
|
162
|
+
requesterConversationId: parentConversationId,
|
|
163
|
+
allowedToolNames: tools,
|
|
164
|
+
budgetTier: input.budgetTier,
|
|
165
|
+
maxIterations: input.maxIterations ?? DELEGATION_BUDGETS[input.budgetTier ?? "standard"].maxToolCalls,
|
|
166
|
+
model,
|
|
167
|
+
bus: deps.bus,
|
|
168
|
+
getConfig: deps.getConfig,
|
|
169
|
+
toolExecutorConfig: deps.toolExecutorConfig,
|
|
170
|
+
authorizeToolCall,
|
|
171
|
+
buildChildTools: (opts) => {
|
|
172
|
+
const local = mode === "implement" ? new Map(deps.buildChildTools(opts).map((tool) => [tool.name, tool])) : void 0;
|
|
173
|
+
const rebound = new Set([
|
|
174
|
+
"data_batch",
|
|
175
|
+
"read_file",
|
|
176
|
+
"grep",
|
|
177
|
+
"find",
|
|
178
|
+
"list_dir",
|
|
179
|
+
"review_workspace",
|
|
180
|
+
"write_file",
|
|
181
|
+
"apply_patch",
|
|
182
|
+
"exec_command",
|
|
183
|
+
"language_diagnostics"
|
|
184
|
+
]);
|
|
185
|
+
return parentTools.flatMap((tool) => {
|
|
186
|
+
const candidate = local && rebound.has(tool.name) ? local.get(tool.name) : tool;
|
|
187
|
+
return candidate ? [protectDelegatedTool(candidate)] : [];
|
|
188
|
+
});
|
|
189
|
+
},
|
|
190
|
+
verifyChanges: mode === "implement"
|
|
128
191
|
});
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
"--binary",
|
|
144
|
-
"HEAD"
|
|
145
|
-
]).catch(() => "") : void 0;
|
|
146
|
-
return {
|
|
147
|
-
content: [{
|
|
148
|
-
type: "text",
|
|
149
|
-
text: [
|
|
150
|
-
result.summary,
|
|
151
|
-
`Budget (${result.budget.tier}): ${JSON.stringify({
|
|
152
|
-
stopReason: result.stopReason,
|
|
153
|
-
usage: result.budget.usage,
|
|
154
|
-
limits: result.budget.limits,
|
|
155
|
-
handoffRequested: result.handoff.requested
|
|
156
|
-
})}`,
|
|
157
|
-
stale ? "Workspace changed or could not be fingerprinted; review findings require revalidation." : "",
|
|
158
|
-
access.rejected.length ? `Rejected tools: ${JSON.stringify(access.rejected)}` : "",
|
|
159
|
-
environmentId ? `Changes retained in ${workspace} (environment ${environmentId}). Review and integrate from this workspace, then verify the parent workspace again.` : "",
|
|
160
|
-
patch ? `Patch preview:\n${patch.slice(0, 3e4)}` : ""
|
|
161
|
-
].filter(Boolean).join("\n\n")
|
|
162
|
-
}],
|
|
163
|
-
details: {
|
|
164
|
-
status: stale && result.status === "success" ? "partial" : result.status,
|
|
165
|
-
mode,
|
|
166
|
-
summary: result.summary,
|
|
167
|
-
grantedTools: tools,
|
|
168
|
-
rejectedTools: access.rejected,
|
|
169
|
-
iterations: result.toolIterations,
|
|
170
|
-
revision: currentRevision,
|
|
171
|
-
reviewedRevision: revision,
|
|
172
|
-
stopReason: result.stopReason,
|
|
173
|
-
budget: result.budget,
|
|
174
|
-
handoff: result.handoff,
|
|
175
|
-
...result.verification ? { childVerification: result.verification } : {},
|
|
176
|
-
...environmentId ? {
|
|
177
|
-
environmentId,
|
|
178
|
-
workspace,
|
|
179
|
-
patchTruncated: (patch?.length ?? 0) > 3e4
|
|
180
|
-
} : {}
|
|
192
|
+
signal?.addEventListener("abort", abort, { once: true });
|
|
193
|
+
if (signal?.aborted) abort();
|
|
194
|
+
result = await child.run();
|
|
195
|
+
attemptBudgets.push(result.budget);
|
|
196
|
+
if (research && checkpointSink) {
|
|
197
|
+
const checkpoint = checkpointSink.read();
|
|
198
|
+
if (result.status === "success" && (!checkpoint.findings.length || checkpoint.nextSteps.length || checkpoint.findings.some((finding) => finding.status === "unverified"))) result = {
|
|
199
|
+
...result,
|
|
200
|
+
status: "partial",
|
|
201
|
+
stopReason: "verification",
|
|
202
|
+
summary: result.summary + "\nResearch checkpoint still has unfinished work; do not claim completion."
|
|
203
|
+
};
|
|
204
|
+
finishResearchCheckpoint(research, result.status === "success" ? "completed" : result.status, result.stopReason, result.summary);
|
|
205
|
+
research = getResearchCheckpoint(research.id, research.conversationId, research.workspace);
|
|
181
206
|
}
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
}],
|
|
189
|
-
details: {
|
|
190
|
-
status: signal?.aborted ? "cancelled" : "failed",
|
|
191
|
-
stopReason: signal?.aborted ? "cancelled" : "runtime_error",
|
|
192
|
-
mode,
|
|
193
|
-
grantedTools: tools,
|
|
194
|
-
rejectedTools: access.rejected,
|
|
195
|
-
...environmentId ? {
|
|
196
|
-
environmentId,
|
|
197
|
-
workspace
|
|
198
|
-
} : {}
|
|
207
|
+
} catch (error) {
|
|
208
|
+
const stopReason = signal?.aborted ? resolveAgentAbortReason(signal.reason) : "runtime_error";
|
|
209
|
+
const status = stopReason === "deadline_exceeded" ? "partial" : signal?.aborted ? "cancelled" : "failed";
|
|
210
|
+
if (research) {
|
|
211
|
+
if (getResearchCheckpoint(research.id, research.conversationId, research.workspace)?.leaseToken === research.leaseToken) finishResearchCheckpoint(research, status, stopReason, String(error));
|
|
212
|
+
research = getResearchCheckpoint(research.id, research.conversationId, research.workspace) ?? research;
|
|
199
213
|
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
214
|
+
return {
|
|
215
|
+
content: [{
|
|
216
|
+
type: "text",
|
|
217
|
+
text: `Delegation failed: ${String(error)}${environmentId ? `; work retained in ${workspace} (${environmentId})` : ""}`
|
|
218
|
+
}],
|
|
219
|
+
details: {
|
|
220
|
+
status,
|
|
221
|
+
stopReason,
|
|
222
|
+
mode,
|
|
223
|
+
grantedTools: tools,
|
|
224
|
+
rejectedTools: access.rejected,
|
|
225
|
+
...research ? {
|
|
226
|
+
resumeId: research.id,
|
|
227
|
+
checkpoint: research.checkpoint
|
|
228
|
+
} : {},
|
|
229
|
+
...environmentId ? {
|
|
230
|
+
environmentId,
|
|
231
|
+
workspace
|
|
232
|
+
} : {}
|
|
233
|
+
}
|
|
234
|
+
};
|
|
235
|
+
} finally {
|
|
236
|
+
signal?.removeEventListener("abort", abort);
|
|
237
|
+
}
|
|
238
|
+
} while (research && attempt < attemptLimit && !signal?.aborted && result.status === "partial" && [
|
|
239
|
+
"tool_calls",
|
|
240
|
+
"total_tokens",
|
|
241
|
+
"model_turns",
|
|
242
|
+
"timeout",
|
|
243
|
+
"deadline_exceeded"
|
|
244
|
+
].includes(result.stopReason) && research.checkpoint.nextSteps.length > 0);
|
|
245
|
+
const currentRevision = mode === "review" ? await readWorkspaceRevision(workspace) : void 0;
|
|
246
|
+
const stale = mode === "review" && (!revision || revision !== currentRevision);
|
|
247
|
+
const patch = mode === "implement" ? await runGit(workspace, [
|
|
248
|
+
"diff",
|
|
249
|
+
"--no-ext-diff",
|
|
250
|
+
"--no-textconv",
|
|
251
|
+
"--binary",
|
|
252
|
+
"HEAD"
|
|
253
|
+
]).catch(() => "") : void 0;
|
|
254
|
+
return {
|
|
255
|
+
content: [{
|
|
256
|
+
type: "text",
|
|
257
|
+
text: [
|
|
258
|
+
result.summary,
|
|
259
|
+
research ? `Research checkpoint ${research.id}: ${JSON.stringify(research.checkpoint)}. Resume unfinished work with resumeId and the same goal.` : "",
|
|
260
|
+
`Budget (${result.budget.tier}): ${JSON.stringify({
|
|
261
|
+
stopReason: result.stopReason,
|
|
262
|
+
usage: result.budget.usage,
|
|
263
|
+
limits: result.budget.limits,
|
|
264
|
+
handoffRequested: result.handoff.requested
|
|
265
|
+
})}`,
|
|
266
|
+
stale ? "Workspace changed or could not be fingerprinted; review findings require revalidation." : "",
|
|
267
|
+
access.rejected.length ? `Rejected tools: ${JSON.stringify(access.rejected)}` : "",
|
|
268
|
+
environmentId ? `Changes retained in ${workspace} (environment ${environmentId}). Review and integrate from this workspace, then verify the parent workspace again.` : "",
|
|
269
|
+
patch ? `Patch preview:\n${patch.slice(0, 3e4)}` : ""
|
|
270
|
+
].filter(Boolean).join("\n\n")
|
|
271
|
+
}],
|
|
272
|
+
details: {
|
|
273
|
+
status: stale && result.status === "success" ? "partial" : result.status,
|
|
274
|
+
mode,
|
|
275
|
+
summary: result.summary,
|
|
276
|
+
grantedTools: tools,
|
|
277
|
+
rejectedTools: access.rejected,
|
|
278
|
+
iterations: attemptBudgets.reduce((total, budget) => total + (budget.usage.toolCalls ?? 0), 0),
|
|
279
|
+
revision: currentRevision,
|
|
280
|
+
reviewedRevision: revision,
|
|
281
|
+
stopReason: result.stopReason,
|
|
282
|
+
budget: result.budget,
|
|
283
|
+
handoff: result.handoff,
|
|
284
|
+
...research ? {
|
|
285
|
+
resumeId: research.id,
|
|
286
|
+
checkpoint: research.checkpoint,
|
|
287
|
+
attempts: attempt,
|
|
288
|
+
totalAttempts: research.attempts,
|
|
289
|
+
attemptBudgets
|
|
290
|
+
} : {},
|
|
291
|
+
...result.verification ? { childVerification: result.verification } : {},
|
|
292
|
+
...environmentId ? {
|
|
293
|
+
environmentId,
|
|
294
|
+
workspace,
|
|
295
|
+
patchTruncated: (patch?.length ?? 0) > 3e4
|
|
296
|
+
} : {}
|
|
297
|
+
}
|
|
298
|
+
};
|
|
204
299
|
}
|
|
205
300
|
};
|
|
206
301
|
}
|
|
@@ -11,6 +11,7 @@ const DELEGATION_CAPABILITIES = [
|
|
|
11
11
|
];
|
|
12
12
|
/** Host-owned classifications. New tools fail closed until classified. */
|
|
13
13
|
const DELEGATION_TOOL_CAPABILITIES = {
|
|
14
|
+
data_batch: "local_read",
|
|
14
15
|
read_file: "local_read",
|
|
15
16
|
grep: "local_read",
|
|
16
17
|
find: "local_read",
|
|
@@ -43,6 +44,16 @@ const DELEGATION_TOOL_CAPABILITIES = {
|
|
|
43
44
|
language_diagnostics: "command",
|
|
44
45
|
browser_use: "browser"
|
|
45
46
|
};
|
|
47
|
+
const BATCH_SOURCES = new Set([
|
|
48
|
+
"read_file",
|
|
49
|
+
"grep",
|
|
50
|
+
"exec_command",
|
|
51
|
+
"knowledge_search",
|
|
52
|
+
"knowledge_get",
|
|
53
|
+
"web_search",
|
|
54
|
+
"web_fetch",
|
|
55
|
+
"xopc_tool_execute"
|
|
56
|
+
]);
|
|
46
57
|
const RESEARCH = [
|
|
47
58
|
"local_read",
|
|
48
59
|
"web_read",
|
|
@@ -67,7 +78,8 @@ function resolveDelegationTools(parentNames, mode, requested, capabilities) {
|
|
|
67
78
|
const rejected = [];
|
|
68
79
|
for (const tool of new Set((requested ?? parentNames).map((name) => name.trim()).filter(Boolean))) {
|
|
69
80
|
const capability = DELEGATION_TOOL_CAPABILITIES[tool];
|
|
70
|
-
const
|
|
81
|
+
const capabilityAllowed = tool === "data_batch" ? parentNames.some((name) => BATCH_SOURCES.has(name) && allowed.has(DELEGATION_TOOL_CAPABILITIES[name])) : capability !== void 0 && allowed.has(capability);
|
|
82
|
+
const reason = !parent.has(tool) ? "Unavailable to the parent agent" : !capability ? "Tool has no delegable capability" : !capabilityAllowed ? `Capability ${capability} is outside this delegation` : void 0;
|
|
71
83
|
if (reason) {
|
|
72
84
|
if (requested) rejected.push({
|
|
73
85
|
tool,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { runProcess } from "../../process/run-process.js";
|
|
1
2
|
import { commandRegistry, commandTimeout } from "../commands/command-registry.js";
|
|
2
3
|
import { evaluateExecPolicy } from "../sandbox/exec-policy.js";
|
|
3
4
|
import { formatSize, truncateTail } from "./truncate.js";
|
|
@@ -58,6 +59,7 @@ function createExecCommandTool(workspaceCwd, options) {
|
|
|
58
59
|
"Unix and Docker use /bin/sh, not your interactive shell. Do not use Bash process substitution <(...) or other Bash-only syntax unless invoking an installed bash explicitly. Prefer separate portable commands or a script file. Windows hosts use cmd.exe.",
|
|
59
60
|
"Use apply_patch for file edits; do not edit files by shell redirection unless explicitly necessary.",
|
|
60
61
|
"Relative cwd values resolve under the current agent workspace.",
|
|
62
|
+
"Use a fresh output directory with mkdir -p. Avoid destructive cleanup such as rm -rf on variable paths; blocked cleanup should be removed, never disguised or moved to bypass policy. A syntax preflight on Unix host commands prevents partial writes from malformed shell syntax.",
|
|
61
63
|
"When the command creates final user-facing files, declare all final paths in outputs so they are persisted with this command."
|
|
62
64
|
].join(" "),
|
|
63
65
|
parameters: ExecCommandSchema,
|
|
@@ -99,7 +101,7 @@ function createExecCommandTool(workspaceCwd, options) {
|
|
|
99
101
|
allowedEnvVars: options?.getSkillPassthroughEnvVarNames?.() ?? []
|
|
100
102
|
});
|
|
101
103
|
if (!policy.allowed) {
|
|
102
|
-
const text = `Sandbox blocked command: ${policy.reason}
|
|
104
|
+
const text = `Sandbox blocked command: ${policy.reason}\nNothing was executed. Remove destructive cleanup and use a fresh output directory with mkdir -p, or narrow the operation. Do not repeat unchanged or rephrase the blocked operation to bypass policy.`;
|
|
103
105
|
return {
|
|
104
106
|
content: [{
|
|
105
107
|
type: "text",
|
|
@@ -125,12 +127,55 @@ function createExecCommandTool(workspaceCwd, options) {
|
|
|
125
127
|
}
|
|
126
128
|
const timeoutMs = commandTimeout(params.timeoutMs, policy.timeoutMs);
|
|
127
129
|
const maxOutputChars = clampMaxOutputChars(params.maxOutputChars);
|
|
130
|
+
const isolation = options?.getCommandIsolation?.();
|
|
131
|
+
if (process.platform !== "win32" && isolation?.mode !== "docker") {
|
|
132
|
+
const started = performance.now();
|
|
133
|
+
const syntax = await runProcess({
|
|
134
|
+
program: "/bin/sh",
|
|
135
|
+
args: [
|
|
136
|
+
"-n",
|
|
137
|
+
"-c",
|
|
138
|
+
command
|
|
139
|
+
],
|
|
140
|
+
cwd: policy.effectiveCwd,
|
|
141
|
+
env: policy.sanitizedEnv,
|
|
142
|
+
timeoutMs: 5e3,
|
|
143
|
+
maxOutputBytes: 8e3,
|
|
144
|
+
signal,
|
|
145
|
+
terminationPolicy: "tree"
|
|
146
|
+
});
|
|
147
|
+
if (syntax.exitCode !== 0) {
|
|
148
|
+
const details = {
|
|
149
|
+
command,
|
|
150
|
+
cwd: policy.effectiveCwd,
|
|
151
|
+
status: syntax.timedOut ? "timed_out" : "failed",
|
|
152
|
+
exitCode: syntax.exitCode,
|
|
153
|
+
durationMs: performance.now() - started,
|
|
154
|
+
timedOut: syntax.timedOut,
|
|
155
|
+
truncated: false,
|
|
156
|
+
outputBytes: Buffer.byteLength(syntax.stderr),
|
|
157
|
+
totalOutputBytes: Buffer.byteLength(syntax.stderr),
|
|
158
|
+
captureTruncated: syntax.outputTruncated,
|
|
159
|
+
stdout: "",
|
|
160
|
+
stderr: syntax.stderr,
|
|
161
|
+
aggregatedOutput: syntax.stderr,
|
|
162
|
+
failureHint: "Shell syntax preflight failed; nothing was executed. Use portable POSIX sh syntax (for example diff file1 file2), or explicitly invoke an installed bash for Bash syntax. Fix the command; no side effects need replaying."
|
|
163
|
+
};
|
|
164
|
+
return {
|
|
165
|
+
content: [{
|
|
166
|
+
type: "text",
|
|
167
|
+
text: formatOutputForModel(details, maxOutputChars).text
|
|
168
|
+
}],
|
|
169
|
+
details
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
}
|
|
128
173
|
const runtimeEnv = options?.prepareEnv ? await options.prepareEnv(policy.sanitizedEnv, policy.effectiveCwd) : policy.sanitizedEnv;
|
|
129
174
|
const owner = options?.getConversationId?.() ?? workspaceCwd;
|
|
130
175
|
const registry = commandRegistry();
|
|
131
176
|
let commandResult = await registry.start({
|
|
132
177
|
workspace: workspaceCwd,
|
|
133
|
-
isolation
|
|
178
|
+
isolation,
|
|
134
179
|
owner,
|
|
135
180
|
command,
|
|
136
181
|
cwd: policy.effectiveCwd,
|
|
@@ -8,9 +8,10 @@ import { getSessionMetadata } from "../../storage/sqlite/session-read-repository
|
|
|
8
8
|
import { patchSessionMetadata } from "../../storage/sqlite/session-repository.js";
|
|
9
9
|
import { getSessionTaskPlan, setSessionTaskPlan } from "../../storage/sqlite/session-task-plan-repository.js";
|
|
10
10
|
import { init_sqlite } from "../../storage/sqlite/index.js";
|
|
11
|
-
import { init_agent_scope, resolveDefaultAgentId } from "../agent-scope.js";
|
|
12
11
|
import { resolveUserContextSessionAccess } from "../../user-context/access-policy.js";
|
|
12
|
+
import { init_agent_scope, resolveDefaultAgentId } from "../agent-scope.js";
|
|
13
13
|
import { resolveEffectiveAgentConfigForAgent, resolveEffectiveAgentConfigForSession } from "../../config/agent-profile.js";
|
|
14
|
+
import { TaskConversationRepository } from "../../tasks/task-conversation-repository.js";
|
|
14
15
|
import { LOCAL_READ_MAX_CHARS } from "./local-read-budget.js";
|
|
15
16
|
import { createPersonalAttentionTool } from "./personal-attention-tool.js";
|
|
16
17
|
import { markCodemodeCoreRead } from "./codemode-permissions.js";
|
|
@@ -40,6 +41,7 @@ import { createWebFetchTool, createWebSearchTool } from "./web.js";
|
|
|
40
41
|
import { createWebExtractTool } from "./web-extract.js";
|
|
41
42
|
import { createMessageTool } from "./communication.js";
|
|
42
43
|
import { createSendMediaTool } from "./send-media.js";
|
|
44
|
+
import { createTaskResultTool } from "./task-result-tool.js";
|
|
43
45
|
import { createReadMediaTool } from "./media-read-tool.js";
|
|
44
46
|
import { createCreateShareTool, isShareToolAvailable } from "./create-share-tool.js";
|
|
45
47
|
import { createTodoTool } from "./todo-tool.js";
|
|
@@ -71,7 +73,10 @@ import { createImageGenerateTool } from "./image-generate-tool.js";
|
|
|
71
73
|
import { createPersonalReadTool } from "./personal-read-tool.js";
|
|
72
74
|
import { createTaskCollaborationTool } from "./task-collaboration-tool.js";
|
|
73
75
|
import "./index.js";
|
|
76
|
+
import { createPersonalResultTool } from "./personal-result-tool.js";
|
|
74
77
|
import { createPersonalTaskTool } from "./personal-task-tool.js";
|
|
78
|
+
import { withTaskEvidenceIdentity } from "./task-evidence.js";
|
|
79
|
+
import { withPersonalPerformance } from "./personal-performance.js";
|
|
75
80
|
import { createPersonalRequestTools } from "./personal-request-tool.js";
|
|
76
81
|
import { createPersonalRequestConnectionTool, createPersonalRequestResultTool } from "./personal-request-result-tool.js";
|
|
77
82
|
import { createPersonalPreferenceTool } from "./personal-preference-tool.js";
|
|
@@ -427,6 +432,12 @@ var AgentToolsFactory = class AgentToolsFactory {
|
|
|
427
432
|
})] : [],
|
|
428
433
|
createSendMediaTool(workspace, bus, deliveryContext),
|
|
429
434
|
createPublishArtifactsTool(workspace),
|
|
435
|
+
createTaskResultTool(currentConversationId),
|
|
436
|
+
createTaskCollaborationTool({
|
|
437
|
+
...productToolDeps,
|
|
438
|
+
getWorkspace: () => workspace,
|
|
439
|
+
getCurrentConversationId: currentConversationId
|
|
440
|
+
}),
|
|
430
441
|
createReadMediaTool(personalToolsConfigured ? {
|
|
431
442
|
textOnly: true,
|
|
432
443
|
maxChars: LOCAL_READ_MAX_CHARS,
|
|
@@ -530,6 +541,7 @@ var AgentToolsFactory = class AgentToolsFactory {
|
|
|
530
541
|
...this.deps.getAutomationService || this.deps.getSceneAccess || this.deps.getProjectService || this.deps.getNotesService || this.deps.getLocalAppService || this.deps.getChatPreviewService || this.deps.dispatchTaskEvents || this.deps.dispatchTaskRuns ? [createXopcUseTool(productToolDeps), ...personalToolsConfigured ? [
|
|
531
542
|
createPersonalTaskTool(productToolDeps),
|
|
532
543
|
createPersonalReadTool(productToolDeps),
|
|
544
|
+
createPersonalResultTool(currentConversationId),
|
|
533
545
|
...createPersonalRequestTools(productToolDeps),
|
|
534
546
|
createPersonalAttentionTool({
|
|
535
547
|
getConversationId: () => this.deps.getCurrentContext()?.conversationId,
|
|
@@ -614,14 +626,7 @@ var AgentToolsFactory = class AgentToolsFactory {
|
|
|
614
626
|
}
|
|
615
627
|
})] : [],
|
|
616
628
|
...optionalTools,
|
|
617
|
-
...personalExecution ? [
|
|
618
|
-
createPersonalRequestResultTool(currentConversationId),
|
|
619
|
-
createPersonalRequestConnectionTool(currentConversationId),
|
|
620
|
-
createTaskCollaborationTool({
|
|
621
|
-
...productToolDeps,
|
|
622
|
-
getCurrentConversationId: currentConversationId
|
|
623
|
-
})
|
|
624
|
-
] : []
|
|
629
|
+
...personalExecution ? [createPersonalRequestResultTool(currentConversationId), createPersonalRequestConnectionTool(currentConversationId)] : []
|
|
625
630
|
];
|
|
626
631
|
if ([
|
|
627
632
|
"read_file",
|
|
@@ -666,7 +671,11 @@ var AgentToolsFactory = class AgentToolsFactory {
|
|
|
666
671
|
return ["create_desktop_pet"];
|
|
667
672
|
}
|
|
668
673
|
createAllTools(coreOptions) {
|
|
669
|
-
|
|
674
|
+
const wrapped = wrapToolsWithProtection(this.createCoreTools(coreOptions), this.deps.toolExecutorConfig);
|
|
675
|
+
const executionId = coreOptions?.conversationId ?? getEmbeddedExecutionSession() ?? this.deps.getCurrentContext()?.conversationId;
|
|
676
|
+
const taskExecution = executionId && isXopcDatabaseOpen() && new TaskConversationRepository().resolveActiveExecutionSession(executionId);
|
|
677
|
+
const observed = wrapped.map((tool) => taskExecution || tool.name.startsWith("personal_") ? withPersonalPerformance(tool, executionId, taskExecution ? taskExecution.taskId : void 0, taskExecution ? taskExecution.runId : void 0, taskExecution ? taskExecution.assignmentEpoch : void 0) : tool);
|
|
678
|
+
return sortToolsForPromptCache(taskExecution ? observed.map((tool) => withTaskEvidenceIdentity(tool)) : observed);
|
|
670
679
|
}
|
|
671
680
|
};
|
|
672
681
|
function filterToolsByDisabledSet(tools, disabled) {
|
|
@@ -17,6 +17,7 @@ export { createWebExtractTool, stripHtmlBoilerplate, DEFAULT_WEB_EXTRACT_MAX_LEN
|
|
|
17
17
|
export { createMessageTool } from './communication.js';
|
|
18
18
|
export { createSendMediaTool } from './send-media.js';
|
|
19
19
|
export { createPublishArtifactsTool } from './publish-artifacts.js';
|
|
20
|
+
export { createTaskResultTool } from './task-result-tool.js';
|
|
20
21
|
export { createReadMediaTool } from './media-read-tool.js';
|
|
21
22
|
export { createCreateShareTool, isShareToolAvailable, type CreateShareToolDeps, } from './create-share-tool.js';
|
|
22
23
|
export { createTodoTool, TodoStore, type TodoItem, type TodoStatus } from './todo-tool.js';
|
|
@@ -19,6 +19,7 @@ import { createWebFetchTool, createWebSearchTool } from "./web.js";
|
|
|
19
19
|
import { DEFAULT_WEB_EXTRACT_MAX_LENGTH, MAX_RAW_HTML_CHARS_FOR_WEB_EXTRACT, createWebExtractTool, stripHtmlBoilerplate } from "./web-extract.js";
|
|
20
20
|
import { createMessageTool } from "./communication.js";
|
|
21
21
|
import { createSendMediaTool } from "./send-media.js";
|
|
22
|
+
import { createTaskResultTool } from "./task-result-tool.js";
|
|
22
23
|
import { createReadMediaTool } from "./media-read-tool.js";
|
|
23
24
|
import { createCreateShareTool, isShareToolAvailable } from "./create-share-tool.js";
|
|
24
25
|
import { TodoStore, createTodoTool } from "./todo-tool.js";
|
|
@@ -47,4 +48,4 @@ import { createImageTool } from "./image-tool.js";
|
|
|
47
48
|
import { createImageGenerateTool, resolveImageGenerationModelConfigForTool } from "./image-generate-tool.js";
|
|
48
49
|
import { createPersonalReadTool } from "./personal-read-tool.js";
|
|
49
50
|
import { createTaskCollaborationTool } from "./task-collaboration-tool.js";
|
|
50
|
-
export { BrowserRuntime, DEFAULT_DELEGATE_TOOLS, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, DEFAULT_TOOL_METADATA, DEFAULT_WEB_EXTRACT_MAX_LENGTH, DELEGATE_BLOCKED_TOOLS, GREP_MAX_LINE_LENGTH, MAX_RAW_HTML_CHARS_FOR_WEB_EXTRACT, TodoStore, ToolConcurrencyController, assertBrowserUrlAllowed, createApplyPatchTool, createAutomationTool, createBrowserAutomationTool, createClarifyTool, createCreateShareTool, createDataBatchTool, createDelegateTool, createDesktopPetTool, createExecCommandTool, createFindTool, createGrepTool, createImageGenerateTool, createImageTool, createKnowledgeGetTool, createKnowledgeReadTool, createKnowledgeSearchTool, createKnowledgeWriteTool, createListDirTool, createManagedJobTool, createMemoryMaintenanceTool, createMessageTool, createPersonalReadTool, createPublishArtifactsTool, createReadFileTool, createReadMediaTool, createSendMediaTool, createSessionRecallTool, createSessionSearchTool, createSessionStatusTool, createSkillInstallTool, createSkillManageTool, createSkillViewTool, createSkillsListTool, createSkillsMarketplaceSearchTool, createTaskCollaborationTool, createTodoTool, createToolManualTool, createUpdatePlanTool, createUserContextGetTool, createUserContextReadTool, createUserContextSearchTool, createUserContextUpdateTool, createWebExtractTool, createWebFetchTool, createWebSearchTool, createWorkflowManageTool, createWorkflowTool, createWriteFileTool, createXopcUseTool, findTool, formatSize, fuzzyFindText, generateDiffString, getToolMetadata, grepTool, isShareToolAvailable, listDirTool, normalizeForFuzzyMatch, normalizeToLF, resolveImageGenerationModelConfigForTool, resolveImageModelConfigForTool, resolveToolLockMode, restoreLineEndings, stripBom, stripHtmlBoilerplate, truncateHead, truncateLine, truncateTail, writeFileTool };
|
|
51
|
+
export { BrowserRuntime, DEFAULT_DELEGATE_TOOLS, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, DEFAULT_TOOL_METADATA, DEFAULT_WEB_EXTRACT_MAX_LENGTH, DELEGATE_BLOCKED_TOOLS, GREP_MAX_LINE_LENGTH, MAX_RAW_HTML_CHARS_FOR_WEB_EXTRACT, TodoStore, ToolConcurrencyController, assertBrowserUrlAllowed, createApplyPatchTool, createAutomationTool, createBrowserAutomationTool, createClarifyTool, createCreateShareTool, createDataBatchTool, createDelegateTool, createDesktopPetTool, createExecCommandTool, createFindTool, createGrepTool, createImageGenerateTool, createImageTool, createKnowledgeGetTool, createKnowledgeReadTool, createKnowledgeSearchTool, createKnowledgeWriteTool, createListDirTool, createManagedJobTool, createMemoryMaintenanceTool, createMessageTool, createPersonalReadTool, createPublishArtifactsTool, createReadFileTool, createReadMediaTool, createSendMediaTool, createSessionRecallTool, createSessionSearchTool, createSessionStatusTool, createSkillInstallTool, createSkillManageTool, createSkillViewTool, createSkillsListTool, createSkillsMarketplaceSearchTool, createTaskCollaborationTool, createTaskResultTool, createTodoTool, createToolManualTool, createUpdatePlanTool, createUserContextGetTool, createUserContextReadTool, createUserContextSearchTool, createUserContextUpdateTool, createWebExtractTool, createWebFetchTool, createWebSearchTool, createWorkflowManageTool, createWorkflowTool, createWriteFileTool, createXopcUseTool, findTool, formatSize, fuzzyFindText, generateDiffString, getToolMetadata, grepTool, isShareToolAvailable, listDirTool, normalizeForFuzzyMatch, normalizeToLF, resolveImageGenerationModelConfigForTool, resolveImageModelConfigForTool, resolveToolLockMode, restoreLineEndings, stripBom, stripHtmlBoilerplate, truncateHead, truncateLine, truncateTail, writeFileTool };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createExecCommandTool } from "./exec-command.js";
|
|
2
2
|
import { relative, resolve, sep } from "node:path";
|
|
3
|
-
import { access } from "node:fs/promises";
|
|
4
3
|
import { Type } from "@sinclair/typebox";
|
|
4
|
+
import { access } from "node:fs/promises";
|
|
5
5
|
//#region src/agent/tools/language-diagnostics.ts
|
|
6
6
|
function parseTypeScriptDiagnostics(output) {
|
|
7
7
|
return [...output.matchAll(/^(.+)\((\d+),(\d+)\): error (TS\d+): (.+)$/gm)].slice(0, 200).map((match) => ({
|