skill-flow 1.0.4 → 1.0.5

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 (72) hide show
  1. package/README.md +1 -1
  2. package/README.zh.md +1 -1
  3. package/dist/adapters/channel-adapters.js +11 -3
  4. package/dist/adapters/channel-adapters.js.map +1 -1
  5. package/dist/cli.js +64 -6
  6. package/dist/cli.js.map +1 -1
  7. package/dist/domain/types.d.ts +42 -0
  8. package/dist/services/config-coordinator.d.ts +38 -0
  9. package/dist/services/config-coordinator.js +81 -0
  10. package/dist/services/config-coordinator.js.map +1 -0
  11. package/dist/services/doctor-service.d.ts +2 -0
  12. package/dist/services/doctor-service.js +62 -0
  13. package/dist/services/doctor-service.js.map +1 -1
  14. package/dist/services/inventory-service.d.ts +3 -1
  15. package/dist/services/inventory-service.js +12 -5
  16. package/dist/services/inventory-service.js.map +1 -1
  17. package/dist/services/skill-flow.d.ts +37 -16
  18. package/dist/services/skill-flow.js +446 -186
  19. package/dist/services/skill-flow.js.map +1 -1
  20. package/dist/services/source-service.d.ts +10 -10
  21. package/dist/services/source-service.js +306 -64
  22. package/dist/services/source-service.js.map +1 -1
  23. package/dist/services/workspace-bootstrap-service.js +2 -10
  24. package/dist/services/workspace-bootstrap-service.js.map +1 -1
  25. package/dist/state/store.d.ts +16 -0
  26. package/dist/state/store.js +93 -19
  27. package/dist/state/store.js.map +1 -1
  28. package/dist/tests/clawhub.test.d.ts +1 -0
  29. package/dist/tests/clawhub.test.js +63 -0
  30. package/dist/tests/clawhub.test.js.map +1 -0
  31. package/dist/tests/cli-utils.test.d.ts +1 -0
  32. package/dist/tests/cli-utils.test.js +15 -0
  33. package/dist/tests/cli-utils.test.js.map +1 -0
  34. package/dist/tests/config-coordinator.test.d.ts +1 -0
  35. package/dist/tests/config-coordinator.test.js +172 -0
  36. package/dist/tests/config-coordinator.test.js.map +1 -0
  37. package/dist/tests/config-integration.test.d.ts +1 -0
  38. package/dist/tests/config-integration.test.js +238 -0
  39. package/dist/tests/config-integration.test.js.map +1 -0
  40. package/dist/tests/config-ui-utils.test.d.ts +1 -0
  41. package/dist/tests/config-ui-utils.test.js +389 -0
  42. package/dist/tests/config-ui-utils.test.js.map +1 -0
  43. package/dist/tests/find-and-naming-utils.test.d.ts +1 -0
  44. package/dist/tests/find-and-naming-utils.test.js +127 -0
  45. package/dist/tests/find-and-naming-utils.test.js.map +1 -0
  46. package/dist/tests/skill-flow.test.js +311 -889
  47. package/dist/tests/skill-flow.test.js.map +1 -1
  48. package/dist/tests/source-lifecycle.test.d.ts +1 -0
  49. package/dist/tests/source-lifecycle.test.js +605 -0
  50. package/dist/tests/source-lifecycle.test.js.map +1 -0
  51. package/dist/tests/target-definitions.test.d.ts +1 -0
  52. package/dist/tests/target-definitions.test.js +51 -0
  53. package/dist/tests/target-definitions.test.js.map +1 -0
  54. package/dist/tests/test-helpers.d.ts +18 -0
  55. package/dist/tests/test-helpers.js +123 -0
  56. package/dist/tests/test-helpers.js.map +1 -0
  57. package/dist/tui/config-app.d.ts +144 -24
  58. package/dist/tui/config-app.js +1025 -339
  59. package/dist/tui/config-app.js.map +1 -1
  60. package/dist/utils/clawhub.d.ts +3 -0
  61. package/dist/utils/clawhub.js +32 -3
  62. package/dist/utils/clawhub.js.map +1 -1
  63. package/dist/utils/cli.d.ts +1 -0
  64. package/dist/utils/cli.js +15 -0
  65. package/dist/utils/cli.js.map +1 -0
  66. package/dist/utils/constants.d.ts +4 -0
  67. package/dist/utils/constants.js +31 -0
  68. package/dist/utils/constants.js.map +1 -1
  69. package/dist/utils/fs.d.ts +5 -0
  70. package/dist/utils/fs.js +52 -1
  71. package/dist/utils/fs.js.map +1 -1
  72. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-bootstrap-service.js","sourceRoot":"","sources":["../../src/services/workspace-bootstrap-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-bootstrap-service.js","sourceRoot":"","sources":["../../src/services/workspace-bootstrap-service.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import type { LockFile, Manifest, SourceKind } from "../domain/types.js";
2
2
  export declare class StateStore {
3
3
  private readonly stateRoot;
4
+ private initPromise;
5
+ private ioQueue;
4
6
  constructor(stateRoot?: string);
5
7
  get rootPath(): string;
6
8
  get sourceRoot(): string;
@@ -11,9 +13,23 @@ export declare class StateStore {
11
13
  getCatalogIndexPath(sourceId: string): string;
12
14
  get manifestPath(): string;
13
15
  get lockPath(): string;
16
+ get mutationLockPath(): string;
14
17
  init(): Promise<void>;
15
18
  readManifest(): Promise<Manifest>;
16
19
  writeManifest(manifest: Manifest): Promise<void>;
17
20
  readLock(): Promise<LockFile>;
21
+ readState(): Promise<{
22
+ manifest: Manifest;
23
+ lockFile: LockFile;
24
+ }>;
18
25
  writeLock(lockFile: LockFile): Promise<void>;
26
+ writeState(manifest: Manifest, lockFile: LockFile): Promise<void>;
27
+ withMutationLock<T>(task: () => Promise<T>): Promise<T>;
28
+ private initializeState;
29
+ private readManifestRaw;
30
+ private readLockRaw;
31
+ private normalizeLockFile;
32
+ private createEmptyManifest;
33
+ private createEmptyLockFile;
34
+ private withIoLock;
19
35
  }
@@ -1,8 +1,10 @@
1
1
  import path from "node:path";
2
2
  import { SCHEMA_VERSION, getStateRoot } from "../utils/constants.js";
3
- import { ensureDir, readJsonFile, writeJsonFile } from "../utils/fs.js";
3
+ import { ensureDir, pathExists, readJsonFile, withFileLock, writeJsonFile, } from "../utils/fs.js";
4
4
  export class StateStore {
5
5
  stateRoot;
6
+ initPromise;
7
+ ioQueue = Promise.resolve();
6
8
  constructor(stateRoot = getStateRoot()) {
7
9
  this.stateRoot = stateRoot;
8
10
  }
@@ -33,31 +35,77 @@ export class StateStore {
33
35
  get lockPath() {
34
36
  return path.join(this.stateRoot, "lock.json");
35
37
  }
38
+ get mutationLockPath() {
39
+ return path.join(this.stateRoot, ".mutation.lock");
40
+ }
36
41
  async init() {
37
- await ensureDir(this.getSourceRoot("local"));
38
- await ensureDir(this.getSourceRoot("git"));
39
- await ensureDir(this.getSourceRoot("clawhub"));
40
- await ensureDir(this.catalogRoot);
41
- await this.writeManifest(await this.readManifest());
42
- await this.writeLock(await this.readLock());
42
+ if (!this.initPromise) {
43
+ this.initPromise = this.initializeState();
44
+ }
45
+ await this.initPromise;
43
46
  }
44
47
  async readManifest() {
45
- return readJsonFile(this.manifestPath, {
46
- schemaVersion: SCHEMA_VERSION,
47
- sources: [],
48
- bindings: {},
48
+ return this.withIoLock(async () => {
49
+ await this.init();
50
+ return this.readManifestRaw();
49
51
  });
50
52
  }
51
53
  async writeManifest(manifest) {
52
- await writeJsonFile(this.manifestPath, manifest);
54
+ await this.withIoLock(async () => {
55
+ await this.init();
56
+ await writeJsonFile(this.manifestPath, manifest);
57
+ });
53
58
  }
54
59
  async readLock() {
55
- const lockFile = await readJsonFile(this.lockPath, {
56
- schemaVersion: SCHEMA_VERSION,
57
- sources: [],
58
- leafInventory: [],
59
- deployments: [],
60
+ return this.withIoLock(async () => {
61
+ await this.init();
62
+ return this.normalizeLockFile(await this.readLockRaw());
63
+ });
64
+ }
65
+ async readState() {
66
+ return this.withIoLock(async () => {
67
+ await this.init();
68
+ const manifest = await this.readManifestRaw();
69
+ const lockFile = this.normalizeLockFile(await this.readLockRaw());
70
+ return { manifest, lockFile };
60
71
  });
72
+ }
73
+ async writeLock(lockFile) {
74
+ await this.withIoLock(async () => {
75
+ await this.init();
76
+ await writeJsonFile(this.lockPath, lockFile);
77
+ });
78
+ }
79
+ async writeState(manifest, lockFile) {
80
+ await this.withIoLock(async () => {
81
+ await this.init();
82
+ await writeJsonFile(this.manifestPath, manifest);
83
+ await writeJsonFile(this.lockPath, lockFile);
84
+ });
85
+ }
86
+ async withMutationLock(task) {
87
+ await this.init();
88
+ return withFileLock(this.mutationLockPath, task);
89
+ }
90
+ async initializeState() {
91
+ await ensureDir(this.getSourceRoot("local"));
92
+ await ensureDir(this.getSourceRoot("git"));
93
+ await ensureDir(this.getSourceRoot("clawhub"));
94
+ await ensureDir(this.catalogRoot);
95
+ if (!(await pathExists(this.manifestPath))) {
96
+ await writeJsonFile(this.manifestPath, this.createEmptyManifest());
97
+ }
98
+ if (!(await pathExists(this.lockPath))) {
99
+ await writeJsonFile(this.lockPath, this.createEmptyLockFile());
100
+ }
101
+ }
102
+ readManifestRaw() {
103
+ return readJsonFile(this.manifestPath, this.createEmptyManifest());
104
+ }
105
+ readLockRaw() {
106
+ return readJsonFile(this.lockPath, this.createEmptyLockFile());
107
+ }
108
+ normalizeLockFile(lockFile) {
61
109
  return {
62
110
  ...lockFile,
63
111
  leafInventory: lockFile.leafInventory.map((leaf) => ({
@@ -70,8 +118,34 @@ export class StateStore {
70
118
  })),
71
119
  };
72
120
  }
73
- async writeLock(lockFile) {
74
- await writeJsonFile(this.lockPath, lockFile);
121
+ createEmptyManifest() {
122
+ return {
123
+ schemaVersion: SCHEMA_VERSION,
124
+ sources: [],
125
+ bindings: {},
126
+ };
127
+ }
128
+ createEmptyLockFile() {
129
+ return {
130
+ schemaVersion: SCHEMA_VERSION,
131
+ sources: [],
132
+ leafInventory: [],
133
+ deployments: [],
134
+ };
135
+ }
136
+ async withIoLock(task) {
137
+ const previous = this.ioQueue;
138
+ let release;
139
+ this.ioQueue = new Promise((resolve) => {
140
+ release = resolve;
141
+ });
142
+ await previous;
143
+ try {
144
+ return await task();
145
+ }
146
+ finally {
147
+ release?.();
148
+ }
75
149
  }
76
150
  }
77
151
  //# sourceMappingURL=store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/state/store.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAExE,MAAM,OAAO,UAAU;IACQ;IAA7B,YAA6B,YAAY,YAAY,EAAE;QAA1B,cAAS,GAAT,SAAS,CAAiB;IAAG,CAAC;IAE3D,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,aAAa,CAAC,IAAgB;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,qBAAqB,CAAC,IAAgB,EAAE,QAAgB;QACtD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,sBAAsB,CAAC,QAAgB;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,mBAAmB,CAAC,QAAgB;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,QAAQ,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7C,MAAM,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,MAAM,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;QAC/C,MAAM,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAClC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACpD,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,YAAY,CAAW,IAAI,CAAC,YAAY,EAAE;YAC/C,aAAa,EAAE,cAAc;YAC7B,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,EAAE;SACb,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAkB;QACpC,MAAM,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAW,IAAI,CAAC,QAAQ,EAAE;YAC3D,aAAa,EAAE,cAAc;YAC7B,OAAO,EAAE,EAAE;YACX,aAAa,EAAE,EAAE;YACjB,WAAW,EAAE,EAAE;SAChB,CAAC,CAAC;QAEH,OAAO;YACL,GAAG,QAAQ;YACX,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACnD,GAAG,IAAI;gBACP,QAAQ,EACN,IAAI,CAAC,QAAQ;oBACb,CAAC,IAAI,CAAC,YAAY,KAAK,GAAG;wBACxB,CAAC,CAAC,IAAI,CAAC,IAAI;wBACX,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;gBACpD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,EAAE;aAC9C,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAkB;QAChC,MAAM,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;CACF"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/state/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,63 @@
1
+ import { describe, expect, test, vi, beforeEach } from "vitest";
2
+ import { installClawHubSkill, searchClawHubSkills, } from "../utils/clawhub.js";
3
+ const execFileMock = vi.hoisted(() => vi.fn());
4
+ vi.mock("node:child_process", () => ({
5
+ execFile: Object.assign(execFileMock, {
6
+ [Symbol.for("nodejs.util.promisify.custom")](_command, _args, _options) {
7
+ return new Promise((resolve, reject) => {
8
+ execFileMock(_command, _args, _options, (error, stdout, stderr) => {
9
+ if (error) {
10
+ reject(error);
11
+ return;
12
+ }
13
+ resolve({ stdout, stderr });
14
+ });
15
+ });
16
+ },
17
+ }),
18
+ }));
19
+ describe("clawhub utils", () => {
20
+ beforeEach(() => {
21
+ execFileMock.mockReset();
22
+ });
23
+ test("parses the actual clawhub search output shape", async () => {
24
+ execFileMock.mockImplementation((_command, _args, _options, callback) => {
25
+ callback(null, [
26
+ "- Searching",
27
+ "summarize Summarize (4.030)",
28
+ "20206-02-10-clawhub-summarize-1-0-0 20206 02 10 Clawhub Summarize 1.0.0 (3.596)",
29
+ "summarize-pro Summarize Pro (3.579)",
30
+ "summarize-file Summarize File (3.551)",
31
+ "summarize-1-0-0 Summarize 1.0.0 (3.540)",
32
+ ].join("\n"), "");
33
+ });
34
+ await expect(searchClawHubSkills("summarize", 5)).resolves.toEqual([
35
+ { slug: "summarize", title: "Summarize", score: 4.03 },
36
+ {
37
+ slug: "20206-02-10-clawhub-summarize-1-0-0",
38
+ title: "20206 02 10 Clawhub Summarize 1.0.0",
39
+ score: 3.596,
40
+ },
41
+ { slug: "summarize-pro", title: "Summarize Pro", score: 3.579 },
42
+ { slug: "summarize-file", title: "Summarize File", score: 3.551 },
43
+ { slug: "summarize-1-0-0", title: "Summarize 1.0.0", score: 3.54 },
44
+ ]);
45
+ });
46
+ test("surfaces suspicious install failures as an explicit security block", async () => {
47
+ execFileMock.mockImplementation((_command, _args, _options, callback) => {
48
+ const error = Object.assign(new Error("Command failed"), {
49
+ stderr: [
50
+ "Error: Use --force to install suspicious skills in non-interactive mode",
51
+ '⚠️ Warning: "agent-browser" is flagged as suspicious by VirusTotal Code Insight.',
52
+ ].join("\n"),
53
+ });
54
+ callback(error, "", error.stderr);
55
+ });
56
+ const result = installClawHubSkill("agent-browser");
57
+ await expect(result).rejects.toMatchObject({
58
+ name: "ClawHubSecurityBlockError",
59
+ message: "ClawHub security block: 'agent-browser' is flagged as suspicious. Use --force to install suspicious skills in non-interactive mode.",
60
+ });
61
+ });
62
+ });
63
+ //# sourceMappingURL=clawhub.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clawhub.test.js","sourceRoot":"","sources":["../../src/tests/clawhub.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ import { describe, expect, test } from "vitest";
2
+ import { resolveAddSourceLocator } from "../utils/cli.js";
3
+ describe("cli utils", () => {
4
+ test("leaves direct source locators unchanged without a catalog override", () => {
5
+ expect(resolveAddSourceLocator("JimLiu/baoyu-skills")).toBe("JimLiu/baoyu-skills");
6
+ });
7
+ test("maps --from clawhub sources to clawhub locators", () => {
8
+ expect(resolveAddSourceLocator("find-skills-skill", "clawhub")).toBe("clawhub:find-skills-skill");
9
+ expect(resolveAddSourceLocator("clawhub:find-skills-skill", "clawhub")).toBe("clawhub:find-skills-skill");
10
+ });
11
+ test("rejects unsupported source catalogs", () => {
12
+ expect(() => resolveAddSourceLocator("find-skills-skill", "github")).toThrow("Unsupported source catalog 'github'.");
13
+ });
14
+ });
15
+ //# sourceMappingURL=cli-utils.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-utils.test.js","sourceRoot":"","sources":["../../src/tests/cli-utils.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,IAAI,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC9E,MAAM,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC3D,MAAM,CAAC,uBAAuB,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAClE,2BAA2B,CAC5B,CAAC;QACF,MAAM,CAAC,uBAAuB,CAAC,2BAA2B,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAC1E,2BAA2B,CAC5B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAC1E,sCAAsC,CACvC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,172 @@
1
+ import { describe, expect, test, vi } from "vitest";
2
+ import { ConfigCoordinator } from "../services/config-coordinator.js";
3
+ const manifest = {
4
+ schemaVersion: 1,
5
+ sources: [
6
+ {
7
+ id: "alpha",
8
+ locator: "/tmp/alpha",
9
+ kind: "local",
10
+ displayName: "alpha",
11
+ addedAt: "2026-03-23T00:00:00.000Z",
12
+ },
13
+ {
14
+ id: "beta",
15
+ locator: "/tmp/beta",
16
+ kind: "local",
17
+ displayName: "beta",
18
+ addedAt: "2026-03-23T00:00:00.000Z",
19
+ },
20
+ ],
21
+ bindings: {
22
+ alpha: {
23
+ targets: {
24
+ codex: {
25
+ enabled: true,
26
+ leafIds: ["alpha:browse"],
27
+ },
28
+ },
29
+ },
30
+ beta: {
31
+ targets: {},
32
+ },
33
+ },
34
+ };
35
+ const lockFile = {
36
+ schemaVersion: 1,
37
+ sources: [],
38
+ leafInventory: [
39
+ {
40
+ id: "alpha:browse",
41
+ sourceId: "alpha",
42
+ name: "browse",
43
+ linkName: "browse",
44
+ title: "browse",
45
+ description: "Browse things.",
46
+ relativePath: "browse",
47
+ absolutePath: "/tmp/alpha/browse",
48
+ skillFilePath: "/tmp/alpha/browse/SKILL.md",
49
+ contentHash: "hash-alpha",
50
+ metadataWarnings: [],
51
+ valid: true,
52
+ },
53
+ ],
54
+ deployments: [],
55
+ };
56
+ const audit = {
57
+ status: "HEALTHY",
58
+ issues: [],
59
+ };
60
+ const summaries = [
61
+ {
62
+ source: manifest.sources[0],
63
+ lock: undefined,
64
+ leafs: [lockFile.leafInventory[0]],
65
+ bindings: manifest.bindings.alpha,
66
+ activeTargetCount: 1,
67
+ health: "ACTIVE",
68
+ issueCounts: { warning: 0, error: 0 },
69
+ },
70
+ {
71
+ source: manifest.sources[1],
72
+ lock: undefined,
73
+ leafs: [],
74
+ bindings: manifest.bindings.beta,
75
+ activeTargetCount: 0,
76
+ health: "INACTIVE",
77
+ issueCounts: { warning: 0, error: 0 },
78
+ },
79
+ ];
80
+ describe("ConfigCoordinator", () => {
81
+ test("boots config and derives initial drafts from normalized summaries", async () => {
82
+ const coordinator = new ConfigCoordinator({
83
+ store: {
84
+ init: vi.fn().mockResolvedValue(undefined),
85
+ readManifest: vi.fn(),
86
+ },
87
+ doctorService: {
88
+ run: vi.fn().mockResolvedValue({ ok: true, data: audit, warnings: [], errors: [] }),
89
+ },
90
+ workflowService: {
91
+ getSummaries: vi.fn().mockReturnValue(summaries),
92
+ },
93
+ getAvailableTargets: vi.fn().mockResolvedValue(["codex"]),
94
+ pruneMissingCheckouts: vi.fn().mockResolvedValue({
95
+ ok: true,
96
+ data: { removedSourceIds: [] },
97
+ warnings: [],
98
+ errors: [],
99
+ }),
100
+ getConfigData: vi.fn().mockResolvedValue({
101
+ ok: true,
102
+ data: { manifest, lockFile, summaries },
103
+ warnings: [],
104
+ errors: [],
105
+ }),
106
+ });
107
+ const result = await coordinator.bootstrapWorkspaceState();
108
+ expect(result.ok).toBe(true);
109
+ if (!result.ok) {
110
+ return;
111
+ }
112
+ expect(result.data.bootStatus).toEqual({
113
+ phase: "success",
114
+ updatedSourceIds: [],
115
+ failedSources: [],
116
+ });
117
+ expect(result.data.initialDrafts).toEqual({
118
+ alpha: {
119
+ enabledTargets: ["codex"],
120
+ selectedLeafIds: ["alpha:browse"],
121
+ },
122
+ beta: {
123
+ enabledTargets: [],
124
+ selectedLeafIds: [],
125
+ },
126
+ });
127
+ });
128
+ test("keeps config boot usable when prune removes missing groups", async () => {
129
+ const onEvent = vi.fn();
130
+ const coordinator = new ConfigCoordinator({
131
+ store: {
132
+ init: vi.fn().mockResolvedValue(undefined),
133
+ readManifest: vi.fn(),
134
+ },
135
+ doctorService: {
136
+ run: vi.fn().mockResolvedValue({ ok: true, data: audit, warnings: [], errors: [] }),
137
+ },
138
+ workflowService: {
139
+ getSummaries: vi.fn().mockReturnValue(summaries),
140
+ },
141
+ getAvailableTargets: vi.fn().mockResolvedValue(["codex"]),
142
+ pruneMissingCheckouts: vi.fn().mockResolvedValue({
143
+ ok: true,
144
+ data: { removedSourceIds: ["beta"] },
145
+ warnings: [],
146
+ errors: [],
147
+ }),
148
+ getConfigData: vi.fn().mockResolvedValue({
149
+ ok: true,
150
+ data: { manifest, lockFile, summaries },
151
+ warnings: [],
152
+ errors: [],
153
+ }),
154
+ });
155
+ const result = await coordinator.bootstrapWorkspaceState(onEvent);
156
+ expect(result.ok).toBe(true);
157
+ if (!result.ok) {
158
+ return;
159
+ }
160
+ expect(result.data.bootStatus).toEqual({
161
+ phase: "success",
162
+ updatedSourceIds: [],
163
+ failedSources: [],
164
+ });
165
+ expect(onEvent).toHaveBeenCalledWith({
166
+ phase: "refresh-sources",
167
+ level: "warning",
168
+ message: "Removed 1 missing group from config state.",
169
+ });
170
+ });
171
+ });
172
+ //# sourceMappingURL=config-coordinator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-coordinator.test.js","sourceRoot":"","sources":["../../src/tests/config-coordinator.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};