@antelopejs/dms-ai 0.1.6 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -12
- package/dist/channels/bridge.d.ts +6 -1
- package/dist/channels/bridge.js +29 -1
- package/dist/channels/bridge.js.map +1 -1
- package/dist/channels/channel-service.d.ts +2 -1
- package/dist/channels/channel-service.js +3 -2
- package/dist/channels/channel-service.js.map +1 -1
- package/dist/channels/sse-stream.d.ts +3 -2
- package/dist/config.d.ts +0 -2
- package/dist/config.js +0 -7
- package/dist/config.js.map +1 -1
- package/dist/constants/http.d.ts +9 -0
- package/dist/constants/http.js +14 -0
- package/dist/constants/http.js.map +1 -0
- package/dist/constants/i18n.d.ts +11 -0
- package/dist/constants/i18n.js +15 -0
- package/dist/constants/i18n.js.map +1 -0
- package/dist/constants/pages.d.ts +50 -0
- package/dist/constants/pages.js +58 -0
- package/dist/constants/pages.js.map +1 -0
- package/dist/constants/sidecar.d.ts +0 -1
- package/dist/constants/sidecar.js +1 -2
- package/dist/constants/sidecar.js.map +1 -1
- package/dist/index.js +0 -8
- package/dist/index.js.map +1 -1
- package/dist/lifecycle/sidecar-owner.d.ts +1 -0
- package/dist/lifecycle/sidecar-owner.js +13 -0
- package/dist/lifecycle/sidecar-owner.js.map +1 -1
- package/dist/lifecycle/spawn-sidecar.d.ts +1 -0
- package/dist/lifecycle/spawn-sidecar.js +10 -10
- package/dist/lifecycle/spawn-sidecar.js.map +1 -1
- package/dist/logging/log-buffer.d.ts +0 -6
- package/dist/logging/log-buffer.js +0 -1
- package/dist/logging/log-buffer.js.map +1 -1
- package/dist/pages/activity/columns.d.ts +2 -0
- package/dist/pages/activity/columns.js +103 -0
- package/dist/pages/activity/columns.js.map +1 -0
- package/dist/pages/activity/page.d.ts +1 -2
- package/dist/pages/activity/page.js +79 -44
- package/dist/pages/activity/page.js.map +1 -1
- package/dist/pages/all.d.ts +1 -0
- package/dist/pages/all.js +1 -0
- package/dist/pages/all.js.map +1 -1
- package/dist/pages/changes/page.d.ts +9 -0
- package/dist/pages/changes/page.js +22 -0
- package/dist/pages/changes/page.js.map +1 -0
- package/dist/pages/meta.d.ts +9 -0
- package/dist/pages/meta.js +31 -0
- package/dist/pages/meta.js.map +1 -0
- package/dist/pages/module.js +9 -5
- package/dist/pages/module.js.map +1 -1
- package/dist/pages/overview/insights.d.ts +3 -0
- package/dist/pages/overview/insights.js +77 -0
- package/dist/pages/overview/insights.js.map +1 -0
- package/dist/pages/overview/kpis.d.ts +2 -0
- package/dist/pages/overview/kpis.js +39 -0
- package/dist/pages/overview/kpis.js.map +1 -0
- package/dist/pages/overview/page.d.ts +6 -3
- package/dist/pages/overview/page.js +19 -62
- package/dist/pages/overview/page.js.map +1 -1
- package/dist/pages/overview/recent-changes.d.ts +2 -0
- package/dist/pages/overview/recent-changes.js +144 -0
- package/dist/pages/overview/recent-changes.js.map +1 -0
- package/dist/pages/overview/status.d.ts +3 -0
- package/dist/pages/overview/status.js +36 -0
- package/dist/pages/overview/status.js.map +1 -0
- package/dist/pages/settings/availability.d.ts +2 -0
- package/dist/pages/settings/availability.js +46 -0
- package/dist/pages/settings/availability.js.map +1 -0
- package/dist/pages/settings/options.d.ts +10 -0
- package/dist/pages/settings/options.js +58 -0
- package/dist/pages/settings/options.js.map +1 -0
- package/dist/pages/settings/page.d.ts +2 -1
- package/dist/pages/settings/page.js +39 -13
- package/dist/pages/settings/page.js.map +1 -1
- package/dist/pages/settings/sections.d.ts +2 -0
- package/dist/pages/settings/sections.js +164 -0
- package/dist/pages/settings/sections.js.map +1 -0
- package/dist/pages/skills/page.d.ts +2 -1
- package/dist/pages/skills/page.js +122 -12
- package/dist/pages/skills/page.js.map +1 -1
- package/dist/routes/activity-csv.d.ts +2 -0
- package/dist/routes/activity-csv.js +42 -0
- package/dist/routes/activity-csv.js.map +1 -0
- package/dist/routes/activity.d.ts +8 -0
- package/dist/routes/activity.js +105 -0
- package/dist/routes/activity.js.map +1 -0
- package/dist/routes/actor.d.ts +2 -0
- package/dist/routes/actor.js +8 -0
- package/dist/routes/actor.js.map +1 -0
- package/dist/routes/banner.d.ts +3 -0
- package/dist/routes/banner.js +9 -0
- package/dist/routes/banner.js.map +1 -0
- package/dist/routes/builder.js +1 -5
- package/dist/routes/builder.js.map +1 -1
- package/dist/routes/changes.d.ts +17 -0
- package/dist/routes/changes.js +152 -0
- package/dist/routes/changes.js.map +1 -0
- package/dist/routes/channels.js +2 -1
- package/dist/routes/channels.js.map +1 -1
- package/dist/routes/index.d.ts +3 -0
- package/dist/routes/index.js +3 -0
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/list-query.d.ts +9 -0
- package/dist/routes/list-query.js +34 -0
- package/dist/routes/list-query.js.map +1 -0
- package/dist/routes/metric-shapes.d.ts +8 -0
- package/dist/routes/metric-shapes.js +107 -0
- package/dist/routes/metric-shapes.js.map +1 -0
- package/dist/routes/metrics.d.ts +5 -48
- package/dist/routes/metrics.js +52 -42
- package/dist/routes/metrics.js.map +1 -1
- package/dist/routes/settings.d.ts +3 -16
- package/dist/routes/settings.js +40 -14
- package/dist/routes/settings.js.map +1 -1
- package/dist/routes/sidecar-results.d.ts +6 -0
- package/dist/routes/sidecar-results.js +44 -0
- package/dist/routes/sidecar-results.js.map +1 -0
- package/dist/routes/skills.d.ts +4 -14
- package/dist/routes/skills.js +91 -6
- package/dist/routes/skills.js.map +1 -1
- package/dist/routes/status-shapes.d.ts +5 -0
- package/dist/routes/status-shapes.js +176 -0
- package/dist/routes/status-shapes.js.map +1 -0
- package/dist/routes/status.d.ts +9 -0
- package/dist/routes/status.js +92 -0
- package/dist/routes/status.js.map +1 -0
- package/dist/routes/undo-confirm.d.ts +3 -0
- package/dist/routes/undo-confirm.js +51 -0
- package/dist/routes/undo-confirm.js.map +1 -0
- package/dist/sidecar/http-client.d.ts +11 -0
- package/dist/sidecar/http-client.js +59 -0
- package/dist/sidecar/http-client.js.map +1 -0
- package/dist/sidecar/index.d.ts +2 -0
- package/dist/sidecar/index.js +19 -0
- package/dist/sidecar/index.js.map +1 -0
- package/dist/sidecar/query.d.ts +3 -0
- package/dist/sidecar/query.js +25 -0
- package/dist/sidecar/query.js.map +1 -0
- package/dist/types/activity.d.ts +31 -0
- package/dist/types/activity.js +3 -0
- package/dist/types/activity.js.map +1 -0
- package/dist/types/changes.d.ts +45 -0
- package/dist/types/changes.js +3 -0
- package/dist/types/changes.js.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/metrics.d.ts +76 -0
- package/dist/types/metrics.js +3 -0
- package/dist/types/metrics.js.map +1 -0
- package/dist/types/skills.d.ts +51 -0
- package/dist/types/skills.js +3 -0
- package/dist/types/skills.js.map +1 -0
- package/dist/types/status.d.ts +16 -0
- package/dist/types/status.js +3 -0
- package/dist/types/status.js.map +1 -0
- package/dist/vocabulary/enumerations.d.ts +9 -0
- package/dist/vocabulary/enumerations.js +52 -0
- package/dist/vocabulary/enumerations.js.map +1 -0
- package/dist/vocabulary/index.d.ts +5 -0
- package/dist/vocabulary/index.js +22 -0
- package/dist/vocabulary/index.js.map +1 -0
- package/dist/vocabulary/keys.d.ts +1 -0
- package/dist/vocabulary/keys.js +8 -0
- package/dist/vocabulary/keys.js.map +1 -0
- package/dist/vocabulary/options.d.ts +7 -0
- package/dist/vocabulary/options.js +33 -0
- package/dist/vocabulary/options.js.map +1 -0
- package/dist/vocabulary/tools.d.ts +7 -0
- package/dist/vocabulary/tools.js +99 -0
- package/dist/vocabulary/tools.js.map +1 -0
- package/dist/vocabulary/types.d.ts +20 -0
- package/dist/vocabulary/types.js +3 -0
- package/dist/vocabulary/types.js.map +1 -0
- package/frontend-vue/app/chat/components/AnswerRecord.vue +95 -0
- package/frontend-vue/app/chat/components/ApprovalDock.vue +371 -0
- package/frontend-vue/app/chat/components/ChangeSetCard.vue +297 -0
- package/frontend-vue/app/chat/components/ChatEmpty.vue +142 -0
- package/frontend-vue/app/chat/components/ChatView.vue +664 -406
- package/frontend-vue/app/chat/components/Composer.vue +589 -0
- package/frontend-vue/app/chat/components/ConnectionBanner.vue +41 -65
- package/frontend-vue/app/chat/components/ConversationDrawer.vue +387 -177
- package/frontend-vue/app/chat/components/DiffView.vue +131 -0
- package/frontend-vue/app/chat/components/FullAutoBanner.vue +76 -0
- package/frontend-vue/app/chat/components/FullAutoDialog.vue +103 -0
- package/frontend-vue/app/chat/components/MarkdownContent.vue +15 -15
- package/frontend-vue/app/chat/components/MessageList.vue +389 -295
- package/frontend-vue/app/chat/components/NoticeCard.vue +193 -0
- package/frontend-vue/app/chat/components/PanelHeader.vue +242 -0
- package/frontend-vue/app/chat/components/PermissionCard.vue +470 -0
- package/frontend-vue/app/chat/components/PlanCard.vue +115 -0
- package/frontend-vue/app/chat/components/QuestionDock.vue +407 -0
- package/frontend-vue/app/chat/components/QueueDock.vue +310 -0
- package/frontend-vue/app/chat/components/RulesList.vue +97 -0
- package/frontend-vue/app/chat/components/StepsDock.vue +181 -0
- package/frontend-vue/app/chat/components/ToolCluster.vue +186 -178
- package/frontend-vue/app/chat/components/ToolRow.vue +251 -0
- package/frontend-vue/app/chat/components/TurnErrorCard.vue +135 -0
- package/frontend-vue/app/chat/composables/conversation-events.ts +404 -0
- package/frontend-vue/app/chat/composables/useChangeSetActions.ts +135 -0
- package/frontend-vue/app/chat/composables/useChatChannel.ts +11 -3
- package/frontend-vue/app/chat/composables/useChatI18n.ts +35 -0
- package/frontend-vue/app/chat/composables/useComposerAttachments.ts +111 -0
- package/frontend-vue/app/chat/composables/useConversation.ts +149 -651
- package/frontend-vue/app/chat/composables/useConversationId.ts +2 -10
- package/frontend-vue/app/chat/composables/useConversationList.ts +77 -21
- package/frontend-vue/app/chat/composables/useConversationMode.ts +73 -0
- package/frontend-vue/app/chat/composables/usePaletteTurn.ts +124 -0
- package/frontend-vue/app/chat/composables/usePermissionQueue.ts +211 -34
- package/frontend-vue/app/chat/composables/useQuestionQueue.ts +103 -21
- package/frontend-vue/app/chat/composables/useQueueActions.ts +55 -0
- package/frontend-vue/app/chat/composables/useSettings.ts +17 -34
- package/frontend-vue/app/chat/constants/attachments.ts +2 -1
- package/frontend-vue/app/chat/constants/conversation.ts +18 -32
- package/frontend-vue/app/chat/constants/protocol.ts +25 -2
- package/frontend-vue/app/chat/constants/run-status.ts +8 -14
- package/frontend-vue/app/chat/constants/settings.ts +5 -47
- package/frontend-vue/app/chat/types/conversation.ts +72 -2
- package/frontend-vue/app/chat/types/permission.ts +31 -0
- package/frontend-vue/app/chat/types/protocol.ts +226 -0
- package/frontend-vue/app/chat/types/question.ts +10 -1
- package/frontend-vue/app/chat/types/settings.ts +9 -5
- package/frontend-vue/app/chat/utils/approval-keyboard.ts +49 -0
- package/frontend-vue/app/chat/utils/arrays.ts +10 -0
- package/frontend-vue/app/chat/utils/conversation-groups.ts +96 -0
- package/frontend-vue/app/chat/utils/conversation-messages.ts +251 -0
- package/frontend-vue/app/chat/utils/diff.ts +78 -0
- package/frontend-vue/app/chat/utils/format.ts +43 -0
- package/frontend-vue/app/chat/utils/markdown.ts +1 -1
- package/frontend-vue/app/chat/utils/permission-view.ts +159 -0
- package/frontend-vue/app/chat/utils/platform.ts +34 -0
- package/frontend-vue/app/chat/utils/queue.ts +18 -0
- package/frontend-vue/app/chat/utils/render-items.ts +164 -0
- package/frontend-vue/app/chat/utils/run-status.ts +19 -23
- package/frontend-vue/app/chat/utils/suggestions.ts +101 -0
- package/frontend-vue/app/chat/utils/todos.ts +2 -2
- package/frontend-vue/app/chat/utils/tool-lexicon.ts +540 -0
- package/frontend-vue/app/chat/utils/tool-state.ts +60 -0
- package/frontend-vue/app/components/ActivityDetail.vue +235 -0
- package/frontend-vue/app/components/ChangesView.vue +249 -0
- package/frontend-vue/app/components/ChatPanel.vue +141 -196
- package/frontend-vue/app/components/PaletteAnswer.vue +185 -0
- package/frontend-vue/app/components/SkillCard.vue +77 -0
- package/frontend-vue/app/components/SkillDetail.vue +188 -0
- package/frontend-vue/app/plugins/ai.client.ts +349 -57
- package/frontend-vue/app/plugins/side-panel.ts +13 -0
- package/frontend-vue/app/runtime/assistant-activity.ts +105 -0
- package/frontend-vue/app/runtime/assistant-commands.ts +210 -0
- package/frontend-vue/app/runtime/assistant-notifications.ts +181 -0
- package/frontend-vue/app/runtime/assistant-session.ts +49 -6
- package/frontend-vue/app/runtime/channel-client.ts +3 -6
- package/frontend-vue/app/runtime/constants.ts +29 -35
- package/frontend-vue/app/runtime/host-commands.ts +4 -4
- package/frontend-vue/app/runtime/listeners.ts +1 -1
- package/frontend-vue/app/runtime/navigation-complete.ts +1 -1
- package/frontend-vue/app/runtime/panel-intents.ts +55 -0
- package/frontend-vue/app/runtime/shortcuts.ts +3 -1
- package/frontend-vue/app/runtime/sidecar-status.ts +9 -1
- package/frontend-vue/app/runtime/stream-holds.ts +24 -0
- package/frontend-vue/app/views/ChangeSetPanel.vue +222 -0
- package/frontend-vue/app/views/DecisionLabel.vue +30 -0
- package/frontend-vue/app/views/DiffView.vue +215 -0
- package/frontend-vue/app/views/ResultPill.vue +32 -0
- package/frontend-vue/app/views/RowStepper.vue +48 -0
- package/frontend-vue/app/views/UnavailableState.vue +66 -0
- package/frontend-vue/app/views/composables/useAiRequest.ts +89 -0
- package/frontend-vue/app/views/composables/useAssistant.ts +33 -0
- package/frontend-vue/app/views/composables/useChangeSetActions.ts +102 -0
- package/frontend-vue/app/views/composables/useViewFormat.ts +55 -0
- package/frontend-vue/app/views/constants.ts +43 -0
- package/frontend-vue/app/views/types.ts +189 -0
- package/frontend-vue/app/views/utils/activity.ts +77 -0
- package/frontend-vue/app/views/utils/change-sets.ts +44 -0
- package/frontend-vue/app/views/utils/diff.ts +98 -0
- package/frontend-vue/app/views/utils/moment.ts +92 -0
- package/frontend-vue/app/views/utils/skills.ts +27 -0
- package/frontend-vue/app/views/utils/tools.ts +73 -0
- package/frontend-vue/dms.frontend.ts +17 -5
- package/frontend-vue/i18n/locales/dms-ai-pages-en-GB.json +607 -0
- package/frontend-vue/i18n/locales/dms-ai-pages-fr-FR.json +607 -0
- package/frontend-vue/i18n/locales/dms-ai-panel-en-GB.json +425 -0
- package/frontend-vue/i18n/locales/dms-ai-panel-fr-FR.json +425 -0
- package/frontend-vue/i18n/locales/dms-ai-views-en-GB.json +142 -0
- package/frontend-vue/i18n/locales/dms-ai-views-fr-FR.json +142 -0
- package/frontend-vue/package.json +1 -1
- package/frontend-vue/tests/chat/conversation-events.test.ts +590 -0
- package/frontend-vue/tests/chat/diff-and-keys.test.ts +178 -0
- package/frontend-vue/tests/chat/tool-lexicon.test.ts +188 -0
- package/frontend-vue/tests/chat/useConversation.test.ts +36 -33
- package/frontend-vue/tests/chat-panel.test.ts +78 -131
- package/frontend-vue/tests/i18n-panel.test.ts +118 -0
- package/frontend-vue/tests/palette-assistant.test.ts +220 -0
- package/frontend-vue/tests/panel-states.test.ts +806 -0
- package/frontend-vue/tests/sidecar-guest.test.ts +35 -3
- package/frontend-vue/tests/support/i18n.ts +49 -0
- package/frontend-vue/tests/support/panel-harness.ts +198 -0
- package/frontend-vue/tests/support/stubs.ts +201 -0
- package/frontend-vue/tests/views/diff-view.test.ts +149 -0
- package/frontend-vue/tests/views/view-format.test.ts +59 -0
- package/package.json +4 -3
- package/sidecar/dist/agent/attachment-files.d.ts +0 -1
- package/sidecar/dist/agent/attachment-files.js +1 -1
- package/sidecar/dist/agent/attachment-files.js.map +1 -1
- package/sidecar/dist/agent/call-ledger.d.ts +6 -0
- package/sidecar/dist/agent/call-ledger.js +41 -0
- package/sidecar/dist/agent/call-ledger.js.map +1 -0
- package/sidecar/dist/agent/command-analysis.d.ts +9 -0
- package/sidecar/dist/agent/command-analysis.js +104 -0
- package/sidecar/dist/agent/command-analysis.js.map +1 -0
- package/sidecar/dist/agent/conversation-modes.d.ts +32 -0
- package/sidecar/dist/agent/conversation-modes.js +122 -0
- package/sidecar/dist/agent/conversation-modes.js.map +1 -0
- package/sidecar/dist/agent/edit-targets.d.ts +5 -0
- package/sidecar/dist/agent/edit-targets.js +41 -0
- package/sidecar/dist/agent/edit-targets.js.map +1 -0
- package/sidecar/dist/agent/effective-mode.d.ts +9 -2
- package/sidecar/dist/agent/effective-mode.js +14 -16
- package/sidecar/dist/agent/effective-mode.js.map +1 -1
- package/sidecar/dist/agent/host-context.js +2 -2
- package/sidecar/dist/agent/host-context.js.map +1 -1
- package/sidecar/dist/agent/line-diff.d.ts +8 -0
- package/sidecar/dist/agent/line-diff.js +204 -0
- package/sidecar/dist/agent/line-diff.js.map +1 -0
- package/sidecar/dist/agent/permission-bus.d.ts +55 -10
- package/sidecar/dist/agent/permission-bus.js +130 -100
- package/sidecar/dist/agent/permission-bus.js.map +1 -1
- package/sidecar/dist/agent/permission-preview.d.ts +20 -0
- package/sidecar/dist/agent/permission-preview.js +203 -0
- package/sidecar/dist/agent/permission-preview.js.map +1 -0
- package/sidecar/dist/agent/permission-rules.d.ts +17 -0
- package/sidecar/dist/agent/permission-rules.js +95 -0
- package/sidecar/dist/agent/permission-rules.js.map +1 -0
- package/sidecar/dist/agent/provider.d.ts +12 -4
- package/sidecar/dist/agent/question-bus.d.ts +14 -2
- package/sidecar/dist/agent/question-bus.js +30 -11
- package/sidecar/dist/agent/question-bus.js.map +1 -1
- package/sidecar/dist/agent/runner-events.d.ts +3 -1
- package/sidecar/dist/agent/runner.d.ts +6 -4
- package/sidecar/dist/agent/runner.js +24 -7
- package/sidecar/dist/agent/runner.js.map +1 -1
- package/sidecar/dist/agent/switching-runner.js +1 -0
- package/sidecar/dist/agent/switching-runner.js.map +1 -1
- package/sidecar/dist/agent/tool-kinds.d.ts +12 -0
- package/sidecar/dist/agent/tool-kinds.js +50 -0
- package/sidecar/dist/agent/tool-kinds.js.map +1 -0
- package/sidecar/dist/agent/typecheck.d.ts +2 -6
- package/sidecar/dist/audit/activity-query.d.ts +37 -0
- package/sidecar/dist/audit/activity-query.js +111 -0
- package/sidecar/dist/audit/activity-query.js.map +1 -0
- package/sidecar/dist/audit/activity-target.d.ts +2 -0
- package/sidecar/dist/audit/activity-target.js +46 -0
- package/sidecar/dist/audit/activity-target.js.map +1 -0
- package/sidecar/dist/audit/activity.d.ts +45 -0
- package/sidecar/dist/audit/activity.js +255 -0
- package/sidecar/dist/audit/activity.js.map +1 -0
- package/sidecar/dist/audit/call-audit.d.ts +11 -0
- package/sidecar/dist/audit/call-audit.js +23 -0
- package/sidecar/dist/audit/call-audit.js.map +1 -0
- package/sidecar/dist/checkpoints/checkpoints.d.ts +69 -0
- package/sidecar/dist/checkpoints/checkpoints.js +244 -0
- package/sidecar/dist/checkpoints/checkpoints.js.map +1 -0
- package/sidecar/dist/checkpoints/shadow-git.d.ts +23 -0
- package/sidecar/dist/checkpoints/shadow-git.js +173 -0
- package/sidecar/dist/checkpoints/shadow-git.js.map +1 -0
- package/sidecar/dist/constants/agent.d.ts +2 -0
- package/sidecar/dist/constants/agent.js +4 -0
- package/sidecar/dist/constants/agent.js.map +1 -1
- package/sidecar/dist/constants/audit.d.ts +22 -0
- package/sidecar/dist/constants/audit.js +49 -0
- package/sidecar/dist/constants/audit.js.map +1 -0
- package/sidecar/dist/constants/builder.d.ts +3 -0
- package/sidecar/dist/constants/builder.js +2 -0
- package/sidecar/dist/constants/builder.js.map +1 -1
- package/sidecar/dist/constants/checkpoints.d.ts +15 -0
- package/sidecar/dist/constants/checkpoints.js +26 -0
- package/sidecar/dist/constants/checkpoints.js.map +1 -0
- package/sidecar/dist/constants/claude.d.ts +1 -0
- package/sidecar/dist/constants/claude.js +1 -0
- package/sidecar/dist/constants/claude.js.map +1 -1
- package/sidecar/dist/constants/codex.d.ts +2 -4
- package/sidecar/dist/constants/codex.js +2 -4
- package/sidecar/dist/constants/codex.js.map +1 -1
- package/sidecar/dist/constants/http.d.ts +1 -0
- package/sidecar/dist/constants/http.js +1 -0
- package/sidecar/dist/constants/http.js.map +1 -1
- package/sidecar/dist/constants/mcp.d.ts +3 -0
- package/sidecar/dist/constants/mcp.js +9 -0
- package/sidecar/dist/constants/mcp.js.map +1 -1
- package/sidecar/dist/constants/permissions.d.ts +9 -3
- package/sidecar/dist/constants/permissions.js +9 -2
- package/sidecar/dist/constants/permissions.js.map +1 -1
- package/sidecar/dist/constants/settings.d.ts +2 -1
- package/sidecar/dist/constants/settings.js +7 -1
- package/sidecar/dist/constants/settings.js.map +1 -1
- package/sidecar/dist/constants/tool-kinds.d.ts +14 -0
- package/sidecar/dist/constants/tool-kinds.js +65 -0
- package/sidecar/dist/constants/tool-kinds.js.map +1 -0
- package/sidecar/dist/index.js +28 -2
- package/sidecar/dist/index.js.map +1 -1
- package/sidecar/dist/mcp/define-tool.d.ts +3 -2
- package/sidecar/dist/mcp/tool-definitions.js +4 -1
- package/sidecar/dist/mcp/tool-definitions.js.map +1 -1
- package/sidecar/dist/mcp/tools/ask-user.d.ts +2 -2
- package/sidecar/dist/mcp/tools/ask-user.js +7 -4
- package/sidecar/dist/mcp/tools/ask-user.js.map +1 -1
- package/sidecar/dist/mcp/tools/builder-catalog.d.ts +3 -0
- package/sidecar/dist/mcp/tools/builder-catalog.js +86 -0
- package/sidecar/dist/mcp/tools/builder-catalog.js.map +1 -0
- package/sidecar/dist/mcp/tools/builder-gate.d.ts +8 -0
- package/sidecar/dist/mcp/tools/builder-gate.js +22 -0
- package/sidecar/dist/mcp/tools/builder-gate.js.map +1 -0
- package/sidecar/dist/mcp/tools/builder.d.ts +7 -2
- package/sidecar/dist/mcp/tools/builder.js +48 -7
- package/sidecar/dist/mcp/tools/builder.js.map +1 -1
- package/sidecar/dist/mcp/types.d.ts +2 -0
- package/sidecar/dist/metrics/aggregate.d.ts +13 -10
- package/sidecar/dist/metrics/aggregate.js +140 -143
- package/sidecar/dist/metrics/aggregate.js.map +1 -1
- package/sidecar/dist/metrics/types.d.ts +36 -23
- package/sidecar/dist/metrics/types.js +3 -1
- package/sidecar/dist/metrics/types.js.map +1 -1
- package/sidecar/dist/pages/imports-scanner.d.ts +1 -1
- package/sidecar/dist/pages/imports-scanner.js +2 -5
- package/sidecar/dist/pages/imports-scanner.js.map +1 -1
- package/sidecar/dist/prompts/agent.d.ts +1 -3
- package/sidecar/dist/prompts/agent.js +4 -4
- package/sidecar/dist/prompts/agent.js.map +1 -1
- package/sidecar/dist/prompts/builder.d.ts +2 -2
- package/sidecar/dist/prompts/builder.js +2 -2
- package/sidecar/dist/protocol/events.d.ts +1084 -18
- package/sidecar/dist/protocol/events.js +239 -5
- package/sidecar/dist/protocol/events.js.map +1 -1
- package/sidecar/dist/protocol/messages.d.ts +273 -19
- package/sidecar/dist/protocol/messages.js +107 -7
- package/sidecar/dist/protocol/messages.js.map +1 -1
- package/sidecar/dist/providers/claude/config.d.ts +3 -2
- package/sidecar/dist/providers/claude/config.js +10 -4
- package/sidecar/dist/providers/claude/config.js.map +1 -1
- package/sidecar/dist/providers/claude/provider.d.ts +2 -8
- package/sidecar/dist/providers/claude/provider.js +37 -35
- package/sidecar/dist/providers/claude/provider.js.map +1 -1
- package/sidecar/dist/providers/claude/safe-mode.d.ts +6 -1
- package/sidecar/dist/providers/claude/safe-mode.js +13 -5
- package/sidecar/dist/providers/claude/safe-mode.js.map +1 -1
- package/sidecar/dist/providers/codex/adapter.d.ts +6 -0
- package/sidecar/dist/providers/codex/adapter.js +14 -4
- package/sidecar/dist/providers/codex/adapter.js.map +1 -1
- package/sidecar/dist/providers/codex/client.d.ts +0 -11
- package/sidecar/dist/providers/codex/config.d.ts +1 -3
- package/sidecar/dist/providers/codex/config.js +5 -11
- package/sidecar/dist/providers/codex/config.js.map +1 -1
- package/sidecar/dist/providers/codex/permissions.d.ts +7 -4
- package/sidecar/dist/providers/codex/permissions.js +32 -16
- package/sidecar/dist/providers/codex/permissions.js.map +1 -1
- package/sidecar/dist/providers/codex/process.js +1 -5
- package/sidecar/dist/providers/codex/process.js.map +1 -1
- package/sidecar/dist/providers/codex/provider.js +14 -3
- package/sidecar/dist/providers/codex/provider.js.map +1 -1
- package/sidecar/dist/providers/codex/skills.d.ts +0 -1
- package/sidecar/dist/providers/codex/skills.js +1 -1
- package/sidecar/dist/providers/codex/skills.js.map +1 -1
- package/sidecar/dist/providers/codex/stop.js +1 -10
- package/sidecar/dist/providers/codex/stop.js.map +1 -1
- package/sidecar/dist/server/change-set-actions.d.ts +10 -0
- package/sidecar/dist/server/change-set-actions.js +14 -0
- package/sidecar/dist/server/change-set-actions.js.map +1 -0
- package/sidecar/dist/server/chat-events.d.ts +15 -0
- package/sidecar/dist/server/chat-events.js +115 -0
- package/sidecar/dist/server/chat-events.js.map +1 -0
- package/sidecar/dist/server/chat-socket-registry.d.ts +2 -0
- package/sidecar/dist/server/chat-socket-registry.js +48 -37
- package/sidecar/dist/server/chat-socket-registry.js.map +1 -1
- package/sidecar/dist/server/conversation-runs.d.ts +13 -0
- package/sidecar/dist/server/conversation-runs.js +114 -0
- package/sidecar/dist/server/conversation-runs.js.map +1 -0
- package/sidecar/dist/server/http-io.d.ts +4 -0
- package/sidecar/dist/server/http-io.js +31 -0
- package/sidecar/dist/server/http-io.js.map +1 -0
- package/sidecar/dist/server/http-params.d.ts +9 -0
- package/sidecar/dist/server/http-params.js +79 -0
- package/sidecar/dist/server/http-params.js.map +1 -0
- package/sidecar/dist/server/http-routes.d.ts +27 -0
- package/sidecar/dist/server/http-routes.js +281 -0
- package/sidecar/dist/server/http-routes.js.map +1 -0
- package/sidecar/dist/server/http.d.ts +6 -1
- package/sidecar/dist/server/http.js +76 -164
- package/sidecar/dist/server/http.js.map +1 -1
- package/sidecar/dist/server/pending-queue.d.ts +2 -0
- package/sidecar/dist/server/pending-queue.js +16 -0
- package/sidecar/dist/server/pending-queue.js.map +1 -1
- package/sidecar/dist/server/permission-events.d.ts +15 -0
- package/sidecar/dist/server/permission-events.js +163 -0
- package/sidecar/dist/server/permission-events.js.map +1 -0
- package/sidecar/dist/server/routing.d.ts +4 -52
- package/sidecar/dist/server/routing.js +190 -501
- package/sidecar/dist/server/routing.js.map +1 -1
- package/sidecar/dist/server/safety-net.d.ts +7 -0
- package/sidecar/dist/server/safety-net.js +34 -6
- package/sidecar/dist/server/safety-net.js.map +1 -1
- package/sidecar/dist/server/services.d.ts +55 -0
- package/sidecar/dist/server/services.js +2 -0
- package/sidecar/dist/server/services.js.map +1 -0
- package/sidecar/dist/server/tool-calls.d.ts +6 -0
- package/sidecar/dist/server/tool-calls.js +134 -0
- package/sidecar/dist/server/tool-calls.js.map +1 -0
- package/sidecar/dist/server/turn-registry.d.ts +44 -0
- package/sidecar/dist/server/turn-registry.js +40 -0
- package/sidecar/dist/server/turn-registry.js.map +1 -0
- package/sidecar/dist/server/turns.d.ts +17 -0
- package/sidecar/dist/server/turns.js +335 -0
- package/sidecar/dist/server/turns.js.map +1 -0
- package/sidecar/dist/server/ws.d.ts +4 -1
- package/sidecar/dist/server/ws.js +102 -62
- package/sidecar/dist/server/ws.js.map +1 -1
- package/sidecar/dist/skills/build-catalog.d.ts +1 -0
- package/sidecar/dist/skills/build-catalog.js +14 -1
- package/sidecar/dist/skills/build-catalog.js.map +1 -1
- package/sidecar/dist/skills/skill-usage.d.ts +22 -0
- package/sidecar/dist/skills/skill-usage.js +97 -0
- package/sidecar/dist/skills/skill-usage.js.map +1 -0
- package/sidecar/dist/state/change-sets.d.ts +12 -0
- package/sidecar/dist/state/change-sets.js +77 -0
- package/sidecar/dist/state/change-sets.js.map +1 -0
- package/sidecar/dist/state/conversations.d.ts +19 -7
- package/sidecar/dist/state/conversations.js +61 -20
- package/sidecar/dist/state/conversations.js.map +1 -1
- package/sidecar/dist/state/host-state.d.ts +2 -1
- package/sidecar/dist/state/settings-store.d.ts +1 -0
- package/sidecar/dist/state/settings-store.js +27 -26
- package/sidecar/dist/state/settings-store.js.map +1 -1
- package/sidecar/dist/state/settings-types.d.ts +11 -1
- package/sidecar/dist/state/settings-types.js +3 -1
- package/sidecar/dist/state/settings-types.js.map +1 -1
- package/sidecar/dist/state/types.d.ts +114 -8
- package/sidecar/dist/state/types.js +6 -3
- package/sidecar/dist/state/types.js.map +1 -1
- package/skills/dms-builder-safe/REFERENCE.md +1 -1
- package/skills/dms-builder-safe/SKILL.md +12 -7
- package/dist/routes/proxy.d.ts +0 -4
- package/dist/routes/proxy.js +0 -55
- package/dist/routes/proxy.js.map +0 -1
- package/frontend-vue/app/chat/components/ComposerInput.vue +0 -742
- package/frontend-vue/app/chat/components/PermissionRequests.vue +0 -323
- package/frontend-vue/app/chat/components/QuestionPrompt.vue +0 -275
- package/frontend-vue/app/chat/components/QueuedMessages.vue +0 -109
- package/frontend-vue/app/chat/components/TodoList.vue +0 -291
- package/frontend-vue/app/chat/components/ToolCallEntry.vue +0 -218
- package/frontend-vue/app/chat/constants/connection-banner.ts +0 -7
- package/frontend-vue/app/chat/constants/conversation-drawer.ts +0 -13
- package/frontend-vue/app/chat/constants/permissions.ts +0 -50
- package/frontend-vue/app/chat/utils/tool-summary.ts +0 -53
- package/frontend-vue/app/components/ActivityView.vue +0 -94
- package/frontend-vue/app/components/SettingsView.vue +0 -387
- package/frontend-vue/app/components/SkillsView.vue +0 -230
- package/frontend-vue/app/runtime/header-action.ts +0 -64
- package/frontend-vue/app/runtime/overlay-prefs.ts +0 -89
- package/frontend-vue/app/runtime/panel-state.ts +0 -88
- package/frontend-vue/tests/overlay-prefs.test.ts +0 -91
- package/frontend-vue/tests/panel-state.test.ts +0 -58
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { bareToolName, isEditTool, isMutatingBuilderTool, isReadOnlyTool, permissionKindOf, } from "../agent/tool-kinds.js";
|
|
2
|
+
import { DEFAULT_PROVIDER_NAME, } from "../state/types.js";
|
|
3
|
+
import { activityTarget, parseArgs } from "./activity-target.js";
|
|
4
|
+
export const UNDO_TOOL_NAME = "UndoChangeSet";
|
|
5
|
+
export const REDO_TOOL_NAME = "RedoChangeSet";
|
|
6
|
+
const STATE_CHANGE_TOOL = {
|
|
7
|
+
undone: UNDO_TOOL_NAME,
|
|
8
|
+
applied: REDO_TOOL_NAME,
|
|
9
|
+
};
|
|
10
|
+
const RESULT_BY_ALLOWED = {
|
|
11
|
+
denied: "denied",
|
|
12
|
+
blocked: "blocked",
|
|
13
|
+
expired: "expired",
|
|
14
|
+
};
|
|
15
|
+
const DETAIL_BY_RESULT = {
|
|
16
|
+
blocked: "Blocked by safe mode",
|
|
17
|
+
expired: "Request expired",
|
|
18
|
+
};
|
|
19
|
+
const DENIED_RESULTS = [
|
|
20
|
+
"denied",
|
|
21
|
+
"blocked",
|
|
22
|
+
"expired",
|
|
23
|
+
];
|
|
24
|
+
function indexConversation(entry, changeSets) {
|
|
25
|
+
const results = new Map();
|
|
26
|
+
const permissions = new Map();
|
|
27
|
+
for (const message of entry.conversation.messages) {
|
|
28
|
+
if (message.callId === undefined)
|
|
29
|
+
continue;
|
|
30
|
+
if (message.role === "tool_result")
|
|
31
|
+
results.set(message.callId, message);
|
|
32
|
+
if (message.role === "permission")
|
|
33
|
+
permissions.set(message.callId, message);
|
|
34
|
+
}
|
|
35
|
+
const ownSets = changeSets.filter((c) => c.conversationId === entry.id);
|
|
36
|
+
return {
|
|
37
|
+
results,
|
|
38
|
+
permissions,
|
|
39
|
+
changeSets: new Map(ownSets.map((c) => [c.id, c])),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function undecidedAllowedBy(toolName) {
|
|
43
|
+
if (isReadOnlyTool(toolName))
|
|
44
|
+
return "read_auto";
|
|
45
|
+
return isMutatingBuilderTool(toolName) ? "builder_auto" : "approved";
|
|
46
|
+
}
|
|
47
|
+
function resultOf(result, allowedBy, isRunning) {
|
|
48
|
+
const decided = RESULT_BY_ALLOWED[allowedBy];
|
|
49
|
+
if (decided !== undefined && result?.outcome !== "stopped")
|
|
50
|
+
return decided;
|
|
51
|
+
if (result === undefined)
|
|
52
|
+
return isRunning ? "pending" : "stopped";
|
|
53
|
+
if (result.outcome !== undefined)
|
|
54
|
+
return result.outcome;
|
|
55
|
+
return result.status === "error" ? "failed" : "done";
|
|
56
|
+
}
|
|
57
|
+
function isChange(record) {
|
|
58
|
+
if (record.result !== "done")
|
|
59
|
+
return false;
|
|
60
|
+
if (record.changeSetId !== undefined)
|
|
61
|
+
return true;
|
|
62
|
+
return isEditTool(record.tool) || isMutatingBuilderTool(record.tool);
|
|
63
|
+
}
|
|
64
|
+
function categoriesOf(record) {
|
|
65
|
+
const categories = [];
|
|
66
|
+
if (isChange(record))
|
|
67
|
+
categories.push("changed");
|
|
68
|
+
if (record.isAsked)
|
|
69
|
+
categories.push("asked");
|
|
70
|
+
if (DENIED_RESULTS.includes(record.result))
|
|
71
|
+
categories.push("denied");
|
|
72
|
+
if (record.result === "failed")
|
|
73
|
+
categories.push("failed");
|
|
74
|
+
return categories;
|
|
75
|
+
}
|
|
76
|
+
function lineCounts(record, changeSet) {
|
|
77
|
+
const file = changeSet?.files.find((f) => record.target.endsWith(f.path));
|
|
78
|
+
if (file === undefined)
|
|
79
|
+
return {};
|
|
80
|
+
return { added: file.added, removed: file.removed };
|
|
81
|
+
}
|
|
82
|
+
function finish(record, changeSet) {
|
|
83
|
+
const withCounts = { ...record, ...lineCounts(record, changeSet) };
|
|
84
|
+
const detail = record.resultDetail ?? DETAIL_BY_RESULT[record.result];
|
|
85
|
+
return {
|
|
86
|
+
...withCounts,
|
|
87
|
+
resultDetail: detail,
|
|
88
|
+
category: categoriesOf(withCounts),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function callRecord(input, use) {
|
|
92
|
+
const { entry, index } = input;
|
|
93
|
+
const callId = use.callId ?? String(use.timestampMs);
|
|
94
|
+
const toolName = use.toolName ?? "";
|
|
95
|
+
const result = index.results.get(callId);
|
|
96
|
+
const permission = index.permissions.get(callId);
|
|
97
|
+
const allowedBy = result?.allowedBy ??
|
|
98
|
+
use.allowedBy ??
|
|
99
|
+
permission?.allowedBy ??
|
|
100
|
+
undecidedAllowedBy(toolName);
|
|
101
|
+
const changeSetId = result?.changeSetId ?? use.changeSetId;
|
|
102
|
+
const changeSet = changeSetId === undefined ? undefined : index.changeSets.get(changeSetId);
|
|
103
|
+
const args = parseArgs(use.content);
|
|
104
|
+
const record = {
|
|
105
|
+
id: `${entry.id}:${callId}`,
|
|
106
|
+
timestampMs: use.timestampMs,
|
|
107
|
+
tool: bareToolName(toolName),
|
|
108
|
+
target: activityTarget(toolName, args, input.sources.hostProjectRoot),
|
|
109
|
+
agent: entry.conversation.provider ?? DEFAULT_PROVIDER_NAME,
|
|
110
|
+
allowedBy,
|
|
111
|
+
result: resultOf(result, allowedBy, input.sources.running.has(entry.id)),
|
|
112
|
+
resultDetail: permission?.feedback,
|
|
113
|
+
changeSetId: changeSet?.id,
|
|
114
|
+
changeSetNumber: changeSet?.number,
|
|
115
|
+
conversationId: entry.id,
|
|
116
|
+
conversationTitle: entry.title,
|
|
117
|
+
durationMs: result === undefined ? undefined : result.timestampMs - use.timestampMs,
|
|
118
|
+
isReadOnly: allowedBy === "read_auto" || isReadOnlyTool(toolName),
|
|
119
|
+
isAutoFix: use.isAutoFix === true,
|
|
120
|
+
category: [],
|
|
121
|
+
kind: permissionKindOf(toolName),
|
|
122
|
+
isAsked: permission !== undefined,
|
|
123
|
+
isAlwaysAsk: permission?.alwaysAsk === true,
|
|
124
|
+
args,
|
|
125
|
+
resultText: result?.content,
|
|
126
|
+
permission,
|
|
127
|
+
endedAtMs: result?.timestampMs,
|
|
128
|
+
};
|
|
129
|
+
return finish(record, changeSet);
|
|
130
|
+
}
|
|
131
|
+
function permissionOnlyRecord(input, permission) {
|
|
132
|
+
const { entry } = input;
|
|
133
|
+
const toolName = permission.toolName ?? "";
|
|
134
|
+
const allowedBy = permission.allowedBy ?? undecidedAllowedBy(toolName);
|
|
135
|
+
const record = {
|
|
136
|
+
id: `${entry.id}:${permission.requestId ?? permission.callId ?? permission.timestampMs}`,
|
|
137
|
+
timestampMs: permission.requestedAtMs ?? permission.timestampMs,
|
|
138
|
+
tool: bareToolName(toolName),
|
|
139
|
+
target: activityTarget(toolName, permission.args, input.sources.hostProjectRoot),
|
|
140
|
+
agent: entry.conversation.provider ?? DEFAULT_PROVIDER_NAME,
|
|
141
|
+
allowedBy,
|
|
142
|
+
result: RESULT_BY_ALLOWED[allowedBy] ?? "done",
|
|
143
|
+
resultDetail: permission.feedback,
|
|
144
|
+
conversationId: entry.id,
|
|
145
|
+
conversationTitle: entry.title,
|
|
146
|
+
isReadOnly: false,
|
|
147
|
+
isAutoFix: false,
|
|
148
|
+
category: [],
|
|
149
|
+
kind: permission.kind ?? permissionKindOf(toolName),
|
|
150
|
+
isAsked: true,
|
|
151
|
+
isAlwaysAsk: permission.alwaysAsk === true,
|
|
152
|
+
args: permission.args,
|
|
153
|
+
permission,
|
|
154
|
+
};
|
|
155
|
+
return finish(record);
|
|
156
|
+
}
|
|
157
|
+
function stateChangeRecords(entry, changeSet) {
|
|
158
|
+
return (changeSet.stateLog ?? []).map((change, position) => finish({
|
|
159
|
+
id: `${entry.id}:${changeSet.id}:${position}`,
|
|
160
|
+
timestampMs: change.atMs,
|
|
161
|
+
tool: STATE_CHANGE_TOOL[change.state] ?? UNDO_TOOL_NAME,
|
|
162
|
+
target: `#${changeSet.number} ${changeSet.title}`,
|
|
163
|
+
agent: changeSet.agent,
|
|
164
|
+
allowedBy: "approved",
|
|
165
|
+
result: "done",
|
|
166
|
+
resultDetail: change.by,
|
|
167
|
+
changeSetId: changeSet.id,
|
|
168
|
+
changeSetNumber: changeSet.number,
|
|
169
|
+
conversationId: entry.id,
|
|
170
|
+
conversationTitle: entry.title,
|
|
171
|
+
isReadOnly: false,
|
|
172
|
+
isAutoFix: changeSet.isAutoFix,
|
|
173
|
+
category: [],
|
|
174
|
+
kind: "other",
|
|
175
|
+
isAsked: false,
|
|
176
|
+
isAlwaysAsk: false,
|
|
177
|
+
args: { changeSetId: changeSet.id },
|
|
178
|
+
}));
|
|
179
|
+
}
|
|
180
|
+
function pendingRecord(input, request, existing) {
|
|
181
|
+
const base = existing ?? {
|
|
182
|
+
id: `${input.entry.id}:${request.callId ?? request.requestId}`,
|
|
183
|
+
timestampMs: request.createdAtMs,
|
|
184
|
+
tool: bareToolName(request.toolName),
|
|
185
|
+
target: activityTarget(request.toolName, request.args, input.sources.hostProjectRoot),
|
|
186
|
+
agent: input.entry.conversation.provider ?? DEFAULT_PROVIDER_NAME,
|
|
187
|
+
allowedBy: "approved",
|
|
188
|
+
result: "pending",
|
|
189
|
+
conversationId: input.entry.id,
|
|
190
|
+
conversationTitle: input.entry.title,
|
|
191
|
+
isReadOnly: false,
|
|
192
|
+
isAutoFix: false,
|
|
193
|
+
category: [],
|
|
194
|
+
kind: request.kind,
|
|
195
|
+
isAsked: true,
|
|
196
|
+
isAlwaysAsk: request.alwaysAsk,
|
|
197
|
+
args: request.args,
|
|
198
|
+
};
|
|
199
|
+
return finish({
|
|
200
|
+
...base,
|
|
201
|
+
result: "pending",
|
|
202
|
+
isAsked: true,
|
|
203
|
+
isAlwaysAsk: request.alwaysAsk,
|
|
204
|
+
expiresAtMs: request.expiresAtMs,
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
function conversationRecords(input) {
|
|
208
|
+
const messages = input.entry.conversation.messages;
|
|
209
|
+
const calls = messages
|
|
210
|
+
.filter((m) => m.role === "tool_use")
|
|
211
|
+
.map((use) => callRecord(input, use));
|
|
212
|
+
const callIds = new Set(messages.filter((m) => m.role === "tool_use").map((m) => m.callId));
|
|
213
|
+
const orphans = messages
|
|
214
|
+
.filter((m) => m.role === "permission" &&
|
|
215
|
+
(m.callId === undefined || !callIds.has(m.callId)))
|
|
216
|
+
.map((permission) => permissionOnlyRecord(input, permission));
|
|
217
|
+
const undos = [...input.index.changeSets.values()].flatMap((c) => stateChangeRecords(input.entry, c));
|
|
218
|
+
return [...calls, ...orphans, ...undos];
|
|
219
|
+
}
|
|
220
|
+
function applyPending(input, records) {
|
|
221
|
+
const own = input.sources.pending.filter((p) => p.conversationId === input.entry.id);
|
|
222
|
+
const byId = new Map(records.map((r) => [r.id, r]));
|
|
223
|
+
for (const request of own) {
|
|
224
|
+
const id = `${input.entry.id}:${request.callId ?? request.requestId}`;
|
|
225
|
+
byId.set(id, pendingRecord(input, request, byId.get(id)));
|
|
226
|
+
}
|
|
227
|
+
return [...byId.values()];
|
|
228
|
+
}
|
|
229
|
+
export function buildActivityRecords(sources) {
|
|
230
|
+
const records = sources.entries.flatMap((entry) => {
|
|
231
|
+
const input = {
|
|
232
|
+
entry,
|
|
233
|
+
index: indexConversation(entry, sources.changeSets),
|
|
234
|
+
sources,
|
|
235
|
+
};
|
|
236
|
+
return applyPending(input, conversationRecords(input));
|
|
237
|
+
});
|
|
238
|
+
return records.sort((a, b) => b.timestampMs - a.timestampMs);
|
|
239
|
+
}
|
|
240
|
+
const ROW_ONLY_FIELDS = [
|
|
241
|
+
"kind",
|
|
242
|
+
"isAsked",
|
|
243
|
+
"isAlwaysAsk",
|
|
244
|
+
"args",
|
|
245
|
+
"resultText",
|
|
246
|
+
"permission",
|
|
247
|
+
"endedAtMs",
|
|
248
|
+
];
|
|
249
|
+
export function toActivityRow(record) {
|
|
250
|
+
const row = { ...record };
|
|
251
|
+
for (const field of ROW_ONLY_FIELDS)
|
|
252
|
+
delete row[field];
|
|
253
|
+
return row;
|
|
254
|
+
}
|
|
255
|
+
//# sourceMappingURL=activity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity.js","sourceRoot":"","sources":["../../src/audit/activity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AllowedBy } from "../constants/audit.js";
|
|
2
|
+
export interface CallDecision {
|
|
3
|
+
allowedBy: AllowedBy;
|
|
4
|
+
isPrompted: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface CallAudit {
|
|
7
|
+
record(conversationId: string, callId: string, decision: CallDecision): void;
|
|
8
|
+
lookup(conversationId: string, callId: string): CallDecision | undefined;
|
|
9
|
+
forget(conversationId: string): void;
|
|
10
|
+
}
|
|
11
|
+
export declare function createCallAudit(): CallAudit;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const CALL_INDEX_SEPARATOR = ":";
|
|
2
|
+
function itemIdOf(callId) {
|
|
3
|
+
const index = callId.lastIndexOf(CALL_INDEX_SEPARATOR);
|
|
4
|
+
return index < 0 ? callId : callId.slice(0, index);
|
|
5
|
+
}
|
|
6
|
+
export function createCallAudit() {
|
|
7
|
+
const byConversation = new Map();
|
|
8
|
+
return {
|
|
9
|
+
record(conversationId, callId, decision) {
|
|
10
|
+
const calls = byConversation.get(conversationId) ?? new Map();
|
|
11
|
+
calls.set(callId, decision);
|
|
12
|
+
byConversation.set(conversationId, calls);
|
|
13
|
+
},
|
|
14
|
+
lookup(conversationId, callId) {
|
|
15
|
+
const calls = byConversation.get(conversationId);
|
|
16
|
+
return calls?.get(callId) ?? calls?.get(itemIdOf(callId));
|
|
17
|
+
},
|
|
18
|
+
forget(conversationId) {
|
|
19
|
+
byConversation.delete(conversationId);
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=call-audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call-audit.js","sourceRoot":"","sources":["../../src/audit/call-audit.ts"],"names":[],"mappings":"AAIA,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAejC,SAAS,QAAQ,CAAC,MAAc;IAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;IACvD,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,cAAc,GAAG,IAAI,GAAG,EAAqC,CAAC;IACpE,OAAO;QACL,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ;YACrC,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;YAC9D,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC5B,cAAc,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM,CAAC,cAAc,EAAE,MAAM;YAC3B,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACjD,OAAO,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,CAAC,cAAc;YACnB,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACxC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { TypecheckOutcome } from "../constants/audit.js";
|
|
2
|
+
import type { DiffHunkType } from "../protocol/events.js";
|
|
3
|
+
import type { ChangeSetStore } from "../state/change-sets.js";
|
|
4
|
+
import type { GenerationMode } from "../state/settings-types.js";
|
|
5
|
+
import type { ChangeSetFile, ChangeSetRecord, ChangeSetSummary, ProviderName } from "../state/types.js";
|
|
6
|
+
import type { ShadowGit } from "./shadow-git.js";
|
|
7
|
+
export interface TurnChangeMeta {
|
|
8
|
+
conversationId: string;
|
|
9
|
+
title: string;
|
|
10
|
+
agent: ProviderName;
|
|
11
|
+
scope: GenerationMode;
|
|
12
|
+
isAutoFix: boolean;
|
|
13
|
+
askedBy?: string;
|
|
14
|
+
approvalsNeeded: number;
|
|
15
|
+
builderOps: number;
|
|
16
|
+
typecheck: TypecheckOutcome;
|
|
17
|
+
pagePath?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface TurnCheckpoint {
|
|
20
|
+
ready(): Promise<void>;
|
|
21
|
+
finish(meta: TurnChangeMeta): Promise<ChangeSetRecord | null>;
|
|
22
|
+
}
|
|
23
|
+
interface ChangeSetFileDetail extends ChangeSetFile {
|
|
24
|
+
hunks: DiffHunkType[];
|
|
25
|
+
isBinary: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface UndoConflict {
|
|
28
|
+
changeSetId: string;
|
|
29
|
+
number: number;
|
|
30
|
+
title: string;
|
|
31
|
+
files: string[];
|
|
32
|
+
}
|
|
33
|
+
export interface UndoPreview {
|
|
34
|
+
changeSetId: string;
|
|
35
|
+
files: string[];
|
|
36
|
+
conflicts: UndoConflict[];
|
|
37
|
+
}
|
|
38
|
+
export declare const CHANGE_SET_ERRORS: {
|
|
39
|
+
readonly NOT_FOUND: "not_found";
|
|
40
|
+
readonly WRONG_STATE: "wrong_state";
|
|
41
|
+
readonly UNAVAILABLE: "unavailable";
|
|
42
|
+
};
|
|
43
|
+
export type ChangeSetErrorCode = (typeof CHANGE_SET_ERRORS)[keyof typeof CHANGE_SET_ERRORS];
|
|
44
|
+
export declare class ChangeSetActionError extends Error {
|
|
45
|
+
readonly code: ChangeSetErrorCode;
|
|
46
|
+
constructor(code: ChangeSetErrorCode, message: string);
|
|
47
|
+
}
|
|
48
|
+
export interface Checkpoints {
|
|
49
|
+
isAvailable(): boolean;
|
|
50
|
+
start(retentionDays: number): Promise<void>;
|
|
51
|
+
beginTurn(conversationId: string): TurnCheckpoint;
|
|
52
|
+
all(): ChangeSetRecord[];
|
|
53
|
+
get(id: string): ChangeSetRecord | null;
|
|
54
|
+
forConversation(conversationId: string): ChangeSetSummary[];
|
|
55
|
+
fileDetails(id: string): Promise<ChangeSetFileDetail[]>;
|
|
56
|
+
undoPreview(id: string): UndoPreview;
|
|
57
|
+
undo(id: string, includeLater: boolean, actor?: string): Promise<ChangeSetRecord[]>;
|
|
58
|
+
redo(id: string, actor?: string): Promise<ChangeSetRecord[]>;
|
|
59
|
+
setTypecheck(id: string, outcome: TypecheckOutcome): ChangeSetRecord | null;
|
|
60
|
+
flush(): Promise<void>;
|
|
61
|
+
}
|
|
62
|
+
export interface CheckpointsDeps {
|
|
63
|
+
git: ShadowGit;
|
|
64
|
+
store: ChangeSetStore;
|
|
65
|
+
}
|
|
66
|
+
export declare function toSummary(record: ChangeSetRecord): ChangeSetSummary;
|
|
67
|
+
export declare function createCheckpoints(deps: CheckpointsDeps): Checkpoints;
|
|
68
|
+
export declare function checkpointExcludes(stateDir: string, root: string): string[];
|
|
69
|
+
export {};
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { parseUnifiedDiff } from "../agent/line-diff.js";
|
|
4
|
+
import { CHECKPOINTS_LOG_PREFIX, MS_PER_DAY, } from "../constants/checkpoints.js";
|
|
5
|
+
export const CHANGE_SET_ERRORS = {
|
|
6
|
+
NOT_FOUND: "not_found",
|
|
7
|
+
WRONG_STATE: "wrong_state",
|
|
8
|
+
UNAVAILABLE: "unavailable",
|
|
9
|
+
};
|
|
10
|
+
export class ChangeSetActionError extends Error {
|
|
11
|
+
code;
|
|
12
|
+
constructor(code, message) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.code = code;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
const NO_OP_CHECKPOINT = {
|
|
18
|
+
ready: () => Promise.resolve(),
|
|
19
|
+
finish: () => Promise.resolve(null),
|
|
20
|
+
};
|
|
21
|
+
function serialize(state, task) {
|
|
22
|
+
const run = state.lock.then(task, task);
|
|
23
|
+
state.lock = run.catch(() => undefined);
|
|
24
|
+
return run;
|
|
25
|
+
}
|
|
26
|
+
export function toSummary(record) {
|
|
27
|
+
const { beforeTree: _before, afterTree: _after, pagePath: _page, stateLog: _log, ...summary } = record;
|
|
28
|
+
return summary;
|
|
29
|
+
}
|
|
30
|
+
function sum(files, key) {
|
|
31
|
+
return files.reduce((total, file) => total + file[key], 0);
|
|
32
|
+
}
|
|
33
|
+
function buildRecord(state, meta, trees, files, isOverlapped) {
|
|
34
|
+
return {
|
|
35
|
+
id: randomUUID(),
|
|
36
|
+
number: state.store.nextNumber(),
|
|
37
|
+
...meta,
|
|
38
|
+
createdAtMs: Date.now(),
|
|
39
|
+
overlapped: isOverlapped,
|
|
40
|
+
files,
|
|
41
|
+
added: sum(files, "added"),
|
|
42
|
+
removed: sum(files, "removed"),
|
|
43
|
+
state: "applied",
|
|
44
|
+
beforeTree: trees[0],
|
|
45
|
+
afterTree: trees[1],
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
async function recordTurn(state, before, meta, turn) {
|
|
49
|
+
const after = await serialize(state, () => state.git.snapshot());
|
|
50
|
+
const files = await state.git.changedFiles(before, after);
|
|
51
|
+
if (files.length === 0)
|
|
52
|
+
return null;
|
|
53
|
+
const record = buildRecord(state, meta, [before, after], files, turn.isOverlapped);
|
|
54
|
+
await state.git.keep(record.id, before, after);
|
|
55
|
+
state.store.add(record);
|
|
56
|
+
return record;
|
|
57
|
+
}
|
|
58
|
+
function markOverlaps(state, turn) {
|
|
59
|
+
if (state.running.size === 0)
|
|
60
|
+
return;
|
|
61
|
+
turn.isOverlapped = true;
|
|
62
|
+
for (const other of state.running)
|
|
63
|
+
other.isOverlapped = true;
|
|
64
|
+
}
|
|
65
|
+
function beginTurn(state) {
|
|
66
|
+
if (!state.isAvailable)
|
|
67
|
+
return NO_OP_CHECKPOINT;
|
|
68
|
+
const turn = { isOverlapped: false };
|
|
69
|
+
markOverlaps(state, turn);
|
|
70
|
+
state.running.add(turn);
|
|
71
|
+
const before = serialize(state, () => state.git.snapshot());
|
|
72
|
+
before.catch(() => undefined);
|
|
73
|
+
return {
|
|
74
|
+
ready: () => before.then(() => undefined, () => undefined),
|
|
75
|
+
finish: async (meta) => {
|
|
76
|
+
try {
|
|
77
|
+
return await recordTurn(state, await before, meta, turn);
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
console.warn(`${CHECKPOINTS_LOG_PREFIX} snapshot failed: ${String(err)}`);
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
state.running.delete(turn);
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
function requireRecord(state, id) {
|
|
90
|
+
const record = state.store.get(id);
|
|
91
|
+
if (record === null) {
|
|
92
|
+
throw new ChangeSetActionError(CHANGE_SET_ERRORS.NOT_FOUND, "Unknown change set.");
|
|
93
|
+
}
|
|
94
|
+
return record;
|
|
95
|
+
}
|
|
96
|
+
function requireState(record, expected) {
|
|
97
|
+
if (record.state === expected)
|
|
98
|
+
return;
|
|
99
|
+
throw new ChangeSetActionError(CHANGE_SET_ERRORS.WRONG_STATE, `Change set #${record.number} is already ${record.state}.`);
|
|
100
|
+
}
|
|
101
|
+
function pathsOf(record) {
|
|
102
|
+
return record.files.map((file) => file.path);
|
|
103
|
+
}
|
|
104
|
+
function laterConflicts(state, record) {
|
|
105
|
+
const files = new Set(pathsOf(record));
|
|
106
|
+
return state.store
|
|
107
|
+
.all()
|
|
108
|
+
.filter((other) => other.number > record.number &&
|
|
109
|
+
other.state === "applied" &&
|
|
110
|
+
other.files.some((file) => files.has(file.path)))
|
|
111
|
+
.sort((a, b) => b.number - a.number);
|
|
112
|
+
}
|
|
113
|
+
function undoPreview(state, id) {
|
|
114
|
+
const record = requireRecord(state, id);
|
|
115
|
+
const files = new Set(pathsOf(record));
|
|
116
|
+
return {
|
|
117
|
+
changeSetId: id,
|
|
118
|
+
files: pathsOf(record),
|
|
119
|
+
conflicts: laterConflicts(state, record).map((other) => ({
|
|
120
|
+
changeSetId: other.id,
|
|
121
|
+
number: other.number,
|
|
122
|
+
title: other.title,
|
|
123
|
+
files: pathsOf(other).filter((file) => files.has(file)),
|
|
124
|
+
})),
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
function markState(state, record, next, actor) {
|
|
128
|
+
const atMs = Date.now();
|
|
129
|
+
const change = { state: next, atMs, by: actor };
|
|
130
|
+
return (state.store.update(record.id, {
|
|
131
|
+
state: next,
|
|
132
|
+
stateChangedAtMs: atMs,
|
|
133
|
+
stateChangedBy: actor,
|
|
134
|
+
stateLog: [...(record.stateLog ?? []), change],
|
|
135
|
+
}) ?? record);
|
|
136
|
+
}
|
|
137
|
+
function assertAvailable(state) {
|
|
138
|
+
if (state.isAvailable)
|
|
139
|
+
return;
|
|
140
|
+
throw new ChangeSetActionError(CHANGE_SET_ERRORS.UNAVAILABLE, "Change sets are off: git is not installed.");
|
|
141
|
+
}
|
|
142
|
+
async function undo(state, id, includeLater, actor) {
|
|
143
|
+
assertAvailable(state);
|
|
144
|
+
const record = requireRecord(state, id);
|
|
145
|
+
requireState(record, "applied");
|
|
146
|
+
const targets = includeLater
|
|
147
|
+
? [...laterConflicts(state, record), record]
|
|
148
|
+
: [record];
|
|
149
|
+
return serialize(state, async () => {
|
|
150
|
+
const undone = [];
|
|
151
|
+
for (const target of targets) {
|
|
152
|
+
await state.git.restore(target.beforeTree, pathsOf(target));
|
|
153
|
+
undone.push(markState(state, target, "undone", actor));
|
|
154
|
+
}
|
|
155
|
+
return undone;
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
async function redo(state, id, actor) {
|
|
159
|
+
assertAvailable(state);
|
|
160
|
+
const record = requireRecord(state, id);
|
|
161
|
+
requireState(record, "undone");
|
|
162
|
+
return serialize(state, async () => {
|
|
163
|
+
await state.git.restore(record.afterTree, pathsOf(record));
|
|
164
|
+
return [markState(state, record, "applied", actor)];
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
async function fileDetails(state, id) {
|
|
168
|
+
const record = requireRecord(state, id);
|
|
169
|
+
if (!state.isAvailable) {
|
|
170
|
+
return record.files.map((file) => ({
|
|
171
|
+
...file,
|
|
172
|
+
hunks: [],
|
|
173
|
+
isBinary: false,
|
|
174
|
+
}));
|
|
175
|
+
}
|
|
176
|
+
return Promise.all(record.files.map(async (file) => {
|
|
177
|
+
const diff = await state.git
|
|
178
|
+
.fileDiff(record.beforeTree, record.afterTree, file.path)
|
|
179
|
+
.catch(() => ({ text: "", isBinary: false }));
|
|
180
|
+
return {
|
|
181
|
+
...file,
|
|
182
|
+
hunks: parseUnifiedDiff(diff.text).hunks,
|
|
183
|
+
isBinary: diff.isBinary,
|
|
184
|
+
};
|
|
185
|
+
}));
|
|
186
|
+
}
|
|
187
|
+
async function pruneExpired(state, retentionDays) {
|
|
188
|
+
const cutoff = Date.now() - retentionDays * MS_PER_DAY;
|
|
189
|
+
const expired = state.store.all().filter((c) => c.createdAtMs < cutoff);
|
|
190
|
+
if (expired.length === 0)
|
|
191
|
+
return;
|
|
192
|
+
for (const record of expired)
|
|
193
|
+
await state.git.drop(record.id);
|
|
194
|
+
state.store.remove(expired.map((record) => record.id));
|
|
195
|
+
void serialize(state, () => state.git.prune()).catch(() => undefined);
|
|
196
|
+
}
|
|
197
|
+
async function start(state, retentionDays) {
|
|
198
|
+
await state.store.load();
|
|
199
|
+
if (!(await state.git.isInstalled()))
|
|
200
|
+
return;
|
|
201
|
+
try {
|
|
202
|
+
await state.git.init();
|
|
203
|
+
state.isAvailable = true;
|
|
204
|
+
await pruneExpired(state, retentionDays);
|
|
205
|
+
}
|
|
206
|
+
catch (err) {
|
|
207
|
+
console.warn(`${CHECKPOINTS_LOG_PREFIX} unavailable: ${String(err)}`);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
export function createCheckpoints(deps) {
|
|
211
|
+
const state = {
|
|
212
|
+
...deps,
|
|
213
|
+
isAvailable: false,
|
|
214
|
+
lock: Promise.resolve(),
|
|
215
|
+
running: new Set(),
|
|
216
|
+
};
|
|
217
|
+
return {
|
|
218
|
+
isAvailable: () => state.isAvailable,
|
|
219
|
+
start: (retentionDays) => start(state, retentionDays),
|
|
220
|
+
beginTurn: () => beginTurn(state),
|
|
221
|
+
all: () => state.store.all(),
|
|
222
|
+
get: (id) => state.store.get(id),
|
|
223
|
+
forConversation: (conversationId) => state.store
|
|
224
|
+
.all()
|
|
225
|
+
.filter((c) => c.conversationId === conversationId)
|
|
226
|
+
.map(toSummary),
|
|
227
|
+
fileDetails: (id) => fileDetails(state, id),
|
|
228
|
+
undoPreview: (id) => undoPreview(state, id),
|
|
229
|
+
undo: (id, includeLater, actor) => undo(state, id, includeLater, actor),
|
|
230
|
+
redo: (id, actor) => redo(state, id, actor),
|
|
231
|
+
flush: async () => {
|
|
232
|
+
await state.lock;
|
|
233
|
+
await state.store.flush();
|
|
234
|
+
},
|
|
235
|
+
setTypecheck: (id, outcome) => state.store.update(id, { typecheck: outcome }),
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
export function checkpointExcludes(stateDir, root) {
|
|
239
|
+
const relative = path.relative(root, stateDir);
|
|
240
|
+
if (relative.startsWith("..") || path.isAbsolute(relative))
|
|
241
|
+
return [];
|
|
242
|
+
return [relative.split(path.sep).join("/")];
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=checkpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoints.js","sourceRoot":"","sources":["../../src/checkpoints/checkpoints.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ChangeSetFile } from "../state/types.js";
|
|
2
|
+
export interface ShadowGitOptions {
|
|
3
|
+
gitDir: string;
|
|
4
|
+
workTree: string;
|
|
5
|
+
extraExcludes: string[];
|
|
6
|
+
}
|
|
7
|
+
interface FileDiff {
|
|
8
|
+
text: string;
|
|
9
|
+
isBinary: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface ShadowGit {
|
|
12
|
+
isInstalled(): Promise<boolean>;
|
|
13
|
+
init(): Promise<void>;
|
|
14
|
+
snapshot(): Promise<string>;
|
|
15
|
+
changedFiles(before: string, after: string): Promise<ChangeSetFile[]>;
|
|
16
|
+
fileDiff(before: string, after: string, file: string): Promise<FileDiff>;
|
|
17
|
+
restore(tree: string, files: string[]): Promise<void>;
|
|
18
|
+
keep(id: string, before: string, after: string): Promise<void>;
|
|
19
|
+
drop(id: string): Promise<void>;
|
|
20
|
+
prune(): Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
export declare function createShadowGit(options: ShadowGitOptions): ShadowGit;
|
|
23
|
+
export {};
|