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,523 +0,0 @@
1
- import { describe, expect, test } from "vitest";
2
- import { buildActionRows, buildCommandBar, buildDetailMetadataRows, buildDraftsFromSummaries, buildFooterHints, buildConfigGroupSkillRows, buildConfigGroups, buildProjectionWarningMap, buildScrollableRows, buildTopBar, captureFocusSnapshot, draftsEqual, getInitialDetailFocus, getNextSelectionIndexAfterDelete, getPaneViewportCount, getPaneWidths, getRequestedAction, getStatusDisplay, moveDetailFocus, prioritizeAlerts, reconcileFocusAfterReload, selectionMarker, } from "../tui/config-app.js";
3
- import { getParentSelectionState, toggleChild, toggleParent, } from "../tui/selection-state.js";
4
- describe("config ui utils", () => {
5
- test("selection state machine handles parent child partial transitions", () => {
6
- let state = {
7
- allLeafIds: ["a", "b"],
8
- selectedLeafIds: [],
9
- };
10
- expect(getParentSelectionState(state)).toBe("empty");
11
- state = toggleChild(state, "a");
12
- expect(getParentSelectionState(state)).toBe("partial");
13
- state = toggleParent(state);
14
- expect(getParentSelectionState(state)).toBe("full");
15
- state = toggleChild(state, "b");
16
- expect(getParentSelectionState(state)).toBe("partial");
17
- });
18
- test("top bar and status helpers only show actionable top bar context", () => {
19
- expect(draftsEqual({
20
- enabledTargets: ["codex", "claude-code"],
21
- selectedLeafIds: ["b", "a"],
22
- }, {
23
- enabledTargets: ["claude-code", "codex"],
24
- selectedLeafIds: ["a", "b"],
25
- })).toBe(true);
26
- expect(getPaneViewportCount(16, 1)).toBe(10);
27
- expect(getPaneWidths(100).reduce((sum, width) => sum + width, 0)).toBeLessThanOrEqual(99);
28
- expect(buildTopBar({
29
- width: 120,
30
- isDirty: true,
31
- changeCount: 3,
32
- showDelete: true,
33
- statusLabel: "Saved",
34
- })).toMatchObject({
35
- title: "Skill Flow",
36
- detail: "Changes: 3",
37
- });
38
- expect(buildTopBar({
39
- width: 120,
40
- isDirty: true,
41
- changeCount: 3,
42
- showDelete: true,
43
- statusLabel: "Saved",
44
- })).toMatchObject({
45
- title: "Skill Flow",
46
- });
47
- expect(buildTopBar({
48
- width: 120,
49
- isDirty: true,
50
- changeCount: 3,
51
- showDelete: true,
52
- statusLabel: "Saved",
53
- }).detailColor).toBeUndefined();
54
- expect(buildTopBar({
55
- width: 120,
56
- isDirty: true,
57
- changeCount: 3,
58
- showDelete: true,
59
- statusLabel: "Saved",
60
- })).toMatchObject({
61
- titleColor: "blue",
62
- });
63
- expect(buildTopBar({
64
- width: 120,
65
- isDirty: true,
66
- changeCount: 3,
67
- showDelete: true,
68
- statusLabel: "Saved",
69
- })).toMatchObject({
70
- title: "Skill Flow",
71
- });
72
- expect(buildTopBar({
73
- width: 120,
74
- isDirty: true,
75
- changeCount: 3,
76
- showDelete: true,
77
- statusLabel: "Saved",
78
- })).toMatchObject({
79
- detail: "Changes: 3",
80
- });
81
- expect(buildTopBar({
82
- width: 90,
83
- isDirty: false,
84
- changeCount: 3,
85
- showDelete: false,
86
- statusLabel: "Saved",
87
- })).toMatchObject({
88
- detail: "Changes: 3",
89
- });
90
- expect(buildTopBar({
91
- width: 120,
92
- isDirty: false,
93
- changeCount: 0,
94
- showDelete: false,
95
- statusLabel: "Clean",
96
- })).toMatchObject({
97
- title: "Skill Flow",
98
- });
99
- expect(buildTopBar({
100
- width: 120,
101
- isDirty: false,
102
- changeCount: 0,
103
- showDelete: false,
104
- statusLabel: "Clean",
105
- }).detail).toBeUndefined();
106
- expect(buildTopBar({
107
- width: 120,
108
- isDirty: false,
109
- changeCount: 0,
110
- showDelete: false,
111
- statusLabel: "Clean",
112
- }).detailColor).toBeUndefined();
113
- expect(buildTopBar({
114
- width: 120,
115
- isDirty: false,
116
- changeCount: 0,
117
- showDelete: false,
118
- statusLabel: "Saving",
119
- })).toMatchObject({
120
- detail: "Status: Saving",
121
- detailColor: "cyan",
122
- });
123
- expect(buildTopBar({
124
- width: 120,
125
- isDirty: false,
126
- changeCount: 0,
127
- showDelete: false,
128
- statusLabel: "Failed",
129
- })).toMatchObject({
130
- detail: "Status: Failed",
131
- detailColor: "red",
132
- });
133
- expect(getStatusDisplay({
134
- deleteState: {
135
- phase: "deleting",
136
- sourceId: "alpha",
137
- message: undefined,
138
- },
139
- isSelectedDelete: true,
140
- saveState: { phase: "saving", message: undefined },
141
- updateState: { phase: "failed", message: "boom" },
142
- }).label).toBe("Deleting");
143
- expect(getStatusDisplay({
144
- deleteState: {
145
- phase: "idle",
146
- sourceId: undefined,
147
- message: undefined,
148
- },
149
- isSelectedDelete: false,
150
- saveState: { phase: "failed", message: "boom" },
151
- updateState: { phase: "updated", message: undefined },
152
- }).label).toBe("Failed");
153
- });
154
- test("config uses add-style markers and filter hints", () => {
155
- expect(selectionMarker("full")).toBe("●");
156
- expect(selectionMarker("partial")).toBe("◐");
157
- expect(selectionMarker("empty")).toBe("○");
158
- expect(buildCommandBar("detail.skills")).toContain("Toggle");
159
- expect(buildFooterHints("detail.agents", true)).not.toContain("[⌫] Clear");
160
- });
161
- test("alerts are prioritized error before blocked before warning", () => {
162
- const alerts = prioritizeAlerts([
163
- { level: "warning", message: "rename warning" },
164
- { level: "blocked", message: "target path blocked" },
165
- { level: "error", message: "update failed" },
166
- { level: "warning", message: "rename warning" },
167
- ]);
168
- expect(alerts).toEqual([
169
- { level: "error", message: "update failed" },
170
- { level: "blocked", message: "target path blocked" },
171
- ]);
172
- });
173
- test("detail focus enters agents first and skips empty sections", () => {
174
- expect(getInitialDetailFocus({ hasAgents: true, hasSkills: true })).toBe("detail.agents");
175
- expect(getInitialDetailFocus({ hasAgents: false, hasSkills: true })).toBe("detail.skills");
176
- expect(getInitialDetailFocus({ hasAgents: false, hasSkills: false })).toBe("detail.actions");
177
- expect(moveDetailFocus({
178
- actionCursor: 0,
179
- actionCount: 2,
180
- agentCount: 2,
181
- agentCursor: 1,
182
- direction: 1,
183
- focus: "detail.agents",
184
- skillCount: 3,
185
- skillCursor: 0,
186
- })).toMatchObject({
187
- focus: "detail.skills",
188
- skillCursor: 0,
189
- });
190
- expect(moveDetailFocus({
191
- actionCursor: 0,
192
- actionCount: 1,
193
- agentCount: 0,
194
- agentCursor: 0,
195
- direction: -1,
196
- focus: "detail.actions",
197
- skillCount: 0,
198
- skillCursor: 0,
199
- })).toMatchObject({
200
- focus: "detail.actions",
201
- actionCursor: 0,
202
- });
203
- });
204
- test("keyboard action resolution keeps d and action enter equivalent", () => {
205
- expect(getRequestedAction({
206
- actionCursor: 0,
207
- canDelete: true,
208
- focus: "groups",
209
- input: "d",
210
- keyReturn: false,
211
- })).toBe("delete");
212
- expect(getRequestedAction({
213
- actionCursor: 1,
214
- canDelete: false,
215
- focus: "detail.actions",
216
- input: "",
217
- keyReturn: true,
218
- })).toBe("update");
219
- expect(getRequestedAction({
220
- actionCursor: 0,
221
- canDelete: true,
222
- focus: "detail.actions",
223
- input: "",
224
- keyReturn: true,
225
- })).toBe("update");
226
- });
227
- test("focus reconciliation preserves section and falls back to the first surviving item", () => {
228
- const nextSummaries = [
229
- createSummary({
230
- sourceId: "alpha",
231
- leafIds: ["alpha:browse", "alpha:review"],
232
- }),
233
- ];
234
- const snapshot = captureFocusSnapshot({
235
- actionCursor: 0,
236
- agentCursor: 1,
237
- availableTargets: ["claude-code", "codex"],
238
- focus: "detail.skills",
239
- groupId: "alpha",
240
- selectedGroupIndex: 0,
241
- selectedSummary: createSummary({
242
- sourceId: "alpha",
243
- leafIds: ["alpha:browse", "alpha:slides"],
244
- }),
245
- skillCursor: 2,
246
- });
247
- expect(reconcileFocusAfterReload({
248
- availableTargets: ["claude-code", "codex"],
249
- nextGroups: buildConfigGroups(nextSummaries),
250
- snapshot,
251
- })).toMatchObject({
252
- focus: "detail.skills",
253
- skillCursor: 0,
254
- selectedGroupIndex: 0,
255
- });
256
- });
257
- test("focus reconciliation falls back to the nearest remaining group after update removal", () => {
258
- const snapshot = captureFocusSnapshot({
259
- actionCursor: 1,
260
- agentCursor: 0,
261
- availableTargets: ["claude-code"],
262
- focus: "detail.actions",
263
- groupId: "beta",
264
- selectedGroupIndex: 1,
265
- selectedSummary: createSummary({
266
- sourceId: "beta",
267
- leafIds: ["beta:browse"],
268
- }),
269
- skillCursor: 0,
270
- });
271
- expect(reconcileFocusAfterReload({
272
- availableTargets: ["claude-code"],
273
- nextGroups: buildConfigGroups([
274
- createSummary({
275
- sourceId: "alpha",
276
- leafIds: ["alpha:browse"],
277
- }),
278
- ]),
279
- snapshot,
280
- })).toMatchObject({
281
- focus: "detail.actions",
282
- selectedGroupIndex: 0,
283
- actionCursor: 1,
284
- });
285
- });
286
- test("buildConfigGroups folds clawhub sources into one view group", () => {
287
- const groups = buildConfigGroups([
288
- createSummary({ sourceId: "alpha", leafIds: ["alpha:browse"] }),
289
- createSummary({ sourceId: "beta", kind: "clawhub", leafIds: ["beta:summary"] }),
290
- createSummary({ sourceId: "gamma", kind: "clawhub", leafIds: ["gamma:review"] }),
291
- createSummary({ sourceId: "delta", leafIds: ["delta:slides"] }),
292
- ]);
293
- expect(groups.map((group) => group.title)).toEqual([
294
- "alpha",
295
- "ClawHub Skills",
296
- "delta",
297
- ]);
298
- expect(groups[1]?.kind).toBe("clawhub");
299
- expect(groups[1]?.summaries.map((summary) => summary.source.id)).toEqual(["beta", "gamma"]);
300
- expect(buildConfigGroupSkillRows(groups[1]).map((row) => row.summary.source.id)).toEqual([
301
- "beta",
302
- "gamma",
303
- ]);
304
- });
305
- test("buildActionRows hides delete for clawhub aggregate detail", () => {
306
- const rows = buildActionRows({
307
- actionCursor: 0,
308
- canRunActions: true,
309
- deleteState: {
310
- phase: "idle",
311
- sourceId: undefined,
312
- message: undefined,
313
- },
314
- focus: "detail.actions",
315
- isSelectedDelete: false,
316
- showDeleteAction: false,
317
- updateState: { phase: "idle", message: undefined },
318
- });
319
- expect(rows.map((row) => row.key)).toEqual(["__actions_separator__", "__action_update__"]);
320
- });
321
- test("buildDetailMetadataRows hides clean-state status noise", () => {
322
- const rows = buildDetailMetadataRows({
323
- detailWidth: 80,
324
- group: buildConfigGroups([createSummary({ sourceId: "alpha", leafIds: ["alpha:browse"] })])[0],
325
- summary: createSummary({ sourceId: "alpha", leafIds: ["alpha:browse"] }),
326
- });
327
- expect(rows.map((row) => row.key)).toEqual(["__title__", "__source__"]);
328
- });
329
- test("buildDetailMetadataRows never shows status/save/preview rows", () => {
330
- const rows = buildDetailMetadataRows({
331
- detailWidth: 80,
332
- group: buildConfigGroups([createSummary({ sourceId: "alpha", leafIds: ["alpha:browse"] })])[0],
333
- summary: createSummary({ sourceId: "alpha", leafIds: ["alpha:browse"] }),
334
- });
335
- expect(rows.map((row) => row.key)).toEqual(["__title__", "__source__"]);
336
- });
337
- test("buildDetailMetadataRows describes clawhub aggregate detail as a group", () => {
338
- const group = buildConfigGroups([
339
- createSummary({ sourceId: "beta", kind: "clawhub", leafIds: ["beta:summary"] }),
340
- createSummary({ sourceId: "gamma", kind: "clawhub", leafIds: ["gamma:review"] }),
341
- ])[0];
342
- const rows = buildDetailMetadataRows({
343
- detailWidth: 80,
344
- group,
345
- summary: group.summaries[0],
346
- });
347
- expect(rows.find((row) => row.key === "__source__")?.text).toContain("2 clawhub sources");
348
- expect(rows.find((row) => row.key === "__focused_source__")?.text).toContain("beta@clawhub");
349
- });
350
- test("buildScrollableRows adds up/down hints when content is clipped", () => {
351
- const rows = buildScrollableRows(Array.from({ length: 8 }, (_, index) => ({
352
- key: `row-${index}`,
353
- text: `row ${index}`,
354
- active: false,
355
- color: undefined,
356
- })), 4, 4, "skills");
357
- expect(rows.rows[0]?.key).toBe("__scroll_up__:skills");
358
- expect(rows.rows.at(-1)?.key).toBe("__scroll_down__:skills");
359
- });
360
- test("buildScrollableRows can reserve blank hint slots without overflow", () => {
361
- const rows = buildScrollableRows(Array.from({ length: 2 }, (_, index) => ({
362
- key: `row-${index}`,
363
- text: `row ${index}`,
364
- active: false,
365
- color: undefined,
366
- })), 0, 4, "skills", true);
367
- expect(rows.rows[0]).toMatchObject({ key: "__scroll_up__:skills", text: "" });
368
- expect(rows.rows.at(-1)).toMatchObject({ key: "__scroll_down__:skills", text: "" });
369
- });
370
- test("delete selection falls back to the nearest remaining group", () => {
371
- expect(getNextSelectionIndexAfterDelete(2, 2)).toBe(1);
372
- expect(getNextSelectionIndexAfterDelete(0, 0)).toBe(-1);
373
- });
374
- test("buildDraftsFromSummaries normalizes enabled targets and leaf ids", () => {
375
- const drafts = buildDraftsFromSummaries([
376
- {
377
- ...createSummary({
378
- sourceId: "alpha",
379
- leafIds: ["alpha:browse", "alpha:review"],
380
- }),
381
- bindings: {
382
- targets: {
383
- codex: {
384
- enabled: true,
385
- leafIds: ["alpha:review", "alpha:browse"],
386
- },
387
- "claude-code": {
388
- enabled: true,
389
- leafIds: ["alpha:browse"],
390
- },
391
- },
392
- },
393
- },
394
- ]);
395
- expect(drafts.alpha).toEqual({
396
- enabledTargets: ["claude-code", "codex"],
397
- selectedLeafIds: ["alpha:browse", "alpha:review"],
398
- });
399
- });
400
- test("buildDraftsFromSummaries preserves selected skills when no agents are enabled", () => {
401
- const drafts = buildDraftsFromSummaries([
402
- {
403
- ...createSummary({
404
- sourceId: "alpha",
405
- leafIds: ["alpha:browse", "alpha:review"],
406
- }),
407
- bindings: {
408
- selectedLeafIds: ["alpha:review", "alpha:browse"],
409
- targets: {},
410
- },
411
- },
412
- ]);
413
- expect(drafts.alpha).toEqual({
414
- enabledTargets: [],
415
- selectedLeafIds: ["alpha:browse", "alpha:review"],
416
- });
417
- });
418
- test("detail metadata rows include local checkout path", () => {
419
- const rows = buildDetailMetadataRows({
420
- detailWidth: 100,
421
- group: buildConfigGroups([
422
- createSummary({
423
- sourceId: "alpha",
424
- leafIds: ["alpha:browse"],
425
- }),
426
- ])[0],
427
- summary: {
428
- ...createSummary({
429
- sourceId: "alpha",
430
- leafIds: ["alpha:browse"],
431
- }),
432
- lock: {
433
- id: "alpha",
434
- locator: "alpha",
435
- kind: "git",
436
- displayName: "alpha",
437
- checkoutPath: "/tmp/alpha",
438
- updatedAt: "",
439
- leafIds: ["alpha:browse"],
440
- invalidLeafs: [],
441
- },
442
- },
443
- });
444
- expect(rows.some((row) => row.key === "__local_path__" && row.text.includes("/tmp/alpha"))).toBe(true);
445
- });
446
- test("projection warning helper marks identical cross-group skills as skipped", () => {
447
- const warnings = buildProjectionWarningMap({
448
- drafts: {
449
- alpha: { enabledTargets: ["claude-code"], selectedLeafIds: ["alpha:browse"] },
450
- beta: { enabledTargets: ["claude-code"], selectedLeafIds: ["beta:browse"] },
451
- },
452
- summaries: [
453
- createSummary({
454
- sourceId: "alpha",
455
- leafIds: ["alpha:browse"],
456
- descriptions: { "alpha:browse": "Browser flow." },
457
- }),
458
- createSummary({
459
- sourceId: "beta",
460
- leafIds: ["beta:browse"],
461
- descriptions: { "beta:browse": "Browser flow." },
462
- }),
463
- ],
464
- sourceId: "beta",
465
- });
466
- expect(warnings["beta:browse"]?.[0]).toContain("will be skipped");
467
- });
468
- test("projection warning helper marks cross-group name collisions as renamed", () => {
469
- const warnings = buildProjectionWarningMap({
470
- drafts: {
471
- alpha: { enabledTargets: ["claude-code"], selectedLeafIds: ["alpha:browse"] },
472
- beta: { enabledTargets: ["claude-code"], selectedLeafIds: ["beta:browse"] },
473
- },
474
- summaries: [
475
- createSummary({
476
- sourceId: "alpha",
477
- leafIds: ["alpha:browse"],
478
- descriptions: { "alpha:browse": "Browser flow A." },
479
- }),
480
- createSummary({
481
- sourceId: "beta",
482
- leafIds: ["beta:browse"],
483
- descriptions: { "beta:browse": "Browser flow B." },
484
- }),
485
- ],
486
- sourceId: "beta",
487
- });
488
- expect(warnings["beta:browse"]?.[0]).toContain("will deploy as");
489
- });
490
- });
491
- function createSummary({ sourceId, leafIds, kind = "git", descriptions = {}, }) {
492
- return {
493
- source: {
494
- id: sourceId,
495
- locator: sourceId,
496
- kind,
497
- displayName: sourceId,
498
- addedAt: "",
499
- },
500
- lock: undefined,
501
- bindings: { targets: {} },
502
- activeTargetCount: 0,
503
- health: "ACTIVE",
504
- leafs: leafIds.map((leafId) => {
505
- const name = leafId.split(":")[1] ?? leafId;
506
- return {
507
- id: leafId,
508
- sourceId,
509
- name,
510
- linkName: name,
511
- title: name,
512
- description: descriptions[leafId] ?? `${name} description`,
513
- relativePath: name,
514
- absolutePath: `/tmp/${sourceId}/${name}`,
515
- skillFilePath: `/tmp/${sourceId}/${name}/SKILL.md`,
516
- contentHash: leafId,
517
- metadataWarnings: [],
518
- valid: true,
519
- };
520
- }),
521
- };
522
- }
523
- //# sourceMappingURL=config-ui-utils.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-ui-utils.test.js","sourceRoot":"","sources":["../../src/tests/config-ui-utils.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};