@antelopejs/dms-ai 0.9.0 → 0.9.2
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 -34
- package/dist/constants/http.d.ts +1 -0
- package/dist/constants/http.js +1 -0
- package/dist/constants/http.js.map +1 -1
- package/dist/database/catalog.js +21 -3
- package/dist/database/catalog.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lifecycle/sidecar-owner.js.map +1 -1
- package/dist/lifecycle/skill-sources.js +19 -146
- package/dist/lifecycle/skill-sources.js.map +1 -1
- package/dist/lifecycle/spawn-sidecar.js +2 -2
- package/dist/lifecycle/spawn-sidecar.js.map +1 -1
- package/dist/lifecycle/terminate-process.d.ts +1 -0
- package/dist/lifecycle/terminate-process.js +8 -4
- package/dist/lifecycle/terminate-process.js.map +1 -1
- package/dist/logging/log-buffer.js +22 -14
- package/dist/logging/log-buffer.js.map +1 -1
- package/dist/pages/settings/availability.js +41 -5
- package/dist/pages/settings/availability.js.map +1 -1
- package/dist/pages/settings/options.d.ts +2 -1
- package/dist/pages/settings/options.js +29 -8
- package/dist/pages/settings/options.js.map +1 -1
- package/dist/pages/settings/sections.js +15 -4
- package/dist/pages/settings/sections.js.map +1 -1
- package/dist/pages-registry.js +2 -6
- package/dist/pages-registry.js.map +1 -1
- package/dist/routes/activity.js +4 -3
- package/dist/routes/activity.js.map +1 -1
- package/dist/routes/banner.d.ts +2 -1
- package/dist/routes/banner.js +4 -1
- package/dist/routes/banner.js.map +1 -1
- package/dist/routes/builder.d.ts +5 -5
- package/dist/routes/builder.js +62 -44
- package/dist/routes/builder.js.map +1 -1
- package/dist/routes/changes.js +8 -7
- package/dist/routes/changes.js.map +1 -1
- package/dist/routes/codex-account.js +11 -5
- package/dist/routes/codex-account.js.map +1 -1
- package/dist/routes/content-json.d.ts +6 -0
- package/dist/routes/content-json.js +12 -0
- package/dist/routes/content-json.js.map +1 -0
- package/dist/routes/metrics.js +8 -8
- package/dist/routes/metrics.js.map +1 -1
- package/dist/routes/settings.js +4 -3
- package/dist/routes/settings.js.map +1 -1
- package/dist/routes/sidecar-answers.d.ts +10 -0
- package/dist/routes/sidecar-answers.js +90 -0
- package/dist/routes/sidecar-answers.js.map +1 -0
- package/dist/routes/sidecar-results.d.ts +2 -1
- package/dist/routes/sidecar-results.js +8 -2
- package/dist/routes/sidecar-results.js.map +1 -1
- package/dist/routes/skills.d.ts +2 -2
- package/dist/routes/skills.js +3 -2
- package/dist/routes/skills.js.map +1 -1
- package/dist/routes/status.js +23 -4
- package/dist/routes/status.js.map +1 -1
- package/dist/sidecar/answer-schemas.d.ts +8 -0
- package/dist/sidecar/answer-schemas.js +60 -0
- package/dist/sidecar/answer-schemas.js.map +1 -0
- package/dist/sidecar/http-client.d.ts +4 -2
- package/dist/sidecar/http-client.js +5 -2
- package/dist/sidecar/http-client.js.map +1 -1
- package/dist/sidecar/index.d.ts +1 -0
- package/dist/sidecar/index.js +1 -0
- package/dist/sidecar/index.js.map +1 -1
- package/dist/sidecar/settings-values.d.ts +3 -0
- package/dist/sidecar/settings-values.js +33 -1
- package/dist/sidecar/settings-values.js.map +1 -1
- package/dist/types/status.d.ts +2 -2
- package/dist/vocabulary/enumerations.js +2 -0
- package/dist/vocabulary/enumerations.js.map +1 -1
- package/frontend-vue/app/chat/components/ChatView.vue +16 -49
- package/frontend-vue/app/chat/components/Composer.vue +23 -39
- package/frontend-vue/app/chat/components/NoticeCard.vue +9 -0
- package/frontend-vue/app/chat/components/ProviderNotice.vue +14 -3
- package/frontend-vue/app/chat/composables/conversation-events.ts +0 -3
- package/frontend-vue/app/chat/composables/useConversationMode.ts +8 -11
- package/frontend-vue/app/chat/composables/useFollowScroll.ts +77 -0
- package/frontend-vue/app/chat/constants/modes.ts +15 -0
- package/frontend-vue/app/chat/constants/protocol.ts +0 -1
- package/frontend-vue/app/chat/constants/settings.ts +1 -1
- package/frontend-vue/app/chat/types/protocol.ts +11 -9
- package/frontend-vue/app/chat/types/settings.ts +7 -2
- package/frontend-vue/app/chat/utils/permission-view.ts +1 -0
- package/frontend-vue/app/views/constants.ts +2 -0
- package/frontend-vue/app/views/types.ts +3 -1
- package/frontend-vue/i18n/locales/dms-ai-pages-en-GB.json +21 -11
- package/frontend-vue/i18n/locales/dms-ai-pages-fr-FR.json +21 -11
- package/frontend-vue/i18n/locales/dms-ai-panel-en-GB.json +11 -21
- package/frontend-vue/i18n/locales/dms-ai-panel-fr-FR.json +11 -21
- package/frontend-vue/i18n/locales/dms-ai-views-en-GB.json +2 -0
- package/frontend-vue/i18n/locales/dms-ai-views-fr-FR.json +2 -0
- package/frontend-vue/package.json +1 -1
- package/frontend-vue/tests/chat/chat-scroll.test.ts +251 -0
- package/frontend-vue/tests/chat/conversation-events.test.ts +1 -3
- package/frontend-vue/tests/chat/provider-notice.test.ts +33 -0
- package/frontend-vue/tests/chat-panel.test.ts +2 -4
- package/frontend-vue/tests/panel-modes.test.ts +146 -0
- package/frontend-vue/tests/panel-questions.test.ts +1 -19
- package/frontend-vue/tests/panel-states.test.ts +12 -16
- package/frontend-vue/tests/support/fake-layout.ts +119 -0
- package/frontend-vue/tests/support/panel-harness.ts +14 -6
- package/frontend-vue/tests/support/setup-layout.ts +3 -0
- package/frontend-vue/tests/support/stubs.ts +2 -0
- package/frontend-vue/vitest.config.ts +1 -0
- package/package.json +16 -10
- package/sidecar/dist/agent/always-ask-files.d.ts +2 -0
- package/sidecar/dist/agent/always-ask-files.js +34 -0
- package/sidecar/dist/agent/always-ask-files.js.map +1 -0
- package/sidecar/dist/agent/conversation-modes.d.ts +3 -12
- package/sidecar/dist/agent/conversation-modes.js +16 -69
- package/sidecar/dist/agent/conversation-modes.js.map +1 -1
- package/sidecar/dist/agent/effective-mode.d.ts +2 -5
- package/sidecar/dist/agent/effective-mode.js +1 -15
- package/sidecar/dist/agent/effective-mode.js.map +1 -1
- package/sidecar/dist/agent/permission-bus.d.ts +1 -2
- package/sidecar/dist/agent/permission-bus.js +1 -3
- package/sidecar/dist/agent/permission-bus.js.map +1 -1
- package/sidecar/dist/agent/permission-preview.d.ts +6 -0
- package/sidecar/dist/agent/permission-preview.js +35 -10
- package/sidecar/dist/agent/permission-preview.js.map +1 -1
- package/sidecar/dist/agent/permission-rules.js +2 -2
- package/sidecar/dist/agent/permission-rules.js.map +1 -1
- package/sidecar/dist/agent/project-secrets.d.ts +7 -0
- package/sidecar/dist/agent/project-secrets.js +61 -0
- package/sidecar/dist/agent/project-secrets.js.map +1 -0
- package/sidecar/dist/agent/provider.d.ts +5 -4
- package/sidecar/dist/agent/runner.d.ts +3 -2
- package/sidecar/dist/agent/runner.js +9 -3
- package/sidecar/dist/agent/runner.js.map +1 -1
- package/sidecar/dist/agent/session.d.ts +3 -3
- package/sidecar/dist/agent/session.js.map +1 -1
- package/sidecar/dist/agent/tool-kinds.d.ts +7 -1
- package/sidecar/dist/agent/tool-kinds.js +24 -5
- package/sidecar/dist/agent/tool-kinds.js.map +1 -1
- package/sidecar/dist/agent/typecheck.js +14 -1
- package/sidecar/dist/agent/typecheck.js.map +1 -1
- package/sidecar/dist/audit/activity-query.js +2 -0
- package/sidecar/dist/audit/activity-query.js.map +1 -1
- package/sidecar/dist/audit/activity.js +1 -0
- package/sidecar/dist/audit/activity.js.map +1 -1
- package/sidecar/dist/audit/call-audit.js.map +1 -1
- package/sidecar/dist/builder/builder-client.d.ts +3 -1
- package/sidecar/dist/builder/builder-client.js +13 -1
- package/sidecar/dist/builder/builder-client.js.map +1 -1
- package/sidecar/dist/constants/audit.d.ts +1 -3
- package/sidecar/dist/constants/audit.js +2 -1
- package/sidecar/dist/constants/audit.js.map +1 -1
- package/sidecar/dist/constants/builder.d.ts +3 -0
- package/sidecar/dist/constants/builder.js +3 -0
- package/sidecar/dist/constants/builder.js.map +1 -1
- package/sidecar/dist/constants/claude.d.ts +6 -0
- package/sidecar/dist/constants/claude.js +6 -0
- package/sidecar/dist/constants/claude.js.map +1 -1
- package/sidecar/dist/constants/codex.d.ts +4 -0
- package/sidecar/dist/constants/codex.js +4 -0
- package/sidecar/dist/constants/codex.js.map +1 -1
- package/sidecar/dist/constants/permissions.d.ts +2 -0
- package/sidecar/dist/constants/permissions.js +23 -0
- package/sidecar/dist/constants/permissions.js.map +1 -1
- package/sidecar/dist/constants/project-secrets.d.ts +5 -0
- package/sidecar/dist/constants/project-secrets.js +20 -0
- package/sidecar/dist/constants/project-secrets.js.map +1 -0
- package/sidecar/dist/constants/providers.d.ts +2 -0
- package/sidecar/dist/constants/providers.js +1 -0
- package/sidecar/dist/constants/providers.js.map +1 -1
- package/sidecar/dist/constants/settings.d.ts +1 -2
- package/sidecar/dist/constants/settings.js +2 -9
- package/sidecar/dist/constants/settings.js.map +1 -1
- package/sidecar/dist/constants/tool-kinds.d.ts +67 -2
- package/sidecar/dist/constants/tool-kinds.js +111 -34
- package/sidecar/dist/constants/tool-kinds.js.map +1 -1
- package/sidecar/dist/index.js.map +1 -1
- package/sidecar/dist/mcp/http-binding.js +1 -1
- package/sidecar/dist/mcp/http-binding.js.map +1 -1
- package/sidecar/dist/mcp/tools/builder-compose.d.ts +4 -4
- package/sidecar/dist/mcp/tools/builder-compose.js +4 -3
- package/sidecar/dist/mcp/tools/builder-compose.js.map +1 -1
- package/sidecar/dist/mcp/tools/builder-expr.d.ts +5 -2
- package/sidecar/dist/mcp/tools/builder-expr.js +8 -11
- package/sidecar/dist/mcp/tools/builder-expr.js.map +1 -1
- package/sidecar/dist/mcp/tools/builder-gate.js +3 -1
- package/sidecar/dist/mcp/tools/builder-gate.js.map +1 -1
- package/sidecar/dist/mcp/tools/builder-project.d.ts +2 -1
- package/sidecar/dist/mcp/tools/builder-project.js +94 -16
- package/sidecar/dist/mcp/tools/builder-project.js.map +1 -1
- package/sidecar/dist/mcp/tools/builder-queries.d.ts +6 -6
- package/sidecar/dist/mcp/tools/builder-queries.js +9 -10
- package/sidecar/dist/mcp/tools/builder-queries.js.map +1 -1
- package/sidecar/dist/mcp/tools/builder-table-view.js +10 -8
- package/sidecar/dist/mcp/tools/builder-table-view.js.map +1 -1
- package/sidecar/dist/mcp/tools/builder.d.ts +14 -14
- package/sidecar/dist/mcp/tools/builder.js +17 -12
- package/sidecar/dist/mcp/tools/builder.js.map +1 -1
- package/sidecar/dist/protocol/events.d.ts +97 -63
- package/sidecar/dist/protocol/events.js +14 -8
- package/sidecar/dist/protocol/events.js.map +1 -1
- package/sidecar/dist/protocol/messages.d.ts +54 -49
- package/sidecar/dist/protocol/messages.js +8 -13
- package/sidecar/dist/protocol/messages.js.map +1 -1
- package/sidecar/dist/providers/claude/config.d.ts +3 -3
- package/sidecar/dist/providers/claude/config.js +4 -2
- package/sidecar/dist/providers/claude/config.js.map +1 -1
- package/sidecar/dist/providers/claude/provider.js +20 -26
- package/sidecar/dist/providers/claude/provider.js.map +1 -1
- package/sidecar/dist/providers/claude/safe-mode.d.ts +5 -5
- package/sidecar/dist/providers/claude/safe-mode.js +49 -30
- package/sidecar/dist/providers/claude/safe-mode.js.map +1 -1
- package/sidecar/dist/providers/claude/sdk-loader.js +2 -5
- package/sidecar/dist/providers/claude/sdk-loader.js.map +1 -1
- package/sidecar/dist/providers/claude/secret-files.d.ts +2 -0
- package/sidecar/dist/providers/claude/secret-files.js +50 -0
- package/sidecar/dist/providers/claude/secret-files.js.map +1 -0
- package/sidecar/dist/providers/claude/session-stream.d.ts +4 -9
- package/sidecar/dist/providers/claude/session-stream.js +22 -0
- package/sidecar/dist/providers/claude/session-stream.js.map +1 -1
- package/sidecar/dist/providers/claude/tool-guard.d.ts +14 -0
- package/sidecar/dist/providers/claude/tool-guard.js +112 -0
- package/sidecar/dist/providers/claude/tool-guard.js.map +1 -0
- package/sidecar/dist/providers/codex/adapter.d.ts +10 -0
- package/sidecar/dist/providers/codex/adapter.js +20 -5
- package/sidecar/dist/providers/codex/adapter.js.map +1 -1
- package/sidecar/dist/providers/codex/client.d.ts +3 -1
- package/sidecar/dist/providers/codex/client.js +26 -14
- package/sidecar/dist/providers/codex/client.js.map +1 -1
- package/sidecar/dist/providers/codex/config.d.ts +6 -17
- package/sidecar/dist/providers/codex/config.js +9 -56
- package/sidecar/dist/providers/codex/config.js.map +1 -1
- package/sidecar/dist/providers/codex/mcp-elicitation.d.ts +21 -0
- package/sidecar/dist/providers/codex/mcp-elicitation.js +66 -0
- package/sidecar/dist/providers/codex/mcp-elicitation.js.map +1 -0
- package/sidecar/dist/providers/codex/module.js +1 -1
- package/sidecar/dist/providers/codex/module.js.map +1 -1
- package/sidecar/dist/providers/codex/patch-directories.d.ts +6 -0
- package/sidecar/dist/providers/codex/patch-directories.js +53 -0
- package/sidecar/dist/providers/codex/patch-directories.js.map +1 -0
- package/sidecar/dist/providers/codex/permission-profiles.d.ts +11 -0
- package/sidecar/dist/providers/codex/permission-profiles.js +37 -0
- package/sidecar/dist/providers/codex/permission-profiles.js.map +1 -0
- package/sidecar/dist/providers/codex/permissions.d.ts +13 -4
- package/sidecar/dist/providers/codex/permissions.js +28 -2
- package/sidecar/dist/providers/codex/permissions.js.map +1 -1
- package/sidecar/dist/providers/codex/process.d.ts +1 -0
- package/sidecar/dist/providers/codex/process.js +3 -1
- package/sidecar/dist/providers/codex/process.js.map +1 -1
- package/sidecar/dist/providers/codex/protocol/common.d.ts +16 -4
- package/sidecar/dist/providers/codex/protocol/index.d.ts +2 -2
- package/sidecar/dist/providers/codex/protocol/index.js +1 -1
- package/sidecar/dist/providers/codex/protocol/index.js.map +1 -1
- package/sidecar/dist/providers/codex/protocol/v2.d.ts +23 -32
- package/sidecar/dist/providers/codex/provider.js +16 -15
- package/sidecar/dist/providers/codex/provider.js.map +1 -1
- package/sidecar/dist/providers/codex/secret-file-globs.d.ts +2 -0
- package/sidecar/dist/providers/codex/secret-file-globs.js +45 -0
- package/sidecar/dist/providers/codex/secret-file-globs.js.map +1 -0
- package/sidecar/dist/providers/codex/skills.d.ts +36 -3
- package/sidecar/dist/providers/codex/skills.js +16 -0
- package/sidecar/dist/providers/codex/skills.js.map +1 -1
- package/sidecar/dist/providers/types.d.ts +3 -1
- package/sidecar/dist/providers/types.js +2 -2
- package/sidecar/dist/providers/types.js.map +1 -1
- package/sidecar/dist/server/http-routes.js +1 -1
- package/sidecar/dist/server/http-routes.js.map +1 -1
- package/sidecar/dist/server/permission-events.d.ts +1 -1
- package/sidecar/dist/server/permission-events.js +5 -8
- package/sidecar/dist/server/permission-events.js.map +1 -1
- package/sidecar/dist/server/routing.js +0 -5
- package/sidecar/dist/server/routing.js.map +1 -1
- package/sidecar/dist/server/tool-calls.d.ts +0 -2
- package/sidecar/dist/server/tool-calls.js +20 -20
- package/sidecar/dist/server/tool-calls.js.map +1 -1
- package/sidecar/dist/server/turns.js +9 -1
- package/sidecar/dist/server/turns.js.map +1 -1
- package/sidecar/dist/server/ws.js +4 -15
- package/sidecar/dist/server/ws.js.map +1 -1
- package/sidecar/dist/skills/skill-usage.js +2 -2
- package/sidecar/dist/skills/skill-usage.js.map +1 -1
- package/sidecar/dist/state/change-sets.js.map +1 -1
- package/sidecar/dist/state/settings-store.d.ts +13 -5
- package/sidecar/dist/state/settings-store.js +33 -8
- package/sidecar/dist/state/settings-store.js.map +1 -1
- package/sidecar/dist/state/settings-types.d.ts +15 -2
- package/sidecar/dist/state/settings-types.js +14 -1
- package/sidecar/dist/state/settings-types.js.map +1 -1
- package/sidecar/dist/state/store.js +1 -4
- package/sidecar/dist/state/store.js.map +1 -1
- package/sidecar/dist/state/types.d.ts +7 -6
- package/sidecar/dist/state/types.js.map +1 -1
- package/sidecar/package.json +2 -1
- package/skills/dms-ai/SKILL.md +2 -1
- package/skills/dms-external-database/SKILL.md +5 -2
- package/frontend-vue/app/chat/components/FullAutoBanner.vue +0 -76
- package/frontend-vue/app/chat/components/FullAutoDialog.vue +0 -103
package/README.md
CHANGED
|
@@ -1,42 +1,42 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
#
|
|
3
|
+
# `@antelopejs/dms-ai`
|
|
4
4
|
|
|
5
|
-
<a href="https://www.npmjs.com/package/@antelopejs/dms-ai"><img alt="npm" src="https://img.shields.io/npm/v/@antelopejs/dms-ai?style=for-the-badge&labelColor=000000&color=000000"></a>
|
|
6
|
-
<a href="./LICENSE"><img alt="License" src="https://img.shields.io/npm/l/@antelopejs/dms-ai?style=for-the-badge&labelColor=000000&color=000000"></a>
|
|
7
|
-
<a href="https://discord.gg/g4pFt6eXqu"><img alt="Discord" src="https://img.shields.io/badge/Discord-18181B?logo=discord&style=for-the-badge&color=000000"></a>
|
|
8
|
-
<a href="https://dms.antelopejs.com/docs/modules/ai"><img alt="Documentation" src="https://img.shields.io/badge/Docs-18181B?style=for-the-badge&color=000000"></a>
|
|
5
|
+
<a href="https://www.npmjs.com/package/@antelopejs/dms-ai"><img alt="npm" src="https://img.shields.io/npm/v/@antelopejs/dms-ai?style=for-the-badge&labelColor=000000&color=000000" data-illustration></a>
|
|
6
|
+
<a href="./LICENSE"><img alt="License" src="https://img.shields.io/npm/l/@antelopejs/dms-ai?style=for-the-badge&labelColor=000000&color=000000" data-illustration></a>
|
|
7
|
+
<a href="https://discord.gg/g4pFt6eXqu"><img alt="Discord" src="https://img.shields.io/badge/Discord-18181B?logo=discord&style=for-the-badge&color=000000" data-illustration></a>
|
|
8
|
+
<a href="https://dms.antelopejs.com/docs/modules/ai"><img alt="Documentation" src="https://img.shields.io/badge/Docs-18181B?style=for-the-badge&color=000000" data-illustration></a>
|
|
9
9
|
|
|
10
|
-
An AI development assistant inside the [AntelopeJS DMS](https://github.com/AntelopeJS/dms) dashboard
|
|
10
|
+
**An AI development assistant inside the [AntelopeJS DMS](https://github.com/AntelopeJS/dms) dashboard.**
|
|
11
11
|
|
|
12
12
|
</div>
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
<img data-illustration alt="Screen recording from the AntelopeJS DMS film. The assistant panel opens next to a dashboard with Claude Code as the coding agent, and the request Add a card with the sites that stopped reporting is typed under the caption Or describe it. The assistant then reports Added the card Delayed sites with Typecheck passed, the changed files dashboard/page.ts and dashboard/stats.ts, and the buttons Review diff and Undo, under the caption A change set. Review it. Undo it." src="./docs/images/assistant.gif">
|
|
15
15
|
|
|
16
16
|
## What it does
|
|
17
17
|
|
|
18
|
-
- Docks a chat panel next to any page
|
|
19
|
-
- Runs a coding agent
|
|
20
|
-
- Edits pages through the [Builder](https://github.com/AntelopeJS/dms-builder) in Safe mode, or writes code
|
|
18
|
+
- Docks a chat panel next to any page, with the page as context. `Ctrl` `Shift` `K` opens it.
|
|
19
|
+
- Runs a coding agent in a local sidecar. The agent is Claude Code by default, or OpenAI's Codex, and it reads the project, its loaded modules and their skills.
|
|
20
|
+
- Edits pages through the [Builder](https://github.com/AntelopeJS/dms-builder) in Safe mode, or writes code in Code mode. It then typechecks and shows the result live.
|
|
21
21
|
- Saves every turn that touches the project as a change set you can review, undo and redo.
|
|
22
|
-
- Adds an
|
|
22
|
+
- Adds an **Assistant** module for owners, with the **Overview**, **Changes**, **Activity**, **Skills** and **Settings** pages.
|
|
23
23
|
|
|
24
|
-
The assistant is a development tool
|
|
24
|
+
The assistant is a development tool. With `NODE_ENV=production`, the backend starts no sidecar and the dashboard shows no assistant. The sidecar exits if you start it yourself in production.
|
|
25
25
|
|
|
26
26
|
## Install
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
From the root of a project that already loads `@antelopejs/dms`, add the module with the AntelopeJS CLI:
|
|
29
29
|
|
|
30
30
|
```bash
|
|
31
31
|
ajs project modules add @antelopejs/dms-ai
|
|
32
|
-
ajs project modules add @antelopejs/dms-builder #
|
|
32
|
+
ajs project modules add @antelopejs/dms-builder # optional, turns on Safe mode
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
## Quick start
|
|
36
36
|
|
|
37
|
-
Point the sidecar at the origin the `api` module reserved:
|
|
37
|
+
Point the sidecar at the origin that the `api` module reserved:
|
|
38
38
|
|
|
39
|
-
```ts
|
|
39
|
+
```ts fragment
|
|
40
40
|
// antelope.config.ts
|
|
41
41
|
"dms-ai": {
|
|
42
42
|
source: { type: "package", package: "@antelopejs/dms-ai" },
|
|
@@ -46,7 +46,9 @@ Point the sidecar at the origin the `api` module reserved:
|
|
|
46
46
|
},
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
-
Claude Code runs with its own credentials
|
|
49
|
+
Claude Code runs with its own credentials, either its login or `ANTHROPIC_API_KEY` in the backend's environment. Codex runs on your ChatGPT plan and uses no OpenAI API key. To use Codex, install `@openai/codex` at the version that `peerDependencies` pins, then press **Sign in with ChatGPT** in **Assistant** › **Settings**. On a DMS that runs on another machine, finish the sign-in with **Paste the return address**.
|
|
50
|
+
|
|
51
|
+
Restart the backend, then the frontend. Sign in as an owner and press `Ctrl` `Shift` `K` (`⌘` `⇧` `K` on macOS). To start the backend without the sidecar, set `DMS_AI=0`.
|
|
50
52
|
|
|
51
53
|
## Requirements
|
|
52
54
|
|
|
@@ -54,37 +56,33 @@ Claude Code runs with its own credentials (its login, or `ANTHROPIC_API_KEY` in
|
|
|
54
56
|
|
|
55
57
|
| Package | Supported | Tested with |
|
|
56
58
|
| ---------------------------------------- | ----------------- | ----------- |
|
|
57
|
-
| `@antelopejs/
|
|
58
|
-
| `@antelopejs/interface-
|
|
59
|
+
| `@antelopejs/agent-skills` | `^0.1.0` | `0.1.0` |
|
|
60
|
+
| `@antelopejs/interface-api` | `>=0.3.0 <1.0.0` | `0.3.0` |
|
|
61
|
+
| `@antelopejs/interface-core` | `>=0.4.0 <1.0.0` | `0.4.0` |
|
|
59
62
|
| `@antelopejs/interface-database-catalog` | `>=0.0.1 <1.0.0` | `0.0.2` |
|
|
60
|
-
| `@antelopejs/interface-dms` | `>=0.
|
|
61
|
-
| `@antelopejs/interface-dms-builder` | `>=0.
|
|
63
|
+
| `@antelopejs/interface-dms` | `>=0.12.0 <1.0.0` | `0.12.0` |
|
|
64
|
+
| `@antelopejs/interface-dms-builder` | `>=0.4.0 <1.0.0` | `0.4.0` |
|
|
62
65
|
|
|
63
66
|
<!-- antelopejs-docs-compat:end -->
|
|
64
67
|
|
|
65
|
-
|
|
66
|
-
| --- | --- |
|
|
67
|
-
| `@antelopejs/dms` | `>=0.13.1 <1.0.0` |
|
|
68
|
-
| `@antelopejs/interface-dms` | `>=0.9.0 <1.0.0` |
|
|
69
|
-
| `@antelopejs/dms-frontend` (renderer) | `>=0.9.1 <0.10.0` |
|
|
70
|
-
| `@antelopejs/dms-builder` (optional, Safe mode) | `>=0.4.0` |
|
|
68
|
+
The module needs a DMS backend in a release that implements the `@antelopejs/interface-dms` range in the table. The dashboard needs an `@antelopejs/dms-frontend` renderer in the range that `engines["@antelopejs/dms-frontend"]` of `frontend-vue/package.json` declares. The `ajs dms` CLI refuses to build the module with a renderer outside that range. `@antelopejs/dms-builder` is optional and turns on Safe mode.
|
|
71
69
|
|
|
72
70
|
## Documentation
|
|
73
71
|
|
|
74
72
|
- [Introduction](https://dms.antelopejs.com/docs/modules/ai/introduction)
|
|
75
73
|
- [Installation](https://dms.antelopejs.com/docs/modules/ai/installation)
|
|
76
|
-
- [Configuration](https://dms.antelopejs.com/docs/modules/ai/configuration)
|
|
74
|
+
- [Configuration](https://dms.antelopejs.com/docs/modules/ai/configuration), with the agent providers, Codex, Safe mode and remote access
|
|
77
75
|
- [Usage](https://dms.antelopejs.com/docs/modules/ai/usage/chat)
|
|
78
76
|
- [Extending](https://dms.antelopejs.com/docs/modules/ai/extending)
|
|
79
77
|
- [FAQ](https://dms.antelopejs.com/docs/modules/ai/faq)
|
|
80
78
|
|
|
81
|
-
The guide's sources live in [`docs/`](./docs). The package ships
|
|
79
|
+
The guide's sources live in [`docs/`](./docs). The package ships four agent skills in [`skills/`](./skills): `dms-ai`, `dms-ai-code-mode`, `dms-builder-safe` and `dms-external-database`. `antelopeJs.skills` declares them, and the assistant loads them into its agent.
|
|
82
80
|
|
|
83
81
|
## Contributing
|
|
84
82
|
|
|
85
|
-
Read [CONTRIBUTING.md](./CONTRIBUTING.md) before
|
|
83
|
+
Read [CONTRIBUTING.md](./CONTRIBUTING.md) before you open a pull request.
|
|
86
84
|
|
|
87
|
-
One install from the repository root
|
|
85
|
+
One install from the repository root installs the backend, the shipped Vue frontend and the sidecar. Each of the three keeps its own lockfile. The playground is separate and needs its own install for local development. The builds use the installed dependencies and do not install them again.
|
|
88
86
|
|
|
89
87
|
```bash
|
|
90
88
|
pnpm install --frozen-lockfile
|
|
@@ -101,9 +99,9 @@ pnpm test:node # every backend suite, after a single build
|
|
|
101
99
|
<details>
|
|
102
100
|
<summary>Repository notes</summary>
|
|
103
101
|
|
|
104
|
-
- The module registers `frontend-vue` through `AddFrontendModule` with the Vue
|
|
105
|
-
- To build and typecheck the Vue source, set `DMS_FRONTEND_WORKSPACE` to the absolute path of a generated Inertia workspace that includes this module
|
|
106
|
-
- `pnpm test:node` runs every
|
|
102
|
+
- The module registers `frontend-vue` through `AddFrontendModule` with the Vue renderer. The chat panel, `DmsAiChatPanel`, is a docked side panel (`registerSidePanel`). The DMS renders it once for the whole app, so the panel stays mounted across Inertia navigations and keeps its open state and width in a cookie. The command palette's assistant mode answers with `DmsAiPaletteAnswer` (`registerCommandPaletteAssistant`). The chat's code is under `frontend-vue/app/chat`. The renderer bundles the icons it finds in `.vue` files, so an icon name belongs in the component that shows it.
|
|
103
|
+
- To build and typecheck the Vue source, set `DMS_FRONTEND_WORKSPACE` to the absolute path of a generated Inertia workspace that includes this module. Then run `pnpm --dir frontend-vue build` and `pnpm --dir frontend-vue typecheck`.
|
|
104
|
+
- `pnpm test:node` builds once, then runs every suite in `tests/` except the sidecar build smoke test (`pnpm test:sidecar-smoke`). `DMS_PREBUILT=1` skips the build when `dist/` is fresh, as in CI. Each suite also has its own script, for example `test:frontend-registration` (backend registration, sidecar inputs, `$dms_ai` keys in both locales), `test:routes` (the `/ai/*` routes against a stand-in sidecar) and `test:sidecar-lifecycle` (hot reload, restart, stale sidecar, `Ctrl` `C`). The opt-in Codex acceptance suite runs with `CODEX_ACCEPTANCE=1 pnpm --dir sidecar test:acceptance`.
|
|
107
105
|
|
|
108
106
|
</details>
|
|
109
107
|
|
package/dist/constants/http.d.ts
CHANGED
package/dist/constants/http.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/constants/http.ts"],"names":[],"mappings":";;;AAAA,uCAAuD;AAE1C,QAAA,WAAW,GAAG;IACzB,EAAE,EAAE,GAAG;IACP,UAAU,EAAE,GAAG;IACf,WAAW,EAAE,GAAG;IAChB,WAAW,EAAE,oCAA0B;CAC/B,CAAC;AAGE,QAAA,6BAA6B,GAAG,8BAA8B,CAAC;AAE/D,QAAA,yBAAyB,GAAG,oCAAoC,CAAC;AAEjE,QAAA,gBAAgB,GAAG,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/constants/http.ts"],"names":[],"mappings":";;;AAAA,uCAAuD;AAE1C,QAAA,WAAW,GAAG;IACzB,EAAE,EAAE,GAAG;IACP,UAAU,EAAE,GAAG;IACf,WAAW,EAAE,GAAG;IAChB,WAAW,EAAE,GAAG;IAChB,WAAW,EAAE,oCAA0B;CAC/B,CAAC;AAGE,QAAA,6BAA6B,GAAG,8BAA8B,CAAC;AAE/D,QAAA,yBAAyB,GAAG,oCAAoC,CAAC;AAEjE,QAAA,gBAAgB,GAAG,yBAAyB,CAAC"}
|
package/dist/database/catalog.js
CHANGED
|
@@ -11,6 +11,20 @@ function catalogConnections() {
|
|
|
11
11
|
? lookup()
|
|
12
12
|
: (0, interface_core_1.RunWithResponsibleModule)(OWN_MODULE, lookup);
|
|
13
13
|
}
|
|
14
|
+
function isCatalogConnection(loaded) {
|
|
15
|
+
return (typeof loaded === "object" &&
|
|
16
|
+
loaded !== null &&
|
|
17
|
+
"Info" in loaded &&
|
|
18
|
+
typeof loaded.Info === "function" &&
|
|
19
|
+
"ListRelations" in loaded &&
|
|
20
|
+
typeof loaded.ListRelations === "function" &&
|
|
21
|
+
"DescribeRelations" in loaded &&
|
|
22
|
+
typeof loaded.DescribeRelations === "function" &&
|
|
23
|
+
"Profile" in loaded &&
|
|
24
|
+
typeof loaded.Profile === "function" &&
|
|
25
|
+
"CheckReference" in loaded &&
|
|
26
|
+
typeof loaded.CheckReference === "function");
|
|
27
|
+
}
|
|
14
28
|
function listConnections() {
|
|
15
29
|
return catalogConnections()
|
|
16
30
|
.map((connection) => connection.id)
|
|
@@ -18,8 +32,12 @@ function listConnections() {
|
|
|
18
32
|
}
|
|
19
33
|
function catalogOf(id) {
|
|
20
34
|
const connection = catalogConnections().find((candidate) => candidate.id === id);
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
35
|
+
if (!connection)
|
|
36
|
+
return undefined;
|
|
37
|
+
const loaded = require(connection.path);
|
|
38
|
+
if (!isCatalogConnection(loaded)) {
|
|
39
|
+
throw new TypeError(`Catalog connection ${id} does not answer the interface-database-catalog functions`);
|
|
40
|
+
}
|
|
41
|
+
return loaded;
|
|
24
42
|
}
|
|
25
43
|
//# sourceMappingURL=catalog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/database/catalog.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/database/catalog.ts"],"names":[],"mappings":";;AAqDA,0CAIC;AAOD,8BAYC;AA5ED,+DAKoC;AAEpC,oDAA0D;AAO1D,MAAM,UAAU,GAAG,IAAA,qCAAoB,GAAE,CAAC;AAE1C,SAAS,kBAAkB;IACzB,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,IAAA,sCAAqB,EAAC,4BAAiB,CAAC,CAAC;IAC9D,OAAO,UAAU,KAAK,SAAS;QAC7B,CAAC,CAAC,MAAM,EAAE;QACV,CAAC,CAAC,IAAA,yCAAwB,EAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AACnD,CAAC;AAUD,SAAS,mBAAmB,CAAC,MAAe;IAC1C,OAAO,CACL,OAAO,MAAM,KAAK,QAAQ;QAC1B,MAAM,KAAK,IAAI;QACf,MAAM,IAAI,MAAM;QAChB,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU;QACjC,eAAe,IAAI,MAAM;QACzB,OAAO,MAAM,CAAC,aAAa,KAAK,UAAU;QAC1C,mBAAmB,IAAI,MAAM;QAC7B,OAAO,MAAM,CAAC,iBAAiB,KAAK,UAAU;QAC9C,SAAS,IAAI,MAAM;QACnB,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU;QACpC,gBAAgB,IAAI,MAAM;QAC1B,OAAO,MAAM,CAAC,cAAc,KAAK,UAAU,CAC5C,CAAC;AACJ,CAAC;AAOD,SAAgB,eAAe;IAC7B,OAAO,kBAAkB,EAAE;SACxB,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;SAClC,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC3E,CAAC;AAOD,SAAgB,SAAS,CAAC,EAAU;IAClC,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC,IAAI,CAC1C,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CACnC,CAAC;IACF,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAClC,MAAM,MAAM,GAAY,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,SAAS,CACjB,sBAAsB,EAAE,2DAA2D,CACpF,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAeA,8BAEC;AAOD,sBAkBC;AAOD,0BAEC;AAnDD,gEAA6D;AAC7D,yDAAmE;AACnE,iDAAwD;AACxD,kDAAsD;AACtD,qCAA8D;AAC9D,iDAAyD;AACzD,2DAA8D;AAC9D,6DAAgE;AAChE,6DAAyD;AACzD,qDAAuD;AACvD,mBAAiB;AACjB,oBAAkB;AAClB,uDAAmD;AAGnD,SAAgB,SAAS,CAAC,MAAe;IACvC,IAAA,kBAAS,EAAC,qBAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AACvD,CAAC;AAOM,KAAK,UAAU,KAAK;IACzB,IAAA,4BAAe,GAAE,CAAC;IAClB,MAAM,IAAA,wBAAiB,EAAC,IAAA,gCAAc,GAAE,CAAC,CAAC;IAC1C,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACjE,IAAA,iCAAkB,GAAE;QACpB,IAAA,mCAAmB,EAAC,eAAe,CAAC;QACpC,IAAA,6BAAkB,GAAE;KACrB,CAAC,CAAC;IACH,KAAK,IAAA,4BAAY,EAAC;QAChB,eAAe;QACf,GAAG,IAAA,kBAAS,GAAE;QACd,WAAW;QACX,SAAS;QACT,cAAc;KACf,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QACxB,iBAAO,CAAC,KAAK,CAAC,GAAG,4BAAkB,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC;AAOD,SAAgB,OAAO;IACrB,IAAA,0BAAe,GAAE,CAAC;AACpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidecar-owner.js","sourceRoot":"","sources":["../../src/lifecycle/sidecar-owner.ts"],"names":[],"mappings":";;AA0DA,
|
|
1
|
+
{"version":3,"file":"sidecar-owner.js","sourceRoot":"","sources":["../../src/lifecycle/sidecar-owner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,47 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.collectSkillSources = collectSkillSources;
|
|
7
|
-
const promises_1 = require("node:fs/promises");
|
|
8
|
-
const node_module_1 = require("node:module");
|
|
9
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
10
4
|
const zod_1 = require("zod");
|
|
5
|
+
const agent_skills_1 = require("@antelopejs/agent-skills");
|
|
11
6
|
const logging_1 = require("@antelopejs/interface-core/logging");
|
|
12
7
|
const modules_1 = require("@antelopejs/interface-core/modules");
|
|
13
8
|
const sidecar_1 = require("../constants/sidecar");
|
|
14
|
-
const SkillDirSchema = zod_1.z.string().min(1);
|
|
15
9
|
const LocalPathSchema = zod_1.z.string().min(1);
|
|
16
|
-
const PackageManifestSchema = zod_1.z
|
|
17
|
-
.object({
|
|
18
|
-
name: zod_1.z.string().optional().catch(undefined),
|
|
19
|
-
antelopeJs: zod_1.z
|
|
20
|
-
.object({ skills: zod_1.z.array(zod_1.z.unknown()).optional().catch(undefined) })
|
|
21
|
-
.optional()
|
|
22
|
-
.catch(undefined),
|
|
23
|
-
dependencies: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional().catch(undefined),
|
|
24
|
-
devDependencies: zod_1.z
|
|
25
|
-
.record(zod_1.z.string(), zod_1.z.unknown())
|
|
26
|
-
.optional()
|
|
27
|
-
.catch(undefined),
|
|
28
|
-
optionalDependencies: zod_1.z
|
|
29
|
-
.record(zod_1.z.string(), zod_1.z.unknown())
|
|
30
|
-
.optional()
|
|
31
|
-
.catch(undefined),
|
|
32
|
-
})
|
|
33
|
-
.catch({});
|
|
34
|
-
const PACKAGE_JSON_FILE = "package.json";
|
|
35
|
-
const NODE_MODULES_DIR = "node_modules";
|
|
36
10
|
const FALLBACK_PLUGIN_NAME = "skills";
|
|
37
|
-
const MODULE_DEPENDENCY_FIELDS = [
|
|
38
|
-
"dependencies",
|
|
39
|
-
"optionalDependencies",
|
|
40
|
-
];
|
|
41
|
-
const PROJECT_DEPENDENCY_FIELDS = [
|
|
42
|
-
...MODULE_DEPENDENCY_FIELDS,
|
|
43
|
-
"devDependencies",
|
|
44
|
-
];
|
|
45
11
|
function sanitizePluginName(name) {
|
|
46
12
|
const cleaned = name.toLowerCase().replace(/[^a-z0-9-]+/g, "-");
|
|
47
13
|
const trimmed = cleaned.replace(/^-+|-+$/g, "");
|
|
@@ -54,105 +20,16 @@ function toPluginName(name) {
|
|
|
54
20
|
function toDependencyPluginName(name) {
|
|
55
21
|
return sanitizePluginName(name);
|
|
56
22
|
}
|
|
57
|
-
function
|
|
58
|
-
return
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
async function readPackageJson(dir) {
|
|
64
|
-
try {
|
|
65
|
-
const raw = await (0, promises_1.readFile)(node_path_1.default.join(dir, PACKAGE_JSON_FILE), "utf8");
|
|
66
|
-
return PackageManifestSchema.parse(JSON.parse(raw));
|
|
67
|
-
}
|
|
68
|
-
catch {
|
|
69
|
-
return null;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
function skillSourcesFromPackage(pkg, baseDir, pluginName) {
|
|
73
|
-
return readDeclaredSkillDirs(pkg).map((rel) => ({
|
|
74
|
-
module: pluginName,
|
|
75
|
-
dir: node_path_1.default.resolve(baseDir, rel),
|
|
76
|
-
}));
|
|
77
|
-
}
|
|
78
|
-
function listDependencyNames(pkg, fields) {
|
|
79
|
-
return fields.flatMap((field) => Object.keys(pkg[field] ?? {}));
|
|
80
|
-
}
|
|
81
|
-
async function toRealDir(dir) {
|
|
82
|
-
try {
|
|
83
|
-
return await (0, promises_1.realpath)(dir);
|
|
84
|
-
}
|
|
85
|
-
catch {
|
|
86
|
-
return dir;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
function resolveDependencyDirViaRequire(dep, fromDir) {
|
|
90
|
-
try {
|
|
91
|
-
const requireFrom = (0, node_module_1.createRequire)(node_path_1.default.join(fromDir, PACKAGE_JSON_FILE));
|
|
92
|
-
const manifestPath = requireFrom.resolve(`${dep}/${PACKAGE_JSON_FILE}`);
|
|
93
|
-
return node_path_1.default.dirname(manifestPath);
|
|
94
|
-
}
|
|
95
|
-
catch {
|
|
96
|
-
return null;
|
|
97
|
-
}
|
|
23
|
+
function pluginNameOf(skillPackage) {
|
|
24
|
+
return skillPackage.kind === "module"
|
|
25
|
+
? toPluginName(skillPackage.name)
|
|
26
|
+
: toDependencyPluginName(skillPackage.name);
|
|
98
27
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}
|
|
104
|
-
catch {
|
|
105
|
-
return false;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
async function resolveDependencyDirViaWalk(dep, fromDir) {
|
|
109
|
-
let current = node_path_1.default.resolve(fromDir);
|
|
110
|
-
for (;;) {
|
|
111
|
-
const candidate = node_path_1.default.join(current, NODE_MODULES_DIR, ...dep.split("/"));
|
|
112
|
-
if (await isReadable(node_path_1.default.join(candidate, PACKAGE_JSON_FILE))) {
|
|
113
|
-
return candidate;
|
|
114
|
-
}
|
|
115
|
-
const parent = node_path_1.default.dirname(current);
|
|
116
|
-
if (parent === current)
|
|
117
|
-
return null;
|
|
118
|
-
current = parent;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
async function readDependencySkillSources(dep, fromDir) {
|
|
122
|
-
const realFromDir = await toRealDir(fromDir);
|
|
123
|
-
const depDir = resolveDependencyDirViaRequire(dep, realFromDir) ??
|
|
124
|
-
(await resolveDependencyDirViaWalk(dep, realFromDir));
|
|
125
|
-
if (depDir === null)
|
|
126
|
-
return null;
|
|
127
|
-
const pkg = await readPackageJson(depDir);
|
|
128
|
-
return skillSourcesFromPackage(pkg ?? {}, depDir, toDependencyPluginName(pkg?.name ?? dep));
|
|
129
|
-
}
|
|
130
|
-
function scanDependencyOnce(dep, fromDir, scans) {
|
|
131
|
-
const inFlight = scans.get(dep);
|
|
132
|
-
if (inFlight !== undefined)
|
|
133
|
-
return inFlight;
|
|
134
|
-
const scan = readDependencySkillSources(dep, fromDir).then((sources) => sources ?? []);
|
|
135
|
-
scans.set(dep, scan);
|
|
136
|
-
return scan;
|
|
137
|
-
}
|
|
138
|
-
async function readAllDependencySkillSources(localPath, dependencies, scans) {
|
|
139
|
-
const nested = await Promise.all(dependencies.map((dep) => scanDependencyOnce(dep, localPath, scans)));
|
|
140
|
-
return nested.flat();
|
|
141
|
-
}
|
|
142
|
-
async function readLoadedModule(id, localPath) {
|
|
143
|
-
const pkg = await readPackageJson(localPath);
|
|
144
|
-
return pkg === null ? null : { localPath, name: pkg.name ?? id, pkg };
|
|
145
|
-
}
|
|
146
|
-
async function readModuleSkillSources(loaded, scans) {
|
|
147
|
-
const own = skillSourcesFromPackage(loaded.pkg, loaded.localPath, toPluginName(loaded.name));
|
|
148
|
-
const fromDependencies = await readAllDependencySkillSources(loaded.localPath, listDependencyNames(loaded.pkg, MODULE_DEPENDENCY_FIELDS), scans);
|
|
149
|
-
return [...own, ...fromDependencies];
|
|
150
|
-
}
|
|
151
|
-
async function readProjectSkillSources(projectRoot, scans) {
|
|
152
|
-
const pkg = await readPackageJson(projectRoot);
|
|
153
|
-
if (pkg === null)
|
|
154
|
-
return [];
|
|
155
|
-
return readAllDependencySkillSources(projectRoot, listDependencyNames(pkg, PROJECT_DEPENDENCY_FIELDS), scans);
|
|
28
|
+
function toSkillSources(skillPackages) {
|
|
29
|
+
return skillPackages.flatMap((skillPackage) => skillPackage.skillDirs.map((dir) => ({
|
|
30
|
+
module: pluginNameOf(skillPackage),
|
|
31
|
+
dir,
|
|
32
|
+
})));
|
|
156
33
|
}
|
|
157
34
|
function dedupeBy(sources, key, onDrop) {
|
|
158
35
|
const seen = new Set();
|
|
@@ -166,27 +43,23 @@ function dedupeBy(sources, key, onDrop) {
|
|
|
166
43
|
return true;
|
|
167
44
|
});
|
|
168
45
|
}
|
|
169
|
-
async function
|
|
46
|
+
async function listLoadedModules() {
|
|
170
47
|
const ids = await (0, modules_1.ListModules)();
|
|
171
48
|
const read = await Promise.all(ids.map((id) => (0, modules_1.GetModuleInfo)(id)
|
|
172
49
|
.then((info) => {
|
|
173
50
|
const localPath = LocalPathSchema.safeParse(info.localPath);
|
|
174
|
-
return localPath.success
|
|
175
|
-
? readLoadedModule(id, localPath.data)
|
|
176
|
-
: null;
|
|
51
|
+
return localPath.success ? { dir: localPath.data, id } : null;
|
|
177
52
|
})
|
|
178
53
|
.catch(() => null)));
|
|
179
|
-
|
|
180
|
-
for (const entry of loaded)
|
|
181
|
-
scans.set(entry.name, Promise.resolve([]));
|
|
182
|
-
const nested = await Promise.all(loaded.map((entry) => readModuleSkillSources(entry, scans)));
|
|
183
|
-
return nested.flat();
|
|
54
|
+
return read.filter((ref) => ref !== null);
|
|
184
55
|
}
|
|
185
56
|
async function gather(projectRoot) {
|
|
186
|
-
const
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
57
|
+
const skillPackages = (0, agent_skills_1.collectSkillPackages)({
|
|
58
|
+
modules: await listLoadedModules(),
|
|
59
|
+
project: projectRoot,
|
|
60
|
+
onWarning: (message) => logging_1.Logging.Warn(`${sidecar_1.SIDECAR_LOG_PREFIX} ${message}`),
|
|
61
|
+
});
|
|
62
|
+
const byDir = dedupeBy(toSkillSources(skillPackages), (source) => source.dir);
|
|
190
63
|
return dedupeBy(byDir, (source) => source.module, (dropped) => logging_1.Logging.Warn(`${sidecar_1.SIDECAR_LOG_PREFIX} skill dir ${dropped.dir} ignored: plugin name "${dropped.module}" already has a skill dir`));
|
|
191
64
|
}
|
|
192
65
|
async function collectSkillSources(projectRoot) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-sources.js","sourceRoot":"","sources":["../../src/lifecycle/skill-sources.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"skill-sources.js","sourceRoot":"","sources":["../../src/lifecycle/skill-sources.ts"],"names":[],"mappings":"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"}
|
|
@@ -176,8 +176,8 @@ function trySpawnChild(args, logPath) {
|
|
|
176
176
|
}
|
|
177
177
|
}
|
|
178
178
|
async function learnPortFromLock(root, childPid) {
|
|
179
|
-
const
|
|
180
|
-
|
|
179
|
+
const polls = Math.ceil(sidecar_1.SIDECAR_SPAWN_TIMEOUT_MS / sidecar_1.SIDECAR_LOCK_POLL_INTERVAL_MS);
|
|
180
|
+
for (let poll = 0; poll < polls && (0, terminate_process_1.isProcessAlive)(childPid); poll += 1) {
|
|
181
181
|
const lock = readLock(root);
|
|
182
182
|
if (lock !== null && lock.pid === childPid) {
|
|
183
183
|
logging_1.Logging.Info(`${sidecar_1.SIDECAR_LOG_PREFIX} sidecar listening on port ${lock.port}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn-sidecar.js","sourceRoot":"","sources":["../../src/lifecycle/spawn-sidecar.ts"],"names":[],"mappings":";;;;;AAmFA,wCAEC;AAED,0CAGC;AAGD,sDAGC;AAED,4CAEC;AAMD,8CAEC;AAOD,8CAGC;AAOD,oCAIC;AAUD,oDAGC;AAMD,wCAGC;AAvJD,2DAA8D;AAC9D,qCAA+E;AAC/E,0DAA6B;AAC7B,0DAA6B;AAC7B,6BAAwB;AACxB,gEAA6D;AAC7D,gDAA0D;AAC1D,kDAoB8B;AAC9B,yCAA4C;AAC5C,mDAAsE;AAEtE,
|
|
1
|
+
{"version":3,"file":"spawn-sidecar.js","sourceRoot":"","sources":["../../src/lifecycle/spawn-sidecar.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isProcessAlive = isProcessAlive;
|
|
3
4
|
exports.terminateProcess = terminateProcess;
|
|
4
5
|
const sidecar_1 = require("../constants/sidecar");
|
|
5
6
|
const LIVENESS_SIGNAL = 0;
|
|
@@ -12,17 +13,20 @@ function signalProcess(pid, signal) {
|
|
|
12
13
|
return false;
|
|
13
14
|
}
|
|
14
15
|
}
|
|
16
|
+
function isProcessAlive(pid) {
|
|
17
|
+
return signalProcess(pid, LIVENESS_SIGNAL);
|
|
18
|
+
}
|
|
15
19
|
function delay(ms) {
|
|
16
20
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
17
21
|
}
|
|
18
22
|
async function waitForExit(pid, timeoutMs) {
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
if (!
|
|
23
|
+
const polls = Math.ceil(timeoutMs / sidecar_1.SIDECAR_EXIT_POLL_INTERVAL_MS);
|
|
24
|
+
for (let poll = 0; poll < polls; poll += 1) {
|
|
25
|
+
if (!isProcessAlive(pid))
|
|
22
26
|
return true;
|
|
23
27
|
await delay(sidecar_1.SIDECAR_EXIT_POLL_INTERVAL_MS);
|
|
24
28
|
}
|
|
25
|
-
return !
|
|
29
|
+
return !isProcessAlive(pid);
|
|
26
30
|
}
|
|
27
31
|
async function terminateProcess(pid, timeoutMs) {
|
|
28
32
|
if (pid === undefined || !signalProcess(pid, "SIGTERM"))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminate-process.js","sourceRoot":"","sources":["../../src/lifecycle/terminate-process.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"terminate-process.js","sourceRoot":"","sources":["../../src/lifecycle/terminate-process.ts"],"names":[],"mappings":";;AAcA,wCAEC;AAuBD,4CAOC;AA9CD,kDAAqE;AAErE,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B,SAAS,aAAa,CAAC,GAAW,EAAE,MAA+B;IACjE,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAGD,SAAgB,cAAc,CAAC,GAAW;IACxC,OAAO,aAAa,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAMD,KAAK,UAAU,WAAW,CAAC,GAAW,EAAE,SAAiB;IACvD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,uCAA6B,CAAC,CAAC;IACnE,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,MAAM,KAAK,CAAC,uCAA6B,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAMM,KAAK,UAAU,gBAAgB,CACpC,GAAuB,EACvB,SAAiB;IAEjB,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC;QAAE,OAAO;IAChE,IAAI,MAAM,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC;QAAE,OAAO;IAC9C,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -10,28 +10,36 @@ const logs_1 = require("../constants/logs");
|
|
|
10
10
|
function isObject(value) {
|
|
11
11
|
return typeof value === "object" && value !== null;
|
|
12
12
|
}
|
|
13
|
-
function
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
function summarizeError(error) {
|
|
14
|
+
return { name: error.name, message: error.message, stack: error.stack };
|
|
15
|
+
}
|
|
16
|
+
function sanitizeObject(value) {
|
|
17
|
+
try {
|
|
18
|
+
JSON.stringify(value);
|
|
19
|
+
return value;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return value.toString();
|
|
16
23
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
}
|
|
25
|
+
function sanitizeArgs(args) {
|
|
26
|
+
const sanitized = [];
|
|
27
|
+
for (const arg of args) {
|
|
28
|
+
if (arg instanceof Error)
|
|
29
|
+
sanitized.push(summarizeError(arg));
|
|
30
|
+
else if (isObject(arg))
|
|
31
|
+
sanitized.push(sanitizeObject(arg));
|
|
32
|
+
else
|
|
33
|
+
sanitized.push(arg);
|
|
26
34
|
}
|
|
27
|
-
return
|
|
35
|
+
return sanitized;
|
|
28
36
|
}
|
|
29
37
|
function toBuffered(log) {
|
|
30
38
|
return {
|
|
31
39
|
time: log.time,
|
|
32
40
|
channel: log.channel,
|
|
33
41
|
levelId: log.levelId,
|
|
34
|
-
args: Array.isArray(log.args) ? log.args
|
|
42
|
+
args: Array.isArray(log.args) ? sanitizeArgs(log.args) : [],
|
|
35
43
|
};
|
|
36
44
|
}
|
|
37
45
|
function clampLimit(limit) {
|