@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,177 @@
|
|
|
1
|
+
// Theme bridge (host → chatbox iframe). The host DMS is the source of truth for
|
|
2
|
+
// the active Nuxt UI primary palette and the light/dark mode; the chatbox iframe
|
|
3
|
+
// is a separate document (different origin) so it cannot inherit them through
|
|
4
|
+
// CSS — we forward them explicitly here.
|
|
5
|
+
//
|
|
6
|
+
// Protocol:
|
|
7
|
+
// iframe → host : { type: "dms-ai:ready" } (chatbox announces mount)
|
|
8
|
+
// host → iframe : { type: "dms-ai:theme", mode, primary }
|
|
9
|
+
// See sidecar/chatbox/src/composables/useHostTheme.ts for the receiver.
|
|
10
|
+
|
|
11
|
+
const THEME_MESSAGE_TYPE = 'dms-ai:theme'
|
|
12
|
+
const READY_MESSAGE_TYPE = 'dms-ai:ready'
|
|
13
|
+
|
|
14
|
+
const PRIMARY_STEPS = [
|
|
15
|
+
'50',
|
|
16
|
+
'100',
|
|
17
|
+
'200',
|
|
18
|
+
'300',
|
|
19
|
+
'400',
|
|
20
|
+
'500',
|
|
21
|
+
'600',
|
|
22
|
+
'700',
|
|
23
|
+
'800',
|
|
24
|
+
'900',
|
|
25
|
+
'950',
|
|
26
|
+
] as const
|
|
27
|
+
|
|
28
|
+
// Nuxt UI semantic surface/text/border tokens. The host DMS may override these
|
|
29
|
+
// with bespoke values (e.g. the DMS dark canvas is #0a0b12, not the default
|
|
30
|
+
// neutral-900), so the chatbox can't just rely on the default neutral palette —
|
|
31
|
+
// it has to mirror the host's resolved values for a faithful match in both modes.
|
|
32
|
+
const SEMANTIC_TOKENS = [
|
|
33
|
+
'--ui-bg',
|
|
34
|
+
'--ui-bg-muted',
|
|
35
|
+
'--ui-bg-elevated',
|
|
36
|
+
'--ui-bg-accented',
|
|
37
|
+
'--ui-bg-inverted',
|
|
38
|
+
'--ui-text-dimmed',
|
|
39
|
+
'--ui-text-muted',
|
|
40
|
+
'--ui-text-toned',
|
|
41
|
+
'--ui-text',
|
|
42
|
+
'--ui-text-highlighted',
|
|
43
|
+
'--ui-text-inverted',
|
|
44
|
+
'--ui-border',
|
|
45
|
+
'--ui-border-muted',
|
|
46
|
+
'--ui-border-accented',
|
|
47
|
+
'--ui-border-inverted',
|
|
48
|
+
] as const
|
|
49
|
+
|
|
50
|
+
export interface HostTheme {
|
|
51
|
+
mode: 'dark' | 'light'
|
|
52
|
+
primary: Record<string, string>
|
|
53
|
+
tokens: Record<string, string>
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export function readHostMode(): 'dark' | 'light' {
|
|
57
|
+
return document.documentElement.classList.contains('dark') ? 'dark' : 'light'
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
interface ResolvedColors {
|
|
61
|
+
primary: Record<string, string>
|
|
62
|
+
tokens: Record<string, string>
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Resolve CSS custom properties to concrete color strings. They are authored as
|
|
66
|
+
// `var(--color-…)` chains, so we read them through a throwaway probe whose
|
|
67
|
+
// computed `color` forces full var() resolution (getComputedStyle on the custom
|
|
68
|
+
// property itself may return the unresolved `var(...)` token in some browsers).
|
|
69
|
+
// A variable the host does not define is skipped entirely: `color: var(--undef)`
|
|
70
|
+
// falls back to the *inherited* color, so the probe would otherwise report a
|
|
71
|
+
// bogus concrete value (e.g. black) instead of "missing" — leaving downstream
|
|
72
|
+
// guards/fallbacks ineffective.
|
|
73
|
+
function readResolvedColors(): ResolvedColors {
|
|
74
|
+
const rootStyle = getComputedStyle(document.documentElement)
|
|
75
|
+
const probe = document.createElement('span')
|
|
76
|
+
probe.style.cssText =
|
|
77
|
+
'position:absolute;width:0;height:0;overflow:hidden;visibility:hidden;pointer-events:none;'
|
|
78
|
+
document.body.appendChild(probe)
|
|
79
|
+
const probeStyle = getComputedStyle(probe)
|
|
80
|
+
const resolve = (name: string): string => {
|
|
81
|
+
if (rootStyle.getPropertyValue(name).trim() === '') return ''
|
|
82
|
+
probe.style.color = `var(${name})`
|
|
83
|
+
return probeStyle.color
|
|
84
|
+
}
|
|
85
|
+
const primary: Record<string, string> = {}
|
|
86
|
+
for (const step of PRIMARY_STEPS) {
|
|
87
|
+
const value = resolve(`--ui-color-primary-${step}`)
|
|
88
|
+
if (value !== '') primary[step] = value
|
|
89
|
+
}
|
|
90
|
+
const tokens: Record<string, string> = {}
|
|
91
|
+
for (const name of SEMANTIC_TOKENS) {
|
|
92
|
+
const value = resolve(name)
|
|
93
|
+
if (value !== '') tokens[name] = value
|
|
94
|
+
}
|
|
95
|
+
probe.remove()
|
|
96
|
+
return { primary, tokens }
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export function readHostTheme(): HostTheme {
|
|
100
|
+
const { primary, tokens } = readResolvedColors()
|
|
101
|
+
return { mode: readHostMode(), primary, tokens }
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function themeSignature(theme: HostTheme): string {
|
|
105
|
+
const primary = PRIMARY_STEPS.map((s) => theme.primary[s]).join(',')
|
|
106
|
+
const tokens = SEMANTIC_TOKENS.map((t) => theme.tokens[t]).join(',')
|
|
107
|
+
return `${theme.mode}|${primary}|${tokens}`
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
interface MessageData {
|
|
111
|
+
type?: unknown
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
type ThemePush = (force: boolean) => void
|
|
115
|
+
|
|
116
|
+
// Only answer the handshake from our own iframe, never an arbitrary frame.
|
|
117
|
+
function answerReadyHandshake(
|
|
118
|
+
iframe: HTMLIFrameElement,
|
|
119
|
+
post: ThemePush,
|
|
120
|
+
): void {
|
|
121
|
+
globalThis.addEventListener('message', (event: MessageEvent) => {
|
|
122
|
+
const type = (event.data as MessageData)?.type
|
|
123
|
+
if (type === READY_MESSAGE_TYPE && event.source === iframe.contentWindow) {
|
|
124
|
+
post(true)
|
|
125
|
+
}
|
|
126
|
+
})
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// @nuxtjs/color-mode toggles `.dark` on <html>; mirror those changes live.
|
|
130
|
+
function watchHostModeChanges(post: ThemePush): void {
|
|
131
|
+
const observer = new MutationObserver(() => post(false))
|
|
132
|
+
observer.observe(document.documentElement, {
|
|
133
|
+
attributes: true,
|
|
134
|
+
attributeFilter: ['class'],
|
|
135
|
+
})
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Wire the bridge to a chatbox iframe: reply to its `ready` handshake and
|
|
139
|
+
// re-push the theme whenever the host flips light/dark. Primary/token swaps
|
|
140
|
+
// alone are not mirrored live — they only reach the iframe on the forced
|
|
141
|
+
// pushes (`ready` handshake and iframe `load`).
|
|
142
|
+
// `onTheme` fires on every (re)push so the caller can keep host-side chrome
|
|
143
|
+
// (the overlay backdrop / iframe color-scheme) in sync with live mode changes —
|
|
144
|
+
// without it, an OS-driven dark switch leaves the panel edge on its old shade
|
|
145
|
+
// until the page is reloaded.
|
|
146
|
+
export function installThemeBridge(
|
|
147
|
+
iframe: HTMLIFrameElement,
|
|
148
|
+
onTheme?: (theme: HostTheme) => void,
|
|
149
|
+
): void {
|
|
150
|
+
let lastMode: 'dark' | 'light' | '' = ''
|
|
151
|
+
let lastSignature = ''
|
|
152
|
+
|
|
153
|
+
const post: ThemePush = (force) => {
|
|
154
|
+
// The observer fires on any <html> class mutation (scroll locks, modal or
|
|
155
|
+
// route classes…). Gate the expensive probe resolution behind a cheap mode
|
|
156
|
+
// check: only a light/dark flip changes what this bridge mirrors live, and
|
|
157
|
+
// primary/token swaps are re-pushed on the `force` paths (ready/load).
|
|
158
|
+
const mode = readHostMode()
|
|
159
|
+
if (!force && mode === lastMode) return
|
|
160
|
+
lastMode = mode
|
|
161
|
+
const theme = readHostTheme()
|
|
162
|
+
const signature = themeSignature(theme)
|
|
163
|
+
if (!force && signature === lastSignature) return
|
|
164
|
+
lastSignature = signature
|
|
165
|
+
onTheme?.(theme)
|
|
166
|
+
iframe.contentWindow?.postMessage(
|
|
167
|
+
{ type: THEME_MESSAGE_TYPE, ...theme },
|
|
168
|
+
'*',
|
|
169
|
+
)
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
answerReadyHandshake(iframe, post)
|
|
173
|
+
watchHostModeChanges(post)
|
|
174
|
+
// Belt and suspenders for the case where the iframe loaded before its
|
|
175
|
+
// message listener was ready and the `ready` handshake was missed.
|
|
176
|
+
iframe.addEventListener('load', () => post(true))
|
|
177
|
+
}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { createBackoff, nextDelay, resetBackoff } from './backoff'
|
|
2
|
+
import {
|
|
3
|
+
HELLO_MESSAGE_TYPE,
|
|
4
|
+
HOST_ROLE,
|
|
5
|
+
LOG_PREFIX,
|
|
6
|
+
PAGE_PROTOCOL_SECURE,
|
|
7
|
+
WS_HOST_PATH,
|
|
8
|
+
WS_PROTOCOL_INSECURE,
|
|
9
|
+
WS_PROTOCOL_SECURE,
|
|
10
|
+
WS_RECONNECT_DELAYS_MS,
|
|
11
|
+
WS_STATUS_CONNECTED,
|
|
12
|
+
WS_STATUS_CONNECTING,
|
|
13
|
+
WS_STATUS_DISCONNECTED,
|
|
14
|
+
WS_STATUS_RECONNECTING,
|
|
15
|
+
} from './constants'
|
|
16
|
+
|
|
17
|
+
export type ConnectionStatus =
|
|
18
|
+
| typeof WS_STATUS_CONNECTING
|
|
19
|
+
| typeof WS_STATUS_CONNECTED
|
|
20
|
+
| typeof WS_STATUS_DISCONNECTED
|
|
21
|
+
| typeof WS_STATUS_RECONNECTING
|
|
22
|
+
|
|
23
|
+
interface CreateHostWsClientOptions {
|
|
24
|
+
sidecarHost: string
|
|
25
|
+
// The sidecar's port is read fresh on every (re)connect: an idle-exit + respawn
|
|
26
|
+
// lands on a new random port, so a fixed port could never reconnect. Returns
|
|
27
|
+
// null while no port is known yet, in which case connecting is deferred.
|
|
28
|
+
getPort: () => number | null
|
|
29
|
+
getClientToken: () => string | null
|
|
30
|
+
onMessage?: (raw: unknown) => void
|
|
31
|
+
onStatusChange?: (status: ConnectionStatus) => void
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
interface HostWsClient {
|
|
35
|
+
close: () => void
|
|
36
|
+
isConnected: () => boolean
|
|
37
|
+
send: (msg: unknown) => void
|
|
38
|
+
getStatus: () => ConnectionStatus
|
|
39
|
+
// Drop any pending backoff and reconnect immediately against the current port.
|
|
40
|
+
// Called when the status controller has relearned a fresh port.
|
|
41
|
+
reconnectNow: () => void
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function buildWsUrl(host: string, port: number): string {
|
|
45
|
+
const isSecure = window.location.protocol === PAGE_PROTOCOL_SECURE
|
|
46
|
+
const scheme = isSecure ? WS_PROTOCOL_SECURE : WS_PROTOCOL_INSECURE
|
|
47
|
+
return `${scheme}//${host}:${port}${WS_HOST_PATH}`
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
interface ConnectHandlers {
|
|
51
|
+
onOpen: (socket: WebSocket) => void
|
|
52
|
+
onClose: () => void
|
|
53
|
+
onError: (event: Event) => void
|
|
54
|
+
onMessage: (raw: unknown) => void
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export function connect(
|
|
58
|
+
url: string,
|
|
59
|
+
handlers: ConnectHandlers,
|
|
60
|
+
token: string,
|
|
61
|
+
): WebSocket {
|
|
62
|
+
const socket = new WebSocket(url, `dms-ai.${token}`)
|
|
63
|
+
socket.addEventListener('open', () => handlers.onOpen(socket))
|
|
64
|
+
socket.addEventListener('close', () => handlers.onClose())
|
|
65
|
+
socket.addEventListener('error', (event) => handlers.onError(event))
|
|
66
|
+
socket.addEventListener('message', (event) => handlers.onMessage(event.data))
|
|
67
|
+
return socket
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function sendHello(socket: WebSocket): void {
|
|
71
|
+
const payload = { type: HELLO_MESSAGE_TYPE, role: HOST_ROLE }
|
|
72
|
+
socket.send(JSON.stringify(payload))
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function logError(event: Event): void {
|
|
76
|
+
console.error(`${LOG_PREFIX} ws error`, event)
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function buildOnMessage(
|
|
80
|
+
options: CreateHostWsClientOptions,
|
|
81
|
+
): (raw: unknown) => void {
|
|
82
|
+
const handler = options.onMessage
|
|
83
|
+
if (handler === undefined) return () => {}
|
|
84
|
+
return handler
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
interface StatusController {
|
|
88
|
+
get: () => ConnectionStatus
|
|
89
|
+
set: (next: ConnectionStatus) => void
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
function createStatusController(
|
|
93
|
+
notify: (status: ConnectionStatus) => void,
|
|
94
|
+
): StatusController {
|
|
95
|
+
let current: ConnectionStatus = WS_STATUS_CONNECTING
|
|
96
|
+
return {
|
|
97
|
+
get: () => current,
|
|
98
|
+
set: (next) => {
|
|
99
|
+
if (current === next) return
|
|
100
|
+
current = next
|
|
101
|
+
notify(next)
|
|
102
|
+
},
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
function buildStatusNotifier(
|
|
107
|
+
options: CreateHostWsClientOptions,
|
|
108
|
+
): (status: ConnectionStatus) => void {
|
|
109
|
+
const handler = options.onStatusChange
|
|
110
|
+
if (handler === undefined) return () => {}
|
|
111
|
+
return handler
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export function createHostWsClient(
|
|
115
|
+
options: CreateHostWsClientOptions,
|
|
116
|
+
): HostWsClient {
|
|
117
|
+
const onMessage = buildOnMessage(options)
|
|
118
|
+
const status = createStatusController(buildStatusNotifier(options))
|
|
119
|
+
const backoff = createBackoff()
|
|
120
|
+
let socket: WebSocket | null = null
|
|
121
|
+
let retryTimer: ReturnType<typeof setTimeout> | null = null
|
|
122
|
+
let isIntentionallyClosed = false
|
|
123
|
+
const open = () => {
|
|
124
|
+
if (isIntentionallyClosed) return
|
|
125
|
+
const port = options.getPort()
|
|
126
|
+
const token = options.getClientToken()
|
|
127
|
+
// No port yet (sidecar reviving): stay in reconnecting and wait — the
|
|
128
|
+
// controller calls reconnectNow() once it relearns one.
|
|
129
|
+
if (port === null || !token) {
|
|
130
|
+
status.set(WS_STATUS_RECONNECTING)
|
|
131
|
+
scheduleRetry()
|
|
132
|
+
return
|
|
133
|
+
}
|
|
134
|
+
socket = connect(
|
|
135
|
+
buildWsUrl(options.sidecarHost, port),
|
|
136
|
+
{
|
|
137
|
+
onOpen: (s) => {
|
|
138
|
+
resetBackoff(backoff)
|
|
139
|
+
status.set(WS_STATUS_CONNECTED)
|
|
140
|
+
sendHello(s)
|
|
141
|
+
},
|
|
142
|
+
onClose: () => handleClose(),
|
|
143
|
+
onError: logError,
|
|
144
|
+
onMessage,
|
|
145
|
+
},
|
|
146
|
+
token,
|
|
147
|
+
)
|
|
148
|
+
}
|
|
149
|
+
const scheduleRetry = () => {
|
|
150
|
+
if (retryTimer !== null) return
|
|
151
|
+
const delay = nextDelay(backoff, WS_RECONNECT_DELAYS_MS)
|
|
152
|
+
retryTimer = setTimeout(() => {
|
|
153
|
+
retryTimer = null
|
|
154
|
+
open()
|
|
155
|
+
}, delay)
|
|
156
|
+
}
|
|
157
|
+
const handleClose = () => {
|
|
158
|
+
socket = null
|
|
159
|
+
if (isIntentionallyClosed) {
|
|
160
|
+
status.set(WS_STATUS_DISCONNECTED)
|
|
161
|
+
return
|
|
162
|
+
}
|
|
163
|
+
status.set(WS_STATUS_RECONNECTING)
|
|
164
|
+
scheduleRetry()
|
|
165
|
+
}
|
|
166
|
+
status.set(WS_STATUS_CONNECTING)
|
|
167
|
+
open()
|
|
168
|
+
return {
|
|
169
|
+
close: () => {
|
|
170
|
+
isIntentionallyClosed = true
|
|
171
|
+
if (retryTimer !== null) {
|
|
172
|
+
clearTimeout(retryTimer)
|
|
173
|
+
retryTimer = null
|
|
174
|
+
}
|
|
175
|
+
socket?.close()
|
|
176
|
+
},
|
|
177
|
+
isConnected: () => socket?.readyState === WebSocket.OPEN,
|
|
178
|
+
send: (msg: unknown) => socket?.send(JSON.stringify(msg)),
|
|
179
|
+
getStatus: () => status.get(),
|
|
180
|
+
reconnectNow: () => {
|
|
181
|
+
if (isIntentionallyClosed) return
|
|
182
|
+
if (retryTimer !== null) {
|
|
183
|
+
clearTimeout(retryTimer)
|
|
184
|
+
retryTimer = null
|
|
185
|
+
}
|
|
186
|
+
resetBackoff(backoff)
|
|
187
|
+
// A live socket on the old port is stale after a port change; drop it and
|
|
188
|
+
// reopen. If it was already open on the right port, onClose reopens too.
|
|
189
|
+
if (socket !== null) {
|
|
190
|
+
socket.close()
|
|
191
|
+
return
|
|
192
|
+
}
|
|
193
|
+
open()
|
|
194
|
+
},
|
|
195
|
+
}
|
|
196
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { defineAsyncComponent, type Component } from 'vue'
|
|
2
|
+
import type { DmsFrontendModule } from '#dms-inertia/frontend-module'
|
|
3
|
+
import aiPlugin from './app/plugins/ai.client'
|
|
4
|
+
|
|
5
|
+
interface VueModule {
|
|
6
|
+
default: Component
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const components = import.meta.glob<VueModule>('./app/components/**/*.vue')
|
|
10
|
+
|
|
11
|
+
const frontendModule: DmsFrontendModule = {
|
|
12
|
+
setup(sdk) {
|
|
13
|
+
Object.entries(components)
|
|
14
|
+
.sort(([left], [right]) => left.localeCompare(right))
|
|
15
|
+
.forEach(([path, loader]) => {
|
|
16
|
+
const name = `DmsAi${path
|
|
17
|
+
.split('/')
|
|
18
|
+
.at(-1)!
|
|
19
|
+
.replace(/\.vue$/, '')}`
|
|
20
|
+
sdk.registerComponent(name, defineAsyncComponent(loader))
|
|
21
|
+
})
|
|
22
|
+
sdk.registerPlugin(aiPlugin, { clientOnly: true })
|
|
23
|
+
},
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export default frontendModule
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import eslint from '@eslint/js'
|
|
2
|
+
import ts from 'typescript-eslint'
|
|
3
|
+
import vue from 'eslint-plugin-vue'
|
|
4
|
+
import globals from 'globals'
|
|
5
|
+
|
|
6
|
+
export default ts.config(
|
|
7
|
+
{ ignores: ['dist/**', 'node_modules/**'] },
|
|
8
|
+
eslint.configs.recommended,
|
|
9
|
+
...vue.configs['flat/essential'],
|
|
10
|
+
{
|
|
11
|
+
files: ['**/*.{ts,vue}'],
|
|
12
|
+
languageOptions: {
|
|
13
|
+
parserOptions: { parser: ts.parser },
|
|
14
|
+
globals: { ...globals.browser, ...globals.node },
|
|
15
|
+
},
|
|
16
|
+
rules: {
|
|
17
|
+
'no-undef': 'off',
|
|
18
|
+
'no-unused-vars': 'off',
|
|
19
|
+
'no-redeclare': 'off',
|
|
20
|
+
'vue/multi-word-component-names': 'off',
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
{ files: ['**/*.ts'], languageOptions: { parser: ts.parser } },
|
|
24
|
+
)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@antelopejs/dms-ai-frontend-vue",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "Apache-2.0",
|
|
7
|
+
"packageManager": "pnpm@10.6.5",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"build": "pnpm --dir \"${DMS_FRONTEND_WORKSPACE:?Set DMS_FRONTEND_WORKSPACE to the generated Inertia workspace}\" build",
|
|
10
|
+
"typecheck": "pnpm --dir \"${DMS_FRONTEND_WORKSPACE:?Set DMS_FRONTEND_WORKSPACE to the generated Inertia workspace}\" typecheck",
|
|
11
|
+
"format": "prettier --write .",
|
|
12
|
+
"lint": "eslint .",
|
|
13
|
+
"lint:fix": "eslint . --fix",
|
|
14
|
+
"test": "vitest run --passWithNoTests"
|
|
15
|
+
},
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"@inertiajs/vue3": "^3.7.0",
|
|
18
|
+
"vue": "^3.5.18"
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"@eslint/js": "^9.0.0",
|
|
22
|
+
"typescript-eslint": "^8.0.0",
|
|
23
|
+
"eslint": "^9.0.0",
|
|
24
|
+
"eslint-plugin-vue": "^10.0.0",
|
|
25
|
+
"globals": "^16.0.0",
|
|
26
|
+
"@vitest/runner": "^4.1.5",
|
|
27
|
+
"jsdom": "^29.1.1",
|
|
28
|
+
"prettier": "^3.5.3",
|
|
29
|
+
"typescript": "^5.8.2",
|
|
30
|
+
"vitest": "^4.1.5",
|
|
31
|
+
"vue-tsc": "^3.1.1"
|
|
32
|
+
}
|
|
33
|
+
}
|