@antelopejs/dms-ai 0.0.1
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/LICENSE +190 -0
- package/README.md +46 -0
- package/dist/builder/presence.d.ts +1 -0
- package/dist/builder/presence.js +22 -0
- package/dist/builder/presence.js.map +1 -0
- package/dist/constants/builder.d.ts +7 -0
- package/dist/constants/builder.js +11 -0
- package/dist/constants/builder.js.map +1 -0
- package/dist/constants/frontend-module.d.ts +3 -0
- package/dist/constants/frontend-module.js +7 -0
- package/dist/constants/frontend-module.js.map +1 -0
- package/dist/constants/logs.d.ts +3 -0
- package/dist/constants/logs.js +7 -0
- package/dist/constants/logs.js.map +1 -0
- package/dist/constants/module.d.ts +3 -0
- package/dist/constants/module.js +7 -0
- package/dist/constants/module.js.map +1 -0
- package/dist/constants/pages-registry.d.ts +2 -0
- package/dist/constants/pages-registry.js +6 -0
- package/dist/constants/pages-registry.js.map +1 -0
- package/dist/constants/sidecar.d.ts +24 -0
- package/dist/constants/sidecar.js +32 -0
- package/dist/constants/sidecar.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +41 -0
- package/dist/index.js.map +1 -0
- package/dist/lifecycle/module-roots.d.ts +1 -0
- package/dist/lifecycle/module-roots.js +52 -0
- package/dist/lifecycle/module-roots.js.map +1 -0
- package/dist/lifecycle/respawn-tracker.d.ts +5 -0
- package/dist/lifecycle/respawn-tracker.js +20 -0
- package/dist/lifecycle/respawn-tracker.js.map +1 -0
- package/dist/lifecycle/skill-sources.d.ts +5 -0
- package/dist/lifecycle/skill-sources.js +181 -0
- package/dist/lifecycle/skill-sources.js.map +1 -0
- package/dist/lifecycle/spawn-sidecar.d.ts +17 -0
- package/dist/lifecycle/spawn-sidecar.js +299 -0
- package/dist/lifecycle/spawn-sidecar.js.map +1 -0
- package/dist/logging/log-buffer.d.ts +9 -0
- package/dist/logging/log-buffer.js +76 -0
- package/dist/logging/log-buffer.js.map +1 -0
- package/dist/pages/activity/page.d.ts +10 -0
- package/dist/pages/activity/page.js +62 -0
- package/dist/pages/activity/page.js.map +1 -0
- package/dist/pages/all.d.ts +4 -0
- package/dist/pages/all.js +21 -0
- package/dist/pages/all.js.map +1 -0
- package/dist/pages/index.d.ts +4 -0
- package/dist/pages/index.js +21 -0
- package/dist/pages/index.js.map +1 -0
- package/dist/pages/module.d.ts +1 -0
- package/dist/pages/module.js +11 -0
- package/dist/pages/module.js.map +1 -0
- package/dist/pages/overview/page.d.ts +11 -0
- package/dist/pages/overview/page.js +82 -0
- package/dist/pages/overview/page.js.map +1 -0
- package/dist/pages/settings/page.d.ts +9 -0
- package/dist/pages/settings/page.js +29 -0
- package/dist/pages/settings/page.js.map +1 -0
- package/dist/pages/skills/page.d.ts +9 -0
- package/dist/pages/skills/page.js +29 -0
- package/dist/pages/skills/page.js.map +1 -0
- package/dist/pages-registry.d.ts +2 -0
- package/dist/pages-registry.js +41 -0
- package/dist/pages-registry.js.map +1 -0
- package/dist/routes/builder.d.ts +11 -0
- package/dist/routes/builder.js +135 -0
- package/dist/routes/builder.js.map +1 -0
- package/dist/routes/health.d.ts +8 -0
- package/dist/routes/health.js +27 -0
- package/dist/routes/health.js.map +1 -0
- package/dist/routes/index.d.ts +8 -0
- package/dist/routes/index.js +25 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/logs.d.ts +7 -0
- package/dist/routes/logs.js +51 -0
- package/dist/routes/logs.js.map +1 -0
- package/dist/routes/metrics.d.ts +54 -0
- package/dist/routes/metrics.js +104 -0
- package/dist/routes/metrics.js.map +1 -0
- package/dist/routes/pages-registry.d.ts +7 -0
- package/dist/routes/pages-registry.js +86 -0
- package/dist/routes/pages-registry.js.map +1 -0
- package/dist/routes/proxy.d.ts +4 -0
- package/dist/routes/proxy.js +55 -0
- package/dist/routes/proxy.js.map +1 -0
- package/dist/routes/settings.d.ts +13 -0
- package/dist/routes/settings.js +52 -0
- package/dist/routes/settings.js.map +1 -0
- package/dist/routes/sidecar-auth.d.ts +3 -0
- package/dist/routes/sidecar-auth.js +27 -0
- package/dist/routes/sidecar-auth.js.map +1 -0
- package/dist/routes/sidecar-info.d.ts +6 -0
- package/dist/routes/sidecar-info.js +39 -0
- package/dist/routes/sidecar-info.js.map +1 -0
- package/dist/routes/skills.d.ts +18 -0
- package/dist/routes/skills.js +33 -0
- package/dist/routes/skills.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +19 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/logs.d.ts +12 -0
- package/dist/types/logs.js +3 -0
- package/dist/types/logs.js.map +1 -0
- package/dist/types/pages-registry.d.ts +6 -0
- package/dist/types/pages-registry.js +3 -0
- package/dist/types/pages-registry.js.map +1 -0
- package/frontend-vue/.editorconfig +12 -0
- package/frontend-vue/app/components/ActivityView.vue +94 -0
- package/frontend-vue/app/components/SettingsView.vue +300 -0
- package/frontend-vue/app/components/SkillsView.vue +228 -0
- package/frontend-vue/app/plugins/ai.client.ts +109 -0
- package/frontend-vue/app/runtime/backoff.ts +30 -0
- package/frontend-vue/app/runtime/constants.ts +66 -0
- package/frontend-vue/app/runtime/current-page.ts +28 -0
- package/frontend-vue/app/runtime/header-action.ts +64 -0
- package/frontend-vue/app/runtime/host-commands.ts +127 -0
- package/frontend-vue/app/runtime/navigation-complete.ts +22 -0
- package/frontend-vue/app/runtime/overlay-prefs.ts +89 -0
- package/frontend-vue/app/runtime/overlay.ts +383 -0
- package/frontend-vue/app/runtime/shortcuts.ts +28 -0
- package/frontend-vue/app/runtime/sidecar-status.ts +163 -0
- package/frontend-vue/app/runtime/theme-bridge.ts +177 -0
- package/frontend-vue/app/runtime/ws-client.ts +196 -0
- package/frontend-vue/dms.frontend.ts +26 -0
- package/frontend-vue/eslint.config.mjs +24 -0
- package/frontend-vue/package.json +33 -0
- package/frontend-vue/pnpm-lock.yaml +2723 -0
- package/frontend-vue/tests/backoff.test.ts +44 -0
- package/frontend-vue/tests/host-commands.test.ts +142 -0
- package/frontend-vue/tests/navigation.test.ts +45 -0
- package/frontend-vue/tests/overlay-prefs.test.ts +91 -0
- package/frontend-vue/tests/sidecar-auth.test.ts +87 -0
- package/frontend-vue/tests/sidecar-guest.test.ts +45 -0
- package/frontend-vue/vitest.config.ts +8 -0
- package/package.json +79 -0
- package/sidecar/chatbox/dist/assets/index-Cy2BwTG0.js +50 -0
- package/sidecar/chatbox/dist/assets/index-pP_KOHIn.css +1 -0
- package/sidecar/chatbox/dist/index.html +13 -0
- package/sidecar/dist/agent/attachments.d.ts +8 -0
- package/sidecar/dist/agent/attachments.js +85 -0
- package/sidecar/dist/agent/attachments.js.map +1 -0
- package/sidecar/dist/agent/claude-runner.d.ts +33 -0
- package/sidecar/dist/agent/claude-runner.js +264 -0
- package/sidecar/dist/agent/claude-runner.js.map +1 -0
- package/sidecar/dist/agent/claude-session.d.ts +18 -0
- package/sidecar/dist/agent/claude-session.js +155 -0
- package/sidecar/dist/agent/claude-session.js.map +1 -0
- package/sidecar/dist/agent/edit-tracker.d.ts +9 -0
- package/sidecar/dist/agent/edit-tracker.js +34 -0
- package/sidecar/dist/agent/edit-tracker.js.map +1 -0
- package/sidecar/dist/agent/host-context.d.ts +4 -0
- package/sidecar/dist/agent/host-context.js +16 -0
- package/sidecar/dist/agent/host-context.js.map +1 -0
- package/sidecar/dist/agent/input-queue.d.ts +7 -0
- package/sidecar/dist/agent/input-queue.js +39 -0
- package/sidecar/dist/agent/input-queue.js.map +1 -0
- package/sidecar/dist/agent/permission-bus.d.ts +26 -0
- package/sidecar/dist/agent/permission-bus.js +138 -0
- package/sidecar/dist/agent/permission-bus.js.map +1 -0
- package/sidecar/dist/agent/question-bus.d.ts +22 -0
- package/sidecar/dist/agent/question-bus.js +91 -0
- package/sidecar/dist/agent/question-bus.js.map +1 -0
- package/sidecar/dist/agent/read-access.d.ts +2 -0
- package/sidecar/dist/agent/read-access.js +33 -0
- package/sidecar/dist/agent/read-access.js.map +1 -0
- package/sidecar/dist/agent/resolve-claude-binary.d.ts +1 -0
- package/sidecar/dist/agent/resolve-claude-binary.js +43 -0
- package/sidecar/dist/agent/resolve-claude-binary.js.map +1 -0
- package/sidecar/dist/agent/runner-events.d.ts +28 -0
- package/sidecar/dist/agent/runner-events.js +2 -0
- package/sidecar/dist/agent/runner-events.js.map +1 -0
- package/sidecar/dist/agent/sdk-adapter.d.ts +3 -0
- package/sidecar/dist/agent/sdk-adapter.js +106 -0
- package/sidecar/dist/agent/sdk-adapter.js.map +1 -0
- package/sidecar/dist/agent/sdk-loader.d.ts +5 -0
- package/sidecar/dist/agent/sdk-loader.js +14 -0
- package/sidecar/dist/agent/sdk-loader.js.map +1 -0
- package/sidecar/dist/agent/system-prompt.d.ts +6 -0
- package/sidecar/dist/agent/system-prompt.js +29 -0
- package/sidecar/dist/agent/system-prompt.js.map +1 -0
- package/sidecar/dist/agent/tool-summary.d.ts +1 -0
- package/sidecar/dist/agent/tool-summary.js +46 -0
- package/sidecar/dist/agent/tool-summary.js.map +1 -0
- package/sidecar/dist/agent/typecheck.d.ts +36 -0
- package/sidecar/dist/agent/typecheck.js +104 -0
- package/sidecar/dist/agent/typecheck.js.map +1 -0
- package/sidecar/dist/builder/builder-client.d.ts +10 -0
- package/sidecar/dist/builder/builder-client.js +52 -0
- package/sidecar/dist/builder/builder-client.js.map +1 -0
- package/sidecar/dist/builder/capability.d.ts +4 -0
- package/sidecar/dist/builder/capability.js +11 -0
- package/sidecar/dist/builder/capability.js.map +1 -0
- package/sidecar/dist/constants/agent.d.ts +25 -0
- package/sidecar/dist/constants/agent.js +25 -0
- package/sidecar/dist/constants/agent.js.map +1 -0
- package/sidecar/dist/constants/attachments.d.ts +7 -0
- package/sidecar/dist/constants/attachments.js +12 -0
- package/sidecar/dist/constants/attachments.js.map +1 -0
- package/sidecar/dist/constants/builder.d.ts +5 -0
- package/sidecar/dist/constants/builder.js +32 -0
- package/sidecar/dist/constants/builder.js.map +1 -0
- package/sidecar/dist/constants/daemon.d.ts +7 -0
- package/sidecar/dist/constants/daemon.js +8 -0
- package/sidecar/dist/constants/daemon.js.map +1 -0
- package/sidecar/dist/constants/env.d.ts +3 -0
- package/sidecar/dist/constants/env.js +4 -0
- package/sidecar/dist/constants/env.js.map +1 -0
- package/sidecar/dist/constants/host-state.d.ts +1 -0
- package/sidecar/dist/constants/host-state.js +2 -0
- package/sidecar/dist/constants/host-state.js.map +1 -0
- package/sidecar/dist/constants/http.d.ts +20 -0
- package/sidecar/dist/constants/http.js +31 -0
- package/sidecar/dist/constants/http.js.map +1 -0
- package/sidecar/dist/constants/logs.d.ts +11 -0
- package/sidecar/dist/constants/logs.js +16 -0
- package/sidecar/dist/constants/logs.js.map +1 -0
- package/sidecar/dist/constants/mcp.d.ts +24 -0
- package/sidecar/dist/constants/mcp.js +38 -0
- package/sidecar/dist/constants/mcp.js.map +1 -0
- package/sidecar/dist/constants/native-binary.d.ts +4 -0
- package/sidecar/dist/constants/native-binary.js +5 -0
- package/sidecar/dist/constants/native-binary.js.map +1 -0
- package/sidecar/dist/constants/pages.d.ts +16 -0
- package/sidecar/dist/constants/pages.js +24 -0
- package/sidecar/dist/constants/pages.js.map +1 -0
- package/sidecar/dist/constants/paths.d.ts +3 -0
- package/sidecar/dist/constants/paths.js +7 -0
- package/sidecar/dist/constants/paths.js.map +1 -0
- package/sidecar/dist/constants/permissions.d.ts +15 -0
- package/sidecar/dist/constants/permissions.js +15 -0
- package/sidecar/dist/constants/permissions.js.map +1 -0
- package/sidecar/dist/constants/ports.d.ts +3 -0
- package/sidecar/dist/constants/ports.js +4 -0
- package/sidecar/dist/constants/ports.js.map +1 -0
- package/sidecar/dist/constants/project.d.ts +8 -0
- package/sidecar/dist/constants/project.js +12 -0
- package/sidecar/dist/constants/project.js.map +1 -0
- package/sidecar/dist/constants/questions.d.ts +4 -0
- package/sidecar/dist/constants/questions.js +5 -0
- package/sidecar/dist/constants/questions.js.map +1 -0
- package/sidecar/dist/constants/read-access.d.ts +1 -0
- package/sidecar/dist/constants/read-access.js +8 -0
- package/sidecar/dist/constants/read-access.js.map +1 -0
- package/sidecar/dist/constants/safety-net.d.ts +5 -0
- package/sidecar/dist/constants/safety-net.js +6 -0
- package/sidecar/dist/constants/safety-net.js.map +1 -0
- package/sidecar/dist/constants/settings.d.ts +9 -0
- package/sidecar/dist/constants/settings.js +29 -0
- package/sidecar/dist/constants/settings.js.map +1 -0
- package/sidecar/dist/constants/state.d.ts +7 -0
- package/sidecar/dist/constants/state.js +7 -0
- package/sidecar/dist/constants/state.js.map +1 -0
- package/sidecar/dist/constants/timing.d.ts +1 -0
- package/sidecar/dist/constants/timing.js +2 -0
- package/sidecar/dist/constants/timing.js.map +1 -0
- package/sidecar/dist/constants/tool-summary.d.ts +20 -0
- package/sidecar/dist/constants/tool-summary.js +21 -0
- package/sidecar/dist/constants/tool-summary.js.map +1 -0
- package/sidecar/dist/constants/typecheck.d.ts +16 -0
- package/sidecar/dist/constants/typecheck.js +23 -0
- package/sidecar/dist/constants/typecheck.js.map +1 -0
- package/sidecar/dist/constants/ws.d.ts +5 -0
- package/sidecar/dist/constants/ws.js +6 -0
- package/sidecar/dist/constants/ws.js.map +1 -0
- package/sidecar/dist/host/project-info.d.ts +6 -0
- package/sidecar/dist/host/project-info.js +51 -0
- package/sidecar/dist/host/project-info.js.map +1 -0
- package/sidecar/dist/index.d.ts +3 -0
- package/sidecar/dist/index.js +280 -0
- package/sidecar/dist/index.js.map +1 -0
- package/sidecar/dist/logs/logs-client.d.ts +11 -0
- package/sidecar/dist/logs/logs-client.js +52 -0
- package/sidecar/dist/logs/logs-client.js.map +1 -0
- package/sidecar/dist/logs/types.d.ts +12 -0
- package/sidecar/dist/logs/types.js +2 -0
- package/sidecar/dist/logs/types.js.map +1 -0
- package/sidecar/dist/mcp/server.d.ts +2 -0
- package/sidecar/dist/mcp/server.js +50 -0
- package/sidecar/dist/mcp/server.js.map +1 -0
- package/sidecar/dist/mcp/tools/ask-user.d.ts +41 -0
- package/sidecar/dist/mcp/tools/ask-user.js +29 -0
- package/sidecar/dist/mcp/tools/ask-user.js.map +1 -0
- package/sidecar/dist/mcp/tools/builder.d.ts +259 -0
- package/sidecar/dist/mcp/tools/builder.js +216 -0
- package/sidecar/dist/mcp/tools/builder.js.map +1 -0
- package/sidecar/dist/mcp/tools/find-pages-using.d.ts +15 -0
- package/sidecar/dist/mcp/tools/find-pages-using.js +108 -0
- package/sidecar/dist/mcp/tools/find-pages-using.js.map +1 -0
- package/sidecar/dist/mcp/tools/get-current-page.d.ts +4 -0
- package/sidecar/dist/mcp/tools/get-current-page.js +12 -0
- package/sidecar/dist/mcp/tools/get-current-page.js.map +1 -0
- package/sidecar/dist/mcp/tools/list-pages.d.ts +8 -0
- package/sidecar/dist/mcp/tools/list-pages.js +29 -0
- package/sidecar/dist/mcp/tools/list-pages.js.map +1 -0
- package/sidecar/dist/mcp/tools/navigate-to-page.d.ts +14 -0
- package/sidecar/dist/mcp/tools/navigate-to-page.js +66 -0
- package/sidecar/dist/mcp/tools/navigate-to-page.js.map +1 -0
- package/sidecar/dist/mcp/tools/query-logs.d.ts +11 -0
- package/sidecar/dist/mcp/tools/query-logs.js +32 -0
- package/sidecar/dist/mcp/tools/query-logs.js.map +1 -0
- package/sidecar/dist/mcp/tools/typecheck.d.ts +9 -0
- package/sidecar/dist/mcp/tools/typecheck.js +20 -0
- package/sidecar/dist/mcp/tools/typecheck.js.map +1 -0
- package/sidecar/dist/mcp/types.d.ts +27 -0
- package/sidecar/dist/mcp/types.js +2 -0
- package/sidecar/dist/mcp/types.js.map +1 -0
- package/sidecar/dist/metrics/aggregate.d.ts +11 -0
- package/sidecar/dist/metrics/aggregate.js +189 -0
- package/sidecar/dist/metrics/aggregate.js.map +1 -0
- package/sidecar/dist/metrics/types.d.ts +53 -0
- package/sidecar/dist/metrics/types.js +8 -0
- package/sidecar/dist/metrics/types.js.map +1 -0
- package/sidecar/dist/pages/imports-scanner.d.ts +9 -0
- package/sidecar/dist/pages/imports-scanner.js +143 -0
- package/sidecar/dist/pages/imports-scanner.js.map +1 -0
- package/sidecar/dist/pages/registry-client.d.ts +15 -0
- package/sidecar/dist/pages/registry-client.js +83 -0
- package/sidecar/dist/pages/registry-client.js.map +1 -0
- package/sidecar/dist/pages/route-match.d.ts +2 -0
- package/sidecar/dist/pages/route-match.js +10 -0
- package/sidecar/dist/pages/route-match.js.map +1 -0
- package/sidecar/dist/pages/types.d.ts +11 -0
- package/sidecar/dist/pages/types.js +2 -0
- package/sidecar/dist/pages/types.js.map +1 -0
- package/sidecar/dist/prompts/agent.d.ts +3 -0
- package/sidecar/dist/prompts/agent.js +40 -0
- package/sidecar/dist/prompts/agent.js.map +1 -0
- package/sidecar/dist/prompts/builder.d.ts +3 -0
- package/sidecar/dist/prompts/builder.js +4 -0
- package/sidecar/dist/prompts/builder.js.map +1 -0
- package/sidecar/dist/protocol/events.d.ts +1050 -0
- package/sidecar/dist/protocol/events.js +154 -0
- package/sidecar/dist/protocol/events.js.map +1 -0
- package/sidecar/dist/protocol/messages.d.ts +644 -0
- package/sidecar/dist/protocol/messages.js +139 -0
- package/sidecar/dist/protocol/messages.js.map +1 -0
- package/sidecar/dist/server/client-auth.d.ts +2 -0
- package/sidecar/dist/server/client-auth.js +25 -0
- package/sidecar/dist/server/client-auth.js.map +1 -0
- package/sidecar/dist/server/host-socket-registry.d.ts +9 -0
- package/sidecar/dist/server/host-socket-registry.js +42 -0
- package/sidecar/dist/server/host-socket-registry.js.map +1 -0
- package/sidecar/dist/server/http.d.ts +25 -0
- package/sidecar/dist/server/http.js +263 -0
- package/sidecar/dist/server/http.js.map +1 -0
- package/sidecar/dist/server/idle-shutdown.d.ts +10 -0
- package/sidecar/dist/server/idle-shutdown.js +35 -0
- package/sidecar/dist/server/idle-shutdown.js.map +1 -0
- package/sidecar/dist/server/iframe-socket-registry.d.ts +10 -0
- package/sidecar/dist/server/iframe-socket-registry.js +57 -0
- package/sidecar/dist/server/iframe-socket-registry.js.map +1 -0
- package/sidecar/dist/server/live-turns.d.ts +8 -0
- package/sidecar/dist/server/live-turns.js +16 -0
- package/sidecar/dist/server/live-turns.js.map +1 -0
- package/sidecar/dist/server/navigation-completer.d.ts +5 -0
- package/sidecar/dist/server/navigation-completer.js +49 -0
- package/sidecar/dist/server/navigation-completer.js.map +1 -0
- package/sidecar/dist/server/pending-queue.d.ts +11 -0
- package/sidecar/dist/server/pending-queue.js +54 -0
- package/sidecar/dist/server/pending-queue.js.map +1 -0
- package/sidecar/dist/server/raw-data.d.ts +2 -0
- package/sidecar/dist/server/raw-data.js +13 -0
- package/sidecar/dist/server/raw-data.js.map +1 -0
- package/sidecar/dist/server/routing.d.ts +64 -0
- package/sidecar/dist/server/routing.js +571 -0
- package/sidecar/dist/server/routing.js.map +1 -0
- package/sidecar/dist/server/safety-net.d.ts +16 -0
- package/sidecar/dist/server/safety-net.js +76 -0
- package/sidecar/dist/server/safety-net.js.map +1 -0
- package/sidecar/dist/server/ws.d.ts +33 -0
- package/sidecar/dist/server/ws.js +182 -0
- package/sidecar/dist/server/ws.js.map +1 -0
- package/sidecar/dist/skills/build-catalog.d.ts +15 -0
- package/sidecar/dist/skills/build-catalog.js +39 -0
- package/sidecar/dist/skills/build-catalog.js.map +1 -0
- package/sidecar/dist/skills/frontmatter.d.ts +9 -0
- package/sidecar/dist/skills/frontmatter.js +50 -0
- package/sidecar/dist/skills/frontmatter.js.map +1 -0
- package/sidecar/dist/skills/plugin-wrapper.d.ts +6 -0
- package/sidecar/dist/skills/plugin-wrapper.js +37 -0
- package/sidecar/dist/skills/plugin-wrapper.js.map +1 -0
- package/sidecar/dist/skills/resolve-sources.d.ts +3 -0
- package/sidecar/dist/skills/resolve-sources.js +14 -0
- package/sidecar/dist/skills/resolve-sources.js.map +1 -0
- package/sidecar/dist/skills/types.d.ts +4 -0
- package/sidecar/dist/skills/types.js +2 -0
- package/sidecar/dist/skills/types.js.map +1 -0
- package/sidecar/dist/state/conversations.d.ts +20 -0
- package/sidecar/dist/state/conversations.js +93 -0
- package/sidecar/dist/state/conversations.js.map +1 -0
- package/sidecar/dist/state/host-state.d.ts +10 -0
- package/sidecar/dist/state/host-state.js +14 -0
- package/sidecar/dist/state/host-state.js.map +1 -0
- package/sidecar/dist/state/lock.d.ts +12 -0
- package/sidecar/dist/state/lock.js +43 -0
- package/sidecar/dist/state/lock.js.map +1 -0
- package/sidecar/dist/state/settings-store.d.ts +12 -0
- package/sidecar/dist/state/settings-store.js +82 -0
- package/sidecar/dist/state/settings-store.js.map +1 -0
- package/sidecar/dist/state/settings-types.d.ts +12 -0
- package/sidecar/dist/state/settings-types.js +4 -0
- package/sidecar/dist/state/settings-types.js.map +1 -0
- package/sidecar/dist/state/sidecar-version.d.ts +1 -0
- package/sidecar/dist/state/sidecar-version.js +14 -0
- package/sidecar/dist/state/sidecar-version.js.map +1 -0
- package/sidecar/dist/state/store.d.ts +11 -0
- package/sidecar/dist/state/store.js +89 -0
- package/sidecar/dist/state/store.js.map +1 -0
- package/sidecar/dist/state/types.d.ts +36 -0
- package/sidecar/dist/state/types.js +10 -0
- package/sidecar/dist/state/types.js.map +1 -0
- package/sidecar/package.json +42 -0
- package/skills/dms-builder-page/SKILL.md +80 -0
- package/skills/dms-builder-safe/REFERENCE.md +111 -0
- package/skills/dms-builder-safe/SKILL.md +118 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversations.js","sourceRoot":"","sources":["../../src/state/conversations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { UNKNOWN_PAGE_PATH } from "../constants/host-state.js";
|
|
2
|
+
function buildUnknownPage() {
|
|
3
|
+
return { path: UNKNOWN_PAGE_PATH };
|
|
4
|
+
}
|
|
5
|
+
export function createHostState() {
|
|
6
|
+
let currentPage = buildUnknownPage();
|
|
7
|
+
return {
|
|
8
|
+
getCurrentPage: () => currentPage,
|
|
9
|
+
setCurrentPage: (page) => {
|
|
10
|
+
currentPage = page;
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=host-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-state.js","sourceRoot":"","sources":["../../src/state/host-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAa/D,SAAS,gBAAgB;IACvB,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,IAAI,WAAW,GAAgB,gBAAgB,EAAE,CAAC;IAClD,OAAO;QACL,cAAc,EAAE,GAAG,EAAE,CAAC,WAAW;QACjC,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE;YACvB,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface SidecarLock {
|
|
2
|
+
port: number;
|
|
3
|
+
pid: number;
|
|
4
|
+
version: string;
|
|
5
|
+
buildId: string;
|
|
6
|
+
startedAt: number;
|
|
7
|
+
token: string;
|
|
8
|
+
clientToken: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function buildLockPath(root: string): string;
|
|
11
|
+
export declare function writeLock(root: string, lock: SidecarLock): Promise<void>;
|
|
12
|
+
export declare function removeLock(root: string, ownerPid?: number): Promise<void>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { mkdir, open, readFile, rename, rm } from "node:fs/promises";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { SIDECAR_LOCK_FILE_NAME, SIDECAR_LOCK_TEMP_SUFFIX, } from "../constants/daemon.js";
|
|
4
|
+
import { STATE_DIR_SEGMENTS } from "../constants/paths.js";
|
|
5
|
+
const PRIVATE_DIRECTORY_MODE = 0o700;
|
|
6
|
+
const PRIVATE_FILE_MODE = 0o600;
|
|
7
|
+
export function buildLockPath(root) {
|
|
8
|
+
return join(root, ...STATE_DIR_SEGMENTS, SIDECAR_LOCK_FILE_NAME);
|
|
9
|
+
}
|
|
10
|
+
export async function writeLock(root, lock) {
|
|
11
|
+
const lockPath = buildLockPath(root);
|
|
12
|
+
await mkdir(dirname(lockPath), {
|
|
13
|
+
recursive: true,
|
|
14
|
+
mode: PRIVATE_DIRECTORY_MODE,
|
|
15
|
+
});
|
|
16
|
+
const tempPath = `${lockPath}${SIDECAR_LOCK_TEMP_SUFFIX}`;
|
|
17
|
+
const file = await open(tempPath, "w", PRIVATE_FILE_MODE);
|
|
18
|
+
try {
|
|
19
|
+
await file.chmod(PRIVATE_FILE_MODE);
|
|
20
|
+
await file.writeFile(JSON.stringify(lock), "utf8");
|
|
21
|
+
}
|
|
22
|
+
finally {
|
|
23
|
+
await file.close();
|
|
24
|
+
}
|
|
25
|
+
await rename(tempPath, lockPath);
|
|
26
|
+
}
|
|
27
|
+
async function readLockPid(lockPath) {
|
|
28
|
+
try {
|
|
29
|
+
const parsed = JSON.parse(await readFile(lockPath, "utf8"));
|
|
30
|
+
return typeof parsed.pid === "number" ? parsed.pid : null;
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export async function removeLock(root, ownerPid = process.pid) {
|
|
37
|
+
const lockPath = buildLockPath(root);
|
|
38
|
+
const pid = await readLockPid(lockPath);
|
|
39
|
+
if (pid !== null && pid !== ownerPid)
|
|
40
|
+
return;
|
|
41
|
+
await rm(lockPath).catch(() => undefined);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=lock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/state/lock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAY3D,MAAM,sBAAsB,GAAG,KAAK,CAAC;AACrC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEhC,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,kBAAkB,EAAE,sBAAsB,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAY,EACZ,IAAiB;IAEjB,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAC7B,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,sBAAsB;KAC7B,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,GAAG,QAAQ,GAAG,wBAAwB,EAAE,CAAC;IAC1D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;YAAS,CAAC;QACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IACD,MAAM,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,QAAgB;IACzC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAEzD,CAAC;QACF,OAAO,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAID,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAY,EACZ,WAAmB,OAAO,CAAC,GAAG;IAE9B,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,QAAQ;QAAE,OAAO;IAC7C,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type AppSettings } from "./settings-types.js";
|
|
2
|
+
export interface CreateSettingsStoreOptions {
|
|
3
|
+
filePath: string;
|
|
4
|
+
}
|
|
5
|
+
export interface SettingsStore {
|
|
6
|
+
get(): AppSettings;
|
|
7
|
+
set(next: AppSettings): void;
|
|
8
|
+
load(): Promise<void>;
|
|
9
|
+
flush(): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export declare function parseSettings(raw: string): AppSettings;
|
|
12
|
+
export declare function createSettingsStore(options: CreateSettingsStoreOptions): SettingsStore;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
import { DEFAULT_SETTINGS, SETTINGS_LOG_PREFIX, } from "../constants/settings.js";
|
|
4
|
+
import { STATE_FILE_ENCODING, STATE_JSON_INDENT } from "../constants/state.js";
|
|
5
|
+
import { CHATBOX_MODES, GENERATION_MODES, THINKING_LEVELS, } from "./settings-types.js";
|
|
6
|
+
function isMode(value) {
|
|
7
|
+
return CHATBOX_MODES.includes(value);
|
|
8
|
+
}
|
|
9
|
+
function isThinking(value) {
|
|
10
|
+
return THINKING_LEVELS.includes(value);
|
|
11
|
+
}
|
|
12
|
+
function isGenerationMode(value) {
|
|
13
|
+
return GENERATION_MODES.includes(value);
|
|
14
|
+
}
|
|
15
|
+
export function parseSettings(raw) {
|
|
16
|
+
try {
|
|
17
|
+
const parsed = JSON.parse(raw);
|
|
18
|
+
if (parsed === null || typeof parsed !== "object")
|
|
19
|
+
return DEFAULT_SETTINGS;
|
|
20
|
+
const candidate = parsed;
|
|
21
|
+
return {
|
|
22
|
+
mode: isMode(candidate.mode) ? candidate.mode : DEFAULT_SETTINGS.mode,
|
|
23
|
+
thinking: isThinking(candidate.thinking)
|
|
24
|
+
? candidate.thinking
|
|
25
|
+
: DEFAULT_SETTINGS.thinking,
|
|
26
|
+
generationMode: isGenerationMode(candidate.generationMode)
|
|
27
|
+
? candidate.generationMode
|
|
28
|
+
: DEFAULT_SETTINGS.generationMode,
|
|
29
|
+
allowLocalSkills: typeof candidate.allowLocalSkills === "boolean"
|
|
30
|
+
? candidate.allowLocalSkills
|
|
31
|
+
: DEFAULT_SETTINGS.allowLocalSkills,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return DEFAULT_SETTINGS;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
async function readSettings(filePath) {
|
|
39
|
+
try {
|
|
40
|
+
const raw = await readFile(filePath, STATE_FILE_ENCODING);
|
|
41
|
+
return parseSettings(raw);
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
const isMissing = err instanceof Error && err.code === "ENOENT";
|
|
45
|
+
if (isMissing)
|
|
46
|
+
return DEFAULT_SETTINGS;
|
|
47
|
+
console.warn(`${SETTINGS_LOG_PREFIX} read failed: ${String(err)}`);
|
|
48
|
+
return DEFAULT_SETTINGS;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
async function persistSettings(filePath, settings) {
|
|
52
|
+
await mkdir(dirname(filePath), { recursive: true });
|
|
53
|
+
const json = JSON.stringify(settings, null, STATE_JSON_INDENT);
|
|
54
|
+
await writeFile(filePath, json, STATE_FILE_ENCODING);
|
|
55
|
+
}
|
|
56
|
+
function writeSettings(state) {
|
|
57
|
+
state.inflight = persistSettings(state.filePath, state.current).catch((err) => {
|
|
58
|
+
console.warn(`${SETTINGS_LOG_PREFIX} write failed: ${String(err)}`);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
export function createSettingsStore(options) {
|
|
62
|
+
const state = {
|
|
63
|
+
filePath: options.filePath,
|
|
64
|
+
current: DEFAULT_SETTINGS,
|
|
65
|
+
inflight: null,
|
|
66
|
+
};
|
|
67
|
+
return {
|
|
68
|
+
get: () => state.current,
|
|
69
|
+
set: (next) => {
|
|
70
|
+
state.current = next;
|
|
71
|
+
writeSettings(state);
|
|
72
|
+
},
|
|
73
|
+
load: async () => {
|
|
74
|
+
state.current = await readSettings(state.filePath);
|
|
75
|
+
},
|
|
76
|
+
flush: async () => {
|
|
77
|
+
if (state.inflight !== null)
|
|
78
|
+
await state.inflight;
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=settings-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-store.js","sourceRoot":"","sources":["../../src/state/settings-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const CHATBOX_MODES: readonly ["normal", "acceptEdits", "plan", "auto"];
|
|
2
|
+
export type ChatboxMode = (typeof CHATBOX_MODES)[number];
|
|
3
|
+
export declare const THINKING_LEVELS: readonly ["off", "low", "medium", "high"];
|
|
4
|
+
export type ThinkingLevel = (typeof THINKING_LEVELS)[number];
|
|
5
|
+
export declare const GENERATION_MODES: readonly ["safe", "vibe"];
|
|
6
|
+
export type GenerationMode = (typeof GENERATION_MODES)[number];
|
|
7
|
+
export interface AppSettings {
|
|
8
|
+
mode: ChatboxMode;
|
|
9
|
+
thinking: ThinkingLevel;
|
|
10
|
+
generationMode: GenerationMode;
|
|
11
|
+
allowLocalSkills: boolean;
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-types.js","sourceRoot":"","sources":["../../src/state/settings-types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAU,CAAC;AAGhF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAMzE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function readSidecarVersion(): Promise<string>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { SIDECAR_PACKAGE_JSON } from "../constants/paths.js";
|
|
3
|
+
const FALLBACK_VERSION = "0.0.0";
|
|
4
|
+
export async function readSidecarVersion() {
|
|
5
|
+
try {
|
|
6
|
+
const raw = await readFile(SIDECAR_PACKAGE_JSON, "utf8");
|
|
7
|
+
const parsed = JSON.parse(raw);
|
|
8
|
+
return parsed.version ?? FALLBACK_VERSION;
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return FALLBACK_VERSION;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=sidecar-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidecar-version.js","sourceRoot":"","sources":["../../src/state/sidecar-version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAEjC,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAyB,CAAC;QACvD,OAAO,MAAM,CAAC,OAAO,IAAI,gBAAgB,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,gBAAgB,CAAC;IAC1B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { StoredState } from "./types.js";
|
|
2
|
+
export interface CreateStoreOptions {
|
|
3
|
+
filePath: string;
|
|
4
|
+
debounceMs?: number;
|
|
5
|
+
}
|
|
6
|
+
export interface Store {
|
|
7
|
+
read(): Promise<StoredState>;
|
|
8
|
+
write(state: StoredState): void;
|
|
9
|
+
flush(): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export declare function createStore(options: CreateStoreOptions): Store;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
import { STATE_DEBOUNCE_MS, STATE_FILE_ENCODING, STATE_INITIAL, STATE_JSON_INDENT, STATE_LOG_PREFIX, } from "../constants/state.js";
|
|
4
|
+
function parseStateContents(raw) {
|
|
5
|
+
try {
|
|
6
|
+
const parsed = JSON.parse(raw);
|
|
7
|
+
if (parsed === null || typeof parsed !== "object")
|
|
8
|
+
return STATE_INITIAL;
|
|
9
|
+
const candidate = parsed;
|
|
10
|
+
if (candidate.conversations === undefined ||
|
|
11
|
+
typeof candidate.conversations !== "object") {
|
|
12
|
+
return STATE_INITIAL;
|
|
13
|
+
}
|
|
14
|
+
return { conversations: candidate.conversations };
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return STATE_INITIAL;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
async function readState(filePath) {
|
|
21
|
+
try {
|
|
22
|
+
const raw = await readFile(filePath, STATE_FILE_ENCODING);
|
|
23
|
+
return parseStateContents(raw);
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
const isMissing = err instanceof Error && err.code === "ENOENT";
|
|
27
|
+
if (isMissing)
|
|
28
|
+
return STATE_INITIAL;
|
|
29
|
+
console.warn(`${STATE_LOG_PREFIX} read failed: ${String(err)}`);
|
|
30
|
+
return STATE_INITIAL;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
async function persistState(filePath, state) {
|
|
34
|
+
await mkdir(dirname(filePath), { recursive: true });
|
|
35
|
+
const json = JSON.stringify(state, null, STATE_JSON_INDENT);
|
|
36
|
+
await writeFile(filePath, json, STATE_FILE_ENCODING);
|
|
37
|
+
}
|
|
38
|
+
function clearTimer(state) {
|
|
39
|
+
if (state.timer === null)
|
|
40
|
+
return;
|
|
41
|
+
clearTimeout(state.timer);
|
|
42
|
+
state.timer = null;
|
|
43
|
+
}
|
|
44
|
+
async function drainPending(state) {
|
|
45
|
+
const next = state.pending;
|
|
46
|
+
if (next === null)
|
|
47
|
+
return;
|
|
48
|
+
state.pending = null;
|
|
49
|
+
try {
|
|
50
|
+
await persistState(state.filePath, next);
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
console.warn(`${STATE_LOG_PREFIX} write failed: ${String(err)}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function scheduleWrite(state) {
|
|
57
|
+
clearTimer(state);
|
|
58
|
+
state.timer = setTimeout(() => {
|
|
59
|
+
state.timer = null;
|
|
60
|
+
state.inflight = drainPending(state);
|
|
61
|
+
}, state.debounceMs);
|
|
62
|
+
}
|
|
63
|
+
function enqueueWrite(state, next) {
|
|
64
|
+
state.pending = next;
|
|
65
|
+
scheduleWrite(state);
|
|
66
|
+
}
|
|
67
|
+
async function flushStore(state) {
|
|
68
|
+
clearTimer(state);
|
|
69
|
+
if (state.inflight !== null)
|
|
70
|
+
await state.inflight;
|
|
71
|
+
state.inflight = drainPending(state);
|
|
72
|
+
await state.inflight;
|
|
73
|
+
state.inflight = null;
|
|
74
|
+
}
|
|
75
|
+
export function createStore(options) {
|
|
76
|
+
const state = {
|
|
77
|
+
filePath: options.filePath,
|
|
78
|
+
debounceMs: options.debounceMs ?? STATE_DEBOUNCE_MS,
|
|
79
|
+
pending: null,
|
|
80
|
+
timer: null,
|
|
81
|
+
inflight: null,
|
|
82
|
+
};
|
|
83
|
+
return {
|
|
84
|
+
read: () => readState(state.filePath),
|
|
85
|
+
write: (next) => enqueueWrite(state, next),
|
|
86
|
+
flush: () => flushStore(state),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/state/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export declare const STORED_MESSAGE_ROLES: readonly ["user", "assistant", "tool_use", "tool_result", "permission"];
|
|
2
|
+
export type StoredMessageRole = (typeof STORED_MESSAGE_ROLES)[number];
|
|
3
|
+
export declare const STORED_MESSAGE_STATUSES: readonly ["success", "error"];
|
|
4
|
+
export type StoredMessageStatus = (typeof STORED_MESSAGE_STATUSES)[number];
|
|
5
|
+
export declare const STORED_PERMISSION_DECISIONS: readonly ["approved", "denied"];
|
|
6
|
+
export type StoredPermissionDecision = (typeof STORED_PERMISSION_DECISIONS)[number];
|
|
7
|
+
export interface StoredAttachmentMeta {
|
|
8
|
+
name: string;
|
|
9
|
+
mimeType: string;
|
|
10
|
+
size: number;
|
|
11
|
+
}
|
|
12
|
+
export interface StoredMessage {
|
|
13
|
+
role: StoredMessageRole;
|
|
14
|
+
content: string;
|
|
15
|
+
toolName?: string;
|
|
16
|
+
callId?: string;
|
|
17
|
+
status?: StoredMessageStatus;
|
|
18
|
+
decision?: StoredPermissionDecision;
|
|
19
|
+
attachments?: StoredAttachmentMeta[];
|
|
20
|
+
timestampMs: number;
|
|
21
|
+
}
|
|
22
|
+
export interface StoredConversation {
|
|
23
|
+
messages: StoredMessage[];
|
|
24
|
+
createdAtMs: number;
|
|
25
|
+
updatedAtMs: number;
|
|
26
|
+
}
|
|
27
|
+
export interface StoredState {
|
|
28
|
+
conversations: Record<string, StoredConversation>;
|
|
29
|
+
}
|
|
30
|
+
export interface ConversationSummary {
|
|
31
|
+
id: string;
|
|
32
|
+
title: string;
|
|
33
|
+
createdAtMs: number;
|
|
34
|
+
updatedAtMs: number;
|
|
35
|
+
messageCount: number;
|
|
36
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export const STORED_MESSAGE_ROLES = [
|
|
2
|
+
"user",
|
|
3
|
+
"assistant",
|
|
4
|
+
"tool_use",
|
|
5
|
+
"tool_result",
|
|
6
|
+
"permission",
|
|
7
|
+
];
|
|
8
|
+
export const STORED_MESSAGE_STATUSES = ["success", "error"];
|
|
9
|
+
export const STORED_PERMISSION_DECISIONS = ["approved", "denied"];
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/state/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,MAAM;IACN,WAAW;IACX,UAAU;IACV,aAAa;IAIb,YAAY;CACJ,CAAC;AAIX,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,SAAS,EAAE,OAAO,CAAU,CAAC;AAMrE,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAU,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@antelopejs/dms-ai-sidecar",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"private": true,
|
|
5
|
+
"bin": {
|
|
6
|
+
"dms-ai-sidecar": "dist/index.js"
|
|
7
|
+
},
|
|
8
|
+
"type": "module",
|
|
9
|
+
"main": "dist/index.js",
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "rimraf dist && tsc",
|
|
12
|
+
"build:chatbox": "cd chatbox && pnpm install && pnpm build",
|
|
13
|
+
"build:all": "pnpm build && pnpm build:chatbox",
|
|
14
|
+
"dev": "tsc -w",
|
|
15
|
+
"typecheck": "tsc --noEmit && tsc -p tsconfig.test.json && cd chatbox && pnpm typecheck",
|
|
16
|
+
"lint": "oxlint && oxfmt --check . && cd chatbox && pnpm lint",
|
|
17
|
+
"lint:fix": "oxlint --fix --max-warnings=1000000 && oxfmt . && cd chatbox && pnpm lint:fix",
|
|
18
|
+
"test": "vitest run --passWithNoTests",
|
|
19
|
+
"test:e2e": "echo 'no e2e yet' && exit 0",
|
|
20
|
+
"format": "oxfmt .",
|
|
21
|
+
"knip": "knip --dependencies",
|
|
22
|
+
"knip:all": "knip"
|
|
23
|
+
},
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"@anthropic-ai/claude-agent-sdk": "^0.2.131",
|
|
26
|
+
"@anthropic-ai/claude-code": "^2.1.131",
|
|
27
|
+
"ws": "^8.18.0",
|
|
28
|
+
"zod": "^3.23.8"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@antelopejs/tooling-configs": "^0.0.4",
|
|
32
|
+
"@types/node": "^22.19.15",
|
|
33
|
+
"@types/ws": "^8.5.12",
|
|
34
|
+
"knip": "^6.34.0",
|
|
35
|
+
"oxfmt": "^0.66.0",
|
|
36
|
+
"oxlint": "1.81.0",
|
|
37
|
+
"oxlint-tsgolint": "^7.0.2001",
|
|
38
|
+
"rimraf": "^6.1.3",
|
|
39
|
+
"typescript": "^5.9.3",
|
|
40
|
+
"vitest": "^3.2.4"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dms-builder-page
|
|
3
|
+
description: Builds or modifies an AntelopeJS DMS admin page (dashboard screen). Use when the user wants to add, edit, or compose an admin page, dashboard, table, form, or chart in a dms-* module.
|
|
4
|
+
icon: i-ph-layout
|
|
5
|
+
category: Builder
|
|
6
|
+
tags: [Pages, Dashboard, DMS]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Building an AntelopeJS DMS admin page
|
|
10
|
+
|
|
11
|
+
Use this when adding or reshaping an admin page (a dashboard screen) in a DMS
|
|
12
|
+
module. A page is a `@RegisterPage()` controller composed of DMS components bound
|
|
13
|
+
to backend routes.
|
|
14
|
+
|
|
15
|
+
## Workflow
|
|
16
|
+
|
|
17
|
+
1. **Locate the module.** Pages belong to a module registered with
|
|
18
|
+
`RegisterModule({ id, title, description, icon, landingPage })`. Find the existing
|
|
19
|
+
`pages/module.ts` and the `pages/all.ts` barrel — every page file must be
|
|
20
|
+
re-exported from `all.ts` or it will not load.
|
|
21
|
+
|
|
22
|
+
2. **Declare the page.** Create `pages/<name>/page.ts`:
|
|
23
|
+
```ts
|
|
24
|
+
@RegisterPage()
|
|
25
|
+
export class MyPage extends PageController(
|
|
26
|
+
"<slug>",
|
|
27
|
+
{ displayName, description, icon, module: "<moduleId>", order: <n> },
|
|
28
|
+
DefaultLayout({ fullWidth: true }),
|
|
29
|
+
) {
|
|
30
|
+
static content = /* components */;
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
`order` controls sidebar position. Keep one page per file.
|
|
34
|
+
|
|
35
|
+
3. **Compose with shared components, not raw HTML.** Build the screen from the
|
|
36
|
+
dms-base components (`KpiCard`, `ChartCard`, `TopListCard`, `TableView`,
|
|
37
|
+
`Form`, `PeriodSelector`, `Grid`/`GridRow`). Lay them out with
|
|
38
|
+
`Grid({ gap }).child(...)`.
|
|
39
|
+
|
|
40
|
+
4. **Bind to data via `fetchUrl`.** Components fetch from backend routes
|
|
41
|
+
(e.g. `fetchUrl: "/<module>/metrics/kpi/actions"`). Each route is a
|
|
42
|
+
`Controller` method that returns the payload shape the component expects —
|
|
43
|
+
a `KpiCard` reads `{ value: number }`. Add the route alongside the existing
|
|
44
|
+
ones and register it in the routes barrel.
|
|
45
|
+
To make cards period-aware, declare one `PeriodSelector({ id })` and give each
|
|
46
|
+
card `periodScope: <that id>`; the components then append `from`/`to`/
|
|
47
|
+
`compareFrom`/`compareTo` query params to `fetchUrl`.
|
|
48
|
+
|
|
49
|
+
An aggregate route can live **on the page controller itself**, which is
|
|
50
|
+
simpler than a separate controller and inherits the page's auth gate for free:
|
|
51
|
+
a `@Get("/stats/…")` method taking `@Model(XModel)` and returning
|
|
52
|
+
`{ value: await model.someCount() }`. If the data comes from a builder-managed
|
|
53
|
+
resource, prefer generating it — `BuilderAddQuery` emits exactly that shape and
|
|
54
|
+
keeps the AQL chain typechecked. The Builder recognizes a query by its shape
|
|
55
|
+
alone (a scalar route over a resource model calling a `this.table…` chain), so
|
|
56
|
+
a hand-written route matching that grammar is picked up and editable just like
|
|
57
|
+
a generated one — there is no marker. To keep a hand-written aggregate off the
|
|
58
|
+
Builder's radar, write it **outside** the chain grammar (compute via an
|
|
59
|
+
intermediate variable or a helper), and it reads back as `opaque`.
|
|
60
|
+
|
|
61
|
+
5. **Read before you write.** Model new components on the closest existing page
|
|
62
|
+
in the same module and copy its option shape exactly — the component option
|
|
63
|
+
contracts live in `node_modules/@antelopejs/interface-dms`.
|
|
64
|
+
|
|
65
|
+
6. **Typecheck before declaring done.** Run the `Typecheck` tool on the module
|
|
66
|
+
after every source edit and fix every error — a non-compiling edit makes the
|
|
67
|
+
host reload fail and the page 404. Use `FindPagesUsing` to map each file you
|
|
68
|
+
edit to the pages that render it, and `QueryLogs` if the page still looks
|
|
69
|
+
wrong after the reload.
|
|
70
|
+
|
|
71
|
+
## Guardrails
|
|
72
|
+
|
|
73
|
+
- Re-export every new page from `pages/all.ts`.
|
|
74
|
+
- A page's `module` must match an `id` passed to `RegisterModule`.
|
|
75
|
+
- Prefer adding fields to an existing route payload over inventing new routes.
|
|
76
|
+
- Before editing a page, make sure the host is displaying it (`NavigateToPage` —
|
|
77
|
+
look the route up via `ListPages`, never derive it from the filename) so the
|
|
78
|
+
live overlay hot-reloads onto your change while the user watches; for a
|
|
79
|
+
brand-new page, register the empty page and navigate to it before composing
|
|
80
|
+
content.
|