@bradygaster/squad-sdk 0.7.0 → 0.8.2-1.4

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 (443) hide show
  1. package/README.md +3 -3
  2. package/dist/adapter/client.d.ts +246 -0
  3. package/dist/adapter/client.d.ts.map +1 -0
  4. package/dist/adapter/client.js +699 -0
  5. package/dist/adapter/client.js.map +1 -0
  6. package/dist/adapter/errors.d.ts +260 -0
  7. package/dist/adapter/errors.d.ts.map +1 -0
  8. package/dist/adapter/errors.js +362 -0
  9. package/dist/adapter/errors.js.map +1 -0
  10. package/dist/adapter/types.d.ts +817 -0
  11. package/dist/adapter/types.d.ts.map +1 -0
  12. package/dist/adapter/types.js +11 -0
  13. package/dist/adapter/types.js.map +1 -0
  14. package/dist/agents/charter-compiler.d.ts +106 -0
  15. package/dist/agents/charter-compiler.d.ts.map +1 -0
  16. package/dist/agents/charter-compiler.js +165 -0
  17. package/dist/agents/charter-compiler.js.map +1 -0
  18. package/dist/agents/history-shadow.d.ts +80 -0
  19. package/dist/agents/history-shadow.d.ts.map +1 -0
  20. package/dist/agents/history-shadow.js +239 -0
  21. package/dist/agents/history-shadow.js.map +1 -0
  22. package/dist/agents/index.d.ts +71 -0
  23. package/dist/agents/index.d.ts.map +1 -0
  24. package/dist/agents/index.js +183 -0
  25. package/dist/agents/index.js.map +1 -0
  26. package/dist/agents/lifecycle.d.ts +138 -0
  27. package/dist/agents/lifecycle.d.ts.map +1 -0
  28. package/dist/agents/lifecycle.js +284 -0
  29. package/dist/agents/lifecycle.js.map +1 -0
  30. package/dist/agents/model-selector.d.ts +80 -0
  31. package/dist/agents/model-selector.d.ts.map +1 -0
  32. package/dist/agents/model-selector.js +171 -0
  33. package/dist/agents/model-selector.js.map +1 -0
  34. package/dist/agents/onboarding.d.ts +65 -0
  35. package/dist/agents/onboarding.d.ts.map +1 -0
  36. package/dist/agents/onboarding.js +373 -0
  37. package/dist/agents/onboarding.js.map +1 -0
  38. package/dist/build/bundle.d.ts +32 -0
  39. package/dist/build/bundle.d.ts.map +1 -0
  40. package/dist/build/bundle.js +97 -0
  41. package/dist/build/bundle.js.map +1 -0
  42. package/dist/build/ci-pipeline.d.ts +51 -0
  43. package/dist/build/ci-pipeline.d.ts.map +1 -0
  44. package/dist/build/ci-pipeline.js +180 -0
  45. package/dist/build/ci-pipeline.js.map +1 -0
  46. package/dist/build/github-dist.d.ts +37 -0
  47. package/dist/build/github-dist.d.ts.map +1 -0
  48. package/dist/build/github-dist.js +117 -0
  49. package/dist/build/github-dist.js.map +1 -0
  50. package/dist/build/index.d.ts +11 -0
  51. package/dist/build/index.d.ts.map +1 -0
  52. package/dist/build/index.js +11 -0
  53. package/dist/build/index.js.map +1 -0
  54. package/dist/build/install-migration.d.ts +28 -0
  55. package/dist/build/install-migration.d.ts.map +1 -0
  56. package/dist/build/install-migration.js +103 -0
  57. package/dist/build/install-migration.js.map +1 -0
  58. package/dist/build/npm-package.d.ts +54 -0
  59. package/dist/build/npm-package.d.ts.map +1 -0
  60. package/dist/build/npm-package.js +128 -0
  61. package/dist/build/npm-package.js.map +1 -0
  62. package/dist/build/release.d.ts +108 -0
  63. package/dist/build/release.d.ts.map +1 -0
  64. package/dist/build/release.js +295 -0
  65. package/dist/build/release.js.map +1 -0
  66. package/dist/build/versioning.d.ts +38 -0
  67. package/dist/build/versioning.d.ts.map +1 -0
  68. package/dist/build/versioning.js +113 -0
  69. package/dist/build/versioning.js.map +1 -0
  70. package/dist/builders/index.d.ts +156 -0
  71. package/dist/builders/index.d.ts.map +1 -0
  72. package/dist/builders/index.js +404 -0
  73. package/dist/builders/index.js.map +1 -0
  74. package/dist/builders/types.d.ts +187 -0
  75. package/dist/builders/types.d.ts.map +1 -0
  76. package/dist/builders/types.js +12 -0
  77. package/dist/builders/types.js.map +1 -0
  78. package/dist/casting/casting-engine.d.ts +60 -0
  79. package/dist/casting/casting-engine.d.ts.map +1 -0
  80. package/dist/casting/casting-engine.js +223 -0
  81. package/dist/casting/casting-engine.js.map +1 -0
  82. package/dist/casting/casting-history.d.ts +54 -0
  83. package/dist/casting/casting-history.d.ts.map +1 -0
  84. package/dist/casting/casting-history.js +63 -0
  85. package/dist/casting/casting-history.js.map +1 -0
  86. package/dist/casting/index.d.ts +46 -0
  87. package/dist/casting/index.d.ts.map +1 -0
  88. package/dist/casting/index.js +45 -0
  89. package/dist/casting/index.js.map +1 -0
  90. package/dist/client/event-bus.d.ts +29 -0
  91. package/dist/client/event-bus.d.ts.map +1 -0
  92. package/dist/client/event-bus.js +52 -0
  93. package/dist/client/event-bus.js.map +1 -0
  94. package/dist/client/index.d.ts +103 -0
  95. package/dist/client/index.d.ts.map +1 -0
  96. package/dist/client/index.js +182 -0
  97. package/dist/client/index.js.map +1 -0
  98. package/dist/client/session-pool.d.ts +66 -0
  99. package/dist/client/session-pool.d.ts.map +1 -0
  100. package/dist/client/session-pool.js +145 -0
  101. package/dist/client/session-pool.js.map +1 -0
  102. package/dist/config/agent-doc.d.ts +43 -0
  103. package/dist/config/agent-doc.d.ts.map +1 -0
  104. package/dist/config/agent-doc.js +158 -0
  105. package/dist/config/agent-doc.js.map +1 -0
  106. package/dist/config/agent-source.d.ts +95 -0
  107. package/dist/config/agent-source.d.ts.map +1 -0
  108. package/dist/config/agent-source.js +274 -0
  109. package/dist/config/agent-source.js.map +1 -0
  110. package/dist/config/doc-sync.d.ts +66 -0
  111. package/dist/config/doc-sync.d.ts.map +1 -0
  112. package/dist/config/doc-sync.js +270 -0
  113. package/dist/config/doc-sync.js.map +1 -0
  114. package/dist/config/feature-audit.d.ts +49 -0
  115. package/dist/config/feature-audit.d.ts.map +1 -0
  116. package/dist/config/feature-audit.js +148 -0
  117. package/dist/config/feature-audit.js.map +1 -0
  118. package/dist/config/index.d.ts +15 -0
  119. package/dist/config/index.d.ts.map +1 -0
  120. package/dist/config/index.js +15 -0
  121. package/dist/config/index.js.map +1 -0
  122. package/dist/config/init.d.ts +86 -0
  123. package/dist/config/init.d.ts.map +1 -0
  124. package/dist/config/init.js +807 -0
  125. package/dist/config/init.js.map +1 -0
  126. package/dist/config/legacy-fallback.d.ts +83 -0
  127. package/dist/config/legacy-fallback.d.ts.map +1 -0
  128. package/dist/config/legacy-fallback.js +212 -0
  129. package/dist/config/legacy-fallback.js.map +1 -0
  130. package/dist/config/markdown-migration.d.ts +157 -0
  131. package/dist/config/markdown-migration.d.ts.map +1 -0
  132. package/dist/config/markdown-migration.js +434 -0
  133. package/dist/config/markdown-migration.js.map +1 -0
  134. package/dist/config/migration.d.ts +123 -0
  135. package/dist/config/migration.d.ts.map +1 -0
  136. package/dist/config/migration.js +273 -0
  137. package/dist/config/migration.js.map +1 -0
  138. package/dist/config/migrations/index.d.ts +36 -0
  139. package/dist/config/migrations/index.d.ts.map +1 -0
  140. package/dist/config/migrations/index.js +216 -0
  141. package/dist/config/migrations/index.js.map +1 -0
  142. package/dist/config/models.d.ts +134 -0
  143. package/dist/config/models.d.ts.map +1 -0
  144. package/dist/config/models.js +354 -0
  145. package/dist/config/models.js.map +1 -0
  146. package/dist/config/routing.d.ts +118 -0
  147. package/dist/config/routing.d.ts.map +1 -0
  148. package/dist/config/routing.js +247 -0
  149. package/dist/config/routing.js.map +1 -0
  150. package/dist/config/schema.d.ts +72 -0
  151. package/dist/config/schema.d.ts.map +1 -0
  152. package/dist/config/schema.js +63 -0
  153. package/dist/config/schema.js.map +1 -0
  154. package/dist/coordinator/coordinator.d.ts +82 -0
  155. package/dist/coordinator/coordinator.d.ts.map +1 -0
  156. package/dist/coordinator/coordinator.js +192 -0
  157. package/dist/coordinator/coordinator.js.map +1 -0
  158. package/dist/coordinator/direct-response.d.ts +83 -0
  159. package/dist/coordinator/direct-response.d.ts.map +1 -0
  160. package/dist/coordinator/direct-response.js +187 -0
  161. package/dist/coordinator/direct-response.js.map +1 -0
  162. package/dist/coordinator/fan-out.d.ts +83 -0
  163. package/dist/coordinator/fan-out.d.ts.map +1 -0
  164. package/dist/coordinator/fan-out.js +161 -0
  165. package/dist/coordinator/fan-out.js.map +1 -0
  166. package/dist/coordinator/index.d.ts +62 -0
  167. package/dist/coordinator/index.d.ts.map +1 -0
  168. package/dist/coordinator/index.js +177 -0
  169. package/dist/coordinator/index.js.map +1 -0
  170. package/dist/coordinator/response-tiers.d.ts +49 -0
  171. package/dist/coordinator/response-tiers.d.ts.map +1 -0
  172. package/dist/coordinator/response-tiers.js +149 -0
  173. package/dist/coordinator/response-tiers.js.map +1 -0
  174. package/dist/hooks/index.d.ts +103 -0
  175. package/dist/hooks/index.d.ts.map +1 -0
  176. package/dist/hooks/index.js +279 -0
  177. package/dist/hooks/index.js.map +1 -0
  178. package/dist/index.d.ts +37 -1
  179. package/dist/index.d.ts.map +1 -1
  180. package/dist/index.js +37 -3
  181. package/dist/index.js.map +1 -1
  182. package/dist/marketplace/backend.d.ts +35 -0
  183. package/dist/marketplace/backend.d.ts.map +1 -0
  184. package/dist/marketplace/backend.js +99 -0
  185. package/dist/marketplace/backend.js.map +1 -0
  186. package/dist/marketplace/browser.d.ts +33 -0
  187. package/dist/marketplace/browser.d.ts.map +1 -0
  188. package/dist/marketplace/browser.js +97 -0
  189. package/dist/marketplace/browser.js.map +1 -0
  190. package/dist/marketplace/extension-adapter.d.ts +51 -0
  191. package/dist/marketplace/extension-adapter.d.ts.map +1 -0
  192. package/dist/marketplace/extension-adapter.js +81 -0
  193. package/dist/marketplace/extension-adapter.js.map +1 -0
  194. package/dist/marketplace/index.d.ts +51 -0
  195. package/dist/marketplace/index.d.ts.map +1 -0
  196. package/dist/marketplace/index.js +108 -0
  197. package/dist/marketplace/index.js.map +1 -0
  198. package/dist/marketplace/packaging.d.ts +25 -0
  199. package/dist/marketplace/packaging.d.ts.map +1 -0
  200. package/dist/marketplace/packaging.js +117 -0
  201. package/dist/marketplace/packaging.js.map +1 -0
  202. package/dist/marketplace/schema.d.ts +50 -0
  203. package/dist/marketplace/schema.d.ts.map +1 -0
  204. package/dist/marketplace/schema.js +120 -0
  205. package/dist/marketplace/schema.js.map +1 -0
  206. package/dist/marketplace/security.d.ts +26 -0
  207. package/dist/marketplace/security.d.ts.map +1 -0
  208. package/dist/marketplace/security.js +199 -0
  209. package/dist/marketplace/security.js.map +1 -0
  210. package/dist/multi-squad.d.ts +89 -0
  211. package/dist/multi-squad.d.ts.map +1 -0
  212. package/dist/multi-squad.js +233 -0
  213. package/dist/multi-squad.js.map +1 -0
  214. package/dist/parsers.d.ts +15 -0
  215. package/dist/parsers.d.ts.map +1 -0
  216. package/dist/parsers.js +15 -0
  217. package/dist/parsers.js.map +1 -0
  218. package/dist/ralph/index.d.ts +58 -0
  219. package/dist/ralph/index.d.ts.map +1 -0
  220. package/dist/ralph/index.js +128 -0
  221. package/dist/ralph/index.js.map +1 -0
  222. package/dist/ralph/triage.d.ts +48 -0
  223. package/dist/ralph/triage.d.ts.map +1 -0
  224. package/dist/ralph/triage.js +310 -0
  225. package/dist/ralph/triage.js.map +1 -0
  226. package/dist/remote/bridge.d.ts +79 -0
  227. package/dist/remote/bridge.d.ts.map +1 -0
  228. package/dist/remote/bridge.js +583 -0
  229. package/dist/remote/bridge.js.map +1 -0
  230. package/dist/remote/index.d.ts +7 -0
  231. package/dist/remote/index.d.ts.map +1 -0
  232. package/dist/remote/index.js +6 -0
  233. package/dist/remote/index.js.map +1 -0
  234. package/dist/remote/protocol.d.ts +130 -0
  235. package/dist/remote/protocol.d.ts.map +1 -0
  236. package/dist/remote/protocol.js +25 -0
  237. package/dist/remote/protocol.js.map +1 -0
  238. package/dist/remote/types.d.ts +34 -0
  239. package/dist/remote/types.d.ts.map +1 -0
  240. package/dist/remote/types.js +5 -0
  241. package/dist/remote/types.js.map +1 -0
  242. package/dist/resolution.d.ts +119 -0
  243. package/dist/resolution.d.ts.map +1 -0
  244. package/dist/resolution.js +259 -0
  245. package/dist/resolution.js.map +1 -0
  246. package/dist/runtime/benchmarks.d.ts +121 -0
  247. package/dist/runtime/benchmarks.d.ts.map +1 -0
  248. package/dist/runtime/benchmarks.js +251 -0
  249. package/dist/runtime/benchmarks.js.map +1 -0
  250. package/dist/runtime/config.d.ts +314 -0
  251. package/dist/runtime/config.d.ts.map +1 -0
  252. package/dist/runtime/config.js +467 -0
  253. package/dist/runtime/config.js.map +1 -0
  254. package/dist/runtime/constants.d.ts +37 -0
  255. package/dist/runtime/constants.d.ts.map +1 -0
  256. package/dist/runtime/constants.js +60 -0
  257. package/dist/runtime/constants.js.map +1 -0
  258. package/dist/runtime/cost-tracker.d.ts +73 -0
  259. package/dist/runtime/cost-tracker.d.ts.map +1 -0
  260. package/dist/runtime/cost-tracker.js +157 -0
  261. package/dist/runtime/cost-tracker.js.map +1 -0
  262. package/dist/runtime/event-bus-ws-bridge.d.ts +35 -0
  263. package/dist/runtime/event-bus-ws-bridge.d.ts.map +1 -0
  264. package/dist/runtime/event-bus-ws-bridge.js +55 -0
  265. package/dist/runtime/event-bus-ws-bridge.js.map +1 -0
  266. package/dist/runtime/event-bus.d.ts +190 -0
  267. package/dist/runtime/event-bus.d.ts.map +1 -0
  268. package/dist/runtime/event-bus.js +218 -0
  269. package/dist/runtime/event-bus.js.map +1 -0
  270. package/dist/runtime/event-payloads.d.ts +108 -0
  271. package/dist/runtime/event-payloads.d.ts.map +1 -0
  272. package/dist/runtime/event-payloads.js +28 -0
  273. package/dist/runtime/event-payloads.js.map +1 -0
  274. package/dist/runtime/health.d.ts +66 -0
  275. package/dist/runtime/health.d.ts.map +1 -0
  276. package/dist/runtime/health.js +112 -0
  277. package/dist/runtime/health.js.map +1 -0
  278. package/dist/runtime/i18n.d.ts +54 -0
  279. package/dist/runtime/i18n.d.ts.map +1 -0
  280. package/dist/runtime/i18n.js +126 -0
  281. package/dist/runtime/i18n.js.map +1 -0
  282. package/dist/runtime/offline.d.ts +64 -0
  283. package/dist/runtime/offline.d.ts.map +1 -0
  284. package/dist/runtime/offline.js +108 -0
  285. package/dist/runtime/offline.js.map +1 -0
  286. package/dist/runtime/otel-api.d.ts +38 -0
  287. package/dist/runtime/otel-api.d.ts.map +1 -0
  288. package/dist/runtime/otel-api.js +94 -0
  289. package/dist/runtime/otel-api.js.map +1 -0
  290. package/dist/runtime/otel-bridge.d.ts +52 -0
  291. package/dist/runtime/otel-bridge.d.ts.map +1 -0
  292. package/dist/runtime/otel-bridge.js +132 -0
  293. package/dist/runtime/otel-bridge.js.map +1 -0
  294. package/dist/runtime/otel-init.d.ts +84 -0
  295. package/dist/runtime/otel-init.d.ts.map +1 -0
  296. package/dist/runtime/otel-init.js +86 -0
  297. package/dist/runtime/otel-init.js.map +1 -0
  298. package/dist/runtime/otel-metrics.d.ts +42 -0
  299. package/dist/runtime/otel-metrics.d.ts.map +1 -0
  300. package/dist/runtime/otel-metrics.js +196 -0
  301. package/dist/runtime/otel-metrics.js.map +1 -0
  302. package/dist/runtime/otel.d.ts +55 -0
  303. package/dist/runtime/otel.d.ts.map +1 -0
  304. package/dist/runtime/otel.js +165 -0
  305. package/dist/runtime/otel.js.map +1 -0
  306. package/dist/runtime/squad-observer.d.ts +75 -0
  307. package/dist/runtime/squad-observer.d.ts.map +1 -0
  308. package/dist/runtime/squad-observer.js +190 -0
  309. package/dist/runtime/squad-observer.js.map +1 -0
  310. package/dist/runtime/streaming.d.ts +106 -0
  311. package/dist/runtime/streaming.d.ts.map +1 -0
  312. package/dist/runtime/streaming.js +192 -0
  313. package/dist/runtime/streaming.js.map +1 -0
  314. package/dist/runtime/telemetry.d.ts +82 -0
  315. package/dist/runtime/telemetry.d.ts.map +1 -0
  316. package/dist/runtime/telemetry.js +120 -0
  317. package/dist/runtime/telemetry.js.map +1 -0
  318. package/dist/sharing/agent-repo.d.ts +33 -0
  319. package/dist/sharing/agent-repo.d.ts.map +1 -0
  320. package/dist/sharing/agent-repo.js +79 -0
  321. package/dist/sharing/agent-repo.js.map +1 -0
  322. package/dist/sharing/cache.d.ts +36 -0
  323. package/dist/sharing/cache.d.ts.map +1 -0
  324. package/dist/sharing/cache.js +85 -0
  325. package/dist/sharing/cache.js.map +1 -0
  326. package/dist/sharing/conflicts.d.ts +32 -0
  327. package/dist/sharing/conflicts.d.ts.map +1 -0
  328. package/dist/sharing/conflicts.js +123 -0
  329. package/dist/sharing/conflicts.js.map +1 -0
  330. package/dist/sharing/consult.d.ts +226 -0
  331. package/dist/sharing/consult.d.ts.map +1 -0
  332. package/dist/sharing/consult.js +818 -0
  333. package/dist/sharing/consult.js.map +1 -0
  334. package/dist/sharing/export.d.ts +50 -0
  335. package/dist/sharing/export.d.ts.map +1 -0
  336. package/dist/sharing/export.js +156 -0
  337. package/dist/sharing/export.js.map +1 -0
  338. package/dist/sharing/history-split.d.ts +34 -0
  339. package/dist/sharing/history-split.d.ts.map +1 -0
  340. package/dist/sharing/history-split.js +101 -0
  341. package/dist/sharing/history-split.js.map +1 -0
  342. package/dist/sharing/import.d.ts +37 -0
  343. package/dist/sharing/import.d.ts.map +1 -0
  344. package/dist/sharing/import.js +138 -0
  345. package/dist/sharing/import.js.map +1 -0
  346. package/dist/sharing/index.d.ts +12 -0
  347. package/dist/sharing/index.d.ts.map +1 -0
  348. package/dist/sharing/index.js +12 -0
  349. package/dist/sharing/index.js.map +1 -0
  350. package/dist/sharing/versioning.d.ts +32 -0
  351. package/dist/sharing/versioning.d.ts.map +1 -0
  352. package/dist/sharing/versioning.js +64 -0
  353. package/dist/sharing/versioning.js.map +1 -0
  354. package/dist/skills/index.d.ts +49 -0
  355. package/dist/skills/index.d.ts.map +1 -0
  356. package/dist/skills/index.js +85 -0
  357. package/dist/skills/index.js.map +1 -0
  358. package/dist/skills/skill-loader.d.ts +56 -0
  359. package/dist/skills/skill-loader.d.ts.map +1 -0
  360. package/dist/skills/skill-loader.js +106 -0
  361. package/dist/skills/skill-loader.js.map +1 -0
  362. package/dist/skills/skill-source.d.ts +63 -0
  363. package/dist/skills/skill-source.d.ts.map +1 -0
  364. package/dist/skills/skill-source.js +199 -0
  365. package/dist/skills/skill-source.js.map +1 -0
  366. package/dist/streams/filter.d.ts +33 -0
  367. package/dist/streams/filter.d.ts.map +1 -0
  368. package/dist/streams/filter.js +29 -0
  369. package/dist/streams/filter.js.map +1 -0
  370. package/dist/streams/index.d.ts +9 -0
  371. package/dist/streams/index.d.ts.map +1 -0
  372. package/dist/streams/index.js +9 -0
  373. package/dist/streams/index.js.map +1 -0
  374. package/dist/streams/resolver.d.ts +40 -0
  375. package/dist/streams/resolver.d.ts.map +1 -0
  376. package/dist/streams/resolver.js +162 -0
  377. package/dist/streams/resolver.js.map +1 -0
  378. package/dist/streams/types.d.ts +44 -0
  379. package/dist/streams/types.d.ts.map +1 -0
  380. package/dist/streams/types.js +10 -0
  381. package/dist/streams/types.js.map +1 -0
  382. package/dist/tools/index.d.ts +95 -0
  383. package/dist/tools/index.d.ts.map +1 -0
  384. package/dist/tools/index.js +475 -0
  385. package/dist/tools/index.js.map +1 -0
  386. package/dist/types.d.ts +66 -0
  387. package/dist/types.d.ts.map +1 -0
  388. package/dist/types.js +8 -0
  389. package/dist/types.js.map +1 -0
  390. package/dist/upstream/index.d.ts +8 -0
  391. package/dist/upstream/index.d.ts.map +1 -0
  392. package/dist/upstream/index.js +7 -0
  393. package/dist/upstream/index.js.map +1 -0
  394. package/dist/upstream/resolver.d.ts +37 -0
  395. package/dist/upstream/resolver.d.ts.map +1 -0
  396. package/dist/upstream/resolver.js +234 -0
  397. package/dist/upstream/resolver.js.map +1 -0
  398. package/dist/upstream/types.d.ts +55 -0
  399. package/dist/upstream/types.d.ts.map +1 -0
  400. package/dist/upstream/types.js +11 -0
  401. package/dist/upstream/types.js.map +1 -0
  402. package/dist/utils/normalize-eol.d.ts +6 -0
  403. package/dist/utils/normalize-eol.d.ts.map +1 -0
  404. package/dist/utils/normalize-eol.js +8 -0
  405. package/dist/utils/normalize-eol.js.map +1 -0
  406. package/dist/utils/safe-timestamp.d.ts +6 -0
  407. package/dist/utils/safe-timestamp.d.ts.map +1 -0
  408. package/dist/utils/safe-timestamp.js +8 -0
  409. package/dist/utils/safe-timestamp.js.map +1 -0
  410. package/package.json +151 -6
  411. package/templates/casting-history.json +4 -0
  412. package/templates/casting-policy.json +35 -0
  413. package/templates/casting-registry.json +3 -0
  414. package/templates/ceremonies.md +41 -0
  415. package/templates/charter.md +53 -0
  416. package/templates/constraint-tracking.md +38 -0
  417. package/templates/copilot-instructions.md +46 -0
  418. package/templates/history.md +10 -0
  419. package/templates/identity/now.md +9 -0
  420. package/templates/identity/wisdom.md +15 -0
  421. package/templates/mcp-config.md +98 -0
  422. package/templates/multi-agent-format.md +28 -0
  423. package/templates/orchestration-log.md +27 -0
  424. package/templates/plugin-marketplace.md +49 -0
  425. package/templates/raw-agent-output.md +37 -0
  426. package/templates/roster.md +60 -0
  427. package/templates/routing.md +54 -0
  428. package/templates/run-output.md +50 -0
  429. package/templates/scribe-charter.md +119 -0
  430. package/templates/skill.md +24 -0
  431. package/templates/skills/project-conventions/SKILL.md +56 -0
  432. package/templates/squad.agent.md +1146 -0
  433. package/templates/workflows/squad-ci.yml +24 -0
  434. package/templates/workflows/squad-docs.yml +50 -0
  435. package/templates/workflows/squad-heartbeat.yml +316 -0
  436. package/templates/workflows/squad-insider-release.yml +61 -0
  437. package/templates/workflows/squad-issue-assign.yml +161 -0
  438. package/templates/workflows/squad-label-enforce.yml +181 -0
  439. package/templates/workflows/squad-preview.yml +55 -0
  440. package/templates/workflows/squad-promote.yml +120 -0
  441. package/templates/workflows/squad-release.yml +77 -0
  442. package/templates/workflows/squad-triage.yml +260 -0
  443. package/templates/workflows/sync-squad-labels.yml +169 -0
@@ -0,0 +1,199 @@
1
+ /**
2
+ * Skill Source Interface & Implementations (M5-5, Issue #128)
3
+ *
4
+ * Pluggable skill discovery from local filesystem or GitHub repos.
5
+ */
6
+ import * as fs from 'node:fs';
7
+ import * as path from 'node:path';
8
+ import { parseFrontmatter } from './skill-loader.js';
9
+ // --- Local implementation ---
10
+ export class LocalSkillSource {
11
+ basePath;
12
+ name = 'local';
13
+ type = 'local';
14
+ priority;
15
+ constructor(basePath, priority = 0) {
16
+ this.basePath = basePath;
17
+ this.priority = priority;
18
+ }
19
+ get skillsDir() {
20
+ return path.join(this.basePath, '.squad', 'skills');
21
+ }
22
+ async listSkills() {
23
+ if (!fs.existsSync(this.skillsDir))
24
+ return [];
25
+ let entries;
26
+ try {
27
+ entries = fs.readdirSync(this.skillsDir, { withFileTypes: true });
28
+ }
29
+ catch {
30
+ return [];
31
+ }
32
+ const manifests = [];
33
+ for (const entry of entries) {
34
+ if (!entry.isDirectory())
35
+ continue;
36
+ const skillFile = path.join(this.skillsDir, entry.name, 'SKILL.md');
37
+ if (!fs.existsSync(skillFile))
38
+ continue;
39
+ try {
40
+ const raw = fs.readFileSync(skillFile, 'utf-8');
41
+ const { meta } = parseFrontmatter(raw);
42
+ manifests.push({
43
+ id: entry.name,
44
+ name: typeof meta.name === 'string' ? meta.name : entry.name,
45
+ domain: typeof meta.domain === 'string' ? meta.domain : 'general',
46
+ source: 'local',
47
+ });
48
+ }
49
+ catch {
50
+ // skip malformed
51
+ }
52
+ }
53
+ return manifests;
54
+ }
55
+ async getSkill(id) {
56
+ const skillFile = path.join(this.skillsDir, id, 'SKILL.md');
57
+ if (!fs.existsSync(skillFile))
58
+ return null;
59
+ try {
60
+ const raw = fs.readFileSync(skillFile, 'utf-8');
61
+ const { meta, body } = parseFrontmatter(raw);
62
+ if (!body)
63
+ return null;
64
+ return {
65
+ id,
66
+ name: typeof meta.name === 'string' ? meta.name : id,
67
+ domain: typeof meta.domain === 'string' ? meta.domain : 'general',
68
+ content: body,
69
+ triggers: Array.isArray(meta.triggers) ? meta.triggers : [],
70
+ agentRoles: Array.isArray(meta.roles) ? meta.roles : [],
71
+ };
72
+ }
73
+ catch {
74
+ return null;
75
+ }
76
+ }
77
+ async getContent(id) {
78
+ const skillFile = path.join(this.skillsDir, id, 'SKILL.md');
79
+ if (!fs.existsSync(skillFile))
80
+ return null;
81
+ try {
82
+ const raw = fs.readFileSync(skillFile, 'utf-8');
83
+ const { body } = parseFrontmatter(raw);
84
+ return body || null;
85
+ }
86
+ catch {
87
+ return null;
88
+ }
89
+ }
90
+ }
91
+ // --- GitHub implementation ---
92
+ export class GitHubSkillSource {
93
+ name = 'github';
94
+ type = 'github';
95
+ priority;
96
+ owner;
97
+ repoName;
98
+ branch;
99
+ pathPrefix;
100
+ fetcher;
101
+ constructor(repo, options) {
102
+ const parts = repo.split('/');
103
+ if (parts.length !== 2 || !parts[0] || !parts[1]) {
104
+ throw new Error(`Invalid repo format "${repo}": expected "owner/repo"`);
105
+ }
106
+ this.owner = parts[0];
107
+ this.repoName = parts[1];
108
+ this.branch = options?.ref;
109
+ this.pathPrefix = options?.pathPrefix ?? '.squad/skills';
110
+ this.fetcher = options?.fetcher ?? {
111
+ async listDirectory() { throw new Error('No GitHubFetcher configured'); },
112
+ async getFileContent() { throw new Error('No GitHubFetcher configured'); },
113
+ };
114
+ this.priority = options?.priority ?? 0;
115
+ }
116
+ async listSkills() {
117
+ const entries = await this.fetcher.listDirectory(this.owner, this.repoName, this.pathPrefix, this.branch);
118
+ const dirs = entries.filter(e => e.type === 'dir');
119
+ const manifests = [];
120
+ for (const dir of dirs) {
121
+ const skillPath = `${this.pathPrefix}/${dir.name}/SKILL.md`;
122
+ const content = await this.fetcher.getFileContent(this.owner, this.repoName, skillPath, this.branch);
123
+ if (!content)
124
+ continue;
125
+ const { meta } = parseFrontmatter(content);
126
+ manifests.push({
127
+ id: dir.name,
128
+ name: typeof meta.name === 'string' ? meta.name : dir.name,
129
+ domain: typeof meta.domain === 'string' ? meta.domain : 'general',
130
+ source: 'github',
131
+ });
132
+ }
133
+ return manifests;
134
+ }
135
+ async getSkill(id) {
136
+ const skillPath = `${this.pathPrefix}/${id}/SKILL.md`;
137
+ const content = await this.fetcher.getFileContent(this.owner, this.repoName, skillPath, this.branch);
138
+ if (!content)
139
+ return null;
140
+ const { meta, body } = parseFrontmatter(content);
141
+ if (!body)
142
+ return null;
143
+ return {
144
+ id,
145
+ name: typeof meta.name === 'string' ? meta.name : id,
146
+ domain: typeof meta.domain === 'string' ? meta.domain : 'general',
147
+ content: body,
148
+ triggers: Array.isArray(meta.triggers) ? meta.triggers : [],
149
+ agentRoles: Array.isArray(meta.roles) ? meta.roles : [],
150
+ };
151
+ }
152
+ async getContent(id) {
153
+ const skillPath = `${this.pathPrefix}/${id}/SKILL.md`;
154
+ const content = await this.fetcher.getFileContent(this.owner, this.repoName, skillPath, this.branch);
155
+ if (!content)
156
+ return null;
157
+ const { body } = parseFrontmatter(content);
158
+ return body || null;
159
+ }
160
+ }
161
+ // --- Registry ---
162
+ export class SkillSourceRegistry {
163
+ sources = new Map();
164
+ register(source) {
165
+ this.sources.set(source.name, source);
166
+ }
167
+ unregister(name) {
168
+ return this.sources.delete(name);
169
+ }
170
+ getSource(name) {
171
+ return this.sources.get(name);
172
+ }
173
+ /** Sources sorted by priority descending (higher priority first). */
174
+ sortedSources() {
175
+ return Array.from(this.sources.values()).sort((a, b) => b.priority - a.priority);
176
+ }
177
+ async listAllSkills() {
178
+ const sorted = this.sortedSources();
179
+ const results = await Promise.all(sorted.map(s => s.listSkills()));
180
+ return results.flat();
181
+ }
182
+ async findSkill(id) {
183
+ for (const source of this.sortedSources()) {
184
+ const skill = await source.getSkill(id);
185
+ if (skill)
186
+ return skill;
187
+ }
188
+ return null;
189
+ }
190
+ async getContent(id) {
191
+ for (const source of this.sortedSources()) {
192
+ const content = await source.getContent(id);
193
+ if (content)
194
+ return content;
195
+ }
196
+ return null;
197
+ }
198
+ }
199
+ //# sourceMappingURL=skill-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-source.js","sourceRoot":"","sources":["../../src/skills/skill-source.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Workstream-Aware Issue Filtering
3
+ *
4
+ * Filters GitHub issues to only those matching a workstream's labelFilter.
5
+ * Intended to scope work to the active workstream during triage.
6
+ *
7
+ * @module streams/filter
8
+ */
9
+ import type { ResolvedWorkstream } from './types.js';
10
+ /** Minimal issue shape for filtering. */
11
+ export interface WorkstreamIssue {
12
+ number: number;
13
+ title: string;
14
+ labels: Array<{
15
+ name: string;
16
+ }>;
17
+ }
18
+ /** @deprecated Use WorkstreamIssue instead */
19
+ export type StreamIssue = WorkstreamIssue;
20
+ /**
21
+ * Filter issues to only those matching the workstream's label filter.
22
+ *
23
+ * Matching is case-insensitive. If the workstream has no labelFilter,
24
+ * all issues are returned (passthrough).
25
+ *
26
+ * @param issues - Array of issues to filter
27
+ * @param workstream - The resolved workstream to filter by
28
+ * @returns Filtered array of issues matching the workstream's label
29
+ */
30
+ export declare function filterIssuesByWorkstream(issues: WorkstreamIssue[], workstream: ResolvedWorkstream): WorkstreamIssue[];
31
+ /** @deprecated Use filterIssuesByWorkstream instead */
32
+ export declare const filterIssuesByStream: typeof filterIssuesByWorkstream;
33
+ //# sourceMappingURL=filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/streams/filter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,yCAAyC;AACzC,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjC;AAED,8CAA8C;AAC9C,MAAM,MAAM,WAAW,GAAG,eAAe,CAAC;AAE1C;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,eAAe,EAAE,EACzB,UAAU,EAAE,kBAAkB,GAC7B,eAAe,EAAE,CAUnB;AAED,uDAAuD;AACvD,eAAO,MAAM,oBAAoB,iCAA2B,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Workstream-Aware Issue Filtering
3
+ *
4
+ * Filters GitHub issues to only those matching a workstream's labelFilter.
5
+ * Intended to scope work to the active workstream during triage.
6
+ *
7
+ * @module streams/filter
8
+ */
9
+ /**
10
+ * Filter issues to only those matching the workstream's label filter.
11
+ *
12
+ * Matching is case-insensitive. If the workstream has no labelFilter,
13
+ * all issues are returned (passthrough).
14
+ *
15
+ * @param issues - Array of issues to filter
16
+ * @param workstream - The resolved workstream to filter by
17
+ * @returns Filtered array of issues matching the workstream's label
18
+ */
19
+ export function filterIssuesByWorkstream(issues, workstream) {
20
+ const filter = workstream.definition.labelFilter;
21
+ if (!filter) {
22
+ return issues;
23
+ }
24
+ const normalizedFilter = filter.toLowerCase();
25
+ return issues.filter(issue => issue.labels.some(label => label.name.toLowerCase() === normalizedFilter));
26
+ }
27
+ /** @deprecated Use filterIssuesByWorkstream instead */
28
+ export const filterIssuesByStream = filterIssuesByWorkstream;
29
+ //# sourceMappingURL=filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/streams/filter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAcH;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAAyB,EACzB,UAA8B;IAE9B,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC;IACjD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAC9C,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC3B,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,gBAAgB,CAAC,CAC1E,CAAC;AACJ,CAAC;AAED,uDAAuD;AACvD,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Workstreams module — barrel exports.
3
+ *
4
+ * @module streams
5
+ */
6
+ export * from './types.js';
7
+ export * from './resolver.js';
8
+ export * from './filter.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/streams/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Workstreams module — barrel exports.
3
+ *
4
+ * @module streams
5
+ */
6
+ export * from './types.js';
7
+ export * from './resolver.js';
8
+ export * from './filter.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/streams/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Workstream Resolver — Resolves which workstream is active.
3
+ *
4
+ * Resolution order:
5
+ * 1. SQUAD_TEAM env var → look up in workstreams config
6
+ * 2. .squad-workstream file (gitignored) → contains workstream name
7
+ * 3. If exactly one workstream is defined in the config, auto-select that workstream
8
+ * 4. null (no active workstream — single-squad mode / no workstreams)
9
+ *
10
+ * @module streams/resolver
11
+ */
12
+ import type { WorkstreamConfig, ResolvedWorkstream } from './types.js';
13
+ /**
14
+ * Load workstreams configuration from .squad/workstreams.json.
15
+ *
16
+ * @param squadRoot - Root directory of the project (where .squad/ lives)
17
+ * @returns Parsed WorkstreamConfig or null if not found / invalid
18
+ */
19
+ export declare function loadWorkstreamsConfig(squadRoot: string): WorkstreamConfig | null;
20
+ /** @deprecated Use loadWorkstreamsConfig instead */
21
+ export declare const loadStreamsConfig: typeof loadWorkstreamsConfig;
22
+ /**
23
+ * Resolve which workstream is active for the current environment.
24
+ *
25
+ * @param squadRoot - Root directory of the project
26
+ * @returns ResolvedWorkstream or null if no workstream is active
27
+ */
28
+ export declare function resolveWorkstream(squadRoot: string): ResolvedWorkstream | null;
29
+ /** @deprecated Use resolveWorkstream instead */
30
+ export declare const resolveStream: typeof resolveWorkstream;
31
+ /**
32
+ * Get the GitHub label filter string for a resolved workstream.
33
+ *
34
+ * @param workstream - The resolved workstream
35
+ * @returns Label filter string (e.g., "team:ui")
36
+ */
37
+ export declare function getWorkstreamLabelFilter(workstream: ResolvedWorkstream): string;
38
+ /** @deprecated Use getWorkstreamLabelFilter instead */
39
+ export declare const getStreamLabelFilter: typeof getWorkstreamLabelFilter;
40
+ //# sourceMappingURL=resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/streams/resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAwB,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE7F;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CA8EhF;AAED,oDAAoD;AACpD,eAAO,MAAM,iBAAiB,8BAAwB,CAAC;AASvD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CA0D9E;AAED,gDAAgD;AAChD,eAAO,MAAM,aAAa,0BAAoB,CAAC;AAE/C;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,kBAAkB,GAAG,MAAM,CAE/E;AAED,uDAAuD;AACvD,eAAO,MAAM,oBAAoB,iCAA2B,CAAC"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Workstream Resolver — Resolves which workstream is active.
3
+ *
4
+ * Resolution order:
5
+ * 1. SQUAD_TEAM env var → look up in workstreams config
6
+ * 2. .squad-workstream file (gitignored) → contains workstream name
7
+ * 3. If exactly one workstream is defined in the config, auto-select that workstream
8
+ * 4. null (no active workstream — single-squad mode / no workstreams)
9
+ *
10
+ * @module streams/resolver
11
+ */
12
+ import { existsSync, readFileSync } from 'fs';
13
+ import { join } from 'path';
14
+ /**
15
+ * Load workstreams configuration from .squad/workstreams.json.
16
+ *
17
+ * @param squadRoot - Root directory of the project (where .squad/ lives)
18
+ * @returns Parsed WorkstreamConfig or null if not found / invalid
19
+ */
20
+ export function loadWorkstreamsConfig(squadRoot) {
21
+ const configPath = join(squadRoot, '.squad', 'workstreams.json');
22
+ if (!existsSync(configPath)) {
23
+ return null;
24
+ }
25
+ try {
26
+ const raw = readFileSync(configPath, 'utf-8');
27
+ const rawConfig = JSON.parse(raw);
28
+ if (!rawConfig || typeof rawConfig !== 'object') {
29
+ return null;
30
+ }
31
+ const configLike = rawConfig;
32
+ // Derive a sane defaultWorkflow value
33
+ const validWorkflows = ['branch-per-issue', 'direct'];
34
+ const rawWorkflow = typeof configLike.defaultWorkflow === 'string' && configLike.defaultWorkflow.trim() !== ''
35
+ ? configLike.defaultWorkflow
36
+ : 'branch-per-issue';
37
+ const defaultWorkflow = validWorkflows.includes(rawWorkflow)
38
+ ? rawWorkflow
39
+ : 'branch-per-issue';
40
+ const workstreamsRaw = configLike.workstreams;
41
+ if (!Array.isArray(workstreamsRaw)) {
42
+ return null;
43
+ }
44
+ const workstreams = workstreamsRaw
45
+ .filter(entry => entry && typeof entry === 'object')
46
+ .map(entry => {
47
+ const e = entry;
48
+ if (typeof e.name !== 'string' || typeof e.labelFilter !== 'string') {
49
+ return null;
50
+ }
51
+ const normalized = {
52
+ name: e.name,
53
+ labelFilter: e.labelFilter,
54
+ };
55
+ if (Array.isArray(e.folderScope) && e.folderScope.every(item => typeof item === 'string')) {
56
+ normalized.folderScope = e.folderScope;
57
+ }
58
+ if (typeof e.workflow === 'string' && e.workflow.trim() !== '') {
59
+ normalized.workflow = e.workflow;
60
+ }
61
+ else {
62
+ normalized.workflow = defaultWorkflow;
63
+ }
64
+ if (typeof e.description === 'string') {
65
+ normalized.description = e.description;
66
+ }
67
+ return normalized;
68
+ })
69
+ .filter((s) => s !== null);
70
+ if (workstreams.length === 0) {
71
+ return null;
72
+ }
73
+ return { defaultWorkflow, workstreams };
74
+ }
75
+ catch {
76
+ return null;
77
+ }
78
+ }
79
+ /** @deprecated Use loadWorkstreamsConfig instead */
80
+ export const loadStreamsConfig = loadWorkstreamsConfig;
81
+ /**
82
+ * Find a workstream definition by name in a config.
83
+ */
84
+ function findWorkstream(config, name) {
85
+ return config.workstreams.find(s => s.name === name);
86
+ }
87
+ /**
88
+ * Resolve which workstream is active for the current environment.
89
+ *
90
+ * @param squadRoot - Root directory of the project
91
+ * @returns ResolvedWorkstream or null if no workstream is active
92
+ */
93
+ export function resolveWorkstream(squadRoot) {
94
+ const config = loadWorkstreamsConfig(squadRoot);
95
+ // 1. SQUAD_TEAM env var
96
+ const envTeam = process.env.SQUAD_TEAM;
97
+ if (envTeam) {
98
+ if (config) {
99
+ const def = findWorkstream(config, envTeam);
100
+ if (def) {
101
+ return { name: envTeam, definition: def, source: 'env' };
102
+ }
103
+ }
104
+ // Env var set but no matching workstream config — synthesize a minimal definition
105
+ return {
106
+ name: envTeam,
107
+ definition: {
108
+ name: envTeam,
109
+ labelFilter: `team:${envTeam}`,
110
+ },
111
+ source: 'env',
112
+ };
113
+ }
114
+ // 2. .squad-workstream file
115
+ const workstreamFilePath = join(squadRoot, '.squad-workstream');
116
+ if (existsSync(workstreamFilePath)) {
117
+ try {
118
+ const workstreamName = readFileSync(workstreamFilePath, 'utf-8').trim();
119
+ if (workstreamName) {
120
+ if (config) {
121
+ const def = findWorkstream(config, workstreamName);
122
+ if (def) {
123
+ return { name: workstreamName, definition: def, source: 'file' };
124
+ }
125
+ }
126
+ // File exists but no config — synthesize
127
+ return {
128
+ name: workstreamName,
129
+ definition: {
130
+ name: workstreamName,
131
+ labelFilter: `team:${workstreamName}`,
132
+ },
133
+ source: 'file',
134
+ };
135
+ }
136
+ }
137
+ catch {
138
+ // Ignore read errors
139
+ }
140
+ }
141
+ // 3. If exactly one workstream is defined, auto-select it
142
+ if (config && config.workstreams.length === 1) {
143
+ const def = config.workstreams[0];
144
+ return { name: def.name, definition: def, source: 'config' };
145
+ }
146
+ // 4. No workstream detected
147
+ return null;
148
+ }
149
+ /** @deprecated Use resolveWorkstream instead */
150
+ export const resolveStream = resolveWorkstream;
151
+ /**
152
+ * Get the GitHub label filter string for a resolved workstream.
153
+ *
154
+ * @param workstream - The resolved workstream
155
+ * @returns Label filter string (e.g., "team:ui")
156
+ */
157
+ export function getWorkstreamLabelFilter(workstream) {
158
+ return workstream.definition.labelFilter;
159
+ }
160
+ /** @deprecated Use getWorkstreamLabelFilter instead */
161
+ export const getStreamLabelFilter = getWorkstreamLabelFilter;
162
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/streams/resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Workstream Types — Type definitions for Squad Workstreams.
3
+ *
4
+ * Workstreams enable horizontal scaling by allowing multiple Squad instances
5
+ * (e.g., in different Codespaces) to each handle a scoped subset of work.
6
+ *
7
+ * @module streams/types
8
+ */
9
+ /** Definition of a single workstream (team partition). */
10
+ export interface WorkstreamDefinition {
11
+ /** Workstream name, e.g., "ui-team", "backend-team" */
12
+ name: string;
13
+ /** GitHub label to filter issues by, e.g., "team:ui" */
14
+ labelFilter: string;
15
+ /** Optional folder restrictions, e.g., ["apps/web"] */
16
+ folderScope?: string[];
17
+ /** Workflow mode. Default: branch-per-issue */
18
+ workflow?: 'branch-per-issue' | 'direct';
19
+ /** Human-readable description of this workstream's purpose */
20
+ description?: string;
21
+ }
22
+ /** @deprecated Use WorkstreamDefinition instead */
23
+ export type StreamDefinition = WorkstreamDefinition;
24
+ /** Top-level workstreams configuration (stored in .squad/workstreams.json). */
25
+ export interface WorkstreamConfig {
26
+ /** All configured workstreams */
27
+ workstreams: WorkstreamDefinition[];
28
+ /** Default workflow for workstreams that don't specify one */
29
+ defaultWorkflow: 'branch-per-issue' | 'direct';
30
+ }
31
+ /** @deprecated Use WorkstreamConfig instead */
32
+ export type StreamConfig = WorkstreamConfig;
33
+ /** A resolved workstream with provenance information. */
34
+ export interface ResolvedWorkstream {
35
+ /** Workstream name */
36
+ name: string;
37
+ /** Full workstream definition */
38
+ definition: WorkstreamDefinition;
39
+ /** How this workstream was resolved */
40
+ source: 'env' | 'file' | 'config';
41
+ }
42
+ /** @deprecated Use ResolvedWorkstream instead */
43
+ export type ResolvedStream = ResolvedWorkstream;
44
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/streams/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,0DAA0D;AAC1D,MAAM,WAAW,oBAAoB;IACnC,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,kBAAkB,GAAG,QAAQ,CAAC;IACzC,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,mDAAmD;AACnD,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAEpD,+EAA+E;AAC/E,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC,8DAA8D;IAC9D,eAAe,EAAE,kBAAkB,GAAG,QAAQ,CAAC;CAChD;AAED,+CAA+C;AAC/C,MAAM,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAE5C,yDAAyD;AACzD,MAAM,WAAW,kBAAkB;IACjC,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,UAAU,EAAE,oBAAoB,CAAC;IACjC,uCAAuC;IACvC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;CACnC;AAED,iDAAiD;AACjD,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Workstream Types — Type definitions for Squad Workstreams.
3
+ *
4
+ * Workstreams enable horizontal scaling by allowing multiple Squad instances
5
+ * (e.g., in different Codespaces) to each handle a scoped subset of work.
6
+ *
7
+ * @module streams/types
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/streams/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}