aicodeman 1.44.0 → 1.46.0
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 +32 -8
- package/dist/agent-codex-identity.d.ts +26 -0
- package/dist/agent-codex-identity.d.ts.map +1 -0
- package/dist/agent-codex-identity.js +253 -0
- package/dist/agent-codex-identity.js.map +1 -0
- package/dist/agent-inspection.d.ts +32 -0
- package/dist/agent-inspection.d.ts.map +1 -0
- package/dist/agent-inspection.js +196 -0
- package/dist/agent-inspection.js.map +1 -0
- package/dist/agent-staging.d.ts +130 -0
- package/dist/agent-staging.d.ts.map +1 -0
- package/dist/agent-staging.js +312 -0
- package/dist/agent-staging.js.map +1 -0
- package/dist/case-rename.d.ts +65 -0
- package/dist/case-rename.d.ts.map +1 -0
- package/dist/case-rename.js +198 -0
- package/dist/case-rename.js.map +1 -0
- package/dist/cli-agent.d.ts +91 -3
- package/dist/cli-agent.d.ts.map +1 -1
- package/dist/cli-agent.js +501 -44
- package/dist/cli-agent.js.map +1 -1
- package/dist/cli-history.d.ts +20 -0
- package/dist/cli-history.d.ts.map +1 -0
- package/dist/cli-history.js +61 -0
- package/dist/cli-history.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +6 -1
- package/dist/cli.js.map +1 -1
- package/dist/codex-rollout-format.d.ts +66 -0
- package/dist/codex-rollout-format.d.ts.map +1 -0
- package/dist/codex-rollout-format.js +111 -0
- package/dist/codex-rollout-format.js.map +1 -0
- package/dist/codex-transcript.d.ts +3 -0
- package/dist/codex-transcript.d.ts.map +1 -1
- package/dist/codex-transcript.js +13 -41
- package/dist/codex-transcript.js.map +1 -1
- package/dist/config/auth-config.d.ts +16 -1
- package/dist/config/auth-config.d.ts.map +1 -1
- package/dist/config/auth-config.js +16 -1
- package/dist/config/auth-config.js.map +1 -1
- package/dist/config/cli-registry/schema.d.ts +12 -7
- package/dist/config/cli-registry/schema.d.ts.map +1 -1
- package/dist/config/cli-registry/schema.js +26 -0
- package/dist/config/cli-registry/schema.js.map +1 -1
- package/dist/config/cli-registry/stock.d.ts.map +1 -1
- package/dist/config/cli-registry/stock.js +40 -1
- package/dist/config/cli-registry/stock.js.map +1 -1
- package/dist/config/cli-registry/types.d.ts +57 -0
- package/dist/config/cli-registry/types.d.ts.map +1 -1
- package/dist/config/server-timing.d.ts +6 -0
- package/dist/config/server-timing.d.ts.map +1 -1
- package/dist/config/server-timing.js +9 -0
- package/dist/config/server-timing.js.map +1 -1
- package/dist/daemon-control.d.ts +1 -0
- package/dist/daemon-control.d.ts.map +1 -1
- package/dist/daemon-control.js +2 -0
- package/dist/daemon-control.js.map +1 -1
- package/dist/deepseek-transcript.d.ts +9 -7
- package/dist/deepseek-transcript.d.ts.map +1 -1
- package/dist/deepseek-transcript.js +9 -7
- package/dist/deepseek-transcript.js.map +1 -1
- package/dist/docker-hosts.d.ts +8 -0
- package/dist/docker-hosts.d.ts.map +1 -1
- package/dist/docker-hosts.js +29 -0
- package/dist/docker-hosts.js.map +1 -1
- package/dist/git-fetch-scheduler.d.ts +124 -0
- package/dist/git-fetch-scheduler.d.ts.map +1 -0
- package/dist/git-fetch-scheduler.js +249 -0
- package/dist/git-fetch-scheduler.js.map +1 -0
- package/dist/git-fetch.d.ts +241 -0
- package/dist/git-fetch.d.ts.map +1 -0
- package/dist/git-fetch.js +392 -0
- package/dist/git-fetch.js.map +1 -0
- package/dist/git-workspace-status.d.ts +36 -1
- package/dist/git-workspace-status.d.ts.map +1 -1
- package/dist/git-workspace-status.js +42 -5
- package/dist/git-workspace-status.js.map +1 -1
- package/dist/hooks-config.d.ts +14 -2
- package/dist/hooks-config.d.ts.map +1 -1
- package/dist/hooks-config.js +39 -3
- package/dist/hooks-config.js.map +1 -1
- package/dist/host-sensors.d.ts +115 -0
- package/dist/host-sensors.d.ts.map +1 -0
- package/dist/host-sensors.js +457 -0
- package/dist/host-sensors.js.map +1 -0
- package/dist/local-history.d.ts +71 -0
- package/dist/local-history.d.ts.map +1 -0
- package/dist/local-history.js +750 -0
- package/dist/local-history.js.map +1 -0
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +2 -2
- package/dist/mcp-server.js.map +1 -1
- package/dist/mux-interface.d.ts +5 -2
- package/dist/mux-interface.d.ts.map +1 -1
- package/dist/prompt-cache-keepwarm.d.ts.map +1 -1
- package/dist/prompt-cache-keepwarm.js +5 -3
- package/dist/prompt-cache-keepwarm.js.map +1 -1
- package/dist/remote-hosts.d.ts +7 -0
- package/dist/remote-hosts.d.ts.map +1 -1
- package/dist/remote-hosts.js +17 -3
- package/dist/remote-hosts.js.map +1 -1
- package/dist/remote-pane-history.d.ts.map +1 -1
- package/dist/remote-pane-history.js +2 -2
- package/dist/remote-pane-history.js.map +1 -1
- package/dist/session.d.ts +113 -0
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +354 -13
- package/dist/session.js.map +1 -1
- package/dist/terminal-input-classifier.d.ts +8 -0
- package/dist/terminal-input-classifier.d.ts.map +1 -0
- package/dist/terminal-input-classifier.js +60 -0
- package/dist/terminal-input-classifier.js.map +1 -0
- package/dist/tmux-manager.d.ts +30 -4
- package/dist/tmux-manager.d.ts.map +1 -1
- package/dist/tmux-manager.js +101 -21
- package/dist/tmux-manager.js.map +1 -1
- package/dist/tmux-prefix-table.d.ts +37 -5
- package/dist/tmux-prefix-table.d.ts.map +1 -1
- package/dist/tmux-prefix-table.js +40 -5
- package/dist/tmux-prefix-table.js.map +1 -1
- package/dist/tui/tui-app.d.ts +8 -1
- package/dist/tui/tui-app.d.ts.map +1 -1
- package/dist/tui/tui-app.js +49 -12
- package/dist/tui/tui-app.js.map +1 -1
- package/dist/tui/tui-client.d.ts +90 -3
- package/dist/tui/tui-client.d.ts.map +1 -1
- package/dist/tui/tui-client.js +195 -26
- package/dist/tui/tui-client.js.map +1 -1
- package/dist/types/session.d.ts +15 -0
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types/session.js.map +1 -1
- package/dist/web/agent-inbox-persistence.d.ts +52 -0
- package/dist/web/agent-inbox-persistence.d.ts.map +1 -0
- package/dist/web/agent-inbox-persistence.js +139 -0
- package/dist/web/agent-inbox-persistence.js.map +1 -0
- package/dist/web/agent-inbox.d.ts +140 -0
- package/dist/web/agent-inbox.d.ts.map +1 -0
- package/dist/web/agent-inbox.js +258 -0
- package/dist/web/agent-inbox.js.map +1 -0
- package/dist/web/middleware/auth.d.ts +2 -0
- package/dist/web/middleware/auth.d.ts.map +1 -1
- package/dist/web/middleware/auth.js +145 -52
- package/dist/web/middleware/auth.js.map +1 -1
- package/dist/web/network-auth-policy.d.ts +13 -3
- package/dist/web/network-auth-policy.d.ts.map +1 -1
- package/dist/web/network-auth-policy.js +15 -3
- package/dist/web/network-auth-policy.js.map +1 -1
- package/dist/web/ports/infra-port.d.ts +2 -0
- package/dist/web/ports/infra-port.d.ts.map +1 -1
- package/dist/web/public/admin-ui.js.gz +0 -0
- package/dist/web/public/api-client.c9b1cddc.js.gz +0 -0
- package/dist/web/public/app.3093527f.js +43 -0
- package/dist/web/public/app.3093527f.js.br +0 -0
- package/dist/web/public/app.3093527f.js.gz +0 -0
- package/dist/web/public/approvals-ui.js.gz +0 -0
- package/dist/web/public/{constants.4866ecc3.js → constants.affcdde6.js} +622 -12
- package/dist/web/public/constants.affcdde6.js.br +0 -0
- package/dist/web/public/constants.affcdde6.js.gz +0 -0
- package/dist/web/public/cron-ui.js.gz +0 -0
- package/dist/web/public/entrance-animations.js.gz +0 -0
- package/dist/web/public/git-status-ui.js +88 -5
- package/dist/web/public/git-status-ui.js.br +0 -0
- package/dist/web/public/git-status-ui.js.gz +0 -0
- package/dist/web/public/header-divider.eb2d2463.js +1 -0
- package/dist/web/public/header-divider.eb2d2463.js.br +0 -0
- package/dist/web/public/header-divider.eb2d2463.js.gz +0 -0
- package/dist/web/public/home-sessions.js.gz +0 -0
- package/dist/web/public/host-wake-ui.js.gz +0 -0
- package/dist/web/public/i18n.70265257.js +2 -0
- package/dist/web/public/i18n.70265257.js.br +0 -0
- package/dist/web/public/i18n.70265257.js.gz +0 -0
- package/dist/web/public/image-input.941386e7.js.gz +0 -0
- package/dist/web/public/index.html +170 -16
- package/dist/web/public/index.html.br +0 -0
- package/dist/web/public/index.html.gz +0 -0
- package/dist/web/public/input-cjk.8bc46081.js.gz +0 -0
- package/dist/web/public/keyboard-accessory.4e8b20ac.js.gz +0 -0
- package/dist/web/public/{mobile-handlers.44adaa07.js → mobile-handlers.f7c3f692.js} +26 -2
- package/dist/web/public/mobile-handlers.f7c3f692.js.br +0 -0
- package/dist/web/public/mobile-handlers.f7c3f692.js.gz +0 -0
- package/dist/web/public/mobile-ime-preview.2dbaf262.js.gz +0 -0
- package/dist/web/public/mobile-overview.js.gz +0 -0
- package/dist/web/public/mobile.1bbd2d67.css +1 -0
- package/dist/web/public/mobile.1bbd2d67.css.br +0 -0
- package/dist/web/public/mobile.1bbd2d67.css.gz +0 -0
- package/dist/web/public/notification-manager.feb82c04.js.gz +0 -0
- package/dist/web/public/orchestrator-panel.js.gz +0 -0
- package/dist/web/public/{panels-ui.cbb24ba1.js → panels-ui.4a56ee63.js} +76 -70
- package/dist/web/public/panels-ui.4a56ee63.js.br +0 -0
- package/dist/web/public/panels-ui.4a56ee63.js.gz +0 -0
- package/dist/web/public/ralph-panel.b350e2ef.js.gz +0 -0
- package/dist/web/public/ralph-wizard.b6c0dd19.js.gz +0 -0
- package/dist/web/public/readmymind-ui.js.gz +0 -0
- package/dist/web/public/reboot-restore-ui.js.gz +0 -0
- package/dist/web/public/respawn-ui.d7adcf6a.js.gz +0 -0
- package/dist/web/public/sanitize-html.e7147e76.js.gz +0 -0
- package/dist/web/public/session-lineage.js.gz +0 -0
- package/dist/web/public/session-ui.186f9419.js +106 -0
- package/dist/web/public/session-ui.186f9419.js.br +0 -0
- package/dist/web/public/session-ui.186f9419.js.gz +0 -0
- package/dist/web/public/settings-ui.a191154e.js +106 -0
- package/dist/web/public/settings-ui.a191154e.js.br +0 -0
- package/dist/web/public/settings-ui.a191154e.js.gz +0 -0
- package/dist/web/public/spreadsheet-preview-worker.js.gz +0 -0
- package/dist/web/public/spreadsheet-preview.75c751de.js.gz +0 -0
- package/dist/web/public/spreadsheet-xlsx-core.js.gz +0 -0
- package/dist/web/public/styles.7238eae8.css +1 -0
- package/dist/web/public/styles.7238eae8.css.br +0 -0
- package/dist/web/public/styles.7238eae8.css.gz +0 -0
- package/dist/web/public/subagent-windows.07277a58.js.gz +0 -0
- package/dist/web/public/sw.js +2 -2
- package/dist/web/public/sw.js.br +0 -0
- package/dist/web/public/sw.js.gz +0 -0
- package/dist/web/public/tab-layout-browser.2d6189f7.js.gz +0 -0
- package/dist/web/public/{tab-rail-resize.7157e0bd.js → tab-rail-resize.b5cdceaf.js} +1 -1
- package/dist/web/public/tab-rail-resize.b5cdceaf.js.br +0 -0
- package/dist/web/public/tab-rail-resize.b5cdceaf.js.gz +0 -0
- package/dist/web/public/terminal-keycode229-recovery.af09f99a.js.gz +0 -0
- package/dist/web/public/terminal-split.js.gz +0 -0
- package/dist/web/public/terminal-tile.js +10 -1
- package/dist/web/public/terminal-tile.js.br +0 -0
- package/dist/web/public/terminal-tile.js.gz +0 -0
- package/dist/web/public/terminal-ui.7e787829.js +4 -0
- package/dist/web/public/terminal-ui.7e787829.js.br +0 -0
- package/dist/web/public/terminal-ui.7e787829.js.gz +0 -0
- package/dist/web/public/tile-grid.js.gz +0 -0
- package/dist/web/public/ultracode-panel.js.gz +0 -0
- package/dist/web/public/ultracode-windows.js.gz +0 -0
- package/dist/web/public/vendor/dompurify.min.js.gz +0 -0
- package/dist/web/public/vendor/exceljs.min.js.gz +0 -0
- package/dist/web/public/vendor/fflate.min.js.gz +0 -0
- package/dist/web/public/vendor/marked.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-serialize.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
- package/dist/web/public/vendor/{xterm-predictive-echo.ae5e3d5d.js → xterm-predictive-echo.276b11d9.js} +1 -1
- package/dist/web/public/vendor/xterm-predictive-echo.276b11d9.js.br +0 -0
- package/dist/web/public/vendor/xterm-predictive-echo.276b11d9.js.gz +0 -0
- package/dist/web/public/vendor/xterm-zerolag-input.1be42307.js +5 -0
- package/dist/web/public/vendor/xterm-zerolag-input.1be42307.js.br +0 -0
- package/dist/web/public/vendor/xterm-zerolag-input.1be42307.js.gz +0 -0
- package/dist/web/public/vendor/xterm.css.gz +0 -0
- package/dist/web/public/vendor/xterm.min.js.gz +0 -0
- package/dist/web/public/voice-input.2342c37b.js.gz +0 -0
- package/dist/web/public/voice-pcm-worklet.js.gz +0 -0
- package/dist/web/public/webview-tabs.js.gz +0 -0
- package/dist/web/public/whats-new.json +9 -9
- package/dist/web/route-helpers.d.ts +57 -6
- package/dist/web/route-helpers.d.ts.map +1 -1
- package/dist/web/route-helpers.js +72 -4
- package/dist/web/route-helpers.js.map +1 -1
- package/dist/web/routes/agent-session-routes.d.ts +20 -0
- package/dist/web/routes/agent-session-routes.d.ts.map +1 -0
- package/dist/web/routes/agent-session-routes.js +160 -0
- package/dist/web/routes/agent-session-routes.js.map +1 -0
- package/dist/web/routes/case-routes.d.ts.map +1 -1
- package/dist/web/routes/case-routes.js +203 -16
- package/dist/web/routes/case-routes.js.map +1 -1
- package/dist/web/routes/config-backup-routes.js +2 -2
- package/dist/web/routes/config-backup-routes.js.map +1 -1
- package/dist/web/routes/git-status-routes.d.ts +21 -7
- package/dist/web/routes/git-status-routes.d.ts.map +1 -1
- package/dist/web/routes/git-status-routes.js +78 -12
- package/dist/web/routes/git-status-routes.js.map +1 -1
- package/dist/web/routes/inbox-routes.d.ts +43 -0
- package/dist/web/routes/inbox-routes.d.ts.map +1 -0
- package/dist/web/routes/inbox-routes.js +148 -0
- package/dist/web/routes/inbox-routes.js.map +1 -0
- package/dist/web/routes/index.d.ts +2 -0
- package/dist/web/routes/index.d.ts.map +1 -1
- package/dist/web/routes/index.js +2 -0
- package/dist/web/routes/index.js.map +1 -1
- package/dist/web/routes/ralph-routes.d.ts.map +1 -1
- package/dist/web/routes/ralph-routes.js +7 -16
- package/dist/web/routes/ralph-routes.js.map +1 -1
- package/dist/web/routes/session-routes.d.ts.map +1 -1
- package/dist/web/routes/session-routes.js +120 -74
- package/dist/web/routes/session-routes.js.map +1 -1
- package/dist/web/routes/system-routes.d.ts.map +1 -1
- package/dist/web/routes/system-routes.js +107 -59
- package/dist/web/routes/system-routes.js.map +1 -1
- package/dist/web/routes/ws-routes.d.ts +5 -0
- package/dist/web/routes/ws-routes.d.ts.map +1 -1
- package/dist/web/routes/ws-routes.js +84 -47
- package/dist/web/routes/ws-routes.js.map +1 -1
- package/dist/web/schemas.d.ts +56 -7
- package/dist/web/schemas.d.ts.map +1 -1
- package/dist/web/schemas.js +88 -1
- package/dist/web/schemas.js.map +1 -1
- package/dist/web/sensitive-path.d.ts.map +1 -1
- package/dist/web/sensitive-path.js +2 -0
- package/dist/web/sensitive-path.js.map +1 -1
- package/dist/web/server.d.ts +7 -2
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +144 -16
- package/dist/web/server.js.map +1 -1
- package/dist/web/session-wait-registry.d.ts +48 -4
- package/dist/web/session-wait-registry.d.ts.map +1 -1
- package/dist/web/session-wait-registry.js +144 -6
- package/dist/web/session-wait-registry.js.map +1 -1
- package/dist/web/settings-writer.d.ts +47 -0
- package/dist/web/settings-writer.d.ts.map +1 -0
- package/dist/web/settings-writer.js +110 -0
- package/dist/web/settings-writer.js.map +1 -0
- package/dist/web/sse-events.d.ts +4 -1
- package/dist/web/sse-events.d.ts.map +1 -1
- package/dist/web/sse-events.js +4 -1
- package/dist/web/sse-events.js.map +1 -1
- package/package.json +1 -1
- package/skills/codeman/SKILL.md +30 -8
- package/skills/codeman/preamble.sh +3 -3
- package/skills/codeman/reference/endpoints.md +24 -3
- package/skills/codeman/reference/history.md +84 -0
- package/skills/codeman/reference/inspection-and-staging.md +152 -0
- package/skills/codeman/reference/messaging.md +1 -1
- package/skills/codeman/reference/verbs.md +65 -3
- package/dist/web/public/app.9314ee60.js +0 -43
- package/dist/web/public/app.9314ee60.js.br +0 -0
- package/dist/web/public/app.9314ee60.js.gz +0 -0
- package/dist/web/public/constants.4866ecc3.js.br +0 -0
- package/dist/web/public/constants.4866ecc3.js.gz +0 -0
- package/dist/web/public/i18n.22ca902b.js +0 -2
- package/dist/web/public/i18n.22ca902b.js.br +0 -0
- package/dist/web/public/i18n.22ca902b.js.gz +0 -0
- package/dist/web/public/mobile-handlers.44adaa07.js.br +0 -0
- package/dist/web/public/mobile-handlers.44adaa07.js.gz +0 -0
- package/dist/web/public/mobile.12fb18de.css +0 -1
- package/dist/web/public/mobile.12fb18de.css.br +0 -0
- package/dist/web/public/mobile.12fb18de.css.gz +0 -0
- package/dist/web/public/panels-ui.cbb24ba1.js.br +0 -0
- package/dist/web/public/panels-ui.cbb24ba1.js.gz +0 -0
- package/dist/web/public/session-ui.9c1f009b.js +0 -104
- package/dist/web/public/session-ui.9c1f009b.js.br +0 -0
- package/dist/web/public/session-ui.9c1f009b.js.gz +0 -0
- package/dist/web/public/settings-ui.fea9ddae.js +0 -106
- package/dist/web/public/settings-ui.fea9ddae.js.br +0 -0
- package/dist/web/public/settings-ui.fea9ddae.js.gz +0 -0
- package/dist/web/public/styles.e096fcd6.css +0 -1
- package/dist/web/public/styles.e096fcd6.css.br +0 -0
- package/dist/web/public/styles.e096fcd6.css.gz +0 -0
- package/dist/web/public/tab-rail-resize.7157e0bd.js.br +0 -0
- package/dist/web/public/tab-rail-resize.7157e0bd.js.gz +0 -0
- package/dist/web/public/terminal-ui.68dbd352.js +0 -2
- package/dist/web/public/terminal-ui.68dbd352.js.br +0 -0
- package/dist/web/public/terminal-ui.68dbd352.js.gz +0 -0
- package/dist/web/public/vendor/xterm-predictive-echo.ae5e3d5d.js.br +0 -0
- package/dist/web/public/vendor/xterm-predictive-echo.ae5e3d5d.js.gz +0 -0
- package/dist/web/public/vendor/xterm-zerolag-input.0b69623c.js +0 -4
- package/dist/web/public/vendor/xterm-zerolag-input.0b69623c.js.br +0 -0
- package/dist/web/public/vendor/xterm-zerolag-input.0b69623c.js.gz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-backup-routes.js","sourceRoot":"","sources":["../../../src/web/routes/config-backup-routes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config-backup-routes.js","sourceRoot":"","sources":["../../../src/web/routes/config-backup-routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview `GET /api/sessions/:id/git-status
|
|
3
|
-
* pushed
|
|
2
|
+
* @fileoverview The Git panel's routes: `GET /api/sessions/:id/git-status` (what the session's workspace
|
|
3
|
+
* has not committed or pushed, src/git-workspace-status.ts) and `POST /api/sessions/:id/git-fetch` (the
|
|
4
|
+
* panel's Fetch button, src/git-fetch.ts), for the bottom-bar Git indicator and its window. The answer is
|
|
4
5
|
* an overview: the enclosing repository, or each repository found below a folder that holds several
|
|
5
6
|
* projects (see `getGitWorkspaceOverview` for exactly which).
|
|
6
7
|
*
|
|
7
|
-
* Read-only and offline:
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* Read-only and offline: the status route never fetches and never runs a git write command. Fetching is a
|
|
9
|
+
* separate, user-triggered path (`POST /api/sessions/:id/git-fetch`, src/git-fetch.ts) that the panel calls
|
|
10
|
+
* only when the user clicks Fetch. A remote (SSH) or Docker session is not inspected and answers
|
|
11
|
+
* `state: 'unsupported'` on both routes, and neither is any repository at or inside a Docker case
|
|
12
|
+
* workspace (a container can write there, and git here would run on the host). Ownership goes through
|
|
10
13
|
* `findSessionOrFail`, like every session-scoped route.
|
|
11
14
|
*/
|
|
12
15
|
import type { FastifyInstance } from 'fastify';
|
|
13
16
|
import { type GitRunner } from '../../git-workspace-status.js';
|
|
14
|
-
import type { SessionPort } from '../ports/index.js';
|
|
15
|
-
|
|
17
|
+
import type { EventPort, SessionPort } from '../ports/index.js';
|
|
18
|
+
/**
|
|
19
|
+
* Host paths of every Docker case workspace: repositories at or inside these are never inspected.
|
|
20
|
+
* Exported so the interval scheduler (src/git-fetch-scheduler.ts) uses the SAME list: the Docker rule has
|
|
21
|
+
* to be one rule, checked by every path that could run git.
|
|
22
|
+
*
|
|
23
|
+
* REJECTS when `docker-cases.json` exists but cannot be read or parsed (its writer truncates and rewrites it
|
|
24
|
+
* in place, so a read can land mid-write). The fetch paths fail closed on that: a fetch runs a repository's
|
|
25
|
+
* own hooks, and without the list nothing tells which folders a container can write to. The read-only
|
|
26
|
+
* status and diff routes read it as no Docker workspaces, as they always have.
|
|
27
|
+
*/
|
|
28
|
+
export declare const defaultDockerWorkspaces: () => Promise<string[]>;
|
|
29
|
+
export declare function registerGitStatusRoutes(app: FastifyInstance, ctx: SessionPort & EventPort, git?: GitRunner, dockerWorkspaces?: () => Promise<string[]>): void;
|
|
16
30
|
//# sourceMappingURL=git-status-routes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-status-routes.d.ts","sourceRoot":"","sources":["../../../src/web/routes/git-status-routes.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"git-status-routes.d.ts","sourceRoot":"","sources":["../../../src/web/routes/git-status-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAO/C,OAAO,EASL,KAAK,SAAS,EAEf,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhE;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,QAAa,OAAO,CAAC,MAAM,EAAE,CAC6B,CAAC;AAoB/F,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,eAAe,EAGpB,GAAG,EAAE,WAAW,GAAG,SAAS,EAC5B,GAAG,CAAC,EAAE,SAAS,EACf,gBAAgB,GAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAA2B,GAClE,IAAI,CAoHN"}
|
|
@@ -1,22 +1,37 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview `GET /api/sessions/:id/git-status
|
|
3
|
-
* pushed
|
|
2
|
+
* @fileoverview The Git panel's routes: `GET /api/sessions/:id/git-status` (what the session's workspace
|
|
3
|
+
* has not committed or pushed, src/git-workspace-status.ts) and `POST /api/sessions/:id/git-fetch` (the
|
|
4
|
+
* panel's Fetch button, src/git-fetch.ts), for the bottom-bar Git indicator and its window. The answer is
|
|
4
5
|
* an overview: the enclosing repository, or each repository found below a folder that holds several
|
|
5
6
|
* projects (see `getGitWorkspaceOverview` for exactly which).
|
|
6
7
|
*
|
|
7
|
-
* Read-only and offline:
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* Read-only and offline: the status route never fetches and never runs a git write command. Fetching is a
|
|
9
|
+
* separate, user-triggered path (`POST /api/sessions/:id/git-fetch`, src/git-fetch.ts) that the panel calls
|
|
10
|
+
* only when the user clicks Fetch. A remote (SSH) or Docker session is not inspected and answers
|
|
11
|
+
* `state: 'unsupported'` on both routes, and neither is any repository at or inside a Docker case
|
|
12
|
+
* workspace (a container can write there, and git here would run on the host). Ownership goes through
|
|
10
13
|
* `findSessionOrFail`, like every session-scoped route.
|
|
11
14
|
*/
|
|
12
15
|
import { ApiErrorCode, createErrorResponse, getErrorMessage } from '../../types.js';
|
|
13
16
|
import { redactGitCredentials } from '../../git-clone.js';
|
|
14
|
-
import {
|
|
17
|
+
import { emptyReport, fetchWorkspaceOnce, gitFetchStatusFrom } from '../../git-fetch.js';
|
|
18
|
+
import { readDockerCasesOrThrow } from '../../docker-hosts.js';
|
|
15
19
|
import { getDataDir } from '../../config/instance.js';
|
|
16
|
-
import { findSessionOrFail } from '../route-helpers.js';
|
|
20
|
+
import { findSessionOrFail, persistAndBroadcastSession } from '../route-helpers.js';
|
|
17
21
|
import { emptyOverview, findWorkspaceRepo, getGitFileDiff, resolveOverviewLimits, getGitWorkspaceOverview, getGitWorkspaceStatus, } from '../../git-workspace-status.js';
|
|
18
|
-
/**
|
|
19
|
-
|
|
22
|
+
/**
|
|
23
|
+
* Host paths of every Docker case workspace: repositories at or inside these are never inspected.
|
|
24
|
+
* Exported so the interval scheduler (src/git-fetch-scheduler.ts) uses the SAME list: the Docker rule has
|
|
25
|
+
* to be one rule, checked by every path that could run git.
|
|
26
|
+
*
|
|
27
|
+
* REJECTS when `docker-cases.json` exists but cannot be read or parsed (its writer truncates and rewrites it
|
|
28
|
+
* in place, so a read can land mid-write). The fetch paths fail closed on that: a fetch runs a repository's
|
|
29
|
+
* own hooks, and without the list nothing tells which folders a container can write to. The read-only
|
|
30
|
+
* status and diff routes read it as no Docker workspaces, as they always have.
|
|
31
|
+
*/
|
|
32
|
+
export const defaultDockerWorkspaces = async () => (await readDockerCasesOrThrow(getDataDir())).map((c) => c.hostWorkspacePath).filter(Boolean);
|
|
33
|
+
/** The read-only routes' reading of the list: unchanged, an unreadable list is no Docker workspaces. */
|
|
34
|
+
const dockerWorkspacesOrNone = (dockerWorkspaces) => dockerWorkspaces().catch(() => []);
|
|
20
35
|
/**
|
|
21
36
|
* The repository limit and git timeout a request asks for (Settings → Bottom bar, per device):
|
|
22
37
|
* `maxRepos` and `timeout` (seconds) query parameters, each clamped to a safe range, so an odd value
|
|
@@ -30,7 +45,10 @@ function limitsFrom(query) {
|
|
|
30
45
|
timeoutMs: timeout !== undefined ? Number(timeout) * 1000 : undefined,
|
|
31
46
|
});
|
|
32
47
|
}
|
|
33
|
-
export function registerGitStatusRoutes(app,
|
|
48
|
+
export function registerGitStatusRoutes(app,
|
|
49
|
+
// EventPort as well as SessionPort: the fetch route publishes the run it did, and a route that broadcasts
|
|
50
|
+
// has to say so in its own signature.
|
|
51
|
+
ctx, git, dockerWorkspaces = defaultDockerWorkspaces) {
|
|
34
52
|
app.get('/api/sessions/:id/git-status', async (req) => {
|
|
35
53
|
const { id } = req.params;
|
|
36
54
|
const query = req.query;
|
|
@@ -47,7 +65,7 @@ export function registerGitStatusRoutes(app, ctx, git, dockerWorkspaces = defaul
|
|
|
47
65
|
git,
|
|
48
66
|
fresh: fresh === '1',
|
|
49
67
|
...limits,
|
|
50
|
-
dockerWorkspaces: await dockerWorkspaces
|
|
68
|
+
dockerWorkspaces: await dockerWorkspacesOrNone(dockerWorkspaces),
|
|
51
69
|
}),
|
|
52
70
|
};
|
|
53
71
|
});
|
|
@@ -70,7 +88,7 @@ export function registerGitStatusRoutes(app, ctx, git, dockerWorkspaces = defaul
|
|
|
70
88
|
? await findWorkspaceRepo(session.workingDir, repo, {
|
|
71
89
|
git,
|
|
72
90
|
...limits,
|
|
73
|
-
dockerWorkspaces: await dockerWorkspaces
|
|
91
|
+
dockerWorkspaces: await dockerWorkspacesOrNone(dockerWorkspaces),
|
|
74
92
|
})
|
|
75
93
|
: null;
|
|
76
94
|
const status = repoRoot
|
|
@@ -94,5 +112,53 @@ export function registerGitStatusRoutes(app, ctx, git, dockerWorkspaces = defaul
|
|
|
94
112
|
return createErrorResponse(ApiErrorCode.INTERNAL_ERROR, `git diff failed: ${redactGitCredentials(getErrorMessage(err))}`);
|
|
95
113
|
}
|
|
96
114
|
});
|
|
115
|
+
// Fetch, and only because the user clicked Fetch in the panel (src/git-fetch.ts): one
|
|
116
|
+
// `git fetch --quiet` per repository the panel would show, through the same resolver so the two cannot
|
|
117
|
+
// disagree about which repositories belong to the workspace. This is the only git command the Git panel runs
|
|
118
|
+
// that writes, and it writes remote-tracking refs only: nothing commits, checks out or merges. Cloning and
|
|
119
|
+
// worktree management write too, but those happen when the user asked for them; this route is the one that
|
|
120
|
+
// can also run later, on a timer. It is not as harmless as a read though: a fetch holds git's ref lock, so
|
|
121
|
+
// an agent's own `git pull` in the same clone can collide with it, which is why the run goes through
|
|
122
|
+
// `fetchWorkspaceOnce`: a click while a tick is already fetching this folder joins that run instead of
|
|
123
|
+
// starting a second one. It can also run a
|
|
124
|
+
// repository's own hooks (`reference-transaction`, `pre-auto-gc` through the maintenance git runs after a
|
|
125
|
+
// fetch) and its config commands such as `credential.helper`, so the `FETCH_CONFIG_ARGS` overrides turn
|
|
126
|
+
// maintenance and gc off, and a repository a container can write to is refused before any git runs. Remote
|
|
127
|
+
// and Docker sessions answer `unsupported` like the status route.
|
|
128
|
+
app.post('/api/sessions/:id/git-fetch', async (req) => {
|
|
129
|
+
const { id } = req.params;
|
|
130
|
+
const query = req.query;
|
|
131
|
+
const limits = limitsFrom(query);
|
|
132
|
+
const session = findSessionOrFail(ctx, id, req);
|
|
133
|
+
if (session.remote)
|
|
134
|
+
return { success: true, data: emptyReport('unsupported', { reason: 'remote' }) };
|
|
135
|
+
if (session.docker)
|
|
136
|
+
return { success: true, data: emptyReport('unsupported', { reason: 'docker' }) };
|
|
137
|
+
// Fail CLOSED on a Docker case list that cannot be read: a fetch runs the repository's hooks, so it never
|
|
138
|
+
// runs without knowing which folders a container can write to. Answered as a failed run (`state: 'error'`),
|
|
139
|
+
// published like one, so the Session Options Git row shows it.
|
|
140
|
+
let dockerRoots;
|
|
141
|
+
try {
|
|
142
|
+
dockerRoots = await dockerWorkspaces();
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
console.warn(`[git fetch] Docker case list unreadable, nothing fetched: ${getErrorMessage(err)}`);
|
|
146
|
+
const report = emptyReport('error', {
|
|
147
|
+
error: 'Nothing was fetched: Codeman could not read its Docker case list (docker-cases.json), so it cannot tell which folders a container can write to.',
|
|
148
|
+
});
|
|
149
|
+
if (session.setGitFetchStatus(gitFetchStatusFrom(report, 'click')))
|
|
150
|
+
persistAndBroadcastSession(ctx, session);
|
|
151
|
+
return { success: true, data: report };
|
|
152
|
+
}
|
|
153
|
+
const run = await fetchWorkspaceOnce(session.workingDir, { git, ...limits, dockerWorkspaces: dockerRoots }, 'click');
|
|
154
|
+
// The response answers the click, and the run is also the session's current truth: what the panel's
|
|
155
|
+
// "behind" number is based on. Publishing it is what the api docs say a click does, and what makes a
|
|
156
|
+
// second tab open on the same folder see the same run. The trigger recorded is the RUN's, not this
|
|
157
|
+
// request's: a click that joined a tick already going fetched nothing itself, so the row has to name the
|
|
158
|
+
// interval as what fetched.
|
|
159
|
+
if (session.setGitFetchStatus(gitFetchStatusFrom(run.report, run.trigger)))
|
|
160
|
+
persistAndBroadcastSession(ctx, session);
|
|
161
|
+
return { success: true, data: run.report };
|
|
162
|
+
});
|
|
97
163
|
}
|
|
98
164
|
//# sourceMappingURL=git-status-routes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-status-routes.js","sourceRoot":"","sources":["../../../src/web/routes/git-status-routes.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"git-status-routes.js","sourceRoot":"","sources":["../../../src/web/routes/git-status-routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Agent inbox routes: post, read (optionally long-polling), ack, and an
|
|
3
|
+
* owner-scoped summary of counts. Store semantics live in `agent-inbox.ts`.
|
|
4
|
+
*
|
|
5
|
+
* Who is calling decides what a read or an ack does, so it is resolved here and never
|
|
6
|
+
* taken from the body. `resolveParentSessionId()` reads the `X-Codeman-Parent-Session`
|
|
7
|
+
* header `codeman agent` sends on every request and accepts it only for a live session
|
|
8
|
+
* the caller can see that has the same owner as the receiver (exact id, or a unique
|
|
9
|
+
* prefix of at least 8). Anything else is "no session": a post is from the user, and a
|
|
10
|
+
* read is a peek. What that buys: in multi-user mode a caller cannot name another
|
|
11
|
+
* owner's session (an admin, who can see every session, can act as any session of
|
|
12
|
+
* the receiver's owner, as admins can everywhere else). In single-user mode every
|
|
13
|
+
* local process holds the same credentials, so the header is a hint the client sets
|
|
14
|
+
* about itself.
|
|
15
|
+
*
|
|
16
|
+
* - `POST /api/sessions/:id/inbox` stores a message. `from` is the resolved caller or
|
|
17
|
+
* null. A full inbox is 409 CONFLICT; the oldest message is never dropped.
|
|
18
|
+
* - `GET /api/sessions/:id/inbox[?wait=ms]` returns every pending message. Only the
|
|
19
|
+
* receiver's own read marks them seen. With `wait`, it parks while nothing is
|
|
20
|
+
* UNSEEN (a seen-but-unacked message does not end the wait, or a receiver holding
|
|
21
|
+
* one would spin).
|
|
22
|
+
* - `POST /api/sessions/:id/inbox/ack` removes messages by id, idempotently, and only
|
|
23
|
+
* for the receiver itself (403 otherwise).
|
|
24
|
+
* - `GET /api/agent-inbox/summary` reports `pending`, `unseen`, `oldestUnseenAt` and
|
|
25
|
+
* `parked` per session the caller can see. Counts only, never text, and kept out of
|
|
26
|
+
* `toState()` so a post does not fan out a `session:updated` to every browser.
|
|
27
|
+
*
|
|
28
|
+
* Nothing here writes to a pane.
|
|
29
|
+
*
|
|
30
|
+
* @module web/routes/inbox-routes
|
|
31
|
+
*/
|
|
32
|
+
import { FastifyInstance } from 'fastify';
|
|
33
|
+
import type { SessionPort } from '../ports/index.js';
|
|
34
|
+
/** Per-session counts the summary route reports. */
|
|
35
|
+
export interface InboxSessionSummary {
|
|
36
|
+
pending: number;
|
|
37
|
+
unseen: number;
|
|
38
|
+
oldestUnseenAt: number | null;
|
|
39
|
+
/** The receiver itself is parked on `GET …/inbox?wait=` right now. */
|
|
40
|
+
parked: boolean;
|
|
41
|
+
}
|
|
42
|
+
export declare function registerInboxRoutes(app: FastifyInstance, ctx: SessionPort): void;
|
|
43
|
+
//# sourceMappingURL=inbox-routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbox-routes.d.ts","sourceRoot":"","sources":["../../../src/web/routes/inbox-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAgB1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,oDAAoD;AACpD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,sEAAsE;IACtE,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CA4HhF"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Agent inbox routes: post, read (optionally long-polling), ack, and an
|
|
3
|
+
* owner-scoped summary of counts. Store semantics live in `agent-inbox.ts`.
|
|
4
|
+
*
|
|
5
|
+
* Who is calling decides what a read or an ack does, so it is resolved here and never
|
|
6
|
+
* taken from the body. `resolveParentSessionId()` reads the `X-Codeman-Parent-Session`
|
|
7
|
+
* header `codeman agent` sends on every request and accepts it only for a live session
|
|
8
|
+
* the caller can see that has the same owner as the receiver (exact id, or a unique
|
|
9
|
+
* prefix of at least 8). Anything else is "no session": a post is from the user, and a
|
|
10
|
+
* read is a peek. What that buys: in multi-user mode a caller cannot name another
|
|
11
|
+
* owner's session (an admin, who can see every session, can act as any session of
|
|
12
|
+
* the receiver's owner, as admins can everywhere else). In single-user mode every
|
|
13
|
+
* local process holds the same credentials, so the header is a hint the client sets
|
|
14
|
+
* about itself.
|
|
15
|
+
*
|
|
16
|
+
* - `POST /api/sessions/:id/inbox` stores a message. `from` is the resolved caller or
|
|
17
|
+
* null. A full inbox is 409 CONFLICT; the oldest message is never dropped.
|
|
18
|
+
* - `GET /api/sessions/:id/inbox[?wait=ms]` returns every pending message. Only the
|
|
19
|
+
* receiver's own read marks them seen. With `wait`, it parks while nothing is
|
|
20
|
+
* UNSEEN (a seen-but-unacked message does not end the wait, or a receiver holding
|
|
21
|
+
* one would spin).
|
|
22
|
+
* - `POST /api/sessions/:id/inbox/ack` removes messages by id, idempotently, and only
|
|
23
|
+
* for the receiver itself (403 otherwise).
|
|
24
|
+
* - `GET /api/agent-inbox/summary` reports `pending`, `unseen`, `oldestUnseenAt` and
|
|
25
|
+
* `parked` per session the caller can see. Counts only, never text, and kept out of
|
|
26
|
+
* `toState()` so a post does not fan out a `session:updated` to every browser.
|
|
27
|
+
*
|
|
28
|
+
* Nothing here writes to a pane.
|
|
29
|
+
*
|
|
30
|
+
* @module web/routes/inbox-routes
|
|
31
|
+
*/
|
|
32
|
+
import { ApiErrorCode, createErrorResponse } from '../../types.js';
|
|
33
|
+
import { InboxAckSchema, InboxPostSchema, InboxReadQuerySchema } from '../schemas.js';
|
|
34
|
+
import { abortOnClientHangUp, canAccessOwned, findSessionOrFail, getAuthUser, ownerFor, parseBody, resolveParentSessionId, waitCapacityResponse, } from '../route-helpers.js';
|
|
35
|
+
import { agentInbox, MAX_INBOX_BYTES, MAX_MESSAGE_BYTES, MAX_MESSAGES_PER_INBOX } from '../agent-inbox.js';
|
|
36
|
+
import { sessionWaits, WaitCapacityError } from '../session-wait-registry.js';
|
|
37
|
+
import { clampWaitMs } from '../../config/agent-wait.js';
|
|
38
|
+
export function registerInboxRoutes(app, ctx) {
|
|
39
|
+
/** The resolved caller is the receiving session itself. */
|
|
40
|
+
const callerIsReceiver = (req, id, owner) => resolveParentSessionId(ctx, req, undefined, owner) === id;
|
|
41
|
+
app.post('/api/sessions/:id/inbox', async (req) => {
|
|
42
|
+
const { id } = req.params;
|
|
43
|
+
const session = findSessionOrFail(ctx, id, req);
|
|
44
|
+
const { text } = parseBody(InboxPostSchema, req.body, 'Invalid inbox message');
|
|
45
|
+
const from = resolveParentSessionId(ctx, req, undefined, session.owner) ?? null;
|
|
46
|
+
const result = agentInbox.post(id, from, text);
|
|
47
|
+
if (!result.ok) {
|
|
48
|
+
switch (result.reason) {
|
|
49
|
+
case 'empty':
|
|
50
|
+
return createErrorResponse(ApiErrorCode.INVALID_INPUT, 'text must not be empty');
|
|
51
|
+
case 'message-too-large':
|
|
52
|
+
return createErrorResponse(ApiErrorCode.INVALID_INPUT, `Message is larger than ${MAX_MESSAGE_BYTES} bytes (UTF-8). Write it to a file in the workspace and post the path.`);
|
|
53
|
+
case 'inbox-full-count':
|
|
54
|
+
return createErrorResponse(ApiErrorCode.CONFLICT, `Inbox of ${id} is full (${MAX_MESSAGES_PER_INBOX} messages). Nothing was stored; the receiver has to ack before more can be posted.`);
|
|
55
|
+
case 'inbox-full-bytes':
|
|
56
|
+
return createErrorResponse(ApiErrorCode.CONFLICT, `Inbox of ${id} is full (${MAX_INBOX_BYTES} bytes of pending text). Nothing was stored; the receiver has to ack before more can be posted.`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// After the store, so a parked reader that wakes finds the message.
|
|
60
|
+
sessionWaits.notifyInbox(id);
|
|
61
|
+
return {
|
|
62
|
+
success: true,
|
|
63
|
+
data: { sessionId: id, message: result.message, pending: result.pending, unseen: result.unseen },
|
|
64
|
+
};
|
|
65
|
+
});
|
|
66
|
+
app.get('/api/sessions/:id/inbox', async (req, reply) => {
|
|
67
|
+
const { id } = req.params;
|
|
68
|
+
const session = findSessionOrFail(ctx, id, req);
|
|
69
|
+
const query = parseBody(InboxReadQuerySchema, req.query);
|
|
70
|
+
const receiver = callerIsReceiver(req, id, session.owner);
|
|
71
|
+
// A receiver loops on this URL with identical parameters; a cached 200 would turn
|
|
72
|
+
// the loop into a busy spin (same reason as GET …/wait).
|
|
73
|
+
reply.header('Cache-Control', 'no-store');
|
|
74
|
+
let wait;
|
|
75
|
+
if (query.wait !== undefined) {
|
|
76
|
+
const timeoutMs = clampWaitMs(query.wait);
|
|
77
|
+
if (agentInbox.unseenCount(id) > 0) {
|
|
78
|
+
wait = {
|
|
79
|
+
posted: false,
|
|
80
|
+
timedOut: false,
|
|
81
|
+
immediate: true,
|
|
82
|
+
ended: false,
|
|
83
|
+
aborted: false,
|
|
84
|
+
waitedMs: 0,
|
|
85
|
+
timeoutMs,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
const abort = abortOnClientHangUp(reply);
|
|
90
|
+
try {
|
|
91
|
+
wait = await sessionWaits.waitForInbox(id, {
|
|
92
|
+
timeoutMs,
|
|
93
|
+
owner: ownerFor(req),
|
|
94
|
+
abortSignal: abort.signal,
|
|
95
|
+
receiver,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
if (err instanceof WaitCapacityError)
|
|
100
|
+
return waitCapacityResponse(err);
|
|
101
|
+
throw err;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Read AFTER the wait: this is what the caller gets, so it must be current. A wait
|
|
106
|
+
// that ended because the session was deleted reads an empty inbox. A client that
|
|
107
|
+
// hung up never sees this answer, so its read must not mark anything seen.
|
|
108
|
+
const read = agentInbox.read(id, { receiver: receiver && !wait?.aborted });
|
|
109
|
+
return { success: true, data: { sessionId: id, receiver, ...read, ...(wait ? { wait } : {}) } };
|
|
110
|
+
});
|
|
111
|
+
app.post('/api/sessions/:id/inbox/ack', async (req) => {
|
|
112
|
+
const { id } = req.params;
|
|
113
|
+
const session = findSessionOrFail(ctx, id, req);
|
|
114
|
+
const { ids } = parseBody(InboxAckSchema, req.body);
|
|
115
|
+
if (!callerIsReceiver(req, id, session.owner)) {
|
|
116
|
+
// A no-op here would let a coordinator believe it cleared a worker's mail, and
|
|
117
|
+
// would hide a client that forgot the header. Refusing says both out loud.
|
|
118
|
+
return createErrorResponse(ApiErrorCode.FORBIDDEN, `Only ${id} itself can acknowledge its inbox (X-Codeman-Parent-Session must resolve to it). Reading as anyone else is a peek.`);
|
|
119
|
+
}
|
|
120
|
+
const removed = agentInbox.ack(id, ids);
|
|
121
|
+
return {
|
|
122
|
+
success: true,
|
|
123
|
+
data: { sessionId: id, removed, pending: agentInbox.pendingCount(id), unseen: agentInbox.unseenCount(id) },
|
|
124
|
+
};
|
|
125
|
+
});
|
|
126
|
+
app.get('/api/agent-inbox/summary', async (req, reply) => {
|
|
127
|
+
reply.header('Cache-Control', 'no-store');
|
|
128
|
+
const user = getAuthUser(req);
|
|
129
|
+
const counts = agentInbox.summary();
|
|
130
|
+
const sessions = {};
|
|
131
|
+
for (const session of ctx.sessions.values()) {
|
|
132
|
+
if (!canAccessOwned(user, session.owner))
|
|
133
|
+
continue;
|
|
134
|
+
const c = counts.get(session.id);
|
|
135
|
+
const parked = sessionWaits.inboxWaiterCount(session.id, true) > 0;
|
|
136
|
+
if (!c && !parked)
|
|
137
|
+
continue;
|
|
138
|
+
sessions[session.id] = {
|
|
139
|
+
pending: c?.pending ?? 0,
|
|
140
|
+
unseen: c?.unseen ?? 0,
|
|
141
|
+
oldestUnseenAt: c?.oldestUnseenAt ?? null,
|
|
142
|
+
parked,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
return { success: true, data: { sessions } };
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=inbox-routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbox-routes.js","sourceRoot":"","sources":["../../../src/web/routes/inbox-routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ export { registerCronRoutes } from './cron-routes.js';
|
|
|
11
11
|
export { registerSystemRoutes } from './system-routes.js';
|
|
12
12
|
export { registerHookEventRoutes } from './hook-event-routes.js';
|
|
13
13
|
export { registerApprovalRoutes } from './approval-routes.js';
|
|
14
|
+
export { registerInboxRoutes } from './inbox-routes.js';
|
|
14
15
|
export { registerRebootRestoreRoutes } from './reboot-restore-routes.js';
|
|
15
16
|
export { registerReadMyMindRoutes } from './readmymind-routes.js';
|
|
16
17
|
export { registerGitStatusRoutes } from './git-status-routes.js';
|
|
@@ -36,4 +37,5 @@ export { registerWebhookRoutes } from './webhook-routes.js';
|
|
|
36
37
|
export { registerDoctorRoutes } from './doctor-routes.js';
|
|
37
38
|
export { registerCustomModelRoutes, refreshAllCustomModelHosts, readCustomModelEndpointsEnabled, closeAllLlamaSwapLogTails, detectCustomModelSwapDisplacements, pruneIdleLlamaSwapLogTails, type CustomModelSessionLike, type CustomModelSwapDisplacement, } from './custom-model-routes.js';
|
|
38
39
|
export { registerCliRegistryRoutes, readCliManagementEnabled, type CliListItem } from './cli-registry-routes.js';
|
|
40
|
+
export { registerAgentSessionRoutes } from './agent-session-routes.js';
|
|
39
41
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/web/routes/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,+BAA+B,EAC/B,yBAAyB,EACzB,kCAAkC,EAClC,0BAA0B,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,GACjC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/web/routes/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,+BAA+B,EAC/B,yBAAyB,EACzB,kCAAkC,EAClC,0BAA0B,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,GACjC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEjH,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC"}
|
package/dist/web/routes/index.js
CHANGED
|
@@ -11,6 +11,7 @@ export { registerCronRoutes } from './cron-routes.js';
|
|
|
11
11
|
export { registerSystemRoutes } from './system-routes.js';
|
|
12
12
|
export { registerHookEventRoutes } from './hook-event-routes.js';
|
|
13
13
|
export { registerApprovalRoutes } from './approval-routes.js';
|
|
14
|
+
export { registerInboxRoutes } from './inbox-routes.js';
|
|
14
15
|
export { registerRebootRestoreRoutes } from './reboot-restore-routes.js';
|
|
15
16
|
export { registerReadMyMindRoutes } from './readmymind-routes.js';
|
|
16
17
|
export { registerGitStatusRoutes } from './git-status-routes.js';
|
|
@@ -36,4 +37,5 @@ export { registerWebhookRoutes } from './webhook-routes.js';
|
|
|
36
37
|
export { registerDoctorRoutes } from './doctor-routes.js';
|
|
37
38
|
export { registerCustomModelRoutes, refreshAllCustomModelHosts, readCustomModelEndpointsEnabled, closeAllLlamaSwapLogTails, detectCustomModelSwapDisplacements, pruneIdleLlamaSwapLogTails, } from './custom-model-routes.js';
|
|
38
39
|
export { registerCliRegistryRoutes, readCliManagementEnabled } from './cli-registry-routes.js';
|
|
40
|
+
export { registerAgentSessionRoutes } from './agent-session-routes.js';
|
|
39
41
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/web/routes/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,+BAA+B,EAC/B,yBAAyB,EACzB,kCAAkC,EAClC,0BAA0B,GAG3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAoB,MAAM,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/web/routes/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,+BAA+B,EAC/B,yBAAyB,EACzB,kCAAkC,EAClC,0BAA0B,GAG3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAoB,MAAM,0BAA0B,CAAC;AAEjH,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ralph-routes.d.ts","sourceRoot":"","sources":["../../../src/web/routes/ralph-routes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAyB1C,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEpG,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAClE,IAAI,
|
|
1
|
+
{"version":3,"file":"ralph-routes.d.ts","sourceRoot":"","sources":["../../../src/web/routes/ralph-routes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAyB1C,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEpG,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAClE,IAAI,CA4dN"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Ralph tracker config, circuit breaker, fix plan CRUD, ralph prompt writing,
|
|
4
4
|
* and the Ralph Loop start endpoint (autonomous task execution).
|
|
5
5
|
*/
|
|
6
|
-
import { join,
|
|
6
|
+
import { join, resolve, relative, isAbsolute } from 'node:path';
|
|
7
7
|
import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
8
8
|
import fs from 'node:fs/promises';
|
|
9
9
|
import { ApiErrorCode, createErrorResponse, getErrorMessage } from '../../types.js';
|
|
@@ -11,7 +11,8 @@ import { Session, isExternalCliMode } from '../../session.js';
|
|
|
11
11
|
import { RespawnController } from '../../respawn-controller.js';
|
|
12
12
|
import { RalphConfigSchema, FixPlanImportSchema, RalphPromptWriteSchema, RalphLoopStartSchema } from '../schemas.js';
|
|
13
13
|
import { SseEvent } from '../sse-events.js';
|
|
14
|
-
import { autoConfigureRalph, getAuthUser, isAdmin, ownerFor, resolveCasesDir, sessionCapacityMessage,
|
|
14
|
+
import { autoConfigureRalph, getAuthUser, isAdmin, ownerFor, resolveCasesDir, sessionCapacityMessage, findSessionOrFail, parseBody, } from '../route-helpers.js';
|
|
15
|
+
import { mutateSettingsFile } from '../settings-writer.js';
|
|
15
16
|
import { resolveClaudeModeForUsername } from '../../user-store.js';
|
|
16
17
|
import { writeHooksConfig, stripCaseEnvKeys } from '../../hooks-config.js';
|
|
17
18
|
import { generateClaudeMd } from '../../templates/claude-md.js';
|
|
@@ -388,21 +389,11 @@ export function registerRalphRoutes(app, ctx) {
|
|
|
388
389
|
// in single-user mode.
|
|
389
390
|
if (isAdmin(req)) {
|
|
390
391
|
try {
|
|
391
|
-
|
|
392
|
-
try {
|
|
393
|
-
settings = JSON.parse(await fs.readFile(SETTINGS_PATH, 'utf-8'));
|
|
394
|
-
}
|
|
395
|
-
catch {
|
|
396
|
-
/* ignore */
|
|
397
|
-
}
|
|
398
|
-
settings.lastUsedCase = caseName;
|
|
399
|
-
const dir = dirname(SETTINGS_PATH);
|
|
400
|
-
if (!existsSync(dir))
|
|
401
|
-
mkdirSync(dir, { recursive: true });
|
|
402
|
-
fs.writeFile(SETTINGS_PATH, JSON.stringify(settings, null, 2)).catch(() => { }); // Ignore - persisting lastUsedCase is non-critical
|
|
392
|
+
await mutateSettingsFile((settings) => ({ ...settings, lastUsedCase: caseName }));
|
|
403
393
|
}
|
|
404
|
-
catch {
|
|
405
|
-
|
|
394
|
+
catch (err) {
|
|
395
|
+
// Non-critical: the loop starts regardless.
|
|
396
|
+
console.warn('[Server] Failed to save settings (lastUsedCase):', getErrorMessage(err));
|
|
406
397
|
}
|
|
407
398
|
}
|
|
408
399
|
const sessionId = session.id;
|