@xopcai/xopc 0.0.103 → 0.0.105
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 +7 -4
- package/README.zh-CN.md +7 -4
- package/dist/_virtual/_rolldown/runtime.js +2 -3
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/feishu/src/adapters/cli-login.d.ts +1 -1
- package/dist/extensions/feishu/src/adapters/cli-login.js +1 -1
- package/dist/extensions/feishu/src/adapters/cli-login.js.map +1 -1
- package/dist/extensions/feishu/src/adapters/gateway-setup.d.ts +2 -0
- package/dist/extensions/feishu/src/adapters/gateway-setup.js +225 -0
- package/dist/extensions/feishu/src/adapters/gateway-setup.js.map +1 -0
- package/dist/extensions/feishu/src/index.d.ts +8 -1
- package/dist/extensions/feishu/src/index.js +14 -1
- package/dist/extensions/feishu/src/index.js.map +1 -0
- package/dist/extensions/feishu/src/outbound/outbound-adapter.js +1 -1
- package/dist/extensions/feishu/src/plugin.d.ts +2 -1
- package/dist/extensions/feishu/src/plugin.js +2 -0
- package/dist/extensions/feishu/src/plugin.js.map +1 -1
- package/dist/extensions/feishu/src/streaming/streaming-adapter.js +1 -1
- package/dist/extensions/feishu/src/transport/webhook/monitor.js +1 -1
- package/dist/extensions/feishu/xopc.extension.json +66 -1
- package/dist/extensions/telegram/src/adapters/gateway-setup.d.ts +2 -0
- package/dist/extensions/telegram/src/adapters/gateway-setup.js +146 -0
- package/dist/extensions/telegram/src/adapters/gateway-setup.js.map +1 -0
- package/dist/extensions/telegram/src/adapters/security-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.js +2 -2
- package/dist/extensions/telegram/src/config-schema.js.map +1 -1
- package/dist/extensions/telegram/src/doctor.d.ts +1 -0
- package/dist/extensions/telegram/src/doctor.js +68 -0
- package/dist/extensions/telegram/src/doctor.js.map +1 -1
- package/dist/extensions/telegram/src/index.d.ts +8 -1
- package/dist/extensions/telegram/src/index.js +15 -2
- package/dist/extensions/telegram/src/index.js.map +1 -0
- package/dist/extensions/telegram/src/plugin.d.ts +13 -5
- package/dist/extensions/telegram/src/plugin.js +32 -12
- package/dist/extensions/telegram/src/plugin.js.map +1 -1
- package/dist/extensions/telegram/src/proxy-fetch.js +22 -5
- package/dist/extensions/telegram/src/proxy-fetch.js.map +1 -1
- package/dist/extensions/telegram/xopc.extension.json +412 -5
- package/dist/extensions/weixin/src/adapters/onboard-cli.js +2 -2
- package/dist/extensions/weixin/src/adapters/onboard-cli.js.map +1 -1
- package/dist/extensions/weixin/src/api/api.js +1 -1
- package/dist/extensions/weixin/src/index.d.ts +8 -0
- package/dist/extensions/weixin/src/index.js +12 -1
- package/dist/extensions/weixin/src/index.js.map +1 -0
- package/dist/extensions/weixin/src/messaging/process-message.js +1 -1
- package/dist/extensions/weixin/src/plugin.d.ts +2 -1
- package/dist/extensions/weixin/src/plugin.js +77 -2
- package/dist/extensions/weixin/src/plugin.js.map +1 -1
- package/dist/extensions/weixin/xopc.extension.json +52 -0
- package/dist/gateway/static/root/assets/agents-XzgIVKcI.js +396 -0
- package/dist/gateway/static/root/assets/{apps-page-C5RmwmTT.js → apps-page-B7Us3RMl.js} +1 -1
- package/dist/gateway/static/root/assets/browser-BLJWD7WI.js +8 -0
- package/dist/gateway/static/root/assets/channels-settings-BgeV6fzw.js +1 -0
- package/dist/gateway/static/root/assets/cron-page-DKGHEeAU.js +1 -0
- package/dist/gateway/static/root/assets/{dist-CWm8hTXZ.js → dist-DJDkNhu5.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-BzYgTkS9.js → extension-debug-page-DI1XJTJi.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-BmTZH6gL.js → extension-page-SuafGTT_.js} +1 -1
- package/dist/gateway/static/root/assets/extension-settings-page-cKmGax9v.js +1 -0
- package/dist/gateway/static/root/assets/{fetch-CMoWY2Si.js → fetch-CkvRO30i.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-startup-retry-BkKyRDrF.js +1 -0
- package/dist/gateway/static/root/assets/heartbeat-config-api-CRiDcxtt.js +1 -0
- package/dist/gateway/static/root/assets/index-50FVtgXU.js +4845 -0
- package/dist/gateway/static/root/assets/index-BPYKW7FB.css +1 -0
- package/dist/gateway/static/root/assets/{logs-page-BjdQjHwk.js → logs-page-DM8o5-Bm.js} +2 -2
- package/dist/gateway/static/root/assets/{note-detail-page-8Er4197b.js → note-detail-page-j53jtvq9.js} +53 -53
- package/dist/gateway/static/root/assets/{note-time-CF3vf1jm.js → note-time-Ck2H2Qpw.js} +1 -1
- package/dist/gateway/static/root/assets/notes-page-CsWIw35Q.js +1 -0
- package/dist/gateway/static/root/assets/schema-form-BvmGNxiJ.js +1 -0
- package/dist/gateway/static/root/assets/sessions-page-CLPsbyOW.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-DRdayl8P.js +2 -0
- package/dist/gateway/static/root/assets/{settings-form-section-C7qA7y0J.js → settings-form-section-BlIYg2gZ.js} +1 -1
- package/dist/gateway/static/root/assets/settings-page-CRGHT_bm.js +3 -0
- package/dist/gateway/static/root/assets/{share-preview-page-Tvr5Mtq5.js → share-preview-page-BlT6Akvk.js} +1 -1
- package/dist/gateway/static/root/assets/skills-page-Ce-RIH2y.js +2 -0
- package/dist/gateway/static/root/assets/{theme-store-HTvJlFLL.js → theme-store-DYgVdRB4.js} +1 -1
- package/dist/gateway/static/root/assets/url-DPEStU4M.js +3 -0
- package/dist/gateway/static/root/assets/voice-api-key-field-CJGTidqc.js +1 -0
- package/dist/gateway/static/root/assets/{workflow-page.utils-CeBkAjP7.js → workflow-page.utils-_sjXCMvi.js} +1 -1
- package/dist/gateway/static/root/assets/workflows-page-o63aaARK.js +27 -0
- package/dist/gateway/static/root/index.html +6 -5
- package/dist/package.js +1 -1
- package/dist/src/agent/agent-manager.d.ts +18 -6
- package/dist/src/agent/agent-manager.js +60 -35
- package/dist/src/agent/agent-manager.js.map +1 -1
- package/dist/src/agent/builtin-agent-ids.d.ts +2 -0
- package/dist/src/agent/builtin-agent-ids.js +17 -0
- package/dist/src/agent/builtin-agent-ids.js.map +1 -0
- package/dist/src/agent/child-agent-factory.d.ts +4 -0
- package/dist/src/agent/child-agent-factory.js +28 -8
- package/dist/src/agent/child-agent-factory.js.map +1 -1
- package/dist/src/agent/context/workspace-templates/AGENTS.md +23 -184
- package/dist/src/agent/embedded/run-turn.js +8 -2
- package/dist/src/agent/embedded/run-turn.js.map +1 -1
- package/dist/src/agent/embedded/session-tool-result-guard.js +1 -1
- package/dist/src/agent/embedded/subscribe-session.js +33 -51
- package/dist/src/agent/embedded/subscribe-session.js.map +1 -1
- package/dist/src/agent/embedded/types.d.ts +36 -35
- package/dist/src/agent/fallback/candidates.js +1 -1
- package/dist/src/agent/fallback/candidates.js.map +1 -1
- package/dist/src/agent/inbound/inbound-loop.js +1 -1
- package/dist/src/agent/inbound/turn-dispatcher.d.ts +3 -0
- package/dist/src/agent/inbound/turn-dispatcher.js +25 -5
- package/dist/src/agent/inbound/turn-dispatcher.js.map +1 -1
- package/dist/src/agent/models/manager.d.ts +1 -1
- package/dist/src/agent/models/manager.js +1 -1
- package/dist/src/agent/models/manager.js.map +1 -1
- package/dist/src/agent/orchestration/run-agent-turn-with-fallbacks.d.ts +1 -1
- 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/prompt/memory/index.js +30 -2
- package/dist/src/agent/prompt/memory/index.js.map +1 -1
- package/dist/src/agent/prompt/sections/tooling.js +4 -0
- package/dist/src/agent/prompt/sections/tooling.js.map +1 -1
- package/dist/src/agent/service/direct-turn-helpers.d.ts +3 -0
- package/dist/src/agent/service/direct-turn-helpers.js +6 -3
- package/dist/src/agent/service/direct-turn-helpers.js.map +1 -1
- package/dist/src/agent/service/process-direct-streaming.d.ts +3 -0
- package/dist/src/agent/service/process-direct-streaming.js +50 -19
- package/dist/src/agent/service/process-direct-streaming.js.map +1 -1
- package/dist/src/agent/service-inbound-utils.d.ts +0 -1
- package/dist/src/agent/service-inbound-utils.js +1 -17
- package/dist/src/agent/service-inbound-utils.js.map +1 -1
- package/dist/src/agent/service.d.ts +4 -4
- package/dist/src/agent/service.js +29 -16
- package/dist/src/agent/service.js.map +1 -1
- package/dist/src/agent/service.types.d.ts +3 -0
- package/dist/src/agent/session/session-config-service.d.ts +1 -0
- package/dist/src/agent/session/session-config-service.js +9 -1
- package/dist/src/agent/session/session-config-service.js.map +1 -1
- package/dist/src/agent/session/session-inspector.d.ts +2 -1
- package/dist/src/agent/session/session-inspector.js +4 -0
- package/dist/src/agent/session/session-inspector.js.map +1 -1
- package/dist/src/agent/skills/config.js +1 -3
- package/dist/src/agent/skills/config.js.map +1 -1
- package/dist/src/agent/skills/format-skills-prompt.d.ts +1 -0
- package/dist/src/agent/skills/format-skills-prompt.js +3 -2
- package/dist/src/agent/skills/format-skills-prompt.js.map +1 -1
- package/dist/src/agent/skills/index.js +20 -5
- package/dist/src/agent/skills/index.js.map +1 -1
- package/dist/src/agent/skills/installer.js +14 -27
- package/dist/src/agent/skills/installer.js.map +1 -1
- package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js +11 -1
- package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js.map +1 -1
- package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js +18 -4
- package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js.map +1 -1
- package/dist/src/agent/skills/marketplace/adapters/store/adapter.js +11 -2
- package/dist/src/agent/skills/marketplace/adapters/store/adapter.js.map +1 -1
- package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.d.ts +2 -2
- package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js.map +1 -1
- package/dist/src/agent/skills/skill-manager.d.ts +4 -1
- package/dist/src/agent/skills/skill-manager.js +3 -3
- package/dist/src/agent/skills/skill-manager.js.map +1 -1
- package/dist/src/agent/skills/skill-view-path.d.ts +1 -17
- package/dist/src/agent/skills/skill-view-path.js +3 -66
- package/dist/src/agent/skills/skill-view-path.js.map +1 -1
- package/dist/src/agent/skills/test-framework.js +2 -3
- package/dist/src/agent/skills/test-framework.js.map +1 -1
- package/dist/src/agent/source-context/index.d.ts +2 -0
- package/dist/src/agent/source-context/index.js +3 -0
- package/dist/src/agent/source-context/injector.d.ts +3 -0
- package/dist/src/agent/source-context/injector.js +36 -0
- package/dist/src/agent/source-context/injector.js.map +1 -0
- package/dist/src/agent/source-context/types.d.ts +19 -0
- package/dist/src/agent/source-context/types.js +10 -0
- package/dist/src/agent/source-context/types.js.map +1 -0
- package/dist/src/agent/streaming/reasoning-visibility-sse.js +1 -0
- package/dist/src/agent/streaming/reasoning-visibility-sse.js.map +1 -1
- package/dist/src/agent/tool-manuals/browser.d.ts +1 -0
- package/{skills/browser/SKILL.md → dist/src/agent/tool-manuals/browser.js} +51 -54
- package/dist/src/agent/tool-manuals/browser.js.map +1 -0
- package/dist/src/agent/tool-manuals/index.d.ts +10 -0
- package/dist/src/agent/tool-manuals/index.js +28 -0
- package/dist/src/agent/tool-manuals/index.js.map +1 -0
- package/dist/src/agent/tools/browser/tool/browser-use-tool.js +1 -1
- package/dist/src/agent/tools/browser/tool/browser-use-tool.js.map +1 -1
- package/dist/src/agent/tools/factory.js +2 -0
- package/dist/src/agent/tools/factory.js.map +1 -1
- package/dist/src/agent/tools/index.d.ts +1 -0
- package/dist/src/agent/tools/index.js +2 -1
- package/dist/src/agent/tools/skills-tools.js +37 -8
- package/dist/src/agent/tools/skills-tools.js.map +1 -1
- package/dist/src/agent/tools/tool-manual-tool.d.ts +6 -0
- package/dist/src/agent/tools/tool-manual-tool.js +34 -0
- package/dist/src/agent/tools/tool-manual-tool.js.map +1 -0
- package/dist/src/agent/workflow/catalog.d.ts +7 -2
- package/dist/src/agent/workflow/catalog.js +66 -25
- package/dist/src/agent/workflow/catalog.js.map +1 -1
- package/dist/src/agent/workflow/subagent-runner.d.ts +3 -0
- package/dist/src/agent/workflow/subagent-runner.js +50 -4
- package/dist/src/agent/workflow/subagent-runner.js.map +1 -1
- package/dist/src/agent/workflow/types.d.ts +10 -0
- package/dist/src/auth/credentials.js +10 -5
- package/dist/src/auth/credentials.js.map +1 -1
- package/dist/src/channels/catalog/channel-catalog-service.d.ts +11 -0
- package/dist/src/channels/catalog/channel-catalog-service.js +168 -0
- package/dist/src/channels/catalog/channel-catalog-service.js.map +1 -0
- package/dist/src/channels/catalog/channel-catalog-types.d.ts +22 -0
- package/dist/src/channels/catalog/channel-catalog-types.js +1 -0
- package/dist/src/channels/dock.d.ts +0 -7
- package/dist/src/channels/dock.js +1 -21
- package/dist/src/channels/index.d.ts +1 -3
- package/dist/src/channels/index.js +1 -5
- package/dist/src/channels/lifecycle-supervisor.d.ts +1 -0
- package/dist/src/channels/lifecycle-supervisor.js +11 -0
- package/dist/src/channels/lifecycle-supervisor.js.map +1 -1
- package/dist/src/channels/manager.d.ts +1 -0
- package/dist/src/channels/manager.js +3 -0
- package/dist/src/channels/manager.js.map +1 -1
- package/dist/src/channels/pairing/pairing-channel.d.ts +2 -3
- package/dist/src/channels/pairing/pairing-messages.js +1 -1
- package/dist/src/channels/pairing/pairing-messages.js.map +1 -1
- package/dist/src/channels/pairing/pairing-service.d.ts +1 -1
- package/dist/src/channels/pairing/pairing-service.js +8 -27
- package/dist/src/channels/pairing/pairing-service.js.map +1 -1
- package/dist/src/channels/plugin-types.d.ts +3 -1
- package/dist/src/channels/plugins/types.adapters.d.ts +55 -2
- package/dist/src/channels/telegram/index.js +1 -1
- package/dist/src/chat-commands/builtins/config.js +4 -4
- package/dist/src/chat-commands/builtins/config.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 +1 -1
- package/dist/src/chat-commands/context.js.map +1 -1
- package/dist/src/cli/bin.js +1 -1
- package/dist/src/cli/command-manifest.js +1 -1
- package/dist/src/cli/command-manifest.js.map +1 -1
- package/dist/src/cli/commands/agent.js +2 -2
- package/dist/src/cli/commands/agent.js.map +1 -1
- package/dist/src/cli/commands/agents.js +2 -4
- package/dist/src/cli/commands/agents.js.map +1 -1
- package/dist/src/cli/commands/auth.js +1 -1
- package/dist/src/cli/commands/channels.d.ts +1 -5
- package/dist/src/cli/commands/channels.js +115 -281
- package/dist/src/cli/commands/channels.js.map +1 -1
- package/dist/src/cli/commands/config.js +2 -2
- package/dist/src/cli/commands/config.js.map +1 -1
- package/dist/src/cli/commands/doctor/checks/channel-config.js +16 -69
- package/dist/src/cli/commands/doctor/checks/channel-config.js.map +1 -1
- package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js +6 -4
- package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js.map +1 -1
- package/dist/src/cli/commands/doctor/checks/channel-plugins.js +2 -2
- package/dist/src/cli/commands/doctor/checks/channel-plugins.js.map +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/doctor/checks/provider-auth.js +13 -9
- package/dist/src/cli/commands/doctor/checks/provider-auth.js.map +1 -1
- package/dist/src/cli/commands/extension-dev.js +2 -1
- package/dist/src/cli/commands/extension-dev.js.map +1 -1
- package/dist/src/cli/commands/extension-marketplace.js +2 -1
- package/dist/src/cli/commands/extension-marketplace.js.map +1 -1
- package/dist/src/cli/commands/extension-pack.js +2 -1
- package/dist/src/cli/commands/extension-pack.js.map +1 -1
- package/dist/src/cli/commands/models.js +7 -4
- package/dist/src/cli/commands/models.js.map +1 -1
- package/dist/src/cli/commands/onboard/channels/index.js +1 -1
- package/dist/src/cli/commands/onboard/channels/index.js.map +1 -1
- package/dist/src/cli/commands/onboard/channels/registry.d.ts +2 -1
- package/dist/src/cli/commands/onboard/channels/registry.js +32 -8
- package/dist/src/cli/commands/onboard/channels/registry.js.map +1 -1
- package/dist/src/cli/commands/onboard/model.js +8 -5
- package/dist/src/cli/commands/onboard/model.js.map +1 -1
- package/dist/src/cli/commands/onboard.js +4 -6
- package/dist/src/cli/commands/onboard.js.map +1 -1
- package/dist/src/cli/commands/setup-shared/runner.d.ts +1 -1
- package/dist/src/cli/commands/setup-shared/runner.js.map +1 -1
- package/dist/src/cli/commands/setup-shared/types.d.ts +1 -1
- package/dist/src/cli/commands/setup-shared/types.js.map +1 -1
- package/dist/src/cli/commands/tui.js +13 -5
- package/dist/src/cli/commands/tui.js.map +1 -1
- package/dist/src/cli/extension-cli-register.js +1 -1
- package/dist/src/commands/agents.config.d.ts +3 -3
- package/dist/src/commands/agents.config.js +7 -7
- package/dist/src/commands/agents.config.js.map +1 -1
- package/dist/src/config/agent-profile.d.ts +1 -1
- package/dist/src/config/agent-profile.js +6 -2
- package/dist/src/config/agent-profile.js.map +1 -1
- package/dist/src/config/agent-typed-models.d.ts +2 -2
- package/dist/src/config/agent-typed-models.js +13 -2
- package/dist/src/config/agent-typed-models.js.map +1 -1
- package/dist/src/config/index.js +3 -3
- package/dist/src/config/integration.d.ts +1 -1
- package/dist/src/config/loader.d.ts +0 -1
- package/dist/src/config/loader.js +4 -9
- package/dist/src/config/loader.js.map +1 -1
- package/dist/src/config/models-json.d.ts +6 -6
- package/dist/src/config/paths.d.ts +1 -0
- package/dist/src/config/paths.js +5 -1
- package/dist/src/config/paths.js.map +1 -1
- package/dist/src/config/rules.js +2 -12
- package/dist/src/config/rules.js.map +1 -1
- package/dist/src/config/schema.d.ts +74 -47
- package/dist/src/config/schema.js +28 -66
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/config/validate-channel-configs.d.ts +0 -3
- package/dist/src/config/validate-channel-configs.js +29 -10
- package/dist/src/config/validate-channel-configs.js.map +1 -1
- package/dist/src/cron/executor.js +1 -4
- package/dist/src/cron/executor.js.map +1 -1
- package/dist/src/document-understanding/extract.d.ts +13 -0
- package/dist/src/document-understanding/extract.js +63 -0
- package/dist/src/document-understanding/extract.js.map +1 -0
- package/dist/src/extensions/activation-context.js +3 -1
- package/dist/src/extensions/activation-context.js.map +1 -1
- package/dist/src/extensions/activation-planner.js +12 -0
- package/dist/src/extensions/activation-planner.js.map +1 -1
- package/dist/src/extensions/api.d.ts +5 -1
- package/dist/src/extensions/api.js +12 -0
- package/dist/src/extensions/api.js.map +1 -1
- package/dist/src/extensions/discover-extensions.js +17 -13
- package/dist/src/extensions/discover-extensions.js.map +1 -1
- package/dist/src/extensions/extension-metadata-snapshot.js +11 -5
- package/dist/src/extensions/extension-metadata-snapshot.js.map +1 -1
- package/dist/src/extensions/index.js +12 -4
- package/dist/src/extensions/index.js.map +1 -0
- package/dist/src/extensions/loader.d.ts +5 -1
- package/dist/src/extensions/loader.js +12 -11
- package/dist/src/extensions/loader.js.map +1 -1
- package/dist/src/extensions/manifest-registry.js +98 -93
- package/dist/src/extensions/manifest-registry.js.map +1 -1
- package/dist/src/extensions/normalize-manifest.js +91 -15
- package/dist/src/extensions/normalize-manifest.js.map +1 -1
- package/dist/src/extensions/sdk/index.js +1 -1
- package/dist/src/extensions/sdk/testing.js +4 -0
- package/dist/src/extensions/sdk/testing.js.map +1 -1
- package/dist/src/extensions/types/core.d.ts +32 -1
- package/dist/src/extensions/types/manifest.d.ts +60 -0
- package/dist/src/extensions/types/tui.d.ts +414 -5
- package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
- package/dist/src/gateway/agent-builtin-tools.js +16 -0
- package/dist/src/gateway/agent-builtin-tools.js.map +1 -1
- package/dist/src/gateway/agent-run-relay.d.ts +2 -3
- package/dist/src/gateway/agent-run-relay.js +10 -3
- package/dist/src/gateway/agent-run-relay.js.map +1 -1
- package/dist/src/gateway/agents-admin.d.ts +32 -19
- package/dist/src/gateway/agents-admin.js +113 -93
- package/dist/src/gateway/agents-admin.js.map +1 -1
- package/dist/src/gateway/chat-stream/mapper.d.ts +34 -0
- package/dist/src/gateway/chat-stream/mapper.js +244 -0
- package/dist/src/gateway/chat-stream/mapper.js.map +1 -0
- package/dist/src/gateway/chat-stream/protocol.d.ts +100 -0
- package/dist/src/gateway/chat-stream/protocol.js +1 -0
- package/dist/src/gateway/heartbeat/service.js +1 -1
- package/dist/src/gateway/hono/lib/agent-model.d.ts +4 -4
- package/dist/src/gateway/hono/lib/agent-model.js +13 -11
- package/dist/src/gateway/hono/lib/agent-model.js.map +1 -1
- package/dist/src/gateway/hono/lib/config-payload.d.ts +19 -7
- package/dist/src/gateway/hono/lib/config-payload.js +16 -15
- package/dist/src/gateway/hono/lib/config-payload.js.map +1 -1
- package/dist/src/gateway/hono/routes/agents.js +83 -48
- package/dist/src/gateway/hono/routes/agents.js.map +1 -1
- package/dist/src/gateway/hono/routes/channels.js +134 -214
- package/dist/src/gateway/hono/routes/channels.js.map +1 -1
- package/dist/src/gateway/hono/routes/commands-skills.js +10 -4
- package/dist/src/gateway/hono/routes/commands-skills.js.map +1 -1
- package/dist/src/gateway/hono/routes/config-patch/agents.js +26 -13
- package/dist/src/gateway/hono/routes/config-patch/agents.js.map +1 -1
- package/dist/src/gateway/hono/routes/config-patch/channels.d.ts +1 -11
- package/dist/src/gateway/hono/routes/config-patch/channels.js +18 -165
- package/dist/src/gateway/hono/routes/config-patch/channels.js.map +1 -1
- package/dist/src/gateway/hono/routes/config.js +5 -2
- package/dist/src/gateway/hono/routes/config.js.map +1 -1
- package/dist/src/gateway/hono/routes/dreaming.js +1 -1
- package/dist/src/gateway/hono/routes/lazy-bundles.js +13 -1
- package/dist/src/gateway/hono/routes/lazy-bundles.js.map +1 -1
- package/dist/src/gateway/hono/routes/notes.js +46 -27
- package/dist/src/gateway/hono/routes/notes.js.map +1 -1
- package/dist/src/gateway/hono/routes/public-gateway.js +2 -4
- package/dist/src/gateway/hono/routes/public-gateway.js.map +1 -1
- package/dist/src/gateway/hono/routes/sessions.js +179 -0
- package/dist/src/gateway/hono/routes/sessions.js.map +1 -1
- package/dist/src/gateway/hono/routes/tui.d.ts +3 -0
- package/dist/src/gateway/hono/routes/tui.js +16 -0
- package/dist/src/gateway/hono/routes/tui.js.map +1 -0
- package/dist/src/gateway/hono/routes/workflows.js +25 -1
- package/dist/src/gateway/hono/routes/workflows.js.map +1 -1
- package/dist/src/gateway/hono/sse.d.ts +5 -7
- package/dist/src/gateway/hono/sse.js +21 -38
- package/dist/src/gateway/hono/sse.js.map +1 -1
- package/dist/src/gateway/protocol.js.map +1 -1
- package/dist/src/gateway/service/agent-runner.d.ts +2 -4
- package/dist/src/gateway/service/agent-runner.js +1 -1
- package/dist/src/gateway/service/agent-runner.js.map +1 -1
- package/dist/src/gateway/service/marketplace-service.d.ts +4 -3
- package/dist/src/gateway/service/marketplace-service.js +7 -4
- package/dist/src/gateway/service/marketplace-service.js.map +1 -1
- package/dist/src/gateway/service/run-gateway-agent.d.ts +2 -6
- package/dist/src/gateway/service/run-gateway-agent.js +63 -36
- package/dist/src/gateway/service/run-gateway-agent.js.map +1 -1
- package/dist/src/gateway/service/sessions-api.d.ts +19 -0
- package/dist/src/gateway/service/sessions-api.js +12 -0
- package/dist/src/gateway/service/sessions-api.js.map +1 -1
- package/dist/src/gateway/service.d.ts +6 -0
- package/dist/src/gateway/service.js +84 -57
- package/dist/src/gateway/service.js.map +1 -1
- package/dist/src/heartbeat/index.js +1 -1
- package/dist/src/notes/agent-context.d.ts +40 -0
- package/dist/src/notes/agent-context.js +383 -0
- package/dist/src/notes/agent-context.js.map +1 -0
- package/dist/src/notes/index.d.ts +2 -0
- package/dist/src/notes/index.js +2 -1
- package/dist/src/notes/service.d.ts +5 -0
- package/dist/src/notes/service.js +22 -0
- package/dist/src/notes/service.js.map +1 -1
- package/dist/src/notes/store.js +2 -0
- package/dist/src/notes/store.js.map +1 -1
- package/dist/src/project-trust/trust-store.d.ts +30 -0
- package/dist/src/project-trust/trust-store.js +194 -0
- package/dist/src/project-trust/trust-store.js.map +1 -0
- package/dist/src/providers/index.d.ts +1 -1
- package/dist/src/providers/index.js +18 -7
- package/dist/src/providers/index.js.map +1 -1
- package/dist/src/routing/resolve-route.d.ts +0 -3
- package/dist/src/routing/resolve-route.js.map +1 -1
- package/dist/src/routing/resolve-tui-session-key.d.ts +2 -0
- package/dist/src/routing/resolve-tui-session-key.js +8 -3
- package/dist/src/routing/resolve-tui-session-key.js.map +1 -1
- package/dist/src/session/client-history.d.ts +32 -0
- package/dist/src/session/client-history.js +232 -1
- package/dist/src/session/client-history.js.map +1 -1
- package/dist/src/session/manager.d.ts +37 -4
- package/dist/src/session/manager.js +39 -15
- package/dist/src/session/manager.js.map +1 -1
- package/dist/src/session/session-context-for-llm.d.ts +93 -1
- package/dist/src/session/session-context-for-llm.js +105 -2
- package/dist/src/session/session-context-for-llm.js.map +1 -1
- package/dist/src/session/store.d.ts +37 -0
- package/dist/src/session/store.js +127 -2
- package/dist/src/session/store.js.map +1 -1
- package/dist/src/session/stored-rows-to-file-entries.js +37 -1
- package/dist/src/session/stored-rows-to-file-entries.js.map +1 -1
- package/dist/src/session/types.d.ts +14 -1
- package/dist/src/session/types.js.map +1 -1
- package/dist/src/storage/sqlite/index.d.ts +1 -0
- package/dist/src/storage/sqlite/index.js +2 -1
- package/dist/src/storage/sqlite/migrations/004_add_session_type_metadata.sql +15 -0
- package/dist/src/storage/sqlite/migrations/005_add_note_agent_contexts.sql +10 -0
- package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/runner.js +3 -3
- package/dist/src/storage/sqlite/migrations/runner.js.map +1 -1
- package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
- package/dist/src/storage/sqlite/note-agent-context-repository.d.ts +10 -0
- package/dist/src/storage/sqlite/note-agent-context-repository.js +35 -0
- package/dist/src/storage/sqlite/note-agent-context-repository.js.map +1 -0
- package/dist/src/storage/sqlite/row-mappers.d.ts +14 -1
- package/dist/src/storage/sqlite/row-mappers.js +14 -1
- package/dist/src/storage/sqlite/row-mappers.js.map +1 -1
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/storage/sqlite/session-metadata.js +1 -0
- package/dist/src/storage/sqlite/session-metadata.js.map +1 -1
- package/dist/src/storage/sqlite/session-repository.js +52 -25
- package/dist/src/storage/sqlite/session-repository.js.map +1 -1
- package/dist/src/tui/backends/embedded-backend.d.ts +53 -4
- package/dist/src/tui/backends/embedded-backend.js +227 -39
- package/dist/src/tui/backends/embedded-backend.js.map +1 -1
- package/dist/src/tui/backends/gateway-sse-backend.d.ts +59 -3
- package/dist/src/tui/backends/gateway-sse-backend.js +416 -26
- package/dist/src/tui/backends/gateway-sse-backend.js.map +1 -1
- package/dist/src/tui/chat-history.d.ts +5 -1
- package/dist/src/tui/chat-history.js +78 -8
- package/dist/src/tui/chat-history.js.map +1 -1
- package/dist/src/tui/clipboard-text.d.ts +5 -0
- package/dist/src/tui/clipboard-text.js +46 -0
- package/dist/src/tui/clipboard-text.js.map +1 -0
- package/dist/src/tui/components/assistant-message.d.ts +19 -3
- package/dist/src/tui/components/assistant-message.js +115 -9
- package/dist/src/tui/components/assistant-message.js.map +1 -1
- package/dist/src/tui/components/bash-execution.d.ts +3 -2
- package/dist/src/tui/components/bash-execution.js +31 -3
- package/dist/src/tui/components/bash-execution.js.map +1 -1
- package/dist/src/tui/components/bash-summary.d.ts +23 -0
- package/dist/src/tui/components/bash-summary.js +87 -0
- package/dist/src/tui/components/bash-summary.js.map +1 -0
- package/dist/src/tui/components/branch-message-summary.d.ts +17 -0
- package/dist/src/tui/components/branch-message-summary.js +43 -0
- package/dist/src/tui/components/branch-message-summary.js.map +1 -0
- package/dist/src/tui/components/branch-summary.d.ts +13 -0
- package/dist/src/tui/components/branch-summary.js +51 -0
- package/dist/src/tui/components/branch-summary.js.map +1 -0
- package/dist/src/tui/components/chat-log.d.ts +46 -6
- package/dist/src/tui/components/chat-log.js +183 -21
- package/dist/src/tui/components/chat-log.js.map +1 -1
- package/dist/src/tui/components/compaction-summary.d.ts +13 -0
- package/dist/src/tui/components/compaction-summary.js +46 -0
- package/dist/src/tui/components/compaction-summary.js.map +1 -0
- package/dist/src/tui/components/custom-editor.d.ts +1 -0
- package/dist/src/tui/components/custom-editor.js +2 -0
- package/dist/src/tui/components/custom-editor.js.map +1 -1
- package/dist/src/tui/components/custom-message.d.ts +23 -0
- package/dist/src/tui/components/custom-message.js +65 -0
- package/dist/src/tui/components/custom-message.js.map +1 -0
- package/dist/src/tui/components/extension-dialog.d.ts +42 -0
- package/dist/src/tui/components/extension-dialog.js +127 -0
- package/dist/src/tui/components/extension-dialog.js.map +1 -0
- package/dist/src/tui/components/scoped-models-selector.d.ts +7 -2
- package/dist/src/tui/components/scoped-models-selector.js +89 -16
- package/dist/src/tui/components/scoped-models-selector.js.map +1 -1
- package/dist/src/tui/components/searchable-select-list.d.ts +30 -3
- package/dist/src/tui/components/searchable-select-list.js +82 -10
- package/dist/src/tui/components/searchable-select-list.js.map +1 -1
- package/dist/src/tui/components/session-selector.d.ts +18 -4
- package/dist/src/tui/components/session-selector.js +207 -40
- package/dist/src/tui/components/session-selector.js.map +1 -1
- package/dist/src/tui/components/settings-selector.d.ts +6 -2
- package/dist/src/tui/components/settings-selector.js +126 -7
- package/dist/src/tui/components/settings-selector.js.map +1 -1
- package/dist/src/tui/components/thinking-selector.d.ts +12 -0
- package/dist/src/tui/components/thinking-selector.js +48 -0
- package/dist/src/tui/components/thinking-selector.js.map +1 -0
- package/dist/src/tui/components/tool-execution.d.ts +57 -3
- package/dist/src/tui/components/tool-execution.js +378 -28
- package/dist/src/tui/components/tool-execution.js.map +1 -1
- package/dist/src/tui/components/tui-bottom-bar.d.ts +9 -1
- package/dist/src/tui/components/tui-bottom-bar.js +56 -11
- package/dist/src/tui/components/tui-bottom-bar.js.map +1 -1
- package/dist/src/tui/components/tui-header.d.ts +9 -2
- package/dist/src/tui/components/tui-header.js +25 -5
- package/dist/src/tui/components/tui-header.js.map +1 -1
- package/dist/src/tui/components/user-message.d.ts +4 -2
- package/dist/src/tui/components/user-message.js +42 -9
- package/dist/src/tui/components/user-message.js.map +1 -1
- package/dist/src/tui/components/visual-truncate.d.ts +11 -0
- package/dist/src/tui/components/visual-truncate.js +27 -0
- package/dist/src/tui/components/visual-truncate.js.map +1 -0
- package/dist/src/tui/extension-host/autocomplete.d.ts +43 -0
- package/dist/src/tui/extension-host/autocomplete.js +116 -0
- package/dist/src/tui/extension-host/autocomplete.js.map +1 -0
- package/dist/src/tui/extension-host/host.d.ts +31 -1
- package/dist/src/tui/extension-host/host.js +123 -6
- package/dist/src/tui/extension-host/host.js.map +1 -1
- package/dist/src/tui/extension-host/load-extensions.d.ts +6 -1
- package/dist/src/tui/extension-host/load-extensions.js +4 -3
- package/dist/src/tui/extension-host/load-extensions.js.map +1 -1
- package/dist/src/tui/extension-host/runtime-context.d.ts +21 -0
- package/dist/src/tui/extension-host/runtime-context.js +152 -0
- package/dist/src/tui/extension-host/runtime-context.js.map +1 -0
- package/dist/src/tui/extension-host/runtime.d.ts +52 -4
- package/dist/src/tui/extension-host/runtime.js +547 -85
- package/dist/src/tui/extension-host/runtime.js.map +1 -1
- package/dist/src/tui/extension-host/surface.d.ts +20 -0
- package/dist/src/tui/extension-host/surface.js +30 -6
- package/dist/src/tui/extension-host/surface.js.map +1 -1
- package/dist/src/tui/extension-host/tool-renderers.d.ts +6 -3
- package/dist/src/tui/extension-host/tool-renderers.js +43 -5
- package/dist/src/tui/extension-host/tool-renderers.js.map +1 -1
- package/dist/src/tui/format-tui-hotkeys.d.ts +12 -2
- package/dist/src/tui/format-tui-hotkeys.js +22 -5
- package/dist/src/tui/format-tui-hotkeys.js.map +1 -1
- package/dist/src/tui/tui-agent-events.d.ts +8 -6
- package/dist/src/tui/tui-agent-events.js +200 -59
- package/dist/src/tui/tui-agent-events.js.map +1 -1
- package/dist/src/tui/tui-backend.d.ts +169 -3
- package/dist/src/tui/tui-command-formatters.d.ts +76 -0
- package/dist/src/tui/tui-command-formatters.js +594 -0
- package/dist/src/tui/tui-command-formatters.js.map +1 -0
- package/dist/src/tui/tui-commands.d.ts +57 -7
- package/dist/src/tui/tui-commands.js +639 -43
- package/dist/src/tui/tui-commands.js.map +1 -1
- package/dist/src/tui/tui-context-usage.d.ts +1 -1
- package/dist/src/tui/tui-context-usage.js +9 -1
- package/dist/src/tui/tui-context-usage.js.map +1 -1
- package/dist/src/tui/tui-extension-user-message.d.ts +8 -0
- package/dist/src/tui/tui-extension-user-message.js +32 -0
- package/dist/src/tui/tui-extension-user-message.js.map +1 -0
- package/dist/src/tui/tui-follow-up-queue.d.ts +9 -0
- package/dist/src/tui/tui-follow-up-queue.js +18 -0
- package/dist/src/tui/tui-follow-up-queue.js.map +1 -0
- package/dist/src/tui/tui-local-shell.d.ts +11 -1
- package/dist/src/tui/tui-local-shell.js +50 -8
- package/dist/src/tui/tui-local-shell.js.map +1 -1
- package/dist/src/tui/tui-model-picker.d.ts +26 -0
- package/dist/src/tui/tui-model-picker.js +152 -0
- package/dist/src/tui/tui-model-picker.js.map +1 -0
- package/dist/src/tui/tui-oauth-login.d.ts +16 -0
- package/dist/src/tui/tui-oauth-login.js +189 -0
- package/dist/src/tui/tui-oauth-login.js.map +1 -0
- package/dist/src/tui/tui-overlays.d.ts +3 -3
- package/dist/src/tui/tui-overlays.js +6 -7
- package/dist/src/tui/tui-overlays.js.map +1 -1
- package/dist/src/tui/tui-picker-overlay.d.ts +27 -32
- package/dist/src/tui/tui-picker-overlay.js +340 -30
- package/dist/src/tui/tui-picker-overlay.js.map +1 -1
- package/dist/src/tui/tui-picker-services.d.ts +41 -0
- package/dist/src/tui/tui-picker-services.js +1 -0
- package/dist/src/tui/tui-run-state.d.ts +11 -0
- package/dist/src/tui/tui-run-state.js +114 -0
- package/dist/src/tui/tui-run-state.js.map +1 -0
- package/dist/src/tui/tui-runtime-hints.d.ts +4 -0
- package/dist/src/tui/tui-runtime-hints.js +18 -0
- package/dist/src/tui/tui-runtime-hints.js.map +1 -0
- package/dist/src/tui/tui-scoped-models.d.ts +1 -1
- package/dist/src/tui/tui-scoped-models.js +2 -2
- package/dist/src/tui/tui-scoped-models.js.map +1 -1
- package/dist/src/tui/tui-session-actions.d.ts +5 -3
- package/dist/src/tui/tui-session-actions.js +21 -9
- package/dist/src/tui/tui-session-actions.js.map +1 -1
- package/dist/src/tui/tui-session-format.d.ts +4 -1
- package/dist/src/tui/tui-session-format.js +17 -3
- package/dist/src/tui/tui-session-format.js.map +1 -1
- package/dist/src/tui/tui-session-snapshot.d.ts +82 -0
- package/dist/src/tui/tui-session-snapshot.js +184 -0
- package/dist/src/tui/tui-session-snapshot.js.map +1 -0
- package/dist/src/tui/tui-session-stats.d.ts +3 -0
- package/dist/src/tui/tui-session-stats.js +59 -0
- package/dist/src/tui/tui-session-stats.js.map +1 -0
- package/dist/src/tui/tui-settings.d.ts +21 -0
- package/dist/src/tui/tui-settings.js +28 -1
- package/dist/src/tui/tui-settings.js.map +1 -1
- package/dist/src/tui/tui-skills-autocomplete.js +1 -1
- package/dist/src/tui/tui-skills-autocomplete.js.map +1 -1
- package/dist/src/tui/tui-startup-resources.d.ts +3 -0
- package/dist/src/tui/tui-startup-resources.js +39 -0
- package/dist/src/tui/tui-startup-resources.js.map +1 -0
- package/dist/src/tui/tui-startup-text.d.ts +10 -0
- package/dist/src/tui/tui-startup-text.js +58 -0
- package/dist/src/tui/tui-startup-text.js.map +1 -0
- package/dist/src/tui/tui-stdio-filter.d.ts +1 -0
- package/dist/src/tui/tui-stdio-filter.js +11 -7
- package/dist/src/tui/tui-stdio-filter.js.map +1 -1
- package/dist/src/tui/tui-submit.d.ts +2 -0
- package/dist/src/tui/tui-submit.js +2 -1
- package/dist/src/tui/tui-submit.js.map +1 -1
- package/dist/src/tui/tui-tool-diff.js +61 -7
- package/dist/src/tui/tui-tool-diff.js.map +1 -1
- package/dist/src/tui/tui-tool-result.d.ts +17 -0
- package/dist/src/tui/tui-tool-result.js +74 -0
- package/dist/src/tui/tui-tool-result.js.map +1 -0
- package/dist/src/tui/tui-transcript-tree-picker.d.ts +57 -0
- package/dist/src/tui/tui-transcript-tree-picker.js +604 -0
- package/dist/src/tui/tui-transcript-tree-picker.js.map +1 -0
- package/dist/src/tui/tui-transcript-tree.d.ts +7 -0
- package/dist/src/tui/tui-transcript-tree.js +316 -0
- package/dist/src/tui/tui-transcript-tree.js.map +1 -0
- package/dist/src/tui/tui-types.d.ts +25 -34
- package/dist/src/tui/tui-types.js +12 -0
- package/dist/src/tui/tui-types.js.map +1 -1
- package/dist/src/tui/tui.js +1288 -112
- package/dist/src/tui/tui.js.map +1 -1
- package/dist/src/tui/xopc-tui-keybindings.d.ts +127 -2
- package/dist/src/tui/xopc-tui-keybindings.js +127 -2
- package/dist/src/tui/xopc-tui-keybindings.js.map +1 -1
- package/dist/src/workflows/domain/definition-utils.d.ts +2 -1
- package/dist/src/workflows/domain/definition-utils.js +18 -8
- package/dist/src/workflows/domain/definition-utils.js.map +1 -1
- package/dist/src/workflows/domain/definition.d.ts +25 -0
- package/dist/src/workflows/domain/event.d.ts +1 -0
- package/dist/src/workflows/domain/result.d.ts +15 -0
- package/dist/src/workflows/domain/run.d.ts +2 -0
- package/dist/src/workflows/domain/run.js.map +1 -1
- package/dist/src/workflows/engine/projector.js +4 -0
- package/dist/src/workflows/engine/projector.js.map +1 -1
- package/dist/src/workflows/engine/workflow-engine.d.ts +37 -1
- package/dist/src/workflows/engine/workflow-engine.js +75 -11
- package/dist/src/workflows/engine/workflow-engine.js.map +1 -1
- package/dist/src/workflows/index.d.ts +1 -0
- package/dist/src/workflows/index.js +4 -1
- package/dist/src/workflows/registry/catalog-workflow-definition-registry.d.ts +9 -0
- package/dist/src/workflows/registry/catalog-workflow-definition-registry.js +40 -0
- package/dist/src/workflows/registry/catalog-workflow-definition-registry.js.map +1 -0
- package/dist/src/workflows/registry/index.d.ts +2 -0
- package/dist/src/workflows/registry/index.js +2 -0
- package/dist/src/workflows/registry/workflow-definition-registry.d.ts +15 -0
- package/dist/src/workflows/registry/workflow-definition-registry.js +1 -0
- package/dist/src/workflows/runtime/index.d.ts +2 -0
- package/dist/src/workflows/runtime/index.js +2 -1
- package/dist/src/workflows/runtime/script-workflow-runtime.d.ts +5 -0
- package/dist/src/workflows/runtime/script-workflow-runtime.js +15 -0
- package/dist/src/workflows/runtime/script-workflow-runtime.js.map +1 -0
- package/dist/src/workflows/runtime/workflow-runtime-port.d.ts +16 -0
- package/dist/src/workflows/runtime/workflow-runtime-port.js +1 -0
- package/dist/src/workflows/service/run-view-to-snapshot.js +3 -0
- package/dist/src/workflows/service/run-view-to-snapshot.js.map +1 -1
- package/dist/src/workflows/service/workflow-run-service.d.ts +3 -0
- package/dist/src/workflows/service/workflow-run-service.js +10 -15
- package/dist/src/workflows/service/workflow-run-service.js.map +1 -1
- package/dist/src/workflows/service/workflow-session-bridge.d.ts +1 -1
- package/dist/src/workflows/service/workflow-session-bridge.js +4 -1
- package/dist/src/workflows/service/workflow-session-bridge.js.map +1 -1
- package/package.json +23 -17
- package/skills/creative/frontend-design/SKILL.md +1 -1
- package/skills/creative/theme-factory/SKILL.md +1 -1
- package/skills/documents/xlsx/SKILL.md +1 -1
- package/skills/engineering/diagnose/SKILL.md +2 -2
- package/skills/engineering/tdd/SKILL.md +1 -1
- package/skills/tools/github/SKILL.md +6 -1
- package/skills/tools/webapp-testing/SKILL.md +4 -1
- package/dist/extensions/telegram/src/adapters/config-surface.d.ts +0 -2
- package/dist/extensions/telegram/src/adapters/config-surface.js +0 -26
- package/dist/extensions/telegram/src/adapters/config-surface.js.map +0 -1
- package/dist/extensions/weixin/src/__tests__/workflow-progress.test.js +0 -158
- package/dist/extensions/weixin/src/__tests__/workflow-progress.test.js.map +0 -1
- package/dist/gateway/static/root/assets/agents-BwXkia_W.js +0 -222
- package/dist/gateway/static/root/assets/channels-settings-tlOTdaXw.js +0 -1
- package/dist/gateway/static/root/assets/channels-status-swr-D4XjqwqC.js +0 -8
- package/dist/gateway/static/root/assets/cron-api-DcmfGuj0.js +0 -1
- package/dist/gateway/static/root/assets/cron-page-CijJ4G6F.js +0 -1
- package/dist/gateway/static/root/assets/extension-settings-page-CyJk_G64.js +0 -1
- package/dist/gateway/static/root/assets/field-primitives-C4GpxsDo.js +0 -1
- package/dist/gateway/static/root/assets/heartbeat-config-api-CLD0Gpi3.js +0 -1
- package/dist/gateway/static/root/assets/index-0HmunJW9.js +0 -4845
- package/dist/gateway/static/root/assets/index-Bk75Phrd.css +0 -1
- package/dist/gateway/static/root/assets/notes-page-BBnTh0uI.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-B0riYK7j.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-DiP_WHu_.js +0 -2
- package/dist/gateway/static/root/assets/settings-page-1ZPhcCZ9.js +0 -3
- package/dist/gateway/static/root/assets/skills-page-BQ1hllKD.js +0 -2
- package/dist/gateway/static/root/assets/url-F3_D_6zZ.js +0 -3
- package/dist/gateway/static/root/assets/utils-CPr3FBh2.js +0 -1
- package/dist/gateway/static/root/assets/voice-api-key-field-BkbDl6dH.js +0 -1
- package/dist/gateway/static/root/assets/workflows-page-D059ysoF.js +0 -27
- package/dist/src/agent/embedded/map-stream-events.d.ts +0 -9
- package/dist/src/agent/embedded/map-stream-events.js +0 -63
- package/dist/src/agent/embedded/map-stream-events.js.map +0 -1
- package/dist/src/channels/dock.js.map +0 -1
- package/dist/src/channels/plugins/bundled.d.ts +0 -11
- package/dist/src/channels/plugins/bundled.js +0 -10
- package/dist/src/channels/plugins/bundled.js.map +0 -1
- package/dist/src/channels/registry.d.ts +0 -25
- package/dist/src/channels/registry.js +0 -82
- package/dist/src/channels/registry.js.map +0 -1
- package/dist/src/config/localized-text.d.ts +0 -6
- package/dist/src/config/localized-text.js +0 -42
- package/dist/src/config/localized-text.js.map +0 -1
- package/dist/src/generated/bundled-channel-plugins.d.ts +0 -10
- package/dist/src/generated/bundled-channel-plugins.js +0 -16
- package/dist/src/generated/bundled-channel-plugins.js.map +0 -1
- package/dist/src/tui/stream-assembler.d.ts +0 -22
- package/dist/src/tui/stream-assembler.js +0 -63
- package/dist/src/tui/stream-assembler.js.map +0 -1
- package/skills/browser/SKILL-zh.md +0 -188
- package/skills/business/company-values/SKILL-zh.md +0 -80
- package/skills/business/company-values/SKILL.md +0 -80
- package/skills/business/find-community/SKILL-zh.md +0 -50
- package/skills/business/find-community/SKILL.md +0 -50
- package/skills/business/first-customers/SKILL-zh.md +0 -76
- package/skills/business/first-customers/SKILL.md +0 -76
- package/skills/business/grow-sustainably/SKILL-zh.md +0 -92
- package/skills/business/grow-sustainably/SKILL.md +0 -92
- package/skills/business/marketing-plan/SKILL-zh.md +0 -100
- package/skills/business/marketing-plan/SKILL.md +0 -100
- package/skills/business/minimalist-review/SKILL-zh.md +0 -82
- package/skills/business/minimalist-review/SKILL.md +0 -82
- package/skills/business/mvp/SKILL-zh.md +0 -81
- package/skills/business/mvp/SKILL.md +0 -81
- package/skills/business/pricing/SKILL-zh.md +0 -64
- package/skills/business/pricing/SKILL.md +0 -64
- package/skills/business/processize/SKILL-zh.md +0 -91
- package/skills/business/processize/SKILL.md +0 -91
- package/skills/business/validate-idea/SKILL-zh.md +0 -68
- package/skills/business/validate-idea/SKILL.md +0 -68
- package/skills/creative/algorithmic-art/LICENSE.txt +0 -202
- package/skills/creative/algorithmic-art/SKILL-zh.md +0 -405
- package/skills/creative/algorithmic-art/SKILL.md +0 -405
- package/skills/creative/algorithmic-art/templates/generator_template.js +0 -223
- package/skills/creative/algorithmic-art/templates/viewer.html +0 -599
- package/skills/creative/frontend-design/SKILL-zh.md +0 -42
- package/skills/creative/theme-factory/SKILL-zh.md +0 -59
- package/skills/creative/web-artifacts-builder/LICENSE.txt +0 -202
- package/skills/creative/web-artifacts-builder/SKILL-zh.md +0 -74
- package/skills/creative/web-artifacts-builder/SKILL.md +0 -74
- package/skills/creative/web-artifacts-builder/scripts/bundle-artifact.sh +0 -54
- package/skills/creative/web-artifacts-builder/scripts/init-artifact.sh +0 -322
- package/skills/creative/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- package/skills/documents/doc-coauthoring/SKILL-zh.md +0 -375
- package/skills/documents/doc-coauthoring/SKILL.md +0 -375
- package/skills/documents/docx/LICENSE.txt +0 -30
- package/skills/documents/docx/SKILL-zh.md +0 -590
- package/skills/documents/docx/SKILL.md +0 -590
- package/skills/documents/docx/scripts/__init__.py +0 -1
- package/skills/documents/docx/scripts/accept_changes.py +0 -135
- package/skills/documents/docx/scripts/comment.py +0 -318
- package/skills/documents/docx/scripts/office/helpers/__init__.py +0 -0
- package/skills/documents/docx/scripts/office/helpers/merge_runs.py +0 -199
- package/skills/documents/docx/scripts/office/helpers/simplify_redlines.py +0 -197
- package/skills/documents/docx/scripts/office/pack.py +0 -159
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/skills/documents/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/skills/documents/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/skills/documents/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/skills/documents/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/skills/documents/docx/scripts/office/schemas/mce/mc.xsd +0 -75
- package/skills/documents/docx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -560
- package/skills/documents/docx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -67
- package/skills/documents/docx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -14
- package/skills/documents/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/skills/documents/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/skills/documents/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/skills/documents/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/skills/documents/docx/scripts/office/soffice.py +0 -183
- package/skills/documents/docx/scripts/office/unpack.py +0 -132
- package/skills/documents/docx/scripts/office/validate.py +0 -111
- package/skills/documents/docx/scripts/office/validators/__init__.py +0 -15
- package/skills/documents/docx/scripts/office/validators/base.py +0 -847
- package/skills/documents/docx/scripts/office/validators/docx.py +0 -446
- package/skills/documents/docx/scripts/office/validators/pptx.py +0 -275
- package/skills/documents/docx/scripts/office/validators/redlining.py +0 -247
- package/skills/documents/docx/scripts/templates/comments.xml +0 -3
- package/skills/documents/docx/scripts/templates/commentsExtended.xml +0 -3
- package/skills/documents/docx/scripts/templates/commentsExtensible.xml +0 -3
- package/skills/documents/docx/scripts/templates/commentsIds.xml +0 -3
- package/skills/documents/docx/scripts/templates/people.xml +0 -3
- package/skills/documents/pdf/LICENSE.txt +0 -30
- package/skills/documents/pdf/SKILL-zh.md +0 -314
- package/skills/documents/pdf/SKILL.md +0 -314
- package/skills/documents/pdf/forms.md +0 -294
- package/skills/documents/pdf/reference.md +0 -612
- package/skills/documents/pdf/scripts/check_bounding_boxes.py +0 -65
- package/skills/documents/pdf/scripts/check_fillable_fields.py +0 -11
- package/skills/documents/pdf/scripts/convert_pdf_to_images.py +0 -33
- package/skills/documents/pdf/scripts/create_validation_image.py +0 -37
- package/skills/documents/pdf/scripts/extract_form_field_info.py +0 -122
- package/skills/documents/pdf/scripts/extract_form_structure.py +0 -115
- package/skills/documents/pdf/scripts/fill_fillable_fields.py +0 -98
- package/skills/documents/pdf/scripts/fill_pdf_form_with_annotations.py +0 -107
- package/skills/documents/pptx/LICENSE.txt +0 -30
- package/skills/documents/pptx/SKILL-zh.md +0 -232
- package/skills/documents/pptx/SKILL.md +0 -232
- package/skills/documents/pptx/editing.md +0 -205
- package/skills/documents/pptx/pptxgenjs.md +0 -420
- package/skills/documents/pptx/scripts/__init__.py +0 -0
- package/skills/documents/pptx/scripts/add_slide.py +0 -195
- package/skills/documents/pptx/scripts/clean.py +0 -286
- package/skills/documents/pptx/scripts/office/helpers/__init__.py +0 -0
- package/skills/documents/pptx/scripts/office/helpers/merge_runs.py +0 -199
- package/skills/documents/pptx/scripts/office/helpers/simplify_redlines.py +0 -197
- package/skills/documents/pptx/scripts/office/pack.py +0 -159
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/skills/documents/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/skills/documents/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/skills/documents/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/skills/documents/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/skills/documents/pptx/scripts/office/schemas/mce/mc.xsd +0 -75
- package/skills/documents/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -560
- package/skills/documents/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -67
- package/skills/documents/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -14
- package/skills/documents/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/skills/documents/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/skills/documents/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/skills/documents/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/skills/documents/pptx/scripts/office/soffice.py +0 -183
- package/skills/documents/pptx/scripts/office/unpack.py +0 -132
- package/skills/documents/pptx/scripts/office/validate.py +0 -111
- package/skills/documents/pptx/scripts/office/validators/__init__.py +0 -15
- package/skills/documents/pptx/scripts/office/validators/base.py +0 -847
- package/skills/documents/pptx/scripts/office/validators/docx.py +0 -446
- package/skills/documents/pptx/scripts/office/validators/pptx.py +0 -275
- package/skills/documents/pptx/scripts/office/validators/redlining.py +0 -247
- package/skills/documents/pptx/scripts/thumbnail.py +0 -289
- package/skills/documents/xlsx/SKILL-zh.md +0 -292
- package/skills/engineering/diagnose/SKILL-zh.md +0 -117
- package/skills/engineering/grill-with-docs/ADR-FORMAT.md +0 -47
- package/skills/engineering/grill-with-docs/CONTEXT-FORMAT.md +0 -77
- package/skills/engineering/grill-with-docs/SKILL-zh.md +0 -88
- package/skills/engineering/grill-with-docs/SKILL.md +0 -88
- package/skills/engineering/improve-codebase-architecture/DEEPENING.md +0 -37
- package/skills/engineering/improve-codebase-architecture/INTERFACE-DESIGN.md +0 -44
- package/skills/engineering/improve-codebase-architecture/LANGUAGE.md +0 -53
- package/skills/engineering/improve-codebase-architecture/SKILL-zh.md +0 -71
- package/skills/engineering/improve-codebase-architecture/SKILL.md +0 -71
- package/skills/engineering/tdd/SKILL-zh.md +0 -109
- package/skills/engineering/to-issues/SKILL-zh.md +0 -81
- package/skills/engineering/to-issues/SKILL.md +0 -81
- package/skills/engineering/to-prd/SKILL-zh.md +0 -76
- package/skills/engineering/to-prd/SKILL.md +0 -74
- package/skills/engineering/zoom-out/SKILL-zh.md +0 -7
- package/skills/engineering/zoom-out/SKILL.md +0 -7
- package/skills/tools/find-skills/SKILL-zh.md +0 -440
- package/skills/tools/github/SKILL-zh.md +0 -48
- package/skills/tools/internal-comms/LICENSE.txt +0 -202
- package/skills/tools/internal-comms/SKILL-zh.md +0 -32
- package/skills/tools/internal-comms/SKILL.md +0 -32
- package/skills/tools/internal-comms/examples/3p-updates.md +0 -47
- package/skills/tools/internal-comms/examples/company-newsletter.md +0 -65
- package/skills/tools/internal-comms/examples/faq-answers.md +0 -30
- package/skills/tools/internal-comms/examples/general-comms.md +0 -16
- package/skills/tools/skill-creator/LICENSE.txt +0 -202
- package/skills/tools/skill-creator/SKILL-zh.md +0 -483
- package/skills/tools/skill-creator/SKILL.md +0 -485
- package/skills/tools/skill-creator/agents/analyzer.md +0 -274
- package/skills/tools/skill-creator/agents/comparator.md +0 -202
- package/skills/tools/skill-creator/agents/grader.md +0 -223
- package/skills/tools/skill-creator/assets/eval_review.html +0 -146
- package/skills/tools/skill-creator/eval-viewer/generate_review.py +0 -471
- package/skills/tools/skill-creator/eval-viewer/viewer.html +0 -1325
- package/skills/tools/skill-creator/references/schemas.md +0 -430
- package/skills/tools/skill-creator/scripts/__init__.py +0 -0
- package/skills/tools/skill-creator/scripts/aggregate_benchmark.py +0 -401
- package/skills/tools/skill-creator/scripts/generate_report.py +0 -326
- package/skills/tools/skill-creator/scripts/improve_description.py +0 -247
- package/skills/tools/skill-creator/scripts/package_skill.py +0 -136
- package/skills/tools/skill-creator/scripts/quick_validate.py +0 -103
- package/skills/tools/skill-creator/scripts/run_eval.py +0 -310
- package/skills/tools/skill-creator/scripts/run_loop.py +0 -328
- package/skills/tools/skill-creator/scripts/utils.py +0 -47
- package/skills/tools/summarize/SKILL-zh.md +0 -47
- package/skills/tools/weather/SKILL-zh.md +0 -46
- package/skills/tools/weather/SKILL.md +0 -46
- package/skills/tools/webapp-testing/SKILL-zh.md +0 -96
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","names":[],"sources":["../../../../../src/cli/commands/setup-shared/runner.ts"],"sourcesContent":["import { ZodError } from 'zod';\n\nimport { loadConfig, saveConfig } from '../../../config/index.js';\nimport { ConfigSchema, type Config } from '../../../config/schema.js';\nimport { diffConfigPaths } from '../../../config/diff.js';\n\nimport { emitOutcome } from './output.js';\nimport { isPromptCancelled } from './prompts.js';\nimport {\n SETUP_EXIT,\n type SetupAction,\n type SetupError,\n type SetupOutcome,\n type SetupRunOptions,\n} from './types.js';\n\n/** Thrown by a {@link SetupMutator.mutate} to fail the run with a clean message. */\nexport class SetupValidationError extends Error {\n readonly errors: SetupError[];\n\n constructor(errors: SetupError[] | SetupError | string) {\n const list: SetupError[] = Array.isArray(errors)\n ? errors\n : typeof errors === 'string'\n ? [{ message: errors }]\n : [errors];\n super(list.map((e) => (e.path ? `[${e.path}] ${e.message}` : e.message)).join('; '));\n this.name = 'SetupValidationError';\n this.errors = list;\n }\n}\n\nexport interface SetupMutator {\n /** Logical domain — `providers`, `channels
|
|
1
|
+
{"version":3,"file":"runner.js","names":[],"sources":["../../../../../src/cli/commands/setup-shared/runner.ts"],"sourcesContent":["import { ZodError } from 'zod';\n\nimport { loadConfig, saveConfig } from '../../../config/index.js';\nimport { ConfigSchema, type Config } from '../../../config/schema.js';\nimport { diffConfigPaths } from '../../../config/diff.js';\n\nimport { emitOutcome } from './output.js';\nimport { isPromptCancelled } from './prompts.js';\nimport {\n SETUP_EXIT,\n type SetupAction,\n type SetupError,\n type SetupOutcome,\n type SetupRunOptions,\n} from './types.js';\n\n/** Thrown by a {@link SetupMutator.mutate} to fail the run with a clean message. */\nexport class SetupValidationError extends Error {\n readonly errors: SetupError[];\n\n constructor(errors: SetupError[] | SetupError | string) {\n const list: SetupError[] = Array.isArray(errors)\n ? errors\n : typeof errors === 'string'\n ? [{ message: errors }]\n : [errors];\n super(list.map((e) => (e.path ? `[${e.path}] ${e.message}` : e.message)).join('; '));\n this.name = 'SetupValidationError';\n this.errors = list;\n }\n}\n\nexport interface SetupMutator {\n /** Logical domain — `providers`, `channels.<id>`, etc. */\n domain: string;\n /** Target id within the domain (provider id, account id, …). */\n target?: string;\n /** What the operation is conceptually doing. */\n action: SetupAction;\n /** Mutates `config` in place (or returns a replacement) and returns it. */\n mutate(config: Config): Config | Promise<Config>;\n /** Optional masked value to surface in the outcome (for agents / UI). */\n resultValue?(config: Config): unknown;\n /** Optional human-readable notes appended to the outcome. */\n notes?(config: Config): string[];\n}\n\nexport interface RunSetupArgs {\n configPath: string;\n mutator: SetupMutator;\n options: SetupRunOptions;\n}\n\nfunction zodErrorToSetupErrors(err: ZodError): SetupError[] {\n return err.issues.map((issue) => ({\n path: issue.path.join('.') || undefined,\n message: issue.message,\n }));\n}\n\n/**\n * Headless setup pipeline — load → clone → mutate → validate(zod) → diff →\n * (write | dry-run) → outcome. Returns the {@link SetupOutcome} without any\n * I/O side effects (no stdout, no `process.exitCode`).\n *\n * Used by CLI setup commands via {@link runSetup}. Keep this side-effect-free\n * so it stays safe to call from tests and other programmatic callers.\n *\n * Custom errors thrown by the mutator surface as `errors[]` on the outcome:\n * - `SetupValidationError` — explicit `{path?, message}[]` entries\n * - `ExitPromptError` (from `@inquirer/prompts`) — surfaced as \"Cancelled by user\"\n * - any other `Error` — the message is used verbatim\n */\nexport async function runSetupHeadless(args: RunSetupArgs): Promise<SetupOutcome> {\n const { configPath, mutator, options } = args;\n\n let before: Config;\n try {\n before = loadConfig(configPath);\n } catch (error) {\n return {\n ok: false,\n action: mutator.action,\n domain: mutator.domain,\n target: mutator.target,\n changedPaths: [],\n dryRun: options.dryRun,\n errors: [{ message: `Failed to load config: ${(error as Error).message}` }],\n };\n }\n\n // `loadConfig` parses through the schema once, but the schema isn't fully\n // idempotent — re-parsing a result can fill in deeper defaults that the\n // first pass left undefined. To avoid false-positive diffs against those\n // defaults, normalize both sides through one extra parse cycle.\n const baselineParsed = ConfigSchema.safeParse(structuredClone(before));\n const baseline: Config = baselineParsed.success ? baselineParsed.data : before;\n\n const cloneBefore = structuredClone(before);\n let mutated: Config;\n try {\n mutated = await mutator.mutate(cloneBefore);\n } catch (error) {\n if (isPromptCancelled(error)) {\n return {\n ok: false,\n action: mutator.action,\n domain: mutator.domain,\n target: mutator.target,\n changedPaths: [],\n dryRun: options.dryRun,\n errors: [{ message: 'Cancelled by user' }],\n };\n }\n const errors =\n error instanceof SetupValidationError\n ? error.errors\n : [{ message: (error as Error).message }];\n return {\n ok: false,\n action: mutator.action,\n domain: mutator.domain,\n target: mutator.target,\n changedPaths: [],\n dryRun: options.dryRun,\n errors,\n };\n }\n\n // Validate the full config (catches invariants beyond the mutator's scope).\n const parsed = ConfigSchema.safeParse(mutated);\n if (!parsed.success) {\n return {\n ok: false,\n action: mutator.action,\n domain: mutator.domain,\n target: mutator.target,\n changedPaths: [],\n dryRun: options.dryRun,\n errors: zodErrorToSetupErrors(parsed.error),\n };\n }\n const validated = parsed.data;\n\n const changedPaths = diffConfigPaths(baseline, validated);\n const action: SetupAction = changedPaths.length === 0 ? 'noop' : mutator.action;\n\n if (changedPaths.length > 0 && !options.dryRun) {\n try {\n await saveConfig(validated, configPath);\n } catch (error) {\n return {\n ok: false,\n action: mutator.action,\n domain: mutator.domain,\n target: mutator.target,\n changedPaths,\n dryRun: false,\n errors: [{ message: `Failed to save config: ${(error as Error).message}` }],\n };\n }\n }\n\n return {\n ok: true,\n action,\n domain: mutator.domain,\n target: mutator.target,\n changedPaths,\n dryRun: options.dryRun,\n value: mutator.resultValue?.(validated),\n notes: mutator.notes?.(validated),\n };\n}\n\n/**\n * CLI wrapper around {@link runSetupHeadless}: emits the outcome to stdout\n * (text or single-line JSON) and sets `process.exitCode` to the standard\n * setup exit codes (0 ok / 1 error / 2 cancelled).\n *\n * Use this from CLI command actions; use {@link runSetupHeadless} from any\n * non-CLI caller (HTTP routes, library code, tests).\n */\nexport async function runSetup(args: RunSetupArgs): Promise<SetupOutcome> {\n const outcome = await runSetupHeadless(args);\n emitOutcome(outcome, args.options.json);\n if (outcome.ok) {\n process.exitCode = SETUP_EXIT.OK;\n } else if (outcome.errors?.some((e) => /cancelled/i.test(e.message))) {\n process.exitCode = SETUP_EXIT.CANCELLED;\n } else {\n process.exitCode = SETUP_EXIT.ERROR;\n }\n return outcome;\n}\n"],"mappings":";;;;;;;;aAGsE;;AActE,IAAa,uBAAb,cAA0C,MAAM;CAC9C;CAEA,YAAY,QAA4C;EACtD,MAAM,OAAqB,MAAM,QAAQ,OAAO,GAC5C,SACA,OAAO,WAAW,WAChB,CAAC,EAAE,SAAS,QAAQ,CAAC,GACrB,CAAC,OAAO;AACd,QAAM,KAAK,KAAK,MAAO,EAAE,OAAO,IAAI,EAAE,KAAK,IAAI,EAAE,YAAY,EAAE,QAAS,CAAC,KAAK,KAAK,CAAC;AACpF,OAAK,OAAO;AACZ,OAAK,SAAS;;;AAyBlB,SAAS,sBAAsB,KAA6B;AAC1D,QAAO,IAAI,OAAO,KAAK,WAAW;EAChC,MAAM,MAAM,KAAK,KAAK,IAAI,IAAI,KAAA;EAC9B,SAAS,MAAM;EAChB,EAAE;;;;;;;;;;;;;;;AAgBL,eAAsB,iBAAiB,MAA2C;CAChF,MAAM,EAAE,YAAY,SAAS,YAAY;CAEzC,IAAI;AACJ,KAAI;AACF,WAAS,WAAW,WAAW;UACxB,OAAO;AACd,SAAO;GACL,IAAI;GACJ,QAAQ,QAAQ;GAChB,QAAQ,QAAQ;GAChB,QAAQ,QAAQ;GAChB,cAAc,EAAE;GAChB,QAAQ,QAAQ;GAChB,QAAQ,CAAC,EAAE,SAAS,0BAA2B,MAAgB,WAAW,CAAC;GAC5E;;CAOH,MAAM,iBAAiB,aAAa,UAAU,gBAAgB,OAAO,CAAC;CACtE,MAAM,WAAmB,eAAe,UAAU,eAAe,OAAO;CAExE,MAAM,cAAc,gBAAgB,OAAO;CAC3C,IAAI;AACJ,KAAI;AACF,YAAU,MAAM,QAAQ,OAAO,YAAY;UACpC,OAAO;AACd,MAAI,kBAAkB,MAAM,CAC1B,QAAO;GACL,IAAI;GACJ,QAAQ,QAAQ;GAChB,QAAQ,QAAQ;GAChB,QAAQ,QAAQ;GAChB,cAAc,EAAE;GAChB,QAAQ,QAAQ;GAChB,QAAQ,CAAC,EAAE,SAAS,qBAAqB,CAAC;GAC3C;EAEH,MAAM,SACJ,iBAAiB,uBACb,MAAM,SACN,CAAC,EAAE,SAAU,MAAgB,SAAS,CAAC;AAC7C,SAAO;GACL,IAAI;GACJ,QAAQ,QAAQ;GAChB,QAAQ,QAAQ;GAChB,QAAQ,QAAQ;GAChB,cAAc,EAAE;GAChB,QAAQ,QAAQ;GAChB;GACD;;CAIH,MAAM,SAAS,aAAa,UAAU,QAAQ;AAC9C,KAAI,CAAC,OAAO,QACV,QAAO;EACL,IAAI;EACJ,QAAQ,QAAQ;EAChB,QAAQ,QAAQ;EAChB,QAAQ,QAAQ;EAChB,cAAc,EAAE;EAChB,QAAQ,QAAQ;EAChB,QAAQ,sBAAsB,OAAO,MAAM;EAC5C;CAEH,MAAM,YAAY,OAAO;CAEzB,MAAM,eAAe,gBAAgB,UAAU,UAAU;CACzD,MAAM,SAAsB,aAAa,WAAW,IAAI,SAAS,QAAQ;AAEzE,KAAI,aAAa,SAAS,KAAK,CAAC,QAAQ,OACtC,KAAI;AACF,QAAM,WAAW,WAAW,WAAW;UAChC,OAAO;AACd,SAAO;GACL,IAAI;GACJ,QAAQ,QAAQ;GAChB,QAAQ,QAAQ;GAChB,QAAQ,QAAQ;GAChB;GACA,QAAQ;GACR,QAAQ,CAAC,EAAE,SAAS,0BAA2B,MAAgB,WAAW,CAAC;GAC5E;;AAIL,QAAO;EACL,IAAI;EACJ;EACA,QAAQ,QAAQ;EAChB,QAAQ,QAAQ;EAChB;EACA,QAAQ,QAAQ;EAChB,OAAO,QAAQ,cAAc,UAAU;EACvC,OAAO,QAAQ,QAAQ,UAAU;EAClC;;;;;;;;;;AAWH,eAAsB,SAAS,MAA2C;CACxE,MAAM,UAAU,MAAM,iBAAiB,KAAK;AAC5C,aAAY,SAAS,KAAK,QAAQ,KAAK;AACvC,KAAI,QAAQ,GACV,SAAQ,WAAW,WAAW;UACrB,QAAQ,QAAQ,MAAM,MAAM,aAAa,KAAK,EAAE,QAAQ,CAAC,CAClE,SAAQ,WAAW,WAAW;KAE9B,SAAQ,WAAW,WAAW;AAEhC,QAAO"}
|
|
@@ -14,7 +14,7 @@ export interface SetupError {
|
|
|
14
14
|
export interface SetupOutcome {
|
|
15
15
|
ok: boolean;
|
|
16
16
|
action: SetupAction;
|
|
17
|
-
/** Logical domain — `providers`, `channels
|
|
17
|
+
/** Logical domain — `providers`, `channels.<id>`, etc. */
|
|
18
18
|
domain: string;
|
|
19
19
|
/** Specific target id within the domain (provider id, account id, etc.). */
|
|
20
20
|
target?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../../../src/cli/commands/setup-shared/types.ts"],"sourcesContent":["/**\n * Shared types for `xopc <domain>` setup-style commands (providers / channels / ...).\n *\n * Every setup command runs the same load → mutate → validate → diff → write\n * pipeline, and emits the same structured outcome so agents (M2 skills) and the\n * WebUI (M3) can consume results uniformly.\n */\n\nexport type SetupAction = 'add' | 'set' | 'remove' | 'noop';\n\nexport interface SetupError {\n /** Dot path of the offending field, when known (e.g. `providers.openai.apiKey`). */\n path?: string;\n message: string;\n}\n\nexport interface SetupOutcome {\n ok: boolean;\n action: SetupAction;\n /** Logical domain — `providers`, `channels
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../../../src/cli/commands/setup-shared/types.ts"],"sourcesContent":["/**\n * Shared types for `xopc <domain>` setup-style commands (providers / channels / ...).\n *\n * Every setup command runs the same load → mutate → validate → diff → write\n * pipeline, and emits the same structured outcome so agents (M2 skills) and the\n * WebUI (M3) can consume results uniformly.\n */\n\nexport type SetupAction = 'add' | 'set' | 'remove' | 'noop';\n\nexport interface SetupError {\n /** Dot path of the offending field, when known (e.g. `providers.openai.apiKey`). */\n path?: string;\n message: string;\n}\n\nexport interface SetupOutcome {\n ok: boolean;\n action: SetupAction;\n /** Logical domain — `providers`, `channels.<id>`, etc. */\n domain: string;\n /** Specific target id within the domain (provider id, account id, etc.). */\n target?: string;\n /** Config dot paths that differ between before and after. */\n changedPaths: string[];\n /** True when run with `--dry-run`. Nothing was written. */\n dryRun: boolean;\n /** Validation / I/O errors. Empty when ok. */\n errors?: SetupError[];\n /** Resulting (masked) value of the mutated entry, for agent / UI display. */\n value?: unknown;\n /** Human-readable summary lines for text output. */\n notes?: string[];\n}\n\nexport interface SetupRunOptions {\n /** When true, validate + diff but do not write. */\n dryRun: boolean;\n /** When true, emit a single JSON line on stdout and stay silent otherwise. */\n json: boolean;\n}\n\n/**\n * Standardized exit codes for setup-style commands. Set on `process.exitCode`\n * (don't call `process.exit` directly so JSON output flushes cleanly).\n */\nexport const SETUP_EXIT = {\n OK: 0,\n ERROR: 1,\n CANCELLED: 2,\n} as const;\n"],"mappings":";;;;;AA8CA,MAAa,aAAa;CACxB,IAAI;CACJ,OAAO;CACP,WAAW;CACZ"}
|
|
@@ -3,19 +3,26 @@ import { Command } from "commander";
|
|
|
3
3
|
//#region src/cli/commands/tui.ts
|
|
4
4
|
function createTuiCommand(_ctx) {
|
|
5
5
|
return new Command("tui").description("Interactive terminal UI (pi-tui)").addHelpText("after", formatExamples([
|
|
6
|
-
"xopc tui #
|
|
7
|
-
"xopc tui --
|
|
6
|
+
"xopc tui # Embedded mode (default)",
|
|
7
|
+
"xopc tui --gateway # Force gateway mode",
|
|
8
|
+
"xopc tui --local # Embedded mode (default)",
|
|
8
9
|
"xopc tui --url http://host:3120 --token xxx # Connect to remote gateway",
|
|
9
|
-
"xopc tui -s
|
|
10
|
+
"xopc tui -s agent:main:tui-... # Resume a session",
|
|
10
11
|
"xopc tui -m \"Summarize my inbox\" # Send a message on launch"
|
|
11
|
-
])).option("--url <url>", "Gateway URL (default: http://localhost:3120)").option("--token <token>", "Gateway bearer token").option("-s, --session <key>", "Session key to resume").option("-m, --message <text>", "Send a message on launch").option("--local", "Run in embedded mode (no gateway required)").option("--theme <name>", "Theme: auto, dark, light, or custom name from ~/.xopc/themes/").option("--thinking <level>", "Thinking level override").action(async (options) => {
|
|
12
|
+
])).option("--url <url>", "Gateway URL (default: http://localhost:3120)").option("--token <token>", "Gateway bearer token").option("-s, --session <key>", "Session key to resume (omitted: start a fresh TUI session)").option("-m, --message <text>", "Send a message on launch").option("--workdir <dir>", "Workspace directory for the new TUI session").option("--no-cwd", "Do not use the launch directory as the new TUI session workspace").option("--local", "Run in embedded mode (no gateway required)").option("--gateway", "Force gateway mode even without explicit --url or --token").option("--theme <name>", "Theme: auto, dark, light, or custom name from ~/.xopc/themes/").option("--thinking <level>", "Thinking level override").action(async (options) => {
|
|
12
13
|
const { runTui } = await import("../../tui/tui.js");
|
|
14
|
+
const useLocal = options.local === true;
|
|
15
|
+
const useGateway = options.gateway === true || typeof options.url === "string" || typeof options.token === "string";
|
|
16
|
+
if (useLocal && useGateway) console.log("`--local` and gateway flags both set. Using local mode.");
|
|
17
|
+
const localMode = useLocal || !useGateway;
|
|
13
18
|
await runTui({
|
|
14
19
|
url: typeof options.url === "string" ? options.url : void 0,
|
|
15
20
|
token: typeof options.token === "string" ? options.token : void 0,
|
|
16
21
|
session: typeof options.session === "string" ? options.session : void 0,
|
|
17
22
|
message: typeof options.message === "string" ? options.message : void 0,
|
|
18
|
-
|
|
23
|
+
workdir: typeof options.workdir === "string" ? options.workdir : void 0,
|
|
24
|
+
useStartupCwd: options.cwd !== false,
|
|
25
|
+
local: localMode,
|
|
19
26
|
thinking: typeof options.thinking === "string" ? options.thinking : void 0,
|
|
20
27
|
theme: typeof options.theme === "string" ? options.theme : void 0
|
|
21
28
|
});
|
|
@@ -31,6 +38,7 @@ register({
|
|
|
31
38
|
examples: [
|
|
32
39
|
"xopc tui",
|
|
33
40
|
"xopc tui --local",
|
|
41
|
+
"xopc tui --gateway",
|
|
34
42
|
"xopc tui --url http://host:3120"
|
|
35
43
|
]
|
|
36
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.js","names":[],"sources":["../../../../src/cli/commands/tui.ts"],"sourcesContent":["import { Command } from 'commander';\n\nimport { register, formatExamples, type CLIContext } from '../registry.js';\n\nfunction createTuiCommand(_ctx: CLIContext): Command {\n const cmd = new Command('tui')\n .description('Interactive terminal UI (pi-tui)')\n .addHelpText(\n 'after',\n formatExamples([\n 'xopc tui #
|
|
1
|
+
{"version":3,"file":"tui.js","names":[],"sources":["../../../../src/cli/commands/tui.ts"],"sourcesContent":["import { Command } from 'commander';\n\nimport { register, formatExamples, type CLIContext } from '../registry.js';\n\nfunction createTuiCommand(_ctx: CLIContext): Command {\n const cmd = new Command('tui')\n .description('Interactive terminal UI (pi-tui)')\n .addHelpText(\n 'after',\n formatExamples([\n 'xopc tui # Embedded mode (default)',\n 'xopc tui --gateway # Force gateway mode',\n 'xopc tui --local # Embedded mode (default)',\n 'xopc tui --url http://host:3120 --token xxx # Connect to remote gateway',\n 'xopc tui -s agent:main:tui-... # Resume a session',\n 'xopc tui -m \"Summarize my inbox\" # Send a message on launch',\n ]),\n )\n .option('--url <url>', 'Gateway URL (default: http://localhost:3120)')\n .option('--token <token>', 'Gateway bearer token')\n .option('-s, --session <key>', 'Session key to resume (omitted: start a fresh TUI session)')\n .option('-m, --message <text>', 'Send a message on launch')\n .option('--workdir <dir>', 'Workspace directory for the new TUI session')\n .option('--no-cwd', 'Do not use the launch directory as the new TUI session workspace')\n .option('--local', 'Run in embedded mode (no gateway required)')\n .option('--gateway', 'Force gateway mode even without explicit --url or --token')\n .option('--theme <name>', 'Theme: auto, dark, light, or custom name from ~/.xopc/themes/')\n .option('--thinking <level>', 'Thinking level override')\n .action(async (options: Record<string, string | boolean | undefined>) => {\n const { runTui } = await import('../../tui/tui.js');\n const useLocal = options.local === true;\n const useGateway =\n options.gateway === true ||\n typeof options.url === 'string' ||\n typeof options.token === 'string';\n if (useLocal && useGateway) {\n console.log('`--local` and gateway flags both set. Using local mode.');\n }\n const localMode = useLocal || !useGateway;\n await runTui({\n url: typeof options.url === 'string' ? options.url : undefined,\n token: typeof options.token === 'string' ? options.token : undefined,\n session: typeof options.session === 'string' ? options.session : undefined,\n message: typeof options.message === 'string' ? options.message : undefined,\n workdir: typeof options.workdir === 'string' ? options.workdir : undefined,\n useStartupCwd: options.cwd !== false,\n local: localMode,\n thinking: typeof options.thinking === 'string' ? options.thinking : undefined,\n theme: typeof options.theme === 'string' ? options.theme : undefined,\n });\n });\n\n return cmd;\n}\n\nregister({\n id: 'tui',\n name: 'tui',\n description: 'Interactive terminal UI (pi-tui)',\n factory: createTuiCommand,\n metadata: {\n category: 'runtime',\n examples: [\n 'xopc tui',\n 'xopc tui --local',\n 'xopc tui --gateway',\n 'xopc tui --url http://host:3120',\n ],\n },\n});\n"],"mappings":";;;AAIA,SAAS,iBAAiB,MAA2B;AAgDnD,QA/CY,IAAI,QAAQ,MAAM,CAC3B,YAAY,mCAAmC,CAC/C,YACC,SACA,eAAe;EACb;EACA;EACA;EACA;EACA;EACA;EACD,CAAC,CACH,CACA,OAAO,eAAe,+CAA+C,CACrE,OAAO,mBAAmB,uBAAuB,CACjD,OAAO,uBAAuB,6DAA6D,CAC3F,OAAO,wBAAwB,2BAA2B,CAC1D,OAAO,mBAAmB,8CAA8C,CACxE,OAAO,YAAY,mEAAmE,CACtF,OAAO,WAAW,6CAA6C,CAC/D,OAAO,aAAa,4DAA4D,CAChF,OAAO,kBAAkB,gEAAgE,CACzF,OAAO,sBAAsB,0BAA0B,CACvD,OAAO,OAAO,YAA0D;EACvE,MAAM,EAAE,WAAW,MAAM,OAAO;EAChC,MAAM,WAAW,QAAQ,UAAU;EACnC,MAAM,aACJ,QAAQ,YAAY,QACpB,OAAO,QAAQ,QAAQ,YACvB,OAAO,QAAQ,UAAU;AAC3B,MAAI,YAAY,WACd,SAAQ,IAAI,0DAA0D;EAExE,MAAM,YAAY,YAAY,CAAC;AAC/B,QAAM,OAAO;GACX,KAAK,OAAO,QAAQ,QAAQ,WAAW,QAAQ,MAAM,KAAA;GACrD,OAAO,OAAO,QAAQ,UAAU,WAAW,QAAQ,QAAQ,KAAA;GAC3D,SAAS,OAAO,QAAQ,YAAY,WAAW,QAAQ,UAAU,KAAA;GACjE,SAAS,OAAO,QAAQ,YAAY,WAAW,QAAQ,UAAU,KAAA;GACjE,SAAS,OAAO,QAAQ,YAAY,WAAW,QAAQ,UAAU,KAAA;GACjE,eAAe,QAAQ,QAAQ;GAC/B,OAAO;GACP,UAAU,OAAO,QAAQ,aAAa,WAAW,QAAQ,WAAW,KAAA;GACpE,OAAO,OAAO,QAAQ,UAAU,WAAW,QAAQ,QAAQ,KAAA;GAC5D,CAAC;GAGI;;AAGZ,SAAS;CACP,IAAI;CACJ,MAAM;CACN,aAAa;CACb,SAAS;CACT,UAAU;EACR,UAAU;EACV,UAAU;GACR;GACA;GACA;GACA;GACD;EACF;CACF,CAAC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { loadConfig } from "../config/loader.js";
|
|
2
2
|
import { collectConfiguredChannelIds } from "../extensions/activation-context.js";
|
|
3
|
-
import { getWorkspacePath } from "../config/workspace-path-helpers.js";
|
|
4
3
|
import { ExtensionLoader } from "../extensions/loader.js";
|
|
5
4
|
import "../extensions/index.js";
|
|
6
5
|
import { MessageBus } from "../infra/bus/queue.js";
|
|
7
6
|
import "../infra/bus/index.js";
|
|
8
7
|
import { createDefaultContext } from "./registry.js";
|
|
8
|
+
import { getWorkspacePath } from "../config/workspace-path-helpers.js";
|
|
9
9
|
import "../config/index.js";
|
|
10
10
|
import { registerExtensionCliProgram } from "../extensions/sdk/channel-helpers.js";
|
|
11
11
|
import { join } from "path";
|
|
@@ -2,18 +2,18 @@
|
|
|
2
2
|
* Mutate `agents.list` / bindings when adding or removing agents.
|
|
3
3
|
*/
|
|
4
4
|
import type { Config } from '../config/schema.js';
|
|
5
|
-
import type { LocalizedText } from '../config/localized-text.js';
|
|
6
5
|
import { listAgentEntries } from '../agent/agent-scope.js';
|
|
7
6
|
type AgentEntry = NonNullable<NonNullable<Config['agents']>['list']>[number];
|
|
8
7
|
export { listAgentEntries };
|
|
9
8
|
export declare function findAgentEntryIndex(list: AgentEntry[], agentId: string): number;
|
|
10
9
|
export declare function applyAgentConfig(cfg: Config, params: {
|
|
11
10
|
agentId: string;
|
|
12
|
-
name?: LocalizedText;
|
|
13
|
-
description?: LocalizedText;
|
|
14
11
|
workspace?: string;
|
|
15
12
|
agentDir?: string;
|
|
16
13
|
model?: string;
|
|
14
|
+
models?: AgentEntry['models'];
|
|
15
|
+
skills?: string[];
|
|
16
|
+
tools?: AgentEntry['tools'];
|
|
17
17
|
}): Config;
|
|
18
18
|
export declare function pruneAgentConfig(cfg: Config, agentId: string): {
|
|
19
19
|
config: Config;
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { init_agent_scope, listAgentEntries, normalizeAgentId, resolveAgentHomeDir, resolveAgentWorkspaceDir, resolveDefaultAgentId } from "../agent/agent-scope.js";
|
|
2
|
-
import { init_localized_text, normalizeLocalizedText } from "../config/localized-text.js";
|
|
3
2
|
import { existsSync } from "node:fs";
|
|
4
3
|
import { rm } from "node:fs/promises";
|
|
5
4
|
//#region src/commands/agents.config.ts
|
|
6
5
|
/**
|
|
7
6
|
* Mutate `agents.list` / bindings when adding or removing agents.
|
|
8
7
|
*/
|
|
9
|
-
init_localized_text();
|
|
10
8
|
init_agent_scope();
|
|
11
9
|
function findAgentEntryIndex(list, agentId) {
|
|
12
10
|
const id = normalizeAgentId(agentId);
|
|
@@ -14,8 +12,6 @@ function findAgentEntryIndex(list, agentId) {
|
|
|
14
12
|
}
|
|
15
13
|
function applyAgentConfig(cfg, params) {
|
|
16
14
|
const agentId = normalizeAgentId(params.agentId);
|
|
17
|
-
const name = normalizeLocalizedText(params.name);
|
|
18
|
-
const description = normalizeLocalizedText(params.description);
|
|
19
15
|
const list = listAgentEntries(cfg);
|
|
20
16
|
const index = findAgentEntryIndex(list, agentId);
|
|
21
17
|
const base = index >= 0 ? list[index] : {
|
|
@@ -25,11 +21,15 @@ function applyAgentConfig(cfg, params) {
|
|
|
25
21
|
const nextEntry = {
|
|
26
22
|
...base,
|
|
27
23
|
enabled: base.enabled ?? true,
|
|
28
|
-
...name ? { name } : {},
|
|
29
|
-
...description ? { description } : {},
|
|
30
24
|
...params.workspace ? { workspace: params.workspace } : {},
|
|
31
25
|
...params.agentDir ? { agentDir: params.agentDir } : {},
|
|
32
|
-
...params.
|
|
26
|
+
...params.models ? { models: params.models } : {},
|
|
27
|
+
...params.model ? { models: {
|
|
28
|
+
...base.models,
|
|
29
|
+
chat: { primary: params.model }
|
|
30
|
+
} } : {},
|
|
31
|
+
...params.skills ? { skills: params.skills } : {},
|
|
32
|
+
...params.tools ? { tools: params.tools } : {}
|
|
33
33
|
};
|
|
34
34
|
const nextList = [...list];
|
|
35
35
|
if (index >= 0) nextList[index] = nextEntry;
|
|
@@ -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
|
|
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 agentDir?: 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 base = index >= 0 ? list[index] : { id: agentId, enabled: true as const };\n const nextEntry: AgentEntry = {\n ...base,\n enabled: base.enabled ?? true,\n ...(params.workspace ? { workspace: params.workspace } : {}),\n ...(params.agentDir ? { agentDir: params.agentDir } : {}),\n ...(params.models ? { models: params.models } : {}),\n ...(params.model ? { models: { ...base.models, chat: { primary: params.model } } } : {}),\n ...(params.skills ? { skills: params.skills } : {}),\n ...(params.tools ? { tools: params.tools } : {}),\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({ id: resolveDefaultAgentId(cfg), enabled: true });\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 : undefined;\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: nextAgents ? { ...cfg.agents, list: nextAgents } : { ...cfg.agents, list: undefined },\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":";;;;;;;kBAeiC;AAMjC,SAAgB,oBAAoB,MAAoB,SAAyB;CAC/E,MAAM,KAAK,iBAAiB,QAAQ;AACpC,QAAO,KAAK,WAAW,MAAM,iBAAiB,EAAE,GAAG,KAAK,GAAG;;AAG7D,SAAgB,iBACd,KACA,QASQ;CACR,MAAM,UAAU,iBAAiB,OAAO,QAAQ;CAChD,MAAM,OAAO,iBAAiB,IAAI;CAClC,MAAM,QAAQ,oBAAoB,MAAM,QAAQ;CAChD,MAAM,OAAO,SAAS,IAAI,KAAK,SAAS;EAAE,IAAI;EAAS,SAAS;EAAe;CAC/E,MAAM,YAAwB;EAC5B,GAAG;EACH,SAAS,KAAK,WAAW;EACzB,GAAI,OAAO,YAAY,EAAE,WAAW,OAAO,WAAW,GAAG,EAAE;EAC3D,GAAI,OAAO,WAAW,EAAE,UAAU,OAAO,UAAU,GAAG,EAAE;EACxD,GAAI,OAAO,SAAS,EAAE,QAAQ,OAAO,QAAQ,GAAG,EAAE;EAClD,GAAI,OAAO,QAAQ,EAAE,QAAQ;GAAE,GAAG,KAAK;GAAQ,MAAM,EAAE,SAAS,OAAO,OAAO;GAAE,EAAE,GAAG,EAAE;EACvF,GAAI,OAAO,SAAS,EAAE,QAAQ,OAAO,QAAQ,GAAG,EAAE;EAClD,GAAI,OAAO,QAAQ,EAAE,OAAO,OAAO,OAAO,GAAG,EAAE;EAChD;CACD,MAAM,WAAW,CAAC,GAAG,KAAK;AAC1B,KAAI,SAAS,EACX,UAAS,SAAS;MACb;AACL,MAAI,SAAS,WAAW,KAAK,YAAY,iBAAiB,sBAAsB,IAAI,CAAC,CACnF,UAAS,KAAK;GAAE,IAAI,sBAAsB,IAAI;GAAE,SAAS;GAAM,CAAC;AAElE,WAAS,KAAK,UAAU;;AAE1B,QAAO;EACL,GAAG;EACH,QAAQ;GACN,GAAG,IAAI;GACP,MAAM;GACP;EACF;;AAGH,SAAgB,iBACd,KACA,SAC6C;CAC7C,MAAM,KAAK,iBAAiB,QAAQ;CAEpC,MAAM,iBADS,iBAAiB,IACH,CAAC,QAAQ,MAAM,iBAAiB,EAAE,GAAG,KAAK,GAAG;CAC1E,MAAM,aAAa,eAAe,SAAS,IAAI,iBAAiB,KAAA;CAEhE,MAAM,WAAW,IAAI,YAAY,EAAE;CACnC,MAAM,mBAAmB,SAAS,QAAQ,MAAM,iBAAiB,EAAE,QAAQ,KAAK,GAAG;AAEnF,QAAO;EACL,QAAQ;GACN,GAAG;GACH,QAAQ,aAAa;IAAE,GAAG,IAAI;IAAQ,MAAM;IAAY,GAAG;IAAE,GAAG,IAAI;IAAQ,MAAM,KAAA;IAAW;GAC7F,UAAU;GACX;EACD,iBAAiB,SAAS,SAAS,iBAAiB;EACrD;;AAGH,eAAsB,wBAAwB,KAAa,IAA2B;CACpF,MAAM,MAAM,iBAAiB,GAAG;AAChC,KAAI,QAAA,OACF,OAAM,IAAI,MAAM,oEAAoE;CAEtF,MAAM,OAAO,oBAAoB,KAAK,IAAI;CAC1C,MAAM,KAAK,yBAAyB,KAAK,IAAI;AAC7C,KAAI,WAAW,KAAK,CAClB,OAAM,GAAG,MAAM;EAAE,WAAW;EAAM,OAAO;EAAM,CAAC;AAElD,KAAI,WAAW,GAAG,IAAI,OAAO,KAC3B,OAAM,GAAG,IAAI;EAAE,WAAW;EAAM,OAAO;EAAM,CAAC"}
|
|
@@ -22,7 +22,7 @@ export interface EffectiveAgentProfile {
|
|
|
22
22
|
reasoningDefault?: ReasoningLevel;
|
|
23
23
|
verboseDefault?: VerboseLevel;
|
|
24
24
|
systemPromptOverride?: string;
|
|
25
|
-
/**
|
|
25
|
+
/** Skill names visible in `<available_skills>`; undefined means all enabled skills, empty means none. */
|
|
26
26
|
skillsAllowlist?: string[];
|
|
27
27
|
tools: EffectiveAgentTools;
|
|
28
28
|
params: Record<string, unknown>;
|
|
@@ -35,6 +35,10 @@ function mergeDisableLists(a, b) {
|
|
|
35
35
|
}
|
|
36
36
|
return out;
|
|
37
37
|
}
|
|
38
|
+
function resolveSkillsAllowlist(defaultsSkills, entrySkills) {
|
|
39
|
+
if (entrySkills !== void 0) return [...entrySkills];
|
|
40
|
+
if (defaultsSkills !== void 0) return [...defaultsSkills];
|
|
41
|
+
}
|
|
38
42
|
/**
|
|
39
43
|
* Agent id used for config lookup from a session key (subagent keys → default agent).
|
|
40
44
|
*/
|
|
@@ -54,7 +58,7 @@ function resolveEffectiveAgentProfile(config, agentId) {
|
|
|
54
58
|
const list = config.agents?.list;
|
|
55
59
|
const entry = Array.isArray(list) ? list.find((a) => a && a.enabled !== false && a.id.toLowerCase() === agentId.toLowerCase()) : void 0;
|
|
56
60
|
const resolvedWorkspacePath = resolveAgentWorkspaceDir(config, agentId);
|
|
57
|
-
const { primary: primaryFromMerged, fallbacks: fallbacksFromMerged } = primaryAndFallbacksFromModelConfig(mergeModelConfig(defaults?.
|
|
61
|
+
const { primary: primaryFromMerged, fallbacks: fallbacksFromMerged } = primaryAndFallbacksFromModelConfig(mergeModelConfig(defaults?.models?.chat, entry?.models?.chat));
|
|
58
62
|
const globalDefault = getAgentDefaultModelRef(config);
|
|
59
63
|
const primaryModelRef = primaryFromMerged?.trim() || globalDefault;
|
|
60
64
|
const disable = mergeDisableLists(defaults?.tools?.disable, entry?.tools?.disable);
|
|
@@ -71,7 +75,7 @@ function resolveEffectiveAgentProfile(config, agentId) {
|
|
|
71
75
|
reasoningDefault: entry?.reasoningDefault ?? defaults?.reasoningDefault,
|
|
72
76
|
verboseDefault: entry?.verboseDefault ?? defaults?.verboseDefault,
|
|
73
77
|
systemPromptOverride: entry?.systemPromptOverride?.trim() ? entry.systemPromptOverride : defaults?.systemPromptOverride?.trim() ? defaults.systemPromptOverride : void 0,
|
|
74
|
-
skillsAllowlist:
|
|
78
|
+
skillsAllowlist: resolveSkillsAllowlist(defaults?.skills, entry?.skills),
|
|
75
79
|
tools: { disable },
|
|
76
80
|
params
|
|
77
81
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-profile.js","names":[],"sources":["../../../src/config/agent-profile.ts"],"sourcesContent":["/**\n * Effective agent profile: merges `agents.defaults` with `agents.list` entry.\n * Subagent session keys fall back to the configured default agent id for profile lookup.\n */\n\nimport type { ThinkLevel, ReasoningLevel, VerboseLevel } from '../agent/transcript/thinking-types.js';\nimport type { Config } from './schema.js';\nimport type { AgentModelConfig } from './schema.js';\nimport { getAgentDefaultModelRef } from './schema.js';\nimport { resolveAgentWorkspaceDir } from '../agent/agent-scope.js';\nimport { getDefaultAgentId, agentExists } from '../routing/resolve-route.js';\nimport { parseSessionKey } from '../routing/session-key.js';\n\nexport { resolveAgentWorkspaceDir } from '../agent/agent-scope.js';\n\nexport type { AgentModelConfig };\n\nexport interface EffectiveAgentTools {\n /** Tool names to exclude (merged: union of defaults + list entry disables). */\n disable: Set<string>;\n}\n\nexport interface EffectiveAgentProfile {\n agentId: string;\n /** Resolved absolute Markdown workspace path (tool cwd, attachments, daily memory/, …). */\n resolvedWorkspacePath: string;\n /** Primary model ref (provider/model); may be empty → runtime default. */\n primaryModelRef: string | undefined;\n fallbacks: string[];\n thinkingDefault?: ThinkLevel;\n reasoningDefault?: ReasoningLevel;\n verboseDefault?: VerboseLevel;\n systemPromptOverride?: string;\n /**
|
|
1
|
+
{"version":3,"file":"agent-profile.js","names":[],"sources":["../../../src/config/agent-profile.ts"],"sourcesContent":["/**\n * Effective agent profile: merges `agents.defaults` with `agents.list` entry.\n * Subagent session keys fall back to the configured default agent id for profile lookup.\n */\n\nimport type { ThinkLevel, ReasoningLevel, VerboseLevel } from '../agent/transcript/thinking-types.js';\nimport type { Config } from './schema.js';\nimport type { AgentModelConfig } from './schema.js';\nimport { getAgentDefaultModelRef } from './schema.js';\nimport { resolveAgentWorkspaceDir } from '../agent/agent-scope.js';\nimport { getDefaultAgentId, agentExists } from '../routing/resolve-route.js';\nimport { parseSessionKey } from '../routing/session-key.js';\n\nexport { resolveAgentWorkspaceDir } from '../agent/agent-scope.js';\n\nexport type { AgentModelConfig };\n\nexport interface EffectiveAgentTools {\n /** Tool names to exclude (merged: union of defaults + list entry disables). */\n disable: Set<string>;\n}\n\nexport interface EffectiveAgentProfile {\n agentId: string;\n /** Resolved absolute Markdown workspace path (tool cwd, attachments, daily memory/, …). */\n resolvedWorkspacePath: string;\n /** Primary model ref (provider/model); may be empty → runtime default. */\n primaryModelRef: string | undefined;\n fallbacks: string[];\n thinkingDefault?: ThinkLevel;\n reasoningDefault?: ReasoningLevel;\n verboseDefault?: VerboseLevel;\n systemPromptOverride?: string;\n /** Skill names visible in `<available_skills>`; undefined means all enabled skills, empty means none. */\n skillsAllowlist?: string[];\n tools: EffectiveAgentTools;\n params: Record<string, unknown>;\n}\n\nfunction mergeModelConfig(\n base: AgentModelConfig | undefined,\n override: AgentModelConfig | undefined,\n): AgentModelConfig | undefined {\n if (override === undefined) return base;\n if (base === undefined) return override;\n return {\n primary: override.primary ?? base.primary,\n fallbacks: override.fallbacks ?? base.fallbacks,\n };\n}\n\nfunction primaryAndFallbacksFromModelConfig(\n raw: AgentModelConfig | undefined,\n): { primary?: string; fallbacks: string[] } {\n const primary = raw?.primary?.trim();\n const fallbacks = Array.isArray(raw?.fallbacks)\n ? raw.fallbacks.map((s) => s.trim()).filter(Boolean)\n : [];\n return { primary: primary || undefined, fallbacks };\n}\n\nfunction mergeDisableLists(a?: string[], b?: string[]): Set<string> {\n const out = new Set<string>();\n for (const x of a ?? []) {\n const s = String(x).trim();\n if (s) {\n out.add(s);\n }\n }\n for (const x of b ?? []) {\n const s = String(x).trim();\n if (s) {\n out.add(s);\n }\n }\n return out;\n}\n\nfunction resolveSkillsAllowlist(defaultsSkills: string[] | undefined, entrySkills: string[] | undefined): string[] | undefined {\n if (entrySkills !== undefined) {\n return [...entrySkills];\n }\n if (defaultsSkills !== undefined) {\n return [...defaultsSkills];\n }\n return undefined;\n}\n\n/**\n * Agent id used for config lookup from a session key (subagent keys → default agent).\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\n/**\n * Merge `agents.defaults` with the matching `agents.list` entry.\n */\nexport function resolveEffectiveAgentProfile(config: Config, agentId: string): EffectiveAgentProfile {\n const defaults = config.agents?.defaults;\n const list = config.agents?.list;\n const entry = Array.isArray(list)\n ? list.find((a) => a && a.enabled !== false && a.id.toLowerCase() === agentId.toLowerCase())\n : undefined;\n\n const resolvedWorkspacePath = resolveAgentWorkspaceDir(config, agentId);\n\n const mergedModel = mergeModelConfig(defaults?.models?.chat, entry?.models?.chat);\n const { primary: primaryFromMerged, fallbacks: fallbacksFromMerged } = primaryAndFallbacksFromModelConfig(mergedModel);\n const globalDefault = getAgentDefaultModelRef(config);\n const primaryModelRef = primaryFromMerged?.trim() || globalDefault;\n\n const disable = mergeDisableLists(\n defaults?.tools?.disable as string[] | undefined,\n entry?.tools?.disable as string[] | undefined,\n );\n\n const params: Record<string, unknown> = {\n ...(defaults?.params as Record<string, unknown> | undefined),\n ...(entry?.params as Record<string, unknown> | undefined),\n };\n\n return {\n agentId: agentId.toLowerCase(),\n resolvedWorkspacePath,\n primaryModelRef,\n fallbacks: fallbacksFromMerged,\n thinkingDefault: entry?.thinkingDefault ?? defaults?.thinkingDefault,\n reasoningDefault: entry?.reasoningDefault ?? defaults?.reasoningDefault,\n verboseDefault: entry?.verboseDefault ?? defaults?.verboseDefault,\n systemPromptOverride: entry?.systemPromptOverride?.trim()\n ? entry.systemPromptOverride\n : defaults?.systemPromptOverride?.trim()\n ? defaults.systemPromptOverride\n : undefined,\n skillsAllowlist: resolveSkillsAllowlist(defaults?.skills, entry?.skills),\n tools: { disable },\n params,\n };\n}\n\nexport function resolveEffectiveAgentProfileForSession(\n config: Config,\n sessionKey: string | undefined | null,\n): EffectiveAgentProfile {\n const id = extractProfileAgentId(sessionKey, config);\n return resolveEffectiveAgentProfile(config, id);\n}\n"],"mappings":";;;;;aAQsD;kBACa;oBACU;kBACjB;AA4B5D,SAAS,iBACP,MACA,UAC8B;AAC9B,KAAI,aAAa,KAAA,EAAW,QAAO;AACnC,KAAI,SAAS,KAAA,EAAW,QAAO;AAC/B,QAAO;EACL,SAAS,SAAS,WAAW,KAAK;EAClC,WAAW,SAAS,aAAa,KAAK;EACvC;;AAGH,SAAS,mCACP,KAC2C;CAC3C,MAAM,UAAU,KAAK,SAAS,MAAM;CACpC,MAAM,YAAY,MAAM,QAAQ,KAAK,UAAU,GAC3C,IAAI,UAAU,KAAK,MAAM,EAAE,MAAM,CAAC,CAAC,OAAO,QAAQ,GAClD,EAAE;AACN,QAAO;EAAE,SAAS,WAAW,KAAA;EAAW;EAAW;;AAGrD,SAAS,kBAAkB,GAAc,GAA2B;CAClE,MAAM,sBAAM,IAAI,KAAa;AAC7B,MAAK,MAAM,KAAK,KAAK,EAAE,EAAE;EACvB,MAAM,IAAI,OAAO,EAAE,CAAC,MAAM;AAC1B,MAAI,EACF,KAAI,IAAI,EAAE;;AAGd,MAAK,MAAM,KAAK,KAAK,EAAE,EAAE;EACvB,MAAM,IAAI,OAAO,EAAE,CAAC,MAAM;AAC1B,MAAI,EACF,KAAI,IAAI,EAAE;;AAGd,QAAO;;AAGT,SAAS,uBAAuB,gBAAsC,aAAyD;AAC7H,KAAI,gBAAgB,KAAA,EAClB,QAAO,CAAC,GAAG,YAAY;AAEzB,KAAI,mBAAmB,KAAA,EACrB,QAAO,CAAC,GAAG,eAAe;;;;;AAQ9B,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;;;;;AAM1B,SAAgB,6BAA6B,QAAgB,SAAwC;CACnG,MAAM,WAAW,OAAO,QAAQ;CAChC,MAAM,OAAO,OAAO,QAAQ;CAC5B,MAAM,QAAQ,MAAM,QAAQ,KAAK,GAC7B,KAAK,MAAM,MAAM,KAAK,EAAE,YAAY,SAAS,EAAE,GAAG,aAAa,KAAK,QAAQ,aAAa,CAAC,GAC1F,KAAA;CAEJ,MAAM,wBAAwB,yBAAyB,QAAQ,QAAQ;CAGvE,MAAM,EAAE,SAAS,mBAAmB,WAAW,wBAAwB,mCADnD,iBAAiB,UAAU,QAAQ,MAAM,OAAO,QAAQ,KACyC,CAAC;CACtH,MAAM,gBAAgB,wBAAwB,OAAO;CACrD,MAAM,kBAAkB,mBAAmB,MAAM,IAAI;CAErD,MAAM,UAAU,kBACd,UAAU,OAAO,SACjB,OAAO,OAAO,QACf;CAED,MAAM,SAAkC;EACtC,GAAI,UAAU;EACd,GAAI,OAAO;EACZ;AAED,QAAO;EACL,SAAS,QAAQ,aAAa;EAC9B;EACA;EACA,WAAW;EACX,iBAAiB,OAAO,mBAAmB,UAAU;EACrD,kBAAkB,OAAO,oBAAoB,UAAU;EACvD,gBAAgB,OAAO,kBAAkB,UAAU;EACnD,sBAAsB,OAAO,sBAAsB,MAAM,GACrD,MAAM,uBACN,UAAU,sBAAsB,MAAM,GACpC,SAAS,uBACT,KAAA;EACN,iBAAiB,uBAAuB,UAAU,QAAQ,OAAO,OAAO;EACxE,OAAO,EAAE,SAAS;EAClB;EACD;;AAGH,SAAgB,uCACd,QACA,YACuB;AAEvB,QAAO,6BAA6B,QADzB,sBAAsB,YAAY,OACC,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Named model roles from `agents.defaults.models
|
|
2
|
+
* Named model roles from `agents.defaults.models.roles` plus per-agent overrides.
|
|
3
3
|
*/
|
|
4
4
|
import type { AgentTypedModel, Config } from './schema.js';
|
|
5
5
|
export type { AgentTypedModel };
|
|
6
|
-
export declare function resolveEffectiveTypedModels(config: Config,
|
|
6
|
+
export declare function resolveEffectiveTypedModels(config: Config, agentId: string): Map<string, AgentTypedModel>;
|
|
7
7
|
/** Resolve a typed model id to `provider/model`, or undefined when not configured. */
|
|
8
8
|
export declare function resolveTypedModelRef(config: Config, agentId: string, typeId: string): string | undefined;
|
|
9
9
|
/**
|
|
@@ -1,9 +1,20 @@
|
|
|
1
|
+
import { init_agent_scope, listAgentEntries, normalizeAgentId } from "../agent/agent-scope.js";
|
|
1
2
|
import { init_schema, parseModelRef } from "./schema.js";
|
|
2
3
|
//#region src/config/agent-typed-models.ts
|
|
3
4
|
init_schema();
|
|
4
|
-
|
|
5
|
+
init_agent_scope();
|
|
6
|
+
function rolesToEntries(roles) {
|
|
7
|
+
return Object.entries(roles ?? {}).map(([id, role]) => ({
|
|
8
|
+
id,
|
|
9
|
+
...role
|
|
10
|
+
}));
|
|
11
|
+
}
|
|
12
|
+
function resolveEffectiveTypedModels(config, agentId) {
|
|
5
13
|
const out = /* @__PURE__ */ new Map();
|
|
6
|
-
for (const modelRole of config.agents?.defaults?.models
|
|
14
|
+
for (const modelRole of rolesToEntries(config.agents?.defaults?.models?.roles)) out.set(modelRole.id, modelRole);
|
|
15
|
+
const id = normalizeAgentId(agentId);
|
|
16
|
+
const entry = listAgentEntries(config).find((candidate) => candidate.enabled !== false && normalizeAgentId(candidate.id) === id);
|
|
17
|
+
for (const modelRole of rolesToEntries(entry?.models?.roles)) out.set(modelRole.id, modelRole);
|
|
7
18
|
return out;
|
|
8
19
|
}
|
|
9
20
|
/** Resolve a typed model id to `provider/model`, or undefined when not configured. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-typed-models.js","names":[],"sources":["../../../src/config/agent-typed-models.ts"],"sourcesContent":["/**\n * Named model roles from `agents.defaults.models
|
|
1
|
+
{"version":3,"file":"agent-typed-models.js","names":[],"sources":["../../../src/config/agent-typed-models.ts"],"sourcesContent":["/**\n * Named model roles from `agents.defaults.models.roles` plus per-agent overrides.\n */\n\nimport type { AgentTypedModel, Config } from './schema.js';\nimport { parseModelRef } from './schema.js';\nimport { listAgentEntries, normalizeAgentId } from '../agent/agent-scope.js';\n\nexport type { AgentTypedModel };\n\nfunction rolesToEntries(\n roles: Record<string, { model: string; description?: string }> | undefined,\n): AgentTypedModel[] {\n return Object.entries(roles ?? {}).map(([id, role]) => ({\n id,\n ...role,\n }));\n}\n\nexport function resolveEffectiveTypedModels(config: Config, agentId: string): Map<string, AgentTypedModel> {\n const out = new Map<string, AgentTypedModel>();\n for (const modelRole of rolesToEntries(config.agents?.defaults?.models?.roles)) {\n out.set(modelRole.id, modelRole);\n }\n const id = normalizeAgentId(agentId);\n const entry = listAgentEntries(config).find(\n (candidate) => candidate.enabled !== false && normalizeAgentId(candidate.id) === id,\n );\n for (const modelRole of rolesToEntries(entry?.models?.roles)) {\n out.set(modelRole.id, modelRole);\n }\n return out;\n}\n\n/** Resolve a typed model id to `provider/model`, or undefined when not configured. */\nexport function resolveTypedModelRef(\n config: Config,\n agentId: string,\n typeId: string,\n): string | undefined {\n const entry = resolveEffectiveTypedModels(config, agentId).get(typeId);\n const ref = entry?.model?.trim();\n return ref || undefined;\n}\n\nfunction parseModelRefInput(ref: string): { directRef?: string; typeId?: string } {\n const trimmed = ref.trim();\n if (!trimmed) {\n return {};\n }\n if (trimmed.includes('/')) {\n return { directRef: trimmed };\n }\n const typeId = trimmed.startsWith('@') ? trimmed.slice(1).trim() : trimmed;\n return typeId ? { typeId } : {};\n}\n\n/**\n * Resolve a model reference: `provider/model`, typed id (`small`), or `@small`.\n * Throws when the ref is invalid or the typed id is unknown.\n */\nexport function resolveModelRef(config: Config, agentId: string, ref: string): string {\n const { directRef, typeId } = parseModelRefInput(ref);\n if (directRef) {\n if (!parseModelRef(directRef)) {\n throw new Error(`model ref must be provider/model format (got '${directRef}')`);\n }\n return directRef;\n }\n if (typeId) {\n const resolved = resolveTypedModelRef(config, agentId, typeId);\n if (resolved) {\n return resolved;\n }\n const available = [...resolveEffectiveTypedModels(config, agentId).keys()];\n const hint =\n available.length > 0 ? ` (available: ${available.join(', ')})` : ' (none configured)';\n throw new Error(`Unknown typed model id '${typeId}' for agent '${agentId}'${hint}`);\n }\n throw new Error('model ref must not be empty');\n}\n"],"mappings":";;;aAK4C;kBACiC;AAI7E,SAAS,eACP,OACmB;AACnB,QAAO,OAAO,QAAQ,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,WAAW;EACtD;EACA,GAAG;EACJ,EAAE;;AAGL,SAAgB,4BAA4B,QAAgB,SAA+C;CACzG,MAAM,sBAAM,IAAI,KAA8B;AAC9C,MAAK,MAAM,aAAa,eAAe,OAAO,QAAQ,UAAU,QAAQ,MAAM,CAC5E,KAAI,IAAI,UAAU,IAAI,UAAU;CAElC,MAAM,KAAK,iBAAiB,QAAQ;CACpC,MAAM,QAAQ,iBAAiB,OAAO,CAAC,MACpC,cAAc,UAAU,YAAY,SAAS,iBAAiB,UAAU,GAAG,KAAK,GAClF;AACD,MAAK,MAAM,aAAa,eAAe,OAAO,QAAQ,MAAM,CAC1D,KAAI,IAAI,UAAU,IAAI,UAAU;AAElC,QAAO;;;AAIT,SAAgB,qBACd,QACA,SACA,QACoB;AAGpB,QAFc,4BAA4B,QAAQ,QAAQ,CAAC,IAAI,OAC9C,EAAE,OAAO,MAAM,IAClB,KAAA;;AAGhB,SAAS,mBAAmB,KAAsD;CAChF,MAAM,UAAU,IAAI,MAAM;AAC1B,KAAI,CAAC,QACH,QAAO,EAAE;AAEX,KAAI,QAAQ,SAAS,IAAI,CACvB,QAAO,EAAE,WAAW,SAAS;CAE/B,MAAM,SAAS,QAAQ,WAAW,IAAI,GAAG,QAAQ,MAAM,EAAE,CAAC,MAAM,GAAG;AACnE,QAAO,SAAS,EAAE,QAAQ,GAAG,EAAE;;;;;;AAOjC,SAAgB,gBAAgB,QAAgB,SAAiB,KAAqB;CACpF,MAAM,EAAE,WAAW,WAAW,mBAAmB,IAAI;AACrD,KAAI,WAAW;AACb,MAAI,CAAC,cAAc,UAAU,CAC3B,OAAM,IAAI,MAAM,iDAAiD,UAAU,IAAI;AAEjF,SAAO;;AAET,KAAI,QAAQ;EACV,MAAM,WAAW,qBAAqB,QAAQ,SAAS,OAAO;AAC9D,MAAI,SACF,QAAO;EAET,MAAM,YAAY,CAAC,GAAG,4BAA4B,QAAQ,QAAQ,CAAC,MAAM,CAAC;EAC1E,MAAM,OACJ,UAAU,SAAS,IAAI,gBAAgB,UAAU,KAAK,KAAK,CAAC,KAAK;AACnE,QAAM,IAAI,MAAM,2BAA2B,OAAO,eAAe,QAAQ,GAAG,OAAO;;AAErF,OAAM,IAAI,MAAM,8BAA8B"}
|
package/dist/src/config/index.js
CHANGED
|
@@ -5,8 +5,8 @@ import { resolveAgentDir as resolveAgentDir$1, resolveAgentHomeDir as resolveAge
|
|
|
5
5
|
import { FILENAMES, WORKSPACE_FILES, existsSync, init_paths, resolveAgentAuthProfilesPath, resolveAgentDir, resolveAgentHomeDir, resolveAgentProfileDir, resolveAgentProfileMarkdownPath, resolveAuthProfilesPath, resolveBinDir, resolveBundledExtensionsDir, resolveBundledSkillsDir, resolveConfigPath, resolveCredentialsDir, resolveCronDir, resolveCronJobsPath, resolveExtensionSdkPath, resolveExtensionsDir, resolveExtensionsLockPath, resolveInboxDir, resolveInboxMessagePath, resolveInboxPendingDir, resolveInboxProcessedDir, resolveLogPath, resolveLogsDir, resolveModelsJsonPath, resolveNodeBinDir, resolveNodeBinPath, resolveNodeToolsDir, resolveNpmBinPath, resolveOAuthPath, resolvePidPath, resolveSkillPath, resolveSkillsCachePath, resolveSkillsDir, resolveSkillsLockPath, resolveSocketPath, resolveStatusPath, resolveToolsDir, resolveWorkspaceExtensionsDir, resolveWorkspaceFile, resolveWorkspaceStateDir, resolveWorkspaceStatePath, resolveXopcBinPath } from "./paths.js";
|
|
6
6
|
import { TelegramAccountConfigSchema, TelegramConfigSchema, TelegramGroupConfigSchema, TelegramTopicConfigSchema } from "../../extensions/telegram/src/config-schema.js";
|
|
7
7
|
import { WeixinAccountConfigSchema, WeixinConfigSchema } from "../../extensions/weixin/src/config-schema.js";
|
|
8
|
-
import { AgentConfigSchema, AgentDefaultsSchema, AgentImageGenerationModelSchema, AgentModelRefSchema,
|
|
9
|
-
import { init_loader, loadConfig,
|
|
8
|
+
import { AgentConfigSchema, AgentDefaultsSchema, AgentImageGenerationModelSchema, AgentModelRefSchema, AgentModelsSchema, AgentTypedModelRoleSchema, AgentsConfigSchema, BindingMatchSchema, BindingRuleSchema, BindingsConfigSchema, ChannelsConfigSchema, CommandsConfigSchema, ConfigSchema, CronConfigSchema, ExtensionSecurityConfigSchema, ExtensionSlotsConfigSchema, ExtensionsConfigSchema, GatewayAuthRateLimitSchema, GatewayAuthSchema, GatewayBindModeSchema, GatewayChannelConnectDeferModeSchema, GatewayConfigSchema, GatewayModeSchema, GatewayRemoteSchema, GatewaySecuritySchema, GatewayTailscaleConsentSchema, GatewayTailscaleSchema, GatewayTlsSchema, GatewayTrustedProxySchema, GoalsConfigSchema, HeartbeatConfigSchema, McpConfigSchema, McpServerSchema, MediaUnderstandingCapabilitiesSchema, MediaUnderstandingModelSchema, MessagesConfigSchema, ModelsDevConfigSchema, ProviderAuthConfigSchema, ProviderAzureConfigSchema, ProviderRequestOverridesSchema, ProvidersConfigSchema, STTConfigSchema, STTFallbackConfigSchema, STTProviderConfigSchema, SearchProviderEntrySchema, SessionConfigSchema, SessionDmScopeSchema, SessionResetByTypeSchema, SessionResetConfigSchema, SessionResetModeSchema, SessionScopeSchema, SessionStorageConfigSchema, TTSConfigSchema, TTSEdgeConfigSchema, TTSFallbackConfigSchema, TTSModelOverridesConfigSchema, TTSProviderConfigSchema, TTSSummarizationConfigSchema, ToolsConfigSchema, ToolsMediaAudioConfigSchema, ToolsMediaConfigSchema, TunnelConfigSchema, TunnelConsentSchema, UpdateAutoConfigSchema, UpdateConfigSchema, WebSearchConfigSchema, WebToolsConfigSchema, WebsiteBlocklistSchema, WorkspaceConfigSchema, WorkspaceImportConfigSchema, getAgentDefaultModelRef, init_schema, parseModelRef } from "./schema.js";
|
|
9
|
+
import { init_loader, loadConfig, saveConfig } from "./loader.js";
|
|
10
10
|
import { applyConfigOverrides, getConfigOverrides, resetConfigOverrides, setConfigOverride, unsetConfigOverride } from "./runtime-overrides.js";
|
|
11
11
|
import { extractProfileAgentId, resolveEffectiveAgentProfile, resolveEffectiveAgentProfileForSession } from "./agent-profile.js";
|
|
12
12
|
import { clearConfigValueCache, getAllowedCommands, getCacheStats, init_resolve_config_value, resolveConfigValue, resolveHeaders, testApiKeyResolution } from "./resolve-config-value.js";
|
|
@@ -27,6 +27,6 @@ init_workspace_path();
|
|
|
27
27
|
init_models_json();
|
|
28
28
|
init_resolve_config_value();
|
|
29
29
|
//#endregion
|
|
30
|
-
export { AgentConfigSchema, AgentDefaultsSchema, AgentImageGenerationModelSchema, AgentModelRefSchema,
|
|
30
|
+
export { AgentConfigSchema, AgentDefaultsSchema, AgentImageGenerationModelSchema, AgentModelRefSchema, AgentModelsSchema, AgentTypedModelRoleSchema, AgentsConfigSchema, BASE_RELOAD_RULES, BindingMatchSchema, BindingRuleSchema, BindingsConfigSchema, ChannelsConfigSchema, CommandsConfigSchema, ConfigHotReloader, ConfigSchema, CronConfigSchema, CustomModelSchema, ENV_VARS, ExtensionSecurityConfigSchema, ExtensionSlotsConfigSchema, ExtensionsConfigSchema, FILENAMES, GatewayAuthRateLimitSchema, GatewayAuthSchema, GatewayBindModeSchema, GatewayChannelConnectDeferModeSchema, GatewayConfigSchema, GatewayModeSchema, GatewayRemoteSchema, GatewaySecuritySchema, GatewayTailscaleConsentSchema, GatewayTailscaleSchema, GatewayTlsSchema, GatewayTrustedProxySchema, GoalsConfigSchema, HeartbeatConfigSchema, McpConfigSchema, McpServerSchema, MediaUnderstandingCapabilitiesSchema, MediaUnderstandingModelSchema, MessagesConfigSchema, ModelOverrideSchema, ModelsDevConfigSchema, ModelsJsonSchema, OpenAICompatSchema, OpenAICompletionsCompatSchema, OpenAIResponsesCompatSchema, OpenRouterRoutingSchema, ProfileManager, ProviderAuthConfigSchema, ProviderAzureConfigSchema, ProviderConfigSchema, ProviderRequestOverridesSchema, ProvidersConfigSchema, STTConfigSchema, STTFallbackConfigSchema, STTProviderConfigSchema, SearchProviderEntrySchema, SessionConfigSchema, SessionDmScopeSchema, SessionResetByTypeSchema, SessionResetConfigSchema, SessionResetModeSchema, SessionScopeSchema, SessionStorageConfigSchema, TTSConfigSchema, TTSEdgeConfigSchema, TTSFallbackConfigSchema, TTSModelOverridesConfigSchema, TTSProviderConfigSchema, TTSSummarizationConfigSchema, TelegramAccountConfigSchema, TelegramConfigSchema, TelegramGroupConfigSchema, TelegramTopicConfigSchema, ToolsConfigSchema, ToolsMediaAudioConfigSchema, ToolsMediaConfigSchema, TunnelConfigSchema, TunnelConsentSchema, UpdateAutoConfigSchema, UpdateConfigSchema, VercelGatewayRoutingSchema, WORKSPACE_FILES, WebSearchConfigSchema, WebToolsConfigSchema, WebsiteBlocklistSchema, WeixinAccountConfigSchema, WeixinConfigSchema, WorkspaceConfigSchema, WorkspaceImportConfigSchema, XOPC_DB_FILENAME, applyConfigOverrides, buildReloadPlan, canonicalizeConfiguredMcpServer, clearConfigValueCache, createProfile, deleteProfile, diffConfigPaths, existsSync, expandWorkspacePathString, extractProfileAgentId, formatThinkingLevels, getAgentDefaultModelRef, getAllowedCommands, getCacheStats, getConfigOverrides, getCurrentProfile, getDefaultModelValues, resolveModelsJsonPath as getModelsJsonPath, getProfileManager, getProfileNameFromDir, getSwitchCommand, getWorkspacePath, isKnownCliMcpTypeAlias, listAgentProfileMarkdownDirs, listAgentWorkspaceDirs, listProfiles, listThinkingLevels, loadConfig, loadModelsJson, matchReloadRule, modelsJsonExists, normalizeConfiguredMcpServers, normalizeElevatedMode, normalizeReasoningLevel, normalizeThinkLevel, normalizeVerboseLevel, normalizeWorkspaceDir, parseModelRef, resetConfigOverrides, resolveAgentAuthProfilesPath, resolveAgentDir, resolveAgentDir$1 as resolveAgentDirFromConfig, resolveAgentHomeDir, resolveAgentHomeDir$1 as resolveAgentHomeDirFromConfig, resolveAgentProfileDir, resolveAgentProfileMarkdownPath, resolveAgentWorkspaceDir, resolveAuthProfilesPath, resolveBinDir, resolveBundledExtensionsDir, resolveBundledSkillsDir, resolveConfigPath, resolveConfigValue, resolveCredentialsDir, resolveCronDir, resolveCronJobsPath, resolveDefaultAgentWorkspaceDir, resolveEffectiveAgentProfile, resolveEffectiveAgentProfileForSession, resolveExtensionSdkPath, resolveExtensionsDir, resolveExtensionsLockPath, resolveHeaders, resolveHomeDir, resolveInboxDir, resolveInboxMessagePath, resolveInboxPendingDir, resolveInboxProcessedDir, resolveLogPath, resolveLogsDir, resolveModelsJsonPath, resolveNodeBinDir, resolveNodeBinPath, resolveNodeToolsDir, resolveNpmBinPath, resolveOAuthPath, resolvePidPath, resolveProfileStateDir, resolveSkillPath, resolveSkillsCachePath, resolveSkillsDir, resolveSkillsLockPath, resolveSocketPath, resolveStateDir, resolveStatusPath, resolveToolsDir, resolveWorkspaceExtensionsDir, resolveWorkspaceFile, resolveWorkspaceRoot, resolveWorkspaceStateDir, resolveWorkspaceStatePath, resolveXopcBinPath, resolveXopcDatabasePath, resolveXopcMcpTransportAlias, saveConfig, saveModelsJson, setConfigOverride, testApiKeyResolution, thinkLevelToNumber, unsetConfigOverride, validateModelsConfig };
|
|
31
31
|
|
|
32
32
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Model-related configuration (documentation only):
|
|
3
3
|
*
|
|
4
|
-
* - Main config: `ConfigSchema` (agents.defaults.
|
|
4
|
+
* - Main config: `ConfigSchema` (agents.defaults.models, gateway, channels, etc.).
|
|
5
5
|
* - LLM API keys: `CredentialResolver` / auth profiles (Gateway PATCH /api/config `providers`, CLI onboard).
|
|
6
6
|
* - Overrides and custom providers: `~/.xopc/models.json`.
|
|
7
7
|
*/
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { type Config } from './schema.js';
|
|
2
|
-
export declare function registerChannelConfigValidator(fn: (cfg: Config) => void): void;
|
|
3
2
|
/**
|
|
4
3
|
* Load configuration from file
|
|
5
4
|
* @param configPath Optional custom config path, defaults to XOPC_CONFIG_PATH or ~/.xopc/xopc.json
|
|
@@ -4,16 +4,11 @@ import { createLogger } from "../utils/logger/index.js";
|
|
|
4
4
|
import { init_logger } from "../utils/logger.js";
|
|
5
5
|
import { init_paths, resolveConfigPath } from "./paths.js";
|
|
6
6
|
import { ConfigSchema, init_schema } from "./schema.js";
|
|
7
|
+
import { assertChannelPluginConfigs, init_validate_channel_configs } from "./validate-channel-configs.js";
|
|
7
8
|
import { dirname } from "path";
|
|
8
9
|
import { existsSync, mkdirSync, promises, readFileSync } from "fs";
|
|
9
10
|
import { config } from "dotenv";
|
|
10
11
|
//#region src/config/loader.ts
|
|
11
|
-
function registerChannelConfigValidator(fn) {
|
|
12
|
-
channelConfigValidator = fn;
|
|
13
|
-
}
|
|
14
|
-
function assertChannelPluginConfigs(cfg) {
|
|
15
|
-
channelConfigValidator?.(cfg);
|
|
16
|
-
}
|
|
17
12
|
/**
|
|
18
13
|
* Rotate config backups before writing new config.
|
|
19
14
|
* Creates a backup chain: xopc.json.bak, xopc.json.bak.1, xopc.json.bak.2, etc.
|
|
@@ -78,18 +73,18 @@ async function saveConfig(config, configPath) {
|
|
|
78
73
|
}
|
|
79
74
|
await writeTextAtomic(path, content);
|
|
80
75
|
}
|
|
81
|
-
var log,
|
|
76
|
+
var log, CONFIG_BACKUP_COUNT;
|
|
82
77
|
var init_loader = __esmMin((() => {
|
|
83
78
|
init_write_file_atomic();
|
|
84
79
|
init_schema();
|
|
85
80
|
init_paths();
|
|
86
81
|
init_logger();
|
|
82
|
+
init_validate_channel_configs();
|
|
87
83
|
log = createLogger("ConfigLoader");
|
|
88
|
-
channelConfigValidator = null;
|
|
89
84
|
CONFIG_BACKUP_COUNT = 10;
|
|
90
85
|
}));
|
|
91
86
|
//#endregion
|
|
92
87
|
init_loader();
|
|
93
|
-
export { init_loader, loadConfig,
|
|
88
|
+
export { init_loader, loadConfig, resolveConfigPath, saveConfig };
|
|
94
89
|
|
|
95
90
|
//# sourceMappingURL=loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","names":["fsPromises"],"sources":["../../../src/config/loader.ts"],"sourcesContent":["import { readFileSync, existsSync, mkdirSync, promises as fsPromises } from 'fs';\nimport { dirname } from 'path';\nimport { writeTextAtomic } from '../infra/write-file-atomic.js';\nimport { type Config, ConfigSchema } from './schema.js';\nimport { resolveConfigPath } from './paths.js';\nimport { config } from 'dotenv';\nimport { createLogger } from '../utils/logger.js';\
|
|
1
|
+
{"version":3,"file":"loader.js","names":["fsPromises"],"sources":["../../../src/config/loader.ts"],"sourcesContent":["import { readFileSync, existsSync, mkdirSync, promises as fsPromises } from 'fs';\nimport { dirname } from 'path';\nimport { writeTextAtomic } from '../infra/write-file-atomic.js';\nimport { type Config, ConfigSchema } from './schema.js';\nimport { resolveConfigPath } from './paths.js';\nimport { config } from 'dotenv';\nimport { createLogger } from '../utils/logger.js';\nimport { assertChannelPluginConfigs } from './validate-channel-configs.js';\n\nconst log = createLogger('ConfigLoader');\n\n/** Number of backup files to keep */\nconst CONFIG_BACKUP_COUNT = 10;\n\n/**\n * Rotate config backups before writing new config.\n * Creates a backup chain: xopc.json.bak, xopc.json.bak.1, xopc.json.bak.2, etc.\n */\nasync function rotateConfigBackups(configPath: string): Promise<void> {\n if (CONFIG_BACKUP_COUNT <= 1) {\n return;\n }\n\n const backupBase = `${configPath}.bak`;\n const maxIndex = CONFIG_BACKUP_COUNT - 1;\n\n // Delete oldest backup\n try {\n await fsPromises.unlink(`${backupBase}.${maxIndex}`);\n } catch {\n // best-effort: file may not exist\n }\n\n // Rotate existing backups: .bak.2 -> .bak.3, .bak.1 -> .bak.2, etc.\n for (let index = maxIndex - 1; index >= 1; index--) {\n try {\n await fsPromises.rename(`${backupBase}.${index}`, `${backupBase}.${index + 1}`);\n } catch {\n // best-effort: file may not exist\n }\n }\n\n // Move .bak to .bak.1\n try {\n await fsPromises.rename(backupBase, `${backupBase}.1`);\n } catch {\n // best-effort: file may not exist\n }\n}\n\n/**\n * Load configuration from file\n * @param configPath Optional custom config path, defaults to XOPC_CONFIG_PATH or ~/.xopc/xopc.json\n */\nexport function loadConfig(configPath?: string): Config {\n // dotenv ≥17 logs to stdout on every `config()` unless quiet; `loadConfig` runs from many call sites.\n config({ quiet: true });\n\n const path = configPath || process.env.XOPC_CONFIG_PATH || resolveConfigPath();\n\n if (existsSync(path)) {\n try {\n const content = readFileSync(path, 'utf-8');\n const json = JSON.parse(content);\n const cfg = ConfigSchema.parse(json);\n assertChannelPluginConfigs(cfg);\n return cfg;\n } catch (error) {\n log.error({ err: error, path }, `Failed to load config`);\n const cfg = ConfigSchema.parse(undefined);\n assertChannelPluginConfigs(cfg);\n return cfg;\n }\n }\n\n const cfg = ConfigSchema.parse(undefined);\n assertChannelPluginConfigs(cfg);\n return cfg;\n}\n\n/**\n * Save configuration to file\n * @param config Configuration object to save\n * @param configPath Optional custom config path\n */\nexport async function saveConfig(config: Config, configPath?: string): Promise<void> {\n const path = configPath || process.env.XOPC_CONFIG_PATH || resolveConfigPath();\n\n const dir = dirname(path);\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n\n const validated = ConfigSchema.parse(config);\n assertChannelPluginConfigs(validated);\n const content = JSON.stringify(validated, null, 2);\n\n // Backup existing config before writing\n if (existsSync(path)) {\n await rotateConfigBackups(path);\n try {\n // Copy current config to .bak as the latest backup\n await fsPromises.copyFile(path, `${path}.bak`);\n } catch {\n // best-effort: backup copy may fail\n }\n }\n\n await writeTextAtomic(path, content);\n}\n\nexport { resolveConfigPath } from './paths.js';\n"],"mappings":";;;;;;;;;;;;;;;AAkBA,eAAe,oBAAoB,YAAmC;AACpE,KAAI,uBAAuB,EACzB;CAGF,MAAM,aAAa,GAAG,WAAW;CACjC,MAAM,WAAW,sBAAsB;AAGvC,KAAI;AACF,QAAMA,SAAW,OAAO,GAAG,WAAW,GAAG,WAAW;SAC9C;AAKR,MAAK,IAAI,QAAQ,WAAW,GAAG,SAAS,GAAG,QACzC,KAAI;AACF,QAAMA,SAAW,OAAO,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,IAAI;SACzE;AAMV,KAAI;AACF,QAAMA,SAAW,OAAO,YAAY,GAAG,WAAW,IAAI;SAChD;;;;;;AASV,SAAgB,WAAW,YAA6B;AAEtD,QAAO,EAAE,OAAO,MAAM,CAAC;CAEvB,MAAM,OAAO,cAAc,QAAQ,IAAI,oBAAoB,mBAAmB;AAE9E,KAAI,WAAW,KAAK,CAClB,KAAI;EACF,MAAM,UAAU,aAAa,MAAM,QAAQ;EAC3C,MAAM,OAAO,KAAK,MAAM,QAAQ;EAChC,MAAM,MAAM,aAAa,MAAM,KAAK;AACpC,6BAA2B,IAAI;AAC/B,SAAO;UACA,OAAO;AACd,MAAI,MAAM;GAAE,KAAK;GAAO;GAAM,EAAE,wBAAwB;EACxD,MAAM,MAAM,aAAa,MAAM,KAAA,EAAU;AACzC,6BAA2B,IAAI;AAC/B,SAAO;;CAIX,MAAM,MAAM,aAAa,MAAM,KAAA,EAAU;AACzC,4BAA2B,IAAI;AAC/B,QAAO;;;;;;;AAQT,eAAsB,WAAW,QAAgB,YAAoC;CACnF,MAAM,OAAO,cAAc,QAAQ,IAAI,oBAAoB,mBAAmB;CAE9E,MAAM,MAAM,QAAQ,KAAK;AACzB,KAAI,CAAC,WAAW,IAAI,CAClB,WAAU,KAAK,EAAE,WAAW,MAAM,CAAC;CAGrC,MAAM,YAAY,aAAa,MAAM,OAAO;AAC5C,4BAA2B,UAAU;CACrC,MAAM,UAAU,KAAK,UAAU,WAAW,MAAM,EAAE;AAGlD,KAAI,WAAW,KAAK,EAAE;AACpB,QAAM,oBAAoB,KAAK;AAC/B,MAAI;AAEF,SAAMA,SAAW,SAAS,MAAM,GAAG,KAAK,MAAM;UACxC;;AAKV,OAAM,gBAAgB,MAAM,QAAQ;;;;yBA1G0B;cACR;aACT;cAEG;gCACyB;AAErE,OAAM,aAAa,eAAe;AAGlC,uBAAsB"}
|
|
@@ -88,8 +88,8 @@ export declare const CustomModelSchema: z.ZodObject<{
|
|
|
88
88
|
}>>;
|
|
89
89
|
reasoning: z.ZodOptional<z.ZodBoolean>;
|
|
90
90
|
input: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
91
|
-
text: "text";
|
|
92
91
|
image: "image";
|
|
92
|
+
text: "text";
|
|
93
93
|
}>>>;
|
|
94
94
|
contextWindow: z.ZodOptional<z.ZodNumber>;
|
|
95
95
|
maxTokens: z.ZodOptional<z.ZodNumber>;
|
|
@@ -133,8 +133,8 @@ export declare const ModelOverrideSchema: z.ZodObject<{
|
|
|
133
133
|
name: z.ZodOptional<z.ZodString>;
|
|
134
134
|
reasoning: z.ZodOptional<z.ZodBoolean>;
|
|
135
135
|
input: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
136
|
-
text: "text";
|
|
137
136
|
image: "image";
|
|
137
|
+
text: "text";
|
|
138
138
|
}>>>;
|
|
139
139
|
contextWindow: z.ZodOptional<z.ZodNumber>;
|
|
140
140
|
maxTokens: z.ZodOptional<z.ZodNumber>;
|
|
@@ -206,8 +206,8 @@ export declare const ProviderConfigSchema: z.ZodObject<{
|
|
|
206
206
|
}>>;
|
|
207
207
|
reasoning: z.ZodOptional<z.ZodBoolean>;
|
|
208
208
|
input: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
209
|
-
text: "text";
|
|
210
209
|
image: "image";
|
|
210
|
+
text: "text";
|
|
211
211
|
}>>>;
|
|
212
212
|
contextWindow: z.ZodOptional<z.ZodNumber>;
|
|
213
213
|
maxTokens: z.ZodOptional<z.ZodNumber>;
|
|
@@ -251,8 +251,8 @@ export declare const ProviderConfigSchema: z.ZodObject<{
|
|
|
251
251
|
name: z.ZodOptional<z.ZodString>;
|
|
252
252
|
reasoning: z.ZodOptional<z.ZodBoolean>;
|
|
253
253
|
input: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
254
|
-
text: "text";
|
|
255
254
|
image: "image";
|
|
255
|
+
text: "text";
|
|
256
256
|
}>>>;
|
|
257
257
|
contextWindow: z.ZodOptional<z.ZodNumber>;
|
|
258
258
|
maxTokens: z.ZodOptional<z.ZodNumber>;
|
|
@@ -326,8 +326,8 @@ export declare const ModelsJsonSchema: z.ZodObject<{
|
|
|
326
326
|
}>>;
|
|
327
327
|
reasoning: z.ZodOptional<z.ZodBoolean>;
|
|
328
328
|
input: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
329
|
-
text: "text";
|
|
330
329
|
image: "image";
|
|
330
|
+
text: "text";
|
|
331
331
|
}>>>;
|
|
332
332
|
contextWindow: z.ZodOptional<z.ZodNumber>;
|
|
333
333
|
maxTokens: z.ZodOptional<z.ZodNumber>;
|
|
@@ -371,8 +371,8 @@ export declare const ModelsJsonSchema: z.ZodObject<{
|
|
|
371
371
|
name: z.ZodOptional<z.ZodString>;
|
|
372
372
|
reasoning: z.ZodOptional<z.ZodBoolean>;
|
|
373
373
|
input: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
374
|
-
text: "text";
|
|
375
374
|
image: "image";
|
|
375
|
+
text: "text";
|
|
376
376
|
}>>>;
|
|
377
377
|
contextWindow: z.ZodOptional<z.ZodNumber>;
|
|
378
378
|
maxTokens: z.ZodOptional<z.ZodNumber>;
|
|
@@ -183,6 +183,7 @@ export declare function resolveSkillsCachePath(config: Config, agentId: string):
|
|
|
183
183
|
* Resolve the bundled extensions directory (shipped with xopc).
|
|
184
184
|
*
|
|
185
185
|
* Layout-dependent candidates (first existing wins):
|
|
186
|
+
* - `XOPC_BUNDLED_EXTENSIONS_ROOT` (Electron packaged gateway override)
|
|
186
187
|
* - `dist/src/config` → `dist/extensions` (npm / gateway)
|
|
187
188
|
* - `src/config` → `extensions/` (dev, tsx)
|
|
188
189
|
* - `out/server` → `dist/extensions` (Electron esbuild bundle)
|