skill-flow 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/.gstack/qa-reports/base-branch.txt +1 -0
  2. package/.gstack/qa-reports/qa-report-skill-flow-cli-2026-03-22.md +159 -0
  3. package/README.md +39 -2
  4. package/README.zh.md +39 -2
  5. package/dist/cli.js +32 -2
  6. package/dist/cli.js.map +1 -1
  7. package/dist/domain/types.d.ts +25 -0
  8. package/dist/services/deployment-applier.js +6 -0
  9. package/dist/services/deployment-applier.js.map +1 -1
  10. package/dist/services/deployment-planner.d.ts +5 -0
  11. package/dist/services/deployment-planner.js +198 -16
  12. package/dist/services/deployment-planner.js.map +1 -1
  13. package/dist/services/skill-flow.d.ts +28 -2
  14. package/dist/services/skill-flow.js +353 -2
  15. package/dist/services/skill-flow.js.map +1 -1
  16. package/dist/services/source-service.d.ts +1 -1
  17. package/dist/services/source-service.js +11 -14
  18. package/dist/services/source-service.js.map +1 -1
  19. package/dist/state/store.d.ts +3 -0
  20. package/dist/state/store.js +10 -0
  21. package/dist/state/store.js.map +1 -1
  22. package/dist/tests/skill-flow.test.js.map +1 -1
  23. package/dist/tui/config-app.js +52 -3
  24. package/dist/tui/config-app.js.map +1 -1
  25. package/dist/tui/find-app.d.ts +9 -0
  26. package/dist/tui/find-app.js +117 -0
  27. package/dist/tui/find-app.js.map +1 -0
  28. package/dist/utils/builtin-git-sources.d.ts +5 -0
  29. package/dist/utils/builtin-git-sources.js +23 -0
  30. package/dist/utils/builtin-git-sources.js.map +1 -0
  31. package/dist/utils/find-command.d.ts +2 -0
  32. package/dist/utils/find-command.js +21 -0
  33. package/dist/utils/find-command.js.map +1 -0
  34. package/dist/utils/format.d.ts +2 -1
  35. package/dist/utils/format.js +18 -0
  36. package/dist/utils/format.js.map +1 -1
  37. package/dist/utils/github-catalog.d.ts +1 -0
  38. package/dist/utils/github-catalog.js +25 -0
  39. package/dist/utils/github-catalog.js.map +1 -0
  40. package/dist/utils/naming.d.ts +9 -1
  41. package/dist/utils/naming.js +33 -6
  42. package/dist/utils/naming.js.map +1 -1
  43. package/docs/plan/PLAN_v1.0.1.md +34 -3
  44. package/docs/refrences/README.md +2 -0
  45. package/docs/refrences/agent-skill-paths.md +22 -0
  46. package/docs/refrences/config-state-reconciliation.md +199 -0
  47. package/package.json +1 -1
@@ -1,6 +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
+ import { buildProjectedSkillNameCandidates, parseGitHubRepo, resolveProjectedSkillNames, } from "../utils/naming.js";
4
4
  import { ok } from "../utils/result.js";
5
5
  export class DeploymentPlanner {
6
6
  adapters;
@@ -9,6 +9,7 @@ export class DeploymentPlanner {
9
9
  }
10
10
  async planForSource(sourceId, manifest, lockFile) {
11
11
  const binding = manifest.bindings[sourceId] ?? { targets: {} };
12
+ const source = manifest.sources.find((item) => item.id === sourceId);
12
13
  const leafs = lockFile.leafInventory.filter((leaf) => leaf.sourceId === sourceId);
13
14
  const previousDeployments = lockFile.deployments.filter((deployment) => deployment.sourceId === sourceId);
14
15
  const actions = [];
@@ -18,7 +19,11 @@ export class DeploymentPlanner {
18
19
  const targetBinding = binding.targets[adapter.target];
19
20
  const desiredLeafIds = targetBinding?.enabled === true ? new Set(targetBinding.leafIds) : new Set();
20
21
  const projectedLinkNames = this.buildProjectedLinkNameMap(manifest, lockFile, adapter.target);
21
- const plannedForTarget = await this.planTarget(sourceId, adapter, detection.available, detection.rootPath, detection.reason, desiredLeafIds, leafs, previousDeployments, projectedLinkNames);
22
+ const plannedForTarget = await this.planTarget(sourceId, adapter, detection.available, detection.rootPath, detection.reason, desiredLeafIds, leafs, previousDeployments, lockFile, projectedLinkNames, {
23
+ id: sourceId,
24
+ displayName: source?.displayName ?? sourceId,
25
+ author: parseGitHubRepo(source?.locator ?? "")?.owner,
26
+ });
22
27
  actions.push(...plannedForTarget.actions);
23
28
  warnings.push(...plannedForTarget.warnings);
24
29
  }
@@ -32,7 +37,7 @@ export class DeploymentPlanner {
32
37
  //
33
38
  // desired bindings + lock state + disk state
34
39
  // -> create | update | remove | noop | blocked
35
- async planTarget(sourceId, adapter, targetAvailable, rootPath, unavailableReason, desiredLeafIds, leafs, previousDeployments, projectedLinkNames) {
40
+ async planTarget(sourceId, adapter, targetAvailable, rootPath, unavailableReason, desiredLeafIds, leafs, previousDeployments, lockFile, projectedLinkNames, sourceRef) {
36
41
  const actions = [];
37
42
  const warnings = [];
38
43
  const desiredLeafs = leafs.filter((leaf) => desiredLeafIds.has(leaf.id));
@@ -62,7 +67,17 @@ export class DeploymentPlanner {
62
67
  for (const leaf of desiredLeafs) {
63
68
  const existing = managedByLeafId.get(leaf.id);
64
69
  const projectedLinkName = projectedLinkNames.get(leaf.id) ?? leaf.linkName;
65
- const targetPath = adapter.resolveTargetPath(rootPath, projectedLinkName);
70
+ const targetPathCandidates = buildProjectedSkillNameCandidates({
71
+ preferredName: projectedLinkName,
72
+ groupId: sourceRef.id,
73
+ groupName: sourceRef.displayName,
74
+ groupAuthor: sourceRef.author,
75
+ skillName: leaf.linkName,
76
+ }).map((linkName) => ({
77
+ linkName,
78
+ targetPath: adapter.resolveTargetPath(rootPath, linkName),
79
+ }));
80
+ const preferredTargetPath = targetPathCandidates[0]?.targetPath ?? adapter.resolveTargetPath(rootPath, projectedLinkName);
66
81
  if (!targetAvailable) {
67
82
  const blockedAction = {
68
83
  kind: "blocked",
@@ -71,15 +86,41 @@ export class DeploymentPlanner {
71
86
  target: adapter.target,
72
87
  strategy: adapter.strategy,
73
88
  sourcePath: leaf.absolutePath,
74
- targetPath,
89
+ targetPath: preferredTargetPath,
75
90
  contentHash: leaf.contentHash,
76
91
  ...(unavailableReason ? { reason: unavailableReason } : {}),
77
92
  };
78
93
  actions.push(blockedAction);
79
94
  continue;
80
95
  }
81
- const diskState = await this.inspectTargetPath(targetPath, leaf.absolutePath);
82
- if (diskState.foreign && !existing) {
96
+ let chosenCandidate;
97
+ const inspectedCandidates = [];
98
+ for (const candidate of targetPathCandidates) {
99
+ const diskState = await this.inspectTargetPath(candidate.targetPath, leaf.absolutePath, leaf, lockFile);
100
+ inspectedCandidates.push({
101
+ ...candidate,
102
+ diskState,
103
+ });
104
+ if (diskState.managedBySkillFlow &&
105
+ !(existing &&
106
+ diskState.managedDeployment?.sourceId === existing.sourceId &&
107
+ diskState.managedDeployment?.leafId === existing.leafId &&
108
+ diskState.managedDeployment?.target === existing.target)) {
109
+ continue;
110
+ }
111
+ if (diskState.foreign && !diskState.externalExactMatch) {
112
+ continue;
113
+ }
114
+ chosenCandidate = {
115
+ ...candidate,
116
+ diskState,
117
+ };
118
+ break;
119
+ }
120
+ if (!chosenCandidate) {
121
+ chosenCandidate = await this.buildExternalRelocationCandidate(preferredTargetPath, inspectedCandidates, leaf, rootPath);
122
+ }
123
+ if (!chosenCandidate) {
83
124
  actions.push({
84
125
  kind: "blocked",
85
126
  sourceId,
@@ -87,13 +128,26 @@ export class DeploymentPlanner {
87
128
  target: adapter.target,
88
129
  strategy: adapter.strategy,
89
130
  sourcePath: leaf.absolutePath,
90
- targetPath,
91
- reason: "Foreign content already exists at target path.",
131
+ targetPath: preferredTargetPath,
132
+ reason: "Foreign content already exists at target path and no safe fallback name is available.",
92
133
  contentHash: leaf.contentHash,
93
134
  });
94
135
  continue;
95
136
  }
96
- const kind = this.resolveDesiredAction(existing, diskState.matchesExpected, leaf);
137
+ if (chosenCandidate.targetPath !== preferredTargetPath &&
138
+ !chosenCandidate.diskState.externalExactMatch) {
139
+ warnings.push({
140
+ code: "EXTERNAL_NAME_COLLISION_RENAMED",
141
+ message: `${leaf.linkName} kept existing target content at ${preferredTargetPath} and will deploy as ${chosenCandidate.linkName}.`,
142
+ });
143
+ }
144
+ if (chosenCandidate.relocateExternalToTargetPath) {
145
+ warnings.push({
146
+ code: "EXTERNAL_SKILL_RELOCATED",
147
+ message: `${leaf.linkName} reclaimed ${preferredTargetPath} and moved the external skill to ${chosenCandidate.relocateExternalToTargetPath}.`,
148
+ });
149
+ }
150
+ const kind = this.resolveDesiredAction(existing, chosenCandidate.diskState.matchesExpected, leaf);
97
151
  actions.push({
98
152
  kind,
99
153
  sourceId,
@@ -101,10 +155,13 @@ export class DeploymentPlanner {
101
155
  target: adapter.target,
102
156
  strategy: adapter.strategy,
103
157
  sourcePath: leaf.absolutePath,
104
- targetPath,
105
- ...(existing && existing.targetPath !== targetPath
158
+ targetPath: chosenCandidate.targetPath,
159
+ ...(existing && existing.targetPath !== chosenCandidate.targetPath
106
160
  ? { previousTargetPath: existing.targetPath }
107
161
  : {}),
162
+ ...(chosenCandidate.relocateExternalToTargetPath
163
+ ? { relocateExternalToTargetPath: chosenCandidate.relocateExternalToTargetPath }
164
+ : {}),
108
165
  contentHash: leaf.contentHash,
109
166
  });
110
167
  }
@@ -134,19 +191,143 @@ export class DeploymentPlanner {
134
191
  }
135
192
  return existing.contentHash === leaf.contentHash ? "noop" : "update";
136
193
  }
137
- async inspectTargetPath(targetPath, expectedSourcePath) {
194
+ async inspectTargetPath(targetPath, expectedSourcePath, leaf, lockFile) {
138
195
  try {
196
+ const managedDeployment = lockFile.deployments.find((deployment) => deployment.targetPath === targetPath && deployment.status === "active");
139
197
  const stats = await fs.lstat(targetPath);
140
198
  if (stats.isSymbolicLink()) {
141
199
  const linked = await fs.readlink(targetPath);
142
200
  const resolved = path.resolve(path.dirname(targetPath), linked);
143
201
  const matchesExpected = resolved === expectedSourcePath;
144
- return { exists: true, matchesExpected, foreign: !matchesExpected };
202
+ return {
203
+ exists: true,
204
+ matchesExpected,
205
+ foreign: !matchesExpected,
206
+ managedBySkillFlow: Boolean(managedDeployment),
207
+ ...(managedDeployment ? { managedDeployment } : {}),
208
+ ...(await this.buildExternalIdentityState(targetPath, leaf, managedDeployment)),
209
+ };
145
210
  }
146
- return { exists: true, matchesExpected: false, foreign: true };
211
+ return {
212
+ exists: true,
213
+ matchesExpected: false,
214
+ foreign: true,
215
+ managedBySkillFlow: Boolean(managedDeployment),
216
+ ...(managedDeployment ? { managedDeployment } : {}),
217
+ ...(await this.buildExternalIdentityState(targetPath, leaf, managedDeployment)),
218
+ };
219
+ }
220
+ catch {
221
+ return {
222
+ exists: false,
223
+ matchesExpected: false,
224
+ foreign: false,
225
+ managedBySkillFlow: false,
226
+ externalExactMatch: false,
227
+ };
228
+ }
229
+ }
230
+ async buildExternalIdentityState(targetPath, leaf, managedDeployment) {
231
+ const identity = !managedDeployment ? await this.readSkillIdentity(targetPath) : undefined;
232
+ return {
233
+ externalExactMatch: !managedDeployment &&
234
+ identity?.name === leaf.name &&
235
+ identity.description === leaf.description,
236
+ ...(identity ? { identity } : {}),
237
+ };
238
+ }
239
+ async readSkillIdentity(targetPath) {
240
+ try {
241
+ const raw = await fs.readFile(path.join(targetPath, "SKILL.md"), "utf8");
242
+ const lines = raw.split(/\r?\n/);
243
+ if (lines[0]?.trim() !== "---") {
244
+ return undefined;
245
+ }
246
+ const data = {};
247
+ let index = 1;
248
+ while (index < lines.length) {
249
+ const line = lines[index] ?? "";
250
+ if (line.trim() === "---") {
251
+ break;
252
+ }
253
+ const pair = line.match(/^([A-Za-z0-9_-]+):\s*(.*)$/);
254
+ if (!pair) {
255
+ index += 1;
256
+ continue;
257
+ }
258
+ const key = pair[1];
259
+ const rest = pair[2];
260
+ if (!key || rest === undefined) {
261
+ index += 1;
262
+ continue;
263
+ }
264
+ if (rest === "|" || rest === ">") {
265
+ const blockLines = [];
266
+ index += 1;
267
+ while (index < lines.length) {
268
+ const blockLine = lines[index] ?? "";
269
+ if (blockLine.length === 0) {
270
+ blockLines.push("");
271
+ index += 1;
272
+ continue;
273
+ }
274
+ if (!blockLine.startsWith(" ")) {
275
+ break;
276
+ }
277
+ blockLines.push(blockLine.slice(2));
278
+ index += 1;
279
+ }
280
+ data[key] = blockLines.join("\n").trim();
281
+ continue;
282
+ }
283
+ data[key] = rest.trim();
284
+ index += 1;
285
+ }
286
+ const name = data.name?.trim();
287
+ const description = data.description?.trim();
288
+ if (!name || !description) {
289
+ return undefined;
290
+ }
291
+ return { name, description };
292
+ }
293
+ catch {
294
+ return undefined;
295
+ }
296
+ }
297
+ async buildExternalRelocationCandidate(preferredTargetPath, inspectedCandidates, leaf, rootPath) {
298
+ const preferredCandidate = inspectedCandidates.find((candidate) => candidate.targetPath === preferredTargetPath);
299
+ if (!preferredCandidate ||
300
+ !preferredCandidate.diskState.exists ||
301
+ preferredCandidate.diskState.managedBySkillFlow ||
302
+ preferredCandidate.diskState.externalExactMatch) {
303
+ return undefined;
304
+ }
305
+ const currentLinkName = path.basename(preferredTargetPath);
306
+ for (const relocationLinkName of this.buildExternalRelocationLinkNames(currentLinkName)) {
307
+ const relocationTargetPath = path.join(rootPath, relocationLinkName);
308
+ const relocationState = await this.inspectExistingTargetPath(relocationTargetPath);
309
+ if (relocationState.exists) {
310
+ continue;
311
+ }
312
+ return {
313
+ linkName: currentLinkName,
314
+ targetPath: preferredTargetPath,
315
+ diskState: preferredCandidate.diskState,
316
+ relocateExternalToTargetPath: relocationTargetPath,
317
+ };
318
+ }
319
+ return undefined;
320
+ }
321
+ buildExternalRelocationLinkNames(currentLinkName) {
322
+ return Array.from({ length: 12 }, (_, index) => index === 0 ? `${currentLinkName}-external` : `${currentLinkName}-external-${index + 1}`);
323
+ }
324
+ async inspectExistingTargetPath(targetPath) {
325
+ try {
326
+ await fs.lstat(targetPath);
327
+ return { exists: true };
147
328
  }
148
329
  catch {
149
- return { exists: false, matchesExpected: false, foreign: false };
330
+ return { exists: false };
150
331
  }
151
332
  }
152
333
  buildProjectedLinkNameMap(manifest, lockFile, target) {
@@ -164,6 +345,7 @@ export class DeploymentPlanner {
164
345
  leafId: leaf.id,
165
346
  groupId: leaf.sourceId,
166
347
  groupName: sourcesById.get(leaf.sourceId)?.displayName ?? leaf.sourceId,
348
+ groupAuthor: parseGitHubRepo(sourcesById.get(leaf.sourceId)?.locator ?? "")?.owner,
167
349
  skillName: leaf.linkName,
168
350
  })));
169
351
  }
@@ -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,4 +1,4 @@
1
- import type { DeploymentAction, DeploymentPlan, DeploymentTargetName, DoctorReport, LockFile, Manifest, Result, SourceBinding, WorkflowSummary } from "../domain/types.js";
1
+ import type { DeploymentAction, DeploymentPlan, DeploymentTargetName, DoctorReport, LockFile, Manifest, Result, SkillCandidate, SourceBinding, Warning, WorkflowSummary } from "../domain/types.js";
2
2
  import { StateStore } from "../state/store.js";
3
3
  import { DeploymentApplier } from "./deployment-applier.js";
4
4
  import { DeploymentPlanner } from "./deployment-planner.js";
@@ -19,7 +19,20 @@ export declare class SkillFlowApp {
19
19
  readonly applier: DeploymentApplier;
20
20
  readonly doctorService: DoctorService;
21
21
  readonly workflowService: WorkflowService;
22
- addSource(locator: string, options?: AddSourceOptions): Promise<Result<import("./source-service.js").SourceSnapshot>>;
22
+ addSource(locator: string, options?: AddSourceOptions): Promise<{
23
+ ok: true;
24
+ data: import("./source-service.js").SourceSnapshot;
25
+ warnings: Warning[];
26
+ errors: [];
27
+ } | {
28
+ ok: false;
29
+ data?: import("./source-service.js").SourceSnapshot;
30
+ warnings: Warning[];
31
+ errors: import("../domain/types.js").Failure[];
32
+ }>;
33
+ findSkills(query: string): Promise<Result<{
34
+ candidates: SkillCandidate[];
35
+ }>>;
23
36
  listWorkflows(): Promise<Result<{
24
37
  summaries: WorkflowSummary[];
25
38
  }>>;
@@ -58,9 +71,22 @@ export declare class SkillFlowApp {
58
71
  warnings: string[];
59
72
  }>>;
60
73
  bindingFromDraft(draft: DraftBinding): SourceBinding;
74
+ private persistNormalizedBindings;
75
+ private normalizeBindings;
76
+ private draftFromBinding;
77
+ private selectLeafIdsForRequestedPath;
61
78
  private prepareManifestForDraft;
62
79
  private findExactDuplicateLeafSelections;
63
80
  private getExactDuplicateKey;
64
81
  private planForAffectedSources;
65
82
  private hasActiveTargets;
83
+ private buildLocalCandidates;
84
+ private searchBuiltinGitSource;
85
+ private getBuiltinCatalogSkillPaths;
86
+ private matchesQuery;
87
+ private compareCandidates;
88
+ private getSourceRank;
89
+ private getQueryScore;
90
+ private getCandidateKey;
91
+ private formatSourceLabel;
66
92
  }