@xopcai/xopc 0.0.125 → 0.0.126
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 +56 -102
- package/README.zh-CN.md +51 -98
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/feishu/src/schema/config-schema.d.ts +6 -6
- 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/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/workflow-progress.js +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/extensions/weixin/src/api/api.js +1 -1
- package/dist/extensions/weixin/src/config-schema.d.ts +3 -3
- package/dist/extensions/weixin/src/plugin.js +1 -1
- package/dist/extensions/weixin/src/workflow-progress.js +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BKDKICZV.js → agent-avatar-dicebear-C70vgt60.js} +1 -1
- package/dist/gateway/static/root/assets/agents-DRYVahI-.js +2 -0
- package/dist/gateway/static/root/assets/{app-management-settings-panel-DI4BqHKW.js → app-management-settings-panel-D9-HW6cy.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-6_ie3NQ4.js → appearance-settings-BHlahIDL.js} +1 -1
- package/dist/gateway/static/root/assets/apps-page-BdJ1eQg3.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-kUHEJ1HK.js → archive-plugin-B-aoIt0w.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-Dm-9prpU.js → attachment-load-BD0G0FD5.js} +1 -1
- package/dist/gateway/static/root/assets/{automation-suggestion-card-OTxQTPnC.js → automation-suggestion-card-iJRVI7aZ.js} +1 -1
- package/dist/gateway/static/root/assets/automations-page-D8hYQbkl.js +4 -0
- package/dist/gateway/static/root/assets/{binary-plugins-DllA_jQ0.js → binary-plugins-B0mNlVSz.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-Cm6CWNj1.js → block-editor-CJY9Lu5G.js} +6 -6
- package/dist/gateway/static/root/assets/browser-settings-page-CiWEO-Iy.js +8 -0
- package/dist/gateway/static/root/assets/{capability-presets-api-VJ89b6I2.js → capability-presets-api-Bgc8ag55.js} +1 -1
- package/dist/gateway/static/root/assets/{capability-presets-settings-panel-BaPj8wC2.js → capability-presets-settings-panel-B1nIi0TC.js} +1 -1
- package/dist/gateway/static/root/assets/{channel-recipient-api-B5PwBEUx.js → channel-recipient-api-0sauApoC.js} +1 -1
- package/dist/gateway/static/root/assets/channels-settings-BddPdqVo.js +1 -0
- package/dist/gateway/static/root/assets/connectors-page-Ba2GDhSE.js +2 -0
- package/dist/gateway/static/root/assets/{directory-picker-path-field-DySMzOF6.js → directory-picker-path-field-CiEc4KmY.js} +1 -1
- package/dist/gateway/static/root/assets/{dreaming-settings-D_AjSnV_.js → dreaming-settings-4bvpk5wr.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-debug-page-BaM0FpW7.js → extension-debug-page-BbyczVZ3.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-DuZWVOGA.js → extension-page-DLN1I3DR.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-DarVtbmJ.js → extension-settings-page-D9VGHmYJ.js} +1 -1
- package/dist/gateway/static/root/assets/{fetch-NFKfkqrd.js → fetch-5V96dUz3.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-api-CFEm9rgy.js → gateway-config-api-BtIzObwp.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-BMk2S5td.js → gateway-settings-KFsGGDhg.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-startup-retry-Dtwh_yGg.js → gateway-startup-retry-DEMad2wt.js} +1 -1
- package/dist/gateway/static/root/assets/{goal-create-dialog-BKP7ylcG.js → goal-create-dialog-4PcF6Sh6.js} +1 -1
- package/dist/gateway/static/root/assets/goal-detail-page-B482PSaG.js +1 -0
- package/dist/gateway/static/root/assets/{goals-config-api-DTWZNA_Y.js → goals-config-api-CVN7-pdM.js} +1 -1
- package/dist/gateway/static/root/assets/{goals-page-CTmA3hWK.js → goals-page-CUdgJuDn.js} +2 -2
- package/dist/gateway/static/root/assets/{goals-settings-Bhct0ZT-.js → goals-settings-IYCH3-Pi.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-C-UxSU4a.js → heartbeat-settings-Cf_a2Bmz.js} +1 -1
- package/dist/gateway/static/root/assets/index-CA2tR2vm.js +256 -0
- package/dist/gateway/static/root/assets/index-Ds3u0LOk.css +1 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-DCjy2y4d.js → keyboard-shortcuts-settings-lKTg6St7.js} +1 -1
- package/dist/gateway/static/root/assets/logs-page-BCporcNH.js +2 -0
- package/dist/gateway/static/root/assets/{markdown-split-BaqxP-GQ.js → markdown-split-Bv4k6iGJ.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-DQ_EXloK.js → media-plugins-Bbi8g3N8.js} +1 -1
- package/dist/gateway/static/root/assets/messages-C22hxE1N.js +3 -0
- package/dist/gateway/static/root/assets/models-hub-panel-D68Pyow7.js +2 -0
- package/dist/gateway/static/root/assets/notes-page-CuUMOiyv.js +1 -0
- package/dist/gateway/static/root/assets/notes-workbench-Dx2N5zTk.js +2 -0
- package/dist/gateway/static/root/assets/{page-tabs-EIZhLppK.js → page-tabs-Cp395RYD.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-r_uB4Epr.js → preview-open-alternatives-DqV5OM4m.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-sB8AzZi3.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-LBnJqWK2.js +1 -0
- package/dist/gateway/static/root/assets/remote-access-hub-Dbj0o6SC.js +1 -0
- package/dist/gateway/static/root/assets/{save-bar-controls-B132Uf-2.js → save-bar-controls-BItmzAzI.js} +1 -1
- package/dist/gateway/static/root/assets/{schedule-field-B5qshALm.js → schedule-field-BQ8IjjCn.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-CvLmkdS9.js → schema-form-BRpD6x3d.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-DhDZKspB.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-BvXLMNL6.js +1 -0
- package/dist/gateway/static/root/assets/{settings-collapsible-section-pRlvqsAf.js → settings-collapsible-section-BKSPQM4R.js} +1 -1
- package/dist/gateway/static/root/assets/settings-form-section-BmyfthNQ.js +1 -0
- package/dist/gateway/static/root/assets/settings-page-Cfm9UxAr.js +1 -0
- package/dist/gateway/static/root/assets/settings-page-layout-Bls5tfbH.js +1 -0
- package/dist/gateway/static/root/assets/setup-status-panel-kQEsTGAs.js +1 -0
- package/dist/gateway/static/root/assets/{share-preview-page-v6-IOp8t.js → share-preview-page-DbYZNAPb.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-BtR4B0kn.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-CJNVOWoK.js +1 -0
- package/dist/gateway/static/root/assets/skills-page-DcWDHrt3.js +2 -0
- package/dist/gateway/static/root/assets/{system-settings-panel-HUU2FFjM.js → system-settings-panel-DKDAojWM.js} +1 -1
- package/dist/gateway/static/root/assets/{typed-models-lib-AH160QHh.js → typed-models-lib-BCCV4Kkp.js} +1 -1
- package/dist/gateway/static/root/assets/{use-channel-catalog-BXzDmjCQ.js → use-channel-catalog-NBqg3iFY.js} +1 -1
- package/dist/gateway/static/root/assets/{user-profile-settings-panel-DxwnQvQ3.js → user-profile-settings-panel-suQ2x-LB.js} +1 -1
- package/dist/gateway/static/root/assets/{utils-i5POEtqd.js → utils-DPGVr3tS.js} +1 -1
- package/dist/gateway/static/root/assets/voice-api-key-field-DaJASKFP.js +1 -0
- package/dist/gateway/static/root/assets/{work-item-detail-page-CD6FL_Rs.js → work-item-detail-page-BrCZpAWh.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-ClVVMgN-.js → workflow-run-setup-panel-BTkRVNAh.js} +2 -2
- package/dist/gateway/static/root/assets/{workflow-start-dialog-Dv4ZA1T0.js → workflow-start-dialog-DAImVtdO.js} +1 -1
- package/dist/gateway/static/root/assets/workflows-page-vyJ8wSXm.js +18 -0
- package/dist/gateway/static/root/index.html +5 -5
- package/dist/package.js +1 -1
- package/dist/src/activity/context.d.ts +11 -0
- package/dist/src/activity/context.js +36 -0
- package/dist/src/activity/context.js.map +1 -0
- package/dist/src/activity/emitter.d.ts +6 -0
- package/dist/src/activity/emitter.js +43 -0
- package/dist/src/activity/emitter.js.map +1 -0
- package/dist/src/activity/index.d.ts +3 -0
- package/dist/src/activity/index.js +3 -0
- package/dist/src/activity/service.d.ts +12 -0
- package/dist/src/activity/service.js +59 -0
- package/dist/src/activity/service.js.map +1 -0
- package/dist/src/activity/types.d.ts +109 -0
- package/dist/src/activity/types.js +1 -0
- package/dist/src/agent/agent-manager.d.ts +7 -0
- package/dist/src/agent/agent-manager.js +7 -4
- package/dist/src/agent/agent-manager.js.map +1 -1
- package/dist/src/agent/context/project-context.js +2 -2
- package/dist/src/agent/context/workspace-seed.js +2 -2
- package/dist/src/agent/embedded/run-for-session.js +1 -1
- package/dist/src/agent/goals/post-turn.js +2 -2
- package/dist/src/agent/ipc/bus.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/memory/plugin-discovery.js +1 -1
- package/dist/src/agent/models/manager.js +1 -1
- package/dist/src/agent/orchestration/agent-orchestrator.js +1 -1
- package/dist/src/agent/service.js +6 -3
- package/dist/src/agent/service.js.map +1 -1
- package/dist/src/agent/service.types.d.ts +7 -0
- package/dist/src/agent/session/session-inspector.js +1 -1
- package/dist/src/agent/skills/hub-pull.js +1 -1
- package/dist/src/agent/tool-manuals/index.js +15 -6
- package/dist/src/agent/tool-manuals/index.js.map +1 -1
- package/dist/src/agent/tool-manuals/xopc-use.d.ts +1 -0
- package/dist/src/agent/tool-manuals/xopc-use.js +204 -0
- package/dist/src/agent/tool-manuals/xopc-use.js.map +1 -0
- package/dist/src/agent/tools/factory.d.ts +7 -0
- package/dist/src/agent/tools/factory.js +9 -0
- package/dist/src/agent/tools/factory.js.map +1 -1
- package/dist/src/agent/tools/goal-tool.js +2 -2
- package/dist/src/agent/tools/index.d.ts +1 -0
- package/dist/src/agent/tools/index.js +2 -1
- package/dist/src/agent/tools/workflow-tool.js +1 -1
- package/dist/src/agent/tools/xopc-use-tool.d.ts +34 -0
- package/dist/src/agent/tools/xopc-use-tool.js +636 -0
- package/dist/src/agent/tools/xopc-use-tool.js.map +1 -0
- package/dist/src/agent-manifest/schema.d.ts +27 -27
- package/dist/src/automations/api/routes.js +1 -1
- package/dist/src/automations/domain/validation.d.ts +55 -55
- package/dist/src/automations/draft/automation-draft-validator.d.ts +25 -25
- package/dist/src/automations/service/action-executor.js +2 -2
- package/dist/src/browser/cdp-local-launcher.js +1 -1
- package/dist/src/browser/providers/browser-ext-install.js +3 -3
- package/dist/src/browser/providers/cloakbrowser.js +2 -2
- package/dist/src/browser/providers/playwright-doctor.js +1 -1
- package/dist/src/browser/stealth.js +1 -1
- package/dist/src/chat-commands/agent-edit.js +1 -1
- package/dist/src/chat-commands/builtins/config.js +1 -1
- package/dist/src/chat-commands/builtins/goal.js +2 -2
- package/dist/src/chat-commands/context.js +1 -1
- package/dist/src/cli/commands/agent.js +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +2 -2
- package/dist/src/cli/commands/doctor/checks/session-integrity.js +1 -1
- package/dist/src/cli/commands/extension-marketplace.js +1 -1
- package/dist/src/cli/commands/extension-pack.js +1 -1
- package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
- package/dist/src/cli/commands/goal.js +3 -3
- package/dist/src/cli/commands/init.js +1 -1
- package/dist/src/cli/commands/project.js +4 -4
- package/dist/src/config/agent-profile.js +1 -1
- package/dist/src/config/gateway-bind.js +1 -1
- package/dist/src/config/index.js +1 -1
- package/dist/src/config/loader.js +1 -1
- package/dist/src/config/models-json.d.ts +14 -14
- package/dist/src/config/models-json.js +1 -1
- package/dist/src/config/schema.d.ts +60 -60
- package/dist/src/daemon/launchd.js +1 -1
- package/dist/src/daemon/systemd.js +1 -1
- package/dist/src/extensions/discover-extensions.js +1 -1
- package/dist/src/extensions/loader.js +2 -2
- package/dist/src/gateway/agents-admin.js +1 -1
- package/dist/src/gateway/hono/lib/config-payload.d.ts +14 -14
- package/dist/src/gateway/hono/lib/static-ui.js +1 -1
- package/dist/src/gateway/hono/middleware/log-context.js +8 -1
- package/dist/src/gateway/hono/middleware/log-context.js.map +1 -1
- package/dist/src/gateway/hono/routes/activity.d.ts +14 -0
- package/dist/src/gateway/hono/routes/activity.js +72 -0
- package/dist/src/gateway/hono/routes/activity.js.map +1 -0
- package/dist/src/gateway/hono/routes/goals.js +1 -1
- 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/memory.js +2 -2
- package/dist/src/gateway/hono/routes/projects.js +65 -15
- package/dist/src/gateway/hono/routes/projects.js.map +1 -1
- package/dist/src/gateway/hono/routes/sessions.js +101 -2
- package/dist/src/gateway/hono/routes/sessions.js.map +1 -1
- package/dist/src/gateway/hono/routes/workflows.js +2 -2
- package/dist/src/gateway/lock.js +1 -1
- package/dist/src/gateway/ports.js +1 -1
- package/dist/src/gateway/service/sessions-api.d.ts +10 -0
- package/dist/src/gateway/service/sessions-api.js +31 -0
- package/dist/src/gateway/service/sessions-api.js.map +1 -1
- package/dist/src/gateway/service.js +12 -9
- package/dist/src/gateway/service.js.map +1 -1
- package/dist/src/goals/goal-store.js +1 -1
- package/dist/src/goals/goal-store.js.map +1 -1
- package/dist/src/goals/goal-workflow-judge.js +1 -1
- package/dist/src/infra/ports.js +1 -1
- package/dist/src/infra/ssh-tunnel.js +1 -1
- package/dist/src/infra/update-check.js +1 -1
- package/dist/src/infra/update-restart.js +1 -1
- package/dist/src/mcp/channel-bridge.js +1 -1
- package/dist/src/migrations/runner.js +1 -1
- package/dist/src/notes/service.js +65 -6
- package/dist/src/notes/service.js.map +1 -1
- package/dist/src/notes/store.js +1 -1
- package/dist/src/projects/project-service.d.ts +2 -1
- package/dist/src/projects/project-service.js +59 -2
- package/dist/src/projects/project-service.js.map +1 -1
- package/dist/src/projects/project-store.d.ts +2 -1
- package/dist/src/projects/project-store.js +43 -0
- package/dist/src/projects/project-store.js.map +1 -1
- package/dist/src/projects/types.d.ts +10 -0
- package/dist/src/projects/workspace.js +1 -1
- package/dist/src/routing/agent-session-key.js +1 -1
- package/dist/src/routing/resolve-route.js +1 -1
- package/dist/src/routing/resolve-tui-session-key.js +1 -1
- package/dist/src/session/client-history.d.ts +3 -0
- package/dist/src/session/client-history.js +24 -9
- package/dist/src/session/client-history.js.map +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/types.d.ts +4 -0
- package/dist/src/session/types.js.map +1 -1
- package/dist/src/storage/sqlite/activity-repository.d.ts +8 -0
- package/dist/src/storage/sqlite/activity-repository.js +208 -0
- package/dist/src/storage/sqlite/activity-repository.js.map +1 -0
- package/dist/src/storage/sqlite/connection.js +1 -1
- package/dist/src/storage/sqlite/index.d.ts +1 -0
- package/dist/src/storage/sqlite/index.js +2 -1
- package/dist/src/storage/sqlite/migrations/024_activity_events.sql +62 -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 +1 -1
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/storage/sqlite/schema.sql +63 -0
- package/dist/src/storage/sqlite/session-repository.js +11 -0
- package/dist/src/storage/sqlite/session-repository.js.map +1 -1
- package/dist/src/tui/backends/embedded-backend.d.ts +13 -0
- package/dist/src/tui/backends/embedded-backend.js +76 -7
- package/dist/src/tui/backends/embedded-backend.js.map +1 -1
- package/dist/src/tui/backends/gateway-sse-backend.d.ts +13 -0
- package/dist/src/tui/backends/gateway-sse-backend.js +53 -0
- package/dist/src/tui/backends/gateway-sse-backend.js.map +1 -1
- package/dist/src/tui/chat-history.js +16 -3
- package/dist/src/tui/chat-history.js.map +1 -1
- package/dist/src/tui/clipboard-image.js +1 -1
- package/dist/src/tui/components/chat-log.d.ts +23 -3
- package/dist/src/tui/components/chat-log.js +68 -9
- package/dist/src/tui/components/chat-log.js.map +1 -1
- package/dist/src/tui/components/tui-bottom-bar.js +9 -5
- package/dist/src/tui/components/tui-bottom-bar.js.map +1 -1
- package/dist/src/tui/tui-backend.d.ts +16 -0
- package/dist/src/tui/tui-command-formatters.js +2 -2
- package/dist/src/tui/tui-commands.d.ts +9 -0
- package/dist/src/tui/tui-commands.js +95 -6
- package/dist/src/tui/tui-commands.js.map +1 -1
- package/dist/src/tui/tui-picker-overlay.d.ts +1 -0
- package/dist/src/tui/tui-picker-overlay.js +36 -1
- package/dist/src/tui/tui-picker-overlay.js.map +1 -1
- package/dist/src/tui/tui-picker-services.d.ts +13 -0
- package/dist/src/tui/tui-run-state.js +11 -0
- package/dist/src/tui/tui-run-state.js.map +1 -1
- package/dist/src/tui/tui-run-status-format.d.ts +3 -0
- package/dist/src/tui/tui-run-status-format.js +33 -0
- package/dist/src/tui/tui-run-status-format.js.map +1 -0
- package/dist/src/tui/tui-session-actions.d.ts +5 -0
- package/dist/src/tui/tui-session-actions.js +24 -0
- package/dist/src/tui/tui-session-actions.js.map +1 -1
- package/dist/src/tui/tui-timeline-picker.d.ts +19 -0
- package/dist/src/tui/tui-timeline-picker.js +81 -0
- package/dist/src/tui/tui-timeline-picker.js.map +1 -0
- package/dist/src/tui/tui-timeline.d.ts +15 -0
- package/dist/src/tui/tui-timeline.js +65 -0
- package/dist/src/tui/tui-timeline.js.map +1 -0
- package/dist/src/tui/tui-types.d.ts +1 -0
- package/dist/src/tui/tui-types.js +1 -0
- package/dist/src/tui/tui-types.js.map +1 -1
- package/dist/src/tui/tui.js +31 -25
- package/dist/src/tui/tui.js.map +1 -1
- package/dist/src/utils/index.js +1 -1
- package/dist/src/utils/logger/index.js +1 -1
- package/dist/src/utils/logger/stats.d.ts +3 -3
- package/dist/src/utils/logger.js +1 -1
- package/dist/src/work-items/agent-context.d.ts +5 -1
- package/dist/src/work-items/agent-context.js +39 -3
- package/dist/src/work-items/agent-context.js.map +1 -1
- package/dist/src/work-items/work-item-service.d.ts +2 -0
- package/dist/src/work-items/work-item-service.js +97 -0
- package/dist/src/work-items/work-item-service.js.map +1 -1
- package/dist/src/workflows/draft/workflow-draft-service.js +1 -1
- package/dist/src/workflows/service/workflow-session-bridge.js +1 -1
- package/package.json +5 -5
- package/dist/gateway/static/root/assets/agents-BnTB7-c5.js +0 -2
- package/dist/gateway/static/root/assets/apps-page-B6bG65SW.js +0 -1
- package/dist/gateway/static/root/assets/automations-page-1lVbo0dS.js +0 -1
- package/dist/gateway/static/root/assets/browser-settings-page-CzDBlOK0.js +0 -8
- package/dist/gateway/static/root/assets/channels-settings-Df4m7p1k.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-BMTphmHS.js +0 -2
- package/dist/gateway/static/root/assets/goal-detail-page-C2cTxf71.js +0 -1
- package/dist/gateway/static/root/assets/index-BNHDd2j1.css +0 -1
- package/dist/gateway/static/root/assets/index-BPXLPMuY.js +0 -193
- package/dist/gateway/static/root/assets/logs-page-CGc3_CQU.js +0 -2
- package/dist/gateway/static/root/assets/messages-CjuIJcZl.js +0 -3
- package/dist/gateway/static/root/assets/models-hub-panel-Drz4UQMb.js +0 -2
- package/dist/gateway/static/root/assets/notes-page-CY1ylng1.js +0 -1
- package/dist/gateway/static/root/assets/notes-workbench-X7IaD--t.js +0 -2
- package/dist/gateway/static/root/assets/project-detail-page-DE5adRBE.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-CuOb1k6F.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-BOxNrUVA.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-CY0IQcGW.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-D4NBNVCB.js +0 -1
- package/dist/gateway/static/root/assets/settings-form-section-BBYUDLVd.js +0 -1
- package/dist/gateway/static/root/assets/settings-page-DaO7zYZM.js +0 -1
- package/dist/gateway/static/root/assets/settings-page-layout-D8g9PAek.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-Bks0CLLT.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-CEZsKm9r.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-oTkHbb9W.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-DigsbZ6K.js +0 -2
- package/dist/gateway/static/root/assets/voice-api-key-field-CEJklEgb.js +0 -1
- package/dist/gateway/static/root/assets/workflows-page-OLQiUpoW.js +0 -18
|
@@ -61,13 +61,13 @@ export declare function buildSafeWebConfigPayload(service: GatewayService, optio
|
|
|
61
61
|
};
|
|
62
62
|
policy?: {
|
|
63
63
|
allowFallbacks?: boolean;
|
|
64
|
-
maxCostTier?: "low" | "
|
|
64
|
+
maxCostTier?: "low" | "high" | "medium";
|
|
65
65
|
};
|
|
66
66
|
};
|
|
67
67
|
tools: {
|
|
68
68
|
builtin: Record<string, {
|
|
69
69
|
mode: "allow" | "confirm" | "deny";
|
|
70
|
-
scope?: "
|
|
70
|
+
scope?: "workspace" | "readonly" | "unrestricted";
|
|
71
71
|
limits?: {
|
|
72
72
|
maxCallsPerTurn?: number;
|
|
73
73
|
timeoutMs?: number;
|
|
@@ -76,7 +76,7 @@ export declare function buildSafeWebConfigPayload(service: GatewayService, optio
|
|
|
76
76
|
mcp?: {
|
|
77
77
|
servers?: Record<string, {
|
|
78
78
|
mode: "allow" | "confirm" | "deny";
|
|
79
|
-
scope?: "
|
|
79
|
+
scope?: "workspace" | "readonly" | "unrestricted";
|
|
80
80
|
limits?: {
|
|
81
81
|
maxCallsPerTurn?: number;
|
|
82
82
|
timeoutMs?: number;
|
|
@@ -84,7 +84,7 @@ export declare function buildSafeWebConfigPayload(service: GatewayService, optio
|
|
|
84
84
|
}>;
|
|
85
85
|
tools?: Record<string, {
|
|
86
86
|
mode: "allow" | "confirm" | "deny";
|
|
87
|
-
scope?: "
|
|
87
|
+
scope?: "workspace" | "readonly" | "unrestricted";
|
|
88
88
|
limits?: {
|
|
89
89
|
maxCallsPerTurn?: number;
|
|
90
90
|
timeoutMs?: number;
|
|
@@ -98,8 +98,8 @@ export declare function buildSafeWebConfigPayload(service: GatewayService, optio
|
|
|
98
98
|
deny?: string[];
|
|
99
99
|
};
|
|
100
100
|
memory: {
|
|
101
|
-
mode: "off" | "
|
|
102
|
-
sources: ("
|
|
101
|
+
mode: "off" | "auto" | "readOnly" | "confirmWrite";
|
|
102
|
+
sources: ("session" | "workspace" | "userProfile" | "agentProfile" | "curated")[];
|
|
103
103
|
writePolicy?: {
|
|
104
104
|
userProfile?: "allow" | "confirm" | "deny";
|
|
105
105
|
agentProfile?: "allow" | "confirm" | "deny";
|
|
@@ -195,13 +195,13 @@ export declare function buildSafeWebConfigPayload(service: GatewayService, optio
|
|
|
195
195
|
};
|
|
196
196
|
policy?: {
|
|
197
197
|
allowFallbacks?: boolean;
|
|
198
|
-
maxCostTier?: "low" | "
|
|
198
|
+
maxCostTier?: "low" | "high" | "medium";
|
|
199
199
|
};
|
|
200
200
|
};
|
|
201
201
|
tools?: {
|
|
202
202
|
builtin: Record<string, {
|
|
203
203
|
mode: "allow" | "confirm" | "deny";
|
|
204
|
-
scope?: "
|
|
204
|
+
scope?: "workspace" | "readonly" | "unrestricted";
|
|
205
205
|
limits?: {
|
|
206
206
|
maxCallsPerTurn?: number;
|
|
207
207
|
timeoutMs?: number;
|
|
@@ -210,7 +210,7 @@ export declare function buildSafeWebConfigPayload(service: GatewayService, optio
|
|
|
210
210
|
mcp?: {
|
|
211
211
|
servers?: Record<string, {
|
|
212
212
|
mode: "allow" | "confirm" | "deny";
|
|
213
|
-
scope?: "
|
|
213
|
+
scope?: "workspace" | "readonly" | "unrestricted";
|
|
214
214
|
limits?: {
|
|
215
215
|
maxCallsPerTurn?: number;
|
|
216
216
|
timeoutMs?: number;
|
|
@@ -218,7 +218,7 @@ export declare function buildSafeWebConfigPayload(service: GatewayService, optio
|
|
|
218
218
|
}>;
|
|
219
219
|
tools?: Record<string, {
|
|
220
220
|
mode: "allow" | "confirm" | "deny";
|
|
221
|
-
scope?: "
|
|
221
|
+
scope?: "workspace" | "readonly" | "unrestricted";
|
|
222
222
|
limits?: {
|
|
223
223
|
maxCallsPerTurn?: number;
|
|
224
224
|
timeoutMs?: number;
|
|
@@ -232,8 +232,8 @@ export declare function buildSafeWebConfigPayload(service: GatewayService, optio
|
|
|
232
232
|
deny?: string[];
|
|
233
233
|
};
|
|
234
234
|
memory?: {
|
|
235
|
-
mode: "off" | "
|
|
236
|
-
sources: ("
|
|
235
|
+
mode: "off" | "auto" | "readOnly" | "confirmWrite";
|
|
236
|
+
sources: ("session" | "workspace" | "userProfile" | "agentProfile" | "curated")[];
|
|
237
237
|
writePolicy?: {
|
|
238
238
|
userProfile?: "allow" | "confirm" | "deny";
|
|
239
239
|
agentProfile?: "allow" | "confirm" | "deny";
|
|
@@ -334,7 +334,7 @@ export declare function buildSafeWebConfigPayload(service: GatewayService, optio
|
|
|
334
334
|
strict: boolean;
|
|
335
335
|
};
|
|
336
336
|
auth: {
|
|
337
|
-
mode: "
|
|
337
|
+
mode: "token" | "password" | "none" | "trusted-proxy";
|
|
338
338
|
token: string;
|
|
339
339
|
password: string;
|
|
340
340
|
trustedProxy: {
|
|
@@ -367,7 +367,7 @@ export declare function buildSafeWebConfigPayload(service: GatewayService, optio
|
|
|
367
367
|
};
|
|
368
368
|
};
|
|
369
369
|
maxSseConnections: number;
|
|
370
|
-
channelConnectDeferMode: "
|
|
370
|
+
channelConnectDeferMode: "explicit" | "off" | "auto";
|
|
371
371
|
channelConnectDeferIds: string[];
|
|
372
372
|
channelConnectDeferSkipIds: string[];
|
|
373
373
|
share: import("../../../share/share-types.js").ShareConfig;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { dirname, resolve } from "node:path";
|
|
2
2
|
import { readFileSync } from "node:fs";
|
|
3
|
-
import { createHash } from "node:crypto";
|
|
4
3
|
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { createHash } from "node:crypto";
|
|
5
5
|
//#region src/gateway/hono/lib/static-ui.ts
|
|
6
6
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
7
7
|
/**
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { init_context, runWithLogContext } from "../../../utils/logger/context.js";
|
|
2
|
+
import { runWithActivityContext } from "../../../activity/context.js";
|
|
3
|
+
import "../../../activity/index.js";
|
|
2
4
|
import { randomUUID } from "node:crypto";
|
|
3
5
|
import { createMiddleware } from "hono/factory";
|
|
4
6
|
//#region src/gateway/hono/middleware/log-context.ts
|
|
@@ -17,7 +19,12 @@ function logContextMiddleware() {
|
|
|
17
19
|
requestId,
|
|
18
20
|
...sessionHeader ? { sessionId: sessionHeader } : {}
|
|
19
21
|
}, async () => {
|
|
20
|
-
await
|
|
22
|
+
await runWithActivityContext({ source: {
|
|
23
|
+
kind: "gateway_api",
|
|
24
|
+
requestId
|
|
25
|
+
} }, async () => {
|
|
26
|
+
await next();
|
|
27
|
+
});
|
|
21
28
|
});
|
|
22
29
|
});
|
|
23
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-context.js","names":[],"sources":["../../../../../src/gateway/hono/middleware/log-context.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport { createMiddleware } from 'hono/factory';\n\nimport { runWithLogContext } from '../../../utils/logger/context.js';\n\n/**\n * Binds request (and optional session) correlation into AsyncLocalStorage so\n * all pino logs in the request inherit requestId / sessionId without a child logger.\n */\nexport function logContextMiddleware() {\n return createMiddleware(async (c, next) => {\n const headerRequestId = c.req.header('x-request-id')?.trim();\n const requestId = headerRequestId && headerRequestId.length > 0 ? headerRequestId : randomUUID();\n const sessionHeader = c.req.header('x-session-id')?.trim();\n\n c.header('X-Request-Id', requestId);\n\n return runWithLogContext(\n {\n requestId,\n ...(sessionHeader ? { sessionId: sessionHeader } : {}),\n },\n async () => {\n await next();\n },\n );\n });\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"log-context.js","names":[],"sources":["../../../../../src/gateway/hono/middleware/log-context.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport { createMiddleware } from 'hono/factory';\n\nimport { runWithActivityContext } from '../../../activity/index.js';\nimport { runWithLogContext } from '../../../utils/logger/context.js';\n\n/**\n * Binds request (and optional session) correlation into AsyncLocalStorage so\n * all pino logs in the request inherit requestId / sessionId without a child logger.\n */\nexport function logContextMiddleware() {\n return createMiddleware(async (c, next) => {\n const headerRequestId = c.req.header('x-request-id')?.trim();\n const requestId = headerRequestId && headerRequestId.length > 0 ? headerRequestId : randomUUID();\n const sessionHeader = c.req.header('x-session-id')?.trim();\n\n c.header('X-Request-Id', requestId);\n\n return runWithLogContext(\n {\n requestId,\n ...(sessionHeader ? { sessionId: sessionHeader } : {}),\n },\n async () => {\n await runWithActivityContext(\n { source: { kind: 'gateway_api', requestId } },\n async () => {\n await next();\n },\n );\n },\n );\n });\n}\n"],"mappings":";;;;;;cAKqE;;;;;AAMrE,SAAgB,uBAAuB;AACrC,QAAO,iBAAiB,OAAO,GAAG,SAAS;EACzC,MAAM,kBAAkB,EAAE,IAAI,OAAO,eAAe,EAAE,MAAM;EAC5D,MAAM,YAAY,mBAAmB,gBAAgB,SAAS,IAAI,kBAAkB,YAAY;EAChG,MAAM,gBAAgB,EAAE,IAAI,OAAO,eAAe,EAAE,MAAM;AAE1D,IAAE,OAAO,gBAAgB,UAAU;AAEnC,SAAO,kBACL;GACE;GACA,GAAI,gBAAgB,EAAE,WAAW,eAAe,GAAG,EAAE;GACtD,EACD,YAAY;AACV,SAAM,uBACJ,EAAE,QAAQ;IAAE,MAAM;IAAe;IAAW,EAAE,EAC9C,YAAY;AACV,UAAM,MAAM;KAEf;IAEJ;GACD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Hono } from 'hono';
|
|
2
|
+
import type { ActivityVisibility } from '../../../activity/types.js';
|
|
3
|
+
import type { AuthenticatedRouteDeps } from './deps.js';
|
|
4
|
+
export declare function parseActivityQuery(c: {
|
|
5
|
+
req: {
|
|
6
|
+
query(name: string): string | undefined;
|
|
7
|
+
};
|
|
8
|
+
}): {
|
|
9
|
+
visibility?: ActivityVisibility;
|
|
10
|
+
limit?: number;
|
|
11
|
+
offset?: number;
|
|
12
|
+
};
|
|
13
|
+
export declare function parseActivityIncludeRelated(raw: string | undefined): boolean;
|
|
14
|
+
export declare function registerActivityRoutes(authenticated: Hono, _deps: AuthenticatedRouteDeps): void;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { ActivityService } from "../../../activity/service.js";
|
|
2
|
+
import "../../../activity/index.js";
|
|
3
|
+
//#region src/gateway/hono/routes/activity.ts
|
|
4
|
+
const ACTIVITY_OBJECT_KINDS = new Set([
|
|
5
|
+
"project",
|
|
6
|
+
"note",
|
|
7
|
+
"work_item",
|
|
8
|
+
"session",
|
|
9
|
+
"goal",
|
|
10
|
+
"workflow_run",
|
|
11
|
+
"automation"
|
|
12
|
+
]);
|
|
13
|
+
function parseActivityVisibility(raw) {
|
|
14
|
+
return raw === "timeline" || raw === "audit" || raw === "debug" ? raw : void 0;
|
|
15
|
+
}
|
|
16
|
+
function parseActivityLimit(raw) {
|
|
17
|
+
if (!raw) return void 0;
|
|
18
|
+
const n = Number.parseInt(raw, 10);
|
|
19
|
+
return Number.isFinite(n) ? Math.min(100, Math.max(1, n)) : void 0;
|
|
20
|
+
}
|
|
21
|
+
function parseActivityOffset(raw) {
|
|
22
|
+
if (!raw) return void 0;
|
|
23
|
+
const n = Number.parseInt(raw, 10);
|
|
24
|
+
return Number.isFinite(n) ? Math.max(0, n) : void 0;
|
|
25
|
+
}
|
|
26
|
+
function parseActivityQuery(c) {
|
|
27
|
+
return {
|
|
28
|
+
visibility: parseActivityVisibility(c.req.query("visibility")),
|
|
29
|
+
limit: parseActivityLimit(c.req.query("limit")),
|
|
30
|
+
offset: parseActivityOffset(c.req.query("offset"))
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function parseActivityIncludeRelated(raw) {
|
|
34
|
+
return raw === "true" || raw === "1";
|
|
35
|
+
}
|
|
36
|
+
function registerActivityRoutes(authenticated, _deps) {
|
|
37
|
+
const activity = new ActivityService();
|
|
38
|
+
authenticated.get("/api/activity", (c) => {
|
|
39
|
+
const result = activity.list(parseActivityQuery(c));
|
|
40
|
+
return c.json({
|
|
41
|
+
ok: true,
|
|
42
|
+
...result
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
authenticated.get("/api/activity/objects/:kind/:id", (c) => {
|
|
46
|
+
const kind = c.req.param("kind");
|
|
47
|
+
if (!ACTIVITY_OBJECT_KINDS.has(kind)) return c.json({
|
|
48
|
+
ok: false,
|
|
49
|
+
error: "Unsupported activity object kind"
|
|
50
|
+
}, 400);
|
|
51
|
+
const id = c.req.param("id").trim();
|
|
52
|
+
if (!id) return c.json({
|
|
53
|
+
ok: false,
|
|
54
|
+
error: "Missing activity object id"
|
|
55
|
+
}, 400);
|
|
56
|
+
const result = activity.listForObject({
|
|
57
|
+
object: {
|
|
58
|
+
kind,
|
|
59
|
+
id
|
|
60
|
+
},
|
|
61
|
+
...parseActivityQuery(c)
|
|
62
|
+
});
|
|
63
|
+
return c.json({
|
|
64
|
+
ok: true,
|
|
65
|
+
...result
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
//#endregion
|
|
70
|
+
export { parseActivityIncludeRelated, parseActivityQuery, registerActivityRoutes };
|
|
71
|
+
|
|
72
|
+
//# sourceMappingURL=activity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity.js","names":[],"sources":["../../../../../src/gateway/hono/routes/activity.ts"],"sourcesContent":["import type { Hono } from 'hono';\n\nimport { ActivityService } from '../../../activity/index.js';\nimport type { ActivityObjectKind, ActivityVisibility } from '../../../activity/types.js';\nimport type { AuthenticatedRouteDeps } from './deps.js';\n\nconst ACTIVITY_OBJECT_KINDS = new Set<ActivityObjectKind>([\n 'project',\n 'note',\n 'work_item',\n 'session',\n 'goal',\n 'workflow_run',\n 'automation',\n]);\n\nfunction parseActivityVisibility(raw: string | undefined): ActivityVisibility | undefined {\n return raw === 'timeline' || raw === 'audit' || raw === 'debug' ? raw : undefined;\n}\n\nfunction parseActivityLimit(raw: string | undefined): number | undefined {\n if (!raw) return undefined;\n const n = Number.parseInt(raw, 10);\n return Number.isFinite(n) ? Math.min(100, Math.max(1, n)) : undefined;\n}\n\nfunction parseActivityOffset(raw: string | undefined): number | undefined {\n if (!raw) return undefined;\n const n = Number.parseInt(raw, 10);\n return Number.isFinite(n) ? Math.max(0, n) : undefined;\n}\n\nexport function parseActivityQuery(c: {\n req: { query(name: string): string | undefined };\n}): {\n visibility?: ActivityVisibility;\n limit?: number;\n offset?: number;\n} {\n return {\n visibility: parseActivityVisibility(c.req.query('visibility')),\n limit: parseActivityLimit(c.req.query('limit')),\n offset: parseActivityOffset(c.req.query('offset')),\n };\n}\n\nexport function parseActivityIncludeRelated(raw: string | undefined): boolean {\n return raw === 'true' || raw === '1';\n}\n\nexport function registerActivityRoutes(authenticated: Hono, _deps: AuthenticatedRouteDeps): void {\n const activity = new ActivityService();\n\n authenticated.get('/api/activity', (c) => {\n const result = activity.list(parseActivityQuery(c));\n return c.json({ ok: true, ...result });\n });\n\n authenticated.get('/api/activity/objects/:kind/:id', (c) => {\n const kind = c.req.param('kind') as ActivityObjectKind;\n if (!ACTIVITY_OBJECT_KINDS.has(kind)) {\n return c.json({ ok: false, error: 'Unsupported activity object kind' }, 400);\n }\n const id = c.req.param('id').trim();\n if (!id) return c.json({ ok: false, error: 'Missing activity object id' }, 400);\n const result = activity.listForObject({\n object: { kind, id },\n ...parseActivityQuery(c),\n });\n return c.json({ ok: true, ...result });\n });\n}\n"],"mappings":";;;AAMA,MAAM,wBAAwB,IAAI,IAAwB;CACxD;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAAC;AAEF,SAAS,wBAAwB,KAAyD;AACxF,QAAO,QAAQ,cAAc,QAAQ,WAAW,QAAQ,UAAU,MAAM,KAAA;;AAG1E,SAAS,mBAAmB,KAA6C;AACvE,KAAI,CAAC,IAAK,QAAO,KAAA;CACjB,MAAM,IAAI,OAAO,SAAS,KAAK,GAAG;AAClC,QAAO,OAAO,SAAS,EAAE,GAAG,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,CAAC,GAAG,KAAA;;AAG9D,SAAS,oBAAoB,KAA6C;AACxE,KAAI,CAAC,IAAK,QAAO,KAAA;CACjB,MAAM,IAAI,OAAO,SAAS,KAAK,GAAG;AAClC,QAAO,OAAO,SAAS,EAAE,GAAG,KAAK,IAAI,GAAG,EAAE,GAAG,KAAA;;AAG/C,SAAgB,mBAAmB,GAMjC;AACA,QAAO;EACL,YAAY,wBAAwB,EAAE,IAAI,MAAM,aAAa,CAAC;EAC9D,OAAO,mBAAmB,EAAE,IAAI,MAAM,QAAQ,CAAC;EAC/C,QAAQ,oBAAoB,EAAE,IAAI,MAAM,SAAS,CAAC;EACnD;;AAGH,SAAgB,4BAA4B,KAAkC;AAC5E,QAAO,QAAQ,UAAU,QAAQ;;AAGnC,SAAgB,uBAAuB,eAAqB,OAAqC;CAC/F,MAAM,WAAW,IAAI,iBAAiB;AAEtC,eAAc,IAAI,kBAAkB,MAAM;EACxC,MAAM,SAAS,SAAS,KAAK,mBAAmB,EAAE,CAAC;AACnD,SAAO,EAAE,KAAK;GAAE,IAAI;GAAM,GAAG;GAAQ,CAAC;GACtC;AAEF,eAAc,IAAI,oCAAoC,MAAM;EAC1D,MAAM,OAAO,EAAE,IAAI,MAAM,OAAO;AAChC,MAAI,CAAC,sBAAsB,IAAI,KAAK,CAClC,QAAO,EAAE,KAAK;GAAE,IAAI;GAAO,OAAO;GAAoC,EAAE,IAAI;EAE9E,MAAM,KAAK,EAAE,IAAI,MAAM,KAAK,CAAC,MAAM;AACnC,MAAI,CAAC,GAAI,QAAO,EAAE,KAAK;GAAE,IAAI;GAAO,OAAO;GAA8B,EAAE,IAAI;EAC/E,MAAM,SAAS,SAAS,cAAc;GACpC,QAAQ;IAAE;IAAM;IAAI;GACpB,GAAG,mBAAmB,EAAE;GACzB,CAAC;AACF,SAAO,EAAE,KAAK;GAAE,IAAI;GAAM,GAAG;GAAQ,CAAC;GACtC"}
|
|
@@ -3,9 +3,9 @@ import { getDefaultAgentId, init_resolve_route } from "../../../routing/resolve-
|
|
|
3
3
|
import { GoalService, normalizeGoalUiLocale } from "../../../goals/goal-service.js";
|
|
4
4
|
import "../../../goals/index.js";
|
|
5
5
|
import { createWorkflowCatalog } from "../../../agent/workflow/catalog.js";
|
|
6
|
-
import { MAX_WEBCHAT_ATTACHMENT_FILE_BYTES } from "../../chat-limits.js";
|
|
7
6
|
import { resolveProjectAgentId } from "../../../projects/project-agent.js";
|
|
8
7
|
import "../../../projects/index.js";
|
|
8
|
+
import { MAX_WEBCHAT_ATTACHMENT_FILE_BYTES } from "../../chat-limits.js";
|
|
9
9
|
//#region src/gateway/hono/routes/goals.ts
|
|
10
10
|
init_session_key();
|
|
11
11
|
init_resolve_route();
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { registerActivityRoutes } from "./activity.js";
|
|
1
2
|
import { registerAgentStreamRoutes } from "./agent-stream.js";
|
|
2
3
|
import { registerSessionsRoutes } from "./sessions.js";
|
|
3
4
|
import { registerStatusRoutes } from "./status.js";
|
|
@@ -11,6 +12,7 @@ function registerCoreAuthenticatedRoutes(authenticated, deps) {
|
|
|
11
12
|
registerAgentStreamRoutes(authenticated, deps);
|
|
12
13
|
registerSessionsRoutes(authenticated, deps);
|
|
13
14
|
registerMemoryRoutes(authenticated, deps);
|
|
15
|
+
registerActivityRoutes(authenticated, deps);
|
|
14
16
|
registerProjectsRoutes(authenticated, deps);
|
|
15
17
|
registerSearchRoutes(authenticated, deps);
|
|
16
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/gateway/hono/routes/index.ts"],"sourcesContent":["import type { Hono } from 'hono';\n\nimport { registerAgentStreamRoutes } from './agent-stream.js';\nimport { registerSessionsRoutes } from './sessions.js';\nimport { registerStatusRoutes } from './status.js';\nimport { registerMemoryRoutes } from './memory.js';\nimport { registerProjectsRoutes } from './projects.js';\nimport { registerSearchRoutes } from './search.js';\nimport type { AuthenticatedRouteDeps } from './deps.js';\nimport {\n mountAppLazyRoutePrefixes,\n registerAuthenticatedLazyRouteFallback,\n} from './lazy-fallback.js';\n\nexport function registerCoreAuthenticatedRoutes(\n authenticated: Hono,\n deps: AuthenticatedRouteDeps,\n): void {\n registerStatusRoutes(authenticated, deps);\n registerAgentStreamRoutes(authenticated, deps);\n registerSessionsRoutes(authenticated, deps);\n registerMemoryRoutes(authenticated, deps);\n registerProjectsRoutes(authenticated, deps);\n registerSearchRoutes(authenticated, deps);\n}\n\nexport function registerAuthenticatedRoutes(app: Hono, authenticated: Hono, deps: AuthenticatedRouteDeps): void {\n registerCoreAuthenticatedRoutes(authenticated, deps);\n registerAuthenticatedLazyRouteFallback(authenticated, deps);\n mountAppLazyRoutePrefixes(app, { service: deps.service, deps });\n}\n\nexport type { AuthenticatedRouteDeps } from './deps.js';\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/gateway/hono/routes/index.ts"],"sourcesContent":["import type { Hono } from 'hono';\n\nimport { registerActivityRoutes } from './activity.js';\nimport { registerAgentStreamRoutes } from './agent-stream.js';\nimport { registerSessionsRoutes } from './sessions.js';\nimport { registerStatusRoutes } from './status.js';\nimport { registerMemoryRoutes } from './memory.js';\nimport { registerProjectsRoutes } from './projects.js';\nimport { registerSearchRoutes } from './search.js';\nimport type { AuthenticatedRouteDeps } from './deps.js';\nimport {\n mountAppLazyRoutePrefixes,\n registerAuthenticatedLazyRouteFallback,\n} from './lazy-fallback.js';\n\nexport function registerCoreAuthenticatedRoutes(\n authenticated: Hono,\n deps: AuthenticatedRouteDeps,\n): void {\n registerStatusRoutes(authenticated, deps);\n registerAgentStreamRoutes(authenticated, deps);\n registerSessionsRoutes(authenticated, deps);\n registerMemoryRoutes(authenticated, deps);\n registerActivityRoutes(authenticated, deps);\n registerProjectsRoutes(authenticated, deps);\n registerSearchRoutes(authenticated, deps);\n}\n\nexport function registerAuthenticatedRoutes(app: Hono, authenticated: Hono, deps: AuthenticatedRouteDeps): void {\n registerCoreAuthenticatedRoutes(authenticated, deps);\n registerAuthenticatedLazyRouteFallback(authenticated, deps);\n mountAppLazyRoutePrefixes(app, { service: deps.service, deps });\n}\n\nexport type { AuthenticatedRouteDeps } from './deps.js';\n"],"mappings":";;;;;;;;;AAeA,SAAgB,gCACd,eACA,MACM;AACN,sBAAqB,eAAe,KAAK;AACzC,2BAA0B,eAAe,KAAK;AAC9C,wBAAuB,eAAe,KAAK;AAC3C,sBAAqB,eAAe,KAAK;AACzC,wBAAuB,eAAe,KAAK;AAC3C,wBAAuB,eAAe,KAAK;AAC3C,sBAAqB,eAAe,KAAK;;AAG3C,SAAgB,4BAA4B,KAAW,eAAqB,MAAoC;AAC9G,iCAAgC,eAAe,KAAK;AACpD,wCAAuC,eAAe,KAAK;AAC3D,2BAA0B,KAAK;EAAE,SAAS,KAAK;EAAS;EAAM,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { appendMemorySignal, appendMemoryTraceEvent, deleteMemoryRecord, getMemoryRecord, listMemoryRecords, listMemorySignals, listMemoryTraceEvents, searchMemoryRecords, setMemoryTraceFeedback, summarizeMemoryRecallFeedback, upsertMemoryRecord } from "../../../storage/sqlite/memory-records-repository.js";
|
|
2
|
+
import "../../../storage/sqlite/index.js";
|
|
1
3
|
import { MemoryPolicySchema, init_schema } from "../../../agent-manifest/schema.js";
|
|
2
4
|
import { init_agent_scope, resolveDefaultAgentId } from "../../../agent/agent-scope.js";
|
|
3
5
|
import { resolveEffectiveAgentManifestForAgent } from "../../../config/agent-profile.js";
|
|
4
|
-
import { appendMemorySignal, appendMemoryTraceEvent, deleteMemoryRecord, getMemoryRecord, listMemoryRecords, listMemorySignals, listMemoryTraceEvents, searchMemoryRecords, setMemoryTraceFeedback, summarizeMemoryRecallFeedback, upsertMemoryRecord } from "../../../storage/sqlite/memory-records-repository.js";
|
|
5
|
-
import "../../../storage/sqlite/index.js";
|
|
6
6
|
import { resolveBuiltinMemoryStoreConfig } from "../../../agent/memory/memory-config.js";
|
|
7
7
|
import { BuiltinMemoryStore } from "../../../agent/memory/builtin-memory-store.js";
|
|
8
8
|
import { discoverMemoryPlugins } from "../../../agent/memory/plugin-discovery.js";
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import { buildSessionKey, init_session_key } from "../../../routing/session-key.js";
|
|
2
1
|
import { getSqliteDatabase } from "../../../storage/sqlite/transaction.js";
|
|
3
|
-
import { GoalService } from "../../../goals/goal-service.js";
|
|
4
|
-
import "../../../goals/index.js";
|
|
5
2
|
import { getSessionMetadata } from "../../../storage/sqlite/session-repository.js";
|
|
6
3
|
import { loadTranscriptRowsForSession } from "../../../storage/sqlite/transcript-repository.js";
|
|
7
4
|
import { listMemoryRecords, upsertMemoryRecord } from "../../../storage/sqlite/memory-records-repository.js";
|
|
8
5
|
import "../../../storage/sqlite/index.js";
|
|
6
|
+
import { ActivityService } from "../../../activity/service.js";
|
|
7
|
+
import "../../../activity/index.js";
|
|
8
|
+
import { buildSessionKey, init_session_key } from "../../../routing/session-key.js";
|
|
9
|
+
import { resolveEffectiveAgentProfile } from "../../../config/agent-profile.js";
|
|
10
|
+
import { GoalService } from "../../../goals/goal-service.js";
|
|
11
|
+
import "../../../goals/index.js";
|
|
9
12
|
import { ProjectWorkspaceConflictError, ProjectWorkspaceMissingError } from "../../../projects/workspace-project.js";
|
|
10
13
|
import { isValidProjectAgentId, normalizeProjectAgentId, resolveProjectAgentId } from "../../../projects/project-agent.js";
|
|
11
14
|
import { inferProjectKind } from "../../../projects/project-kind.js";
|
|
@@ -16,6 +19,7 @@ import { WORK_ITEM_ATTACHMENT_MAX_BYTES, WorkItemService } from "../../../work-i
|
|
|
16
19
|
import { buildWorkItemAgentContext } from "../../../work-items/agent-context.js";
|
|
17
20
|
import "../../../work-items/index.js";
|
|
18
21
|
import { createGatewayRouteLogger } from "../lib/route-logger.js";
|
|
22
|
+
import { parseActivityIncludeRelated, parseActivityQuery } from "./activity.js";
|
|
19
23
|
import * as path$1 from "node:path";
|
|
20
24
|
import { readFile, readdir, realpath, stat, writeFile } from "node:fs/promises";
|
|
21
25
|
//#region src/gateway/hono/routes/projects.ts
|
|
@@ -41,6 +45,23 @@ function optionalTextField(body, key) {
|
|
|
41
45
|
const value = body[key];
|
|
42
46
|
return typeof value === "string" ? value : null;
|
|
43
47
|
}
|
|
48
|
+
function resolveEffectiveWorkspaceRoot(service, project) {
|
|
49
|
+
const fixedRoot = project.workspaceRoot?.trim();
|
|
50
|
+
if (fixedRoot) return fixedRoot;
|
|
51
|
+
const agentId = resolveProjectAgentId({
|
|
52
|
+
config: service.currentConfig,
|
|
53
|
+
projects: service.projects,
|
|
54
|
+
projectId: project.id
|
|
55
|
+
});
|
|
56
|
+
return resolveEffectiveAgentProfile(service.currentConfig, agentId).resolvedWorkspacePath;
|
|
57
|
+
}
|
|
58
|
+
function enrichProjectWorkspace(service, project) {
|
|
59
|
+
return {
|
|
60
|
+
...project,
|
|
61
|
+
workspaceMode: project.workspaceRoot?.trim() ? "fixed" : "followAgent",
|
|
62
|
+
effectiveWorkspaceRoot: resolveEffectiveWorkspaceRoot(service, project)
|
|
63
|
+
};
|
|
64
|
+
}
|
|
44
65
|
function finiteNumberField(value) {
|
|
45
66
|
if (typeof value === "number" && Number.isFinite(value)) return value;
|
|
46
67
|
if (typeof value === "string" && value.trim()) {
|
|
@@ -136,13 +157,14 @@ async function resolveProjectWorkspaceRoot(service, projectId) {
|
|
|
136
157
|
status: 404,
|
|
137
158
|
error: "Project not found"
|
|
138
159
|
};
|
|
139
|
-
|
|
160
|
+
const workspaceRoot = resolveEffectiveWorkspaceRoot(service, project);
|
|
161
|
+
if (!workspaceRoot?.trim()) return {
|
|
140
162
|
ok: false,
|
|
141
163
|
status: 400,
|
|
142
164
|
error: "Project workspace root is not set"
|
|
143
165
|
};
|
|
144
166
|
try {
|
|
145
|
-
const root = await realpath(
|
|
167
|
+
const root = await realpath(workspaceRoot);
|
|
146
168
|
if (!(await stat(root)).isDirectory()) return {
|
|
147
169
|
ok: false,
|
|
148
170
|
status: 400,
|
|
@@ -157,7 +179,7 @@ async function resolveProjectWorkspaceRoot(service, projectId) {
|
|
|
157
179
|
log.warn({
|
|
158
180
|
err,
|
|
159
181
|
projectId: project.id,
|
|
160
|
-
path:
|
|
182
|
+
path: workspaceRoot
|
|
161
183
|
}, "project workspace root unavailable");
|
|
162
184
|
return {
|
|
163
185
|
ok: false,
|
|
@@ -348,6 +370,7 @@ function projectDigestMemoryRecordId(projectId) {
|
|
|
348
370
|
}
|
|
349
371
|
function registerProjectsRoutes(authenticated, deps) {
|
|
350
372
|
const { service } = deps;
|
|
373
|
+
const activity = new ActivityService();
|
|
351
374
|
const goals = new GoalService();
|
|
352
375
|
const workItems = new WorkItemService();
|
|
353
376
|
authenticated.post("/api/projects", async (c) => {
|
|
@@ -384,7 +407,7 @@ function registerProjectsRoutes(authenticated, deps) {
|
|
|
384
407
|
});
|
|
385
408
|
return c.json({
|
|
386
409
|
ok: true,
|
|
387
|
-
project
|
|
410
|
+
project: enrichProjectWorkspace(service, project)
|
|
388
411
|
}, 201);
|
|
389
412
|
} catch (error) {
|
|
390
413
|
if (error instanceof ProjectWorkspaceConflictError) return c.json({
|
|
@@ -417,7 +440,8 @@ function registerProjectsRoutes(authenticated, deps) {
|
|
|
417
440
|
});
|
|
418
441
|
return c.json({
|
|
419
442
|
ok: true,
|
|
420
|
-
...result
|
|
443
|
+
...result,
|
|
444
|
+
items: result.items.map((project) => enrichProjectWorkspace(service, project))
|
|
421
445
|
});
|
|
422
446
|
});
|
|
423
447
|
authenticated.get("/api/projects/suggestions", async (c) => {
|
|
@@ -523,7 +547,7 @@ function registerProjectsRoutes(authenticated, deps) {
|
|
|
523
547
|
return c.json({
|
|
524
548
|
ok: true,
|
|
525
549
|
overview: {
|
|
526
|
-
project,
|
|
550
|
+
project: enrichProjectWorkspace(service, project),
|
|
527
551
|
stats: {
|
|
528
552
|
sessionCount: project.sessionCount,
|
|
529
553
|
goalCount: project.goalCount,
|
|
@@ -547,6 +571,22 @@ function registerProjectsRoutes(authenticated, deps) {
|
|
|
547
571
|
}
|
|
548
572
|
});
|
|
549
573
|
});
|
|
574
|
+
authenticated.get("/api/projects/:id/activity", (c) => {
|
|
575
|
+
const project = service.projects.get(c.req.param("id"));
|
|
576
|
+
if (!project) return c.json({
|
|
577
|
+
ok: false,
|
|
578
|
+
error: "Project not found"
|
|
579
|
+
}, 404);
|
|
580
|
+
const result = activity.listForProject({
|
|
581
|
+
projectId: project.id,
|
|
582
|
+
includeRelated: parseActivityIncludeRelated(c.req.query("includeRelated")),
|
|
583
|
+
...parseActivityQuery(c)
|
|
584
|
+
});
|
|
585
|
+
return c.json({
|
|
586
|
+
ok: true,
|
|
587
|
+
...result
|
|
588
|
+
});
|
|
589
|
+
});
|
|
550
590
|
authenticated.get("/api/projects/:id/work-items", async (c) => {
|
|
551
591
|
const project = service.projects.get(c.req.param("id"));
|
|
552
592
|
if (!project) return c.json({
|
|
@@ -928,6 +968,15 @@ function registerProjectsRoutes(authenticated, deps) {
|
|
|
928
968
|
ok: false,
|
|
929
969
|
error: "Project not found"
|
|
930
970
|
}, 404);
|
|
971
|
+
const attachments = await workItems.snapshotAttachmentsForGoal(item.id);
|
|
972
|
+
if (!attachments) return c.json({
|
|
973
|
+
ok: false,
|
|
974
|
+
error: "Work item not found"
|
|
975
|
+
}, 404);
|
|
976
|
+
const context = await buildWorkItemAgentContext(item, {
|
|
977
|
+
attachments,
|
|
978
|
+
includeImages: false
|
|
979
|
+
});
|
|
931
980
|
const goal = goals.create({
|
|
932
981
|
title: item.title,
|
|
933
982
|
description: item.description || item.nextAction,
|
|
@@ -937,10 +986,11 @@ function registerProjectsRoutes(authenticated, deps) {
|
|
|
937
986
|
source: "api",
|
|
938
987
|
config: service.currentConfig
|
|
939
988
|
});
|
|
940
|
-
goals.setContextMessage({
|
|
989
|
+
const goalWithContext = goals.setContextMessage({
|
|
941
990
|
goalId: goal.id,
|
|
942
|
-
text:
|
|
943
|
-
|
|
991
|
+
text: context.text,
|
|
992
|
+
attachments
|
|
993
|
+
}) ?? goal;
|
|
944
994
|
workItems.addLink(item.id, {
|
|
945
995
|
kind: "goal",
|
|
946
996
|
targetId: goal.id,
|
|
@@ -950,7 +1000,7 @@ function registerProjectsRoutes(authenticated, deps) {
|
|
|
950
1000
|
const updated = item.status === "todo" || item.status === "backlog" ? workItems.updateWorkItem(item.id, { status: "in_progress" }) : workItems.getWorkItem(item.id);
|
|
951
1001
|
return c.json({
|
|
952
1002
|
ok: true,
|
|
953
|
-
goal,
|
|
1003
|
+
goal: goalWithContext,
|
|
954
1004
|
item: updated
|
|
955
1005
|
}, 201);
|
|
956
1006
|
});
|
|
@@ -1044,7 +1094,7 @@ function registerProjectsRoutes(authenticated, deps) {
|
|
|
1044
1094
|
}, 404);
|
|
1045
1095
|
return c.json({
|
|
1046
1096
|
ok: true,
|
|
1047
|
-
project
|
|
1097
|
+
project: enrichProjectWorkspace(service, project)
|
|
1048
1098
|
});
|
|
1049
1099
|
});
|
|
1050
1100
|
authenticated.patch("/api/projects/:id", async (c) => {
|
|
@@ -1069,7 +1119,7 @@ function registerProjectsRoutes(authenticated, deps) {
|
|
|
1069
1119
|
});
|
|
1070
1120
|
return c.json({
|
|
1071
1121
|
ok: true,
|
|
1072
|
-
project
|
|
1122
|
+
project: enrichProjectWorkspace(service, project)
|
|
1073
1123
|
});
|
|
1074
1124
|
} catch (error) {
|
|
1075
1125
|
if (error instanceof ProjectWorkspaceConflictError) return c.json({
|