@bradygaster/squad-sdk 0.9.0 → 0.9.2-insider.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 (222) hide show
  1. package/README.md +44 -0
  2. package/dist/agents/history-shadow.d.ts +7 -5
  3. package/dist/agents/history-shadow.d.ts.map +1 -1
  4. package/dist/agents/history-shadow.js +39 -48
  5. package/dist/agents/history-shadow.js.map +1 -1
  6. package/dist/agents/index.d.ts +12 -1
  7. package/dist/agents/index.d.ts.map +1 -1
  8. package/dist/agents/index.js +62 -9
  9. package/dist/agents/index.js.map +1 -1
  10. package/dist/agents/lifecycle.d.ts +4 -0
  11. package/dist/agents/lifecycle.d.ts.map +1 -1
  12. package/dist/agents/lifecycle.js +6 -7
  13. package/dist/agents/lifecycle.js.map +1 -1
  14. package/dist/agents/onboarding.d.ts +4 -2
  15. package/dist/agents/onboarding.d.ts.map +1 -1
  16. package/dist/agents/onboarding.js +26 -16
  17. package/dist/agents/onboarding.js.map +1 -1
  18. package/dist/agents/personal.d.ts +2 -1
  19. package/dist/agents/personal.d.ts.map +1 -1
  20. package/dist/agents/personal.js +11 -12
  21. package/dist/agents/personal.js.map +1 -1
  22. package/dist/build/bundle.d.ts.map +1 -1
  23. package/dist/build/bundle.js +6 -6
  24. package/dist/build/bundle.js.map +1 -1
  25. package/dist/build/release.d.ts.map +1 -1
  26. package/dist/build/release.js +7 -5
  27. package/dist/build/release.js.map +1 -1
  28. package/dist/casting/index.d.ts.map +1 -1
  29. package/dist/casting/index.js +4 -3
  30. package/dist/casting/index.js.map +1 -1
  31. package/dist/config/agent-source.d.ts +5 -1
  32. package/dist/config/agent-source.d.ts.map +1 -1
  33. package/dist/config/agent-source.js +85 -41
  34. package/dist/config/agent-source.js.map +1 -1
  35. package/dist/config/init.d.ts +4 -3
  36. package/dist/config/init.d.ts.map +1 -1
  37. package/dist/config/init.js +84 -63
  38. package/dist/config/init.js.map +1 -1
  39. package/dist/config/legacy-fallback.d.ts +3 -2
  40. package/dist/config/legacy-fallback.d.ts.map +1 -1
  41. package/dist/config/legacy-fallback.js +16 -14
  42. package/dist/config/legacy-fallback.js.map +1 -1
  43. package/dist/config/models.d.ts +9 -6
  44. package/dist/config/models.d.ts.map +1 -1
  45. package/dist/config/models.js +35 -25
  46. package/dist/config/models.js.map +1 -1
  47. package/dist/index.d.ts +5 -1
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +14 -1
  50. package/dist/index.js.map +1 -1
  51. package/dist/marketplace/packaging.d.ts.map +1 -1
  52. package/dist/marketplace/packaging.js +18 -16
  53. package/dist/marketplace/packaging.js.map +1 -1
  54. package/dist/multi-squad.d.ts.map +1 -1
  55. package/dist/multi-squad.js +10 -9
  56. package/dist/multi-squad.js.map +1 -1
  57. package/dist/platform/comms-file-log.d.ts.map +1 -1
  58. package/dist/platform/comms-file-log.js +7 -6
  59. package/dist/platform/comms-file-log.js.map +1 -1
  60. package/dist/platform/comms.d.ts.map +1 -1
  61. package/dist/platform/comms.js +6 -5
  62. package/dist/platform/comms.js.map +1 -1
  63. package/dist/platform/index.d.ts.map +1 -1
  64. package/dist/platform/index.js +4 -3
  65. package/dist/platform/index.js.map +1 -1
  66. package/dist/ralph/capabilities.d.ts +30 -1
  67. package/dist/ralph/capabilities.d.ts.map +1 -1
  68. package/dist/ralph/capabilities.js +51 -6
  69. package/dist/ralph/capabilities.js.map +1 -1
  70. package/dist/ralph/index.d.ts +1 -1
  71. package/dist/ralph/index.d.ts.map +1 -1
  72. package/dist/ralph/index.js +4 -3
  73. package/dist/ralph/index.js.map +1 -1
  74. package/dist/ralph/rate-limiting.d.ts.map +1 -1
  75. package/dist/ralph/rate-limiting.js +4 -4
  76. package/dist/ralph/rate-limiting.js.map +1 -1
  77. package/dist/remote/bridge.d.ts.map +1 -1
  78. package/dist/remote/bridge.js +2 -2
  79. package/dist/remote/bridge.js.map +1 -1
  80. package/dist/resolution.d.ts +9 -0
  81. package/dist/resolution.d.ts.map +1 -1
  82. package/dist/resolution.js +39 -16
  83. package/dist/resolution.js.map +1 -1
  84. package/dist/roles/catalog.d.ts +1 -1
  85. package/dist/runtime/config.d.ts.map +1 -1
  86. package/dist/runtime/config.js +8 -7
  87. package/dist/runtime/config.js.map +1 -1
  88. package/dist/runtime/cross-squad.d.ts.map +1 -1
  89. package/dist/runtime/cross-squad.js +8 -7
  90. package/dist/runtime/cross-squad.js.map +1 -1
  91. package/dist/runtime/scheduler.d.ts.map +1 -1
  92. package/dist/runtime/scheduler.js +8 -8
  93. package/dist/runtime/scheduler.js.map +1 -1
  94. package/dist/runtime/squad-observer.d.ts.map +1 -1
  95. package/dist/runtime/squad-observer.js +7 -4
  96. package/dist/runtime/squad-observer.js.map +1 -1
  97. package/dist/sharing/consult.d.ts +1 -1
  98. package/dist/sharing/consult.d.ts.map +1 -1
  99. package/dist/sharing/consult.js +66 -64
  100. package/dist/sharing/consult.js.map +1 -1
  101. package/dist/sharing/export.d.ts.map +1 -1
  102. package/dist/sharing/export.js +16 -16
  103. package/dist/sharing/export.js.map +1 -1
  104. package/dist/sharing/import.d.ts.map +1 -1
  105. package/dist/sharing/import.js +13 -12
  106. package/dist/sharing/import.js.map +1 -1
  107. package/dist/skills/skill-loader.d.ts.map +1 -1
  108. package/dist/skills/skill-loader.js +10 -9
  109. package/dist/skills/skill-loader.js.map +1 -1
  110. package/dist/skills/skill-script-loader.d.ts.map +1 -1
  111. package/dist/skills/skill-script-loader.js +6 -4
  112. package/dist/skills/skill-script-loader.js.map +1 -1
  113. package/dist/skills/skill-source.d.ts +3 -1
  114. package/dist/skills/skill-source.d.ts.map +1 -1
  115. package/dist/skills/skill-source.js +18 -16
  116. package/dist/skills/skill-source.js.map +1 -1
  117. package/dist/state/collection-map.d.ts +43 -0
  118. package/dist/state/collection-map.d.ts.map +1 -0
  119. package/dist/state/collection-map.js +9 -0
  120. package/dist/state/collection-map.js.map +1 -0
  121. package/dist/state/collections.d.ts +102 -0
  122. package/dist/state/collections.d.ts.map +1 -0
  123. package/dist/state/collections.js +317 -0
  124. package/dist/state/collections.js.map +1 -0
  125. package/dist/state/domain-types.d.ts +122 -0
  126. package/dist/state/domain-types.d.ts.map +1 -0
  127. package/dist/state/domain-types.js +54 -0
  128. package/dist/state/domain-types.js.map +1 -0
  129. package/dist/state/handles.d.ts +16 -0
  130. package/dist/state/handles.d.ts.map +1 -0
  131. package/dist/state/handles.js +161 -0
  132. package/dist/state/handles.js.map +1 -0
  133. package/dist/state/index.d.ts +17 -0
  134. package/dist/state/index.d.ts.map +1 -0
  135. package/dist/state/index.js +15 -0
  136. package/dist/state/index.js.map +1 -0
  137. package/dist/state/io/charter-io.d.ts +28 -0
  138. package/dist/state/io/charter-io.d.ts.map +1 -0
  139. package/dist/state/io/charter-io.js +94 -0
  140. package/dist/state/io/charter-io.js.map +1 -0
  141. package/dist/state/io/decisions-io.d.ts +42 -0
  142. package/dist/state/io/decisions-io.d.ts.map +1 -0
  143. package/dist/state/io/decisions-io.js +66 -0
  144. package/dist/state/io/decisions-io.js.map +1 -0
  145. package/dist/state/io/history-io.d.ts +37 -0
  146. package/dist/state/io/history-io.d.ts.map +1 -0
  147. package/dist/state/io/history-io.js +102 -0
  148. package/dist/state/io/history-io.js.map +1 -0
  149. package/dist/state/io/index.d.ts +19 -0
  150. package/dist/state/io/index.d.ts.map +1 -0
  151. package/dist/state/io/index.js +19 -0
  152. package/dist/state/io/index.js.map +1 -0
  153. package/dist/state/io/routing-io.d.ts +37 -0
  154. package/dist/state/io/routing-io.d.ts.map +1 -0
  155. package/dist/state/io/routing-io.js +99 -0
  156. package/dist/state/io/routing-io.js.map +1 -0
  157. package/dist/state/io/team-io.d.ts +46 -0
  158. package/dist/state/io/team-io.d.ts.map +1 -0
  159. package/dist/state/io/team-io.js +82 -0
  160. package/dist/state/io/team-io.js.map +1 -0
  161. package/dist/state/schema.d.ts +24 -0
  162. package/dist/state/schema.d.ts.map +1 -0
  163. package/dist/state/schema.js +41 -0
  164. package/dist/state/schema.js.map +1 -0
  165. package/dist/state/squad-state.d.ts +42 -0
  166. package/dist/state/squad-state.d.ts.map +1 -0
  167. package/dist/state/squad-state.js +68 -0
  168. package/dist/state/squad-state.js.map +1 -0
  169. package/dist/storage/fs-storage-provider.d.ts +60 -0
  170. package/dist/storage/fs-storage-provider.d.ts.map +1 -0
  171. package/dist/storage/fs-storage-provider.js +377 -0
  172. package/dist/storage/fs-storage-provider.js.map +1 -0
  173. package/dist/storage/in-memory-storage-provider.d.ts +46 -0
  174. package/dist/storage/in-memory-storage-provider.d.ts.map +1 -0
  175. package/dist/storage/in-memory-storage-provider.js +264 -0
  176. package/dist/storage/in-memory-storage-provider.js.map +1 -0
  177. package/dist/storage/index.d.ts +6 -0
  178. package/dist/storage/index.d.ts.map +1 -0
  179. package/dist/storage/index.js +5 -0
  180. package/dist/storage/index.js.map +1 -0
  181. package/dist/storage/sqlite-storage-provider.d.ts +95 -0
  182. package/dist/storage/sqlite-storage-provider.d.ts.map +1 -0
  183. package/dist/storage/sqlite-storage-provider.js +383 -0
  184. package/dist/storage/sqlite-storage-provider.js.map +1 -0
  185. package/dist/storage/storage-error.d.ts +28 -0
  186. package/dist/storage/storage-error.d.ts.map +1 -0
  187. package/dist/storage/storage-error.js +35 -0
  188. package/dist/storage/storage-error.js.map +1 -0
  189. package/dist/storage/storage-provider.d.ts +161 -0
  190. package/dist/storage/storage-provider.d.ts.map +1 -0
  191. package/dist/storage/storage-provider.js +18 -0
  192. package/dist/storage/storage-provider.js.map +1 -0
  193. package/dist/streams/resolver.d.ts.map +1 -1
  194. package/dist/streams/resolver.js +6 -5
  195. package/dist/streams/resolver.js.map +1 -1
  196. package/dist/tools/index.d.ts +5 -1
  197. package/dist/tools/index.d.ts.map +1 -1
  198. package/dist/tools/index.js +54 -15
  199. package/dist/tools/index.js.map +1 -1
  200. package/dist/upstream/resolver.d.ts +3 -2
  201. package/dist/upstream/resolver.d.ts.map +1 -1
  202. package/dist/upstream/resolver.js +33 -32
  203. package/dist/upstream/resolver.js.map +1 -1
  204. package/package.json +33 -1
  205. package/templates/scribe-charter.md +4 -0
  206. package/templates/skills/cross-machine-coordination/SKILL.md +434 -0
  207. package/templates/skills/error-recovery/SKILL.md +99 -0
  208. package/templates/skills/iterative-retrieval/SKILL.md +165 -0
  209. package/templates/skills/notification-routing/SKILL.md +105 -0
  210. package/templates/skills/pr-screenshots/SKILL.md +149 -0
  211. package/templates/skills/ralph-two-pass-scan/SKILL.md +35 -0
  212. package/templates/skills/reflect/SKILL.md +229 -0
  213. package/templates/skills/release-process/SKILL.md +84 -376
  214. package/templates/skills/retro-enforcement/SKILL.md +148 -0
  215. package/templates/skills/tiered-memory/SKILL.md +234 -0
  216. package/templates/skills/windows-compatibility/SKILL.md +24 -0
  217. package/templates/{squad.agent.md → squad.agent.md.template} +57 -28
  218. package/templates/workflows/squad-ci.yml +1 -1
  219. package/templates/workflows/squad-heartbeat.yml +0 -4
  220. package/templates/workflows/squad-insider-release.yml +1 -1
  221. package/templates/workflows/squad-preview.yml +1 -1
  222. package/templates/workflows/squad-release.yml +1 -1
@@ -2,8 +2,8 @@
2
2
  * Agent Source Registry
3
3
  * Pluggable agent discovery and loading
4
4
  */
5
- import * as fs from 'fs/promises';
6
5
  import * as path from 'path';
6
+ import { FSStorageProvider } from '../storage/index.js';
7
7
  /** Directories to scan for agents, in priority order. */
8
8
  const AGENT_DIRS = ['.squad/agents', '.ai-team/agents'];
9
9
  /**
@@ -45,10 +45,14 @@ export function parseCharterMetadata(content) {
45
45
  }
46
46
  export class LocalAgentSource {
47
47
  basePath;
48
+ storage;
49
+ state;
48
50
  name = 'local';
49
51
  type = 'local';
50
- constructor(basePath) {
52
+ constructor(basePath, storage = new FSStorageProvider(), state) {
51
53
  this.basePath = basePath;
54
+ this.storage = storage;
55
+ this.state = state;
52
56
  }
53
57
  /**
54
58
  * Resolve the agents directory, preferring .squad/agents over .ai-team/agents.
@@ -56,69 +60,104 @@ export class LocalAgentSource {
56
60
  async resolveAgentsDir() {
57
61
  for (const dir of AGENT_DIRS) {
58
62
  const fullPath = path.join(this.basePath, dir);
63
+ if (await this.storage.isDirectory(fullPath))
64
+ return fullPath;
65
+ }
66
+ return null;
67
+ }
68
+ async listAgents() {
69
+ // Use SquadState agents collection when available
70
+ if (this.state) {
59
71
  try {
60
- const stat = await fs.stat(fullPath);
61
- if (stat.isDirectory())
62
- return fullPath;
72
+ const names = await this.state.agents.list();
73
+ const manifests = [];
74
+ for (const entryName of names) {
75
+ try {
76
+ const content = await this.state.agents.get(entryName).charter();
77
+ const meta = parseCharterMetadata(content);
78
+ manifests.push({
79
+ name: meta.name || entryName,
80
+ role: meta.role || 'agent',
81
+ source: 'local',
82
+ });
83
+ }
84
+ catch {
85
+ continue;
86
+ }
87
+ }
88
+ return manifests;
63
89
  }
64
90
  catch {
65
- // directory doesn't exist, try next
91
+ // Fall through to raw StorageProvider path
66
92
  }
67
93
  }
68
- return null;
69
- }
70
- async listAgents() {
94
+ // Fallback: raw StorageProvider scan
71
95
  const agentsDir = await this.resolveAgentsDir();
72
96
  if (!agentsDir)
73
97
  return [];
74
98
  const manifests = [];
75
99
  let entries;
76
100
  try {
77
- entries = await fs.readdir(agentsDir, { withFileTypes: true });
101
+ entries = await this.storage.list(agentsDir);
78
102
  }
79
103
  catch {
80
104
  return [];
81
105
  }
82
- for (const entry of entries) {
83
- if (!entry.isDirectory())
106
+ for (const entryName of entries) {
107
+ const entryPath = path.join(agentsDir, entryName);
108
+ if (!(await this.storage.isDirectory(entryPath)))
84
109
  continue;
85
- const charterPath = path.join(agentsDir, entry.name, 'charter.md');
110
+ const charterPath = path.join(entryPath, 'charter.md');
111
+ const content = await this.storage.read(charterPath);
112
+ if (!content)
113
+ continue;
114
+ const meta = parseCharterMetadata(content);
115
+ manifests.push({
116
+ name: meta.name || entryName,
117
+ role: meta.role || 'agent',
118
+ source: 'local',
119
+ });
120
+ }
121
+ return manifests;
122
+ }
123
+ async getAgent(name) {
124
+ // Use SquadState agents collection when available
125
+ if (this.state) {
86
126
  try {
87
- const content = await fs.readFile(charterPath, 'utf-8');
88
- const meta = parseCharterMetadata(content);
89
- manifests.push({
90
- name: meta.name || entry.name,
127
+ const handle = this.state.agents.get(name);
128
+ const charter = await handle.charter();
129
+ const meta = parseCharterMetadata(charter);
130
+ // Read history via raw storage (history parsing is more granular in shadow module)
131
+ const agentsDir = await this.resolveAgentsDir();
132
+ const history = agentsDir
133
+ ? await this.storage.read(path.join(agentsDir, name, 'history.md'))
134
+ : undefined;
135
+ return {
136
+ name: meta.name || name,
91
137
  role: meta.role || 'agent',
92
138
  source: 'local',
93
- });
139
+ charter,
140
+ model: meta.model,
141
+ tools: meta.tools,
142
+ skills: meta.skills,
143
+ history,
144
+ };
94
145
  }
95
146
  catch {
96
- // Skip agents with missing/unreadable charter
147
+ // Agent not found via state, fall through
97
148
  }
98
149
  }
99
- return manifests;
100
- }
101
- async getAgent(name) {
150
+ // Fallback: raw StorageProvider
102
151
  const agentsDir = await this.resolveAgentsDir();
103
152
  if (!agentsDir)
104
153
  return null;
105
154
  const charterPath = path.join(agentsDir, name, 'charter.md');
106
- let charter;
107
- try {
108
- charter = await fs.readFile(charterPath, 'utf-8');
109
- }
110
- catch {
155
+ const charter = await this.storage.read(charterPath);
156
+ if (!charter)
111
157
  return null;
112
- }
113
158
  const meta = parseCharterMetadata(charter);
114
159
  // Optionally read history.md
115
- let history;
116
- try {
117
- history = await fs.readFile(path.join(agentsDir, name, 'history.md'), 'utf-8');
118
- }
119
- catch {
120
- // history is optional
121
- }
160
+ const history = await this.storage.read(path.join(agentsDir, name, 'history.md'));
122
161
  return {
123
162
  name: meta.name || name,
124
163
  role: meta.role || 'agent',
@@ -131,15 +170,20 @@ export class LocalAgentSource {
131
170
  };
132
171
  }
133
172
  async getCharter(name) {
173
+ // Use SquadState agents collection when available
174
+ if (this.state) {
175
+ try {
176
+ return await this.state.agents.get(name).charter();
177
+ }
178
+ catch {
179
+ return null;
180
+ }
181
+ }
182
+ // Fallback: raw StorageProvider
134
183
  const agentsDir = await this.resolveAgentsDir();
135
184
  if (!agentsDir)
136
185
  return null;
137
- try {
138
- return await fs.readFile(path.join(agentsDir, name, 'charter.md'), 'utf-8');
139
- }
140
- catch {
141
- return null;
142
- }
186
+ return await this.storage.read(path.join(agentsDir, name, 'charter.md')) ?? null;
143
187
  }
144
188
  }
145
189
  /** Parse "owner/repo" format into components. */
@@ -1 +1 @@
1
- {"version":3,"file":"agent-source.js","sourceRoot":"","sources":["../../src/config/agent-source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-source.js","sourceRoot":"","sources":["../../src/config/agent-source.ts"],"names":[],"mappings":"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"}
@@ -7,11 +7,12 @@
7
7
  *
8
8
  * @module config/init
9
9
  */
10
+ import type { StorageProvider } from '../storage/index.js';
10
11
  import type { SubSquadDefinition } from '../streams/types.js';
11
12
  /**
12
13
  * Get the SDK templates directory path.
13
14
  */
14
- export declare function getSDKTemplatesDir(): string | null;
15
+ export declare function getSDKTemplatesDir(storage?: StorageProvider): string | null;
15
16
  /**
16
17
  * Agent specification for initialization.
17
18
  */
@@ -83,12 +84,12 @@ export interface InitResult {
83
84
  /** Path to .squad/ directory */
84
85
  squadDir: string;
85
86
  }
86
- export declare function initSquad(options: InitOptions): Promise<InitResult>;
87
+ export declare function initSquad(options: InitOptions, storage?: StorageProvider): Promise<InitResult>;
87
88
  /**
88
89
  * Clean up orphan .init-prompt file.
89
90
  * Called by CLI on Ctrl+C abort to remove partial state.
90
91
  *
91
92
  * @param squadDir - Path to the .squad directory
92
93
  */
93
- export declare function cleanupOrphanInitPrompt(squadDir: string): Promise<void>;
94
+ export declare function cleanupOrphanInitPrompt(squadDir: string, storage?: StorageProvider): Promise<void>;
94
95
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/config/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAQ9D;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAiBlD;AA0BD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,uBAAuB;IACvB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,iHAAiH;IACjH,YAAY,CAAC,EAAE,YAAY,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC;IAC1D,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,+CAA+C;IAC/C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IAChF,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,sFAAsF;IACtF,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC/B,qFAAqF;IACrF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,uEAAuE;IACvE,SAAS,CAAC,EAAE;QACV,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,wDAAwD;IACxD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,mDAAmD;IACnD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAkdD,wBAAsB,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAkjBzE;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK7E"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/config/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAK3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAQ9D;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,eAAyC,GAAG,MAAM,GAAG,IAAI,CAiBpG;AA0BD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,uBAAuB;IACvB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,iHAAiH;IACjH,YAAY,CAAC,EAAE,YAAY,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC;IAC1D,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,+CAA+C;IAC/C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IAChF,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,sFAAsF;IACtF,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC/B,qFAAqF;IACrF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,uEAAuE;IACvE,SAAS,CAAC,EAAE;QACV,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,wDAAwD;IACxD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,mDAAmD;IACnD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAkdD,wBAAsB,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,GAAE,eAAyC,GAAG,OAAO,CAAC,UAAU,CAAC,CAykB7H;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,eAAyC,GAAG,OAAO,CAAC,IAAI,CAAC,CAKjI"}
@@ -7,10 +7,9 @@
7
7
  *
8
8
  * @module config/init
9
9
  */
10
- import { mkdir, writeFile, appendFile, unlink } from 'fs/promises';
11
10
  import { join, dirname } from 'path';
12
11
  import { fileURLToPath } from 'url';
13
- import { existsSync, cpSync, statSync, mkdirSync, readFileSync, readdirSync } from 'fs';
12
+ import { FSStorageProvider } from '../storage/index.js';
14
13
  import { execFileSync } from 'node:child_process';
15
14
  import { MODELS } from '../runtime/constants.js';
16
15
  import { getRoleById } from '../roles/index.js';
@@ -20,17 +19,17 @@ import { getRoleById } from '../roles/index.js';
20
19
  /**
21
20
  * Get the SDK templates directory path.
22
21
  */
23
- export function getSDKTemplatesDir() {
22
+ export function getSDKTemplatesDir(storage = new FSStorageProvider()) {
24
23
  // Use fileURLToPath for cross-platform compatibility (handles Windows drive letters, URL encoding)
25
24
  const currentDir = dirname(fileURLToPath(import.meta.url));
26
25
  // Try relative to this file (in dist/)
27
26
  const distPath = join(currentDir, '../../templates');
28
- if (existsSync(distPath)) {
27
+ if (storage.existsSync(distPath)) {
29
28
  return distPath;
30
29
  }
31
30
  // Try relative to package root (for dev)
32
31
  const pkgPath = join(currentDir, '../../../templates');
33
- if (existsSync(pkgPath)) {
32
+ if (storage.existsSync(pkgPath)) {
34
33
  return pkgPath;
35
34
  }
36
35
  return null;
@@ -38,18 +37,18 @@ export function getSDKTemplatesDir() {
38
37
  /**
39
38
  * Copy a directory recursively.
40
39
  */
41
- function copyRecursiveSync(src, dest) {
42
- if (!existsSync(dest)) {
43
- mkdirSync(dest, { recursive: true });
40
+ function copyRecursiveSync(src, dest, storage = new FSStorageProvider()) {
41
+ if (!storage.existsSync(dest)) {
42
+ storage.mkdirSync(dest, { recursive: true });
44
43
  }
45
- for (const entry of statSync(src).isDirectory() ? readdirSync(src) : []) {
44
+ for (const entry of storage.isDirectorySync(src) ? storage.listSync(src) : []) {
46
45
  const srcPath = join(src, entry);
47
46
  const destPath = join(dest, entry);
48
- if (statSync(srcPath).isDirectory()) {
49
- copyRecursiveSync(srcPath, destPath);
47
+ if (storage.isDirectorySync(srcPath)) {
48
+ copyRecursiveSync(srcPath, destPath, storage);
50
49
  }
51
50
  else {
52
- cpSync(srcPath, destPath);
51
+ storage.copySync(srcPath, destPath);
53
52
  }
54
53
  }
55
54
  }
@@ -467,7 +466,7 @@ const FRAMEWORK_WORKFLOWS = [
467
466
  'squad-triage.yml',
468
467
  'sync-squad-labels.yml',
469
468
  ];
470
- export async function initSquad(options) {
469
+ export async function initSquad(options, storage = new FSStorageProvider()) {
471
470
  const { teamRoot, projectName, projectDescription, agents, configFormat = 'typescript', userName, skipExisting = true, includeWorkflows = true, includeTemplates = true, includeMcpConfig = true, projectType = 'unknown', version = '0.0.0', } = options;
472
471
  const createdFiles = [];
473
472
  const skippedFiles = [];
@@ -498,23 +497,22 @@ export async function initSquad(options) {
498
497
  };
499
498
  // Helper to write file (respects skipExisting)
500
499
  const writeIfNotExists = async (filePath, content) => {
501
- if (existsSync(filePath) && skipExisting) {
500
+ if (storage.existsSync(filePath) && skipExisting) {
502
501
  skippedFiles.push(toRelativePath(filePath));
503
502
  return false;
504
503
  }
505
- await mkdir(dirname(filePath), { recursive: true });
506
- await writeFile(filePath, content, 'utf-8');
504
+ await storage.write(filePath, content);
507
505
  createdFiles.push(toRelativePath(filePath));
508
506
  return true;
509
507
  };
510
508
  // Helper to copy file (respects skipExisting)
511
509
  const copyIfNotExists = async (src, dest) => {
512
- if (existsSync(dest) && skipExisting) {
510
+ if (storage.existsSync(dest) && skipExisting) {
513
511
  skippedFiles.push(toRelativePath(dest));
514
512
  return false;
515
513
  }
516
- await mkdir(dirname(dest), { recursive: true });
517
- cpSync(src, dest);
514
+ await storage.mkdir(dirname(dest), { recursive: true });
515
+ storage.copySync(src, dest);
518
516
  createdFiles.push(toRelativePath(dest));
519
517
  return true;
520
518
  };
@@ -534,19 +532,45 @@ export async function initSquad(options) {
534
532
  join(squadDir, 'log'),
535
533
  ];
536
534
  for (const dir of directories) {
537
- if (!existsSync(dir)) {
538
- await mkdir(dir, { recursive: true });
535
+ if (!storage.existsSync(dir)) {
536
+ await storage.mkdir(dir, { recursive: true });
537
+ }
538
+ }
539
+ // -------------------------------------------------------------------------
540
+ // Scaffold .squad/casting/ files (policy, registry, history)
541
+ // -------------------------------------------------------------------------
542
+ const castingDir = join(squadDir, 'casting');
543
+ const castingFiles = [
544
+ { name: 'policy.json', templateName: 'casting-policy.json', fallback: JSON.stringify({ casting_policy_version: '1.1', allowlist_universes: [], universe_capacity: {} }, null, 2) + '\n' },
545
+ { name: 'registry.json', templateName: 'casting-registry.json', fallback: JSON.stringify({ agents: {} }, null, 2) + '\n' },
546
+ { name: 'history.json', templateName: 'casting-history.json', fallback: JSON.stringify({ universe_usage_history: [], assignment_cast_snapshots: {} }, null, 2) + '\n' },
547
+ ];
548
+ for (const cf of castingFiles) {
549
+ const dest = join(castingDir, cf.name);
550
+ if (!storage.existsSync(dest)) {
551
+ // Try to copy from SDK templates first, fall back to inline defaults
552
+ const templateSrc = templatesDir ? join(templatesDir, cf.templateName) : null;
553
+ if (templateSrc && storage.existsSync(templateSrc)) {
554
+ storage.copySync(templateSrc, dest);
555
+ }
556
+ else {
557
+ await storage.write(dest, cf.fallback);
558
+ }
559
+ createdFiles.push(toRelativePath(dest));
560
+ }
561
+ else {
562
+ skippedFiles.push(toRelativePath(dest));
539
563
  }
540
564
  }
541
565
  // -------------------------------------------------------------------------
542
566
  // Create .squad/config.json for squad settings
543
567
  // -------------------------------------------------------------------------
544
568
  const squadConfigPath = join(squadDir, 'config.json');
545
- if (!existsSync(squadConfigPath)) {
569
+ if (!storage.existsSync(squadConfigPath)) {
546
570
  // Detect platform from git remote for config
547
571
  let detectedPlatform;
548
572
  try {
549
- const remoteUrl = execFileSync('git', ['remote', 'get-url', 'origin'], { cwd: teamRoot, encoding: 'utf-8' }).trim();
573
+ const remoteUrl = execFileSync('git', ['remote', 'get-url', 'origin'], { cwd: teamRoot, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] }).trim();
550
574
  const remoteUrlLower = remoteUrl.toLowerCase();
551
575
  if (remoteUrlLower.includes('dev.azure.com') || remoteUrlLower.includes('visualstudio.com') || remoteUrlLower.includes('ssh.dev.azure.com')) {
552
576
  detectedPlatform = 'azure-devops';
@@ -566,7 +590,7 @@ export async function initSquad(options) {
566
590
  // to discover available work item types for the project.
567
591
  let introspectedTypes;
568
592
  try {
569
- const remoteUrl = execFileSync('git', ['remote', 'get-url', 'origin'], { cwd: teamRoot, encoding: 'utf-8' }).trim();
593
+ const remoteUrl = execFileSync('git', ['remote', 'get-url', 'origin'], { cwd: teamRoot, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] }).trim();
570
594
  // Parse org/project from remote URL for introspection
571
595
  const httpsMatch = remoteUrl.match(/dev\.azure\.com\/([^/]+)\/([^/]+)\/_git/i);
572
596
  const sshMatch = remoteUrl.match(/ssh\.dev\.azure\.com:v3\/([^/]+)\/([^/]+)\//i);
@@ -605,7 +629,7 @@ export async function initSquad(options) {
605
629
  if (options.extractionDisabled) {
606
630
  squadConfig.extractionDisabled = true;
607
631
  }
608
- await writeFile(squadConfigPath, JSON.stringify(squadConfig, null, 2), 'utf-8');
632
+ await storage.write(squadConfigPath, JSON.stringify(squadConfig, null, 2));
609
633
  createdFiles.push(toRelativePath(squadConfigPath));
610
634
  }
611
635
  // -------------------------------------------------------------------------
@@ -633,7 +657,6 @@ export async function initSquad(options) {
633
657
  const agentsDir = join(squadDir, 'agents');
634
658
  for (const agent of agents) {
635
659
  const agentDir = join(agentsDir, agent.name);
636
- await mkdir(agentDir, { recursive: true });
637
660
  agentDirs.push(agentDir);
638
661
  // Create charter.md
639
662
  const charterPath = join(agentDir, 'charter.md');
@@ -678,7 +701,7 @@ Reusable patterns and heuristics learned through work. NOT transcripts — each
678
701
  // Create ceremonies.md
679
702
  // -------------------------------------------------------------------------
680
703
  const ceremoniesDest = join(squadDir, 'ceremonies.md');
681
- if (templatesDir && existsSync(join(templatesDir, 'ceremonies.md'))) {
704
+ if (templatesDir && storage.existsSync(join(templatesDir, 'ceremonies.md'))) {
682
705
  await copyIfNotExists(join(templatesDir, 'ceremonies.md'), ceremoniesDest);
683
706
  }
684
707
  // -------------------------------------------------------------------------
@@ -727,7 +750,7 @@ ${projectDescription ? `- **Description:** ${projectDescription}\n` : ''}- **Cre
727
750
  // Create routing.md
728
751
  // -------------------------------------------------------------------------
729
752
  const routingPath = join(squadDir, 'routing.md');
730
- if (templatesDir && existsSync(join(templatesDir, 'routing.md'))) {
753
+ if (templatesDir && storage.existsSync(join(templatesDir, 'routing.md'))) {
731
754
  await copyIfNotExists(join(templatesDir, 'routing.md'), routingPath);
732
755
  }
733
756
  else {
@@ -749,11 +772,11 @@ ${projectDescription ? `- **Description:** ${projectDescription}\n` : ''}- **Cre
749
772
  // Copy starter skills
750
773
  // -------------------------------------------------------------------------
751
774
  const skillsDir = join(teamRoot, '.copilot', 'skills');
752
- if (templatesDir && existsSync(join(templatesDir, 'skills'))) {
775
+ if (templatesDir && storage.existsSync(join(templatesDir, 'skills'))) {
753
776
  const skillsSrc = join(templatesDir, 'skills');
754
- const existingSkills = existsSync(skillsDir) ? readdirSync(skillsDir) : [];
777
+ const existingSkills = storage.existsSync(skillsDir) ? storage.listSync(skillsDir) : [];
755
778
  if (existingSkills.length === 0) {
756
- cpSync(skillsSrc, skillsDir, { recursive: true });
779
+ copyRecursiveSync(skillsSrc, skillsDir, storage);
757
780
  createdFiles.push('.copilot/skills');
758
781
  }
759
782
  }
@@ -768,15 +791,15 @@ ${projectDescription ? `- **Description:** ${projectDescription}\n` : ''}- **Cre
768
791
  '.squad/orchestration-log/** merge=union',
769
792
  ];
770
793
  let existingAttrs = '';
771
- if (existsSync(gitattributesPath)) {
772
- existingAttrs = readFileSync(gitattributesPath, 'utf-8');
794
+ if (storage.existsSync(gitattributesPath)) {
795
+ existingAttrs = storage.readSync(gitattributesPath) ?? '';
773
796
  }
774
797
  const missingRules = unionRules.filter(rule => !existingAttrs.includes(rule));
775
798
  if (missingRules.length > 0) {
776
799
  const block = (existingAttrs && !existingAttrs.endsWith('\n') ? '\n' : '')
777
800
  + '# Squad: union merge for append-only team state files\n'
778
801
  + missingRules.join('\n') + '\n';
779
- await appendFile(gitattributesPath, block);
802
+ await storage.append(gitattributesPath, block);
780
803
  createdFiles.push(toRelativePath(gitattributesPath));
781
804
  }
782
805
  // -------------------------------------------------------------------------
@@ -792,27 +815,26 @@ ${projectDescription ? `- **Description:** ${projectDescription}\n` : ''}- **Cre
792
815
  '.squad/sessions/',
793
816
  ];
794
817
  let existingIgnore = '';
795
- if (existsSync(gitignorePath)) {
796
- existingIgnore = readFileSync(gitignorePath, 'utf-8');
818
+ if (storage.existsSync(gitignorePath)) {
819
+ existingIgnore = storage.readSync(gitignorePath) ?? '';
797
820
  }
798
821
  const missingIgnore = ignoreEntries.filter(entry => !existingIgnore.includes(entry));
799
822
  if (missingIgnore.length > 0) {
800
823
  const block = (existingIgnore && !existingIgnore.endsWith('\n') ? '\n' : '')
801
824
  + '# Squad: ignore runtime state (logs, inbox, sessions)\n'
802
825
  + missingIgnore.join('\n') + '\n';
803
- await appendFile(gitignorePath, block);
826
+ await storage.append(gitignorePath, block);
804
827
  createdFiles.push(toRelativePath(gitignorePath));
805
828
  }
806
829
  // -------------------------------------------------------------------------
807
830
  // Create .github/agents/squad.agent.md
808
831
  // -------------------------------------------------------------------------
809
832
  const agentFile = join(teamRoot, '.github', 'agents', 'squad.agent.md');
810
- if (!existsSync(agentFile) || !skipExisting) {
811
- if (templatesDir && existsSync(join(templatesDir, 'squad.agent.md'))) {
812
- let agentContent = readFileSync(join(templatesDir, 'squad.agent.md'), 'utf-8');
833
+ if (!storage.existsSync(agentFile) || !skipExisting) {
834
+ if (templatesDir && storage.existsSync(join(templatesDir, 'squad.agent.md.template'))) {
835
+ let agentContent = storage.readSync(join(templatesDir, 'squad.agent.md.template')) ?? '';
813
836
  agentContent = stampVersionInContent(agentContent, version);
814
- await mkdir(dirname(agentFile), { recursive: true });
815
- await writeFile(agentFile, agentContent, 'utf-8');
837
+ await storage.write(agentFile, agentContent);
816
838
  createdFiles.push(toRelativePath(agentFile));
817
839
  }
818
840
  }
@@ -824,8 +846,8 @@ ${projectDescription ? `- **Description:** ${projectDescription}\n` : ''}- **Cre
824
846
  // -------------------------------------------------------------------------
825
847
  if (includeTemplates && templatesDir) {
826
848
  const templatesDest = join(teamRoot, '.squad', 'templates');
827
- if (!existsSync(templatesDest)) {
828
- cpSync(templatesDir, templatesDest, { recursive: true });
849
+ if (!storage.existsSync(templatesDest)) {
850
+ copyRecursiveSync(templatesDir, templatesDest, storage);
829
851
  createdFiles.push(toRelativePath(templatesDest));
830
852
  }
831
853
  else {
@@ -837,7 +859,7 @@ ${projectDescription ? `- **Description:** ${projectDescription}\n` : ''}- **Cre
837
859
  // -------------------------------------------------------------------------
838
860
  let isGitHub = true;
839
861
  try {
840
- const remoteUrl = execFileSync('git', ['remote', 'get-url', 'origin'], { cwd: teamRoot, encoding: 'utf-8' }).trim();
862
+ const remoteUrl = execFileSync('git', ['remote', 'get-url', 'origin'], { cwd: teamRoot, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] }).trim();
841
863
  const remoteUrlLower = remoteUrl.toLowerCase();
842
864
  if (remoteUrlLower.includes('dev.azure.com') || remoteUrlLower.includes('visualstudio.com') || remoteUrlLower.includes('ssh.dev.azure.com')) {
843
865
  isGitHub = false;
@@ -849,17 +871,17 @@ ${projectDescription ? `- **Description:** ${projectDescription}\n` : ''}- **Cre
849
871
  // -------------------------------------------------------------------------
850
872
  // Copy workflows (optional) — skip for ADO repos
851
873
  // -------------------------------------------------------------------------
852
- if (includeWorkflows && isGitHub && templatesDir && existsSync(join(templatesDir, 'workflows'))) {
874
+ if (includeWorkflows && isGitHub && templatesDir && storage.existsSync(join(templatesDir, 'workflows'))) {
853
875
  const workflowsSrc = join(templatesDir, 'workflows');
854
876
  const workflowsDest = join(teamRoot, '.github', 'workflows');
855
- if (statSync(workflowsSrc).isDirectory()) {
856
- const allWorkflowFiles = readdirSync(workflowsSrc).filter(f => f.endsWith('.yml'));
877
+ if (storage.isDirectorySync(workflowsSrc)) {
878
+ const allWorkflowFiles = storage.listSync(workflowsSrc).filter(f => f.endsWith('.yml'));
857
879
  const workflowFiles = allWorkflowFiles.filter(f => FRAMEWORK_WORKFLOWS.includes(f));
858
- await mkdir(workflowsDest, { recursive: true });
880
+ await storage.mkdir(workflowsDest, { recursive: true });
859
881
  for (const file of workflowFiles) {
860
882
  const destFile = join(workflowsDest, file);
861
- if (!existsSync(destFile) || !skipExisting) {
862
- cpSync(join(workflowsSrc, file), destFile);
883
+ if (!storage.existsSync(destFile) || !skipExisting) {
884
+ storage.copySync(join(workflowsSrc, file), destFile);
863
885
  createdFiles.push(toRelativePath(destFile));
864
886
  }
865
887
  else {
@@ -873,7 +895,7 @@ ${projectDescription ? `- **Description:** ${projectDescription}\n` : ''}- **Cre
873
895
  // -------------------------------------------------------------------------
874
896
  if (includeMcpConfig) {
875
897
  const mcpConfigPath = join(teamRoot, '.copilot', 'mcp-config.json');
876
- if (!existsSync(mcpConfigPath)) {
898
+ if (!storage.existsSync(mcpConfigPath)) {
877
899
  const mcpSample = isGitHub
878
900
  ? {
879
901
  mcpServers: {
@@ -898,8 +920,7 @@ ${projectDescription ? `- **Description:** ${projectDescription}\n` : ''}- **Cre
898
920
  }
899
921
  }
900
922
  };
901
- await mkdir(dirname(mcpConfigPath), { recursive: true });
902
- await writeFile(mcpConfigPath, JSON.stringify(mcpSample, null, 2) + '\n', 'utf-8');
923
+ await storage.write(mcpConfigPath, JSON.stringify(mcpSample, null, 2) + '\n');
903
924
  createdFiles.push(toRelativePath(mcpConfigPath));
904
925
  }
905
926
  else {
@@ -923,14 +944,14 @@ ${projectDescription ? `- **Description:** ${projectDescription}\n` : ''}- **Cre
923
944
  {
924
945
  const workstreamIgnoreEntry = '.squad-workstream';
925
946
  let currentIgnore = '';
926
- if (existsSync(gitignorePath)) {
927
- currentIgnore = readFileSync(gitignorePath, 'utf-8');
947
+ if (storage.existsSync(gitignorePath)) {
948
+ currentIgnore = storage.readSync(gitignorePath) ?? '';
928
949
  }
929
950
  if (!currentIgnore.includes(workstreamIgnoreEntry)) {
930
951
  const block = (currentIgnore && !currentIgnore.endsWith('\n') ? '\n' : '')
931
952
  + '# Squad: SubSquad activation file (local to this machine)\n'
932
953
  + workstreamIgnoreEntry + '\n';
933
- await appendFile(gitignorePath, block);
954
+ await storage.append(gitignorePath, block);
934
955
  createdFiles.push(toRelativePath(gitignorePath));
935
956
  }
936
957
  }
@@ -938,8 +959,8 @@ ${projectDescription ? `- **Description:** ${projectDescription}\n` : ''}- **Cre
938
959
  // Create .first-run marker
939
960
  // -------------------------------------------------------------------------
940
961
  const firstRunMarker = join(squadDir, '.first-run');
941
- if (!existsSync(firstRunMarker)) {
942
- await writeFile(firstRunMarker, new Date().toISOString() + '\n', 'utf-8');
962
+ if (!storage.existsSync(firstRunMarker)) {
963
+ await storage.write(firstRunMarker, new Date().toISOString() + '\n');
943
964
  createdFiles.push(toRelativePath(firstRunMarker));
944
965
  }
945
966
  // -------------------------------------------------------------------------
@@ -947,7 +968,7 @@ ${projectDescription ? `- **Description:** ${projectDescription}\n` : ''}- **Cre
947
968
  // -------------------------------------------------------------------------
948
969
  if (options.prompt) {
949
970
  const promptFile = join(squadDir, '.init-prompt');
950
- await writeFile(promptFile, options.prompt, 'utf-8');
971
+ await storage.write(promptFile, options.prompt);
951
972
  createdFiles.push(toRelativePath(promptFile));
952
973
  }
953
974
  return {
@@ -965,10 +986,10 @@ ${projectDescription ? `- **Description:** ${projectDescription}\n` : ''}- **Cre
965
986
  *
966
987
  * @param squadDir - Path to the .squad directory
967
988
  */
968
- export async function cleanupOrphanInitPrompt(squadDir) {
989
+ export async function cleanupOrphanInitPrompt(squadDir, storage = new FSStorageProvider()) {
969
990
  const promptFile = join(squadDir, '.init-prompt');
970
- if (existsSync(promptFile)) {
971
- await unlink(promptFile);
991
+ if (storage.existsSync(promptFile)) {
992
+ await storage.delete(promptFile);
972
993
  }
973
994
  }
974
995
  //# sourceMappingURL=init.js.map