@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
package/README.md CHANGED
@@ -207,6 +207,50 @@ const resumed = await client.resumeSession(
207
207
 
208
208
  ---
209
209
 
210
+ ## Storage Abstraction
211
+
212
+ Squad separates I/O from business logic. All persistent storage — sessions, state, decisions, histories — flows through a pluggable `StorageProvider` interface. Swap the backend (filesystem, database, cloud) without touching orchestration code.
213
+
214
+ ### Built-in Providers
215
+
216
+ | Provider | Use When |
217
+ |----------|----------|
218
+ | `FSStorageProvider` | Running on Node.js. Stores everything on disk. |
219
+ | `InMemoryStorageProvider` | Writing unit tests or running ephemeral sessions. |
220
+ | `SQLiteStorageProvider` | Need a single portable database file. Works on all platforms (runs on WASM). |
221
+
222
+ ### Build Your Own
223
+
224
+ Implement the `StorageProvider` interface:
225
+
226
+ ```typescript
227
+ import type { StorageProvider } from '@bradygaster/squad-sdk';
228
+
229
+ export class MyCloudStorageProvider implements StorageProvider {
230
+ async read(filePath: string): Promise<string | undefined> {
231
+ // Fetch from Azure Blob, S3, or your service
232
+ try {
233
+ return await this.client.getBlob(filePath);
234
+ } catch (e) {
235
+ if (e.code === 'NotFound') return undefined;
236
+ throw e;
237
+ }
238
+ }
239
+
240
+ async write(filePath: string, data: string): Promise<void> {
241
+ // Store to cloud
242
+ await this.client.putBlob(filePath, data);
243
+ }
244
+
245
+ // Implement remaining methods: append, exists, list, delete, deleteDir, isDirectory, mkdir, rename, copy, stat
246
+ // + sync variants (deprecated in Wave 2)
247
+ }
248
+ ```
249
+
250
+ See `storage-provider-azure` and `storage-provider-sqlite` samples for complete implementations.
251
+
252
+ ---
253
+
210
254
  ## The Casting Engine
211
255
 
212
256
  Agents aren't `role-1`, `role-2`. They have names, personalities, and persistent identities across sessions. The casting engine assigns them automatically from a thematic universe.
@@ -6,6 +6,8 @@
6
6
  *
7
7
  * Shadows live at: .squad/agents/{name}/history.md
8
8
  */
9
+ import type { StorageProvider } from '../storage/storage-provider.js';
10
+ import type { SquadState } from '../state/squad-state.js';
9
11
  /**
10
12
  * Standard history sections that agents maintain.
11
13
  */
@@ -41,7 +43,7 @@ export interface ParsedHistory {
41
43
  * @param initialContext - Initial context to seed the history
42
44
  * @returns Path to created history shadow
43
45
  */
44
- export declare function createHistoryShadow(teamRoot: string, agentName: string, initialContext?: string): Promise<string>;
46
+ export declare function createHistoryShadow(teamRoot: string, agentName: string, initialContext?: string, storage?: StorageProvider): Promise<string>;
45
47
  /**
46
48
  * Append content to a specific section of an agent's history shadow.
47
49
  *
@@ -53,7 +55,7 @@ export declare function createHistoryShadow(teamRoot: string, agentName: string,
53
55
  * @param section - Section to append to
54
56
  * @param content - Content to append
55
57
  */
56
- export declare function appendToHistory(teamRoot: string, agentName: string, section: HistorySection, content: string): Promise<void>;
58
+ export declare function appendToHistory(teamRoot: string, agentName: string, section: HistorySection, content: string, storage?: StorageProvider): Promise<void>;
57
59
  /**
58
60
  * Read and parse an agent's history shadow.
59
61
  *
@@ -61,7 +63,7 @@ export declare function appendToHistory(teamRoot: string, agentName: string, sec
61
63
  * @param agentName - Name of the agent
62
64
  * @returns Parsed history with sections
63
65
  */
64
- export declare function readHistory(teamRoot: string, agentName: string): Promise<ParsedHistory>;
66
+ export declare function readHistory(teamRoot: string, agentName: string, storage?: StorageProvider, state?: SquadState): Promise<ParsedHistory>;
65
67
  /**
66
68
  * Check if a history shadow exists for an agent.
67
69
  *
@@ -69,12 +71,12 @@ export declare function readHistory(teamRoot: string, agentName: string): Promis
69
71
  * @param agentName - Name of the agent
70
72
  * @returns True if shadow exists
71
73
  */
72
- export declare function shadowExists(teamRoot: string, agentName: string): Promise<boolean>;
74
+ export declare function shadowExists(teamRoot: string, agentName: string, storage?: StorageProvider): Promise<boolean>;
73
75
  /**
74
76
  * Delete a history shadow for an agent.
75
77
  *
76
78
  * @param teamRoot - Path to team root directory
77
79
  * @param agentName - Name of the agent
78
80
  */
79
- export declare function deleteHistoryShadow(teamRoot: string, agentName: string): Promise<void>;
81
+ export declare function deleteHistoryShadow(teamRoot: string, agentName: string, storage?: StorageProvider): Promise<void>;
80
82
  //# sourceMappingURL=history-shadow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"history-shadow.d.ts","sourceRoot":"","sources":["../../src/agents/history-shadow.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiFH;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,WAAW,GACX,WAAW,GACX,UAAU,GACV,QAAQ,GACR,YAAY,CAAC;AAEjB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC,CAmEjB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAgEf;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,CAAC,CAmDxB;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CAQlB;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAgBf"}
1
+ {"version":3,"file":"history-shadow.d.ts","sourceRoot":"","sources":["../../src/agents/history-shadow.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAyE1D;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,WAAW,GACX,WAAW,GACX,UAAU,GACV,QAAQ,GACR,YAAY,CAAC;AAEjB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,cAAc,CAAC,EAAE,MAAM,EACvB,OAAO,GAAE,eAAyC,GACjD,OAAO,CAAC,MAAM,CAAC,CA8DjB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,eAAyC,GACjD,OAAO,CAAC,IAAI,CAAC,CA6Df;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,eAAyC,EAClD,KAAK,CAAC,EAAE,UAAU,GACjB,OAAO,CAAC,aAAa,CAAC,CAgExB;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,eAAyC,GACjD,OAAO,CAAC,OAAO,CAAC,CAGlB;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,eAAyC,GACjD,OAAO,CAAC,IAAI,CAAC,CAgBf"}
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * Shadows live at: .squad/agents/{name}/history.md
8
8
  */
9
- import * as fs from 'fs/promises';
9
+ import { FSStorageProvider } from '../storage/fs-storage-provider.js';
10
10
  import * as path from 'path';
11
11
  import { ConfigurationError } from '../adapter/errors.js';
12
12
  // ---------------------------------------------------------------------------
@@ -15,7 +15,7 @@ import { ConfigurationError } from '../adapter/errors.js';
15
15
  //
16
16
  // Two layers of protection:
17
17
  // 1. In-process async mutex (handles concurrent agents in one Node.js process)
18
- // 2. Atomic writes via temp-file + rename (prevents partial reads)
18
+ // 2. Write via StorageProvider (implementation determines durability guarantees)
19
19
  // ---------------------------------------------------------------------------
20
20
  /**
21
21
  * Per-file async mutex. Keyed by resolved file path so concurrent calls
@@ -56,21 +56,13 @@ async function withFileLock(filePath, fn) {
56
56
  }
57
57
  }
58
58
  /**
59
- * Write a file atomically by writing to a temp file then renaming.
60
- * Prevents concurrent readers from seeing partial content.
59
+ * Write file content via the StorageProvider abstraction.
60
+ * Previously used temp-file + rename for atomicity; now delegates to
61
+ * StorageProvider.write(). Race condition tracked in #479.
61
62
  * @private
62
63
  */
63
- async function atomicWriteFile(filePath, content) {
64
- const tmpPath = `${filePath}.${process.pid}.tmp`;
65
- try {
66
- await fs.writeFile(tmpPath, content, 'utf-8');
67
- await fs.rename(tmpPath, filePath);
68
- }
69
- catch (err) {
70
- // Clean up temp file on failure
71
- await fs.unlink(tmpPath).catch(() => { });
72
- throw err;
73
- }
64
+ async function atomicWriteFile(storage, filePath, content) {
65
+ await storage.write(filePath, content);
74
66
  }
75
67
  /**
76
68
  * Create a history shadow for an agent.
@@ -84,21 +76,16 @@ async function atomicWriteFile(filePath, content) {
84
76
  * @param initialContext - Initial context to seed the history
85
77
  * @returns Path to created history shadow
86
78
  */
87
- export async function createHistoryShadow(teamRoot, agentName, initialContext) {
79
+ export async function createHistoryShadow(teamRoot, agentName, initialContext, storage = new FSStorageProvider()) {
88
80
  try {
89
81
  const shadowDir = path.join(teamRoot, '.squad', 'agents', agentName);
90
82
  const shadowPath = path.join(shadowDir, 'history.md');
91
- // Ensure directory exists
92
- await fs.mkdir(shadowDir, { recursive: true });
93
83
  // Check if shadow already exists
94
- try {
95
- await fs.access(shadowPath);
84
+ // StorageProvider.write() creates parent dirs, so no explicit mkdir needed
85
+ if (await storage.exists(shadowPath)) {
96
86
  // Shadow exists, return path without overwriting
97
87
  return shadowPath;
98
88
  }
99
- catch {
100
- // Shadow doesn't exist, create it
101
- }
102
89
  // Create initial shadow content
103
90
  const timestamp = new Date().toISOString();
104
91
  const initialContent = `# ${capitalize(agentName)} — Session History
@@ -132,7 +119,7 @@ ${initialContext || 'No initial context provided.'}
132
119
 
133
120
  <!-- Important files, documentation, or external resources -->
134
121
  `;
135
- await fs.writeFile(shadowPath, initialContent, 'utf-8');
122
+ await storage.write(shadowPath, initialContent);
136
123
  return shadowPath;
137
124
  }
138
125
  catch (error) {
@@ -155,23 +142,20 @@ ${initialContext || 'No initial context provided.'}
155
142
  * @param section - Section to append to
156
143
  * @param content - Content to append
157
144
  */
158
- export async function appendToHistory(teamRoot, agentName, section, content) {
145
+ export async function appendToHistory(teamRoot, agentName, section, content, storage = new FSStorageProvider()) {
159
146
  try {
160
147
  const shadowPath = path.join(teamRoot, '.squad', 'agents', agentName, 'history.md');
161
148
  // Acquire file lock before the read-modify-write cycle (#479)
162
149
  await withFileLock(shadowPath, async () => {
163
150
  // Read existing history (inside lock to prevent races)
164
- let historyContent;
165
- try {
166
- historyContent = await fs.readFile(shadowPath, 'utf-8');
167
- }
168
- catch (error) {
151
+ const historyContent = await storage.read(shadowPath);
152
+ if (historyContent === undefined) {
169
153
  throw new ConfigurationError(`History shadow not found for agent '${agentName}'. Create it first with createHistoryShadow().`, {
170
154
  agentName,
171
155
  operation: 'appendToHistory',
172
156
  timestamp: new Date(),
173
157
  metadata: { shadowPath },
174
- }, error instanceof Error ? error : undefined);
158
+ });
175
159
  }
176
160
  // Find section or create it
177
161
  const sectionHeader = `## ${section}`;
@@ -191,8 +175,8 @@ export async function appendToHistory(teamRoot, agentName, section, content) {
191
175
  // Section doesn't exist, create it at the end
192
176
  updatedContent = historyContent.trimEnd() + `\n\n${sectionHeader}${entry}`;
193
177
  }
194
- // Atomic write: temp file + rename prevents partial reads
195
- await atomicWriteFile(shadowPath, updatedContent);
178
+ // Write via StorageProvider (serialized by in-process file lock)
179
+ await atomicWriteFile(storage, shadowPath, updatedContent);
196
180
  });
197
181
  }
198
182
  catch (error) {
@@ -214,14 +198,27 @@ export async function appendToHistory(teamRoot, agentName, section, content) {
214
198
  * @param agentName - Name of the agent
215
199
  * @returns Parsed history with sections
216
200
  */
217
- export async function readHistory(teamRoot, agentName) {
201
+ export async function readHistory(teamRoot, agentName, storage = new FSStorageProvider(), state) {
218
202
  try {
219
203
  const shadowPath = path.join(teamRoot, '.squad', 'agents', agentName, 'history.md');
204
+ // Use SquadState agents collection when available
220
205
  let historyContent;
221
- try {
222
- historyContent = await fs.readFile(shadowPath, 'utf-8');
206
+ if (state) {
207
+ try {
208
+ const entries = await state.agents.get(agentName).history();
209
+ // If entries were returned, the file exists; read raw content via SP
210
+ // (ParsedHistory needs the full content, not just entries)
211
+ historyContent = await storage.read(shadowPath);
212
+ }
213
+ catch {
214
+ // Agent not found via state — fall through to raw SP
215
+ historyContent = await storage.read(shadowPath);
216
+ }
223
217
  }
224
- catch (error) {
218
+ else {
219
+ historyContent = await storage.read(shadowPath);
220
+ }
221
+ if (historyContent === undefined) {
225
222
  // Shadow doesn't exist yet, return empty
226
223
  return {
227
224
  fullContent: '',
@@ -264,15 +261,9 @@ export async function readHistory(teamRoot, agentName) {
264
261
  * @param agentName - Name of the agent
265
262
  * @returns True if shadow exists
266
263
  */
267
- export async function shadowExists(teamRoot, agentName) {
268
- try {
269
- const shadowPath = path.join(teamRoot, '.squad', 'agents', agentName, 'history.md');
270
- await fs.access(shadowPath);
271
- return true;
272
- }
273
- catch {
274
- return false;
275
- }
264
+ export async function shadowExists(teamRoot, agentName, storage = new FSStorageProvider()) {
265
+ const shadowPath = path.join(teamRoot, '.squad', 'agents', agentName, 'history.md');
266
+ return storage.exists(shadowPath);
276
267
  }
277
268
  /**
278
269
  * Delete a history shadow for an agent.
@@ -280,10 +271,10 @@ export async function shadowExists(teamRoot, agentName) {
280
271
  * @param teamRoot - Path to team root directory
281
272
  * @param agentName - Name of the agent
282
273
  */
283
- export async function deleteHistoryShadow(teamRoot, agentName) {
274
+ export async function deleteHistoryShadow(teamRoot, agentName, storage = new FSStorageProvider()) {
284
275
  try {
285
276
  const shadowPath = path.join(teamRoot, '.squad', 'agents', agentName, 'history.md');
286
- await fs.unlink(shadowPath);
277
+ await storage.delete(shadowPath);
287
278
  }
288
279
  catch (error) {
289
280
  throw new ConfigurationError(`Failed to delete history shadow for agent '${agentName}': ${error instanceof Error ? error.message : String(error)}`, {
@@ -1 +1 @@
1
- {"version":3,"file":"history-shadow.js","sourceRoot":"","sources":["../../src/agents/history-shadow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"history-shadow.js","sourceRoot":"","sources":["../../src/agents/history-shadow.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@
5
5
  * Compiles charter.md files into SDK CustomAgentConfig objects.
6
6
  * Injects dynamic context via session hooks instead of string templates.
7
7
  */
8
+ import type { StorageProvider } from '../storage/storage-provider.js';
9
+ import type { SquadState } from '../state/squad-state.js';
8
10
  import { EventBus } from '../client/event-bus.js';
9
11
  export { compileCharter, compileCharterFull, parseCharterMarkdown, type CharterCompileOptions, type CharterConfigOverrides, type ParsedCharter, type CompiledCharter, } from './charter-compiler.js';
10
12
  export { resolveModel, inferTierFromModel, isTierFallbackAllowed, ModelFallbackExecutor, type ModelResolutionOptions, type ResolvedModel, type TaskType, type ModelTier, type ModelResolutionSource, type FallbackExecutorConfig, type FallbackAttempt, type FallbackResult, } from './model-selector.js';
@@ -43,14 +45,23 @@ export interface AgentSessionInfo {
43
45
  responseMode: 'lightweight' | 'standard' | 'full';
44
46
  }
45
47
  export declare class CharterCompiler {
48
+ private storage;
49
+ private state?;
50
+ constructor(storage?: StorageProvider, state?: SquadState);
46
51
  /**
47
52
  * Load and compile a charter.md file into an AgentCharter.
48
53
  * Parses identity/model sections from markdown.
49
54
  */
50
55
  compile(charterPath: string): Promise<AgentCharter>;
56
+ /**
57
+ * Compile a charter from an agent name using SquadState.
58
+ * Reads the charter via the typed agents collection.
59
+ */
60
+ compileByName(agentName: string): Promise<AgentCharter>;
51
61
  /**
52
62
  * Load all charters from the team directory.
53
- * Scans .squad/agents/{name}/charter.md, skipping scribe and _alumni.
63
+ * When SquadState is available, uses the typed agents collection.
64
+ * Otherwise scans .squad/agents/{name}/charter.md, skipping scribe and _alumni.
54
65
  */
55
66
  compileAll(teamRoot: string): Promise<AgentCharter[]>;
56
67
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,8 @@
5
5
  * Compiles charter.md files into SDK CustomAgentConfig objects.
6
6
  * Injects dynamic context via session hooks instead of string templates.
7
7
  */
8
- import { readFile, readdir } from 'node:fs/promises';
9
8
  import { join, dirname, basename } from 'node:path';
9
+ import { FSStorageProvider } from '../storage/fs-storage-provider.js';
10
10
  import { randomUUID } from 'node:crypto';
11
11
  import { parseCharterMarkdown } from './charter-compiler.js';
12
12
  import { trace, SpanStatusCode } from '../runtime/otel-api.js';
@@ -26,12 +26,21 @@ export { onboardAgent, addAgentToConfig, } from './onboarding.js';
26
26
  export { resolvePersonalAgents, mergeSessionCast, } from './personal.js';
27
27
  // --- Charter Compiler ---
28
28
  export class CharterCompiler {
29
+ storage;
30
+ state;
31
+ constructor(storage = new FSStorageProvider(), state) {
32
+ this.storage = storage;
33
+ this.state = state;
34
+ }
29
35
  /**
30
36
  * Load and compile a charter.md file into an AgentCharter.
31
37
  * Parses identity/model sections from markdown.
32
38
  */
33
39
  async compile(charterPath) {
34
- const content = await readFile(charterPath, 'utf-8');
40
+ const content = await this.storage.read(charterPath);
41
+ if (content === undefined) {
42
+ throw new Error(`Charter file not found: ${charterPath}`);
43
+ }
35
44
  const parsed = parseCharterMarkdown(content);
36
45
  const name = parsed.identity.name ?? basename(dirname(charterPath));
37
46
  const role = parsed.identity.role ?? '';
@@ -48,20 +57,64 @@ export class CharterCompiler {
48
57
  modelPreference: parsed.modelPreference,
49
58
  };
50
59
  }
60
+ /**
61
+ * Compile a charter from an agent name using SquadState.
62
+ * Reads the charter via the typed agents collection.
63
+ */
64
+ async compileByName(agentName) {
65
+ if (!this.state) {
66
+ throw new Error('compileByName requires SquadState — pass state to CharterCompiler constructor');
67
+ }
68
+ const content = await this.state.agents.get(agentName).charter();
69
+ const parsed = parseCharterMarkdown(content);
70
+ const name = parsed.identity.name ?? agentName;
71
+ const role = parsed.identity.role ?? '';
72
+ const expertise = parsed.identity.expertise ?? [];
73
+ const style = parsed.identity.style ?? '';
74
+ const displayName = `${name} — ${role}`;
75
+ return {
76
+ name: name.toLowerCase(),
77
+ displayName,
78
+ role,
79
+ expertise,
80
+ style,
81
+ prompt: content,
82
+ modelPreference: parsed.modelPreference,
83
+ };
84
+ }
51
85
  /**
52
86
  * Load all charters from the team directory.
53
- * Scans .squad/agents/{name}/charter.md, skipping scribe and _alumni.
87
+ * When SquadState is available, uses the typed agents collection.
88
+ * Otherwise scans .squad/agents/{name}/charter.md, skipping scribe and _alumni.
54
89
  */
55
90
  async compileAll(teamRoot) {
91
+ // Use SquadState agents collection when available
92
+ if (this.state) {
93
+ const names = await this.state.agents.list();
94
+ const charters = [];
95
+ for (const name of names) {
96
+ if (name === 'scribe' || name.startsWith('_'))
97
+ continue;
98
+ try {
99
+ charters.push(await this.compileByName(name));
100
+ }
101
+ catch {
102
+ // Skip agents without a valid charter.md
103
+ }
104
+ }
105
+ return charters;
106
+ }
107
+ // Fallback: raw StorageProvider scan
56
108
  const agentsDir = join(teamRoot, '.squad', 'agents');
57
- const entries = await readdir(agentsDir, { withFileTypes: true });
109
+ if (!await this.storage.exists(agentsDir)) {
110
+ throw new Error(`Agents directory not found: ${agentsDir}`);
111
+ }
112
+ const entries = await this.storage.list(agentsDir);
58
113
  const charters = [];
59
- for (const entry of entries) {
60
- if (!entry.isDirectory())
61
- continue;
62
- if (entry.name === 'scribe' || entry.name.startsWith('_'))
114
+ for (const name of entries) {
115
+ if (name === 'scribe' || name.startsWith('_'))
63
116
  continue;
64
- const charterPath = join(agentsDir, entry.name, 'charter.md');
117
+ const charterPath = join(agentsDir, name, 'charter.md');
65
118
  try {
66
119
  charters.push(await this.compile(charterPath));
67
120
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@
8
8
  */
9
9
  import { SquadClientWithPool } from '../client/index.js';
10
10
  import { type TaskType } from './model-selector.js';
11
+ import type { StorageProvider } from '../storage/storage-provider.js';
11
12
  /**
12
13
  * Agent handle status.
13
14
  */
@@ -69,6 +70,8 @@ export interface LifecycleManagerConfig {
69
70
  client: SquadClientWithPool;
70
71
  /** Path to team root directory */
71
72
  teamRoot: string;
73
+ /** Storage provider for file I/O (default: FSStorageProvider) */
74
+ storage?: StorageProvider;
72
75
  /** Default idle timeout (default: 5 minutes) */
73
76
  defaultIdleTimeout?: number;
74
77
  }
@@ -81,6 +84,7 @@ export interface LifecycleManagerConfig {
81
84
  export declare class AgentLifecycleManager {
82
85
  private client;
83
86
  private teamRoot;
87
+ private storage;
84
88
  private defaultIdleTimeout;
85
89
  private agents;
86
90
  private idleCheckTimer;
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/agents/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,EAA6C,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAS/F;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;AAEjF;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,uCAAuC;IACvC,SAAS,EAAE,IAAI,CAAC;IAChB,iDAAiD;IACjD,cAAc,EAAE,IAAI,CAAC;IAErB;;;OAGG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3C;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAElB,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IAEb,oCAAoC;IACpC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,4BAA4B;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,4BAA4B;IAC5B,MAAM,EAAE,mBAAmB,CAAC;IAE5B,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IAEjB,gDAAgD;IAChD,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;GAKG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,MAAM,CAA2C;IACzD,OAAO,CAAC,cAAc,CAA+B;gBAEzC,MAAM,EAAE,sBAAsB;IAS1C;;;;;;;;;;;;;OAaG;IACG,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IAyGlE;;;;;OAKG;IACG,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBtD;;;;OAIG;IACH,UAAU,IAAI,WAAW,EAAE;IAM3B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIpD;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB/B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAcxB;;;OAGG;IACH,OAAO,CAAC,sBAAsB;CAI/B"}
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/agents/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,EAA6C,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAI/F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAMtE;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;AAEjF;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,uCAAuC;IACvC,SAAS,EAAE,IAAI,CAAC;IAChB,iDAAiD;IACjD,cAAc,EAAE,IAAI,CAAC;IAErB;;;OAGG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3C;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAElB,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IAEb,oCAAoC;IACpC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,4BAA4B;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,4BAA4B;IAC5B,MAAM,EAAE,mBAAmB,CAAC;IAE5B,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IAEjB,iEAAiE;IACjE,OAAO,CAAC,EAAE,eAAe,CAAC;IAE1B,gDAAgD;IAChD,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;GAKG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,MAAM,CAA2C;IACzD,OAAO,CAAC,cAAc,CAA+B;gBAEzC,MAAM,EAAE,sBAAsB;IAU1C;;;;;;;;;;;;;OAaG;IACG,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IAsGlE;;;;;OAKG;IACG,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBtD;;;;OAIG;IACH,UAAU,IAAI,WAAW,EAAE;IAM3B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIpD;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB/B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAcxB;;;OAGG;IACH,OAAO,CAAC,sBAAsB;CAI/B"}
@@ -9,8 +9,8 @@
9
9
  import { compileCharter } from './charter-compiler.js';
10
10
  import { resolveModel } from './model-selector.js';
11
11
  import { ConfigurationError, SessionLifecycleError } from '../adapter/errors.js';
12
- import * as fs from 'fs/promises';
13
12
  import * as path from 'path';
13
+ import { FSStorageProvider } from '../storage/fs-storage-provider.js';
14
14
  import { trace, SpanStatusCode } from '../runtime/otel-api.js';
15
15
  import { recordAgentSpawn, recordAgentDestroy, recordAgentError } from '../runtime/otel-metrics.js';
16
16
  const tracer = trace.getTracer('squad-sdk');
@@ -23,12 +23,14 @@ const tracer = trace.getTracer('squad-sdk');
23
23
  export class AgentLifecycleManager {
24
24
  client;
25
25
  teamRoot;
26
+ storage;
26
27
  defaultIdleTimeout;
27
28
  agents = new Map();
28
29
  idleCheckTimer = null;
29
30
  constructor(config) {
30
31
  this.client = config.client;
31
32
  this.teamRoot = config.teamRoot;
33
+ this.storage = config.storage ?? new FSStorageProvider();
32
34
  this.defaultIdleTimeout = config.defaultIdleTimeout ?? 300_000; // 5 minutes
33
35
  // Start idle timeout checker
34
36
  this.startIdleChecker();
@@ -55,17 +57,14 @@ export class AgentLifecycleManager {
55
57
  try {
56
58
  // Step 1: Read charter.md
57
59
  const charterPath = path.join(this.teamRoot, '.ai-team', 'agents', agentName, 'charter.md');
58
- let charterContent;
59
- try {
60
- charterContent = await fs.readFile(charterPath, 'utf-8');
61
- }
62
- catch (error) {
60
+ const charterContent = await this.storage.read(charterPath);
61
+ if (charterContent === undefined) {
63
62
  throw new ConfigurationError(`Charter not found for agent '${agentName}' at ${charterPath}`, {
64
63
  agentName,
65
64
  operation: 'spawnAgent',
66
65
  timestamp: new Date(),
67
66
  metadata: { charterPath },
68
- }, error instanceof Error ? error : undefined);
67
+ });
69
68
  }
70
69
  // Step 2: Compile charter
71
70
  const compileOptions = {