skill-flow 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/.gstack/browse-network.log +1 -0
  2. package/.gstack/browse.json +7 -0
  3. package/.gstack/qa-reports/qa-report-skill-manager-2026-03-22.md +60 -0
  4. package/README.md +20 -3
  5. package/README.zh.md +20 -3
  6. package/dist/cli.js +19 -7
  7. package/dist/cli.js.map +1 -1
  8. package/dist/domain/types.d.ts +9 -2
  9. package/dist/services/deployment-planner.js +8 -16
  10. package/dist/services/deployment-planner.js.map +1 -1
  11. package/dist/services/doctor-service.js +13 -0
  12. package/dist/services/doctor-service.js.map +1 -1
  13. package/dist/services/inventory-service.d.ts +1 -1
  14. package/dist/services/inventory-service.js +4 -2
  15. package/dist/services/inventory-service.js.map +1 -1
  16. package/dist/services/skill-flow.d.ts +7 -1
  17. package/dist/services/skill-flow.js +8 -4
  18. package/dist/services/skill-flow.js.map +1 -1
  19. package/dist/services/source-service.d.ts +10 -1
  20. package/dist/services/source-service.js +200 -39
  21. package/dist/services/source-service.js.map +1 -1
  22. package/dist/state/store.d.ts +3 -1
  23. package/dist/state/store.js +9 -2
  24. package/dist/state/store.js.map +1 -1
  25. package/dist/tests/skill-flow.test.js.map +1 -1
  26. package/dist/tui/config-app.d.ts +2 -2
  27. package/dist/tui/config-app.js +26 -7
  28. package/dist/tui/config-app.js.map +1 -1
  29. package/dist/utils/clawhub.d.ts +38 -0
  30. package/dist/utils/clawhub.js +65 -0
  31. package/dist/utils/clawhub.js.map +1 -0
  32. package/dist/utils/format.js +9 -4
  33. package/dist/utils/format.js.map +1 -1
  34. package/dist/utils/naming.d.ts +20 -0
  35. package/dist/utils/naming.js +82 -0
  36. package/dist/utils/naming.js.map +1 -0
  37. package/dist/utils/source-id.js +29 -0
  38. package/dist/utils/source-id.js.map +1 -1
  39. package/docs/DESIGN.md +407 -0
  40. package/docs/PRD/PRD-1.0.0.md +1862 -0
  41. package/docs/PRD/renew/PRD-0.0.0.md +26 -0
  42. package/docs/PRD/renew/PRD-0.0.1.md +408 -0
  43. package/docs/PRD/renew/PRD-0.0.2.md +705 -0
  44. package/docs/PRD/renew/PRD-0.0.3.md +740 -0
  45. package/docs/PRD/renew/PRD-0.0.4.md +1494 -0
  46. package/docs/README.md +242 -0
  47. package/docs/plan/PLAN_v1.0.0.md +663 -0
  48. package/docs/plan/PLAN_v1.0.1.md +814 -0
  49. package/docs/refrences/README.md +7 -0
  50. package/docs/refrences/agent-skill-paths.md +252 -0
  51. package/docs/refrences/naming-dedupe-warning-rules.md +482 -0
  52. package/img/img-1.jpg +0 -0
  53. package/package.json +18 -7
  54. package/dist/tests/skill-flow.test.js +0 -926
  55. package/src/adapters/channel-adapters.ts +0 -75
  56. package/src/cli.tsx +0 -147
  57. package/src/domain/types.ts +0 -175
  58. package/src/services/deployment-applier.ts +0 -81
  59. package/src/services/deployment-planner.ts +0 -259
  60. package/src/services/doctor-service.ts +0 -156
  61. package/src/services/inventory-service.ts +0 -251
  62. package/src/services/skill-flow.ts +0 -381
  63. package/src/services/source-service.ts +0 -427
  64. package/src/services/workflow-service.ts +0 -56
  65. package/src/state/store.ts +0 -68
  66. package/src/tests/skill-flow.test.ts +0 -1184
  67. package/src/tui/config-app.tsx +0 -1094
  68. package/src/tui/selection-state.ts +0 -45
  69. package/src/utils/constants.ts +0 -201
  70. package/src/utils/format.ts +0 -59
  71. package/src/utils/fs.ts +0 -102
  72. package/src/utils/git.ts +0 -16
  73. package/src/utils/result.ts +0 -23
  74. package/src/utils/source-id.ts +0 -19
  75. package/tsconfig.json +0 -22
  76. package/vitest.config.ts +0 -8
@@ -0,0 +1 @@
1
+ [2026-03-21T10:24:32.733Z] GET file:///tmp/gstack-sketch-skill-flow.html → 200 (5ms, 7267B)
@@ -0,0 +1,7 @@
1
+ {
2
+ "pid": 51199,
3
+ "port": 30333,
4
+ "token": "8770c4f1-ad31-4eaa-94c9-561a491cdbb2",
5
+ "startedAt": "2026-03-21T10:24:32.663Z",
6
+ "serverPath": "/Users/Vint/.cc-switch/skills/browse/src/server.ts"
7
+ }
@@ -0,0 +1,60 @@
1
+ # QA Report: skill-flow
2
+
3
+ Date: 2026-03-22
4
+ Mode: full CLI QA
5
+ Scope: build, unit tests, empty-state CLI flows, add/apply/update/uninstall end-to-end flow, interactive config smoke check
6
+
7
+ ## Coverage
8
+
9
+ - `npm test`
10
+ - `npm run build`
11
+ - `node dist/cli.js --help`
12
+ - Empty state:
13
+ - `list`
14
+ - `doctor`
15
+ - `config`
16
+ - `uninstall missing`
17
+ - End-to-end fixture workflow:
18
+ - `add <git-source>`
19
+ - `list`
20
+ - `doctor`
21
+ - `applyDraft(...)` through app service with real state root + target roots
22
+ - `update --all` after upstream repo change
23
+ - `uninstall <sourceId>`
24
+
25
+ ## Findings
26
+
27
+ ### ISSUE-001
28
+
29
+ - Severity: medium
30
+ - Title: `uninstall` reported success for unknown workflow groups
31
+ - Repro:
32
+ 1. Start with a fresh state root.
33
+ 2. Run `node dist/cli.js uninstall missing`.
34
+ - Expected:
35
+ - Command should fail and say the workflow group is not registered.
36
+ - Actual:
37
+ - Command printed `Removed: missing` and exited `0`.
38
+ - Fix status: verified
39
+
40
+ ## Fix
41
+
42
+ - Updated source removal to reject unknown workflow groups with `SOURCE_NOT_FOUND`.
43
+ - Added regression test coverage for uninstalling an unknown workflow group.
44
+
45
+ ## Verification
46
+
47
+ - `npm test` -> 33 passed
48
+ - `npm run build` -> passed
49
+ - `node dist/cli.js uninstall missing` -> prints `Workflow group 'missing' is not registered.` and exits `1`
50
+ - End-to-end fixture flow still passes:
51
+ - add source
52
+ - apply targets
53
+ - doctor healthy
54
+ - update after source change
55
+ - uninstall existing source
56
+ - list returns empty state
57
+
58
+ ## Summary
59
+
60
+ QA found 1 issue, fixed 1, deferred 0.
package/README.md CHANGED
@@ -35,12 +35,27 @@ Intuitive TUI: view groups → select skills → choose targets → save configu
35
35
 
36
36
  Requires Node.js >= 20, currently optimized for macOS.
37
37
 
38
+ Install from npm:
39
+
40
+ ```bash
41
+ npm install -g skill-flow
42
+ skill-flow --help
43
+ ```
44
+
45
+ Run without a global install:
46
+
38
47
  ```bash
39
- git clone https://github.com/VintLin/skill-manager.git
40
- cd skill-manager
48
+ npx skill-flow --help
49
+ ```
50
+
51
+ Install from source for local development:
52
+
53
+ ```bash
54
+ git clone https://github.com/VintLin/skill-flow.git
55
+ cd skill-flow
41
56
  npm install
42
57
  npm run build
43
- npm link # Optional: global install
58
+ npm link
44
59
  ```
45
60
 
46
61
  ## Quick Start
@@ -65,6 +80,8 @@ skill-flow doctor
65
80
  skill-flow uninstall my-source-id
66
81
  ```
67
82
 
83
+ `add <source>` supports local paths, `owner/repo`, and full https/ssh Git URLs.
84
+
68
85
  ## Command Reference
69
86
 
70
87
  | Command | Description |
package/README.zh.md CHANGED
@@ -35,12 +35,27 @@
35
35
 
36
36
  需要 Node.js >= 20,当前版本针对 macOS 优化。
37
37
 
38
+ 通过 npm 安装:
39
+
40
+ ```bash
41
+ npm install -g skill-flow
42
+ skill-flow --help
43
+ ```
44
+
45
+ 不做全局安装也可以直接运行:
46
+
38
47
  ```bash
39
- git clone https://github.com/VintLin/skill-manager.git
40
- cd skill-manager
48
+ npx skill-flow --help
49
+ ```
50
+
51
+ 如果你要本地开发,再使用源码安装:
52
+
53
+ ```bash
54
+ git clone https://github.com/VintLin/skill-flow.git
55
+ cd skill-flow
41
56
  npm install
42
57
  npm run build
43
- npm link # 可选:全局安装
58
+ npm link
44
59
  ```
45
60
 
46
61
  ## 快速开始
@@ -65,6 +80,8 @@ skill-flow doctor
65
80
  skill-flow uninstall my-source-id
66
81
  ```
67
82
 
83
+ `add <source>` 支持本地路径、`owner/repo`,以及完整的 https/ssh Git URL。
84
+
68
85
  ## 命令参考
69
86
 
70
87
  | 命令 | 说明 |
package/dist/cli.js CHANGED
@@ -4,6 +4,7 @@ import { Command } from "commander";
4
4
  import { render } from "ink";
5
5
  import { SkillFlowApp } from "./services/skill-flow.js";
6
6
  import { ConfigApp } from "./tui/config-app.js";
7
+ import { formatGroupRef } from "./utils/naming.js";
7
8
  import { formatDoctorIssue, formatWorkflowList } from "./utils/format.js";
8
9
  const program = new Command();
9
10
  const app = new SkillFlowApp();
@@ -13,16 +14,22 @@ program
13
14
  .version("1.0.0");
14
15
  program
15
16
  .command("add")
16
- .argument("<source>", "Git source locator")
17
- .action(async (source) => {
18
- const result = await app.addSource(source);
17
+ .argument("<source>", "Source locator")
18
+ .option("--path <repoSubpath>", "Filter Git sources to a specific repo subpath")
19
+ .action(async (source, options) => {
20
+ const result = await app.addSource(source, options.path ? { path: options.path } : undefined);
19
21
  if (!result.ok) {
20
22
  printErrors(result.errors);
21
23
  process.exitCode = 1;
22
24
  return;
23
25
  }
24
- console.log(`Added ${result.data.manifest.id} with ${result.data.leafCount} valid skills.`);
25
- printWarnings(result.warnings.map((warning) => warning.message));
26
+ const duplicateSkipCount = result.warnings.filter((warning) => warning.message.includes("Duplicate skill content skipped because")).length;
27
+ const visibleWarnings = result.warnings.filter((warning) => !warning.message.includes("Duplicate skill content skipped because"));
28
+ const duplicateSummary = duplicateSkipCount > 0
29
+ ? `, skipped ${duplicateSkipCount} duplicate skill${duplicateSkipCount === 1 ? "" : "s"}`
30
+ : "";
31
+ console.log(`Added ${formatGroupRef(result.data.manifest)} with ${result.data.leafCount} valid skills${duplicateSummary}.`);
32
+ printWarnings(visibleWarnings.map((warning) => warning.message));
26
33
  });
27
34
  program.command("list").action(async () => {
28
35
  const result = await app.listWorkflows();
@@ -70,8 +77,12 @@ program
70
77
  process.exitCode = 1;
71
78
  return;
72
79
  }
80
+ const summariesResult = await app.listWorkflows();
81
+ const summaries = summariesResult.ok ? summariesResult.data.summaries : [];
73
82
  for (const item of result.data.updated) {
74
- console.log(`${item.sourceId} changed:${item.changed} +${item.addedLeafIds.length} -${item.removedLeafIds.length} invalidated:${item.invalidatedLeafIds.length}`);
83
+ const summary = summaries.find((summary) => summary.source.id === item.sourceId);
84
+ const groupRef = summary ? formatGroupRef(summary.source) : item.sourceId;
85
+ console.log(`${groupRef} changed:${item.changed} +${item.addedLeafIds.length} -${item.removedLeafIds.length} invalidated:${item.invalidatedLeafIds.length}`);
75
86
  }
76
87
  printWarnings(result.warnings.map((warning) => warning.message));
77
88
  });
@@ -101,7 +112,8 @@ program
101
112
  process.exitCode = 1;
102
113
  return;
103
114
  }
104
- console.log(`Removed: ${result.data.removed.join(", ")}`);
115
+ const removed = result.data.removedRefs.map((source) => formatGroupRef(source));
116
+ console.log(`Removed: ${removed.join(", ")}`);
105
117
  printWarnings(result.data.warnings);
106
118
  });
107
119
  await program.parseAsync(process.argv);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@ export type Result<T> = {
17
17
  warnings: Warning[];
18
18
  errors: Failure[];
19
19
  };
20
- export type SourceKind = "git";
20
+ export type SourceKind = "git" | "clawhub";
21
21
  export type DeploymentTargetName = "claude-code" | "codex" | "cursor" | "github-copilot" | "gemini-cli" | "opencode" | "openclaw" | "pi" | "windsurf" | "roo-code" | "cline" | "amp" | "kiro";
22
22
  export type DeploymentStrategy = "symlink" | "copy";
23
23
  export type HealthStatus = "HEALTHY" | "ACTIVE" | "INACTIVE" | "PARTIAL" | "BLOCKED" | "INVALID" | "UPDATE AVAILABLE" | "UP TO DATE" | "DRIFT DETECTED";
@@ -27,6 +27,7 @@ export type SourceManifestRecord = {
27
27
  kind: SourceKind;
28
28
  displayName: string;
29
29
  addedAt: string;
30
+ requestedPath?: string;
30
31
  };
31
32
  export type TargetBinding = {
32
33
  enabled: boolean;
@@ -50,10 +51,14 @@ export type SourceLockRecord = {
50
51
  kind: SourceKind;
51
52
  displayName: string;
52
53
  checkoutPath: string;
53
- commitSha: string;
54
54
  updatedAt: string;
55
55
  leafIds: string[];
56
56
  invalidLeafs: InvalidLeafRecord[];
57
+ commitSha?: string;
58
+ packageSlug?: string;
59
+ resolvedVersion?: string;
60
+ contentHash?: string;
61
+ versionMode?: "pinned" | "floating";
57
62
  };
58
63
  export type LeafRecord = {
59
64
  id: string;
@@ -114,8 +119,10 @@ export type DoctorIssueSeverity = "info" | "warning" | "error";
114
119
  export type DoctorIssue = {
115
120
  severity: DoctorIssueSeverity;
116
121
  sourceId: string;
122
+ sourceLabel?: string;
117
123
  target?: DeploymentTargetName;
118
124
  leafId?: string;
125
+ leafLabel?: string;
119
126
  code: string;
120
127
  message: string;
121
128
  };
@@ -1,5 +1,6 @@
1
1
  import fs from "node:fs/promises";
2
2
  import path from "node:path";
3
+ import { resolveProjectedSkillNames } from "../utils/naming.js";
3
4
  import { ok } from "../utils/result.js";
4
5
  export class DeploymentPlanner {
5
6
  adapters;
@@ -158,22 +159,13 @@ export class DeploymentPlanner {
158
159
  .map((leafId) => lockFile.leafInventory.find((leaf) => leaf.id === leafId))
159
160
  .filter((leaf) => Boolean(leaf));
160
161
  });
161
- const byLinkName = new Map();
162
- for (const leaf of selectedLeafs) {
163
- const group = byLinkName.get(leaf.linkName) ?? [];
164
- group.push(leaf);
165
- byLinkName.set(leaf.linkName, group);
166
- }
167
- const result = new Map();
168
- for (const leaf of selectedLeafs) {
169
- const collisions = byLinkName.get(leaf.linkName) ?? [];
170
- if (collisions.length <= 1) {
171
- result.set(leaf.id, leaf.linkName);
172
- continue;
173
- }
174
- result.set(leaf.id, `${leaf.sourceId}-${leaf.linkName}`);
175
- }
176
- return result;
162
+ const sourcesById = new Map(manifest.sources.map((source) => [source.id, source]));
163
+ return resolveProjectedSkillNames(selectedLeafs.map((leaf) => ({
164
+ leafId: leaf.id,
165
+ groupId: leaf.sourceId,
166
+ groupName: sourcesById.get(leaf.sourceId)?.displayName ?? leaf.sourceId,
167
+ skillName: leaf.linkName,
168
+ })));
177
169
  }
178
170
  }
179
171
  //# sourceMappingURL=deployment-planner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deployment-planner.js","sourceRoot":"","sources":["../../src/services/deployment-planner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deployment-planner.js","sourceRoot":"","sources":["../../src/services/deployment-planner.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import fs from "node:fs/promises";
2
2
  import { createChannelAdapters } from "../adapters/channel-adapters.js";
3
3
  import { hashDirectory, isBrokenSymlink, pathExists } from "../utils/fs.js";
4
+ import { formatGroupLabel } from "../utils/naming.js";
4
5
  import { ok } from "../utils/result.js";
5
6
  export class DoctorService {
6
7
  adapters = createChannelAdapters();
@@ -18,6 +19,7 @@ export class DoctorService {
18
19
  issues.push({
19
20
  severity: "error",
20
21
  sourceId: source.id,
22
+ sourceLabel: formatGroupLabel(source),
21
23
  target: adapter.target,
22
24
  code: "TARGET_UNAVAILABLE",
23
25
  message: detection.reason ?? "Target is unavailable.",
@@ -33,6 +35,7 @@ export class DoctorService {
33
35
  issues.push({
34
36
  severity: "error",
35
37
  sourceId: source.id,
38
+ sourceLabel: formatGroupLabel(source),
36
39
  target: adapter.target,
37
40
  leafId,
38
41
  code: "LEAF_MISSING",
@@ -45,8 +48,10 @@ export class DoctorService {
45
48
  issues.push({
46
49
  severity: "warning",
47
50
  sourceId: source.id,
51
+ sourceLabel: formatGroupLabel(source),
48
52
  target: adapter.target,
49
53
  leafId,
54
+ leafLabel: leaf.linkName,
50
55
  code: "DRIFT_NOT_DEPLOYED",
51
56
  message: "This selected skill is not currently projected to disk.",
52
57
  });
@@ -56,8 +61,10 @@ export class DoctorService {
56
61
  issues.push({
57
62
  severity: "error",
58
63
  sourceId: source.id,
64
+ sourceLabel: formatGroupLabel(source),
59
65
  target: adapter.target,
60
66
  leafId,
67
+ leafLabel: leaf.linkName,
61
68
  code: "TARGET_MISSING",
62
69
  message: "Projected target is missing on disk.",
63
70
  });
@@ -69,8 +76,10 @@ export class DoctorService {
69
76
  issues.push({
70
77
  severity: "warning",
71
78
  sourceId: source.id,
79
+ sourceLabel: formatGroupLabel(source),
72
80
  target: adapter.target,
73
81
  leafId,
82
+ leafLabel: leaf.linkName,
74
83
  code: "DRIFT_TYPE",
75
84
  message: "Expected a symlink, but found foreign content.",
76
85
  });
@@ -80,8 +89,10 @@ export class DoctorService {
80
89
  issues.push({
81
90
  severity: "error",
82
91
  sourceId: source.id,
92
+ sourceLabel: formatGroupLabel(source),
83
93
  target: adapter.target,
84
94
  leafId,
95
+ leafLabel: leaf.linkName,
85
96
  code: "BROKEN_SYMLINK",
86
97
  message: "Projected symlink is broken.",
87
98
  });
@@ -93,8 +104,10 @@ export class DoctorService {
93
104
  issues.push({
94
105
  severity: "warning",
95
106
  sourceId: source.id,
107
+ sourceLabel: formatGroupLabel(source),
96
108
  target: adapter.target,
97
109
  leafId,
110
+ leafLabel: leaf.linkName,
98
111
  code: "DRIFT_COPY",
99
112
  message: "Projected copy no longer matches saved state.",
100
113
  });
@@ -1 +1 @@
1
- {"version":3,"file":"doctor-service.js","sourceRoot":"","sources":["../../src/services/doctor-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor-service.js","sourceRoot":"","sources":["../../src/services/doctor-service.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ type InventoryScan = {
5
5
  };
6
6
  export declare class InventoryService {
7
7
  private static readonly IGNORED_DIRECTORIES;
8
- scanSource(sourceId: string, checkoutPath: string): Promise<InventoryScan>;
8
+ scanSource(sourceId: string, checkoutPath: string, rootLinkName?: string): Promise<InventoryScan>;
9
9
  private findSkillFiles;
10
10
  private parseSkillFile;
11
11
  private dedupeCandidates;
@@ -6,7 +6,7 @@ export class InventoryService {
6
6
  ".git",
7
7
  "node_modules",
8
8
  ]);
9
- async scanSource(sourceId, checkoutPath) {
9
+ async scanSource(sourceId, checkoutPath, rootLinkName = sourceId) {
10
10
  const skillFiles = await this.findSkillFiles(checkoutPath);
11
11
  const candidates = [];
12
12
  const invalidLeafs = [];
@@ -14,7 +14,9 @@ export class InventoryService {
14
14
  const leafRoot = path.dirname(skillFilePath);
15
15
  const relativePath = path.relative(checkoutPath, leafRoot) || ".";
16
16
  const raw = await fs.readFile(skillFilePath, "utf8");
17
- const linkName = path.basename(leafRoot) || sourceId;
17
+ const linkName = relativePath === "."
18
+ ? rootLinkName
19
+ : (path.basename(leafRoot) || rootLinkName);
18
20
  const parsed = this.parseSkillFile(raw, linkName);
19
21
  if (!parsed.valid) {
20
22
  invalidLeafs.push({
@@ -1 +1 @@
1
- {"version":3,"file":"inventory-service.js","sourceRoot":"","sources":["../../src/services/inventory-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inventory-service.js","sourceRoot":"","sources":["../../src/services/inventory-service.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ import { DoctorService } from "./doctor-service.js";
6
6
  import { InventoryService } from "./inventory-service.js";
7
7
  import { SourceService } from "./source-service.js";
8
8
  import { WorkflowService } from "./workflow-service.js";
9
+ import type { AddSourceOptions } from "./source-service.js";
9
10
  export type DraftBinding = {
10
11
  enabledTargets: DeploymentTargetName[];
11
12
  selectedLeafIds: string[];
@@ -18,7 +19,7 @@ export declare class SkillFlowApp {
18
19
  readonly applier: DeploymentApplier;
19
20
  readonly doctorService: DoctorService;
20
21
  readonly workflowService: WorkflowService;
21
- addSource(locator: string): Promise<Result<import("./source-service.js").SourceSnapshot>>;
22
+ addSource(locator: string, options?: AddSourceOptions): Promise<Result<import("./source-service.js").SourceSnapshot>>;
22
23
  listWorkflows(): Promise<Result<{
23
24
  summaries: WorkflowSummary[];
24
25
  }>>;
@@ -49,6 +50,11 @@ export declare class SkillFlowApp {
49
50
  doctor(): Promise<Result<DoctorReport>>;
50
51
  uninstall(sourceIds: string[]): Promise<Result<{
51
52
  removed: string[];
53
+ removedRefs: Array<{
54
+ id: string;
55
+ locator: string;
56
+ displayName: string;
57
+ }>;
52
58
  warnings: string[];
53
59
  }>>;
54
60
  bindingFromDraft(draft: DraftBinding): SourceBinding;
@@ -17,8 +17,8 @@ export class SkillFlowApp {
17
17
  applier = new DeploymentApplier();
18
18
  doctorService = new DoctorService();
19
19
  workflowService = new WorkflowService();
20
- async addSource(locator) {
21
- return this.sourceService.addSource(locator);
20
+ async addSource(locator, options) {
21
+ return this.sourceService.addSource(locator, options);
22
22
  }
23
23
  async listWorkflows() {
24
24
  const reconciled = await this.sourceService.reconcileInventory(undefined, {
@@ -136,8 +136,12 @@ export class SkillFlowApp {
136
136
  }
137
137
  async uninstall(sourceIds) {
138
138
  await this.store.init();
139
+ const manifest = await this.store.readManifest();
139
140
  const lockFile = await this.store.readLock();
140
141
  const warnings = [];
142
+ const removedRefs = sourceIds
143
+ .map((sourceId) => manifest.sources.find((source) => source.id === sourceId))
144
+ .filter((source) => Boolean(source));
141
145
  for (const sourceId of sourceIds) {
142
146
  const deployments = lockFile.deployments.filter((deployment) => deployment.sourceId === sourceId);
143
147
  for (const deployment of deployments) {
@@ -167,7 +171,7 @@ export class SkillFlowApp {
167
171
  if (!removed.ok) {
168
172
  return fail(removed.errors, removed.warnings);
169
173
  }
170
- return ok({ removed: removed.data.removed, warnings });
174
+ return ok({ removed: removed.data.removed, removedRefs, warnings });
171
175
  }
172
176
  bindingFromDraft(draft) {
173
177
  const targets = {};
@@ -189,7 +193,7 @@ export class SkillFlowApp {
189
193
  manifest.bindings[sourceId] = this.bindingFromDraft(normalizedDraft);
190
194
  const warnings = [...conflictingLeafIds].map((leafId) => ({
191
195
  code: "DUPLICATE_LEAF_SELECTION_SKIPPED",
192
- message: `${leafId} skipped because an identical skill is already selected in another workflow group.`,
196
+ message: `${lockFile.leafInventory.find((leaf) => leaf.id === leafId)?.linkName ?? leafId} skipped because an identical skill is already selected in another workflow group.`,
193
197
  }));
194
198
  return {
195
199
  manifest,