@xopcai/xopc 0.0.116 → 0.0.118
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -28
- package/README.zh-CN.md +63 -45
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/demo-memory/src/index.d.ts +6 -0
- package/dist/extensions/demo-memory/src/index.js +132 -0
- package/dist/extensions/demo-memory/src/index.js.map +1 -0
- package/dist/extensions/demo-memory/xopc.extension.json +15 -0
- package/dist/extensions/feishu/src/outbound/media-load.js +1 -1
- package/dist/extensions/feishu/src/schema/config-schema.d.ts +3 -3
- package/dist/extensions/feishu/src/workflow-progress.js +1 -1
- package/dist/extensions/telegram/src/adapters/streaming-adapter.js +1 -1
- package/dist/extensions/telegram/src/command-handler.js +1 -2
- package/dist/extensions/telegram/src/command-handler.js.map +1 -1
- package/dist/extensions/telegram/src/config-schema.d.ts +8 -8
- package/dist/extensions/telegram/src/inbound-processor.js +1 -1
- package/dist/extensions/telegram/src/plugin.js +1 -1
- package/dist/extensions/telegram/src/routing-integration.js +2 -2
- package/dist/extensions/telegram/src/update-offset-store.js +1 -1
- package/dist/extensions/telegram/src/workflow-progress.js +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/extensions/weixin/src/api/api.js +2 -2
- package/dist/extensions/weixin/src/auth/accounts.js +1 -1
- package/dist/extensions/weixin/src/cdn/upload.js +1 -1
- package/dist/extensions/weixin/src/config-schema.d.ts +3 -3
- package/dist/extensions/weixin/src/media/data-url.js +1 -1
- package/dist/extensions/weixin/src/messaging/debug-mode.js +1 -1
- package/dist/extensions/weixin/src/messaging/inbound.js +1 -1
- package/dist/extensions/weixin/src/messaging/process-message.js +1 -1
- package/dist/extensions/weixin/src/plugin.js +1 -1
- package/dist/extensions/weixin/src/storage/sync-buf.js +1 -1
- package/dist/extensions/weixin/src/workflow-progress.js +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-CWM1UU5P.js → agent-avatar-dicebear-dzUrQoeZ.js} +1 -1
- package/dist/gateway/static/root/assets/agents-BCxZbkOw.js +2 -0
- package/dist/gateway/static/root/assets/{app-management-settings-panel-yXSXY_bu.js → app-management-settings-panel-bxYJVJpx.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-DjY1P_ug.js → appearance-settings-BCIykXlI.js} +1 -1
- package/dist/gateway/static/root/assets/apps-page--wMEL00f.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-CytE5j-e.js → archive-plugin-Cki4SfU2.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-BvvrN6rF.js → attachment-load-D-KnS2Do.js} +1 -1
- package/dist/gateway/static/root/assets/{binary-plugins-IBWSitnj.js → binary-plugins-D2sgvJja.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-C-wDpsf-.js → block-editor-DIq-4Gvb.js} +27 -27
- package/dist/gateway/static/root/assets/browser-settings-page-DRhKdn81.js +8 -0
- package/dist/gateway/static/root/assets/capability-presets-api-CorhiHlg.js +1 -0
- package/dist/gateway/static/root/assets/capability-presets-settings-panel-qFx9Jtce.js +1 -0
- package/dist/gateway/static/root/assets/channels-settings-BAwAkqIA.js +1 -0
- package/dist/gateway/static/root/assets/connectors-page-BQLcfitM.js +2 -0
- package/dist/gateway/static/root/assets/cron-api-qGwmL-24.js +1 -0
- package/dist/gateway/static/root/assets/cron-page-BBWMAj8-.js +3 -0
- package/dist/gateway/static/root/assets/dreaming-settings-Dw89Obml.js +1 -0
- package/dist/gateway/static/root/assets/{extension-debug-page-BAIyjDlq.js → extension-debug-page-DYu1KaFQ.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-DEhv2GpC.js → extension-page-B3W6QwlZ.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-DOuAxTDW.js → extension-settings-page-D7VQ-cxE.js} +1 -1
- package/dist/gateway/static/root/assets/{fetch-CTsREQIe.js → fetch-B7xDPu-R.js} +1 -1
- package/dist/gateway/static/root/assets/{format-interval-label-D35Bfhtx.js → format-interval-label-BzxafKxR.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-config-api-BTBLSeUu.js +1 -0
- package/dist/gateway/static/root/assets/gateway-settings-Cmwy58rS.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-startup-retry-C1KAHrd2.js → gateway-startup-retry-CYj9FWCp.js} +1 -1
- package/dist/gateway/static/root/assets/goal-detail-page-l7mu5GWX.js +1 -0
- package/dist/gateway/static/root/assets/{goals-config-api-KnLGpu6h.js → goals-config-api-CQQgzPr3.js} +1 -1
- package/dist/gateway/static/root/assets/goals-page-BHitvJAv.js +2 -0
- package/dist/gateway/static/root/assets/{goals-settings-DtPtqZi8.js → goals-settings-CYVY4NGp.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-config-api-uKw1f0IG.js → heartbeat-config-api-DriO_CN9.js} +1 -1
- package/dist/gateway/static/root/assets/heartbeat-settings-CUQTKxg7.js +1 -0
- package/dist/gateway/static/root/assets/index-C17Tsd_b.css +1 -0
- package/dist/gateway/static/root/assets/index-Cc41r16l.js +191 -0
- package/dist/gateway/static/root/assets/{interval-presets-Dq0FXJ65.js → interval-presets-DFPCKW_W.js} +1 -1
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-C9_t4m7t.js → keyboard-shortcuts-settings-CcVcqstx.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-SNkWzidV.js → logs-page-C2Uqvae9.js} +2 -2
- package/dist/gateway/static/root/assets/{markdown-split-Ca87W8-h.js → markdown-split-BwOFrJ2E.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-BAcUjPRJ.js → media-plugins-Cnz6Q5G6.js} +1 -1
- package/dist/gateway/static/root/assets/messages-B1iSKjiw.js +3 -0
- package/dist/gateway/static/root/assets/models-hub-panel-BfLfcta8.js +2 -0
- package/dist/gateway/static/root/assets/note-detail-page-BjwOQBfT.js +2 -0
- package/dist/gateway/static/root/assets/{note-image-lightbox-hnSX5SSn.js → note-image-lightbox-B-Svpmza.js} +1 -1
- package/dist/gateway/static/root/assets/notes-page-DktdBiwB.js +1 -0
- package/dist/gateway/static/root/assets/{preview-open-alternatives-CNgM20H5.js → preview-open-alternatives-Bss4TiwP.js} +1 -1
- package/dist/gateway/static/root/assets/remote-access-hub-rfVx96fq.js +1 -0
- package/dist/gateway/static/root/assets/{save-bar-controls-CcdjGcfT.js → save-bar-controls-BRNjdgKq.js} +1 -1
- package/dist/gateway/static/root/assets/{schedule-field-CYr39z76.js → schedule-field-CUCKODde.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-BRAJgZQ2.js → schema-form-Dub9sy8r.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-DbtMFuuH.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-5re5gAnP.js +1 -0
- package/dist/gateway/static/root/assets/{settings-collapsible-section-BhzjeGWi.js → settings-collapsible-section-BeFLavGi.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-form-section-Cz3Pcr9b.js → settings-form-section-dmyaPOTG.js} +1 -1
- package/dist/gateway/static/root/assets/settings-page-D-WMyLlj.js +1 -0
- package/dist/gateway/static/root/assets/setup-status-panel-Cl-DEJAU.js +1 -0
- package/dist/gateway/static/root/assets/{share-preview-page-DL4y9K5e.js → share-preview-page-C8glrdqe.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-CyPVvbLt.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-CleTH1oz.js +1 -0
- package/dist/gateway/static/root/assets/skills-page-Ck8hdXqR.js +2 -0
- package/dist/gateway/static/root/assets/{system-settings-panel-FD2jxRZ3.js → system-settings-panel-DI-LN_8G.js} +1 -1
- package/dist/gateway/static/root/assets/typed-models-lib-kX9duch4.js +1 -0
- package/dist/gateway/static/root/assets/{use-channel-catalog-BInPrfR5.js → use-channel-catalog-DqlWTsDb.js} +1 -1
- package/dist/gateway/static/root/assets/user-profile-settings-panel-B-UFPMXy.js +1 -0
- package/dist/gateway/static/root/assets/utils-Dm0hKalR.js +1 -0
- package/dist/gateway/static/root/assets/voice-api-key-field-C73IVZeC.js +1 -0
- package/dist/gateway/static/root/assets/{voice-player-store-1U3vFppm.js → voice-player-store-C_ArLJPM.js} +1 -1
- package/dist/gateway/static/root/assets/workflows-page-BtFGp2y_.js +18 -0
- package/dist/gateway/static/root/index.html +5 -5
- package/dist/package.js +1 -1
- package/dist/src/agent/agent-manager.d.ts +1 -1
- package/dist/src/agent/agent-manager.js +14 -14
- package/dist/src/agent/agent-manager.js.map +1 -1
- package/dist/src/agent/agent-scope.js +5 -9
- package/dist/src/agent/agent-scope.js.map +1 -1
- package/dist/src/agent/background-review/coordinator.js +0 -1
- package/dist/src/agent/background-review/coordinator.js.map +1 -1
- package/dist/src/agent/background-review/prompts.d.ts +2 -2
- package/dist/src/agent/background-review/prompts.js +2 -2
- package/dist/src/agent/background-review/prompts.js.map +1 -1
- package/dist/src/agent/background-review/run-background-review.d.ts +0 -2
- package/dist/src/agent/background-review/run-background-review.js +2 -4
- package/dist/src/agent/background-review/run-background-review.js.map +1 -1
- package/dist/src/agent/background-review/settings.d.ts +1 -1
- package/dist/src/agent/background-review/settings.js +8 -8
- package/dist/src/agent/background-review/settings.js.map +1 -1
- package/dist/src/agent/bootstrap/bootstrap-cache.d.ts +1 -0
- package/dist/src/agent/bootstrap/bootstrap-cache.js +4 -3
- package/dist/src/agent/bootstrap/bootstrap-cache.js.map +1 -1
- package/dist/src/agent/bootstrap/bootstrap-context.d.ts +2 -2
- package/dist/src/agent/bootstrap/bootstrap-context.js +4 -4
- package/dist/src/agent/bootstrap/bootstrap-context.js.map +1 -1
- package/dist/src/agent/bootstrap/bootstrap-files.d.ts +4 -0
- package/dist/src/agent/bootstrap/bootstrap-files.js +4 -3
- package/dist/src/agent/bootstrap/bootstrap-files.js.map +1 -1
- package/dist/src/agent/bootstrap/filter-bootstrap-files.js +4 -2
- package/dist/src/agent/bootstrap/filter-bootstrap-files.js.map +1 -1
- package/dist/src/agent/bootstrap/load-bootstrap-files.d.ts +2 -1
- package/dist/src/agent/bootstrap/load-bootstrap-files.js +18 -17
- package/dist/src/agent/bootstrap/load-bootstrap-files.js.map +1 -1
- package/dist/src/agent/bootstrap/project-agents-context.js +1 -1
- package/dist/src/agent/bootstrap/types.d.ts +1 -1
- package/dist/src/agent/context/workspace-seed.js +3 -3
- package/dist/src/agent/context/workspace-state.js +1 -1
- package/dist/src/agent/context/workspace-templates/AGENTS.md +1 -1
- package/dist/src/agent/context/workspace.d.ts +4 -2
- package/dist/src/agent/context/workspace.js +6 -5
- package/dist/src/agent/context/workspace.js.map +1 -1
- package/dist/src/agent/embedded/run-for-session.js +4 -1
- package/dist/src/agent/embedded/run-for-session.js.map +1 -1
- package/dist/src/agent/fallback/candidates.js +11 -9
- package/dist/src/agent/fallback/candidates.js.map +1 -1
- package/dist/src/agent/goals/goal-locale.js +2 -2
- package/dist/src/agent/goals/post-turn.js +3 -3
- package/dist/src/agent/image/generation/runtime-types.d.ts +2 -0
- package/dist/src/agent/image/generation/runtime.js +1 -1
- package/dist/src/agent/image/generation/runtime.js.map +1 -1
- package/dist/src/agent/image/image-helpers.d.ts +1 -1
- package/dist/src/agent/image/image-helpers.js +4 -17
- package/dist/src/agent/image/image-helpers.js.map +1 -1
- package/dist/src/agent/image/image-model-fallback.js +1 -1
- package/dist/src/agent/image/image-model-fallback.js.map +1 -1
- package/dist/src/agent/image/inbound-image-handling.js +1 -1
- package/dist/src/agent/image/inbound-image-handling.js.map +1 -1
- package/dist/src/agent/image/load-image-media.js +2 -2
- package/dist/src/agent/image/tool-model-config.d.ts +1 -1
- package/dist/src/agent/image/tool-model-config.js +2 -2
- package/dist/src/agent/image/tool-model-config.js.map +1 -1
- package/dist/src/agent/ipc/inbox.js +3 -3
- package/dist/src/agent/ipc/socket.js +1 -1
- package/dist/src/agent/mcp/bundle-mcp-materialize.js +1 -1
- package/dist/src/agent/mcp/bundle-mcp-runtime.js +1 -1
- package/dist/src/agent/mcp/mcp-transport-config.js +1 -1
- package/dist/src/agent/mcp/mcp-transport.js +1 -1
- package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js +1 -1
- package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js.map +1 -1
- package/dist/src/agent/media-generation/runtime-shared.d.ts +5 -2
- package/dist/src/agent/media-generation/runtime-shared.js +1 -1
- package/dist/src/agent/media-generation/runtime-shared.js.map +1 -1
- package/dist/src/agent/memory/builtin-memory-store.d.ts +6 -2
- package/dist/src/agent/memory/builtin-memory-store.js +15 -6
- package/dist/src/agent/memory/builtin-memory-store.js.map +1 -1
- package/dist/src/agent/memory/builtin-provider.d.ts +31 -9
- package/dist/src/agent/memory/builtin-provider.js +290 -11
- package/dist/src/agent/memory/builtin-provider.js.map +1 -1
- package/dist/src/agent/memory/candidate-extractor.d.ts +6 -0
- package/dist/src/agent/memory/candidate-extractor.js +60 -0
- package/dist/src/agent/memory/candidate-extractor.js.map +1 -0
- package/dist/src/agent/memory/context-assembler.d.ts +10 -0
- package/dist/src/agent/memory/context-assembler.js +26 -0
- package/dist/src/agent/memory/context-assembler.js.map +1 -0
- package/dist/src/agent/memory/create-memory-manager.js +25 -7
- package/dist/src/agent/memory/create-memory-manager.js.map +1 -1
- package/dist/src/agent/memory/dreaming/config.d.ts +1 -6
- package/dist/src/agent/memory/dreaming/config.js +8 -8
- package/dist/src/agent/memory/dreaming/config.js.map +1 -1
- package/dist/src/agent/memory/dreaming/deep-promotion.d.ts +2 -0
- package/dist/src/agent/memory/dreaming/deep-promotion.js +25 -1
- package/dist/src/agent/memory/dreaming/deep-promotion.js.map +1 -1
- package/dist/src/agent/memory/dreaming/events.js +1 -1
- package/dist/src/agent/memory/dreaming/last-run.js +1 -1
- package/dist/src/agent/memory/dreaming/light-sweep.js +1 -1
- package/dist/src/agent/memory/dreaming/preview.js +1 -1
- package/dist/src/agent/memory/dreaming/rem-patterns.js +1 -1
- package/dist/src/agent/memory/dreaming/short-term-store.js +1 -1
- package/dist/src/agent/memory/dreaming/utils.js +1 -1
- package/dist/src/agent/memory/index.d.ts +1 -0
- package/dist/src/agent/memory/index.js +4 -3
- package/dist/src/agent/memory/inject-prefetch.js +6 -2
- package/dist/src/agent/memory/inject-prefetch.js.map +1 -1
- package/dist/src/agent/memory/manager.d.ts +39 -2
- package/dist/src/agent/memory/manager.js +355 -39
- package/dist/src/agent/memory/manager.js.map +1 -1
- package/dist/src/agent/memory/memory-config.js +15 -15
- package/dist/src/agent/memory/memory-config.js.map +1 -1
- package/dist/src/agent/memory/memory-flush.js +1 -1
- package/dist/src/agent/memory/plugin-discovery.d.ts +19 -5
- package/dist/src/agent/memory/plugin-discovery.js +97 -31
- package/dist/src/agent/memory/plugin-discovery.js.map +1 -1
- package/dist/src/agent/memory/prefetch-coordinator.js.map +1 -1
- package/dist/src/agent/memory/provider.d.ts +20 -15
- package/dist/src/agent/memory/stub-memory-provider.d.ts +17 -2
- package/dist/src/agent/memory/stub-memory-provider.js +20 -3
- package/dist/src/agent/memory/stub-memory-provider.js.map +1 -1
- package/dist/src/agent/memory/types.d.ts +162 -3
- package/dist/src/agent/models/manager.d.ts +1 -1
- package/dist/src/agent/models/manager.js +2 -2
- package/dist/src/agent/models/manager.js.map +1 -1
- package/dist/src/agent/orchestration/agent-orchestrator.d.ts +1 -1
- package/dist/src/agent/orchestration/agent-orchestrator.js +2 -1
- package/dist/src/agent/orchestration/agent-orchestrator.js.map +1 -1
- package/dist/src/agent/orchestration/run-agent-turn-with-fallbacks.d.ts +2 -2
- package/dist/src/agent/orchestration/run-agent-turn-with-fallbacks.js +1 -1
- package/dist/src/agent/orchestration/run-agent-turn-with-fallbacks.js.map +1 -1
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.d.ts +2 -6
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +2 -8
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js.map +1 -1
- package/dist/src/agent/prompt/memory/index.d.ts +4 -2
- package/dist/src/agent/prompt/memory/index.js +19 -13
- package/dist/src/agent/prompt/memory/index.js.map +1 -1
- package/dist/src/agent/prompt/sections/memory-skills.js +1 -1
- package/dist/src/agent/prompt/sections/memory-skills.js.map +1 -1
- package/dist/src/agent/prompt/service-prompt-builder.js +5 -20
- package/dist/src/agent/prompt/service-prompt-builder.js.map +1 -1
- package/dist/src/agent/reply/post-compaction-context.js +10 -7
- package/dist/src/agent/reply/post-compaction-context.js.map +1 -1
- package/dist/src/agent/reply/startup-context.js +7 -12
- package/dist/src/agent/reply/startup-context.js.map +1 -1
- package/dist/src/agent/reply/workspace-boundary-read.js +1 -1
- package/dist/src/agent/sandbox/path-policy.js +2 -2
- package/dist/src/agent/service/process-direct-streaming.js +1 -4
- package/dist/src/agent/service/process-direct-streaming.js.map +1 -1
- package/dist/src/agent/service/session-context-report.js +1 -1
- package/dist/src/agent/service/session-context-report.js.map +1 -1
- package/dist/src/agent/service.d.ts +3 -3
- package/dist/src/agent/service.js +30 -35
- package/dist/src/agent/service.js.map +1 -1
- package/dist/src/agent/service.types.d.ts +1 -2
- package/dist/src/agent/session/session-hydrator.js +1 -2
- package/dist/src/agent/session/session-hydrator.js.map +1 -1
- package/dist/src/agent/session/session-inspector.d.ts +1 -1
- package/dist/src/agent/session/session-inspector.js +10 -15
- package/dist/src/agent/session/session-inspector.js.map +1 -1
- package/dist/src/agent/skills/config.js +2 -2
- package/dist/src/agent/skills/filesystem-watcher.js +1 -1
- package/dist/src/agent/skills/hub-hash.js +2 -2
- package/dist/src/agent/skills/hub-lock.js +1 -1
- package/dist/src/agent/skills/hub-pull.js +3 -3
- package/dist/src/agent/skills/index.js +2 -2
- package/dist/src/agent/skills/installer.js +2 -2
- package/dist/src/agent/skills/managed-store.js +1 -1
- package/dist/src/agent/skills/skill-manage-ops.js +1 -1
- package/dist/src/agent/skills/skill-manager.js +1 -1
- package/dist/src/agent/skills/skill-view-path.js +1 -1
- package/dist/src/agent/skills/test-framework.js +1 -1
- package/dist/src/agent/starter-agents.d.ts +1 -3
- package/dist/src/agent/starter-agents.js +14 -22
- package/dist/src/agent/starter-agents.js.map +1 -1
- package/dist/src/agent/tools/browser/tool/browser-use-tool.js +1 -2
- package/dist/src/agent/tools/browser/tool/browser-use-tool.js.map +1 -1
- package/dist/src/agent/tools/curated-memory-tool.d.ts +2 -5
- package/dist/src/agent/tools/curated-memory-tool.js +77 -18
- package/dist/src/agent/tools/curated-memory-tool.js.map +1 -1
- package/dist/src/agent/tools/dreaming-tool.js +1 -1
- package/dist/src/agent/tools/factory.d.ts +0 -4
- package/dist/src/agent/tools/factory.js +19 -58
- package/dist/src/agent/tools/factory.js.map +1 -1
- package/dist/src/agent/tools/find.js +1 -1
- package/dist/src/agent/tools/grep.js +1 -1
- package/dist/src/agent/tools/image-generate-tool.d.ts +1 -1
- package/dist/src/agent/tools/image-generate-tool.js +20 -15
- package/dist/src/agent/tools/image-generate-tool.js.map +1 -1
- package/dist/src/agent/tools/image-tool.js +1 -3
- package/dist/src/agent/tools/image-tool.js.map +1 -1
- package/dist/src/agent/tools/memory-tool.d.ts +2 -2
- package/dist/src/agent/tools/memory-tool.js +39 -14
- package/dist/src/agent/tools/memory-tool.js.map +1 -1
- package/dist/src/agent/tools/session-search-tool.js +1 -3
- package/dist/src/agent/tools/session-search-tool.js.map +1 -1
- package/dist/src/agent/tools/skill-manage-tool.js +1 -1
- package/dist/src/agent/tools/web-extract.js +8 -9
- package/dist/src/agent/tools/web-extract.js.map +1 -1
- package/dist/src/agent/tools/workflow-tool.js +1 -1
- package/dist/src/agent/workflow/catalog.js +1 -1
- package/dist/src/agent/workflow/subagent-runner.js +1 -3
- package/dist/src/agent/workflow/subagent-runner.js.map +1 -1
- package/dist/src/agent-manifest/index.d.ts +4 -0
- package/dist/src/agent-manifest/index.js +10 -0
- package/dist/src/agent-manifest/index.js.map +1 -0
- package/dist/src/agent-manifest/prompt.d.ts +2 -0
- package/dist/src/agent-manifest/prompt.js +57 -0
- package/dist/src/agent-manifest/prompt.js.map +1 -0
- package/dist/src/agent-manifest/resolver.d.ts +12 -0
- package/dist/src/agent-manifest/resolver.js +95 -0
- package/dist/src/agent-manifest/resolver.js.map +1 -0
- package/dist/src/agent-manifest/schema.d.ts +1010 -0
- package/dist/src/agent-manifest/schema.js +269 -0
- package/dist/src/agent-manifest/schema.js.map +1 -0
- package/dist/src/agent-manifest/validator.d.ts +25 -0
- package/dist/src/agent-manifest/validator.js +88 -0
- package/dist/src/agent-manifest/validator.js.map +1 -0
- package/dist/src/agent-runtime/boundary-guard.d.ts +12 -0
- package/dist/src/agent-runtime/boundary-guard.js +23 -0
- package/dist/src/agent-runtime/boundary-guard.js.map +1 -0
- package/dist/src/agent-runtime/index.d.ts +7 -0
- package/dist/src/agent-runtime/index.js +8 -0
- package/dist/src/agent-runtime/memory-runtime.d.ts +21 -0
- package/dist/src/agent-runtime/memory-runtime.js +50 -0
- package/dist/src/agent-runtime/memory-runtime.js.map +1 -0
- package/dist/src/agent-runtime/model-router.d.ts +11 -0
- package/dist/src/agent-runtime/model-router.js +16 -0
- package/dist/src/agent-runtime/model-router.js.map +1 -0
- package/dist/src/agent-runtime/run-trace.d.ts +27 -0
- package/dist/src/agent-runtime/run-trace.js +53 -0
- package/dist/src/agent-runtime/run-trace.js.map +1 -0
- package/dist/src/agent-runtime/runtime-profile.d.ts +24 -0
- package/dist/src/agent-runtime/runtime-profile.js +44 -0
- package/dist/src/agent-runtime/runtime-profile.js.map +1 -0
- package/dist/src/agent-runtime/tool-registry.d.ts +28 -0
- package/dist/src/agent-runtime/tool-registry.js +52 -0
- package/dist/src/agent-runtime/tool-registry.js.map +1 -0
- package/dist/src/agent-runtime/workflow-runtime.d.ts +31 -0
- package/dist/src/agent-runtime/workflow-runtime.js +34 -0
- package/dist/src/agent-runtime/workflow-runtime.js.map +1 -0
- package/dist/src/ai-assist/text-assist.js +1 -1
- package/dist/src/auth/credentials.js +2 -2
- package/dist/src/auth/profiles/store.js +2 -2
- package/dist/src/auth/sync-provider-auth.js +1 -1
- package/dist/src/browser/actions/extension-registry-bridge.js +1 -1
- package/dist/src/browser/actions/extension-registry-bridge.js.map +1 -1
- package/dist/src/browser/actions/registry.js +5 -8
- package/dist/src/browser/actions/registry.js.map +1 -1
- package/dist/src/browser/backend-from-config.d.ts +1 -1
- package/dist/src/browser/backend-from-config.js +50 -71
- package/dist/src/browser/backend-from-config.js.map +1 -1
- package/dist/src/browser/browser-command-timeout.d.ts +0 -1
- package/dist/src/browser/browser-command-timeout.js +3 -7
- package/dist/src/browser/browser-command-timeout.js.map +1 -1
- package/dist/src/browser/cache-dir-policy.js +1 -1
- package/dist/src/browser/cdp-local-launcher.js +2 -2
- package/dist/src/browser/pipeline/source.js +1 -1
- package/dist/src/browser/providers/browser-ext-install.d.ts +2 -12
- package/dist/src/browser/providers/browser-ext-install.js +7 -12
- package/dist/src/browser/providers/browser-ext-install.js.map +1 -1
- package/dist/src/browser/providers/cloakbrowser.js +5 -5
- package/dist/src/browser/providers/playwright-doctor.js +1 -1
- package/dist/src/browser/readiness.js +16 -16
- package/dist/src/browser/readiness.js.map +1 -1
- package/dist/src/browser/schemas.js +1 -1
- package/dist/src/browser/schemas.js.map +1 -1
- package/dist/src/browser/stealth.js +1 -1
- package/dist/src/channels/catalog/channel-catalog-service.js +1 -1
- package/dist/src/channels/outbound/persist-store.js +1 -1
- package/dist/src/channels/pairing/allow-from-file.js +1 -1
- package/dist/src/channels/pairing/pairing-store.js +2 -2
- package/dist/src/channels/pipeline.d.ts +1 -1
- package/dist/src/channels/pipeline.js.map +1 -1
- package/dist/src/chat-commands/agent-edit.js +2 -3
- package/dist/src/chat-commands/agent-edit.js.map +1 -1
- package/dist/src/chat-commands/builtins/config.js +6 -6
- package/dist/src/chat-commands/builtins/config.js.map +1 -1
- package/dist/src/chat-commands/builtins/model.js +2 -2
- package/dist/src/chat-commands/builtins/model.js.map +1 -1
- package/dist/src/chat-commands/builtins/thinking.js +16 -42
- package/dist/src/chat-commands/builtins/thinking.js.map +1 -1
- package/dist/src/chat-commands/config-paths.js +1 -1
- package/dist/src/chat-commands/config-paths.js.map +1 -1
- package/dist/src/chat-commands/context.js +3 -4
- package/dist/src/chat-commands/context.js.map +1 -1
- package/dist/src/cli/command-manifest.d.ts +1 -1
- package/dist/src/cli/command-manifest.js +2 -2
- package/dist/src/cli/command-manifest.js.map +1 -1
- package/dist/src/cli/commands/agent.js +3 -1
- package/dist/src/cli/commands/agent.js.map +1 -1
- package/dist/src/cli/commands/agents.js +3 -6
- package/dist/src/cli/commands/agents.js.map +1 -1
- package/dist/src/cli/commands/browser-cli-helpers.js +9 -11
- package/dist/src/cli/commands/browser-cli-helpers.js.map +1 -1
- package/dist/src/cli/commands/config.js +6 -6
- package/dist/src/cli/commands/config.js.map +1 -1
- package/dist/src/cli/commands/doctor/checks/config-health.js +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/doctor/checks/provider-auth.js +3 -18
- package/dist/src/cli/commands/doctor/checks/provider-auth.js.map +1 -1
- package/dist/src/cli/commands/doctor/checks/state-integrity.js +1 -1
- package/dist/src/cli/commands/doctor/checks/workspace-status.js +1 -2
- package/dist/src/cli/commands/doctor/checks/workspace-status.js.map +1 -1
- package/dist/src/cli/commands/extension-create.js +1 -1
- package/dist/src/cli/commands/extension-dev.js +2 -2
- package/dist/src/cli/commands/extension-marketplace.js +2 -2
- package/dist/src/cli/commands/extension-pack.js +2 -2
- package/dist/src/cli/commands/extension.js +3 -3
- package/dist/src/cli/commands/gateway/logs.js +1 -1
- package/dist/src/cli/commands/goal.js +1 -1
- package/dist/src/cli/commands/image.js +13 -372
- package/dist/src/cli/commands/image.js.map +1 -1
- package/dist/src/cli/commands/init.js +7 -6
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/models.js +14 -16
- package/dist/src/cli/commands/models.js.map +1 -1
- package/dist/src/cli/commands/onboard/channels/registry.js.map +1 -1
- package/dist/src/cli/commands/onboard/model.js +28 -23
- package/dist/src/cli/commands/onboard/model.js.map +1 -1
- package/dist/src/cli/commands/onboard.js +3 -3
- package/dist/src/cli/commands/onboard.js.map +1 -1
- package/dist/src/cli/commands/skills-test.js +1 -1
- package/dist/src/cli/commands/tui.js +2 -2
- package/dist/src/cli/commands/tui.js.map +1 -1
- package/dist/src/cli/index.d.ts +1 -0
- package/dist/src/cli/index.js +10 -5
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/cli/registry.js +1 -1
- package/dist/src/cli/registry.js.map +1 -1
- package/dist/src/cli/templates.d.ts +1 -1
- package/dist/src/cli/templates.js +2 -12
- package/dist/src/cli/templates.js.map +1 -1
- package/dist/src/cli/utils/gateway-client.js +1 -1
- package/dist/src/cli/utils/init-workspace-core.d.ts +1 -4
- package/dist/src/cli/utils/init-workspace-core.js +9 -8
- package/dist/src/cli/utils/init-workspace-core.js.map +1 -1
- package/dist/src/commands/agents.config.d.ts +0 -1
- package/dist/src/commands/agents.config.js +59 -13
- package/dist/src/commands/agents.config.js.map +1 -1
- package/dist/src/config/agent-profile.d.ts +5 -17
- package/dist/src/config/agent-profile.js +32 -64
- package/dist/src/config/agent-profile.js.map +1 -1
- package/dist/src/config/agent-typed-models.d.ts +1 -1
- package/dist/src/config/agent-typed-models.js +3 -6
- package/dist/src/config/agent-typed-models.js.map +1 -1
- package/dist/src/config/gateway-bind.js +1 -1
- package/dist/src/config/index.js +9 -9
- package/dist/src/config/integration.d.ts +1 -1
- package/dist/src/config/loader.js +4 -4
- package/dist/src/config/models-json.js +2 -2
- package/dist/src/config/paths-state.js +1 -1
- package/dist/src/config/paths.d.ts +8 -1
- package/dist/src/config/paths.js +17 -4
- package/dist/src/config/paths.js.map +1 -1
- package/dist/src/config/profile.js +1 -1
- package/dist/src/config/reload.js +2 -2
- package/dist/src/config/reload.js.map +1 -1
- package/dist/src/config/rules.js +6 -56
- package/dist/src/config/rules.js.map +1 -1
- package/dist/src/config/schema.d.ts +916 -779
- package/dist/src/config/schema.js +174 -423
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/config/workspace-path.js +1 -1
- package/dist/src/connectors/composio-triggers.js +1 -1
- package/dist/src/cron/executor.js +1 -1
- package/dist/src/cron/index.js +1 -1
- package/dist/src/cron/service.js +2 -2
- package/dist/src/cron/validation.d.ts +3 -3
- package/dist/src/daemon/constants.js +1 -1
- package/dist/src/daemon/install-plan.js +2 -2
- package/dist/src/daemon/launchd.js +2 -2
- package/dist/src/daemon/schtasks.js +2 -2
- package/dist/src/daemon/systemd.js +2 -2
- package/dist/src/extensions/activation-context.js +13 -7
- package/dist/src/extensions/activation-context.js.map +1 -1
- package/dist/src/extensions/bundle-mcp.js +1 -1
- package/dist/src/extensions/discover-extensions.js +2 -2
- package/dist/src/extensions/health.js +1 -1
- package/dist/src/extensions/install.js +2 -2
- package/dist/src/extensions/loader.js +2 -2
- package/dist/src/extensions/lockfile.js +3 -3
- package/dist/src/extensions/security.js +1 -1
- package/dist/src/extensions/update.js +2 -2
- package/dist/src/gateway/agents-admin.d.ts +24 -18
- package/dist/src/gateway/agents-admin.js +158 -92
- package/dist/src/gateway/agents-admin.js.map +1 -1
- package/dist/src/gateway/capability-presets-admin.d.ts +56 -0
- package/dist/src/gateway/capability-presets-admin.js +214 -0
- package/dist/src/gateway/capability-presets-admin.js.map +1 -0
- package/dist/src/gateway/chat-stream/mapper.js +9 -2
- package/dist/src/gateway/chat-stream/mapper.js.map +1 -1
- package/dist/src/gateway/file-path-classifier.js +2 -2
- package/dist/src/gateway/global-defaults-admin.d.ts +36 -0
- package/dist/src/gateway/global-defaults-admin.js +146 -0
- package/dist/src/gateway/global-defaults-admin.js.map +1 -0
- package/dist/src/gateway/hono/lib/agent-model.d.ts +1 -1
- package/dist/src/gateway/hono/lib/agent-model.js +1 -1
- package/dist/src/gateway/hono/lib/agent-model.js.map +1 -1
- package/dist/src/gateway/hono/lib/config-payload.d.ts +234 -127
- package/dist/src/gateway/hono/lib/config-payload.js +14 -38
- package/dist/src/gateway/hono/lib/config-payload.js.map +1 -1
- package/dist/src/gateway/hono/lib/extension-store.js +2 -2
- package/dist/src/gateway/hono/lib/static-ui.js +2 -2
- package/dist/src/gateway/hono/routes/agents.js +88 -33
- package/dist/src/gateway/hono/routes/agents.js.map +1 -1
- package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
- package/dist/src/gateway/hono/routes/browser.js +8 -15
- package/dist/src/gateway/hono/routes/browser.js.map +1 -1
- package/dist/src/gateway/hono/routes/capability-presets.d.ts +3 -0
- package/dist/src/gateway/hono/routes/capability-presets.js +145 -0
- package/dist/src/gateway/hono/routes/capability-presets.js.map +1 -0
- package/dist/src/gateway/hono/routes/commands-skills.js +4 -5
- package/dist/src/gateway/hono/routes/commands-skills.js.map +1 -1
- package/dist/src/gateway/hono/routes/config-patch/agents.d.ts +1 -17
- package/dist/src/gateway/hono/routes/config-patch/agents.js +2 -443
- package/dist/src/gateway/hono/routes/config-patch/agents.js.map +1 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js +7 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js.map +1 -1
- package/dist/src/gateway/hono/routes/config.js +1 -1
- package/dist/src/gateway/hono/routes/config.js.map +1 -1
- package/dist/src/gateway/hono/routes/dreaming.js +8 -1
- package/dist/src/gateway/hono/routes/dreaming.js.map +1 -1
- package/dist/src/gateway/hono/routes/global-defaults.d.ts +3 -0
- package/dist/src/gateway/hono/routes/global-defaults.js +61 -0
- package/dist/src/gateway/hono/routes/global-defaults.js.map +1 -0
- package/dist/src/gateway/hono/routes/host-fs.js +2 -2
- package/dist/src/gateway/hono/routes/index.js +2 -0
- package/dist/src/gateway/hono/routes/index.js.map +1 -1
- package/dist/src/gateway/hono/routes/lazy-bundles.js +17 -1
- package/dist/src/gateway/hono/routes/lazy-bundles.js.map +1 -1
- package/dist/src/gateway/hono/routes/memory.d.ts +3 -0
- package/dist/src/gateway/hono/routes/memory.js +361 -0
- package/dist/src/gateway/hono/routes/memory.js.map +1 -0
- package/dist/src/gateway/hono/routes/models.js +2 -2
- package/dist/src/gateway/hono/routes/shares.js +1 -1
- package/dist/src/gateway/hono/routes/workflows.js +1 -1
- package/dist/src/gateway/hono/routes/workspace.js +2 -2
- package/dist/src/gateway/lock.js +3 -3
- package/dist/src/gateway/ports.js +1 -1
- package/dist/src/gateway/service/config-coordinator.js +1 -1
- package/dist/src/gateway/service/marketplace-service.d.ts +4 -4
- package/dist/src/gateway/service/marketplace-service.js +13 -9
- package/dist/src/gateway/service/marketplace-service.js.map +1 -1
- package/dist/src/gateway/service.d.ts +1 -1
- package/dist/src/gateway/service.js +15 -16
- package/dist/src/gateway/service.js.map +1 -1
- package/dist/src/gateway/workspace-fs-file-list.js +1 -1
- package/dist/src/goals/goal-workflow-judge.js +2 -2
- package/dist/src/i18n/goals-bundle.js +1 -1
- package/dist/src/i18n/index.js +1 -1
- package/dist/src/i18n/share-tool-bundle.js +2 -2
- package/dist/src/infra/brew.js +1 -1
- package/dist/src/infra/package-json.js +1 -1
- package/dist/src/infra/package-update-steps.js +1 -1
- package/dist/src/infra/path-env.js +2 -2
- package/dist/src/infra/restart.js +1 -1
- package/dist/src/infra/stable-node-path.js +1 -1
- package/dist/src/infra/update-check.js +1 -1
- package/dist/src/infra/update-global.js +1 -1
- package/dist/src/infra/update-lock.js +2 -2
- package/dist/src/infra/update-restart.js +1 -1
- package/dist/src/infra/update-runner.js +1 -1
- package/dist/src/infra/update-startup.js +1 -1
- package/dist/src/infra/write-file-atomic.js +2 -2
- package/dist/src/media/store.js +1 -1
- package/dist/src/notes/agent-context.js +3 -3
- package/dist/src/notes/service.js +4 -2
- package/dist/src/notes/service.js.map +1 -1
- package/dist/src/notes/store.js +2 -2
- package/dist/src/project-trust/trust-store.js +2 -2
- package/dist/src/providers/auth-runtime/auth-profile-store.js +1 -1
- package/dist/src/providers/index.d.ts +5 -6
- package/dist/src/providers/index.js +26 -30
- package/dist/src/providers/index.js.map +1 -1
- package/dist/src/providers/model-registry.js +4 -4
- package/dist/src/session/index.js +1 -1
- package/dist/src/session/init-session-turn.js +1 -1
- package/dist/src/session/resolve-session.js +1 -1
- package/dist/src/session/session-title.js +2 -2
- package/dist/src/session/store.js +1 -1
- package/dist/src/session/thinking-resolve.d.ts +1 -1
- package/dist/src/session/thinking-resolve.js +1 -1
- package/dist/src/session/thinking-resolve.js.map +1 -1
- package/dist/src/share/share-auto.js +2 -2
- package/dist/src/share/share-store.js +3 -3
- package/dist/src/share/share-thumbnail.js +2 -2
- package/dist/src/share/share-zip.js +1 -1
- package/dist/src/share/site-share-store.js +3 -3
- package/dist/src/share/site-static-serve.js +1 -1
- package/dist/src/storage/sqlite/connection.js +2 -2
- package/dist/src/storage/sqlite/index.d.ts +1 -0
- package/dist/src/storage/sqlite/index.js +2 -1
- package/dist/src/storage/sqlite/memory-index-repository.d.ts +1 -0
- package/dist/src/storage/sqlite/memory-index-repository.js +17 -16
- package/dist/src/storage/sqlite/memory-index-repository.js.map +1 -1
- package/dist/src/storage/sqlite/memory-records-repository.d.ts +144 -0
- package/dist/src/storage/sqlite/memory-records-repository.js +453 -0
- package/dist/src/storage/sqlite/memory-records-repository.js.map +1 -0
- package/dist/src/storage/sqlite/migrations/012_memory_records.sql +63 -0
- package/dist/src/storage/sqlite/migrations/013_memory_trace_events.sql +21 -0
- package/dist/src/storage/sqlite/migrations/014_memory_record_governance.sql +10 -0
- package/dist/src/storage/sqlite/migrations/015_memory_trace_feedback.sql +4 -0
- package/dist/src/storage/sqlite/migrations/discover.js +1 -1
- package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/runner.js +4 -4
- package/dist/src/storage/sqlite/migrations/runner.js.map +1 -1
- package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
- package/dist/src/storage/sqlite/schema.js +2 -2
- package/dist/src/storage/sqlite/schema.sql +86 -0
- package/dist/src/tui/backends/embedded-backend.d.ts +3 -0
- package/dist/src/tui/backends/embedded-backend.js +43 -24
- package/dist/src/tui/backends/embedded-backend.js.map +1 -1
- package/dist/src/tui/backends/gateway-sse-backend.d.ts +1 -0
- package/dist/src/tui/backends/gateway-sse-backend.js +16 -3
- package/dist/src/tui/backends/gateway-sse-backend.js.map +1 -1
- package/dist/src/tui/clipboard-image.js +3 -3
- package/dist/src/tui/components/tui-header.d.ts +0 -1
- package/dist/src/tui/components/tui-header.js +3 -8
- package/dist/src/tui/components/tui-header.js.map +1 -1
- package/dist/src/tui/extension-host/load-extensions.js +1 -1
- package/dist/src/tui/extension-host/load-extensions.js.map +1 -1
- package/dist/src/tui/theme-manager.js +1 -1
- package/dist/src/tui/tui-command-formatters.js +4 -4
- package/dist/src/tui/tui-commands.js +2 -2
- package/dist/src/tui/tui-keybindings-file.js +1 -1
- package/dist/src/tui/tui-scoped-models.js +2 -2
- package/dist/src/tui/tui-settings.js +1 -1
- package/dist/src/tui/tui-startup-resources.js +2 -1
- package/dist/src/tui/tui-startup-resources.js.map +1 -1
- package/dist/src/tui/tui-startup-text.js +12 -12
- package/dist/src/tui/tui-startup-text.js.map +1 -1
- package/dist/src/tui/tui.js +10 -7
- package/dist/src/tui/tui.js.map +1 -1
- package/dist/src/tunnel/frpc-binary.js +4 -4
- package/dist/src/tunnel/frpc-config.js +1 -1
- package/dist/src/tunnel/frpc-extract.js +1 -1
- package/dist/src/tunnel/tunnel-state.js +1 -1
- package/dist/src/utils/logger/audit.js +1 -1
- package/dist/src/utils/logger/log-store.js +1 -1
- package/dist/src/utils/logger/rotation.js +1 -1
- package/dist/src/utils/logger/streams.js +1 -1
- package/dist/src/voice/tts/audio.js +1 -1
- package/dist/src/voice/tts/providers/edge-speech.js +2 -2
- package/dist/src/workflows/draft/workflow-draft-service.js +1 -1
- package/dist/src/workflows/service/workflow-run-service.js +4 -5
- package/dist/src/workflows/service/workflow-run-service.js.map +1 -1
- package/dist/src/workflows/service/workflow-session-bridge.js +1 -1
- package/dist/src/workflows/store/event-store.js +1 -1
- package/dist/src/workflows/store/run-store.js +1 -1
- package/package.json +3 -2
- package/dist/gateway/static/root/assets/agent-browser-settings-page-D1SyFYeh.js +0 -6
- package/dist/gateway/static/root/assets/agent-defaults-tabbed-page-C9YxgvuI.js +0 -1
- package/dist/gateway/static/root/assets/agents-CteVs3UO.js +0 -71
- package/dist/gateway/static/root/assets/apps-page-CVQ1M8Ax.js +0 -1
- package/dist/gateway/static/root/assets/channels-settings-Cd3JbeQ1.js +0 -1
- package/dist/gateway/static/root/assets/config-api-C4RAtTKW.js +0 -3
- package/dist/gateway/static/root/assets/connectors-page-MsMa5qBr.js +0 -2
- package/dist/gateway/static/root/assets/cron-api-sJNMqB6P.js +0 -1
- package/dist/gateway/static/root/assets/cron-page-D30CSwkn.js +0 -3
- package/dist/gateway/static/root/assets/dreaming-settings-6fCUWRQf.js +0 -1
- package/dist/gateway/static/root/assets/gateway-config-api-C6989a-W.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-BpF26t91.js +0 -1
- package/dist/gateway/static/root/assets/goal-detail-page-DOjhmRyf.js +0 -1
- package/dist/gateway/static/root/assets/goals-page-Xl9_wrFc.js +0 -2
- package/dist/gateway/static/root/assets/heartbeat-settings-DN9vEj9P.js +0 -1
- package/dist/gateway/static/root/assets/index-C8ytlAF2.js +0 -122
- package/dist/gateway/static/root/assets/index-CVpJW2NS.css +0 -1
- package/dist/gateway/static/root/assets/messages-BqzIDrlr.js +0 -3
- package/dist/gateway/static/root/assets/models-hub-panel-BO4o-GmO.js +0 -2
- package/dist/gateway/static/root/assets/note-detail-page-DLV_XDmT.js +0 -2
- package/dist/gateway/static/root/assets/notes-page-ycsDlkFA.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-DQpnE8K9.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-BZui7iAY.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-DEfzZ1ax.js +0 -1
- package/dist/gateway/static/root/assets/settings-page-CLuSsu1-.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-Cq4qpXLi.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-B9F3HyYQ.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-Bp9UPPwm.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-BIoBsfSV.js +0 -2
- package/dist/gateway/static/root/assets/use-agent-defaults-form-Cz2_pPzu.js +0 -1
- package/dist/gateway/static/root/assets/use-settings-tab-guard-nuHMmZQv.js +0 -1
- package/dist/gateway/static/root/assets/voice-api-key-field-BUIrKb8s.js +0 -1
- package/dist/gateway/static/root/assets/workflows-page-qE3SexnO.js +0 -18
- package/dist/src/agent/context/workspace-templates/USER.md +0 -24
package/dist/src/cli/registry.js
CHANGED
|
@@ -5,7 +5,7 @@ init_paths();
|
|
|
5
5
|
init_workspace_defaults();
|
|
6
6
|
function createDefaultContext(argv = process.argv, opts) {
|
|
7
7
|
return {
|
|
8
|
-
configPath: opts?.config || process.env.XOPC_CONFIG || resolveConfigPath(),
|
|
8
|
+
configPath: opts?.config || process.env.XOPC_CONFIG || process.env.XOPC_CONFIG_PATH || resolveConfigPath(),
|
|
9
9
|
workspacePath: opts?.workspace || process.env.XOPC_WORKSPACE || resolveDefaultAgentWorkspaceDir(),
|
|
10
10
|
isVerbose: opts?.verbose ?? (argv.includes("--verbose") || argv.includes("-v")),
|
|
11
11
|
argv
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","names":[],"sources":["../../../src/cli/registry.ts"],"sourcesContent":["import type { Command } from 'commander';\nimport { resolveConfigPath } from '../config/paths.js';\nimport { resolveDefaultAgentWorkspaceDir } from '../config/workspace-defaults.js';\n\nexport interface CLIContext {\n configPath: string;\n workspacePath: string;\n isVerbose: boolean;\n argv: string[];\n}\n\nexport function createDefaultContext(\n argv: string[] = process.argv,\n opts?: { config?: string; workspace?: string; verbose?: boolean }\n): CLIContext {\n return {\n configPath: opts?.config || process.env.XOPC_CONFIG || resolveConfigPath(),\n workspacePath: opts?.workspace || process.env.XOPC_WORKSPACE || resolveDefaultAgentWorkspaceDir(),\n isVerbose: (opts?.verbose ?? (argv.includes('--verbose') || argv.includes('-v'))),\n argv,\n };\n}\n\nexport interface CommandMetadata {\n category?: 'setup' | 'runtime' | 'maintenance' | 'utility';\n hidden?: boolean;\n unstable?: boolean;\n examples?: string[];\n}\n\nexport interface CommandDefinition {\n id: string;\n name: string;\n description: string;\n factory: (ctx: CLIContext, getCtx?: () => CLIContext) => Command;\n metadata?: CommandMetadata;\n}\n\nexport class CommandRegistry {\n private commands: CommandDefinition[] = [];\n private initialized = false;\n private suppressLateRegistrationWarnings = false;\n\n /**\n * Temporarily silence the \"registered after initialization\" warning. Used by\n * commands that need to bulk-load other command modules to harvest their\n * side effects during initialization.\n */\n setSuppressLateRegistrationWarnings(value: boolean): void {\n this.suppressLateRegistrationWarnings = value;\n }\n\n register(def: CommandDefinition): void {\n if (this.initialized && !this.suppressLateRegistrationWarnings) {\n console.warn(`Warning: Command \"${def.id}\" registered after initialization`);\n }\n\n const existing = this.commands.find(c => c.id === def.id);\n if (existing) {\n throw new Error(`Command with id \"${def.id}\" already registered (name: ${existing.name})`);\n }\n\n const existingName = this.commands.find(c => c.name === def.name);\n if (existingName) {\n throw new Error(`Command with name \"${def.name}\" already registered (id: ${existingName.id})`);\n }\n\n this.commands.push(def);\n }\n\n registerAll(defs: CommandDefinition[]): void {\n for (const def of defs) {\n this.register(def);\n }\n }\n\n getCommands(): ReadonlyArray<CommandDefinition> {\n return this.commands;\n }\n\n getCommandsByCategory(category: CommandMetadata['category']): ReadonlyArray<CommandDefinition> {\n return this.commands.filter(c => c.metadata?.category === category);\n }\n\n findById(id: string): CommandDefinition | undefined {\n return this.commands.find(c => c.id === id);\n }\n\n findByName(name: string): CommandDefinition | undefined {\n return this.commands.find(c => c.name === name);\n }\n\n install(program: Command, ctx: CLIContext, getCtx?: () => CLIContext): void {\n this.initialized = true;\n\n const categoryOrder = { setup: 0, runtime: 1, maintenance: 2, utility: 3 };\n const sorted = [...this.commands].sort((a, b) => {\n const orderA = categoryOrder[a.metadata?.category ?? 'utility'];\n const orderB = categoryOrder[b.metadata?.category ?? 'utility'];\n return orderA - orderB;\n });\n\n for (const def of sorted) {\n if (def.metadata?.hidden) continue;\n\n try {\n const cmd = def.factory(ctx, getCtx);\n program.addCommand(cmd);\n } catch (error) {\n console.error(`Failed to register command \"${def.id}\":`, error);\n }\n }\n }\n\n installOne(\n program: Command,\n name: string,\n ctx: CLIContext,\n getCtx?: () => CLIContext,\n ): boolean {\n this.initialized = true;\n const def = this.findByName(name);\n if (!def || def.metadata?.hidden) return false;\n try {\n const cmd = def.factory(ctx, getCtx);\n program.addCommand(cmd);\n return true;\n } catch (error) {\n console.error(`Failed to register command \"${def.id}\":`, error);\n return false;\n }\n }\n\n getStats(): { total: number; byCategory: Record<string, number> } {\n const byCategory: Record<string, number> = {};\n for (const cmd of this.commands) {\n const cat = cmd.metadata?.category ?? 'uncategorized';\n byCategory[cat] = (byCategory[cat] || 0) + 1;\n }\n return { total: this.commands.length, byCategory };\n }\n}\n\nexport const registry = new CommandRegistry();\n\nexport function register(def: CommandDefinition): void {\n registry.register(def);\n}\n\nexport function formatExamples(examples: string[]): string {\n if (examples.length === 0) return '';\n return '\\nExamples:\\n' + examples.map(e => ` $ ${e}`).join('\\n');\n}\n"],"mappings":";;;YACuD;yBAC2B;AASlF,SAAgB,qBACd,OAAiB,QAAQ,MACzB,MACY;AACZ,QAAO;EACL,YAAY,MAAM,UAAU,QAAQ,IAAI,eAAe,mBAAmB;
|
|
1
|
+
{"version":3,"file":"registry.js","names":[],"sources":["../../../src/cli/registry.ts"],"sourcesContent":["import type { Command } from 'commander';\nimport { resolveConfigPath } from '../config/paths.js';\nimport { resolveDefaultAgentWorkspaceDir } from '../config/workspace-defaults.js';\n\nexport interface CLIContext {\n configPath: string;\n workspacePath: string;\n isVerbose: boolean;\n argv: string[];\n}\n\nexport function createDefaultContext(\n argv: string[] = process.argv,\n opts?: { config?: string; workspace?: string; verbose?: boolean }\n): CLIContext {\n return {\n configPath: opts?.config || process.env.XOPC_CONFIG || process.env.XOPC_CONFIG_PATH || resolveConfigPath(),\n workspacePath: opts?.workspace || process.env.XOPC_WORKSPACE || resolveDefaultAgentWorkspaceDir(),\n isVerbose: (opts?.verbose ?? (argv.includes('--verbose') || argv.includes('-v'))),\n argv,\n };\n}\n\nexport interface CommandMetadata {\n category?: 'setup' | 'runtime' | 'maintenance' | 'utility';\n hidden?: boolean;\n unstable?: boolean;\n examples?: string[];\n}\n\nexport interface CommandDefinition {\n id: string;\n name: string;\n description: string;\n factory: (ctx: CLIContext, getCtx?: () => CLIContext) => Command;\n metadata?: CommandMetadata;\n}\n\nexport class CommandRegistry {\n private commands: CommandDefinition[] = [];\n private initialized = false;\n private suppressLateRegistrationWarnings = false;\n\n /**\n * Temporarily silence the \"registered after initialization\" warning. Used by\n * commands that need to bulk-load other command modules to harvest their\n * side effects during initialization.\n */\n setSuppressLateRegistrationWarnings(value: boolean): void {\n this.suppressLateRegistrationWarnings = value;\n }\n\n register(def: CommandDefinition): void {\n if (this.initialized && !this.suppressLateRegistrationWarnings) {\n console.warn(`Warning: Command \"${def.id}\" registered after initialization`);\n }\n\n const existing = this.commands.find(c => c.id === def.id);\n if (existing) {\n throw new Error(`Command with id \"${def.id}\" already registered (name: ${existing.name})`);\n }\n\n const existingName = this.commands.find(c => c.name === def.name);\n if (existingName) {\n throw new Error(`Command with name \"${def.name}\" already registered (id: ${existingName.id})`);\n }\n\n this.commands.push(def);\n }\n\n registerAll(defs: CommandDefinition[]): void {\n for (const def of defs) {\n this.register(def);\n }\n }\n\n getCommands(): ReadonlyArray<CommandDefinition> {\n return this.commands;\n }\n\n getCommandsByCategory(category: CommandMetadata['category']): ReadonlyArray<CommandDefinition> {\n return this.commands.filter(c => c.metadata?.category === category);\n }\n\n findById(id: string): CommandDefinition | undefined {\n return this.commands.find(c => c.id === id);\n }\n\n findByName(name: string): CommandDefinition | undefined {\n return this.commands.find(c => c.name === name);\n }\n\n install(program: Command, ctx: CLIContext, getCtx?: () => CLIContext): void {\n this.initialized = true;\n\n const categoryOrder = { setup: 0, runtime: 1, maintenance: 2, utility: 3 };\n const sorted = [...this.commands].sort((a, b) => {\n const orderA = categoryOrder[a.metadata?.category ?? 'utility'];\n const orderB = categoryOrder[b.metadata?.category ?? 'utility'];\n return orderA - orderB;\n });\n\n for (const def of sorted) {\n if (def.metadata?.hidden) continue;\n\n try {\n const cmd = def.factory(ctx, getCtx);\n program.addCommand(cmd);\n } catch (error) {\n console.error(`Failed to register command \"${def.id}\":`, error);\n }\n }\n }\n\n installOne(\n program: Command,\n name: string,\n ctx: CLIContext,\n getCtx?: () => CLIContext,\n ): boolean {\n this.initialized = true;\n const def = this.findByName(name);\n if (!def || def.metadata?.hidden) return false;\n try {\n const cmd = def.factory(ctx, getCtx);\n program.addCommand(cmd);\n return true;\n } catch (error) {\n console.error(`Failed to register command \"${def.id}\":`, error);\n return false;\n }\n }\n\n getStats(): { total: number; byCategory: Record<string, number> } {\n const byCategory: Record<string, number> = {};\n for (const cmd of this.commands) {\n const cat = cmd.metadata?.category ?? 'uncategorized';\n byCategory[cat] = (byCategory[cat] || 0) + 1;\n }\n return { total: this.commands.length, byCategory };\n }\n}\n\nexport const registry = new CommandRegistry();\n\nexport function register(def: CommandDefinition): void {\n registry.register(def);\n}\n\nexport function formatExamples(examples: string[]): string {\n if (examples.length === 0) return '';\n return '\\nExamples:\\n' + examples.map(e => ` $ ${e}`).join('\\n');\n}\n"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Templates are stored in docs/reference/templates/ and loaded at runtime.
|
|
4
4
|
*/
|
|
5
5
|
/** Profile Markdown template file names (seeded into `agents/<id>/profile/`). */
|
|
6
|
-
export declare const TEMPLATE_FILES: readonly ["SOUL.md", "IDENTITY.md", "
|
|
6
|
+
export declare const TEMPLATE_FILES: readonly ["SOUL.md", "IDENTITY.md", "TOOLS.md", "AGENTS.md", "HEARTBEAT.md", "MEMORY.md"];
|
|
7
7
|
export type TemplateFile = (typeof TEMPLATE_FILES)[number];
|
|
8
8
|
/** Alias for profile Markdown templates used by seed helpers. */
|
|
9
9
|
export declare const PROFILE_MARKDOWN_TEMPLATE_FILES: readonly TemplateFile[];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { existsSync, readFileSync } from "fs";
|
|
2
1
|
import { dirname, join } from "path";
|
|
2
|
+
import { existsSync, readFileSync } from "fs";
|
|
3
3
|
import { fileURLToPath } from "url";
|
|
4
4
|
//#region src/cli/templates.ts
|
|
5
5
|
/**
|
|
@@ -11,7 +11,6 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
|
11
11
|
const TEMPLATE_FILES = [
|
|
12
12
|
"SOUL.md",
|
|
13
13
|
"IDENTITY.md",
|
|
14
|
-
"USER.md",
|
|
15
14
|
"TOOLS.md",
|
|
16
15
|
"AGENTS.md",
|
|
17
16
|
"HEARTBEAT.md",
|
|
@@ -71,7 +70,7 @@ This folder is home. Treat it that way.
|
|
|
71
70
|
|
|
72
71
|
## Session Startup
|
|
73
72
|
|
|
74
|
-
Use runtime-provided startup context first. Bootstrap files (
|
|
73
|
+
Use runtime-provided startup context first. Bootstrap files (global user profile, SOUL, MEMORY, etc.) are injected by xopc on /new and /reset.
|
|
75
74
|
|
|
76
75
|
Do not manually reread startup files unless the user asks or the provided context is incomplete.
|
|
77
76
|
|
|
@@ -116,15 +115,6 @@ _Fill this in during your first conversation._
|
|
|
116
115
|
- **Creature:**
|
|
117
116
|
- **Vibe:**
|
|
118
117
|
- **Emoji:**
|
|
119
|
-
`,
|
|
120
|
-
"USER.md": `# USER.md - About Your Human
|
|
121
|
-
|
|
122
|
-
_Learn about the person you're helping._
|
|
123
|
-
|
|
124
|
-
- **Name:**
|
|
125
|
-
- **What to call them:**
|
|
126
|
-
- **Timezone:**
|
|
127
|
-
- **Notes:**
|
|
128
118
|
`,
|
|
129
119
|
"TOOLS.md": `# TOOLS.md - Local Notes
|
|
130
120
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","names":[],"sources":["../../../src/cli/templates.ts"],"sourcesContent":["/**\n * Workspace template files for onboarding.\n * Templates are stored in docs/reference/templates/ and loaded at runtime.\n */\n\nimport { readFileSync, existsSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { fileURLToPath } from 'url';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\n/** Profile Markdown template file names (seeded into `agents/<id>/profile/`). */\nexport const TEMPLATE_FILES = [\n 'SOUL.md',\n 'IDENTITY.md',\n '
|
|
1
|
+
{"version":3,"file":"templates.js","names":[],"sources":["../../../src/cli/templates.ts"],"sourcesContent":["/**\n * Workspace template files for onboarding.\n * Templates are stored in docs/reference/templates/ and loaded at runtime.\n */\n\nimport { readFileSync, existsSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { fileURLToPath } from 'url';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\n/** Profile Markdown template file names (seeded into `agents/<id>/profile/`). */\nexport const TEMPLATE_FILES = [\n 'SOUL.md',\n 'IDENTITY.md',\n 'TOOLS.md',\n 'AGENTS.md',\n 'HEARTBEAT.md',\n 'MEMORY.md',\n] as const;\n\nexport type TemplateFile = (typeof TEMPLATE_FILES)[number];\n\n/** Alias for profile Markdown templates used by seed helpers. */\nexport const PROFILE_MARKDOWN_TEMPLATE_FILES: readonly TemplateFile[] = [...TEMPLATE_FILES];\n\n/** Template content cache */\nconst templateCache = new Map<TemplateFile, string>();\n\n/**\n * Get the path to template files.\n * Uses environment or looks in project root.\n */\nfunction getTemplatePath(): string {\n // Use environment to determine path\n const envPath = process.env.XOPC_TEMPLATE_PATH;\n if (envPath && existsSync(envPath)) {\n return envPath;\n }\n\n // Default: look in project root docs/reference/templates\n // Works for both development (src/cli/) and production (dist/cli/)\n const projectRoot = join(__dirname, '../../..');\n const defaultPath = join(projectRoot, 'docs/reference/templates');\n \n if (existsSync(defaultPath)) {\n return defaultPath;\n }\n\n // Fallback: return default (will fail gracefully)\n return defaultPath;\n}\n\n/**\n * Load a template file. Caches results for repeated access.\n */\nexport function loadTemplate(name: TemplateFile): string {\n // Return cached version if available\n if (templateCache.has(name)) {\n return templateCache.get(name)!;\n }\n\n const templatePath = join(getTemplatePath(), name);\n \n try {\n if (existsSync(templatePath)) {\n const content = readFileSync(templatePath, 'utf-8');\n templateCache.set(name, content);\n return content;\n }\n } catch {\n // Fall through to fallback\n }\n\n // Fallback: return minimal default if template is missing\n console.warn(`Warning: Template ${name} not found, using fallback`);\n return getFallbackTemplate(name);\n}\n\n/**\n * Load all templates as a record.\n */\nexport function loadAllTemplates(): Record<TemplateFile, string> {\n const result = {} as Record<TemplateFile, string>;\n for (const name of TEMPLATE_FILES) {\n result[name] = loadTemplate(name);\n }\n return result;\n}\n\n/**\n * Clear the template cache (useful for testing).\n */\nexport function clearTemplateCache(): void {\n templateCache.clear();\n}\n\n/** Minimal fallback templates in case files are missing */\nexport function getFallbackTemplate(name: TemplateFile): string {\n const fallbacks: Record<TemplateFile, string> = {\n 'AGENTS.md': `# AGENTS.md - Your Workspace\n\nThis folder is home. Treat it that way.\n\n## Session Startup\n\nUse runtime-provided startup context first. Bootstrap files (global user profile, SOUL, MEMORY, etc.) are injected by xopc on /new and /reset.\n\nDo not manually reread startup files unless the user asks or the provided context is incomplete.\n\n## Red Lines\n\n- Don't exfiltrate private data\n- Don't run destructive commands without asking\n- When in doubt, ask\n\n## Memory\n\n- **Daily notes:** \\`memory/YYYY-MM-DD.md\\`\n- **Long-term:** profile \\`MEMORY.md\\`\n\nWrite what matters. Text > Brain.\n`,\n 'SOUL.md': `# SOUL.md - Who You Are\n\n_You're not a chatbot. You're becoming someone._\n\n## Core Truths\n\n- Be genuinely helpful, not performatively helpful\n- Have opinions\n- Be resourceful before asking\n- Earn trust through competence\n- Remember you're a guest\n\n## Boundaries\n\n- Private things stay private\n- When in doubt, ask before acting externally\n- Never send half-baked replies\n\nThis file is yours to evolve.\n`,\n 'IDENTITY.md': `# IDENTITY.md - Who Am I?\n\n_Fill this in during your first conversation._\n\n- **Name:**\n- **Creature:**\n- **Vibe:**\n- **Emoji:**\n`,\n 'TOOLS.md': `# TOOLS.md - Local Notes\n\nEnvironment-specific notes:\n\n- SSH hosts\n- API endpoints\n- Device nicknames\n`,\n 'HEARTBEAT.md': `# HEARTBEAT.md - Periodic Checks\n\nEdit this file to define what you check during heartbeat polls.\n\n## Example Checklist\n\n- [ ] Check email for urgent messages\n- [ ] Check calendar for upcoming events\n\n**Remember:** If nothing needs attention, reply \\`HEARTBEAT_OK\\`.\n`,\n 'MEMORY.md': `# MEMORY.md - Long-Term Memory\n\n_Your curated memories._\n\n## People\n\n## Projects\n\n## Preferences\n\n## Learned Lessons\n\n**Only load in main sessions.**\n`,\n };\n \n return fallbacks[name] || `# ${name}\\n\\n(Template content missing)\\n`;\n}\n"],"mappings":";;;;;;;;AAUA,MAAM,YAAY,QADC,cAAc,OAAO,KAAK,IACT,CAAC;;AAGrC,MAAa,iBAAiB;CAC5B;CACA;CACA;CACA;CACA;CACA;CACD;;AAKD,MAAa,kCAA2D,CAAC,GAAG,eAAe;;AAG3F,MAAM,gCAAgB,IAAI,KAA2B;;;;;AAMrD,SAAS,kBAA0B;CAEjC,MAAM,UAAU,QAAQ,IAAI;AAC5B,KAAI,WAAW,WAAW,QAAQ,CAChC,QAAO;CAMT,MAAM,cAAc,KADA,KAAK,WAAW,WACA,EAAE,2BAA2B;AAEjE,KAAI,WAAW,YAAY,CACzB,QAAO;AAIT,QAAO;;;;;AAMT,SAAgB,aAAa,MAA4B;AAEvD,KAAI,cAAc,IAAI,KAAK,CACzB,QAAO,cAAc,IAAI,KAAK;CAGhC,MAAM,eAAe,KAAK,iBAAiB,EAAE,KAAK;AAElD,KAAI;AACF,MAAI,WAAW,aAAa,EAAE;GAC5B,MAAM,UAAU,aAAa,cAAc,QAAQ;AACnD,iBAAc,IAAI,MAAM,QAAQ;AAChC,UAAO;;SAEH;AAKR,SAAQ,KAAK,qBAAqB,KAAK,4BAA4B;AACnE,QAAO,oBAAoB,KAAK;;;;;AAMlC,SAAgB,mBAAiD;CAC/D,MAAM,SAAS,EAAE;AACjB,MAAK,MAAM,QAAQ,eACjB,QAAO,QAAQ,aAAa,KAAK;AAEnC,QAAO;;;;;AAMT,SAAgB,qBAA2B;AACzC,eAAc,OAAO;;;AAIvB,SAAgB,oBAAoB,MAA4B;AAyF9D,QAAO;EAvFL,aAAa;;;;;;;;;;;;;;;;;;;;;;;EAuBb,WAAW;;;;;;;;;;;;;;;;;;;;EAoBX,eAAe;;;;;;;;;EASf,YAAY;;;;;;;;EAQZ,gBAAgB;;;;;;;;;;;EAWhB,aAAa;;;;;;;;;;;;;;EAgBC,CAAC,SAAS,KAAK,KAAK"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { init_paths, resolveConfigPath } from "../../config/paths.js";
|
|
2
1
|
import { createLogger } from "../../utils/logger/index.js";
|
|
3
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
|
+
import { init_paths, resolveConfigPath } from "../../config/paths.js";
|
|
4
4
|
import { loadConfig } from "../../config/loader.js";
|
|
5
5
|
import { resolveGatewayEffectiveHost } from "../../config/gateway-bind.js";
|
|
6
6
|
import "../../config/index.js";
|
|
@@ -4,10 +4,7 @@ export interface InitWorkspaceCoreOptions {
|
|
|
4
4
|
workspacePath: string;
|
|
5
5
|
/** When set with a new config file, overrides schema default port (e.g. Electron). */
|
|
6
6
|
gatewayPort?: number;
|
|
7
|
-
/**
|
|
8
|
-
* When true, sets `agents.defaults.workspace` to `dirname(workspacePath)` (parent of the
|
|
9
|
-
* Markdown root being initialised, e.g. `…/workspace` when `workspacePath` is `…/workspace/main`).
|
|
10
|
-
*/
|
|
7
|
+
/** When true, sets the default agent manifest workspace root to `workspacePath`. */
|
|
11
8
|
persistWorkspacePath?: boolean;
|
|
12
9
|
/** Optional channel plugin validator (CLI/gateway only; Electron omits). */
|
|
13
10
|
assertChannelPlugins?: (cfg: Config) => void | Promise<void>;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ConfigSchema, init_schema } from "../../config/schema.js";
|
|
2
2
|
import { init_loader, saveConfig } from "../../config/loader.js";
|
|
3
3
|
import { ensureStarterAgentsInitialized } from "../../agent/starter-agents.js";
|
|
4
|
-
import { randomBytes } from "node:crypto";
|
|
5
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
6
4
|
import { dirname } from "node:path";
|
|
5
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
6
|
+
import { randomBytes } from "node:crypto";
|
|
7
7
|
//#region src/cli/utils/init-workspace-core.ts
|
|
8
8
|
init_schema();
|
|
9
9
|
init_loader();
|
|
@@ -33,7 +33,7 @@ async function initWorkspaceCore(options) {
|
|
|
33
33
|
const gatewayPortDefaulted = options.gatewayPort ?? 18790;
|
|
34
34
|
const persistWorkspacePath = options.persistWorkspacePath ?? false;
|
|
35
35
|
const { configPath, workspacePath, assertChannelPlugins } = options;
|
|
36
|
-
const
|
|
36
|
+
const persistedWorkspaceRoot = persistWorkspacePath ? workspacePath : void 0;
|
|
37
37
|
mkdirSync(dirname(configPath), { recursive: true });
|
|
38
38
|
const configExisted = existsSync(configPath);
|
|
39
39
|
const workspaceExisted = existsSync(workspacePath);
|
|
@@ -48,15 +48,16 @@ async function initWorkspaceCore(options) {
|
|
|
48
48
|
const workspaceCreated = !workspaceExisted;
|
|
49
49
|
const token = config.gateway?.auth?.mode === "token" && typeof config.gateway?.auth?.token === "string" && config.gateway.auth.token.length > 0 ? config.gateway.auth.token : randomBytes(24).toString("hex");
|
|
50
50
|
const port = configExisted ? config.gateway?.port ?? gatewayPortDefaulted : options.gatewayPort !== void 0 ? gatewayPortDefaulted : config.gateway?.port ?? 18790;
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
...
|
|
54
|
-
|
|
51
|
+
const defaultAgentId = config.agents.default ?? config.agents.list[0]?.id ?? "main";
|
|
52
|
+
const agentsList = persistedWorkspaceRoot === void 0 ? config.agents.list : config.agents.list.map((agent) => agent.id === defaultAgentId ? {
|
|
53
|
+
...agent,
|
|
54
|
+
workspace: { root: persistedWorkspaceRoot }
|
|
55
|
+
} : agent);
|
|
55
56
|
const nextConfig = {
|
|
56
57
|
...config,
|
|
57
58
|
agents: {
|
|
58
59
|
...config.agents,
|
|
59
|
-
|
|
60
|
+
list: agentsList
|
|
60
61
|
},
|
|
61
62
|
gateway: {
|
|
62
63
|
...config.gateway,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-workspace-core.js","names":[],"sources":["../../../../src/cli/utils/init-workspace-core.ts"],"sourcesContent":["import { randomBytes } from 'node:crypto';\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';\nimport { dirname } from 'node:path';\n\nimport type { Config } from '../../config/schema.js';\nimport { ConfigSchema } from '../../config/schema.js';\nimport { saveConfig } from '../../config/loader.js';\nimport { ensureStarterAgentsInitialized } from '../../agent/starter-agents.js';\n\nexport interface InitWorkspaceCoreOptions {\n configPath: string;\n workspacePath: string;\n /** When set with a new config file, overrides schema default port (e.g. Electron). */\n gatewayPort?: number;\n
|
|
1
|
+
{"version":3,"file":"init-workspace-core.js","names":[],"sources":["../../../../src/cli/utils/init-workspace-core.ts"],"sourcesContent":["import { randomBytes } from 'node:crypto';\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';\nimport { dirname } from 'node:path';\n\nimport type { Config } from '../../config/schema.js';\nimport { ConfigSchema } from '../../config/schema.js';\nimport { saveConfig } from '../../config/loader.js';\nimport { ensureStarterAgentsInitialized } from '../../agent/starter-agents.js';\n\nexport interface InitWorkspaceCoreOptions {\n configPath: string;\n workspacePath: string;\n /** When set with a new config file, overrides schema default port (e.g. Electron). */\n gatewayPort?: number;\n /** When true, sets the default agent manifest workspace root to `workspacePath`. */\n persistWorkspacePath?: boolean;\n /** Optional channel plugin validator (CLI/gateway only; Electron omits). */\n assertChannelPlugins?: (cfg: Config) => void | Promise<void>;\n}\n\nexport interface InitWorkspaceResult {\n /** Fully-initialised config (matches disk after any write). */\n config: Config;\n /** Gateway auth token (always present after init). */\n token: string;\n configCreated: boolean;\n workspaceCreated: boolean;\n}\n\nasync function assertChannelPluginsIfNeeded(\n cfg: Config,\n assert?: InitWorkspaceCoreOptions['assertChannelPlugins'],\n): Promise<void> {\n if (assert) await assert(cfg);\n}\n\nasync function serializeConfig(\n cfg: Config,\n assertChannelPlugins?: InitWorkspaceCoreOptions['assertChannelPlugins'],\n): Promise<string> {\n const validated = ConfigSchema.parse(cfg);\n await assertChannelPluginsIfNeeded(validated, assertChannelPlugins);\n return JSON.stringify(validated, null, 2);\n}\n\nasync function tryReadDiskConfig(\n configPath: string,\n assertChannelPlugins?: InitWorkspaceCoreOptions['assertChannelPlugins'],\n): Promise<Config | null> {\n try {\n const raw = readFileSync(configPath, 'utf-8');\n const cfg = ConfigSchema.parse(JSON.parse(raw) as unknown);\n await assertChannelPluginsIfNeeded(cfg, assertChannelPlugins);\n return cfg;\n } catch {\n return null;\n }\n}\n\n/**\n * Workspace + config initialisation without importing bundled channel plugins.\n * Used by Electron main; CLI/gateway should call {@link initWorkspace} instead.\n */\nexport async function initWorkspaceCore(options: InitWorkspaceCoreOptions): Promise<InitWorkspaceResult> {\n const gatewayPortDefaulted = options.gatewayPort ?? 18790;\n const persistWorkspacePath = options.persistWorkspacePath ?? false;\n const { configPath, workspacePath, assertChannelPlugins } = options;\n const persistedWorkspaceRoot = persistWorkspacePath ? workspacePath : undefined;\n\n mkdirSync(dirname(configPath), { recursive: true });\n\n const configExisted = existsSync(configPath);\n const workspaceExisted = existsSync(workspacePath);\n\n let config: Config;\n if (configExisted) {\n config = (await tryReadDiskConfig(configPath, assertChannelPlugins)) ?? ConfigSchema.parse(undefined);\n } else {\n config = ConfigSchema.parse(undefined);\n await assertChannelPluginsIfNeeded(config, assertChannelPlugins);\n }\n\n mkdirSync(workspacePath, { recursive: true });\n\n const configCreated = !configExisted;\n const workspaceCreated = !workspaceExisted;\n\n const hadToken =\n config.gateway?.auth?.mode === 'token' &&\n typeof config.gateway?.auth?.token === 'string' &&\n config.gateway.auth.token.length > 0;\n\n const token = hadToken ? (config.gateway!.auth!.token as string) : randomBytes(24).toString('hex');\n\n const port = configExisted\n ? (config.gateway?.port ?? gatewayPortDefaulted)\n : options.gatewayPort !== undefined\n ? gatewayPortDefaulted\n : (config.gateway?.port ?? 18790);\n\n const defaultAgentId = config.agents.default ?? config.agents.list[0]?.id ?? 'main';\n const agentsList =\n persistedWorkspaceRoot === undefined\n ? config.agents.list\n : config.agents.list.map((agent) =>\n agent.id === defaultAgentId ? { ...agent, workspace: { root: persistedWorkspaceRoot } } : agent,\n );\n\n const nextConfig: Config = {\n ...config,\n agents: {\n ...config.agents,\n list: agentsList,\n },\n gateway: {\n ...config.gateway,\n port,\n auth: {\n ...config.gateway?.auth,\n mode: 'token' as const,\n token,\n },\n },\n };\n\n const starterResult = ensureStarterAgentsInitialized(ConfigSchema.parse(nextConfig));\n const nextFinal = ConfigSchema.parse(starterResult.config);\n await assertChannelPluginsIfNeeded(nextFinal, assertChannelPlugins);\n\n let needsWrite = configCreated || starterResult.changed;\n if (!needsWrite) {\n const disk = await tryReadDiskConfig(configPath, assertChannelPlugins);\n if (!disk) {\n needsWrite = true;\n } else {\n needsWrite =\n (await serializeConfig(disk, assertChannelPlugins)) !==\n (await serializeConfig(nextFinal, assertChannelPlugins));\n }\n }\n\n if (needsWrite) {\n if (assertChannelPlugins) {\n await saveConfig(nextFinal, configPath);\n } else {\n writeFileSync(configPath, `${JSON.stringify(nextFinal, null, 2)}\\n`, 'utf8');\n }\n }\n\n return {\n config: nextFinal,\n token,\n configCreated,\n workspaceCreated,\n };\n}\n"],"mappings":";;;;;;;aAKsD;aACF;AAuBpD,eAAe,6BACb,KACA,QACe;AACf,KAAI,OAAQ,OAAM,OAAO,IAAI;;AAG/B,eAAe,gBACb,KACA,sBACiB;CACjB,MAAM,YAAY,aAAa,MAAM,IAAI;AACzC,OAAM,6BAA6B,WAAW,qBAAqB;AACnE,QAAO,KAAK,UAAU,WAAW,MAAM,EAAE;;AAG3C,eAAe,kBACb,YACA,sBACwB;AACxB,KAAI;EACF,MAAM,MAAM,aAAa,YAAY,QAAQ;EAC7C,MAAM,MAAM,aAAa,MAAM,KAAK,MAAM,IAAI,CAAY;AAC1D,QAAM,6BAA6B,KAAK,qBAAqB;AAC7D,SAAO;SACD;AACN,SAAO;;;;;;;AAQX,eAAsB,kBAAkB,SAAiE;CACvG,MAAM,uBAAuB,QAAQ,eAAe;CACpD,MAAM,uBAAuB,QAAQ,wBAAwB;CAC7D,MAAM,EAAE,YAAY,eAAe,yBAAyB;CAC5D,MAAM,yBAAyB,uBAAuB,gBAAgB,KAAA;AAEtE,WAAU,QAAQ,WAAW,EAAE,EAAE,WAAW,MAAM,CAAC;CAEnD,MAAM,gBAAgB,WAAW,WAAW;CAC5C,MAAM,mBAAmB,WAAW,cAAc;CAElD,IAAI;AACJ,KAAI,cACF,UAAU,MAAM,kBAAkB,YAAY,qBAAqB,IAAK,aAAa,MAAM,KAAA,EAAU;MAChG;AACL,WAAS,aAAa,MAAM,KAAA,EAAU;AACtC,QAAM,6BAA6B,QAAQ,qBAAqB;;AAGlE,WAAU,eAAe,EAAE,WAAW,MAAM,CAAC;CAE7C,MAAM,gBAAgB,CAAC;CACvB,MAAM,mBAAmB,CAAC;CAO1B,MAAM,QAJJ,OAAO,SAAS,MAAM,SAAS,WAC/B,OAAO,OAAO,SAAS,MAAM,UAAU,YACvC,OAAO,QAAQ,KAAK,MAAM,SAAS,IAEX,OAAO,QAAS,KAAM,QAAmB,YAAY,GAAG,CAAC,SAAS,MAAM;CAElG,MAAM,OAAO,gBACR,OAAO,SAAS,QAAQ,uBACzB,QAAQ,gBAAgB,KAAA,IACtB,uBACC,OAAO,SAAS,QAAQ;CAE/B,MAAM,iBAAiB,OAAO,OAAO,WAAW,OAAO,OAAO,KAAK,IAAI,MAAM;CAC7E,MAAM,aACJ,2BAA2B,KAAA,IACvB,OAAO,OAAO,OACd,OAAO,OAAO,KAAK,KAAK,UACtB,MAAM,OAAO,iBAAiB;EAAE,GAAG;EAAO,WAAW,EAAE,MAAM,wBAAwB;EAAE,GAAG,MAC3F;CAEP,MAAM,aAAqB;EACzB,GAAG;EACH,QAAQ;GACN,GAAG,OAAO;GACV,MAAM;GACP;EACD,SAAS;GACP,GAAG,OAAO;GACV;GACA,MAAM;IACJ,GAAG,OAAO,SAAS;IACnB,MAAM;IACN;IACD;GACF;EACF;CAED,MAAM,gBAAgB,+BAA+B,aAAa,MAAM,WAAW,CAAC;CACpF,MAAM,YAAY,aAAa,MAAM,cAAc,OAAO;AAC1D,OAAM,6BAA6B,WAAW,qBAAqB;CAEnE,IAAI,aAAa,iBAAiB,cAAc;AAChD,KAAI,CAAC,YAAY;EACf,MAAM,OAAO,MAAM,kBAAkB,YAAY,qBAAqB;AACtE,MAAI,CAAC,KACH,cAAa;MAEb,cACG,MAAM,gBAAgB,MAAM,qBAAqB,KACjD,MAAM,gBAAgB,WAAW,qBAAqB;;AAI7D,KAAI,WACF,KAAI,qBACF,OAAM,WAAW,WAAW,WAAW;KAEvC,eAAc,YAAY,GAAG,KAAK,UAAU,WAAW,MAAM,EAAE,CAAC,KAAK,OAAO;AAIhF,QAAO;EACL,QAAQ;EACR;EACA;EACA;EACD"}
|
|
@@ -9,7 +9,6 @@ export declare function findAgentEntryIndex(list: AgentEntry[], agentId: string)
|
|
|
9
9
|
export declare function applyAgentConfig(cfg: Config, params: {
|
|
10
10
|
agentId: string;
|
|
11
11
|
workspace?: string;
|
|
12
|
-
agentDir?: string;
|
|
13
12
|
model?: string;
|
|
14
13
|
models?: AgentEntry['models'];
|
|
15
14
|
skills?: string[];
|
|
@@ -14,29 +14,78 @@ function applyAgentConfig(cfg, params) {
|
|
|
14
14
|
const agentId = normalizeAgentId(params.agentId);
|
|
15
15
|
const list = listAgentEntries(cfg);
|
|
16
16
|
const index = findAgentEntryIndex(list, agentId);
|
|
17
|
+
const nextTools = params.tools;
|
|
17
18
|
const base = index >= 0 ? list[index] : {
|
|
18
19
|
id: agentId,
|
|
19
|
-
enabled: true
|
|
20
|
+
enabled: true,
|
|
21
|
+
identity: {
|
|
22
|
+
name: agentId,
|
|
23
|
+
role: "Agent",
|
|
24
|
+
language: "en",
|
|
25
|
+
tone: "direct"
|
|
26
|
+
},
|
|
27
|
+
responsibilities: { primary: ["Help the user complete tasks"] },
|
|
28
|
+
workspace: { root: `~/.xopc/workspace/${agentId}` },
|
|
29
|
+
tools: { builtin: {} },
|
|
30
|
+
skills: { mode: "all" },
|
|
31
|
+
memory: {
|
|
32
|
+
mode: "confirmWrite",
|
|
33
|
+
sources: ["session", "curated"],
|
|
34
|
+
writePolicy: { curated: "confirm" }
|
|
35
|
+
},
|
|
36
|
+
workflows: {},
|
|
37
|
+
boundaries: {
|
|
38
|
+
requiresConfirmation: [],
|
|
39
|
+
forbidden: [],
|
|
40
|
+
escalation: []
|
|
41
|
+
}
|
|
20
42
|
};
|
|
21
43
|
const nextEntry = {
|
|
22
44
|
...base,
|
|
23
45
|
enabled: base.enabled ?? true,
|
|
24
|
-
...params.workspace ? { workspace: params.workspace } : {},
|
|
25
|
-
...params.agentDir ? { agentDir: params.agentDir } : {},
|
|
46
|
+
...params.workspace ? { workspace: { root: params.workspace } } : {},
|
|
26
47
|
...params.models ? { models: params.models } : {},
|
|
27
48
|
...params.model ? { models: {
|
|
28
|
-
...base.models,
|
|
29
|
-
|
|
49
|
+
...base.models ?? {},
|
|
50
|
+
defaultRole: "deep",
|
|
51
|
+
roles: {
|
|
52
|
+
...base.models?.roles ?? {},
|
|
53
|
+
deep: { model: params.model }
|
|
54
|
+
}
|
|
55
|
+
} } : {},
|
|
56
|
+
...params.skills ? { skills: {
|
|
57
|
+
mode: "allowlist",
|
|
58
|
+
allow: params.skills
|
|
30
59
|
} } : {},
|
|
31
|
-
...
|
|
32
|
-
...params.tools ? { tools: params.tools } : {}
|
|
60
|
+
...nextTools ? { tools: nextTools } : {}
|
|
33
61
|
};
|
|
34
62
|
const nextList = [...list];
|
|
35
63
|
if (index >= 0) nextList[index] = nextEntry;
|
|
36
64
|
else {
|
|
37
65
|
if (nextList.length === 0 && agentId !== normalizeAgentId(resolveDefaultAgentId(cfg))) nextList.push({
|
|
38
66
|
id: resolveDefaultAgentId(cfg),
|
|
39
|
-
enabled: true
|
|
67
|
+
enabled: true,
|
|
68
|
+
identity: {
|
|
69
|
+
name: resolveDefaultAgentId(cfg),
|
|
70
|
+
role: "Agent",
|
|
71
|
+
language: "en",
|
|
72
|
+
tone: "direct"
|
|
73
|
+
},
|
|
74
|
+
responsibilities: { primary: ["Help the user complete tasks"] },
|
|
75
|
+
workspace: { root: `~/.xopc/workspace/${resolveDefaultAgentId(cfg)}` },
|
|
76
|
+
tools: { builtin: {} },
|
|
77
|
+
skills: { mode: "all" },
|
|
78
|
+
memory: {
|
|
79
|
+
mode: "confirmWrite",
|
|
80
|
+
sources: ["session", "curated"],
|
|
81
|
+
writePolicy: { curated: "confirm" }
|
|
82
|
+
},
|
|
83
|
+
workflows: {},
|
|
84
|
+
boundaries: {
|
|
85
|
+
requiresConfirmation: [],
|
|
86
|
+
forbidden: [],
|
|
87
|
+
escalation: []
|
|
88
|
+
}
|
|
40
89
|
});
|
|
41
90
|
nextList.push(nextEntry);
|
|
42
91
|
}
|
|
@@ -51,18 +100,15 @@ function applyAgentConfig(cfg, params) {
|
|
|
51
100
|
function pruneAgentConfig(cfg, agentId) {
|
|
52
101
|
const id = normalizeAgentId(agentId);
|
|
53
102
|
const nextAgentsList = listAgentEntries(cfg).filter((e) => normalizeAgentId(e.id) !== id);
|
|
54
|
-
const nextAgents = nextAgentsList.length > 0 ? nextAgentsList :
|
|
103
|
+
const nextAgents = nextAgentsList.length > 0 ? nextAgentsList : [];
|
|
55
104
|
const bindings = cfg.bindings ?? [];
|
|
56
105
|
const filteredBindings = bindings.filter((b) => normalizeAgentId(b.agentId) !== id);
|
|
57
106
|
return {
|
|
58
107
|
config: {
|
|
59
108
|
...cfg,
|
|
60
|
-
agents:
|
|
109
|
+
agents: {
|
|
61
110
|
...cfg.agents,
|
|
62
111
|
list: nextAgents
|
|
63
|
-
} : {
|
|
64
|
-
...cfg.agents,
|
|
65
|
-
list: void 0
|
|
66
112
|
},
|
|
67
113
|
bindings: filteredBindings
|
|
68
114
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.config.js","names":[],"sources":["../../../src/commands/agents.config.ts"],"sourcesContent":["/**\n * Mutate `agents.list` / bindings when adding or removing agents.\n */\n\nimport { rm } from 'node:fs/promises';\nimport { existsSync } from 'node:fs';\n\nimport type { Config } from '../config/schema.js';\nimport {\n listAgentEntries,\n normalizeAgentId,\n resolveAgentHomeDir,\n resolveAgentWorkspaceDir,\n resolveDefaultAgentId,\n DEFAULT_AGENT_ID,\n} from '../agent/agent-scope.js';\n\ntype AgentEntry = NonNullable<NonNullable<Config['agents']>['list']>[number];\n\nexport { listAgentEntries };\n\nexport function findAgentEntryIndex(list: AgentEntry[], agentId: string): number {\n const id = normalizeAgentId(agentId);\n return list.findIndex((e) => normalizeAgentId(e.id) === id);\n}\n\nexport function applyAgentConfig(\n cfg: Config,\n params: {\n agentId: string;\n workspace?: string;\n
|
|
1
|
+
{"version":3,"file":"agents.config.js","names":[],"sources":["../../../src/commands/agents.config.ts"],"sourcesContent":["/**\n * Mutate `agents.list` / bindings when adding or removing agents.\n */\n\nimport { rm } from 'node:fs/promises';\nimport { existsSync } from 'node:fs';\n\nimport type { Config } from '../config/schema.js';\nimport {\n listAgentEntries,\n normalizeAgentId,\n resolveAgentHomeDir,\n resolveAgentWorkspaceDir,\n resolveDefaultAgentId,\n DEFAULT_AGENT_ID,\n} from '../agent/agent-scope.js';\n\ntype AgentEntry = NonNullable<NonNullable<Config['agents']>['list']>[number];\n\nexport { listAgentEntries };\n\nexport function findAgentEntryIndex(list: AgentEntry[], agentId: string): number {\n const id = normalizeAgentId(agentId);\n return list.findIndex((e) => normalizeAgentId(e.id) === id);\n}\n\nexport function applyAgentConfig(\n cfg: Config,\n params: {\n agentId: string;\n workspace?: string;\n model?: string;\n models?: AgentEntry['models'];\n skills?: string[];\n tools?: AgentEntry['tools'];\n },\n): Config {\n const agentId = normalizeAgentId(params.agentId);\n const list = listAgentEntries(cfg);\n const index = findAgentEntryIndex(list, agentId);\n const nextTools = params.tools;\n const base = index >= 0 ? list[index] : {\n id: agentId,\n enabled: true as const,\n identity: { name: agentId, role: 'Agent', language: 'en', tone: 'direct' },\n responsibilities: { primary: ['Help the user complete tasks'] },\n workspace: { root: `~/.xopc/workspace/${agentId}` },\n tools: { builtin: {} },\n skills: { mode: 'all' as const },\n memory: { mode: 'confirmWrite' as const, sources: ['session' as const, 'curated' as const], writePolicy: { curated: 'confirm' as const } },\n workflows: {},\n boundaries: { requiresConfirmation: [], forbidden: [], escalation: [] },\n };\n const nextEntry: AgentEntry = {\n ...base,\n enabled: base.enabled ?? true,\n ...(params.workspace ? { workspace: { root: params.workspace } } : {}),\n ...(params.models ? { models: params.models } : {}),\n ...(params.model\n ? {\n models: {\n ...(base.models ?? {}),\n defaultRole: 'deep',\n roles: { ...(base.models?.roles ?? {}), deep: { model: params.model } },\n },\n }\n : {}),\n ...(params.skills ? { skills: { mode: 'allowlist' as const, allow: params.skills } } : {}),\n ...(nextTools ? { tools: nextTools } : {}),\n };\n const nextList = [...list];\n if (index >= 0) {\n nextList[index] = nextEntry;\n } else {\n if (nextList.length === 0 && agentId !== normalizeAgentId(resolveDefaultAgentId(cfg))) {\n nextList.push({\n id: resolveDefaultAgentId(cfg),\n enabled: true,\n identity: { name: resolveDefaultAgentId(cfg), role: 'Agent', language: 'en', tone: 'direct' },\n responsibilities: { primary: ['Help the user complete tasks'] },\n workspace: { root: `~/.xopc/workspace/${resolveDefaultAgentId(cfg)}` },\n tools: { builtin: {} },\n skills: { mode: 'all' },\n memory: { mode: 'confirmWrite', sources: ['session', 'curated'], writePolicy: { curated: 'confirm' } },\n workflows: {},\n boundaries: { requiresConfirmation: [], forbidden: [], escalation: [] },\n });\n }\n nextList.push(nextEntry);\n }\n return {\n ...cfg,\n agents: {\n ...cfg.agents,\n list: nextList,\n },\n };\n}\n\nexport function pruneAgentConfig(\n cfg: Config,\n agentId: string,\n): { config: Config; removedBindings: number } {\n const id = normalizeAgentId(agentId);\n const agents = listAgentEntries(cfg);\n const nextAgentsList = agents.filter((e) => normalizeAgentId(e.id) !== id);\n const nextAgents = nextAgentsList.length > 0 ? nextAgentsList : [];\n\n const bindings = cfg.bindings ?? [];\n const filteredBindings = bindings.filter((b) => normalizeAgentId(b.agentId) !== id);\n\n return {\n config: {\n ...cfg,\n agents: { ...cfg.agents, list: nextAgents },\n bindings: filteredBindings,\n },\n removedBindings: bindings.length - filteredBindings.length,\n };\n}\n\nexport async function removeAgentDirsFromDisk(cfg: Config, id: string): Promise<void> {\n const aid = normalizeAgentId(id);\n if (aid === DEFAULT_AGENT_ID) {\n throw new Error('Refusing to delete the main agent home on disk from this command.');\n }\n const home = resolveAgentHomeDir(cfg, aid);\n const ws = resolveAgentWorkspaceDir(cfg, aid);\n if (existsSync(home)) {\n await rm(home, { recursive: true, force: true });\n }\n if (existsSync(ws) && ws !== home) {\n await rm(ws, { recursive: true, force: true });\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,38 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
* Effective agent profile: merges `agents.defaults` with `agents.list` entry.
|
|
3
|
-
* Subagent session keys fall back to the configured default agent id for profile lookup.
|
|
4
|
-
*/
|
|
1
|
+
import { type EffectiveAgentManifest } from '../agent-manifest/index.js';
|
|
5
2
|
import type { ThinkLevel, ReasoningLevel, VerboseLevel } from '../agent/transcript/thinking-types.js';
|
|
6
3
|
import type { Config } from './schema.js';
|
|
7
|
-
import type { AgentModelConfig } from './schema.js';
|
|
8
4
|
export { resolveAgentWorkspaceDir } from '../agent/agent-scope.js';
|
|
9
|
-
export type { AgentModelConfig };
|
|
10
5
|
export interface EffectiveAgentTools {
|
|
11
|
-
|
|
12
|
-
disable: Set<string>;
|
|
6
|
+
denied: Set<string>;
|
|
13
7
|
}
|
|
14
8
|
export interface EffectiveAgentProfile {
|
|
15
9
|
agentId: string;
|
|
16
|
-
|
|
10
|
+
manifest: EffectiveAgentManifest;
|
|
17
11
|
resolvedWorkspacePath: string;
|
|
18
|
-
/** Primary model ref (provider/model); may be empty → runtime default. */
|
|
19
12
|
primaryModelRef: string | undefined;
|
|
20
13
|
fallbacks: string[];
|
|
21
14
|
thinkingDefault?: ThinkLevel;
|
|
22
15
|
reasoningDefault?: ReasoningLevel;
|
|
23
16
|
verboseDefault?: VerboseLevel;
|
|
24
17
|
systemPromptOverride?: string;
|
|
25
|
-
/** Skill names visible in `<available_skills>`; undefined means all enabled skills, empty means none. */
|
|
26
18
|
skillsAllowlist?: string[];
|
|
27
19
|
tools: EffectiveAgentTools;
|
|
28
20
|
params: Record<string, unknown>;
|
|
29
21
|
}
|
|
30
|
-
/**
|
|
31
|
-
* Agent id used for config lookup from a session key (subagent keys → default agent).
|
|
32
|
-
*/
|
|
33
22
|
export declare function extractProfileAgentId(sessionKey: string | undefined | null, config: Config): string;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
*/
|
|
23
|
+
export declare function resolveEffectiveAgentManifestForAgent(config: Config, agentId: string): EffectiveAgentManifest;
|
|
24
|
+
export declare function resolveEffectiveAgentManifestForSession(config: Config, sessionKey: string | undefined | null): EffectiveAgentManifest;
|
|
37
25
|
export declare function resolveEffectiveAgentProfile(config: Config, agentId: string): EffectiveAgentProfile;
|
|
38
26
|
export declare function resolveEffectiveAgentProfileForSession(config: Config, sessionKey: string | undefined | null): EffectiveAgentProfile;
|
|
@@ -1,47 +1,16 @@
|
|
|
1
|
-
import { init_agent_scope, resolveAgentWorkspaceDir } from "../agent/agent-scope.js";
|
|
2
|
-
import {
|
|
1
|
+
import { init_agent_scope, normalizeAgentId, resolveAgentWorkspaceDir } from "../agent/agent-scope.js";
|
|
2
|
+
import { resolveEffectiveAgentManifest } from "../agent-manifest/resolver.js";
|
|
3
|
+
import "../agent-manifest/index.js";
|
|
3
4
|
import { init_session_key, parseSessionKey } from "../routing/session-key.js";
|
|
4
5
|
import { agentExists, getDefaultAgentId, init_resolve_route } from "../routing/resolve-route.js";
|
|
5
6
|
//#region src/config/agent-profile.ts
|
|
6
|
-
init_schema();
|
|
7
7
|
init_agent_scope();
|
|
8
8
|
init_resolve_route();
|
|
9
9
|
init_session_key();
|
|
10
|
-
function
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
return {
|
|
14
|
-
primary: override.primary ?? base.primary,
|
|
15
|
-
fallbacks: override.fallbacks ?? base.fallbacks
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
function primaryAndFallbacksFromModelConfig(raw) {
|
|
19
|
-
const primary = raw?.primary?.trim();
|
|
20
|
-
const fallbacks = Array.isArray(raw?.fallbacks) ? raw.fallbacks.map((s) => s.trim()).filter(Boolean) : [];
|
|
21
|
-
return {
|
|
22
|
-
primary: primary || void 0,
|
|
23
|
-
fallbacks
|
|
24
|
-
};
|
|
10
|
+
function findAgentManifest(config, agentId) {
|
|
11
|
+
const id = normalizeAgentId(agentId);
|
|
12
|
+
return config.agents.list.find((agent) => agent.enabled !== false && normalizeAgentId(agent.id) === id);
|
|
25
13
|
}
|
|
26
|
-
function mergeDisableLists(a, b) {
|
|
27
|
-
const out = /* @__PURE__ */ new Set();
|
|
28
|
-
for (const x of a ?? []) {
|
|
29
|
-
const s = String(x).trim();
|
|
30
|
-
if (s) out.add(s);
|
|
31
|
-
}
|
|
32
|
-
for (const x of b ?? []) {
|
|
33
|
-
const s = String(x).trim();
|
|
34
|
-
if (s) out.add(s);
|
|
35
|
-
}
|
|
36
|
-
return out;
|
|
37
|
-
}
|
|
38
|
-
function resolveSkillsAllowlist(defaultsSkills, entrySkills) {
|
|
39
|
-
if (entrySkills !== void 0) return [...entrySkills];
|
|
40
|
-
if (defaultsSkills !== void 0) return [...defaultsSkills];
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Agent id used for config lookup from a session key (subagent keys → default agent).
|
|
44
|
-
*/
|
|
45
14
|
function extractProfileAgentId(sessionKey, config) {
|
|
46
15
|
const parsed = parseSessionKey(sessionKey ?? "");
|
|
47
16
|
if (!parsed) return getDefaultAgentId(config);
|
|
@@ -50,40 +19,39 @@ function extractProfileAgentId(sessionKey, config) {
|
|
|
50
19
|
if (!agentExists(aid, config)) return getDefaultAgentId(config);
|
|
51
20
|
return aid.toLowerCase();
|
|
52
21
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
22
|
+
function resolveEffectiveAgentManifestForAgent(config, agentId) {
|
|
23
|
+
const agent = findAgentManifest(config, agentId) ?? findAgentManifest(config, getDefaultAgentId(config));
|
|
24
|
+
if (!agent) throw new Error(`No enabled agent manifest found for "${agentId}"`);
|
|
25
|
+
return resolveEffectiveAgentManifest({
|
|
26
|
+
agent,
|
|
27
|
+
presets: config.agents.capabilityPresets,
|
|
28
|
+
defaultPresetId: config.agents.defaultPreset
|
|
29
|
+
}).manifest;
|
|
30
|
+
}
|
|
31
|
+
function resolveEffectiveAgentManifestForSession(config, sessionKey) {
|
|
32
|
+
return resolveEffectiveAgentManifestForAgent(config, extractProfileAgentId(sessionKey, config));
|
|
33
|
+
}
|
|
56
34
|
function resolveEffectiveAgentProfile(config, agentId) {
|
|
57
|
-
const
|
|
58
|
-
const
|
|
59
|
-
const
|
|
60
|
-
const
|
|
61
|
-
const { primary: primaryFromMerged, fallbacks: fallbacksFromMerged } = primaryAndFallbacksFromModelConfig(mergeModelConfig(defaults?.models?.chat, entry?.models?.chat));
|
|
62
|
-
const globalDefault = getAgentDefaultModelRef(config);
|
|
63
|
-
const primaryModelRef = primaryFromMerged?.trim() || globalDefault;
|
|
64
|
-
const disable = mergeDisableLists(defaults?.tools?.disable, entry?.tools?.disable);
|
|
65
|
-
const params = {
|
|
66
|
-
...defaults?.params,
|
|
67
|
-
...entry?.params
|
|
68
|
-
};
|
|
35
|
+
const manifest = resolveEffectiveAgentManifestForAgent(config, agentId);
|
|
36
|
+
const defaultModel = manifest.models.roles[manifest.models.defaultRole]?.model;
|
|
37
|
+
const deniedTools = Object.entries(manifest.tools.builtin).filter(([, policy]) => policy.mode === "deny").map(([name]) => name);
|
|
38
|
+
const skillsAllowlist = manifest.skills.mode === "allowlist" ? [...manifest.skills.allow ?? []] : void 0;
|
|
69
39
|
return {
|
|
70
|
-
agentId:
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
tools: { disable },
|
|
80
|
-
params
|
|
40
|
+
agentId: manifest.id,
|
|
41
|
+
manifest,
|
|
42
|
+
resolvedWorkspacePath: resolveAgentWorkspaceDir(config, manifest.id),
|
|
43
|
+
primaryModelRef: defaultModel?.trim() || void 0,
|
|
44
|
+
fallbacks: [],
|
|
45
|
+
systemPromptOverride: manifest.prompt?.customInstructions,
|
|
46
|
+
skillsAllowlist,
|
|
47
|
+
tools: { denied: new Set(deniedTools) },
|
|
48
|
+
params: {}
|
|
81
49
|
};
|
|
82
50
|
}
|
|
83
51
|
function resolveEffectiveAgentProfileForSession(config, sessionKey) {
|
|
84
52
|
return resolveEffectiveAgentProfile(config, extractProfileAgentId(sessionKey, config));
|
|
85
53
|
}
|
|
86
54
|
//#endregion
|
|
87
|
-
export { extractProfileAgentId, resolveAgentWorkspaceDir, resolveEffectiveAgentProfile, resolveEffectiveAgentProfileForSession };
|
|
55
|
+
export { extractProfileAgentId, resolveAgentWorkspaceDir, resolveEffectiveAgentManifestForAgent, resolveEffectiveAgentManifestForSession, resolveEffectiveAgentProfile, resolveEffectiveAgentProfileForSession };
|
|
88
56
|
|
|
89
57
|
//# sourceMappingURL=agent-profile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-profile.js","names":[],"sources":["../../../src/config/agent-profile.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"agent-profile.js","names":[],"sources":["../../../src/config/agent-profile.ts"],"sourcesContent":["import { resolveEffectiveAgentManifest, type EffectiveAgentManifest } from '../agent-manifest/index.js';\nimport { normalizeAgentId, resolveAgentWorkspaceDir } from '../agent/agent-scope.js';\nimport type { ThinkLevel, ReasoningLevel, VerboseLevel } from '../agent/transcript/thinking-types.js';\nimport { agentExists, getDefaultAgentId } from '../routing/resolve-route.js';\nimport { parseSessionKey } from '../routing/session-key.js';\nimport type { Config } from './schema.js';\n\nexport { resolveAgentWorkspaceDir } from '../agent/agent-scope.js';\n\nexport interface EffectiveAgentTools {\n denied: Set<string>;\n}\n\nexport interface EffectiveAgentProfile {\n agentId: string;\n manifest: EffectiveAgentManifest;\n resolvedWorkspacePath: string;\n primaryModelRef: string | undefined;\n fallbacks: string[];\n thinkingDefault?: ThinkLevel;\n reasoningDefault?: ReasoningLevel;\n verboseDefault?: VerboseLevel;\n systemPromptOverride?: string;\n skillsAllowlist?: string[];\n tools: EffectiveAgentTools;\n params: Record<string, unknown>;\n}\n\nfunction findAgentManifest(config: Config, agentId: string) {\n const id = normalizeAgentId(agentId);\n return config.agents.list.find((agent) => agent.enabled !== false && normalizeAgentId(agent.id) === id);\n}\n\nexport function extractProfileAgentId(sessionKey: string | undefined | null, config: Config): string {\n const parsed = parseSessionKey(sessionKey ?? '');\n if (!parsed) {\n return getDefaultAgentId(config);\n }\n const aid = parsed.agentId;\n if (aid === 'subagent' || aid.startsWith('subagent:')) {\n return getDefaultAgentId(config);\n }\n if (!agentExists(aid, config)) {\n return getDefaultAgentId(config);\n }\n return aid.toLowerCase();\n}\n\nexport function resolveEffectiveAgentManifestForAgent(config: Config, agentId: string): EffectiveAgentManifest {\n const agent = findAgentManifest(config, agentId) ?? findAgentManifest(config, getDefaultAgentId(config));\n if (!agent) {\n throw new Error(`No enabled agent manifest found for \"${agentId}\"`);\n }\n return resolveEffectiveAgentManifest({\n agent,\n presets: config.agents.capabilityPresets,\n defaultPresetId: config.agents.defaultPreset,\n }).manifest;\n}\n\nexport function resolveEffectiveAgentManifestForSession(\n config: Config,\n sessionKey: string | undefined | null,\n): EffectiveAgentManifest {\n return resolveEffectiveAgentManifestForAgent(config, extractProfileAgentId(sessionKey, config));\n}\n\nexport function resolveEffectiveAgentProfile(config: Config, agentId: string): EffectiveAgentProfile {\n const manifest = resolveEffectiveAgentManifestForAgent(config, agentId);\n const defaultModel = manifest.models.roles[manifest.models.defaultRole]?.model;\n const deniedTools = Object.entries(manifest.tools.builtin)\n .filter(([, policy]) => policy.mode === 'deny')\n .map(([name]) => name);\n const skillsAllowlist = manifest.skills.mode === 'allowlist' ? [...(manifest.skills.allow ?? [])] : undefined;\n\n return {\n agentId: manifest.id,\n manifest,\n resolvedWorkspacePath: resolveAgentWorkspaceDir(config, manifest.id),\n primaryModelRef: defaultModel?.trim() || undefined,\n fallbacks: [],\n systemPromptOverride: manifest.prompt?.customInstructions,\n skillsAllowlist,\n tools: { denied: new Set(deniedTools) },\n params: {},\n };\n}\n\nexport function resolveEffectiveAgentProfileForSession(\n config: Config,\n sessionKey: string | undefined | null,\n): EffectiveAgentProfile {\n return resolveEffectiveAgentProfile(config, extractProfileAgentId(sessionKey, config));\n}\n"],"mappings":";;;;;;kBACqF;oBAER;kBACjB;AAwB5D,SAAS,kBAAkB,QAAgB,SAAiB;CAC1D,MAAM,KAAK,iBAAiB,QAAQ;AACpC,QAAO,OAAO,OAAO,KAAK,MAAM,UAAU,MAAM,YAAY,SAAS,iBAAiB,MAAM,GAAG,KAAK,GAAG;;AAGzG,SAAgB,sBAAsB,YAAuC,QAAwB;CACnG,MAAM,SAAS,gBAAgB,cAAc,GAAG;AAChD,KAAI,CAAC,OACH,QAAO,kBAAkB,OAAO;CAElC,MAAM,MAAM,OAAO;AACnB,KAAI,QAAQ,cAAc,IAAI,WAAW,YAAY,CACnD,QAAO,kBAAkB,OAAO;AAElC,KAAI,CAAC,YAAY,KAAK,OAAO,CAC3B,QAAO,kBAAkB,OAAO;AAElC,QAAO,IAAI,aAAa;;AAG1B,SAAgB,sCAAsC,QAAgB,SAAyC;CAC7G,MAAM,QAAQ,kBAAkB,QAAQ,QAAQ,IAAI,kBAAkB,QAAQ,kBAAkB,OAAO,CAAC;AACxG,KAAI,CAAC,MACH,OAAM,IAAI,MAAM,wCAAwC,QAAQ,GAAG;AAErE,QAAO,8BAA8B;EACnC;EACA,SAAS,OAAO,OAAO;EACvB,iBAAiB,OAAO,OAAO;EAChC,CAAC,CAAC;;AAGL,SAAgB,wCACd,QACA,YACwB;AACxB,QAAO,sCAAsC,QAAQ,sBAAsB,YAAY,OAAO,CAAC;;AAGjG,SAAgB,6BAA6B,QAAgB,SAAwC;CACnG,MAAM,WAAW,sCAAsC,QAAQ,QAAQ;CACvE,MAAM,eAAe,SAAS,OAAO,MAAM,SAAS,OAAO,cAAc;CACzE,MAAM,cAAc,OAAO,QAAQ,SAAS,MAAM,QAAQ,CACvD,QAAQ,GAAG,YAAY,OAAO,SAAS,OAAO,CAC9C,KAAK,CAAC,UAAU,KAAK;CACxB,MAAM,kBAAkB,SAAS,OAAO,SAAS,cAAc,CAAC,GAAI,SAAS,OAAO,SAAS,EAAE,CAAE,GAAG,KAAA;AAEpG,QAAO;EACL,SAAS,SAAS;EAClB;EACA,uBAAuB,yBAAyB,QAAQ,SAAS,GAAG;EACpE,iBAAiB,cAAc,MAAM,IAAI,KAAA;EACzC,WAAW,EAAE;EACb,sBAAsB,SAAS,QAAQ;EACvC;EACA,OAAO,EAAE,QAAQ,IAAI,IAAI,YAAY,EAAE;EACvC,QAAQ,EAAE;EACX;;AAGH,SAAgB,uCACd,QACA,YACuB;AACvB,QAAO,6BAA6B,QAAQ,sBAAsB,YAAY,OAAO,CAAC"}
|