@xopcai/xopc 0.0.116 → 0.0.118
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -28
- package/README.zh-CN.md +63 -45
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/demo-memory/src/index.d.ts +6 -0
- package/dist/extensions/demo-memory/src/index.js +132 -0
- package/dist/extensions/demo-memory/src/index.js.map +1 -0
- package/dist/extensions/demo-memory/xopc.extension.json +15 -0
- package/dist/extensions/feishu/src/outbound/media-load.js +1 -1
- package/dist/extensions/feishu/src/schema/config-schema.d.ts +3 -3
- package/dist/extensions/feishu/src/workflow-progress.js +1 -1
- package/dist/extensions/telegram/src/adapters/streaming-adapter.js +1 -1
- package/dist/extensions/telegram/src/command-handler.js +1 -2
- package/dist/extensions/telegram/src/command-handler.js.map +1 -1
- package/dist/extensions/telegram/src/config-schema.d.ts +8 -8
- package/dist/extensions/telegram/src/inbound-processor.js +1 -1
- package/dist/extensions/telegram/src/plugin.js +1 -1
- package/dist/extensions/telegram/src/routing-integration.js +2 -2
- package/dist/extensions/telegram/src/update-offset-store.js +1 -1
- package/dist/extensions/telegram/src/workflow-progress.js +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/extensions/weixin/src/api/api.js +2 -2
- package/dist/extensions/weixin/src/auth/accounts.js +1 -1
- package/dist/extensions/weixin/src/cdn/upload.js +1 -1
- package/dist/extensions/weixin/src/config-schema.d.ts +3 -3
- package/dist/extensions/weixin/src/media/data-url.js +1 -1
- package/dist/extensions/weixin/src/messaging/debug-mode.js +1 -1
- package/dist/extensions/weixin/src/messaging/inbound.js +1 -1
- package/dist/extensions/weixin/src/messaging/process-message.js +1 -1
- package/dist/extensions/weixin/src/plugin.js +1 -1
- package/dist/extensions/weixin/src/storage/sync-buf.js +1 -1
- package/dist/extensions/weixin/src/workflow-progress.js +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-CWM1UU5P.js → agent-avatar-dicebear-dzUrQoeZ.js} +1 -1
- package/dist/gateway/static/root/assets/agents-BCxZbkOw.js +2 -0
- package/dist/gateway/static/root/assets/{app-management-settings-panel-yXSXY_bu.js → app-management-settings-panel-bxYJVJpx.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-DjY1P_ug.js → appearance-settings-BCIykXlI.js} +1 -1
- package/dist/gateway/static/root/assets/apps-page--wMEL00f.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-CytE5j-e.js → archive-plugin-Cki4SfU2.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-BvvrN6rF.js → attachment-load-D-KnS2Do.js} +1 -1
- package/dist/gateway/static/root/assets/{binary-plugins-IBWSitnj.js → binary-plugins-D2sgvJja.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-C-wDpsf-.js → block-editor-DIq-4Gvb.js} +27 -27
- package/dist/gateway/static/root/assets/browser-settings-page-DRhKdn81.js +8 -0
- package/dist/gateway/static/root/assets/capability-presets-api-CorhiHlg.js +1 -0
- package/dist/gateway/static/root/assets/capability-presets-settings-panel-qFx9Jtce.js +1 -0
- package/dist/gateway/static/root/assets/channels-settings-BAwAkqIA.js +1 -0
- package/dist/gateway/static/root/assets/connectors-page-BQLcfitM.js +2 -0
- package/dist/gateway/static/root/assets/cron-api-qGwmL-24.js +1 -0
- package/dist/gateway/static/root/assets/cron-page-BBWMAj8-.js +3 -0
- package/dist/gateway/static/root/assets/dreaming-settings-Dw89Obml.js +1 -0
- package/dist/gateway/static/root/assets/{extension-debug-page-BAIyjDlq.js → extension-debug-page-DYu1KaFQ.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-DEhv2GpC.js → extension-page-B3W6QwlZ.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-DOuAxTDW.js → extension-settings-page-D7VQ-cxE.js} +1 -1
- package/dist/gateway/static/root/assets/{fetch-CTsREQIe.js → fetch-B7xDPu-R.js} +1 -1
- package/dist/gateway/static/root/assets/{format-interval-label-D35Bfhtx.js → format-interval-label-BzxafKxR.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-config-api-BTBLSeUu.js +1 -0
- package/dist/gateway/static/root/assets/gateway-settings-Cmwy58rS.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-startup-retry-C1KAHrd2.js → gateway-startup-retry-CYj9FWCp.js} +1 -1
- package/dist/gateway/static/root/assets/goal-detail-page-l7mu5GWX.js +1 -0
- package/dist/gateway/static/root/assets/{goals-config-api-KnLGpu6h.js → goals-config-api-CQQgzPr3.js} +1 -1
- package/dist/gateway/static/root/assets/goals-page-BHitvJAv.js +2 -0
- package/dist/gateway/static/root/assets/{goals-settings-DtPtqZi8.js → goals-settings-CYVY4NGp.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-config-api-uKw1f0IG.js → heartbeat-config-api-DriO_CN9.js} +1 -1
- package/dist/gateway/static/root/assets/heartbeat-settings-CUQTKxg7.js +1 -0
- package/dist/gateway/static/root/assets/index-C17Tsd_b.css +1 -0
- package/dist/gateway/static/root/assets/index-Cc41r16l.js +191 -0
- package/dist/gateway/static/root/assets/{interval-presets-Dq0FXJ65.js → interval-presets-DFPCKW_W.js} +1 -1
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-C9_t4m7t.js → keyboard-shortcuts-settings-CcVcqstx.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-SNkWzidV.js → logs-page-C2Uqvae9.js} +2 -2
- package/dist/gateway/static/root/assets/{markdown-split-Ca87W8-h.js → markdown-split-BwOFrJ2E.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-BAcUjPRJ.js → media-plugins-Cnz6Q5G6.js} +1 -1
- package/dist/gateway/static/root/assets/messages-B1iSKjiw.js +3 -0
- package/dist/gateway/static/root/assets/models-hub-panel-BfLfcta8.js +2 -0
- package/dist/gateway/static/root/assets/note-detail-page-BjwOQBfT.js +2 -0
- package/dist/gateway/static/root/assets/{note-image-lightbox-hnSX5SSn.js → note-image-lightbox-B-Svpmza.js} +1 -1
- package/dist/gateway/static/root/assets/notes-page-DktdBiwB.js +1 -0
- package/dist/gateway/static/root/assets/{preview-open-alternatives-CNgM20H5.js → preview-open-alternatives-Bss4TiwP.js} +1 -1
- package/dist/gateway/static/root/assets/remote-access-hub-rfVx96fq.js +1 -0
- package/dist/gateway/static/root/assets/{save-bar-controls-CcdjGcfT.js → save-bar-controls-BRNjdgKq.js} +1 -1
- package/dist/gateway/static/root/assets/{schedule-field-CYr39z76.js → schedule-field-CUCKODde.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-BRAJgZQ2.js → schema-form-Dub9sy8r.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-DbtMFuuH.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-5re5gAnP.js +1 -0
- package/dist/gateway/static/root/assets/{settings-collapsible-section-BhzjeGWi.js → settings-collapsible-section-BeFLavGi.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-form-section-Cz3Pcr9b.js → settings-form-section-dmyaPOTG.js} +1 -1
- package/dist/gateway/static/root/assets/settings-page-D-WMyLlj.js +1 -0
- package/dist/gateway/static/root/assets/setup-status-panel-Cl-DEJAU.js +1 -0
- package/dist/gateway/static/root/assets/{share-preview-page-DL4y9K5e.js → share-preview-page-C8glrdqe.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-CyPVvbLt.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-CleTH1oz.js +1 -0
- package/dist/gateway/static/root/assets/skills-page-Ck8hdXqR.js +2 -0
- package/dist/gateway/static/root/assets/{system-settings-panel-FD2jxRZ3.js → system-settings-panel-DI-LN_8G.js} +1 -1
- package/dist/gateway/static/root/assets/typed-models-lib-kX9duch4.js +1 -0
- package/dist/gateway/static/root/assets/{use-channel-catalog-BInPrfR5.js → use-channel-catalog-DqlWTsDb.js} +1 -1
- package/dist/gateway/static/root/assets/user-profile-settings-panel-B-UFPMXy.js +1 -0
- package/dist/gateway/static/root/assets/utils-Dm0hKalR.js +1 -0
- package/dist/gateway/static/root/assets/voice-api-key-field-C73IVZeC.js +1 -0
- package/dist/gateway/static/root/assets/{voice-player-store-1U3vFppm.js → voice-player-store-C_ArLJPM.js} +1 -1
- package/dist/gateway/static/root/assets/workflows-page-BtFGp2y_.js +18 -0
- package/dist/gateway/static/root/index.html +5 -5
- package/dist/package.js +1 -1
- package/dist/src/agent/agent-manager.d.ts +1 -1
- package/dist/src/agent/agent-manager.js +14 -14
- package/dist/src/agent/agent-manager.js.map +1 -1
- package/dist/src/agent/agent-scope.js +5 -9
- package/dist/src/agent/agent-scope.js.map +1 -1
- package/dist/src/agent/background-review/coordinator.js +0 -1
- package/dist/src/agent/background-review/coordinator.js.map +1 -1
- package/dist/src/agent/background-review/prompts.d.ts +2 -2
- package/dist/src/agent/background-review/prompts.js +2 -2
- package/dist/src/agent/background-review/prompts.js.map +1 -1
- package/dist/src/agent/background-review/run-background-review.d.ts +0 -2
- package/dist/src/agent/background-review/run-background-review.js +2 -4
- package/dist/src/agent/background-review/run-background-review.js.map +1 -1
- package/dist/src/agent/background-review/settings.d.ts +1 -1
- package/dist/src/agent/background-review/settings.js +8 -8
- package/dist/src/agent/background-review/settings.js.map +1 -1
- package/dist/src/agent/bootstrap/bootstrap-cache.d.ts +1 -0
- package/dist/src/agent/bootstrap/bootstrap-cache.js +4 -3
- package/dist/src/agent/bootstrap/bootstrap-cache.js.map +1 -1
- package/dist/src/agent/bootstrap/bootstrap-context.d.ts +2 -2
- package/dist/src/agent/bootstrap/bootstrap-context.js +4 -4
- package/dist/src/agent/bootstrap/bootstrap-context.js.map +1 -1
- package/dist/src/agent/bootstrap/bootstrap-files.d.ts +4 -0
- package/dist/src/agent/bootstrap/bootstrap-files.js +4 -3
- package/dist/src/agent/bootstrap/bootstrap-files.js.map +1 -1
- package/dist/src/agent/bootstrap/filter-bootstrap-files.js +4 -2
- package/dist/src/agent/bootstrap/filter-bootstrap-files.js.map +1 -1
- package/dist/src/agent/bootstrap/load-bootstrap-files.d.ts +2 -1
- package/dist/src/agent/bootstrap/load-bootstrap-files.js +18 -17
- package/dist/src/agent/bootstrap/load-bootstrap-files.js.map +1 -1
- package/dist/src/agent/bootstrap/project-agents-context.js +1 -1
- package/dist/src/agent/bootstrap/types.d.ts +1 -1
- package/dist/src/agent/context/workspace-seed.js +3 -3
- package/dist/src/agent/context/workspace-state.js +1 -1
- package/dist/src/agent/context/workspace-templates/AGENTS.md +1 -1
- package/dist/src/agent/context/workspace.d.ts +4 -2
- package/dist/src/agent/context/workspace.js +6 -5
- package/dist/src/agent/context/workspace.js.map +1 -1
- package/dist/src/agent/embedded/run-for-session.js +4 -1
- package/dist/src/agent/embedded/run-for-session.js.map +1 -1
- package/dist/src/agent/fallback/candidates.js +11 -9
- package/dist/src/agent/fallback/candidates.js.map +1 -1
- package/dist/src/agent/goals/goal-locale.js +2 -2
- package/dist/src/agent/goals/post-turn.js +3 -3
- package/dist/src/agent/image/generation/runtime-types.d.ts +2 -0
- package/dist/src/agent/image/generation/runtime.js +1 -1
- package/dist/src/agent/image/generation/runtime.js.map +1 -1
- package/dist/src/agent/image/image-helpers.d.ts +1 -1
- package/dist/src/agent/image/image-helpers.js +4 -17
- package/dist/src/agent/image/image-helpers.js.map +1 -1
- package/dist/src/agent/image/image-model-fallback.js +1 -1
- package/dist/src/agent/image/image-model-fallback.js.map +1 -1
- package/dist/src/agent/image/inbound-image-handling.js +1 -1
- package/dist/src/agent/image/inbound-image-handling.js.map +1 -1
- package/dist/src/agent/image/load-image-media.js +2 -2
- package/dist/src/agent/image/tool-model-config.d.ts +1 -1
- package/dist/src/agent/image/tool-model-config.js +2 -2
- package/dist/src/agent/image/tool-model-config.js.map +1 -1
- package/dist/src/agent/ipc/inbox.js +3 -3
- package/dist/src/agent/ipc/socket.js +1 -1
- package/dist/src/agent/mcp/bundle-mcp-materialize.js +1 -1
- package/dist/src/agent/mcp/bundle-mcp-runtime.js +1 -1
- package/dist/src/agent/mcp/mcp-transport-config.js +1 -1
- package/dist/src/agent/mcp/mcp-transport.js +1 -1
- package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js +1 -1
- package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js.map +1 -1
- package/dist/src/agent/media-generation/runtime-shared.d.ts +5 -2
- package/dist/src/agent/media-generation/runtime-shared.js +1 -1
- package/dist/src/agent/media-generation/runtime-shared.js.map +1 -1
- package/dist/src/agent/memory/builtin-memory-store.d.ts +6 -2
- package/dist/src/agent/memory/builtin-memory-store.js +15 -6
- package/dist/src/agent/memory/builtin-memory-store.js.map +1 -1
- package/dist/src/agent/memory/builtin-provider.d.ts +31 -9
- package/dist/src/agent/memory/builtin-provider.js +290 -11
- package/dist/src/agent/memory/builtin-provider.js.map +1 -1
- package/dist/src/agent/memory/candidate-extractor.d.ts +6 -0
- package/dist/src/agent/memory/candidate-extractor.js +60 -0
- package/dist/src/agent/memory/candidate-extractor.js.map +1 -0
- package/dist/src/agent/memory/context-assembler.d.ts +10 -0
- package/dist/src/agent/memory/context-assembler.js +26 -0
- package/dist/src/agent/memory/context-assembler.js.map +1 -0
- package/dist/src/agent/memory/create-memory-manager.js +25 -7
- package/dist/src/agent/memory/create-memory-manager.js.map +1 -1
- package/dist/src/agent/memory/dreaming/config.d.ts +1 -6
- package/dist/src/agent/memory/dreaming/config.js +8 -8
- package/dist/src/agent/memory/dreaming/config.js.map +1 -1
- package/dist/src/agent/memory/dreaming/deep-promotion.d.ts +2 -0
- package/dist/src/agent/memory/dreaming/deep-promotion.js +25 -1
- package/dist/src/agent/memory/dreaming/deep-promotion.js.map +1 -1
- package/dist/src/agent/memory/dreaming/events.js +1 -1
- package/dist/src/agent/memory/dreaming/last-run.js +1 -1
- package/dist/src/agent/memory/dreaming/light-sweep.js +1 -1
- package/dist/src/agent/memory/dreaming/preview.js +1 -1
- package/dist/src/agent/memory/dreaming/rem-patterns.js +1 -1
- package/dist/src/agent/memory/dreaming/short-term-store.js +1 -1
- package/dist/src/agent/memory/dreaming/utils.js +1 -1
- package/dist/src/agent/memory/index.d.ts +1 -0
- package/dist/src/agent/memory/index.js +4 -3
- package/dist/src/agent/memory/inject-prefetch.js +6 -2
- package/dist/src/agent/memory/inject-prefetch.js.map +1 -1
- package/dist/src/agent/memory/manager.d.ts +39 -2
- package/dist/src/agent/memory/manager.js +355 -39
- package/dist/src/agent/memory/manager.js.map +1 -1
- package/dist/src/agent/memory/memory-config.js +15 -15
- package/dist/src/agent/memory/memory-config.js.map +1 -1
- package/dist/src/agent/memory/memory-flush.js +1 -1
- package/dist/src/agent/memory/plugin-discovery.d.ts +19 -5
- package/dist/src/agent/memory/plugin-discovery.js +97 -31
- package/dist/src/agent/memory/plugin-discovery.js.map +1 -1
- package/dist/src/agent/memory/prefetch-coordinator.js.map +1 -1
- package/dist/src/agent/memory/provider.d.ts +20 -15
- package/dist/src/agent/memory/stub-memory-provider.d.ts +17 -2
- package/dist/src/agent/memory/stub-memory-provider.js +20 -3
- package/dist/src/agent/memory/stub-memory-provider.js.map +1 -1
- package/dist/src/agent/memory/types.d.ts +162 -3
- package/dist/src/agent/models/manager.d.ts +1 -1
- package/dist/src/agent/models/manager.js +2 -2
- package/dist/src/agent/models/manager.js.map +1 -1
- package/dist/src/agent/orchestration/agent-orchestrator.d.ts +1 -1
- package/dist/src/agent/orchestration/agent-orchestrator.js +2 -1
- package/dist/src/agent/orchestration/agent-orchestrator.js.map +1 -1
- package/dist/src/agent/orchestration/run-agent-turn-with-fallbacks.d.ts +2 -2
- package/dist/src/agent/orchestration/run-agent-turn-with-fallbacks.js +1 -1
- package/dist/src/agent/orchestration/run-agent-turn-with-fallbacks.js.map +1 -1
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.d.ts +2 -6
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +2 -8
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js.map +1 -1
- package/dist/src/agent/prompt/memory/index.d.ts +4 -2
- package/dist/src/agent/prompt/memory/index.js +19 -13
- package/dist/src/agent/prompt/memory/index.js.map +1 -1
- package/dist/src/agent/prompt/sections/memory-skills.js +1 -1
- package/dist/src/agent/prompt/sections/memory-skills.js.map +1 -1
- package/dist/src/agent/prompt/service-prompt-builder.js +5 -20
- package/dist/src/agent/prompt/service-prompt-builder.js.map +1 -1
- package/dist/src/agent/reply/post-compaction-context.js +10 -7
- package/dist/src/agent/reply/post-compaction-context.js.map +1 -1
- package/dist/src/agent/reply/startup-context.js +7 -12
- package/dist/src/agent/reply/startup-context.js.map +1 -1
- package/dist/src/agent/reply/workspace-boundary-read.js +1 -1
- package/dist/src/agent/sandbox/path-policy.js +2 -2
- package/dist/src/agent/service/process-direct-streaming.js +1 -4
- package/dist/src/agent/service/process-direct-streaming.js.map +1 -1
- package/dist/src/agent/service/session-context-report.js +1 -1
- package/dist/src/agent/service/session-context-report.js.map +1 -1
- package/dist/src/agent/service.d.ts +3 -3
- package/dist/src/agent/service.js +30 -35
- package/dist/src/agent/service.js.map +1 -1
- package/dist/src/agent/service.types.d.ts +1 -2
- package/dist/src/agent/session/session-hydrator.js +1 -2
- package/dist/src/agent/session/session-hydrator.js.map +1 -1
- package/dist/src/agent/session/session-inspector.d.ts +1 -1
- package/dist/src/agent/session/session-inspector.js +10 -15
- package/dist/src/agent/session/session-inspector.js.map +1 -1
- package/dist/src/agent/skills/config.js +2 -2
- package/dist/src/agent/skills/filesystem-watcher.js +1 -1
- package/dist/src/agent/skills/hub-hash.js +2 -2
- package/dist/src/agent/skills/hub-lock.js +1 -1
- package/dist/src/agent/skills/hub-pull.js +3 -3
- package/dist/src/agent/skills/index.js +2 -2
- package/dist/src/agent/skills/installer.js +2 -2
- package/dist/src/agent/skills/managed-store.js +1 -1
- package/dist/src/agent/skills/skill-manage-ops.js +1 -1
- package/dist/src/agent/skills/skill-manager.js +1 -1
- package/dist/src/agent/skills/skill-view-path.js +1 -1
- package/dist/src/agent/skills/test-framework.js +1 -1
- package/dist/src/agent/starter-agents.d.ts +1 -3
- package/dist/src/agent/starter-agents.js +14 -22
- package/dist/src/agent/starter-agents.js.map +1 -1
- package/dist/src/agent/tools/browser/tool/browser-use-tool.js +1 -2
- package/dist/src/agent/tools/browser/tool/browser-use-tool.js.map +1 -1
- package/dist/src/agent/tools/curated-memory-tool.d.ts +2 -5
- package/dist/src/agent/tools/curated-memory-tool.js +77 -18
- package/dist/src/agent/tools/curated-memory-tool.js.map +1 -1
- package/dist/src/agent/tools/dreaming-tool.js +1 -1
- package/dist/src/agent/tools/factory.d.ts +0 -4
- package/dist/src/agent/tools/factory.js +19 -58
- package/dist/src/agent/tools/factory.js.map +1 -1
- package/dist/src/agent/tools/find.js +1 -1
- package/dist/src/agent/tools/grep.js +1 -1
- package/dist/src/agent/tools/image-generate-tool.d.ts +1 -1
- package/dist/src/agent/tools/image-generate-tool.js +20 -15
- package/dist/src/agent/tools/image-generate-tool.js.map +1 -1
- package/dist/src/agent/tools/image-tool.js +1 -3
- package/dist/src/agent/tools/image-tool.js.map +1 -1
- package/dist/src/agent/tools/memory-tool.d.ts +2 -2
- package/dist/src/agent/tools/memory-tool.js +39 -14
- package/dist/src/agent/tools/memory-tool.js.map +1 -1
- package/dist/src/agent/tools/session-search-tool.js +1 -3
- package/dist/src/agent/tools/session-search-tool.js.map +1 -1
- package/dist/src/agent/tools/skill-manage-tool.js +1 -1
- package/dist/src/agent/tools/web-extract.js +8 -9
- package/dist/src/agent/tools/web-extract.js.map +1 -1
- package/dist/src/agent/tools/workflow-tool.js +1 -1
- package/dist/src/agent/workflow/catalog.js +1 -1
- package/dist/src/agent/workflow/subagent-runner.js +1 -3
- package/dist/src/agent/workflow/subagent-runner.js.map +1 -1
- package/dist/src/agent-manifest/index.d.ts +4 -0
- package/dist/src/agent-manifest/index.js +10 -0
- package/dist/src/agent-manifest/index.js.map +1 -0
- package/dist/src/agent-manifest/prompt.d.ts +2 -0
- package/dist/src/agent-manifest/prompt.js +57 -0
- package/dist/src/agent-manifest/prompt.js.map +1 -0
- package/dist/src/agent-manifest/resolver.d.ts +12 -0
- package/dist/src/agent-manifest/resolver.js +95 -0
- package/dist/src/agent-manifest/resolver.js.map +1 -0
- package/dist/src/agent-manifest/schema.d.ts +1010 -0
- package/dist/src/agent-manifest/schema.js +269 -0
- package/dist/src/agent-manifest/schema.js.map +1 -0
- package/dist/src/agent-manifest/validator.d.ts +25 -0
- package/dist/src/agent-manifest/validator.js +88 -0
- package/dist/src/agent-manifest/validator.js.map +1 -0
- package/dist/src/agent-runtime/boundary-guard.d.ts +12 -0
- package/dist/src/agent-runtime/boundary-guard.js +23 -0
- package/dist/src/agent-runtime/boundary-guard.js.map +1 -0
- package/dist/src/agent-runtime/index.d.ts +7 -0
- package/dist/src/agent-runtime/index.js +8 -0
- package/dist/src/agent-runtime/memory-runtime.d.ts +21 -0
- package/dist/src/agent-runtime/memory-runtime.js +50 -0
- package/dist/src/agent-runtime/memory-runtime.js.map +1 -0
- package/dist/src/agent-runtime/model-router.d.ts +11 -0
- package/dist/src/agent-runtime/model-router.js +16 -0
- package/dist/src/agent-runtime/model-router.js.map +1 -0
- package/dist/src/agent-runtime/run-trace.d.ts +27 -0
- package/dist/src/agent-runtime/run-trace.js +53 -0
- package/dist/src/agent-runtime/run-trace.js.map +1 -0
- package/dist/src/agent-runtime/runtime-profile.d.ts +24 -0
- package/dist/src/agent-runtime/runtime-profile.js +44 -0
- package/dist/src/agent-runtime/runtime-profile.js.map +1 -0
- package/dist/src/agent-runtime/tool-registry.d.ts +28 -0
- package/dist/src/agent-runtime/tool-registry.js +52 -0
- package/dist/src/agent-runtime/tool-registry.js.map +1 -0
- package/dist/src/agent-runtime/workflow-runtime.d.ts +31 -0
- package/dist/src/agent-runtime/workflow-runtime.js +34 -0
- package/dist/src/agent-runtime/workflow-runtime.js.map +1 -0
- package/dist/src/ai-assist/text-assist.js +1 -1
- package/dist/src/auth/credentials.js +2 -2
- package/dist/src/auth/profiles/store.js +2 -2
- package/dist/src/auth/sync-provider-auth.js +1 -1
- package/dist/src/browser/actions/extension-registry-bridge.js +1 -1
- package/dist/src/browser/actions/extension-registry-bridge.js.map +1 -1
- package/dist/src/browser/actions/registry.js +5 -8
- package/dist/src/browser/actions/registry.js.map +1 -1
- package/dist/src/browser/backend-from-config.d.ts +1 -1
- package/dist/src/browser/backend-from-config.js +50 -71
- package/dist/src/browser/backend-from-config.js.map +1 -1
- package/dist/src/browser/browser-command-timeout.d.ts +0 -1
- package/dist/src/browser/browser-command-timeout.js +3 -7
- package/dist/src/browser/browser-command-timeout.js.map +1 -1
- package/dist/src/browser/cache-dir-policy.js +1 -1
- package/dist/src/browser/cdp-local-launcher.js +2 -2
- package/dist/src/browser/pipeline/source.js +1 -1
- package/dist/src/browser/providers/browser-ext-install.d.ts +2 -12
- package/dist/src/browser/providers/browser-ext-install.js +7 -12
- package/dist/src/browser/providers/browser-ext-install.js.map +1 -1
- package/dist/src/browser/providers/cloakbrowser.js +5 -5
- package/dist/src/browser/providers/playwright-doctor.js +1 -1
- package/dist/src/browser/readiness.js +16 -16
- package/dist/src/browser/readiness.js.map +1 -1
- package/dist/src/browser/schemas.js +1 -1
- package/dist/src/browser/schemas.js.map +1 -1
- package/dist/src/browser/stealth.js +1 -1
- package/dist/src/channels/catalog/channel-catalog-service.js +1 -1
- package/dist/src/channels/outbound/persist-store.js +1 -1
- package/dist/src/channels/pairing/allow-from-file.js +1 -1
- package/dist/src/channels/pairing/pairing-store.js +2 -2
- package/dist/src/channels/pipeline.d.ts +1 -1
- package/dist/src/channels/pipeline.js.map +1 -1
- package/dist/src/chat-commands/agent-edit.js +2 -3
- package/dist/src/chat-commands/agent-edit.js.map +1 -1
- package/dist/src/chat-commands/builtins/config.js +6 -6
- package/dist/src/chat-commands/builtins/config.js.map +1 -1
- package/dist/src/chat-commands/builtins/model.js +2 -2
- package/dist/src/chat-commands/builtins/model.js.map +1 -1
- package/dist/src/chat-commands/builtins/thinking.js +16 -42
- package/dist/src/chat-commands/builtins/thinking.js.map +1 -1
- package/dist/src/chat-commands/config-paths.js +1 -1
- package/dist/src/chat-commands/config-paths.js.map +1 -1
- package/dist/src/chat-commands/context.js +3 -4
- package/dist/src/chat-commands/context.js.map +1 -1
- package/dist/src/cli/command-manifest.d.ts +1 -1
- package/dist/src/cli/command-manifest.js +2 -2
- package/dist/src/cli/command-manifest.js.map +1 -1
- package/dist/src/cli/commands/agent.js +3 -1
- package/dist/src/cli/commands/agent.js.map +1 -1
- package/dist/src/cli/commands/agents.js +3 -6
- package/dist/src/cli/commands/agents.js.map +1 -1
- package/dist/src/cli/commands/browser-cli-helpers.js +9 -11
- package/dist/src/cli/commands/browser-cli-helpers.js.map +1 -1
- package/dist/src/cli/commands/config.js +6 -6
- package/dist/src/cli/commands/config.js.map +1 -1
- package/dist/src/cli/commands/doctor/checks/config-health.js +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/doctor/checks/provider-auth.js +3 -18
- package/dist/src/cli/commands/doctor/checks/provider-auth.js.map +1 -1
- package/dist/src/cli/commands/doctor/checks/state-integrity.js +1 -1
- package/dist/src/cli/commands/doctor/checks/workspace-status.js +1 -2
- package/dist/src/cli/commands/doctor/checks/workspace-status.js.map +1 -1
- package/dist/src/cli/commands/extension-create.js +1 -1
- package/dist/src/cli/commands/extension-dev.js +2 -2
- package/dist/src/cli/commands/extension-marketplace.js +2 -2
- package/dist/src/cli/commands/extension-pack.js +2 -2
- package/dist/src/cli/commands/extension.js +3 -3
- package/dist/src/cli/commands/gateway/logs.js +1 -1
- package/dist/src/cli/commands/goal.js +1 -1
- package/dist/src/cli/commands/image.js +13 -372
- package/dist/src/cli/commands/image.js.map +1 -1
- package/dist/src/cli/commands/init.js +7 -6
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/models.js +14 -16
- package/dist/src/cli/commands/models.js.map +1 -1
- package/dist/src/cli/commands/onboard/channels/registry.js.map +1 -1
- package/dist/src/cli/commands/onboard/model.js +28 -23
- package/dist/src/cli/commands/onboard/model.js.map +1 -1
- package/dist/src/cli/commands/onboard.js +3 -3
- package/dist/src/cli/commands/onboard.js.map +1 -1
- package/dist/src/cli/commands/skills-test.js +1 -1
- package/dist/src/cli/commands/tui.js +2 -2
- package/dist/src/cli/commands/tui.js.map +1 -1
- package/dist/src/cli/index.d.ts +1 -0
- package/dist/src/cli/index.js +10 -5
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/cli/registry.js +1 -1
- package/dist/src/cli/registry.js.map +1 -1
- package/dist/src/cli/templates.d.ts +1 -1
- package/dist/src/cli/templates.js +2 -12
- package/dist/src/cli/templates.js.map +1 -1
- package/dist/src/cli/utils/gateway-client.js +1 -1
- package/dist/src/cli/utils/init-workspace-core.d.ts +1 -4
- package/dist/src/cli/utils/init-workspace-core.js +9 -8
- package/dist/src/cli/utils/init-workspace-core.js.map +1 -1
- package/dist/src/commands/agents.config.d.ts +0 -1
- package/dist/src/commands/agents.config.js +59 -13
- package/dist/src/commands/agents.config.js.map +1 -1
- package/dist/src/config/agent-profile.d.ts +5 -17
- package/dist/src/config/agent-profile.js +32 -64
- package/dist/src/config/agent-profile.js.map +1 -1
- package/dist/src/config/agent-typed-models.d.ts +1 -1
- package/dist/src/config/agent-typed-models.js +3 -6
- package/dist/src/config/agent-typed-models.js.map +1 -1
- package/dist/src/config/gateway-bind.js +1 -1
- package/dist/src/config/index.js +9 -9
- package/dist/src/config/integration.d.ts +1 -1
- package/dist/src/config/loader.js +4 -4
- package/dist/src/config/models-json.js +2 -2
- package/dist/src/config/paths-state.js +1 -1
- package/dist/src/config/paths.d.ts +8 -1
- package/dist/src/config/paths.js +17 -4
- package/dist/src/config/paths.js.map +1 -1
- package/dist/src/config/profile.js +1 -1
- package/dist/src/config/reload.js +2 -2
- package/dist/src/config/reload.js.map +1 -1
- package/dist/src/config/rules.js +6 -56
- package/dist/src/config/rules.js.map +1 -1
- package/dist/src/config/schema.d.ts +916 -779
- package/dist/src/config/schema.js +174 -423
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/config/workspace-path.js +1 -1
- package/dist/src/connectors/composio-triggers.js +1 -1
- package/dist/src/cron/executor.js +1 -1
- package/dist/src/cron/index.js +1 -1
- package/dist/src/cron/service.js +2 -2
- package/dist/src/cron/validation.d.ts +3 -3
- package/dist/src/daemon/constants.js +1 -1
- package/dist/src/daemon/install-plan.js +2 -2
- package/dist/src/daemon/launchd.js +2 -2
- package/dist/src/daemon/schtasks.js +2 -2
- package/dist/src/daemon/systemd.js +2 -2
- package/dist/src/extensions/activation-context.js +13 -7
- package/dist/src/extensions/activation-context.js.map +1 -1
- package/dist/src/extensions/bundle-mcp.js +1 -1
- package/dist/src/extensions/discover-extensions.js +2 -2
- package/dist/src/extensions/health.js +1 -1
- package/dist/src/extensions/install.js +2 -2
- package/dist/src/extensions/loader.js +2 -2
- package/dist/src/extensions/lockfile.js +3 -3
- package/dist/src/extensions/security.js +1 -1
- package/dist/src/extensions/update.js +2 -2
- package/dist/src/gateway/agents-admin.d.ts +24 -18
- package/dist/src/gateway/agents-admin.js +158 -92
- package/dist/src/gateway/agents-admin.js.map +1 -1
- package/dist/src/gateway/capability-presets-admin.d.ts +56 -0
- package/dist/src/gateway/capability-presets-admin.js +214 -0
- package/dist/src/gateway/capability-presets-admin.js.map +1 -0
- package/dist/src/gateway/chat-stream/mapper.js +9 -2
- package/dist/src/gateway/chat-stream/mapper.js.map +1 -1
- package/dist/src/gateway/file-path-classifier.js +2 -2
- package/dist/src/gateway/global-defaults-admin.d.ts +36 -0
- package/dist/src/gateway/global-defaults-admin.js +146 -0
- package/dist/src/gateway/global-defaults-admin.js.map +1 -0
- package/dist/src/gateway/hono/lib/agent-model.d.ts +1 -1
- package/dist/src/gateway/hono/lib/agent-model.js +1 -1
- package/dist/src/gateway/hono/lib/agent-model.js.map +1 -1
- package/dist/src/gateway/hono/lib/config-payload.d.ts +234 -127
- package/dist/src/gateway/hono/lib/config-payload.js +14 -38
- package/dist/src/gateway/hono/lib/config-payload.js.map +1 -1
- package/dist/src/gateway/hono/lib/extension-store.js +2 -2
- package/dist/src/gateway/hono/lib/static-ui.js +2 -2
- package/dist/src/gateway/hono/routes/agents.js +88 -33
- package/dist/src/gateway/hono/routes/agents.js.map +1 -1
- package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
- package/dist/src/gateway/hono/routes/browser.js +8 -15
- package/dist/src/gateway/hono/routes/browser.js.map +1 -1
- package/dist/src/gateway/hono/routes/capability-presets.d.ts +3 -0
- package/dist/src/gateway/hono/routes/capability-presets.js +145 -0
- package/dist/src/gateway/hono/routes/capability-presets.js.map +1 -0
- package/dist/src/gateway/hono/routes/commands-skills.js +4 -5
- package/dist/src/gateway/hono/routes/commands-skills.js.map +1 -1
- package/dist/src/gateway/hono/routes/config-patch/agents.d.ts +1 -17
- package/dist/src/gateway/hono/routes/config-patch/agents.js +2 -443
- package/dist/src/gateway/hono/routes/config-patch/agents.js.map +1 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js +7 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js.map +1 -1
- package/dist/src/gateway/hono/routes/config.js +1 -1
- package/dist/src/gateway/hono/routes/config.js.map +1 -1
- package/dist/src/gateway/hono/routes/dreaming.js +8 -1
- package/dist/src/gateway/hono/routes/dreaming.js.map +1 -1
- package/dist/src/gateway/hono/routes/global-defaults.d.ts +3 -0
- package/dist/src/gateway/hono/routes/global-defaults.js +61 -0
- package/dist/src/gateway/hono/routes/global-defaults.js.map +1 -0
- package/dist/src/gateway/hono/routes/host-fs.js +2 -2
- package/dist/src/gateway/hono/routes/index.js +2 -0
- package/dist/src/gateway/hono/routes/index.js.map +1 -1
- package/dist/src/gateway/hono/routes/lazy-bundles.js +17 -1
- package/dist/src/gateway/hono/routes/lazy-bundles.js.map +1 -1
- package/dist/src/gateway/hono/routes/memory.d.ts +3 -0
- package/dist/src/gateway/hono/routes/memory.js +361 -0
- package/dist/src/gateway/hono/routes/memory.js.map +1 -0
- package/dist/src/gateway/hono/routes/models.js +2 -2
- package/dist/src/gateway/hono/routes/shares.js +1 -1
- package/dist/src/gateway/hono/routes/workflows.js +1 -1
- package/dist/src/gateway/hono/routes/workspace.js +2 -2
- package/dist/src/gateway/lock.js +3 -3
- package/dist/src/gateway/ports.js +1 -1
- package/dist/src/gateway/service/config-coordinator.js +1 -1
- package/dist/src/gateway/service/marketplace-service.d.ts +4 -4
- package/dist/src/gateway/service/marketplace-service.js +13 -9
- package/dist/src/gateway/service/marketplace-service.js.map +1 -1
- package/dist/src/gateway/service.d.ts +1 -1
- package/dist/src/gateway/service.js +15 -16
- package/dist/src/gateway/service.js.map +1 -1
- package/dist/src/gateway/workspace-fs-file-list.js +1 -1
- package/dist/src/goals/goal-workflow-judge.js +2 -2
- package/dist/src/i18n/goals-bundle.js +1 -1
- package/dist/src/i18n/index.js +1 -1
- package/dist/src/i18n/share-tool-bundle.js +2 -2
- package/dist/src/infra/brew.js +1 -1
- package/dist/src/infra/package-json.js +1 -1
- package/dist/src/infra/package-update-steps.js +1 -1
- package/dist/src/infra/path-env.js +2 -2
- package/dist/src/infra/restart.js +1 -1
- package/dist/src/infra/stable-node-path.js +1 -1
- package/dist/src/infra/update-check.js +1 -1
- package/dist/src/infra/update-global.js +1 -1
- package/dist/src/infra/update-lock.js +2 -2
- package/dist/src/infra/update-restart.js +1 -1
- package/dist/src/infra/update-runner.js +1 -1
- package/dist/src/infra/update-startup.js +1 -1
- package/dist/src/infra/write-file-atomic.js +2 -2
- package/dist/src/media/store.js +1 -1
- package/dist/src/notes/agent-context.js +3 -3
- package/dist/src/notes/service.js +4 -2
- package/dist/src/notes/service.js.map +1 -1
- package/dist/src/notes/store.js +2 -2
- package/dist/src/project-trust/trust-store.js +2 -2
- package/dist/src/providers/auth-runtime/auth-profile-store.js +1 -1
- package/dist/src/providers/index.d.ts +5 -6
- package/dist/src/providers/index.js +26 -30
- package/dist/src/providers/index.js.map +1 -1
- package/dist/src/providers/model-registry.js +4 -4
- package/dist/src/session/index.js +1 -1
- package/dist/src/session/init-session-turn.js +1 -1
- package/dist/src/session/resolve-session.js +1 -1
- package/dist/src/session/session-title.js +2 -2
- package/dist/src/session/store.js +1 -1
- package/dist/src/session/thinking-resolve.d.ts +1 -1
- package/dist/src/session/thinking-resolve.js +1 -1
- package/dist/src/session/thinking-resolve.js.map +1 -1
- package/dist/src/share/share-auto.js +2 -2
- package/dist/src/share/share-store.js +3 -3
- package/dist/src/share/share-thumbnail.js +2 -2
- package/dist/src/share/share-zip.js +1 -1
- package/dist/src/share/site-share-store.js +3 -3
- package/dist/src/share/site-static-serve.js +1 -1
- package/dist/src/storage/sqlite/connection.js +2 -2
- package/dist/src/storage/sqlite/index.d.ts +1 -0
- package/dist/src/storage/sqlite/index.js +2 -1
- package/dist/src/storage/sqlite/memory-index-repository.d.ts +1 -0
- package/dist/src/storage/sqlite/memory-index-repository.js +17 -16
- package/dist/src/storage/sqlite/memory-index-repository.js.map +1 -1
- package/dist/src/storage/sqlite/memory-records-repository.d.ts +144 -0
- package/dist/src/storage/sqlite/memory-records-repository.js +453 -0
- package/dist/src/storage/sqlite/memory-records-repository.js.map +1 -0
- package/dist/src/storage/sqlite/migrations/012_memory_records.sql +63 -0
- package/dist/src/storage/sqlite/migrations/013_memory_trace_events.sql +21 -0
- package/dist/src/storage/sqlite/migrations/014_memory_record_governance.sql +10 -0
- package/dist/src/storage/sqlite/migrations/015_memory_trace_feedback.sql +4 -0
- package/dist/src/storage/sqlite/migrations/discover.js +1 -1
- package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/runner.js +4 -4
- package/dist/src/storage/sqlite/migrations/runner.js.map +1 -1
- package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
- package/dist/src/storage/sqlite/schema.js +2 -2
- package/dist/src/storage/sqlite/schema.sql +86 -0
- package/dist/src/tui/backends/embedded-backend.d.ts +3 -0
- package/dist/src/tui/backends/embedded-backend.js +43 -24
- package/dist/src/tui/backends/embedded-backend.js.map +1 -1
- package/dist/src/tui/backends/gateway-sse-backend.d.ts +1 -0
- package/dist/src/tui/backends/gateway-sse-backend.js +16 -3
- package/dist/src/tui/backends/gateway-sse-backend.js.map +1 -1
- package/dist/src/tui/clipboard-image.js +3 -3
- package/dist/src/tui/components/tui-header.d.ts +0 -1
- package/dist/src/tui/components/tui-header.js +3 -8
- package/dist/src/tui/components/tui-header.js.map +1 -1
- package/dist/src/tui/extension-host/load-extensions.js +1 -1
- package/dist/src/tui/extension-host/load-extensions.js.map +1 -1
- package/dist/src/tui/theme-manager.js +1 -1
- package/dist/src/tui/tui-command-formatters.js +4 -4
- package/dist/src/tui/tui-commands.js +2 -2
- package/dist/src/tui/tui-keybindings-file.js +1 -1
- package/dist/src/tui/tui-scoped-models.js +2 -2
- package/dist/src/tui/tui-settings.js +1 -1
- package/dist/src/tui/tui-startup-resources.js +2 -1
- package/dist/src/tui/tui-startup-resources.js.map +1 -1
- package/dist/src/tui/tui-startup-text.js +12 -12
- package/dist/src/tui/tui-startup-text.js.map +1 -1
- package/dist/src/tui/tui.js +10 -7
- package/dist/src/tui/tui.js.map +1 -1
- package/dist/src/tunnel/frpc-binary.js +4 -4
- package/dist/src/tunnel/frpc-config.js +1 -1
- package/dist/src/tunnel/frpc-extract.js +1 -1
- package/dist/src/tunnel/tunnel-state.js +1 -1
- package/dist/src/utils/logger/audit.js +1 -1
- package/dist/src/utils/logger/log-store.js +1 -1
- package/dist/src/utils/logger/rotation.js +1 -1
- package/dist/src/utils/logger/streams.js +1 -1
- package/dist/src/voice/tts/audio.js +1 -1
- package/dist/src/voice/tts/providers/edge-speech.js +2 -2
- package/dist/src/workflows/draft/workflow-draft-service.js +1 -1
- package/dist/src/workflows/service/workflow-run-service.js +4 -5
- package/dist/src/workflows/service/workflow-run-service.js.map +1 -1
- package/dist/src/workflows/service/workflow-session-bridge.js +1 -1
- package/dist/src/workflows/store/event-store.js +1 -1
- package/dist/src/workflows/store/run-store.js +1 -1
- package/package.json +3 -2
- package/dist/gateway/static/root/assets/agent-browser-settings-page-D1SyFYeh.js +0 -6
- package/dist/gateway/static/root/assets/agent-defaults-tabbed-page-C9YxgvuI.js +0 -1
- package/dist/gateway/static/root/assets/agents-CteVs3UO.js +0 -71
- package/dist/gateway/static/root/assets/apps-page-CVQ1M8Ax.js +0 -1
- package/dist/gateway/static/root/assets/channels-settings-Cd3JbeQ1.js +0 -1
- package/dist/gateway/static/root/assets/config-api-C4RAtTKW.js +0 -3
- package/dist/gateway/static/root/assets/connectors-page-MsMa5qBr.js +0 -2
- package/dist/gateway/static/root/assets/cron-api-sJNMqB6P.js +0 -1
- package/dist/gateway/static/root/assets/cron-page-D30CSwkn.js +0 -3
- package/dist/gateway/static/root/assets/dreaming-settings-6fCUWRQf.js +0 -1
- package/dist/gateway/static/root/assets/gateway-config-api-C6989a-W.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-BpF26t91.js +0 -1
- package/dist/gateway/static/root/assets/goal-detail-page-DOjhmRyf.js +0 -1
- package/dist/gateway/static/root/assets/goals-page-Xl9_wrFc.js +0 -2
- package/dist/gateway/static/root/assets/heartbeat-settings-DN9vEj9P.js +0 -1
- package/dist/gateway/static/root/assets/index-C8ytlAF2.js +0 -122
- package/dist/gateway/static/root/assets/index-CVpJW2NS.css +0 -1
- package/dist/gateway/static/root/assets/messages-BqzIDrlr.js +0 -3
- package/dist/gateway/static/root/assets/models-hub-panel-BO4o-GmO.js +0 -2
- package/dist/gateway/static/root/assets/note-detail-page-DLV_XDmT.js +0 -2
- package/dist/gateway/static/root/assets/notes-page-ycsDlkFA.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-DQpnE8K9.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-BZui7iAY.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-DEfzZ1ax.js +0 -1
- package/dist/gateway/static/root/assets/settings-page-CLuSsu1-.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-Cq4qpXLi.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-B9F3HyYQ.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-Bp9UPPwm.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-BIoBsfSV.js +0 -2
- package/dist/gateway/static/root/assets/use-agent-defaults-form-Cz2_pPzu.js +0 -1
- package/dist/gateway/static/root/assets/use-settings-tab-guard-nuHMmZQv.js +0 -1
- package/dist/gateway/static/root/assets/voice-api-key-field-BUIrKb8s.js +0 -1
- package/dist/gateway/static/root/assets/workflows-page-qE3SexnO.js +0 -18
- package/dist/src/agent/context/workspace-templates/USER.md +0 -24
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
//#region src/agent-manifest/schema.ts
|
|
4
|
+
var IdSchema, DEFAULT_CAPABILITY_PRESET_ID, ManifestModelRoleSchema, ModelPolicySchema, ModelPolicyPatchSchema, ToolModeSchema, ToolScopeSchema, ToolPolicySchema, ToolPolicySetSchema, SkillPolicySchema, DreamingPhasePolicySchema, DreamingLightPolicySchema, DreamingDeepPolicySchema, DreamingRemPolicySchema, DreamingPolicySchema, MemoryPolicySchema, WorkflowPolicySchema, BoundaryPolicySchema, WorkspacePolicySchema, RuntimePolicySchema, PromptPolicySchema, AgentIdentitySchema, AgentResponsibilitiesSchema, AgentManifestSchema, AgentConfigEntrySchema, CapabilityPresetSchema;
|
|
5
|
+
var init_schema = __esmMin((() => {
|
|
6
|
+
IdSchema = z.string().regex(/^[a-z][a-z0-9_-]{0,63}$/);
|
|
7
|
+
DEFAULT_CAPABILITY_PRESET_ID = "default";
|
|
8
|
+
ManifestModelRoleSchema = z.object({
|
|
9
|
+
model: z.string().min(1),
|
|
10
|
+
description: z.string().max(500).optional()
|
|
11
|
+
}).strict().superRefine((entry, ctx) => {
|
|
12
|
+
const trimmed = entry.model.trim();
|
|
13
|
+
const idx = trimmed.indexOf("/");
|
|
14
|
+
if (idx <= 0 || idx === trimmed.length - 1) ctx.addIssue({
|
|
15
|
+
code: "custom",
|
|
16
|
+
message: `model must be provider/model format (got '${entry.model}')`,
|
|
17
|
+
path: ["model"]
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
ModelPolicySchema = z.object({
|
|
21
|
+
defaultRole: IdSchema,
|
|
22
|
+
roles: z.record(IdSchema, ManifestModelRoleSchema).default({}),
|
|
23
|
+
policy: z.object({
|
|
24
|
+
allowFallbacks: z.boolean().optional(),
|
|
25
|
+
maxCostTier: z.enum([
|
|
26
|
+
"low",
|
|
27
|
+
"medium",
|
|
28
|
+
"high"
|
|
29
|
+
]).optional()
|
|
30
|
+
}).strict().optional()
|
|
31
|
+
}).strict();
|
|
32
|
+
ModelPolicyPatchSchema = z.object({
|
|
33
|
+
defaultRole: IdSchema.optional(),
|
|
34
|
+
roles: z.record(IdSchema, ManifestModelRoleSchema).optional(),
|
|
35
|
+
policy: z.object({
|
|
36
|
+
allowFallbacks: z.boolean().optional(),
|
|
37
|
+
maxCostTier: z.enum([
|
|
38
|
+
"low",
|
|
39
|
+
"medium",
|
|
40
|
+
"high"
|
|
41
|
+
]).optional()
|
|
42
|
+
}).strict().optional()
|
|
43
|
+
}).strict();
|
|
44
|
+
ToolModeSchema = z.enum([
|
|
45
|
+
"allow",
|
|
46
|
+
"confirm",
|
|
47
|
+
"deny"
|
|
48
|
+
]);
|
|
49
|
+
ToolScopeSchema = z.enum([
|
|
50
|
+
"readonly",
|
|
51
|
+
"workspace",
|
|
52
|
+
"unrestricted"
|
|
53
|
+
]);
|
|
54
|
+
ToolPolicySchema = z.object({
|
|
55
|
+
mode: ToolModeSchema,
|
|
56
|
+
scope: ToolScopeSchema.optional(),
|
|
57
|
+
limits: z.object({
|
|
58
|
+
maxCallsPerTurn: z.number().int().positive().optional(),
|
|
59
|
+
timeoutMs: z.number().int().positive().optional()
|
|
60
|
+
}).strict().optional()
|
|
61
|
+
}).strict();
|
|
62
|
+
ToolPolicySetSchema = z.object({
|
|
63
|
+
builtin: z.record(z.string().min(1), ToolPolicySchema).default({}),
|
|
64
|
+
mcp: z.object({
|
|
65
|
+
servers: z.record(z.string().min(1), ToolPolicySchema).optional(),
|
|
66
|
+
tools: z.record(z.string().min(1), ToolPolicySchema).optional()
|
|
67
|
+
}).strict().optional()
|
|
68
|
+
}).strict().default({ builtin: {} });
|
|
69
|
+
SkillPolicySchema = z.object({
|
|
70
|
+
mode: z.enum([
|
|
71
|
+
"all",
|
|
72
|
+
"allowlist",
|
|
73
|
+
"denylist",
|
|
74
|
+
"off"
|
|
75
|
+
]).default("all"),
|
|
76
|
+
allow: z.array(z.string().min(1)).optional(),
|
|
77
|
+
deny: z.array(z.string().min(1)).optional()
|
|
78
|
+
}).strict().default({ mode: "all" });
|
|
79
|
+
DreamingPhasePolicySchema = z.object({
|
|
80
|
+
enabled: z.boolean().optional(),
|
|
81
|
+
cron: z.string().min(1).optional()
|
|
82
|
+
}).strict();
|
|
83
|
+
DreamingLightPolicySchema = DreamingPhasePolicySchema.extend({
|
|
84
|
+
lookbackDays: z.number().int().positive().optional(),
|
|
85
|
+
limit: z.number().int().nonnegative().optional(),
|
|
86
|
+
dedupeSimilarity: z.number().min(0).max(1).optional()
|
|
87
|
+
}).strict();
|
|
88
|
+
DreamingDeepPolicySchema = DreamingPhasePolicySchema.extend({
|
|
89
|
+
minScore: z.number().min(0).max(1).optional(),
|
|
90
|
+
minRecallCount: z.number().int().positive().optional(),
|
|
91
|
+
minUniqueQueries: z.number().int().positive().optional(),
|
|
92
|
+
limit: z.number().int().nonnegative().optional(),
|
|
93
|
+
recencyHalfLifeDays: z.number().positive().optional(),
|
|
94
|
+
maxAgeDays: z.number().positive().optional()
|
|
95
|
+
}).strict();
|
|
96
|
+
DreamingRemPolicySchema = DreamingPhasePolicySchema.extend({
|
|
97
|
+
lookbackDays: z.number().int().positive().optional(),
|
|
98
|
+
limit: z.number().int().nonnegative().optional(),
|
|
99
|
+
minPatternStrength: z.number().min(0).max(1).optional()
|
|
100
|
+
}).strict();
|
|
101
|
+
DreamingPolicySchema = z.object({
|
|
102
|
+
enabled: z.boolean().default(false),
|
|
103
|
+
frequency: z.string().min(1).optional(),
|
|
104
|
+
timezone: z.string().optional(),
|
|
105
|
+
phases: z.object({
|
|
106
|
+
light: DreamingLightPolicySchema.optional(),
|
|
107
|
+
deep: DreamingDeepPolicySchema.optional(),
|
|
108
|
+
rem: DreamingRemPolicySchema.optional()
|
|
109
|
+
}).strict().optional()
|
|
110
|
+
}).strict().optional();
|
|
111
|
+
MemoryPolicySchema = z.object({
|
|
112
|
+
mode: z.enum([
|
|
113
|
+
"off",
|
|
114
|
+
"readOnly",
|
|
115
|
+
"confirmWrite",
|
|
116
|
+
"auto"
|
|
117
|
+
]).default("off"),
|
|
118
|
+
sources: z.array(z.enum([
|
|
119
|
+
"session",
|
|
120
|
+
"userProfile",
|
|
121
|
+
"agentProfile",
|
|
122
|
+
"curated",
|
|
123
|
+
"workspace"
|
|
124
|
+
])).default(["session"]),
|
|
125
|
+
writePolicy: z.object({
|
|
126
|
+
userProfile: z.enum([
|
|
127
|
+
"deny",
|
|
128
|
+
"confirm",
|
|
129
|
+
"allow"
|
|
130
|
+
]).optional(),
|
|
131
|
+
agentProfile: z.enum([
|
|
132
|
+
"deny",
|
|
133
|
+
"confirm",
|
|
134
|
+
"allow"
|
|
135
|
+
]).optional(),
|
|
136
|
+
curated: z.enum([
|
|
137
|
+
"deny",
|
|
138
|
+
"confirm",
|
|
139
|
+
"allow"
|
|
140
|
+
]).optional(),
|
|
141
|
+
workspace: z.enum([
|
|
142
|
+
"deny",
|
|
143
|
+
"confirm",
|
|
144
|
+
"allow"
|
|
145
|
+
]).optional()
|
|
146
|
+
}).strict().optional(),
|
|
147
|
+
retention: z.object({
|
|
148
|
+
compaction: z.boolean().default(true),
|
|
149
|
+
maxAgeDays: z.number().int().positive().optional(),
|
|
150
|
+
maxItems: z.number().int().positive().optional()
|
|
151
|
+
}).strict().optional(),
|
|
152
|
+
privacy: z.object({
|
|
153
|
+
crossAgentSharing: z.enum([
|
|
154
|
+
"deny",
|
|
155
|
+
"readOnly",
|
|
156
|
+
"allow"
|
|
157
|
+
]).default("deny"),
|
|
158
|
+
sensitiveWritePolicy: z.enum([
|
|
159
|
+
"deny",
|
|
160
|
+
"confirm",
|
|
161
|
+
"allow"
|
|
162
|
+
]).default("confirm")
|
|
163
|
+
}).strict().optional(),
|
|
164
|
+
providerRouting: z.object({
|
|
165
|
+
searchStrategy: z.enum([
|
|
166
|
+
"local-first",
|
|
167
|
+
"external-first",
|
|
168
|
+
"fanout",
|
|
169
|
+
"local-only",
|
|
170
|
+
"external-only"
|
|
171
|
+
]).default("fanout"),
|
|
172
|
+
writeStrategy: z.enum([
|
|
173
|
+
"local-first",
|
|
174
|
+
"external-first",
|
|
175
|
+
"write-through",
|
|
176
|
+
"local-only",
|
|
177
|
+
"external-only"
|
|
178
|
+
]).default("local-first"),
|
|
179
|
+
allowExternalWrites: z.boolean().default(false),
|
|
180
|
+
allowedProviderIds: z.array(z.string().min(1)).optional(),
|
|
181
|
+
autoWriteKinds: z.array(z.enum([
|
|
182
|
+
"user_profile",
|
|
183
|
+
"agent_note",
|
|
184
|
+
"workspace_fact",
|
|
185
|
+
"daily_note",
|
|
186
|
+
"session_summary",
|
|
187
|
+
"derived_insight"
|
|
188
|
+
])).optional()
|
|
189
|
+
}).strict().optional(),
|
|
190
|
+
dreaming: DreamingPolicySchema
|
|
191
|
+
}).strict().default({
|
|
192
|
+
mode: "off",
|
|
193
|
+
sources: ["session"]
|
|
194
|
+
});
|
|
195
|
+
WorkflowPolicySchema = z.object({
|
|
196
|
+
default: z.string().min(1).optional(),
|
|
197
|
+
allowed: z.array(z.string().min(1)).optional(),
|
|
198
|
+
suggested: z.array(z.object({
|
|
199
|
+
intent: z.string().min(1),
|
|
200
|
+
workflow: z.string().min(1)
|
|
201
|
+
}).strict()).optional()
|
|
202
|
+
}).strict().default({});
|
|
203
|
+
BoundaryPolicySchema = z.object({
|
|
204
|
+
requiresConfirmation: z.array(z.string().min(1)).default([]),
|
|
205
|
+
forbidden: z.array(z.string().min(1)).default([]),
|
|
206
|
+
escalation: z.array(z.string().min(1)).default([])
|
|
207
|
+
}).strict().default({
|
|
208
|
+
requiresConfirmation: [],
|
|
209
|
+
forbidden: [],
|
|
210
|
+
escalation: []
|
|
211
|
+
});
|
|
212
|
+
WorkspacePolicySchema = z.object({ root: z.string().min(1) }).strict();
|
|
213
|
+
RuntimePolicySchema = z.object({
|
|
214
|
+
maxTurns: z.number().int().positive().optional(),
|
|
215
|
+
timeoutMs: z.number().int().positive().optional(),
|
|
216
|
+
maxToolFailuresPerTurn: z.number().int().positive().optional()
|
|
217
|
+
}).strict().optional();
|
|
218
|
+
PromptPolicySchema = z.object({ customInstructions: z.string().optional() }).strict().optional();
|
|
219
|
+
AgentIdentitySchema = z.object({
|
|
220
|
+
name: z.string().min(1),
|
|
221
|
+
description: z.string().optional(),
|
|
222
|
+
role: z.string().min(1),
|
|
223
|
+
language: z.string().min(1).default("en"),
|
|
224
|
+
tone: z.string().min(1).default("direct"),
|
|
225
|
+
avatar: z.string().optional()
|
|
226
|
+
}).strict();
|
|
227
|
+
AgentResponsibilitiesSchema = z.object({
|
|
228
|
+
primary: z.array(z.string().min(1)).min(1),
|
|
229
|
+
secondary: z.array(z.string().min(1)).optional(),
|
|
230
|
+
outOfScope: z.array(z.string().min(1)).optional()
|
|
231
|
+
}).strict();
|
|
232
|
+
AgentManifestSchema = z.object({
|
|
233
|
+
id: IdSchema,
|
|
234
|
+
enabled: z.boolean().default(true),
|
|
235
|
+
extends: z.array(IdSchema).optional(),
|
|
236
|
+
identity: AgentIdentitySchema,
|
|
237
|
+
responsibilities: AgentResponsibilitiesSchema,
|
|
238
|
+
workspace: WorkspacePolicySchema,
|
|
239
|
+
models: ModelPolicySchema,
|
|
240
|
+
tools: ToolPolicySetSchema,
|
|
241
|
+
skills: SkillPolicySchema,
|
|
242
|
+
memory: MemoryPolicySchema,
|
|
243
|
+
workflows: WorkflowPolicySchema,
|
|
244
|
+
boundaries: BoundaryPolicySchema,
|
|
245
|
+
runtime: RuntimePolicySchema,
|
|
246
|
+
prompt: PromptPolicySchema
|
|
247
|
+
}).strict();
|
|
248
|
+
AgentConfigEntrySchema = AgentManifestSchema.extend({ models: ModelPolicySchema.optional() }).strict();
|
|
249
|
+
CapabilityPresetSchema = z.object({
|
|
250
|
+
id: IdSchema,
|
|
251
|
+
name: z.string().min(1),
|
|
252
|
+
description: z.string().optional(),
|
|
253
|
+
version: z.number().int().positive().default(1),
|
|
254
|
+
extends: z.array(IdSchema).optional(),
|
|
255
|
+
models: ModelPolicyPatchSchema.optional(),
|
|
256
|
+
tools: ToolPolicySetSchema.optional(),
|
|
257
|
+
skills: SkillPolicySchema.optional(),
|
|
258
|
+
memory: MemoryPolicySchema.optional(),
|
|
259
|
+
workflows: WorkflowPolicySchema.optional(),
|
|
260
|
+
boundaries: BoundaryPolicySchema.optional(),
|
|
261
|
+
runtime: RuntimePolicySchema,
|
|
262
|
+
locks: z.array(z.string().min(1)).optional()
|
|
263
|
+
}).strict();
|
|
264
|
+
}));
|
|
265
|
+
//#endregion
|
|
266
|
+
init_schema();
|
|
267
|
+
export { AgentConfigEntrySchema, AgentIdentitySchema, AgentManifestSchema, AgentResponsibilitiesSchema, BoundaryPolicySchema, CapabilityPresetSchema, DEFAULT_CAPABILITY_PRESET_ID, DreamingDeepPolicySchema, DreamingLightPolicySchema, DreamingPhasePolicySchema, DreamingPolicySchema, DreamingRemPolicySchema, ManifestModelRoleSchema, MemoryPolicySchema, ModelPolicyPatchSchema, ModelPolicySchema, PromptPolicySchema, RuntimePolicySchema, SkillPolicySchema, ToolModeSchema, ToolPolicySchema, ToolPolicySetSchema, ToolScopeSchema, WorkflowPolicySchema, WorkspacePolicySchema, init_schema };
|
|
268
|
+
|
|
269
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","names":[],"sources":["../../../src/agent-manifest/schema.ts"],"sourcesContent":["import { z } from 'zod';\n\nconst IdSchema = z.string().regex(/^[a-z][a-z0-9_-]{0,63}$/);\n\nexport const DEFAULT_CAPABILITY_PRESET_ID = 'default';\n\nexport const ManifestModelRoleSchema = z\n .object({\n model: z.string().min(1),\n description: z.string().max(500).optional(),\n })\n .strict()\n .superRefine((entry, ctx) => {\n const trimmed = entry.model.trim();\n const idx = trimmed.indexOf('/');\n if (idx <= 0 || idx === trimmed.length - 1) {\n ctx.addIssue({\n code: 'custom',\n message: `model must be provider/model format (got '${entry.model}')`,\n path: ['model'],\n });\n }\n });\n\nexport const ModelPolicySchema = z\n .object({\n defaultRole: IdSchema,\n roles: z.record(IdSchema, ManifestModelRoleSchema).default({}),\n policy: z\n .object({\n allowFallbacks: z.boolean().optional(),\n maxCostTier: z.enum(['low', 'medium', 'high']).optional(),\n })\n .strict()\n .optional(),\n })\n .strict();\n\nexport const ModelPolicyPatchSchema = z\n .object({\n defaultRole: IdSchema.optional(),\n roles: z.record(IdSchema, ManifestModelRoleSchema).optional(),\n policy: z\n .object({\n allowFallbacks: z.boolean().optional(),\n maxCostTier: z.enum(['low', 'medium', 'high']).optional(),\n })\n .strict()\n .optional(),\n })\n .strict();\n\nexport const ToolModeSchema = z.enum(['allow', 'confirm', 'deny']);\nexport const ToolScopeSchema = z.enum(['readonly', 'workspace', 'unrestricted']);\n\nexport const ToolPolicySchema = z\n .object({\n mode: ToolModeSchema,\n scope: ToolScopeSchema.optional(),\n limits: z\n .object({\n maxCallsPerTurn: z.number().int().positive().optional(),\n timeoutMs: z.number().int().positive().optional(),\n })\n .strict()\n .optional(),\n })\n .strict();\n\nexport const ToolPolicySetSchema = z\n .object({\n builtin: z.record(z.string().min(1), ToolPolicySchema).default({}),\n mcp: z\n .object({\n servers: z.record(z.string().min(1), ToolPolicySchema).optional(),\n tools: z.record(z.string().min(1), ToolPolicySchema).optional(),\n })\n .strict()\n .optional(),\n })\n .strict()\n .default({ builtin: {} });\n\nexport const SkillPolicySchema = z\n .object({\n mode: z.enum(['all', 'allowlist', 'denylist', 'off']).default('all'),\n allow: z.array(z.string().min(1)).optional(),\n deny: z.array(z.string().min(1)).optional(),\n })\n .strict()\n .default({ mode: 'all' });\n\nexport const DreamingPhasePolicySchema = z\n .object({\n enabled: z.boolean().optional(),\n cron: z.string().min(1).optional(),\n })\n .strict();\n\nexport const DreamingLightPolicySchema = DreamingPhasePolicySchema.extend({\n lookbackDays: z.number().int().positive().optional(),\n limit: z.number().int().nonnegative().optional(),\n dedupeSimilarity: z.number().min(0).max(1).optional(),\n}).strict();\n\nexport const DreamingDeepPolicySchema = DreamingPhasePolicySchema.extend({\n minScore: z.number().min(0).max(1).optional(),\n minRecallCount: z.number().int().positive().optional(),\n minUniqueQueries: z.number().int().positive().optional(),\n limit: z.number().int().nonnegative().optional(),\n recencyHalfLifeDays: z.number().positive().optional(),\n maxAgeDays: z.number().positive().optional(),\n}).strict();\n\nexport const DreamingRemPolicySchema = DreamingPhasePolicySchema.extend({\n lookbackDays: z.number().int().positive().optional(),\n limit: z.number().int().nonnegative().optional(),\n minPatternStrength: z.number().min(0).max(1).optional(),\n}).strict();\n\nexport const DreamingPolicySchema = z\n .object({\n enabled: z.boolean().default(false),\n frequency: z.string().min(1).optional(),\n timezone: z.string().optional(),\n phases: z\n .object({\n light: DreamingLightPolicySchema.optional(),\n deep: DreamingDeepPolicySchema.optional(),\n rem: DreamingRemPolicySchema.optional(),\n })\n .strict()\n .optional(),\n })\n .strict()\n .optional();\n\nexport const MemoryPolicySchema = z\n .object({\n mode: z.enum(['off', 'readOnly', 'confirmWrite', 'auto']).default('off'),\n sources: z\n .array(z.enum(['session', 'userProfile', 'agentProfile', 'curated', 'workspace']))\n .default(['session']),\n writePolicy: z\n .object({\n userProfile: z.enum(['deny', 'confirm', 'allow']).optional(),\n agentProfile: z.enum(['deny', 'confirm', 'allow']).optional(),\n curated: z.enum(['deny', 'confirm', 'allow']).optional(),\n workspace: z.enum(['deny', 'confirm', 'allow']).optional(),\n })\n .strict()\n .optional(),\n retention: z\n .object({\n compaction: z.boolean().default(true),\n maxAgeDays: z.number().int().positive().optional(),\n maxItems: z.number().int().positive().optional(),\n })\n .strict()\n .optional(),\n privacy: z\n .object({\n crossAgentSharing: z.enum(['deny', 'readOnly', 'allow']).default('deny'),\n sensitiveWritePolicy: z.enum(['deny', 'confirm', 'allow']).default('confirm'),\n })\n .strict()\n .optional(),\n providerRouting: z\n .object({\n searchStrategy: z\n .enum(['local-first', 'external-first', 'fanout', 'local-only', 'external-only'])\n .default('fanout'),\n writeStrategy: z\n .enum(['local-first', 'external-first', 'write-through', 'local-only', 'external-only'])\n .default('local-first'),\n allowExternalWrites: z.boolean().default(false),\n allowedProviderIds: z.array(z.string().min(1)).optional(),\n autoWriteKinds: z\n .array(\n z.enum([\n 'user_profile',\n 'agent_note',\n 'workspace_fact',\n 'daily_note',\n 'session_summary',\n 'derived_insight',\n ]),\n )\n .optional(),\n })\n .strict()\n .optional(),\n dreaming: DreamingPolicySchema,\n })\n .strict()\n .default({ mode: 'off', sources: ['session'] });\n\nexport const WorkflowPolicySchema = z\n .object({\n default: z.string().min(1).optional(),\n allowed: z.array(z.string().min(1)).optional(),\n suggested: z\n .array(\n z\n .object({\n intent: z.string().min(1),\n workflow: z.string().min(1),\n })\n .strict(),\n )\n .optional(),\n })\n .strict()\n .default({});\n\nexport const BoundaryPolicySchema = z\n .object({\n requiresConfirmation: z.array(z.string().min(1)).default([]),\n forbidden: z.array(z.string().min(1)).default([]),\n escalation: z.array(z.string().min(1)).default([]),\n })\n .strict()\n .default({ requiresConfirmation: [], forbidden: [], escalation: [] });\n\nexport const WorkspacePolicySchema = z\n .object({\n root: z.string().min(1),\n })\n .strict();\n\nexport const RuntimePolicySchema = z\n .object({\n maxTurns: z.number().int().positive().optional(),\n timeoutMs: z.number().int().positive().optional(),\n maxToolFailuresPerTurn: z.number().int().positive().optional(),\n })\n .strict()\n .optional();\n\nexport const PromptPolicySchema = z\n .object({\n customInstructions: z.string().optional(),\n })\n .strict()\n .optional();\n\nexport const AgentIdentitySchema = z\n .object({\n name: z.string().min(1),\n description: z.string().optional(),\n role: z.string().min(1),\n language: z.string().min(1).default('en'),\n tone: z.string().min(1).default('direct'),\n avatar: z.string().optional(),\n })\n .strict();\n\nexport const AgentResponsibilitiesSchema = z\n .object({\n primary: z.array(z.string().min(1)).min(1),\n secondary: z.array(z.string().min(1)).optional(),\n outOfScope: z.array(z.string().min(1)).optional(),\n })\n .strict();\n\nexport const AgentManifestSchema = z\n .object({\n id: IdSchema,\n enabled: z.boolean().default(true),\n extends: z.array(IdSchema).optional(),\n identity: AgentIdentitySchema,\n responsibilities: AgentResponsibilitiesSchema,\n workspace: WorkspacePolicySchema,\n models: ModelPolicySchema,\n tools: ToolPolicySetSchema,\n skills: SkillPolicySchema,\n memory: MemoryPolicySchema,\n workflows: WorkflowPolicySchema,\n boundaries: BoundaryPolicySchema,\n runtime: RuntimePolicySchema,\n prompt: PromptPolicySchema,\n })\n .strict();\n\nexport const AgentConfigEntrySchema = AgentManifestSchema.extend({\n models: ModelPolicySchema.optional(),\n}).strict();\n\nexport const CapabilityPresetSchema = z\n .object({\n id: IdSchema,\n name: z.string().min(1),\n description: z.string().optional(),\n version: z.number().int().positive().default(1),\n extends: z.array(IdSchema).optional(),\n models: ModelPolicyPatchSchema.optional(),\n tools: ToolPolicySetSchema.optional(),\n skills: SkillPolicySchema.optional(),\n memory: MemoryPolicySchema.optional(),\n workflows: WorkflowPolicySchema.optional(),\n boundaries: BoundaryPolicySchema.optional(),\n runtime: RuntimePolicySchema,\n locks: z.array(z.string().min(1)).optional(),\n })\n .strict();\n\nexport type AgentManifest = z.infer<typeof AgentManifestSchema>;\nexport type AgentConfigEntry = z.infer<typeof AgentConfigEntrySchema>;\nexport type CapabilityPreset = z.infer<typeof CapabilityPresetSchema>;\nexport type EffectiveAgentManifest = AgentManifest;\nexport type ToolPolicy = z.infer<typeof ToolPolicySchema>;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { AgentConfigEntry, CapabilityPreset, EffectiveAgentManifest } from './schema.js';
|
|
2
|
+
export type ManifestIssueSeverity = 'error' | 'warning';
|
|
3
|
+
export interface ManifestIssue {
|
|
4
|
+
severity: ManifestIssueSeverity;
|
|
5
|
+
path: string;
|
|
6
|
+
message: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ManifestCatalogs {
|
|
9
|
+
tools?: Iterable<string>;
|
|
10
|
+
skills?: Iterable<string>;
|
|
11
|
+
workflows?: Iterable<string>;
|
|
12
|
+
mcpServers?: Iterable<string>;
|
|
13
|
+
}
|
|
14
|
+
export interface ValidateManifestParams {
|
|
15
|
+
agent: AgentConfigEntry;
|
|
16
|
+
presets?: Record<string, CapabilityPreset>;
|
|
17
|
+
defaultPresetId?: string;
|
|
18
|
+
catalogs?: ManifestCatalogs;
|
|
19
|
+
}
|
|
20
|
+
export interface ValidateManifestResult {
|
|
21
|
+
ok: boolean;
|
|
22
|
+
manifest?: EffectiveAgentManifest;
|
|
23
|
+
issues: ManifestIssue[];
|
|
24
|
+
}
|
|
25
|
+
export declare function validateAgentManifest(params: ValidateManifestParams): ValidateManifestResult;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { resolveEffectiveAgentManifest } from "./resolver.js";
|
|
2
|
+
//#region src/agent-manifest/validator.ts
|
|
3
|
+
function toSet(values) {
|
|
4
|
+
if (!values) return void 0;
|
|
5
|
+
return new Set([...values].map((value) => value.toLowerCase()));
|
|
6
|
+
}
|
|
7
|
+
function hasValue(set, value) {
|
|
8
|
+
return set === void 0 || set.has(value.toLowerCase());
|
|
9
|
+
}
|
|
10
|
+
function addIssue(issues, severity, path, message) {
|
|
11
|
+
issues.push({
|
|
12
|
+
severity,
|
|
13
|
+
path,
|
|
14
|
+
message
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
function validateModels(manifest, issues) {
|
|
18
|
+
if (!manifest.models.roles[manifest.models.defaultRole]) addIssue(issues, "error", "models.defaultRole", `defaultRole "${manifest.models.defaultRole}" does not exist in models.roles`);
|
|
19
|
+
}
|
|
20
|
+
function validateTools(manifest, issues, catalogs) {
|
|
21
|
+
const tools = toSet(catalogs.tools);
|
|
22
|
+
for (const [name, policy] of Object.entries(manifest.tools.builtin)) {
|
|
23
|
+
if (!hasValue(tools, name)) addIssue(issues, "error", `tools.builtin.${name}`, `tool "${name}" is not in the tool catalog`);
|
|
24
|
+
if (policy.mode === "allow" && policy.scope === "unrestricted") addIssue(issues, "warning", `tools.builtin.${name}.scope`, `tool "${name}" is unrestricted; consider using confirm or a narrower scope`);
|
|
25
|
+
}
|
|
26
|
+
const mcpServers = toSet(catalogs.mcpServers);
|
|
27
|
+
for (const serverName of Object.keys(manifest.tools.mcp?.servers ?? {})) if (!hasValue(mcpServers, serverName)) addIssue(issues, "error", `tools.mcp.servers.${serverName}`, `MCP server "${serverName}" is not configured`);
|
|
28
|
+
}
|
|
29
|
+
function validateSkills(manifest, issues, catalogs) {
|
|
30
|
+
const skills = toSet(catalogs.skills);
|
|
31
|
+
for (const name of manifest.skills.allow ?? []) if (!hasValue(skills, name)) addIssue(issues, "error", `skills.allow`, `skill "${name}" is not installed`);
|
|
32
|
+
for (const name of manifest.skills.deny ?? []) if (!hasValue(skills, name)) addIssue(issues, "warning", `skills.deny`, `skill "${name}" is not installed`);
|
|
33
|
+
if (manifest.skills.mode === "allowlist" && (manifest.skills.allow?.length ?? 0) === 0) addIssue(issues, "warning", "skills.allow", "allowlist mode has no allowed skills");
|
|
34
|
+
}
|
|
35
|
+
function validateMemory(manifest, issues) {
|
|
36
|
+
if (manifest.memory.mode === "off" && manifest.memory.sources.some((source) => source !== "session")) addIssue(issues, "warning", "memory.sources", "memory sources are configured while memory mode is off");
|
|
37
|
+
if (manifest.memory.mode === "auto") {
|
|
38
|
+
const privacy = manifest.memory.privacy;
|
|
39
|
+
if (!privacy || privacy.sensitiveWritePolicy === "allow") addIssue(issues, "warning", "memory.privacy", "auto memory writes should configure sensitiveWritePolicy");
|
|
40
|
+
}
|
|
41
|
+
if (manifest.memory.mode !== "off") {
|
|
42
|
+
const policy = manifest.memory.writePolicy ?? {};
|
|
43
|
+
if (!Object.values(policy).some(Boolean) && manifest.memory.mode !== "readOnly") addIssue(issues, "warning", "memory.writePolicy", "write-capable memory mode has no write policy");
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function validateWorkflows(manifest, issues, catalogs) {
|
|
47
|
+
const workflows = toSet(catalogs.workflows);
|
|
48
|
+
const check = (path, value) => {
|
|
49
|
+
if (value && !hasValue(workflows, value)) addIssue(issues, "error", path, `workflow "${value}" is not in the workflow catalog`);
|
|
50
|
+
};
|
|
51
|
+
check("workflows.default", manifest.workflows.default);
|
|
52
|
+
for (const [index, value] of (manifest.workflows.allowed ?? []).entries()) check(`workflows.allowed.${index}`, value);
|
|
53
|
+
for (const [index, entry] of (manifest.workflows.suggested ?? []).entries()) check(`workflows.suggested.${index}.workflow`, entry.workflow);
|
|
54
|
+
}
|
|
55
|
+
function validateAgentManifest(params) {
|
|
56
|
+
const issues = [];
|
|
57
|
+
let manifest;
|
|
58
|
+
try {
|
|
59
|
+
manifest = resolveEffectiveAgentManifest({
|
|
60
|
+
agent: params.agent,
|
|
61
|
+
presets: params.presets,
|
|
62
|
+
defaultPresetId: params.defaultPresetId
|
|
63
|
+
}).manifest;
|
|
64
|
+
} catch (error) {
|
|
65
|
+
return {
|
|
66
|
+
ok: false,
|
|
67
|
+
issues: [{
|
|
68
|
+
severity: "error",
|
|
69
|
+
path: "manifest",
|
|
70
|
+
message: error instanceof Error ? error.message : String(error)
|
|
71
|
+
}]
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
validateModels(manifest, issues);
|
|
75
|
+
validateTools(manifest, issues, params.catalogs ?? {});
|
|
76
|
+
validateSkills(manifest, issues, params.catalogs ?? {});
|
|
77
|
+
validateMemory(manifest, issues);
|
|
78
|
+
validateWorkflows(manifest, issues, params.catalogs ?? {});
|
|
79
|
+
return {
|
|
80
|
+
ok: issues.every((issue) => issue.severity !== "error"),
|
|
81
|
+
manifest,
|
|
82
|
+
issues
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
//#endregion
|
|
86
|
+
export { validateAgentManifest };
|
|
87
|
+
|
|
88
|
+
//# sourceMappingURL=validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.js","names":[],"sources":["../../../src/agent-manifest/validator.ts"],"sourcesContent":["import type { AgentConfigEntry, CapabilityPreset, EffectiveAgentManifest } from './schema.js';\nimport { resolveEffectiveAgentManifest } from './resolver.js';\n\nexport type ManifestIssueSeverity = 'error' | 'warning';\n\nexport interface ManifestIssue {\n severity: ManifestIssueSeverity;\n path: string;\n message: string;\n}\n\nexport interface ManifestCatalogs {\n tools?: Iterable<string>;\n skills?: Iterable<string>;\n workflows?: Iterable<string>;\n mcpServers?: Iterable<string>;\n}\n\nexport interface ValidateManifestParams {\n agent: AgentConfigEntry;\n presets?: Record<string, CapabilityPreset>;\n defaultPresetId?: string;\n catalogs?: ManifestCatalogs;\n}\n\nexport interface ValidateManifestResult {\n ok: boolean;\n manifest?: EffectiveAgentManifest;\n issues: ManifestIssue[];\n}\n\nfunction toSet(values: Iterable<string> | undefined): Set<string> | undefined {\n if (!values) return undefined;\n return new Set([...values].map((value) => value.toLowerCase()));\n}\n\nfunction hasValue(set: Set<string> | undefined, value: string): boolean {\n return set === undefined || set.has(value.toLowerCase());\n}\n\nfunction addIssue(issues: ManifestIssue[], severity: ManifestIssueSeverity, path: string, message: string): void {\n issues.push({ severity, path, message });\n}\n\nfunction validateModels(manifest: EffectiveAgentManifest, issues: ManifestIssue[]): void {\n if (!manifest.models.roles[manifest.models.defaultRole]) {\n addIssue(\n issues,\n 'error',\n 'models.defaultRole',\n `defaultRole \"${manifest.models.defaultRole}\" does not exist in models.roles`,\n );\n }\n}\n\nfunction validateTools(manifest: EffectiveAgentManifest, issues: ManifestIssue[], catalogs: ManifestCatalogs): void {\n const tools = toSet(catalogs.tools);\n for (const [name, policy] of Object.entries(manifest.tools.builtin)) {\n if (!hasValue(tools, name)) {\n addIssue(issues, 'error', `tools.builtin.${name}`, `tool \"${name}\" is not in the tool catalog`);\n }\n if (policy.mode === 'allow' && policy.scope === 'unrestricted') {\n addIssue(\n issues,\n 'warning',\n `tools.builtin.${name}.scope`,\n `tool \"${name}\" is unrestricted; consider using confirm or a narrower scope`,\n );\n }\n }\n\n const mcpServers = toSet(catalogs.mcpServers);\n for (const serverName of Object.keys(manifest.tools.mcp?.servers ?? {})) {\n if (!hasValue(mcpServers, serverName)) {\n addIssue(issues, 'error', `tools.mcp.servers.${serverName}`, `MCP server \"${serverName}\" is not configured`);\n }\n }\n}\n\nfunction validateSkills(manifest: EffectiveAgentManifest, issues: ManifestIssue[], catalogs: ManifestCatalogs): void {\n const skills = toSet(catalogs.skills);\n for (const name of manifest.skills.allow ?? []) {\n if (!hasValue(skills, name)) {\n addIssue(issues, 'error', `skills.allow`, `skill \"${name}\" is not installed`);\n }\n }\n for (const name of manifest.skills.deny ?? []) {\n if (!hasValue(skills, name)) {\n addIssue(issues, 'warning', `skills.deny`, `skill \"${name}\" is not installed`);\n }\n }\n if (manifest.skills.mode === 'allowlist' && (manifest.skills.allow?.length ?? 0) === 0) {\n addIssue(issues, 'warning', 'skills.allow', 'allowlist mode has no allowed skills');\n }\n}\n\nfunction validateMemory(manifest: EffectiveAgentManifest, issues: ManifestIssue[]): void {\n if (manifest.memory.mode === 'off' && manifest.memory.sources.some((source) => source !== 'session')) {\n addIssue(issues, 'warning', 'memory.sources', 'memory sources are configured while memory mode is off');\n }\n if (manifest.memory.mode === 'auto') {\n const privacy = manifest.memory.privacy;\n if (!privacy || privacy.sensitiveWritePolicy === 'allow') {\n addIssue(issues, 'warning', 'memory.privacy', 'auto memory writes should configure sensitiveWritePolicy');\n }\n }\n if (manifest.memory.mode !== 'off') {\n const policy = manifest.memory.writePolicy ?? {};\n const hasWritePolicy = Object.values(policy).some(Boolean);\n if (!hasWritePolicy && manifest.memory.mode !== 'readOnly') {\n addIssue(issues, 'warning', 'memory.writePolicy', 'write-capable memory mode has no write policy');\n }\n }\n}\n\nfunction validateWorkflows(manifest: EffectiveAgentManifest, issues: ManifestIssue[], catalogs: ManifestCatalogs): void {\n const workflows = toSet(catalogs.workflows);\n const check = (path: string, value: string | undefined) => {\n if (value && !hasValue(workflows, value)) {\n addIssue(issues, 'error', path, `workflow \"${value}\" is not in the workflow catalog`);\n }\n };\n check('workflows.default', manifest.workflows.default);\n for (const [index, value] of (manifest.workflows.allowed ?? []).entries()) {\n check(`workflows.allowed.${index}`, value);\n }\n for (const [index, entry] of (manifest.workflows.suggested ?? []).entries()) {\n check(`workflows.suggested.${index}.workflow`, entry.workflow);\n }\n}\n\nexport function validateAgentManifest(params: ValidateManifestParams): ValidateManifestResult {\n const issues: ManifestIssue[] = [];\n let manifest: EffectiveAgentManifest;\n try {\n manifest = resolveEffectiveAgentManifest({\n agent: params.agent,\n presets: params.presets,\n defaultPresetId: params.defaultPresetId,\n }).manifest;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return {\n ok: false,\n issues: [{ severity: 'error', path: 'manifest', message }],\n };\n }\n\n validateModels(manifest, issues);\n validateTools(manifest, issues, params.catalogs ?? {});\n validateSkills(manifest, issues, params.catalogs ?? {});\n validateMemory(manifest, issues);\n validateWorkflows(manifest, issues, params.catalogs ?? {});\n\n return {\n ok: issues.every((issue) => issue.severity !== 'error'),\n manifest,\n issues,\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { EffectiveAgentManifest } from '../agent-manifest/schema.js';
|
|
2
|
+
export type BoundaryDecision = 'allow' | 'confirm' | 'deny' | 'escalate';
|
|
3
|
+
export interface BoundaryCheckParams {
|
|
4
|
+
manifest: EffectiveAgentManifest;
|
|
5
|
+
action: string;
|
|
6
|
+
detail?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface BoundaryCheckResult {
|
|
9
|
+
decision: BoundaryDecision;
|
|
10
|
+
matchedRule?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function checkBoundary(params: BoundaryCheckParams): BoundaryCheckResult;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region src/agent-runtime/boundary-guard.ts
|
|
2
|
+
function matchesRule(action, detail, rule) {
|
|
3
|
+
return `${action}\n${detail ?? ""}`.toLowerCase().includes(rule.toLowerCase());
|
|
4
|
+
}
|
|
5
|
+
function checkBoundary(params) {
|
|
6
|
+
for (const rule of params.manifest.boundaries.forbidden) if (matchesRule(params.action, params.detail, rule)) return {
|
|
7
|
+
decision: "deny",
|
|
8
|
+
matchedRule: rule
|
|
9
|
+
};
|
|
10
|
+
for (const rule of params.manifest.boundaries.escalation) if (matchesRule(params.action, params.detail, rule)) return {
|
|
11
|
+
decision: "escalate",
|
|
12
|
+
matchedRule: rule
|
|
13
|
+
};
|
|
14
|
+
for (const rule of params.manifest.boundaries.requiresConfirmation) if (matchesRule(params.action, params.detail, rule)) return {
|
|
15
|
+
decision: "confirm",
|
|
16
|
+
matchedRule: rule
|
|
17
|
+
};
|
|
18
|
+
return { decision: "allow" };
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
export { checkBoundary };
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=boundary-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boundary-guard.js","names":[],"sources":["../../../src/agent-runtime/boundary-guard.ts"],"sourcesContent":["import type { EffectiveAgentManifest } from '../agent-manifest/schema.js';\n\nexport type BoundaryDecision = 'allow' | 'confirm' | 'deny' | 'escalate';\n\nexport interface BoundaryCheckParams {\n manifest: EffectiveAgentManifest;\n action: string;\n detail?: string;\n}\n\nexport interface BoundaryCheckResult {\n decision: BoundaryDecision;\n matchedRule?: string;\n}\n\nfunction matchesRule(action: string, detail: string | undefined, rule: string): boolean {\n const haystack = `${action}\\n${detail ?? ''}`.toLowerCase();\n return haystack.includes(rule.toLowerCase());\n}\n\nexport function checkBoundary(params: BoundaryCheckParams): BoundaryCheckResult {\n for (const rule of params.manifest.boundaries.forbidden) {\n if (matchesRule(params.action, params.detail, rule)) {\n return { decision: 'deny', matchedRule: rule };\n }\n }\n for (const rule of params.manifest.boundaries.escalation) {\n if (matchesRule(params.action, params.detail, rule)) {\n return { decision: 'escalate', matchedRule: rule };\n }\n }\n for (const rule of params.manifest.boundaries.requiresConfirmation) {\n if (matchesRule(params.action, params.detail, rule)) {\n return { decision: 'confirm', matchedRule: rule };\n }\n }\n return { decision: 'allow' };\n}\n"],"mappings":";AAeA,SAAS,YAAY,QAAgB,QAA4B,MAAuB;AAEtF,QADiB,GAAG,OAAO,IAAI,UAAU,KAAK,aAC/B,CAAC,SAAS,KAAK,aAAa,CAAC;;AAG9C,SAAgB,cAAc,QAAkD;AAC9E,MAAK,MAAM,QAAQ,OAAO,SAAS,WAAW,UAC5C,KAAI,YAAY,OAAO,QAAQ,OAAO,QAAQ,KAAK,CACjD,QAAO;EAAE,UAAU;EAAQ,aAAa;EAAM;AAGlD,MAAK,MAAM,QAAQ,OAAO,SAAS,WAAW,WAC5C,KAAI,YAAY,OAAO,QAAQ,OAAO,QAAQ,KAAK,CACjD,QAAO;EAAE,UAAU;EAAY,aAAa;EAAM;AAGtD,MAAK,MAAM,QAAQ,OAAO,SAAS,WAAW,qBAC5C,KAAI,YAAY,OAAO,QAAQ,OAAO,QAAQ,KAAK,CACjD,QAAO;EAAE,UAAU;EAAW,aAAa;EAAM;AAGrD,QAAO,EAAE,UAAU,SAAS"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { checkBoundary } from "./boundary-guard.js";
|
|
2
|
+
import { resolveModelRole } from "./model-router.js";
|
|
3
|
+
import { buildRuntimeToolRegistry } from "./tool-registry.js";
|
|
4
|
+
import { buildMemoryRuntime } from "./memory-runtime.js";
|
|
5
|
+
import { resolveWorkflow, validateWorkflowForRuntime } from "./workflow-runtime.js";
|
|
6
|
+
import { buildAgentRuntimeProfile } from "./runtime-profile.js";
|
|
7
|
+
import { appendAgentRunEvent, createAgentRunTrace, finishAgentRunTrace, hashEffectiveManifest } from "./run-trace.js";
|
|
8
|
+
export { appendAgentRunEvent, buildAgentRuntimeProfile, buildMemoryRuntime, buildRuntimeToolRegistry, checkBoundary, createAgentRunTrace, finishAgentRunTrace, hashEffectiveManifest, resolveModelRole, resolveWorkflow, validateWorkflowForRuntime };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { EffectiveAgentManifest } from '../agent-manifest/schema.js';
|
|
2
|
+
export type MemorySource = 'session' | 'userProfile' | 'agentProfile' | 'curated' | 'workspace';
|
|
3
|
+
export type MemoryWriteTarget = 'userProfile' | 'agentProfile' | 'curated' | 'workspace';
|
|
4
|
+
export type MemoryWriteDecision = 'allow' | 'confirm' | 'deny';
|
|
5
|
+
export interface MemoryCandidate {
|
|
6
|
+
target: MemoryWriteTarget;
|
|
7
|
+
content: string;
|
|
8
|
+
source: string;
|
|
9
|
+
confidence?: number;
|
|
10
|
+
sensitive?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface MemoryWriteCheckResult {
|
|
13
|
+
decision: MemoryWriteDecision;
|
|
14
|
+
reason: string;
|
|
15
|
+
}
|
|
16
|
+
export interface MemoryRuntime {
|
|
17
|
+
readableSources: MemorySource[];
|
|
18
|
+
canRead: (source: MemorySource) => boolean;
|
|
19
|
+
checkWrite: (candidate: MemoryCandidate) => MemoryWriteCheckResult;
|
|
20
|
+
}
|
|
21
|
+
export declare function buildMemoryRuntime(manifest: EffectiveAgentManifest): MemoryRuntime;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
//#region src/agent-runtime/memory-runtime.ts
|
|
2
|
+
const READ_ONLY_MODES = new Set(["readOnly"]);
|
|
3
|
+
function normalizeConfidence(value) {
|
|
4
|
+
if (typeof value !== "number" || !Number.isFinite(value)) return .5;
|
|
5
|
+
return Math.max(0, Math.min(1, value));
|
|
6
|
+
}
|
|
7
|
+
function buildMemoryRuntime(manifest) {
|
|
8
|
+
const readableSources = manifest.memory.mode === "off" ? [] : [...manifest.memory.sources];
|
|
9
|
+
const sourceSet = new Set(readableSources);
|
|
10
|
+
return {
|
|
11
|
+
readableSources,
|
|
12
|
+
canRead: (source) => sourceSet.has(source),
|
|
13
|
+
checkWrite: (candidate) => {
|
|
14
|
+
if (manifest.memory.mode === "off") return {
|
|
15
|
+
decision: "deny",
|
|
16
|
+
reason: "memory is disabled"
|
|
17
|
+
};
|
|
18
|
+
if (READ_ONLY_MODES.has(manifest.memory.mode)) return {
|
|
19
|
+
decision: "deny",
|
|
20
|
+
reason: "memory is read-only"
|
|
21
|
+
};
|
|
22
|
+
if (!candidate.content.trim()) return {
|
|
23
|
+
decision: "deny",
|
|
24
|
+
reason: "memory content is empty"
|
|
25
|
+
};
|
|
26
|
+
if (normalizeConfidence(candidate.confidence) < .3) return {
|
|
27
|
+
decision: "deny",
|
|
28
|
+
reason: "memory confidence is too low"
|
|
29
|
+
};
|
|
30
|
+
const sensitivePolicy = manifest.memory.privacy?.sensitiveWritePolicy ?? "confirm";
|
|
31
|
+
if (candidate.sensitive && sensitivePolicy !== "allow") return {
|
|
32
|
+
decision: sensitivePolicy,
|
|
33
|
+
reason: "memory candidate is sensitive"
|
|
34
|
+
};
|
|
35
|
+
const targetPolicy = manifest.memory.writePolicy?.[candidate.target] ?? "deny";
|
|
36
|
+
if (manifest.memory.mode === "confirmWrite" && targetPolicy === "allow") return {
|
|
37
|
+
decision: "confirm",
|
|
38
|
+
reason: "agent memory mode requires confirmation"
|
|
39
|
+
};
|
|
40
|
+
return {
|
|
41
|
+
decision: targetPolicy,
|
|
42
|
+
reason: `target policy is ${targetPolicy}`
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//#endregion
|
|
48
|
+
export { buildMemoryRuntime };
|
|
49
|
+
|
|
50
|
+
//# sourceMappingURL=memory-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-runtime.js","names":[],"sources":["../../../src/agent-runtime/memory-runtime.ts"],"sourcesContent":["import type { EffectiveAgentManifest } from '../agent-manifest/schema.js';\n\nexport type MemorySource = 'session' | 'userProfile' | 'agentProfile' | 'curated' | 'workspace';\nexport type MemoryWriteTarget = 'userProfile' | 'agentProfile' | 'curated' | 'workspace';\nexport type MemoryWriteDecision = 'allow' | 'confirm' | 'deny';\n\nexport interface MemoryCandidate {\n target: MemoryWriteTarget;\n content: string;\n source: string;\n confidence?: number;\n sensitive?: boolean;\n}\n\nexport interface MemoryWriteCheckResult {\n decision: MemoryWriteDecision;\n reason: string;\n}\n\nexport interface MemoryRuntime {\n readableSources: MemorySource[];\n canRead: (source: MemorySource) => boolean;\n checkWrite: (candidate: MemoryCandidate) => MemoryWriteCheckResult;\n}\n\nconst READ_ONLY_MODES = new Set(['readOnly']);\n\nfunction normalizeConfidence(value: number | undefined): number {\n if (typeof value !== 'number' || !Number.isFinite(value)) return 0.5;\n return Math.max(0, Math.min(1, value));\n}\n\nexport function buildMemoryRuntime(manifest: EffectiveAgentManifest): MemoryRuntime {\n const readableSources = manifest.memory.mode === 'off' ? [] : [...manifest.memory.sources];\n const sourceSet = new Set<MemorySource>(readableSources);\n\n return {\n readableSources,\n canRead: (source) => sourceSet.has(source),\n checkWrite: (candidate) => {\n if (manifest.memory.mode === 'off') {\n return { decision: 'deny', reason: 'memory is disabled' };\n }\n if (READ_ONLY_MODES.has(manifest.memory.mode)) {\n return { decision: 'deny', reason: 'memory is read-only' };\n }\n if (!candidate.content.trim()) {\n return { decision: 'deny', reason: 'memory content is empty' };\n }\n const confidence = normalizeConfidence(candidate.confidence);\n if (confidence < 0.3) {\n return { decision: 'deny', reason: 'memory confidence is too low' };\n }\n const sensitivePolicy = manifest.memory.privacy?.sensitiveWritePolicy ?? 'confirm';\n if (candidate.sensitive && sensitivePolicy !== 'allow') {\n return {\n decision: sensitivePolicy,\n reason: 'memory candidate is sensitive',\n };\n }\n const targetPolicy = manifest.memory.writePolicy?.[candidate.target] ?? 'deny';\n if (manifest.memory.mode === 'confirmWrite' && targetPolicy === 'allow') {\n return { decision: 'confirm', reason: 'agent memory mode requires confirmation' };\n }\n return {\n decision: targetPolicy,\n reason: `target policy is ${targetPolicy}`,\n };\n },\n };\n}\n"],"mappings":";AAyBA,MAAM,kBAAkB,IAAI,IAAI,CAAC,WAAW,CAAC;AAE7C,SAAS,oBAAoB,OAAmC;AAC9D,KAAI,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,MAAM,CAAE,QAAO;AACjE,QAAO,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,MAAM,CAAC;;AAGxC,SAAgB,mBAAmB,UAAiD;CAClF,MAAM,kBAAkB,SAAS,OAAO,SAAS,QAAQ,EAAE,GAAG,CAAC,GAAG,SAAS,OAAO,QAAQ;CAC1F,MAAM,YAAY,IAAI,IAAkB,gBAAgB;AAExD,QAAO;EACL;EACA,UAAU,WAAW,UAAU,IAAI,OAAO;EAC1C,aAAa,cAAc;AACzB,OAAI,SAAS,OAAO,SAAS,MAC3B,QAAO;IAAE,UAAU;IAAQ,QAAQ;IAAsB;AAE3D,OAAI,gBAAgB,IAAI,SAAS,OAAO,KAAK,CAC3C,QAAO;IAAE,UAAU;IAAQ,QAAQ;IAAuB;AAE5D,OAAI,CAAC,UAAU,QAAQ,MAAM,CAC3B,QAAO;IAAE,UAAU;IAAQ,QAAQ;IAA2B;AAGhE,OADmB,oBAAoB,UAAU,WACnC,GAAG,GACf,QAAO;IAAE,UAAU;IAAQ,QAAQ;IAAgC;GAErE,MAAM,kBAAkB,SAAS,OAAO,SAAS,wBAAwB;AACzE,OAAI,UAAU,aAAa,oBAAoB,QAC7C,QAAO;IACL,UAAU;IACV,QAAQ;IACT;GAEH,MAAM,eAAe,SAAS,OAAO,cAAc,UAAU,WAAW;AACxE,OAAI,SAAS,OAAO,SAAS,kBAAkB,iBAAiB,QAC9D,QAAO;IAAE,UAAU;IAAW,QAAQ;IAA2C;AAEnF,UAAO;IACL,UAAU;IACV,QAAQ,oBAAoB;IAC7B;;EAEJ"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { EffectiveAgentManifest } from '../agent-manifest/schema.js';
|
|
2
|
+
export interface ResolveModelRoleParams {
|
|
3
|
+
manifest: EffectiveAgentManifest;
|
|
4
|
+
role?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ResolvedModelRole {
|
|
7
|
+
role: string;
|
|
8
|
+
model: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function resolveModelRole(params: ResolveModelRoleParams): ResolvedModelRole;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/agent-runtime/model-router.ts
|
|
2
|
+
function resolveModelRole(params) {
|
|
3
|
+
const requested = params.role?.trim() || params.manifest.models.defaultRole;
|
|
4
|
+
const role = params.manifest.models.roles[requested] ? requested : params.manifest.models.defaultRole;
|
|
5
|
+
const entry = params.manifest.models.roles[role];
|
|
6
|
+
if (!entry) throw new Error(`Model role "${role}" is not configured`);
|
|
7
|
+
return {
|
|
8
|
+
role,
|
|
9
|
+
model: entry.model,
|
|
10
|
+
...entry.description !== void 0 ? { description: entry.description } : {}
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
export { resolveModelRole };
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=model-router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-router.js","names":[],"sources":["../../../src/agent-runtime/model-router.ts"],"sourcesContent":["import type { EffectiveAgentManifest } from '../agent-manifest/schema.js';\n\nexport interface ResolveModelRoleParams {\n manifest: EffectiveAgentManifest;\n role?: string;\n}\n\nexport interface ResolvedModelRole {\n role: string;\n model: string;\n description?: string;\n}\n\nexport function resolveModelRole(params: ResolveModelRoleParams): ResolvedModelRole {\n const requested = params.role?.trim() || params.manifest.models.defaultRole;\n const role = params.manifest.models.roles[requested] ? requested : params.manifest.models.defaultRole;\n const entry = params.manifest.models.roles[role];\n if (!entry) {\n throw new Error(`Model role \"${role}\" is not configured`);\n }\n return {\n role,\n model: entry.model,\n ...(entry.description !== undefined ? { description: entry.description } : {}),\n };\n}\n"],"mappings":";AAaA,SAAgB,iBAAiB,QAAmD;CAClF,MAAM,YAAY,OAAO,MAAM,MAAM,IAAI,OAAO,SAAS,OAAO;CAChE,MAAM,OAAO,OAAO,SAAS,OAAO,MAAM,aAAa,YAAY,OAAO,SAAS,OAAO;CAC1F,MAAM,QAAQ,OAAO,SAAS,OAAO,MAAM;AAC3C,KAAI,CAAC,MACH,OAAM,IAAI,MAAM,eAAe,KAAK,qBAAqB;AAE3D,QAAO;EACL;EACA,OAAO,MAAM;EACb,GAAI,MAAM,gBAAgB,KAAA,IAAY,EAAE,aAAa,MAAM,aAAa,GAAG,EAAE;EAC9E"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { EffectiveAgentManifest } from '../agent-manifest/schema.js';
|
|
2
|
+
export type AgentRunStatus = 'running' | 'completed' | 'failed' | 'cancelled';
|
|
3
|
+
export type AgentRunEventType = 'run.started' | 'model.selected' | 'tool.called' | 'memory.read' | 'memory.write.checked' | 'workflow.selected' | 'boundary.checked' | 'run.completed' | 'run.failed';
|
|
4
|
+
export interface AgentRunEvent {
|
|
5
|
+
id: string;
|
|
6
|
+
runId: string;
|
|
7
|
+
type: AgentRunEventType;
|
|
8
|
+
payload: Record<string, unknown>;
|
|
9
|
+
createdAt: string;
|
|
10
|
+
}
|
|
11
|
+
export interface AgentRunTrace {
|
|
12
|
+
id: string;
|
|
13
|
+
agentId: string;
|
|
14
|
+
status: AgentRunStatus;
|
|
15
|
+
effectiveManifestHash: string;
|
|
16
|
+
startedAt: string;
|
|
17
|
+
endedAt?: string;
|
|
18
|
+
events: AgentRunEvent[];
|
|
19
|
+
}
|
|
20
|
+
export declare function hashEffectiveManifest(manifest: EffectiveAgentManifest): string;
|
|
21
|
+
export declare function createAgentRunTrace(params: {
|
|
22
|
+
agentId: string;
|
|
23
|
+
manifest: EffectiveAgentManifest;
|
|
24
|
+
now?: Date;
|
|
25
|
+
}): AgentRunTrace;
|
|
26
|
+
export declare function appendAgentRunEvent(trace: AgentRunTrace, type: AgentRunEventType, payload: Record<string, unknown>, now?: Date): AgentRunTrace;
|
|
27
|
+
export declare function finishAgentRunTrace(trace: AgentRunTrace, status: Exclude<AgentRunStatus, 'running'>, payload?: Record<string, unknown>, now?: Date): AgentRunTrace;
|