@deepseek-harness-tui/dsh-tui 0.15.0 → 0.16.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 +92 -5
- package/guide/dsh-tui-guide/codex-backend.en.md +13 -3
- package/guide/dsh-tui-guide/codex-backend.md +9 -2
- package/guide/dsh-tui-guide/configuration.en.md +39 -2
- package/guide/dsh-tui-guide/configuration.md +34 -2
- package/guide/dsh-tui-guide/getting-started.en.md +15 -0
- package/guide/dsh-tui-guide/getting-started.md +15 -0
- package/guide/dsh-tui-guide/interaction.en.md +8 -1
- package/guide/dsh-tui-guide/interaction.md +8 -1
- package/guide/dsh-tui-guide/plugins.en.md +66 -5
- package/guide/dsh-tui-guide/plugins.md +37 -3
- package/guide/dsh-tui-guide/user-guide.en.md +3 -2
- package/guide/dsh-tui-guide/user-guide.md +3 -2
- package/lib/settings.json +1 -1
- package/lib/types/adapter/channel/projection.d.ts.map +1 -1
- package/lib/types/adapter/channel/projection.js +1 -0
- package/lib/types/adapter/channel/ui-policy.d.ts +1 -1
- package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -1
- package/lib/types/adapter/channel/ui-policy.js +1 -0
- package/lib/types/adapter/ports/channel-catalog.d.ts +5 -1
- package/lib/types/adapter/ports/channel-catalog.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-settings.d.ts +5 -3
- package/lib/types/adapter/ports/channel-settings.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-ui.d.ts +7 -1
- package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-view.d.ts +47 -0
- package/lib/types/adapter/ports/channel-view.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel.d.ts +2 -0
- package/lib/types/adapter/ports/channel.d.ts.map +1 -1
- package/lib/types/agent/events.d.ts +3 -2
- package/lib/types/agent/events.d.ts.map +1 -1
- package/lib/types/backends/codex/contract.d.ts +3 -0
- package/lib/types/backends/codex/contract.d.ts.map +1 -1
- package/lib/types/backends/codex/contract.js +3 -0
- package/lib/types/backends/codex/session/async-questions.d.ts +17 -0
- package/lib/types/backends/codex/session/async-questions.d.ts.map +1 -0
- package/lib/types/backends/codex/session/async-questions.js +89 -0
- package/lib/types/backends/codex/session/session.d.ts.map +1 -1
- package/lib/types/backends/codex/session/session.js +35 -9
- package/lib/types/backends/codex/text.d.ts +3 -3
- package/lib/types/backends/codex/text.js +1 -1
- package/lib/types/backends/codex/translate/items.d.ts.map +1 -1
- package/lib/types/backends/codex/translate/items.js +3 -1
- package/lib/types/backends/codex/translate/question-reply.d.ts +11 -0
- package/lib/types/backends/codex/translate/question-reply.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/question-reply.js +53 -0
- package/lib/types/channel/projection.d.ts.map +1 -1
- package/lib/types/channel/projection.js +10 -0
- package/lib/types/commands.d.ts +10 -0
- package/lib/types/commands.d.ts.map +1 -1
- package/lib/types/commands.js +11 -2
- package/lib/types/components/CommandSuggestions.d.ts.map +1 -1
- package/lib/types/components/CommandSuggestions.js +4 -1
- package/lib/types/components/LogoV2.d.ts +4 -1
- package/lib/types/components/LogoV2.d.ts.map +1 -1
- package/lib/types/components/LogoV2.js +5 -3
- package/lib/types/components/MessageList.d.ts.map +1 -1
- package/lib/types/components/MessageList.js +95 -14
- package/lib/types/components/PermissionsPicker.d.ts +10 -1
- package/lib/types/components/PermissionsPicker.d.ts.map +1 -1
- package/lib/types/components/PermissionsPicker.js +24 -16
- package/lib/types/components/PluginInstallPane.d.ts +21 -0
- package/lib/types/components/PluginInstallPane.d.ts.map +1 -0
- package/lib/types/components/PluginInstallPane.js +84 -0
- package/lib/types/components/PluginManagePane.d.ts +21 -0
- package/lib/types/components/PluginManagePane.d.ts.map +1 -0
- package/lib/types/components/PluginManagePane.js +69 -0
- package/lib/types/components/PromptInput.d.ts.map +1 -1
- package/lib/types/components/PromptInput.js +7 -3
- package/lib/types/components/SubagentCard.d.ts +13 -1
- package/lib/types/components/SubagentCard.d.ts.map +1 -1
- package/lib/types/components/SubagentCard.js +27 -12
- package/lib/types/components/SubagentDashboard.d.ts +8 -1
- package/lib/types/components/SubagentDashboard.d.ts.map +1 -1
- package/lib/types/components/SubagentDashboard.js +58 -16
- package/lib/types/components/launchpadLayout.d.ts +14 -1
- package/lib/types/components/launchpadLayout.d.ts.map +1 -1
- package/lib/types/components/launchpadLayout.js +36 -17
- package/lib/types/components/messages/TeamMessageBubble.d.ts +20 -0
- package/lib/types/components/messages/TeamMessageBubble.d.ts.map +1 -0
- package/lib/types/components/messages/TeamMessageBubble.js +15 -0
- package/lib/types/components/sidePanel/PanelHost.d.ts.map +1 -1
- package/lib/types/components/sidePanel/PanelHost.js +5 -1
- package/lib/types/components/sidePanel/PanelStore.d.ts +8 -0
- package/lib/types/components/sidePanel/PanelStore.d.ts.map +1 -1
- package/lib/types/components/sidePanel/PanelStore.js +11 -0
- package/lib/types/components/sidePanel/SidePanelColumn.d.ts.map +1 -1
- package/lib/types/components/sidePanel/SidePanelColumn.js +13 -1
- package/lib/types/components/sidePanel/SidePanelRuntimeContext.d.ts +7 -0
- package/lib/types/components/sidePanel/SidePanelRuntimeContext.d.ts.map +1 -1
- package/lib/types/components/sidePanel/SidePanelRuntimeContext.js +4 -0
- package/lib/types/components/sidePanel/btw/BtwComposer.d.ts +3 -0
- package/lib/types/components/sidePanel/btw/BtwComposer.d.ts.map +1 -1
- package/lib/types/components/sidePanel/btw/BtwComposer.js +20 -8
- package/lib/types/components/sidePanel/btw/BtwPanelAdapter.d.ts +2 -1
- package/lib/types/components/sidePanel/btw/BtwPanelAdapter.d.ts.map +1 -1
- package/lib/types/components/sidePanel/btw/BtwPanelAdapter.js +104 -13
- package/lib/types/components/sidePanel/btw/BtwThreadScene.d.ts +6 -2
- package/lib/types/components/sidePanel/btw/BtwThreadScene.d.ts.map +1 -1
- package/lib/types/components/sidePanel/btw/BtwThreadScene.js +61 -15
- package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts +14 -4
- package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts.map +1 -1
- package/lib/types/components/sidePanel/btw/BtwThreadView.js +90 -5
- package/lib/types/components/sidePanel/btw/threads.d.ts +18 -0
- package/lib/types/components/sidePanel/btw/threads.d.ts.map +1 -1
- package/lib/types/components/sidePanel/btw/threads.js +51 -0
- package/lib/types/components/sidePanel/builtinPanels.d.ts.map +1 -1
- package/lib/types/components/sidePanel/builtinPanels.js +5 -1
- package/lib/types/components/sidePanel/companion/SplashMascot.d.ts +5 -1
- package/lib/types/components/sidePanel/companion/SplashMascot.d.ts.map +1 -1
- package/lib/types/components/sidePanel/companion/SplashMascot.js +19 -4
- package/lib/types/components/sidePanel/companion/skins.d.ts +8 -0
- package/lib/types/components/sidePanel/companion/skins.d.ts.map +1 -1
- package/lib/types/components/sidePanel/companion/skins.js +57 -12
- package/lib/types/components/sidePanel/types.d.ts +6 -0
- package/lib/types/components/sidePanel/types.d.ts.map +1 -1
- package/lib/types/components/splashArtRows.d.ts +29 -0
- package/lib/types/components/splashArtRows.d.ts.map +1 -0
- package/lib/types/components/splashArtRows.js +31 -0
- package/lib/types/components/teamRoster.d.ts +70 -0
- package/lib/types/components/teamRoster.d.ts.map +1 -0
- package/lib/types/components/teamRoster.js +78 -0
- package/lib/types/dsh-adapter/admission-loader.d.ts +82 -0
- package/lib/types/dsh-adapter/admission-loader.d.ts.map +1 -1
- package/lib/types/dsh-adapter/admission-loader.js +73 -28
- package/lib/types/dsh-adapter/agent-view.d.ts.map +1 -1
- package/lib/types/dsh-adapter/agent-view.js +3 -1
- package/lib/types/dsh-adapter/approvals.d.ts +7 -0
- package/lib/types/dsh-adapter/approvals.d.ts.map +1 -1
- package/lib/types/dsh-adapter/approvals.js +45 -1
- package/lib/types/dsh-adapter/backend/translate.d.ts.map +1 -1
- package/lib/types/dsh-adapter/backend/translate.js +68 -8
- package/lib/types/dsh-adapter/backend-assembly.d.ts +31 -0
- package/lib/types/dsh-adapter/backend-assembly.d.ts.map +1 -0
- package/lib/types/dsh-adapter/backend-assembly.js +225 -0
- package/lib/types/dsh-adapter/backend-contribution.d.ts +36 -0
- package/lib/types/dsh-adapter/backend-contribution.d.ts.map +1 -1
- package/lib/types/dsh-adapter/backend-contribution.js +41 -0
- package/lib/types/dsh-adapter/backend-registry.d.ts.map +1 -1
- package/lib/types/dsh-adapter/backend-registry.js +22 -3
- package/lib/types/dsh-adapter/backends.d.ts.map +1 -1
- package/lib/types/dsh-adapter/backends.js +4 -5
- package/lib/types/dsh-adapter/bundled-presets.d.ts.map +1 -1
- package/lib/types/dsh-adapter/bundled-presets.js +60 -3
- package/lib/types/dsh-adapter/channel/binding-events.d.ts +1 -0
- package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/binding-events.js +1 -0
- package/lib/types/dsh-adapter/channel/command-completions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/command-completions.js +64 -7
- package/lib/types/dsh-adapter/channel/compaction.d.ts +7 -2
- package/lib/types/dsh-adapter/channel/compaction.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/compaction.js +100 -26
- package/lib/types/dsh-adapter/channel/core/binding-feed.d.ts +3 -0
- package/lib/types/dsh-adapter/channel/core/binding-feed.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/core/binding-feed.js +2 -1
- package/lib/types/dsh-adapter/channel/core/compose.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/core/compose.js +12 -0
- package/lib/types/dsh-adapter/channel/extensions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/extensions.js +68 -8
- package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts +6 -0
- package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/mode-permission-actions.js +104 -12
- package/lib/types/dsh-adapter/channel/model-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/model-actions.js +8 -1
- package/lib/types/dsh-adapter/channel/permissions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/permissions.js +4 -1
- package/lib/types/dsh-adapter/channel/projection-helpers.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/projection-helpers.js +2 -0
- package/lib/types/dsh-adapter/channel/session-metadata.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-metadata.js +4 -3
- package/lib/types/dsh-adapter/channel/session-reset.js +2 -2
- package/lib/types/dsh-adapter/channel/session-resume.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-resume.js +7 -0
- package/lib/types/dsh-adapter/channel/settings-host.d.ts +3 -0
- package/lib/types/dsh-adapter/channel/settings-host.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/settings-host.js +135 -5
- package/lib/types/dsh-adapter/channel/state.d.ts +6 -0
- package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/subagent-projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/subagent-projection.js +18 -6
- package/lib/types/dsh-adapter/channel/transcript.d.ts +7 -0
- package/lib/types/dsh-adapter/channel/transcript.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/transcript.js +19 -2
- package/lib/types/dsh-adapter/compat/agent-team-0.2.0.d.ts +55 -0
- package/lib/types/dsh-adapter/compat/agent-team-0.2.0.d.ts.map +1 -0
- package/lib/types/dsh-adapter/compat/agent-team-0.2.0.js +96 -0
- package/lib/types/dsh-adapter/contract.d.ts +4 -4
- package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
- package/lib/types/dsh-adapter/contract.js +5 -5
- package/lib/types/dsh-adapter/effect-ledger.d.ts +7 -0
- package/lib/types/dsh-adapter/effect-ledger.d.ts.map +1 -1
- package/lib/types/dsh-adapter/effect-ledger.js +8 -1
- package/lib/types/dsh-adapter/entry-slot.d.ts +3 -1
- package/lib/types/dsh-adapter/entry-slot.d.ts.map +1 -1
- package/lib/types/dsh-adapter/entry-slot.js +2 -2
- package/lib/types/dsh-adapter/fresh-agent.d.ts.map +1 -1
- package/lib/types/dsh-adapter/fresh-agent.js +6 -1
- package/lib/types/dsh-adapter/host-access.d.ts.map +1 -1
- package/lib/types/dsh-adapter/host-access.js +95 -0
- package/lib/types/dsh-adapter/host-contract.d.ts +1 -1
- package/lib/types/dsh-adapter/host-contract.d.ts.map +1 -1
- package/lib/types/dsh-adapter/host-contract.js +3 -2
- package/lib/types/dsh-adapter/host-dsh.d.ts +8 -2
- package/lib/types/dsh-adapter/host-dsh.d.ts.map +1 -1
- package/lib/types/dsh-adapter/host-dsh.js +45 -30
- package/lib/types/dsh-adapter/host-entry.js +35 -10
- package/lib/types/dsh-adapter/index.d.ts +9 -10
- package/lib/types/dsh-adapter/index.d.ts.map +1 -1
- package/lib/types/dsh-adapter/index.js +8 -6
- package/lib/types/dsh-adapter/invariant.d.ts +7 -2
- package/lib/types/dsh-adapter/invariant.d.ts.map +1 -1
- package/lib/types/dsh-adapter/invariant.js +6 -3
- package/lib/types/dsh-adapter/migrate/index.js +2 -2
- package/lib/types/dsh-adapter/panels.d.ts.map +1 -1
- package/lib/types/dsh-adapter/panels.js +6 -0
- package/lib/types/dsh-adapter/plugin-declaration.d.ts +99 -1
- package/lib/types/dsh-adapter/plugin-declaration.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin-declaration.js +132 -2
- package/lib/types/dsh-adapter/plugin-feed.d.ts +94 -0
- package/lib/types/dsh-adapter/plugin-feed.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugin-feed.js +135 -0
- package/lib/types/dsh-adapter/plugin-guard.d.ts +115 -0
- package/lib/types/dsh-adapter/plugin-guard.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugin-guard.js +108 -0
- package/lib/types/dsh-adapter/plugin-install.d.ts +160 -0
- package/lib/types/dsh-adapter/plugin-install.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugin-install.js +545 -0
- package/lib/types/dsh-adapter/plugin-manage.d.ts +178 -0
- package/lib/types/dsh-adapter/plugin-manage.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugin-manage.js +468 -0
- package/lib/types/dsh-adapter/plugin-manager.d.ts +78 -2
- package/lib/types/dsh-adapter/plugin-manager.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin-manager.js +32 -0
- package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin.js +49 -2
- package/lib/types/dsh-adapter/plugins-info.d.ts +87 -1
- package/lib/types/dsh-adapter/plugins-info.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugins-info.js +131 -26
- package/lib/types/dsh-adapter/process-exit.d.ts +1 -1
- package/lib/types/dsh-adapter/process-exit.d.ts.map +1 -1
- package/lib/types/dsh-adapter/process-exit.js +1 -1
- package/lib/types/dsh-adapter/session-projection-store.d.ts +66 -0
- package/lib/types/dsh-adapter/session-projection-store.d.ts.map +1 -0
- package/lib/types/dsh-adapter/session-projection-store.js +149 -0
- package/lib/types/dsh-adapter/settingsEditor.js +2 -2
- package/lib/types/dsh-adapter/sideQuestion.d.ts +21 -0
- package/lib/types/dsh-adapter/sideQuestion.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sideQuestion.js +53 -0
- package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
- package/lib/types/dsh-adapter/subagents.js +2 -1
- package/lib/types/dsh-adapter/team-mode.d.ts +74 -0
- package/lib/types/dsh-adapter/team-mode.d.ts.map +1 -0
- package/lib/types/dsh-adapter/team-mode.js +188 -0
- package/lib/types/dsh-adapter/team-roster.d.ts +67 -0
- package/lib/types/dsh-adapter/team-roster.d.ts.map +1 -0
- package/lib/types/dsh-adapter/team-roster.js +136 -0
- package/lib/types/dsh-adapter/team-tools.d.ts +58 -0
- package/lib/types/dsh-adapter/team-tools.d.ts.map +1 -0
- package/lib/types/dsh-adapter/team-tools.js +208 -0
- package/lib/types/dsh-adapter/types.d.ts +1 -1
- package/lib/types/dsh-adapter/types.d.ts.map +1 -1
- package/lib/types/i18n.d.ts +607 -16
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +295 -9
- package/lib/types/ink/components/ScrollBox.d.ts +9 -0
- package/lib/types/ink/components/ScrollBox.d.ts.map +1 -1
- package/lib/types/ink/components/ScrollBox.js +23 -0
- package/lib/types/ink/dom.d.ts.map +1 -1
- package/lib/types/kernelPrefs.d.ts +1 -1
- package/lib/types/kernelPrefs.d.ts.map +1 -1
- package/lib/types/native-ts/yoga-layout/index.d.ts.map +1 -1
- package/lib/types/native-ts/yoga-layout/index.js +8 -1
- package/lib/types/permissionPresetLabels.d.ts +25 -0
- package/lib/types/permissionPresetLabels.d.ts.map +1 -0
- package/lib/types/permissionPresetLabels.js +33 -0
- package/lib/types/preset-patch.d.ts +22 -0
- package/lib/types/preset-patch.d.ts.map +1 -0
- package/lib/types/preset-patch.js +14 -0
- package/lib/types/screens/Chat.d.ts +33 -1
- package/lib/types/screens/Chat.d.ts.map +1 -1
- package/lib/types/screens/Chat.js +301 -9
- package/lib/types/screens/Launchpad.d.ts +7 -1
- package/lib/types/screens/Launchpad.d.ts.map +1 -1
- package/lib/types/screens/Launchpad.js +19 -4
- package/lib/types/screens/Settings.d.ts.map +1 -1
- package/lib/types/screens/Settings.js +1 -0
- package/lib/types/screens/chat/usePluginWriteFlow.d.ts +68 -0
- package/lib/types/screens/chat/usePluginWriteFlow.d.ts.map +1 -0
- package/lib/types/screens/chat/usePluginWriteFlow.js +92 -0
- package/lib/types/screens/chatOverlay.d.ts +19 -1
- package/lib/types/screens/chatOverlay.d.ts.map +1 -1
- package/lib/types/sessionModes.d.ts +5 -3
- package/lib/types/sessionModes.d.ts.map +1 -1
- package/lib/types/sessionModes.js +9 -3
- package/lib/types/tips.js +2 -2
- package/lib/types/utils/paths.d.ts +11 -0
- package/lib/types/utils/paths.d.ts.map +1 -1
- package/lib/types/utils/paths.js +13 -0
- package/package.json +126 -120
- package/tui-profile/feed/README.md +63 -0
- package/tui-profile/feed/first-party.json +10 -0
|
@@ -13,9 +13,18 @@
|
|
|
13
13
|
* structurally so a regression can hand in a fake. The record types come from
|
|
14
14
|
* the host package's own published declarations, so a field rename on the
|
|
15
15
|
* upstream line fails the build rather than the screen.
|
|
16
|
+
*
|
|
17
|
+
* Types only: a profile has no copy of the package at run time (the dsh CLI
|
|
18
|
+
* ships it), so importing a value from it — `parseInstallSpec`, say — would
|
|
19
|
+
* fail on exactly the machines this code runs on. Anything this package needs
|
|
20
|
+
* to compute (a spec's name, a version) it takes from `inspect()` instead.
|
|
21
|
+
*
|
|
22
|
+
* The view covers the write half as well (install / cancel / enable / disable /
|
|
23
|
+
* remove / version exemptions), because both write flows reach the same probe:
|
|
24
|
+
* a second manager lookup could only drift from this one.
|
|
16
25
|
*/
|
|
17
26
|
import type { Context } from '@deepseek-ai/cordis';
|
|
18
|
-
import type { BundleInfo, InspectOptions, PluginInfo, PluginRegistries, PluginSpecInspection } from '@deepseek-ai/dsh-plugin-manager/types';
|
|
27
|
+
import type { BundleInfo, ChangeResult, InspectOptions, InstallBundleOptions, PluginEntryId, PluginInfo, PluginInstallCancellation, PluginInstallLogChunk, PluginInstallProgress, PluginInstallRequestId, PluginRegistries, PluginSpecInspection } from '@deepseek-ai/dsh-plugin-manager/types';
|
|
19
28
|
import { type Lang } from '../i18n.js';
|
|
20
29
|
/** The host service operations this package consumes. */
|
|
21
30
|
export interface PluginManagerView {
|
|
@@ -25,8 +34,51 @@ export interface PluginManagerView {
|
|
|
25
34
|
listPlugins(): Promise<PluginInfo[]>;
|
|
26
35
|
/** The registries an installation asks, in order. */
|
|
27
36
|
registries(): Promise<PluginRegistries>;
|
|
28
|
-
/**
|
|
37
|
+
/**
|
|
38
|
+
* What a spec names, read before installing it. The host bounds the lookup
|
|
39
|
+
* with its own timeout; nothing here passes an `AbortSignal`, so a cancel
|
|
40
|
+
* during the read stops the flow rather than the request (there is nothing to
|
|
41
|
+
* install yet either way).
|
|
42
|
+
*/
|
|
29
43
|
inspect(spec: string, options?: InspectOptions): Promise<PluginSpecInspection>;
|
|
44
|
+
/**
|
|
45
|
+
* Install one spec into the profile. The call owns the whole run: it resolves
|
|
46
|
+
* only once pnpm (or the git check) has finished and the profile was restored
|
|
47
|
+
* or changed, so the returned promise IS the result — `waitForInstall` is the
|
|
48
|
+
* recovery path for a caller that lost it, not the way to collect it.
|
|
49
|
+
*/
|
|
50
|
+
installBundle(spec: string, options?: InstallBundleOptions): Promise<ChangeResult>;
|
|
51
|
+
/** Stop an installation this manager owns and wait until its files are back. */
|
|
52
|
+
cancelInstall(requestId: PluginInstallRequestId): Promise<PluginInstallCancellation>;
|
|
53
|
+
/**
|
|
54
|
+
* Select or drop one bundle's composition layer, keeping its installed
|
|
55
|
+
* dependencies. Dropping a layer the manager itself lives in is refused by
|
|
56
|
+
* the host (`management-required`), and selecting one re-checks the running
|
|
57
|
+
* version (`incompatible-version`); both arrive in-band as
|
|
58
|
+
* `application: 'failed'`.
|
|
59
|
+
*/
|
|
60
|
+
setBundleEnabled(name: string, enabled: boolean): Promise<ChangeResult>;
|
|
61
|
+
/**
|
|
62
|
+
* Persist one loader entry's desired enablement, by the `entryId`
|
|
63
|
+
* `listPlugins()` reports. An entry the host cannot address
|
|
64
|
+
* (`readOnlyReason`) is refused before anything is written.
|
|
65
|
+
*/
|
|
66
|
+
setPluginEnabled(id: PluginEntryId, enabled: boolean): Promise<ChangeResult>;
|
|
67
|
+
/**
|
|
68
|
+
* Uninstall one bundle: drop its layer and remove it from the profile's
|
|
69
|
+
* dependencies. The host refuses a bundle it did not install
|
|
70
|
+
* (`not-removable`), one whose rows are live on a profile without hot reload
|
|
71
|
+
* (`stop-profile`), and one whose contributions are still running
|
|
72
|
+
* (`bundle-in-use`). Restores `package.json` and the lockfile on failure.
|
|
73
|
+
*/
|
|
74
|
+
removeBundle(name: string): Promise<ChangeResult>;
|
|
75
|
+
/** The exact-version exemptions the profile's compatibility file carries. */
|
|
76
|
+
listVersionExemptions(): {
|
|
77
|
+
exemptions: Record<string, string[]>;
|
|
78
|
+
warnings: string[];
|
|
79
|
+
};
|
|
80
|
+
/** Grant or revoke one `package@version` × runtime exemption. */
|
|
81
|
+
setVersionExemption(packageVersion: string, runtimeVersion: string, enabled: boolean, acceptRisk?: boolean): Promise<ChangeResult>;
|
|
30
82
|
}
|
|
31
83
|
/**
|
|
32
84
|
* Soft-probe the profile plugin manager. `undefined` when the row is not
|
|
@@ -34,6 +86,30 @@ export interface PluginManagerView {
|
|
|
34
86
|
* the caller reports what it cannot do instead of throwing.
|
|
35
87
|
*/
|
|
36
88
|
export declare function pluginManagerOf(ctx: Context): PluginManagerView | undefined;
|
|
89
|
+
/**
|
|
90
|
+
* A fresh id for one installation. `PluginInstallRequestId` is a branded string
|
|
91
|
+
* and no published subpath exports a constructor for the brand, so this is the
|
|
92
|
+
* one place that asserts one into existence; the counter is per process, which
|
|
93
|
+
* is all an id has to be for the service to correlate a cancel or a recovery
|
|
94
|
+
* with the run that asked.
|
|
95
|
+
*/
|
|
96
|
+
export declare function newInstallRequestId(): PluginInstallRequestId;
|
|
97
|
+
/** The manager's install events, narrowed to the install that asked for them. */
|
|
98
|
+
export interface PluginInstallEvents {
|
|
99
|
+
/** One installation's pnpm output, chunk by chunk. */
|
|
100
|
+
onLog(requestId: PluginInstallRequestId, listener: (chunk: PluginInstallLogChunk) => void): () => void;
|
|
101
|
+
/** One installation's phase changes. */
|
|
102
|
+
onState(requestId: PluginInstallRequestId, listener: (progress: PluginInstallProgress) => void): () => void;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Subscribe to the manager's install events for one request. The events are
|
|
106
|
+
* emitted on the shared context, so a profile running two installations would
|
|
107
|
+
* otherwise render both in one report; the request id is the only thing that
|
|
108
|
+
* tells them apart. Chunks the service leaves unidentified (its git connection
|
|
109
|
+
* check runs without a request) are not one installation's output and are
|
|
110
|
+
* dropped with the rest.
|
|
111
|
+
*/
|
|
112
|
+
export declare function pluginInstallEvents(ctx: Context): PluginInstallEvents;
|
|
37
113
|
/**
|
|
38
114
|
* The bundles a person added to this profile: the ones its own dependencies
|
|
39
115
|
* hold (`installed`), minus the composition itself. The installation-supplied
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-manager.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/plugin-manager.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"plugin-manager.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/plugin-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,38 @@ export function pluginManagerOf(ctx) {
|
|
|
11
11
|
return undefined;
|
|
12
12
|
return manager;
|
|
13
13
|
}
|
|
14
|
+
let installRequestSeq = 0;
|
|
15
|
+
/**
|
|
16
|
+
* A fresh id for one installation. `PluginInstallRequestId` is a branded string
|
|
17
|
+
* and no published subpath exports a constructor for the brand, so this is the
|
|
18
|
+
* one place that asserts one into existence; the counter is per process, which
|
|
19
|
+
* is all an id has to be for the service to correlate a cancel or a recovery
|
|
20
|
+
* with the run that asked.
|
|
21
|
+
*/
|
|
22
|
+
export function newInstallRequestId() {
|
|
23
|
+
installRequestSeq += 1;
|
|
24
|
+
return `dsh-tui-${process.pid}-${installRequestSeq}`;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Subscribe to the manager's install events for one request. The events are
|
|
28
|
+
* emitted on the shared context, so a profile running two installations would
|
|
29
|
+
* otherwise render both in one report; the request id is the only thing that
|
|
30
|
+
* tells them apart. Chunks the service leaves unidentified (its git connection
|
|
31
|
+
* check runs without a request) are not one installation's output and are
|
|
32
|
+
* dropped with the rest.
|
|
33
|
+
*/
|
|
34
|
+
export function pluginInstallEvents(ctx) {
|
|
35
|
+
return {
|
|
36
|
+
onLog: (requestId, listener) => ctx.on('plugin-manager/install-log', (chunk) => {
|
|
37
|
+
if (chunk.requestId === requestId)
|
|
38
|
+
listener(chunk);
|
|
39
|
+
}),
|
|
40
|
+
onState: (requestId, listener) => ctx.on('plugin-manager/install-state', (progress) => {
|
|
41
|
+
if (progress.requestId === requestId)
|
|
42
|
+
listener(progress);
|
|
43
|
+
}),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
14
46
|
/**
|
|
15
47
|
* The bundles a person added to this profile: the ones its own dependencies
|
|
16
48
|
* hold (`installed`), minus the composition itself. The installation-supplied
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/plugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAe,MAAM,wBAAwB,CAAA;AAGhE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAGlD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,EAA+D,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,8 @@ import { EDITABLE_CONFIG_KEYS } from '../settings/definitions.js';
|
|
|
13
13
|
import { kernelEntriesOf } from '../components/kernelCatalog.js';
|
|
14
14
|
import { openBackendStartup, prepareBackendStartup, probeKernels, installSurfaceFor } from './backends.js';
|
|
15
15
|
import { backendLabel, isBackendIdSyntax, isRegisteredBackend, listBackends, listOfferedBackends, loadBackend, parseBackendChoice, unloadBackends } from './backend-registry.js';
|
|
16
|
+
import { createPluginInstallEntry } from './plugin-install.js';
|
|
17
|
+
import { createPluginManageEntry } from './plugin-manage.js';
|
|
16
18
|
import { formatSessionRef } from '../agent/refs.js';
|
|
17
19
|
import { createStartingSession } from '../agent/starting-session.js';
|
|
18
20
|
import { createChannelSceneOutlet } from './channel-scene-outlet.js';
|
|
@@ -65,6 +67,8 @@ import { getHostStatusStore } from './status.js';
|
|
|
65
67
|
import { attachSessionListMetadata } from './session-list-metadata.js';
|
|
66
68
|
import { createActivityStore } from './activity-store.js';
|
|
67
69
|
import { createContextOccupancyStore } from './context-occupancy.js';
|
|
70
|
+
import { createTeamRosterStore } from './team-roster.js';
|
|
71
|
+
import { createTeamCommandEntry, filterTeamReplacedTools } from './team-mode.js';
|
|
68
72
|
import { getHostToastStore } from './toast.js';
|
|
69
73
|
import { getHostShortcuts } from './shortcuts.js';
|
|
70
74
|
import { getHostThemes } from './themes.js';
|
|
@@ -73,6 +77,7 @@ import { createLocalWorkspaceRuntime, getHostWorkspaceRuntime } from './workspac
|
|
|
73
77
|
import { getHostSettingsSections, getLocalSettingsSectionsHost } from './settings-sections.js';
|
|
74
78
|
import { compositionRoot, withHostRootCapability } from './host-access.js';
|
|
75
79
|
import { armAdmissionLoader } from './admission-loader.js';
|
|
80
|
+
import { assembleBackendsFromProfile } from './backend-assembly.js';
|
|
76
81
|
import { applyConfiguredSidePanelPanels, applySidePanelPanelsFromSettings } from './panels.js';
|
|
77
82
|
import { disposeRootSettled } from './root-dispose.js';
|
|
78
83
|
import { render, ThemeProvider, AlternateScreen } from '../ui.js';
|
|
@@ -332,8 +337,12 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx, runtimeOption
|
|
|
332
337
|
// persistent shell: bash on POSIX, pwsh on Windows). Filter only that preset
|
|
333
338
|
// at the final assembly boundary. Reading the session on every assembly also
|
|
334
339
|
// makes blank-session /preset switches and resumed sessions behave correctly.
|
|
340
|
+
// Agent Teams is decided at the same boundary: presets keep their legacy
|
|
341
|
+
// delegation rows, and a request that carries `spawn_teammate` drops
|
|
342
|
+
// `subagent` / `subagent_fork` (team-mode.ts), so a team bundle switched
|
|
343
|
+
// at run time reaches the sessions already running.
|
|
335
344
|
dshCtx.on('system-prompt/assemble', async (_assembly, context, next) => {
|
|
336
|
-
const assembled = await next();
|
|
345
|
+
const assembled = filterTeamReplacedTools(await next());
|
|
337
346
|
const presetId = context.agent === undefined ? undefined : runningPresetOf(context.agent.session);
|
|
338
347
|
return filterMinimalPresetTools(assembled, presetId);
|
|
339
348
|
});
|
|
@@ -457,6 +466,13 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx, runtimeOption
|
|
|
457
466
|
}
|
|
458
467
|
// Admit third-party activations from their package-root `dsh-plugin.json`.
|
|
459
468
|
armAdmissionLoader(ctx);
|
|
469
|
+
// Stage D-1: the backends installed bundles declare join the registry *here*,
|
|
470
|
+
// before anything below parses a backend choice (`parseBackendChoice` reads the
|
|
471
|
+
// registry for membership, so an id registered later reads as unknown: dsh plus a
|
|
472
|
+
// warning). Synchronous on purpose — a bundle's own rows are composed after this
|
|
473
|
+
// one, so waiting for them would be waiting past the parse. This is the caller
|
|
474
|
+
// notes 0009's "Wired (W-2)" section was still missing.
|
|
475
|
+
assembleBackendsFromProfile(ctx);
|
|
460
476
|
// The in-process DSH kernel mounts before the profile's workspace providers
|
|
461
477
|
// exist: a provider URI resolves in `attachDsh`, and an unresolvable one
|
|
462
478
|
// fails the startup session there instead of the mount.
|
|
@@ -606,8 +622,10 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx, runtimeOption
|
|
|
606
622
|
* Whether a Config row or DSH_TUI_BACKEND overrides the selector's
|
|
607
623
|
* remembered kernel. The selector then says so: a switch still restarts
|
|
608
624
|
* onto the chosen kernel, but the next plain launch follows the override.
|
|
625
|
+
* Only a registered Config choice pins: the schema keeps syntactically
|
|
626
|
+
* valid but uninstalled ids too, which must not prevent a memory fallback.
|
|
609
627
|
*/
|
|
610
|
-
const backendPinned =
|
|
628
|
+
const backendPinned = configuredBackend !== undefined
|
|
611
629
|
|| (rawBackend !== undefined && rawBackend.trim() !== '');
|
|
612
630
|
// A remembered kernel whose backend cannot open (its SDK uninstalled, its
|
|
613
631
|
// session store unreadable, …) must not kill the boot: without an explicit
|
|
@@ -772,6 +790,9 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx, runtimeOption
|
|
|
772
790
|
// empty and the channel falls back to the last-request sample — as does a
|
|
773
791
|
// non-DSH session, whose id the DSH meter never projects.
|
|
774
792
|
const contextOccupancyStore = createContextOccupancyStore(ctx);
|
|
793
|
+
// Read side of the Agent Teams `agentTeam` projection, for the same TDZ
|
|
794
|
+
// reason; empty unless the profile mounts the team service.
|
|
795
|
+
const teamRosterStore = createTeamRosterStore(ctx);
|
|
775
796
|
// The channel holds a backend session; this DSH one owns the resolved
|
|
776
797
|
// handle (disposed by the binding when a later adoption replaces it).
|
|
777
798
|
let startupSession;
|
|
@@ -843,6 +864,8 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx, runtimeOption
|
|
|
843
864
|
// change, so a resumed session reads one baseline at bind time.
|
|
844
865
|
contextPressure: contextOccupancyStore,
|
|
845
866
|
seedContextOccupancy: session => contextOccupancyStore.seed(session),
|
|
867
|
+
team: teamRosterStore,
|
|
868
|
+
seedTeam: session => teamRosterStore.seed(session),
|
|
846
869
|
// A RESUMED session keeps its persisted header cwd (issue #96 review):
|
|
847
870
|
// pre-upgrade sessions recorded the launch directory, and re-resolving
|
|
848
871
|
// from the current launch directory would split @ expansion / file
|
|
@@ -2261,6 +2284,30 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx, runtimeOption
|
|
|
2261
2284
|
// whichever row the user picked, looked up by id — the manifest says what to
|
|
2262
2285
|
// install and with which executor, this host holds the actions.
|
|
2263
2286
|
onResolveSdkInstall: installSurfaceFor,
|
|
2287
|
+
// `/plugin install <spec>` (C-4): the write path. The wiring lives beside
|
|
2288
|
+
// the flow (`createPluginInstallEntry`) so a regression can drive the real
|
|
2289
|
+
// feed load, declaration read and profile-relative path resolution with a
|
|
2290
|
+
// fixture context. `undefined` ⇒ not an install form, or no service to
|
|
2291
|
+
// install through; the screen then runs the read-only report instead.
|
|
2292
|
+
onPluginInstall: createPluginInstallEntry(ctx, {
|
|
2293
|
+
ownVersion: installedTuiVersion(),
|
|
2294
|
+
profileName: profile ?? resolveDshProfileName(),
|
|
2295
|
+
}),
|
|
2296
|
+
// `/plugin remove|enable|disable` (C-5): the lifecycle write path. Wired the
|
|
2297
|
+
// same way and for the same reason — the entry is where the real profile, the
|
|
2298
|
+
// declaration read and the data directory meet, so a regression can drive
|
|
2299
|
+
// them with a fixture context. `undefined` ⇒ not one of those forms, or no
|
|
2300
|
+
// service to act through; the screen then runs the read-only report.
|
|
2301
|
+
onPluginManage: createPluginManageEntry(ctx, {
|
|
2302
|
+
profileName: profile ?? resolveDshProfileName(),
|
|
2303
|
+
}),
|
|
2304
|
+
// `/team [status] | on | off`: the Agent Teams bundle through the same
|
|
2305
|
+
// lifecycle flow (team-mode.ts).
|
|
2306
|
+
onTeamCommand: createTeamCommandEntry(ctx, {
|
|
2307
|
+
profileName: profile ?? resolveDshProfileName(),
|
|
2308
|
+
// The host reports `unknown` when it has no version: read the installed one.
|
|
2309
|
+
kernelVersion: entrySlot?.kernelVersion === 'unknown' ? undefined : entrySlot?.kernelVersion,
|
|
2310
|
+
}),
|
|
2264
2311
|
kernelPinned: backendPinned,
|
|
2265
2312
|
// Only a `dsh --profile <name>` launch has a profile installation for
|
|
2266
2313
|
// `/update` to act on; source checkouts and `--config` overlays get the
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
*/
|
|
34
34
|
import type { GrantStore } from '../adapter/standard/grants.js';
|
|
35
35
|
import type { HostDescriptorBuild } from '../adapter/standard/descriptor.js';
|
|
36
|
-
import { type PluginDeclaration } from './plugin-declaration.js';
|
|
36
|
+
import { type PluginDeclaration, type PluginInstallNotice } from './plugin-declaration.js';
|
|
37
37
|
import { type PluginManagerView } from './plugin-manager.js';
|
|
38
38
|
/** How many plugins the matrix shows before an overflow note. */
|
|
39
39
|
export declare const PLUGINS_MATRIX_MAX_ROWS = 20;
|
|
@@ -51,6 +51,43 @@ export interface PluginsInfoDeps {
|
|
|
51
51
|
ledgerFile?: string;
|
|
52
52
|
storageDir?: string;
|
|
53
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* One report cell: credentials redacted first, then sanitized, then capped —
|
|
56
|
+
* truncation comes last, or a cut URL keeps the head of its own secret.
|
|
57
|
+
*
|
|
58
|
+
* Exported for the install flow (C-4): pnpm's output and the service's error
|
|
59
|
+
* text are foreign input reaching the same transcript, and one renderer means
|
|
60
|
+
* the two surfaces cannot disagree about what a cell is.
|
|
61
|
+
*/
|
|
62
|
+
export declare const cell: (value: unknown) => string;
|
|
63
|
+
/** Where the three footprint sources live. */
|
|
64
|
+
export interface PluginFootprintPaths {
|
|
65
|
+
readonly dataDir: string;
|
|
66
|
+
readonly ledgerFile: string;
|
|
67
|
+
readonly storageDir: string;
|
|
68
|
+
}
|
|
69
|
+
/** Test overrides for {@link pluginFootprintPaths}; the report's own deps satisfy it. */
|
|
70
|
+
export interface PluginFootprintOverrides {
|
|
71
|
+
readonly dataDir?: string | undefined;
|
|
72
|
+
readonly ledgerFile?: string | undefined;
|
|
73
|
+
readonly storageDir?: string | undefined;
|
|
74
|
+
}
|
|
75
|
+
/** The plugin set for the matrix: grants-file keys ∪ ledger pluginIds ∪
|
|
76
|
+
* storage namespaces ('host'/'undeclared' ledger identities are not
|
|
77
|
+
* plugins and are excluded). */
|
|
78
|
+
export declare function pluginFootprints(paths: PluginFootprintPaths): string[];
|
|
79
|
+
/**
|
|
80
|
+
* The three footprint sources, resolved the way the diagnostics resolve them
|
|
81
|
+
* (test overrides first, else the packaged locations under `~/.dsh-tui`).
|
|
82
|
+
*/
|
|
83
|
+
export declare function pluginFootprintPaths(overrides?: PluginFootprintOverrides): PluginFootprintPaths;
|
|
84
|
+
/**
|
|
85
|
+
* Whether one plugin id still has a footprint in this profile: a grants-file
|
|
86
|
+
* key, an effect-ledger record, or a storage namespace. The same three sources
|
|
87
|
+
* the matrix unions — a removal that left something behind is read here rather
|
|
88
|
+
* than by a second reader that could disagree with the report (C-5).
|
|
89
|
+
*/
|
|
90
|
+
export declare function pluginFootprintContains(pluginId: string, overrides?: PluginFootprintOverrides): boolean;
|
|
54
91
|
/** Which form of the command the raw argument text asks for. */
|
|
55
92
|
export type PluginArgs = {
|
|
56
93
|
readonly kind: 'overview';
|
|
@@ -64,6 +101,27 @@ export type PluginArgs = {
|
|
|
64
101
|
readonly spec: string;
|
|
65
102
|
} | {
|
|
66
103
|
readonly kind: 'registries';
|
|
104
|
+
}
|
|
105
|
+
/** `/plugin install <spec>`: the write path (C-4), which the UI drives. */
|
|
106
|
+
| {
|
|
107
|
+
readonly kind: 'install';
|
|
108
|
+
readonly spec: string;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* The three lifecycle forms (C-5), which the UI drives through
|
|
112
|
+
* `dsh-adapter/plugin-manage.ts`. `target` is the raw argument: a bundle name
|
|
113
|
+
* or a row identity, resolved by the flow against the profile it reads rather
|
|
114
|
+
* than by a grammar here.
|
|
115
|
+
*/
|
|
116
|
+
| {
|
|
117
|
+
readonly kind: 'remove';
|
|
118
|
+
readonly target: string;
|
|
119
|
+
} | {
|
|
120
|
+
readonly kind: 'enable';
|
|
121
|
+
readonly target: string;
|
|
122
|
+
} | {
|
|
123
|
+
readonly kind: 'disable';
|
|
124
|
+
readonly target: string;
|
|
67
125
|
} | {
|
|
68
126
|
readonly kind: 'unknown';
|
|
69
127
|
readonly sub: string;
|
|
@@ -72,6 +130,34 @@ export type PluginArgs = {
|
|
|
72
130
|
export declare function parsePluginArgs(args: string): PluginArgs;
|
|
73
131
|
/** The `/plugin` overview lines (banner always first). */
|
|
74
132
|
export declare function pluginsInfoLines(args: string, deps: PluginsInfoDeps): string[];
|
|
133
|
+
/**
|
|
134
|
+
* Gate 1's pre-install statement about an install target (C-4), as data.
|
|
135
|
+
*
|
|
136
|
+
* It runs the same parse/project/validate pipeline `check <path>` and the list
|
|
137
|
+
* tags run — one implementation, so the surfaces cannot disagree — over the
|
|
138
|
+
* declaration of the target directory the caller resolved. It deliberately stops
|
|
139
|
+
* before `negotiate`: admission's five states are a statement about a *running*
|
|
140
|
+
* host, and the standing tag in `/plugin` is where they are reported after the
|
|
141
|
+
* install. What a person needs before installing is narrower and decidable: is
|
|
142
|
+
* there a declaration at all, and does this profile's catalog accept it.
|
|
143
|
+
*
|
|
144
|
+
* The evidence is the target directory and nothing else. A declaration resolved
|
|
145
|
+
* by package name would be the profile's already-installed copy of that name —
|
|
146
|
+
* a different artifact from the one being installed (another version, or a local
|
|
147
|
+
* directory), which is how a stale same-name package used to answer for a new
|
|
148
|
+
* target.
|
|
149
|
+
*
|
|
150
|
+
* The two empty answers are not the same thing, and that is the point:
|
|
151
|
+
*
|
|
152
|
+
* - a directory the caller resolved (`install <path>` specs) either carries a
|
|
153
|
+
* package-root `dsh-plugin.json` or does not, so no file is `undeclared`;
|
|
154
|
+
* - a target with no directory to read (a registry name, a tarball, a git spec)
|
|
155
|
+
* ships no file this machine can read, so an empty answer there is `unjudged`
|
|
156
|
+
* — the flow cannot honestly claim a package it has never seen fails gate 1.
|
|
157
|
+
*/
|
|
158
|
+
export declare function declarationNoticeFor(target: {
|
|
159
|
+
readonly directory?: string | undefined;
|
|
160
|
+
}): PluginInstallNotice;
|
|
75
161
|
/** The service-backed half of the report (empty for a form that needs no service). */
|
|
76
162
|
export declare function pluginServiceLines(args: string, deps: PluginsInfoDeps, manager: PluginManagerView | undefined): Promise<string[]>;
|
|
77
163
|
/** `/plugin`: the diagnostics half plus the profile's own bundles and rows. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins-info.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/plugins-info.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAYH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAC5E,OAAO,
|
|
1
|
+
{"version":3,"file":"plugins-info.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/plugins-info.ts"],"names":[],"mappings":"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"}
|