@litfamily/litopencode 1.0.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 (690) hide show
  1. package/.gitattributes +8 -0
  2. package/ATTRIBUTION.md +56 -0
  3. package/CHANGELOG.md +267 -0
  4. package/CODE_OF_CONDUCT.md +30 -0
  5. package/CONTRIBUTING.md +82 -0
  6. package/LICENSE +21 -0
  7. package/README-Ko-KR.md +252 -0
  8. package/README.md +252 -0
  9. package/SECURITY.md +36 -0
  10. package/SUPPORT.md +37 -0
  11. package/bin/litopencode +3 -0
  12. package/bin/litopencode.cjs +10 -0
  13. package/dist/activation-managed-prompts.d.ts +2 -0
  14. package/dist/activation-managed-prompts.js +51 -0
  15. package/dist/activation-primary-prompts.d.ts +2 -0
  16. package/dist/activation-primary-prompts.js +176 -0
  17. package/dist/activation-probe.d.ts +3 -0
  18. package/dist/activation-probe.js +19 -0
  19. package/dist/activation-prompt-utils.d.ts +6 -0
  20. package/dist/activation-prompt-utils.js +36 -0
  21. package/dist/activation-routing.d.ts +5 -0
  22. package/dist/activation-routing.js +340 -0
  23. package/dist/activation-workflow-prompts.d.ts +26 -0
  24. package/dist/activation-workflow-prompts.js +295 -0
  25. package/dist/activation.d.ts +24 -0
  26. package/dist/activation.js +152 -0
  27. package/dist/agents/defaults.d.ts +15 -0
  28. package/dist/agents/defaults.js +112 -0
  29. package/dist/agents/registry.d.ts +65 -0
  30. package/dist/agents/registry.js +319 -0
  31. package/dist/agents/specialists.d.ts +49 -0
  32. package/dist/agents/specialists.js +307 -0
  33. package/dist/agents/types.d.ts +55 -0
  34. package/dist/agents/types.js +4 -0
  35. package/dist/agents.d.ts +4 -0
  36. package/dist/agents.js +3 -0
  37. package/dist/benchmark.d.ts +94 -0
  38. package/dist/benchmark.js +172 -0
  39. package/dist/bounded-authority-hooks.d.ts +19 -0
  40. package/dist/bounded-authority-hooks.js +157 -0
  41. package/dist/bounded-authority.d.ts +184 -0
  42. package/dist/bounded-authority.js +825 -0
  43. package/dist/cache-metrics.d.ts +54 -0
  44. package/dist/cache-metrics.js +81 -0
  45. package/dist/cli/args.d.ts +5 -0
  46. package/dist/cli/args.js +415 -0
  47. package/dist/cli/auto-update.d.ts +117 -0
  48. package/dist/cli/auto-update.js +604 -0
  49. package/dist/cli/command-alias-ownership.d.ts +2 -0
  50. package/dist/cli/command-alias-ownership.js +14 -0
  51. package/dist/cli/command-aliases.d.ts +12 -0
  52. package/dist/cli/command-aliases.js +112 -0
  53. package/dist/cli/doctor.d.ts +2 -0
  54. package/dist/cli/doctor.js +175 -0
  55. package/dist/cli/host-capabilities.d.ts +12 -0
  56. package/dist/cli/host-capabilities.js +25 -0
  57. package/dist/cli/host-limits.d.ts +21 -0
  58. package/dist/cli/host-limits.js +83 -0
  59. package/dist/cli/install-config.d.ts +13 -0
  60. package/dist/cli/install-config.js +201 -0
  61. package/dist/cli/install-report.d.ts +2 -0
  62. package/dist/cli/install-report.js +180 -0
  63. package/dist/cli/install-tui.d.ts +12 -0
  64. package/dist/cli/install-tui.js +174 -0
  65. package/dist/cli/install.d.ts +2 -0
  66. package/dist/cli/install.js +264 -0
  67. package/dist/cli/json.d.ts +4 -0
  68. package/dist/cli/json.js +31 -0
  69. package/dist/cli/loop.d.ts +3 -0
  70. package/dist/cli/loop.js +135 -0
  71. package/dist/cli/lsp-capability.d.ts +17 -0
  72. package/dist/cli/lsp-capability.js +92 -0
  73. package/dist/cli/managed-skill-assets.d.ts +23 -0
  74. package/dist/cli/managed-skill-assets.js +117 -0
  75. package/dist/cli/model-catalog.d.ts +21 -0
  76. package/dist/cli/model-catalog.js +107 -0
  77. package/dist/cli/model-policy.d.ts +3 -0
  78. package/dist/cli/model-policy.js +143 -0
  79. package/dist/cli/model-routing.d.ts +5 -0
  80. package/dist/cli/model-routing.js +208 -0
  81. package/dist/cli/native-canonical-backup.d.ts +9 -0
  82. package/dist/cli/native-canonical-backup.js +96 -0
  83. package/dist/cli/native-canonical-cache.d.ts +9 -0
  84. package/dist/cli/native-canonical-cache.js +37 -0
  85. package/dist/cli/native-skill-install.d.ts +2 -0
  86. package/dist/cli/native-skill-install.js +128 -0
  87. package/dist/cli/native-skill-integrity.d.ts +25 -0
  88. package/dist/cli/native-skill-integrity.js +178 -0
  89. package/dist/cli/native-skill-tree.d.ts +12 -0
  90. package/dist/cli/native-skill-tree.js +104 -0
  91. package/dist/cli/native-skills.d.ts +22 -0
  92. package/dist/cli/native-skills.js +105 -0
  93. package/dist/cli/plugin-mutation.d.ts +4 -0
  94. package/dist/cli/plugin-mutation.js +89 -0
  95. package/dist/cli/scientific-visualization-dependencies.d.ts +18 -0
  96. package/dist/cli/scientific-visualization-dependencies.js +91 -0
  97. package/dist/cli/skill-loop.d.ts +3 -0
  98. package/dist/cli/skill-loop.js +649 -0
  99. package/dist/cli/types.d.ts +188 -0
  100. package/dist/cli/types.js +1 -0
  101. package/dist/cli/update-check.d.ts +2 -0
  102. package/dist/cli/update-check.js +15 -0
  103. package/dist/cli/update-notifier.d.ts +70 -0
  104. package/dist/cli/update-notifier.js +717 -0
  105. package/dist/cli/vendor-path-migration.d.ts +9 -0
  106. package/dist/cli/vendor-path-migration.js +96 -0
  107. package/dist/cli.d.ts +7 -0
  108. package/dist/cli.js +250 -0
  109. package/dist/commands.d.ts +331 -0
  110. package/dist/commands.js +600 -0
  111. package/dist/config-parser.d.ts +5 -0
  112. package/dist/config-parser.js +274 -0
  113. package/dist/config.d.ts +72 -0
  114. package/dist/config.js +157 -0
  115. package/dist/deliverable-hedge-guard.d.ts +26 -0
  116. package/dist/deliverable-hedge-guard.js +302 -0
  117. package/dist/durable-plan.d.ts +23 -0
  118. package/dist/durable-plan.js +349 -0
  119. package/dist/features.d.ts +828 -0
  120. package/dist/features.js +1109 -0
  121. package/dist/hooks.d.ts +17 -0
  122. package/dist/hooks.js +83 -0
  123. package/dist/ignition.d.ts +14 -0
  124. package/dist/ignition.js +33 -0
  125. package/dist/index.d.ts +30 -0
  126. package/dist/index.js +30 -0
  127. package/dist/inert-data.d.ts +2 -0
  128. package/dist/inert-data.js +13 -0
  129. package/dist/knowledge.d.ts +98 -0
  130. package/dist/knowledge.js +961 -0
  131. package/dist/ledger.d.ts +181 -0
  132. package/dist/ledger.js +1179 -0
  133. package/dist/lit-fetch-classify.d.ts +8 -0
  134. package/dist/lit-fetch-classify.js +107 -0
  135. package/dist/lit-fetch-content.d.ts +2 -0
  136. package/dist/lit-fetch-content.js +43 -0
  137. package/dist/lit-fetch-http.d.ts +10 -0
  138. package/dist/lit-fetch-http.js +82 -0
  139. package/dist/lit-fetch-result.d.ts +2 -0
  140. package/dist/lit-fetch-result.js +65 -0
  141. package/dist/lit-fetch-ssrf.d.ts +9 -0
  142. package/dist/lit-fetch-ssrf.js +77 -0
  143. package/dist/lit-fetch-url.d.ts +3 -0
  144. package/dist/lit-fetch-url.js +28 -0
  145. package/dist/lit-fetch.d.ts +69 -0
  146. package/dist/lit-fetch.js +84 -0
  147. package/dist/lit-mark.d.ts +17 -0
  148. package/dist/lit-mark.js +129 -0
  149. package/dist/logger.d.ts +9 -0
  150. package/dist/logger.js +21 -0
  151. package/dist/model-route-policy.d.ts +25 -0
  152. package/dist/model-route-policy.js +129 -0
  153. package/dist/reader-facing-output.d.ts +3 -0
  154. package/dist/reader-facing-output.js +28 -0
  155. package/dist/rules/discovery.d.ts +36 -0
  156. package/dist/rules/discovery.js +270 -0
  157. package/dist/rules/engine.d.ts +43 -0
  158. package/dist/rules/engine.js +236 -0
  159. package/dist/rules/frontmatter.d.ts +16 -0
  160. package/dist/rules/frontmatter.js +179 -0
  161. package/dist/rules/glob.d.ts +12 -0
  162. package/dist/rules/glob.js +233 -0
  163. package/dist/rules/hooks.d.ts +25 -0
  164. package/dist/rules/hooks.js +75 -0
  165. package/dist/rules/output-style.d.ts +1 -0
  166. package/dist/rules/output-style.js +20 -0
  167. package/dist/scientific-visualization-banner.d.ts +1 -0
  168. package/dist/scientific-visualization-banner.js +2 -0
  169. package/dist/search-workflow-ideas.d.ts +67 -0
  170. package/dist/search-workflow-ideas.js +128 -0
  171. package/dist/secret-shapes.d.ts +9 -0
  172. package/dist/secret-shapes.js +63 -0
  173. package/dist/server.d.ts +6 -0
  174. package/dist/server.js +129 -0
  175. package/dist/session-lineage.d.ts +8 -0
  176. package/dist/session-lineage.js +12 -0
  177. package/dist/skill-loop/apply.d.ts +19 -0
  178. package/dist/skill-loop/apply.js +483 -0
  179. package/dist/skill-loop/config.d.ts +50 -0
  180. package/dist/skill-loop/config.js +215 -0
  181. package/dist/skill-loop/curator.d.ts +18 -0
  182. package/dist/skill-loop/curator.js +232 -0
  183. package/dist/skill-loop/ledger.d.ts +39 -0
  184. package/dist/skill-loop/ledger.js +344 -0
  185. package/dist/skill-loop/proposals.d.ts +48 -0
  186. package/dist/skill-loop/proposals.js +290 -0
  187. package/dist/skill-loop/storage.d.ts +72 -0
  188. package/dist/skill-loop/storage.js +817 -0
  189. package/dist/skill-loop/time.d.ts +2 -0
  190. package/dist/skill-loop/time.js +23 -0
  191. package/dist/skill-loop/transaction.d.ts +62 -0
  192. package/dist/skill-loop/transaction.js +836 -0
  193. package/dist/skill-loop/usage.d.ts +31 -0
  194. package/dist/skill-loop/usage.js +146 -0
  195. package/dist/skill-observer.d.ts +22 -0
  196. package/dist/skill-observer.js +1154 -0
  197. package/dist/skill-renames.d.ts +5 -0
  198. package/dist/skill-renames.js +8 -0
  199. package/dist/skills.d.ts +307 -0
  200. package/dist/skills.js +450 -0
  201. package/dist/stable-identity.d.ts +14 -0
  202. package/dist/stable-identity.js +15 -0
  203. package/dist/state.d.ts +25 -0
  204. package/dist/state.js +38 -0
  205. package/dist/strict-json.d.ts +2 -0
  206. package/dist/strict-json.js +94 -0
  207. package/dist/tool-guards.d.ts +34 -0
  208. package/dist/tool-guards.js +210 -0
  209. package/dist/tool-kit.d.ts +32 -0
  210. package/dist/tool-kit.js +75 -0
  211. package/dist/tools.d.ts +43 -0
  212. package/dist/tools.js +381 -0
  213. package/dist/uiux-visual-catalog.d.ts +50 -0
  214. package/dist/uiux-visual-catalog.js +103 -0
  215. package/dist/user-facing-markdown.d.ts +5 -0
  216. package/dist/user-facing-markdown.js +93 -0
  217. package/dist/workflow-families.d.ts +16 -0
  218. package/dist/workflow-families.js +95 -0
  219. package/docs/assets/cover.webp +0 -0
  220. package/docs/assets/litopencode-continuity-1600.webp +0 -0
  221. package/docs/assets/litopencode-ignition-1600.webp +0 -0
  222. package/docs/assets/readme/badge-license.svg +1 -0
  223. package/docs/assets/readme/badge-version.svg +1 -0
  224. package/docs/assets/readme/litopencode-clay-icon.png +0 -0
  225. package/docs/assets/readme/litopencode-wordmark.svg +5 -0
  226. package/docs/lit-mark.md +46 -0
  227. package/docs/migration.md +162 -0
  228. package/docs/privacy.md +82 -0
  229. package/docs/reference-Ko-KR.md +309 -0
  230. package/docs/reference.md +444 -0
  231. package/output-styles/asd-ste100-ko.md +41 -0
  232. package/output-styles/asd-ste100.md +40 -0
  233. package/output-styles/eli5-ko.md +13 -0
  234. package/output-styles/eli5.md +11 -0
  235. package/package.json +57 -0
  236. package/qa/fixtures/litfamily-harness-speed-v1.json +38 -0
  237. package/qa/harness-speed-contract.mjs +209 -0
  238. package/qa/harness-speed-v2-contract.mjs +213 -0
  239. package/qa/harness-speed-verdict.mjs +105 -0
  240. package/skills/agent-roster/SKILL.md +262 -0
  241. package/skills/autoconference/LICENSE +21 -0
  242. package/skills/autoconference/PROVENANCE.md +20 -0
  243. package/skills/autoconference/SKILL.md +125 -0
  244. package/skills/autoconference/assets/conference_template.md +76 -0
  245. package/skills/autoconference/assets/report_template.md +53 -0
  246. package/skills/autoconference/assets/synthesis_template.md +39 -0
  247. package/skills/autoconference/modes/analyze.md +255 -0
  248. package/skills/autoconference/modes/core.md +112 -0
  249. package/skills/autoconference/modes/debate.md +373 -0
  250. package/skills/autoconference/modes/plan.md +310 -0
  251. package/skills/autoconference/modes/resume.md +48 -0
  252. package/skills/autoconference/modes/ship.md +57 -0
  253. package/skills/autoconference/modes/survey.md +109 -0
  254. package/skills/autoconference/references/agent-prompts.md +134 -0
  255. package/skills/autoconference/references/conference-protocol.md +102 -0
  256. package/skills/autoconference/references/convergence-guide.md +167 -0
  257. package/skills/autoconference/references/core-principles.md +83 -0
  258. package/skills/autoconference/references/crash-recovery.md +104 -0
  259. package/skills/autoconference/references/results-logging.md +198 -0
  260. package/skills/autoconference/references/upstream-family-contract.md +130 -0
  261. package/skills/autoconference/references/visualization-guide.md +105 -0
  262. package/skills/autoconference/scripts/check_conference.sh +371 -0
  263. package/skills/autoconference/scripts/init_conference.py +625 -0
  264. package/skills/autoconference/scripts/style_presets.py +104 -0
  265. package/skills/autoresearch/LICENSE +21 -0
  266. package/skills/autoresearch/PROVENANCE.md +20 -0
  267. package/skills/autoresearch/SKILL.md +131 -0
  268. package/skills/autoresearch/assets/report_template.md +50 -0
  269. package/skills/autoresearch/assets/research_template.md +38 -0
  270. package/skills/autoresearch/assets/results_template.tsv +1 -0
  271. package/skills/autoresearch/modes/core.md +216 -0
  272. package/skills/autoresearch/modes/debug.md +235 -0
  273. package/skills/autoresearch/modes/fix.md +173 -0
  274. package/skills/autoresearch/modes/learn.md +91 -0
  275. package/skills/autoresearch/modes/plan.md +291 -0
  276. package/skills/autoresearch/modes/predict.md +266 -0
  277. package/skills/autoresearch/modes/reason.md +170 -0
  278. package/skills/autoresearch/modes/scenario.md +164 -0
  279. package/skills/autoresearch/modes/security.md +282 -0
  280. package/skills/autoresearch/modes/ship.md +49 -0
  281. package/skills/autoresearch/references/core-principles.md +80 -0
  282. package/skills/autoresearch/references/evaluator-contract.md +126 -0
  283. package/skills/autoresearch/references/investigation-techniques.md +205 -0
  284. package/skills/autoresearch/references/owasp-checklist.md +161 -0
  285. package/skills/autoresearch/references/persona-templates.md +232 -0
  286. package/skills/autoresearch/references/results-logging.md +96 -0
  287. package/skills/autoresearch/references/scenario-dimensions.md +178 -0
  288. package/skills/autoresearch/references/stride-model.md +196 -0
  289. package/skills/autoresearch/references/stuck-detection.md +107 -0
  290. package/skills/autoresearch/references/type-checklists.md +163 -0
  291. package/skills/autoresearch/references/upstream-family-contract.md +125 -0
  292. package/skills/autoresearch/references/visualization-guide.md +95 -0
  293. package/skills/autoresearch/scripts/check_progress.sh +272 -0
  294. package/skills/autoresearch/scripts/init_research.py +330 -0
  295. package/skills/autoresearch/scripts/run_with_deadline.py +164 -0
  296. package/skills/autoresearch/scripts/style_presets.py +104 -0
  297. package/skills/browser-drive/SKILL.md +133 -0
  298. package/skills/browser-drive/references/snapshot-act-loop.md +37 -0
  299. package/skills/browser-drive/scripts/capability-probe.mjs +262 -0
  300. package/skills/comment-checker/SKILL.md +171 -0
  301. package/skills/debugging/SKILL.md +202 -0
  302. package/skills/debugging/references/README.md +15 -0
  303. package/skills/debugging/references/escalation.md +43 -0
  304. package/skills/debugging/references/runtimes/README.md +17 -0
  305. package/skills/debugging/references/runtimes/bundled-js-binary.md +44 -0
  306. package/skills/debugging/references/runtimes/go.md +37 -0
  307. package/skills/debugging/references/runtimes/native-binary.md +44 -0
  308. package/skills/debugging/references/runtimes/node.md +43 -0
  309. package/skills/debugging/references/runtimes/python.md +41 -0
  310. package/skills/debugging/references/runtimes/rust.md +37 -0
  311. package/skills/debugging/references/tools.md +72 -0
  312. package/skills/deep-interview/SKILL.md +201 -0
  313. package/skills/doctor-installer/SKILL.md +252 -0
  314. package/skills/durable-litgoal/SKILL.md +248 -0
  315. package/skills/frontend-ui-ux/SKILL.md +70 -0
  316. package/skills/frontend-ui-ux/data/LICENSE +21 -0
  317. package/skills/frontend-ui-ux/data/PROVENANCE.json +1088 -0
  318. package/skills/frontend-ui-ux/data/THIRD-PARTY-NOTICE.txt +14 -0
  319. package/skills/frontend-ui-ux/data/design-intelligence.json +1 -0
  320. package/skills/frontend-ui-ux/references/_canonical-corpus/ATTRIBUTION.md +217 -0
  321. package/skills/frontend-ui-ux/references/_canonical-corpus/LICENSE +21 -0
  322. package/skills/frontend-ui-ux/references/_canonical-corpus/LICENSE-Apache-2.0.txt +201 -0
  323. package/skills/frontend-ui-ux/references/_canonical-corpus/manifest.json +867 -0
  324. package/skills/frontend-ui-ux/references/adaptive-layout.md +85 -0
  325. package/skills/frontend-ui-ux/references/brand-and-imagery.md +79 -0
  326. package/skills/frontend-ui-ux/references/complete-contract.md +282 -0
  327. package/skills/frontend-ui-ux/references/composition.md +87 -0
  328. package/skills/frontend-ui-ux/references/creative-directions.md +83 -0
  329. package/skills/frontend-ui-ux/references/design/README.md +248 -0
  330. package/skills/frontend-ui-ux/references/design/_INDEX.md +191 -0
  331. package/skills/frontend-ui-ux/references/design/airbnb.md +393 -0
  332. package/skills/frontend-ui-ux/references/design/airtable.md +92 -0
  333. package/skills/frontend-ui-ux/references/design/apple.md +250 -0
  334. package/skills/frontend-ui-ux/references/design/aside.md +209 -0
  335. package/skills/frontend-ui-ux/references/design/binance.md +348 -0
  336. package/skills/frontend-ui-ux/references/design/bmw.md +183 -0
  337. package/skills/frontend-ui-ux/references/design/brutalist-skill.md +92 -0
  338. package/skills/frontend-ui-ux/references/design/bugatti.md +271 -0
  339. package/skills/frontend-ui-ux/references/design/cal.md +262 -0
  340. package/skills/frontend-ui-ux/references/design/claude.md +315 -0
  341. package/skills/frontend-ui-ux/references/design/clay.md +307 -0
  342. package/skills/frontend-ui-ux/references/design/clickhouse.md +284 -0
  343. package/skills/frontend-ui-ux/references/design/clone-from-url.md +65 -0
  344. package/skills/frontend-ui-ux/references/design/cohere.md +269 -0
  345. package/skills/frontend-ui-ux/references/design/coinbase.md +132 -0
  346. package/skills/frontend-ui-ux/references/design/composio.md +310 -0
  347. package/skills/frontend-ui-ux/references/design/cursor.md +312 -0
  348. package/skills/frontend-ui-ux/references/design/design-system-architecture.md +244 -0
  349. package/skills/frontend-ui-ux/references/design/elevenlabs.md +268 -0
  350. package/skills/frontend-ui-ux/references/design/expo.md +284 -0
  351. package/skills/frontend-ui-ux/references/design/ferrari.md +317 -0
  352. package/skills/frontend-ui-ux/references/design/figma.md +223 -0
  353. package/skills/frontend-ui-ux/references/design/framer.md +249 -0
  354. package/skills/frontend-ui-ux/references/design/gpt-tasteskill.md +74 -0
  355. package/skills/frontend-ui-ux/references/design/hashicorp.md +281 -0
  356. package/skills/frontend-ui-ux/references/design/ibm.md +335 -0
  357. package/skills/frontend-ui-ux/references/design/image-to-code-skill.md +1228 -0
  358. package/skills/frontend-ui-ux/references/design/imagegen-brandkit.md +798 -0
  359. package/skills/frontend-ui-ux/references/design/imagegen-frontend-mobile.md +1465 -0
  360. package/skills/frontend-ui-ux/references/design/imagegen-frontend-web.md +987 -0
  361. package/skills/frontend-ui-ux/references/design/intercom.md +149 -0
  362. package/skills/frontend-ui-ux/references/design/kraken.md +128 -0
  363. package/skills/frontend-ui-ux/references/design/lamborghini.md +291 -0
  364. package/skills/frontend-ui-ux/references/design/layout-skill.md +107 -0
  365. package/skills/frontend-ui-ux/references/design/lazyweb.md +77 -0
  366. package/skills/frontend-ui-ux/references/design/linear.app.md +370 -0
  367. package/skills/frontend-ui-ux/references/design/lovable.md +301 -0
  368. package/skills/frontend-ui-ux/references/design/mastercard.md +368 -0
  369. package/skills/frontend-ui-ux/references/design/meta.md +369 -0
  370. package/skills/frontend-ui-ux/references/design/minimalist-skill.md +85 -0
  371. package/skills/frontend-ui-ux/references/design/minimax.md +260 -0
  372. package/skills/frontend-ui-ux/references/design/mintlify.md +329 -0
  373. package/skills/frontend-ui-ux/references/design/miro.md +111 -0
  374. package/skills/frontend-ui-ux/references/design/mistral.ai.md +264 -0
  375. package/skills/frontend-ui-ux/references/design/mongodb.md +269 -0
  376. package/skills/frontend-ui-ux/references/design/nike.md +366 -0
  377. package/skills/frontend-ui-ux/references/design/notion.md +312 -0
  378. package/skills/frontend-ui-ux/references/design/nvidia.md +296 -0
  379. package/skills/frontend-ui-ux/references/design/ollama.md +270 -0
  380. package/skills/frontend-ui-ux/references/design/opencode.ai.md +284 -0
  381. package/skills/frontend-ui-ux/references/design/output-skill.md +49 -0
  382. package/skills/frontend-ui-ux/references/design/pinterest.md +233 -0
  383. package/skills/frontend-ui-ux/references/design/playstation.md +367 -0
  384. package/skills/frontend-ui-ux/references/design/posthog.md +259 -0
  385. package/skills/frontend-ui-ux/references/design/raycast.md +271 -0
  386. package/skills/frontend-ui-ux/references/design/react-dev-tooling-skill.md +230 -0
  387. package/skills/frontend-ui-ux/references/design/redesign-skill.md +178 -0
  388. package/skills/frontend-ui-ux/references/design/renault.md +314 -0
  389. package/skills/frontend-ui-ux/references/design/replicate.md +264 -0
  390. package/skills/frontend-ui-ux/references/design/resend.md +306 -0
  391. package/skills/frontend-ui-ux/references/design/revolut.md +188 -0
  392. package/skills/frontend-ui-ux/references/design/runwayml.md +247 -0
  393. package/skills/frontend-ui-ux/references/design/sanity.md +360 -0
  394. package/skills/frontend-ui-ux/references/design/sentry.md +265 -0
  395. package/skills/frontend-ui-ux/references/design/shopify.md +353 -0
  396. package/skills/frontend-ui-ux/references/design/soft-skill.md +98 -0
  397. package/skills/frontend-ui-ux/references/design/spacex.md +197 -0
  398. package/skills/frontend-ui-ux/references/design/spotify.md +249 -0
  399. package/skills/frontend-ui-ux/references/design/starbucks.md +583 -0
  400. package/skills/frontend-ui-ux/references/design/stitch-design-example.md +121 -0
  401. package/skills/frontend-ui-ux/references/design/stitch-skill.md +184 -0
  402. package/skills/frontend-ui-ux/references/design/stripe.md +325 -0
  403. package/skills/frontend-ui-ux/references/design/supabase.md +258 -0
  404. package/skills/frontend-ui-ux/references/design/superhuman.md +255 -0
  405. package/skills/frontend-ui-ux/references/design/taste-skill.md +1206 -0
  406. package/skills/frontend-ui-ux/references/design/tesla.md +289 -0
  407. package/skills/frontend-ui-ux/references/design/theverge.md +342 -0
  408. package/skills/frontend-ui-ux/references/design/together.ai.md +266 -0
  409. package/skills/frontend-ui-ux/references/design/uber.md +298 -0
  410. package/skills/frontend-ui-ux/references/design/vercel.md +313 -0
  411. package/skills/frontend-ui-ux/references/design/vodafone.md +426 -0
  412. package/skills/frontend-ui-ux/references/design/voltagent.md +326 -0
  413. package/skills/frontend-ui-ux/references/design/warp.md +256 -0
  414. package/skills/frontend-ui-ux/references/design/webflow.md +95 -0
  415. package/skills/frontend-ui-ux/references/design/wired.md +281 -0
  416. package/skills/frontend-ui-ux/references/design/wise.md +176 -0
  417. package/skills/frontend-ui-ux/references/design/x.ai.md +260 -0
  418. package/skills/frontend-ui-ux/references/design/zapier.md +331 -0
  419. package/skills/frontend-ui-ux/references/designpowers/EVIDENCE.md +97 -0
  420. package/skills/frontend-ui-ux/references/designpowers/README.md +48 -0
  421. package/skills/frontend-ui-ux/references/designpowers/UPSTREAM.md +80 -0
  422. package/skills/frontend-ui-ux/references/designpowers/lane-a-direction.md +64 -0
  423. package/skills/frontend-ui-ux/references/designpowers/lane-b-execution.md +65 -0
  424. package/skills/frontend-ui-ux/references/designpowers/lane-c-review.md +65 -0
  425. package/skills/frontend-ui-ux/references/designpowers/lane-d-memory.md +83 -0
  426. package/skills/frontend-ui-ux/references/designpowers/orchestration.md +80 -0
  427. package/skills/frontend-ui-ux/references/designpowers/routing.md +79 -0
  428. package/skills/frontend-ui-ux/references/designpowers/vendor/LICENSE +21 -0
  429. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/accessibility-reviewer.md +83 -0
  430. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/content-writer.md +132 -0
  431. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-builder.md +109 -0
  432. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-critic.md +89 -0
  433. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-lead.md +113 -0
  434. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-scout.md +78 -0
  435. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-strategist.md +121 -0
  436. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/heuristic-evaluator.md +268 -0
  437. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/inspiration-scout.md +107 -0
  438. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/motion-designer.md +120 -0
  439. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/accessible-content/reference.md +101 -0
  440. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/adaptive-interfaces/reference.md +109 -0
  441. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/cognitive-accessibility/reference.md +107 -0
  442. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-debate/reference.md +199 -0
  443. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-debt-tracker/reference.md +174 -0
  444. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-handoff/reference.md +125 -0
  445. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-md/reference.md +106 -0
  446. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-retrospective/reference.md +266 -0
  447. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-review/reference.md +123 -0
  448. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-system-alignment/reference.md +120 -0
  449. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/designpowers-critique/reference.md +164 -0
  450. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/heuristic-evaluation/reference.md +85 -0
  451. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/inclusive-personas/reference.md +98 -0
  452. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/inspiration-scouting/reference.md +165 -0
  453. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/interaction-design/reference.md +122 -0
  454. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/motion-choreography/reference.md +81 -0
  455. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/research-planning/reference.md +96 -0
  456. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/responsive-patterns/reference.md +77 -0
  457. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/synthetic-user-testing/reference.md +192 -0
  458. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/taste-feedback/reference.md +165 -0
  459. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/taste-report/reference.md +78 -0
  460. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/token-architecture/reference.md +75 -0
  461. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/ui-composition/reference.md +117 -0
  462. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/usability-testing/reference.md +78 -0
  463. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/verification-before-shipping/reference.md +125 -0
  464. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/voice-and-tone/reference.md +79 -0
  465. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/writing-design-plans/reference.md +119 -0
  466. package/skills/frontend-ui-ux/references/evidence-review.md +103 -0
  467. package/skills/frontend-ui-ux/references/implementation-platforms.md +94 -0
  468. package/skills/frontend-ui-ux/references/inclusive-interface.md +85 -0
  469. package/skills/frontend-ui-ux/references/interaction-motion.md +93 -0
  470. package/skills/frontend-ui-ux/references/operating-lanes.md +80 -0
  471. package/skills/frontend-ui-ux/references/perfection/README.md +160 -0
  472. package/skills/frontend-ui-ux/references/perfection/react-perf-tooling.md +127 -0
  473. package/skills/frontend-ui-ux/references/performance-delivery.md +77 -0
  474. package/skills/frontend-ui-ux/references/product-direction.md +84 -0
  475. package/skills/frontend-ui-ux/references/redesign-playbook.md +88 -0
  476. package/skills/frontend-ui-ux/references/system-foundations.md +86 -0
  477. package/skills/frontend-ui-ux/references/taste-direction.md +55 -0
  478. package/skills/frontend-ui-ux/references/ui-ux-db/README.md +659 -0
  479. package/skills/frontend-ui-ux/references/ui-ux-db/data/charts.csv +26 -0
  480. package/skills/frontend-ui-ux/references/ui-ux-db/data/colors.csv +162 -0
  481. package/skills/frontend-ui-ux/references/ui-ux-db/data/icons.csv +106 -0
  482. package/skills/frontend-ui-ux/references/ui-ux-db/data/landing.csv +35 -0
  483. package/skills/frontend-ui-ux/references/ui-ux-db/data/products.csv +162 -0
  484. package/skills/frontend-ui-ux/references/ui-ux-db/data/react-performance.csv +45 -0
  485. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/astro.csv +54 -0
  486. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/flutter.csv +53 -0
  487. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/html-tailwind.csv +56 -0
  488. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/jetpack-compose.csv +53 -0
  489. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nextjs.csv +53 -0
  490. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nuxt-ui.csv +51 -0
  491. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nuxtjs.csv +59 -0
  492. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/react-native.csv +52 -0
  493. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/react.csv +54 -0
  494. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/shadcn.csv +61 -0
  495. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/svelte.csv +54 -0
  496. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/swiftui.csv +51 -0
  497. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/vue.csv +50 -0
  498. package/skills/frontend-ui-ux/references/ui-ux-db/data/styles.csv +85 -0
  499. package/skills/frontend-ui-ux/references/ui-ux-db/data/typography.csv +74 -0
  500. package/skills/frontend-ui-ux/references/ui-ux-db/data/ui-reasoning.csv +162 -0
  501. package/skills/frontend-ui-ux/references/ui-ux-db/data/ux-guidelines.csv +100 -0
  502. package/skills/frontend-ui-ux/references/ui-ux-db/data/web-interface.csv +31 -0
  503. package/skills/frontend-ui-ux/references/ui-ux-db/scripts/core.py +262 -0
  504. package/skills/frontend-ui-ux/references/ui-ux-db/scripts/design_system.py +1148 -0
  505. package/skills/frontend-ui-ux/references/ui-ux-db/scripts/search.py +114 -0
  506. package/skills/frontend-ui-ux/references/visual-language.md +84 -0
  507. package/skills/frontend-ui-ux/references/visual-reconstruction.md +87 -0
  508. package/skills/frontend-ui-ux/schemas/design-contract-v1alpha1.json +570 -0
  509. package/skills/frontend-ui-ux/schemas/design-contract-v1beta1.json +32 -0
  510. package/skills/frontend-ui-ux/schemas/design-contract-v1beta2.json +34 -0
  511. package/skills/frontend-ui-ux/scripts/bounded-json.mjs +45 -0
  512. package/skills/frontend-ui-ux/scripts/canonical-json.mjs +26 -0
  513. package/skills/frontend-ui-ux/scripts/contract-error.mjs +15 -0
  514. package/skills/frontend-ui-ux/scripts/csv.mjs +64 -0
  515. package/skills/frontend-ui-ux/scripts/dataset.mjs +65 -0
  516. package/skills/frontend-ui-ux/scripts/design-contract.mjs +609 -0
  517. package/skills/frontend-ui-ux/scripts/import-design-intelligence.mjs +193 -0
  518. package/skills/frontend-ui-ux/scripts/retrieval.mjs +92 -0
  519. package/skills/frontend-ui-ux/scripts/stable-file-read.mjs +237 -0
  520. package/skills/frontend-ui-ux/scripts/stdin-json.mjs +16 -0
  521. package/skills/frontend-ui-ux/scripts/strict-json.mjs +102 -0
  522. package/skills/frontend-ui-ux/scripts/uiux.mjs +86 -0
  523. package/skills/frontend-ui-ux/scripts/verify-canonical-corpus.mjs +266 -0
  524. package/skills/lit-burnoff/SKILL.md +227 -0
  525. package/skills/lit-burnoff-file/SKILL.md +175 -0
  526. package/skills/lit-code/SKILL.md +266 -0
  527. package/skills/lit-code/references/README.md +18 -0
  528. package/skills/lit-code/references/go/README.md +12 -0
  529. package/skills/lit-code/references/go/concurrency.md +42 -0
  530. package/skills/lit-code/references/go/error-handling.md +47 -0
  531. package/skills/lit-code/references/go/testing.md +55 -0
  532. package/skills/lit-code/references/go/tooling.md +35 -0
  533. package/skills/lit-code/references/go/type-patterns.md +50 -0
  534. package/skills/lit-code/references/python/README.md +12 -0
  535. package/skills/lit-code/references/python/async.md +50 -0
  536. package/skills/lit-code/references/python/error-handling.md +44 -0
  537. package/skills/lit-code/references/python/testing.md +50 -0
  538. package/skills/lit-code/references/python/tooling.md +38 -0
  539. package/skills/lit-code/references/python/type-patterns.md +46 -0
  540. package/skills/lit-code/references/rust/README.md +12 -0
  541. package/skills/lit-code/references/rust/concurrency.md +45 -0
  542. package/skills/lit-code/references/rust/error-handling.md +43 -0
  543. package/skills/lit-code/references/rust/tooling.md +36 -0
  544. package/skills/lit-code/references/rust/type-patterns.md +46 -0
  545. package/skills/lit-code/references/rust/unsafe.md +47 -0
  546. package/skills/lit-code/references/typescript/README.md +11 -0
  547. package/skills/lit-code/references/typescript/error-handling.md +56 -0
  548. package/skills/lit-code/references/typescript/testing.md +42 -0
  549. package/skills/lit-code/references/typescript/tsconfig-strict.md +40 -0
  550. package/skills/lit-code/references/typescript/type-patterns.md +60 -0
  551. package/skills/lit-commit/SKILL.md +222 -0
  552. package/skills/lit-comprehend/SKILL.md +278 -0
  553. package/skills/lit-comprehend/assets/explainer-scaffold.html +104 -0
  554. package/skills/lit-comprehend/references/artifact-template.md +114 -0
  555. package/skills/lit-comprehend/references/micro-worlds.md +115 -0
  556. package/skills/lit-comprehend/scripts/verify-explainer.ts +339 -0
  557. package/skills/lit-crucible/SKILL.md +212 -0
  558. package/skills/lit-fetch/SKILL.md +242 -0
  559. package/skills/lit-handoff/SKILL.md +199 -0
  560. package/skills/lit-init/SKILL.md +214 -0
  561. package/skills/lit-korean/SKILL.md +231 -0
  562. package/skills/lit-plan/SKILL.md +351 -0
  563. package/skills/lit-plan/scripts/scaffold-plan.mjs +275 -0
  564. package/skills/lit-recap/SKILL.md +233 -0
  565. package/skills/lit-scientific-visualization/SKILL.md +175 -0
  566. package/skills/litresearch/SKILL.md +436 -0
  567. package/skills/litwork/SKILL.md +227 -0
  568. package/skills/lsp/SKILL.md +186 -0
  569. package/skills/lsp-setup/SKILL.md +187 -0
  570. package/skills/lsp-setup/references/README.md +40 -0
  571. package/skills/lsp-setup/references/bash.md +31 -0
  572. package/skills/lsp-setup/references/c-cpp.md +43 -0
  573. package/skills/lsp-setup/references/csharp.md +29 -0
  574. package/skills/lsp-setup/references/dart.md +25 -0
  575. package/skills/lsp-setup/references/elixir.md +30 -0
  576. package/skills/lsp-setup/references/go.md +33 -0
  577. package/skills/lsp-setup/references/haskell.md +27 -0
  578. package/skills/lsp-setup/references/java.md +28 -0
  579. package/skills/lsp-setup/references/julia.md +28 -0
  580. package/skills/lsp-setup/references/kotlin.md +25 -0
  581. package/skills/lsp-setup/references/lua.md +26 -0
  582. package/skills/lsp-setup/references/php.md +30 -0
  583. package/skills/lsp-setup/references/python.md +33 -0
  584. package/skills/lsp-setup/references/ruby.md +34 -0
  585. package/skills/lsp-setup/references/rust.md +34 -0
  586. package/skills/lsp-setup/references/swift.md +26 -0
  587. package/skills/lsp-setup/references/terraform.md +26 -0
  588. package/skills/lsp-setup/references/typescript.md +35 -0
  589. package/skills/lsp-setup/references/yaml.md +27 -0
  590. package/skills/lsp-setup/references/zig.md +28 -0
  591. package/skills/managed-skill-manifest.json +1386 -0
  592. package/skills/native-goal-verdict/SKILL.md +216 -0
  593. package/skills/refactor/SKILL.md +221 -0
  594. package/skills/reference-benchmark-claims/SKILL.md +204 -0
  595. package/skills/release-guardrails/SKILL.md +245 -0
  596. package/skills/review-work/SKILL.md +301 -0
  597. package/skills/rules/SKILL.md +196 -0
  598. package/skills/search-workflow-ideas/SKILL.md +223 -0
  599. package/skills/skill-observer/SKILL.md +148 -0
  600. package/skills/skill-observer/references/review-contract.md +95 -0
  601. package/skills/skill-rename-aliases.json +10 -0
  602. package/skills/start-work/SKILL.md +334 -0
  603. package/skills/structural-search/SKILL.md +234 -0
  604. package/skills/tool-guards/SKILL.md +223 -0
  605. package/skills/visual-qa/SKILL.md +61 -0
  606. package/skills/visual-qa/references/capture-playbook.md +105 -0
  607. package/skills/visual-qa/references/complete-contract.md +411 -0
  608. package/skills/visual-qa/schemas/evidence-manifest-v1alpha1.json +201 -0
  609. package/skills/visual-qa/schemas/evidence-manifest-v1beta1.json +141 -0
  610. package/skills/visual-qa/schemas/review-receipt-v1alpha1.json +113 -0
  611. package/skills/visual-qa/scripts/artifact.mjs +123 -0
  612. package/skills/visual-qa/scripts/bounded-json.mjs +47 -0
  613. package/skills/visual-qa/scripts/canonical-json.mjs +28 -0
  614. package/skills/visual-qa/scripts/capabilities.mjs +66 -0
  615. package/skills/visual-qa/scripts/contract-text.mjs +15 -0
  616. package/skills/visual-qa/scripts/design-contract.mjs +611 -0
  617. package/skills/visual-qa/scripts/evidence-evaluate.mjs +521 -0
  618. package/skills/visual-qa/scripts/evidence.mjs +271 -0
  619. package/skills/visual-qa/scripts/png-decode.mjs +146 -0
  620. package/skills/visual-qa/scripts/png.mjs +154 -0
  621. package/skills/visual-qa/scripts/review.mjs +188 -0
  622. package/skills/visual-qa/scripts/stdin-json.mjs +16 -0
  623. package/skills/visual-qa/scripts/strict-json.mjs +102 -0
  624. package/skills/visual-qa/scripts/tui.mjs +149 -0
  625. package/skills/visual-qa/scripts/visual-qa.mjs +90 -0
  626. package/skills/wikify/LICENSE +21 -0
  627. package/skills/wikify/PROVENANCE.md +18 -0
  628. package/skills/wikify/SKILL.md +176 -0
  629. package/skills/wikify/assets/home-template.md +44 -0
  630. package/skills/wikify/assets/maintenance-report-template.md +46 -0
  631. package/skills/wikify/assets/paper-source-note-template.md +137 -0
  632. package/skills/wikify/assets/source-note-template.md +45 -0
  633. package/skills/wikify/assets/wiki-rules-template.md +117 -0
  634. package/skills/wikify/modes/ingest.md +57 -0
  635. package/skills/wikify/modes/init.md +44 -0
  636. package/skills/wikify/modes/lint.md +60 -0
  637. package/skills/wikify/modes/query.md +38 -0
  638. package/skills/wikify/modes/save.md +45 -0
  639. package/skills/wikify/references-upstream-contract.md +758 -0
  640. package/skills/workflow-loop/SKILL.md +387 -0
  641. package/tools/check-pack-payload.mjs +410 -0
  642. package/tools/check-payload-substance.mjs +738 -0
  643. package/tools/check-version-lockstep.mjs +238 -0
  644. package/tools/gen-canonical-frontend-manifest.mjs +66 -0
  645. package/tools/gen-managed-skill-manifest.mjs +135 -0
  646. package/tools/harness-speed-local.mjs +261 -0
  647. package/tools/payload-reference-exemptions.json +49 -0
  648. package/tools/payload-substance-allowlist.json +46 -0
  649. package/tools/payload-substance-parity.json +571 -0
  650. package/tools/qa-real-surface-fixtures.mjs +428 -0
  651. package/tools/qa-real-surface-harness.mjs +173 -0
  652. package/tools/run-behavior-replacement-probes.mjs +296 -0
  653. package/tools/run-build.mjs +101 -0
  654. package/tools/run-harness-speed-local.mjs +52 -0
  655. package/tools/run-harness-speed-v2.mjs +36 -0
  656. package/tools/run-installed-resource-tamper-probe.mjs +62 -0
  657. package/tools/run-negative-gate-matrix.mjs +516 -0
  658. package/tools/run-rules-glob-differential.mjs +232 -0
  659. package/tools/run-typecheck.mjs +25 -0
  660. package/tools/run-uiux-visual-qa-scenarios.mjs +234 -0
  661. package/tools/run-wikify-surface-probe.mjs +170 -0
  662. package/tools/scan-legacy-tokens.mjs +431 -0
  663. package/tools/version-manifests.json +60 -0
  664. package/tsconfig.build.json +12 -0
  665. package/tsconfig.json +13 -0
  666. package/vendor/NOTICE.md +21 -0
  667. package/vendor/handoff/SKILL.md +199 -0
  668. package/vendor/handoff/evals/evals.json +154 -0
  669. package/vendor/handoff/examples/HANDOFF-example-generic-auth-refactor.md +97 -0
  670. package/vendor/handoff/templates/HANDOFF.md +121 -0
  671. package/vendor/licenses/022_handoff-MIT.txt +21 -0
  672. package/vendor/licenses/045_scientific-visualization-MIT.txt +21 -0
  673. package/vendor/provenance/022_handoff.md +19 -0
  674. package/vendor/provenance/045_scientific-visualization.md +36 -0
  675. package/vendor/scientific-visualization/SKILL.md +283 -0
  676. package/vendor/scientific-visualization/assets/color_palettes.py +197 -0
  677. package/vendor/scientific-visualization/assets/nature.mplstyle +75 -0
  678. package/vendor/scientific-visualization/assets/presentation.mplstyle +74 -0
  679. package/vendor/scientific-visualization/assets/publication.mplstyle +78 -0
  680. package/vendor/scientific-visualization/evals/evals.json +158 -0
  681. package/vendor/scientific-visualization/references/color_palettes.md +380 -0
  682. package/vendor/scientific-visualization/references/journal_requirements.md +359 -0
  683. package/vendor/scientific-visualization/references/matplotlib_examples.md +608 -0
  684. package/vendor/scientific-visualization/references/mdanalysis_martini_visualization.md +85 -0
  685. package/vendor/scientific-visualization/references/publication_guidelines.md +217 -0
  686. package/vendor/scientific-visualization/references/seaborn_for_publications.md +293 -0
  687. package/vendor/scientific-visualization/scripts/figure_export.py +238 -0
  688. package/vendor/scientific-visualization/scripts/style_presets.py +467 -0
  689. package/vendor/scientific-visualization/tests/test_figure_export.py +51 -0
  690. package/vendor/scientific-visualization/tests/test_style_presets.py +114 -0
@@ -0,0 +1,188 @@
1
+ const hashPattern = /^sha256:[a-f0-9]{64}$/u;
2
+ const inputKeys = ["design_contract", "evidence_manifest", "source", "capture"];
3
+
4
+ function object(value) {
5
+ return value !== null && typeof value === "object" && !Array.isArray(value);
6
+ }
7
+
8
+ function timestamp(value) {
9
+ const time = Date.parse(value);
10
+ return Number.isFinite(time) ? time : undefined;
11
+ }
12
+
13
+ // BLOCKED means a capability the review needed was absent: no second reviewer, a
14
+ // review that never finished, or bytes that could not be trusted. FAIL means the
15
+ // review ran to completion and rejected the work. The two are not
16
+ // interchangeable, because a BLOCKED receipt asks for a capability while a FAIL
17
+ // receipt asks for a fix. BLOCKED outranks FAIL, so every absent-capability check
18
+ // below runs before the two verdict checks.
19
+ function blocked(code, reason) {
20
+ return { code, independent: false, reason, verdict: "BLOCKED" };
21
+ }
22
+
23
+ function failed(code, reason) {
24
+ return { code, independent: true, reason, verdict: "FAIL" };
25
+ }
26
+
27
+ function exact(value, keys) {
28
+ return object(value) && Object.keys(value).every((key) => keys.includes(key));
29
+ }
30
+
31
+ function validFinding(finding) {
32
+ return (
33
+ exact(finding, ["code", "severity", "evidence_pointers", "message"]) &&
34
+ typeof finding.code === "string" &&
35
+ finding.code.length > 0 &&
36
+ ["critical", "high", "medium", "low", "info"].includes(finding.severity) &&
37
+ typeof finding.message === "string" &&
38
+ finding.message.length > 0 &&
39
+ Array.isArray(finding.evidence_pointers) &&
40
+ finding.evidence_pointers.length > 0 &&
41
+ finding.evidence_pointers.every(
42
+ (pointer) =>
43
+ exact(pointer, ["path", "hash"]) &&
44
+ typeof pointer.path === "string" &&
45
+ pointer.path.length > 0 &&
46
+ hashPattern.test(pointer.hash)
47
+ )
48
+ );
49
+ }
50
+
51
+ export function validateReviewReceipt(receipt) {
52
+ const errors = [];
53
+ if (!object(receipt)) return { ok: false, errors: ["receipt must be an object"] };
54
+ const receiptKeys = [
55
+ "schema_id", "review_id", "reviewer_id", "fresh_context_id", "reviewer_capability_class",
56
+ "input_hashes", "reviewed_inventory", "findings", "confidence", "independence_assertion",
57
+ "started_at", "ended_at", "timeout_seconds", "timed_out", "cancelled", "cancellation_reason",
58
+ "round", "verdict"
59
+ ];
60
+ if (!exact(receipt, receiptKeys)) errors.push("receipt contains unknown fields");
61
+ if (receipt.schema_id !== "litfamily.review-receipt/v1alpha1") errors.push("schema_id must be exact v1alpha1");
62
+ for (const field of ["review_id", "reviewer_id", "fresh_context_id", "reviewer_capability_class"]) {
63
+ if (typeof receipt[field] !== "string" || receipt[field].length === 0) errors.push(`${field} is required`);
64
+ }
65
+ if (
66
+ !exact(receipt.input_hashes, inputKeys) ||
67
+ inputKeys.some((key) => !hashPattern.test(receipt.input_hashes[key]))
68
+ ) {
69
+ errors.push("input_hashes must contain all immutable hashes");
70
+ }
71
+ if (
72
+ !Array.isArray(receipt.reviewed_inventory) ||
73
+ receipt.reviewed_inventory.length === 0 ||
74
+ receipt.reviewed_inventory.length > 10000 ||
75
+ receipt.reviewed_inventory.some(
76
+ (item) =>
77
+ !exact(item, ["id", "kind", "status"]) ||
78
+ typeof item.id !== "string" ||
79
+ item.id.length === 0 ||
80
+ typeof item.kind !== "string" ||
81
+ item.kind.length === 0 ||
82
+ !["captured", "not_applicable", "accepted_exception", "blocked"].includes(item.status)
83
+ ) ||
84
+ new Set(receipt.reviewed_inventory.map((item) => item.id)).size !== receipt.reviewed_inventory.length
85
+ ) errors.push("reviewed_inventory must be finite, non-empty, and unique");
86
+ if (
87
+ !Array.isArray(receipt.findings) ||
88
+ receipt.findings.length > 10000 ||
89
+ receipt.findings.some((finding) => !validFinding(finding))
90
+ ) errors.push("findings must be finite and contain evidence pointers");
91
+ if (!Number.isFinite(receipt.confidence) || receipt.confidence < 0 || receipt.confidence > 1) {
92
+ errors.push("confidence must be between zero and one");
93
+ }
94
+ const assertion = receipt.independence_assertion;
95
+ if (
96
+ !exact(assertion, ["fresh_context", "same_immutable_inputs", "other_draft_received", "other_verdict_received"]) ||
97
+ assertion.fresh_context !== true ||
98
+ assertion.same_immutable_inputs !== true ||
99
+ assertion.other_draft_received !== false ||
100
+ assertion.other_verdict_received !== false
101
+ ) errors.push("independence_assertion must exactly attest independent context");
102
+ const started = timestamp(receipt.started_at);
103
+ const ended = timestamp(receipt.ended_at);
104
+ if (started === undefined || ended === undefined || ended < started) errors.push("review timestamps are invalid");
105
+ if (!Number.isFinite(receipt.timeout_seconds) || receipt.timeout_seconds <= 0 || receipt.timeout_seconds > 3600) {
106
+ errors.push("timeout_seconds must be finite and bounded");
107
+ } else if (started !== undefined && ended !== undefined && ended - started > receipt.timeout_seconds * 1000) {
108
+ errors.push("review elapsed time exceeds timeout_seconds");
109
+ }
110
+ if (typeof receipt.timed_out !== "boolean" || typeof receipt.cancelled !== "boolean") {
111
+ errors.push("timed_out and cancelled must be boolean");
112
+ }
113
+ if (
114
+ receipt.cancelled &&
115
+ (typeof receipt.cancellation_reason !== "string" || receipt.cancellation_reason.length === 0)
116
+ ) errors.push("cancelled review requires cancellation_reason");
117
+ if (!receipt.cancelled && receipt.cancellation_reason !== null) {
118
+ errors.push("active review cancellation_reason must be null");
119
+ }
120
+ if (!Number.isInteger(receipt.round) || receipt.round < 1 || receipt.round > 2) {
121
+ errors.push("round must be one or two");
122
+ }
123
+ if (!["PASS", "REVISE", "FAIL", "BLOCKED"].includes(receipt.verdict)) errors.push("verdict is invalid");
124
+ return { ok: errors.length === 0, errors };
125
+ }
126
+
127
+ function sameInputs(first, second) {
128
+ return inputKeys.every((key) => first.input_hashes[key] === second.input_hashes[key]);
129
+ }
130
+
131
+ export function validateReviewIndependence(
132
+ receipts,
133
+ { acceptedExceptions = [], now = new Date().toISOString(), maximumAgeSeconds = 600 } = {}
134
+ ) {
135
+ if (!Array.isArray(receipts) || receipts.length !== 2) {
136
+ return blocked("BLOCKED_INDEPENDENT_REVIEW_UNAVAILABLE", "exactly two fresh review receipts are required");
137
+ }
138
+ const validations = receipts.map(validateReviewReceipt);
139
+ if (receipts.some((receipt) => receipt?.timed_out === true)) {
140
+ return blocked("BLOCKED_REVIEW_TIMEOUT", "an independent review timed out");
141
+ }
142
+ if (receipts.some((receipt) => receipt?.cancelled === true)) {
143
+ return blocked("BLOCKED_REVIEW_CANCELLED", "an independent review was cancelled");
144
+ }
145
+ if (validations.some((result) => !result.ok)) {
146
+ return blocked("BLOCKED_SCHEMA_OR_PAYLOAD_MISMATCH", "a review receipt is invalid");
147
+ }
148
+ const [first, second] = receipts;
149
+ if (
150
+ first.review_id === second.review_id ||
151
+ first.reviewer_id === second.reviewer_id ||
152
+ first.fresh_context_id === second.fresh_context_id ||
153
+ first.reviewer_capability_class === second.reviewer_capability_class
154
+ ) return blocked("BLOCKED_INDEPENDENT_REVIEW_UNAVAILABLE", "review identities, contexts, and capabilities must differ");
155
+ if (!sameInputs(first, second)) {
156
+ return blocked("BLOCKED_SCHEMA_OR_PAYLOAD_MISMATCH", "reviewers must inspect identical immutable inputs");
157
+ }
158
+ const nowTime = timestamp(now);
159
+ if (
160
+ nowTime === undefined ||
161
+ receipts.some((receipt) => {
162
+ const ended = timestamp(receipt.ended_at);
163
+ return ended === undefined || nowTime < ended || nowTime - ended > maximumAgeSeconds * 1000;
164
+ })
165
+ ) return blocked("BLOCKED_EVIDENCE_STALE", "review receipts are stale");
166
+ if (receipts.some((receipt) => receipt.verdict !== "PASS")) {
167
+ return failed("FAIL_REVIEW_VERDICT", "both independent review receipts must declare PASS");
168
+ }
169
+ const gatingFindings = receipts.flatMap((receipt) =>
170
+ receipt.findings.filter((finding) => ["critical", "high"].includes(finding.severity))
171
+ );
172
+ // An exception only forgives while it is still current. This filter lives here, not in the caller,
173
+ // because this function is an exported entry point with a permissive default: a caller that hands
174
+ // it raw contract.accepted_exceptions -- the obvious thing to pass -- would otherwise have an
175
+ // undated or long-expired exception silently forgive a critical finding and return PASS.
176
+ const currentExceptions = acceptedExceptions.filter((exception) => {
177
+ const expiry = timestamp(exception?.expires_at);
178
+ return expiry !== undefined && nowTime <= expiry;
179
+ });
180
+ if (
181
+ gatingFindings.some(
182
+ (finding) => !currentExceptions.some((exception) => exception.id === finding.code)
183
+ )
184
+ ) {
185
+ return failed("FAIL_REVIEW_GATING_FINDING", "an independent review reports an unaccepted gating finding");
186
+ }
187
+ return { independent: true, verdict: "PASS" };
188
+ }
@@ -0,0 +1,16 @@
1
+ // Bounded stdin reader owned by this skill, used by the offline validator CLI.
2
+ import { parseBoundedJson } from "./bounded-json.mjs";
3
+
4
+ export const maximumStdinBytes = 1024 * 1024;
5
+
6
+ export async function readBoundedJsonStream(stream, { maxBytes = maximumStdinBytes } = {}) {
7
+ const chunks = [];
8
+ let total = 0;
9
+ for await (const chunk of stream) {
10
+ const bytes = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
11
+ total += bytes.length;
12
+ if (total > maxBytes) throw new Error(`stdin size ${total} bytes exceeds ${maxBytes} bytes`);
13
+ chunks.push(bytes);
14
+ }
15
+ return parseBoundedJson(Buffer.concat(chunks, total), { maxBytes });
16
+ }
@@ -0,0 +1,102 @@
1
+ // Strict JSON reader owned by this skill: duplicate keys, NUL bytes, and trailing
2
+ // data are refused so an evidence payload cannot be read two different ways.
3
+ function fail(message, offset) {
4
+ throw new Error(`Malformed JSON at byte ${Buffer.byteLength(message.slice(0, offset), "utf8")}: ${message}`);
5
+ }
6
+
7
+ export function parseStrictJson(text) {
8
+ if (typeof text !== "string") throw new TypeError("JSON payload must be a UTF-8 string");
9
+ if (text.includes("\0")) throw new Error("Malformed JSON: NUL bytes are forbidden");
10
+ let index = 0;
11
+
12
+ function whitespace() {
13
+ while (index < text.length && /\s/u.test(text[index])) index += 1;
14
+ }
15
+
16
+ function string() {
17
+ const start = index;
18
+ index += 1;
19
+ while (index < text.length) {
20
+ if (text[index] === '"') {
21
+ index += 1;
22
+ try {
23
+ return JSON.parse(text.slice(start, index));
24
+ } catch {
25
+ fail("invalid string escape", start);
26
+ }
27
+ }
28
+ if (text[index] === "\\") index += 1;
29
+ index += 1;
30
+ }
31
+ fail("unterminated string", start);
32
+ }
33
+
34
+ function value() {
35
+ whitespace();
36
+ const token = text[index];
37
+ if (token === '"') return string();
38
+ if (token === "{") return object();
39
+ if (token === "[") return array();
40
+ const match = text.slice(index).match(/^(?:-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?|true|false|null)/u);
41
+ if (match === null) fail("invalid value", index);
42
+ index += match[0].length;
43
+ return JSON.parse(match[0]);
44
+ }
45
+
46
+ function object() {
47
+ index += 1;
48
+ whitespace();
49
+ const output = {};
50
+ const keys = new Set();
51
+ if (text[index] === "}") {
52
+ index += 1;
53
+ return output;
54
+ }
55
+ while (index < text.length) {
56
+ if (text[index] !== '"') fail("object key must be a string", index);
57
+ const key = string();
58
+ if (keys.has(key)) throw new Error(`Malformed JSON: duplicate key ${JSON.stringify(key)}`);
59
+ keys.add(key);
60
+ whitespace();
61
+ if (text[index] !== ":") fail("missing colon", index);
62
+ index += 1;
63
+ output[key] = value();
64
+ whitespace();
65
+ if (text[index] === "}") {
66
+ index += 1;
67
+ return output;
68
+ }
69
+ if (text[index] !== ",") fail("missing comma", index);
70
+ index += 1;
71
+ whitespace();
72
+ }
73
+ fail("unterminated object", index);
74
+ }
75
+
76
+ function array() {
77
+ index += 1;
78
+ whitespace();
79
+ const output = [];
80
+ if (text[index] === "]") {
81
+ index += 1;
82
+ return output;
83
+ }
84
+ while (index < text.length) {
85
+ output.push(value());
86
+ whitespace();
87
+ if (text[index] === "]") {
88
+ index += 1;
89
+ return output;
90
+ }
91
+ if (text[index] !== ",") fail("missing comma", index);
92
+ index += 1;
93
+ whitespace();
94
+ }
95
+ fail("unterminated array", index);
96
+ }
97
+
98
+ const parsed = value();
99
+ whitespace();
100
+ if (index !== text.length) fail("trailing non-whitespace", index);
101
+ return parsed;
102
+ }
@@ -0,0 +1,149 @@
1
+ const borderConnections = Object.freeze({
2
+ "┌": "RD",
3
+ "┐": "LD",
4
+ "└": "RU",
5
+ "┘": "LU",
6
+ "├": "RUD",
7
+ "┤": "LUD",
8
+ "┬": "LRD",
9
+ "┴": "LRU",
10
+ "┼": "LRUD",
11
+ "─": "LR",
12
+ "│": "UD"
13
+ });
14
+ const segmenter = new Intl.Segmenter("und", { granularity: "grapheme" });
15
+
16
+ function isWide(codePoint) {
17
+ return (
18
+ codePoint >= 0x1100 &&
19
+ (codePoint <= 0x115f ||
20
+ codePoint === 0x2329 ||
21
+ codePoint === 0x232a ||
22
+ (codePoint >= 0x2e80 && codePoint <= 0xa4cf) ||
23
+ (codePoint >= 0xac00 && codePoint <= 0xd7a3) ||
24
+ (codePoint >= 0xf900 && codePoint <= 0xfaff) ||
25
+ (codePoint >= 0xfe10 && codePoint <= 0xfe6f) ||
26
+ (codePoint >= 0xff01 && codePoint <= 0xff60) ||
27
+ (codePoint >= 0xffe0 && codePoint <= 0xffe6) ||
28
+ (codePoint >= 0x1f300 && codePoint <= 0x1faff) ||
29
+ (codePoint >= 0x20000 && codePoint <= 0x3fffd))
30
+ );
31
+ }
32
+
33
+ function graphemeWidth(text, ambiguousWidth) {
34
+ if (/^\p{Mark}+$/u.test(text)) return 0;
35
+ if (text.includes("\u200d") || /\p{Extended_Pictographic}/u.test(text)) return 2;
36
+ const first = text.codePointAt(0);
37
+ if (first !== undefined && isWide(first)) return 2;
38
+ if (ambiguousWidth === 2 && /[·§±×÷α-ωΑ-Ω]/u.test(text)) return 2;
39
+ return 1;
40
+ }
41
+
42
+ function consumeStringControl(text, start) {
43
+ for (let index = start; index < text.length; index += 1) {
44
+ if (text[index] === "\u0007" || text[index] === "\u009c") return index + 1;
45
+ if (text[index] === "\u001b" && text[index + 1] === "\\") return index + 2;
46
+ }
47
+ return text.length;
48
+ }
49
+
50
+ function consumeCsi(text, start) {
51
+ for (let index = start; index < text.length; index += 1) {
52
+ const code = text.charCodeAt(index);
53
+ if (code >= 0x40 && code <= 0x7e) return index + 1;
54
+ }
55
+ return text.length;
56
+ }
57
+
58
+ function sanitize(text) {
59
+ let output = "";
60
+ for (let index = 0; index < text.length;) {
61
+ const code = text.charCodeAt(index);
62
+ if (text[index] === "\u001b") {
63
+ const next = text[index + 1];
64
+ if (next === "]" || next === "P" || next === "^" || next === "_" || next === "X") {
65
+ index = consumeStringControl(text, index + 2);
66
+ } else if (next === "[") {
67
+ index = consumeCsi(text, index + 2);
68
+ } else {
69
+ index += Math.min(2, text.length - index);
70
+ }
71
+ continue;
72
+ }
73
+ if ([0x90, 0x98, 0x9d, 0x9e, 0x9f].includes(code)) {
74
+ index = consumeStringControl(text, index + 1);
75
+ continue;
76
+ }
77
+ if (code === 0x9b) {
78
+ index = consumeCsi(text, index + 1);
79
+ continue;
80
+ }
81
+ if ((code >= 0 && code < 0x20 && code !== 0x0a && code !== 0x09) || (code >= 0x7f && code <= 0x9f)) {
82
+ index += 1;
83
+ continue;
84
+ }
85
+ output += text[index];
86
+ index += 1;
87
+ }
88
+ return output;
89
+ }
90
+
91
+ function inspectRow(text, ambiguousWidth) {
92
+ const graphemes = [...segmenter.segment(text)].map(({ segment }) => ({
93
+ text: segment,
94
+ width: graphemeWidth(segment, ambiguousWidth)
95
+ }));
96
+ return { graphemes, text, width: graphemes.reduce((total, item) => total + item.width, 0) };
97
+ }
98
+
99
+ function borderFindings(rows) {
100
+ const grid = rows.map((row) => {
101
+ const cells = new Map();
102
+ let column = 0;
103
+ for (const grapheme of row.graphemes) {
104
+ if (borderConnections[grapheme.text]) cells.set(column, grapheme.text);
105
+ column += grapheme.width;
106
+ }
107
+ return cells;
108
+ });
109
+ const directions = Object.freeze({
110
+ L: [0, -1, "R"],
111
+ R: [0, 1, "L"],
112
+ U: [-1, 0, "D"],
113
+ D: [1, 0, "U"]
114
+ });
115
+ const broken = [];
116
+ for (let row = 0; row < grid.length; row += 1) {
117
+ for (const [column, character] of grid[row]) {
118
+ const connections = borderConnections[character];
119
+ for (const direction of connections) {
120
+ const [dr, dc, opposite] = directions[direction];
121
+ const neighbor = grid[row + dr]?.get(column + dc);
122
+ if (!(borderConnections[neighbor]?.includes(opposite))) {
123
+ broken.push({ column, direction, row });
124
+ }
125
+ }
126
+ }
127
+ }
128
+ const bordered = rows.filter((_, index) => grid[index].size > 0);
129
+ const widthMismatch = bordered.length > 0 && bordered.some((row) => row.width !== bordered[0].width);
130
+ if (broken.length === 0 && !widthMismatch) return [];
131
+ return [{
132
+ code: "TUI_BORDER_TOPOLOGY_BROKEN",
133
+ evidence: { broken_edges: broken.slice(0, 100), width_mismatch: widthMismatch },
134
+ severity: "high"
135
+ }];
136
+ }
137
+
138
+ export function inspectTui(text, { ambiguousWidth = 1 } = {}) {
139
+ if (typeof text !== "string") throw new TypeError("TUI input must be a string");
140
+ if (ambiguousWidth !== 1 && ambiguousWidth !== 2) throw new Error("ambiguousWidth must be 1 or 2");
141
+ const sanitized = sanitize(text);
142
+ const rows = sanitized.split("\n").map((row) => inspectRow(row, ambiguousWidth));
143
+ return {
144
+ controlSequencesInert: !/[\u001b\u0000-\u0008\u000b-\u001f\u007f-\u009f]/u.test(sanitized),
145
+ findings: borderFindings(rows),
146
+ rows,
147
+ sanitized
148
+ };
149
+ }
@@ -0,0 +1,90 @@
1
+ #!/usr/bin/env node
2
+ import process from "node:process";
3
+ import { pathToFileURL } from "node:url";
4
+ import { readBoundedJsonFile } from "./bounded-json.mjs";
5
+ import { readBoundedJsonStream } from "./stdin-json.mjs";
6
+ import { inspectUiArtifact } from "./artifact.mjs";
7
+ import {
8
+ evaluateCapabilityBlocks,
9
+ evaluateRendererOwnership,
10
+ visualQaBlockedCodes,
11
+ visualQaFailCodes
12
+ } from "./capabilities.mjs";
13
+ import { validateEvidenceManifestText, validateReviewReceiptText } from "./contract-text.mjs";
14
+ import {
15
+ completionConditionsForTier,
16
+ evaluateEvidenceFreshness,
17
+ evaluateTierCompletion,
18
+ validateEvidenceManifest
19
+ } from "./evidence.mjs";
20
+ import {
21
+ canonicalEvidenceManifestBytes,
22
+ evaluateEvidenceManifest,
23
+ hashBytes,
24
+ hashCanonicalValue,
25
+ hashCaptureArtifacts
26
+ } from "./evidence-evaluate.mjs";
27
+ import { inspectPng } from "./png.mjs";
28
+ import { comparePngs, decodePng } from "./png-decode.mjs";
29
+ import {
30
+ validateReviewIndependence,
31
+ validateReviewReceipt
32
+ } from "./review.mjs";
33
+ import { inspectTui } from "./tui.mjs";
34
+
35
+ export {
36
+ completionConditionsForTier,
37
+ comparePngs,
38
+ canonicalEvidenceManifestBytes,
39
+ decodePng,
40
+ evaluateCapabilityBlocks,
41
+ evaluateEvidenceManifest,
42
+ evaluateRendererOwnership,
43
+ hashCanonicalValue,
44
+ hashBytes,
45
+ hashCaptureArtifacts,
46
+ evaluateEvidenceFreshness,
47
+ evaluateTierCompletion,
48
+ inspectPng,
49
+ inspectUiArtifact,
50
+ inspectTui,
51
+ validateReviewIndependence,
52
+ validateReviewReceipt,
53
+ validateReviewReceiptText,
54
+ validateEvidenceManifest,
55
+ validateEvidenceManifestText,
56
+ visualQaBlockedCodes,
57
+ visualQaFailCodes
58
+ };
59
+
60
+ export function readBoundedEvidenceManifestFile(filePath, options) {
61
+ return readBoundedJsonFile(filePath, { ...options, validate: validateEvidenceManifest });
62
+ }
63
+
64
+ export function readBoundedReviewReceiptFile(filePath, options) {
65
+ return readBoundedJsonFile(filePath, { ...options, validate: validateReviewReceipt });
66
+ }
67
+
68
+ export async function runVisualQaCli(argv = process.argv.slice(2)) {
69
+ if (argv.length !== 1) {
70
+ throw new Error("Usage: node visual-qa.mjs <capabilities|ownership|freshness|tier|review|png|tui>");
71
+ }
72
+ const input = await readBoundedJsonStream(process.stdin);
73
+ if (argv[0] === "capabilities") return evaluateCapabilityBlocks(input);
74
+ if (argv[0] === "ownership") return evaluateRendererOwnership(input);
75
+ if (argv[0] === "freshness") return evaluateEvidenceFreshness(input);
76
+ if (argv[0] === "tier") return evaluateTierCompletion(input);
77
+ if (argv[0] === "review") return validateReviewIndependence(input);
78
+ if (argv[0] === "png") return inspectPng(Buffer.from(input.base64, "base64"));
79
+ if (argv[0] === "tui") return inspectTui(input.text, input.options);
80
+ throw new Error(`Unknown visual-QA operation: ${argv[0]}`);
81
+ }
82
+
83
+ if (process.argv[1] !== undefined && pathToFileURL(process.argv[1]).href === import.meta.url) {
84
+ runVisualQaCli()
85
+ .then((output) => process.stdout.write(JSON.stringify(output) + "\n"))
86
+ .catch((error) => {
87
+ process.stderr.write(`visual-qa: ${error instanceof Error ? error.message : String(error)}\n`);
88
+ process.exitCode = 1;
89
+ });
90
+ }
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 llm-wikify contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,18 @@
1
+ # Wikify provenance
2
+
3
+ Ported from the owner source identified by these stable values:
4
+
5
+ - Owner source identifier: `llm-wikify`
6
+ - Owner source commit: `dfe8f8bc372c3bc153dd57697f4a36f366a63e74`
7
+ - Owner source tree: `ca02699317261cf36f9f89e96186728013778da6`
8
+ - Verified public locator: `https://github.com/wjgoarxiv/llm-wikify/tree/dfe8f8bc372c3bc153dd57697f4a36f366a63e74`
9
+ - License: included MIT license, preserved in `LICENSE`
10
+
11
+ The pinned locator identifies the verified public owner source; package integrity does not depend on
12
+ network retrieval. Package integrity is local through the managed manifest, scanner, and actual packed bytes.
13
+
14
+ The LitOpenCode port retains the five command modes and five authored templates. Source tests, product
15
+ docs, examples, installer/TUI/build code, release files, caches, generated distributions, plans,
16
+ session state, and local evidence are excluded. The port connects local inert-source review to
17
+ LitResearch and the existing LitOpenCode review, recap, and handoff surfaces without external-vault
18
+ or host-profile mutation authority.