@xopcai/xopc 0.0.353 → 0.0.354
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/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/activity-YogQEteU.js +1 -0
- package/dist/gateway/static/root/assets/activity-store-X7CG9pzB.js +1 -0
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BVIuZcCP.js → agent-avatar-dicebear-B8PS1eLP.js} +1 -1
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-CLBSL9hl.js +1 -0
- package/dist/gateway/static/root/assets/agent-plugin-dialog-BninweSg.js +1 -0
- package/dist/gateway/static/root/assets/agents-CcVLP_WP.js +66 -0
- package/dist/gateway/static/root/assets/app-chrome-BeB4KgOf.js +1 -0
- package/dist/gateway/static/root/assets/app-management-settings-panel-COdQOmdT.js +1 -0
- package/dist/gateway/static/root/assets/appearance-settings-CDNjc2yy.js +1 -0
- package/dist/gateway/static/root/assets/apps-page-C-kvpPj8.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-BZXXJvpX.js → archive-plugin-QfOaQPL_.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-C7VKkDb5.js → automations-page-87DN5nXX.js} +1 -1
- package/dist/gateway/static/root/assets/automations-workspace-BdZ8NO8k.js +7 -0
- package/dist/gateway/static/root/assets/{binary-plugins-DoT3g5SP.js → binary-plugins-BF2lVwR9.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-sqqrCafh.js → block-editor-B04Kv5DU.js} +39 -39
- package/dist/gateway/static/root/assets/bot-DjLkhyZL.js +1 -0
- package/dist/gateway/static/root/assets/{browser-automation-inputs-CZOKsAaa.js → browser-automation-inputs-FW3bYZ-z.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automations-page-TEeTmkGP.js → browser-automations-page-Ck6Zb9aU.js} +2 -2
- package/dist/gateway/static/root/assets/browser-settings-page-DHlyYItE.js +3 -0
- package/dist/gateway/static/root/assets/{capabilities-BOrLei_L.js → capabilities-BCF_160Z.js} +1 -1
- package/dist/gateway/static/root/assets/capabilities-CF4-mrIa.js +1 -0
- package/dist/gateway/static/root/assets/capabilities-page-C-6RLFNh.js +2 -0
- package/dist/gateway/static/root/assets/capabilities-settings-panel-CST_HBkR.js +8 -0
- package/dist/gateway/static/root/assets/capability-header-actions-PBPJJsp6.js +1 -0
- package/dist/gateway/static/root/assets/channels-CM4sIvcP.js +1 -0
- package/dist/gateway/static/root/assets/{chat-terminal-dock-Q99iKyiO.js → chat-terminal-dock-DTd7mWyE.js} +2 -2
- package/dist/gateway/static/root/assets/chevron-right-BweFrslA.js +1 -0
- package/dist/gateway/static/root/assets/circle-alert-BEjgurr2.js +1 -0
- package/dist/gateway/static/root/assets/circle-dashed-8qMD7gHf.js +1 -0
- package/dist/gateway/static/root/assets/circle-dot-BAseJTrF.js +1 -0
- package/dist/gateway/static/root/assets/circle-pause-CN9jYH2s.js +1 -0
- package/dist/gateway/static/root/assets/clock-3-DnrAnuyZ.js +1 -0
- package/dist/gateway/static/root/assets/cloud-C4-yfnnk.js +1 -0
- package/dist/gateway/static/root/assets/computer-settings-page--9rh1mvu.js +1 -0
- package/dist/gateway/static/root/assets/connector-service-page-v6Is0BOO.js +1 -0
- package/dist/gateway/static/root/assets/connectors-page-CryQzmEZ.js +2 -0
- package/dist/gateway/static/root/assets/copy-text-row-BHDs3cBa.js +1 -0
- package/dist/gateway/static/root/assets/date-picker-DTsMzjoZ.js +1 -0
- package/dist/gateway/static/root/assets/{dependency-picker-BjH8XrKb.js → dependency-picker-Y1QYCcLp.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-DyGxNAVW.js → desktop-pet-D9dfZrOp.js} +1 -1
- package/dist/gateway/static/root/assets/desktop-pet-settings-BHVOHZUL.js +1 -0
- package/dist/gateway/static/root/assets/device-pairing-wizard-Cy5YDZ2b.js +1 -0
- package/dist/gateway/static/root/assets/directory-picker-path-field-DeMo9KlE.js +1 -0
- package/dist/gateway/static/root/assets/dist-3h6cXXhT.js +1 -0
- package/dist/gateway/static/root/assets/dist-Che_jiQF.js +1 -0
- package/dist/gateway/static/root/assets/extension-debug-page-BrGWLJg9.js +1 -0
- package/dist/gateway/static/root/assets/extension-page-AWrvy1Nb.js +1 -0
- package/dist/gateway/static/root/assets/extension-provider-CUpbXB2k.js +1 -0
- package/dist/gateway/static/root/assets/extension-settings-page-C5KgmhYu.js +1 -0
- package/dist/gateway/static/root/assets/form-field-width-DJw_jULe.js +1 -0
- package/dist/gateway/static/root/assets/gateway-settings-DC-lok0J.js +1 -0
- package/dist/gateway/static/root/assets/git-branch-Dh9uxTot.js +1 -0
- package/dist/gateway/static/root/assets/home-page-C29_VFAs.js +1 -0
- package/dist/gateway/static/root/assets/imports-page-BKVKfVMA.js +1 -0
- package/dist/gateway/static/root/assets/index-BJh5gU04.css +1 -0
- package/dist/gateway/static/root/assets/index-ByFXhQ-T.js +107 -0
- package/dist/gateway/static/root/assets/index.module-Cd9ENXfk.js +1 -0
- package/dist/gateway/static/root/assets/interaction-BdhHBbYa.js +1 -0
- package/dist/gateway/static/root/assets/is-masked-secret-DOkL5b_X.js +1 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-CoYdyBRh.js → keyboard-shortcuts-settings-DiwE4gKU.js} +1 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-Dt3TC64L.js +1 -0
- package/dist/gateway/static/root/assets/{local-apps-page-CeBhXeoX.js → local-apps-page-DFPhWkxU.js} +1 -1
- package/dist/gateway/static/root/assets/logs-page-C4faHZHj.js +2 -0
- package/dist/gateway/static/root/assets/management-settings-pZLdvIiw.js +1 -0
- package/dist/gateway/static/root/assets/markdown-view-7tzqIp_G.js +201 -0
- package/dist/gateway/static/root/assets/{media-plugins-C9ya5rUH.js → media-plugins-cjgrKnne.js} +1 -1
- package/dist/gateway/static/root/assets/message-square-fVE7Ghj1.js +1 -0
- package/dist/gateway/static/root/assets/mic-CuUb7zc-.js +1 -0
- package/dist/gateway/static/root/assets/model-display-name-DXhO9rcM.js +1 -0
- package/dist/gateway/static/root/assets/models-hub-cache-HGrORbzR.js +1 -0
- package/dist/gateway/static/root/assets/note-detail-panel-BLnT1tYJ.js +5 -0
- package/dist/gateway/static/root/assets/notes-api-J0yhflxC.js +1 -0
- package/dist/gateway/static/root/assets/notes-page-BawArJvP.js +8 -0
- package/dist/gateway/static/root/assets/oauth-api-CYe61zfD.js +1 -0
- package/dist/gateway/static/root/assets/page-context-capture-button-CiBUm2Br.js +1 -0
- package/dist/gateway/static/root/assets/page-tabs-D2xpUV26.js +1 -0
- package/dist/gateway/static/root/assets/pause-DuPxgSxk.js +1 -0
- package/dist/gateway/static/root/assets/personal-page-Cng583RH.js +1 -0
- package/dist/gateway/static/root/assets/play-kxZvpBg8.js +1 -0
- package/dist/gateway/static/root/assets/popover-select-DcsFzD_i.js +1 -0
- package/dist/gateway/static/root/assets/preview-open-alternatives-Dvey7GwU.js +1 -0
- package/dist/gateway/static/root/assets/{product-open-page-DUPsiVP9.js → product-open-page-B8_w6c3J.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-CDZdKiTz.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-BvahSrZi.js +1 -0
- package/dist/gateway/static/root/assets/remote-access-hub-CU_UdkuI.js +1 -0
- package/dist/gateway/static/root/assets/rotate-ccw-JM1TBLpp.js +1 -0
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-C25xEYTK.js → runtime-tools-settings-panel-BnMS50vK.js} +2 -2
- package/dist/gateway/static/root/assets/scenes-page-CDR1-q25.js +2 -0
- package/dist/gateway/static/root/assets/schema-form-B4Xa8w8S.js +1 -0
- package/dist/gateway/static/root/assets/secret-input-DPl3VYM8.js +1 -0
- package/dist/gateway/static/root/assets/send-session-input-C7Nqy0sK.js +1 -0
- package/dist/gateway/static/root/assets/sessions-page-Ymyg98G-.js +1 -0
- package/dist/gateway/static/root/assets/settings-2-D-csvaET.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-wMZhxwTM.js +1 -0
- package/dist/gateway/static/root/assets/settings-form-draft-Dy10ldo8.js +1 -0
- package/dist/gateway/static/root/assets/settings-form-section-exRhP9xn.js +1 -0
- package/dist/gateway/static/root/assets/{settings-page-DqCJHcdG.js → settings-page-CHZdpvkT.js} +1 -1
- package/dist/gateway/static/root/assets/setup-status-panel-HESfALIF.js +1 -0
- package/dist/gateway/static/root/assets/share-link-dialog-COlX10Dc.js +1 -0
- package/dist/gateway/static/root/assets/share-preview-page-NtRLUieq.js +2 -0
- package/dist/gateway/static/root/assets/shares-api-DICV5EKH.js +1 -0
- package/dist/gateway/static/root/assets/shares-settings-CXEBo5YL.js +1 -0
- package/dist/gateway/static/root/assets/skill-api-DYgcO7y0.js +1 -0
- package/dist/gateway/static/root/assets/skill-api-utils-C7V4JVXM.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-CWH3Fmx4.js +1 -0
- package/dist/gateway/static/root/assets/skill-wire-pattern-BPpeIcCi.js +1 -0
- package/dist/gateway/static/root/assets/skills-page-Dx5v64jU.js +2 -0
- package/dist/gateway/static/root/assets/sparkles-DHlfQFAF.js +1 -0
- package/dist/gateway/static/root/assets/system-settings-panel-wXCBwYwE.js +1 -0
- package/dist/gateway/static/root/assets/task-detail-page-hoIyr7tp.js +1 -0
- package/dist/gateway/static/root/assets/tasks-Buv1mgPF.js +1 -0
- package/dist/gateway/static/root/assets/theme-store-BKgBPLH4.js +1 -0
- package/dist/gateway/static/root/assets/tunnel-api-C0t8y3Mi.js +1 -0
- package/dist/gateway/static/root/assets/usage-page-A2DZAidl.js +1 -0
- package/dist/gateway/static/root/assets/use-async-resource-GrnWNwMZ.js +1 -0
- package/dist/gateway/static/root/assets/use-autosave-Cn6hqqyM.js +1 -0
- package/dist/gateway/static/root/assets/use-composer-attachments-DL61XeSu.js +2 -0
- package/dist/gateway/static/root/assets/use-file-preview-expanded-Cl9mU32w.js +2 -0
- package/dist/gateway/static/root/assets/user-model-page-C1jGTwjK.js +2 -0
- package/dist/gateway/static/root/assets/voice-api-key-field-Bw05QB_V.js +1 -0
- package/dist/gateway/static/root/assets/{work-discovery-overlay-BnfD6w0k.js → work-discovery-overlay-xB0QpOFk.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-DSy57rBr.js → workflow-run-setup-panel-rM4U1FXc.js} +2 -2
- package/dist/gateway/static/root/assets/workflows-page-QKC34FzQ.js +6 -0
- package/dist/gateway/static/root/assets/workspace-api-BbBT75Kg.js +2 -0
- package/dist/gateway/static/root/index.html +61 -19
- package/dist/package.js +1 -1
- package/dist/packages/gateway-contract/src/tasks.js +19 -2
- package/dist/src/agent/agent-manager.js +7 -7
- package/dist/src/agent/background-review/run-background-review.js +1 -1
- package/dist/src/agent/embedded/run-turn.js +11 -1
- package/dist/src/agent/external-tools/endpoint-provider.js +2 -2
- package/dist/src/agent/image/tool-model-config.js +1 -1
- package/dist/src/agent/mcp/oauth/mcp-oauth-store.js +1 -1
- package/dist/src/agent/service.js +6 -3
- package/dist/src/agent/session/session-config-service.js +27 -1
- package/dist/src/agent/session/session-hydrator.js +1 -1
- package/dist/src/agent/skills/hub-lock.js +1 -1
- 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/tools/factory.js +21 -14
- package/dist/src/agent/tools/personal-preference-tool.d.ts +10 -0
- package/dist/src/agent/tools/personal-preference-tool.js +43 -0
- package/dist/src/agent/tools/personal-task-tool.d.ts +28 -0
- package/dist/src/agent/tools/personal-task-tool.js +165 -0
- package/dist/src/agent/tools/xopc-use-tool.js +5 -4
- package/dist/src/agent-catalog/capabilities.js +2 -2
- package/dist/src/agent-catalog/service.d.ts +1 -1
- package/dist/src/agent-catalog/service.js +2 -1
- package/dist/src/agent-config/index.js +2 -2
- package/dist/src/agent-config/schema.d.ts +148 -0
- package/dist/src/agent-config/schema.js +40 -2
- package/dist/src/auth/credentials.js +1 -1
- package/dist/src/auth/oauth-provider-lock.js +1 -1
- package/dist/src/auth/profiles/store.js +1 -1
- package/dist/src/automations/capabilities/drafts.js +1 -1
- package/dist/src/bootstrap/application-state.js +1 -1
- package/dist/src/browser/providers/browser-ext-install.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/thinking.js +12 -2
- package/dist/src/chat-commands/context.js +7 -1
- package/dist/src/cli/commands/agent.js +1 -1
- package/dist/src/cli/commands/agents.js +1 -1
- package/dist/src/cli/commands/auth.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 +2 -2
- package/dist/src/cli/commands/providers.js +1 -1
- package/dist/src/cli/utils/init-workspace-core.js +1 -1
- package/dist/src/config/index.js +3 -3
- package/dist/src/config/loader.js +1 -1
- package/dist/src/config/models-json.js +1 -1
- package/dist/src/config/schema.js +1 -1
- package/dist/src/extensions/agent-plugins/validation.js +1 -1
- package/dist/src/extensions/lockfile.js +1 -1
- package/dist/src/gateway/agents-admin.js +2 -2
- package/dist/src/gateway/hono/lib/config-payload.d.ts +1 -0
- package/dist/src/gateway/hono/lib/config-payload.js +1 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js +2 -2
- package/dist/src/gateway/hono/routes/lazy-bundles.js +8 -0
- package/dist/src/gateway/hono/routes/models.js +1 -1
- package/dist/src/gateway/hono/routes/notes.js +2 -2
- package/dist/src/gateway/hono/routes/personal-agent.d.ts +3 -0
- package/dist/src/gateway/hono/routes/personal-agent.js +107 -0
- package/dist/src/gateway/hono/routes/projects.js +2 -2
- package/dist/src/gateway/hono/routes/session-input-handler.js +2 -2
- package/dist/src/gateway/hono/routes/sessions.js +5 -0
- package/dist/src/gateway/hono/routes/side-chats.js +1 -1
- package/dist/src/gateway/hono/routes/tasks.js +65 -2
- package/dist/src/gateway/hono/routes/voice.js +8 -0
- package/dist/src/gateway/image-generation-setup.js +2 -2
- package/dist/src/gateway/lock.js +1 -1
- package/dist/src/gateway/service/session-command-service.js +7 -1
- package/dist/src/gateway/service/sessions-api.js +11 -1
- package/dist/src/gateway/service.js +5 -5
- package/dist/src/gateway/session-reset-service.js +5 -0
- package/dist/src/gateway/xopc-cloud-capability-setup.js +1 -1
- package/dist/src/local-apps/service.js +1 -1
- package/dist/src/personal-agent/policy.d.ts +1 -0
- package/dist/src/personal-agent/policy.js +13 -0
- package/dist/src/personal-agent/repository.d.ts +25 -0
- package/dist/src/personal-agent/repository.js +68 -0
- package/dist/src/personal-agent/service.d.ts +48 -0
- package/dist/src/personal-agent/service.js +222 -0
- package/dist/src/providers/model-catalog-persistence.js +1 -1
- package/dist/src/session/resolve-session.js +4 -2
- package/dist/src/storage/sqlite/migrations/229_task_criterion_reviews.sql +12 -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/schema.sql +13 -0
- package/dist/src/storage/sqlite/session-repository.js +6 -2
- package/dist/src/storage/sqlite/transcript-repository.js +2 -1
- package/dist/src/tasks/capabilities/read.js +5 -2
- package/dist/src/tasks/task-application-service.js +6 -1
- package/dist/src/tasks/task-criterion-review-repository.d.ts +22 -0
- package/dist/src/tasks/task-criterion-review-repository.js +74 -0
- package/dist/src/tasks/task-main-update-decision-service.js +6 -0
- package/dist/src/tui/backends/embedded-backend.js +2 -2
- package/dist/src/voice/realtime/persona-context.js +1 -1
- package/package.json +3 -3
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-CcTnphqy.js +0 -1
- package/dist/gateway/static/root/assets/agent-plugin-dialog-CdCzMPhC.js +0 -1
- package/dist/gateway/static/root/assets/agents-BiNKpndr.js +0 -66
- package/dist/gateway/static/root/assets/app-management-settings-panel-BvGDN5J6.js +0 -1
- package/dist/gateway/static/root/assets/appearance-settings-BhQYkuQj.js +0 -1
- package/dist/gateway/static/root/assets/apps-page-BQZJuM-C.js +0 -1
- package/dist/gateway/static/root/assets/automations-workspace-y4qcvlg8.js +0 -7
- package/dist/gateway/static/root/assets/browser-settings-page--N4P7V0l.js +0 -3
- package/dist/gateway/static/root/assets/capabilities-page-F7OAv-iz.js +0 -2
- package/dist/gateway/static/root/assets/capabilities-settings-panel-CaiIo1S1.js +0 -8
- package/dist/gateway/static/root/assets/capability-header-actions-CR_O9_Vr.js +0 -1
- package/dist/gateway/static/root/assets/channels-Bb-8c4wl.js +0 -1
- package/dist/gateway/static/root/assets/computer-settings-page-QuXZBfky.js +0 -1
- package/dist/gateway/static/root/assets/connector-service-page-BIqzVqCO.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-CZ24DSBJ.js +0 -2
- package/dist/gateway/static/root/assets/date-picker-Ck-FmYEL.js +0 -1
- package/dist/gateway/static/root/assets/desktop-pet-settings-C1rKgB-S.js +0 -1
- package/dist/gateway/static/root/assets/device-pairing-wizard-UrPcOU6Q.js +0 -1
- package/dist/gateway/static/root/assets/directory-picker-path-field-BYxUgMZb.js +0 -1
- package/dist/gateway/static/root/assets/dist-CKkafhaS.js +0 -1
- package/dist/gateway/static/root/assets/dist-io9jFpN72.js +0 -1
- package/dist/gateway/static/root/assets/extension-debug-page-CGL0jpQA.js +0 -1
- package/dist/gateway/static/root/assets/extension-page-DPWf-tYg.js +0 -1
- package/dist/gateway/static/root/assets/extension-settings-page-DZWBY39d.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-D5w5aYXK.js +0 -1
- package/dist/gateway/static/root/assets/home-page-DPQwxBGy.js +0 -1
- package/dist/gateway/static/root/assets/imports-page-CnRWDtGz.js +0 -1
- package/dist/gateway/static/root/assets/index-B-w6Rk9Z.css +0 -1
- package/dist/gateway/static/root/assets/index-DU5Eb1V8.js +0 -106
- package/dist/gateway/static/root/assets/local-app-workbench-page-hjFeYlIq.js +0 -1
- package/dist/gateway/static/root/assets/logs-page-CzpZDjkA.js +0 -2
- package/dist/gateway/static/root/assets/management-settings-Beu_R_Rc.js +0 -1
- package/dist/gateway/static/root/assets/markdown-view-BlzX7Ze5.js +0 -201
- package/dist/gateway/static/root/assets/note-detail-panel-D8bpTGwP.js +0 -5
- package/dist/gateway/static/root/assets/notes-page-OmgXowUG.js +0 -8
- package/dist/gateway/static/root/assets/page-context-capture-button-BjjjuLkz.js +0 -1
- package/dist/gateway/static/root/assets/page-tabs-_DiuzxyD.js +0 -1
- package/dist/gateway/static/root/assets/popover-select-0p9PIHRy.js +0 -1
- package/dist/gateway/static/root/assets/preview-open-alternatives-BKvUadws.js +0 -1
- package/dist/gateway/static/root/assets/project-detail-page-CWlCg2x5.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-NbVNo0tP.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-CD8HrqGC.js +0 -1
- package/dist/gateway/static/root/assets/scenes-page-DbWaemwR.js +0 -2
- package/dist/gateway/static/root/assets/schema-form-_3LQ4hyB.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-B7ZUdXlb.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-CpKzZMft.js +0 -1
- package/dist/gateway/static/root/assets/settings-form-section-DS80hVSY.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-De-kC3yJ.js +0 -1
- package/dist/gateway/static/root/assets/share-preview-page-T-0g_rwr.js +0 -2
- package/dist/gateway/static/root/assets/shares-settings-Dz33T3du.js +0 -1
- package/dist/gateway/static/root/assets/skill-api-Cx6GGpSY.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-DyJ-Duem.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-B2iyN-kP.js +0 -2
- package/dist/gateway/static/root/assets/system-settings-panel-By3SZQR_.js +0 -1
- package/dist/gateway/static/root/assets/task-detail-page-4yHUTs4_.js +0 -1
- package/dist/gateway/static/root/assets/tasks-BH8_WMUF.js +0 -1
- package/dist/gateway/static/root/assets/tunnel-api-BoH0LBkw.js +0 -1
- package/dist/gateway/static/root/assets/usage-page-dKU5X9zT.js +0 -1
- package/dist/gateway/static/root/assets/use-autosave-YKCwQvqT.js +0 -1
- package/dist/gateway/static/root/assets/user-model-page-Uht32LPP.js +0 -2
- package/dist/gateway/static/root/assets/voice-api-key-field-DiqHIA8l.js +0 -1
- package/dist/gateway/static/root/assets/workflows-page-Cq3vRUbc.js +0 -6
- /package/dist/gateway/static/root/assets/{dist-CI_fqRk-2.js → dist-CI_fqRk-.js} +0 -0
|
@@ -8,7 +8,7 @@ function verifiedTaskCriteria(receipt) {
|
|
|
8
8
|
const evidence = new Set(receipt?.evidence.filter((item) => item.strength === "verified").map((item) => item.title));
|
|
9
9
|
return new Set(receipt?.verification.checks.filter((check) => check.status === "passed" && check.evidenceTitles.some((title) => evidence.has(title))).map((check) => check.criterion));
|
|
10
10
|
}
|
|
11
|
-
var TaskPrioritySchema, TaskChangedFieldSchema, TaskAcceptancePolicySchema, ActorRefSchema, TaskContractSchema, TaskSchema, TaskContextRoleSchema, TaskContextEdgeSchema, TaskAuthorityGrantSchema, TaskDependencySummarySchema, TaskEvidenceSchema, TaskJudgmentSchema, TaskRunReceiptSchema, TaskExecutorSelectionSchema, TaskContractInputSchema, TaskContextInputSchema, TaskCreateRequestSchema, TaskPatchRequestSchema, TaskWaitInputSchema, TaskCommandSchema, TaskCommandRequestSchema, TaskDependencyUpdateRequestSchema, TaskBoardPositionRequestSchema, TaskListResponseSchema, TaskConversationStateSchema, TaskSessionLinkSchema, TaskHandoffRequestSchema, TaskDetailResponseSchema;
|
|
11
|
+
var TaskPrioritySchema, TaskChangedFieldSchema, TaskAcceptancePolicySchema, ActorRefSchema, TaskContractSchema, TaskSchema, TaskContextRoleSchema, TaskContextEdgeSchema, TaskAuthorityGrantSchema, TaskDependencySummarySchema, TaskEvidenceSchema, TaskJudgmentSchema, TaskRunReceiptSchema, TaskCriterionReviewSchema, TaskCriterionReviewInputSchema, TaskExecutorSelectionSchema, TaskContractInputSchema, TaskContextInputSchema, TaskCreateRequestSchema, TaskPatchRequestSchema, TaskWaitInputSchema, TaskCommandSchema, TaskCommandRequestSchema, TaskDependencyUpdateRequestSchema, TaskBoardPositionRequestSchema, TaskListResponseSchema, TaskConversationStateSchema, TaskSessionLinkSchema, TaskHandoffRequestSchema, TaskDetailResponseSchema;
|
|
12
12
|
var init_tasks = __esmMin((() => {
|
|
13
13
|
init_task_lifecycle();
|
|
14
14
|
init_task_runs();
|
|
@@ -36,6 +36,7 @@ var init_tasks = __esmMin((() => {
|
|
|
36
36
|
"context",
|
|
37
37
|
"runs",
|
|
38
38
|
"receipts",
|
|
39
|
+
"acceptance",
|
|
39
40
|
"feedback",
|
|
40
41
|
"attention",
|
|
41
42
|
"conversation"
|
|
@@ -236,6 +237,21 @@ var init_tasks = __esmMin((() => {
|
|
|
236
237
|
contextTraceId: z.string().optional(),
|
|
237
238
|
finalizedAt: z.number().int().nonnegative()
|
|
238
239
|
});
|
|
240
|
+
TaskCriterionReviewSchema = z.object({
|
|
241
|
+
contractVersion: z.number().int().positive(),
|
|
242
|
+
criterionIndex: z.number().int().nonnegative(),
|
|
243
|
+
criterionText: z.string(),
|
|
244
|
+
status: z.enum(["passed", "failed"]),
|
|
245
|
+
note: z.string().optional(),
|
|
246
|
+
reviewedBy: ActorRefSchema,
|
|
247
|
+
reviewedAt: z.number().int().nonnegative()
|
|
248
|
+
});
|
|
249
|
+
TaskCriterionReviewInputSchema = z.object({
|
|
250
|
+
expectedVersion: z.number().int().positive(),
|
|
251
|
+
contractVersion: z.number().int().positive(),
|
|
252
|
+
status: z.enum(["passed", "failed"]),
|
|
253
|
+
note: z.string().trim().max(2e3).optional()
|
|
254
|
+
}).strict();
|
|
239
255
|
TaskExecutorSelectionSchema = z.discriminatedUnion("kind", [
|
|
240
256
|
z.object({
|
|
241
257
|
kind: z.literal("agent"),
|
|
@@ -448,6 +464,7 @@ var init_tasks = __esmMin((() => {
|
|
|
448
464
|
waits: z.array(TaskWaitSchema),
|
|
449
465
|
runs: z.array(TaskRunSchema),
|
|
450
466
|
receipts: z.array(TaskRunReceiptSchema),
|
|
467
|
+
criterionReviews: z.array(TaskCriterionReviewSchema),
|
|
451
468
|
context: z.array(TaskContextEdgeSchema),
|
|
452
469
|
conversation: TaskConversationStateSchema,
|
|
453
470
|
sessions: z.array(TaskSessionLinkSchema),
|
|
@@ -463,4 +480,4 @@ var init_tasks = __esmMin((() => {
|
|
|
463
480
|
}));
|
|
464
481
|
//#endregion
|
|
465
482
|
init_tasks();
|
|
466
|
-
export { ActorRefSchema, TaskAcceptancePolicySchema, TaskAuthorityGrantSchema, TaskBoardPositionRequestSchema, TaskChangedFieldSchema, TaskCommandRequestSchema, TaskCommandSchema, TaskContextEdgeSchema, TaskContextInputSchema, TaskContextRoleSchema, TaskContractInputSchema, TaskContractSchema, TaskConversationStateSchema, TaskCreateRequestSchema, TaskDependencySummarySchema, TaskDependencyUpdateRequestSchema, TaskDetailResponseSchema, TaskEvidenceSchema, TaskExecutorSelectionSchema, TaskHandoffRequestSchema, TaskJudgmentSchema, TaskListResponseSchema, TaskPatchRequestSchema, TaskPrioritySchema, TaskRunReceiptSchema, TaskSchema, TaskSessionLinkSchema, init_tasks, verifiedTaskCriteria };
|
|
483
|
+
export { ActorRefSchema, TaskAcceptancePolicySchema, TaskAuthorityGrantSchema, TaskBoardPositionRequestSchema, TaskChangedFieldSchema, TaskCommandRequestSchema, TaskCommandSchema, TaskContextEdgeSchema, TaskContextInputSchema, TaskContextRoleSchema, TaskContractInputSchema, TaskContractSchema, TaskConversationStateSchema, TaskCreateRequestSchema, TaskCriterionReviewInputSchema, TaskCriterionReviewSchema, TaskDependencySummarySchema, TaskDependencyUpdateRequestSchema, TaskDetailResponseSchema, TaskEvidenceSchema, TaskExecutorSelectionSchema, TaskHandoffRequestSchema, TaskJudgmentSchema, TaskListResponseSchema, TaskPatchRequestSchema, TaskPrioritySchema, TaskRunReceiptSchema, TaskSchema, TaskSessionLinkSchema, init_tasks, verifiedTaskCriteria };
|
|
@@ -6,11 +6,10 @@ import { consumeClarificationApproval, init_clarification_wait_repository } from
|
|
|
6
6
|
import { getInteractionState } from "../storage/sqlite/interaction-state-repository.js";
|
|
7
7
|
import { getSessionMetadata } from "../storage/sqlite/session-read-repository.js";
|
|
8
8
|
import { init_sqlite } from "../storage/sqlite/index.js";
|
|
9
|
-
import { expandWorkspacePathString, init_workspace_path } from "../config/workspace-path.js";
|
|
10
|
-
import { init_agent_scope, listAgentEntries, resolveAgentProfileDir } from "./agent-scope.js";
|
|
11
|
-
import { extractTextContent } from "./context/workspace.js";
|
|
12
9
|
import { getAgentDefaultModelRef, init_schema } from "../config/schema.js";
|
|
13
10
|
import { applyConfigOverrides } from "../config/runtime-overrides.js";
|
|
11
|
+
import { expandWorkspacePathString, init_workspace_path } from "../config/workspace-path.js";
|
|
12
|
+
import { init_agent_scope, listAgentEntries, resolveAgentProfileDir } from "./agent-scope.js";
|
|
14
13
|
import { resolveEffectiveAgentProfile, resolveEffectiveAgentProfileForSession } from "../config/agent-profile.js";
|
|
15
14
|
import { init_paths, resolveBundledSkillsDir } from "../config/paths.js";
|
|
16
15
|
import { init_sync_provider_auth, resolveProviderApiKeySync } from "../auth/sync-provider-auth.js";
|
|
@@ -18,6 +17,7 @@ import { CredentialResolver, init_credentials } from "../auth/credentials.js";
|
|
|
18
17
|
import { getApiKeySync, getDefaultModelSync, init_providers, resolveModel } from "../providers/index.js";
|
|
19
18
|
import { createExtensionAwareStreamFn } from "../providers/extension-stream-bridge.js";
|
|
20
19
|
import { continuesAfterTool, trackAiUsageStream } from "../usage/recorder.js";
|
|
20
|
+
import { extractTextContent } from "./context/workspace.js";
|
|
21
21
|
import { buildExecutionScopeContextForPrompt } from "./context/execution-scope.js";
|
|
22
22
|
import { clearBootstrapSnapshot } from "./bootstrap/bootstrap-cache.js";
|
|
23
23
|
import { resolveBootstrapContextSync } from "./bootstrap/bootstrap-files.js";
|
|
@@ -686,7 +686,7 @@ var AgentManager = class {
|
|
|
686
686
|
conversationId: instance.conversationId,
|
|
687
687
|
modelRef: instance.effectiveProfile.primaryModelRef?.trim() || this.defaultModel,
|
|
688
688
|
agentId: instance.effectiveProfile.agentId,
|
|
689
|
-
thinkingLevel: this.config.thinkingLevel ?? "medium",
|
|
689
|
+
thinkingLevel: instance.effectiveProfile.config.runtime.thinkingLevel ?? this.config.thinkingLevel ?? "medium",
|
|
690
690
|
activeProjectContext: instance.activeProjectContext
|
|
691
691
|
});
|
|
692
692
|
replaceAgentSystemPrompt(instance.agent, newPrompt);
|
|
@@ -761,7 +761,7 @@ var AgentManager = class {
|
|
|
761
761
|
conversationId: instance.conversationId,
|
|
762
762
|
modelRef: instance.effectiveProfile.primaryModelRef?.trim() || this.defaultModel,
|
|
763
763
|
agentId: instance.effectiveProfile.agentId,
|
|
764
|
-
thinkingLevel: this.config.thinkingLevel ?? "medium",
|
|
764
|
+
thinkingLevel: instance.effectiveProfile.config.runtime.thinkingLevel ?? this.config.thinkingLevel ?? "medium",
|
|
765
765
|
activeProjectContext: instance.activeProjectContext
|
|
766
766
|
});
|
|
767
767
|
replaceAgentSystemPrompt(instance.agent, newPrompt);
|
|
@@ -887,7 +887,7 @@ var AgentManager = class {
|
|
|
887
887
|
const rt = this.workspaceRuntimes.getOrCreate(resolvedWorkspacePath, instance.effectiveProfile.agentId);
|
|
888
888
|
const contextFiles = this.resolveContextFilesForSession(conversationId, instance.effectiveProfile);
|
|
889
889
|
const modelRef = instance.effectiveProfile.primaryModelRef?.trim() || this.defaultModel;
|
|
890
|
-
const thinkingLevel = this.config.thinkingLevel ?? "medium";
|
|
890
|
+
const thinkingLevel = instance.effectiveProfile.config.runtime.thinkingLevel ?? this.config.thinkingLevel ?? "medium";
|
|
891
891
|
const activeProjectContext = this.buildExecutionScopeContext(conversationId);
|
|
892
892
|
replaceAgentSystemPrompt(instance.agent, rt.systemPromptBuilder.build(contextFiles, {
|
|
893
893
|
externalMemoryInstructions: this.buildExternalMemoryInstructions(conversationId, rt),
|
|
@@ -1006,7 +1006,7 @@ var AgentManager = class {
|
|
|
1006
1006
|
getSkillManager: () => rt.skillManager
|
|
1007
1007
|
});
|
|
1008
1008
|
const registeredToolNames = tools.map((t) => t.name);
|
|
1009
|
-
const thinkingLevel = this.config.thinkingLevel ?? "medium";
|
|
1009
|
+
const thinkingLevel = profile.config.runtime.thinkingLevel ?? this.config.thinkingLevel ?? "medium";
|
|
1010
1010
|
const turnPolicy = this.buildAgentTurnPolicy(conversationId, profile);
|
|
1011
1011
|
const providerStreamFn = createExtensionAwareStreamFn();
|
|
1012
1012
|
agent = new Agent({
|
|
@@ -4,12 +4,12 @@ import { finishContextExtractionRun } from "../../storage/sqlite/context-extract
|
|
|
4
4
|
import { getSessionMetadata } from "../../storage/sqlite/session-read-repository.js";
|
|
5
5
|
import { loadCompactionSourceSnapshot } from "../../storage/sqlite/transcript-repository.js";
|
|
6
6
|
import { init_sqlite } from "../../storage/sqlite/index.js";
|
|
7
|
-
import { extractTextContent } from "../context/workspace.js";
|
|
8
7
|
import { extractProfileAgentId } from "../../config/agent-profile.js";
|
|
9
8
|
import { init_sync_provider_auth, resolveProviderApiKeySync } from "../../auth/sync-provider-auth.js";
|
|
10
9
|
import { getApiKeySync, init_providers, resolveModel } from "../../providers/index.js";
|
|
11
10
|
import { createExtensionAwareStreamFn } from "../../providers/extension-stream-bridge.js";
|
|
12
11
|
import { trackAiUsageStream } from "../../usage/recorder.js";
|
|
12
|
+
import { extractTextContent } from "../context/workspace.js";
|
|
13
13
|
import { getAssertionSlot, listUserAssertions } from "../../user-model/repository.js";
|
|
14
14
|
import { readAgentMessageContent } from "../memory/agent-message-access.js";
|
|
15
15
|
import { isAssistantTurnAborted, isAssistantTurnFailed } from "../orchestration/llm-turn-retry.js";
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { createLogger } from "../../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
|
+
import { isXopcDatabaseOpen } from "../../storage/sqlite/connection.js";
|
|
3
4
|
import { getClarification, getClarificationResumeInput, init_clarification_wait_repository, isClarificationSuspended } from "../../storage/sqlite/clarification-wait-repository.js";
|
|
4
5
|
import { getConnectionResumeInput, init_connection_wait_repository, isConnectionSuspended } from "../../storage/sqlite/connection-wait-repository.js";
|
|
6
|
+
import { getSessionMetadata } from "../../storage/sqlite/session-read-repository.js";
|
|
7
|
+
import { init_session_repository } from "../../storage/sqlite/session-repository.js";
|
|
8
|
+
import { init_sqlite } from "../../storage/sqlite/index.js";
|
|
9
|
+
import { resolveEffectiveAgentConfigForSession } from "../../config/agent-profile.js";
|
|
5
10
|
import { continuesAfterTool, trackAiUsageStream } from "../../usage/recorder.js";
|
|
6
11
|
import { runWithEmbeddedExecutionSession } from "./execution-context.js";
|
|
7
12
|
import { isComputerControlActive, isComputerLeaseTool, stopComputerControl } from "../../computer/control-guard.js";
|
|
@@ -26,11 +31,14 @@ import { markTurnToolResult } from "../memory/turn-provenance.js";
|
|
|
26
31
|
import { RepositoryInstructions } from "../coding/repository-instructions.js";
|
|
27
32
|
import { RunVerification } from "../coding/run-verification.js";
|
|
28
33
|
import { withDelegationScope } from "../orchestration/delegation-scope.js";
|
|
34
|
+
import { getModelThinking } from "../../providers/model-thinking.js";
|
|
29
35
|
import { createAssistantMessageEventStream, getCurrentSystemPrompt, getCurrentTools, isRecoverableLength } from "@earendil-works/pi-ai";
|
|
30
36
|
//#region src/agent/embedded/run-turn.ts
|
|
31
37
|
init_connection_wait_repository();
|
|
32
38
|
init_clarification_wait_repository();
|
|
33
39
|
init_logger();
|
|
40
|
+
init_sqlite();
|
|
41
|
+
init_session_repository();
|
|
34
42
|
const log = createLogger("EmbeddedRun");
|
|
35
43
|
const LOG_PREVIEW_MAX_CHARS = 300;
|
|
36
44
|
function truncateForLog(value, maxChars = LOG_PREVIEW_MAX_CHARS) {
|
|
@@ -234,6 +242,8 @@ async function runXopcEmbeddedTurn(params) {
|
|
|
234
242
|
const { conversationId, runId, userMessage, model, tools, systemPrompt, thinkingLevel, workspaceDir, sessionStore, onEvent } = params;
|
|
235
243
|
const timeoutMs = params.timeoutMs || resolveAgentTurnTimeoutMs();
|
|
236
244
|
const resolvedModel = requireEmbeddedModel(model, params.modelRef);
|
|
245
|
+
const configuredThinking = isXopcDatabaseOpen() && getSessionMetadata(conversationId) ? resolveEffectiveAgentConfigForSession(conversationId).config.runtime.thinkingLevel : void 0;
|
|
246
|
+
if (configuredThinking && !getModelThinking(resolvedModel).options.includes(configuredThinking)) throw new Error(`Agent requires a model that supports thinking ${configuredThinking}`);
|
|
237
247
|
const promptCachePolicy = resolvePromptCachePolicy(params.promptCachePolicy);
|
|
238
248
|
const compactionPolicy = params.compactionPolicy ?? resolveCompactionPolicy();
|
|
239
249
|
const transcriptRuntime = params.transcriptRuntime ?? (sessionStore ? await createSqliteTranscriptRuntime({
|
|
@@ -263,7 +273,7 @@ async function runXopcEmbeddedTurn(params) {
|
|
|
263
273
|
modelRef: params.modelRef,
|
|
264
274
|
tools,
|
|
265
275
|
systemPrompt: [systemPrompt, rootInstructions].filter(Boolean).join("\n\n"),
|
|
266
|
-
thinkingLevel: thinkingLevel ?? "medium",
|
|
276
|
+
thinkingLevel: configuredThinking ?? thinkingLevel ?? "medium",
|
|
267
277
|
transcriptRuntime
|
|
268
278
|
});
|
|
269
279
|
const { session, reused } = runner;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { executeExternalOperation } from "../../capabilities/runtime/external-operations.js";
|
|
2
|
-
import { canonicalCapabilityJson } from "../../capabilities/runtime/dispatcher.js";
|
|
3
1
|
import { COMPUTER_CONTROL_TOOL, init_src } from "../../../packages/computer-control-contract/src/index.js";
|
|
4
2
|
import { BROWSER_CONTROL_ENDPOINT_TOOL_NAME } from "../../../packages/browser-control-contract/src/index.js";
|
|
3
|
+
import { executeExternalOperation } from "../../capabilities/runtime/external-operations.js";
|
|
4
|
+
import { canonicalCapabilityJson } from "../../capabilities/runtime/dispatcher.js";
|
|
5
5
|
import { externalToolRef, parseExternalToolRef } from "./refs.js";
|
|
6
6
|
import { createHash } from "node:crypto";
|
|
7
7
|
//#region src/agent/external-tools/endpoint-provider.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { init_agent_scope, resolveDefaultAgentId } from "../agent-scope.js";
|
|
2
1
|
import { getAgentDefaultImageModelConfig, getAgentDefaultModelRef, init_schema, parseModelRef } from "../../config/schema.js";
|
|
2
|
+
import { init_agent_scope, resolveDefaultAgentId } from "../agent-scope.js";
|
|
3
3
|
import { resolveEffectiveAgentConfigForAgent } from "../../config/agent-profile.js";
|
|
4
4
|
import { getDefaultModelSync, getModelsByProvider, init_providers, isProviderConfiguredSync, resolveModel } from "../../providers/index.js";
|
|
5
5
|
import { resolveAgentModelFallbackValues, resolveAgentModelPrimaryValue } from "../../config/model-input.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { init_write_file_atomic, writeTextAtomic } from "../../../infra/write-file-atomic.js";
|
|
2
1
|
import { init_paths, resolveMcpOAuthPath } from "../../../config/paths.js";
|
|
2
|
+
import { init_write_file_atomic, writeTextAtomic } from "../../../infra/write-file-atomic.js";
|
|
3
3
|
import { dirname, join } from "node:path";
|
|
4
4
|
import { createHash } from "node:crypto";
|
|
5
5
|
import { readFile, rm } from "node:fs/promises";
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { createLogger } from "../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../utils/logger.js";
|
|
3
3
|
import { init_attachment_ref, parseNoteAttachmentTarget } from "../notes/attachment-ref.js";
|
|
4
|
-
import { init_agent_scope, resolveAgentHomeDir, resolveDefaultAgentId } from "./agent-scope.js";
|
|
5
|
-
import { extractTextContent } from "./context/workspace.js";
|
|
6
4
|
import { getAgentDefaultModelRef, init_schema } from "../config/schema.js";
|
|
7
5
|
import { applyConfigOverrides } from "../config/runtime-overrides.js";
|
|
6
|
+
import { init_agent_scope, resolveAgentHomeDir, resolveDefaultAgentId } from "./agent-scope.js";
|
|
8
7
|
import { init_agent_session_key, resolveAgentIdFromConversationId } from "../routing/agent-session-key.js";
|
|
9
|
-
import { extractProfileAgentId } from "../config/agent-profile.js";
|
|
8
|
+
import { extractProfileAgentId, resolveEffectiveAgentConfigForSession } from "../config/agent-profile.js";
|
|
10
9
|
import { init_providers, resolveModel } from "../providers/index.js";
|
|
10
|
+
import { extractTextContent } from "./context/workspace.js";
|
|
11
11
|
import { effectiveWorkspacePathForSession } from "../session/session-workspace.js";
|
|
12
12
|
import { getProjectForSession } from "../projects/workspace.js";
|
|
13
13
|
import { runWithEmbeddedExecutionSession } from "./embedded/execution-context.js";
|
|
@@ -22,6 +22,7 @@ import { onSessionTranscriptUpdate } from "../session/transcript-events.js";
|
|
|
22
22
|
import { persistInboundAttachments } from "../channels/attachments/inbound-persist.js";
|
|
23
23
|
import { buildTranscriptUserMessage, hydrateUserTurnForLlm } from "./inbound/attachment-pipeline.js";
|
|
24
24
|
import { resolveCompactionPolicy } from "./memory/compaction-policy.js";
|
|
25
|
+
import { getModelThinking } from "../providers/model-thinking.js";
|
|
25
26
|
import { runXopcEmbeddedTurn } from "./embedded/run-turn.js";
|
|
26
27
|
import { resolveResponseLanguageForSession } from "./prompt/response-language.js";
|
|
27
28
|
import { normalizeSkillInstallTarget } from "./skills/install-target.js";
|
|
@@ -629,6 +630,8 @@ var AgentService = class {
|
|
|
629
630
|
}), params.runId);
|
|
630
631
|
}
|
|
631
632
|
async switchModelForSession(conversationId, modelId) {
|
|
633
|
+
const configuredThinking = resolveEffectiveAgentConfigForSession(conversationId).config.runtime.thinkingLevel;
|
|
634
|
+
if (configuredThinking && !getModelThinking(resolveModel(modelId)).options.includes(configuredThinking)) return false;
|
|
632
635
|
if (!await this.modelManager.switchModelForSession(conversationId, modelId)) return false;
|
|
633
636
|
await this.sessionConfigStore.update(conversationId, { modelOverride: modelId });
|
|
634
637
|
if (this.agentManager.setModelForSession(conversationId, modelId)) this.sessionTracker.touchSession(conversationId);
|
|
@@ -3,11 +3,12 @@ import { init_logger } from "../../utils/logger.js";
|
|
|
3
3
|
import { chooseModelThinking } from "../../../packages/gateway-contract/src/model-selection.js";
|
|
4
4
|
import { init_src } from "../../../packages/gateway-contract/src/index.js";
|
|
5
5
|
import { ResponseLanguageSchema, init_response_language } from "../../i18n/response-language.js";
|
|
6
|
+
import { resolveEffectiveAgentConfigForSession } from "../../config/agent-profile.js";
|
|
6
7
|
import { normalizeWorkingDirectoryInput } from "../../session/session-workspace.js";
|
|
7
8
|
import { getProjectWorkspacePathForSession } from "../../projects/workspace.js";
|
|
9
|
+
import { getModelThinking } from "../../providers/model-thinking.js";
|
|
8
10
|
import { normalizeReasoningLevel, normalizeThinkLevel, normalizeVerboseLevel } from "../transcript/thinking-types.js";
|
|
9
11
|
import "../../session/index.js";
|
|
10
|
-
import { getModelThinking } from "../../providers/model-thinking.js";
|
|
11
12
|
import { mkdir } from "node:fs/promises";
|
|
12
13
|
//#region src/agent/session/session-config-service.ts
|
|
13
14
|
init_src();
|
|
@@ -25,6 +26,16 @@ var SessionConfigService = class {
|
|
|
25
26
|
* invalid field. Model and thinking are validated together and committed in one write.
|
|
26
27
|
*/
|
|
27
28
|
async patch(conversationId, partial) {
|
|
29
|
+
const configuredThinking = resolveEffectiveAgentConfigForSession(conversationId).config.runtime.thinkingLevel;
|
|
30
|
+
if (configuredThinking && partial.thinkingLevel !== void 0 && partial.thinkingLevel !== configuredThinking) return {
|
|
31
|
+
ok: false,
|
|
32
|
+
code: "INVALID_THINKING",
|
|
33
|
+
error: `This agent uses thinking ${configuredThinking}`
|
|
34
|
+
};
|
|
35
|
+
if (configuredThinking && (partial.model !== void 0 || partial.thinkingLevel !== void 0)) partial = {
|
|
36
|
+
...partial,
|
|
37
|
+
thinkingLevel: configuredThinking
|
|
38
|
+
};
|
|
28
39
|
if (partial.model !== void 0 || partial.thinkingLevel !== void 0 || partial.fixedModel) {
|
|
29
40
|
const existing = await this.opts.sessionConfigStore.get(conversationId);
|
|
30
41
|
if (partial.configVersion !== void 0 && partial.configVersion !== (existing?.updatedAt ?? 0)) return {
|
|
@@ -134,6 +145,13 @@ var SessionConfigService = class {
|
|
|
134
145
|
}
|
|
135
146
|
/** Materialize a restored/new chat choice; unavailable identities stay visible for repair. */
|
|
136
147
|
async initializeModelSelection(conversationId, modelRef, thinkingLevel, configVersion) {
|
|
148
|
+
const configuredThinking = resolveEffectiveAgentConfigForSession(conversationId).config.runtime.thinkingLevel;
|
|
149
|
+
if (configuredThinking && thinkingLevel !== void 0 && thinkingLevel !== configuredThinking) return {
|
|
150
|
+
ok: false,
|
|
151
|
+
code: "INVALID_THINKING",
|
|
152
|
+
error: `This agent uses thinking ${configuredThinking}`
|
|
153
|
+
};
|
|
154
|
+
if (configuredThinking) thinkingLevel = configuredThinking;
|
|
137
155
|
const existing = await this.opts.sessionConfigStore.get(conversationId);
|
|
138
156
|
if (configVersion !== void 0 && configVersion !== (existing?.updatedAt ?? 0)) return {
|
|
139
157
|
ok: false,
|
|
@@ -147,6 +165,11 @@ var SessionConfigService = class {
|
|
|
147
165
|
fixedModel: true,
|
|
148
166
|
configVersion
|
|
149
167
|
});
|
|
168
|
+
if (configuredThinking) return {
|
|
169
|
+
ok: false,
|
|
170
|
+
code: "INVALID_MODEL",
|
|
171
|
+
error: `Select an available model that supports thinking ${configuredThinking}`
|
|
172
|
+
};
|
|
150
173
|
if (!modelRef.trim() || !modelRef.includes("/")) return {
|
|
151
174
|
ok: false,
|
|
152
175
|
code: "INVALID_MODEL",
|
|
@@ -192,6 +215,9 @@ var SessionConfigService = class {
|
|
|
192
215
|
*/
|
|
193
216
|
async applyAutomationModelOverride(conversationId, model) {
|
|
194
217
|
const raw = model?.trim();
|
|
218
|
+
const configuredThinking = resolveEffectiveAgentConfigForSession(conversationId).config.runtime.thinkingLevel;
|
|
219
|
+
const selectedModel = raw ? this.opts.modelManager.findByRef(raw) : void 0;
|
|
220
|
+
if (configuredThinking && (!selectedModel || !getModelThinking(selectedModel).options.includes(configuredThinking))) return false;
|
|
195
221
|
if (!raw) {
|
|
196
222
|
await this.clearModelOverride(conversationId);
|
|
197
223
|
return true;
|
|
@@ -3,9 +3,9 @@ import { init_logger } from "../../utils/logger.js";
|
|
|
3
3
|
import { getExecutionEnvironmentForSession } from "../../execution-environments/subject.js";
|
|
4
4
|
import { effectiveWorkspacePathForSession, normalizeWorkingDirectoryInput, projectWorkspacePath } from "../../session/session-workspace.js";
|
|
5
5
|
import { getProjectForSession } from "../../projects/workspace.js";
|
|
6
|
+
import { getModelThinking } from "../../providers/model-thinking.js";
|
|
6
7
|
import { resolveEffectiveThinkingLevel } from "../../session/thinking-resolve.js";
|
|
7
8
|
import "../../session/index.js";
|
|
8
|
-
import { getModelThinking } from "../../providers/model-thinking.js";
|
|
9
9
|
import { mkdir, stat } from "node:fs/promises";
|
|
10
10
|
//#region src/agent/session/session-hydrator.ts
|
|
11
11
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { init_write_file_atomic, writeTextAtomicSync } from "../../infra/write-file-atomic.js";
|
|
2
1
|
import { init_paths, resolveSkillsLockPath } from "../../config/paths.js";
|
|
2
|
+
import { init_write_file_atomic, writeTextAtomicSync } from "../../infra/write-file-atomic.js";
|
|
3
3
|
import { existsSync, readFileSync } from "node:fs";
|
|
4
4
|
//#region src/agent/skills/hub-lock.ts
|
|
5
5
|
/**
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { resolveStateDir } from "../../config/paths-state.js";
|
|
2
2
|
import { createLogger } from "../../utils/logger/index.js";
|
|
3
3
|
import { init_logger } from "../../utils/logger.js";
|
|
4
|
-
import { parseFrontmatter } from "../../markdown/frontmatter.js";
|
|
5
4
|
import { init_paths } from "../../config/paths.js";
|
|
5
|
+
import { parseFrontmatter } from "../../markdown/frontmatter.js";
|
|
6
6
|
import { findInstallSpec, hasBinary, installSkill } from "./installer.js";
|
|
7
7
|
import { applySkillEnvOverrides, createSkillConfigManager, getSkillEnvironment, isSkillEnabled, resolveSkillConfig, validateSkillConfig } from "./config.js";
|
|
8
8
|
import { parseSkillToolConditions } from "./skill-tool-gating.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { parseFrontmatter } from "../../markdown/frontmatter.js";
|
|
2
1
|
import { init_paths, resolveSkillsDir } from "../../config/paths.js";
|
|
2
|
+
import { parseFrontmatter } from "../../markdown/frontmatter.js";
|
|
3
3
|
import { loadSkillsLock } from "./hub-lock.js";
|
|
4
4
|
import { dirname, join, resolve, sep } from "node:path";
|
|
5
5
|
import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, writeFileSync } from "node:fs";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { parseFrontmatter } from "../../markdown/frontmatter.js";
|
|
2
1
|
import { init_paths, resolveSkillsDir } from "../../config/paths.js";
|
|
2
|
+
import { parseFrontmatter } from "../../markdown/frontmatter.js";
|
|
3
3
|
import { resolveWorkspaceSkillsDir } from "./workspace-skills-dir.js";
|
|
4
4
|
import { formatScanSummary, scanSkillDirectory } from "./scanner.js";
|
|
5
5
|
import { fuzzyFindText, normalizeForFuzzyMatch, normalizeToLF, restoreLineEndings } from "../tools/edit-diff.js";
|
|
@@ -61,6 +61,8 @@ import { createManagedJobTool } from "./managed-job-tool.js";
|
|
|
61
61
|
import { createImageTool } from "./image-tool.js";
|
|
62
62
|
import { createImageGenerateTool } from "./image-generate-tool.js";
|
|
63
63
|
import "./index.js";
|
|
64
|
+
import { createPersonalTaskTool } from "./personal-task-tool.js";
|
|
65
|
+
import { createPersonalPreferenceTool } from "./personal-preference-tool.js";
|
|
64
66
|
import { resolveUserContextSessionAccess } from "../../user-context/access-policy.js";
|
|
65
67
|
import { createBrowserUseTool } from "./browser/tool/browser-use-tool.js";
|
|
66
68
|
import { ComputerRuntime } from "../../computer/runtime.js";
|
|
@@ -210,6 +212,7 @@ var AgentToolsFactory = class AgentToolsFactory {
|
|
|
210
212
|
const getSkillMgr = options?.getSkillManager;
|
|
211
213
|
const disabled = options?.disabledTools;
|
|
212
214
|
const allowed = options?.toolAllowlist ? new Set(options.toolAllowlist) : void 0;
|
|
215
|
+
const personalToolsConfigured = Boolean(allowed?.has("personal_task") || allowed?.has("personal_preference"));
|
|
213
216
|
const primary = getPrimary?.();
|
|
214
217
|
const modelHasVision = primary?.input?.includes("image") ?? false;
|
|
215
218
|
const cfg = this.deps.getConfig?.();
|
|
@@ -261,6 +264,22 @@ var AgentToolsFactory = class AgentToolsFactory {
|
|
|
261
264
|
const listDir = createListDirTool(workspace);
|
|
262
265
|
const grep = createGrepTool(workspace);
|
|
263
266
|
const find = createFindTool(workspace);
|
|
267
|
+
const productToolDeps = {
|
|
268
|
+
getWorkspace: () => this.deps.workspace,
|
|
269
|
+
getConfig: () => this.deps.getConfig?.(),
|
|
270
|
+
getCurrentAgentId: () => options?.agentId,
|
|
271
|
+
getCurrentConversationId: () => this.deps.getCurrentContext()?.conversationId,
|
|
272
|
+
getAutomationService: this.deps.getAutomationService,
|
|
273
|
+
getSceneAccess: this.deps.getSceneAccess,
|
|
274
|
+
getNotesService: this.deps.getNotesService,
|
|
275
|
+
getProjectService: this.deps.getProjectService,
|
|
276
|
+
getWorkDiscovery: this.deps.getWorkDiscovery,
|
|
277
|
+
getLocalAppService: this.deps.getLocalAppService,
|
|
278
|
+
getChatPreviewService: this.deps.getChatPreviewService,
|
|
279
|
+
dispatchTaskEvents: this.deps.dispatchTaskEvents,
|
|
280
|
+
dispatchTaskRuns: this.deps.dispatchTaskRuns,
|
|
281
|
+
onAgentCatalogMutate: this.deps.onAgentCatalogMutate
|
|
282
|
+
};
|
|
264
283
|
const core = [
|
|
265
284
|
createSessionStatusTool(),
|
|
266
285
|
createMemoryMaintenanceTool({ getConfig: () => this.deps.getConfig?.() }),
|
|
@@ -432,22 +451,10 @@ var AgentToolsFactory = class AgentToolsFactory {
|
|
|
432
451
|
getProjectService: this.deps.getProjectService
|
|
433
452
|
})] : [],
|
|
434
453
|
...browserEnabled && this.deps.getBrowserAutomationService ? [createBrowserAutomationTool({ getBrowserAutomationService: this.deps.getBrowserAutomationService })] : [],
|
|
435
|
-
...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({
|
|
436
|
-
getWorkspace: () => this.deps.workspace,
|
|
437
|
-
getConfig: () => this.deps.getConfig?.(),
|
|
438
|
-
getCurrentAgentId: () => options.agentId,
|
|
454
|
+
...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 ? [createPersonalTaskTool(productToolDeps), createPersonalPreferenceTool({
|
|
439
455
|
getCurrentConversationId: () => this.deps.getCurrentContext()?.conversationId,
|
|
440
|
-
getAutomationService: this.deps.getAutomationService,
|
|
441
|
-
getSceneAccess: this.deps.getSceneAccess,
|
|
442
|
-
getNotesService: this.deps.getNotesService,
|
|
443
|
-
getProjectService: this.deps.getProjectService,
|
|
444
|
-
getWorkDiscovery: this.deps.getWorkDiscovery,
|
|
445
|
-
getLocalAppService: this.deps.getLocalAppService,
|
|
446
|
-
getChatPreviewService: this.deps.getChatPreviewService,
|
|
447
|
-
dispatchTaskEvents: this.deps.dispatchTaskEvents,
|
|
448
|
-
dispatchTaskRuns: this.deps.dispatchTaskRuns,
|
|
449
456
|
onAgentCatalogMutate: this.deps.onAgentCatalogMutate
|
|
450
|
-
})] : [],
|
|
457
|
+
})] : []] : [],
|
|
451
458
|
...cfg?.computer.enabled && this.deps.endpointTools ? [createComputerUseTool({
|
|
452
459
|
runtime: this.ensureComputerRuntime(),
|
|
453
460
|
context: () => {
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AgentTool } from '@earendil-works/pi-agent-core';
|
|
2
|
+
declare const PreferenceSchema: import("@sinclair/typebox").TObject<{
|
|
3
|
+
field: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"addressAs">, import("@sinclair/typebox").TLiteral<"warmth">, import("@sinclair/typebox").TLiteral<"humor">, import("@sinclair/typebox").TLiteral<"supportMode">, import("@sinclair/typebox").TLiteral<"detailLevel">, import("@sinclair/typebox").TLiteral<"proactivity">]>;
|
|
4
|
+
value: import("@sinclair/typebox").TString;
|
|
5
|
+
}>;
|
|
6
|
+
export declare function createPersonalPreferenceTool(deps: {
|
|
7
|
+
getCurrentConversationId: () => string | undefined;
|
|
8
|
+
onAgentCatalogMutate?: () => void;
|
|
9
|
+
}): AgentTool<typeof PreferenceSchema, Record<string, never>>;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { getPersonalAgentByConversation } from "../../personal-agent/repository.js";
|
|
2
|
+
import { PersonalPreferencesSchema, updatePersonalProfileRecord } from "../../personal-agent/service.js";
|
|
3
|
+
import { Type } from "@sinclair/typebox";
|
|
4
|
+
//#region src/agent/tools/personal-preference-tool.ts
|
|
5
|
+
const PreferenceSchema = Type.Object({
|
|
6
|
+
field: Type.Union([
|
|
7
|
+
Type.Literal("addressAs"),
|
|
8
|
+
Type.Literal("warmth"),
|
|
9
|
+
Type.Literal("humor"),
|
|
10
|
+
Type.Literal("supportMode"),
|
|
11
|
+
Type.Literal("detailLevel"),
|
|
12
|
+
Type.Literal("proactivity")
|
|
13
|
+
]),
|
|
14
|
+
value: Type.String({ description: "Use the exact enum for the field: warmth=reserved|balanced|gentle; humor=none|occasional|playful; supportMode=listen|untangle|solutions; detailLevel=brief|balanced|detailed; proactivity=decisions|important|open. addressAs is free text. Save only explicitly requested lasting preferences." })
|
|
15
|
+
});
|
|
16
|
+
function createPersonalPreferenceTool(deps) {
|
|
17
|
+
return {
|
|
18
|
+
name: "personal_preference",
|
|
19
|
+
label: "Personal Preference",
|
|
20
|
+
description: "Save how the user explicitly wants you to respond in future conversations. Do not save guesses, a temporary mood, or a one-time instruction.",
|
|
21
|
+
parameters: PreferenceSchema,
|
|
22
|
+
async execute(_toolCallId, input) {
|
|
23
|
+
const conversationId = deps.getCurrentConversationId();
|
|
24
|
+
const personal = conversationId ? getPersonalAgentByConversation(conversationId) : null;
|
|
25
|
+
if (!personal || personal.state !== "ready") throw new Error("Personal AI conversation is unavailable");
|
|
26
|
+
const next = PersonalPreferencesSchema.parse({
|
|
27
|
+
...personal.preferences,
|
|
28
|
+
[input.field]: input.value.trim()
|
|
29
|
+
});
|
|
30
|
+
if (!await updatePersonalProfileRecord(personal.ownerId, personal.revision, personal.displayName, next, personal.appearance)) throw new Error("Preference changed concurrently; read the current profile and try again");
|
|
31
|
+
deps.onAgentCatalogMutate?.();
|
|
32
|
+
return {
|
|
33
|
+
content: [{
|
|
34
|
+
type: "text",
|
|
35
|
+
text: `Saved ${input.field} as an explicit preference. It takes effect on the next reply.`
|
|
36
|
+
}],
|
|
37
|
+
details: {}
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
export { createPersonalPreferenceTool };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { AgentTool } from '@earendil-works/pi-agent-core';
|
|
2
|
+
import { type XopcUseToolDeps } from './xopc-use-tool.js';
|
|
3
|
+
declare const PersonalTaskSchema: import("@sinclair/typebox").TObject<{
|
|
4
|
+
command: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"agents">, import("@sinclair/typebox").TLiteral<"create">, import("@sinclair/typebox").TLiteral<"list">, import("@sinclair/typebox").TLiteral<"get">, import("@sinclair/typebox").TLiteral<"instruct">]>;
|
|
5
|
+
title: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
6
|
+
objective: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
7
|
+
description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
8
|
+
agentId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
9
|
+
taskId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
10
|
+
instruction: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
11
|
+
expectedOutputs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
12
|
+
acceptanceCriteria: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
13
|
+
constraints: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
14
|
+
requiredTools: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
15
|
+
idempotencyKey: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
16
|
+
}>;
|
|
17
|
+
export declare function buildPersonalTaskBrief(input: {
|
|
18
|
+
title?: string;
|
|
19
|
+
objective: string;
|
|
20
|
+
description?: string;
|
|
21
|
+
}): {
|
|
22
|
+
title: string;
|
|
23
|
+
objective: string;
|
|
24
|
+
body?: string;
|
|
25
|
+
};
|
|
26
|
+
/** A narrow Task surface for the fast personal conversation. */
|
|
27
|
+
export declare function createPersonalTaskTool(deps: XopcUseToolDeps): AgentTool<typeof PersonalTaskSchema, Record<string, never>>;
|
|
28
|
+
export {};
|