@bradygaster/squad-sdk 0.7.0 → 0.8.2

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 (354) hide show
  1. package/README.md +296 -296
  2. package/dist/adapter/client.d.ts +243 -0
  3. package/dist/adapter/client.d.ts.map +1 -0
  4. package/dist/adapter/client.js +567 -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 +779 -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 +102 -0
  15. package/dist/agents/charter-compiler.d.ts.map +1 -0
  16. package/dist/agents/charter-compiler.js +157 -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/casting/casting-engine.d.ts +60 -0
  71. package/dist/casting/casting-engine.d.ts.map +1 -0
  72. package/dist/casting/casting-engine.js +223 -0
  73. package/dist/casting/casting-engine.js.map +1 -0
  74. package/dist/casting/casting-history.d.ts +54 -0
  75. package/dist/casting/casting-history.d.ts.map +1 -0
  76. package/dist/casting/casting-history.js +63 -0
  77. package/dist/casting/casting-history.js.map +1 -0
  78. package/dist/casting/index.d.ts +46 -0
  79. package/dist/casting/index.d.ts.map +1 -0
  80. package/dist/casting/index.js +45 -0
  81. package/dist/casting/index.js.map +1 -0
  82. package/dist/client/event-bus.d.ts +29 -0
  83. package/dist/client/event-bus.d.ts.map +1 -0
  84. package/dist/client/event-bus.js +52 -0
  85. package/dist/client/event-bus.js.map +1 -0
  86. package/dist/client/index.d.ts +100 -0
  87. package/dist/client/index.d.ts.map +1 -0
  88. package/dist/client/index.js +170 -0
  89. package/dist/client/index.js.map +1 -0
  90. package/dist/client/session-pool.d.ts +66 -0
  91. package/dist/client/session-pool.d.ts.map +1 -0
  92. package/dist/client/session-pool.js +145 -0
  93. package/dist/client/session-pool.js.map +1 -0
  94. package/dist/config/agent-doc.d.ts +43 -0
  95. package/dist/config/agent-doc.d.ts.map +1 -0
  96. package/dist/config/agent-doc.js +158 -0
  97. package/dist/config/agent-doc.js.map +1 -0
  98. package/dist/config/agent-source.d.ts +95 -0
  99. package/dist/config/agent-source.d.ts.map +1 -0
  100. package/dist/config/agent-source.js +274 -0
  101. package/dist/config/agent-source.js.map +1 -0
  102. package/dist/config/doc-sync.d.ts +66 -0
  103. package/dist/config/doc-sync.d.ts.map +1 -0
  104. package/dist/config/doc-sync.js +270 -0
  105. package/dist/config/doc-sync.js.map +1 -0
  106. package/dist/config/feature-audit.d.ts +49 -0
  107. package/dist/config/feature-audit.d.ts.map +1 -0
  108. package/dist/config/feature-audit.js +148 -0
  109. package/dist/config/feature-audit.js.map +1 -0
  110. package/dist/config/index.d.ts +15 -0
  111. package/dist/config/index.d.ts.map +1 -0
  112. package/dist/config/index.js +15 -0
  113. package/dist/config/index.js.map +1 -0
  114. package/dist/config/init.d.ts +61 -0
  115. package/dist/config/init.d.ts.map +1 -0
  116. package/dist/config/init.js +376 -0
  117. package/dist/config/init.js.map +1 -0
  118. package/dist/config/legacy-fallback.d.ts +83 -0
  119. package/dist/config/legacy-fallback.d.ts.map +1 -0
  120. package/dist/config/legacy-fallback.js +212 -0
  121. package/dist/config/legacy-fallback.js.map +1 -0
  122. package/dist/config/markdown-migration.d.ts +157 -0
  123. package/dist/config/markdown-migration.d.ts.map +1 -0
  124. package/dist/config/markdown-migration.js +434 -0
  125. package/dist/config/markdown-migration.js.map +1 -0
  126. package/dist/config/migration.d.ts +123 -0
  127. package/dist/config/migration.d.ts.map +1 -0
  128. package/dist/config/migration.js +273 -0
  129. package/dist/config/migration.js.map +1 -0
  130. package/dist/config/migrations/index.d.ts +36 -0
  131. package/dist/config/migrations/index.d.ts.map +1 -0
  132. package/dist/config/migrations/index.js +216 -0
  133. package/dist/config/migrations/index.js.map +1 -0
  134. package/dist/config/models.d.ts +134 -0
  135. package/dist/config/models.d.ts.map +1 -0
  136. package/dist/config/models.js +354 -0
  137. package/dist/config/models.js.map +1 -0
  138. package/dist/config/routing.d.ts +118 -0
  139. package/dist/config/routing.d.ts.map +1 -0
  140. package/dist/config/routing.js +247 -0
  141. package/dist/config/routing.js.map +1 -0
  142. package/dist/config/schema.d.ts +72 -0
  143. package/dist/config/schema.d.ts.map +1 -0
  144. package/dist/config/schema.js +63 -0
  145. package/dist/config/schema.js.map +1 -0
  146. package/dist/coordinator/coordinator.d.ts +82 -0
  147. package/dist/coordinator/coordinator.d.ts.map +1 -0
  148. package/dist/coordinator/coordinator.js +192 -0
  149. package/dist/coordinator/coordinator.js.map +1 -0
  150. package/dist/coordinator/direct-response.d.ts +83 -0
  151. package/dist/coordinator/direct-response.d.ts.map +1 -0
  152. package/dist/coordinator/direct-response.js +187 -0
  153. package/dist/coordinator/direct-response.js.map +1 -0
  154. package/dist/coordinator/fan-out.d.ts +83 -0
  155. package/dist/coordinator/fan-out.d.ts.map +1 -0
  156. package/dist/coordinator/fan-out.js +161 -0
  157. package/dist/coordinator/fan-out.js.map +1 -0
  158. package/dist/coordinator/index.d.ts +62 -0
  159. package/dist/coordinator/index.d.ts.map +1 -0
  160. package/dist/coordinator/index.js +171 -0
  161. package/dist/coordinator/index.js.map +1 -0
  162. package/dist/coordinator/response-tiers.d.ts +49 -0
  163. package/dist/coordinator/response-tiers.d.ts.map +1 -0
  164. package/dist/coordinator/response-tiers.js +149 -0
  165. package/dist/coordinator/response-tiers.js.map +1 -0
  166. package/dist/hooks/index.d.ts +103 -0
  167. package/dist/hooks/index.d.ts.map +1 -0
  168. package/dist/hooks/index.js +279 -0
  169. package/dist/hooks/index.js.map +1 -0
  170. package/dist/index.d.ts +33 -1
  171. package/dist/index.d.ts.map +1 -1
  172. package/dist/index.js +33 -3
  173. package/dist/index.js.map +1 -1
  174. package/dist/marketplace/backend.d.ts +35 -0
  175. package/dist/marketplace/backend.d.ts.map +1 -0
  176. package/dist/marketplace/backend.js +99 -0
  177. package/dist/marketplace/backend.js.map +1 -0
  178. package/dist/marketplace/browser.d.ts +33 -0
  179. package/dist/marketplace/browser.d.ts.map +1 -0
  180. package/dist/marketplace/browser.js +97 -0
  181. package/dist/marketplace/browser.js.map +1 -0
  182. package/dist/marketplace/extension-adapter.d.ts +51 -0
  183. package/dist/marketplace/extension-adapter.d.ts.map +1 -0
  184. package/dist/marketplace/extension-adapter.js +81 -0
  185. package/dist/marketplace/extension-adapter.js.map +1 -0
  186. package/dist/marketplace/index.d.ts +51 -0
  187. package/dist/marketplace/index.d.ts.map +1 -0
  188. package/dist/marketplace/index.js +108 -0
  189. package/dist/marketplace/index.js.map +1 -0
  190. package/dist/marketplace/packaging.d.ts +25 -0
  191. package/dist/marketplace/packaging.d.ts.map +1 -0
  192. package/dist/marketplace/packaging.js +117 -0
  193. package/dist/marketplace/packaging.js.map +1 -0
  194. package/dist/marketplace/schema.d.ts +50 -0
  195. package/dist/marketplace/schema.d.ts.map +1 -0
  196. package/dist/marketplace/schema.js +120 -0
  197. package/dist/marketplace/schema.js.map +1 -0
  198. package/dist/marketplace/security.d.ts +26 -0
  199. package/dist/marketplace/security.d.ts.map +1 -0
  200. package/dist/marketplace/security.js +199 -0
  201. package/dist/marketplace/security.js.map +1 -0
  202. package/dist/parsers.d.ts +15 -0
  203. package/dist/parsers.d.ts.map +1 -0
  204. package/dist/parsers.js +15 -0
  205. package/dist/parsers.js.map +1 -0
  206. package/dist/ralph/index.d.ts +58 -0
  207. package/dist/ralph/index.d.ts.map +1 -0
  208. package/dist/ralph/index.js +128 -0
  209. package/dist/ralph/index.js.map +1 -0
  210. package/dist/resolution.d.ts +47 -0
  211. package/dist/resolution.d.ts.map +1 -0
  212. package/dist/resolution.js +106 -0
  213. package/dist/resolution.js.map +1 -0
  214. package/dist/runtime/benchmarks.d.ts +121 -0
  215. package/dist/runtime/benchmarks.d.ts.map +1 -0
  216. package/dist/runtime/benchmarks.js +251 -0
  217. package/dist/runtime/benchmarks.js.map +1 -0
  218. package/dist/runtime/config.d.ts +314 -0
  219. package/dist/runtime/config.d.ts.map +1 -0
  220. package/dist/runtime/config.js +467 -0
  221. package/dist/runtime/config.js.map +1 -0
  222. package/dist/runtime/constants.d.ts +35 -0
  223. package/dist/runtime/constants.d.ts.map +1 -0
  224. package/dist/runtime/constants.js +58 -0
  225. package/dist/runtime/constants.js.map +1 -0
  226. package/dist/runtime/cost-tracker.d.ts +73 -0
  227. package/dist/runtime/cost-tracker.d.ts.map +1 -0
  228. package/dist/runtime/cost-tracker.js +157 -0
  229. package/dist/runtime/cost-tracker.js.map +1 -0
  230. package/dist/runtime/event-bus-otel-bridge.d.ts +19 -0
  231. package/dist/runtime/event-bus-otel-bridge.d.ts.map +1 -0
  232. package/dist/runtime/event-bus-otel-bridge.js +61 -0
  233. package/dist/runtime/event-bus-otel-bridge.js.map +1 -0
  234. package/dist/runtime/event-bus-ws-bridge.d.ts +35 -0
  235. package/dist/runtime/event-bus-ws-bridge.d.ts.map +1 -0
  236. package/dist/runtime/event-bus-ws-bridge.js +55 -0
  237. package/dist/runtime/event-bus-ws-bridge.js.map +1 -0
  238. package/dist/runtime/event-bus.d.ts +190 -0
  239. package/dist/runtime/event-bus.d.ts.map +1 -0
  240. package/dist/runtime/event-bus.js +218 -0
  241. package/dist/runtime/event-bus.js.map +1 -0
  242. package/dist/runtime/event-payloads.d.ts +108 -0
  243. package/dist/runtime/event-payloads.d.ts.map +1 -0
  244. package/dist/runtime/event-payloads.js +28 -0
  245. package/dist/runtime/event-payloads.js.map +1 -0
  246. package/dist/runtime/health.d.ts +66 -0
  247. package/dist/runtime/health.d.ts.map +1 -0
  248. package/dist/runtime/health.js +112 -0
  249. package/dist/runtime/health.js.map +1 -0
  250. package/dist/runtime/i18n.d.ts +54 -0
  251. package/dist/runtime/i18n.d.ts.map +1 -0
  252. package/dist/runtime/i18n.js +126 -0
  253. package/dist/runtime/i18n.js.map +1 -0
  254. package/dist/runtime/offline.d.ts +64 -0
  255. package/dist/runtime/offline.d.ts.map +1 -0
  256. package/dist/runtime/offline.js +108 -0
  257. package/dist/runtime/offline.js.map +1 -0
  258. package/dist/runtime/otel-bridge.d.ts +52 -0
  259. package/dist/runtime/otel-bridge.d.ts.map +1 -0
  260. package/dist/runtime/otel-bridge.js +132 -0
  261. package/dist/runtime/otel-bridge.js.map +1 -0
  262. package/dist/runtime/otel-init.d.ts +72 -0
  263. package/dist/runtime/otel-init.d.ts.map +1 -0
  264. package/dist/runtime/otel-init.js +68 -0
  265. package/dist/runtime/otel-init.js.map +1 -0
  266. package/dist/runtime/otel-metrics.d.ts +42 -0
  267. package/dist/runtime/otel-metrics.d.ts.map +1 -0
  268. package/dist/runtime/otel-metrics.js +196 -0
  269. package/dist/runtime/otel-metrics.js.map +1 -0
  270. package/dist/runtime/otel.d.ts +53 -0
  271. package/dist/runtime/otel.d.ts.map +1 -0
  272. package/dist/runtime/otel.js +127 -0
  273. package/dist/runtime/otel.js.map +1 -0
  274. package/dist/runtime/squad-observer.d.ts +75 -0
  275. package/dist/runtime/squad-observer.d.ts.map +1 -0
  276. package/dist/runtime/squad-observer.js +190 -0
  277. package/dist/runtime/squad-observer.js.map +1 -0
  278. package/dist/runtime/streaming.d.ts +106 -0
  279. package/dist/runtime/streaming.d.ts.map +1 -0
  280. package/dist/runtime/streaming.js +192 -0
  281. package/dist/runtime/streaming.js.map +1 -0
  282. package/dist/runtime/telemetry.d.ts +82 -0
  283. package/dist/runtime/telemetry.d.ts.map +1 -0
  284. package/dist/runtime/telemetry.js +120 -0
  285. package/dist/runtime/telemetry.js.map +1 -0
  286. package/dist/sharing/agent-repo.d.ts +33 -0
  287. package/dist/sharing/agent-repo.d.ts.map +1 -0
  288. package/dist/sharing/agent-repo.js +79 -0
  289. package/dist/sharing/agent-repo.js.map +1 -0
  290. package/dist/sharing/cache.d.ts +36 -0
  291. package/dist/sharing/cache.d.ts.map +1 -0
  292. package/dist/sharing/cache.js +85 -0
  293. package/dist/sharing/cache.js.map +1 -0
  294. package/dist/sharing/conflicts.d.ts +32 -0
  295. package/dist/sharing/conflicts.d.ts.map +1 -0
  296. package/dist/sharing/conflicts.js +121 -0
  297. package/dist/sharing/conflicts.js.map +1 -0
  298. package/dist/sharing/export.d.ts +50 -0
  299. package/dist/sharing/export.d.ts.map +1 -0
  300. package/dist/sharing/export.js +156 -0
  301. package/dist/sharing/export.js.map +1 -0
  302. package/dist/sharing/history-split.d.ts +34 -0
  303. package/dist/sharing/history-split.d.ts.map +1 -0
  304. package/dist/sharing/history-split.js +101 -0
  305. package/dist/sharing/history-split.js.map +1 -0
  306. package/dist/sharing/import.d.ts +37 -0
  307. package/dist/sharing/import.d.ts.map +1 -0
  308. package/dist/sharing/import.js +138 -0
  309. package/dist/sharing/import.js.map +1 -0
  310. package/dist/sharing/index.d.ts +11 -0
  311. package/dist/sharing/index.d.ts.map +1 -0
  312. package/dist/sharing/index.js +11 -0
  313. package/dist/sharing/index.js.map +1 -0
  314. package/dist/sharing/versioning.d.ts +32 -0
  315. package/dist/sharing/versioning.d.ts.map +1 -0
  316. package/dist/sharing/versioning.js +64 -0
  317. package/dist/sharing/versioning.js.map +1 -0
  318. package/dist/skills/index.d.ts +49 -0
  319. package/dist/skills/index.d.ts.map +1 -0
  320. package/dist/skills/index.js +85 -0
  321. package/dist/skills/index.js.map +1 -0
  322. package/dist/skills/skill-loader.d.ts +56 -0
  323. package/dist/skills/skill-loader.d.ts.map +1 -0
  324. package/dist/skills/skill-loader.js +106 -0
  325. package/dist/skills/skill-loader.js.map +1 -0
  326. package/dist/skills/skill-source.d.ts +63 -0
  327. package/dist/skills/skill-source.d.ts.map +1 -0
  328. package/dist/skills/skill-source.js +199 -0
  329. package/dist/skills/skill-source.js.map +1 -0
  330. package/dist/tools/index.d.ts +95 -0
  331. package/dist/tools/index.d.ts.map +1 -0
  332. package/dist/tools/index.js +475 -0
  333. package/dist/tools/index.js.map +1 -0
  334. package/dist/types.d.ts +43 -0
  335. package/dist/types.d.ts.map +1 -0
  336. package/dist/types.js +8 -0
  337. package/dist/types.js.map +1 -0
  338. package/dist/upstream/index.d.ts +8 -0
  339. package/dist/upstream/index.d.ts.map +1 -0
  340. package/dist/upstream/index.js +7 -0
  341. package/dist/upstream/index.js.map +1 -0
  342. package/dist/upstream/resolver.d.ts +37 -0
  343. package/dist/upstream/resolver.d.ts.map +1 -0
  344. package/dist/upstream/resolver.js +234 -0
  345. package/dist/upstream/resolver.js.map +1 -0
  346. package/dist/upstream/types.d.ts +55 -0
  347. package/dist/upstream/types.d.ts.map +1 -0
  348. package/dist/upstream/types.js +11 -0
  349. package/dist/upstream/types.js.map +1 -0
  350. package/dist/utils/normalize-eol.d.ts +6 -0
  351. package/dist/utils/normalize-eol.d.ts.map +1 -0
  352. package/dist/utils/normalize-eol.js +8 -0
  353. package/dist/utils/normalize-eol.js.map +1 -0
  354. package/package.json +197 -63
@@ -0,0 +1,180 @@
1
+ /**
2
+ * M4-9: CI/CD pipeline for distribution
3
+ * Generates GitHub Actions workflow YAML for build, test, and release pipelines.
4
+ */
5
+ const DEFAULT_STEPS = [
6
+ { name: 'Lint', command: 'npm run lint' },
7
+ { name: 'Build', command: 'npm run build' },
8
+ { name: 'Test', command: 'npm test' },
9
+ { name: 'Bundle', command: 'npx esbuild src/index.ts --bundle --format=esm --outdir=dist' },
10
+ ];
11
+ const PUBLISH_STEP = {
12
+ name: 'Publish',
13
+ command: 'npm publish --access public',
14
+ env: { NODE_AUTH_TOKEN: '${{ secrets.NPM_TOKEN }}' },
15
+ };
16
+ const TAG_STEP = {
17
+ name: 'Tag',
18
+ command: 'git tag v${{ github.event.release.tag_name }}',
19
+ };
20
+ function indent(text, spaces) {
21
+ const pad = ' '.repeat(spaces);
22
+ return text.split('\n').map(l => l.length > 0 ? pad + l : l).join('\n');
23
+ }
24
+ function yamlEnv(env, spaces) {
25
+ const pad = ' '.repeat(spaces);
26
+ return Object.entries(env).map(([k, v]) => `${pad}${k}: ${v}`).join('\n');
27
+ }
28
+ /**
29
+ * Generate a GitHub Actions CI workflow YAML string.
30
+ */
31
+ export function generateGitHubActionsWorkflow(config) {
32
+ const nodeVersion = config.nodeVersion ?? '20';
33
+ const lines = [];
34
+ lines.push(`name: ${config.name}`);
35
+ lines.push('');
36
+ lines.push('on:');
37
+ for (const trigger of config.triggers) {
38
+ if (trigger.event === 'schedule' && trigger.cron) {
39
+ lines.push(' schedule:');
40
+ lines.push(` - cron: '${trigger.cron}'`);
41
+ }
42
+ else if (trigger.event === 'workflow_dispatch') {
43
+ lines.push(' workflow_dispatch:');
44
+ }
45
+ else if (trigger.event === 'push') {
46
+ lines.push(' push:');
47
+ if (trigger.branches?.length) {
48
+ lines.push(' branches:');
49
+ for (const b of trigger.branches)
50
+ lines.push(` - ${b}`);
51
+ }
52
+ if (trigger.tags?.length) {
53
+ lines.push(' tags:');
54
+ for (const t of trigger.tags)
55
+ lines.push(` - ${t}`);
56
+ }
57
+ }
58
+ else if (trigger.event === 'pull_request') {
59
+ lines.push(' pull_request:');
60
+ if (trigger.branches?.length) {
61
+ lines.push(' branches:');
62
+ for (const b of trigger.branches)
63
+ lines.push(` - ${b}`);
64
+ }
65
+ }
66
+ else if (trigger.event === 'release') {
67
+ lines.push(' release:');
68
+ lines.push(' types: [published]');
69
+ }
70
+ }
71
+ lines.push('');
72
+ if (Object.keys(config.environment).length > 0) {
73
+ lines.push('env:');
74
+ for (const [k, v] of Object.entries(config.environment)) {
75
+ lines.push(` ${k}: ${v}`);
76
+ }
77
+ lines.push('');
78
+ }
79
+ lines.push('jobs:');
80
+ lines.push(' build:');
81
+ lines.push(' runs-on: ubuntu-latest');
82
+ lines.push(' steps:');
83
+ lines.push(' - uses: actions/checkout@v4');
84
+ lines.push(' - uses: actions/setup-node@v4');
85
+ lines.push(' with:');
86
+ lines.push(` node-version: '${nodeVersion}'`);
87
+ lines.push(' cache: npm');
88
+ lines.push(' - run: npm ci');
89
+ for (const step of config.steps) {
90
+ lines.push(` - name: ${step.name}`);
91
+ lines.push(` run: ${step.command}`);
92
+ if (step.condition) {
93
+ lines.push(` if: ${step.condition}`);
94
+ }
95
+ if (step.env && Object.keys(step.env).length > 0) {
96
+ lines.push(' env:');
97
+ for (const [k, v] of Object.entries(step.env)) {
98
+ lines.push(` ${k}: ${v}`);
99
+ }
100
+ }
101
+ }
102
+ for (const artifact of config.artifacts) {
103
+ lines.push(' - uses: actions/upload-artifact@v4');
104
+ lines.push(` name: Upload ${artifact.name}`);
105
+ lines.push(' with:');
106
+ lines.push(` name: ${artifact.name}`);
107
+ lines.push(` path: ${artifact.path}`);
108
+ if (artifact.retention) {
109
+ lines.push(` retention-days: ${artifact.retention}`);
110
+ }
111
+ }
112
+ lines.push('');
113
+ return lines.join('\n');
114
+ }
115
+ /**
116
+ * Generate a release workflow YAML string.
117
+ */
118
+ export function generateReleaseWorkflow(config) {
119
+ const releaseConfig = {
120
+ ...config,
121
+ name: `${config.name} — Release`,
122
+ triggers: [{ event: 'release', tags: ['v*'] }],
123
+ steps: [
124
+ ...config.steps,
125
+ PUBLISH_STEP,
126
+ TAG_STEP,
127
+ ],
128
+ };
129
+ return generateGitHubActionsWorkflow(releaseConfig);
130
+ }
131
+ /**
132
+ * Validate a CI pipeline configuration for completeness and correctness.
133
+ */
134
+ export function validatePipelineConfig(config) {
135
+ const errors = [];
136
+ const warnings = [];
137
+ if (!config.name || typeof config.name !== 'string' || config.name.trim().length === 0) {
138
+ errors.push('Pipeline name is required');
139
+ }
140
+ if (!config.steps || config.steps.length === 0) {
141
+ errors.push('Pipeline must have at least one step');
142
+ }
143
+ else {
144
+ for (let i = 0; i < config.steps.length; i++) {
145
+ const step = config.steps[i];
146
+ if (!step.name)
147
+ errors.push(`Step ${i} missing name`);
148
+ if (!step.command)
149
+ errors.push(`Step ${i} missing command`);
150
+ }
151
+ }
152
+ if (!config.triggers || config.triggers.length === 0) {
153
+ errors.push('Pipeline must have at least one trigger');
154
+ }
155
+ else {
156
+ for (const trigger of config.triggers) {
157
+ if (trigger.event === 'schedule' && !trigger.cron) {
158
+ errors.push('Schedule trigger requires a cron expression');
159
+ }
160
+ }
161
+ }
162
+ if (!config.artifacts) {
163
+ warnings.push('No artifacts configured');
164
+ }
165
+ const stepNames = config.steps?.map(s => s.name) ?? [];
166
+ if (!stepNames.some(n => n.toLowerCase().includes('test'))) {
167
+ warnings.push('Pipeline has no test step');
168
+ }
169
+ if (!stepNames.some(n => n.toLowerCase().includes('lint'))) {
170
+ warnings.push('Pipeline has no lint step');
171
+ }
172
+ return { valid: errors.length === 0, errors, warnings };
173
+ }
174
+ /**
175
+ * Get the default CI pipeline steps.
176
+ */
177
+ export function getDefaultSteps() {
178
+ return DEFAULT_STEPS.map(s => ({ ...s, env: s.env ? { ...s.env } : undefined }));
179
+ }
180
+ //# sourceMappingURL=ci-pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-pipeline.js","sourceRoot":"","sources":["../../src/build/ci-pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * M4-3: GitHub distribution (npx github:bradygaster/squad)
3
+ * Supports GitHub Releases distribution and npx execution.
4
+ */
5
+ export interface GitHubDistConfig {
6
+ owner: string;
7
+ repo: string;
8
+ binaryName: string;
9
+ installCommandTemplate: string;
10
+ }
11
+ /**
12
+ * Generate a shell script that downloads and installs from GitHub releases.
13
+ */
14
+ export declare function generateInstallScript(config?: Partial<GitHubDistConfig>): string;
15
+ export interface ReleaseValidationResult {
16
+ valid: boolean;
17
+ errors: string[];
18
+ version: string;
19
+ expectedAssets: string[];
20
+ }
21
+ /**
22
+ * Validate that a GitHub release has the expected assets.
23
+ */
24
+ export declare function validateGitHubRelease(config: GitHubDistConfig, version: string): ReleaseValidationResult;
25
+ /**
26
+ * Get the npx install command string.
27
+ */
28
+ export declare function getInstallCommand(config?: Partial<GitHubDistConfig>): string;
29
+ /**
30
+ * Generate the bin script that runs when npx invokes the package.
31
+ */
32
+ export declare function generateNpxEntryPoint(): string;
33
+ /**
34
+ * Get the default GitHub distribution config.
35
+ */
36
+ export declare function getDefaultDistConfig(): GitHubDistConfig;
37
+ //# sourceMappingURL=github-dist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-dist.d.ts","sourceRoot":"","sources":["../../src/build/github-dist.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB,EAAE,MAAM,CAAC;CAChC;AASD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAwBhF;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,uBAAuB,CA0BxG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAK5E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAuB9C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,gBAAgB,CAEvD"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * M4-3: GitHub distribution (npx github:bradygaster/squad)
3
+ * Supports GitHub Releases distribution and npx execution.
4
+ */
5
+ const DEFAULT_CONFIG = {
6
+ owner: 'bradygaster',
7
+ repo: 'squad',
8
+ binaryName: 'squad',
9
+ installCommandTemplate: 'npx github:{{owner}}/{{repo}}',
10
+ };
11
+ /**
12
+ * Generate a shell script that downloads and installs from GitHub releases.
13
+ */
14
+ export function generateInstallScript(config) {
15
+ const c = resolveConfig(config);
16
+ return `#!/usr/bin/env bash
17
+ set -euo pipefail
18
+
19
+ OWNER="${c.owner}"
20
+ REPO="${c.repo}"
21
+ BINARY="${c.binaryName}"
22
+
23
+ # Detect latest version from GitHub API
24
+ VERSION=\${1:-$(curl -sL "https://api.github.com/repos/\${OWNER}/\${REPO}/releases/latest" | grep '"tag_name"' | sed -E 's/.*"v?([^"]+)".*/\\1/')}
25
+
26
+ echo "Installing \${BINARY} v\${VERSION}..."
27
+
28
+ DOWNLOAD_URL="https://github.com/\${OWNER}/\${REPO}/releases/download/v\${VERSION}/\${BINARY}-\${VERSION}.tar.gz"
29
+ INSTALL_DIR="\${HOME}/.local/bin"
30
+
31
+ mkdir -p "\${INSTALL_DIR}"
32
+ curl -sL "\${DOWNLOAD_URL}" | tar xz -C "\${INSTALL_DIR}"
33
+ chmod +x "\${INSTALL_DIR}/\${BINARY}"
34
+
35
+ echo "\${BINARY} v\${VERSION} installed to \${INSTALL_DIR}/\${BINARY}"
36
+ echo "Make sure \${INSTALL_DIR} is in your PATH."
37
+ `;
38
+ }
39
+ /**
40
+ * Validate that a GitHub release has the expected assets.
41
+ */
42
+ export function validateGitHubRelease(config, version) {
43
+ const errors = [];
44
+ const expectedAssets = [
45
+ `${config.binaryName}-${version}.tar.gz`,
46
+ `${config.binaryName}-${version}.zip`,
47
+ ];
48
+ if (!version || typeof version !== 'string') {
49
+ errors.push('Version is required');
50
+ }
51
+ else if (!/^\d+\.\d+\.\d+/.test(version)) {
52
+ errors.push(`Invalid semver version: ${version}`);
53
+ }
54
+ if (!config.owner) {
55
+ errors.push('Missing owner in config');
56
+ }
57
+ if (!config.repo) {
58
+ errors.push('Missing repo in config');
59
+ }
60
+ if (!config.binaryName) {
61
+ errors.push('Missing binaryName in config');
62
+ }
63
+ return { valid: errors.length === 0, errors, version: version || '', expectedAssets };
64
+ }
65
+ /**
66
+ * Get the npx install command string.
67
+ */
68
+ export function getInstallCommand(config) {
69
+ const c = resolveConfig(config);
70
+ return c.installCommandTemplate
71
+ .replace('{{owner}}', c.owner)
72
+ .replace('{{repo}}', c.repo);
73
+ }
74
+ /**
75
+ * Generate the bin script that runs when npx invokes the package.
76
+ */
77
+ export function generateNpxEntryPoint() {
78
+ return `#!/usr/bin/env node
79
+ import { createRequire } from 'node:module';
80
+ import { fileURLToPath } from 'node:url';
81
+ import { dirname, join } from 'node:path';
82
+
83
+ const __filename = fileURLToPath(import.meta.url);
84
+ const __dirname = dirname(__filename);
85
+
86
+ async function main() {
87
+ try {
88
+ const { main: run } = await import(join(__dirname, 'index.js'));
89
+ if (typeof run === 'function') {
90
+ await run();
91
+ }
92
+ } catch (err) {
93
+ console.error('squad: failed to start —', err instanceof Error ? err.message : err);
94
+ process.exit(1);
95
+ }
96
+ }
97
+
98
+ main();
99
+ `;
100
+ }
101
+ /**
102
+ * Get the default GitHub distribution config.
103
+ */
104
+ export function getDefaultDistConfig() {
105
+ return { ...DEFAULT_CONFIG };
106
+ }
107
+ function resolveConfig(config) {
108
+ if (!config)
109
+ return { ...DEFAULT_CONFIG };
110
+ return {
111
+ owner: config.owner ?? DEFAULT_CONFIG.owner,
112
+ repo: config.repo ?? DEFAULT_CONFIG.repo,
113
+ binaryName: config.binaryName ?? DEFAULT_CONFIG.binaryName,
114
+ installCommandTemplate: config.installCommandTemplate ?? DEFAULT_CONFIG.installCommandTemplate,
115
+ };
116
+ }
117
+ //# sourceMappingURL=github-dist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-dist.js","sourceRoot":"","sources":["../../src/build/github-dist.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,cAAc,GAAqB;IACvC,KAAK,EAAE,aAAa;IACpB,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,OAAO;IACnB,sBAAsB,EAAE,+BAA+B;CACxD,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAkC;IACtE,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAChC,OAAO;;;SAGA,CAAC,CAAC,KAAK;QACR,CAAC,CAAC,IAAI;UACJ,CAAC,CAAC,UAAU;;;;;;;;;;;;;;;;CAgBrB,CAAC;AACF,CAAC;AASD;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAwB,EAAE,OAAe;IAC7E,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,cAAc,GAAG;QACrB,GAAG,MAAM,CAAC,UAAU,IAAI,OAAO,SAAS;QACxC,GAAG,MAAM,CAAC,UAAU,IAAI,OAAO,MAAM;KACtC,CAAC;IAEF,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACrC,CAAC;SAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,cAAc,EAAE,CAAC;AACxF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAkC;IAClE,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAChC,OAAO,CAAC,CAAC,sBAAsB;SAC5B,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC;SAC7B,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO;;;;;;;;;;;;;;;;;;;;;CAqBR,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,aAAa,CAAC,MAAkC;IACvD,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;IAC1C,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK;QAC3C,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI;QACxC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,cAAc,CAAC,UAAU;QAC1D,sBAAsB,EAAE,MAAM,CAAC,sBAAsB,IAAI,cAAc,CAAC,sBAAsB;KAC/F,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Build & distribution module exports
3
+ */
4
+ export * from './bundle.js';
5
+ export * from './npm-package.js';
6
+ export * from './github-dist.js';
7
+ export * from './ci-pipeline.js';
8
+ export * from './versioning.js';
9
+ export * from './install-migration.js';
10
+ export { type ReleaseChannel as BuildReleaseChannel, type ReleaseConfig, type ReleaseArtifact, type ReleaseManifest, type ReleaseValidationError, type ReleaseChecklistItem, computeSha256, buildArtifact, createRelease, validateRelease, generateReleaseNotes, getReleaseChecklist, } from './release.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/build/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EACL,KAAK,cAAc,IAAI,mBAAmB,EAC1C,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Build & distribution module exports
3
+ */
4
+ export * from './bundle.js';
5
+ export * from './npm-package.js';
6
+ export * from './github-dist.js';
7
+ export * from './ci-pipeline.js';
8
+ export * from './versioning.js';
9
+ export * from './install-migration.js';
10
+ export { computeSha256, buildArtifact, createRelease, validateRelease, generateReleaseNotes, getReleaseChecklist, } from './release.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/build/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAOL,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * M4-11: Migration for install path changes
3
+ * Detects current install method and generates migration instructions.
4
+ */
5
+ export type InstallMethod = 'npx-github' | 'npm-global' | 'npm-local' | 'unknown';
6
+ export interface MigrationStep {
7
+ description: string;
8
+ command?: string;
9
+ manual?: boolean;
10
+ }
11
+ export interface MigrationPlan {
12
+ from: InstallMethod;
13
+ to: InstallMethod;
14
+ steps: MigrationStep[];
15
+ }
16
+ /**
17
+ * Detect the current install method based on environment heuristics.
18
+ */
19
+ export declare function detectInstallMethod(): InstallMethod;
20
+ /**
21
+ * Generate a migration plan between install methods.
22
+ */
23
+ export declare function migrateInstallPath(from: InstallMethod, to: InstallMethod): MigrationPlan;
24
+ /**
25
+ * Generate user-facing markdown migration instructions.
26
+ */
27
+ export declare function generateMigrationInstructions(from: InstallMethod, to: InstallMethod): string;
28
+ //# sourceMappingURL=install-migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-migration.d.ts","sourceRoot":"","sources":["../../src/build/install-migration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC;AAElF,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,aAAa,CAAC;IACpB,EAAE,EAAE,aAAa,CAAC;IAClB,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,aAAa,CAkBnD;AAiCD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,aAAa,GAAG,aAAa,CAqBxF;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,aAAa,GAAG,MAAM,CA6B5F"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * M4-11: Migration for install path changes
3
+ * Detects current install method and generates migration instructions.
4
+ */
5
+ /**
6
+ * Detect the current install method based on environment heuristics.
7
+ */
8
+ export function detectInstallMethod() {
9
+ // Check for npm global prefix
10
+ const execPath = process.argv[1] ?? '';
11
+ const npmGlobalPrefix = process.env.npm_config_prefix ?? '';
12
+ if (process.env.npm_execpath?.includes('npx') || execPath.includes('_npx')) {
13
+ return 'npx-github';
14
+ }
15
+ if (npmGlobalPrefix && execPath.startsWith(npmGlobalPrefix)) {
16
+ return 'npm-global';
17
+ }
18
+ if (execPath.includes('node_modules')) {
19
+ return 'npm-local';
20
+ }
21
+ return 'unknown';
22
+ }
23
+ const MIGRATION_STEPS = {
24
+ 'npx-github->npm-global': [
25
+ { description: 'Install the squad package globally from npm', command: 'npm install -g @bradygaster/squad' },
26
+ { description: 'Verify the installation', command: 'squad --version' },
27
+ { description: 'Remove any cached npx versions', command: 'npx --yes clear-npx-cache || true' },
28
+ ],
29
+ 'npx-github->npm-local': [
30
+ { description: 'Add squad as a local dev dependency', command: 'npm install --save-dev @bradygaster/squad' },
31
+ { description: 'Add a script entry in package.json', manual: true, command: undefined },
32
+ { description: 'Verify the installation', command: 'npx squad --version' },
33
+ ],
34
+ 'npm-global->npm-local': [
35
+ { description: 'Add squad as a local dev dependency', command: 'npm install --save-dev @bradygaster/squad' },
36
+ { description: 'Optionally uninstall the global version', command: 'npm uninstall -g @bradygaster/squad' },
37
+ { description: 'Use npx squad or add an npm script to run locally' },
38
+ ],
39
+ 'npm-local->npm-global': [
40
+ { description: 'Install squad globally', command: 'npm install -g @bradygaster/squad' },
41
+ { description: 'Remove from local devDependencies', command: 'npm uninstall @bradygaster/squad' },
42
+ { description: 'Verify the global installation', command: 'squad --version' },
43
+ ],
44
+ 'npm-global->npx-github': [
45
+ { description: 'Uninstall the global npm package', command: 'npm uninstall -g @bradygaster/squad' },
46
+ { description: 'Use npx to run directly from GitHub', command: 'npx github:bradygaster/squad' },
47
+ ],
48
+ 'npm-local->npx-github': [
49
+ { description: 'Remove squad from local dependencies', command: 'npm uninstall @bradygaster/squad' },
50
+ { description: 'Use npx to run directly from GitHub', command: 'npx github:bradygaster/squad' },
51
+ ],
52
+ };
53
+ /**
54
+ * Generate a migration plan between install methods.
55
+ */
56
+ export function migrateInstallPath(from, to) {
57
+ if (from === to) {
58
+ return { from, to, steps: [{ description: 'No migration needed — already using this install method' }] };
59
+ }
60
+ if (from === 'unknown') {
61
+ return { from, to, steps: [{ description: 'Cannot determine current install method; perform a fresh install', manual: true }] };
62
+ }
63
+ const key = `${from}->${to}`;
64
+ const steps = MIGRATION_STEPS[key];
65
+ if (!steps) {
66
+ return {
67
+ from,
68
+ to,
69
+ steps: [{ description: `Direct migration from ${from} to ${to} is not supported; uninstall and reinstall`, manual: true }],
70
+ };
71
+ }
72
+ return { from, to, steps: steps.map(s => ({ ...s })) };
73
+ }
74
+ /**
75
+ * Generate user-facing markdown migration instructions.
76
+ */
77
+ export function generateMigrationInstructions(from, to) {
78
+ const plan = migrateInstallPath(from, to);
79
+ const lines = [];
80
+ lines.push(`# Migrate from \`${from}\` to \`${to}\``);
81
+ lines.push('');
82
+ if (plan.steps.length === 1 && from === to) {
83
+ lines.push('No migration needed — you are already using this install method.');
84
+ return lines.join('\n') + '\n';
85
+ }
86
+ for (let i = 0; i < plan.steps.length; i++) {
87
+ const step = plan.steps[i];
88
+ lines.push(`${i + 1}. ${step.description}`);
89
+ if (step.command) {
90
+ lines.push('');
91
+ lines.push(' ```bash');
92
+ lines.push(` ${step.command}`);
93
+ lines.push(' ```');
94
+ lines.push('');
95
+ }
96
+ if (step.manual) {
97
+ lines.push(' *(manual step)*');
98
+ lines.push('');
99
+ }
100
+ }
101
+ return lines.join('\n').trimEnd() + '\n';
102
+ }
103
+ //# sourceMappingURL=install-migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-migration.js","sourceRoot":"","sources":["../../src/build/install-migration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * M4-2: npm bundling & registry publication
3
+ * Generates package.json content and validates npm publication readiness.
4
+ */
5
+ export interface NpmPackageConfig {
6
+ name: string;
7
+ version: string;
8
+ description: string;
9
+ exports: Record<string, string | Record<string, string>>;
10
+ bin?: Record<string, string>;
11
+ peerDependencies?: Record<string, string>;
12
+ engines?: Record<string, string>;
13
+ }
14
+ export interface PackageJsonOutput {
15
+ name: string;
16
+ version: string;
17
+ description: string;
18
+ type: string;
19
+ main: string;
20
+ types: string;
21
+ exports: Record<string, unknown>;
22
+ bin?: Record<string, string>;
23
+ files: string[];
24
+ peerDependencies?: Record<string, string>;
25
+ engines: Record<string, string>;
26
+ license: string;
27
+ repository: {
28
+ type: string;
29
+ url: string;
30
+ };
31
+ keywords: string[];
32
+ }
33
+ export interface PackageValidationResult {
34
+ valid: boolean;
35
+ errors: string[];
36
+ warnings: string[];
37
+ }
38
+ /**
39
+ * Generate package.json content suitable for npm publication.
40
+ */
41
+ export declare function generatePackageJson(config: NpmPackageConfig): PackageJsonOutput;
42
+ /**
43
+ * Validate a package.json object for npm publication readiness.
44
+ */
45
+ export declare function validatePackageJson(pkg: Record<string, unknown>): PackageValidationResult;
46
+ /**
47
+ * Return the files array for package.json publication.
48
+ */
49
+ export declare function getPublishFiles(): string[];
50
+ /**
51
+ * Return the default ESM exports map for the SDK.
52
+ */
53
+ export declare function getDefaultExports(): Record<string, Record<string, string>>;
54
+ //# sourceMappingURL=npm-package.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm-package.d.ts","sourceRoot":"","sources":["../../src/build/npm-package.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAgCD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,iBAAiB,CA4B/E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,uBAAuB,CAsDzF;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAE1E"}