@xopcai/xopc 0.0.118 → 0.0.120
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 +2 -1
- package/README.zh-CN.md +2 -1
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-dzUrQoeZ.js → agent-avatar-dicebear-APTlX9Sq.js} +1 -1
- package/dist/gateway/static/root/assets/agents-CFW_FS_V.js +2 -0
- package/dist/gateway/static/root/assets/app-management-settings-panel-DTKc5HHT.js +1 -0
- package/dist/gateway/static/root/assets/appearance-settings-BTciFrE9.js +1 -0
- package/dist/gateway/static/root/assets/{apps-page--wMEL00f.js → apps-page-DT52OrbM.js} +1 -1
- package/dist/gateway/static/root/assets/{archive-plugin-Cki4SfU2.js → archive-plugin-CiHaUMII.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-D-KnS2Do.js → attachment-load-t4gSrNjL.js} +1 -1
- package/dist/gateway/static/root/assets/automation-suggestion-card-CtysjSoQ.js +1 -0
- package/dist/gateway/static/root/assets/automations-page-B2YvT3ES.js +1 -0
- package/dist/gateway/static/root/assets/{binary-plugins-D2sgvJja.js → binary-plugins-BAbSldW5.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-DIq-4Gvb.js → block-editor-BNr_82xl.js} +28 -28
- package/dist/gateway/static/root/assets/browser-settings-page-BQEXPhDU.js +8 -0
- package/dist/gateway/static/root/assets/capability-presets-api-tzD702Gg.js +1 -0
- package/dist/gateway/static/root/assets/capability-presets-settings-panel-AGhTueAc.js +1 -0
- package/dist/gateway/static/root/assets/channel-recipient-api-DL_KzwGE.js +1 -0
- package/dist/gateway/static/root/assets/channels-settings-DRTutLlN.js +1 -0
- package/dist/gateway/static/root/assets/cn-BQ_8x0bT.js +1 -0
- package/dist/gateway/static/root/assets/connectors-page-DneJVuge.js +2 -0
- package/dist/gateway/static/root/assets/cron-expression-B3B1eqnr.js +2 -0
- package/dist/gateway/static/root/assets/dreaming-settings-BEwWA1yf.js +1 -0
- package/dist/gateway/static/root/assets/{extension-debug-page-DYu1KaFQ.js → extension-debug-page-Dl2kO0Sf.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-B3W6QwlZ.js → extension-page-DmbLPsx_.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-D7VQ-cxE.js → extension-settings-page-BS2rx40e.js} +1 -1
- package/dist/gateway/static/root/assets/{fetch-B7xDPu-R.js → fetch-B3ME5Eri.js} +1 -1
- package/dist/gateway/static/root/assets/format-cron-label-arqgGlVV.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-config-api-BTBLSeUu.js → gateway-config-api-DI9_BBTo.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-settings-DAFI_T0W.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-startup-retry-CYj9FWCp.js → gateway-startup-retry-CSZQTz6K.js} +1 -1
- package/dist/gateway/static/root/assets/goal-detail-page-DLuz4jC9.js +1 -0
- package/dist/gateway/static/root/assets/{goals-config-api-CQQgzPr3.js → goals-config-api-Bhzqrp2w.js} +1 -1
- package/dist/gateway/static/root/assets/{goals-page-BHitvJAv.js → goals-page-DTAfv9Ft.js} +2 -2
- package/dist/gateway/static/root/assets/goals-settings-CWN2iirQ.js +1 -0
- package/dist/gateway/static/root/assets/heartbeat-settings-CkkkHvOi.js +1 -0
- package/dist/gateway/static/root/assets/index-CnjzMw5i.js +191 -0
- package/dist/gateway/static/root/assets/index-E1QinYKp.css +1 -0
- package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-kMp08SlX.js +1 -0
- package/dist/gateway/static/root/assets/{locale-store-DjbfSsfA.js → locale-store-Ba72bFmP.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-C2Uqvae9.js → logs-page-CDXDlS_W.js} +2 -2
- package/dist/gateway/static/root/assets/{markdown-split-BwOFrJ2E.js → markdown-split-Bc0w40vz.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-Cnz6Q5G6.js → media-plugins-DJ_HvgIy.js} +1 -1
- package/dist/gateway/static/root/assets/messages-CISb1HLv.js +3 -0
- package/dist/gateway/static/root/assets/models-hub-panel-BTwxMIgZ.js +2 -0
- package/dist/gateway/static/root/assets/note-detail-page-BBfOeB0m.js +2 -0
- package/dist/gateway/static/root/assets/{note-image-lightbox-B-Svpmza.js → note-image-lightbox-4zntqpZq.js} +1 -1
- package/dist/gateway/static/root/assets/notes-page-VocWOjoK.js +1 -0
- package/dist/gateway/static/root/assets/{preview-open-alternatives-Bss4TiwP.js → preview-open-alternatives-BbA7sRd_.js} +1 -1
- package/dist/gateway/static/root/assets/remote-access-hub-CXwjuD_Q.js +1 -0
- package/dist/gateway/static/root/assets/{save-bar-controls-BRNjdgKq.js → save-bar-controls-Dividh61.js} +1 -1
- package/dist/gateway/static/root/assets/schedule-field-pRheF2CO.js +1 -0
- package/dist/gateway/static/root/assets/{schema-form-Dub9sy8r.js → schema-form-D6PiPxfr.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-CpcVySQK.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-BVy_TawT.js +1 -0
- package/dist/gateway/static/root/assets/{settings-collapsible-section-BeFLavGi.js → settings-collapsible-section-BMCOfuE_.js} +1 -1
- package/dist/gateway/static/root/assets/settings-form-section-DBkGwpIN.js +1 -0
- package/dist/gateway/static/root/assets/settings-page-CZpNyCWn.js +1 -0
- package/dist/gateway/static/root/assets/settings-page-layout-NxoW5Y57.js +1 -0
- package/dist/gateway/static/root/assets/setup-status-panel-MVHLLu_a.js +1 -0
- package/dist/gateway/static/root/assets/{share-preview-page-C8glrdqe.js → share-preview-page-B0suFCfj.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-C6DBbQGo.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-6hJmhwSn.js +1 -0
- package/dist/gateway/static/root/assets/skills-page-Im1MA0Iw.js +2 -0
- package/dist/gateway/static/root/assets/system-settings-panel-CrmEnyX4.js +1 -0
- package/dist/gateway/static/root/assets/{theme-store-CD2wtgZV.js → theme-store-Bt6vAkSB.js} +1 -1
- package/dist/gateway/static/root/assets/typed-models-lib-BAsGn25g.js +1 -0
- package/dist/gateway/static/root/assets/{use-channel-catalog-DqlWTsDb.js → use-channel-catalog-C7vcAoGb.js} +1 -1
- package/dist/gateway/static/root/assets/user-profile-settings-panel-QAQWGelF.js +1 -0
- package/dist/gateway/static/root/assets/utils-Dl9efgnV.js +1 -0
- package/dist/gateway/static/root/assets/{voice-api-key-field-C73IVZeC.js → voice-api-key-field-D-6XueTv.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-player-store-C_ArLJPM.js → voice-player-store-CMC5NOJp.js} +1 -1
- package/dist/gateway/static/root/assets/workflow-run-setup-panel-DVPllR4k.js +3 -0
- package/dist/gateway/static/root/assets/workflows-page-B94WISTW.js +18 -0
- package/dist/gateway/static/root/index.html +8 -9
- package/dist/package.js +1 -1
- package/dist/src/agent/agent-manager.d.ts +4 -5
- package/dist/src/agent/agent-manager.js +4 -8
- package/dist/src/agent/agent-manager.js.map +1 -1
- package/dist/src/agent/context/workspace-templates/AGENTS.md +3 -2
- package/dist/src/agent/embedded/run-for-session.js +102 -14
- package/dist/src/agent/embedded/run-for-session.js.map +1 -1
- package/dist/src/agent/fallback/candidates.d.ts +0 -8
- package/dist/src/agent/fallback/candidates.js.map +1 -1
- package/dist/src/agent/index.js +1 -1
- package/dist/src/agent/lifecycle/handlers/compaction.d.ts +1 -3
- package/dist/src/agent/lifecycle/handlers/compaction.js +1 -16
- package/dist/src/agent/lifecycle/handlers/compaction.js.map +1 -1
- package/dist/src/agent/lifecycle/progress.d.ts +0 -1
- package/dist/src/agent/lifecycle/progress.js +1 -6
- package/dist/src/agent/lifecycle/progress.js.map +1 -1
- package/dist/src/agent/lifecycle/timeout-wrapper.d.ts +1 -2
- package/dist/src/agent/lifecycle/timeout-wrapper.js +1 -7
- package/dist/src/agent/lifecycle/timeout-wrapper.js.map +1 -1
- package/dist/src/agent/memory/builtin-memory-store.d.ts +1 -1
- package/dist/src/agent/memory/builtin-memory-store.js +1 -1
- package/dist/src/agent/memory/builtin-memory-store.js.map +1 -1
- package/dist/src/agent/memory/builtin-provider.d.ts +2 -2
- package/dist/src/agent/memory/builtin-provider.js +2 -2
- package/dist/src/agent/memory/builtin-provider.js.map +1 -1
- package/dist/src/agent/memory/dreaming/light-sweep.d.ts +0 -7
- package/dist/src/agent/memory/dreaming/light-sweep.js +16 -277
- package/dist/src/agent/memory/dreaming/light-sweep.js.map +1 -1
- package/dist/src/agent/memory/dreaming/rem-patterns.d.ts +1 -1
- package/dist/src/agent/memory/dreaming/rem-patterns.js +1 -1
- package/dist/src/agent/memory/dreaming/rem-patterns.js.map +1 -1
- package/dist/src/agent/memory/dreaming/short-term-store.d.ts +3 -3
- package/dist/src/agent/memory/dreaming/short-term-store.js +5 -5
- package/dist/src/agent/memory/dreaming/short-term-store.js.map +1 -1
- package/dist/src/agent/memory/dreaming/utils.d.ts +2 -2
- package/dist/src/agent/memory/dreaming/utils.js +2 -2
- package/dist/src/agent/memory/dreaming/utils.js.map +1 -1
- package/dist/src/agent/memory/index.d.ts +0 -2
- package/dist/src/agent/memory/index.js +1 -2
- package/dist/src/agent/middleware/self-verify.d.ts +0 -1
- package/dist/src/agent/middleware/self-verify.js +0 -2
- package/dist/src/agent/middleware/self-verify.js.map +1 -1
- package/dist/src/agent/models/index.d.ts +1 -1
- package/dist/src/agent/models/manager.d.ts +4 -20
- package/dist/src/agent/models/manager.js +9 -126
- package/dist/src/agent/models/manager.js.map +1 -1
- package/dist/src/agent/orchestration/agent-orchestrator.d.ts +0 -4
- package/dist/src/agent/orchestration/agent-orchestrator.js +1 -9
- package/dist/src/agent/orchestration/agent-orchestrator.js.map +1 -1
- package/dist/src/agent/prompt/sections/memory-skills.js +11 -10
- package/dist/src/agent/prompt/sections/memory-skills.js.map +1 -1
- package/dist/src/agent/prompt/sections/tooling.js +4 -4
- package/dist/src/agent/prompt/sections/tooling.js.map +1 -1
- package/dist/src/agent/prompt/service-prompt-builder.d.ts +0 -1
- package/dist/src/agent/prompt/service-prompt-builder.js +0 -12
- package/dist/src/agent/prompt/service-prompt-builder.js.map +1 -1
- package/dist/src/agent/prompt/subagent-context.js +1 -1
- package/dist/src/agent/prompt/subagent-context.js.map +1 -1
- package/dist/src/agent/prompt/types.d.ts +1 -1
- package/dist/src/agent/reply/startup-context.js +6 -105
- package/dist/src/agent/reply/startup-context.js.map +1 -1
- package/dist/src/agent/service.d.ts +1 -12
- package/dist/src/agent/service.js +3 -81
- package/dist/src/agent/service.js.map +1 -1
- package/dist/src/agent/service.types.d.ts +2 -2
- package/dist/src/agent/session/session-config-service.d.ts +11 -11
- package/dist/src/agent/session/session-config-service.js +14 -14
- package/dist/src/agent/session/session-config-service.js.map +1 -1
- package/dist/src/agent/session/session-inspector.js +3 -2
- package/dist/src/agent/session/session-inspector.js.map +1 -1
- package/dist/src/agent/starter-agents.js +12 -12
- package/dist/src/agent/starter-agents.js.map +1 -1
- package/dist/src/agent/tools/automation-tool.d.ts +14 -0
- package/dist/src/agent/tools/automation-tool.js +102 -0
- package/dist/src/agent/tools/automation-tool.js.map +1 -0
- package/dist/src/agent/tools/delegate-tool.js +1 -1
- package/dist/src/agent/tools/delegate-tool.js.map +1 -1
- package/dist/src/agent/tools/factory.d.ts +3 -3
- package/dist/src/agent/tools/factory.js +2 -2
- package/dist/src/agent/tools/factory.js.map +1 -1
- package/dist/src/agent/tools/index.d.ts +1 -1
- package/dist/src/agent/tools/index.js +2 -2
- package/dist/src/agent/tools/memory-tool.js +2 -2
- package/dist/src/agent/tools/memory-tool.js.map +1 -1
- package/dist/src/agent-manifest/resolver.d.ts +1 -0
- package/dist/src/agent-manifest/resolver.js +1 -0
- package/dist/src/agent-manifest/resolver.js.map +1 -1
- package/dist/src/agent-manifest/schema.d.ts +6 -0
- package/dist/src/agent-manifest/schema.js +12 -3
- package/dist/src/agent-manifest/schema.js.map +1 -1
- package/dist/src/ai-assist/text-assist.d.ts +1 -1
- package/dist/src/ai-assist/text-assist.js +56 -0
- package/dist/src/ai-assist/text-assist.js.map +1 -1
- package/dist/src/auth/profiles/store.js.map +1 -1
- package/dist/src/automations/api/routes.d.ts +3 -0
- package/dist/src/automations/api/routes.js +193 -0
- package/dist/src/automations/api/routes.js.map +1 -0
- package/dist/src/automations/domain/index.d.ts +3 -0
- package/dist/src/automations/domain/index.js +3 -0
- package/dist/src/automations/domain/schedule.d.ts +4 -0
- package/dist/src/automations/domain/schedule.js +37 -0
- package/dist/src/automations/domain/schedule.js.map +1 -0
- package/dist/src/automations/domain/types.d.ts +160 -0
- package/dist/src/automations/domain/validation.d.ts +370 -0
- package/dist/src/automations/domain/validation.js +149 -0
- package/dist/src/automations/domain/validation.js.map +1 -0
- package/dist/src/automations/draft/automation-draft-prompt.d.ts +26 -0
- package/dist/src/automations/draft/automation-draft-prompt.js +127 -0
- package/dist/src/automations/draft/automation-draft-prompt.js.map +1 -0
- package/dist/src/automations/draft/automation-draft-service.d.ts +12 -0
- package/dist/src/automations/draft/automation-draft-service.js +135 -0
- package/dist/src/automations/draft/automation-draft-service.js.map +1 -0
- package/dist/src/automations/draft/automation-draft-validator.d.ts +99 -0
- package/dist/src/automations/draft/automation-draft-validator.js +105 -0
- package/dist/src/automations/draft/automation-draft-validator.js.map +1 -0
- package/dist/src/automations/draft/automation-draft.types.d.ts +40 -0
- package/dist/src/automations/draft/index.d.ts +3 -0
- package/dist/src/automations/draft/index.js +3 -0
- package/dist/src/automations/index.d.ts +3 -0
- package/dist/src/automations/index.js +8 -0
- package/dist/src/automations/product-events.d.ts +5 -0
- package/dist/src/automations/product-events.js +21 -0
- package/dist/src/automations/product-events.js.map +1 -0
- package/dist/src/automations/service/action-executor.d.ts +9 -0
- package/dist/src/automations/service/action-executor.js +157 -0
- package/dist/src/automations/service/action-executor.js.map +1 -0
- package/dist/src/automations/service/automation-service.d.ts +54 -0
- package/dist/src/automations/service/automation-service.js +404 -0
- package/dist/src/automations/service/automation-service.js.map +1 -0
- package/dist/src/automations/service/index.d.ts +2 -0
- package/dist/src/automations/service/index.js +3 -0
- package/dist/src/automations/storage/automation-repository.d.ts +6 -0
- package/dist/src/automations/storage/automation-repository.js +61 -0
- package/dist/src/automations/storage/automation-repository.js.map +1 -0
- package/dist/src/automations/storage/automation-run-repository.d.ts +17 -0
- package/dist/src/automations/storage/automation-run-repository.js +130 -0
- package/dist/src/automations/storage/automation-run-repository.js.map +1 -0
- package/dist/src/automations/storage/index.d.ts +2 -0
- package/dist/src/automations/storage/index.js +3 -0
- package/dist/src/channels/plugin-types.d.ts +3 -0
- package/dist/src/chat-commands/builtins/thinking.js.map +1 -1
- package/dist/src/cli/command-catalog.js +0 -39
- package/dist/src/cli/command-catalog.js.map +1 -1
- package/dist/src/cli/command-loaders.js +0 -1
- package/dist/src/cli/command-loaders.js.map +1 -1
- package/dist/src/cli/command-manifest.js +0 -4
- package/dist/src/cli/command-manifest.js.map +1 -1
- package/dist/src/cli/commands/agents.js +7 -6
- package/dist/src/cli/commands/agents.js.map +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/doctor/checks/{cron-health.d.ts → migrations.d.ts} +1 -1
- package/dist/src/cli/commands/doctor/checks/migrations.js +40 -0
- package/dist/src/cli/commands/doctor/checks/migrations.js.map +1 -0
- package/dist/src/cli/commands/doctor/flow.js +2 -2
- package/dist/src/cli/commands/doctor/flow.js.map +1 -1
- package/dist/src/cli/commands/gateway/call.js +2 -2
- package/dist/src/cli/commands/gateway/call.js.map +1 -1
- package/dist/src/cli/commands/gateway/run-foreground.js +4 -2
- package/dist/src/cli/commands/gateway/run-foreground.js.map +1 -1
- package/dist/src/cli/commands/init.js +27 -9
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/tui.js +24 -2
- package/dist/src/cli/commands/tui.js.map +1 -1
- package/dist/src/cli/templates.js +3 -2
- package/dist/src/cli/templates.js.map +1 -1
- package/dist/src/cli/utils/init-workspace-core.js +2 -0
- package/dist/src/cli/utils/init-workspace-core.js.map +1 -1
- package/dist/src/commands/agents.config.d.ts +9 -0
- package/dist/src/commands/agents.config.js +40 -2
- package/dist/src/commands/agents.config.js.map +1 -1
- package/dist/src/config/agent-profile.js +4 -3
- package/dist/src/config/agent-profile.js.map +1 -1
- package/dist/src/config/agent-typed-models.js.map +1 -1
- package/dist/src/config/config-surface.d.ts +3 -0
- package/dist/src/config/index.d.ts +0 -1
- package/dist/src/config/index.js +3 -3
- package/dist/src/config/index.js.map +1 -1
- package/dist/src/config/paths.d.ts +0 -9
- package/dist/src/config/paths.js +1 -14
- package/dist/src/config/paths.js.map +1 -1
- package/dist/src/config/profile.js +0 -1
- package/dist/src/config/profile.js.map +1 -1
- package/dist/src/config/rules.js +0 -5
- package/dist/src/config/rules.js.map +1 -1
- package/dist/src/config/schema.d.ts +13 -12
- package/dist/src/config/schema.js +22 -26
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/config/web-patch.d.ts +0 -12
- package/dist/src/config/web-patch.js +2 -29
- package/dist/src/config/web-patch.js.map +1 -1
- package/dist/src/extensions/api.d.ts +2 -0
- package/dist/src/extensions/api.js +10 -0
- package/dist/src/extensions/api.js.map +1 -1
- package/dist/src/extensions/extension-registry-impl.d.ts +4 -1
- package/dist/src/extensions/extension-registry-impl.js +8 -0
- package/dist/src/extensions/extension-registry-impl.js.map +1 -1
- package/dist/src/extensions/loader.d.ts +3 -3
- package/dist/src/extensions/loader.js +3 -3
- package/dist/src/extensions/loader.js.map +1 -1
- package/dist/src/extensions/sdk/testing.d.ts +2 -0
- package/dist/src/extensions/sdk/testing.js +7 -0
- package/dist/src/extensions/sdk/testing.js.map +1 -1
- package/dist/src/extensions/types/core.d.ts +10 -1
- package/dist/src/extensions/types/index.d.ts +1 -1
- package/dist/src/extensions/types/{phase4.d.ts → registration.d.ts} +2 -2
- package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
- package/dist/src/gateway/agent-builtin-tools.js +1 -1
- package/dist/src/gateway/agent-builtin-tools.js.map +1 -1
- package/dist/src/gateway/agents-admin.d.ts +1 -0
- package/dist/src/gateway/agents-admin.js +13 -15
- package/dist/src/gateway/agents-admin.js.map +1 -1
- package/dist/src/gateway/capability-presets-admin.d.ts +1 -0
- package/dist/src/gateway/capability-presets-admin.js +19 -10
- package/dist/src/gateway/capability-presets-admin.js.map +1 -1
- package/dist/src/gateway/dreaming-automation-reconciler.d.ts +11 -0
- package/dist/src/gateway/dreaming-automation-reconciler.js +105 -0
- package/dist/src/gateway/dreaming-automation-reconciler.js.map +1 -0
- package/dist/src/gateway/heartbeat/service.d.ts +0 -2
- package/dist/src/gateway/heartbeat/service.js +0 -7
- package/dist/src/gateway/heartbeat/service.js.map +1 -1
- package/dist/src/gateway/hono/lib/config-payload.d.ts +5 -6
- package/dist/src/gateway/hono/lib/config-payload.js +2 -2
- package/dist/src/gateway/hono/lib/config-payload.js.map +1 -1
- package/dist/src/gateway/hono/routes/agents.js.map +1 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.d.ts +1 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js +15 -6
- package/dist/src/gateway/hono/routes/config-patch/misc.js.map +1 -1
- package/dist/src/gateway/hono/routes/dreaming.js +27 -37
- package/dist/src/gateway/hono/routes/dreaming.js.map +1 -1
- package/dist/src/gateway/hono/routes/home.d.ts +2 -2
- package/dist/src/gateway/hono/routes/home.js +34 -25
- package/dist/src/gateway/hono/routes/home.js.map +1 -1
- package/dist/src/gateway/hono/routes/lazy-bundles.js +10 -6
- package/dist/src/gateway/hono/routes/lazy-bundles.js.map +1 -1
- package/dist/src/gateway/hono/routes/migrations.d.ts +3 -0
- package/dist/src/gateway/hono/routes/migrations.js +35 -0
- package/dist/src/gateway/hono/routes/migrations.js.map +1 -0
- package/dist/src/gateway/hono/routes/public-gateway.js +2 -1
- package/dist/src/gateway/hono/routes/public-gateway.js.map +1 -1
- package/dist/src/gateway/hono/routes/sessions.js +14 -0
- package/dist/src/gateway/hono/routes/sessions.js.map +1 -1
- package/dist/src/gateway/run-loop.js +2 -0
- package/dist/src/gateway/run-loop.js.map +1 -1
- package/dist/src/gateway/security/operator-scopes.js +5 -1
- package/dist/src/gateway/security/operator-scopes.js.map +1 -1
- package/dist/src/gateway/service/config-coordinator.d.ts +4 -4
- package/dist/src/gateway/service/config-coordinator.js +14 -8
- package/dist/src/gateway/service/config-coordinator.js.map +1 -1
- package/dist/src/gateway/service/sessions-api.d.ts +2 -1
- package/dist/src/gateway/service/sessions-api.js +6 -1
- package/dist/src/gateway/service/sessions-api.js.map +1 -1
- package/dist/src/gateway/service.d.ts +7 -3
- package/dist/src/gateway/service.js +61 -27
- package/dist/src/gateway/service.js.map +1 -1
- package/dist/src/goals/goal-service.js +45 -4
- package/dist/src/goals/goal-service.js.map +1 -1
- package/dist/src/migrations/config/default-capability-preset.d.ts +10 -0
- package/dist/src/migrations/config/default-capability-preset.js +135 -0
- package/dist/src/migrations/config/default-capability-preset.js.map +1 -0
- package/dist/src/migrations/index.d.ts +4 -0
- package/dist/src/migrations/index.js +4 -0
- package/dist/src/migrations/registry.d.ts +8 -0
- package/dist/src/migrations/registry.js +18 -0
- package/dist/src/migrations/registry.js.map +1 -0
- package/dist/src/migrations/runner.d.ts +17 -0
- package/dist/src/migrations/runner.js +191 -0
- package/dist/src/migrations/runner.js.map +1 -0
- package/dist/src/migrations/types.d.ts +34 -0
- package/dist/src/notes/service.js +24 -1
- package/dist/src/notes/service.js.map +1 -1
- package/dist/src/providers/model-registry.d.ts +0 -1
- package/dist/src/providers/model-registry.js +0 -3
- package/dist/src/providers/model-registry.js.map +1 -1
- package/dist/src/routing/resolve-tui-session-key.d.ts +3 -0
- package/dist/src/routing/resolve-tui-session-key.js +14 -3
- package/dist/src/routing/resolve-tui-session-key.js.map +1 -1
- package/dist/src/session/transcript-outline.d.ts +47 -0
- package/dist/src/session/transcript-outline.js +481 -0
- package/dist/src/session/transcript-outline.js.map +1 -0
- package/dist/src/storage/sqlite/index.d.ts +0 -2
- package/dist/src/storage/sqlite/index.js +1 -3
- package/dist/src/storage/sqlite/migrations/016_automations.sql +47 -0
- package/dist/src/storage/sqlite/migrations/017_automation_run_events.sql +14 -0
- package/dist/src/storage/sqlite/migrations/018_automation_safety.sql +1 -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/row-mappers.js +3 -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/schema.sql +56 -46
- package/dist/src/tui/backends/embedded-backend.d.ts +6 -0
- package/dist/src/tui/backends/embedded-backend.js +19 -9
- package/dist/src/tui/backends/embedded-backend.js.map +1 -1
- package/dist/src/tui/backends/gateway-sse-backend.d.ts +3 -0
- package/dist/src/tui/backends/gateway-sse-backend.js +14 -0
- package/dist/src/tui/backends/gateway-sse-backend.js.map +1 -1
- package/dist/src/tui/tui-backend.d.ts +4 -0
- package/dist/src/tui/tui-commands.d.ts +5 -0
- package/dist/src/tui/tui-commands.js +43 -0
- package/dist/src/tui/tui-commands.js.map +1 -1
- package/dist/src/tui/tui-transcript-tree.d.ts +1 -1
- package/dist/src/tui/tui-transcript-tree.js +17 -257
- package/dist/src/tui/tui-transcript-tree.js.map +1 -1
- package/dist/src/tui/tui-types.d.ts +2 -0
- package/dist/src/tui/tui-types.js.map +1 -1
- package/dist/src/tui/tui.js +7 -2
- package/dist/src/tui/tui.js.map +1 -1
- package/dist/src/workflows/domain/index.js +1 -1
- package/dist/src/workflows/domain/run.d.ts +7 -7
- package/dist/src/workflows/domain/run.js.map +1 -1
- package/dist/src/workflows/index.js +2 -2
- package/dist/src/workflows/service/workflow-run-service.d.ts +2 -0
- package/dist/src/workflows/service/workflow-run-service.js +31 -9
- package/dist/src/workflows/service/workflow-run-service.js.map +1 -1
- package/dist/src/workflows/service/workflow-run-service.types.d.ts +1 -1
- package/package.json +4 -2
- package/dist/gateway/static/root/assets/agents-BCxZbkOw.js +0 -2
- package/dist/gateway/static/root/assets/app-management-settings-panel-bxYJVJpx.js +0 -1
- package/dist/gateway/static/root/assets/appearance-settings-BCIykXlI.js +0 -1
- package/dist/gateway/static/root/assets/browser-settings-page-DRhKdn81.js +0 -8
- package/dist/gateway/static/root/assets/capability-presets-api-CorhiHlg.js +0 -1
- package/dist/gateway/static/root/assets/capability-presets-settings-panel-qFx9Jtce.js +0 -1
- package/dist/gateway/static/root/assets/channels-settings-BAwAkqIA.js +0 -1
- package/dist/gateway/static/root/assets/cn-JdwAhgNB.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-BQLcfitM.js +0 -2
- package/dist/gateway/static/root/assets/createLucideIcon-DPHK1VkS.js +0 -1
- package/dist/gateway/static/root/assets/cron-api-qGwmL-24.js +0 -1
- package/dist/gateway/static/root/assets/cron-dreaming-jobs-nCMWCf0p.js +0 -1
- package/dist/gateway/static/root/assets/cron-page-BBWMAj8-.js +0 -3
- package/dist/gateway/static/root/assets/dreaming-settings-Dw89Obml.js +0 -1
- package/dist/gateway/static/root/assets/format-cron-label-BsotZDO5.js +0 -2
- package/dist/gateway/static/root/assets/format-interval-label-BzxafKxR.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-Cmwy58rS.js +0 -1
- package/dist/gateway/static/root/assets/goal-detail-page-l7mu5GWX.js +0 -1
- package/dist/gateway/static/root/assets/goals-settings-CYVY4NGp.js +0 -1
- package/dist/gateway/static/root/assets/heartbeat-config-api-DriO_CN9.js +0 -1
- package/dist/gateway/static/root/assets/heartbeat-settings-CUQTKxg7.js +0 -1
- package/dist/gateway/static/root/assets/index-C17Tsd_b.css +0 -1
- package/dist/gateway/static/root/assets/index-Cc41r16l.js +0 -191
- package/dist/gateway/static/root/assets/interval-presets-DFPCKW_W.js +0 -1
- package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-CcVcqstx.js +0 -1
- package/dist/gateway/static/root/assets/messages-B1iSKjiw.js +0 -3
- package/dist/gateway/static/root/assets/models-hub-panel-BfLfcta8.js +0 -2
- package/dist/gateway/static/root/assets/note-detail-page-BjwOQBfT.js +0 -2
- package/dist/gateway/static/root/assets/notes-page-DktdBiwB.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-rfVx96fq.js +0 -1
- package/dist/gateway/static/root/assets/schedule-field-CUCKODde.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-DbtMFuuH.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-5re5gAnP.js +0 -1
- package/dist/gateway/static/root/assets/settings-form-section-dmyaPOTG.js +0 -1
- package/dist/gateway/static/root/assets/settings-page-D-WMyLlj.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-Cl-DEJAU.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-CyPVvbLt.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-CleTH1oz.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-Ck8hdXqR.js +0 -2
- package/dist/gateway/static/root/assets/system-settings-panel-DI-LN_8G.js +0 -1
- package/dist/gateway/static/root/assets/typed-models-lib-kX9duch4.js +0 -1
- package/dist/gateway/static/root/assets/user-profile-settings-panel-B-UFPMXy.js +0 -1
- package/dist/gateway/static/root/assets/utils-Dm0hKalR.js +0 -1
- package/dist/gateway/static/root/assets/workflows-page-BtFGp2y_.js +0 -18
- package/dist/src/agent/fallback/error.d.ts +0 -22
- package/dist/src/agent/fallback/error.js +0 -32
- package/dist/src/agent/fallback/error.js.map +0 -1
- package/dist/src/agent/fallback/index.d.ts +0 -5
- package/dist/src/agent/fallback/index.js +0 -9
- package/dist/src/agent/fallback/index.js.map +0 -1
- package/dist/src/agent/memory/memory-flush.d.ts +0 -27
- package/dist/src/agent/memory/memory-flush.js +0 -124
- package/dist/src/agent/memory/memory-flush.js.map +0 -1
- package/dist/src/agent/orchestration/run-agent-turn-with-fallbacks.d.ts +0 -29
- package/dist/src/agent/orchestration/run-agent-turn-with-fallbacks.js +0 -76
- package/dist/src/agent/orchestration/run-agent-turn-with-fallbacks.js.map +0 -1
- package/dist/src/agent/service/reconcile-dreaming-cron.d.ts +0 -6
- package/dist/src/agent/service/reconcile-dreaming-cron.js +0 -84
- package/dist/src/agent/service/reconcile-dreaming-cron.js.map +0 -1
- package/dist/src/agent/tools/cronjob-tool.d.ts +0 -29
- package/dist/src/agent/tools/cronjob-tool.js +0 -274
- package/dist/src/agent/tools/cronjob-tool.js.map +0 -1
- package/dist/src/cli/commands/cron-cli.d.ts +0 -2
- package/dist/src/cli/commands/cron-cli.js +0 -15
- package/dist/src/cli/commands/cron-cli.js.map +0 -1
- package/dist/src/cli/commands/cron.d.ts +0 -4
- package/dist/src/cli/commands/cron.js +0 -188
- package/dist/src/cli/commands/cron.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/cron-health.js +0 -35
- package/dist/src/cli/commands/doctor/checks/cron-health.js.map +0 -1
- package/dist/src/cron/execution-types.d.ts +0 -42
- package/dist/src/cron/executor.d.ts +0 -67
- package/dist/src/cron/executor.js +0 -669
- package/dist/src/cron/executor.js.map +0 -1
- package/dist/src/cron/index.d.ts +0 -7
- package/dist/src/cron/index.js +0 -7
- package/dist/src/cron/job-content.d.ts +0 -5
- package/dist/src/cron/job-content.js +0 -15
- package/dist/src/cron/job-content.js.map +0 -1
- package/dist/src/cron/run-log-store.d.ts +0 -12
- package/dist/src/cron/run-log-store.js +0 -58
- package/dist/src/cron/run-log-store.js.map +0 -1
- package/dist/src/cron/schedule.d.ts +0 -10
- package/dist/src/cron/schedule.js +0 -85
- package/dist/src/cron/schedule.js.map +0 -1
- package/dist/src/cron/service.d.ts +0 -58
- package/dist/src/cron/service.js +0 -419
- package/dist/src/cron/service.js.map +0 -1
- package/dist/src/cron/types.d.ts +0 -183
- package/dist/src/cron/validation.d.ts +0 -500
- package/dist/src/cron/validation.js +0 -192
- package/dist/src/cron/validation.js.map +0 -1
- package/dist/src/cron/workflow-run-completion.d.ts +0 -23
- package/dist/src/cron/workflow-run-completion.js +0 -72
- package/dist/src/cron/workflow-run-completion.js.map +0 -1
- package/dist/src/extensions/types/phase4.js +0 -1
- package/dist/src/gateway/hono/routes/cron.d.ts +0 -3
- package/dist/src/gateway/hono/routes/cron.js +0 -109
- package/dist/src/gateway/hono/routes/cron.js.map +0 -1
- package/dist/src/storage/sqlite/cron-job-repository.d.ts +0 -6
- package/dist/src/storage/sqlite/cron-job-repository.js +0 -70
- package/dist/src/storage/sqlite/cron-job-repository.js.map +0 -1
- package/dist/src/storage/sqlite/cron-run-repository.d.ts +0 -5
- package/dist/src/storage/sqlite/cron-run-repository.js +0 -96
- package/dist/src/storage/sqlite/cron-run-repository.js.map +0 -1
- /package/dist/src/{cron → automations/domain}/types.js +0 -0
- /package/dist/src/{config/defaults.d.ts → automations/draft/automation-draft.types.js} +0 -0
- /package/dist/src/{config/defaults.js → extensions/types/registration.js} +0 -0
- /package/dist/src/{cron/execution-types.js → migrations/types.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.js","names":[],"sources":["../../../src/config/profile.ts"],"sourcesContent":["import { join } from 'path';\nimport { mkdir, readdir, stat, rm } from 'fs/promises';\nimport { existsSync } from 'fs';\nimport { createLogger } from '../utils/logger.js';\nimport { resolveHomeDir, ENV_VARS } from './paths-state.js';\n\nconst log = createLogger('Profile');\n\n// ============================================\n// Types\n// ============================================\n\nexport interface ProfileInfo {\n /** Profile name */\n name: string;\n /** Full path to state directory */\n stateDir: string;\n /** Whether this is the currently active profile */\n isActive: boolean;\n /** Number of agents in this profile */\n agentCount: number;\n /** Profile creation time */\n createdAt?: Date;\n}\n\n// ============================================\n// Path Resolution\n// ============================================\n\n/**\n * Resolve state directory for a specific profile\n */\nexport function resolveProfileStateDir(profile: string): string {\n const home = resolveHomeDir();\n return profile === 'default'\n ? join(home, '.xopc')\n : join(home, `.xopc-${profile}`);\n}\n\n/**\n * Get the name of a profile from its state directory path\n */\nexport function getProfileNameFromDir(stateDir: string): string {\n const home = resolveHomeDir();\n const relative = stateDir.replace(home, '').replace(/^\\//, '');\n\n if (relative === '.xopc') {\n return 'default';\n }\n\n const match = relative.match(/^\\.xopc-(.+)$/);\n return match ? match[1] : 'default';\n}\n\n/**\n * Get the currently active profile name from environment\n */\nexport function getCurrentProfile(): string {\n // Check XOPC_PROFILE first\n if (process.env[ENV_VARS.PROFILE]) {\n return process.env[ENV_VARS.PROFILE]!;\n }\n\n // Infer from XOPC_STATE_DIR\n if (process.env[ENV_VARS.STATE_DIR]) {\n return getProfileNameFromDir(process.env[ENV_VARS.STATE_DIR]!);\n }\n\n return 'default';\n}\n\n// ============================================\n// Profile Management\n// ============================================\n\nexport class ProfileManager {\n private readonly homeDir: string;\n\n constructor() {\n this.homeDir = resolveHomeDir();\n }\n\n /**\n * List all available profiles\n */\n async listProfiles(): Promise<ProfileInfo[]> {\n const profiles: ProfileInfo[] = [];\n const currentProfile = getCurrentProfile();\n\n // Check for default profile\n const defaultDir = join(this.homeDir, '.xopc');\n if (existsSync(defaultDir)) {\n profiles.push(await this.getProfileInfo('default', currentProfile === 'default'));\n }\n\n // Check for named profiles\n try {\n const entries = await readdir(this.homeDir, { withFileTypes: true });\n const profileDirs = entries.filter(\n (entry) =>\n entry.isDirectory() &&\n entry.name.startsWith('.xopc-') &&\n entry.name !== '.xopc'\n );\n\n for (const dir of profileDirs) {\n const name = dir.name.replace('.xopc-', '');\n profiles.push(await this.getProfileInfo(name, currentProfile === name));\n }\n } catch (error) {\n log.warn({ error }, 'Failed to list profile directories');\n }\n\n return profiles.sort((a, b) => {\n // Default profile first, then alphabetical\n if (a.name === 'default') return -1;\n if (b.name === 'default') return 1;\n return a.name.localeCompare(b.name);\n });\n }\n\n /**\n * Create a new profile\n */\n async createProfile(name: string): Promise<ProfileInfo> {\n if (name === 'default') {\n throw new Error('Cannot create a profile named \"default\", use \"init\" instead');\n }\n\n if (!/^[a-zA-Z0-9_-]+$/.test(name)) {\n throw new Error(\n 'Profile name must contain only letters, numbers, hyphens, and underscores'\n );\n }\n\n const stateDir = resolveProfileStateDir(name);\n\n if (existsSync(stateDir)) {\n throw new Error(`Profile \"${name}\" already exists at ${stateDir}`);\n }\n\n // Create basic directory structure\n await mkdir(stateDir, { recursive: true });\n await mkdir(join(stateDir, 'agents'), { recursive: true });\n await mkdir(join(stateDir, 'credentials'), { recursive: true });\n await mkdir(join(stateDir, 'extensions'), { recursive: true });\n await mkdir(join(stateDir, 'skills'), { recursive: true });\n await mkdir(join(stateDir, 'cron'), { recursive: true });\n await mkdir(join(stateDir, 'logs'), { recursive: true });\n await mkdir(join(stateDir, 'bin'), { recursive: true });\n await mkdir(join(stateDir, 'tools'), { recursive: true });\n\n log.info({ name, stateDir }, 'Created new profile');\n\n return this.getProfileInfo(name, false);\n }\n\n /**\n * Delete a profile (with safety checks)\n */\n async deleteProfile(name: string, options: { force?: boolean } = {}): Promise<void> {\n if (name === 'default') {\n throw new Error('Cannot delete the default profile');\n }\n\n const stateDir = resolveProfileStateDir(name);\n\n if (!existsSync(stateDir)) {\n throw new Error(`Profile \"${name}\" does not exist`);\n }\n\n // Safety check: don't delete if it's the current profile\n const currentProfile = getCurrentProfile();\n if (currentProfile === name && !options.force) {\n throw new Error(\n `Cannot delete profile \"${name}\" because it is currently active. ` +\n `Switch to another profile first or use --force.`\n );\n }\n\n // Delete the directory\n await rm(stateDir, { recursive: true, force: true });\n\n log.info({ name }, 'Deleted profile');\n }\n\n /**\n * Get shell command to switch to a profile\n */\n getSwitchCommand(name: string): string {\n if (name === 'default') {\n return `unset ${ENV_VARS.PROFILE}`;\n }\n return `export ${ENV_VARS.PROFILE}=${name}`;\n }\n\n /**\n * Get the profile state directory\n */\n getProfileStateDir(name: string): string {\n return resolveProfileStateDir(name);\n }\n\n // ============================================\n // Private Methods\n // ============================================\n\n private async getProfileInfo(name: string, isActive: boolean): Promise<ProfileInfo> {\n const stateDir = resolveProfileStateDir(name);\n\n let agentCount = 0;\n let createdAt: Date | undefined;\n\n try {\n const stats = await stat(stateDir);\n createdAt = stats.birthtime;\n\n // Count agents\n const agentsDir = join(stateDir, 'agents');\n if (existsSync(agentsDir)) {\n const entries = await readdir(agentsDir, { withFileTypes: true });\n agentCount = entries.filter((e) => e.isDirectory()).length;\n }\n } catch (error) {\n log.warn({ name, error }, 'Failed to get profile stats');\n }\n\n return {\n name,\n stateDir,\n isActive,\n agentCount,\n createdAt,\n };\n }\n}\n\n// ============================================\n// Convenience Functions\n// ============================================\n\nlet defaultManager: ProfileManager | null = null;\n\nexport function getProfileManager(): ProfileManager {\n if (!defaultManager) {\n defaultManager = new ProfileManager();\n }\n return defaultManager;\n}\n\nexport async function listProfiles(): Promise<ProfileInfo[]> {\n const manager = getProfileManager();\n return manager.listProfiles();\n}\n\nexport async function createProfile(name: string): Promise<ProfileInfo> {\n const manager = getProfileManager();\n return manager.createProfile(name);\n}\n\nexport async function deleteProfile(name: string, options?: { force?: boolean }): Promise<void> {\n const manager = getProfileManager();\n return manager.deleteProfile(name, options);\n}\n\nexport function getSwitchCommand(name: string): string {\n const manager = getProfileManager();\n return manager.getSwitchCommand(name);\n}\n"],"mappings":";;;;;;;aAGkD;kBACU;AAE5D,MAAM,MAAM,aAAa,UAAU;;;;AA0BnC,SAAgB,uBAAuB,SAAyB;CAC9D,MAAM,OAAO,gBAAgB;AAC7B,QAAO,YAAY,YACf,KAAK,MAAM,QAAQ,GACnB,KAAK,MAAM,SAAS,UAAU;;;;;AAMpC,SAAgB,sBAAsB,UAA0B;CAC9D,MAAM,OAAO,gBAAgB;CAC7B,MAAM,WAAW,SAAS,QAAQ,MAAM,GAAG,CAAC,QAAQ,OAAO,GAAG;AAE9D,KAAI,aAAa,QACf,QAAO;CAGT,MAAM,QAAQ,SAAS,MAAM,gBAAgB;AAC7C,QAAO,QAAQ,MAAM,KAAK;;;;;AAM5B,SAAgB,oBAA4B;AAE1C,KAAI,QAAQ,IAAI,SAAS,SACvB,QAAO,QAAQ,IAAI,SAAS;AAI9B,KAAI,QAAQ,IAAI,SAAS,WACvB,QAAO,sBAAsB,QAAQ,IAAI,SAAS,WAAY;AAGhE,QAAO;;AAOT,IAAa,iBAAb,MAA4B;CAC1B;CAEA,cAAc;AACZ,OAAK,UAAU,gBAAgB;;;;;CAMjC,MAAM,eAAuC;EAC3C,MAAM,WAA0B,EAAE;EAClC,MAAM,iBAAiB,mBAAmB;AAI1C,MAAI,WADe,KAAK,KAAK,SAAS,QACb,CAAC,CACxB,UAAS,KAAK,MAAM,KAAK,eAAe,WAAW,mBAAmB,UAAU,CAAC;AAInF,MAAI;GAEF,MAAM,eAAc,MADE,QAAQ,KAAK,SAAS,EAAE,eAAe,MAAM,CAAC,EACxC,QACzB,UACC,MAAM,aAAa,IACnB,MAAM,KAAK,WAAW,SAAS,IAC/B,MAAM,SAAS,QAClB;AAED,QAAK,MAAM,OAAO,aAAa;IAC7B,MAAM,OAAO,IAAI,KAAK,QAAQ,UAAU,GAAG;AAC3C,aAAS,KAAK,MAAM,KAAK,eAAe,MAAM,mBAAmB,KAAK,CAAC;;WAElE,OAAO;AACd,OAAI,KAAK,EAAE,OAAO,EAAE,qCAAqC;;AAG3D,SAAO,SAAS,MAAM,GAAG,MAAM;AAE7B,OAAI,EAAE,SAAS,UAAW,QAAO;AACjC,OAAI,EAAE,SAAS,UAAW,QAAO;AACjC,UAAO,EAAE,KAAK,cAAc,EAAE,KAAK;IACnC;;;;;CAMJ,MAAM,cAAc,MAAoC;AACtD,MAAI,SAAS,UACX,OAAM,IAAI,MAAM,kEAA8D;AAGhF,MAAI,CAAC,mBAAmB,KAAK,KAAK,CAChC,OAAM,IAAI,MACR,4EACD;EAGH,MAAM,WAAW,uBAAuB,KAAK;AAE7C,MAAI,WAAW,SAAS,CACtB,OAAM,IAAI,MAAM,YAAY,KAAK,sBAAsB,WAAW;AAIpE,QAAM,MAAM,UAAU,EAAE,WAAW,MAAM,CAAC;AAC1C,QAAM,MAAM,KAAK,UAAU,SAAS,EAAE,EAAE,WAAW,MAAM,CAAC;AAC1D,QAAM,MAAM,KAAK,UAAU,cAAc,EAAE,EAAE,WAAW,MAAM,CAAC;AAC/D,QAAM,MAAM,KAAK,UAAU,aAAa,EAAE,EAAE,WAAW,MAAM,CAAC;AAC9D,QAAM,MAAM,KAAK,UAAU,SAAS,EAAE,EAAE,WAAW,MAAM,CAAC;AAC1D,QAAM,MAAM,KAAK,UAAU,OAAO,EAAE,EAAE,WAAW,MAAM,CAAC;AACxD,QAAM,MAAM,KAAK,UAAU,OAAO,EAAE,EAAE,WAAW,MAAM,CAAC;AACxD,QAAM,MAAM,KAAK,UAAU,MAAM,EAAE,EAAE,WAAW,MAAM,CAAC;AACvD,QAAM,MAAM,KAAK,UAAU,QAAQ,EAAE,EAAE,WAAW,MAAM,CAAC;AAEzD,MAAI,KAAK;GAAE;GAAM;GAAU,EAAE,sBAAsB;AAEnD,SAAO,KAAK,eAAe,MAAM,MAAM;;;;;CAMzC,MAAM,cAAc,MAAc,UAA+B,EAAE,EAAiB;AAClF,MAAI,SAAS,UACX,OAAM,IAAI,MAAM,oCAAoC;EAGtD,MAAM,WAAW,uBAAuB,KAAK;AAE7C,MAAI,CAAC,WAAW,SAAS,CACvB,OAAM,IAAI,MAAM,YAAY,KAAK,kBAAkB;AAKrD,MADuB,mBACL,KAAK,QAAQ,CAAC,QAAQ,MACtC,OAAM,IAAI,MACR,0BAA0B,KAAK,mFAEhC;AAIH,QAAM,GAAG,UAAU;GAAE,WAAW;GAAM,OAAO;GAAM,CAAC;AAEpD,MAAI,KAAK,EAAE,MAAM,EAAE,kBAAkB;;;;;CAMvC,iBAAiB,MAAsB;AACrC,MAAI,SAAS,UACX,QAAO,SAAS,SAAS;AAE3B,SAAO,UAAU,SAAS,QAAQ,GAAG;;;;;CAMvC,mBAAmB,MAAsB;AACvC,SAAO,uBAAuB,KAAK;;CAOrC,MAAc,eAAe,MAAc,UAAyC;EAClF,MAAM,WAAW,uBAAuB,KAAK;EAE7C,IAAI,aAAa;EACjB,IAAI;AAEJ,MAAI;AAEF,gBAAY,MADQ,KAAK,SAAS,EAChB;GAGlB,MAAM,YAAY,KAAK,UAAU,SAAS;AAC1C,OAAI,WAAW,UAAU,CAEvB,eAAa,MADS,QAAQ,WAAW,EAAE,eAAe,MAAM,CAAC,EAC5C,QAAQ,MAAM,EAAE,aAAa,CAAC,CAAC;WAE/C,OAAO;AACd,OAAI,KAAK;IAAE;IAAM;IAAO,EAAE,8BAA8B;;AAG1D,SAAO;GACL;GACA;GACA;GACA;GACA;GACD;;;AAQL,IAAI,iBAAwC;AAE5C,SAAgB,oBAAoC;AAClD,KAAI,CAAC,eACH,kBAAiB,IAAI,gBAAgB;AAEvC,QAAO;;AAGT,eAAsB,eAAuC;AAE3D,QADgB,mBACF,CAAC,cAAc;;AAG/B,eAAsB,cAAc,MAAoC;AAEtE,QADgB,mBACF,CAAC,cAAc,KAAK;;AAGpC,eAAsB,cAAc,MAAc,SAA8C;AAE9F,QADgB,mBACF,CAAC,cAAc,MAAM,QAAQ;;AAG7C,SAAgB,iBAAiB,MAAsB;AAErD,QADgB,mBACF,CAAC,iBAAiB,KAAK"}
|
|
1
|
+
{"version":3,"file":"profile.js","names":[],"sources":["../../../src/config/profile.ts"],"sourcesContent":["import { join } from 'path';\nimport { mkdir, readdir, stat, rm } from 'fs/promises';\nimport { existsSync } from 'fs';\nimport { createLogger } from '../utils/logger.js';\nimport { resolveHomeDir, ENV_VARS } from './paths-state.js';\n\nconst log = createLogger('Profile');\n\n// ============================================\n// Types\n// ============================================\n\nexport interface ProfileInfo {\n /** Profile name */\n name: string;\n /** Full path to state directory */\n stateDir: string;\n /** Whether this is the currently active profile */\n isActive: boolean;\n /** Number of agents in this profile */\n agentCount: number;\n /** Profile creation time */\n createdAt?: Date;\n}\n\n// ============================================\n// Path Resolution\n// ============================================\n\n/**\n * Resolve state directory for a specific profile\n */\nexport function resolveProfileStateDir(profile: string): string {\n const home = resolveHomeDir();\n return profile === 'default'\n ? join(home, '.xopc')\n : join(home, `.xopc-${profile}`);\n}\n\n/**\n * Get the name of a profile from its state directory path\n */\nexport function getProfileNameFromDir(stateDir: string): string {\n const home = resolveHomeDir();\n const relative = stateDir.replace(home, '').replace(/^\\//, '');\n\n if (relative === '.xopc') {\n return 'default';\n }\n\n const match = relative.match(/^\\.xopc-(.+)$/);\n return match ? match[1] : 'default';\n}\n\n/**\n * Get the currently active profile name from environment\n */\nexport function getCurrentProfile(): string {\n // Check XOPC_PROFILE first\n if (process.env[ENV_VARS.PROFILE]) {\n return process.env[ENV_VARS.PROFILE]!;\n }\n\n // Infer from XOPC_STATE_DIR\n if (process.env[ENV_VARS.STATE_DIR]) {\n return getProfileNameFromDir(process.env[ENV_VARS.STATE_DIR]!);\n }\n\n return 'default';\n}\n\n// ============================================\n// Profile Management\n// ============================================\n\nexport class ProfileManager {\n private readonly homeDir: string;\n\n constructor() {\n this.homeDir = resolveHomeDir();\n }\n\n /**\n * List all available profiles\n */\n async listProfiles(): Promise<ProfileInfo[]> {\n const profiles: ProfileInfo[] = [];\n const currentProfile = getCurrentProfile();\n\n // Check for default profile\n const defaultDir = join(this.homeDir, '.xopc');\n if (existsSync(defaultDir)) {\n profiles.push(await this.getProfileInfo('default', currentProfile === 'default'));\n }\n\n // Check for named profiles\n try {\n const entries = await readdir(this.homeDir, { withFileTypes: true });\n const profileDirs = entries.filter(\n (entry) =>\n entry.isDirectory() &&\n entry.name.startsWith('.xopc-') &&\n entry.name !== '.xopc'\n );\n\n for (const dir of profileDirs) {\n const name = dir.name.replace('.xopc-', '');\n profiles.push(await this.getProfileInfo(name, currentProfile === name));\n }\n } catch (error) {\n log.warn({ error }, 'Failed to list profile directories');\n }\n\n return profiles.sort((a, b) => {\n // Default profile first, then alphabetical\n if (a.name === 'default') return -1;\n if (b.name === 'default') return 1;\n return a.name.localeCompare(b.name);\n });\n }\n\n /**\n * Create a new profile\n */\n async createProfile(name: string): Promise<ProfileInfo> {\n if (name === 'default') {\n throw new Error('Cannot create a profile named \"default\", use \"init\" instead');\n }\n\n if (!/^[a-zA-Z0-9_-]+$/.test(name)) {\n throw new Error(\n 'Profile name must contain only letters, numbers, hyphens, and underscores'\n );\n }\n\n const stateDir = resolveProfileStateDir(name);\n\n if (existsSync(stateDir)) {\n throw new Error(`Profile \"${name}\" already exists at ${stateDir}`);\n }\n\n // Create basic directory structure\n await mkdir(stateDir, { recursive: true });\n await mkdir(join(stateDir, 'agents'), { recursive: true });\n await mkdir(join(stateDir, 'credentials'), { recursive: true });\n await mkdir(join(stateDir, 'extensions'), { recursive: true });\n await mkdir(join(stateDir, 'skills'), { recursive: true });\n await mkdir(join(stateDir, 'logs'), { recursive: true });\n await mkdir(join(stateDir, 'bin'), { recursive: true });\n await mkdir(join(stateDir, 'tools'), { recursive: true });\n\n log.info({ name, stateDir }, 'Created new profile');\n\n return this.getProfileInfo(name, false);\n }\n\n /**\n * Delete a profile (with safety checks)\n */\n async deleteProfile(name: string, options: { force?: boolean } = {}): Promise<void> {\n if (name === 'default') {\n throw new Error('Cannot delete the default profile');\n }\n\n const stateDir = resolveProfileStateDir(name);\n\n if (!existsSync(stateDir)) {\n throw new Error(`Profile \"${name}\" does not exist`);\n }\n\n // Safety check: don't delete if it's the current profile\n const currentProfile = getCurrentProfile();\n if (currentProfile === name && !options.force) {\n throw new Error(\n `Cannot delete profile \"${name}\" because it is currently active. ` +\n `Switch to another profile first or use --force.`\n );\n }\n\n // Delete the directory\n await rm(stateDir, { recursive: true, force: true });\n\n log.info({ name }, 'Deleted profile');\n }\n\n /**\n * Get shell command to switch to a profile\n */\n getSwitchCommand(name: string): string {\n if (name === 'default') {\n return `unset ${ENV_VARS.PROFILE}`;\n }\n return `export ${ENV_VARS.PROFILE}=${name}`;\n }\n\n /**\n * Get the profile state directory\n */\n getProfileStateDir(name: string): string {\n return resolveProfileStateDir(name);\n }\n\n // ============================================\n // Private Methods\n // ============================================\n\n private async getProfileInfo(name: string, isActive: boolean): Promise<ProfileInfo> {\n const stateDir = resolveProfileStateDir(name);\n\n let agentCount = 0;\n let createdAt: Date | undefined;\n\n try {\n const stats = await stat(stateDir);\n createdAt = stats.birthtime;\n\n // Count agents\n const agentsDir = join(stateDir, 'agents');\n if (existsSync(agentsDir)) {\n const entries = await readdir(agentsDir, { withFileTypes: true });\n agentCount = entries.filter((e) => e.isDirectory()).length;\n }\n } catch (error) {\n log.warn({ name, error }, 'Failed to get profile stats');\n }\n\n return {\n name,\n stateDir,\n isActive,\n agentCount,\n createdAt,\n };\n }\n}\n\n// ============================================\n// Convenience Functions\n// ============================================\n\nlet defaultManager: ProfileManager | null = null;\n\nexport function getProfileManager(): ProfileManager {\n if (!defaultManager) {\n defaultManager = new ProfileManager();\n }\n return defaultManager;\n}\n\nexport async function listProfiles(): Promise<ProfileInfo[]> {\n const manager = getProfileManager();\n return manager.listProfiles();\n}\n\nexport async function createProfile(name: string): Promise<ProfileInfo> {\n const manager = getProfileManager();\n return manager.createProfile(name);\n}\n\nexport async function deleteProfile(name: string, options?: { force?: boolean }): Promise<void> {\n const manager = getProfileManager();\n return manager.deleteProfile(name, options);\n}\n\nexport function getSwitchCommand(name: string): string {\n const manager = getProfileManager();\n return manager.getSwitchCommand(name);\n}\n"],"mappings":"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"}
|
package/dist/src/config/rules.js
CHANGED
|
@@ -138,11 +138,6 @@ const BASE_RELOAD_RULES = [
|
|
|
138
138
|
kind: "hot",
|
|
139
139
|
description: "Any channel subtree (e.g. future extensions)"
|
|
140
140
|
},
|
|
141
|
-
{
|
|
142
|
-
prefix: "cron",
|
|
143
|
-
kind: "hot",
|
|
144
|
-
description: "Scheduled tasks"
|
|
145
|
-
},
|
|
146
141
|
{
|
|
147
142
|
prefix: "gateway.heartbeat",
|
|
148
143
|
kind: "hot",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.js","names":[],"sources":["../../../src/config/rules.ts"],"sourcesContent":["/**\n * Configuration reload rules\n * \n * Defines how different config paths are handled:\n * - hot: Apply changes immediately without restart\n * - restart: Require gateway restart\n * - none: Ignore changes (no action needed)\n */\n\nexport type ReloadKind = 'hot' | 'restart' | 'none';\n\nexport interface ReloadRule {\n prefix: string;\n kind: ReloadKind;\n description?: string;\n}\n\nexport interface ReloadPlan {\n changedPaths: string[];\n hotPaths: string[];\n restartPaths: string[];\n noopPaths: string[];\n requiresRestart: boolean;\n requiresHotReload: boolean;\n}\n\n/**\n * Base reload rules for config paths\n */\nexport const BASE_RELOAD_RULES: ReloadRule[] = [\n // Models config - hot reload\n { prefix: 'models.providers', kind: 'hot', description: 'Model provider API keys, base URLs' },\n { prefix: 'models.mode', kind: 'hot', description: 'Model merge mode' },\n \n { prefix: 'agents.list', kind: 'hot', description: 'Agent manifests' },\n { prefix: 'agents.capabilityPresets', kind: 'hot', description: 'Agent capability presets' },\n { prefix: 'agents.default', kind: 'hot', description: 'Default agent id' },\n \n // Gateway - restart required\n { prefix: 'gateway.bind', kind: 'restart', description: 'Gateway bind mode' },\n { prefix: 'gateway.customBindHost', kind: 'restart', description: 'Gateway custom bind host' },\n { prefix: 'gateway.port', kind: 'restart', description: 'Port number' },\n { prefix: 'gateway.mode', kind: 'restart', description: 'Gateway local/remote CLI mode' },\n { prefix: 'gateway.remote', kind: 'restart', description: 'Remote gateway CLI target' },\n { prefix: 'gateway.tailscale', kind: 'restart', description: 'Tailscale Serve/Funnel exposure' },\n { prefix: 'gateway.tls', kind: 'restart', description: 'Gateway native TLS' },\n { prefix: 'gateway.auth', kind: 'restart', description: 'Authentication settings' },\n { prefix: 'gateway.security', kind: 'restart', description: 'Gateway security policy' },\n { prefix: 'gateway.corsOrigins', kind: 'restart', description: 'CORS settings' },\n { prefix: 'gateway.trustedProxies', kind: 'restart', description: 'Trusted reverse proxy CIDRs' },\n {\n prefix: 'gateway.allowRealIpFallback',\n kind: 'restart',\n description: 'Trusted-proxy X-Real-IP fallback',\n },\n {\n prefix: 'gateway.dangerouslyAllowHostHeaderOriginFallback',\n kind: 'restart',\n description: 'Host-header origin fallback',\n },\n { prefix: 'gateway.maxSseConnections', kind: 'restart', description: 'SSE connection limit' },\n { prefix: 'gateway.channelConnectDeferMode', kind: 'restart', description: 'Channel connect defer mode' },\n { prefix: 'gateway.channelConnectDeferIds', kind: 'restart', description: 'Explicit channel connect defer list' },\n { prefix: 'gateway.channelConnectDeferSkipIds', kind: 'restart', description: 'Channel connect defer skip list' },\n { prefix: 'gateway.share', kind: 'restart', description: 'File share policy' },\n { prefix: 'gateway.siteShare', kind: 'restart', description: 'Site share policy' },\n {\n prefix: 'gateway.skillsStoreBaseUrl',\n kind: 'restart',\n description: 'Skills marketplace API base URL',\n },\n { prefix: 'gateway.enableHotReload', kind: 'hot', description: 'Hot reload toggle' },\n \n // Channels - hot reload (channel-specific prefixes are registered by channel plugins)\n { prefix: 'channels', kind: 'hot', description: 'Any channel subtree (e.g. future extensions)' },\n \n //
|
|
1
|
+
{"version":3,"file":"rules.js","names":[],"sources":["../../../src/config/rules.ts"],"sourcesContent":["/**\n * Configuration reload rules\n * \n * Defines how different config paths are handled:\n * - hot: Apply changes immediately without restart\n * - restart: Require gateway restart\n * - none: Ignore changes (no action needed)\n */\n\nexport type ReloadKind = 'hot' | 'restart' | 'none';\n\nexport interface ReloadRule {\n prefix: string;\n kind: ReloadKind;\n description?: string;\n}\n\nexport interface ReloadPlan {\n changedPaths: string[];\n hotPaths: string[];\n restartPaths: string[];\n noopPaths: string[];\n requiresRestart: boolean;\n requiresHotReload: boolean;\n}\n\n/**\n * Base reload rules for config paths\n */\nexport const BASE_RELOAD_RULES: ReloadRule[] = [\n // Models config - hot reload\n { prefix: 'models.providers', kind: 'hot', description: 'Model provider API keys, base URLs' },\n { prefix: 'models.mode', kind: 'hot', description: 'Model merge mode' },\n \n { prefix: 'agents.list', kind: 'hot', description: 'Agent manifests' },\n { prefix: 'agents.capabilityPresets', kind: 'hot', description: 'Agent capability presets' },\n { prefix: 'agents.default', kind: 'hot', description: 'Default agent id' },\n \n // Gateway - restart required\n { prefix: 'gateway.bind', kind: 'restart', description: 'Gateway bind mode' },\n { prefix: 'gateway.customBindHost', kind: 'restart', description: 'Gateway custom bind host' },\n { prefix: 'gateway.port', kind: 'restart', description: 'Port number' },\n { prefix: 'gateway.mode', kind: 'restart', description: 'Gateway local/remote CLI mode' },\n { prefix: 'gateway.remote', kind: 'restart', description: 'Remote gateway CLI target' },\n { prefix: 'gateway.tailscale', kind: 'restart', description: 'Tailscale Serve/Funnel exposure' },\n { prefix: 'gateway.tls', kind: 'restart', description: 'Gateway native TLS' },\n { prefix: 'gateway.auth', kind: 'restart', description: 'Authentication settings' },\n { prefix: 'gateway.security', kind: 'restart', description: 'Gateway security policy' },\n { prefix: 'gateway.corsOrigins', kind: 'restart', description: 'CORS settings' },\n { prefix: 'gateway.trustedProxies', kind: 'restart', description: 'Trusted reverse proxy CIDRs' },\n {\n prefix: 'gateway.allowRealIpFallback',\n kind: 'restart',\n description: 'Trusted-proxy X-Real-IP fallback',\n },\n {\n prefix: 'gateway.dangerouslyAllowHostHeaderOriginFallback',\n kind: 'restart',\n description: 'Host-header origin fallback',\n },\n { prefix: 'gateway.maxSseConnections', kind: 'restart', description: 'SSE connection limit' },\n { prefix: 'gateway.channelConnectDeferMode', kind: 'restart', description: 'Channel connect defer mode' },\n { prefix: 'gateway.channelConnectDeferIds', kind: 'restart', description: 'Explicit channel connect defer list' },\n { prefix: 'gateway.channelConnectDeferSkipIds', kind: 'restart', description: 'Channel connect defer skip list' },\n { prefix: 'gateway.share', kind: 'restart', description: 'File share policy' },\n { prefix: 'gateway.siteShare', kind: 'restart', description: 'Site share policy' },\n {\n prefix: 'gateway.skillsStoreBaseUrl',\n kind: 'restart',\n description: 'Skills marketplace API base URL',\n },\n { prefix: 'gateway.enableHotReload', kind: 'hot', description: 'Hot reload toggle' },\n \n // Channels - hot reload (channel-specific prefixes are registered by channel plugins)\n { prefix: 'channels', kind: 'hot', description: 'Any channel subtree (e.g. future extensions)' },\n \n // Heartbeat lives under gateway.heartbeat in config JSON (not top-level `heartbeat`)\n { prefix: 'gateway.heartbeat', kind: 'hot', description: 'Heartbeat settings' },\n \n // Web search - hot reload\n { prefix: 'webSearch', kind: 'hot', description: 'Web search settings' },\n { prefix: 'webTools', kind: 'hot', description: 'Web tools settings' },\n \n // Extension list toggles — still require process restart to load/unload modules\n {\n prefix: 'extensions.enabled',\n kind: 'restart',\n description: 'Extension enable list (requires restart)',\n },\n {\n prefix: 'extensions.disabled',\n kind: 'restart',\n description: 'Extension disable list (requires restart)',\n },\n // Extension instance config — hot-reloaded via extension registerReload handlers\n {\n prefix: 'extensions',\n kind: 'hot',\n description: 'Extension configuration (hot-reloaded via extension handlers)',\n },\n \n // Tools - hot reload (for tool-specific settings)\n { prefix: 'tools', kind: 'hot', description: 'Tools configuration' },\n\n // MCP servers - hot reload (dispose and reconnect runtimes)\n { prefix: 'mcp', kind: 'hot', description: 'MCP server definitions and idle TTL' },\n\n // Tunnel E2E TLS — restart (local HTTPS terminator port)\n { prefix: 'tunnel', kind: 'hot', description: 'Tunnel broker and auto-start settings' },\n];\n\nfunction getChannelReloadRules(): ReloadRule[] {\n return [];\n}\n\nfunction mergedReloadRules(): ReloadRule[] {\n return [...BASE_RELOAD_RULES, ...getChannelReloadRules()];\n}\n\n/**\n * Find matching rule for a config path\n */\nexport function matchReloadRule(path: string): ReloadRule | null {\n const merged = mergedReloadRules();\n const exact = merged.find((r) => r.prefix === path);\n if (exact) return exact;\n const sorted = [...merged].sort((a, b) => b.prefix.length - a.prefix.length);\n for (const rule of sorted) {\n if (path === rule.prefix || path.startsWith(`${rule.prefix}.`)) {\n return rule;\n }\n }\n return null;\n}\n\n/**\n * Build reload plan from changed paths\n */\nexport function buildReloadPlan(changedPaths: string[]): ReloadPlan {\n const plan: ReloadPlan = {\n changedPaths,\n hotPaths: [],\n restartPaths: [],\n noopPaths: [],\n requiresRestart: false,\n requiresHotReload: false,\n };\n\n for (const path of changedPaths) {\n const rule = matchReloadRule(path);\n \n if (!rule) {\n // No rule matched - default to restart for safety\n plan.restartPaths.push(path);\n plan.requiresRestart = true;\n continue;\n }\n\n switch (rule.kind) {\n case 'hot':\n plan.hotPaths.push(path);\n plan.requiresHotReload = true;\n break;\n case 'restart':\n plan.restartPaths.push(path);\n plan.requiresRestart = true;\n break;\n case 'none':\n plan.noopPaths.push(path);\n break;\n }\n }\n\n return plan;\n}\n"],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ export type AgentModelConfig = z.infer<typeof AgentModelRefSchema>;
|
|
|
12
12
|
export declare const AgentTypedModelRoleSchema: z.ZodObject<{
|
|
13
13
|
description: z.ZodOptional<z.ZodString>;
|
|
14
14
|
model: z.ZodString;
|
|
15
|
+
fallbacks: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
15
16
|
}, z.core.$strict>;
|
|
16
17
|
export type AgentTypedModelRole = z.infer<typeof AgentTypedModelRoleSchema>;
|
|
17
18
|
export declare const AgentModelsSchema: z.ZodOptional<z.ZodObject<{
|
|
@@ -19,6 +20,7 @@ export declare const AgentModelsSchema: z.ZodOptional<z.ZodObject<{
|
|
|
19
20
|
roles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
20
21
|
description: z.ZodOptional<z.ZodString>;
|
|
21
22
|
model: z.ZodString;
|
|
23
|
+
fallbacks: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
22
24
|
}, z.core.$strict>>>;
|
|
23
25
|
}, z.core.$strict>>;
|
|
24
26
|
export type AgentModelsConfig = z.infer<typeof AgentModelsSchema>;
|
|
@@ -49,6 +51,7 @@ export declare const AgentsConfigSchema: z.ZodDefault<z.ZodObject<{
|
|
|
49
51
|
defaultRole: z.ZodOptional<z.ZodString>;
|
|
50
52
|
roles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
51
53
|
model: z.ZodString;
|
|
54
|
+
fallbacks: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
52
55
|
description: z.ZodOptional<z.ZodString>;
|
|
53
56
|
}, z.core.$strict>>>;
|
|
54
57
|
policy: z.ZodOptional<z.ZodObject<{
|
|
@@ -471,6 +474,7 @@ export declare const AgentsConfigSchema: z.ZodDefault<z.ZodObject<{
|
|
|
471
474
|
defaultRole: z.ZodString;
|
|
472
475
|
roles: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
473
476
|
model: z.ZodString;
|
|
477
|
+
fallbacks: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
474
478
|
description: z.ZodOptional<z.ZodString>;
|
|
475
479
|
}, z.core.$strict>>>;
|
|
476
480
|
policy: z.ZodOptional<z.ZodObject<{
|
|
@@ -1115,12 +1119,6 @@ export declare const GatewayConfigSchema: z.ZodDefault<z.ZodObject<{
|
|
|
1115
1119
|
}, z.core.$strip>>;
|
|
1116
1120
|
}, z.core.$strip>>;
|
|
1117
1121
|
}, z.core.$strip>>;
|
|
1118
|
-
export declare const CronConfigSchema: z.ZodDefault<z.ZodObject<{
|
|
1119
|
-
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
1120
|
-
maxConcurrentJobs: z.ZodOptional<z.ZodNumber>;
|
|
1121
|
-
historyRetentionDays: z.ZodOptional<z.ZodNumber>;
|
|
1122
|
-
enableMetrics: z.ZodOptional<z.ZodBoolean>;
|
|
1123
|
-
}, z.core.$strip>>;
|
|
1124
1122
|
export declare const ModelsDevConfigSchema: z.ZodDefault<z.ZodObject<{
|
|
1125
1123
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
1126
1124
|
}, z.core.$strip>>;
|
|
@@ -1584,6 +1582,10 @@ export declare const CommandsConfigSchema: z.ZodOptional<z.ZodObject<{
|
|
|
1584
1582
|
restart: z.ZodOptional<z.ZodBoolean>;
|
|
1585
1583
|
}, z.core.$strict>>;
|
|
1586
1584
|
export type CommandsConfig = z.infer<typeof CommandsConfigSchema>;
|
|
1585
|
+
export declare const TuiConfigSchema: z.ZodDefault<z.ZodObject<{
|
|
1586
|
+
defaultAgent: z.ZodOptional<z.ZodString>;
|
|
1587
|
+
}, z.core.$strict>>;
|
|
1588
|
+
export type TuiConfig = z.infer<typeof TuiConfigSchema>;
|
|
1587
1589
|
export declare const McpServerSchema: z.ZodObject<{
|
|
1588
1590
|
command: z.ZodOptional<z.ZodString>;
|
|
1589
1591
|
args: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
@@ -1655,6 +1657,7 @@ export declare const ConfigSchema: z.ZodDefault<z.ZodObject<{
|
|
|
1655
1657
|
defaultRole: z.ZodOptional<z.ZodString>;
|
|
1656
1658
|
roles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
1657
1659
|
model: z.ZodString;
|
|
1660
|
+
fallbacks: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
1658
1661
|
description: z.ZodOptional<z.ZodString>;
|
|
1659
1662
|
}, z.core.$strict>>>;
|
|
1660
1663
|
policy: z.ZodOptional<z.ZodObject<{
|
|
@@ -2077,6 +2080,7 @@ export declare const ConfigSchema: z.ZodDefault<z.ZodObject<{
|
|
|
2077
2080
|
defaultRole: z.ZodString;
|
|
2078
2081
|
roles: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
2079
2082
|
model: z.ZodString;
|
|
2083
|
+
fallbacks: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
2080
2084
|
description: z.ZodOptional<z.ZodString>;
|
|
2081
2085
|
}, z.core.$strict>>>;
|
|
2082
2086
|
policy: z.ZodOptional<z.ZodObject<{
|
|
@@ -2487,12 +2491,6 @@ export declare const ConfigSchema: z.ZodDefault<z.ZodObject<{
|
|
|
2487
2491
|
connectors: z.ZodOptional<z.ZodObject<{
|
|
2488
2492
|
instances: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
2489
2493
|
}, z.core.$strict>>;
|
|
2490
|
-
cron: z.ZodDefault<z.ZodObject<{
|
|
2491
|
-
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
2492
|
-
maxConcurrentJobs: z.ZodOptional<z.ZodNumber>;
|
|
2493
|
-
historyRetentionDays: z.ZodOptional<z.ZodNumber>;
|
|
2494
|
-
enableMetrics: z.ZodOptional<z.ZodBoolean>;
|
|
2495
|
-
}, z.core.$strip>>;
|
|
2496
2494
|
goals: z.ZodOptional<z.ZodObject<{
|
|
2497
2495
|
maxTurns: z.ZodDefault<z.ZodNumber>;
|
|
2498
2496
|
judgeModelRef: z.ZodOptional<z.ZodString>;
|
|
@@ -2610,6 +2608,9 @@ export declare const ConfigSchema: z.ZodDefault<z.ZodObject<{
|
|
|
2610
2608
|
commands: z.ZodOptional<z.ZodObject<{
|
|
2611
2609
|
restart: z.ZodOptional<z.ZodBoolean>;
|
|
2612
2610
|
}, z.core.$strict>>;
|
|
2611
|
+
tui: z.ZodDefault<z.ZodObject<{
|
|
2612
|
+
defaultAgent: z.ZodOptional<z.ZodString>;
|
|
2613
|
+
}, z.core.$strict>>;
|
|
2613
2614
|
}, z.core.$strip>>;
|
|
2614
2615
|
export type Config = z.infer<typeof ConfigSchema>;
|
|
2615
2616
|
export type GatewayAuthConfig = z.infer<typeof GatewayAuthSchema>;
|
|
@@ -42,7 +42,7 @@ function parseModelRef(ref) {
|
|
|
42
42
|
model: trimmed.slice(idx + 1).trim()
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
|
-
var AgentModelRefSchema, AgentTypedModelRoleSchema, AgentTypedModelRolesSchema, AgentModelsSchema, AgentImageGenerationModelSchema, AgentsConfigSchema, BrowserCloudConfigSchema, BrowserExtensionConfigSchema, BrowserCloakConfigSchema, BrowserConfigSchema, BindingMatchSchema, BindingRuleSchema, BindingsConfigSchema, SessionDmScopeSchema, SessionStorageConfigSchema, SessionResetModeSchema, SessionResetConfigSchema, SessionResetByTypeSchema, SessionScopeSchema, SessionConfigSchema, ChannelsConfigSchema, SearchProviderEntrySchema, WebSearchConfigSchema, WebsiteBlocklistSchema, WebToolsConfigSchema, ToolsConfigSchema, GatewayAuthRateLimitSchema, GatewaySecuritySchema, GatewayTrustedProxySchema, GatewayAuthSchema, GatewayTailscaleConsentSchema, GatewayTailscaleSchema, GatewayRemoteSchema, GatewayTlsSchema, GatewayModeSchema, HeartbeatConfigSchema, GatewayChannelConnectDeferModeSchema, TunnelConsentSchema, TunnelConfigSchema, WorkspaceImportConfigSchema, WorkspaceConfigSchema, GatewayBindModeSchema, GatewayConfigSchema,
|
|
45
|
+
var AgentModelRefSchema, AgentTypedModelRoleSchema, AgentTypedModelRolesSchema, AgentModelsSchema, AgentImageGenerationModelSchema, AgentsConfigSchema, BrowserCloudConfigSchema, BrowserExtensionConfigSchema, BrowserCloakConfigSchema, BrowserConfigSchema, BindingMatchSchema, BindingRuleSchema, BindingsConfigSchema, SessionDmScopeSchema, SessionStorageConfigSchema, SessionResetModeSchema, SessionResetConfigSchema, SessionResetByTypeSchema, SessionScopeSchema, SessionConfigSchema, ChannelsConfigSchema, SearchProviderEntrySchema, WebSearchConfigSchema, WebsiteBlocklistSchema, WebToolsConfigSchema, ToolsConfigSchema, GatewayAuthRateLimitSchema, GatewaySecuritySchema, GatewayTrustedProxySchema, GatewayAuthSchema, GatewayTailscaleConsentSchema, GatewayTailscaleSchema, GatewayRemoteSchema, GatewayTlsSchema, GatewayModeSchema, HeartbeatConfigSchema, GatewayChannelConnectDeferModeSchema, TunnelConsentSchema, TunnelConfigSchema, WorkspaceImportConfigSchema, WorkspaceConfigSchema, GatewayBindModeSchema, GatewayConfigSchema, ModelsDevConfigSchema, SttProviderConfigCatchallSchema, STTProviderConfigSchema, STTFallbackConfigSchema, MediaUnderstandingCapabilitiesSchema, MediaUnderstandingModelSchema, STTConfigSchema, TtsProviderConfigCatchallSchema, TTSProviderConfigSchema, TTSFallbackConfigSchema, TTSModelOverridesConfigSchema, TTSEdgeConfigSchema, TTSSummarizationConfigSchema, TTSConfigSchema, MessagesConfigSchema, ToolsMediaAudioConfigSchema, ToolsMediaConfigSchema, ProviderAzureConfigSchema, ProviderRequestOverridesSchema, ProviderAuthConfigSchema, ProvidersConfigSchema, ExtensionSecurityConfigSchema, ExtensionSlotsConfigSchema, ExtensionsConfigSchema, UpdateAutoConfigSchema, GoalNotificationEventSchema, GoalNotificationTargetSchema, GoalNotificationsConfigSchema, GoalsConfigSchema, UpdateConfigSchema, CommandsConfigSchema, TuiConfigSchema, McpHttpUrlSchema, ConnectorSecretReferenceSchema, McpConfigScalarSchema, McpServerSchema, McpConfigSchema, ConnectorsConfigSchema, ConfigSchema;
|
|
46
46
|
var init_schema = __esmMin((() => {
|
|
47
47
|
init_schema$1();
|
|
48
48
|
init_cache_dir_policy();
|
|
@@ -55,15 +55,24 @@ var init_schema = __esmMin((() => {
|
|
|
55
55
|
}).strict();
|
|
56
56
|
AgentTypedModelRoleSchema = z.object({
|
|
57
57
|
description: z.string().max(500).optional(),
|
|
58
|
-
model: z.string().min(1)
|
|
58
|
+
model: z.string().min(1),
|
|
59
|
+
fallbacks: z.array(z.string().min(1)).optional()
|
|
59
60
|
}).strict().superRefine((entry, ctx) => {
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
const validateRef = (ref) => {
|
|
62
|
+
const trimmed = ref.trim();
|
|
63
|
+
const idx = trimmed.indexOf("/");
|
|
64
|
+
return idx > 0 && idx < trimmed.length - 1;
|
|
65
|
+
};
|
|
66
|
+
if (!validateRef(entry.model)) ctx.addIssue({
|
|
63
67
|
code: "custom",
|
|
64
68
|
message: `model must be provider/model format (got '${entry.model}')`,
|
|
65
69
|
path: ["model"]
|
|
66
70
|
});
|
|
71
|
+
for (const [index, fallback] of (entry.fallbacks ?? []).entries()) if (!validateRef(fallback)) ctx.addIssue({
|
|
72
|
+
code: "custom",
|
|
73
|
+
message: `fallback must be provider/model format (got '${fallback}')`,
|
|
74
|
+
path: ["fallbacks", index]
|
|
75
|
+
});
|
|
67
76
|
});
|
|
68
77
|
AgentTypedModelRolesSchema = z.record(z.string().regex(/^[a-z][a-z0-9_-]{0,63}$/), AgentTypedModelRoleSchema).optional();
|
|
69
78
|
AgentModelsSchema = z.object({
|
|
@@ -615,17 +624,6 @@ strict: z.boolean().optional() }).optional();
|
|
|
615
624
|
skillsMarketplaceProvider: "skillhub",
|
|
616
625
|
skillsStoreBaseUrl: "https://store.xopc.ai"
|
|
617
626
|
});
|
|
618
|
-
CronConfigSchema = z.object({
|
|
619
|
-
enabled: z.boolean().optional(),
|
|
620
|
-
maxConcurrentJobs: z.number().optional(),
|
|
621
|
-
historyRetentionDays: z.number().optional(),
|
|
622
|
-
enableMetrics: z.boolean().optional()
|
|
623
|
-
}).default({
|
|
624
|
-
enabled: true,
|
|
625
|
-
maxConcurrentJobs: 5,
|
|
626
|
-
historyRetentionDays: 7,
|
|
627
|
-
enableMetrics: true
|
|
628
|
-
});
|
|
629
627
|
ModelsDevConfigSchema = z.object({ enabled: z.boolean().default(true) }).default({ enabled: true });
|
|
630
628
|
SttProviderConfigCatchallSchema = z.union([
|
|
631
629
|
z.string(),
|
|
@@ -887,6 +885,9 @@ tts: TTSConfigSchema.optional() }).optional();
|
|
|
887
885
|
auto: UpdateAutoConfigSchema
|
|
888
886
|
}).strict().optional();
|
|
889
887
|
CommandsConfigSchema = z.object({ restart: z.boolean().optional() }).strict().optional();
|
|
888
|
+
TuiConfigSchema = z.object({
|
|
889
|
+
/** Default agent id for fresh TUI sessions. Leaves global routing (`agents.default`) untouched. */
|
|
890
|
+
defaultAgent: z.string().min(1).optional() }).strict().default({});
|
|
890
891
|
McpHttpUrlSchema = z.string().url().refine((value) => {
|
|
891
892
|
try {
|
|
892
893
|
const protocol = new URL(value).protocol;
|
|
@@ -940,7 +941,6 @@ tts: TTSConfigSchema.optional() }).optional();
|
|
|
940
941
|
tools: ToolsConfigSchema,
|
|
941
942
|
mcp: McpConfigSchema,
|
|
942
943
|
connectors: ConnectorsConfigSchema,
|
|
943
|
-
cron: CronConfigSchema,
|
|
944
944
|
goals: GoalsConfigSchema.optional(),
|
|
945
945
|
extensions: ExtensionsConfigSchema.default({}),
|
|
946
946
|
/** Per-vendor capability provider config (image / audio / video). */
|
|
@@ -949,7 +949,8 @@ tts: TTSConfigSchema.optional() }).optional();
|
|
|
949
949
|
/** Delivery / presentation concerns (currently `tts`). */
|
|
950
950
|
messages: MessagesConfigSchema,
|
|
951
951
|
update: UpdateConfigSchema,
|
|
952
|
-
commands: CommandsConfigSchema
|
|
952
|
+
commands: CommandsConfigSchema,
|
|
953
|
+
tui: TuiConfigSchema
|
|
953
954
|
}).default({
|
|
954
955
|
agents: {
|
|
955
956
|
default: "main",
|
|
@@ -1037,12 +1038,6 @@ tts: TTSConfigSchema.optional() }).optional();
|
|
|
1037
1038
|
maxResults: 5,
|
|
1038
1039
|
providers: []
|
|
1039
1040
|
} } },
|
|
1040
|
-
cron: {
|
|
1041
|
-
enabled: true,
|
|
1042
|
-
maxConcurrentJobs: 5,
|
|
1043
|
-
historyRetentionDays: 7,
|
|
1044
|
-
enableMetrics: true
|
|
1045
|
-
},
|
|
1046
1041
|
goals: {
|
|
1047
1042
|
maxTurns: 20,
|
|
1048
1043
|
checklistMode: true,
|
|
@@ -1075,11 +1070,12 @@ tts: TTSConfigSchema.optional() }).optional();
|
|
|
1075
1070
|
},
|
|
1076
1071
|
slots: {}
|
|
1077
1072
|
},
|
|
1078
|
-
modelsDev: { enabled: true }
|
|
1073
|
+
modelsDev: { enabled: true },
|
|
1074
|
+
tui: {}
|
|
1079
1075
|
});
|
|
1080
1076
|
}));
|
|
1081
1077
|
//#endregion
|
|
1082
1078
|
init_schema();
|
|
1083
|
-
export { AgentImageGenerationModelSchema, AgentModelRefSchema, AgentModelsSchema, AgentTypedModelRoleSchema, AgentsConfigSchema, BindingMatchSchema, BindingRuleSchema, BindingsConfigSchema, BrowserConfigSchema, ChannelsConfigSchema, CommandsConfigSchema, ConfigSchema, ConnectorsConfigSchema,
|
|
1079
|
+
export { AgentImageGenerationModelSchema, AgentModelRefSchema, AgentModelsSchema, AgentTypedModelRoleSchema, AgentsConfigSchema, BindingMatchSchema, BindingRuleSchema, BindingsConfigSchema, BrowserConfigSchema, ChannelsConfigSchema, CommandsConfigSchema, ConfigSchema, ConnectorsConfigSchema, ExtensionSecurityConfigSchema, ExtensionSlotsConfigSchema, ExtensionsConfigSchema, GatewayAuthRateLimitSchema, GatewayAuthSchema, GatewayBindModeSchema, GatewayChannelConnectDeferModeSchema, GatewayConfigSchema, GatewayModeSchema, GatewayRemoteSchema, GatewaySecuritySchema, GatewayTailscaleConsentSchema, GatewayTailscaleSchema, GatewayTlsSchema, GatewayTrustedProxySchema, GoalNotificationEventSchema, GoalNotificationTargetSchema, GoalNotificationsConfigSchema, 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, TelegramAccountConfigSchema, TelegramConfigSchema, TelegramGroupConfigSchema, TelegramTopicConfigSchema, ToolsConfigSchema, ToolsMediaAudioConfigSchema, ToolsMediaConfigSchema, TuiConfigSchema, TunnelConfigSchema, TunnelConsentSchema, UpdateAutoConfigSchema, UpdateConfigSchema, WebSearchConfigSchema, WebToolsConfigSchema, WebsiteBlocklistSchema, WeixinAccountConfigSchema, WeixinConfigSchema, WorkspaceConfigSchema, WorkspaceImportConfigSchema, getAgentDefaultModelRef, init_schema, parseModelRef };
|
|
1084
1080
|
|
|
1085
1081
|
//# sourceMappingURL=schema.js.map
|