@allstak/wizard 0.1.3 → 0.1.5

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 (296) hide show
  1. package/CHANGELOG.md +53 -1
  2. package/LICENSE +191 -0
  3. package/README.md +299 -47
  4. package/dist/api/http.d.ts +2 -0
  5. package/dist/api/http.d.ts.map +1 -1
  6. package/dist/api/http.js +6 -0
  7. package/dist/api/http.js.map +1 -1
  8. package/dist/api/index.d.ts +1 -0
  9. package/dist/api/index.d.ts.map +1 -1
  10. package/dist/api/index.js +1 -0
  11. package/dist/api/index.js.map +1 -1
  12. package/dist/api/types.d.ts +3 -3
  13. package/dist/api/types.js +3 -3
  14. package/dist/certification/fixtures.d.ts +4 -0
  15. package/dist/certification/fixtures.d.ts.map +1 -0
  16. package/dist/certification/fixtures.js +109 -0
  17. package/dist/certification/fixtures.js.map +1 -0
  18. package/dist/certification/gates.d.ts +10 -0
  19. package/dist/certification/gates.d.ts.map +1 -0
  20. package/dist/certification/gates.js +20 -0
  21. package/dist/certification/gates.js.map +1 -0
  22. package/dist/certification/index.d.ts +6 -0
  23. package/dist/certification/index.d.ts.map +1 -0
  24. package/dist/certification/index.js +5 -0
  25. package/dist/certification/index.js.map +1 -0
  26. package/dist/certification/live-backend.d.ts +50 -0
  27. package/dist/certification/live-backend.d.ts.map +1 -0
  28. package/dist/certification/live-backend.js +422 -0
  29. package/dist/certification/live-backend.js.map +1 -0
  30. package/dist/certification/packages.d.ts +3 -0
  31. package/dist/certification/packages.d.ts.map +1 -0
  32. package/dist/certification/packages.js +49 -0
  33. package/dist/certification/packages.js.map +1 -0
  34. package/dist/certification/process.d.ts +8 -0
  35. package/dist/certification/process.d.ts.map +1 -0
  36. package/dist/certification/process.js +77 -0
  37. package/dist/certification/process.js.map +1 -0
  38. package/dist/certification/report.d.ts +3 -0
  39. package/dist/certification/report.d.ts.map +1 -0
  40. package/dist/certification/report.js +38 -0
  41. package/dist/certification/report.js.map +1 -0
  42. package/dist/certification/runner.d.ts +3 -0
  43. package/dist/certification/runner.d.ts.map +1 -0
  44. package/dist/certification/runner.js +299 -0
  45. package/dist/certification/runner.js.map +1 -0
  46. package/dist/certification/runtime.d.ts +11 -0
  47. package/dist/certification/runtime.d.ts.map +1 -0
  48. package/dist/certification/runtime.js +60 -0
  49. package/dist/certification/runtime.js.map +1 -0
  50. package/dist/certification/types.d.ts +73 -0
  51. package/dist/certification/types.d.ts.map +1 -0
  52. package/dist/certification/types.js +2 -0
  53. package/dist/certification/types.js.map +1 -0
  54. package/dist/cli.js +70 -3
  55. package/dist/cli.js.map +1 -1
  56. package/dist/commands/certify.d.ts +18 -0
  57. package/dist/commands/certify.d.ts.map +1 -0
  58. package/dist/commands/certify.js +27 -0
  59. package/dist/commands/certify.js.map +1 -0
  60. package/dist/commands/init.d.ts.map +1 -1
  61. package/dist/commands/init.js +13 -0
  62. package/dist/commands/init.js.map +1 -1
  63. package/dist/commands/list.d.ts +5 -1
  64. package/dist/commands/list.d.ts.map +1 -1
  65. package/dist/commands/list.js +9 -3
  66. package/dist/commands/list.js.map +1 -1
  67. package/dist/commands/security-snapshot.d.ts +24 -0
  68. package/dist/commands/security-snapshot.d.ts.map +1 -0
  69. package/dist/commands/security-snapshot.js +113 -0
  70. package/dist/commands/security-snapshot.js.map +1 -0
  71. package/dist/index.d.ts +3 -1
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +3 -1
  74. package/dist/index.js.map +1 -1
  75. package/dist/integrations/_scaffold.d.ts +2 -1
  76. package/dist/integrations/_scaffold.d.ts.map +1 -1
  77. package/dist/integrations/_scaffold.js +36 -13
  78. package/dist/integrations/_scaffold.js.map +1 -1
  79. package/dist/integrations/_simple-scaffold.d.ts +5 -2
  80. package/dist/integrations/_simple-scaffold.d.ts.map +1 -1
  81. package/dist/integrations/_simple-scaffold.js +3 -0
  82. package/dist/integrations/_simple-scaffold.js.map +1 -1
  83. package/dist/integrations/dotnet.d.ts.map +1 -1
  84. package/dist/integrations/dotnet.js +3 -0
  85. package/dist/integrations/dotnet.js.map +1 -1
  86. package/dist/integrations/expo/detect.d.ts +13 -0
  87. package/dist/integrations/expo/detect.d.ts.map +1 -0
  88. package/dist/integrations/expo/detect.js +38 -0
  89. package/dist/integrations/expo/detect.js.map +1 -0
  90. package/dist/integrations/expo/doctor.d.ts +6 -0
  91. package/dist/integrations/expo/doctor.d.ts.map +1 -0
  92. package/dist/integrations/expo/doctor.js +136 -0
  93. package/dist/integrations/expo/doctor.js.map +1 -0
  94. package/dist/integrations/expo/files.d.ts +15 -0
  95. package/dist/integrations/expo/files.d.ts.map +1 -0
  96. package/dist/integrations/expo/files.js +62 -0
  97. package/dist/integrations/expo/files.js.map +1 -0
  98. package/dist/integrations/expo/index.d.ts +24 -0
  99. package/dist/integrations/expo/index.d.ts.map +1 -0
  100. package/dist/integrations/expo/index.js +68 -0
  101. package/dist/integrations/expo/index.js.map +1 -0
  102. package/dist/integrations/expo/manifest.d.ts +3 -0
  103. package/dist/integrations/expo/manifest.d.ts.map +1 -0
  104. package/dist/integrations/expo/manifest.js +39 -0
  105. package/dist/integrations/expo/manifest.js.map +1 -0
  106. package/dist/integrations/expo/patch.d.ts +13 -0
  107. package/dist/integrations/expo/patch.d.ts.map +1 -0
  108. package/dist/integrations/expo/patch.js +215 -0
  109. package/dist/integrations/expo/patch.js.map +1 -0
  110. package/dist/integrations/expo/uninstall.d.ts +4 -0
  111. package/dist/integrations/expo/uninstall.d.ts.map +1 -0
  112. package/dist/integrations/expo/uninstall.js +77 -0
  113. package/dist/integrations/expo/uninstall.js.map +1 -0
  114. package/dist/integrations/expo.d.ts +8 -1
  115. package/dist/integrations/expo.d.ts.map +1 -1
  116. package/dist/integrations/expo.js +8 -11
  117. package/dist/integrations/expo.js.map +1 -1
  118. package/dist/integrations/fastify/detect.d.ts +3 -0
  119. package/dist/integrations/fastify/detect.d.ts.map +1 -0
  120. package/dist/integrations/fastify/detect.js +12 -0
  121. package/dist/integrations/fastify/detect.js.map +1 -0
  122. package/dist/integrations/fastify/doctor.d.ts +3 -0
  123. package/dist/integrations/fastify/doctor.d.ts.map +1 -0
  124. package/dist/integrations/fastify/doctor.js +81 -0
  125. package/dist/integrations/fastify/doctor.js.map +1 -0
  126. package/dist/integrations/fastify/files.d.ts +17 -0
  127. package/dist/integrations/fastify/files.d.ts.map +1 -0
  128. package/dist/integrations/fastify/files.js +51 -0
  129. package/dist/integrations/fastify/files.js.map +1 -0
  130. package/dist/integrations/fastify/index.d.ts +3 -0
  131. package/dist/integrations/fastify/index.d.ts.map +1 -0
  132. package/dist/integrations/fastify/index.js +47 -0
  133. package/dist/integrations/fastify/index.js.map +1 -0
  134. package/dist/integrations/fastify/manifest.d.ts +3 -0
  135. package/dist/integrations/fastify/manifest.d.ts.map +1 -0
  136. package/dist/integrations/fastify/manifest.js +34 -0
  137. package/dist/integrations/fastify/manifest.js.map +1 -0
  138. package/dist/integrations/fastify/patch.d.ts +27 -0
  139. package/dist/integrations/fastify/patch.d.ts.map +1 -0
  140. package/dist/integrations/fastify/patch.js +91 -0
  141. package/dist/integrations/fastify/patch.js.map +1 -0
  142. package/dist/integrations/fastify/uninstall.d.ts +4 -0
  143. package/dist/integrations/fastify/uninstall.d.ts.map +1 -0
  144. package/dist/integrations/fastify/uninstall.js +18 -0
  145. package/dist/integrations/fastify/uninstall.js.map +1 -0
  146. package/dist/integrations/fastify.d.ts +5 -1
  147. package/dist/integrations/fastify.d.ts.map +1 -1
  148. package/dist/integrations/fastify.js +5 -9
  149. package/dist/integrations/fastify.js.map +1 -1
  150. package/dist/integrations/flutter.d.ts.map +1 -1
  151. package/dist/integrations/flutter.js +3 -0
  152. package/dist/integrations/flutter.js.map +1 -1
  153. package/dist/integrations/go/index.d.ts +3 -0
  154. package/dist/integrations/go/index.d.ts.map +1 -0
  155. package/dist/integrations/go/index.js +199 -0
  156. package/dist/integrations/go/index.js.map +1 -0
  157. package/dist/integrations/go.d.ts.map +1 -1
  158. package/dist/integrations/go.js +5 -2
  159. package/dist/integrations/go.js.map +1 -1
  160. package/dist/integrations/java/index.d.ts +3 -0
  161. package/dist/integrations/java/index.d.ts.map +1 -0
  162. package/dist/integrations/java/index.js +472 -0
  163. package/dist/integrations/java/index.js.map +1 -0
  164. package/dist/integrations/java.d.ts.map +1 -1
  165. package/dist/integrations/java.js +5 -2
  166. package/dist/integrations/java.js.map +1 -1
  167. package/dist/integrations/js/manifest.d.ts.map +1 -1
  168. package/dist/integrations/js/manifest.js +3 -0
  169. package/dist/integrations/js/manifest.js.map +1 -1
  170. package/dist/integrations/nestjs/detect.d.ts +3 -0
  171. package/dist/integrations/nestjs/detect.d.ts.map +1 -0
  172. package/dist/integrations/nestjs/detect.js +12 -0
  173. package/dist/integrations/nestjs/detect.js.map +1 -0
  174. package/dist/integrations/nestjs/doctor.d.ts +3 -0
  175. package/dist/integrations/nestjs/doctor.d.ts.map +1 -0
  176. package/dist/integrations/nestjs/doctor.js +76 -0
  177. package/dist/integrations/nestjs/doctor.js.map +1 -0
  178. package/dist/integrations/nestjs/files.d.ts +18 -0
  179. package/dist/integrations/nestjs/files.d.ts.map +1 -0
  180. package/dist/integrations/nestjs/files.js +39 -0
  181. package/dist/integrations/nestjs/files.js.map +1 -0
  182. package/dist/integrations/nestjs/index.d.ts +3 -0
  183. package/dist/integrations/nestjs/index.d.ts.map +1 -0
  184. package/dist/integrations/nestjs/index.js +43 -0
  185. package/dist/integrations/nestjs/index.js.map +1 -0
  186. package/dist/integrations/nestjs/manifest.d.ts +3 -0
  187. package/dist/integrations/nestjs/manifest.d.ts.map +1 -0
  188. package/dist/integrations/nestjs/manifest.js +32 -0
  189. package/dist/integrations/nestjs/manifest.js.map +1 -0
  190. package/dist/integrations/nestjs/patch.d.ts +25 -0
  191. package/dist/integrations/nestjs/patch.d.ts.map +1 -0
  192. package/dist/integrations/nestjs/patch.js +66 -0
  193. package/dist/integrations/nestjs/patch.js.map +1 -0
  194. package/dist/integrations/nestjs/uninstall.d.ts +4 -0
  195. package/dist/integrations/nestjs/uninstall.d.ts.map +1 -0
  196. package/dist/integrations/nestjs/uninstall.js +18 -0
  197. package/dist/integrations/nestjs/uninstall.js.map +1 -0
  198. package/dist/integrations/nestjs.d.ts +5 -1
  199. package/dist/integrations/nestjs.d.ts.map +1 -1
  200. package/dist/integrations/nestjs.js +5 -9
  201. package/dist/integrations/nestjs.js.map +1 -1
  202. package/dist/integrations/next/index.js +2 -2
  203. package/dist/integrations/next/index.js.map +1 -1
  204. package/dist/integrations/next/manifest.d.ts.map +1 -1
  205. package/dist/integrations/next/manifest.js +4 -1
  206. package/dist/integrations/next/manifest.js.map +1 -1
  207. package/dist/integrations/next/patch.js +8 -3
  208. package/dist/integrations/next/patch.js.map +1 -1
  209. package/dist/integrations/next/uninstall.d.ts.map +1 -1
  210. package/dist/integrations/next/uninstall.js +10 -1
  211. package/dist/integrations/next/uninstall.js.map +1 -1
  212. package/dist/integrations/otel.d.ts.map +1 -1
  213. package/dist/integrations/otel.js +4 -1
  214. package/dist/integrations/otel.js.map +1 -1
  215. package/dist/integrations/php.d.ts.map +1 -1
  216. package/dist/integrations/php.js +16 -3
  217. package/dist/integrations/php.js.map +1 -1
  218. package/dist/integrations/python/index.d.ts +3 -0
  219. package/dist/integrations/python/index.d.ts.map +1 -0
  220. package/dist/integrations/python/index.js +222 -0
  221. package/dist/integrations/python/index.js.map +1 -0
  222. package/dist/integrations/python.d.ts.map +1 -1
  223. package/dist/integrations/python.js +5 -2
  224. package/dist/integrations/python.js.map +1 -1
  225. package/dist/integrations/react/doctor.d.ts.map +1 -1
  226. package/dist/integrations/react/doctor.js +41 -8
  227. package/dist/integrations/react/doctor.js.map +1 -1
  228. package/dist/integrations/react/index.d.ts.map +1 -1
  229. package/dist/integrations/react/index.js +1 -4
  230. package/dist/integrations/react/index.js.map +1 -1
  231. package/dist/integrations/react/manifest.d.ts.map +1 -1
  232. package/dist/integrations/react/manifest.js +4 -1
  233. package/dist/integrations/react/manifest.js.map +1 -1
  234. package/dist/integrations/react/patch.d.ts.map +1 -1
  235. package/dist/integrations/react/patch.js +120 -8
  236. package/dist/integrations/react/patch.js.map +1 -1
  237. package/dist/integrations/react/uninstall.d.ts.map +1 -1
  238. package/dist/integrations/react/uninstall.js +20 -1
  239. package/dist/integrations/react/uninstall.js.map +1 -1
  240. package/dist/integrations/react-native.d.ts.map +1 -1
  241. package/dist/integrations/react-native.js +3 -0
  242. package/dist/integrations/react-native.js.map +1 -1
  243. package/dist/integrations/ruby.d.ts.map +1 -1
  244. package/dist/integrations/ruby.js +3 -0
  245. package/dist/integrations/ruby.js.map +1 -1
  246. package/dist/output/human.d.ts.map +1 -1
  247. package/dist/output/human.js +38 -7
  248. package/dist/output/human.js.map +1 -1
  249. package/dist/registry/index.d.ts.map +1 -1
  250. package/dist/registry/index.js +9 -23
  251. package/dist/registry/index.js.map +1 -1
  252. package/dist/registry/manifest.d.ts +8 -0
  253. package/dist/registry/manifest.d.ts.map +1 -1
  254. package/dist/security-snapshot/builder.d.ts +3 -0
  255. package/dist/security-snapshot/builder.d.ts.map +1 -0
  256. package/dist/security-snapshot/builder.js +343 -0
  257. package/dist/security-snapshot/builder.js.map +1 -0
  258. package/dist/security-snapshot/client.d.ts +3 -0
  259. package/dist/security-snapshot/client.d.ts.map +1 -0
  260. package/dist/security-snapshot/client.js +38 -0
  261. package/dist/security-snapshot/client.js.map +1 -0
  262. package/dist/security-snapshot/index.d.ts +4 -0
  263. package/dist/security-snapshot/index.d.ts.map +1 -0
  264. package/dist/security-snapshot/index.js +3 -0
  265. package/dist/security-snapshot/index.js.map +1 -0
  266. package/dist/security-snapshot/types.d.ts +57 -0
  267. package/dist/security-snapshot/types.d.ts.map +1 -0
  268. package/dist/security-snapshot/types.js +2 -0
  269. package/dist/security-snapshot/types.js.map +1 -0
  270. package/dist/sourcemaps/next.js +3 -3
  271. package/dist/sourcemaps/next.js.map +1 -1
  272. package/dist/sourcemaps/vite.d.ts.map +1 -1
  273. package/dist/sourcemaps/vite.js +92 -9
  274. package/dist/sourcemaps/vite.js.map +1 -1
  275. package/dist/util/wizard-version.d.ts +1 -1
  276. package/dist/util/wizard-version.js +1 -1
  277. package/docs/architecture/v02-java-host-fix-spec.md +4 -8
  278. package/docs/architecture/v02-sourcemaps-e2e-spec.md +1 -1
  279. package/docs/beta/README.md +17 -0
  280. package/docs/beta/ci.md +122 -0
  281. package/docs/beta/config.md +124 -0
  282. package/docs/beta/doctor.md +79 -0
  283. package/docs/beta/expo.md +69 -0
  284. package/docs/beta/fastify.md +62 -0
  285. package/docs/beta/known-limitations.md +93 -0
  286. package/docs/beta/nestjs.md +69 -0
  287. package/docs/beta/next.md +76 -0
  288. package/docs/beta/node.md +60 -0
  289. package/docs/beta/privacy.md +99 -0
  290. package/docs/beta/quickstart.md +89 -0
  291. package/docs/beta/react.md +91 -0
  292. package/docs/beta/reliability.md +33 -0
  293. package/docs/beta/restore.md +84 -0
  294. package/docs/beta/troubleshooting.md +133 -0
  295. package/docs/errors.md +88 -0
  296. package/package.json +23 -5
@@ -0,0 +1,38 @@
1
+ export function renderCertificationMarkdown(result) {
2
+ const lines = [];
3
+ lines.push('# AllStak SDK Certification Report');
4
+ lines.push('');
5
+ lines.push(`Generated: ${result.generatedAt}`);
6
+ lines.push(`SDK package install: ${result.options.installSdkPackages ? 'enabled' : 'disabled'}`);
7
+ lines.push(`Live backend checks: ${result.options.liveBackend ? 'enabled' : 'disabled'}`);
8
+ lines.push('');
9
+ lines.push('| Fixture | Framework | Certified Stable | Recommended Label | Failed Required | Skipped Required |');
10
+ lines.push('| --- | --- | --- | --- | --- | --- |');
11
+ for (const item of result.results) {
12
+ lines.push(`| ${item.fixture.title} | ${item.fixture.framework} | ${item.certifiedStable ? 'yes' : 'no'} | ${item.recommendedStability} | ${item.failedRequiredChecks.join(', ') || '-'} | ${item.skippedRequiredChecks.join(', ') || '-'} |`);
13
+ }
14
+ lines.push('');
15
+ for (const item of result.results) {
16
+ lines.push(`## ${item.fixture.title}`);
17
+ lines.push('');
18
+ if (item.packageArtifacts.length > 0) {
19
+ lines.push('| Local package | Version | Packed files | Packed bytes | Source |');
20
+ lines.push('| --- | --- | --- | --- | --- |');
21
+ for (const artifact of item.packageArtifacts) {
22
+ lines.push(`| ${artifact.packageName} | ${artifact.version} | ${artifact.packedFileCount} | ${artifact.packedSizeBytes} | ${escapeCell(artifact.sourceDir)} |`);
23
+ }
24
+ lines.push('');
25
+ }
26
+ lines.push('| Check | Status | Detail | Duration |');
27
+ lines.push('| --- | --- | --- | --- |');
28
+ for (const check of item.checks) {
29
+ lines.push(`| ${check.name} | ${check.status} | ${escapeCell(check.detail)} | ${check.durationMs}ms |`);
30
+ }
31
+ lines.push('');
32
+ }
33
+ return `${lines.join('\n').trim()}\n`;
34
+ }
35
+ function escapeCell(value) {
36
+ return value.replace(/\|/g, '\\|').replace(/\r?\n/g, ' ');
37
+ }
38
+ //# sourceMappingURL=report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/certification/report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CertificationRunOptions, CertificationRunResult } from './types.js';
2
+ export declare function runCertification(options?: CertificationRunOptions): Promise<CertificationRunResult>;
3
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/certification/runner.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAKV,uBAAuB,EACvB,sBAAsB,EAEvB,MAAM,YAAY,CAAC;AAEpB,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,sBAAsB,CAAC,CA0B7G"}
@@ -0,0 +1,299 @@
1
+ import { cpSync, mkdtempSync, readFileSync, readdirSync, rmSync, statSync } from 'node:fs';
2
+ import { tmpdir } from 'node:os';
3
+ import { join, resolve } from 'node:path';
4
+ import { Transaction } from '../transaction/tx.js';
5
+ import { registry, bootstrapRegistry } from '../registry/index.js';
6
+ import { bootstrapSourceMaps } from '../sourcemaps/index.js';
7
+ import { buildContext } from '../commands/_context.js';
8
+ import { buildDependencySnapshot } from '../security-snapshot/builder.js';
9
+ import { findCertificationFixtures } from './fixtures.js';
10
+ import { evaluateStabilityGate } from './gates.js';
11
+ import { packLocalSdkPackages } from './packages.js';
12
+ import { execBuffered } from './process.js';
13
+ import { runRuntimeProbe } from './runtime.js';
14
+ import { acquireLiveBackendResource, liveBackendSafeSummary, missingDisposableBackendEnv, missingLiveBackendEnv, pollForCertificationEvent, redactLiveError, sendCertificationEvent, uploadAndVerifySecuritySnapshot, uploadAndVerifySourceMaps, } from './live-backend.js';
15
+ export async function runCertification(options = {}) {
16
+ bootstrapRegistry();
17
+ bootstrapSourceMaps();
18
+ const fixtures = findCertificationFixtures(options.framework, options.fixture);
19
+ const results = [];
20
+ for (const fixture of fixtures) {
21
+ results.push(await runFixtureCertification(fixture, options));
22
+ }
23
+ return {
24
+ schemaVersion: 1,
25
+ certificationVersion: 5,
26
+ generatedAt: new Date().toISOString(),
27
+ buildMetadata: {
28
+ nodeVersion: process.version,
29
+ platform: process.platform,
30
+ arch: process.arch,
31
+ },
32
+ options: {
33
+ installSdkPackages: options.installSdkPackages === true,
34
+ liveBackend: options.liveBackend === true,
35
+ disposableBackend: options.disposableBackend === true,
36
+ },
37
+ results,
38
+ };
39
+ }
40
+ async function runFixtureCertification(fixture, options) {
41
+ const tempDir = mkdtempSync(join(tmpdir(), `allstak-cert-${fixture.id}-`));
42
+ const checks = [];
43
+ let packageArtifacts = [];
44
+ let integration = null;
45
+ const runId = `${Date.now()}-${Math.random().toString(16).slice(2, 8)}`;
46
+ const release = options.release ?? `certification-${fixture.framework}-${runId}`;
47
+ let liveResource = null;
48
+ try {
49
+ if (options.liveBackend) {
50
+ liveResource = await acquireLiveBackendResource({ disposable: options.disposableBackend, runId, fixture });
51
+ }
52
+ const fixtureRoot = resolve(tempDir, 'project');
53
+ cpSync(fixture.fixtureDir, fixtureRoot, { recursive: true });
54
+ checks.push(pass('clean-fixture', `Copied fixture to ${fixtureRoot}`));
55
+ integration = registry.require(fixture.framework);
56
+ const { ctx } = await buildContext({
57
+ cwd: fixtureRoot,
58
+ apiKey: options.apiKey ?? liveResource?.config.apiKey ?? 'ask_cert_local',
59
+ host: options.host ?? liveResource?.config.baseUrl,
60
+ project: options.project ?? 'certification',
61
+ environment: options.environment ?? liveResource?.config.environment ?? 'certification',
62
+ release,
63
+ skipDeps: !options.installSdkPackages,
64
+ skipSourceMaps: false,
65
+ experimental: true,
66
+ });
67
+ const compat = await integration.detect(ctx);
68
+ checks.push(compat.ok ? pass('framework-detection', 'Framework compatibility passed') : fail('framework-detection', compat.reason ?? 'Framework compatibility failed'));
69
+ await checkedCommand(checks, 'fixture-dependency-install', fixtureRoot, ['npm', 'ci', '--ignore-scripts', '--no-audit', '--no-fund']);
70
+ await runCheck(checks, 'wizard-onboarding', async () => {
71
+ const tx = new Transaction({ cwd: fixtureRoot });
72
+ await tx.run(async () => { await integration.patch(ctx, tx); });
73
+ return 'Integration patch completed transactionally';
74
+ });
75
+ if (options.installSdkPackages) {
76
+ await runCheck(checks, 'sdk-package-install', async () => {
77
+ if (fixture.localSdkPackages.length === 0) {
78
+ throw new Error(`No local SDK package mapping is defined for ${fixture.framework}`);
79
+ }
80
+ packageArtifacts = await packLocalSdkPackages(fixture.localSdkPackages);
81
+ await execBuffered('npm', ['install', '--no-audit', '--no-fund', ...packageArtifacts.map((artifact) => artifact.tarballPath)], fixtureRoot);
82
+ return packageArtifacts
83
+ .map((artifact) => `${artifact.packageName}@${artifact.version} from ${artifact.tarballPath}`)
84
+ .join(', ');
85
+ });
86
+ }
87
+ else {
88
+ checks.push(skip('sdk-package-install', 'Skipped because --install-sdk-packages was not set'));
89
+ }
90
+ if (fixture.buildCommand && options.installSdkPackages) {
91
+ await checkedCommand(checks, 'build-after-onboarding', fixtureRoot, fixture.buildCommand);
92
+ }
93
+ else if (fixture.buildCommand) {
94
+ checks.push(skip('build-after-onboarding', 'Skipped because SDK packages were not installed'));
95
+ }
96
+ else {
97
+ checks.push(skip('build-after-onboarding', 'Fixture has no build command'));
98
+ }
99
+ if (fixture.startCommand && options.installSdkPackages) {
100
+ await checkedRuntime(checks, fixture, fixtureRoot);
101
+ }
102
+ else if (fixture.startCommand) {
103
+ checks.push(skip('runtime-start', 'Skipped because SDK packages were not installed'));
104
+ checks.push(skip('runtime-smoke', 'Skipped because SDK packages were not installed'));
105
+ }
106
+ else {
107
+ checks.push(skip('runtime-start', 'Fixture has no runtime start command'));
108
+ checks.push(skip('runtime-smoke', 'Fixture has no runtime start command'));
109
+ }
110
+ const liveConfig = liveResource?.config ?? null;
111
+ if (options.liveBackend && liveConfig) {
112
+ let event = null;
113
+ let sourceMapResult = null;
114
+ await runCheck(checks, 'event-ingestion', async () => {
115
+ event = await sendCertificationEvent(liveConfig, fixture, fixtureRoot, release, runId);
116
+ const found = await pollForCertificationEvent(liveConfig, event);
117
+ return `${liveBackendSafeSummary(liveConfig)} mode=${liveResource?.mode ?? 'provided'} release=${release} event=${found}`;
118
+ });
119
+ await runCheck(checks, 'release-linkage', async () => {
120
+ if (!event)
121
+ throw new Error('Event ingestion did not complete');
122
+ const found = await pollForCertificationEvent(liveConfig, event, { timeoutMs: 15_000 });
123
+ return `release=${release} environment=${liveConfig.environment} event=${found}`;
124
+ });
125
+ await runCheck(checks, 'source-map-upload', async () => {
126
+ sourceMapResult = await uploadAndVerifySourceMaps(liveConfig, fixture, fixtureRoot, release);
127
+ if (sourceMapResult.uploaded <= 0)
128
+ throw new Error('No source maps uploaded');
129
+ return sourceMapResult.detail;
130
+ });
131
+ await runCheck(checks, 'source-map-symbolication', async () => {
132
+ if (!sourceMapResult)
133
+ throw new Error('Source map upload did not complete');
134
+ if (!sourceMapResult.symbolicated)
135
+ throw new Error(`Source map uploaded but symbolication did not resolve: ${sourceMapResult.detail}`);
136
+ return sourceMapResult.detail;
137
+ });
138
+ await runCheck(checks, 'security-snapshot-upload', async () => {
139
+ const result = await uploadAndVerifySecuritySnapshot(liveConfig, fixture, fixtureRoot);
140
+ return `snapshot=${result.snapshotId ?? 'accepted'} dependencies=${result.dependencyCount}`;
141
+ });
142
+ }
143
+ else if (options.liveBackend) {
144
+ const missing = (options.disposableBackend ? missingDisposableBackendEnv() : missingLiveBackendEnv()).join(', ');
145
+ for (const name of fixture.requiresLiveBackend) {
146
+ checks.push(skip(name, `Skipped because live backend env vars are missing: ${missing}`));
147
+ }
148
+ }
149
+ else {
150
+ for (const name of fixture.requiresLiveBackend) {
151
+ checks.push(skip(name, 'Skipped because --live-backend was not set'));
152
+ }
153
+ }
154
+ await runCheck(checks, 'security-snapshot-extraction', async () => {
155
+ const snapshot = buildDependencySnapshot({
156
+ cwd: fixtureRoot,
157
+ framework: fixture.framework,
158
+ environment: options.environment ?? 'certification',
159
+ });
160
+ if (snapshot.dependencies.length === 0)
161
+ throw new Error('No dependencies extracted');
162
+ return `${snapshot.dependencies.length} dependencies extracted from ${snapshot.manifestCount} manifest(s)`;
163
+ });
164
+ checks.push(skip('trace-request-context', 'Trace/request certification requires framework-specific runtime probes'));
165
+ await runCheck(checks, 'wizard-uninstall', async () => {
166
+ const tx = new Transaction({ cwd: fixtureRoot });
167
+ await tx.run(async () => { await integration.uninstall(ctx, tx); });
168
+ return 'Integration uninstall completed transactionally';
169
+ });
170
+ if (fixture.buildCommand) {
171
+ await checkedCommand(checks, 'build-after-uninstall', fixtureRoot, fixture.buildCommand);
172
+ }
173
+ else {
174
+ checks.push(skip('build-after-uninstall', 'Fixture has no build command'));
175
+ }
176
+ await runCheck(checks, 'orphan-import-scan', async () => {
177
+ const matches = await findOrphanAllStakReferences(fixtureRoot);
178
+ if (matches.length > 0)
179
+ throw new Error(`Found orphan AllStak references: ${matches.slice(0, 10).join(', ')}`);
180
+ return 'No orphan AllStak imports or wizard markers found after uninstall';
181
+ });
182
+ await runCheck(checks, 'rollback-cleanliness', async () => {
183
+ const report = await integration.doctor(ctx);
184
+ if (report.checks.some((check) => check.name.includes('managed') && check.status === 'fail')) {
185
+ throw new Error('Doctor found failed managed-block cleanup check');
186
+ }
187
+ return `Post-uninstall doctor completed with summary=${report.summary}; no managed cleanup failures`;
188
+ });
189
+ }
190
+ catch (err) {
191
+ checks.push(fail('clean-fixture', err instanceof Error ? err.message : String(err)));
192
+ }
193
+ finally {
194
+ if (liveResource?.mode === 'disposable' || liveResource?.mode === 'control-plane') {
195
+ try {
196
+ const cleanup = await liveResource.cleanup();
197
+ checks.push(pass('certification-cleanup', cleanup.join(', ')));
198
+ }
199
+ catch (err) {
200
+ checks.push(fail('certification-cleanup', redactLiveError(err)));
201
+ }
202
+ }
203
+ if (!options.keepTemp)
204
+ rmSync(tempDir, { recursive: true, force: true });
205
+ }
206
+ const gate = evaluateStabilityGate(fixture, checks);
207
+ return {
208
+ fixture,
209
+ tempDir: options.keepTemp ? tempDir : null,
210
+ packageArtifacts,
211
+ checks,
212
+ ...gate,
213
+ };
214
+ }
215
+ async function checkedCommand(checks, name, cwd, command) {
216
+ await runCheck(checks, name, async () => {
217
+ await execBuffered(command[0], command.slice(1), cwd);
218
+ return command.join(' ');
219
+ });
220
+ }
221
+ async function checkedRuntime(checks, fixture, cwd) {
222
+ const start = Date.now();
223
+ try {
224
+ const result = await runRuntimeProbe({
225
+ command: fixture.startCommand,
226
+ cwd,
227
+ healthUrl: fixture.healthUrl,
228
+ timeoutMs: fixture.runtimeTimeoutMs ?? 15_000,
229
+ });
230
+ const durationMs = Date.now() - start;
231
+ checks.push({ name: 'runtime-start', status: 'pass', durationMs, detail: result.detail });
232
+ checks.push({ name: 'runtime-smoke', status: 'pass', durationMs: 0, detail: 'Health URL responded without runtime crash' });
233
+ }
234
+ catch (err) {
235
+ const detail = err instanceof Error ? err.message : String(err);
236
+ const durationMs = Date.now() - start;
237
+ checks.push({ name: 'runtime-start', status: 'fail', durationMs, detail });
238
+ checks.push({ name: 'runtime-smoke', status: 'fail', durationMs: 0, detail: 'Runtime smoke did not complete because server startup failed' });
239
+ }
240
+ }
241
+ async function findOrphanAllStakReferences(root) {
242
+ const matches = [];
243
+ for (const file of walkSourceFiles(root)) {
244
+ const text = readFileSync(file, 'utf8');
245
+ const lines = text.split(/\r?\n/);
246
+ lines.forEach((line, index) => {
247
+ if (/@allstak|allstak-wizard|ALLSTAK_/.test(line)) {
248
+ matches.push(`${file.replace(`${root}/`, '')}:${index + 1}:${line.trim()}`);
249
+ }
250
+ });
251
+ }
252
+ return matches;
253
+ }
254
+ function walkSourceFiles(root) {
255
+ const out = [];
256
+ const ignoredDirs = new Set(['node_modules', 'dist', '.next', '.git']);
257
+ const allowed = /\.(cjs|js|jsx|mjs|ts|tsx)$/;
258
+ const visit = (dir) => {
259
+ for (const entry of readdirSync(dir)) {
260
+ if (ignoredDirs.has(entry))
261
+ continue;
262
+ const path = resolve(dir, entry);
263
+ const stat = statSync(path);
264
+ if (stat.isDirectory()) {
265
+ visit(path);
266
+ continue;
267
+ }
268
+ if (entry === '.env.local' || allowed.test(entry))
269
+ out.push(path);
270
+ }
271
+ };
272
+ visit(root);
273
+ return out;
274
+ }
275
+ function runCheck(checks, name, fn) {
276
+ const start = Date.now();
277
+ return fn()
278
+ .then((detail) => {
279
+ checks.push({ name, status: 'pass', durationMs: Date.now() - start, detail });
280
+ })
281
+ .catch((err) => {
282
+ checks.push({
283
+ name,
284
+ status: 'fail',
285
+ durationMs: Date.now() - start,
286
+ detail: redactLiveError(err),
287
+ });
288
+ });
289
+ }
290
+ function pass(name, detail) {
291
+ return { name, status: 'pass', durationMs: 0, detail };
292
+ }
293
+ function fail(name, detail) {
294
+ return { name, status: 'fail', durationMs: 0, detail };
295
+ }
296
+ function skip(name, detail) {
297
+ return { name, status: 'skip', durationMs: 0, detail };
298
+ }
299
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/certification/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC3F,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,2BAA2B,EAC3B,qBAAqB,EACrB,yBAAyB,EACzB,eAAe,EACf,sBAAsB,EACtB,+BAA+B,EAC/B,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAW3B,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,UAAmC,EAAE;IAC1E,iBAAiB,EAAE,CAAC;IACpB,mBAAmB,EAAE,CAAC;IACtB,MAAM,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/E,MAAM,OAAO,GAAiC,EAAE,CAAC;IAEjD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,MAAM,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,oBAAoB,EAAE,CAAC;QACvB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,aAAa,EAAE;YACb,WAAW,EAAE,OAAO,CAAC,OAAO;YAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB;QACD,OAAO,EAAE;YACP,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,KAAK,IAAI;YACvD,WAAW,EAAE,OAAO,CAAC,WAAW,KAAK,IAAI;YACzC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,KAAK,IAAI;SACtD;QACD,OAAO;KACR,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,OAA6B,EAC7B,OAAgC;IAEhC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,gBAAgB,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3E,MAAM,MAAM,GAA+B,EAAE,CAAC;IAC9C,IAAI,gBAAgB,GAAmC,EAAE,CAAC;IAC1D,IAAI,WAAW,GAAuB,IAAI,CAAC;IAC3C,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACxE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,iBAAiB,OAAO,CAAC,SAAS,IAAI,KAAK,EAAE,CAAC;IACjF,IAAI,YAAY,GAA2D,IAAI,CAAC;IAEhF,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,YAAY,GAAG,MAAM,0BAA0B,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7G,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAChD,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,qBAAqB,WAAW,EAAE,CAAC,CAAC,CAAC;QAEvE,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,YAAY,CAAC;YACjC,GAAG,EAAE,WAAW;YAChB,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,YAAY,EAAE,MAAM,CAAC,MAAM,IAAI,gBAAgB;YACzE,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,YAAY,EAAE,MAAM,CAAC,OAAO;YAClD,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,eAAe;YAC3C,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,YAAY,EAAE,MAAM,CAAC,WAAW,IAAI,eAAe;YACvF,OAAO;YACP,QAAQ,EAAE,CAAC,OAAO,CAAC,kBAAkB;YACrC,cAAc,EAAE,KAAK;YACrB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE,gCAAgC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,MAAM,IAAI,gCAAgC,CAAC,CAAC,CAAC;QAExK,MAAM,cAAc,CAAC,MAAM,EAAE,4BAA4B,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;QAEtI,MAAM,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;YACjD,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,WAAY,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,OAAO,6CAA6C,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAC/B,MAAM,QAAQ,CAAC,MAAM,EAAE,qBAAqB,EAAE,KAAK,IAAI,EAAE;gBACvD,IAAI,OAAO,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1C,MAAM,IAAI,KAAK,CAAC,+CAA+C,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;gBACtF,CAAC;gBACD,gBAAgB,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBACxE,MAAM,YAAY,CAChB,KAAK,EACL,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EACnG,WAAW,CACZ,CAAC;gBACF,OAAO,gBAAgB;qBACpB,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,OAAO,SAAS,QAAQ,CAAC,WAAW,EAAE,CAAC;qBAC7F,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,oDAAoD,CAAC,CAAC,CAAC;QACjG,CAAC;QAED,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;YACvD,MAAM,cAAc,CAAC,MAAM,EAAE,wBAAwB,EAAE,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAC5F,CAAC;aAAM,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,iDAAiD,CAAC,CAAC,CAAC;QACjG,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,8BAA8B,CAAC,CAAC,CAAC;QAC9E,CAAC;QAED,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;YACvD,MAAM,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,iDAAiD,CAAC,CAAC,CAAC;YACtF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,iDAAiD,CAAC,CAAC,CAAC;QACxF,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,sCAAsC,CAAC,CAAC,CAAC;YAC3E,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,sCAAsC,CAAC,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,UAAU,GAAG,YAAY,EAAE,MAAM,IAAI,IAAI,CAAC;QAChD,IAAI,OAAO,CAAC,WAAW,IAAI,UAAU,EAAE,CAAC;YACtC,IAAI,KAAK,GAA8D,IAAI,CAAC;YAC5E,IAAI,eAAe,GAAiE,IAAI,CAAC;YACzF,MAAM,QAAQ,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,IAAI,EAAE;gBACnD,KAAK,GAAG,MAAM,sBAAsB,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;gBACvF,MAAM,KAAK,GAAG,MAAM,yBAAyB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBACjE,OAAO,GAAG,sBAAsB,CAAC,UAAU,CAAC,SAAS,YAAY,EAAE,IAAI,IAAI,UAAU,YAAY,OAAO,UAAU,KAAK,EAAE,CAAC;YAC5H,CAAC,CAAC,CAAC;YACH,MAAM,QAAQ,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,IAAI,EAAE;gBACnD,IAAI,CAAC,KAAK;oBAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;gBAChE,MAAM,KAAK,GAAG,MAAM,yBAAyB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;gBACxF,OAAO,WAAW,OAAO,gBAAgB,UAAU,CAAC,WAAW,UAAU,KAAK,EAAE,CAAC;YACnF,CAAC,CAAC,CAAC;YACH,MAAM,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE,KAAK,IAAI,EAAE;gBACrD,eAAe,GAAG,MAAM,yBAAyB,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;gBAC7F,IAAI,eAAe,CAAC,QAAQ,IAAI,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBAC9E,OAAO,eAAe,CAAC,MAAM,CAAC;YAChC,CAAC,CAAC,CAAC;YACH,MAAM,QAAQ,CAAC,MAAM,EAAE,0BAA0B,EAAE,KAAK,IAAI,EAAE;gBAC5D,IAAI,CAAC,eAAe;oBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBAC5E,IAAI,CAAC,eAAe,CAAC,YAAY;oBAAE,MAAM,IAAI,KAAK,CAAC,0DAA0D,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;gBACvI,OAAO,eAAe,CAAC,MAAM,CAAC;YAChC,CAAC,CAAC,CAAC;YACH,MAAM,QAAQ,CAAC,MAAM,EAAE,0BAA0B,EAAE,KAAK,IAAI,EAAE;gBAC5D,MAAM,MAAM,GAAG,MAAM,+BAA+B,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;gBACvF,OAAO,YAAY,MAAM,CAAC,UAAU,IAAI,UAAU,iBAAiB,MAAM,CAAC,eAAe,EAAE,CAAC;YAC9F,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjH,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;gBAC/C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,sDAAsD,OAAO,EAAE,CAAC,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;gBAC/C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,4CAA4C,CAAC,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,CAAC,MAAM,EAAE,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,QAAQ,GAAG,uBAAuB,CAAC;gBACvC,GAAG,EAAE,WAAW;gBAChB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,eAAe;aACpD,CAAC,CAAC;YACH,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YACrF,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,MAAM,gCAAgC,QAAQ,CAAC,aAAa,cAAc,CAAC;QAC7G,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,wEAAwE,CAAC,CAAC,CAAC;QAErH,MAAM,QAAQ,CAAC,MAAM,EAAE,kBAAkB,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;YACjD,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,WAAY,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrE,OAAO,iDAAiD,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,MAAM,cAAc,CAAC,MAAM,EAAE,uBAAuB,EAAE,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAC3F,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,8BAA8B,CAAC,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,QAAQ,CAAC,MAAM,EAAE,oBAAoB,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,OAAO,GAAG,MAAM,2BAA2B,CAAC,WAAW,CAAC,CAAC;YAC/D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/G,OAAO,mEAAmE,CAAC;QAC7E,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,CAAC,MAAM,EAAE,sBAAsB,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,MAAM,GAAG,MAAM,WAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9C,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,CAAC;gBAC7F,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,CAAC;YACD,OAAO,gDAAgD,MAAM,CAAC,OAAO,+BAA+B,CAAC;QACvG,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;YAAS,CAAC;QACT,IAAI,YAAY,EAAE,IAAI,KAAK,YAAY,IAAI,YAAY,EAAE,IAAI,KAAK,eAAe,EAAE,CAAC;YAClF,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;gBAC7C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,QAAQ;YAAE,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,IAAI,GAAG,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpD,OAAO;QACL,OAAO;QACP,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;QAC1C,gBAAgB;QAChB,MAAM;QACN,GAAG,IAAI;KACR,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,MAAkC,EAClC,IAA4B,EAC5B,GAAW,EACX,OAA0B;IAE1B,MAAM,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC,CAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACvD,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,MAAkC,EAClC,OAA6B,EAC7B,GAAW;IAEX,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;YACnC,OAAO,EAAE,OAAO,CAAC,YAAa;YAC9B,GAAG;YACH,SAAS,EAAE,OAAO,CAAC,SAAU;YAC7B,SAAS,EAAE,OAAO,CAAC,gBAAgB,IAAI,MAAM;SAC9C,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1F,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,4CAA4C,EAAE,CAAC,CAAC;IAC9H,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3E,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,8DAA8D,EAAE,CAAC,CAAC;IAChJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,2BAA2B,CAAC,IAAY;IACrD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC5B,IAAI,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,4BAA4B,CAAC;IAC7C,MAAM,KAAK,GAAG,CAAC,GAAW,EAAQ,EAAE;QAClC,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS;YACrC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,CAAC;gBACZ,SAAS;YACX,CAAC;YACD,IAAI,KAAK,KAAK,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,CAAC;IACH,CAAC,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,CAAC;IACZ,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,QAAQ,CACf,MAAkC,EAClC,IAA4B,EAC5B,EAAyB;IAEzB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,OAAO,EAAE,EAAE;SACR,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QACf,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAChF,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,CAAC,IAAI,CAAC;YACV,IAAI;YACJ,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;YAC9B,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC;SAC7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,IAAI,CAAC,IAA4B,EAAE,MAAc;IACxD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AACzD,CAAC;AAED,SAAS,IAAI,CAAC,IAA4B,EAAE,MAAc;IACxD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AACzD,CAAC;AAED,SAAS,IAAI,CAAC,IAA4B,EAAE,MAAc;IACxD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AACzD,CAAC"}
@@ -0,0 +1,11 @@
1
+ export interface RuntimeProbeResult {
2
+ detail: string;
3
+ logs: string;
4
+ }
5
+ export declare function runRuntimeProbe(options: {
6
+ command: readonly string[];
7
+ cwd: string;
8
+ healthUrl: string;
9
+ timeoutMs: number;
10
+ }): Promise<RuntimeProbeResult>;
11
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/certification/runtime.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgB9B"}
@@ -0,0 +1,60 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { certificationProcessEnv, redact } from './process.js';
3
+ export async function runRuntimeProbe(options) {
4
+ const child = spawn(options.command[0], options.command.slice(1), {
5
+ cwd: options.cwd,
6
+ stdio: 'pipe',
7
+ env: certificationProcessEnv(),
8
+ });
9
+ const logs = collectLogs(child);
10
+ try {
11
+ const response = await waitForHealth(options.healthUrl, options.timeoutMs);
12
+ return {
13
+ detail: `${options.command.join(' ')} responded with HTTP ${response.status} at ${options.healthUrl}`,
14
+ logs: logs(),
15
+ };
16
+ }
17
+ finally {
18
+ await stopChild(child);
19
+ }
20
+ }
21
+ function collectLogs(child) {
22
+ let output = '';
23
+ child.stdout.on('data', (chunk) => { output += String(chunk); });
24
+ child.stderr.on('data', (chunk) => { output += String(chunk); });
25
+ return () => redact(output).slice(-1200);
26
+ }
27
+ async function waitForHealth(url, timeoutMs) {
28
+ const started = Date.now();
29
+ while (Date.now() - started < timeoutMs) {
30
+ try {
31
+ const response = await fetch(url);
32
+ if (response.ok)
33
+ return response;
34
+ }
35
+ catch {
36
+ // Retry until timeout.
37
+ }
38
+ await new Promise((resolvePromise) => setTimeout(resolvePromise, 500));
39
+ }
40
+ throw new Error(`Timed out waiting for ${url}`);
41
+ }
42
+ function stopChild(child) {
43
+ return new Promise((resolvePromise) => {
44
+ if (child.exitCode !== null || child.killed) {
45
+ resolvePromise();
46
+ return;
47
+ }
48
+ const timeout = setTimeout(() => {
49
+ if (child.exitCode === null && !child.killed)
50
+ child.kill('SIGKILL');
51
+ resolvePromise();
52
+ }, 2_000);
53
+ child.once('exit', () => {
54
+ clearTimeout(timeout);
55
+ resolvePromise();
56
+ });
57
+ child.kill('SIGTERM');
58
+ });
59
+ }
60
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/certification/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import type { IntegrationId } from '../detect/index.js';
2
+ import type { StabilityLevel } from '../registry/manifest.js';
3
+ export type CertificationCheckStatus = 'pass' | 'fail' | 'skip';
4
+ export type CertificationCheckName = 'clean-fixture' | 'framework-detection' | 'fixture-dependency-install' | 'wizard-onboarding' | 'sdk-package-install' | 'build-after-onboarding' | 'runtime-start' | 'runtime-smoke' | 'event-ingestion' | 'release-linkage' | 'source-map-upload' | 'source-map-symbolication' | 'security-snapshot-extraction' | 'security-snapshot-upload' | 'trace-request-context' | 'wizard-uninstall' | 'build-after-uninstall' | 'orphan-import-scan' | 'rollback-cleanliness' | 'certification-cleanup';
5
+ export interface CertificationCheckResult {
6
+ name: CertificationCheckName;
7
+ status: CertificationCheckStatus;
8
+ durationMs: number;
9
+ detail: string;
10
+ }
11
+ export interface CertificationFixture {
12
+ id: string;
13
+ framework: IntegrationId;
14
+ title: string;
15
+ fixtureDir: string;
16
+ tier: 1 | 2;
17
+ buildCommand?: readonly string[];
18
+ startCommand?: readonly string[];
19
+ healthUrl?: string;
20
+ runtimeTimeoutMs?: number;
21
+ localSdkPackages: readonly string[];
22
+ requiresLiveBackend: readonly CertificationCheckName[];
23
+ stableRequiredChecks: readonly CertificationCheckName[];
24
+ }
25
+ export interface CertificationPackageArtifact {
26
+ packageName: string;
27
+ version: string;
28
+ sourceDir: string;
29
+ tarballPath: string;
30
+ packedFileCount: number;
31
+ packedSizeBytes: number;
32
+ }
33
+ export interface CertificationRunOptions {
34
+ framework?: IntegrationId;
35
+ fixture?: string;
36
+ cwd?: string;
37
+ installSdkPackages?: boolean;
38
+ liveBackend?: boolean;
39
+ disposableBackend?: boolean;
40
+ apiKey?: string;
41
+ host?: string;
42
+ project?: string;
43
+ environment?: string;
44
+ release?: string;
45
+ keepTemp?: boolean;
46
+ }
47
+ export interface CertificationFixtureResult {
48
+ fixture: CertificationFixture;
49
+ tempDir: string | null;
50
+ packageArtifacts: CertificationPackageArtifact[];
51
+ checks: CertificationCheckResult[];
52
+ certifiedStable: boolean;
53
+ recommendedStability: StabilityLevel;
54
+ failedRequiredChecks: CertificationCheckName[];
55
+ skippedRequiredChecks: CertificationCheckName[];
56
+ }
57
+ export interface CertificationRunResult {
58
+ schemaVersion: 1;
59
+ certificationVersion: 5;
60
+ generatedAt: string;
61
+ buildMetadata: {
62
+ nodeVersion: string;
63
+ platform: string;
64
+ arch: string;
65
+ };
66
+ options: {
67
+ installSdkPackages: boolean;
68
+ liveBackend: boolean;
69
+ disposableBackend: boolean;
70
+ };
71
+ results: CertificationFixtureResult[];
72
+ }
73
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/certification/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/certification/types.ts"],"names":[],"mappings":""}
package/dist/cli.js CHANGED
@@ -10,6 +10,8 @@ import { runLogout } from './commands/logout.js';
10
10
  import { runWhoami } from './commands/whoami.js';
11
11
  import { runOrgsList } from './commands/orgs.js';
12
12
  import { runProjectsList, runProjectsCreate } from './commands/projects.js';
13
+ import { runSecuritySnapshot } from './commands/security-snapshot.js';
14
+ import { runCertify } from './commands/certify.js';
13
15
  import { restoreList, restoreShow, restoreApply, restoreDiff } from './commands/restore.js';
14
16
  import { runConfigValidate, runConfigMigrate } from './commands/config-cmd.js';
15
17
  import { setDebug, log } from './util/log.js';
@@ -101,6 +103,66 @@ program
101
103
  reporter: reporterFor(cmd.parent),
102
104
  }));
103
105
  });
106
+ program
107
+ .command('security-snapshot')
108
+ .description('Upload a normalized dependency snapshot for Security Center')
109
+ .requiredOption('--project <idOrSlug>', 'AllStak project UUID or slug')
110
+ .option('--token <token>', 'AllStak user access token (overrides ALLSTAK_TOKEN)')
111
+ .option('--host <url>', 'AllStak control-plane API host', DEFAULT_API_HOST)
112
+ .option('--environment <env>', 'environment name')
113
+ .option('--cwd <path>', 'project or workspace directory')
114
+ .option('--source-ref <ref>', 'source reference, such as repo or workspace name')
115
+ .option('--source-commit-sha <sha>', 'source commit SHA')
116
+ .option('--source-branch <branch>', 'source branch name')
117
+ .option('--max-dependencies <n>', 'maximum dependencies to include', '10000')
118
+ .action(async (opts, cmd) => {
119
+ await withTelemetry({ command: 'security-snapshot', integration: null, ...telemetryFlagsFor(cmd.parent) }, () => runSecuritySnapshot({
120
+ project: opts.project,
121
+ token: opts.token,
122
+ host: opts.host,
123
+ environment: opts.environment,
124
+ cwd: opts.cwd,
125
+ sourceRef: opts.sourceRef,
126
+ sourceCommitSha: opts.sourceCommitSha,
127
+ sourceBranch: opts.sourceBranch,
128
+ ci: true,
129
+ maxDependencies: Number(opts.maxDependencies),
130
+ reporter: reporterFor(cmd.parent),
131
+ }));
132
+ });
133
+ program
134
+ .command('certify')
135
+ .description('Run deterministic SDK certification checks against framework fixtures')
136
+ .option('--framework <id>', 'framework id to certify (react, next, expo, nestjs, fastify)')
137
+ .option('--fixture <id>', 'specific certification fixture id')
138
+ .option('--install-sdk-packages', 'install AllStak SDK packages during certification', false)
139
+ .option('--live-backend', 'enable live backend-dependent checks', false)
140
+ .option('--disposable-backend', 'create and clean up a disposable certification project/API key for live checks', false)
141
+ .option('--api-key <key>', 'AllStak project API key for live checks')
142
+ .option('--host <url>', 'AllStak API host for live checks')
143
+ .option('--project <slug>', 'project slug for live checks')
144
+ .option('--environment <env>', 'environment name for live checks')
145
+ .option('--release <release>', 'release identifier for live checks')
146
+ .option('--keep-temp', 'keep temporary certified fixture copies for debugging', false)
147
+ .option('--out <path>', 'write certification report to a file')
148
+ .option('--json', 'emit JSON instead of markdown', false)
149
+ .action(async (opts, cmd) => {
150
+ await withTelemetry({ command: 'certify', integration: opts.framework ?? null, ...telemetryFlagsFor(cmd.parent) }, () => runCertify({
151
+ framework: opts.framework,
152
+ fixture: opts.fixture,
153
+ installSdkPackages: opts.installSdkPackages,
154
+ liveBackend: opts.liveBackend,
155
+ disposableBackend: opts.disposableBackend,
156
+ apiKey: opts.apiKey,
157
+ host: opts.host,
158
+ project: opts.project,
159
+ environment: opts.environment,
160
+ release: opts.release,
161
+ keepTemp: opts.keepTemp,
162
+ out: opts.out,
163
+ json: opts.json === true || cmd.parent.optsWithGlobals().json === true,
164
+ }));
165
+ });
104
166
  program
105
167
  .command('repair')
106
168
  .description('Re-apply patches idempotently to fix drift')
@@ -135,9 +197,14 @@ program
135
197
  });
136
198
  program
137
199
  .command('list')
138
- .description('List all registered integrations and their manifests')
139
- .action(async (_opts, cmd) => {
140
- await withTelemetry({ command: 'list', integration: null, ...telemetryFlagsFor(cmd.parent) }, async () => runList(reporterFor(cmd.parent)));
200
+ .description('List public Stable SDK integrations by default')
201
+ .option('--experimental', 'include internal experimental and unsupported integrations', false)
202
+ .option('--all', 'include every registered integration', false)
203
+ .action(async (opts, cmd) => {
204
+ await withTelemetry({ command: 'list', integration: null, ...telemetryFlagsFor(cmd.parent) }, async () => runList(reporterFor(cmd.parent), {
205
+ experimental: opts.experimental,
206
+ all: opts.all,
207
+ }));
141
208
  });
142
209
  // ─── auth / user-level commands ─────────────────────────────────────────────
143
210
  program