skill-flow 1.0.8 → 1.3.3

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 (143) hide show
  1. package/README.md +209 -131
  2. package/README.zh.md +170 -131
  3. package/dist/bridge-command.d.ts +9 -0
  4. package/dist/bridge-command.js +422 -0
  5. package/dist/bridge-command.js.map +1 -0
  6. package/dist/cli.js +68 -8
  7. package/dist/cli.js.map +1 -1
  8. package/package.json +11 -2
  9. package/dist/adapters/channel-adapters.d.ts +0 -8
  10. package/dist/adapters/channel-adapters.js +0 -64
  11. package/dist/adapters/channel-adapters.js.map +0 -1
  12. package/dist/domain/types.d.ts +0 -234
  13. package/dist/domain/types.js +0 -2
  14. package/dist/domain/types.js.map +0 -1
  15. package/dist/services/config-coordinator.d.ts +0 -38
  16. package/dist/services/config-coordinator.js +0 -83
  17. package/dist/services/config-coordinator.js.map +0 -1
  18. package/dist/services/deployment-applier.d.ts +0 -10
  19. package/dist/services/deployment-applier.js +0 -84
  20. package/dist/services/deployment-applier.js.map +0 -1
  21. package/dist/services/deployment-planner.d.ts +0 -16
  22. package/dist/services/deployment-planner.js +0 -366
  23. package/dist/services/deployment-planner.js.map +0 -1
  24. package/dist/services/doctor-service.d.ts +0 -7
  25. package/dist/services/doctor-service.js +0 -204
  26. package/dist/services/doctor-service.js.map +0 -1
  27. package/dist/services/inventory-service.d.ts +0 -17
  28. package/dist/services/inventory-service.js +0 -216
  29. package/dist/services/inventory-service.js.map +0 -1
  30. package/dist/services/skill-flow.d.ts +0 -136
  31. package/dist/services/skill-flow.js +0 -1210
  32. package/dist/services/skill-flow.js.map +0 -1
  33. package/dist/services/source-service.d.ts +0 -57
  34. package/dist/services/source-service.js +0 -809
  35. package/dist/services/source-service.js.map +0 -1
  36. package/dist/services/workflow-service.d.ts +0 -5
  37. package/dist/services/workflow-service.js +0 -45
  38. package/dist/services/workflow-service.js.map +0 -1
  39. package/dist/services/workspace-bootstrap-service.d.ts +0 -25
  40. package/dist/services/workspace-bootstrap-service.js +0 -140
  41. package/dist/services/workspace-bootstrap-service.js.map +0 -1
  42. package/dist/state/store.d.ts +0 -35
  43. package/dist/state/store.js +0 -151
  44. package/dist/state/store.js.map +0 -1
  45. package/dist/tests/add-flow-model.test.d.ts +0 -1
  46. package/dist/tests/add-flow-model.test.js +0 -108
  47. package/dist/tests/add-flow-model.test.js.map +0 -1
  48. package/dist/tests/add-flow-ui.test.d.ts +0 -1
  49. package/dist/tests/add-flow-ui.test.js +0 -16
  50. package/dist/tests/add-flow-ui.test.js.map +0 -1
  51. package/dist/tests/add-prepare-flow.test.d.ts +0 -1
  52. package/dist/tests/add-prepare-flow.test.js +0 -166
  53. package/dist/tests/add-prepare-flow.test.js.map +0 -1
  54. package/dist/tests/add-selection-and-find-command.test.d.ts +0 -1
  55. package/dist/tests/add-selection-and-find-command.test.js +0 -89
  56. package/dist/tests/add-selection-and-find-command.test.js.map +0 -1
  57. package/dist/tests/clawhub.test.d.ts +0 -1
  58. package/dist/tests/clawhub.test.js +0 -63
  59. package/dist/tests/clawhub.test.js.map +0 -1
  60. package/dist/tests/cli-utils.test.d.ts +0 -1
  61. package/dist/tests/cli-utils.test.js +0 -24
  62. package/dist/tests/cli-utils.test.js.map +0 -1
  63. package/dist/tests/config-coordinator.test.d.ts +0 -1
  64. package/dist/tests/config-coordinator.test.js +0 -219
  65. package/dist/tests/config-coordinator.test.js.map +0 -1
  66. package/dist/tests/config-integration.test.d.ts +0 -1
  67. package/dist/tests/config-integration.test.js +0 -276
  68. package/dist/tests/config-integration.test.js.map +0 -1
  69. package/dist/tests/config-ui-utils.test.d.ts +0 -1
  70. package/dist/tests/config-ui-utils.test.js +0 -523
  71. package/dist/tests/config-ui-utils.test.js.map +0 -1
  72. package/dist/tests/find-and-naming-utils.test.d.ts +0 -1
  73. package/dist/tests/find-and-naming-utils.test.js +0 -127
  74. package/dist/tests/find-and-naming-utils.test.js.map +0 -1
  75. package/dist/tests/inventory-service-precedence.test.d.ts +0 -1
  76. package/dist/tests/inventory-service-precedence.test.js +0 -42
  77. package/dist/tests/inventory-service-precedence.test.js.map +0 -1
  78. package/dist/tests/skill-flow.test.d.ts +0 -1
  79. package/dist/tests/skill-flow.test.js +0 -991
  80. package/dist/tests/skill-flow.test.js.map +0 -1
  81. package/dist/tests/source-lifecycle.test.d.ts +0 -1
  82. package/dist/tests/source-lifecycle.test.js +0 -644
  83. package/dist/tests/source-lifecycle.test.js.map +0 -1
  84. package/dist/tests/source-parsing-compatibility.test.d.ts +0 -1
  85. package/dist/tests/source-parsing-compatibility.test.js +0 -72
  86. package/dist/tests/source-parsing-compatibility.test.js.map +0 -1
  87. package/dist/tests/target-definitions.test.d.ts +0 -1
  88. package/dist/tests/target-definitions.test.js +0 -51
  89. package/dist/tests/target-definitions.test.js.map +0 -1
  90. package/dist/tests/test-helpers.d.ts +0 -18
  91. package/dist/tests/test-helpers.js +0 -123
  92. package/dist/tests/test-helpers.js.map +0 -1
  93. package/dist/tui/add-flow-model.d.ts +0 -62
  94. package/dist/tui/add-flow-model.js +0 -206
  95. package/dist/tui/add-flow-model.js.map +0 -1
  96. package/dist/tui/add-flow.d.ts +0 -25
  97. package/dist/tui/add-flow.js +0 -534
  98. package/dist/tui/add-flow.js.map +0 -1
  99. package/dist/tui/config-app.d.ts +0 -178
  100. package/dist/tui/config-app.js +0 -1551
  101. package/dist/tui/config-app.js.map +0 -1
  102. package/dist/tui/find-app.d.ts +0 -9
  103. package/dist/tui/find-app.js +0 -150
  104. package/dist/tui/find-app.js.map +0 -1
  105. package/dist/tui/selection-state.d.ts +0 -8
  106. package/dist/tui/selection-state.js +0 -32
  107. package/dist/tui/selection-state.js.map +0 -1
  108. package/dist/utils/builtin-git-sources.d.ts +0 -5
  109. package/dist/utils/builtin-git-sources.js +0 -23
  110. package/dist/utils/builtin-git-sources.js.map +0 -1
  111. package/dist/utils/clawhub.d.ts +0 -41
  112. package/dist/utils/clawhub.js +0 -94
  113. package/dist/utils/clawhub.js.map +0 -1
  114. package/dist/utils/cli.d.ts +0 -2
  115. package/dist/utils/cli.js +0 -19
  116. package/dist/utils/cli.js.map +0 -1
  117. package/dist/utils/constants.d.ts +0 -23
  118. package/dist/utils/constants.js +0 -195
  119. package/dist/utils/constants.js.map +0 -1
  120. package/dist/utils/find-command.d.ts +0 -2
  121. package/dist/utils/find-command.js +0 -29
  122. package/dist/utils/find-command.js.map +0 -1
  123. package/dist/utils/format.d.ts +0 -7
  124. package/dist/utils/format.js +0 -68
  125. package/dist/utils/format.js.map +0 -1
  126. package/dist/utils/fs.d.ts +0 -16
  127. package/dist/utils/fs.js +0 -144
  128. package/dist/utils/fs.js.map +0 -1
  129. package/dist/utils/git.d.ts +0 -3
  130. package/dist/utils/git.js +0 -12
  131. package/dist/utils/git.js.map +0 -1
  132. package/dist/utils/github-catalog.d.ts +0 -1
  133. package/dist/utils/github-catalog.js +0 -25
  134. package/dist/utils/github-catalog.js.map +0 -1
  135. package/dist/utils/naming.d.ts +0 -29
  136. package/dist/utils/naming.js +0 -115
  137. package/dist/utils/naming.js.map +0 -1
  138. package/dist/utils/result.d.ts +0 -4
  139. package/dist/utils/result.js +0 -15
  140. package/dist/utils/result.js.map +0 -1
  141. package/dist/utils/source-id.d.ts +0 -2
  142. package/dist/utils/source-id.js +0 -49
  143. package/dist/utils/source-id.js.map +0 -1
@@ -1 +0,0 @@
1
- export {};
@@ -1,276 +0,0 @@
1
- import fs from "node:fs/promises";
2
- import path from "node:path";
3
- import { describe, expect, test } from "vitest";
4
- import { SkillFlowApp } from "../services/skill-flow.js";
5
- import { createRepo, pathExists, skillDoc, useSkillFlowSandbox, writeRepoFiles, } from "./test-helpers.js";
6
- describe.sequential("config integration", () => {
7
- const sandbox = useSkillFlowSandbox();
8
- test("store init is safe under concurrent callers", async () => {
9
- const app = new SkillFlowApp();
10
- await Promise.all(Array.from({ length: 12 }, () => app.store.init()));
11
- expect(await pathExists(app.store.manifestPath)).toBe(true);
12
- expect(await pathExists(app.store.lockPath)).toBe(true);
13
- expect(await app.store.readManifest()).toEqual({
14
- schemaVersion: 1,
15
- sources: [],
16
- bindings: {},
17
- });
18
- expect(await app.store.readLock()).toEqual({
19
- schemaVersion: 1,
20
- sources: [],
21
- leafInventory: [],
22
- deployments: [],
23
- });
24
- });
25
- test("bootstrap detects symlinked skills inside agent roots", async () => {
26
- const app = new SkillFlowApp();
27
- const externalRoot = path.join(sandbox.sandboxRoot, "external-skill");
28
- await writeRepoFiles(externalRoot, {
29
- "SKILL.md": skillDoc("linked-skill", "Symlinked external skill."),
30
- });
31
- await fs.symlink(externalRoot, path.join(process.env.SKILL_FLOW_TARGET_CODEX, "linked-skill"), "junction");
32
- await app.store.init();
33
- const manifest = await app.store.readManifest();
34
- const lock = await app.store.readLock();
35
- const detected = await app.workspaceBootstrapService.detectUnmanagedExternalSkills(manifest, lock);
36
- expect(detected.some((item) => item.displayName === "linked-skill")).toBe(true);
37
- expect(await app.store.readManifest()).toEqual(manifest);
38
- expect(await app.store.readLock()).toEqual(lock);
39
- });
40
- test("config boot prunes groups whose local checkout is missing", async () => {
41
- const liveRepo = await createRepo(sandbox.sandboxRoot, {
42
- "slides/SKILL.md": skillDoc("slides", "Slides flow."),
43
- });
44
- const staleRepo = await createRepo(sandbox.sandboxRoot, {
45
- "eval/SKILL.md": skillDoc("eval", "Eval flow."),
46
- });
47
- const app = new SkillFlowApp();
48
- const live = await app.addSource(liveRepo, { project: false });
49
- const stale = await app.addSource(staleRepo, { project: false });
50
- expect(live.ok).toBe(true);
51
- expect(stale.ok).toBe(true);
52
- if (!live.ok || !stale.ok) {
53
- return;
54
- }
55
- await app.applyDraft(stale.data.manifest.id, {
56
- enabledTargets: ["openclaw"],
57
- selectedLeafIds: [`${stale.data.manifest.id}:eval`],
58
- });
59
- await fs.rm(stale.data.lock.checkoutPath, { recursive: true, force: true });
60
- const boot = await app.configCoordinator.bootstrapWorkspaceState();
61
- expect(boot.ok).toBe(true);
62
- if (!boot.ok) {
63
- return;
64
- }
65
- expect(boot.data.summaries.map((summary) => summary.source.id)).toEqual([
66
- live.data.manifest.id,
67
- ]);
68
- expect(boot.data.bootStatus.failedSources).toEqual([]);
69
- const manifest = await app.store.readManifest();
70
- expect(manifest.sources.map((source) => source.id)).toEqual([live.data.manifest.id]);
71
- expect(await pathExists(path.join(process.env.SKILL_FLOW_TARGET_OPENCLAW, "eval"))).toBe(false);
72
- });
73
- test("config boot skips unmanaged deployment paths while pruning missing checkouts", async () => {
74
- const staleRepo = await createRepo(sandbox.sandboxRoot, {
75
- "eval/SKILL.md": skillDoc("eval", "Eval flow."),
76
- });
77
- const app = new SkillFlowApp();
78
- const stale = await app.addSource(staleRepo, { project: false });
79
- expect(stale.ok).toBe(true);
80
- if (!stale.ok) {
81
- return;
82
- }
83
- await app.applyDraft(stale.data.manifest.id, {
84
- enabledTargets: ["openclaw"],
85
- selectedLeafIds: [`${stale.data.manifest.id}:eval`],
86
- });
87
- const externalPath = path.join(sandbox.sandboxRoot, "prune-external");
88
- await writeRepoFiles(externalPath, {
89
- "SKILL.md": skillDoc("external", "Keep external content."),
90
- });
91
- const lock = await app.store.readLock();
92
- const deployment = lock.deployments.find((item) => item.sourceId === stale.data.manifest.id && item.target === "openclaw");
93
- expect(deployment).toBeTruthy();
94
- if (!deployment) {
95
- return;
96
- }
97
- deployment.targetPath = externalPath;
98
- await app.store.writeLock(lock);
99
- await fs.rm(stale.data.lock.checkoutPath, { recursive: true, force: true });
100
- const boot = await app.configCoordinator.bootstrapWorkspaceState();
101
- expect(boot.ok).toBe(true);
102
- if (!boot.ok) {
103
- return;
104
- }
105
- expect(await pathExists(externalPath)).toBe(true);
106
- const manifest = await app.store.readManifest();
107
- expect(manifest.sources).toHaveLength(0);
108
- });
109
- test("previewDraft is read-only and does not reconcile inventory on its own", async () => {
110
- const repoPath = await createRepo(sandbox.sandboxRoot, {
111
- "browse/SKILL.md": skillDoc("browse", "Browser flow."),
112
- });
113
- const app = new SkillFlowApp();
114
- const added = await app.addSource(repoPath);
115
- expect(added.ok).toBe(true);
116
- if (!added.ok) {
117
- return;
118
- }
119
- const sourceId = added.data.manifest.id;
120
- const lockPath = path.join(sandbox.stateRoot, "lock.json");
121
- const lock = JSON.parse(await fs.readFile(lockPath, "utf8"));
122
- const existingLeaf = lock.leafInventory[0];
123
- const generatedLeafId = `${sourceId}:.agents/skills/generated`;
124
- lock.sources[0].leafIds.push(generatedLeafId);
125
- lock.leafInventory.push({
126
- ...existingLeaf,
127
- id: generatedLeafId,
128
- relativePath: ".agents/skills/generated",
129
- absolutePath: path.join(sandbox.stateRoot, "source", "git", sourceId, ".agents/skills/generated"),
130
- skillFilePath: path.join(sandbox.stateRoot, "source", "git", sourceId, ".agents/skills/generated/SKILL.md"),
131
- linkName: "generated",
132
- name: "generated",
133
- title: "generated",
134
- });
135
- const mutatedLock = `${JSON.stringify(lock, null, 2)}\n`;
136
- await fs.writeFile(lockPath, mutatedLock, "utf8");
137
- const preview = await app.previewDraft(sourceId, {
138
- enabledTargets: ["claude-code"],
139
- selectedLeafIds: [`${sourceId}:browse`],
140
- });
141
- expect(preview.ok).toBe(true);
142
- expect(await fs.readFile(lockPath, "utf8")).toBe(mutatedLock);
143
- });
144
- test("getConfigData normalizes per-target bindings to the config draft model", async () => {
145
- const repoPath = await createRepo(sandbox.sandboxRoot, {
146
- "browse/SKILL.md": skillDoc("browse", "Browser flow."),
147
- "review/SKILL.md": skillDoc("review", "Review flow."),
148
- });
149
- const app = new SkillFlowApp();
150
- const added = await app.addSource(repoPath);
151
- expect(added.ok).toBe(true);
152
- if (!added.ok) {
153
- return;
154
- }
155
- const sourceId = added.data.manifest.id;
156
- const manifest = await app.store.readManifest();
157
- manifest.bindings[sourceId] = {
158
- targets: {
159
- "claude-code": {
160
- enabled: true,
161
- leafIds: [`${sourceId}:browse`],
162
- },
163
- codex: {
164
- enabled: true,
165
- leafIds: [`${sourceId}:review`],
166
- },
167
- },
168
- };
169
- await app.store.writeManifest(manifest);
170
- const result = await app.getConfigData();
171
- expect(result.ok).toBe(true);
172
- if (!result.ok) {
173
- return;
174
- }
175
- const normalizedManifest = await app.store.readManifest();
176
- expect(normalizedManifest.bindings[sourceId]).toEqual({
177
- selectedLeafIds: [`${sourceId}:browse`, `${sourceId}:review`],
178
- targets: {
179
- "claude-code": {
180
- enabled: true,
181
- leafIds: [`${sourceId}:browse`, `${sourceId}:review`],
182
- },
183
- codex: {
184
- enabled: true,
185
- leafIds: [`${sourceId}:browse`, `${sourceId}:review`],
186
- },
187
- },
188
- });
189
- expect(result.data.summaries.find((summary) => summary.source.id === sourceId)?.bindings).toEqual(normalizedManifest.bindings[sourceId]);
190
- });
191
- test("preview and apply can run concurrently without corrupting state files", async () => {
192
- const repoPath = await createRepo(sandbox.sandboxRoot, {
193
- "browse/SKILL.md": skillDoc("browse", "Browser flow."),
194
- });
195
- const app = new SkillFlowApp();
196
- const added = await app.addSource(repoPath, { project: false });
197
- expect(added.ok).toBe(true);
198
- if (!added.ok) {
199
- return;
200
- }
201
- const sourceId = added.data.manifest.id;
202
- const nextDraft = {
203
- enabledTargets: ["claude-code"],
204
- selectedLeafIds: [`${sourceId}:browse`],
205
- };
206
- const results = await Promise.all([
207
- app.previewDraft(sourceId, nextDraft),
208
- app.applyDraft(sourceId, nextDraft),
209
- app.previewDraft(sourceId, nextDraft),
210
- ]);
211
- expect(results.every((result) => result.ok)).toBe(true);
212
- const manifest = await app.store.readManifest();
213
- const lock = await app.store.readLock();
214
- expect(manifest.bindings[sourceId]?.targets["claude-code"]?.leafIds).toEqual([
215
- `${sourceId}:browse`,
216
- ]);
217
- expect(lock.sources.map((source) => source.id)).toEqual([sourceId]);
218
- });
219
- test("concurrent applyDraft calls are serialized and keep the last draft", async () => {
220
- const repoPath = await createRepo(sandbox.sandboxRoot, {
221
- "browse/SKILL.md": skillDoc("browse", "Browser flow."),
222
- });
223
- const app = new SkillFlowApp();
224
- const added = await app.addSource(repoPath, { project: false });
225
- expect(added.ok).toBe(true);
226
- if (!added.ok) {
227
- return;
228
- }
229
- const sourceId = added.data.manifest.id;
230
- const leafId = `${sourceId}:browse`;
231
- const [first, second] = await Promise.all([
232
- app.applyDraft(sourceId, {
233
- enabledTargets: ["claude-code"],
234
- selectedLeafIds: [leafId],
235
- }),
236
- app.applyDraft(sourceId, {
237
- enabledTargets: ["codex"],
238
- selectedLeafIds: [leafId],
239
- }),
240
- ]);
241
- expect(first.ok).toBe(true);
242
- expect(second.ok).toBe(true);
243
- const manifest = await app.store.readManifest();
244
- expect(manifest.bindings[sourceId]).toEqual({
245
- selectedLeafIds: [leafId],
246
- targets: {
247
- codex: {
248
- enabled: true,
249
- leafIds: [leafId],
250
- },
251
- },
252
- });
253
- });
254
- test("concurrent app instances do not lose sources while mutating the same state root", async () => {
255
- const repoA = await createRepo(sandbox.sandboxRoot, {
256
- "browse/SKILL.md": skillDoc("browse", "Browser flow A."),
257
- });
258
- const repoB = await createRepo(sandbox.sandboxRoot, {
259
- "review/SKILL.md": skillDoc("review", "Review flow B."),
260
- });
261
- const appA = new SkillFlowApp();
262
- const appB = new SkillFlowApp();
263
- const [addedA, addedB] = await Promise.all([
264
- appA.addSource(repoA, { project: false }),
265
- appB.addSource(repoB, { project: false }),
266
- ]);
267
- expect(addedA.ok).toBe(true);
268
- expect(addedB.ok).toBe(true);
269
- if (!addedA.ok || !addedB.ok) {
270
- return;
271
- }
272
- const manifest = await appA.store.readManifest();
273
- expect(manifest.sources.map((source) => source.id).sort()).toEqual([addedA.data.manifest.id, addedB.data.manifest.id].sort());
274
- });
275
- });
276
- //# sourceMappingURL=config-integration.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-integration.test.js","sourceRoot":"","sources":["../../src/tests/config-integration.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};