@bradygaster/squad-sdk 0.6.2 → 0.8.0

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 (306) hide show
  1. package/README.md +296 -296
  2. package/dist/adapter/client.d.ts +225 -0
  3. package/dist/adapter/client.d.ts.map +1 -0
  4. package/dist/adapter/client.js +397 -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 +68 -0
  23. package/dist/agents/index.d.ts.map +1 -0
  24. package/dist/agents/index.js +74 -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 +258 -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 +198 -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 +37 -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 +53 -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 +369 -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 +174 -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 +47 -0
  159. package/dist/coordinator/index.d.ts.map +1 -0
  160. package/dist/coordinator/index.js +54 -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 +24 -1
  171. package/dist/index.d.ts.map +1 -1
  172. package/dist/index.js +23 -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 +56 -0
  207. package/dist/ralph/index.d.ts.map +1 -0
  208. package/dist/ralph/index.js +61 -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 +313 -0
  219. package/dist/runtime/config.d.ts.map +1 -0
  220. package/dist/runtime/config.js +466 -0
  221. package/dist/runtime/config.js.map +1 -0
  222. package/dist/runtime/cost-tracker.d.ts +73 -0
  223. package/dist/runtime/cost-tracker.d.ts.map +1 -0
  224. package/dist/runtime/cost-tracker.js +157 -0
  225. package/dist/runtime/cost-tracker.js.map +1 -0
  226. package/dist/runtime/event-bus.d.ts +190 -0
  227. package/dist/runtime/event-bus.d.ts.map +1 -0
  228. package/dist/runtime/event-bus.js +218 -0
  229. package/dist/runtime/event-bus.js.map +1 -0
  230. package/dist/runtime/health.d.ts +66 -0
  231. package/dist/runtime/health.d.ts.map +1 -0
  232. package/dist/runtime/health.js +111 -0
  233. package/dist/runtime/health.js.map +1 -0
  234. package/dist/runtime/i18n.d.ts +54 -0
  235. package/dist/runtime/i18n.d.ts.map +1 -0
  236. package/dist/runtime/i18n.js +126 -0
  237. package/dist/runtime/i18n.js.map +1 -0
  238. package/dist/runtime/offline.d.ts +64 -0
  239. package/dist/runtime/offline.d.ts.map +1 -0
  240. package/dist/runtime/offline.js +108 -0
  241. package/dist/runtime/offline.js.map +1 -0
  242. package/dist/runtime/streaming.d.ts +97 -0
  243. package/dist/runtime/streaming.d.ts.map +1 -0
  244. package/dist/runtime/streaming.js +156 -0
  245. package/dist/runtime/streaming.js.map +1 -0
  246. package/dist/runtime/telemetry.d.ts +82 -0
  247. package/dist/runtime/telemetry.d.ts.map +1 -0
  248. package/dist/runtime/telemetry.js +120 -0
  249. package/dist/runtime/telemetry.js.map +1 -0
  250. package/dist/sharing/agent-repo.d.ts +33 -0
  251. package/dist/sharing/agent-repo.d.ts.map +1 -0
  252. package/dist/sharing/agent-repo.js +79 -0
  253. package/dist/sharing/agent-repo.js.map +1 -0
  254. package/dist/sharing/cache.d.ts +36 -0
  255. package/dist/sharing/cache.d.ts.map +1 -0
  256. package/dist/sharing/cache.js +85 -0
  257. package/dist/sharing/cache.js.map +1 -0
  258. package/dist/sharing/conflicts.d.ts +32 -0
  259. package/dist/sharing/conflicts.d.ts.map +1 -0
  260. package/dist/sharing/conflicts.js +121 -0
  261. package/dist/sharing/conflicts.js.map +1 -0
  262. package/dist/sharing/export.d.ts +50 -0
  263. package/dist/sharing/export.d.ts.map +1 -0
  264. package/dist/sharing/export.js +156 -0
  265. package/dist/sharing/export.js.map +1 -0
  266. package/dist/sharing/history-split.d.ts +34 -0
  267. package/dist/sharing/history-split.d.ts.map +1 -0
  268. package/dist/sharing/history-split.js +101 -0
  269. package/dist/sharing/history-split.js.map +1 -0
  270. package/dist/sharing/import.d.ts +37 -0
  271. package/dist/sharing/import.d.ts.map +1 -0
  272. package/dist/sharing/import.js +138 -0
  273. package/dist/sharing/import.js.map +1 -0
  274. package/dist/sharing/index.d.ts +11 -0
  275. package/dist/sharing/index.d.ts.map +1 -0
  276. package/dist/sharing/index.js +11 -0
  277. package/dist/sharing/index.js.map +1 -0
  278. package/dist/sharing/versioning.d.ts +32 -0
  279. package/dist/sharing/versioning.d.ts.map +1 -0
  280. package/dist/sharing/versioning.js +64 -0
  281. package/dist/sharing/versioning.js.map +1 -0
  282. package/dist/skills/index.d.ts +49 -0
  283. package/dist/skills/index.d.ts.map +1 -0
  284. package/dist/skills/index.js +85 -0
  285. package/dist/skills/index.js.map +1 -0
  286. package/dist/skills/skill-loader.d.ts +56 -0
  287. package/dist/skills/skill-loader.d.ts.map +1 -0
  288. package/dist/skills/skill-loader.js +106 -0
  289. package/dist/skills/skill-loader.js.map +1 -0
  290. package/dist/skills/skill-source.d.ts +63 -0
  291. package/dist/skills/skill-source.d.ts.map +1 -0
  292. package/dist/skills/skill-source.js +199 -0
  293. package/dist/skills/skill-source.js.map +1 -0
  294. package/dist/tools/index.d.ts +87 -0
  295. package/dist/tools/index.d.ts.map +1 -0
  296. package/dist/tools/index.js +419 -0
  297. package/dist/tools/index.js.map +1 -0
  298. package/dist/types.d.ts +43 -0
  299. package/dist/types.d.ts.map +1 -0
  300. package/dist/types.js +8 -0
  301. package/dist/types.js.map +1 -0
  302. package/dist/utils/normalize-eol.d.ts +6 -0
  303. package/dist/utils/normalize-eol.d.ts.map +1 -0
  304. package/dist/utils/normalize-eol.js +8 -0
  305. package/dist/utils/normalize-eol.js.map +1 -0
  306. package/package.json +115 -39
@@ -0,0 +1,32 @@
1
+ /**
2
+ * M4-1: Bundle strategy & esbuild configuration
3
+ * Defines bundling strategy for the SDK: ESM output, tree-shakeable
4
+ */
5
+ export type BundleFormat = 'esm' | 'cjs';
6
+ export interface BundleConfig {
7
+ entryPoints: string[];
8
+ outDir: string;
9
+ format: BundleFormat;
10
+ minify: boolean;
11
+ sourcemap: boolean;
12
+ external: string[];
13
+ }
14
+ /**
15
+ * Create a full BundleConfig with sensible defaults, optionally overriding fields.
16
+ */
17
+ export declare function createBundleConfig(options?: Partial<BundleConfig>): BundleConfig;
18
+ /**
19
+ * Returns the list of entry points for the SDK build.
20
+ */
21
+ export declare function getBundleTargets(): string[];
22
+ export interface BundleValidationResult {
23
+ valid: boolean;
24
+ errors: string[];
25
+ warnings: string[];
26
+ files: string[];
27
+ }
28
+ /**
29
+ * Check that the output directory contains expected build artifacts.
30
+ */
31
+ export declare function validateBundleOutput(outDir: string): BundleValidationResult;
32
+ //# sourceMappingURL=bundle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../src/build/bundle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,CAAC;AAEzC,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AA2BD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAYhF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,sBAAsB,CAwC3E"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * M4-1: Bundle strategy & esbuild configuration
3
+ * Defines bundling strategy for the SDK: ESM output, tree-shakeable
4
+ */
5
+ import { existsSync, readdirSync, statSync } from 'node:fs';
6
+ import { join, resolve } from 'node:path';
7
+ const DEFAULT_ENTRY_POINTS = [
8
+ 'src/index.ts',
9
+ 'src/config/index.ts',
10
+ 'src/agents/onboarding.ts',
11
+ 'src/casting/index.ts',
12
+ 'src/skills/index.ts',
13
+ 'src/runtime/config.ts',
14
+ 'src/runtime/streaming.ts',
15
+ 'src/runtime/cost-tracker.ts',
16
+ 'src/coordinator/response-tiers.ts',
17
+ ];
18
+ const DEFAULT_EXTERNAL = [
19
+ '@github/copilot-sdk',
20
+ ];
21
+ const DEFAULT_CONFIG = {
22
+ entryPoints: DEFAULT_ENTRY_POINTS,
23
+ outDir: 'dist',
24
+ format: 'esm',
25
+ minify: false,
26
+ sourcemap: true,
27
+ external: DEFAULT_EXTERNAL,
28
+ };
29
+ /**
30
+ * Create a full BundleConfig with sensible defaults, optionally overriding fields.
31
+ */
32
+ export function createBundleConfig(options) {
33
+ if (!options) {
34
+ return { ...DEFAULT_CONFIG, entryPoints: [...DEFAULT_CONFIG.entryPoints], external: [...DEFAULT_CONFIG.external] };
35
+ }
36
+ return {
37
+ entryPoints: options.entryPoints ? [...options.entryPoints] : [...DEFAULT_CONFIG.entryPoints],
38
+ outDir: options.outDir ?? DEFAULT_CONFIG.outDir,
39
+ format: options.format ?? DEFAULT_CONFIG.format,
40
+ minify: options.minify ?? DEFAULT_CONFIG.minify,
41
+ sourcemap: options.sourcemap ?? DEFAULT_CONFIG.sourcemap,
42
+ external: options.external ? [...options.external] : [...DEFAULT_CONFIG.external],
43
+ };
44
+ }
45
+ /**
46
+ * Returns the list of entry points for the SDK build.
47
+ */
48
+ export function getBundleTargets() {
49
+ return [...DEFAULT_ENTRY_POINTS];
50
+ }
51
+ /**
52
+ * Check that the output directory contains expected build artifacts.
53
+ */
54
+ export function validateBundleOutput(outDir) {
55
+ const errors = [];
56
+ const warnings = [];
57
+ const files = [];
58
+ const resolvedDir = resolve(outDir);
59
+ if (!existsSync(resolvedDir)) {
60
+ return { valid: false, errors: [`Output directory does not exist: ${resolvedDir}`], warnings, files };
61
+ }
62
+ const stat = statSync(resolvedDir);
63
+ if (!stat.isDirectory()) {
64
+ return { valid: false, errors: [`Path is not a directory: ${resolvedDir}`], warnings, files };
65
+ }
66
+ collectFiles(resolvedDir, resolvedDir, files);
67
+ const jsFiles = files.filter(f => f.endsWith('.js'));
68
+ const dtsFiles = files.filter(f => f.endsWith('.d.ts'));
69
+ const mapFiles = files.filter(f => f.endsWith('.js.map') || f.endsWith('.d.ts.map'));
70
+ if (jsFiles.length === 0) {
71
+ errors.push('No JavaScript output files found');
72
+ }
73
+ if (dtsFiles.length === 0) {
74
+ warnings.push('No TypeScript declaration files found');
75
+ }
76
+ if (mapFiles.length === 0) {
77
+ warnings.push('No source map files found');
78
+ }
79
+ const hasIndex = jsFiles.some(f => f === 'index.js' || f.endsWith('/index.js') || f.endsWith('\\index.js'));
80
+ if (!hasIndex) {
81
+ errors.push('Missing index.js entry point in output');
82
+ }
83
+ return { valid: errors.length === 0, errors, warnings, files };
84
+ }
85
+ function collectFiles(baseDir, dir, result) {
86
+ for (const entry of readdirSync(dir)) {
87
+ const fullPath = join(dir, entry);
88
+ const relativePath = fullPath.slice(baseDir.length + 1).replace(/\\/g, '/');
89
+ if (statSync(fullPath).isDirectory()) {
90
+ collectFiles(baseDir, fullPath, result);
91
+ }
92
+ else {
93
+ result.push(relativePath);
94
+ }
95
+ }
96
+ }
97
+ //# sourceMappingURL=bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../src/build/bundle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * M4-9: CI/CD pipeline for distribution
3
+ * Generates GitHub Actions workflow YAML for build, test, and release pipelines.
4
+ */
5
+ export interface CIPipelineStep {
6
+ name: string;
7
+ command: string;
8
+ condition?: string;
9
+ env?: Record<string, string>;
10
+ }
11
+ export interface CIPipelineTrigger {
12
+ event: 'push' | 'pull_request' | 'release' | 'workflow_dispatch' | 'schedule';
13
+ branches?: string[];
14
+ tags?: string[];
15
+ cron?: string;
16
+ }
17
+ export interface CIPipelineArtifact {
18
+ name: string;
19
+ path: string;
20
+ retention?: number;
21
+ }
22
+ export interface CIPipelineConfig {
23
+ name: string;
24
+ steps: CIPipelineStep[];
25
+ triggers: CIPipelineTrigger[];
26
+ artifacts: CIPipelineArtifact[];
27
+ environment: Record<string, string>;
28
+ nodeVersion?: string;
29
+ }
30
+ export interface PipelineValidationResult {
31
+ valid: boolean;
32
+ errors: string[];
33
+ warnings: string[];
34
+ }
35
+ /**
36
+ * Generate a GitHub Actions CI workflow YAML string.
37
+ */
38
+ export declare function generateGitHubActionsWorkflow(config: CIPipelineConfig): string;
39
+ /**
40
+ * Generate a release workflow YAML string.
41
+ */
42
+ export declare function generateReleaseWorkflow(config: CIPipelineConfig): string;
43
+ /**
44
+ * Validate a CI pipeline configuration for completeness and correctness.
45
+ */
46
+ export declare function validatePipelineConfig(config: CIPipelineConfig): PipelineValidationResult;
47
+ /**
48
+ * Get the default CI pipeline steps.
49
+ */
50
+ export declare function getDefaultSteps(): CIPipelineStep[];
51
+ //# sourceMappingURL=ci-pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-pipeline.d.ts","sourceRoot":"","sources":["../../src/build/ci-pipeline.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,GAAG,mBAAmB,GAAG,UAAU,CAAC;IAC9E,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AA8BD;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAkF9E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAaxE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,wBAAwB,CAyCzF;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,cAAc,EAAE,CAElD"}
@@ -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"}