project-tiny-context-harness 0.8.17 → 0.11.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 (488) hide show
  1. package/README.md +93 -30
  2. package/assets/README.md +158 -44
  3. package/assets/README.zh-CN.md +88 -29
  4. package/assets/agents/AGENTS_CORE.md +2 -2
  5. package/assets/context_templates/context.toml +6 -1
  6. package/assets/runtime/windows-job-supervisor/formal_process_supervisor_native_helpers.cs +301 -0
  7. package/assets/runtime/windows-job-supervisor/formal_process_supervisor_native_run.cs +197 -0
  8. package/assets/runtime/windows-job-supervisor/formal_process_supervisor_native_types.cs +215 -0
  9. package/assets/runtime/windows-job-supervisor/windows_job_process_supervisor.ps1 +117 -0
  10. package/assets/skills/design-resource-authoring/SKILL.md +6 -3
  11. package/assets/skills/design-resource-authoring/references/authority-delta-assessment.md +52 -0
  12. package/assets/skills/design-resource-authoring/references/downstream-handoff.md +5 -1
  13. package/assets/skills/design-system-authoring/SKILL.md +23 -17
  14. package/assets/skills/design-system-authoring/references/authority-adoption.md +19 -9
  15. package/assets/skills/design-system-authoring/references/open-design-design-system-provider.md +4 -0
  16. package/assets/skills/long-task-workflow/SKILL.md +6 -6
  17. package/assets/skills/long-task-workflow/references/authority-lifecycle.md +10 -4
  18. package/assets/skills/long-task-workflow/references/contract-authoring.md +5 -5
  19. package/assets/skills/long-task-workflow/references/evidence-design.md +14 -3
  20. package/assets/skills/long-task-workflow/references/source-authoring.md +11 -8
  21. package/assets/tools/context_rules.json +53 -0
  22. package/assets/tools/validate_context.py +302 -77
  23. package/dist/cli.js +2 -1
  24. package/dist/commands/context-create.d.ts +1 -0
  25. package/dist/commands/context-create.js +90 -0
  26. package/dist/commands/context-inspect.d.ts +1 -0
  27. package/dist/commands/context-inspect.js +98 -0
  28. package/dist/commands/context-move.d.ts +1 -0
  29. package/dist/commands/context-move.js +78 -0
  30. package/dist/commands/context-register.d.ts +1 -0
  31. package/dist/commands/context-register.js +110 -0
  32. package/dist/commands/context-transaction.d.ts +1 -0
  33. package/dist/commands/context-transaction.js +84 -0
  34. package/dist/commands/context.d.ts +1 -0
  35. package/dist/commands/context.js +36 -0
  36. package/dist/commands/design-authority-delta.d.ts +1 -0
  37. package/dist/commands/design-authority-delta.js +53 -0
  38. package/dist/commands/design-authority.d.ts +1 -0
  39. package/dist/commands/design-authority.js +104 -0
  40. package/dist/commands/design-resource.js +8 -1
  41. package/dist/commands/doctor.d.ts +1 -1
  42. package/dist/commands/doctor.js +61 -3
  43. package/dist/commands/index.js +19 -2
  44. package/dist/commands/long-task-authoring.js +20 -2
  45. package/dist/commands/long-task-workdir.d.ts +2 -0
  46. package/dist/commands/long-task-workdir.js +23 -0
  47. package/dist/commands/long-task.js +75 -6
  48. package/dist/commands/route.d.ts +15 -0
  49. package/dist/commands/route.js +142 -0
  50. package/dist/index.d.ts +3 -13
  51. package/dist/index.js +3 -12
  52. package/dist/lib/cli-exit.d.ts +14 -0
  53. package/dist/lib/cli-exit.js +19 -0
  54. package/dist/lib/context-catalog/catalog-default-footprint.d.ts +3 -0
  55. package/dist/lib/context-catalog/catalog-default-footprint.js +53 -0
  56. package/dist/lib/context-catalog/catalog-diagnostics.d.ts +9 -0
  57. package/dist/lib/context-catalog/catalog-diagnostics.js +34 -0
  58. package/dist/lib/context-catalog/catalog-discovery.d.ts +7 -0
  59. package/dist/lib/context-catalog/catalog-discovery.js +81 -0
  60. package/dist/lib/context-catalog/catalog-load.d.ts +8 -0
  61. package/dist/lib/context-catalog/catalog-load.js +187 -0
  62. package/dist/lib/context-catalog/catalog-path-validation.d.ts +7 -0
  63. package/dist/lib/context-catalog/catalog-path-validation.js +62 -0
  64. package/dist/lib/context-catalog/catalog-paths.d.ts +11 -0
  65. package/dist/lib/context-catalog/catalog-paths.js +41 -0
  66. package/dist/lib/context-catalog/catalog-portable-contract.d.ts +15 -0
  67. package/dist/lib/context-catalog/catalog-portable-contract.js +68 -0
  68. package/dist/lib/context-catalog/catalog-staged-path-safety.d.ts +1 -0
  69. package/dist/lib/context-catalog/catalog-staged-path-safety.js +36 -0
  70. package/dist/lib/context-catalog/catalog-types.d.ts +40 -0
  71. package/dist/lib/context-catalog/catalog-types.js +1 -0
  72. package/dist/lib/context-catalog/catalog-validation.d.ts +9 -0
  73. package/dist/lib/context-catalog/catalog-validation.js +148 -0
  74. package/dist/lib/context-create/context-create-path.d.ts +2 -0
  75. package/dist/lib/context-create/context-create-path.js +30 -0
  76. package/dist/lib/context-create/context-create-template.d.ts +2 -0
  77. package/dist/lib/context-create/context-create-template.js +95 -0
  78. package/dist/lib/context-create/context-create-types.d.ts +28 -0
  79. package/dist/lib/context-create/context-create-types.js +1 -0
  80. package/dist/lib/context-create/context-create-write.d.ts +1 -0
  81. package/dist/lib/context-create/context-create-write.js +85 -0
  82. package/dist/lib/context-create/context-create.d.ts +2 -0
  83. package/dist/lib/context-create/context-create.js +84 -0
  84. package/dist/lib/context-default-footprint.d.ts +2 -3
  85. package/dist/lib/context-default-footprint.js +49 -57
  86. package/dist/lib/context-doctor/context-doctor-types.d.ts +16 -0
  87. package/dist/lib/context-doctor/context-doctor-types.js +15 -0
  88. package/dist/lib/context-doctor/context-doctor.d.ts +2 -0
  89. package/dist/lib/context-doctor/context-doctor.js +130 -0
  90. package/dist/lib/context-graph-snapshot.d.ts +5 -0
  91. package/dist/lib/context-graph-snapshot.js +46 -25
  92. package/dist/lib/context-inspect/context-inspect-projection.d.ts +9 -0
  93. package/dist/lib/context-inspect/context-inspect-projection.js +49 -0
  94. package/dist/lib/context-inspect/context-inspect-render.d.ts +2 -0
  95. package/dist/lib/context-inspect/context-inspect-render.js +29 -0
  96. package/dist/lib/context-inspect/context-inspect-types.d.ts +43 -0
  97. package/dist/lib/context-inspect/context-inspect-types.js +1 -0
  98. package/dist/lib/context-inspect/context-inspect.d.ts +2 -0
  99. package/dist/lib/context-inspect/context-inspect.js +104 -0
  100. package/dist/lib/context-manifest-schema.d.ts +1 -1
  101. package/dist/lib/context-manifest-schema.js +4 -20
  102. package/dist/lib/context-markdown/context-markdown-analysis.d.ts +15 -0
  103. package/dist/lib/context-markdown/context-markdown-analysis.js +245 -0
  104. package/dist/lib/context-markdown/context-markdown-extract.d.ts +7 -0
  105. package/dist/lib/context-markdown/context-markdown-extract.js +114 -0
  106. package/dist/lib/context-markdown/context-markdown-types.d.ts +57 -0
  107. package/dist/lib/context-markdown/context-markdown-types.js +1 -0
  108. package/dist/lib/context-move/context-move-input.d.ts +8 -0
  109. package/dist/lib/context-move/context-move-input.js +17 -0
  110. package/dist/lib/context-move/context-move-literal-scan.d.ts +20 -0
  111. package/dist/lib/context-move/context-move-literal-scan.js +213 -0
  112. package/dist/lib/context-move/context-move-live-validation.d.ts +3 -0
  113. package/dist/lib/context-move/context-move-live-validation.js +56 -0
  114. package/dist/lib/context-move/context-move-markdown-plan.d.ts +22 -0
  115. package/dist/lib/context-move/context-move-markdown-plan.js +39 -0
  116. package/dist/lib/context-move/context-move-projection.d.ts +3 -0
  117. package/dist/lib/context-move/context-move-projection.js +11 -0
  118. package/dist/lib/context-move/context-move-reference-validation.d.ts +11 -0
  119. package/dist/lib/context-move/context-move-reference-validation.js +64 -0
  120. package/dist/lib/context-move/context-move-render.d.ts +2 -0
  121. package/dist/lib/context-move/context-move-render.js +24 -0
  122. package/dist/lib/context-move/context-move-support.d.ts +10 -0
  123. package/dist/lib/context-move/context-move-support.js +88 -0
  124. package/dist/lib/context-move/context-move-transaction-plan.d.ts +24 -0
  125. package/dist/lib/context-move/context-move-transaction-plan.js +108 -0
  126. package/dist/lib/context-move/context-move-types.d.ts +74 -0
  127. package/dist/lib/context-move/context-move-types.js +1 -0
  128. package/dist/lib/context-move/context-move.d.ts +8 -0
  129. package/dist/lib/context-move/context-move.js +180 -0
  130. package/dist/lib/context-mutation/manifest-lossless-patch.d.ts +28 -0
  131. package/dist/lib/context-mutation/manifest-lossless-patch.js +208 -0
  132. package/dist/lib/context-mutation/markdown-link-patch.d.ts +34 -0
  133. package/dist/lib/context-mutation/markdown-link-patch.js +143 -0
  134. package/dist/lib/context-mutation/markdown-link-spans.d.ts +10 -0
  135. package/dist/lib/context-mutation/markdown-link-spans.js +179 -0
  136. package/dist/lib/context-mutation/mutation-cas.d.ts +13 -0
  137. package/dist/lib/context-mutation/mutation-cas.js +365 -0
  138. package/dist/lib/context-mutation/mutation-command-support.d.ts +12 -0
  139. package/dist/lib/context-mutation/mutation-command-support.js +57 -0
  140. package/dist/lib/context-mutation/mutation-commit.d.ts +12 -0
  141. package/dist/lib/context-mutation/mutation-commit.js +89 -0
  142. package/dist/lib/context-mutation/mutation-directories.d.ts +5 -0
  143. package/dist/lib/context-mutation/mutation-directories.js +56 -0
  144. package/dist/lib/context-mutation/mutation-file-state.d.ts +14 -0
  145. package/dist/lib/context-mutation/mutation-file-state.js +137 -0
  146. package/dist/lib/context-mutation/mutation-journal-file-validation.d.ts +1 -0
  147. package/dist/lib/context-mutation/mutation-journal-file-validation.js +106 -0
  148. package/dist/lib/context-mutation/mutation-journal-io.d.ts +5 -0
  149. package/dist/lib/context-mutation/mutation-journal-io.js +55 -0
  150. package/dist/lib/context-mutation/mutation-journal-storage.d.ts +18 -0
  151. package/dist/lib/context-mutation/mutation-journal-storage.js +283 -0
  152. package/dist/lib/context-mutation/mutation-journal-validation-support.d.ts +16 -0
  153. package/dist/lib/context-mutation/mutation-journal-validation-support.js +140 -0
  154. package/dist/lib/context-mutation/mutation-journal-validation.d.ts +3 -0
  155. package/dist/lib/context-mutation/mutation-journal-validation.js +177 -0
  156. package/dist/lib/context-mutation/mutation-journal.d.ts +8 -0
  157. package/dist/lib/context-mutation/mutation-journal.js +111 -0
  158. package/dist/lib/context-mutation/mutation-live-validation.d.ts +3 -0
  159. package/dist/lib/context-mutation/mutation-live-validation.js +51 -0
  160. package/dist/lib/context-mutation/mutation-long-task-guard.d.ts +6 -0
  161. package/dist/lib/context-mutation/mutation-long-task-guard.js +57 -0
  162. package/dist/lib/context-mutation/mutation-recovery.d.ts +4 -0
  163. package/dist/lib/context-mutation/mutation-recovery.js +189 -0
  164. package/dist/lib/context-mutation/mutation-staged-fs.d.ts +5 -0
  165. package/dist/lib/context-mutation/mutation-staged-fs.js +56 -0
  166. package/dist/lib/context-mutation/mutation-types.d.ts +103 -0
  167. package/dist/lib/context-mutation/mutation-types.js +1 -0
  168. package/dist/lib/context-register/context-register-input.d.ts +11 -0
  169. package/dist/lib/context-register/context-register-input.js +43 -0
  170. package/dist/lib/context-register/context-register-render.d.ts +2 -0
  171. package/dist/lib/context-register/context-register-render.js +21 -0
  172. package/dist/lib/context-register/context-register-support.d.ts +6 -0
  173. package/dist/lib/context-register/context-register-support.js +46 -0
  174. package/dist/lib/context-register/context-register-types.d.ts +46 -0
  175. package/dist/lib/context-register/context-register-types.js +1 -0
  176. package/dist/lib/context-register/context-register.d.ts +8 -0
  177. package/dist/lib/context-register/context-register.js +155 -0
  178. package/dist/lib/context-router/context-route-budget.d.ts +15 -0
  179. package/dist/lib/context-router/context-route-budget.js +14 -0
  180. package/dist/lib/context-router/context-route-candidates.d.ts +15 -0
  181. package/dist/lib/context-router/context-route-candidates.js +112 -0
  182. package/dist/lib/context-router/context-route-order.d.ts +6 -0
  183. package/dist/lib/context-router/context-route-order.js +53 -0
  184. package/dist/lib/context-router/context-route-paths.d.ts +16 -0
  185. package/dist/lib/context-router/context-route-paths.js +109 -0
  186. package/dist/lib/context-router/context-route-render.d.ts +2 -0
  187. package/dist/lib/context-router/context-route-render.js +32 -0
  188. package/dist/lib/context-router/context-route-scan.d.ts +18 -0
  189. package/dist/lib/context-router/context-route-scan.js +156 -0
  190. package/dist/lib/context-router/context-route-selection.d.ts +16 -0
  191. package/dist/lib/context-router/context-route-selection.js +72 -0
  192. package/dist/lib/context-router/context-route-terms.d.ts +13 -0
  193. package/dist/lib/context-router/context-route-terms.js +202 -0
  194. package/dist/lib/context-router/context-route-types.d.ts +101 -0
  195. package/dist/lib/context-router/context-route-types.js +1 -0
  196. package/dist/lib/context-router/context-route.d.ts +2 -0
  197. package/dist/lib/context-router/context-route.js +127 -0
  198. package/dist/lib/context-units-migration.d.ts +13 -0
  199. package/dist/lib/context-units-migration.js +217 -0
  200. package/dist/lib/design-authority-binding.d.ts +7 -0
  201. package/dist/lib/design-authority-binding.js +96 -0
  202. package/dist/lib/design-authority-closure.d.ts +3 -0
  203. package/dist/lib/design-authority-closure.js +201 -0
  204. package/dist/lib/design-authority-delta-codec-primitives.d.ts +10 -0
  205. package/dist/lib/design-authority-delta-codec-primitives.js +58 -0
  206. package/dist/lib/design-authority-delta-codec.d.ts +2 -0
  207. package/dist/lib/design-authority-delta-codec.js +193 -0
  208. package/dist/lib/design-authority-delta-types.d.ts +65 -0
  209. package/dist/lib/design-authority-delta-types.js +6 -0
  210. package/dist/lib/design-authority-delta-validation.d.ts +2 -0
  211. package/dist/lib/design-authority-delta-validation.js +16 -0
  212. package/dist/lib/design-authority-digest.d.ts +8 -0
  213. package/dist/lib/design-authority-digest.js +36 -0
  214. package/dist/lib/design-authority-files.d.ts +9 -0
  215. package/dist/lib/design-authority-files.js +62 -0
  216. package/dist/lib/design-authority-format.d.ts +2 -0
  217. package/dist/lib/design-authority-format.js +93 -0
  218. package/dist/lib/design-authority-links.d.ts +10 -0
  219. package/dist/lib/design-authority-links.js +137 -0
  220. package/dist/lib/design-authority-manifest.d.ts +4 -0
  221. package/dist/lib/design-authority-manifest.js +144 -0
  222. package/dist/lib/design-authority-tokens.d.ts +9 -0
  223. package/dist/lib/design-authority-tokens.js +45 -0
  224. package/dist/lib/design-authority-types.d.ts +80 -0
  225. package/dist/lib/design-authority-types.js +23 -0
  226. package/dist/lib/design-md-tool-adapter.d.ts +9 -0
  227. package/dist/lib/design-md-tool-adapter.js +152 -0
  228. package/dist/lib/design-md-tool-normalization.d.ts +7 -0
  229. package/dist/lib/design-md-tool-normalization.js +78 -0
  230. package/dist/lib/design-md-tool-types.d.ts +99 -0
  231. package/dist/lib/design-md-tool-types.js +8 -0
  232. package/dist/lib/design-resource-handoff-input-types.d.ts +1 -1
  233. package/dist/lib/design-resource-handoff-manifest-projection.js +3 -0
  234. package/dist/lib/design-resource-handoff-shape.js +14 -2
  235. package/dist/lib/design-resource-handoff-types.d.ts +3 -0
  236. package/dist/lib/design-resource-handoff-validation.js +16 -4
  237. package/dist/lib/design-resource-implementation-feasibility-validation-support.js +1 -1
  238. package/dist/lib/design-resource-recovery-current.js +22 -0
  239. package/dist/lib/design-resource-recovery-shape.js +64 -7
  240. package/dist/lib/design-resource-recovery-types.d.ts +4 -1
  241. package/dist/lib/design-resource-symbolic-fact-shape.js +7 -1
  242. package/dist/lib/design-resource-symbolic-fact-types.d.ts +3 -0
  243. package/dist/lib/design-resource-symbolic-fact-validation.js +15 -3
  244. package/dist/lib/doctor.d.ts +2 -1
  245. package/dist/lib/doctor.js +29 -1
  246. package/dist/lib/fs.js +1 -1
  247. package/dist/lib/long-task-acceptance-reachability-claims.d.ts +2 -0
  248. package/dist/lib/long-task-acceptance-reachability-claims.js +279 -0
  249. package/dist/lib/long-task-acceptance-reachability-design.d.ts +2 -0
  250. package/dist/lib/long-task-acceptance-reachability-design.js +96 -0
  251. package/dist/lib/long-task-acceptance-reachability-external.d.ts +9 -0
  252. package/dist/lib/long-task-acceptance-reachability-external.js +123 -0
  253. package/dist/lib/long-task-acceptance-reachability-helpers.d.ts +64 -0
  254. package/dist/lib/long-task-acceptance-reachability-helpers.js +473 -0
  255. package/dist/lib/long-task-acceptance-reachability-semantic.d.ts +2 -0
  256. package/dist/lib/long-task-acceptance-reachability-semantic.js +122 -0
  257. package/dist/lib/long-task-acceptance-reachability-types.d.ts +91 -0
  258. package/dist/lib/long-task-acceptance-reachability-types.js +1 -0
  259. package/dist/lib/long-task-acceptance-reachability.d.ts +4 -0
  260. package/dist/lib/long-task-acceptance-reachability.js +115 -0
  261. package/dist/lib/long-task-activation-validation.d.ts +6 -0
  262. package/dist/lib/long-task-activation-validation.js +72 -69
  263. package/dist/lib/long-task-active-authority-lock-context.d.ts +4 -0
  264. package/dist/lib/long-task-active-authority-lock-context.js +29 -0
  265. package/dist/lib/long-task-applicability-identity.d.ts +25 -0
  266. package/dist/lib/long-task-applicability-identity.js +60 -0
  267. package/dist/lib/long-task-authoring-preflight-diagnostics.js +8 -0
  268. package/dist/lib/long-task-authoring-preflight-types.d.ts +2 -0
  269. package/dist/lib/long-task-authoring-preflight-types.js +9 -0
  270. package/dist/lib/long-task-authoring-preflight.js +18 -2
  271. package/dist/lib/long-task-authority-material-diff.js +4 -0
  272. package/dist/lib/long-task-authority-materials.js +19 -0
  273. package/dist/lib/long-task-authority-policy.d.ts +3 -0
  274. package/dist/lib/long-task-authority-policy.js +3 -0
  275. package/dist/lib/long-task-authority-revision-details.js +2 -1
  276. package/dist/lib/long-task-authority-types.d.ts +2 -0
  277. package/dist/lib/long-task-authority.js +2 -0
  278. package/dist/lib/long-task-check-shape.js +6 -1
  279. package/dist/lib/long-task-claim-definitions.js +1 -3
  280. package/dist/lib/long-task-claim-semantic-proof-floor.d.ts +3 -0
  281. package/dist/lib/long-task-claim-semantic-proof-floor.js +78 -0
  282. package/dist/lib/long-task-claims.d.ts +0 -18
  283. package/dist/lib/long-task-claims.js +15 -14
  284. package/dist/lib/long-task-command-process.js +3 -0
  285. package/dist/lib/long-task-compact-authoring.js +3 -0
  286. package/dist/lib/long-task-compact-projections.js +10 -0
  287. package/dist/lib/long-task-complete-delivery-evidence-types.d.ts +38 -0
  288. package/dist/lib/long-task-complete-delivery-evidence-types.js +1 -0
  289. package/dist/lib/long-task-completion-types.d.ts +109 -0
  290. package/dist/lib/long-task-completion-types.js +1 -0
  291. package/dist/lib/long-task-conformance-policy.d.ts +2 -1
  292. package/dist/lib/long-task-conformance-policy.js +11 -4
  293. package/dist/lib/long-task-context-authority-topology.js +6 -4
  294. package/dist/lib/long-task-contract-types.d.ts +52 -1
  295. package/dist/lib/long-task-counterfactual-sandbox.d.ts +7 -1
  296. package/dist/lib/long-task-counterfactual-sandbox.js +86 -6
  297. package/dist/lib/long-task-delivery-compiler-preflight.d.ts +24 -0
  298. package/dist/lib/long-task-delivery-compiler-preflight.js +32 -0
  299. package/dist/lib/long-task-delivery-compiler.d.ts +1 -0
  300. package/dist/lib/long-task-delivery-compiler.js +59 -44
  301. package/dist/lib/long-task-delivery-parser.d.ts +3 -0
  302. package/dist/lib/long-task-delivery-parser.js +26 -8
  303. package/dist/lib/long-task-delivery-types.d.ts +2 -0
  304. package/dist/lib/long-task-delivery-types.js +2 -0
  305. package/dist/lib/long-task-delivery-validation.d.ts +6 -1
  306. package/dist/lib/long-task-delivery-validation.js +19 -4
  307. package/dist/lib/long-task-design-feasibility-binding.d.ts +1 -0
  308. package/dist/lib/long-task-design-feasibility-binding.js +3 -3
  309. package/dist/lib/long-task-design-feasibility-source-closure.js +11 -2
  310. package/dist/lib/long-task-design-obligation.d.ts +50 -0
  311. package/dist/lib/long-task-design-obligation.js +99 -0
  312. package/dist/lib/long-task-design-resource-handoff.d.ts +3 -1
  313. package/dist/lib/long-task-design-resource-handoff.js +36 -12
  314. package/dist/lib/long-task-design-resource-method-binding.js +12 -0
  315. package/dist/lib/long-task-effective-external-takeover.d.ts +15 -0
  316. package/dist/lib/long-task-effective-external-takeover.js +109 -0
  317. package/dist/lib/long-task-effective-external-ui-takeover.d.ts +5 -0
  318. package/dist/lib/long-task-effective-external-ui-takeover.js +117 -0
  319. package/dist/lib/long-task-evidence-capability-codec.js +91 -0
  320. package/dist/lib/long-task-evidence-capability-runtime.js +62 -14
  321. package/dist/lib/long-task-evidence-capability-types.d.ts +3 -2
  322. package/dist/lib/long-task-evidence-v2.d.ts +6 -1
  323. package/dist/lib/long-task-evidence-v2.js +253 -170
  324. package/dist/lib/long-task-execution-observation.d.ts +7 -0
  325. package/dist/lib/long-task-execution-observation.js +21 -4
  326. package/dist/lib/long-task-expected-authority.d.ts +4 -0
  327. package/dist/lib/long-task-expected-authority.js +126 -0
  328. package/dist/lib/long-task-external-confirmation-artifacts.d.ts +9 -0
  329. package/dist/lib/long-task-external-confirmation-artifacts.js +138 -0
  330. package/dist/lib/long-task-external-confirmation-attestation.d.ts +20 -0
  331. package/dist/lib/long-task-external-confirmation-attestation.js +115 -0
  332. package/dist/lib/long-task-external-confirmation-challenge.d.ts +23 -0
  333. package/dist/lib/long-task-external-confirmation-challenge.js +164 -0
  334. package/dist/lib/long-task-external-confirmation-context.d.ts +14 -0
  335. package/dist/lib/long-task-external-confirmation-context.js +53 -0
  336. package/dist/lib/long-task-external-confirmation-evaluation.d.ts +11 -0
  337. package/dist/lib/long-task-external-confirmation-evaluation.js +454 -0
  338. package/dist/lib/long-task-external-confirmation-expected.d.ts +8 -0
  339. package/dist/lib/long-task-external-confirmation-expected.js +200 -0
  340. package/dist/lib/long-task-external-confirmation-identity.d.ts +10 -0
  341. package/dist/lib/long-task-external-confirmation-identity.js +77 -0
  342. package/dist/lib/long-task-external-confirmation-plan.d.ts +25 -0
  343. package/dist/lib/long-task-external-confirmation-plan.js +148 -0
  344. package/dist/lib/long-task-external-confirmation-preparation.d.ts +4 -0
  345. package/dist/lib/long-task-external-confirmation-preparation.js +100 -0
  346. package/dist/lib/long-task-external-confirmation-shape.d.ts +8 -0
  347. package/dist/lib/long-task-external-confirmation-shape.js +387 -0
  348. package/dist/lib/long-task-external-confirmation-state.d.ts +10 -0
  349. package/dist/lib/long-task-external-confirmation-state.js +109 -0
  350. package/dist/lib/long-task-external-confirmation-types.d.ts +195 -0
  351. package/dist/lib/long-task-external-confirmation-types.js +1 -0
  352. package/dist/lib/long-task-final-integrity.d.ts +2 -0
  353. package/dist/lib/long-task-final-integrity.js +21 -10
  354. package/dist/lib/long-task-final-v2.d.ts +7 -2
  355. package/dist/lib/long-task-final-v2.js +179 -55
  356. package/dist/lib/long-task-finalization-identity.d.ts +27 -0
  357. package/dist/lib/long-task-finalization-identity.js +58 -0
  358. package/dist/lib/long-task-finding-context.d.ts +1 -1
  359. package/dist/lib/long-task-finding-context.js +139 -13
  360. package/dist/lib/long-task-freshness.d.ts +27 -0
  361. package/dist/lib/long-task-freshness.js +128 -5
  362. package/dist/lib/long-task-git.js +3 -3
  363. package/dist/lib/long-task-material-input-closure.d.ts +3 -0
  364. package/dist/lib/long-task-material-input-closure.js +92 -0
  365. package/dist/lib/long-task-obligation-authority-resolution.d.ts +12 -0
  366. package/dist/lib/long-task-obligation-authority-resolution.js +57 -0
  367. package/dist/lib/long-task-obligation-semantic-identity.d.ts +16 -0
  368. package/dist/lib/long-task-obligation-semantic-identity.js +116 -0
  369. package/dist/lib/long-task-observation-authority.d.ts +11 -0
  370. package/dist/lib/long-task-observation-authority.js +137 -6
  371. package/dist/lib/long-task-process-table.d.ts +2 -5
  372. package/dist/lib/long-task-process-table.js +21 -53
  373. package/dist/lib/long-task-process-tree.d.ts +0 -1
  374. package/dist/lib/long-task-process-tree.js +24 -54
  375. package/dist/lib/long-task-proof-adequacy.d.ts +12 -0
  376. package/dist/lib/long-task-proof-adequacy.js +57 -0
  377. package/dist/lib/long-task-proof-capability-floor.d.ts +6 -0
  378. package/dist/lib/long-task-proof-capability-floor.js +137 -0
  379. package/dist/lib/long-task-repair-frontier-checks.d.ts +8 -0
  380. package/dist/lib/long-task-repair-frontier-checks.js +93 -0
  381. package/dist/lib/long-task-repair-frontier-groups.d.ts +2 -0
  382. package/dist/lib/long-task-repair-frontier-groups.js +64 -0
  383. package/dist/lib/long-task-repair-frontier-utils.d.ts +6 -0
  384. package/dist/lib/long-task-repair-frontier-utils.js +27 -0
  385. package/dist/lib/long-task-repair-frontier.d.ts +14 -0
  386. package/dist/lib/long-task-repair-frontier.js +132 -0
  387. package/dist/lib/long-task-risk.d.ts +3 -2
  388. package/dist/lib/long-task-risk.js +73 -24
  389. package/dist/lib/long-task-root-shape.js +148 -8
  390. package/dist/lib/long-task-runner-freeze.d.ts +2 -1
  391. package/dist/lib/long-task-runner-freeze.js +23 -8
  392. package/dist/lib/long-task-runtime-types.d.ts +34 -40
  393. package/dist/lib/long-task-semantic-assurance-policy.js +2 -11
  394. package/dist/lib/long-task-semantic-contract-types.d.ts +2 -1
  395. package/dist/lib/long-task-semantic-drift-migration.js +48 -2
  396. package/dist/lib/long-task-semantic-fact-binding-types.d.ts +20 -0
  397. package/dist/lib/long-task-semantic-fact-closure.d.ts +5 -1
  398. package/dist/lib/long-task-semantic-fact-closure.js +33 -5
  399. package/dist/lib/long-task-semantic-fact-contract-closure.js +176 -1
  400. package/dist/lib/long-task-semantic-fact-contract-proofs.js +18 -1
  401. package/dist/lib/long-task-semantic-fact-input-closure.d.ts +16 -2
  402. package/dist/lib/long-task-semantic-fact-input-closure.js +138 -15
  403. package/dist/lib/long-task-semantic-fact-provenance-closure.js +1 -1
  404. package/dist/lib/long-task-semantic-fact-shape.d.ts +2 -1
  405. package/dist/lib/long-task-semantic-fact-shape.js +35 -1
  406. package/dist/lib/long-task-semantic-proof-adequacy.d.ts +2 -0
  407. package/dist/lib/long-task-semantic-proof-adequacy.js +19 -0
  408. package/dist/lib/long-task-semantic-proof-profile.d.ts +5 -0
  409. package/dist/lib/long-task-semantic-proof-profile.js +187 -0
  410. package/dist/lib/long-task-shape-primitives.d.ts +1 -1
  411. package/dist/lib/long-task-shape-primitives.js +5 -0
  412. package/dist/lib/long-task-source-anchors.d.ts +10 -0
  413. package/dist/lib/long-task-source-anchors.js +102 -0
  414. package/dist/lib/long-task-source-authority-types.d.ts +46 -0
  415. package/dist/lib/long-task-source-claim-validation.js +36 -0
  416. package/dist/lib/long-task-source-conservation-facts.d.ts +8 -0
  417. package/dist/lib/long-task-source-conservation-facts.js +57 -0
  418. package/dist/lib/long-task-source-conservation-types.d.ts +34 -0
  419. package/dist/lib/long-task-source-conservation-types.js +1 -0
  420. package/dist/lib/long-task-source-conservation.d.ts +7 -0
  421. package/dist/lib/long-task-source-conservation.js +110 -0
  422. package/dist/lib/long-task-source-fragments.d.ts +6 -0
  423. package/dist/lib/long-task-source-fragments.js +219 -0
  424. package/dist/lib/long-task-source-projection-resolution.d.ts +5 -0
  425. package/dist/lib/long-task-source-projection-resolution.js +57 -0
  426. package/dist/lib/long-task-source-projection-validation.d.ts +17 -0
  427. package/dist/lib/long-task-source-projection-validation.js +154 -0
  428. package/dist/lib/long-task-source-shape.js +14 -6
  429. package/dist/lib/long-task-source-supersession.d.ts +5 -0
  430. package/dist/lib/long-task-source-supersession.js +138 -0
  431. package/dist/lib/long-task-stage-policy.d.ts +7 -2
  432. package/dist/lib/long-task-stage-policy.js +67 -23
  433. package/dist/lib/long-task-state.d.ts +18 -4
  434. package/dist/lib/long-task-state.js +319 -33
  435. package/dist/lib/long-task-static-observation-freeze.js +4 -3
  436. package/dist/lib/long-task-status-projection.d.ts +3 -1
  437. package/dist/lib/long-task-status-projection.js +44 -13
  438. package/dist/lib/long-task-status-v2.d.ts +10 -6
  439. package/dist/lib/long-task-status-v2.js +70 -58
  440. package/dist/lib/long-task-target-policy.d.ts +8 -3
  441. package/dist/lib/long-task-target-policy.js +40 -9
  442. package/dist/lib/long-task-terminal-finalization.d.ts +12 -0
  443. package/dist/lib/long-task-terminal-finalization.js +190 -0
  444. package/dist/lib/long-task-ui-design-policy.js +15 -4
  445. package/dist/lib/long-task-verifier-counterfactuals.d.ts +11 -0
  446. package/dist/lib/long-task-verifier-counterfactuals.js +96 -0
  447. package/dist/lib/long-task-verifier-execution.d.ts +9 -0
  448. package/dist/lib/long-task-verifier-execution.js +67 -0
  449. package/dist/lib/long-task-verifier-identity.js +16 -5
  450. package/dist/lib/long-task-verifier-v2.js +52 -65
  451. package/dist/lib/long-task-windows-job-supervisor-helper.d.ts +1 -0
  452. package/dist/lib/long-task-windows-job-supervisor-helper.js +104 -0
  453. package/dist/lib/long-task-windows-job-supervisor-protocol.d.ts +28 -0
  454. package/dist/lib/long-task-windows-job-supervisor-protocol.js +124 -0
  455. package/dist/lib/long-task-windows-job-supervisor-result.d.ts +11 -0
  456. package/dist/lib/long-task-windows-job-supervisor-result.js +152 -0
  457. package/dist/lib/long-task-windows-job-supervisor.d.ts +2 -0
  458. package/dist/lib/long-task-windows-job-supervisor.js +126 -0
  459. package/dist/lib/long-task-workspace-scope.d.ts +1 -0
  460. package/dist/lib/long-task-workspace-scope.js +4 -1
  461. package/dist/lib/long-task-workspace.d.ts +1 -0
  462. package/dist/lib/long-task-workspace.js +10 -0
  463. package/dist/lib/migrations.js +43 -2
  464. package/dist/lib/repository-path-safety.d.ts +1 -0
  465. package/dist/lib/repository-path-safety.js +3 -3
  466. package/dist/lib/semantic-fact-input-shape.d.ts +7 -2
  467. package/dist/lib/semantic-fact-input-shape.js +25 -1
  468. package/dist/lib/semantic-fact-inventory-types.d.ts +8 -2
  469. package/dist/lib/semantic-fact-policy-census.d.ts +1 -1
  470. package/dist/lib/semantic-fact-policy-census.js +5 -2
  471. package/dist/lib/semantic-fact-policy.d.ts +1 -1
  472. package/dist/lib/semantic-fact-policy.js +2 -2
  473. package/dist/lib/semantic-fact-proof-shape.d.ts +1 -1
  474. package/dist/lib/semantic-fact-property-shape.d.ts +1 -1
  475. package/dist/lib/validators.d.ts +3 -0
  476. package/dist/lib/validators.js +45 -157
  477. package/dist/public-api-core.d.ts +12 -0
  478. package/dist/public-api-core.js +12 -0
  479. package/dist/public-api-long-task.d.ts +10 -0
  480. package/dist/public-api-long-task.js +10 -0
  481. package/dist/public-types.d.ts +5 -1
  482. package/dist/schemas/design-authority-delta-assessment-v1.schema.json +191 -0
  483. package/dist/schemas/long-task-delivery-v2/long-task-delivery-v2.schema.json +166 -2
  484. package/dist/schemas/long-task-external-confirmation-record-v1.schema.json +155 -0
  485. package/dist/schemas/long-task-external-confirmation-record-v2.schema.json +209 -0
  486. package/migrations/README.md +99 -0
  487. package/package.json +7 -5
  488. package/source-mappings.yaml +18 -0
@@ -0,0 +1,137 @@
1
+ import { lstat, readdir, realpath } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { extractContextMarkdown } from "./context-markdown/context-markdown-extract.js";
4
+ import { DESIGN_AUTHORITY_LIMITS, } from "./design-authority-types.js";
5
+ export async function analyzeDesignAuthorityLinks(input) {
6
+ const diagnostics = await discoverExtraDesignFiles(input.repository, input.declared_paths);
7
+ for (const source of input.sources) {
8
+ const extracted = extractContextMarkdown(source.content, source.path);
9
+ for (const reference of extracted.references) {
10
+ const resolved = resolveLocalDestination(input.repository, source.path, reference.destination);
11
+ if (resolved.disposition === "invalid")
12
+ diagnostics.push({
13
+ severity: "error",
14
+ code: "invalid_local_authority_link",
15
+ path: source.path,
16
+ detail: `${reference.line}:${reference.column}: ${resolved.detail}`,
17
+ });
18
+ else if (resolved.disposition === "local" &&
19
+ resolved.path.startsWith("design_system/") &&
20
+ !input.declared_paths.has(resolved.path))
21
+ diagnostics.push({
22
+ severity: "error",
23
+ code: "authority_closure_link_unlisted",
24
+ path: source.path,
25
+ detail: `${reference.line}:${reference.column}: ${resolved.path}`,
26
+ });
27
+ }
28
+ }
29
+ return diagnostics.sort(compareDiagnostic);
30
+ }
31
+ async function discoverExtraDesignFiles(repository, declared) {
32
+ const root = path.join(repository, "design_system");
33
+ const status = await lstatOrNull(root);
34
+ if (!status)
35
+ return [];
36
+ if (status.isSymbolicLink() || !status.isDirectory())
37
+ throw new Error("design_authority_invalid:design_system_not_directory");
38
+ const canonicalRepository = await realpath(repository);
39
+ if (!inside(canonicalRepository, await realpath(root)))
40
+ throw new Error("design_authority_invalid:design_system_outside_repository");
41
+ const diagnostics = [];
42
+ const pending = [root];
43
+ let discovered = 0;
44
+ while (pending.length) {
45
+ const directory = pending.pop();
46
+ const entries = await readdir(directory, { withFileTypes: true });
47
+ entries.sort((left, right) => Buffer.from(left.name).compare(Buffer.from(right.name)));
48
+ for (const entry of entries) {
49
+ discovered += 1;
50
+ if (discovered > DESIGN_AUTHORITY_LIMITS.max_members)
51
+ throw new Error("design_authority_invalid:discovery_limit_exceeded");
52
+ const absolute = path.join(directory, entry.name);
53
+ const relative = path
54
+ .relative(repository, absolute)
55
+ .replace(/\\/gu, "/")
56
+ .normalize("NFC");
57
+ if (entry.isDirectory()) {
58
+ pending.push(absolute);
59
+ continue;
60
+ }
61
+ if (declared.has(relative))
62
+ continue;
63
+ diagnostics.push({
64
+ severity: "warning",
65
+ code: entry.isFile()
66
+ ? "unlisted_design_system_file"
67
+ : "unlisted_design_system_non_file",
68
+ path: relative,
69
+ detail: "not part of the Design Authority closure",
70
+ });
71
+ }
72
+ }
73
+ return diagnostics;
74
+ }
75
+ function resolveLocalDestination(repository, sourcePath, destination) {
76
+ const trimmed = destination.trim();
77
+ if (!trimmed || trimmed.startsWith("#"))
78
+ return { disposition: "ignored" };
79
+ if (trimmed.startsWith("//") || /^[A-Za-z][A-Za-z0-9+.-]*:/u.test(trimmed))
80
+ return { disposition: "ignored" };
81
+ const boundary = [trimmed.indexOf("#"), trimmed.indexOf("?")]
82
+ .filter((index) => index >= 0)
83
+ .reduce((lowest, index) => Math.min(lowest, index), trimmed.length);
84
+ let local;
85
+ try {
86
+ local = decodeURIComponent(trimmed.slice(0, boundary)).replaceAll("\\", "/");
87
+ }
88
+ catch {
89
+ return { disposition: "invalid", detail: "invalid URL encoding" };
90
+ }
91
+ const absolute = local.startsWith("/")
92
+ ? path.resolve(repository, local.slice(1))
93
+ : local.startsWith("design_system/")
94
+ ? path.resolve(repository, local)
95
+ : path.resolve(repository, path.dirname(sourcePath), local);
96
+ if (!inside(path.resolve(repository), absolute))
97
+ return { disposition: "invalid", detail: "path escapes the repository" };
98
+ return {
99
+ disposition: "local",
100
+ path: path
101
+ .relative(repository, absolute)
102
+ .replace(/\\/gu, "/")
103
+ .normalize("NFC"),
104
+ };
105
+ }
106
+ function compareDiagnostic(left, right) {
107
+ for (const pair of [
108
+ [left.path ?? "", right.path ?? ""],
109
+ [left.code, right.code],
110
+ [left.detail, right.detail],
111
+ ]) {
112
+ const compared = Buffer.from(pair[0]).compare(Buffer.from(pair[1]));
113
+ if (compared)
114
+ return compared;
115
+ }
116
+ return 0;
117
+ }
118
+ function inside(root, candidate) {
119
+ const relative = path.relative(root, candidate);
120
+ return (relative === "" ||
121
+ (relative !== ".." &&
122
+ !relative.startsWith(`..${path.sep}`) &&
123
+ !path.isAbsolute(relative)));
124
+ }
125
+ async function lstatOrNull(target) {
126
+ try {
127
+ return await lstat(target);
128
+ }
129
+ catch (error) {
130
+ if (typeof error === "object" &&
131
+ error !== null &&
132
+ "code" in error &&
133
+ error.code === "ENOENT")
134
+ return null;
135
+ throw error;
136
+ }
137
+ }
@@ -0,0 +1,4 @@
1
+ import { type DesignAuthorityManifestV1 } from "./design-authority-types.js";
2
+ export declare function parseDesignAuthorityManifest(content: string): DesignAuthorityManifestV1;
3
+ export declare function normalizeDesignAuthorityPath(value: unknown, label: string): string;
4
+ export declare function designAuthorityManifestProjection(manifest: DesignAuthorityManifestV1): string;
@@ -0,0 +1,144 @@
1
+ import { DESIGN_AUTHORITY_ENTRY_PATH, DESIGN_AUTHORITY_KINDS, DESIGN_AUTHORITY_MANIFEST_PATH, DESIGN_AUTHORITY_MANIFEST_SCHEMA_VERSION, isDesignAuthorityDigest, } from "./design-authority-types.js";
2
+ const AUTHORITY_KIND_SET = new Set(DESIGN_AUTHORITY_KINDS);
3
+ export function parseDesignAuthorityManifest(content) {
4
+ let parsed;
5
+ try {
6
+ parsed = JSON.parse(content);
7
+ }
8
+ catch (error) {
9
+ invalid(`json:${message(error)}`);
10
+ }
11
+ const root = strictObject(parsed, "manifest", [
12
+ "schema_version",
13
+ "entry",
14
+ "authority_files",
15
+ "generated_files",
16
+ "closure_digest",
17
+ ]);
18
+ if (root.schema_version !== DESIGN_AUTHORITY_MANIFEST_SCHEMA_VERSION)
19
+ invalid(`schema_version:${String(root.schema_version)}`);
20
+ if (root.entry !== DESIGN_AUTHORITY_ENTRY_PATH)
21
+ invalid(`entry:${String(root.entry)}`);
22
+ if (!isDesignAuthorityDigest(root.closure_digest))
23
+ invalid("closure_digest:invalid");
24
+ if (!Array.isArray(root.authority_files))
25
+ invalid("authority_files:not_array");
26
+ if (!Array.isArray(root.generated_files))
27
+ invalid("generated_files:not_array");
28
+ const authorityFiles = root.authority_files.map((item, index) => parseAuthorityFile(item, index));
29
+ const generatedFiles = root.generated_files.map((item, index) => parseGeneratedFile(item, index));
30
+ validatePathSets(authorityFiles, generatedFiles);
31
+ return {
32
+ schema_version: DESIGN_AUTHORITY_MANIFEST_SCHEMA_VERSION,
33
+ entry: DESIGN_AUTHORITY_ENTRY_PATH,
34
+ authority_files: sortByPath(authorityFiles),
35
+ generated_files: sortByPath(generatedFiles),
36
+ closure_digest: root.closure_digest,
37
+ };
38
+ }
39
+ export function normalizeDesignAuthorityPath(value, label) {
40
+ if (typeof value !== "string" || !value)
41
+ invalid(`${label}:not_text`);
42
+ if (value !== value.normalize("NFC"))
43
+ invalid(`${label}:not_nfc`);
44
+ if (value.includes("\\") ||
45
+ value.includes("\0") ||
46
+ value.startsWith("/") ||
47
+ value.startsWith("//") ||
48
+ /^[A-Za-z]:/u.test(value))
49
+ invalid(`${label}:not_portable`);
50
+ const segments = value.split("/");
51
+ if (segments.some((segment) => !segment || segment === "." || segment === ".."))
52
+ invalid(`${label}:invalid_segment`);
53
+ if (!value.startsWith("design_system/") || value === "design_system/")
54
+ invalid(`${label}:outside_design_system`);
55
+ if (value === DESIGN_AUTHORITY_MANIFEST_PATH ||
56
+ value === DESIGN_AUTHORITY_ENTRY_PATH)
57
+ invalid(`${label}:reserved_path`);
58
+ return value;
59
+ }
60
+ export function designAuthorityManifestProjection(manifest) {
61
+ return canonicalJsonValue({
62
+ schema_version: manifest.schema_version,
63
+ entry: manifest.entry,
64
+ authority_files: sortByPath(manifest.authority_files),
65
+ generated_files: sortByPath(manifest.generated_files),
66
+ });
67
+ }
68
+ function parseAuthorityFile(value, index) {
69
+ const label = `authority_files[${index}]`;
70
+ const row = strictObject(value, label, ["path", "kind"]);
71
+ const filePath = normalizeDesignAuthorityPath(row.path, `${label}.path`);
72
+ if (!filePath.toLowerCase().endsWith(".md"))
73
+ invalid(`${label}.path:not_markdown`);
74
+ if (typeof row.kind !== "string" || !AUTHORITY_KIND_SET.has(row.kind))
75
+ invalid(`${label}.kind:${String(row.kind)}`);
76
+ return { path: filePath, kind: row.kind };
77
+ }
78
+ function parseGeneratedFile(value, index) {
79
+ const label = `generated_files[${index}]`;
80
+ const row = strictObject(value, label, ["path", "source"]);
81
+ const filePath = normalizeDesignAuthorityPath(row.path, `${label}.path`);
82
+ if (filePath !== "design_system/tokens.json")
83
+ invalid(`${label}.path:unsupported_generated_path`);
84
+ if (row.source !== "DESIGN.md#frontmatter.tokens")
85
+ invalid(`${label}.source:unsupported`);
86
+ return { path: filePath, source: "DESIGN.md#frontmatter.tokens" };
87
+ }
88
+ function validatePathSets(authority, generated) {
89
+ const exact = new Set();
90
+ const folded = new Map();
91
+ for (const file of [...authority, ...generated]) {
92
+ if (exact.has(file.path))
93
+ invalid(`path_duplicate:${file.path}`);
94
+ exact.add(file.path);
95
+ const key = file.path.toLowerCase();
96
+ const previous = folded.get(key);
97
+ if (previous && previous !== file.path)
98
+ invalid(`path_case_collision:${previous}:${file.path}`);
99
+ folded.set(key, file.path);
100
+ }
101
+ }
102
+ function strictObject(value, label, fields) {
103
+ if (!value || typeof value !== "object" || Array.isArray(value))
104
+ invalid(`${label}:not_object`);
105
+ const row = value;
106
+ const expected = new Set(fields);
107
+ for (const key of Object.keys(row))
108
+ if (!expected.has(key))
109
+ invalid(`${label}:unknown_field:${key}`);
110
+ for (const field of fields)
111
+ if (!(field in row))
112
+ invalid(`${label}:missing_field:${field}`);
113
+ return row;
114
+ }
115
+ function sortByPath(values) {
116
+ return [...values].sort((left, right) => Buffer.from(left.path).compare(Buffer.from(right.path)));
117
+ }
118
+ function canonicalJsonValue(value) {
119
+ return JSON.stringify(sortObjectKeys(value));
120
+ }
121
+ function sortObjectKeys(value) {
122
+ if (Array.isArray(value))
123
+ return value.map(sortObjectKeys);
124
+ if (!value || typeof value !== "object")
125
+ return value;
126
+ const row = value;
127
+ return Object.fromEntries(Object.keys(row)
128
+ .sort(compareCodePoints)
129
+ .map((key) => [key, sortObjectKeys(row[key])]));
130
+ }
131
+ function compareCodePoints(left, right) {
132
+ const a = Array.from(left, (point) => point.codePointAt(0));
133
+ const b = Array.from(right, (point) => point.codePointAt(0));
134
+ for (let index = 0; index < Math.min(a.length, b.length); index += 1)
135
+ if (a[index] !== b[index])
136
+ return a[index] - b[index];
137
+ return a.length - b.length;
138
+ }
139
+ function message(error) {
140
+ return error instanceof Error ? error.message : String(error);
141
+ }
142
+ function invalid(reason) {
143
+ throw new Error(`design_authority_manifest_invalid:${reason}`);
144
+ }
@@ -0,0 +1,9 @@
1
+ export declare function projectDesignAuthorityTokens(content: string): {
2
+ success: true;
3
+ content: string;
4
+ } | {
5
+ success: false;
6
+ error: string;
7
+ };
8
+ export declare function projectDesignAuthorityTokensFromEntry(repository: string): Promise<ReturnType<typeof projectDesignAuthorityTokens>>;
9
+ export declare function designAuthorityRevision(content: string): string | null;
@@ -0,0 +1,45 @@
1
+ import { designMdToolAdapter } from "./design-md-tool-adapter.js";
2
+ import { parseStrictYaml } from "./strict-codec.js";
3
+ import { acquireDesignAuthorityText } from "./design-authority-files.js";
4
+ import { DESIGN_AUTHORITY_ENTRY_PATH } from "./design-authority-types.js";
5
+ export function projectDesignAuthorityTokens(content) {
6
+ const result = designMdToolAdapter.exportTokens(content, "dtcg");
7
+ return result.success
8
+ ? { success: true, content: result.content }
9
+ : { success: false, error: result.error };
10
+ }
11
+ export async function projectDesignAuthorityTokensFromEntry(repository) {
12
+ const entry = await acquireDesignAuthorityText(repository, DESIGN_AUTHORITY_ENTRY_PATH, "design_authority_entry");
13
+ return projectDesignAuthorityTokens(entry.content);
14
+ }
15
+ export function designAuthorityRevision(content) {
16
+ const frontMatter = extractFrontMatter(content);
17
+ if (frontMatter === null)
18
+ return null;
19
+ try {
20
+ const value = parseStrictYaml(frontMatter);
21
+ if (!value || typeof value !== "object" || Array.isArray(value))
22
+ return null;
23
+ const revision = value.version;
24
+ if (typeof revision === "string" && revision.trim())
25
+ return revision;
26
+ if (typeof revision === "number" && Number.isFinite(revision))
27
+ return String(revision);
28
+ }
29
+ catch {
30
+ // Revision is diagnostic only; closure identity still binds the exact bytes.
31
+ }
32
+ return null;
33
+ }
34
+ function extractFrontMatter(content) {
35
+ const normalized = content.replace(/\r\n?/gu, "\n");
36
+ if (!normalized.startsWith("---\n"))
37
+ return null;
38
+ const end = normalized.indexOf("\n---", 4);
39
+ if (end < 0)
40
+ return null;
41
+ const boundary = end + 4;
42
+ if (boundary < normalized.length && normalized[boundary] !== "\n")
43
+ return null;
44
+ return normalized.slice(4, end);
45
+ }
@@ -0,0 +1,80 @@
1
+ export declare const DESIGN_AUTHORITY_MANIFEST_PATH = "design_system/authority.manifest.json";
2
+ export declare const DESIGN_AUTHORITY_ENTRY_PATH = "DESIGN.md";
3
+ export declare const DESIGN_AUTHORITY_BUNDLE_MARKER = "<!-- ty-context-design-authority-format: bundle-v1 -->";
4
+ export declare const DESIGN_AUTHORITY_MANIFEST_SCHEMA_VERSION = 1;
5
+ export declare const DESIGN_AUTHORITY_IDENTITY_FORMAT_VERSION = 1;
6
+ export declare const DESIGN_AUTHORITY_KINDS: readonly ["foundation", "typography", "iconography", "motion", "component", "pattern", "platform", "migration"];
7
+ export type DesignAuthorityKind = (typeof DESIGN_AUTHORITY_KINDS)[number];
8
+ export interface DesignAuthorityManifestFile {
9
+ path: string;
10
+ kind: DesignAuthorityKind;
11
+ }
12
+ export interface DesignAuthorityGeneratedFile {
13
+ path: string;
14
+ source: "DESIGN.md#frontmatter.tokens";
15
+ }
16
+ export interface DesignAuthorityManifestV1 {
17
+ schema_version: typeof DESIGN_AUTHORITY_MANIFEST_SCHEMA_VERSION;
18
+ entry: typeof DESIGN_AUTHORITY_ENTRY_PATH;
19
+ authority_files: DesignAuthorityManifestFile[];
20
+ generated_files: DesignAuthorityGeneratedFile[];
21
+ closure_digest: string;
22
+ }
23
+ export interface DesignAuthorityIdentityV1 {
24
+ format_version: typeof DESIGN_AUTHORITY_IDENTITY_FORMAT_VERSION;
25
+ entry_path: typeof DESIGN_AUTHORITY_ENTRY_PATH;
26
+ manifest_path: typeof DESIGN_AUTHORITY_MANIFEST_PATH | null;
27
+ closure_digest: string;
28
+ revision: string | null;
29
+ }
30
+ export type DesignAuthorityHandoffBinding = ({
31
+ kind: "repository-closure";
32
+ } & DesignAuthorityIdentityV1) | {
33
+ kind: "not-applicable";
34
+ rationale: string;
35
+ };
36
+ export interface DesignAuthorityHandoffResolution {
37
+ identity: DesignAuthorityIdentityV1 | null;
38
+ member_paths: string[];
39
+ compatibility_derived: boolean;
40
+ }
41
+ export interface DesignAuthorityClosureMember {
42
+ path: string;
43
+ kind: "entry" | "manifest" | "authority" | "generated";
44
+ content_sha256: string;
45
+ normalized_bytes: number;
46
+ }
47
+ export interface DesignAuthorityDiagnostic {
48
+ severity: "error" | "warning";
49
+ code: string;
50
+ path?: string;
51
+ detail: string;
52
+ }
53
+ export interface DesignAuthorityClosureSnapshot {
54
+ mode: "legacy" | "bundle";
55
+ identity: DesignAuthorityIdentityV1;
56
+ manifest: DesignAuthorityManifestV1 | null;
57
+ claimed_closure_digest: string | null;
58
+ members: DesignAuthorityClosureMember[];
59
+ member_paths: string[];
60
+ generated_tokens: string | null;
61
+ diagnostics: DesignAuthorityDiagnostic[];
62
+ }
63
+ export interface DesignAuthorityInspection {
64
+ schema_version: 1;
65
+ status: "missing" | "valid" | "invalid";
66
+ mode: "missing" | "legacy" | "bundle";
67
+ identity: DesignAuthorityIdentityV1 | null;
68
+ manifest: DesignAuthorityManifestV1 | null;
69
+ claimed_closure_digest: string | null;
70
+ members: DesignAuthorityClosureMember[];
71
+ member_paths: string[];
72
+ generated_tokens: string | null;
73
+ diagnostics: DesignAuthorityDiagnostic[];
74
+ }
75
+ export declare const DESIGN_AUTHORITY_LIMITS: {
76
+ readonly max_members: 4096;
77
+ readonly max_file_bytes: number;
78
+ readonly max_total_bytes: number;
79
+ };
80
+ export declare function isDesignAuthorityDigest(value: unknown): value is string;
@@ -0,0 +1,23 @@
1
+ export const DESIGN_AUTHORITY_MANIFEST_PATH = "design_system/authority.manifest.json";
2
+ export const DESIGN_AUTHORITY_ENTRY_PATH = "DESIGN.md";
3
+ export const DESIGN_AUTHORITY_BUNDLE_MARKER = "<!-- ty-context-design-authority-format: bundle-v1 -->";
4
+ export const DESIGN_AUTHORITY_MANIFEST_SCHEMA_VERSION = 1;
5
+ export const DESIGN_AUTHORITY_IDENTITY_FORMAT_VERSION = 1;
6
+ export const DESIGN_AUTHORITY_KINDS = [
7
+ "foundation",
8
+ "typography",
9
+ "iconography",
10
+ "motion",
11
+ "component",
12
+ "pattern",
13
+ "platform",
14
+ "migration",
15
+ ];
16
+ export const DESIGN_AUTHORITY_LIMITS = {
17
+ max_members: 4096,
18
+ max_file_bytes: 8 * 1024 * 1024,
19
+ max_total_bytes: 64 * 1024 * 1024,
20
+ };
21
+ export function isDesignAuthorityDigest(value) {
22
+ return typeof value === "string" && /^sha256:[0-9a-f]{64}$/u.test(value);
23
+ }
@@ -0,0 +1,9 @@
1
+ import { type DesignMdDiffResult, type DesignMdExportFormat, type DesignMdExportOptions, type DesignMdExportResult, type DesignMdToolIdentity, type DesignMdValidationResult } from "./design-md-tool-types.js";
2
+ export declare class DesignMdToolAdapter {
3
+ identity(): DesignMdToolIdentity;
4
+ parseValidate(content: string): DesignMdValidationResult;
5
+ lint(content: string): DesignMdValidationResult;
6
+ exportTokens(content: string, format: DesignMdExportFormat, options?: DesignMdExportOptions): DesignMdExportResult;
7
+ diff(before: string, after: string): DesignMdDiffResult;
8
+ }
9
+ export declare const designMdToolAdapter: DesignMdToolAdapter;
@@ -0,0 +1,152 @@
1
+ import { CssVarsEmitterHandler, DtcgEmitterHandler, lint as lintWithDesignMd, serializeCssVars, serializeTailwindV4, TailwindEmitterHandler, TailwindV4EmitterHandler, } from "@google/design.md/linter";
2
+ import { stableJson } from "./stable-json.js";
3
+ import { componentProperties, diffDesignMdRecords, loadDesignMdToolIdentity, normalizeDesignMdFinding, snapshotDesignSystem, } from "./design-md-tool-normalization.js";
4
+ import { DESIGN_MD_TOOL_ADAPTER_SCHEMA_VERSION, } from "./design-md-tool-types.js";
5
+ const TOOL_IDENTITY = loadDesignMdToolIdentity();
6
+ export class DesignMdToolAdapter {
7
+ identity() {
8
+ return { ...TOOL_IDENTITY };
9
+ }
10
+ parseValidate(content) {
11
+ return evaluate(content, "parse-validate").result;
12
+ }
13
+ lint(content) {
14
+ return evaluate(content, "lint").result;
15
+ }
16
+ exportTokens(content, format, options = {}) {
17
+ const evaluation = evaluate(content, "lint");
18
+ if (!evaluation.report) {
19
+ return {
20
+ success: false,
21
+ format,
22
+ error: evaluation.result.findings[0]?.message ?? "DESIGN.md parse failed",
23
+ options: { ...options },
24
+ validation: evaluation.result,
25
+ };
26
+ }
27
+ if (options.css_variable_prefix !== undefined && format !== "css-vars")
28
+ return exportFailure(format, "css_variable_prefix is supported only for css-vars export", options, evaluation.result);
29
+ const state = evaluation.report.designSystem;
30
+ if (format === "css-vars") {
31
+ const emitted = new CssVarsEmitterHandler().execute(state);
32
+ if (!emitted.success)
33
+ return exportFailure(format, emitted.error.message, options, evaluation.result);
34
+ return {
35
+ success: true,
36
+ format,
37
+ media_type: "text/css",
38
+ content: withFinalNewline(serializeCssVars(emitted.data.declarations, {
39
+ prefix: options.css_variable_prefix,
40
+ })),
41
+ options: { ...options },
42
+ validation: evaluation.result,
43
+ };
44
+ }
45
+ if (format === "css-tailwind") {
46
+ const emitted = new TailwindV4EmitterHandler().execute(state);
47
+ if (!emitted.success)
48
+ return exportFailure(format, emitted.error.message, options, evaluation.result);
49
+ return {
50
+ success: true,
51
+ format,
52
+ media_type: "text/css",
53
+ content: withFinalNewline(serializeTailwindV4(emitted.data.theme)),
54
+ options: { ...options },
55
+ validation: evaluation.result,
56
+ };
57
+ }
58
+ const emitted = format === "dtcg"
59
+ ? new DtcgEmitterHandler().execute(state)
60
+ : new TailwindEmitterHandler().execute(state);
61
+ if (!emitted.success)
62
+ return exportFailure(format, emitted.error.message, options, evaluation.result);
63
+ return {
64
+ success: true,
65
+ format,
66
+ media_type: "application/json",
67
+ content: `${stableJson(emitted.data)}\n`,
68
+ options: { ...options },
69
+ validation: evaluation.result,
70
+ };
71
+ }
72
+ diff(before, after) {
73
+ const beforeEvaluation = evaluate(before, "lint");
74
+ const afterEvaluation = evaluate(after, "lint");
75
+ if (!beforeEvaluation.report || !afterEvaluation.report) {
76
+ return {
77
+ success: false,
78
+ tool: this.identity(),
79
+ error: "both DESIGN.md inputs must parse before they can be diffed",
80
+ before_validation: beforeEvaluation.result,
81
+ after_validation: afterEvaluation.result,
82
+ };
83
+ }
84
+ const beforeSnapshot = snapshotDesignSystem(beforeEvaluation.report.designSystem);
85
+ const afterSnapshot = snapshotDesignSystem(afterEvaluation.report.designSystem);
86
+ const beforeSummary = beforeEvaluation.result.summary;
87
+ const afterSummary = afterEvaluation.result.summary;
88
+ return {
89
+ success: true,
90
+ tool: this.identity(),
91
+ tokens: {
92
+ colors: diffDesignMdRecords(beforeSnapshot.colors, afterSnapshot.colors),
93
+ typography: diffDesignMdRecords(beforeSnapshot.typography, afterSnapshot.typography),
94
+ rounded: diffDesignMdRecords(beforeSnapshot.rounded, afterSnapshot.rounded),
95
+ spacing: diffDesignMdRecords(beforeSnapshot.spacing, afterSnapshot.spacing),
96
+ components: diffDesignMdRecords(componentProperties(beforeSnapshot.components), componentProperties(afterSnapshot.components)),
97
+ },
98
+ findings: {
99
+ before: beforeSummary,
100
+ after: afterSummary,
101
+ delta: {
102
+ errors: afterSummary.errors - beforeSummary.errors,
103
+ warnings: afterSummary.warnings - beforeSummary.warnings,
104
+ },
105
+ },
106
+ regression: afterSummary.errors > beforeSummary.errors ||
107
+ afterSummary.warnings > beforeSummary.warnings,
108
+ before_validation: beforeEvaluation.result,
109
+ after_validation: afterEvaluation.result,
110
+ };
111
+ }
112
+ }
113
+ export const designMdToolAdapter = new DesignMdToolAdapter();
114
+ function evaluate(content, mode) {
115
+ try {
116
+ const report = lintWithDesignMd(content, mode === "parse-validate" ? { rules: [] } : undefined);
117
+ const findings = report.findings.map(normalizeDesignMdFinding);
118
+ return {
119
+ report,
120
+ result: {
121
+ schema_version: DESIGN_MD_TOOL_ADAPTER_SCHEMA_VERSION,
122
+ mode,
123
+ tool: { ...TOOL_IDENTITY },
124
+ valid: report.summary.errors === 0,
125
+ findings,
126
+ summary: { ...report.summary },
127
+ design_system: snapshotDesignSystem(report.designSystem),
128
+ },
129
+ };
130
+ }
131
+ catch (error) {
132
+ const message = error instanceof Error ? error.message : String(error);
133
+ return {
134
+ report: null,
135
+ result: {
136
+ schema_version: DESIGN_MD_TOOL_ADAPTER_SCHEMA_VERSION,
137
+ mode,
138
+ tool: { ...TOOL_IDENTITY },
139
+ valid: false,
140
+ findings: [{ severity: "error", message }],
141
+ summary: { errors: 1, warnings: 0, infos: 0 },
142
+ design_system: null,
143
+ },
144
+ };
145
+ }
146
+ }
147
+ function exportFailure(format, error, options, validation) {
148
+ return { success: false, format, error, options: { ...options }, validation };
149
+ }
150
+ function withFinalNewline(value) {
151
+ return `${value.replace(/(?:\r\n?|\n)+$/u, "")}\n`;
152
+ }
@@ -0,0 +1,7 @@
1
+ import type { DesignSystemState, Finding as GoogleDesignMdFinding } from "@google/design.md/linter";
2
+ import type { DesignMdComponentSnapshot, DesignMdFinding, DesignMdSystemSnapshot, DesignMdTokenChangeSet, DesignMdToolIdentity } from "./design-md-tool-types.js";
3
+ export declare function loadDesignMdToolIdentity(): DesignMdToolIdentity;
4
+ export declare function normalizeDesignMdFinding(finding: GoogleDesignMdFinding): DesignMdFinding;
5
+ export declare function snapshotDesignSystem(state: DesignSystemState): DesignMdSystemSnapshot;
6
+ export declare function componentProperties(components: Record<string, DesignMdComponentSnapshot>): Record<string, unknown>;
7
+ export declare function diffDesignMdRecords(before: Record<string, unknown>, after: Record<string, unknown>): DesignMdTokenChangeSet;