opensip-cli 0.1.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/LICENSE +202 -0
- package/NOTICE +8 -0
- package/README.md +51 -0
- package/dist/api.d.ts +17 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +16 -0
- package/dist/api.js.map +1 -0
- package/dist/bootstrap/admit-tool-package.d.ts +117 -0
- package/dist/bootstrap/admit-tool-package.d.ts.map +1 -0
- package/dist/bootstrap/admit-tool-package.js +170 -0
- package/dist/bootstrap/admit-tool-package.js.map +1 -0
- package/dist/bootstrap/baseline-seams.d.ts +30 -0
- package/dist/bootstrap/baseline-seams.d.ts.map +1 -0
- package/dist/bootstrap/baseline-seams.js +156 -0
- package/dist/bootstrap/baseline-seams.js.map +1 -0
- package/dist/bootstrap/bootstrap-error.d.ts +41 -0
- package/dist/bootstrap/bootstrap-error.d.ts.map +1 -0
- package/dist/bootstrap/bootstrap-error.js +33 -0
- package/dist/bootstrap/bootstrap-error.js.map +1 -0
- package/dist/bootstrap/build-command-registration-input.d.ts +34 -0
- package/dist/bootstrap/build-command-registration-input.d.ts.map +1 -0
- package/dist/bootstrap/build-command-registration-input.js +73 -0
- package/dist/bootstrap/build-command-registration-input.js.map +1 -0
- package/dist/bootstrap/build-per-run-scope.d.ts +62 -0
- package/dist/bootstrap/build-per-run-scope.d.ts.map +1 -0
- package/dist/bootstrap/build-per-run-scope.js +152 -0
- package/dist/bootstrap/build-per-run-scope.js.map +1 -0
- package/dist/bootstrap/build-targets.d.ts +42 -0
- package/dist/bootstrap/build-targets.d.ts.map +1 -0
- package/dist/bootstrap/build-targets.js +117 -0
- package/dist/bootstrap/build-targets.js.map +1 -0
- package/dist/bootstrap/cli-defaults.d.ts +35 -0
- package/dist/bootstrap/cli-defaults.d.ts.map +1 -0
- package/dist/bootstrap/cli-defaults.js +65 -0
- package/dist/bootstrap/cli-defaults.js.map +1 -0
- package/dist/bootstrap/config-and-capabilities.d.ts +74 -0
- package/dist/bootstrap/config-and-capabilities.d.ts.map +1 -0
- package/dist/bootstrap/config-and-capabilities.js +224 -0
- package/dist/bootstrap/config-and-capabilities.js.map +1 -0
- package/dist/bootstrap/deliver-envelope.d.ts +80 -0
- package/dist/bootstrap/deliver-envelope.d.ts.map +1 -0
- package/dist/bootstrap/deliver-envelope.js +195 -0
- package/dist/bootstrap/deliver-envelope.js.map +1 -0
- package/dist/bootstrap/egress-plane.d.ts +22 -0
- package/dist/bootstrap/egress-plane.d.ts.map +1 -0
- package/dist/bootstrap/egress-plane.js +37 -0
- package/dist/bootstrap/egress-plane.js.map +1 -0
- package/dist/bootstrap/host-planes.d.ts +28 -0
- package/dist/bootstrap/host-planes.d.ts.map +1 -0
- package/dist/bootstrap/host-planes.js +152 -0
- package/dist/bootstrap/host-planes.js.map +1 -0
- package/dist/bootstrap/index.d.ts +76 -0
- package/dist/bootstrap/index.d.ts.map +1 -0
- package/dist/bootstrap/index.js +109 -0
- package/dist/bootstrap/index.js.map +1 -0
- package/dist/bootstrap/live-plane.d.ts +51 -0
- package/dist/bootstrap/live-plane.d.ts.map +1 -0
- package/dist/bootstrap/live-plane.js +72 -0
- package/dist/bootstrap/live-plane.js.map +1 -0
- package/dist/bootstrap/load-tool-capabilities.d.ts +42 -0
- package/dist/bootstrap/load-tool-capabilities.d.ts.map +1 -0
- package/dist/bootstrap/load-tool-capabilities.js +76 -0
- package/dist/bootstrap/load-tool-capabilities.js.map +1 -0
- package/dist/bootstrap/output-plane.d.ts +37 -0
- package/dist/bootstrap/output-plane.d.ts.map +1 -0
- package/dist/bootstrap/output-plane.js +114 -0
- package/dist/bootstrap/output-plane.js.map +1 -0
- package/dist/bootstrap/owning-tool-init.d.ts +32 -0
- package/dist/bootstrap/owning-tool-init.d.ts.map +1 -0
- package/dist/bootstrap/owning-tool-init.js +69 -0
- package/dist/bootstrap/owning-tool-init.js.map +1 -0
- package/dist/bootstrap/pre-action-guards.d.ts +44 -0
- package/dist/bootstrap/pre-action-guards.d.ts.map +1 -0
- package/dist/bootstrap/pre-action-guards.js +136 -0
- package/dist/bootstrap/pre-action-guards.js.map +1 -0
- package/dist/bootstrap/pre-action-hook.d.ts +68 -0
- package/dist/bootstrap/pre-action-hook.d.ts.map +1 -0
- package/dist/bootstrap/pre-action-hook.js +289 -0
- package/dist/bootstrap/pre-action-hook.js.map +1 -0
- package/dist/bootstrap/pre-action-messages.d.ts +32 -0
- package/dist/bootstrap/pre-action-messages.d.ts.map +1 -0
- package/dist/bootstrap/pre-action-messages.js +49 -0
- package/dist/bootstrap/pre-action-messages.js.map +1 -0
- package/dist/bootstrap/process-idempotency.d.ts +17 -0
- package/dist/bootstrap/process-idempotency.d.ts.map +1 -0
- package/dist/bootstrap/process-idempotency.js +20 -0
- package/dist/bootstrap/process-idempotency.js.map +1 -0
- package/dist/bootstrap/register-language-adapters.d.ts +23 -0
- package/dist/bootstrap/register-language-adapters.d.ts.map +1 -0
- package/dist/bootstrap/register-language-adapters.js +35 -0
- package/dist/bootstrap/register-language-adapters.js.map +1 -0
- package/dist/bootstrap/register-tools.d.ts +228 -0
- package/dist/bootstrap/register-tools.d.ts.map +1 -0
- package/dist/bootstrap/register-tools.js +696 -0
- package/dist/bootstrap/register-tools.js.map +1 -0
- package/dist/bootstrap/render.d.ts +27 -0
- package/dist/bootstrap/render.d.ts.map +1 -0
- package/dist/bootstrap/render.js +53 -0
- package/dist/bootstrap/render.js.map +1 -0
- package/dist/bootstrap/report.d.ts +34 -0
- package/dist/bootstrap/report.d.ts.map +1 -0
- package/dist/bootstrap/report.js +47 -0
- package/dist/bootstrap/report.js.map +1 -0
- package/dist/bootstrap/run-plane.d.ts +105 -0
- package/dist/bootstrap/run-plane.d.ts.map +1 -0
- package/dist/bootstrap/run-plane.js +190 -0
- package/dist/bootstrap/run-plane.js.map +1 -0
- package/dist/bootstrap/scope-access.d.ts +68 -0
- package/dist/bootstrap/scope-access.d.ts.map +1 -0
- package/dist/bootstrap/scope-access.js +115 -0
- package/dist/bootstrap/scope-access.js.map +1 -0
- package/dist/bootstrap/state-seams.d.ts +14 -0
- package/dist/bootstrap/state-seams.d.ts.map +1 -0
- package/dist/bootstrap/state-seams.js +26 -0
- package/dist/bootstrap/state-seams.js.map +1 -0
- package/dist/bootstrap/tool-lifecycle.d.ts +102 -0
- package/dist/bootstrap/tool-lifecycle.d.ts.map +1 -0
- package/dist/bootstrap/tool-lifecycle.js +103 -0
- package/dist/bootstrap/tool-lifecycle.js.map +1 -0
- package/dist/bootstrap/tool-trust.d.ts +49 -0
- package/dist/bootstrap/tool-trust.d.ts.map +1 -0
- package/dist/bootstrap/tool-trust.js +65 -0
- package/dist/bootstrap/tool-trust.js.map +1 -0
- package/dist/bootstrap/validate-tool.d.ts +22 -0
- package/dist/bootstrap/validate-tool.d.ts.map +1 -0
- package/dist/bootstrap/validate-tool.js +38 -0
- package/dist/bootstrap/validate-tool.js.map +1 -0
- package/dist/cli-context.d.ts +38 -0
- package/dist/cli-context.d.ts.map +1 -0
- package/dist/cli-context.js +134 -0
- package/dist/cli-context.js.map +1 -0
- package/dist/commands/agent-catalog.d.ts +45 -0
- package/dist/commands/agent-catalog.d.ts.map +1 -0
- package/dist/commands/agent-catalog.js +115 -0
- package/dist/commands/agent-catalog.js.map +1 -0
- package/dist/commands/assemble-outcome.d.ts +69 -0
- package/dist/commands/assemble-outcome.d.ts.map +1 -0
- package/dist/commands/assemble-outcome.js +121 -0
- package/dist/commands/assemble-outcome.js.map +1 -0
- package/dist/commands/clear.d.ts +32 -0
- package/dist/commands/clear.d.ts.map +1 -0
- package/dist/commands/clear.js +73 -0
- package/dist/commands/clear.js.map +1 -0
- package/dist/commands/completion.d.ts +90 -0
- package/dist/commands/completion.d.ts.map +1 -0
- package/dist/commands/completion.js +233 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/configure.d.ts +32 -0
- package/dist/commands/configure.d.ts.map +1 -0
- package/dist/commands/configure.js +94 -0
- package/dist/commands/configure.js.map +1 -0
- package/dist/commands/history.d.ts +18 -0
- package/dist/commands/history.d.ts.map +1 -0
- package/dist/commands/history.js +48 -0
- package/dist/commands/history.js.map +1 -0
- package/dist/commands/host-command-specs.d.ts +49 -0
- package/dist/commands/host-command-specs.d.ts.map +1 -0
- package/dist/commands/host-command-specs.js +331 -0
- package/dist/commands/host-command-specs.js.map +1 -0
- package/dist/commands/host-subcommand-groups.d.ts +69 -0
- package/dist/commands/host-subcommand-groups.d.ts.map +1 -0
- package/dist/commands/host-subcommand-groups.js +374 -0
- package/dist/commands/host-subcommand-groups.js.map +1 -0
- package/dist/commands/index.d.ts +36 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +36 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init/config-templates.d.ts +16 -0
- package/dist/commands/init/config-templates.d.ts.map +1 -0
- package/dist/commands/init/config-templates.js +108 -0
- package/dist/commands/init/config-templates.js.map +1 -0
- package/dist/commands/init/file-classifier.d.ts +40 -0
- package/dist/commands/init/file-classifier.d.ts.map +1 -0
- package/dist/commands/init/file-classifier.js +155 -0
- package/dist/commands/init/file-classifier.js.map +1 -0
- package/dist/commands/init/language-detection.d.ts +44 -0
- package/dist/commands/init/language-detection.d.ts.map +1 -0
- package/dist/commands/init/language-detection.js +124 -0
- package/dist/commands/init/language-detection.js.map +1 -0
- package/dist/commands/init/scaffold-writer.d.ts +26 -0
- package/dist/commands/init/scaffold-writer.d.ts.map +1 -0
- package/dist/commands/init/scaffold-writer.js +102 -0
- package/dist/commands/init/scaffold-writer.js.map +1 -0
- package/dist/commands/init/state-machine.d.ts +32 -0
- package/dist/commands/init/state-machine.d.ts.map +1 -0
- package/dist/commands/init/state-machine.js +105 -0
- package/dist/commands/init/state-machine.js.map +1 -0
- package/dist/commands/init.d.ts +95 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +209 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/mount-command-spec.d.ts +106 -0
- package/dist/commands/mount-command-spec.d.ts.map +1 -0
- package/dist/commands/mount-command-spec.js +313 -0
- package/dist/commands/mount-command-spec.js.map +1 -0
- package/dist/commands/mount-result-command.d.ts +71 -0
- package/dist/commands/mount-result-command.d.ts.map +1 -0
- package/dist/commands/mount-result-command.js +76 -0
- package/dist/commands/mount-result-command.js.map +1 -0
- package/dist/commands/plugin/config-edit.d.ts +20 -0
- package/dist/commands/plugin/config-edit.d.ts.map +1 -0
- package/dist/commands/plugin/config-edit.js +102 -0
- package/dist/commands/plugin/config-edit.js.map +1 -0
- package/dist/commands/plugin/domain-resolution.d.ts +38 -0
- package/dist/commands/plugin/domain-resolution.d.ts.map +1 -0
- package/dist/commands/plugin/domain-resolution.js +98 -0
- package/dist/commands/plugin/domain-resolution.js.map +1 -0
- package/dist/commands/plugin/host-dir.d.ts +42 -0
- package/dist/commands/plugin/host-dir.d.ts.map +1 -0
- package/dist/commands/plugin/host-dir.js +168 -0
- package/dist/commands/plugin/host-dir.js.map +1 -0
- package/dist/commands/plugin-host-ops.d.ts +41 -0
- package/dist/commands/plugin-host-ops.d.ts.map +1 -0
- package/dist/commands/plugin-host-ops.js +114 -0
- package/dist/commands/plugin-host-ops.js.map +1 -0
- package/dist/commands/plugin.d.ts +81 -0
- package/dist/commands/plugin.d.ts.map +1 -0
- package/dist/commands/plugin.js +287 -0
- package/dist/commands/plugin.js.map +1 -0
- package/dist/commands/render-outcome.d.ts +52 -0
- package/dist/commands/render-outcome.d.ts.map +1 -0
- package/dist/commands/render-outcome.js +55 -0
- package/dist/commands/render-outcome.js.map +1 -0
- package/dist/commands/session-show.d.ts +27 -0
- package/dist/commands/session-show.d.ts.map +1 -0
- package/dist/commands/session-show.js +166 -0
- package/dist/commands/session-show.js.map +1 -0
- package/dist/commands/shared.d.ts +107 -0
- package/dist/commands/shared.d.ts.map +1 -0
- package/dist/commands/shared.js +13 -0
- package/dist/commands/shared.js.map +1 -0
- package/dist/commands/tools/data-purge.d.ts +20 -0
- package/dist/commands/tools/data-purge.d.ts.map +1 -0
- package/dist/commands/tools/data-purge.js +59 -0
- package/dist/commands/tools/data-purge.js.map +1 -0
- package/dist/commands/tools/index.d.ts +16 -0
- package/dist/commands/tools/index.d.ts.map +1 -0
- package/dist/commands/tools/index.js +213 -0
- package/dist/commands/tools/index.js.map +1 -0
- package/dist/commands/tools/install.d.ts +24 -0
- package/dist/commands/tools/install.d.ts.map +1 -0
- package/dist/commands/tools/install.js +83 -0
- package/dist/commands/tools/install.js.map +1 -0
- package/dist/commands/tools/list.d.ts +41 -0
- package/dist/commands/tools/list.d.ts.map +1 -0
- package/dist/commands/tools/list.js +103 -0
- package/dist/commands/tools/list.js.map +1 -0
- package/dist/commands/tools/runtime-probe-entry.d.ts +14 -0
- package/dist/commands/tools/runtime-probe-entry.d.ts.map +1 -0
- package/dist/commands/tools/runtime-probe-entry.js +36 -0
- package/dist/commands/tools/runtime-probe-entry.js.map +1 -0
- package/dist/commands/tools/runtime-probe.d.ts +29 -0
- package/dist/commands/tools/runtime-probe.d.ts.map +1 -0
- package/dist/commands/tools/runtime-probe.js +66 -0
- package/dist/commands/tools/runtime-probe.js.map +1 -0
- package/dist/commands/tools/storage-contract-checks.d.ts +37 -0
- package/dist/commands/tools/storage-contract-checks.d.ts.map +1 -0
- package/dist/commands/tools/storage-contract-checks.js +91 -0
- package/dist/commands/tools/storage-contract-checks.js.map +1 -0
- package/dist/commands/tools/uninstall.d.ts +29 -0
- package/dist/commands/tools/uninstall.d.ts.map +1 -0
- package/dist/commands/tools/uninstall.js +77 -0
- package/dist/commands/tools/uninstall.js.map +1 -0
- package/dist/commands/tools/validate.d.ts +44 -0
- package/dist/commands/tools/validate.d.ts.map +1 -0
- package/dist/commands/tools/validate.js +202 -0
- package/dist/commands/tools/validate.js.map +1 -0
- package/dist/commands/uninstall/targets.d.ts +53 -0
- package/dist/commands/uninstall/targets.d.ts.map +1 -0
- package/dist/commands/uninstall/targets.js +205 -0
- package/dist/commands/uninstall/targets.js.map +1 -0
- package/dist/commands/uninstall.d.ts +88 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +184 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/env/host-env-specs.d.ts +52 -0
- package/dist/env/host-env-specs.d.ts.map +1 -0
- package/dist/env/host-env-specs.js +129 -0
- package/dist/env/host-env-specs.js.map +1 -0
- package/dist/error-handler.d.ts +64 -0
- package/dist/error-handler.d.ts.map +1 -0
- package/dist/error-handler.js +180 -0
- package/dist/error-handler.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +154 -0
- package/dist/index.js.map +1 -0
- package/dist/open-report.d.ts +40 -0
- package/dist/open-report.d.ts.map +1 -0
- package/dist/open-report.js +54 -0
- package/dist/open-report.js.map +1 -0
- package/dist/report-compose.d.ts +35 -0
- package/dist/report-compose.d.ts.map +1 -0
- package/dist/report-compose.js +103 -0
- package/dist/report-compose.js.map +1 -0
- package/dist/session-replay-registry.d.ts +20 -0
- package/dist/session-replay-registry.d.ts.map +1 -0
- package/dist/session-replay-registry.js +38 -0
- package/dist/session-replay-registry.js.map +1 -0
- package/dist/telemetry/profiling.d.ts +42 -0
- package/dist/telemetry/profiling.d.ts.map +1 -0
- package/dist/telemetry/profiling.js +160 -0
- package/dist/telemetry/profiling.js.map +1 -0
- package/dist/telemetry/sdk-init.d.ts +87 -0
- package/dist/telemetry/sdk-init.d.ts.map +1 -0
- package/dist/telemetry/sdk-init.js +235 -0
- package/dist/telemetry/sdk-init.js.map +1 -0
- package/dist/ui/App.d.ts +32 -0
- package/dist/ui/App.d.ts.map +1 -0
- package/dist/ui/App.js +35 -0
- package/dist/ui/App.js.map +1 -0
- package/dist/ui/render.d.ts +15 -0
- package/dist/ui/render.d.ts.map +1 -0
- package/dist/ui/render.js +21 -0
- package/dist/ui/render.js.map +1 -0
- package/dist/ui/result-to-view.d.ts +40 -0
- package/dist/ui/result-to-view.d.ts.map +1 -0
- package/dist/ui/result-to-view.js +389 -0
- package/dist/ui/result-to-view.js.map +1 -0
- package/dist/ui/views/init-view.d.ts +9 -0
- package/dist/ui/views/init-view.d.ts.map +1 -0
- package/dist/ui/views/init-view.js +119 -0
- package/dist/ui/views/init-view.js.map +1 -0
- package/dist/ui/views/misc-views.d.ts +18 -0
- package/dist/ui/views/misc-views.d.ts.map +1 -0
- package/dist/ui/views/misc-views.js +244 -0
- package/dist/ui/views/misc-views.js.map +1 -0
- package/dist/ui/views/plugin-view.d.ts +8 -0
- package/dist/ui/views/plugin-view.d.ts.map +1 -0
- package/dist/ui/views/plugin-view.js +135 -0
- package/dist/ui/views/plugin-view.js.map +1 -0
- package/dist/ui/views/tools-views.d.ts +12 -0
- package/dist/ui/views/tools-views.d.ts.map +1 -0
- package/dist/ui/views/tools-views.js +152 -0
- package/dist/ui/views/tools-views.js.map +1 -0
- package/dist/update-notifier.d.ts +108 -0
- package/dist/update-notifier.d.ts.map +1 -0
- package/dist/update-notifier.js +188 -0
- package/dist/update-notifier.js.map +1 -0
- package/dist/update-state.d.ts +40 -0
- package/dist/update-state.d.ts.map +1 -0
- package/dist/update-state.js +81 -0
- package/dist/update-state.js.map +1 -0
- package/dist/welcome.d.ts +53 -0
- package/dist/welcome.d.ts.map +1 -0
- package/dist/welcome.js +89 -0
- package/dist/welcome.js.map +1 -0
- package/package.json +100 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* View-model builders for the remaining result types: list-checks,
|
|
3
|
+
* list-recipes, history, simulation notice, report, help, and the
|
|
4
|
+
* clear/configure/uninstall "done" summaries. Each reproduces the visible
|
|
5
|
+
* output of its retired Ink component as a renderer-agnostic ViewNode.
|
|
6
|
+
*/
|
|
7
|
+
import { line, group, viewTable, } from '@opensip-cli/cli-ui';
|
|
8
|
+
const SPACER = { kind: 'spacer' };
|
|
9
|
+
const SEPARATOR = { kind: 'separator' };
|
|
10
|
+
const SIMULATION_TOOL_TITLE = 'Simulation';
|
|
11
|
+
// --- list-checks ----------------------------------------------------------
|
|
12
|
+
export function viewListChecks(result) {
|
|
13
|
+
const tagGroups = new Map();
|
|
14
|
+
for (const check of result.checks) {
|
|
15
|
+
const tags = check.tags.length > 0 ? check.tags : ['untagged'];
|
|
16
|
+
for (const tag of tags) {
|
|
17
|
+
const existing = tagGroups.get(tag);
|
|
18
|
+
if (existing)
|
|
19
|
+
existing.push(check);
|
|
20
|
+
else
|
|
21
|
+
tagGroups.set(tag, [check]);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const sortedTags = [...tagGroups.entries()].sort(([a], [b]) => a.localeCompare(b));
|
|
25
|
+
const children = [
|
|
26
|
+
line([
|
|
27
|
+
{ text: 'Available Fitness Checks', bold: true },
|
|
28
|
+
{ text: ` (${result.totalCount} total)`, dim: true },
|
|
29
|
+
]),
|
|
30
|
+
SPACER,
|
|
31
|
+
];
|
|
32
|
+
for (const [tag, tagChecks] of sortedTags) {
|
|
33
|
+
// tagChecks is a freshly-built array owned by this function — sort in
|
|
34
|
+
// place (no copy): avoids both a spread-in-loop (performance-anti-patterns
|
|
35
|
+
// fitness check) and Array#slice (unicorn/prefer-spread eslint rule).
|
|
36
|
+
tagChecks.sort((a, b) => a.slug.localeCompare(b.slug));
|
|
37
|
+
const block = [
|
|
38
|
+
line([
|
|
39
|
+
{ text: tag, tone: 'brand' },
|
|
40
|
+
{ text: ` (${tagChecks.length})`, dim: true },
|
|
41
|
+
]),
|
|
42
|
+
];
|
|
43
|
+
for (const c of tagChecks) {
|
|
44
|
+
block.push(line([{ text: ` ${c.slug} ` }, { text: `— ${c.description}`, dim: true }]));
|
|
45
|
+
}
|
|
46
|
+
block.push(SPACER);
|
|
47
|
+
children.push(group(block, 2));
|
|
48
|
+
}
|
|
49
|
+
return group(children);
|
|
50
|
+
}
|
|
51
|
+
// --- list-recipes ---------------------------------------------------------
|
|
52
|
+
export function viewListRecipes(result) {
|
|
53
|
+
const children = [line([{ text: 'Available Recipes', bold: true }]), SPACER];
|
|
54
|
+
for (const r of result.recipes) {
|
|
55
|
+
children.push(line([
|
|
56
|
+
{ text: ' ' },
|
|
57
|
+
{ text: r.name, tone: 'brand' },
|
|
58
|
+
{ text: ` — ${r.description} ` },
|
|
59
|
+
{ text: `(${r.checkCount})`, dim: true },
|
|
60
|
+
]));
|
|
61
|
+
}
|
|
62
|
+
return group(children);
|
|
63
|
+
}
|
|
64
|
+
// --- history --------------------------------------------------------------
|
|
65
|
+
function scoreTone(score) {
|
|
66
|
+
if (score >= 90)
|
|
67
|
+
return 'success';
|
|
68
|
+
if (score >= 70)
|
|
69
|
+
return 'warning';
|
|
70
|
+
return 'error';
|
|
71
|
+
}
|
|
72
|
+
function payloadCounts(payload) {
|
|
73
|
+
if (payload === null || typeof payload !== 'object')
|
|
74
|
+
return null;
|
|
75
|
+
const summary = payload.summary;
|
|
76
|
+
if (summary === null || typeof summary !== 'object')
|
|
77
|
+
return null;
|
|
78
|
+
const { passed, total } = summary;
|
|
79
|
+
return typeof passed === 'number' && typeof total === 'number' ? { passed, total } : null;
|
|
80
|
+
}
|
|
81
|
+
/** One table row (one span per column) for a stored session. */
|
|
82
|
+
function historyRow(s) {
|
|
83
|
+
const counts = payloadCounts(s.payload);
|
|
84
|
+
return [
|
|
85
|
+
{ text: s.id, dim: true },
|
|
86
|
+
{ text: s.tool, tone: 'brand', bold: true },
|
|
87
|
+
{ text: new Date(s.startedAt).toLocaleString(), dim: true },
|
|
88
|
+
{ text: `${s.score}%`, tone: scoreTone(s.score) },
|
|
89
|
+
{ text: s.passed ? 'PASS' : 'FAIL', tone: s.passed ? 'success' : 'error' },
|
|
90
|
+
{ text: counts ? `${counts.passed}/${counts.total}` : '—' },
|
|
91
|
+
{ text: s.recipe ?? '', dim: true },
|
|
92
|
+
{ text: `${(s.durationMs / 1000).toFixed(1)}s`, dim: true },
|
|
93
|
+
];
|
|
94
|
+
}
|
|
95
|
+
/** Columns for the run-history table — Score/Checks/Duration right-align. */
|
|
96
|
+
const HISTORY_COLUMNS = [
|
|
97
|
+
'Session',
|
|
98
|
+
'Tool',
|
|
99
|
+
'When',
|
|
100
|
+
{ header: 'Score', align: 'right' },
|
|
101
|
+
'Status',
|
|
102
|
+
{ header: 'Checks', align: 'right' },
|
|
103
|
+
'Recipe',
|
|
104
|
+
{ header: 'Duration', align: 'right' },
|
|
105
|
+
];
|
|
106
|
+
export function viewHistory(result) {
|
|
107
|
+
if (result.sessions.length === 0) {
|
|
108
|
+
return group([line([{ text: 'No sessions recorded yet. Run opensip fit to generate data.', dim: true }])], 2);
|
|
109
|
+
}
|
|
110
|
+
const visible = result.sessions.slice(0, 20);
|
|
111
|
+
return group([
|
|
112
|
+
line([
|
|
113
|
+
{ text: 'Run History', bold: true },
|
|
114
|
+
{ text: ` (${result.sessions.length} sessions)`, dim: true },
|
|
115
|
+
]),
|
|
116
|
+
SPACER,
|
|
117
|
+
group([viewTable(HISTORY_COLUMNS, visible.map(historyRow))], 2),
|
|
118
|
+
]);
|
|
119
|
+
}
|
|
120
|
+
// --- sim notice ------------------------------------------------------------
|
|
121
|
+
export function viewSimNotice(_result) {
|
|
122
|
+
return group([
|
|
123
|
+
group([
|
|
124
|
+
line([{ text: SIMULATION_TOOL_TITLE, tone: 'brand', bold: true }]),
|
|
125
|
+
SPACER,
|
|
126
|
+
line([{ text: 'Run scenario-based tests against your codebase.', dim: true }]),
|
|
127
|
+
SPACER,
|
|
128
|
+
SEPARATOR,
|
|
129
|
+
], 2),
|
|
130
|
+
group([
|
|
131
|
+
SPACER,
|
|
132
|
+
line([{ text: 'Status:', tone: 'success' }, { text: ' Available in OpenSIP CLI 1.0.0.' }]),
|
|
133
|
+
line([{ text: ' Use opensip sim --recipes to list registered recipes.' }]),
|
|
134
|
+
SPACER,
|
|
135
|
+
line([{ text: ' → https://github.com/opensip-ai/opensip-cli/issues', dim: true }]),
|
|
136
|
+
], 2),
|
|
137
|
+
]);
|
|
138
|
+
}
|
|
139
|
+
// --- help -----------------------------------------------------------------
|
|
140
|
+
export function viewHelp() {
|
|
141
|
+
return group([
|
|
142
|
+
line([{ text: 'opensip-cli', bold: true }]),
|
|
143
|
+
line([{ text: 'Codebase analysis toolkit', dim: true }]),
|
|
144
|
+
SPACER,
|
|
145
|
+
line([{ text: 'Commands:', bold: true }]),
|
|
146
|
+
line([{ text: ' ' }, { text: 'fit', tone: 'brand' }, { text: ' Run fitness checks' }]),
|
|
147
|
+
line([{ text: ' ' }, { text: 'init', tone: 'brand' }, { text: ' Generate config file' }]),
|
|
148
|
+
line([
|
|
149
|
+
{ text: ' ' },
|
|
150
|
+
{ text: 'sim', tone: 'brand' },
|
|
151
|
+
{ text: ' Run simulation scenarios' },
|
|
152
|
+
]),
|
|
153
|
+
line([{ text: ' ' }, { text: 'plugin', tone: 'brand' }, { text: ' Manage plugins' }]),
|
|
154
|
+
SPACER,
|
|
155
|
+
line([{ text: 'Run opensip-cli <command> --help for details.', dim: true }]),
|
|
156
|
+
], 2);
|
|
157
|
+
}
|
|
158
|
+
// --- report ---------------------------------------------------------------
|
|
159
|
+
export function viewReport(result) {
|
|
160
|
+
return group([
|
|
161
|
+
line([
|
|
162
|
+
{ text: '✓', tone: 'success' },
|
|
163
|
+
{ text: ' Report written to ' },
|
|
164
|
+
{ text: result.path, bold: true },
|
|
165
|
+
]),
|
|
166
|
+
line([
|
|
167
|
+
{
|
|
168
|
+
text: ` ${result.opened ? 'Opened in browser.' : 'Open the file in your browser to view.'}`,
|
|
169
|
+
dim: true,
|
|
170
|
+
},
|
|
171
|
+
]),
|
|
172
|
+
], 2);
|
|
173
|
+
}
|
|
174
|
+
// --- clear-done -----------------------------------------------------------
|
|
175
|
+
export function viewClearDone(result) {
|
|
176
|
+
if (result.action === 'empty')
|
|
177
|
+
return group([line([{ text: 'No session data to clear.', dim: true }])], 2);
|
|
178
|
+
if (result.action === 'cancelled')
|
|
179
|
+
return group([line([{ text: 'Cancelled. No data was deleted.', dim: true }])], 2);
|
|
180
|
+
const plural = result.deletedCount === 1 ? '' : 's';
|
|
181
|
+
return group([
|
|
182
|
+
line([
|
|
183
|
+
{ text: '✓', tone: 'success' },
|
|
184
|
+
{ text: ` ${result.deletedCount} session${plural} deleted.` },
|
|
185
|
+
]),
|
|
186
|
+
], 2);
|
|
187
|
+
}
|
|
188
|
+
// --- configure-done -------------------------------------------------------
|
|
189
|
+
export function viewConfigureDone(result) {
|
|
190
|
+
if (result.action === 'cancelled') {
|
|
191
|
+
return group([line([{ text: 'No key provided. Configuration unchanged.', dim: true }])], 2);
|
|
192
|
+
}
|
|
193
|
+
return group([
|
|
194
|
+
line([
|
|
195
|
+
{ text: '✓', tone: 'success' },
|
|
196
|
+
{ text: ' API key saved to ' },
|
|
197
|
+
{ text: result.configPath, bold: true },
|
|
198
|
+
]),
|
|
199
|
+
line([
|
|
200
|
+
{ text: ' You can now use --report-to to send results to OpenSIP Cloud.', dim: true },
|
|
201
|
+
]),
|
|
202
|
+
], 2);
|
|
203
|
+
}
|
|
204
|
+
// --- uninstall-done -------------------------------------------------------
|
|
205
|
+
function formatBytes(bytes) {
|
|
206
|
+
if (bytes < 1024)
|
|
207
|
+
return `${bytes} B`;
|
|
208
|
+
if (bytes < 1024 * 1024)
|
|
209
|
+
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
210
|
+
if (bytes < 1024 * 1024 * 1024)
|
|
211
|
+
return `${(bytes / 1024 / 1024).toFixed(1)} MB`;
|
|
212
|
+
return `${(bytes / 1024 / 1024 / 1024).toFixed(2)} GB`;
|
|
213
|
+
}
|
|
214
|
+
export function viewUninstallDone(result) {
|
|
215
|
+
const sizeText = formatBytes(result.sizeBytes);
|
|
216
|
+
const count = result.targets.length;
|
|
217
|
+
const plural = count === 1 ? '' : 's';
|
|
218
|
+
if (result.action === 'empty')
|
|
219
|
+
return group([line([{ text: `Nothing to remove at ${result.rootPath}.`, dim: true }])], 2);
|
|
220
|
+
if (result.action === 'cancelled')
|
|
221
|
+
return group([line([{ text: 'Cancelled. No changes made.', dim: true }])], 2);
|
|
222
|
+
if (result.action === 'dry-run') {
|
|
223
|
+
return group([
|
|
224
|
+
line([
|
|
225
|
+
{
|
|
226
|
+
text: `[dry-run] No changes made. Re-run without --dry-run to remove ${count} target${plural} (${sizeText}).`,
|
|
227
|
+
dim: true,
|
|
228
|
+
},
|
|
229
|
+
]),
|
|
230
|
+
], 2);
|
|
231
|
+
}
|
|
232
|
+
const hint = result.mode === 'user'
|
|
233
|
+
? 'To remove the CLI itself: npm uninstall -g opensip-cli'
|
|
234
|
+
: 'To also remove user-level config: opensip uninstall';
|
|
235
|
+
return group([
|
|
236
|
+
line([
|
|
237
|
+
{ text: '✓', tone: 'success' },
|
|
238
|
+
{ text: ` Removed ${count} target${plural} ` },
|
|
239
|
+
{ text: `(${sizeText})`, dim: true },
|
|
240
|
+
]),
|
|
241
|
+
line([{ text: ` ${hint}`, dim: true }]),
|
|
242
|
+
], 2);
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=misc-views.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"misc-views.js","sourceRoot":"","sources":["../../../src/ui/views/misc-views.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* plugin view-model builder — expresses each PluginResult variant
|
|
3
|
+
* (list / add / remove / sync) as a ViewNode.
|
|
4
|
+
*/
|
|
5
|
+
import { type ViewNode } from '@opensip-cli/cli-ui';
|
|
6
|
+
import type { PluginResult } from '@opensip-cli/contracts';
|
|
7
|
+
export declare function viewPlugin(result: PluginResult): ViewNode;
|
|
8
|
+
//# sourceMappingURL=plugin-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-view.d.ts","sourceRoot":"","sources":["../../../src/ui/views/plugin-view.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAA0B,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE5E,OAAO,KAAK,EAAc,YAAY,EAAkB,MAAM,wBAAwB,CAAC;AAyJvF,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,QAAQ,CAqBzD"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* plugin view-model builder — expresses each PluginResult variant
|
|
3
|
+
* (list / add / remove / sync) as a ViewNode.
|
|
4
|
+
*/
|
|
5
|
+
import { line, group } from '@opensip-cli/cli-ui';
|
|
6
|
+
/** A short, stable prefix of the manifest hash — full hash stays in `--json`. */
|
|
7
|
+
function shortHash(manifestHash) {
|
|
8
|
+
return manifestHash.slice(0, 12);
|
|
9
|
+
}
|
|
10
|
+
function provenanceLine(p) {
|
|
11
|
+
const spans = [
|
|
12
|
+
{ text: ` 🔧 ${p.id}`, tone: 'brand' },
|
|
13
|
+
{ text: ` ${p.version}`, dim: true },
|
|
14
|
+
{ text: ` [${p.source}]`, dim: true },
|
|
15
|
+
{ text: ` ${shortHash(p.manifestHash)}`, dim: true },
|
|
16
|
+
];
|
|
17
|
+
if (p.packageName !== undefined)
|
|
18
|
+
spans.push({ text: ` ${p.packageName}`, dim: true });
|
|
19
|
+
return line(spans);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Render the admitted-tool provenance recorded this run (launch).
|
|
23
|
+
* Additive section below the discovered-plugin list — empty/omitted when
|
|
24
|
+
* no tools were admitted (e.g. no bootstrap, isolated tests).
|
|
25
|
+
*/
|
|
26
|
+
function provenanceSection(records) {
|
|
27
|
+
if (records.length === 0)
|
|
28
|
+
return [];
|
|
29
|
+
return [
|
|
30
|
+
{ kind: 'spacer' },
|
|
31
|
+
line([{ text: 'Tools (provenance)', bold: true }]),
|
|
32
|
+
...records.map(provenanceLine),
|
|
33
|
+
];
|
|
34
|
+
}
|
|
35
|
+
function pluginLine(p) {
|
|
36
|
+
const icon = p.pluginType === 'package' ? '📦' : '📄';
|
|
37
|
+
return line([{ text: ` ${icon} ${p.namespace}` }, { text: ` (${p.pluginType})`, dim: true }]);
|
|
38
|
+
}
|
|
39
|
+
function domainSection(domain, plugins) {
|
|
40
|
+
const domainPlugins = plugins.filter((p) => p.domain === domain);
|
|
41
|
+
if (domainPlugins.length === 0) {
|
|
42
|
+
return [
|
|
43
|
+
line([
|
|
44
|
+
{ text: ` ${domain}/`, dim: true },
|
|
45
|
+
{ text: ' — no plugins installed', dim: true },
|
|
46
|
+
]),
|
|
47
|
+
];
|
|
48
|
+
}
|
|
49
|
+
return [
|
|
50
|
+
line([
|
|
51
|
+
{ text: ` ${domain}/`, tone: 'brand' },
|
|
52
|
+
{ text: ` (${domainPlugins.length})`, dim: true },
|
|
53
|
+
]),
|
|
54
|
+
...domainPlugins.map(pluginLine),
|
|
55
|
+
];
|
|
56
|
+
}
|
|
57
|
+
function listView(domains, plugins, totalCount, toolProvenance) {
|
|
58
|
+
const orderedDomains = orderedPluginDomains(domains, plugins);
|
|
59
|
+
const children = [
|
|
60
|
+
line([{ text: 'Installed Plugins', bold: true }]),
|
|
61
|
+
{ kind: 'spacer' },
|
|
62
|
+
...orderedDomains.flatMap((domain) => domainSection(domain, plugins)),
|
|
63
|
+
];
|
|
64
|
+
if (totalCount === 0) {
|
|
65
|
+
children.push({ kind: 'spacer' }, line([
|
|
66
|
+
{
|
|
67
|
+
text: ' No plugins installed. Run opensip plugin add <package> to get started.',
|
|
68
|
+
dim: true,
|
|
69
|
+
},
|
|
70
|
+
]));
|
|
71
|
+
}
|
|
72
|
+
children.push(...provenanceSection(toolProvenance));
|
|
73
|
+
return group(children);
|
|
74
|
+
}
|
|
75
|
+
function orderedPluginDomains(declared, plugins) {
|
|
76
|
+
const seen = new Set();
|
|
77
|
+
const ordered = [];
|
|
78
|
+
for (const domain of [...declared, ...plugins.map((plugin) => plugin.domain)]) {
|
|
79
|
+
if (seen.has(domain))
|
|
80
|
+
continue;
|
|
81
|
+
seen.add(domain);
|
|
82
|
+
ordered.push(domain);
|
|
83
|
+
}
|
|
84
|
+
return ordered;
|
|
85
|
+
}
|
|
86
|
+
function addRemoveView(verb, failVerb, packageName, success, error) {
|
|
87
|
+
if (success) {
|
|
88
|
+
return group([line([{ text: '✔', tone: 'success' }, { text: ` ${verb} ${packageName}` }])], 2);
|
|
89
|
+
}
|
|
90
|
+
const spans = [
|
|
91
|
+
{ text: '✗', tone: 'error' },
|
|
92
|
+
{ text: ` Failed to ${failVerb} ${packageName}` },
|
|
93
|
+
];
|
|
94
|
+
if (error !== undefined)
|
|
95
|
+
spans.push({ text: ` (${error})`, dim: true });
|
|
96
|
+
return group([line(spans)], 2);
|
|
97
|
+
}
|
|
98
|
+
function syncView(synced, success, errors) {
|
|
99
|
+
if (synced.length === 0) {
|
|
100
|
+
return group([line([{ text: 'No plugins declared in opensip-cli.config.yml.', dim: true }])], 2);
|
|
101
|
+
}
|
|
102
|
+
const children = [
|
|
103
|
+
line([{ text: 'Plugin sync', bold: true }]),
|
|
104
|
+
...synced.map((entry) => line([
|
|
105
|
+
{ text: entry.installed ? '✔' : '✗', tone: entry.installed ? 'success' : 'error' },
|
|
106
|
+
{ text: ' ' },
|
|
107
|
+
{ text: `${entry.domain}/`, dim: true },
|
|
108
|
+
{ text: entry.package },
|
|
109
|
+
])),
|
|
110
|
+
];
|
|
111
|
+
if (errors && errors.length > 0) {
|
|
112
|
+
children.push({ kind: 'spacer' }, ...errors.map((m) => line([{ text: m, tone: 'error' }])));
|
|
113
|
+
}
|
|
114
|
+
children.push({ kind: 'spacer' }, success
|
|
115
|
+
? line([{ text: 'All plugins synced successfully.', tone: 'success' }])
|
|
116
|
+
: line([{ text: 'One or more plugins failed to install.', tone: 'error' }]));
|
|
117
|
+
return group(children, 2);
|
|
118
|
+
}
|
|
119
|
+
export function viewPlugin(result) {
|
|
120
|
+
switch (result.type) {
|
|
121
|
+
case 'plugin-list': {
|
|
122
|
+
return listView(result.domains, result.plugins, result.totalCount, result.toolProvenance);
|
|
123
|
+
}
|
|
124
|
+
case 'plugin-add': {
|
|
125
|
+
return addRemoveView('Installed', 'install', result.packageName, result.success, result.error);
|
|
126
|
+
}
|
|
127
|
+
case 'plugin-remove': {
|
|
128
|
+
return addRemoveView('Removed', 'remove', result.packageName, result.success, result.error);
|
|
129
|
+
}
|
|
130
|
+
case 'plugin-sync': {
|
|
131
|
+
return syncView(result.synced, result.success, result.errors);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=plugin-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-view.js","sourceRoot":"","sources":["../../../src/ui/views/plugin-view.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tools view-model builders — render the ADR-0041 tool-management results
|
|
3
|
+
* without executing any tool runtime code.
|
|
4
|
+
*/
|
|
5
|
+
import { type ViewNode } from '@opensip-cli/cli-ui';
|
|
6
|
+
import type { ToolsDataPurgeResult, ToolsInstallResult, ToolsListResult, ToolsUninstallResult, ToolsValidateResult } from '@opensip-cli/contracts';
|
|
7
|
+
export declare function viewToolsList(result: ToolsListResult): ViewNode;
|
|
8
|
+
export declare function viewToolsValidate(result: ToolsValidateResult): ViewNode;
|
|
9
|
+
export declare function viewToolsInstall(result: ToolsInstallResult): ViewNode;
|
|
10
|
+
export declare function viewToolsUninstall(result: ToolsUninstallResult): ViewNode;
|
|
11
|
+
export declare function viewToolsDataPurge(result: ToolsDataPurgeResult): ViewNode;
|
|
12
|
+
//# sourceMappingURL=tools-views.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools-views.d.ts","sourceRoot":"","sources":["../../../src/ui/views/tools-views.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAOL,KAAK,QAAQ,EACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EACV,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EAEf,oBAAoB,EACpB,mBAAmB,EAEpB,MAAM,wBAAwB,CAAC;AAuFhC,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,QAAQ,CAY/D;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,mBAAmB,GAAG,QAAQ,CAEvE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,kBAAkB,GAAG,QAAQ,CAerE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,oBAAoB,GAAG,QAAQ,CAuBzE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,oBAAoB,GAAG,QAAQ,CAiBzE"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tools view-model builders — render the ADR-0041 tool-management results
|
|
3
|
+
* without executing any tool runtime code.
|
|
4
|
+
*/
|
|
5
|
+
import { line, group, viewTable, } from '@opensip-cli/cli-ui';
|
|
6
|
+
const SPACER = { kind: 'spacer' };
|
|
7
|
+
const TOOLS_LIST_COLUMNS = [
|
|
8
|
+
'Tool',
|
|
9
|
+
'Source',
|
|
10
|
+
'Status',
|
|
11
|
+
'Version',
|
|
12
|
+
'Package',
|
|
13
|
+
'Commands',
|
|
14
|
+
];
|
|
15
|
+
const VALIDATION_COLUMNS = ['Section', 'Status', 'Detail'];
|
|
16
|
+
function statusTone(status) {
|
|
17
|
+
switch (status) {
|
|
18
|
+
case 'passed': {
|
|
19
|
+
return 'success';
|
|
20
|
+
}
|
|
21
|
+
case 'failed': {
|
|
22
|
+
return 'error';
|
|
23
|
+
}
|
|
24
|
+
case 'skipped': {
|
|
25
|
+
return 'warning';
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function verdictTone(verdict) {
|
|
30
|
+
switch (verdict) {
|
|
31
|
+
case 'passed': {
|
|
32
|
+
return 'success';
|
|
33
|
+
}
|
|
34
|
+
case 'failed': {
|
|
35
|
+
return 'error';
|
|
36
|
+
}
|
|
37
|
+
case 'incomplete': {
|
|
38
|
+
return 'warning';
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function toolsListRow(row) {
|
|
43
|
+
return [
|
|
44
|
+
{ text: row.id, tone: 'brand', bold: true },
|
|
45
|
+
{ text: row.shadowed === true ? `${row.source} (shadowed)` : row.source },
|
|
46
|
+
{ text: row.status, tone: row.status === 'loaded' ? 'success' : 'muted' },
|
|
47
|
+
{ text: row.version },
|
|
48
|
+
{ text: row.packageName ?? '-', dim: row.packageName === undefined },
|
|
49
|
+
{ text: row.commands.length === 0 ? '-' : row.commands.join(', ') },
|
|
50
|
+
];
|
|
51
|
+
}
|
|
52
|
+
function validationSectionRow(section) {
|
|
53
|
+
return [
|
|
54
|
+
{ text: section.name, tone: 'brand' },
|
|
55
|
+
{ text: section.status, tone: statusTone(section.status) },
|
|
56
|
+
{
|
|
57
|
+
text: section.diagnostics.length === 0 ? '-' : section.diagnostics.join('; '),
|
|
58
|
+
dim: section.diagnostics.length === 0,
|
|
59
|
+
},
|
|
60
|
+
];
|
|
61
|
+
}
|
|
62
|
+
function validationView(result, title = 'Tool validation') {
|
|
63
|
+
const children = [
|
|
64
|
+
line([
|
|
65
|
+
{ text: title, bold: true },
|
|
66
|
+
{ text: ` (${result.spec})`, dim: true },
|
|
67
|
+
]),
|
|
68
|
+
line([
|
|
69
|
+
{ text: 'Verdict: ', dim: true },
|
|
70
|
+
{ text: result.verdict.toUpperCase(), tone: verdictTone(result.verdict), bold: true },
|
|
71
|
+
...(result.toolId === undefined
|
|
72
|
+
? []
|
|
73
|
+
: [
|
|
74
|
+
{ text: ' Tool: ', dim: true },
|
|
75
|
+
{ text: result.toolId, tone: 'brand' },
|
|
76
|
+
]),
|
|
77
|
+
]),
|
|
78
|
+
SPACER,
|
|
79
|
+
viewTable(VALIDATION_COLUMNS, result.sections.map(validationSectionRow)),
|
|
80
|
+
];
|
|
81
|
+
return group(children, 2);
|
|
82
|
+
}
|
|
83
|
+
export function viewToolsList(result) {
|
|
84
|
+
if (result.tools.length === 0) {
|
|
85
|
+
return group([line([{ text: 'No tools found for the selected scope.', dim: true }])], 2);
|
|
86
|
+
}
|
|
87
|
+
return group([
|
|
88
|
+
line([
|
|
89
|
+
{ text: 'Tools', bold: true },
|
|
90
|
+
{ text: ` (${result.totalCount})`, dim: true },
|
|
91
|
+
]),
|
|
92
|
+
SPACER,
|
|
93
|
+
group([viewTable(TOOLS_LIST_COLUMNS, result.tools.map(toolsListRow))], 2),
|
|
94
|
+
]);
|
|
95
|
+
}
|
|
96
|
+
export function viewToolsValidate(result) {
|
|
97
|
+
return validationView(result);
|
|
98
|
+
}
|
|
99
|
+
export function viewToolsInstall(result) {
|
|
100
|
+
const children = [
|
|
101
|
+
line([
|
|
102
|
+
{ text: result.success ? '✓' : '✗', tone: result.success ? 'success' : 'error' },
|
|
103
|
+
{ text: result.success ? ' Installed ' : ' Failed to install ' },
|
|
104
|
+
{ text: result.toolId ?? result.spec, tone: result.success ? 'brand' : 'default' },
|
|
105
|
+
{ text: ` (${result.scope})`, dim: true },
|
|
106
|
+
...(result.version === undefined ? [] : [{ text: ` ${result.version}`, dim: true }]),
|
|
107
|
+
]),
|
|
108
|
+
];
|
|
109
|
+
if (result.error !== undefined) {
|
|
110
|
+
children.push(line([{ text: ` ${result.error}`, tone: 'error' }]));
|
|
111
|
+
}
|
|
112
|
+
children.push(SPACER, validationView(result.validation, 'Validation'));
|
|
113
|
+
return group(children, 2);
|
|
114
|
+
}
|
|
115
|
+
export function viewToolsUninstall(result) {
|
|
116
|
+
if (!result.success) {
|
|
117
|
+
const spans = [
|
|
118
|
+
{ text: '✗', tone: 'error' },
|
|
119
|
+
{ text: ` Failed to uninstall ${result.target}` },
|
|
120
|
+
];
|
|
121
|
+
if (result.error !== undefined)
|
|
122
|
+
spans.push({ text: ` (${result.error})`, dim: true });
|
|
123
|
+
return group([line(spans)], 2);
|
|
124
|
+
}
|
|
125
|
+
const removed = result.removed;
|
|
126
|
+
return group([
|
|
127
|
+
line([
|
|
128
|
+
{ text: '✓', tone: 'success' },
|
|
129
|
+
{ text: ' Removed ' },
|
|
130
|
+
{ text: removed?.id ?? result.target, tone: 'brand' },
|
|
131
|
+
...(removed === undefined
|
|
132
|
+
? []
|
|
133
|
+
: [{ text: ` (${removed.packageName}, ${removed.scope})`, dim: true }]),
|
|
134
|
+
]),
|
|
135
|
+
], 2);
|
|
136
|
+
}
|
|
137
|
+
export function viewToolsDataPurge(result) {
|
|
138
|
+
return group([
|
|
139
|
+
line([
|
|
140
|
+
{ text: '✓', tone: 'success' },
|
|
141
|
+
{ text: ' Purged data for ' },
|
|
142
|
+
{ text: result.toolId, tone: 'brand' },
|
|
143
|
+
]),
|
|
144
|
+
line([
|
|
145
|
+
{ text: ` ${result.sessions} session(s), `, dim: true },
|
|
146
|
+
{ text: `${result.baselineEntries} baseline entr(ies), `, dim: true },
|
|
147
|
+
{ text: `${result.baselineMeta ? 1 : 0} baseline marker(s), `, dim: true },
|
|
148
|
+
{ text: `${result.stateRows} state row(s)`, dim: true },
|
|
149
|
+
]),
|
|
150
|
+
], 2);
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=tools-views.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools-views.js","sourceRoot":"","sources":["../../../src/ui/views/tools-views.ts"],"names":[],"mappings":"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"}
|