@deftai/directive-core 0.55.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 (861) hide show
  1. package/dist/architecture/sor-preflight.d.ts +66 -0
  2. package/dist/architecture/sor-preflight.js +903 -0
  3. package/dist/branch/evaluate.d.ts +23 -0
  4. package/dist/branch/evaluate.js +136 -0
  5. package/dist/branch/git.d.ts +15 -0
  6. package/dist/branch/git.js +42 -0
  7. package/dist/branch/index.d.ts +3 -0
  8. package/dist/branch/index.js +3 -0
  9. package/dist/cache/cli.d.ts +3 -0
  10. package/dist/cache/cli.js +8 -0
  11. package/dist/cache/constants.d.ts +12 -0
  12. package/dist/cache/constants.js +14 -0
  13. package/dist/cache/errors.d.ts +34 -0
  14. package/dist/cache/errors.js +52 -0
  15. package/dist/cache/fetch.d.ts +101 -0
  16. package/dist/cache/fetch.js +413 -0
  17. package/dist/cache/index.d.ts +14 -0
  18. package/dist/cache/index.js +14 -0
  19. package/dist/cache/io.d.ts +15 -0
  20. package/dist/cache/io.js +53 -0
  21. package/dist/cache/json.d.ts +11 -0
  22. package/dist/cache/json.js +32 -0
  23. package/dist/cache/main.d.ts +3 -0
  24. package/dist/cache/main.js +319 -0
  25. package/dist/cache/operations.d.ts +34 -0
  26. package/dist/cache/operations.js +348 -0
  27. package/dist/cache/paths.d.ts +7 -0
  28. package/dist/cache/paths.js +27 -0
  29. package/dist/cache/quota.d.ts +56 -0
  30. package/dist/cache/quota.js +191 -0
  31. package/dist/cache/scanner.d.ts +28 -0
  32. package/dist/cache/scanner.js +362 -0
  33. package/dist/cache/test-helpers.d.ts +10 -0
  34. package/dist/cache/test-helpers.js +17 -0
  35. package/dist/cache/time.d.ts +9 -0
  36. package/dist/cache/time.js +20 -0
  37. package/dist/cache/types.d.ts +50 -0
  38. package/dist/cache/types.js +2 -0
  39. package/dist/cache/validate.d.ts +3 -0
  40. package/dist/cache/validate.js +118 -0
  41. package/dist/capacity/backfill.d.ts +52 -0
  42. package/dist/capacity/backfill.js +429 -0
  43. package/dist/capacity/index.d.ts +3 -0
  44. package/dist/capacity/index.js +3 -0
  45. package/dist/capacity/show.d.ts +73 -0
  46. package/dist/capacity/show.js +387 -0
  47. package/dist/check/index.d.ts +3 -0
  48. package/dist/check/index.js +2 -0
  49. package/dist/check/orchestrator.d.ts +51 -0
  50. package/dist/check/orchestrator.js +71 -0
  51. package/dist/codebase/constants.d.ts +2 -0
  52. package/dist/codebase/constants.js +2 -0
  53. package/dist/codebase/default-extractor.d.ts +28 -0
  54. package/dist/codebase/default-extractor.js +713 -0
  55. package/dist/codebase/index.d.ts +8 -0
  56. package/dist/codebase/index.js +8 -0
  57. package/dist/codebase/json.d.ts +14 -0
  58. package/dist/codebase/json.js +45 -0
  59. package/dist/codebase/map-fresh.d.ts +11 -0
  60. package/dist/codebase/map-fresh.js +125 -0
  61. package/dist/codebase/map.d.ts +19 -0
  62. package/dist/codebase/map.js +345 -0
  63. package/dist/codebase/projection-registry.d.ts +25 -0
  64. package/dist/codebase/projection-registry.js +93 -0
  65. package/dist/codebase/provider.d.ts +30 -0
  66. package/dist/codebase/provider.js +696 -0
  67. package/dist/content-contracts/skills/greptile-detector.d.ts +56 -0
  68. package/dist/content-contracts/skills/greptile-detector.js +368 -0
  69. package/dist/content-contracts/skills/helpers.d.ts +24 -0
  70. package/dist/content-contracts/skills/helpers.js +73 -0
  71. package/dist/content-contracts/skills/skill-frontmatter.d.ts +7 -0
  72. package/dist/content-contracts/skills/skill-frontmatter.js +65 -0
  73. package/dist/content-contracts/standards/_helpers.d.ts +49 -0
  74. package/dist/content-contracts/standards/_helpers.js +227 -0
  75. package/dist/content-contracts/standards/_shapes.d.ts +12 -0
  76. package/dist/content-contracts/standards/_shapes.js +45 -0
  77. package/dist/content-contracts/standards/_taskfile-helpers.d.ts +12 -0
  78. package/dist/content-contracts/standards/_taskfile-helpers.js +61 -0
  79. package/dist/content-root.d.ts +47 -0
  80. package/dist/content-root.js +89 -0
  81. package/dist/doctor/agents-md.d.ts +14 -0
  82. package/dist/doctor/agents-md.js +263 -0
  83. package/dist/doctor/checks.d.ts +16 -0
  84. package/dist/doctor/checks.js +351 -0
  85. package/dist/doctor/cli.d.ts +2 -0
  86. package/dist/doctor/cli.js +7 -0
  87. package/dist/doctor/constants.d.ts +15 -0
  88. package/dist/doctor/constants.js +40 -0
  89. package/dist/doctor/doctor-state.d.ts +16 -0
  90. package/dist/doctor/doctor-state.js +117 -0
  91. package/dist/doctor/flags.d.ts +5 -0
  92. package/dist/doctor/flags.js +63 -0
  93. package/dist/doctor/index.d.ts +14 -0
  94. package/dist/doctor/index.js +14 -0
  95. package/dist/doctor/json.d.ts +3 -0
  96. package/dist/doctor/json.js +21 -0
  97. package/dist/doctor/main.d.ts +3 -0
  98. package/dist/doctor/main.js +387 -0
  99. package/dist/doctor/manifest.d.ts +11 -0
  100. package/dist/doctor/manifest.js +114 -0
  101. package/dist/doctor/output.d.ts +19 -0
  102. package/dist/doctor/output.js +49 -0
  103. package/dist/doctor/paths.d.ts +16 -0
  104. package/dist/doctor/paths.js +106 -0
  105. package/dist/doctor/payload-staleness.d.ts +13 -0
  106. package/dist/doctor/payload-staleness.js +165 -0
  107. package/dist/doctor/taskfile.d.ts +6 -0
  108. package/dist/doctor/taskfile.js +65 -0
  109. package/dist/doctor/types.d.ts +76 -0
  110. package/dist/doctor/types.js +4 -0
  111. package/dist/doctor/which.d.ts +3 -0
  112. package/dist/doctor/which.js +17 -0
  113. package/dist/encoding/evaluate.d.ts +19 -0
  114. package/dist/encoding/evaluate.js +155 -0
  115. package/dist/encoding/git.d.ts +11 -0
  116. package/dist/encoding/git.js +36 -0
  117. package/dist/encoding/index.d.ts +6 -0
  118. package/dist/encoding/index.js +6 -0
  119. package/dist/encoding/patterns.d.ts +29 -0
  120. package/dist/encoding/patterns.js +109 -0
  121. package/dist/encoding/scan.d.ts +24 -0
  122. package/dist/encoding/scan.js +182 -0
  123. package/dist/encoding/text.d.ts +21 -0
  124. package/dist/encoding/text.js +111 -0
  125. package/dist/index.d.ts +54 -0
  126. package/dist/index.js +55 -0
  127. package/dist/intake/candidates-log.d.ts +20 -0
  128. package/dist/intake/candidates-log.js +224 -0
  129. package/dist/intake/github-auth-modes-cli.d.ts +3 -0
  130. package/dist/intake/github-auth-modes-cli.js +23 -0
  131. package/dist/intake/github-auth-modes.d.ts +54 -0
  132. package/dist/intake/github-auth-modes.js +275 -0
  133. package/dist/intake/github-body-cli.d.ts +3 -0
  134. package/dist/intake/github-body-cli.js +30 -0
  135. package/dist/intake/github-body.d.ts +48 -0
  136. package/dist/intake/github-body.js +151 -0
  137. package/dist/intake/index.d.ts +15 -0
  138. package/dist/intake/index.js +15 -0
  139. package/dist/intake/issue-emit-cli.d.ts +3 -0
  140. package/dist/intake/issue-emit-cli.js +34 -0
  141. package/dist/intake/issue-emit.d.ts +63 -0
  142. package/dist/intake/issue-emit.js +351 -0
  143. package/dist/intake/issue-ingest-cli.d.ts +3 -0
  144. package/dist/intake/issue-ingest-cli.js +33 -0
  145. package/dist/intake/issue-ingest.d.ts +53 -0
  146. package/dist/intake/issue-ingest.js +477 -0
  147. package/dist/intake/markdown-scanners.d.ts +23 -0
  148. package/dist/intake/markdown-scanners.js +247 -0
  149. package/dist/intake/parity-scenarios.d.ts +22 -0
  150. package/dist/intake/parity-scenarios.js +32 -0
  151. package/dist/intake/platform-capabilities.d.ts +11 -0
  152. package/dist/intake/platform-capabilities.js +34 -0
  153. package/dist/intake/reconcile-issues-cli.d.ts +3 -0
  154. package/dist/intake/reconcile-issues-cli.js +31 -0
  155. package/dist/intake/reconcile-issues.d.ts +60 -0
  156. package/dist/intake/reconcile-issues.js +756 -0
  157. package/dist/integration-e2e/bootstrap-cache-module.d.ts +5 -0
  158. package/dist/integration-e2e/bootstrap-cache-module.js +21 -0
  159. package/dist/integration-e2e/helpers.d.ts +28 -0
  160. package/dist/integration-e2e/helpers.js +157 -0
  161. package/dist/lifecycle/event-detect.d.ts +32 -0
  162. package/dist/lifecycle/event-detect.js +172 -0
  163. package/dist/lifecycle/events.d.ts +45 -0
  164. package/dist/lifecycle/events.js +340 -0
  165. package/dist/lifecycle/index.d.ts +4 -0
  166. package/dist/lifecycle/index.js +4 -0
  167. package/dist/lifecycle/lifecycle-hygiene.d.ts +59 -0
  168. package/dist/lifecycle/lifecycle-hygiene.js +388 -0
  169. package/dist/orchestration/index.d.ts +7 -0
  170. package/dist/orchestration/index.js +7 -0
  171. package/dist/orchestration/judgment-policy.d.ts +23 -0
  172. package/dist/orchestration/judgment-policy.js +228 -0
  173. package/dist/orchestration/pathspec.d.ts +11 -0
  174. package/dist/orchestration/pathspec.js +95 -0
  175. package/dist/orchestration/probe-session.d.ts +74 -0
  176. package/dist/orchestration/probe-session.js +478 -0
  177. package/dist/orchestration/subagent-monitor.d.ts +64 -0
  178. package/dist/orchestration/subagent-monitor.js +405 -0
  179. package/dist/orchestration/verify-investigation.d.ts +27 -0
  180. package/dist/orchestration/verify-investigation.js +314 -0
  181. package/dist/orchestration/verify-judgment-gates.d.ts +66 -0
  182. package/dist/orchestration/verify-judgment-gates.js +710 -0
  183. package/dist/packs/index.d.ts +4 -0
  184. package/dist/packs/index.js +4 -0
  185. package/dist/packs/pack-render.d.ts +31 -0
  186. package/dist/packs/pack-render.js +357 -0
  187. package/dist/packs/packs-slice.d.ts +58 -0
  188. package/dist/packs/packs-slice.js +649 -0
  189. package/dist/packs/quarantine-ext.d.ts +7 -0
  190. package/dist/packs/quarantine-ext.js +164 -0
  191. package/dist/platform/agents-md.d.ts +31 -0
  192. package/dist/platform/agents-md.js +320 -0
  193. package/dist/platform/changelog-cli.d.ts +3 -0
  194. package/dist/platform/changelog-cli.js +64 -0
  195. package/dist/platform/constants.d.ts +20 -0
  196. package/dist/platform/constants.js +27 -0
  197. package/dist/platform/index.d.ts +9 -0
  198. package/dist/platform/index.js +9 -0
  199. package/dist/platform/ip-risk.d.ts +10 -0
  200. package/dist/platform/ip-risk.js +235 -0
  201. package/dist/platform/linear-scan.d.ts +36 -0
  202. package/dist/platform/linear-scan.js +174 -0
  203. package/dist/platform/platform-capabilities.d.ts +45 -0
  204. package/dist/platform/platform-capabilities.js +190 -0
  205. package/dist/platform/resolve-changelog-unreleased.d.ts +24 -0
  206. package/dist/platform/resolve-changelog-unreleased.js +364 -0
  207. package/dist/platform/resolve-version.d.ts +22 -0
  208. package/dist/platform/resolve-version.js +303 -0
  209. package/dist/platform/slug-normalize.d.ts +9 -0
  210. package/dist/platform/slug-normalize.js +110 -0
  211. package/dist/policy/autonomy.d.ts +43 -0
  212. package/dist/policy/autonomy.js +220 -0
  213. package/dist/policy/capacity.d.ts +45 -0
  214. package/dist/policy/capacity.js +251 -0
  215. package/dist/policy/decisions.d.ts +26 -0
  216. package/dist/policy/decisions.js +114 -0
  217. package/dist/policy/disclosure.d.ts +4 -0
  218. package/dist/policy/disclosure.js +19 -0
  219. package/dist/policy/index.d.ts +43 -0
  220. package/dist/policy/index.js +298 -0
  221. package/dist/policy/resolve.d.ts +38 -0
  222. package/dist/policy/resolve.js +228 -0
  223. package/dist/policy/wip.d.ts +15 -0
  224. package/dist/policy/wip.js +81 -0
  225. package/dist/pr-closing-keywords/constants.d.ts +6 -0
  226. package/dist/pr-closing-keywords/constants.js +6 -0
  227. package/dist/pr-closing-keywords/detect.d.ts +5 -0
  228. package/dist/pr-closing-keywords/detect.js +113 -0
  229. package/dist/pr-closing-keywords/gh.d.ts +6 -0
  230. package/dist/pr-closing-keywords/gh.js +129 -0
  231. package/dist/pr-closing-keywords/index.d.ts +7 -0
  232. package/dist/pr-closing-keywords/index.js +6 -0
  233. package/dist/pr-closing-keywords/io.d.ts +3 -0
  234. package/dist/pr-closing-keywords/io.js +22 -0
  235. package/dist/pr-closing-keywords/main.d.ts +9 -0
  236. package/dist/pr-closing-keywords/main.js +246 -0
  237. package/dist/pr-closing-keywords/types.d.ts +23 -0
  238. package/dist/pr-closing-keywords/types.js +2 -0
  239. package/dist/pr-merge-readiness/compute.d.ts +7 -0
  240. package/dist/pr-merge-readiness/compute.js +210 -0
  241. package/dist/pr-merge-readiness/constants.d.ts +20 -0
  242. package/dist/pr-merge-readiness/constants.js +32 -0
  243. package/dist/pr-merge-readiness/evaluate.d.ts +5 -0
  244. package/dist/pr-merge-readiness/evaluate.js +48 -0
  245. package/dist/pr-merge-readiness/gh.d.ts +22 -0
  246. package/dist/pr-merge-readiness/gh.js +281 -0
  247. package/dist/pr-merge-readiness/index.d.ts +9 -0
  248. package/dist/pr-merge-readiness/index.js +8 -0
  249. package/dist/pr-merge-readiness/main.d.ts +14 -0
  250. package/dist/pr-merge-readiness/main.js +67 -0
  251. package/dist/pr-merge-readiness/output.d.ts +7 -0
  252. package/dist/pr-merge-readiness/output.js +98 -0
  253. package/dist/pr-merge-readiness/parse.d.ts +6 -0
  254. package/dist/pr-merge-readiness/parse.js +83 -0
  255. package/dist/pr-merge-readiness/types.d.ts +29 -0
  256. package/dist/pr-merge-readiness/types.js +2 -0
  257. package/dist/pr-monitor/cadence.d.ts +3 -0
  258. package/dist/pr-monitor/cadence.js +12 -0
  259. package/dist/pr-monitor/constants.d.ts +8 -0
  260. package/dist/pr-monitor/constants.js +12 -0
  261. package/dist/pr-monitor/index.d.ts +7 -0
  262. package/dist/pr-monitor/index.js +6 -0
  263. package/dist/pr-monitor/main.d.ts +17 -0
  264. package/dist/pr-monitor/main.js +169 -0
  265. package/dist/pr-monitor/monitor.d.ts +9 -0
  266. package/dist/pr-monitor/monitor.js +106 -0
  267. package/dist/pr-monitor/readiness.d.ts +6 -0
  268. package/dist/pr-monitor/readiness.js +64 -0
  269. package/dist/pr-monitor/types.d.ts +30 -0
  270. package/dist/pr-monitor/types.js +2 -0
  271. package/dist/pr-protected-issues/constants.d.ts +7 -0
  272. package/dist/pr-protected-issues/constants.js +7 -0
  273. package/dist/pr-protected-issues/gh.d.ts +9 -0
  274. package/dist/pr-protected-issues/gh.js +96 -0
  275. package/dist/pr-protected-issues/index.d.ts +6 -0
  276. package/dist/pr-protected-issues/index.js +5 -0
  277. package/dist/pr-protected-issues/main.d.ts +14 -0
  278. package/dist/pr-protected-issues/main.js +128 -0
  279. package/dist/pr-protected-issues/parse.d.ts +6 -0
  280. package/dist/pr-protected-issues/parse.js +21 -0
  281. package/dist/pr-protected-issues/types.d.ts +8 -0
  282. package/dist/pr-protected-issues/types.js +2 -0
  283. package/dist/pr-wait-mergeable/cascade.d.ts +12 -0
  284. package/dist/pr-wait-mergeable/cascade.js +107 -0
  285. package/dist/pr-wait-mergeable/classify.d.ts +5 -0
  286. package/dist/pr-wait-mergeable/classify.js +47 -0
  287. package/dist/pr-wait-mergeable/constants.d.ts +5 -0
  288. package/dist/pr-wait-mergeable/constants.js +5 -0
  289. package/dist/pr-wait-mergeable/index.d.ts +8 -0
  290. package/dist/pr-wait-mergeable/index.js +7 -0
  291. package/dist/pr-wait-mergeable/main.d.ts +18 -0
  292. package/dist/pr-wait-mergeable/main.js +213 -0
  293. package/dist/pr-wait-mergeable/result.d.ts +9 -0
  294. package/dist/pr-wait-mergeable/result.js +38 -0
  295. package/dist/pr-wait-mergeable/types.d.ts +16 -0
  296. package/dist/pr-wait-mergeable/types.js +2 -0
  297. package/dist/pr-wait-mergeable/wrappers.d.ts +26 -0
  298. package/dist/pr-wait-mergeable/wrappers.js +103 -0
  299. package/dist/preflight/evaluate.d.ts +22 -0
  300. package/dist/preflight/evaluate.js +137 -0
  301. package/dist/preflight/index.d.ts +3 -0
  302. package/dist/preflight/index.js +2 -0
  303. package/dist/preflight-cache/evaluate.d.ts +40 -0
  304. package/dist/preflight-cache/evaluate.js +481 -0
  305. package/dist/preflight-cache/index.d.ts +3 -0
  306. package/dist/preflight-cache/index.js +2 -0
  307. package/dist/preflight-gh/classifier.d.ts +56 -0
  308. package/dist/preflight-gh/classifier.js +415 -0
  309. package/dist/preflight-gh/index.d.ts +3 -0
  310. package/dist/preflight-gh/index.js +2 -0
  311. package/dist/release/changelog.d.ts +9 -0
  312. package/dist/release/changelog.js +105 -0
  313. package/dist/release/cli.d.ts +2 -0
  314. package/dist/release/cli.js +7 -0
  315. package/dist/release/constants.d.ts +22 -0
  316. package/dist/release/constants.js +85 -0
  317. package/dist/release/flags.d.ts +4 -0
  318. package/dist/release/flags.js +131 -0
  319. package/dist/release/gh.d.ts +16 -0
  320. package/dist/release/gh.js +210 -0
  321. package/dist/release/git.d.ts +11 -0
  322. package/dist/release/git.js +84 -0
  323. package/dist/release/index.d.ts +14 -0
  324. package/dist/release/index.js +15 -0
  325. package/dist/release/main.d.ts +3 -0
  326. package/dist/release/main.js +47 -0
  327. package/dist/release/paths.d.ts +6 -0
  328. package/dist/release/paths.js +39 -0
  329. package/dist/release/pipeline.d.ts +6 -0
  330. package/dist/release/pipeline.js +314 -0
  331. package/dist/release/pyproject-sync.d.ts +6 -0
  332. package/dist/release/pyproject-sync.js +52 -0
  333. package/dist/release/pyproject.d.ts +3 -0
  334. package/dist/release/pyproject.js +33 -0
  335. package/dist/release/python-bridge.d.ts +7 -0
  336. package/dist/release/python-bridge.js +144 -0
  337. package/dist/release/spawn.d.ts +8 -0
  338. package/dist/release/spawn.js +44 -0
  339. package/dist/release/types.d.ts +58 -0
  340. package/dist/release/types.js +2 -0
  341. package/dist/release/version.d.ts +11 -0
  342. package/dist/release/version.js +74 -0
  343. package/dist/release-e2e/constants.d.ts +22 -0
  344. package/dist/release-e2e/constants.js +43 -0
  345. package/dist/release-e2e/entrypoint-worker-thread.d.ts +2 -0
  346. package/dist/release-e2e/entrypoint-worker-thread.js +22 -0
  347. package/dist/release-e2e/entrypoint-worker.d.ts +13 -0
  348. package/dist/release-e2e/entrypoint-worker.js +50 -0
  349. package/dist/release-e2e/entrypoint.d.ts +40 -0
  350. package/dist/release-e2e/entrypoint.js +257 -0
  351. package/dist/release-e2e/flags.d.ts +5 -0
  352. package/dist/release-e2e/flags.js +80 -0
  353. package/dist/release-e2e/gh-ops.d.ts +5 -0
  354. package/dist/release-e2e/gh-ops.js +72 -0
  355. package/dist/release-e2e/git-ops.d.ts +6 -0
  356. package/dist/release-e2e/git-ops.js +47 -0
  357. package/dist/release-e2e/index.d.ts +10 -0
  358. package/dist/release-e2e/index.js +10 -0
  359. package/dist/release-e2e/main.d.ts +4 -0
  360. package/dist/release-e2e/main.js +78 -0
  361. package/dist/release-e2e/npm-ops.d.ts +29 -0
  362. package/dist/release-e2e/npm-ops.js +149 -0
  363. package/dist/release-e2e/rehearsal.d.ts +3 -0
  364. package/dist/release-e2e/rehearsal.js +51 -0
  365. package/dist/release-e2e/rollback-bridge.d.ts +3 -0
  366. package/dist/release-e2e/rollback-bridge.js +20 -0
  367. package/dist/release-e2e/types.d.ts +40 -0
  368. package/dist/release-e2e/types.js +2 -0
  369. package/dist/release-publish/cli.d.ts +2 -0
  370. package/dist/release-publish/cli.js +7 -0
  371. package/dist/release-publish/constants.d.ts +4 -0
  372. package/dist/release-publish/constants.js +24 -0
  373. package/dist/release-publish/flags.d.ts +5 -0
  374. package/dist/release-publish/flags.js +67 -0
  375. package/dist/release-publish/gh-api.d.ts +6 -0
  376. package/dist/release-publish/gh-api.js +102 -0
  377. package/dist/release-publish/index.d.ts +7 -0
  378. package/dist/release-publish/index.js +8 -0
  379. package/dist/release-publish/main.d.ts +3 -0
  380. package/dist/release-publish/main.js +38 -0
  381. package/dist/release-publish/pipeline.d.ts +4 -0
  382. package/dist/release-publish/pipeline.js +46 -0
  383. package/dist/release-publish/types.d.ts +25 -0
  384. package/dist/release-publish/types.js +2 -0
  385. package/dist/release-rollback/constants.d.ts +18 -0
  386. package/dist/release-rollback/constants.js +55 -0
  387. package/dist/release-rollback/flags.d.ts +4 -0
  388. package/dist/release-rollback/flags.js +136 -0
  389. package/dist/release-rollback/gh.d.ts +5 -0
  390. package/dist/release-rollback/gh.js +71 -0
  391. package/dist/release-rollback/git.d.ts +9 -0
  392. package/dist/release-rollback/git.js +87 -0
  393. package/dist/release-rollback/guard.d.ts +12 -0
  394. package/dist/release-rollback/guard.js +97 -0
  395. package/dist/release-rollback/index.d.ts +9 -0
  396. package/dist/release-rollback/index.js +10 -0
  397. package/dist/release-rollback/main.d.ts +3 -0
  398. package/dist/release-rollback/main.js +51 -0
  399. package/dist/release-rollback/pipeline.d.ts +7 -0
  400. package/dist/release-rollback/pipeline.js +221 -0
  401. package/dist/release-rollback/types.d.ts +41 -0
  402. package/dist/release-rollback/types.js +2 -0
  403. package/dist/render/constants.d.ts +16 -0
  404. package/dist/render/constants.js +78 -0
  405. package/dist/render/framework-commands.d.ts +41 -0
  406. package/dist/render/framework-commands.js +416 -0
  407. package/dist/render/index.d.ts +15 -0
  408. package/dist/render/index.js +15 -0
  409. package/dist/render/prd-render.d.ts +14 -0
  410. package/dist/render/prd-render.js +79 -0
  411. package/dist/render/project-render.d.ts +20 -0
  412. package/dist/render/project-render.js +169 -0
  413. package/dist/render/roadmap-render.d.ts +8 -0
  414. package/dist/render/roadmap-render.js +387 -0
  415. package/dist/render/spec-render.d.ts +13 -0
  416. package/dist/render/spec-render.js +362 -0
  417. package/dist/render/spec-validate.d.ts +6 -0
  418. package/dist/render/spec-validate.js +157 -0
  419. package/dist/render/text-utils.d.ts +8 -0
  420. package/dist/render/text-utils.js +72 -0
  421. package/dist/scm/argv.d.ts +7 -0
  422. package/dist/scm/argv.js +54 -0
  423. package/dist/scm/binary.d.ts +11 -0
  424. package/dist/scm/binary.js +35 -0
  425. package/dist/scm/build-command.d.ts +11 -0
  426. package/dist/scm/build-command.js +23 -0
  427. package/dist/scm/call.d.ts +25 -0
  428. package/dist/scm/call.js +38 -0
  429. package/dist/scm/cli.d.ts +3 -0
  430. package/dist/scm/cli.js +7 -0
  431. package/dist/scm/constants.d.ts +11 -0
  432. package/dist/scm/constants.js +11 -0
  433. package/dist/scm/errors.d.ts +5 -0
  434. package/dist/scm/errors.js +8 -0
  435. package/dist/scm/gh-rest.d.ts +74 -0
  436. package/dist/scm/gh-rest.js +326 -0
  437. package/dist/scm/index.d.ts +11 -0
  438. package/dist/scm/index.js +11 -0
  439. package/dist/scm/main.d.ts +12 -0
  440. package/dist/scm/main.js +65 -0
  441. package/dist/scm/py-format.d.ts +9 -0
  442. package/dist/scm/py-format.js +31 -0
  443. package/dist/scm/rest-dispatch.d.ts +14 -0
  444. package/dist/scm/rest-dispatch.js +175 -0
  445. package/dist/scope/audit-log.d.ts +14 -0
  446. package/dist/scope/audit-log.js +186 -0
  447. package/dist/scope/capacity-stamp.d.ts +3 -0
  448. package/dist/scope/capacity-stamp.js +45 -0
  449. package/dist/scope/cli.d.ts +4 -0
  450. package/dist/scope/cli.js +11 -0
  451. package/dist/scope/constants.d.ts +19 -0
  452. package/dist/scope/constants.js +44 -0
  453. package/dist/scope/decompose.d.ts +42 -0
  454. package/dist/scope/decompose.js +1016 -0
  455. package/dist/scope/decomposed-refs.d.ts +6 -0
  456. package/dist/scope/decomposed-refs.js +173 -0
  457. package/dist/scope/demote.d.ts +24 -0
  458. package/dist/scope/demote.js +209 -0
  459. package/dist/scope/index.d.ts +12 -0
  460. package/dist/scope/index.js +12 -0
  461. package/dist/scope/main.d.ts +30 -0
  462. package/dist/scope/main.js +365 -0
  463. package/dist/scope/project-context.d.ts +6 -0
  464. package/dist/scope/project-context.js +55 -0
  465. package/dist/scope/project-definition-sync.d.ts +3 -0
  466. package/dist/scope/project-definition-sync.js +157 -0
  467. package/dist/scope/transition.d.ts +10 -0
  468. package/dist/scope/transition.js +133 -0
  469. package/dist/scope/undo.d.ts +25 -0
  470. package/dist/scope/undo.js +334 -0
  471. package/dist/scope/vbrief-json.d.ts +4 -0
  472. package/dist/scope/vbrief-json.js +8 -0
  473. package/dist/scope/vbrief-ref.d.ts +11 -0
  474. package/dist/scope/vbrief-ref.js +100 -0
  475. package/dist/scope/wip-cap-check.d.ts +11 -0
  476. package/dist/scope/wip-cap-check.js +23 -0
  477. package/dist/session/git.d.ts +14 -0
  478. package/dist/session/git.js +49 -0
  479. package/dist/session/index.d.ts +9 -0
  480. package/dist/session/index.js +9 -0
  481. package/dist/session/json.d.ts +7 -0
  482. package/dist/session/json.js +29 -0
  483. package/dist/session/resume-conditions.d.ts +56 -0
  484. package/dist/session/resume-conditions.js +486 -0
  485. package/dist/session/ritual-entrypoint.d.ts +20 -0
  486. package/dist/session/ritual-entrypoint.js +86 -0
  487. package/dist/session/ritual-sentinel.d.ts +58 -0
  488. package/dist/session/ritual-sentinel.js +338 -0
  489. package/dist/session/session-start-hook.d.ts +14 -0
  490. package/dist/session/session-start-hook.js +53 -0
  491. package/dist/session/session-start.d.ts +41 -0
  492. package/dist/session/session-start.js +290 -0
  493. package/dist/session/staleness.d.ts +8 -0
  494. package/dist/session/staleness.js +91 -0
  495. package/dist/session/time.d.ts +5 -0
  496. package/dist/session/time.js +19 -0
  497. package/dist/session/verify-session-ritual.d.ts +29 -0
  498. package/dist/session/verify-session-ritual.js +222 -0
  499. package/dist/slice/cli.d.ts +21 -0
  500. package/dist/slice/cli.js +248 -0
  501. package/dist/slice/constants.d.ts +18 -0
  502. package/dist/slice/constants.js +30 -0
  503. package/dist/slice/errors.d.ts +9 -0
  504. package/dist/slice/errors.js +15 -0
  505. package/dist/slice/existing.d.ts +53 -0
  506. package/dist/slice/existing.js +344 -0
  507. package/dist/slice/index.d.ts +10 -0
  508. package/dist/slice/index.js +10 -0
  509. package/dist/slice/json.d.ts +7 -0
  510. package/dist/slice/json.js +25 -0
  511. package/dist/slice/lock.d.ts +9 -0
  512. package/dist/slice/lock.js +59 -0
  513. package/dist/slice/project-context.d.ts +15 -0
  514. package/dist/slice/project-context.js +87 -0
  515. package/dist/slice/record.d.ts +50 -0
  516. package/dist/slice/record.js +139 -0
  517. package/dist/slice/validate.d.ts +3 -0
  518. package/dist/slice/validate.js +86 -0
  519. package/dist/story-ready/allocation.d.ts +14 -0
  520. package/dist/story-ready/allocation.js +61 -0
  521. package/dist/story-ready/evaluate.d.ts +23 -0
  522. package/dist/story-ready/evaluate.js +161 -0
  523. package/dist/story-ready/git.d.ts +6 -0
  524. package/dist/story-ready/git.js +26 -0
  525. package/dist/story-ready/index.d.ts +4 -0
  526. package/dist/story-ready/index.js +4 -0
  527. package/dist/subprocess/max-buffer.d.ts +18 -0
  528. package/dist/subprocess/max-buffer.js +18 -0
  529. package/dist/swarm/complete-cohort-cli.d.ts +3 -0
  530. package/dist/swarm/complete-cohort-cli.js +42 -0
  531. package/dist/swarm/complete-cohort.d.ts +34 -0
  532. package/dist/swarm/complete-cohort.js +407 -0
  533. package/dist/swarm/constants.d.ts +18 -0
  534. package/dist/swarm/constants.js +24 -0
  535. package/dist/swarm/index.d.ts +18 -0
  536. package/dist/swarm/index.js +18 -0
  537. package/dist/swarm/launch-cli.d.ts +5 -0
  538. package/dist/swarm/launch-cli.js +111 -0
  539. package/dist/swarm/launch.d.ts +78 -0
  540. package/dist/swarm/launch.js +587 -0
  541. package/dist/swarm/readiness-cli.d.ts +3 -0
  542. package/dist/swarm/readiness-cli.js +25 -0
  543. package/dist/swarm/readiness.d.ts +24 -0
  544. package/dist/swarm/readiness.js +606 -0
  545. package/dist/swarm/routing-set-cli.d.ts +3 -0
  546. package/dist/swarm/routing-set-cli.js +82 -0
  547. package/dist/swarm/routing-verify-cli.d.ts +3 -0
  548. package/dist/swarm/routing-verify-cli.js +51 -0
  549. package/dist/swarm/routing-verify.d.ts +20 -0
  550. package/dist/swarm/routing-verify.js +104 -0
  551. package/dist/swarm/routing.d.ts +57 -0
  552. package/dist/swarm/routing.js +173 -0
  553. package/dist/swarm/subagent-backend.d.ts +22 -0
  554. package/dist/swarm/subagent-backend.js +162 -0
  555. package/dist/swarm/subprocess.d.ts +10 -0
  556. package/dist/swarm/subprocess.js +34 -0
  557. package/dist/swarm/verify-review-clean-cli.d.ts +3 -0
  558. package/dist/swarm/verify-review-clean-cli.js +38 -0
  559. package/dist/swarm/verify-review-clean.d.ts +40 -0
  560. package/dist/swarm/verify-review-clean.js +240 -0
  561. package/dist/swarm/worktrees-cli.d.ts +9 -0
  562. package/dist/swarm/worktrees-cli.js +57 -0
  563. package/dist/swarm/worktrees.d.ts +39 -0
  564. package/dist/swarm/worktrees.js +178 -0
  565. package/dist/text/redos-safe.d.ts +29 -0
  566. package/dist/text/redos-safe.js +338 -0
  567. package/dist/triage/actions/candidates-log.d.ts +8 -0
  568. package/dist/triage/actions/candidates-log.js +195 -0
  569. package/dist/triage/actions/errors.d.ts +17 -0
  570. package/dist/triage/actions/errors.js +29 -0
  571. package/dist/triage/actions/index.d.ts +19 -0
  572. package/dist/triage/actions/index.js +305 -0
  573. package/dist/triage/actions/resume-on.d.ts +3 -0
  574. package/dist/triage/actions/resume-on.js +65 -0
  575. package/dist/triage/actions/types.d.ts +57 -0
  576. package/dist/triage/actions/types.js +2 -0
  577. package/dist/triage/bootstrap/gitignore.d.ts +16 -0
  578. package/dist/triage/bootstrap/gitignore.js +414 -0
  579. package/dist/triage/bootstrap/index.d.ts +44 -0
  580. package/dist/triage/bootstrap/index.js +572 -0
  581. package/dist/triage/bootstrap/types.d.ts +60 -0
  582. package/dist/triage/bootstrap/types.js +2 -0
  583. package/dist/triage/bulk/index.d.ts +99 -0
  584. package/dist/triage/bulk/index.js +454 -0
  585. package/dist/triage/classify/index.d.ts +88 -0
  586. package/dist/triage/classify/index.js +738 -0
  587. package/dist/triage/help/index.d.ts +25 -0
  588. package/dist/triage/help/index.js +212 -0
  589. package/dist/triage/help/registry-data.d.ts +555 -0
  590. package/dist/triage/help/registry-data.js +841 -0
  591. package/dist/triage/index.d.ts +23 -0
  592. package/dist/triage/index.js +23 -0
  593. package/dist/triage/queue/audit.d.ts +12 -0
  594. package/dist/triage/queue/audit.js +47 -0
  595. package/dist/triage/queue/build-queue.d.ts +9 -0
  596. package/dist/triage/queue/build-queue.js +133 -0
  597. package/dist/triage/queue/cache.d.ts +20 -0
  598. package/dist/triage/queue/cache.js +169 -0
  599. package/dist/triage/queue/constants.d.ts +22 -0
  600. package/dist/triage/queue/constants.js +28 -0
  601. package/dist/triage/queue/derive-group.d.ts +7 -0
  602. package/dist/triage/queue/derive-group.js +20 -0
  603. package/dist/triage/queue/index.d.ts +12 -0
  604. package/dist/triage/queue/index.js +12 -0
  605. package/dist/triage/queue/project.d.ts +6 -0
  606. package/dist/triage/queue/project.js +18 -0
  607. package/dist/triage/queue/ranking-labels.d.ts +10 -0
  608. package/dist/triage/queue/ranking-labels.js +54 -0
  609. package/dist/triage/queue/render.d.ts +9 -0
  610. package/dist/triage/queue/render.js +35 -0
  611. package/dist/triage/queue/repo.d.ts +5 -0
  612. package/dist/triage/queue/repo.js +36 -0
  613. package/dist/triage/queue/scope-walk.d.ts +13 -0
  614. package/dist/triage/queue/scope-walk.js +170 -0
  615. package/dist/triage/queue/selection.d.ts +28 -0
  616. package/dist/triage/queue/selection.js +109 -0
  617. package/dist/triage/queue/types.d.ts +58 -0
  618. package/dist/triage/queue/types.js +2 -0
  619. package/dist/triage/reconcile/audit.d.ts +4 -0
  620. package/dist/triage/reconcile/audit.js +62 -0
  621. package/dist/triage/reconcile/index.d.ts +5 -0
  622. package/dist/triage/reconcile/index.js +5 -0
  623. package/dist/triage/reconcile/parse-uri.d.ts +4 -0
  624. package/dist/triage/reconcile/parse-uri.js +43 -0
  625. package/dist/triage/reconcile/reconcile.d.ts +17 -0
  626. package/dist/triage/reconcile/reconcile.js +163 -0
  627. package/dist/triage/reconcile/types.d.ts +23 -0
  628. package/dist/triage/reconcile/types.js +70 -0
  629. package/dist/triage/refresh/drift.d.ts +15 -0
  630. package/dist/triage/refresh/drift.js +72 -0
  631. package/dist/triage/refresh/extract.d.ts +3 -0
  632. package/dist/triage/refresh/extract.js +43 -0
  633. package/dist/triage/refresh/index.d.ts +5 -0
  634. package/dist/triage/refresh/index.js +5 -0
  635. package/dist/triage/refresh/refresh.d.ts +16 -0
  636. package/dist/triage/refresh/refresh.js +95 -0
  637. package/dist/triage/refresh/types.d.ts +18 -0
  638. package/dist/triage/refresh/types.js +7 -0
  639. package/dist/triage/scope/cli.d.ts +23 -0
  640. package/dist/triage/scope/cli.js +257 -0
  641. package/dist/triage/scope/constants.d.ts +16 -0
  642. package/dist/triage/scope/constants.js +25 -0
  643. package/dist/triage/scope/coverage.d.ts +24 -0
  644. package/dist/triage/scope/coverage.js +96 -0
  645. package/dist/triage/scope/duration.d.ts +6 -0
  646. package/dist/triage/scope/duration.js +44 -0
  647. package/dist/triage/scope/evaluate.d.ts +18 -0
  648. package/dist/triage/scope/evaluate.js +161 -0
  649. package/dist/triage/scope/index.d.ts +14 -0
  650. package/dist/triage/scope/index.js +14 -0
  651. package/dist/triage/scope/milestone.d.ts +13 -0
  652. package/dist/triage/scope/milestone.js +178 -0
  653. package/dist/triage/scope/mutations-core.d.ts +24 -0
  654. package/dist/triage/scope/mutations-core.js +216 -0
  655. package/dist/triage/scope/mutations.d.ts +21 -0
  656. package/dist/triage/scope/mutations.js +203 -0
  657. package/dist/triage/scope/normalize.d.ts +5 -0
  658. package/dist/triage/scope/normalize.js +45 -0
  659. package/dist/triage/scope/python-repr.d.ts +7 -0
  660. package/dist/triage/scope/python-repr.js +25 -0
  661. package/dist/triage/scope/renderers.d.ts +9 -0
  662. package/dist/triage/scope/renderers.js +177 -0
  663. package/dist/triage/scope/resolve.d.ts +15 -0
  664. package/dist/triage/scope/resolve.js +122 -0
  665. package/dist/triage/scope/time.d.ts +6 -0
  666. package/dist/triage/scope/time.js +18 -0
  667. package/dist/triage/scope/validate.d.ts +11 -0
  668. package/dist/triage/scope/validate.js +272 -0
  669. package/dist/triage/scope-drift/add-ignore.d.ts +10 -0
  670. package/dist/triage/scope-drift/add-ignore.js +78 -0
  671. package/dist/triage/scope-drift/cache-walker.d.ts +8 -0
  672. package/dist/triage/scope-drift/cache-walker.js +103 -0
  673. package/dist/triage/scope-drift/compute.d.ts +9 -0
  674. package/dist/triage/scope-drift/compute.js +92 -0
  675. package/dist/triage/scope-drift/index.d.ts +6 -0
  676. package/dist/triage/scope-drift/index.js +6 -0
  677. package/dist/triage/scope-drift/render.d.ts +4 -0
  678. package/dist/triage/scope-drift/render.js +45 -0
  679. package/dist/triage/scope-drift/scope-rules.d.ts +16 -0
  680. package/dist/triage/scope-drift/scope-rules.js +149 -0
  681. package/dist/triage/scope-drift/types.d.ts +13 -0
  682. package/dist/triage/scope-drift/types.js +8 -0
  683. package/dist/triage/smoketest/index.d.ts +81 -0
  684. package/dist/triage/smoketest/index.js +335 -0
  685. package/dist/triage/subscribe/index.d.ts +38 -0
  686. package/dist/triage/subscribe/index.js +303 -0
  687. package/dist/triage/summary/index.d.ts +70 -0
  688. package/dist/triage/summary/index.js +431 -0
  689. package/dist/triage/summary/reconcilable.d.ts +12 -0
  690. package/dist/triage/summary/reconcilable.js +150 -0
  691. package/dist/triage/summary/scope-drift.d.ts +5 -0
  692. package/dist/triage/summary/scope-drift.js +219 -0
  693. package/dist/triage/welcome/constants.d.ts +24 -0
  694. package/dist/triage/welcome/constants.js +34 -0
  695. package/dist/triage/welcome/default-mode.d.ts +21 -0
  696. package/dist/triage/welcome/default-mode.js +48 -0
  697. package/dist/triage/welcome/index.d.ts +6 -0
  698. package/dist/triage/welcome/index.js +6 -0
  699. package/dist/triage/welcome/prior-state.d.ts +17 -0
  700. package/dist/triage/welcome/prior-state.js +170 -0
  701. package/dist/triage/welcome/summary.d.ts +23 -0
  702. package/dist/triage/welcome/summary.js +303 -0
  703. package/dist/triage/welcome/writers.d.ts +17 -0
  704. package/dist/triage/welcome/writers.js +157 -0
  705. package/dist/ts-check-lane/index.d.ts +3 -0
  706. package/dist/ts-check-lane/index.js +2 -0
  707. package/dist/ts-check-lane/run-lane.d.ts +53 -0
  708. package/dist/ts-check-lane/run-lane.js +98 -0
  709. package/dist/validate-content/capacity-policy.d.ts +82 -0
  710. package/dist/validate-content/capacity-policy.js +399 -0
  711. package/dist/validate-content/capacity-show.d.ts +60 -0
  712. package/dist/validate-content/capacity-show.js +336 -0
  713. package/dist/validate-content/filename.d.ts +3 -0
  714. package/dist/validate-content/filename.js +54 -0
  715. package/dist/validate-content/index.d.ts +9 -0
  716. package/dist/validate-content/index.js +9 -0
  717. package/dist/validate-content/link-parser.d.ts +5 -0
  718. package/dist/validate-content/link-parser.js +42 -0
  719. package/dist/validate-content/types.d.ts +8 -0
  720. package/dist/validate-content/types.js +2 -0
  721. package/dist/validate-content/validate-links.d.ts +17 -0
  722. package/dist/validate-content/validate-links.js +114 -0
  723. package/dist/validate-content/validate-strategy-output.d.ts +11 -0
  724. package/dist/validate-content/validate-strategy-output.js +120 -0
  725. package/dist/validate-content/verify-capacity.d.ts +14 -0
  726. package/dist/validate-content/verify-capacity.js +96 -0
  727. package/dist/vbrief-activate/activate.d.ts +13 -0
  728. package/dist/vbrief-activate/activate.js +184 -0
  729. package/dist/vbrief-activate/constants.d.ts +9 -0
  730. package/dist/vbrief-activate/constants.js +11 -0
  731. package/dist/vbrief-activate/index.d.ts +6 -0
  732. package/dist/vbrief-activate/index.js +4 -0
  733. package/dist/vbrief-activate/main.d.ts +14 -0
  734. package/dist/vbrief-activate/main.js +33 -0
  735. package/dist/vbrief-build/build.d.ts +13 -0
  736. package/dist/vbrief-build/build.js +123 -0
  737. package/dist/vbrief-build/constants.d.ts +13 -0
  738. package/dist/vbrief-build/constants.js +34 -0
  739. package/dist/vbrief-build/index.d.ts +12 -0
  740. package/dist/vbrief-build/index.js +11 -0
  741. package/dist/vbrief-build/json.d.ts +3 -0
  742. package/dist/vbrief-build/json.js +5 -0
  743. package/dist/vbrief-build/main.d.ts +5 -0
  744. package/dist/vbrief-build/main.js +65 -0
  745. package/dist/vbrief-build/parity-scenarios.d.ts +19 -0
  746. package/dist/vbrief-build/parity-scenarios.js +321 -0
  747. package/dist/vbrief-build/project-definition-io.d.ts +13 -0
  748. package/dist/vbrief-build/project-definition-io.js +117 -0
  749. package/dist/vbrief-build/routing.d.ts +13 -0
  750. package/dist/vbrief-build/routing.js +110 -0
  751. package/dist/vbrief-build/sources.d.ts +16 -0
  752. package/dist/vbrief-build/sources.js +294 -0
  753. package/dist/vbrief-build/speckit.d.ts +23 -0
  754. package/dist/vbrief-build/speckit.js +212 -0
  755. package/dist/vbrief-build/types.d.ts +18 -0
  756. package/dist/vbrief-build/types.js +7 -0
  757. package/dist/vbrief-reconcile/graph.d.ts +11 -0
  758. package/dist/vbrief-reconcile/graph.js +171 -0
  759. package/dist/vbrief-reconcile/index.d.ts +10 -0
  760. package/dist/vbrief-reconcile/index.js +9 -0
  761. package/dist/vbrief-reconcile/labels.d.ts +22 -0
  762. package/dist/vbrief-reconcile/labels.js +252 -0
  763. package/dist/vbrief-reconcile/main.d.ts +18 -0
  764. package/dist/vbrief-reconcile/main.js +149 -0
  765. package/dist/vbrief-reconcile/parity-scenarios.d.ts +16 -0
  766. package/dist/vbrief-reconcile/parity-scenarios.js +385 -0
  767. package/dist/vbrief-reconcile/py-repr.d.ts +3 -0
  768. package/dist/vbrief-reconcile/py-repr.js +5 -0
  769. package/dist/vbrief-reconcile/reconciliation.d.ts +20 -0
  770. package/dist/vbrief-reconcile/reconciliation.js +542 -0
  771. package/dist/vbrief-reconcile/swarm-deps.d.ts +8 -0
  772. package/dist/vbrief-reconcile/swarm-deps.js +142 -0
  773. package/dist/vbrief-reconcile/types.d.ts +128 -0
  774. package/dist/vbrief-reconcile/types.js +2 -0
  775. package/dist/vbrief-reconcile/umbrellas.d.ts +48 -0
  776. package/dist/vbrief-reconcile/umbrellas.js +462 -0
  777. package/dist/vbrief-validate/conformance.d.ts +26 -0
  778. package/dist/vbrief-validate/conformance.js +273 -0
  779. package/dist/vbrief-validate/constants.d.ts +13 -0
  780. package/dist/vbrief-validate/constants.js +36 -0
  781. package/dist/vbrief-validate/decomposition.d.ts +3 -0
  782. package/dist/vbrief-validate/decomposition.js +38 -0
  783. package/dist/vbrief-validate/epic-links.d.ts +4 -0
  784. package/dist/vbrief-validate/epic-links.js +152 -0
  785. package/dist/vbrief-validate/filename.d.ts +5 -0
  786. package/dist/vbrief-validate/filename.js +62 -0
  787. package/dist/vbrief-validate/folder-status.d.ts +4 -0
  788. package/dist/vbrief-validate/folder-status.js +30 -0
  789. package/dist/vbrief-validate/index.d.ts +14 -0
  790. package/dist/vbrief-validate/index.js +11 -0
  791. package/dist/vbrief-validate/main.d.ts +17 -0
  792. package/dist/vbrief-validate/main.js +127 -0
  793. package/dist/vbrief-validate/origin.d.ts +4 -0
  794. package/dist/vbrief-validate/origin.js +76 -0
  795. package/dist/vbrief-validate/paths.d.ts +11 -0
  796. package/dist/vbrief-validate/paths.js +83 -0
  797. package/dist/vbrief-validate/placeholders.d.ts +3 -0
  798. package/dist/vbrief-validate/placeholders.js +33 -0
  799. package/dist/vbrief-validate/plan-hooks.d.ts +9 -0
  800. package/dist/vbrief-validate/plan-hooks.js +145 -0
  801. package/dist/vbrief-validate/precutover.d.ts +7 -0
  802. package/dist/vbrief-validate/precutover.js +30 -0
  803. package/dist/vbrief-validate/project-definition.d.ts +4 -0
  804. package/dist/vbrief-validate/project-definition.js +166 -0
  805. package/dist/vbrief-validate/schema.d.ts +8 -0
  806. package/dist/vbrief-validate/schema.js +150 -0
  807. package/dist/vbrief-validate/staleness.d.ts +3 -0
  808. package/dist/vbrief-validate/staleness.js +106 -0
  809. package/dist/vbrief-validate/validate-all.d.ts +17 -0
  810. package/dist/vbrief-validate/validate-all.js +119 -0
  811. package/dist/vbrief-validation/fidelity.d.ts +22 -0
  812. package/dist/vbrief-validation/fidelity.js +508 -0
  813. package/dist/vbrief-validation/index.d.ts +11 -0
  814. package/dist/vbrief-validation/index.js +8 -0
  815. package/dist/vbrief-validation/legacy-sections.d.ts +13 -0
  816. package/dist/vbrief-validation/legacy-sections.js +124 -0
  817. package/dist/vbrief-validation/main.d.ts +5 -0
  818. package/dist/vbrief-validation/main.js +65 -0
  819. package/dist/vbrief-validation/normalize.d.ts +22 -0
  820. package/dist/vbrief-validation/normalize.js +126 -0
  821. package/dist/vbrief-validation/parity-scenarios.d.ts +14 -0
  822. package/dist/vbrief-validation/parity-scenarios.js +523 -0
  823. package/dist/vbrief-validation/safety.d.ts +38 -0
  824. package/dist/vbrief-validation/safety.js +422 -0
  825. package/dist/vbrief-validation/story-quality.d.ts +29 -0
  826. package/dist/vbrief-validation/story-quality.js +452 -0
  827. package/dist/vbrief-validation/types.d.ts +58 -0
  828. package/dist/vbrief-validation/types.js +2 -0
  829. package/dist/vbrief-validation/validation.d.ts +15 -0
  830. package/dist/vbrief-validation/validation.js +123 -0
  831. package/dist/verify-env/index.d.ts +6 -0
  832. package/dist/verify-env/index.js +6 -0
  833. package/dist/verify-env/node-runtime.d.ts +6 -0
  834. package/dist/verify-env/node-runtime.js +11 -0
  835. package/dist/verify-env/toolchain-check.d.ts +28 -0
  836. package/dist/verify-env/toolchain-check.js +68 -0
  837. package/dist/verify-env/verify-hooks-installed.d.ts +21 -0
  838. package/dist/verify-env/verify-hooks-installed.js +162 -0
  839. package/dist/verify-env/verify-no-task-runtime.d.ts +20 -0
  840. package/dist/verify-env/verify-no-task-runtime.js +383 -0
  841. package/dist/verify-env/verify-tools.d.ts +59 -0
  842. package/dist/verify-env/verify-tools.js +354 -0
  843. package/dist/verify-source/code-structure-validate.d.ts +48 -0
  844. package/dist/verify-source/code-structure-validate.js +678 -0
  845. package/dist/verify-source/content-manifest.d.ts +102 -0
  846. package/dist/verify-source/content-manifest.js +282 -0
  847. package/dist/verify-source/index.d.ts +7 -0
  848. package/dist/verify-source/index.js +7 -0
  849. package/dist/verify-source/python-call-scan.d.ts +14 -0
  850. package/dist/verify-source/python-call-scan.js +137 -0
  851. package/dist/verify-source/rule-ownership-lint.d.ts +33 -0
  852. package/dist/verify-source/rule-ownership-lint.js +179 -0
  853. package/dist/verify-source/scm-boundary.d.ts +26 -0
  854. package/dist/verify-source/scm-boundary.js +170 -0
  855. package/dist/verify-source/verify-stubs.d.ts +19 -0
  856. package/dist/verify-source/verify-stubs.js +185 -0
  857. package/dist/wip-cap/evaluate.d.ts +17 -0
  858. package/dist/wip-cap/evaluate.js +62 -0
  859. package/dist/wip-cap/index.d.ts +2 -0
  860. package/dist/wip-cap/index.js +2 -0
  861. package/package.json +206 -0
@@ -0,0 +1,235 @@
1
+ import { wordBoundaryMatch } from "./linear-scan.js";
2
+ const BRANDED_GAMES_AND_UNIVERSES = [
3
+ "Magic: The Gathering",
4
+ "Magic the Gathering",
5
+ "MTG",
6
+ "Yu-Gi-Oh",
7
+ "Yugioh",
8
+ "Pokemon",
9
+ "Pokémon",
10
+ "Dungeons and Dragons",
11
+ "Dungeons & Dragons",
12
+ "D&D",
13
+ "Warhammer",
14
+ "Mario",
15
+ "Zelda",
16
+ "Final Fantasy",
17
+ "Halo",
18
+ "Call of Duty",
19
+ "Fortnite",
20
+ "Minecraft",
21
+ "Roblox",
22
+ "League of Legends",
23
+ "World of Warcraft",
24
+ "WoW",
25
+ "Overwatch",
26
+ "Counter-Strike",
27
+ "Valorant",
28
+ "Apex Legends",
29
+ "Star Wars",
30
+ "Star Trek",
31
+ "Marvel",
32
+ "DC Comics",
33
+ "Harry Potter",
34
+ "Lord of the Rings",
35
+ "Middle-earth",
36
+ "Game of Thrones",
37
+ "Westeros",
38
+ "Disney",
39
+ "Pixar",
40
+ ];
41
+ const BRANDED_CHARACTERS = [
42
+ "Mickey Mouse",
43
+ "Spider-Man",
44
+ "Spiderman",
45
+ "Batman",
46
+ "Superman",
47
+ "Wonder Woman",
48
+ "Iron Man",
49
+ "Hulk",
50
+ "Captain America",
51
+ "Pikachu",
52
+ "Sonic the Hedgehog",
53
+ "Luigi",
54
+ "Princess Peach",
55
+ "Kirby",
56
+ "Master Chief",
57
+ "Lara Croft",
58
+ "Indiana Jones",
59
+ "James Bond",
60
+ ];
61
+ const SPORTS_LEAGUES = [
62
+ "NFL",
63
+ "NBA",
64
+ "MLB",
65
+ "NHL",
66
+ "MLS",
67
+ "FIFA",
68
+ "UEFA",
69
+ "Premier League",
70
+ "La Liga",
71
+ "Bundesliga",
72
+ "Olympics",
73
+ "Olympic Games",
74
+ "Super Bowl",
75
+ "World Cup",
76
+ ];
77
+ const BRANDED_PRODUCTS = [
78
+ "iPhone",
79
+ "iPad",
80
+ "MacBook",
81
+ "AirPods",
82
+ "PlayStation",
83
+ "Xbox",
84
+ "Nintendo Switch",
85
+ "Coca-Cola",
86
+ "Pepsi",
87
+ "Starbucks",
88
+ "McDonald's",
89
+ "Lego",
90
+ "Barbie",
91
+ "Hot Wheels",
92
+ ];
93
+ const MUSIC_AND_FILM = [
94
+ "Taylor Swift",
95
+ "Beyonce",
96
+ "Beyoncé",
97
+ "Spotify",
98
+ "Netflix",
99
+ "Hulu",
100
+ "HBO",
101
+ ];
102
+ const FICTIONAL_UNIVERSE_TERMS = [
103
+ "Hogwarts",
104
+ "Jedi",
105
+ "Sith",
106
+ "Death Star",
107
+ "Hobbit",
108
+ "Vulcan",
109
+ "Klingon",
110
+ "Mandalorian",
111
+ "Force-sensitive",
112
+ "Muggle",
113
+ "Quidditch",
114
+ "Tatooine",
115
+ ];
116
+ const CATEGORIES = {
117
+ "branded-game-or-universe": BRANDED_GAMES_AND_UNIVERSES,
118
+ "branded-character": BRANDED_CHARACTERS,
119
+ "sports-league": SPORTS_LEAGUES,
120
+ "branded-product": BRANDED_PRODUCTS,
121
+ "music-or-film": MUSIC_AND_FILM,
122
+ "fictional-universe-term": FICTIONAL_UNIVERSE_TERMS,
123
+ };
124
+ const VALID_INTENTS = new Set(["personal", "commercial", "unknown"]);
125
+ function validateIntent(intent) {
126
+ if (typeof intent !== "string") {
127
+ throw new Error(`monetization_intent must be a string, got ${typeof intent}`);
128
+ }
129
+ const normalized = intent.trim().toLowerCase();
130
+ if (!VALID_INTENTS.has(normalized)) {
131
+ throw new Error(`monetization_intent ${JSON.stringify(intent)} not in ${[...VALID_INTENTS].sort()}`);
132
+ }
133
+ return normalized;
134
+ }
135
+ /** Scan text for known IP terms (mirrors scripts/ip_risk.py). */
136
+ export function detectIpTerms(text) {
137
+ if (!text)
138
+ return [];
139
+ const seen = new Set();
140
+ const hits = [];
141
+ for (const [category, terms] of Object.entries(CATEGORIES)) {
142
+ for (let i = 0; i < text.length; i += 1) {
143
+ for (const term of terms) {
144
+ if (!wordBoundaryMatch(text, i, term))
145
+ continue;
146
+ const actual = text.slice(i, i + term.length);
147
+ const key = `${actual.toLowerCase()}\0${category}`;
148
+ if (seen.has(key))
149
+ continue;
150
+ seen.add(key);
151
+ hits.push({ term: actual, category });
152
+ }
153
+ }
154
+ }
155
+ return hits;
156
+ }
157
+ export function isIpAdjacent(text) {
158
+ return detectIpTerms(text).length > 0;
159
+ }
160
+ export function ipRiskScopeItems(monetizationIntent) {
161
+ const intent = validateIntent(monetizationIntent);
162
+ const commercial = intent !== "personal";
163
+ const baseAcceptance = commercial
164
+ ? "Lawyer-confirmed wording before public release"
165
+ : "Reviewed by the project owner before any public release";
166
+ const assetAcceptance = commercial
167
+ ? "All third-party assets reach the app via official APIs only with a license that explicitly permits the planned use; no assets bundled in the repository or build artifacts; lawyer-confirmed before public release"
168
+ : "All third-party assets reach the app via official APIs only; no assets bundled in the repository or build artifacts";
169
+ const hostingAcceptance = commercial
170
+ ? "Hosting plan reviewed by counsel; written license terms cover the deployment region and audience; revenue model documented"
171
+ : "Self-hosted private use only; do not deploy publicly until a monetization decision is made and re-reviewed against this rule";
172
+ return [
173
+ {
174
+ title: "IP-risk: disclaimer stub on the app's front surface",
175
+ status: "pending",
176
+ narrative: {
177
+ Description: "Add a 'not affiliated with / not endorsed by' notice on the app's first user-visible surface (splash screen, landing page, or CLI banner).",
178
+ Acceptance: baseAcceptance,
179
+ Traces: "IP-1",
180
+ },
181
+ },
182
+ {
183
+ title: "IP-risk: API-only third-party asset access policy",
184
+ status: "pending",
185
+ narrative: {
186
+ Description: "Never bundle third-party IP assets (images, audio, video, text, card data, character likenesses) in the repository or build artifacts. Access only via official APIs that grant a license.",
187
+ Acceptance: assetAcceptance,
188
+ Traces: "IP-2",
189
+ },
190
+ },
191
+ {
192
+ title: "IP-risk: hosting policy gated on monetization intent",
193
+ status: "pending",
194
+ narrative: {
195
+ Description: "Document the hosting plan and gate it on the captured monetization intent. Self-hosted private use is the default; commercial hosting requires lawyer review.",
196
+ Acceptance: hostingAcceptance,
197
+ Traces: "IP-3",
198
+ },
199
+ },
200
+ ];
201
+ }
202
+ export function plainRiskSummary(hits, monetizationIntent) {
203
+ if (hits.length === 0)
204
+ return "";
205
+ const intent = validateIntent(monetizationIntent);
206
+ const grouped = new Map();
207
+ for (const hit of hits) {
208
+ const list = grouped.get(hit.category) ?? [];
209
+ list.push(hit.term);
210
+ grouped.set(hit.category, list);
211
+ }
212
+ const bullets = [];
213
+ for (const [category, terms] of grouped) {
214
+ const uniqueTerms = [...new Set(terms)].sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()));
215
+ bullets.push(`- ${category}: ${uniqueTerms.join(", ")}`);
216
+ }
217
+ const header = "Heads up: your project description references third-party intellectual property (IP). This is a plain-English summary -- not legal advice.";
218
+ const detectionBlock = `Detected IP-adjacent terms:\n${bullets.join("\n")}`;
219
+ let intentBlock;
220
+ if (intent === "commercial") {
221
+ intentBlock =
222
+ "You said you intend to use this commercially (sell access, earn revenue, distribute to paying users, or run ads). Commercial use of someone else's IP without a written license is the high-risk case. You MUST consult a lawyer before shipping to paying users -- this is not optional output from this interview.";
223
+ }
224
+ else if (intent === "personal") {
225
+ intentBlock =
226
+ "You said this is a personal project (no monetization, private use, learning). Personal use is lower risk but not zero risk: if your project ever goes public, becomes monetized, or is shared widely, the risk profile changes and a lawyer review becomes worthwhile.";
227
+ }
228
+ else {
229
+ intentBlock =
230
+ "You did not choose between personal and commercial use. The interview MUST capture an explicit answer before generating the SPECIFICATION -- the legal-risk profile depends on the answer.";
231
+ }
232
+ const nextSteps = "Suggested next steps: (1) confirm whether your use is personal or commercial; (2) keep the disclaimer / API-only-asset / hosting scope items the SPECIFICATION will include; (3) for commercial intent, consult a lawyer before public release.";
233
+ return [header, detectionBlock, intentBlock, nextSteps].join("\n\n");
234
+ }
235
+ //# sourceMappingURL=ip-risk.js.map
@@ -0,0 +1,36 @@
1
+ /** ReDoS-safe linear scanners shared by platform parsers. */
2
+ /** Return true when `ch` is ASCII word character [A-Za-z0-9_]. */
3
+ export declare function isWordChar(ch: string): boolean;
4
+ /** Case-insensitive compare of `text.slice(pos, pos+needle.length)` to `needle`. */
5
+ export declare function matchAt(text: string, pos: number, needle: string): boolean;
6
+ /** Find first case-insensitive occurrence of `needle` starting at `from`. */
7
+ export declare function indexOfIgnoreCase(text: string, needle: string, from?: number): number;
8
+ /** Word-boundary match for `term` at `pos` in `text` (ASCII heuristic). */
9
+ export declare function wordBoundaryMatch(text: string, pos: number, term: string): boolean;
10
+ /** Scan `text` for the first word-boundary occurrence of any `term`. */
11
+ export declare function findFirstTerm(text: string, terms: readonly string[], from?: number): {
12
+ term: string;
13
+ index: number;
14
+ } | null;
15
+ /** Parse `<!-- deft:managed-section vN [attrs] -->` at `startIdx` (must point at '<'). */
16
+ export declare function parseManagedOpenMarker(text: string, startIdx: number): {
17
+ end: number;
18
+ version: number;
19
+ attrsRaw: string;
20
+ } | null;
21
+ /** Find next managed-section open marker from `from`. */
22
+ export declare function findManagedOpenMarker(text: string, from?: number): {
23
+ start: number;
24
+ version: number;
25
+ attrsRaw: string;
26
+ end: number;
27
+ } | null;
28
+ /** Match line against `^## [name]` without regex backtracking. */
29
+ export declare function parseSectionHeader(line: string): string | null;
30
+ /** Match line against `^### name` without regex. */
31
+ export declare function parseSubsectionHeader(line: string): string | null;
32
+ /** True when line starts a bullet entry (`-` or `*` with optional indent). */
33
+ export declare function isEntryBulletLine(line: string): boolean;
34
+ /** Extract all `(#NNN)` issue numbers from text via linear scan. */
35
+ export declare function extractIssueNumbers(text: string): Set<string>;
36
+ //# sourceMappingURL=linear-scan.d.ts.map
@@ -0,0 +1,174 @@
1
+ /** ReDoS-safe linear scanners shared by platform parsers. */
2
+ /** Return true when `ch` is ASCII word character [A-Za-z0-9_]. */
3
+ export function isWordChar(ch) {
4
+ if (ch.length !== 1)
5
+ return false;
6
+ const code = ch.charCodeAt(0);
7
+ return ((code >= 48 && code <= 57) ||
8
+ (code >= 65 && code <= 90) ||
9
+ (code >= 97 && code <= 122) ||
10
+ code === 95);
11
+ }
12
+ /** Case-insensitive compare of `text.slice(pos, pos+needle.length)` to `needle`. */
13
+ export function matchAt(text, pos, needle) {
14
+ if (pos + needle.length > text.length)
15
+ return false;
16
+ return text.slice(pos, pos + needle.length).toLowerCase() === needle.toLowerCase();
17
+ }
18
+ /** Find first case-insensitive occurrence of `needle` starting at `from`. */
19
+ export function indexOfIgnoreCase(text, needle, from = 0) {
20
+ const lower = text.toLowerCase();
21
+ const nLower = needle.toLowerCase();
22
+ return lower.indexOf(nLower, from);
23
+ }
24
+ /** Word-boundary match for `term` at `pos` in `text` (ASCII heuristic). */
25
+ export function wordBoundaryMatch(text, pos, term) {
26
+ if (!matchAt(text, pos, term))
27
+ return false;
28
+ const before = pos > 0 ? (text[pos - 1] ?? "") : "";
29
+ const after = pos + term.length < text.length ? (text[pos + term.length] ?? "") : "";
30
+ if (before && isWordChar(before))
31
+ return false;
32
+ if (after && isWordChar(after))
33
+ return false;
34
+ return true;
35
+ }
36
+ /** Scan `text` for the first word-boundary occurrence of any `term`. */
37
+ export function findFirstTerm(text, terms, from = 0) {
38
+ let best = null;
39
+ for (const term of terms) {
40
+ let pos = from;
41
+ while (pos <= text.length - term.length) {
42
+ const idx = indexOfIgnoreCase(text, term, pos);
43
+ if (idx < 0)
44
+ break;
45
+ if (wordBoundaryMatch(text, idx, term)) {
46
+ if (best === null || idx < best.index) {
47
+ best = { term: text.slice(idx, idx + term.length), index: idx };
48
+ }
49
+ break;
50
+ }
51
+ pos = idx + 1;
52
+ }
53
+ }
54
+ return best;
55
+ }
56
+ /** Parse `<!-- deft:managed-section vN [attrs] -->` at `startIdx` (must point at '<'). */
57
+ export function parseManagedOpenMarker(text, startIdx) {
58
+ if (text.slice(startIdx, startIdx + 4) !== "<!--")
59
+ return null;
60
+ let i = startIdx + 4;
61
+ while (i < text.length && (text[i] === " " || text[i] === "\t"))
62
+ i += 1;
63
+ const marker = "deft:managed-section";
64
+ if (!matchAt(text, i, marker))
65
+ return null;
66
+ i += marker.length;
67
+ while (i < text.length && (text[i] === " " || text[i] === "\t"))
68
+ i += 1;
69
+ if (text[i] !== "v")
70
+ return null;
71
+ i += 1;
72
+ const versionChar = text[i];
73
+ if (versionChar !== "1" && versionChar !== "2" && versionChar !== "3")
74
+ return null;
75
+ const version = Number(versionChar);
76
+ i += 1;
77
+ const attrsStart = i;
78
+ while (i < text.length) {
79
+ if (text[i] === "-" && text[i + 1] === "-" && text[i + 2] === ">") {
80
+ const attrsRaw = text.slice(attrsStart, i).trim();
81
+ return { end: i + 3, version, attrsRaw };
82
+ }
83
+ i += 1;
84
+ }
85
+ return null;
86
+ }
87
+ /** Find next managed-section open marker from `from`. */
88
+ export function findManagedOpenMarker(text, from = 0) {
89
+ let pos = from;
90
+ while (pos < text.length) {
91
+ const idx = text.indexOf("<!--", pos);
92
+ if (idx < 0)
93
+ return null;
94
+ const parsed = parseManagedOpenMarker(text, idx);
95
+ if (parsed !== null) {
96
+ return { start: idx, version: parsed.version, attrsRaw: parsed.attrsRaw, end: parsed.end };
97
+ }
98
+ pos = idx + 1;
99
+ }
100
+ return null;
101
+ }
102
+ /** Match line against `^## [name]` without regex backtracking. */
103
+ export function parseSectionHeader(line) {
104
+ let i = 0;
105
+ while (i < line.length && line[i] === " ")
106
+ i += 1;
107
+ if (line.slice(i, i + 3) !== "## ")
108
+ return null;
109
+ i += 3;
110
+ if (line[i] !== "[")
111
+ return null;
112
+ i += 1;
113
+ const start = i;
114
+ while (i < line.length && line[i] !== "]")
115
+ i += 1;
116
+ if (i >= line.length)
117
+ return null;
118
+ return line.slice(start, i);
119
+ }
120
+ /** Match line against `^### name` without regex. */
121
+ export function parseSubsectionHeader(line) {
122
+ let i = 0;
123
+ while (i < line.length && line[i] === " ")
124
+ i += 1;
125
+ if (line.slice(i, i + 4) !== "### ")
126
+ return null;
127
+ i += 4;
128
+ const start = i;
129
+ while (i < line.length && line[i] !== "\r" && line[i] !== "\n")
130
+ i += 1;
131
+ const name = line.slice(start, i).trim();
132
+ return name.length > 0 ? name : null;
133
+ }
134
+ /** True when line starts a bullet entry (`-` or `*` with optional indent). */
135
+ export function isEntryBulletLine(line) {
136
+ let i = 0;
137
+ while (i < line.length && (line[i] === " " || line[i] === "\t"))
138
+ i += 1;
139
+ if (line[i] !== "-" && line[i] !== "*")
140
+ return false;
141
+ i += 1;
142
+ if (i >= line.length)
143
+ return false;
144
+ return line[i] === " " || line[i] === "\t";
145
+ }
146
+ /** Extract all `(#NNN)` issue numbers from text via linear scan. */
147
+ export function extractIssueNumbers(text) {
148
+ const nums = new Set();
149
+ let i = 0;
150
+ while (i < text.length) {
151
+ if (text[i] === "(" && text[i + 1] === "#") {
152
+ let j = i + 2;
153
+ let digits = "";
154
+ while (j < text.length) {
155
+ const ch = text[j] ?? "";
156
+ if (ch >= "0" && ch <= "9") {
157
+ digits += ch;
158
+ j += 1;
159
+ }
160
+ else {
161
+ break;
162
+ }
163
+ }
164
+ if (digits.length > 0 && text[j] === ")") {
165
+ nums.add(digits);
166
+ i = j + 1;
167
+ continue;
168
+ }
169
+ }
170
+ i += 1;
171
+ }
172
+ return nums;
173
+ }
174
+ //# sourceMappingURL=linear-scan.js.map
@@ -0,0 +1,45 @@
1
+ export interface UidMapEntry {
2
+ readonly insideId: number;
3
+ readonly outsideId: number;
4
+ readonly length: number;
5
+ }
6
+ export interface OwnershipFacts {
7
+ readonly path: string;
8
+ readonly uid: number;
9
+ readonly gid: number;
10
+ readonly interpretedAsSandboxView: boolean;
11
+ }
12
+ export interface RuntimeCapabilityReport {
13
+ readonly runtimeMode: string;
14
+ readonly identityKind: string;
15
+ readonly effectiveUid: number | null;
16
+ readonly effectiveUsername: string | null;
17
+ readonly uidMap: readonly UidMapEntry[];
18
+ readonly cursorOrigUid: number | null;
19
+ readonly cursorOrigGid: number | null;
20
+ readonly sandboxUidRemap: boolean;
21
+ readonly ownership: OwnershipFacts | null;
22
+ readonly signals: Readonly<Record<string, string>>;
23
+ }
24
+ export declare function readUidMap(path: string): readonly UidMapEntry[];
25
+ export declare function detectSandboxUidRemap(uidMap: readonly UidMapEntry[], options: {
26
+ effectiveUid: number | null;
27
+ cursorOrigUid: number | null;
28
+ }): boolean;
29
+ export declare function classifyIdentityKind(options: {
30
+ effectiveUid: number | null;
31
+ sandboxUidRemap: boolean;
32
+ }): string;
33
+ export declare function classifyRuntimeMode(environ: Readonly<Record<string, string>>, sandboxUidRemap: boolean): string;
34
+ export interface ProbeRuntimeOptions {
35
+ readonly environ?: Readonly<Record<string, string>>;
36
+ readonly uidMapPath?: string;
37
+ readonly cwd?: string;
38
+ readonly effectiveUidOverride?: number | null;
39
+ readonly effectiveUsername?: string | null;
40
+ readonly getuid?: () => number;
41
+ }
42
+ export declare function probeRuntimeCapabilities(options?: ProbeRuntimeOptions): RuntimeCapabilityReport;
43
+ export declare function getPlatformCapabilities(options?: ProbeRuntimeOptions): RuntimeCapabilityReport;
44
+ export declare function reportToDict(report: RuntimeCapabilityReport): Record<string, unknown>;
45
+ //# sourceMappingURL=platform-capabilities.d.ts.map
@@ -0,0 +1,190 @@
1
+ import { existsSync, readFileSync, statSync } from "node:fs";
2
+ import { userInfo } from "node:os";
3
+ import { IDENTITY_LOCAL_USER, IDENTITY_REAL_ROOT, IDENTITY_SANDBOX_REMAPPED_LOCAL_USER, IDENTITY_UNKNOWN, RUNTIME_MODE_CLOUD_HEADLESS, RUNTIME_MODE_CURSOR_NATIVE_SANDBOX, RUNTIME_MODE_LOCAL_UNSANDBOXED, } from "./constants.js";
4
+ const TRUTHY = new Set(["1", "true", "yes", "on"]);
5
+ const CURSOR_SIGNAL_VARS = [
6
+ "CURSOR_SANDBOX",
7
+ "CURSOR_SANDBOX_LANDLOCK_STATUS",
8
+ "CURSOR_ORIG_UID",
9
+ "CURSOR_ORIG_GID",
10
+ "CURSOR_AGENT",
11
+ "CURSOR_COMPOSER",
12
+ ];
13
+ const CLOUD_SIGNAL_VARS = [
14
+ "CURSOR_AGENT",
15
+ "GROK_BUILD",
16
+ "DEFT_AGENT_RUNTIME",
17
+ "CI",
18
+ "GITHUB_ACTIONS",
19
+ "BUILDKITE",
20
+ ];
21
+ function envTruthy(environ, name) {
22
+ return TRUTHY.has((environ[name] ?? "").trim().toLowerCase());
23
+ }
24
+ function parseIntValue(value) {
25
+ if (value === undefined)
26
+ return null;
27
+ const text = value.trim();
28
+ if (!text)
29
+ return null;
30
+ const n = Number.parseInt(text, 10);
31
+ return Number.isNaN(n) ? null : n;
32
+ }
33
+ export function readUidMap(path) {
34
+ if (!existsSync(path))
35
+ return [];
36
+ const entries = [];
37
+ for (const rawLine of readFileSync(path, "utf8").split("\n")) {
38
+ const line = rawLine.trim();
39
+ if (!line || line.startsWith("#"))
40
+ continue;
41
+ const parts = line.split(/\s+/);
42
+ if (parts.length !== 3)
43
+ continue;
44
+ const insideId = Number.parseInt(parts[0] ?? "", 10);
45
+ const outsideId = Number.parseInt(parts[1] ?? "", 10);
46
+ const length = Number.parseInt(parts[2] ?? "", 10);
47
+ if (Number.isNaN(insideId) || Number.isNaN(outsideId) || Number.isNaN(length))
48
+ continue;
49
+ entries.push({ insideId, outsideId, length });
50
+ }
51
+ return entries;
52
+ }
53
+ export function detectSandboxUidRemap(uidMap, options) {
54
+ if (options.effectiveUid !== 0)
55
+ return false;
56
+ if (options.cursorOrigUid === null)
57
+ return false;
58
+ return uidMap.some((entry) => entry.insideId === 0 && entry.outsideId === options.cursorOrigUid);
59
+ }
60
+ export function classifyIdentityKind(options) {
61
+ if (options.effectiveUid === null)
62
+ return IDENTITY_UNKNOWN;
63
+ if (options.effectiveUid === 0) {
64
+ return options.sandboxUidRemap ? IDENTITY_SANDBOX_REMAPPED_LOCAL_USER : IDENTITY_REAL_ROOT;
65
+ }
66
+ return IDENTITY_LOCAL_USER;
67
+ }
68
+ function isCloudHeadless(environ) {
69
+ if (envTruthy(environ, "CURSOR_AGENT"))
70
+ return true;
71
+ if (envTruthy(environ, "GROK_BUILD"))
72
+ return true;
73
+ const runtime = (environ.DEFT_AGENT_RUNTIME ?? "").trim().toLowerCase();
74
+ if (runtime === "grok-build" || runtime === "cloud" || runtime === "headless")
75
+ return true;
76
+ if (envTruthy(environ, "GITHUB_ACTIONS") || envTruthy(environ, "BUILDKITE"))
77
+ return true;
78
+ return envTruthy(environ, "CI") && !envTruthy(environ, "CURSOR_COMPOSER");
79
+ }
80
+ function isCursorNativeSandbox(environ, sandboxUidRemap) {
81
+ if (sandboxUidRemap)
82
+ return true;
83
+ if (envTruthy(environ, "CURSOR_SANDBOX"))
84
+ return true;
85
+ return Boolean((environ.CURSOR_SANDBOX_LANDLOCK_STATUS ?? "").trim());
86
+ }
87
+ export function classifyRuntimeMode(environ, sandboxUidRemap) {
88
+ if (isCloudHeadless(environ))
89
+ return RUNTIME_MODE_CLOUD_HEADLESS;
90
+ if (isCursorNativeSandbox(environ, sandboxUidRemap))
91
+ return RUNTIME_MODE_CURSOR_NATIVE_SANDBOX;
92
+ return RUNTIME_MODE_LOCAL_UNSANDBOXED;
93
+ }
94
+ function readOwnership(path, sandboxUidRemap) {
95
+ try {
96
+ const stat = statSync(path);
97
+ return {
98
+ path,
99
+ uid: stat.uid,
100
+ gid: stat.gid,
101
+ interpretedAsSandboxView: sandboxUidRemap,
102
+ };
103
+ }
104
+ catch {
105
+ return null;
106
+ }
107
+ }
108
+ function collectSignals(environ) {
109
+ const names = [...new Set([...CURSOR_SIGNAL_VARS, ...CLOUD_SIGNAL_VARS])].sort();
110
+ const out = {};
111
+ for (const name of names) {
112
+ if (name in environ)
113
+ out[name] = environ[name] ?? "";
114
+ }
115
+ return out;
116
+ }
117
+ export function probeRuntimeCapabilities(options = {}) {
118
+ const env = options.environ === undefined
119
+ ? { ...process.env }
120
+ : { ...options.environ };
121
+ let effectiveUid;
122
+ if (options.effectiveUidOverride !== undefined) {
123
+ effectiveUid = options.effectiveUidOverride;
124
+ }
125
+ else if (options.getuid) {
126
+ effectiveUid = options.getuid();
127
+ }
128
+ else {
129
+ effectiveUid = null;
130
+ }
131
+ let effectiveUsername = options.effectiveUsername ?? env.USER ?? env.USERNAME ?? null;
132
+ if (!effectiveUsername) {
133
+ try {
134
+ effectiveUsername = userInfo().username;
135
+ }
136
+ catch {
137
+ effectiveUsername = null;
138
+ }
139
+ }
140
+ const cursorOrigUid = parseIntValue(env.CURSOR_ORIG_UID);
141
+ const cursorOrigGid = parseIntValue(env.CURSOR_ORIG_GID);
142
+ const uidMapFile = options.uidMapPath ?? "/proc/self/uid_map";
143
+ const uidMap = readUidMap(uidMapFile);
144
+ const sandboxUidRemap = detectSandboxUidRemap(uidMap, { effectiveUid, cursorOrigUid });
145
+ const identityKind = classifyIdentityKind({ effectiveUid, sandboxUidRemap });
146
+ const runtimeMode = classifyRuntimeMode(env, sandboxUidRemap);
147
+ const cwdPath = options.cwd ?? process.cwd();
148
+ const ownership = readOwnership(cwdPath, sandboxUidRemap);
149
+ return {
150
+ runtimeMode,
151
+ identityKind,
152
+ effectiveUid,
153
+ effectiveUsername,
154
+ uidMap,
155
+ cursorOrigUid,
156
+ cursorOrigGid,
157
+ sandboxUidRemap,
158
+ ownership,
159
+ signals: collectSignals(env),
160
+ };
161
+ }
162
+ export function getPlatformCapabilities(options = {}) {
163
+ return probeRuntimeCapabilities(options);
164
+ }
165
+ export function reportToDict(report) {
166
+ return {
167
+ runtime_mode: report.runtimeMode,
168
+ identity_kind: report.identityKind,
169
+ effective_uid: report.effectiveUid,
170
+ effective_username: report.effectiveUsername,
171
+ uid_map: report.uidMap.map((e) => ({
172
+ inside_id: e.insideId,
173
+ outside_id: e.outsideId,
174
+ length: e.length,
175
+ })),
176
+ cursor_orig_uid: report.cursorOrigUid,
177
+ cursor_orig_gid: report.cursorOrigGid,
178
+ sandbox_uid_remap: report.sandboxUidRemap,
179
+ ownership: report.ownership
180
+ ? {
181
+ path: report.ownership.path,
182
+ uid: report.ownership.uid,
183
+ gid: report.ownership.gid,
184
+ interpreted_as_sandbox_view: report.ownership.interpretedAsSandboxView,
185
+ }
186
+ : null,
187
+ signals: report.signals,
188
+ };
189
+ }
190
+ //# sourceMappingURL=platform-capabilities.js.map