@warpgogol/werkstatt-shared 0.14.0 → 0.15.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 (437) hide show
  1. package/README.md +31 -13
  2. package/README.uk.md +25 -15
  3. package/package.json +519 -762
  4. package/src/{share/agent → agent}/ard-catalog.ts +6 -1
  5. package/src/{share/agent → agent}/dns-aid.test.ts +2 -2
  6. package/src/{share/agent → agent}/manifest.ts +15 -1
  7. package/src/{share/agent → agent}/search.ts +6 -1
  8. package/src/{share → agent}/tests/api-catalog.test.ts +2 -2
  9. package/src/{share → agent}/tests/ard-catalog.test.ts +2 -2
  10. package/src/{share → agent}/tests/capability.test.ts +1 -1
  11. package/src/{share → agent}/tests/fleet-catalog.test.ts +1 -1
  12. package/src/{share → agent}/tests/knowledge.test.ts +2 -2
  13. package/src/{share → agent}/tests/manifest.test.ts +1 -1
  14. package/src/{share → agent}/tests/mcp-card.test.ts +2 -2
  15. package/src/agent/tests/omit-empty.test.ts +33 -0
  16. package/src/{share → agent}/tests/openapi.test.ts +2 -2
  17. package/src/{share → agent}/tests/proof.test.ts +1 -1
  18. package/src/{share → attribution}/material-credits.ts +4 -4
  19. package/src/{share → checks}/check-hints.ts +6 -1
  20. package/src/checks/index.ts +4 -1
  21. package/src/checks/lib/astro-site-url.ts +6 -1
  22. package/src/checks/lib/i18n.ts +14 -0
  23. package/src/checks/result-helpers.ts +22 -5
  24. package/src/checks/tests/remediation-auto-populate.test.ts +83 -0
  25. package/src/{share → client-scripts}/counter-utils.ts +6 -2
  26. package/src/{share/scripts → client-scripts}/external-link-qr.ts +11 -16
  27. package/src/{share/scripts → client-scripts}/external-links.ts +12 -1
  28. package/src/{share/scripts → client-scripts}/gsap-counter.ts +8 -3
  29. package/src/client-scripts/index.ts +35 -0
  30. package/src/{share/scripts → client-scripts}/inline-number-animation.ts +1 -1
  31. package/src/{share/scripts → client-scripts}/lenis.ts +6 -1
  32. package/src/{share/scripts → client-scripts}/lordicon.ts +6 -1
  33. package/src/{share/scripts → client-scripts}/orchestrator.ts +10 -1
  34. package/src/{share/scripts → client-scripts}/scheduler.ts +6 -1
  35. package/src/client-scripts/scroll-spy.ts +106 -0
  36. package/src/client-scripts/tests/external-link-qr.test.ts +8 -0
  37. package/src/client-scripts/tests/external-links.test.ts +25 -0
  38. package/src/client-scripts/tests/gsap-counter.test.ts +8 -0
  39. package/src/client-scripts/tests/gsap-mountain-journey.test.ts +8 -0
  40. package/src/client-scripts/tests/gsap-parallax.test.ts +8 -0
  41. package/src/client-scripts/tests/gsap-reveal.test.ts +8 -0
  42. package/src/client-scripts/tests/gsap-stagger.test.ts +8 -0
  43. package/src/client-scripts/tests/inline-number-animation.test.ts +8 -0
  44. package/src/client-scripts/tests/lenis.test.ts +8 -0
  45. package/src/client-scripts/tests/live-photos.test.ts +8 -0
  46. package/src/client-scripts/tests/lordicon.test.ts +8 -0
  47. package/src/client-scripts/tests/orchestrator.test.ts +47 -0
  48. package/src/client-scripts/tests/scheduler.test.ts +23 -0
  49. package/src/client-scripts/tests/scroll-spy.test.ts +204 -0
  50. package/src/{share/scripts → client-scripts/tests}/video-player.test.ts +51 -31
  51. package/src/component/contracts.ts +206 -0
  52. package/src/component/index.ts +11 -0
  53. package/src/{share → content}/content-reference.ts +3 -3
  54. package/src/{share/content → content}/entity-id.ts +6 -3
  55. package/src/content/index.ts +3 -0
  56. package/src/{share/content → content}/merge.ts +6 -1
  57. package/src/content/system-manifest.test.ts +107 -0
  58. package/src/content/system-manifest.ts +12 -94
  59. package/src/{share → content}/tests/resolve-field-path.test.ts +1 -1
  60. package/src/{share → content}/tests/substitute-deep.test.ts +1 -1
  61. package/src/content-discipline/index.ts +19 -0
  62. package/src/{share/content-discipline → content-discipline}/parsers.ts +2 -2
  63. package/src/{share/env.d.ts → env.d.ts} +6 -3
  64. package/src/fingerprint/canonical-json.ts +731 -0
  65. package/src/fingerprint/index.ts +12 -0
  66. package/src/fingerprint/primitives.ts +72 -0
  67. package/src/{share/i18n → i18n}/localization.ts +6 -2
  68. package/src/integration/adapters.ts +10 -71
  69. package/src/integration/dispatch.ts +1 -1
  70. package/src/integration/funnel.ts +6 -1
  71. package/src/integration/index.ts +101 -4
  72. package/src/integration/lagebild-destination-adapter.ts +108 -0
  73. package/src/integration/lagebild-ingress.ts +7 -12
  74. package/src/integration/orchestration.ts +11 -10
  75. package/src/integration/tests/deliver-event.test.ts +1 -1
  76. package/src/integration/tests/dispatch.test.ts +4 -4
  77. package/src/integration/tests/hub-runtime.test.ts +22 -14
  78. package/src/integration/vitest.config.ts +8 -0
  79. package/src/kernel/desired-state.ts +227 -0
  80. package/src/kernel/diagnostic.ts +289 -0
  81. package/src/kernel/fs-atomic.ts +131 -0
  82. package/src/kernel/index.ts +15 -0
  83. package/src/kernel/tests/fs-atomic.test.ts +150 -0
  84. package/src/kernel/tests/workspace-io.test.ts +187 -0
  85. package/src/kernel/types.ts +459 -0
  86. package/src/kernel/workspace-io.ts +248 -0
  87. package/src/{share → knowledge}/tests/claim.test.ts +1 -1
  88. package/src/{share → knowledge}/tests/derivation.test.ts +1 -1
  89. package/src/{share → knowledge}/tests/freshness.test.ts +1 -1
  90. package/src/{share → knowledge}/tests/ledger.test.ts +1 -1
  91. package/src/{share → knowledge}/tests/plan.test.ts +1 -1
  92. package/src/{share → knowledge}/tests/source.test.ts +1 -1
  93. package/src/legal/index.ts +15 -0
  94. package/src/{share/middleware → middleware}/access-protection.ts +8 -8
  95. package/src/{share → node}/dev-props-validator.ts +6 -1
  96. package/src/{share → node}/import-scan.ts +23 -3
  97. package/src/{share → node}/semantic/derived-prices-loader.ts +4 -2
  98. package/src/{share → node}/semantic/markdown-twin-provenance.ts +1 -1
  99. package/src/node/tests/derived-prices-loader.test.ts +59 -0
  100. package/src/node/tests/markdown-twin-provenance.test.ts +152 -0
  101. package/src/observability/env-resolver.ts +6 -1
  102. package/src/observability/index.ts +6 -1
  103. package/src/observability/otlp-converter.ts +6 -1
  104. package/src/observability/otlp-transport.ts +6 -1
  105. package/src/observability/pusher.ts +6 -1
  106. package/src/observability/redact.ts +6 -1
  107. package/src/observability/typed-refs.ts +6 -2
  108. package/src/observability/vitest.config.ts +1 -0
  109. package/src/{share → offers}/formula-eval.ts +3 -3
  110. package/src/{share → offers}/tests/formula-eval.test.ts +2 -2
  111. package/src/onboarding/index.ts +1 -0
  112. package/src/{share → onboarding}/tests/onboarding-yaml.test.ts +1 -1
  113. package/src/ontology/archetype-registry.ts +6 -1
  114. package/src/ontology/archetypes/index.json +33 -1
  115. package/src/ontology/archetypes/index.yaml +27 -1
  116. package/src/ontology/archetypes/sections/entity-grid.yaml +46 -0
  117. package/src/ontology/archetypes/sections/exit-diagram.yaml +43 -0
  118. package/src/ontology/biome-token-projection.ts +6 -1
  119. package/src/ontology/cosmic/index.ts +6 -1
  120. package/src/ontology/cosmic/moon-catalog.ts +6 -1
  121. package/src/ontology/cosmic/planet-catalog.ts +6 -1
  122. package/src/ontology/cosmic/star-catalog.ts +6 -1
  123. package/src/ontology/enums.ts +6 -1
  124. package/src/ontology/external-surfaces/index.ts +1 -1
  125. package/src/ontology/index.ts +6 -2
  126. package/src/ontology/manifest.ts +26 -4
  127. package/src/ontology/operations/artifact-store.ts +45 -0
  128. package/src/ontology/operations/dht.ts +98 -0
  129. package/src/ontology/operations/handoff.ts +92 -0
  130. package/src/ontology/operations/index.ts +187 -1
  131. package/src/ontology/operations/leitstand.ts +99 -0
  132. package/src/ontology/operations/materialization.ts +90 -0
  133. package/src/ontology/operations/mission.ts +111 -0
  134. package/src/ontology/operations/naming-policy.ts +132 -0
  135. package/src/ontology/operations/notausgang.ts +64 -0
  136. package/src/ontology/operations/release.ts +121 -0
  137. package/src/ontology/operations/sternsystem.ts +192 -0
  138. package/src/ontology/operations/werkstatt.ts +48 -0
  139. package/src/ontology/schemas/biome.ts +7 -2
  140. package/src/ontology/schemas/capability.ts +1 -1
  141. package/src/ontology/schemas/constellation.ts +6 -1
  142. package/src/ontology/schemas/index.ts +6 -2
  143. package/src/ontology/schemas/manifest-resolver.ts +6 -1
  144. package/src/ontology/schemas/page-entry.ts +9 -5
  145. package/src/ontology/schemas/system/growth.ts +6 -1
  146. package/src/ontology/schemas/system/manifest.ts +40 -1
  147. package/src/ontology/schemas/system/page-output.ts +7 -6
  148. package/src/ontology/schemas/system/tests/growth.test.ts +22 -0
  149. package/src/ontology/schemas/system/tests/integrations.test.ts +12 -0
  150. package/src/ontology/schemas/system/tests/manifest.test.ts +22 -0
  151. package/src/ontology/schemas/system/tests/page-output.test.ts +13 -0
  152. package/src/ontology/schemas/system/tests/release.test.ts +22 -0
  153. package/src/ontology/schemas/system/tests/text.test.ts +18 -0
  154. package/src/ontology/schemas/system/tests/verification.test.ts +12 -0
  155. package/src/ontology/schemas/system/text.ts +15 -0
  156. package/src/ontology/schemas/system.ts +6 -2
  157. package/src/ontology/schemas/tests/biome.test.ts +19 -0
  158. package/src/ontology/schemas/tests/capability.test.ts +22 -0
  159. package/src/ontology/schemas/tests/constellation.test.ts +22 -0
  160. package/src/ontology/schemas/tests/dns-records.test.ts +13 -0
  161. package/src/ontology/schemas/tests/manifest-resolver.test.ts +13 -0
  162. package/src/ontology/schemas/tests/page-entry.test.ts +22 -0
  163. package/src/ontology/schemas/tests/section-archetype.test.ts +12 -0
  164. package/src/ontology/schemas/tests/site-family.test.ts +18 -0
  165. package/src/ontology/schemas/tests/system.test.ts +20 -0
  166. package/src/ontology/shared-section-props/body-fragments.ts +2 -0
  167. package/src/ontology/tests/sternsystem-owner.test.ts +1 -1
  168. package/src/ontology/vitest.config.ts +1 -0
  169. package/src/{share → page}/page.ts +13 -9
  170. package/src/{share → page}/tests/dev-props-validator.test.ts +1 -1
  171. package/src/{share → page}/tests/hero-section-numbering-parity.test.ts +1 -1
  172. package/src/passport/index.ts +6 -1
  173. package/src/passport/key-rotate.ts +10 -2
  174. package/src/passport/schema.ts +6 -1
  175. package/src/passport/sign.ts +8 -3
  176. package/src/passport/vitest.config.ts +1 -0
  177. package/src/pbt/index.test.ts +95 -0
  178. package/src/pbt/index.ts +251 -0
  179. package/src/plugin/plugin-contract.ts +1 -1
  180. package/src/{share → policy}/entitlement.ts +24 -4
  181. package/src/{share → policy}/feature-policy.ts +8 -3
  182. package/src/{share → policy}/visibility.ts +7 -2
  183. package/src/redirects/redirects.ts +117 -0
  184. package/src/{share → redirects/tests}/redirects.test.ts +1 -1
  185. package/src/remediation/remediation-catalog.ts +316 -0
  186. package/src/{share/routes → routes}/template-filter.ts +1 -1
  187. package/src/{share → runtime}/runtime-context.ts +7 -2
  188. package/src/{share → runtime}/shared-context.ts +1 -1
  189. package/src/{share/schemas → schemas}/claims.ts +2 -2
  190. package/src/{share/schemas → schemas}/effects.ts +6 -1
  191. package/src/{share/schemas → schemas}/features.ts +1 -1
  192. package/src/{share/schemas → schemas}/index.ts +3 -3
  193. package/src/{share/schemas → schemas}/navigation.ts +6 -1
  194. package/src/{share/schemas → schemas}/page-base.ts +6 -2
  195. package/src/{share/schemas → schemas}/person.ts +1 -1
  196. package/src/{share/schemas → schemas}/standard-list-item.ts +1 -1
  197. package/src/schemas/tests/claim-records.test.ts +52 -0
  198. package/src/schemas/tests/claims.test.ts +23 -0
  199. package/src/schemas/tests/effects.test.ts +116 -0
  200. package/src/schemas/tests/features.test.ts +61 -0
  201. package/src/schemas/tests/horizontal-align.test.ts +16 -0
  202. package/src/schemas/tests/icon-color.test.ts +16 -0
  203. package/src/schemas/tests/live-photo.test.ts +40 -0
  204. package/src/schemas/tests/material-credit.test.ts +51 -0
  205. package/src/schemas/tests/media.test.ts +26 -0
  206. package/src/schemas/tests/navigation.test.ts +58 -0
  207. package/src/schemas/tests/page-base.test.ts +19 -0
  208. package/src/schemas/tests/participant.test.ts +26 -0
  209. package/src/schemas/tests/person.test.ts +12 -0
  210. package/src/schemas/tests/print.test.ts +30 -0
  211. package/src/schemas/tests/section-background.test.ts +31 -0
  212. package/src/schemas/tests/section-body.test.ts +16 -0
  213. package/src/schemas/tests/section-cards.test.ts +17 -0
  214. package/src/schemas/tests/section-cta.test.ts +41 -0
  215. package/src/schemas/tests/section-header.test.ts +31 -0
  216. package/src/schemas/tests/section-image.test.ts +24 -0
  217. package/src/schemas/tests/section-motion.test.ts +29 -0
  218. package/src/schemas/tests/section-shell.test.ts +42 -0
  219. package/src/schemas/tests/section-stats.test.ts +17 -0
  220. package/src/schemas/tests/site-background.test.ts +33 -0
  221. package/src/schemas/tests/standard-list-item.test.ts +16 -0
  222. package/src/{share → sections}/rfc0042-utils.ts +1 -1
  223. package/src/{share/semantic → semantic}/block-extractors/index.ts +20 -1
  224. package/src/{share/semantic → semantic}/business-projection.ts +95 -1
  225. package/src/semantic/canonical-uri.ts +54 -0
  226. package/src/{share/semantic → semantic}/extract.ts +100 -1
  227. package/src/semantic/fact-extraction.test.ts +47 -0
  228. package/src/semantic/fact-extraction.ts +46 -0
  229. package/src/semantic/freshness.ts +67 -0
  230. package/src/{share/semantic → semantic}/ids.ts +6 -1
  231. package/src/{share/semantic → semantic}/index.ts +9 -2
  232. package/src/{share/semantic → semantic}/jsonld/breadcrumb.ts +6 -2
  233. package/src/{share/semantic → semantic}/jsonld/context.ts +6 -2
  234. package/src/{share/semantic → semantic}/jsonld/faq.ts +6 -2
  235. package/src/{share/semantic → semantic}/jsonld/initiative.ts +6 -1
  236. package/src/{share/semantic → semantic}/jsonld/organization.ts +6 -1
  237. package/src/{share/semantic → semantic}/jsonld/person.ts +6 -2
  238. package/src/{share/semantic → semantic}/jsonld/service.ts +6 -2
  239. package/src/semantic/jsonld/shared.ts +36 -0
  240. package/src/semantic/jsonld/tests/article.test.ts +89 -0
  241. package/src/semantic/jsonld/tests/breadcrumb.test.ts +62 -0
  242. package/src/semantic/jsonld/tests/collection-list.test.ts +39 -0
  243. package/src/semantic/jsonld/tests/faq.test.ts +60 -0
  244. package/src/semantic/jsonld/tests/initiative.test.ts +56 -0
  245. package/src/semantic/jsonld/tests/organization.test.ts +123 -0
  246. package/src/semantic/jsonld/tests/person.test.ts +89 -0
  247. package/src/semantic/jsonld/tests/service.test.ts +65 -0
  248. package/src/semantic/jsonld/tests/shared.test.ts +41 -0
  249. package/src/semantic/jsonld/tests/video.test.ts +84 -0
  250. package/src/semantic/jsonld/tests/webpage.test.ts +93 -0
  251. package/src/semantic/jsonld/tests/website.test.ts +27 -0
  252. package/src/semantic/jsonld/types.ts +24 -0
  253. package/src/{share/semantic → semantic}/jsonld/webpage.ts +6 -1
  254. package/src/semantic/jsonld/website.ts +32 -0
  255. package/src/{share/semantic → semantic}/jsonld.ts +6 -1
  256. package/src/{share/semantic → semantic}/llms.ts +41 -3
  257. package/src/{share/semantic → semantic}/models.ts +27 -38
  258. package/src/{share/semantic → semantic}/organization-profile.ts +3 -0
  259. package/src/{share/semantic → semantic}/page-builders/markdown-page.ts +6 -3
  260. package/src/{share/semantic → semantic}/page-utils.ts +6 -3
  261. package/src/semantic/tests/ai.test.ts +55 -0
  262. package/src/semantic/tests/block-extraction.test.ts +34 -0
  263. package/src/{share/tests/breadcrumbs.test.ts → semantic/tests/breadcrumbs-0229.test.ts} +1 -1
  264. package/src/semantic/tests/breadcrumbs.test.ts +127 -0
  265. package/src/{share → semantic}/tests/build-page-price-markers.test.ts +2 -2
  266. package/src/semantic/tests/build-page.test.ts +122 -0
  267. package/src/semantic/tests/business-projection.test.ts +367 -0
  268. package/src/semantic/tests/canonical-uri.test.ts +56 -0
  269. package/src/semantic/tests/extract.test.ts +209 -0
  270. package/src/semantic/tests/feed.test.ts +113 -0
  271. package/src/semantic/tests/freshness.pbt.test.ts +108 -0
  272. package/src/semantic/tests/helpers.ts +32 -0
  273. package/src/semantic/tests/ids.test.ts +118 -0
  274. package/src/{share/tests/image-sitemap.test.ts → semantic/tests/image-sitemap-0150.test.ts} +1 -1
  275. package/src/semantic/tests/image-sitemap.test.ts +109 -0
  276. package/src/{share → semantic}/tests/jsonld-service.test.ts +2 -2
  277. package/src/{share → semantic}/tests/jsonld-video.test.ts +3 -3
  278. package/src/{share → semantic}/tests/jsonld-webpage.test.ts +3 -3
  279. package/src/semantic/tests/jsonld.test.ts +61 -0
  280. package/src/{share → semantic}/tests/llms-0789.test.ts +2 -2
  281. package/src/semantic/tests/llms-policy.test.ts +60 -0
  282. package/src/semantic/tests/llms.test.ts +164 -0
  283. package/src/semantic/tests/markdown-hygiene.test.ts +72 -0
  284. package/src/semantic/tests/markdown-page.test.ts +97 -0
  285. package/src/{share → semantic}/tests/organization-jsonld.test.ts +3 -3
  286. package/src/semantic/tests/organization-profile.test.ts +107 -0
  287. package/src/{share/tests/output-projection.test.ts → semantic/tests/output-projection-0143.test.ts} +1 -1
  288. package/src/semantic/tests/output-projection.test.ts +77 -0
  289. package/src/semantic/tests/page-markdown.test.ts +98 -0
  290. package/src/semantic/tests/page-utils.test.ts +88 -0
  291. package/src/{share/tests/price-marker-resolver.test.ts → semantic/tests/price-marker-resolver-0767.test.ts} +2 -2
  292. package/src/semantic/tests/price-marker-resolver.test.ts +90 -0
  293. package/src/semantic/tests/project-claims.pbt.test.ts +60 -0
  294. package/src/semantic/tests/robots.test.ts +70 -0
  295. package/src/{share/semantic → semantic}/tests/split-sentences.test.ts +1 -1
  296. package/src/{share → semantic}/tests/twin-path.test.ts +1 -1
  297. package/src/semantic/tests/update-stamp.test.ts +102 -0
  298. package/src/signing/index.ts +13 -0
  299. package/src/signing/key.ts +139 -0
  300. package/src/signing/sign.ts +66 -0
  301. package/src/signing/types.ts +29 -0
  302. package/src/{share/slug → slug}/slug-url.ts +4 -1
  303. package/src/stack/run-tool.ts +108 -0
  304. package/src/stack/stack-checks.ts +124 -0
  305. package/src/stack/tests/run-tool.test.ts +138 -0
  306. package/src/stack/tests/stack-checks.test.ts +141 -0
  307. package/src/stack/tests/walk-files.test.ts +131 -0
  308. package/src/stack/walk-files.ts +114 -0
  309. package/src/surface/blueprint.ts +342 -66
  310. package/src/surface/decision-composer.ts +6 -1
  311. package/src/surface/geo.ts +6 -1
  312. package/src/surface/index.ts +11 -7
  313. package/src/surface/types.ts +2 -2
  314. package/src/surface/vitest.config.ts +1 -0
  315. package/src/tests/signing-core.test.ts +129 -0
  316. package/src/{share → text}/css-value-normalize.ts +6 -1
  317. package/src/text/string-utils.ts +24 -0
  318. package/src/{share → text}/tests/text-normalize.test.ts +5 -0
  319. package/src/{share → text}/text-normalize.ts +4 -3
  320. package/src/{share → text}/wrap-inline-numbers.ts +1 -1
  321. package/src/types/axiom-study.d.ts +36 -0
  322. package/src/types/hls-js-light.d.ts +21 -0
  323. package/src/types/qrcode-browser.d.ts +23 -0
  324. package/src/typography/fix.pbt.test.ts +208 -0
  325. package/src/typography/fix.ts +148 -0
  326. package/src/typography/index.ts +54 -0
  327. package/src/typography/locale-defaults.ts +97 -0
  328. package/src/typography/rules-tier1.test.ts +459 -0
  329. package/src/typography/rules-tier1.ts +925 -0
  330. package/src/typography/rules-tier2-locale.pbt.test.ts +190 -0
  331. package/src/typography/rules-tier2-locale.test.ts +286 -0
  332. package/src/typography/rules-tier2-locale.ts +399 -0
  333. package/src/typography/rules-tier2-structure.test.ts +330 -0
  334. package/src/typography/rules-tier2-structure.ts +378 -0
  335. package/src/typography/rules-tier3-advisory.test.ts +290 -0
  336. package/src/typography/rules-tier3-advisory.ts +239 -0
  337. package/src/typography/text-surface.test.ts +244 -0
  338. package/src/typography/text-surface.ts +448 -0
  339. package/src/index.ts +0 -14
  340. package/src/integration/port-barrel.ts +0 -105
  341. package/src/share/content/index.ts +0 -16
  342. package/src/share/content-discipline/index.ts +0 -14
  343. package/src/share/index.ts +0 -86
  344. package/src/share/legal/index.ts +0 -1
  345. package/src/share/redirects.ts +0 -54
  346. package/src/share/scripts/index.ts +0 -26
  347. package/src/share/semantic/jsonld/shared.ts +0 -31
  348. package/src/share/semantic/jsonld/types.ts +0 -18
  349. package/src/share/semantic/jsonld/website.ts +0 -27
  350. package/src/share/string-utils.ts +0 -19
  351. package/src/share/types/axiom-study.d.ts +0 -22
  352. package/src/share/types/hls-js-light.d.ts +0 -16
  353. package/src/share/types/qrcode-browser.d.ts +0 -18
  354. package/src/share/utility-registry.yaml +0 -36
  355. package/src/share/vitest.config.ts +0 -8
  356. package/src/surface/blueprint-schema.ts +0 -314
  357. package/src/surface/blueprint-types.ts +0 -256
  358. /package/src/{share/agent → agent}/api-catalog.ts +0 -0
  359. /package/src/{share/agent → agent}/capability.ts +0 -0
  360. /package/src/{share/agent → agent}/dns-aid.ts +0 -0
  361. /package/src/{share/agent → agent}/fleet-catalog.ts +0 -0
  362. /package/src/{share/agent → agent}/index.ts +0 -0
  363. /package/src/{share/agent → agent}/knowledge.ts +0 -0
  364. /package/src/{share/agent → agent}/mcp-card.ts +0 -0
  365. /package/src/{share/agent → agent}/omit-empty.ts +0 -0
  366. /package/src/{share/agent → agent}/openapi.ts +0 -0
  367. /package/src/{share/agent → agent}/proof.ts +0 -0
  368. /package/src/{share/agent → agent}/search.test.ts +0 -0
  369. /package/src/{share → attribution}/attribution-display.ts +0 -0
  370. /package/src/{share/scripts → client-scripts}/gsap-mountain-journey.ts +0 -0
  371. /package/src/{share/scripts → client-scripts}/gsap-parallax.ts +0 -0
  372. /package/src/{share/scripts → client-scripts}/gsap-reveal.ts +0 -0
  373. /package/src/{share/scripts → client-scripts}/gsap-stagger.ts +0 -0
  374. /package/src/{share/scripts → client-scripts}/live-photos.ts +0 -0
  375. /package/src/{share/scripts → client-scripts}/video-player.ts +0 -0
  376. /package/src/{share/content → content}/resolve-field-path.ts +0 -0
  377. /package/src/{share/content → content}/substitute-deep.ts +0 -0
  378. /package/src/{share → content}/tests/content-ref-index.test.ts +0 -0
  379. /package/src/{share/content-discipline → content-discipline}/types.ts +0 -0
  380. /package/src/{share → image-provider}/image-provider.ts +0 -0
  381. /package/src/{share/knowledge → knowledge}/claim.ts +0 -0
  382. /package/src/{share/knowledge → knowledge}/derivation.ts +0 -0
  383. /package/src/{share/knowledge → knowledge}/freshness.ts +0 -0
  384. /package/src/{share/knowledge → knowledge}/index.ts +0 -0
  385. /package/src/{share/knowledge → knowledge}/ledger.ts +0 -0
  386. /package/src/{share/knowledge → knowledge}/plan.ts +0 -0
  387. /package/src/{share/knowledge → knowledge}/source.ts +0 -0
  388. /package/src/{share/legal → legal}/translation-policy.ts +0 -0
  389. /package/src/{share/middleware → middleware}/language-redirect.ts +0 -0
  390. /package/src/{share/middleware → middleware}/tests/access-protection.test.ts +0 -0
  391. /package/src/{share → node}/fs/index.ts +0 -0
  392. /package/src/{share/tests/markdown-twin-provenance.test.ts → node/tests/markdown-twin-provenance-0613.test.ts} +0 -0
  393. /package/src/{share → offers}/offer-capacity.ts +0 -0
  394. /package/src/{share/onboarding-yaml/index.ts → onboarding/yaml.ts} +0 -0
  395. /package/src/{share → ontology}/tests/ontology-role-by-cosmic-name.test.ts +0 -0
  396. /package/src/{share/routes → routes}/tests/template-filter.test.ts +0 -0
  397. /package/src/{share/schemas → schemas}/claim-records.ts +0 -0
  398. /package/src/{share/schemas → schemas}/horizontal-align.ts +0 -0
  399. /package/src/{share/schemas → schemas}/icon-color.ts +0 -0
  400. /package/src/{share/schemas → schemas}/live-photo.ts +0 -0
  401. /package/src/{share/schemas → schemas}/material-credit.ts +0 -0
  402. /package/src/{share/schemas → schemas}/media.ts +0 -0
  403. /package/src/{share/schemas → schemas}/participant.ts +0 -0
  404. /package/src/{share/schemas → schemas}/print.ts +0 -0
  405. /package/src/{share/schemas → schemas}/section-background.ts +0 -0
  406. /package/src/{share/schemas → schemas}/section-body.ts +0 -0
  407. /package/src/{share/schemas → schemas}/section-cards.ts +0 -0
  408. /package/src/{share/schemas → schemas}/section-cta.ts +0 -0
  409. /package/src/{share/schemas → schemas}/section-header.ts +0 -0
  410. /package/src/{share/schemas → schemas}/section-image.ts +0 -0
  411. /package/src/{share/schemas → schemas}/section-motion.ts +0 -0
  412. /package/src/{share/schemas → schemas}/section-shell.ts +0 -0
  413. /package/src/{share/schemas → schemas}/section-stats.ts +0 -0
  414. /package/src/{share/schemas → schemas}/site-background.ts +0 -0
  415. /package/src/{share/semantic → semantic}/ai.ts +0 -0
  416. /package/src/{share/semantic → semantic}/block-extraction.ts +0 -0
  417. /package/src/{share/semantic → semantic}/breadcrumbs.ts +0 -0
  418. /package/src/{share/semantic → semantic}/build-page.ts +0 -0
  419. /package/src/{share/semantic → semantic}/feed.ts +0 -0
  420. /package/src/{share/semantic → semantic}/image-sitemap.ts +0 -0
  421. /package/src/{share/semantic → semantic}/jsonld/article.ts +0 -0
  422. /package/src/{share/semantic → semantic}/jsonld/collection-list.ts +0 -0
  423. /package/src/{share/semantic → semantic}/jsonld/video.ts +0 -0
  424. /package/src/{share/semantic → semantic}/llms-policy.ts +0 -0
  425. /package/src/{share/semantic → semantic}/markdown-hygiene.ts +0 -0
  426. /package/src/{share/semantic → semantic}/output-projection.ts +0 -0
  427. /package/src/{share/semantic → semantic}/page-markdown.ts +0 -0
  428. /package/src/{share/semantic → semantic}/price-marker-resolver.ts +0 -0
  429. /package/src/{share/semantic → semantic}/robots.ts +0 -0
  430. /package/src/{share/semantic → semantic}/update-stamp.ts +0 -0
  431. /package/src/{share/slug → slug}/heading-slugger.ts +0 -0
  432. /package/src/{share/slug → slug}/index.ts +0 -0
  433. /package/src/{share/slug → slug}/slug-id.ts +0 -0
  434. /package/src/{share/slug → slug}/strategies.ts +0 -0
  435. /package/src/{share/slug → slug}/tests/slug.test.ts +0 -0
  436. /package/src/{share → text}/tests/text-normalize.pbt.test.ts +0 -0
  437. /package/src/{share → text}/text-position.ts +0 -0
@@ -0,0 +1,459 @@
1
+ /*
2
+ <MODULE_CONTRACT>
3
+ <purpose>Defines types and interfaces for kernel command execution and logging within the application framework.</purpose>
4
+ <non-goals>
5
+ <item>Do not implement command execution logic or side effects.</item>
6
+ <item>Do not handle raw input parsing or transport orchestration.</item>
7
+ <item>Do not manage application lifecycle or state outside of defined commands.</item>
8
+ </non-goals>
9
+ </MODULE_CONTRACT>
10
+ <KEY_DECISIONS>
11
+ <item>Kernel command contracts must stay explicit so agents cannot pass untyped command inputs.</item>
12
+ </KEY_DECISIONS>
13
+ <CHANGE_SUMMARY>
14
+ <item>RFC-1027: add RemediationHint interface and optional remediationHints field to KernelExecutionReport for agent-actionable fix suggestions.</item>
15
+ <item>RFC-1028: add moduleBasePath to KernelRegisteredCommandInfo, derived from modulePath (RFC-0960) for dynamic moduleSrcDir resolution in the pipeline executor.</item>
16
+ <item>RFC-1038: replace KernelModule with ModuleExport, KernelCommandDefinition with CommandDeclaration, KernelRuntimeContext.registry with actualState, KernelAppConfig uses ModuleExport.</item>
17
+ <item>RFC-1097: step 6 — compass.migrate codemod run
18
+
19
+ Mechanical v1 to v2 header migration across the workspace: 942 files rewritten — CHANGE_SUMMARY windows collapsed into history, forbidden v1 blocks stripped, KEY_DECISIONS seeded from @ai-invariant comments (5 files) or TODO placeholders (103 files), blocks reordered to canonical order.</item>
20
+ <item>RFC-1097: sweep — werkstatt-engine clean
21
+
22
+ Sweep batch 4: 73 Compass headers on headerless engine files (certification, component-runtime, isolation, evolution, testing), real KEY_DECISIONS on 75 files (kernel, cache, dht, swim, gitmesh, runtime), ~80 purpose expansions (CONTRACT-02/PURPOSE-02), non-goals on 13 CONTRACT-03 files, CS-07 history literal fix repo-wide (253 files). Policy: .template.ts/.template.astro excludedPaths. werkstatt-engine now 0 diagnostics.</item>
23
+ <history>RFC-0260, RFC-0267, RFC-0326, RFC-0390, RFC-0518, RFC-0579, RFC-0686, RFC-0960, RFC-1026</history>
24
+ </CHANGE_SUMMARY>
25
+ */
26
+
27
+ import type { WorkspaceIO, WriteIntent } from "./workspace-io.ts";
28
+ import type { ModuleExport, CommandDeclaration, ActualState } from "./desired-state.ts";
29
+ // @ai-invariant: Kernel command contracts must stay explicit so agents cannot pass untyped command inputs.
30
+
31
+ export type KernelOutputFormat = "pretty" | "json";
32
+ export type KernelCommandScope = "app" | "workspace";
33
+ export type KernelLogLevel = "info" | "warn" | "error" | "success" | "section";
34
+ export type PipelineLogSeverity = "debug" | "info" | "notice" | "warning" | "error";
35
+ export type PipelineLogKind =
36
+ "progress" | "expected-fallback" | "advisory" | "external-tool" | "diagnostic" | "error";
37
+
38
+ export type KernelFlagValue = boolean | string | string[];
39
+ export interface DiscoveredSiteWorkspace {
40
+ name: string;
41
+ directory: string;
42
+ toolsDirectory: string;
43
+ configPath?: string;
44
+ packageName?: string;
45
+ }
46
+
47
+ export interface KernelLogEvent {
48
+ level: KernelLogLevel;
49
+ message: string;
50
+ details?: unknown;
51
+ timestamp: string;
52
+ severity?: PipelineLogSeverity;
53
+ kind?: PipelineLogKind;
54
+ command?: string;
55
+ pipeline?: string;
56
+ app?: string;
57
+ packageName?: string;
58
+ module?: string;
59
+ file?: string;
60
+ line?: number;
61
+ ruleId?: string;
62
+ dedupeKey?: string;
63
+ count?: number;
64
+ data?: Record<string, unknown>;
65
+ }
66
+
67
+ export interface KernelLogger {
68
+ section(message: string, details?: unknown): void;
69
+ info(message: string, details?: unknown): void;
70
+ warn(message: string, details?: unknown): void;
71
+ error(message: string, details?: unknown): void;
72
+ success(message: string, details?: unknown): void;
73
+ event(event: Omit<KernelLogEvent, "level" | "timestamp"> & { level?: KernelLogLevel }): void;
74
+ getEvents(): KernelLogEvent[];
75
+ }
76
+ export interface KernelCommandInput {
77
+ argv: string[];
78
+ flags: Record<string, KernelFlagValue>;
79
+ }
80
+
81
+ export interface KernelCommandMetadata {
82
+ description: string;
83
+ scope: KernelCommandScope;
84
+ mutatesState?: boolean;
85
+ requiresNetwork?: boolean;
86
+ supportsAllSites?: boolean;
87
+ timeoutMs?: number;
88
+ expectedDurationMs?: number;
89
+ longRunning?: boolean;
90
+ /**
91
+ * RFC-0390: when false, the pipeline executor never caches this command's
92
+ * result. Required for commands that depend on external state (network,
93
+ * secrets, time). Commands without `reads` MUST set this to false;
94
+ * command.reads.validate enforces this. Defaults to true.
95
+ */
96
+ cacheable?: boolean;
97
+ /**
98
+ * RFC-0518: declarative gate metadata. Optional. When present, describes the
99
+ * gate's severity, phase, conditional logic, surfaces protected, rules enforced,
100
+ * and workflow steps blocked on failure. Consumed by ecosystem.manifest.generate
101
+ * and gate.catalog.generate (RFC-0519). Does NOT affect execution.
102
+ */
103
+ gate?: GateMetadata;
104
+ }
105
+
106
+ // ---------------------------------------------------------------------------
107
+ // RFC-0518: declarative gate metadata on command definitions
108
+ // ---------------------------------------------------------------------------
109
+
110
+ export type GateSeverity = "error" | "warning" | "mixed";
111
+ export type GatePhase = "author" | "postbuild" | "workspace" | "mission" | "release";
112
+
113
+ export interface GateConditional {
114
+ kind: "entitlement" | "flag" | "config";
115
+ ref: string;
116
+ description: string;
117
+ }
118
+
119
+ export interface GateMetadata {
120
+ severity: GateSeverity;
121
+ phase: GatePhase;
122
+ conditional?: GateConditional;
123
+ surfaces?: string[];
124
+ rules?: string[];
125
+ blocks?: string[];
126
+ }
127
+
128
+ // ---------------------------------------------------------------------------
129
+ // RFC-0260: typed kernel command flag schemas
130
+ // ---------------------------------------------------------------------------
131
+ // A command that declares `flags` opts into strict parsing: unknown flags are
132
+ // rejected (KERNEL-FLAG-01) instead of silently ignored, and required flags
133
+ // are enforced (KERNEL-FLAG-03) before `execute()` runs. Commands without a
134
+ // `flags` schema keep the legacy heuristic-parser behavior unchanged.
135
+
136
+ export interface KernelFlagSpec {
137
+ kind: "boolean" | "string" | "string[]";
138
+ required?: boolean;
139
+ default?: KernelFlagValue;
140
+ /** One-line description; consumed by --help and future generators (rfc-0266). */
141
+ description: string;
142
+ }
143
+
144
+ export interface KernelRegisteredCommandInfo extends KernelCommandMetadata {
145
+ name: string;
146
+ provider: "workspace" | "site";
147
+ siteName?: string;
148
+ /** The name of the KernelModule that registered this command. */
149
+ module?: string;
150
+ /** RFC-0260: declared flag schema, when the command opts in. */
151
+ flags?: Record<string, KernelFlagSpec>;
152
+ /** RFC-0266: declared IO globs, when the command opts in. */
153
+ reads?: string[];
154
+ writes?: string[];
155
+ /** RFC-0687: propagated from KernelCommandDefinition for manifest and registry. */
156
+ validatesOutputs?: string[];
157
+ /** RFC-0960: declared generated artifacts, propagated from KernelCommandDefinition. */
158
+ generates?: GeneratedArtifactSpec[];
159
+ /**
160
+ * RFC-1028: repo-relative path to the module's src/ directory (e.g.
161
+ * "packages/werkstatt-engine/src"). Derived from KernelCommandDefinition.modulePath
162
+ * (RFC-0960) by taking everything up to and including the src/ segment.
163
+ * Used by the pipeline executor to resolve moduleSrcDir for computeModuleHash.
164
+ */
165
+ moduleBasePath?: string;
166
+ }
167
+
168
+ export interface KernelNextStep {
169
+ action: string;
170
+ kind: "required" | "optional";
171
+ }
172
+
173
+ export interface KernelCommandResult<TData = unknown> {
174
+ data?: TData;
175
+ exitCode?: number;
176
+ summary?: string;
177
+ timing?: KernelCommandTiming;
178
+ nextSteps?: KernelNextStep[];
179
+ }
180
+
181
+ // ---------------------------------------------------------------------------
182
+ // RFC-0852: canonical Diagnostic model — re-exported from engine schema module
183
+ // ---------------------------------------------------------------------------
184
+ // The single shape every static check uses to report a finding. The Zod
185
+ // schemas, types, limits, and validation helpers are owned by
186
+ // `packages/werkstatt/src/schemas/diagnostic.ts` (RFC-0852). This file
187
+ // re-exports the types so existing `@warpgogol/werkstatt-engine/kernel` consumers
188
+ // see no breakage. The site plugin imports the schemas directly from
189
+ // `@warpgogol/werkstatt-engine/schemas`.
190
+
191
+ import type {
192
+ DiagnosticSeverity as _DiagnosticSeverity,
193
+ DiagnosticEvidence as _DiagnosticEvidence,
194
+ Diagnostic as _Diagnostic,
195
+ } from "./diagnostic.ts";
196
+
197
+ export type {
198
+ DiagnosticSeverity,
199
+ DiagnosticEvidence,
200
+ Diagnostic,
201
+ RemediationRef,
202
+ } from "./diagnostic.ts";
203
+
204
+ /** Canonical per-command result payload carried inside KernelCommandResult.data. */
205
+ export interface CheckResult {
206
+ command: string;
207
+ status: "pass" | "warn" | "fail";
208
+ diagnostics: _Diagnostic[];
209
+ summary: { error: number; warning: number; info: number };
210
+ }
211
+
212
+ /**
213
+ * RFC-0960: Declared generated artifact specification on a kernel command.
214
+ * Lives on `KernelCommandDefinition.generates[]` and is the source of truth
215
+ * for the derived generator ownership map.
216
+ */
217
+ export interface GeneratedArtifactSpec {
218
+ /** Workpiece-relative path or glob, e.g. "src/content/system-health.generated.yaml". */
219
+ path: string;
220
+ /** Skip absence checks (RFC-0636 semantics) — e.g. produced only in build.post. */
221
+ conditional?: boolean;
222
+ /** Pipeline phase that produces it: informs which validator phase may assert existence. */
223
+ phase: "build.prepare" | "build.post" | "on-demand";
224
+ /**
225
+ * Override the default markerPolicy derivation. Default: public/** → "registry-only",
226
+ * everything else → "embedded". Set explicitly only for edge cases (e.g. .cache/pdf/**).
227
+ */
228
+ markerPolicy?: "embedded" | "registry-only";
229
+ }
230
+
231
+ /**
232
+ * RFC-0960: A derived entry in the generator ownership map. Produced by
233
+ * `buildGeneratorOwnership(registry)` from all registered commands' `generates[]`.
234
+ * Engine defines the structural type; the site plugin owns the concrete derivation.
235
+ */
236
+ export interface GeneratorOwnershipEntry {
237
+ command: string;
238
+ modulePath?: string;
239
+ artifact: GeneratedArtifactSpec;
240
+ markerPolicy: "embedded" | "registry-only";
241
+ }
242
+
243
+ export interface KernelRuntimeContext {
244
+ workspaceRoot: string;
245
+ site?: DiscoveredSiteWorkspace;
246
+ /** True only when --site <name> was passed explicitly by the caller. False when site was resolved by cwd inference. */
247
+ siteExplicit: boolean;
248
+ logger: KernelLogger;
249
+ dryRun: boolean;
250
+ /** RFC-0635: when true, injected into input.flags.force by executeRegisteredCommand. */
251
+ force?: boolean;
252
+ outputFormat: KernelOutputFormat;
253
+ /**
254
+ * RFC-0267: the WorkspaceIO port. The executor selects the adapter:
255
+ * read-only (throws KERNEL-META-01 on mutation) for `mutatesState: false`
256
+ * commands, recording (captures intents, touches nothing) under
257
+ * `--dry-run`, else the default fs-backed adapter. Ambient `node:fs`
258
+ * imports in unmigrated command modules keep working — adoption is
259
+ * ratcheted, new-code-first.
260
+ */
261
+ io: WorkspaceIO;
262
+ /**
263
+ * RFC-0326: the WriteIntent[] captured by the tracing adapter during this
264
+ * invocation. Set by the executor from `createDefaultIO().intents` (real
265
+ * runs) or `createRecordingIO().intents` (dry runs). Absent for read-only
266
+ * commands (no mutations possible). The executor converts these to
267
+ * `filesModified` on the execution report.
268
+ */
269
+ fileIntents?: WriteIntent[];
270
+ /** RFC-1038: the actual state, available to validators for derived projections like buildGeneratorOwnership. */
271
+ actualState: ActualState;
272
+ /**
273
+ * RFC-0960: pre-computed derived generator ownership map. Computed once by
274
+ * the executor via dynamic import of buildGeneratorOwnership from the site
275
+ * plugin. Validators consume this instead of a static constant.
276
+ */
277
+ ownershipMap?: GeneratorOwnershipEntry[];
278
+ }
279
+
280
+ /**
281
+ * RFC-1038: KernelCommandDefinition is now a type alias for CommandDeclaration.
282
+ * The generic parameter is preserved for backward compatibility with existing
283
+ * code that uses KernelCommandDefinition<TData>, but the underlying type is
284
+ * CommandDeclaration (which has the same structure).
285
+ */
286
+ export type KernelCommandDefinition<_TData = unknown> = CommandDeclaration;
287
+ export interface KernelPipelineStep {
288
+ command: string;
289
+ args?: string[];
290
+ timeoutMs?: number;
291
+ expectedDurationMs?: number;
292
+ skip?: boolean;
293
+ skipReason?: string;
294
+ /**
295
+ * RFC-0686: command names that must complete before this step starts.
296
+ * When absent, the step depends on the previous non-skipped step (backward compatible).
297
+ * When empty ([]), the step has no dependencies and may start immediately.
298
+ */
299
+ dependsOn?: string[];
300
+ }
301
+
302
+ /**
303
+ * RFC-1038: KernelModule is now a type alias for ModuleExport.
304
+ * Modules export declarations, commands, and pipelines arrays instead of
305
+ * calling register(). The buildRegistry function reads these arrays directly.
306
+ */
307
+ export type KernelModule = ModuleExport;
308
+
309
+ export type ModuleFiberState =
310
+ "declared" | "loading" | "active" | "draining" | "unloading" | "disposed" | "failed";
311
+
312
+ export interface KernelAppConfig {
313
+ name?: string;
314
+ description?: string;
315
+ /** Direct module objects — used when moduleLoaders is absent. */
316
+ modules?: ModuleExport[];
317
+ /** Lazy module loaders — enables manifest-driven single-module loading. Functions are defined in kernel.config.ts so import() resolves from the workspace root. */
318
+ moduleLoaders?: Record<string, () => Promise<ModuleExport>>;
319
+ }
320
+ export interface KernelExecutionReport<TData = unknown> {
321
+ siteName?: string;
322
+ commandName: string;
323
+ data?: TData;
324
+ exitCode: number;
325
+ ok: boolean;
326
+ summary?: string;
327
+ metadata: KernelCommandDefinition<TData>;
328
+ logs: KernelLogEvent[];
329
+ logSummary?: {
330
+ error: number;
331
+ warning: number;
332
+ notice: number;
333
+ expectedFallback: number;
334
+ suppressedDebug: number;
335
+ };
336
+ timing: KernelCommandTiming;
337
+ nextSteps?: KernelNextStep[];
338
+ /**
339
+ * RFC-1027: top remediation hints aggregated from failed diagnostics.
340
+ * Sorted by occurrence count descending, capped at 3 entries.
341
+ * Absent when the command produced no diagnostics with remediation data.
342
+ */
343
+ remediationHints?: RemediationHint[];
344
+ /**
345
+ * RFC-0326: workspace-root-relative POSIX paths of files this command
346
+ * actually wrote, mkdir'd, or removed during this invocation. Empty array
347
+ * when no mutations occurred or when the command is unmigrated (ambient
348
+ * node:fs, IO-01 baseline). Derived from the tracing adapter's WriteIntent[].
349
+ */
350
+ filesModified?: string[];
351
+ /** RFC-0390: true when this report was served from the command-result cache instead of real execution. */
352
+ cached?: boolean;
353
+ }
354
+
355
+ /**
356
+ * RFC-1027: A structured remediation hint aggregated from failed diagnostics.
357
+ * Derived from Diagnostic.remediation fields, grouped by ruleId, sorted by occurrence count.
358
+ */
359
+ export interface RemediationHint {
360
+ ruleId: string;
361
+ action: string;
362
+ template?: string;
363
+ docRef?: string;
364
+ targetFiles?: string[];
365
+ occurrenceCount: number;
366
+ }
367
+
368
+ export interface KernelPipelineReport {
369
+ siteName?: string;
370
+ pipelineName: string;
371
+ exitCode: number;
372
+ ok: boolean;
373
+ steps: KernelExecutionReport[];
374
+ timing: KernelPipelineTimingSummary;
375
+ /**
376
+ * RFC-0326: deduplicated union of all step reports' filesModified arrays.
377
+ */
378
+ filesModified?: string[];
379
+ /**
380
+ * RFC-0809: command names of steps that failed (excluding dependency-skipped).
381
+ * Present only in collect-errors mode when failures occurred.
382
+ */
383
+ failedSteps?: string[];
384
+ }
385
+
386
+ export type PipelineStepStatus = "pass" | "warn" | "fail" | "skipped" | "timeout";
387
+
388
+ export interface KernelCommandTiming {
389
+ durationMs: number;
390
+ timeoutMs?: number;
391
+ expectedDurationMs?: number;
392
+ exceededTimeout: boolean;
393
+ }
394
+
395
+ export interface PipelineStepTiming extends KernelCommandTiming {
396
+ pipeline: string;
397
+ command: string;
398
+ app?: string;
399
+ packageName?: string;
400
+ status: PipelineStepStatus;
401
+ startedAtMonotonicMs: number;
402
+ endedAtMonotonicMs: number;
403
+ fromCache?: boolean;
404
+ }
405
+
406
+ export interface KernelPipelineTimingSummary {
407
+ pipeline: string;
408
+ app?: string;
409
+ /** Wall-clock duration: min(startedAt) to max(endedAt) across all steps. */
410
+ totalDurationMs: number;
411
+ /** Sum of per-step durationMs — equals totalDurationMs for sequential execution, exceeds it for parallel. */
412
+ summedDurationMs?: number;
413
+ stepCount: number;
414
+ slowestSteps: PipelineStepTiming[];
415
+ timeoutCount: number;
416
+ warningCount: number;
417
+ failedStep?: string;
418
+ }
419
+
420
+ export interface ExecuteKernelCommandOptions {
421
+ workspaceRoot: string;
422
+ commandName: string;
423
+ siteName?: string;
424
+ allSites?: boolean;
425
+ argv?: string[];
426
+ dryRun?: boolean;
427
+ /** RFC-0635: when true, bypasses distribution reuse check in mission.validate. Injected into input.flags.force by the executor. */
428
+ force?: boolean;
429
+ outputFormat?: KernelOutputFormat;
430
+ /** Set to true when siteName was derived from an explicit --site flag, not cwd inference. */
431
+ siteExplicit?: boolean;
432
+ }
433
+
434
+ export interface ExecuteKernelPipelineOptions {
435
+ workspaceRoot: string;
436
+ pipelineName: string;
437
+ siteName?: string;
438
+ allSites?: boolean;
439
+ dryRun?: boolean;
440
+ outputFormat?: KernelOutputFormat;
441
+ /** RFC-0390: when true, bypass cache reads for a full re-execution. Successful results are still written. */
442
+ force?: boolean;
443
+ /** Pre-resolved site workspace — bypasses site discovery when provided (e.g. for closed-mission workpieces). */
444
+ siteWorkspace?: DiscoveredSiteWorkspace;
445
+ /** RFC-0686: maximum number of steps to run concurrently. Default: Math.min(os.availableParallelism(), 8). When 1, full sequential mode (ignores dependsOn, abort-on-failure). */
446
+ concurrency?: number;
447
+ /** RFC-0732: pipeline-level flags merged into each step's KernelCommandInput.flags. Step-level flags take precedence. */
448
+ flags?: Record<string, unknown>;
449
+ /** RFC-0809: when true, continue executing independent steps after a failure and aggregate all errors in the final report. Default: false (fail-fast). No effect when concurrency=1 (scheduler uses full sequential abort-on-failure). */
450
+ collectErrors?: boolean;
451
+ }
452
+
453
+ export interface SiteWorkspacesListResult {
454
+ workspaceRoot: string;
455
+ sites: DiscoveredSiteWorkspace[];
456
+ }
457
+ export function defineKernelConfig(config: KernelAppConfig): KernelAppConfig {
458
+ return config;
459
+ }