@litfamily/litcodex 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 (1252) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +293 -0
  3. package/bin/litcodex.js +12 -0
  4. package/dist/auto-update.d.ts +27 -0
  5. package/dist/auto-update.js +106 -0
  6. package/dist/cli-model-route.d.ts +7 -0
  7. package/dist/cli-model-route.js +47 -0
  8. package/dist/cli.d.ts +23 -0
  9. package/dist/cli.js +282 -0
  10. package/dist/config-migration/backup.d.ts +2 -0
  11. package/dist/config-migration/backup.js +42 -0
  12. package/dist/config-migration/catalog.d.ts +23 -0
  13. package/dist/config-migration/catalog.js +108 -0
  14. package/dist/config-migration/cli.d.ts +16 -0
  15. package/dist/config-migration/cli.js +186 -0
  16. package/dist/config-migration/config-file-io.d.ts +11 -0
  17. package/dist/config-migration/config-file-io.js +62 -0
  18. package/dist/config-migration/config-paths.d.ts +4 -0
  19. package/dist/config-migration/config-paths.js +64 -0
  20. package/dist/config-migration/errors.d.ts +11 -0
  21. package/dist/config-migration/errors.js +30 -0
  22. package/dist/config-migration/gpt56-policy.d.ts +53 -0
  23. package/dist/config-migration/gpt56-policy.js +158 -0
  24. package/dist/config-migration/index.d.ts +63 -0
  25. package/dist/config-migration/index.js +208 -0
  26. package/dist/config-migration/multi-agent-v2-guard.d.ts +26 -0
  27. package/dist/config-migration/multi-agent-v2-guard.js +166 -0
  28. package/dist/config-migration/native-default-route.d.ts +9 -0
  29. package/dist/config-migration/native-default-route.js +336 -0
  30. package/dist/config-migration/profile-files.d.ts +11 -0
  31. package/dist/config-migration/profile-files.js +72 -0
  32. package/dist/config-migration/root-settings.d.ts +10 -0
  33. package/dist/config-migration/root-settings.js +144 -0
  34. package/dist/config-migration/state.d.ts +16 -0
  35. package/dist/config-migration/state.js +40 -0
  36. package/dist/config-migration/toml-shape.d.ts +8 -0
  37. package/dist/config-migration/toml-shape.js +141 -0
  38. package/dist/config-migration/unsafe-route-guard.d.ts +1 -0
  39. package/dist/config-migration/unsafe-route-guard.js +17 -0
  40. package/dist/install/agent-routing.d.ts +19 -0
  41. package/dist/install/agent-routing.js +145 -0
  42. package/dist/install/agents-install.d.ts +40 -0
  43. package/dist/install/agents-install.js +211 -0
  44. package/dist/install/auth-mode.d.ts +4 -0
  45. package/dist/install/auth-mode.js +26 -0
  46. package/dist/install/bundled-skill-manifests.d.ts +25 -0
  47. package/dist/install/bundled-skill-manifests.js +25 -0
  48. package/dist/install/bundled-skills.d.ts +7 -0
  49. package/dist/install/bundled-skills.js +70 -0
  50. package/dist/install/capability-preflight-error.d.ts +3 -0
  51. package/dist/install/capability-preflight-error.js +33 -0
  52. package/dist/install/codex-version.d.ts +17 -0
  53. package/dist/install/codex-version.js +37 -0
  54. package/dist/install/codex.d.ts +56 -0
  55. package/dist/install/codex.js +164 -0
  56. package/dist/install/development-marketplace.d.ts +6 -0
  57. package/dist/install/development-marketplace.js +83 -0
  58. package/dist/install/doctor-config.d.ts +4 -0
  59. package/dist/install/doctor-config.js +54 -0
  60. package/dist/install/doctor-render.d.ts +2 -0
  61. package/dist/install/doctor-render.js +72 -0
  62. package/dist/install/doctor.d.ts +12 -0
  63. package/dist/install/doctor.js +223 -0
  64. package/dist/install/errors.d.ts +20 -0
  65. package/dist/install/errors.js +53 -0
  66. package/dist/install/execute.d.ts +56 -0
  67. package/dist/install/execute.js +221 -0
  68. package/dist/install/file-walk.d.ts +33 -0
  69. package/dist/install/file-walk.js +252 -0
  70. package/dist/install/generated-skill-payload-hashes.d.ts +330 -0
  71. package/dist/install/generated-skill-payload-hashes.js +331 -0
  72. package/dist/install/hook-verifier.d.ts +5 -0
  73. package/dist/install/hook-verifier.js +20 -0
  74. package/dist/install/host-capabilities.d.ts +23 -0
  75. package/dist/install/host-capabilities.js +177 -0
  76. package/dist/install/index.d.ts +27 -0
  77. package/dist/install/index.js +403 -0
  78. package/dist/install/install-model-prompt.d.ts +28 -0
  79. package/dist/install/install-model-prompt.js +82 -0
  80. package/dist/install/install-options.d.ts +9 -0
  81. package/dist/install/install-options.js +164 -0
  82. package/dist/install/install-output.d.ts +4 -0
  83. package/dist/install/install-output.js +12 -0
  84. package/dist/install/install-presentation.d.ts +13 -0
  85. package/dist/install/install-presentation.js +165 -0
  86. package/dist/install/install-ui.d.ts +25 -0
  87. package/dist/install/install-ui.js +109 -0
  88. package/dist/install/marketplace-payload.d.ts +10 -0
  89. package/dist/install/marketplace-payload.js +178 -0
  90. package/dist/install/marketplace.d.ts +18 -0
  91. package/dist/install/marketplace.js +74 -0
  92. package/dist/install/package-root.d.ts +13 -0
  93. package/dist/install/package-root.js +25 -0
  94. package/dist/install/plan.d.ts +3 -0
  95. package/dist/install/plan.js +54 -0
  96. package/dist/install/registration.d.ts +8 -0
  97. package/dist/install/registration.js +62 -0
  98. package/dist/install/render-plan.d.ts +3 -0
  99. package/dist/install/render-plan.js +16 -0
  100. package/dist/install/runtime-file-policy.d.ts +2 -0
  101. package/dist/install/runtime-file-policy.js +17 -0
  102. package/dist/install/skill-catalog.d.ts +17 -0
  103. package/dist/install/skill-catalog.js +111 -0
  104. package/dist/install/skill-resource-hashes.d.ts +1 -0
  105. package/dist/install/skill-resource-hashes.js +1 -0
  106. package/dist/install/spinner-motion.d.ts +2 -0
  107. package/dist/install/spinner-motion.js +51 -0
  108. package/dist/install/strict-config-probe.d.ts +14 -0
  109. package/dist/install/strict-config-probe.js +53 -0
  110. package/dist/install/types.d.ts +102 -0
  111. package/dist/install/types.js +5 -0
  112. package/dist/install/uninstall.d.ts +26 -0
  113. package/dist/install/uninstall.js +227 -0
  114. package/dist/postinstall.d.ts +1 -0
  115. package/dist/postinstall.js +35 -0
  116. package/dist/ui-style.d.ts +23 -0
  117. package/dist/ui-style.js +73 -0
  118. package/dist/ui.d.ts +10 -0
  119. package/dist/ui.js +25 -0
  120. package/dist/update-check.d.ts +101 -0
  121. package/dist/update-check.js +502 -0
  122. package/marketplace/.agents/plugins/marketplace.json +17 -0
  123. package/marketplace/plugins/litcodex/.codex-plugin/plugin.json +34 -0
  124. package/marketplace/plugins/litcodex/.mcp.json +1 -0
  125. package/marketplace/plugins/litcodex/assets/logo.png +0 -0
  126. package/marketplace/plugins/litcodex/components/auto-update/dist/auto-update.d.ts +117 -0
  127. package/marketplace/plugins/litcodex/components/auto-update/dist/auto-update.js +640 -0
  128. package/marketplace/plugins/litcodex/components/auto-update/dist/cli.d.ts +2 -0
  129. package/marketplace/plugins/litcodex/components/auto-update/dist/cli.js +103 -0
  130. package/marketplace/plugins/litcodex/components/auto-update/package.json +22 -0
  131. package/marketplace/plugins/litcodex/components/comment-checker/dist/apply-patch.d.ts +7 -0
  132. package/marketplace/plugins/litcodex/components/comment-checker/dist/apply-patch.js +173 -0
  133. package/marketplace/plugins/litcodex/components/comment-checker/dist/cli.d.ts +2 -0
  134. package/marketplace/plugins/litcodex/components/comment-checker/dist/cli.js +10 -0
  135. package/marketplace/plugins/litcodex/components/comment-checker/dist/codex-hook.d.ts +22 -0
  136. package/marketplace/plugins/litcodex/components/comment-checker/dist/codex-hook.js +165 -0
  137. package/marketplace/plugins/litcodex/components/comment-checker/dist/core-values.d.ts +1 -0
  138. package/marketplace/plugins/litcodex/components/comment-checker/dist/core-values.js +1 -0
  139. package/marketplace/plugins/litcodex/components/comment-checker/dist/core.d.ts +5 -0
  140. package/marketplace/plugins/litcodex/components/comment-checker/dist/core.js +4 -0
  141. package/marketplace/plugins/litcodex/components/comment-checker/dist/hook-input.d.ts +6 -0
  142. package/marketplace/plugins/litcodex/components/comment-checker/dist/hook-input.js +10 -0
  143. package/marketplace/plugins/litcodex/components/comment-checker/dist/record.d.ts +2 -0
  144. package/marketplace/plugins/litcodex/components/comment-checker/dist/record.js +11 -0
  145. package/marketplace/plugins/litcodex/components/comment-checker/dist/request-extractor.d.ts +3 -0
  146. package/marketplace/plugins/litcodex/components/comment-checker/dist/request-extractor.js +104 -0
  147. package/marketplace/plugins/litcodex/components/comment-checker/dist/runner.d.ts +26 -0
  148. package/marketplace/plugins/litcodex/components/comment-checker/dist/runner.js +144 -0
  149. package/marketplace/plugins/litcodex/components/comment-checker/dist/types.d.ts +43 -0
  150. package/marketplace/plugins/litcodex/components/comment-checker/dist/types.js +1 -0
  151. package/marketplace/plugins/litcodex/components/comment-checker/package.json +22 -0
  152. package/marketplace/plugins/litcodex/components/git-bash/dist/cli.d.ts +2 -0
  153. package/marketplace/plugins/litcodex/components/git-bash/dist/cli.js +29 -0
  154. package/marketplace/plugins/litcodex/components/git-bash/dist/codex-hook.d.ts +28 -0
  155. package/marketplace/plugins/litcodex/components/git-bash/dist/codex-hook.js +137 -0
  156. package/marketplace/plugins/litcodex/components/git-bash/dist/index.d.ts +1 -0
  157. package/marketplace/plugins/litcodex/components/git-bash/dist/index.js +1 -0
  158. package/marketplace/plugins/litcodex/components/git-bash/package.json +22 -0
  159. package/marketplace/plugins/litcodex/components/lit-loop/agents/litcodex-default.toml +14 -0
  160. package/marketplace/plugins/litcodex/components/lit-loop/agents/litcodex-explorer.toml +81 -0
  161. package/marketplace/plugins/litcodex/components/lit-loop/agents/litcodex-librarian.toml +104 -0
  162. package/marketplace/plugins/litcodex/components/lit-loop/agents/litcodex-litwork-reviewer.toml +41 -0
  163. package/marketplace/plugins/litcodex/components/lit-loop/agents/litcodex-metis.toml +71 -0
  164. package/marketplace/plugins/litcodex/components/lit-loop/agents/litcodex-momus.toml +75 -0
  165. package/marketplace/plugins/litcodex/components/lit-loop/agents/litcodex-plan.toml +193 -0
  166. package/marketplace/plugins/litcodex/components/lit-loop/directive.md +240 -0
  167. package/marketplace/plugins/litcodex/components/lit-loop/directives/browser-drive.md +140 -0
  168. package/marketplace/plugins/litcodex/components/lit-loop/directives/deep-interview.md +250 -0
  169. package/marketplace/plugins/litcodex/components/lit-loop/directives/lit-comprehend.md +247 -0
  170. package/marketplace/plugins/litcodex/components/lit-loop/directives/lit-crucible.md +254 -0
  171. package/marketplace/plugins/litcodex/components/lit-loop/directives/lit-handoff.md +126 -0
  172. package/marketplace/plugins/litcodex/components/lit-loop/directives/lit-init.md +140 -0
  173. package/marketplace/plugins/litcodex/components/lit-loop/directives/lit-plan.md +472 -0
  174. package/marketplace/plugins/litcodex/components/lit-loop/directives/lit-recap.md +209 -0
  175. package/marketplace/plugins/litcodex/components/lit-loop/directives/lit-scientific-visualization.md +144 -0
  176. package/marketplace/plugins/litcodex/components/lit-loop/directives/litgoal.md +231 -0
  177. package/marketplace/plugins/litcodex/components/lit-loop/directives/litresearch.md +218 -0
  178. package/marketplace/plugins/litcodex/components/lit-loop/directives/litwork.md +507 -0
  179. package/marketplace/plugins/litcodex/components/lit-loop/directives/review-work.md +184 -0
  180. package/marketplace/plugins/litcodex/components/lit-loop/directives/skill-observer.md +105 -0
  181. package/marketplace/plugins/litcodex/components/lit-loop/directives/start-work.md +149 -0
  182. package/marketplace/plugins/litcodex/components/lit-loop/dist/_scaffold.d.ts +1 -0
  183. package/marketplace/plugins/litcodex/components/lit-loop/dist/_scaffold.js +3 -0
  184. package/marketplace/plugins/litcodex/components/lit-loop/dist/browser-drive-route.d.ts +7 -0
  185. package/marketplace/plugins/litcodex/components/lit-loop/dist/browser-drive-route.js +13 -0
  186. package/marketplace/plugins/litcodex/components/lit-loop/dist/cli.d.ts +6 -0
  187. package/marketplace/plugins/litcodex/components/lit-loop/dist/cli.js +64 -0
  188. package/marketplace/plugins/litcodex/components/lit-loop/dist/codex-goal-instruction.d.ts +18 -0
  189. package/marketplace/plugins/litcodex/components/lit-loop/dist/codex-goal-instruction.js +146 -0
  190. package/marketplace/plugins/litcodex/components/lit-loop/dist/codex-hook.d.ts +53 -0
  191. package/marketplace/plugins/litcodex/components/lit-loop/dist/codex-hook.js +228 -0
  192. package/marketplace/plugins/litcodex/components/lit-loop/dist/directive.d.ts +43 -0
  193. package/marketplace/plugins/litcodex/components/lit-loop/dist/directive.js +139 -0
  194. package/marketplace/plugins/litcodex/components/lit-loop/dist/goal-status.d.ts +14 -0
  195. package/marketplace/plugins/litcodex/components/lit-loop/dist/goal-status.js +32 -0
  196. package/marketplace/plugins/litcodex/components/lit-loop/dist/guards.d.ts +73 -0
  197. package/marketplace/plugins/litcodex/components/lit-loop/dist/guards.js +215 -0
  198. package/marketplace/plugins/litcodex/components/lit-loop/dist/handoff-route.d.ts +5 -0
  199. package/marketplace/plugins/litcodex/components/lit-loop/dist/handoff-route.js +11 -0
  200. package/marketplace/plugins/litcodex/components/lit-loop/dist/hook-cli.d.ts +19 -0
  201. package/marketplace/plugins/litcodex/components/lit-loop/dist/hook-cli.js +189 -0
  202. package/marketplace/plugins/litcodex/components/lit-loop/dist/lit-mark.d.ts +20 -0
  203. package/marketplace/plugins/litcodex/components/lit-loop/dist/lit-mark.js +138 -0
  204. package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-cli.d.ts +19 -0
  205. package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-cli.js +109 -0
  206. package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-doctor-render.d.ts +7 -0
  207. package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-doctor-render.js +39 -0
  208. package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-doctor-types.d.ts +52 -0
  209. package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-doctor-types.js +7 -0
  210. package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-doctor.d.ts +34 -0
  211. package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-doctor.js +336 -0
  212. package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-errors.d.ts +15 -0
  213. package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-errors.js +45 -0
  214. package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-handlers.d.ts +18 -0
  215. package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-handlers.js +367 -0
  216. package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-model.d.ts +51 -0
  217. package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-model.js +166 -0
  218. package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-stdout.d.ts +6 -0
  219. package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-stdout.js +11 -0
  220. package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-types.d.ts +26 -0
  221. package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-types.js +8 -0
  222. package/marketplace/plugins/litcodex/components/lit-loop/dist/markers.d.ts +33 -0
  223. package/marketplace/plugins/litcodex/components/lit-loop/dist/markers.js +38 -0
  224. package/marketplace/plugins/litcodex/components/lit-loop/dist/modes.d.ts +29 -0
  225. package/marketplace/plugins/litcodex/components/lit-loop/dist/modes.js +176 -0
  226. package/marketplace/plugins/litcodex/components/lit-loop/dist/plan-persistence.d.ts +20 -0
  227. package/marketplace/plugins/litcodex/components/lit-loop/dist/plan-persistence.js +147 -0
  228. package/marketplace/plugins/litcodex/components/lit-loop/dist/redaction.d.ts +3 -0
  229. package/marketplace/plugins/litcodex/components/lit-loop/dist/redaction.js +177 -0
  230. package/marketplace/plugins/litcodex/components/lit-loop/dist/scientific-visualization-route.d.ts +7 -0
  231. package/marketplace/plugins/litcodex/components/lit-loop/dist/scientific-visualization-route.js +15 -0
  232. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/apply.d.ts +16 -0
  233. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/apply.js +227 -0
  234. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/config.d.ts +13 -0
  235. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/config.js +12 -0
  236. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/curator.d.ts +14 -0
  237. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/curator.js +112 -0
  238. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/hook.d.ts +19 -0
  239. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/hook.js +435 -0
  240. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/ownership.d.ts +6 -0
  241. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/ownership.js +145 -0
  242. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/paths.d.ts +18 -0
  243. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/paths.js +43 -0
  244. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/review.d.ts +28 -0
  245. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/review.js +702 -0
  246. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/store.d.ts +32 -0
  247. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/store.js +667 -0
  248. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/transaction.d.ts +26 -0
  249. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/transaction.js +524 -0
  250. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/types.d.ts +81 -0
  251. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/types.js +246 -0
  252. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/usage.d.ts +6 -0
  253. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/usage.js +119 -0
  254. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop-cli.d.ts +8 -0
  255. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop-cli.js +111 -0
  256. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-mention-scope.d.ts +4 -0
  257. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-mention-scope.js +69 -0
  258. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-observer-cli.d.ts +3 -0
  259. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-observer-cli.js +116 -0
  260. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-observer-route.d.ts +6 -0
  261. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-observer-route.js +12 -0
  262. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-observer.d.ts +18 -0
  263. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-observer.js +946 -0
  264. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-renames.d.ts +20 -0
  265. package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-renames.js +43 -0
  266. package/marketplace/plugins/litcodex/components/lit-loop/dist/state-paths.d.ts +43 -0
  267. package/marketplace/plugins/litcodex/components/lit-loop/dist/state-paths.js +121 -0
  268. package/marketplace/plugins/litcodex/components/lit-loop/dist/state-store.d.ts +40 -0
  269. package/marketplace/plugins/litcodex/components/lit-loop/dist/state-store.js +471 -0
  270. package/marketplace/plugins/litcodex/components/lit-loop/dist/state-types.d.ts +121 -0
  271. package/marketplace/plugins/litcodex/components/lit-loop/dist/state-types.js +67 -0
  272. package/marketplace/plugins/litcodex/components/lit-loop/dist/trigger.d.ts +62 -0
  273. package/marketplace/plugins/litcodex/components/lit-loop/dist/trigger.js +277 -0
  274. package/marketplace/plugins/litcodex/components/lit-loop/package.json +33 -0
  275. package/marketplace/plugins/litcodex/components/lsp/dist/cli.d.ts +2 -0
  276. package/marketplace/plugins/litcodex/components/lsp/dist/cli.js +48 -0
  277. package/marketplace/plugins/litcodex/components/lsp/dist/codex-hook.d.ts +18 -0
  278. package/marketplace/plugins/litcodex/components/lsp/dist/codex-hook.js +53 -0
  279. package/marketplace/plugins/litcodex/components/lsp/package.json +22 -0
  280. package/marketplace/plugins/litcodex/components/rules/bundled-rules/baseline-discipline.md +53 -0
  281. package/marketplace/plugins/litcodex/components/rules/bundled-rules/build-decision-gate.md +20 -0
  282. package/marketplace/plugins/litcodex/components/rules/bundled-rules/windows-git-bash.md +10 -0
  283. package/marketplace/plugins/litcodex/components/rules/dist/cli.d.ts +2 -0
  284. package/marketplace/plugins/litcodex/components/rules/dist/cli.js +148 -0
  285. package/marketplace/plugins/litcodex/components/rules/dist/codex-hook-options.d.ts +5 -0
  286. package/marketplace/plugins/litcodex/components/rules/dist/codex-hook-options.js +1 -0
  287. package/marketplace/plugins/litcodex/components/rules/dist/codex-hook.d.ts +47 -0
  288. package/marketplace/plugins/litcodex/components/rules/dist/codex-hook.js +137 -0
  289. package/marketplace/plugins/litcodex/components/rules/dist/config.d.ts +2 -0
  290. package/marketplace/plugins/litcodex/components/rules/dist/config.js +99 -0
  291. package/marketplace/plugins/litcodex/components/rules/dist/context-pressure.d.ts +2 -0
  292. package/marketplace/plugins/litcodex/components/rules/dist/context-pressure.js +26 -0
  293. package/marketplace/plugins/litcodex/components/rules/dist/debug-log.d.ts +8 -0
  294. package/marketplace/plugins/litcodex/components/rules/dist/debug-log.js +36 -0
  295. package/marketplace/plugins/litcodex/components/rules/dist/deliverable-hedge-guard.d.ts +36 -0
  296. package/marketplace/plugins/litcodex/components/rules/dist/deliverable-hedge-guard.js +434 -0
  297. package/marketplace/plugins/litcodex/components/rules/dist/dynamic-target-fingerprints.d.ts +7 -0
  298. package/marketplace/plugins/litcodex/components/rules/dist/dynamic-target-fingerprints.js +65 -0
  299. package/marketplace/plugins/litcodex/components/rules/dist/event-budget.d.ts +7 -0
  300. package/marketplace/plugins/litcodex/components/rules/dist/event-budget.js +28 -0
  301. package/marketplace/plugins/litcodex/components/rules/dist/hook-output.d.ts +3 -0
  302. package/marketplace/plugins/litcodex/components/rules/dist/hook-output.js +24 -0
  303. package/marketplace/plugins/litcodex/components/rules/dist/model-metadata.d.ts +14 -0
  304. package/marketplace/plugins/litcodex/components/rules/dist/model-metadata.js +101 -0
  305. package/marketplace/plugins/litcodex/components/rules/dist/output-style-injection.d.ts +7 -0
  306. package/marketplace/plugins/litcodex/components/rules/dist/output-style-injection.js +53 -0
  307. package/marketplace/plugins/litcodex/components/rules/dist/path-utils.d.ts +4 -0
  308. package/marketplace/plugins/litcodex/components/rules/dist/path-utils.js +24 -0
  309. package/marketplace/plugins/litcodex/components/rules/dist/persistent-cache.d.ts +14 -0
  310. package/marketplace/plugins/litcodex/components/rules/dist/persistent-cache.js +180 -0
  311. package/marketplace/plugins/litcodex/components/rules/dist/post-compact-budget.d.ts +8 -0
  312. package/marketplace/plugins/litcodex/components/rules/dist/post-compact-budget.js +103 -0
  313. package/marketplace/plugins/litcodex/components/rules/dist/post-compact-claim.d.ts +4 -0
  314. package/marketplace/plugins/litcodex/components/rules/dist/post-compact-claim.js +6 -0
  315. package/marketplace/plugins/litcodex/components/rules/dist/post-compact-directive.d.ts +2 -0
  316. package/marketplace/plugins/litcodex/components/rules/dist/post-compact-directive.js +55 -0
  317. package/marketplace/plugins/litcodex/components/rules/dist/post-compact-state.d.ts +13 -0
  318. package/marketplace/plugins/litcodex/components/rules/dist/post-compact-state.js +29 -0
  319. package/marketplace/plugins/litcodex/components/rules/dist/rules/cache.d.ts +9 -0
  320. package/marketplace/plugins/litcodex/components/rules/dist/rules/cache.js +51 -0
  321. package/marketplace/plugins/litcodex/components/rules/dist/rules/constants.d.ts +70 -0
  322. package/marketplace/plugins/litcodex/components/rules/dist/rules/constants.js +100 -0
  323. package/marketplace/plugins/litcodex/components/rules/dist/rules/engine-dynamic-cache.d.ts +5 -0
  324. package/marketplace/plugins/litcodex/components/rules/dist/rules/engine-dynamic-cache.js +60 -0
  325. package/marketplace/plugins/litcodex/components/rules/dist/rules/engine-dynamic-loader.d.ts +6 -0
  326. package/marketplace/plugins/litcodex/components/rules/dist/rules/engine-dynamic-loader.js +61 -0
  327. package/marketplace/plugins/litcodex/components/rules/dist/rules/engine-loader.d.ts +7 -0
  328. package/marketplace/plugins/litcodex/components/rules/dist/rules/engine-loader.js +60 -0
  329. package/marketplace/plugins/litcodex/components/rules/dist/rules/engine-paths.d.ts +11 -0
  330. package/marketplace/plugins/litcodex/components/rules/dist/rules/engine-paths.js +75 -0
  331. package/marketplace/plugins/litcodex/components/rules/dist/rules/engine-static-loader.d.ts +6 -0
  332. package/marketplace/plugins/litcodex/components/rules/dist/rules/engine-static-loader.js +29 -0
  333. package/marketplace/plugins/litcodex/components/rules/dist/rules/engine-types.d.ts +47 -0
  334. package/marketplace/plugins/litcodex/components/rules/dist/rules/engine-types.js +1 -0
  335. package/marketplace/plugins/litcodex/components/rules/dist/rules/engine.d.ts +5 -0
  336. package/marketplace/plugins/litcodex/components/rules/dist/rules/engine.js +90 -0
  337. package/marketplace/plugins/litcodex/components/rules/dist/rules/errors.d.ts +6 -0
  338. package/marketplace/plugins/litcodex/components/rules/dist/rules/errors.js +12 -0
  339. package/marketplace/plugins/litcodex/components/rules/dist/rules/finder-cache.d.ts +14 -0
  340. package/marketplace/plugins/litcodex/components/rules/dist/rules/finder-cache.js +51 -0
  341. package/marketplace/plugins/litcodex/components/rules/dist/rules/finder-paths.d.ts +6 -0
  342. package/marketplace/plugins/litcodex/components/rules/dist/rules/finder-paths.js +33 -0
  343. package/marketplace/plugins/litcodex/components/rules/dist/rules/finder-sources.d.ts +5 -0
  344. package/marketplace/plugins/litcodex/components/rules/dist/rules/finder-sources.js +39 -0
  345. package/marketplace/plugins/litcodex/components/rules/dist/rules/finder.d.ts +28 -0
  346. package/marketplace/plugins/litcodex/components/rules/dist/rules/finder.js +146 -0
  347. package/marketplace/plugins/litcodex/components/rules/dist/rules/formatter.d.ts +13 -0
  348. package/marketplace/plugins/litcodex/components/rules/dist/rules/formatter.js +156 -0
  349. package/marketplace/plugins/litcodex/components/rules/dist/rules/matcher.d.ts +18 -0
  350. package/marketplace/plugins/litcodex/components/rules/dist/rules/matcher.js +93 -0
  351. package/marketplace/plugins/litcodex/components/rules/dist/rules/ordering.d.ts +3 -0
  352. package/marketplace/plugins/litcodex/components/rules/dist/rules/ordering.js +27 -0
  353. package/marketplace/plugins/litcodex/components/rules/dist/rules/parser-frontmatter.d.ts +7 -0
  354. package/marketplace/plugins/litcodex/components/rules/dist/rules/parser-frontmatter.js +30 -0
  355. package/marketplace/plugins/litcodex/components/rules/dist/rules/parser-yaml.d.ts +2 -0
  356. package/marketplace/plugins/litcodex/components/rules/dist/rules/parser-yaml.js +237 -0
  357. package/marketplace/plugins/litcodex/components/rules/dist/rules/parser.d.ts +3 -0
  358. package/marketplace/plugins/litcodex/components/rules/dist/rules/parser.js +31 -0
  359. package/marketplace/plugins/litcodex/components/rules/dist/rules/plugin-root.d.ts +1 -0
  360. package/marketplace/plugins/litcodex/components/rules/dist/rules/plugin-root.js +48 -0
  361. package/marketplace/plugins/litcodex/components/rules/dist/rules/project-root.d.ts +1 -0
  362. package/marketplace/plugins/litcodex/components/rules/dist/rules/project-root.js +23 -0
  363. package/marketplace/plugins/litcodex/components/rules/dist/rules/scanner.d.ts +14 -0
  364. package/marketplace/plugins/litcodex/components/rules/dist/rules/scanner.js +111 -0
  365. package/marketplace/plugins/litcodex/components/rules/dist/rules/sources.d.ts +3 -0
  366. package/marketplace/plugins/litcodex/components/rules/dist/rules/sources.js +9 -0
  367. package/marketplace/plugins/litcodex/components/rules/dist/rules/truncator.d.ts +19 -0
  368. package/marketplace/plugins/litcodex/components/rules/dist/rules/truncator.js +62 -0
  369. package/marketplace/plugins/litcodex/components/rules/dist/rules/types.d.ts +126 -0
  370. package/marketplace/plugins/litcodex/components/rules/dist/rules/types.js +8 -0
  371. package/marketplace/plugins/litcodex/components/rules/dist/rules-engine-factory.d.ts +6 -0
  372. package/marketplace/plugins/litcodex/components/rules/dist/rules-engine-factory.js +20 -0
  373. package/marketplace/plugins/litcodex/components/rules/dist/session-state-lock.d.ts +3 -0
  374. package/marketplace/plugins/litcodex/components/rules/dist/session-state-lock.js +41 -0
  375. package/marketplace/plugins/litcodex/components/rules/dist/shell-awareness.d.ts +10 -0
  376. package/marketplace/plugins/litcodex/components/rules/dist/shell-awareness.js +90 -0
  377. package/marketplace/plugins/litcodex/components/rules/dist/stable-file-read.d.ts +18 -0
  378. package/marketplace/plugins/litcodex/components/rules/dist/stable-file-read.js +120 -0
  379. package/marketplace/plugins/litcodex/components/rules/dist/static-injection.d.ts +3 -0
  380. package/marketplace/plugins/litcodex/components/rules/dist/static-injection.js +183 -0
  381. package/marketplace/plugins/litcodex/components/rules/dist/tool-paths.d.ts +6 -0
  382. package/marketplace/plugins/litcodex/components/rules/dist/tool-paths.js +168 -0
  383. package/marketplace/plugins/litcodex/components/rules/dist/transcript-rule-filter.d.ts +4 -0
  384. package/marketplace/plugins/litcodex/components/rules/dist/transcript-rule-filter.js +31 -0
  385. package/marketplace/plugins/litcodex/components/rules/dist/transcript-search.d.ts +5 -0
  386. package/marketplace/plugins/litcodex/components/rules/dist/transcript-search.js +191 -0
  387. package/marketplace/plugins/litcodex/components/rules/node_modules/picomatch/LICENSE +21 -0
  388. package/marketplace/plugins/litcodex/components/rules/node_modules/picomatch/README.md +749 -0
  389. package/marketplace/plugins/litcodex/components/rules/node_modules/picomatch/index.js +17 -0
  390. package/marketplace/plugins/litcodex/components/rules/node_modules/picomatch/lib/constants.js +184 -0
  391. package/marketplace/plugins/litcodex/components/rules/node_modules/picomatch/lib/parse.js +1386 -0
  392. package/marketplace/plugins/litcodex/components/rules/node_modules/picomatch/lib/picomatch.js +349 -0
  393. package/marketplace/plugins/litcodex/components/rules/node_modules/picomatch/lib/scan.js +391 -0
  394. package/marketplace/plugins/litcodex/components/rules/node_modules/picomatch/lib/utils.js +72 -0
  395. package/marketplace/plugins/litcodex/components/rules/node_modules/picomatch/package.json +82 -0
  396. package/marketplace/plugins/litcodex/components/rules/node_modules/picomatch/posix.js +3 -0
  397. package/marketplace/plugins/litcodex/components/rules/package.json +30 -0
  398. package/marketplace/plugins/litcodex/components/start-work-continuation/directive.md +109 -0
  399. package/marketplace/plugins/litcodex/components/start-work-continuation/dist/cli.d.ts +2 -0
  400. package/marketplace/plugins/litcodex/components/start-work-continuation/dist/cli.js +345 -0
  401. package/marketplace/plugins/litcodex/components/start-work-continuation/dist/codex-hook.d.ts +12 -0
  402. package/marketplace/plugins/litcodex/components/start-work-continuation/dist/codex-hook.js +292 -0
  403. package/marketplace/plugins/litcodex/components/start-work-continuation/dist/directive.d.ts +1 -0
  404. package/marketplace/plugins/litcodex/components/start-work-continuation/dist/directive.js +2 -0
  405. package/marketplace/plugins/litcodex/components/start-work-continuation/dist/index.d.ts +11 -0
  406. package/marketplace/plugins/litcodex/components/start-work-continuation/dist/index.js +6 -0
  407. package/marketplace/plugins/litcodex/components/start-work-continuation/dist/lifecycle-store.d.ts +161 -0
  408. package/marketplace/plugins/litcodex/components/start-work-continuation/dist/lifecycle-store.js +1664 -0
  409. package/marketplace/plugins/litcodex/components/start-work-continuation/dist/plan-progress.d.ts +11 -0
  410. package/marketplace/plugins/litcodex/components/start-work-continuation/dist/plan-progress.js +86 -0
  411. package/marketplace/plugins/litcodex/components/start-work-continuation/dist/plan-publisher.d.ts +11 -0
  412. package/marketplace/plugins/litcodex/components/start-work-continuation/dist/plan-publisher.js +183 -0
  413. package/marketplace/plugins/litcodex/components/start-work-continuation/dist/types.d.ts +28 -0
  414. package/marketplace/plugins/litcodex/components/start-work-continuation/dist/types.js +1 -0
  415. package/marketplace/plugins/litcodex/components/start-work-continuation/dist/work-state-reader.d.ts +44 -0
  416. package/marketplace/plugins/litcodex/components/start-work-continuation/dist/work-state-reader.js +67 -0
  417. package/marketplace/plugins/litcodex/components/start-work-continuation/package.json +24 -0
  418. package/marketplace/plugins/litcodex/components/telemetry/dist/cli.d.ts +2 -0
  419. package/marketplace/plugins/litcodex/components/telemetry/dist/cli.js +62 -0
  420. package/marketplace/plugins/litcodex/components/telemetry/dist/codex-hook.d.ts +14 -0
  421. package/marketplace/plugins/litcodex/components/telemetry/dist/codex-hook.js +14 -0
  422. package/marketplace/plugins/litcodex/components/telemetry/dist/provider-cache.d.ts +66 -0
  423. package/marketplace/plugins/litcodex/components/telemetry/dist/provider-cache.js +117 -0
  424. package/marketplace/plugins/litcodex/components/telemetry/package.json +22 -0
  425. package/marketplace/plugins/litcodex/components/wikify-knowledge/dist/cli.d.ts +2 -0
  426. package/marketplace/plugins/litcodex/components/wikify-knowledge/dist/cli.js +131 -0
  427. package/marketplace/plugins/litcodex/components/wikify-knowledge/dist/knowledge.d.ts +72 -0
  428. package/marketplace/plugins/litcodex/components/wikify-knowledge/dist/knowledge.js +623 -0
  429. package/marketplace/plugins/litcodex/components/wikify-knowledge/dist/strict-json.d.ts +2 -0
  430. package/marketplace/plugins/litcodex/components/wikify-knowledge/dist/strict-json.js +94 -0
  431. package/marketplace/plugins/litcodex/components/wikify-knowledge/package.json +22 -0
  432. package/marketplace/plugins/litcodex/hooks/hooks.json +215 -0
  433. package/marketplace/plugins/litcodex/skills/autoconference/LICENSE +21 -0
  434. package/marketplace/plugins/litcodex/skills/autoconference/PROVENANCE.md +23 -0
  435. package/marketplace/plugins/litcodex/skills/autoconference/SKILL.md +139 -0
  436. package/marketplace/plugins/litcodex/skills/autoconference/assets/conference_template.md +76 -0
  437. package/marketplace/plugins/litcodex/skills/autoconference/assets/report_template.md +56 -0
  438. package/marketplace/plugins/litcodex/skills/autoconference/assets/synthesis_template.md +40 -0
  439. package/marketplace/plugins/litcodex/skills/autoconference/references/agent-prompts.md +30 -0
  440. package/marketplace/plugins/litcodex/skills/autoconference/references/conference-protocol.md +21 -0
  441. package/marketplace/plugins/litcodex/skills/autoconference/references/core-principles.md +13 -0
  442. package/marketplace/plugins/litcodex/skills/autoconference/references/family-contract.md +26 -0
  443. package/marketplace/plugins/litcodex/skills/autoconference/references/modes/analyze.md +11 -0
  444. package/marketplace/plugins/litcodex/skills/autoconference/references/modes/core/convergence-guide.md +41 -0
  445. package/marketplace/plugins/litcodex/skills/autoconference/references/modes/core/crash-recovery.md +11 -0
  446. package/marketplace/plugins/litcodex/skills/autoconference/references/modes/core.md +25 -0
  447. package/marketplace/plugins/litcodex/skills/autoconference/references/modes/debate.md +11 -0
  448. package/marketplace/plugins/litcodex/skills/autoconference/references/modes/plan.md +12 -0
  449. package/marketplace/plugins/litcodex/skills/autoconference/references/modes/resume.md +11 -0
  450. package/marketplace/plugins/litcodex/skills/autoconference/references/modes/ship.md +11 -0
  451. package/marketplace/plugins/litcodex/skills/autoconference/references/modes/survey.md +11 -0
  452. package/marketplace/plugins/litcodex/skills/autoconference/references/results-logging.md +12 -0
  453. package/marketplace/plugins/litcodex/skills/autoconference/references/visualization-guide.md +10 -0
  454. package/marketplace/plugins/litcodex/skills/autoconference/scripts/init_conference.py +656 -0
  455. package/marketplace/plugins/litcodex/skills/autoconference/templates/code-performance.md +59 -0
  456. package/marketplace/plugins/litcodex/skills/autoconference/templates/debate-mode.md +50 -0
  457. package/marketplace/plugins/litcodex/skills/autoconference/templates/prompt-optimization.md +58 -0
  458. package/marketplace/plugins/litcodex/skills/autoconference/templates/quick-conference.md +48 -0
  459. package/marketplace/plugins/litcodex/skills/autoconference/templates/research-synthesis.md +56 -0
  460. package/marketplace/plugins/litcodex/skills/autoconference/templates/survey-mode.md +63 -0
  461. package/marketplace/plugins/litcodex/skills/autoresearch/LICENSE +21 -0
  462. package/marketplace/plugins/litcodex/skills/autoresearch/PROVENANCE.md +22 -0
  463. package/marketplace/plugins/litcodex/skills/autoresearch/SKILL.md +142 -0
  464. package/marketplace/plugins/litcodex/skills/autoresearch/assets/report_template.md +52 -0
  465. package/marketplace/plugins/litcodex/skills/autoresearch/assets/research_template.md +38 -0
  466. package/marketplace/plugins/litcodex/skills/autoresearch/assets/results_template.tsv +2 -0
  467. package/marketplace/plugins/litcodex/skills/autoresearch/references/core-principles.md +16 -0
  468. package/marketplace/plugins/litcodex/skills/autoresearch/references/family-contract.md +36 -0
  469. package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/core/evaluator-contract.md +12 -0
  470. package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/core/stuck-detection.md +11 -0
  471. package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/core.md +21 -0
  472. package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/debug/investigation-techniques.md +11 -0
  473. package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/debug.md +11 -0
  474. package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/fix.md +11 -0
  475. package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/learn.md +11 -0
  476. package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/plan.md +14 -0
  477. package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/predict/persona-templates.md +11 -0
  478. package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/predict.md +11 -0
  479. package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/reason.md +11 -0
  480. package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/scenario/dimensions.md +11 -0
  481. package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/scenario.md +11 -0
  482. package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/security/owasp-checklist.md +11 -0
  483. package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/security/stride-model.md +11 -0
  484. package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/security.md +12 -0
  485. package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/ship/type-checklists.md +12 -0
  486. package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/ship.md +11 -0
  487. package/marketplace/plugins/litcodex/skills/autoresearch/references/results-logging.md +12 -0
  488. package/marketplace/plugins/litcodex/skills/autoresearch/references/visualization-guide.md +24 -0
  489. package/marketplace/plugins/litcodex/skills/autoresearch/scripts/init_research.py +401 -0
  490. package/marketplace/plugins/litcodex/skills/autoresearch/scripts/style_presets.py +123 -0
  491. package/marketplace/plugins/litcodex/skills/browser-drive/SKILL.md +206 -0
  492. package/marketplace/plugins/litcodex/skills/browser-drive/agents/openai.yaml +6 -0
  493. package/marketplace/plugins/litcodex/skills/browser-drive/references/snapshot-act-loop.md +48 -0
  494. package/marketplace/plugins/litcodex/skills/browser-drive/scripts/capability-probe.mjs +437 -0
  495. package/marketplace/plugins/litcodex/skills/coding-session-audit/SKILL.md +299 -0
  496. package/marketplace/plugins/litcodex/skills/coding-session-audit/references/continuation-and-handoff.md +206 -0
  497. package/marketplace/plugins/litcodex/skills/coding-session-audit/references/read-only-recipes.md +246 -0
  498. package/marketplace/plugins/litcodex/skills/coding-session-audit/references/session-formats.md +246 -0
  499. package/marketplace/plugins/litcodex/skills/comment-checker/SKILL.md +169 -0
  500. package/marketplace/plugins/litcodex/skills/comment-checker/references/comment-policy.md +83 -0
  501. package/marketplace/plugins/litcodex/skills/debugging/SKILL.md +259 -0
  502. package/marketplace/plugins/litcodex/skills/debugging/references/methodology/00-setup.md +108 -0
  503. package/marketplace/plugins/litcodex/skills/debugging/references/methodology/02-investigate.md +124 -0
  504. package/marketplace/plugins/litcodex/skills/debugging/references/methodology/04-oracle-triple.md +129 -0
  505. package/marketplace/plugins/litcodex/skills/debugging/references/methodology/05-escalate.md +70 -0
  506. package/marketplace/plugins/litcodex/skills/debugging/references/methodology/06-fix.md +116 -0
  507. package/marketplace/plugins/litcodex/skills/debugging/references/methodology/08-qa.md +94 -0
  508. package/marketplace/plugins/litcodex/skills/debugging/references/methodology/09-cleanup.md +164 -0
  509. package/marketplace/plugins/litcodex/skills/debugging/references/methodology/partial-runtime-evidence.md +223 -0
  510. package/marketplace/plugins/litcodex/skills/debugging/references/runtimes/bundled-js-binary.md +415 -0
  511. package/marketplace/plugins/litcodex/skills/debugging/references/runtimes/go.md +252 -0
  512. package/marketplace/plugins/litcodex/skills/debugging/references/runtimes/native-binary.md +484 -0
  513. package/marketplace/plugins/litcodex/skills/debugging/references/runtimes/node.md +260 -0
  514. package/marketplace/plugins/litcodex/skills/debugging/references/runtimes/python.md +248 -0
  515. package/marketplace/plugins/litcodex/skills/debugging/references/runtimes/rust.md +234 -0
  516. package/marketplace/plugins/litcodex/skills/debugging/references/tools/ghidra.md +212 -0
  517. package/marketplace/plugins/litcodex/skills/debugging/references/tools/playwright-cli.md +194 -0
  518. package/marketplace/plugins/litcodex/skills/debugging/references/tools/pwndbg.md +263 -0
  519. package/marketplace/plugins/litcodex/skills/debugging/references/tools/pwntools.md +265 -0
  520. package/marketplace/plugins/litcodex/skills/deep-interview/SKILL.md +339 -0
  521. package/marketplace/plugins/litcodex/skills/deep-interview/agents/openai.yaml +6 -0
  522. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/SKILL.md +62 -0
  523. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ATTRIBUTION.md +217 -0
  524. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/LICENSE +21 -0
  525. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/LICENSE-Apache-2.0.txt +201 -0
  526. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/MANIFEST.json +869 -0
  527. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/PROVENANCE.md +24 -0
  528. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/README.md +248 -0
  529. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/_INDEX.md +191 -0
  530. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/airbnb.md +393 -0
  531. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/airtable.md +92 -0
  532. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/apple.md +250 -0
  533. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/aside.md +209 -0
  534. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/binance.md +348 -0
  535. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/bmw.md +183 -0
  536. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/brutalist-skill.md +92 -0
  537. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/bugatti.md +271 -0
  538. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/cal.md +262 -0
  539. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/claude.md +315 -0
  540. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/clay.md +307 -0
  541. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/clickhouse.md +284 -0
  542. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/clone-from-url.md +65 -0
  543. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/cohere.md +269 -0
  544. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/coinbase.md +132 -0
  545. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/composio.md +310 -0
  546. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/cursor.md +312 -0
  547. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/design-system-architecture.md +244 -0
  548. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/elevenlabs.md +268 -0
  549. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/expo.md +284 -0
  550. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/ferrari.md +317 -0
  551. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/figma.md +223 -0
  552. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/framer.md +249 -0
  553. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/gpt-tasteskill.md +74 -0
  554. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/hashicorp.md +281 -0
  555. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/ibm.md +335 -0
  556. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/image-to-code-skill.md +1228 -0
  557. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/imagegen-brandkit.md +798 -0
  558. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/imagegen-frontend-mobile.md +1465 -0
  559. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/imagegen-frontend-web.md +987 -0
  560. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/intercom.md +149 -0
  561. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/kraken.md +128 -0
  562. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/lamborghini.md +291 -0
  563. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/layout-skill.md +107 -0
  564. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/lazyweb.md +77 -0
  565. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/linear.app.md +370 -0
  566. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/lovable.md +301 -0
  567. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/mastercard.md +368 -0
  568. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/meta.md +369 -0
  569. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/minimalist-skill.md +85 -0
  570. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/minimax.md +260 -0
  571. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/mintlify.md +329 -0
  572. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/miro.md +111 -0
  573. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/mistral.ai.md +264 -0
  574. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/mongodb.md +269 -0
  575. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/nike.md +366 -0
  576. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/notion.md +312 -0
  577. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/nvidia.md +296 -0
  578. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/ollama.md +270 -0
  579. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/opencode.ai.md +284 -0
  580. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/output-skill.md +49 -0
  581. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/pinterest.md +233 -0
  582. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/playstation.md +367 -0
  583. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/posthog.md +259 -0
  584. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/raycast.md +271 -0
  585. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/react-dev-tooling-skill.md +230 -0
  586. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/redesign-skill.md +178 -0
  587. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/renault.md +314 -0
  588. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/replicate.md +264 -0
  589. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/resend.md +306 -0
  590. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/revolut.md +188 -0
  591. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/runwayml.md +247 -0
  592. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/sanity.md +360 -0
  593. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/sentry.md +265 -0
  594. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/shopify.md +353 -0
  595. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/soft-skill.md +98 -0
  596. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/spacex.md +197 -0
  597. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/spotify.md +249 -0
  598. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/starbucks.md +583 -0
  599. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/stitch-design-example.md +121 -0
  600. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/stitch-skill.md +184 -0
  601. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/stripe.md +325 -0
  602. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/supabase.md +258 -0
  603. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/superhuman.md +255 -0
  604. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/taste-skill.md +1206 -0
  605. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/tesla.md +289 -0
  606. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/theverge.md +342 -0
  607. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/together.ai.md +266 -0
  608. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/uber.md +298 -0
  609. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/vercel.md +313 -0
  610. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/vodafone.md +426 -0
  611. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/voltagent.md +326 -0
  612. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/warp.md +256 -0
  613. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/webflow.md +95 -0
  614. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/wired.md +281 -0
  615. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/wise.md +176 -0
  616. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/x.ai.md +260 -0
  617. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/zapier.md +331 -0
  618. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/EVIDENCE.md +97 -0
  619. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/README.md +48 -0
  620. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/UPSTREAM.md +80 -0
  621. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/lane-a-direction.md +64 -0
  622. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/lane-b-execution.md +65 -0
  623. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/lane-c-review.md +65 -0
  624. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/lane-d-memory.md +83 -0
  625. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/orchestration.md +80 -0
  626. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/routing.md +79 -0
  627. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/LICENSE +21 -0
  628. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/agents/accessibility-reviewer.md +83 -0
  629. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/agents/content-writer.md +132 -0
  630. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/agents/design-builder.md +109 -0
  631. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/agents/design-critic.md +89 -0
  632. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/agents/design-lead.md +113 -0
  633. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/agents/design-scout.md +78 -0
  634. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/agents/design-strategist.md +121 -0
  635. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/agents/heuristic-evaluator.md +268 -0
  636. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/agents/inspiration-scout.md +107 -0
  637. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/agents/motion-designer.md +120 -0
  638. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/accessible-content/reference.md +101 -0
  639. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/adaptive-interfaces/reference.md +109 -0
  640. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/cognitive-accessibility/reference.md +107 -0
  641. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/design-debate/reference.md +199 -0
  642. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/design-debt-tracker/reference.md +174 -0
  643. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/design-handoff/reference.md +125 -0
  644. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/design-md/reference.md +106 -0
  645. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/design-retrospective/reference.md +266 -0
  646. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/design-review/reference.md +123 -0
  647. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/design-system-alignment/reference.md +120 -0
  648. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/designpowers-critique/reference.md +164 -0
  649. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/heuristic-evaluation/reference.md +85 -0
  650. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/inclusive-personas/reference.md +98 -0
  651. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/inspiration-scouting/reference.md +165 -0
  652. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/interaction-design/reference.md +122 -0
  653. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/motion-choreography/reference.md +81 -0
  654. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/research-planning/reference.md +96 -0
  655. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/responsive-patterns/reference.md +77 -0
  656. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/synthetic-user-testing/reference.md +192 -0
  657. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/taste-feedback/reference.md +165 -0
  658. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/taste-report/reference.md +78 -0
  659. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/token-architecture/reference.md +75 -0
  660. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/ui-composition/reference.md +117 -0
  661. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/usability-testing/reference.md +78 -0
  662. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/verification-before-shipping/reference.md +125 -0
  663. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/voice-and-tone/reference.md +79 -0
  664. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/writing-design-plans/reference.md +119 -0
  665. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/perfection/README.md +160 -0
  666. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/perfection/react-perf-tooling.md +127 -0
  667. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/README.md +659 -0
  668. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/charts.csv +26 -0
  669. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/colors.csv +162 -0
  670. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/icons.csv +106 -0
  671. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/landing.csv +35 -0
  672. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/products.csv +162 -0
  673. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/react-performance.csv +45 -0
  674. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/astro.csv +54 -0
  675. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/flutter.csv +53 -0
  676. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/html-tailwind.csv +56 -0
  677. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/jetpack-compose.csv +53 -0
  678. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/nextjs.csv +53 -0
  679. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/nuxt-ui.csv +51 -0
  680. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/nuxtjs.csv +59 -0
  681. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/react-native.csv +52 -0
  682. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/react.csv +54 -0
  683. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/shadcn.csv +61 -0
  684. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/svelte.csv +54 -0
  685. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/swiftui.csv +51 -0
  686. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/vue.csv +50 -0
  687. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/styles.csv +85 -0
  688. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/typography.csv +74 -0
  689. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/ui-reasoning.csv +162 -0
  690. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/ux-guidelines.csv +100 -0
  691. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/web-interface.csv +31 -0
  692. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/scripts/core.py +262 -0
  693. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/scripts/design_system.py +1148 -0
  694. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/scripts/search.py +114 -0
  695. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/adaptive-layout.md +94 -0
  696. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/brand-and-imagery.md +77 -0
  697. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/canonical-library.md +36 -0
  698. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/complete-contract.md +353 -0
  699. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/composition.md +90 -0
  700. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/creative-directions.md +89 -0
  701. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/evidence-review.md +127 -0
  702. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/implementation-platforms.md +77 -0
  703. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/inclusive-interface.md +97 -0
  704. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/interaction-motion.md +96 -0
  705. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/operating-lanes.md +110 -0
  706. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/performance-delivery.md +89 -0
  707. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/product-direction.md +101 -0
  708. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/redesign-playbook.md +91 -0
  709. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/system-foundations.md +114 -0
  710. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/taste-direction.md +27 -0
  711. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/visual-language.md +86 -0
  712. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/visual-reconstruction.md +88 -0
  713. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/schemas/design-contract.v1alpha1.json +299 -0
  714. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/schemas/design-contract.v1beta1.json +32 -0
  715. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/schemas/design-contract.v1beta2.json +34 -0
  716. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/scripts/canonical-json.mjs +186 -0
  717. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/scripts/stable-file-read.mjs +201 -0
  718. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/scripts/validate-design-contract.mjs +555 -0
  719. package/marketplace/plugins/litcodex/skills/frontend-ui-ux/scripts/verify-canonical-corpus.mjs +354 -0
  720. package/marketplace/plugins/litcodex/skills/lit-burnoff/SKILL.md +489 -0
  721. package/marketplace/plugins/litcodex/skills/lit-burnoff/references/behavior-preserving-cleanup.md +105 -0
  722. package/marketplace/plugins/litcodex/skills/lit-burnoff-file/SKILL.md +169 -0
  723. package/marketplace/plugins/litcodex/skills/lit-code/SKILL.md +628 -0
  724. package/marketplace/plugins/litcodex/skills/lit-code/references/engineering-risk-signals.md +123 -0
  725. package/marketplace/plugins/litcodex/skills/lit-code/references/go/README.md +90 -0
  726. package/marketplace/plugins/litcodex/skills/lit-code/references/go/backend-stack.md +641 -0
  727. package/marketplace/plugins/litcodex/skills/lit-code/references/go/bootstrap.md +328 -0
  728. package/marketplace/plugins/litcodex/skills/lit-code/references/go/bubbletea-v2.md +360 -0
  729. package/marketplace/plugins/litcodex/skills/lit-code/references/go/cobra-stack.md +468 -0
  730. package/marketplace/plugins/litcodex/skills/lit-code/references/go/concurrency.md +362 -0
  731. package/marketplace/plugins/litcodex/skills/lit-code/references/go/data-modeling.md +329 -0
  732. package/marketplace/plugins/litcodex/skills/lit-code/references/go/error-handling.md +359 -0
  733. package/marketplace/plugins/litcodex/skills/lit-code/references/go/golangci-strict.md +236 -0
  734. package/marketplace/plugins/litcodex/skills/lit-code/references/go/grpc-connect.md +375 -0
  735. package/marketplace/plugins/litcodex/skills/lit-code/references/go/libraries.md +337 -0
  736. package/marketplace/plugins/litcodex/skills/lit-code/references/go/one-liners.md +202 -0
  737. package/marketplace/plugins/litcodex/skills/lit-code/references/go/sqlc-pgx.md +471 -0
  738. package/marketplace/plugins/litcodex/skills/lit-code/references/go/testing.md +467 -0
  739. package/marketplace/plugins/litcodex/skills/lit-code/references/go/type-patterns.md +298 -0
  740. package/marketplace/plugins/litcodex/skills/lit-code/references/observability-contracts.md +124 -0
  741. package/marketplace/plugins/litcodex/skills/lit-code/references/python/README.md +314 -0
  742. package/marketplace/plugins/litcodex/skills/lit-code/references/python/async-anyio.md +442 -0
  743. package/marketplace/plugins/litcodex/skills/lit-code/references/python/data-modeling.md +233 -0
  744. package/marketplace/plugins/litcodex/skills/lit-code/references/python/data-processing.md +133 -0
  745. package/marketplace/plugins/litcodex/skills/lit-code/references/python/error-handling.md +218 -0
  746. package/marketplace/plugins/litcodex/skills/lit-code/references/python/fastapi-stack.md +316 -0
  747. package/marketplace/plugins/litcodex/skills/lit-code/references/python/httpx2-optimization.md +360 -0
  748. package/marketplace/plugins/litcodex/skills/lit-code/references/python/libraries.md +307 -0
  749. package/marketplace/plugins/litcodex/skills/lit-code/references/python/one-liners.md +268 -0
  750. package/marketplace/plugins/litcodex/skills/lit-code/references/python/orjson-stack.md +378 -0
  751. package/marketplace/plugins/litcodex/skills/lit-code/references/python/pydantic-ai.md +285 -0
  752. package/marketplace/plugins/litcodex/skills/lit-code/references/python/pyproject-strict.md +232 -0
  753. package/marketplace/plugins/litcodex/skills/lit-code/references/python/textual-tui.md +201 -0
  754. package/marketplace/plugins/litcodex/skills/lit-code/references/python/type-patterns.md +176 -0
  755. package/marketplace/plugins/litcodex/skills/lit-code/references/rust/README.md +317 -0
  756. package/marketplace/plugins/litcodex/skills/lit-code/references/rust/async-tokio.md +299 -0
  757. package/marketplace/plugins/litcodex/skills/lit-code/references/rust/axum-stack.md +467 -0
  758. package/marketplace/plugins/litcodex/skills/lit-code/references/rust/cargo-strict.md +317 -0
  759. package/marketplace/plugins/litcodex/skills/lit-code/references/rust/clap-stack.md +409 -0
  760. package/marketplace/plugins/litcodex/skills/lit-code/references/rust/concurrency.md +375 -0
  761. package/marketplace/plugins/litcodex/skills/lit-code/references/rust/libraries.md +439 -0
  762. package/marketplace/plugins/litcodex/skills/lit-code/references/rust/one-liners.md +291 -0
  763. package/marketplace/plugins/litcodex/skills/lit-code/references/rust/proptest-insta.md +429 -0
  764. package/marketplace/plugins/litcodex/skills/lit-code/references/rust/type-state.md +354 -0
  765. package/marketplace/plugins/litcodex/skills/lit-code/references/rust/unsafe-discipline.md +250 -0
  766. package/marketplace/plugins/litcodex/skills/lit-code/references/rust/zero-cost-safety.md +527 -0
  767. package/marketplace/plugins/litcodex/skills/lit-code/references/rust-ub/README.md +289 -0
  768. package/marketplace/plugins/litcodex/skills/lit-code/references/rust-ub/miri-sanitizers-loom.md +411 -0
  769. package/marketplace/plugins/litcodex/skills/lit-code/references/rust-ub/ub-taxonomy.md +269 -0
  770. package/marketplace/plugins/litcodex/skills/lit-code/references/typescript/README.md +195 -0
  771. package/marketplace/plugins/litcodex/skills/lit-code/references/typescript/backend-hono.md +672 -0
  772. package/marketplace/plugins/litcodex/skills/lit-code/references/typescript/bootstrap.md +199 -0
  773. package/marketplace/plugins/litcodex/skills/lit-code/references/typescript/data-modeling.md +202 -0
  774. package/marketplace/plugins/litcodex/skills/lit-code/references/typescript/error-handling.md +169 -0
  775. package/marketplace/plugins/litcodex/skills/lit-code/references/typescript/tsconfig-strict.md +152 -0
  776. package/marketplace/plugins/litcodex/skills/lit-code/references/typescript/type-patterns.md +196 -0
  777. package/marketplace/plugins/litcodex/skills/lit-code/scripts/go/check-no-excuse-rules.sh +173 -0
  778. package/marketplace/plugins/litcodex/skills/lit-code/scripts/go/new-project.py +138 -0
  779. package/marketplace/plugins/litcodex/skills/lit-code/scripts/go/templates/.editorconfig +13 -0
  780. package/marketplace/plugins/litcodex/skills/lit-code/scripts/go/templates/.golangci.yml +95 -0
  781. package/marketplace/plugins/litcodex/skills/lit-code/scripts/go/templates/AGENTS.md.tmpl +24 -0
  782. package/marketplace/plugins/litcodex/skills/lit-code/scripts/go/templates/README.md.tmpl +12 -0
  783. package/marketplace/plugins/litcodex/skills/lit-code/scripts/go/templates/Taskfile.yml +40 -0
  784. package/marketplace/plugins/litcodex/skills/lit-code/scripts/go/templates/ci.yml +37 -0
  785. package/marketplace/plugins/litcodex/skills/lit-code/scripts/go/templates/config.go +24 -0
  786. package/marketplace/plugins/litcodex/skills/lit-code/scripts/go/templates/gitignore +15 -0
  787. package/marketplace/plugins/litcodex/skills/lit-code/scripts/go/templates/main.go.tmpl +22 -0
  788. package/marketplace/plugins/litcodex/skills/lit-code/scripts/go/templates/run.go +15 -0
  789. package/marketplace/plugins/litcodex/skills/lit-code/scripts/python/check-no-excuse-rules.py +687 -0
  790. package/marketplace/plugins/litcodex/skills/lit-code/scripts/python/new-project.py +172 -0
  791. package/marketplace/plugins/litcodex/skills/lit-code/scripts/python/new-script.py +116 -0
  792. package/marketplace/plugins/litcodex/skills/lit-code/scripts/rust/check-no-excuse-rules.py +296 -0
  793. package/marketplace/plugins/litcodex/skills/lit-code/scripts/rust/check-no-excuse-rules.sh +158 -0
  794. package/marketplace/plugins/litcodex/skills/lit-code/scripts/rust/new-project.py +175 -0
  795. package/marketplace/plugins/litcodex/skills/lit-code/scripts/typescript/check-no-excuse-rules.ts +344 -0
  796. package/marketplace/plugins/litcodex/skills/lit-code/scripts/typescript/new-project.ts +174 -0
  797. package/marketplace/plugins/litcodex/skills/lit-commit/SKILL.md +254 -0
  798. package/marketplace/plugins/litcodex/skills/lit-commit/agents/openai.yaml +13 -0
  799. package/marketplace/plugins/litcodex/skills/lit-commit/references/safe-git-operations.md +123 -0
  800. package/marketplace/plugins/litcodex/skills/lit-comprehend/SKILL.md +472 -0
  801. package/marketplace/plugins/litcodex/skills/lit-comprehend/agents/openai.yaml +6 -0
  802. package/marketplace/plugins/litcodex/skills/lit-comprehend/assets/explainer-scaffold.html +231 -0
  803. package/marketplace/plugins/litcodex/skills/lit-comprehend/references/artifact-template.md +211 -0
  804. package/marketplace/plugins/litcodex/skills/lit-comprehend/references/micro-worlds.md +190 -0
  805. package/marketplace/plugins/litcodex/skills/lit-comprehend/scripts/verify-explainer.ts +409 -0
  806. package/marketplace/plugins/litcodex/skills/lit-crucible/SKILL.md +321 -0
  807. package/marketplace/plugins/litcodex/skills/lit-crucible/agents/openai.yaml +6 -0
  808. package/marketplace/plugins/litcodex/skills/lit-crucible/references/adversarial-workflow.md +142 -0
  809. package/marketplace/plugins/litcodex/skills/lit-fetch/SKILL.md +326 -0
  810. package/marketplace/plugins/litcodex/skills/lit-fetch/references/ab-eval.md +36 -0
  811. package/marketplace/plugins/litcodex/skills/lit-fetch/references/discovery-evidence.md +200 -0
  812. package/marketplace/plugins/litcodex/skills/lit-fetch/references/workflow.md +137 -0
  813. package/marketplace/plugins/litcodex/skills/lit-fetch/scripts/lib/fetch.mjs +122 -0
  814. package/marketplace/plugins/litcodex/skills/lit-fetch/scripts/lib/reader.mjs +115 -0
  815. package/marketplace/plugins/litcodex/skills/lit-fetch/scripts/lib/redaction.mjs +53 -0
  816. package/marketplace/plugins/litcodex/skills/lit-fetch/scripts/lib/report.mjs +190 -0
  817. package/marketplace/plugins/litcodex/skills/lit-fetch/scripts/lib/routes.mjs +56 -0
  818. package/marketplace/plugins/litcodex/skills/lit-fetch/scripts/lib/safety.mjs +165 -0
  819. package/marketplace/plugins/litcodex/skills/lit-fetch/scripts/lib/validate.mjs +189 -0
  820. package/marketplace/plugins/litcodex/skills/lit-fetch/scripts/read-public-page.mjs +61 -0
  821. package/marketplace/plugins/litcodex/skills/lit-handoff/SKILL.md +231 -0
  822. package/marketplace/plugins/litcodex/skills/lit-init/SKILL.md +474 -0
  823. package/marketplace/plugins/litcodex/skills/lit-init/agents/openai.yaml +6 -0
  824. package/marketplace/plugins/litcodex/skills/lit-init/references/deep-repository-map.md +116 -0
  825. package/marketplace/plugins/litcodex/skills/lit-korean/SKILL.md +206 -0
  826. package/marketplace/plugins/litcodex/skills/lit-korean/references/prompt-injection-handling.md +23 -0
  827. package/marketplace/plugins/litcodex/skills/lit-korean/references/quick-rules.md +38 -0
  828. package/marketplace/plugins/litcodex/skills/lit-korean/references/safety-checklist.md +38 -0
  829. package/marketplace/plugins/litcodex/skills/lit-loop/.gitkeep +0 -0
  830. package/marketplace/plugins/litcodex/skills/lit-loop/SKILL.md +202 -0
  831. package/marketplace/plugins/litcodex/skills/lit-loop/agents/openai.yaml +9 -0
  832. package/marketplace/plugins/litcodex/skills/lit-loop/references/full-workflow.md +290 -0
  833. package/marketplace/plugins/litcodex/skills/lit-plan/SKILL.md +384 -0
  834. package/marketplace/plugins/litcodex/skills/lit-plan/agents/openai.yaml +6 -0
  835. package/marketplace/plugins/litcodex/skills/lit-plan/references/full-workflow.md +188 -0
  836. package/marketplace/plugins/litcodex/skills/lit-plan/references/intent-clear.md +67 -0
  837. package/marketplace/plugins/litcodex/skills/lit-plan/references/intent-unclear.md +88 -0
  838. package/marketplace/plugins/litcodex/skills/lit-recap/SKILL.md +222 -0
  839. package/marketplace/plugins/litcodex/skills/lit-recap/agents/openai.yaml +6 -0
  840. package/marketplace/plugins/litcodex/skills/lit-scientific-visualization/SKILL.md +255 -0
  841. package/marketplace/plugins/litcodex/skills/lit-scientific-visualization/agents/openai.yaml +6 -0
  842. package/marketplace/plugins/litcodex/skills/lit-scientific-visualization/scripts/dependency-preflight.py +233 -0
  843. package/marketplace/plugins/litcodex/skills/lit-team/SKILL.md +190 -0
  844. package/marketplace/plugins/litcodex/skills/lit-team/references/team-orchestration.md +147 -0
  845. package/marketplace/plugins/litcodex/skills/lit-team/scripts/owner-lock.mjs +82 -0
  846. package/marketplace/plugins/litcodex/skills/lit-team/scripts/team-guide.mjs +31 -0
  847. package/marketplace/plugins/litcodex/skills/lit-team/scripts/team-state.mjs +262 -0
  848. package/marketplace/plugins/litcodex/skills/lit-team/scripts/team.mjs +145 -0
  849. package/marketplace/plugins/litcodex/skills/litcodex-contribute-bug-fix/SKILL.md +386 -0
  850. package/marketplace/plugins/litcodex/skills/litcodex-contribute-bug-fix/agents/openai.yaml +12 -0
  851. package/marketplace/plugins/litcodex/skills/litcodex-contribute-bug-fix/scripts/create-pr-body.mjs +107 -0
  852. package/marketplace/plugins/litcodex/skills/litcodex-doctor/SKILL.md +322 -0
  853. package/marketplace/plugins/litcodex/skills/litcodex-doctor/agents/openai.yaml +11 -0
  854. package/marketplace/plugins/litcodex/skills/litcodex-report-bug/SKILL.md +429 -0
  855. package/marketplace/plugins/litcodex/skills/litcodex-report-bug/agents/openai.yaml +10 -0
  856. package/marketplace/plugins/litcodex/skills/litgoal/SKILL.md +209 -0
  857. package/marketplace/plugins/litcodex/skills/litgoal/agents/openai.yaml +6 -0
  858. package/marketplace/plugins/litcodex/skills/litresearch/SKILL.md +572 -0
  859. package/marketplace/plugins/litcodex/skills/litresearch/references/research-operations.md +158 -0
  860. package/marketplace/plugins/litcodex/skills/litwork/SKILL.md +238 -0
  861. package/marketplace/plugins/litcodex/skills/litwork/references/delivery-playbook.md +228 -0
  862. package/marketplace/plugins/litcodex/skills/lsp/SKILL.md +193 -0
  863. package/marketplace/plugins/litcodex/skills/lsp/references/runtime-triage.md +153 -0
  864. package/marketplace/plugins/litcodex/skills/lsp-setup/SKILL.md +326 -0
  865. package/marketplace/plugins/litcodex/skills/lsp-setup/references/bash/README.md +60 -0
  866. package/marketplace/plugins/litcodex/skills/lsp-setup/references/c-cpp/README.md +61 -0
  867. package/marketplace/plugins/litcodex/skills/lsp-setup/references/csharp/README.md +71 -0
  868. package/marketplace/plugins/litcodex/skills/lsp-setup/references/dart/README.md +48 -0
  869. package/marketplace/plugins/litcodex/skills/lsp-setup/references/elixir/README.md +51 -0
  870. package/marketplace/plugins/litcodex/skills/lsp-setup/references/go/README.md +57 -0
  871. package/marketplace/plugins/litcodex/skills/lsp-setup/references/haskell/README.md +57 -0
  872. package/marketplace/plugins/litcodex/skills/lsp-setup/references/java/README.md +57 -0
  873. package/marketplace/plugins/litcodex/skills/lsp-setup/references/julia/README.md +60 -0
  874. package/marketplace/plugins/litcodex/skills/lsp-setup/references/kotlin/README.md +59 -0
  875. package/marketplace/plugins/litcodex/skills/lsp-setup/references/lua/README.md +66 -0
  876. package/marketplace/plugins/litcodex/skills/lsp-setup/references/php/README.md +62 -0
  877. package/marketplace/plugins/litcodex/skills/lsp-setup/references/python/README.md +71 -0
  878. package/marketplace/plugins/litcodex/skills/lsp-setup/references/ruby/README.md +53 -0
  879. package/marketplace/plugins/litcodex/skills/lsp-setup/references/rust/README.md +59 -0
  880. package/marketplace/plugins/litcodex/skills/lsp-setup/references/swift/README.md +51 -0
  881. package/marketplace/plugins/litcodex/skills/lsp-setup/references/terraform/README.md +62 -0
  882. package/marketplace/plugins/litcodex/skills/lsp-setup/references/typescript/README.md +77 -0
  883. package/marketplace/plugins/litcodex/skills/lsp-setup/references/yaml/README.md +70 -0
  884. package/marketplace/plugins/litcodex/skills/lsp-setup/references/zig/README.md +49 -0
  885. package/marketplace/plugins/litcodex/skills/lsp-setup/scripts/detect-lsp.ts +210 -0
  886. package/marketplace/plugins/litcodex/skills/lsp-setup/scripts/lsp-server-table.ts +175 -0
  887. package/marketplace/plugins/litcodex/skills/lsp-setup/scripts/tsconfig.json +18 -0
  888. package/marketplace/plugins/litcodex/skills/lsp-setup/scripts/verify-lsp.ts +232 -0
  889. package/marketplace/plugins/litcodex/skills/refactor/SKILL.md +358 -0
  890. package/marketplace/plugins/litcodex/skills/refactor/references/safe-change-playbook.md +155 -0
  891. package/marketplace/plugins/litcodex/skills/review-work/SKILL.md +867 -0
  892. package/marketplace/plugins/litcodex/skills/review-work/agents/openai.yaml +6 -0
  893. package/marketplace/plugins/litcodex/skills/review-work/references/blocking-review-gates.md +108 -0
  894. package/marketplace/plugins/litcodex/skills/rules/SKILL.md +181 -0
  895. package/marketplace/plugins/litcodex/skills/rules/references/rule-discovery-and-matching.md +112 -0
  896. package/marketplace/plugins/litcodex/skills/skill-observer/SKILL.md +215 -0
  897. package/marketplace/plugins/litcodex/skills/skill-observer/agents/openai.yaml +6 -0
  898. package/marketplace/plugins/litcodex/skills/skill-observer/references/review-contract.md +77 -0
  899. package/marketplace/plugins/litcodex/skills/start-work/SKILL.md +503 -0
  900. package/marketplace/plugins/litcodex/skills/start-work/references/approved-plan-execution.md +124 -0
  901. package/marketplace/plugins/litcodex/skills/structural-search/SKILL.md +359 -0
  902. package/marketplace/plugins/litcodex/skills/structural-search/references/diagnostics.md +307 -0
  903. package/marketplace/plugins/litcodex/skills/structural-search/references/patterns-and-rules.md +381 -0
  904. package/marketplace/plugins/litcodex/skills/structural-search/references/rewrite-safety.md +266 -0
  905. package/marketplace/plugins/litcodex/skills/visual-qa/SKILL.md +68 -0
  906. package/marketplace/plugins/litcodex/skills/visual-qa/references/capture-playbook.md +141 -0
  907. package/marketplace/plugins/litcodex/skills/visual-qa/references/complete-contract.md +389 -0
  908. package/marketplace/plugins/litcodex/skills/visual-qa/schemas/design-contract.v1alpha1.json +299 -0
  909. package/marketplace/plugins/litcodex/skills/visual-qa/schemas/design-contract.v1beta1.json +32 -0
  910. package/marketplace/plugins/litcodex/skills/visual-qa/schemas/design-contract.v1beta2.json +34 -0
  911. package/marketplace/plugins/litcodex/skills/visual-qa/schemas/evidence-manifest.v1alpha1.json +117 -0
  912. package/marketplace/plugins/litcodex/skills/visual-qa/schemas/evidence-manifest.v1beta1.json +80 -0
  913. package/marketplace/plugins/litcodex/skills/visual-qa/schemas/review-receipt.v1alpha1.json +57 -0
  914. package/marketplace/plugins/litcodex/skills/visual-qa/scripts/ansi.mjs +71 -0
  915. package/marketplace/plugins/litcodex/skills/visual-qa/scripts/cli.mjs +54 -0
  916. package/marketplace/plugins/litcodex/skills/visual-qa/scripts/east-asian-width.mjs +31 -0
  917. package/marketplace/plugins/litcodex/skills/visual-qa/scripts/entrypoint.mjs +1 -0
  918. package/marketplace/plugins/litcodex/skills/visual-qa/scripts/evidence-bytes.mjs +61 -0
  919. package/marketplace/plugins/litcodex/skills/visual-qa/scripts/image-diff.mjs +63 -0
  920. package/marketplace/plugins/litcodex/skills/visual-qa/scripts/png-crc.mjs +19 -0
  921. package/marketplace/plugins/litcodex/skills/visual-qa/scripts/png-decode.mjs +169 -0
  922. package/marketplace/plugins/litcodex/skills/visual-qa/scripts/strict-input.mjs +241 -0
  923. package/marketplace/plugins/litcodex/skills/visual-qa/scripts/tui-grid.mjs +117 -0
  924. package/marketplace/plugins/litcodex/skills/visual-qa/scripts/types.mjs +7 -0
  925. package/marketplace/plugins/litcodex/skills/visual-qa/scripts/validate-design-contract.mjs +547 -0
  926. package/marketplace/plugins/litcodex/skills/visual-qa/scripts/validate-evidence.mjs +392 -0
  927. package/marketplace/plugins/litcodex/skills/visual-qa/scripts/validate-review-receipt.mjs +79 -0
  928. package/marketplace/plugins/litcodex/skills/wikify/LICENSE +21 -0
  929. package/marketplace/plugins/litcodex/skills/wikify/PROVENANCE.md +20 -0
  930. package/marketplace/plugins/litcodex/skills/wikify/SKILL.md +146 -0
  931. package/marketplace/plugins/litcodex/skills/wikify/assets/home-template.md +44 -0
  932. package/marketplace/plugins/litcodex/skills/wikify/assets/maintenance-report-template.md +46 -0
  933. package/marketplace/plugins/litcodex/skills/wikify/assets/paper-source-note-template.md +137 -0
  934. package/marketplace/plugins/litcodex/skills/wikify/assets/source-note-template.md +45 -0
  935. package/marketplace/plugins/litcodex/skills/wikify/assets/wiki-rules-template.md +117 -0
  936. package/marketplace/plugins/litcodex/skills/wikify/references/family-contract.md +26 -0
  937. package/marketplace/plugins/litcodex/skills/wikify/references/modes/ingest.md +12 -0
  938. package/marketplace/plugins/litcodex/skills/wikify/references/modes/init.md +11 -0
  939. package/marketplace/plugins/litcodex/skills/wikify/references/modes/lint.md +11 -0
  940. package/marketplace/plugins/litcodex/skills/wikify/references/modes/query.md +15 -0
  941. package/marketplace/plugins/litcodex/skills/wikify/references/modes/save.md +17 -0
  942. package/marketplace/plugins/litcodex/vendor/NOTICE +19 -0
  943. package/marketplace/plugins/litcodex/vendor/handoff/SKILL.md +199 -0
  944. package/marketplace/plugins/litcodex/vendor/handoff/evals/evals.json +154 -0
  945. package/marketplace/plugins/litcodex/vendor/handoff/examples/HANDOFF-example-generic-auth-refactor.md +97 -0
  946. package/marketplace/plugins/litcodex/vendor/handoff/templates/HANDOFF.md +121 -0
  947. package/marketplace/plugins/litcodex/vendor/licenses/022_handoff-MIT.txt +21 -0
  948. package/marketplace/plugins/litcodex/vendor/licenses/045_scientific-visualization-MIT.txt +21 -0
  949. package/marketplace/plugins/litcodex/vendor/provenance/022_handoff.md +25 -0
  950. package/marketplace/plugins/litcodex/vendor/provenance/045_scientific-visualization.md +42 -0
  951. package/marketplace/plugins/litcodex/vendor/scientific-visualization/SKILL.md +283 -0
  952. package/marketplace/plugins/litcodex/vendor/scientific-visualization/assets/color_palettes.py +197 -0
  953. package/marketplace/plugins/litcodex/vendor/scientific-visualization/assets/nature.mplstyle +75 -0
  954. package/marketplace/plugins/litcodex/vendor/scientific-visualization/assets/presentation.mplstyle +74 -0
  955. package/marketplace/plugins/litcodex/vendor/scientific-visualization/assets/publication.mplstyle +78 -0
  956. package/marketplace/plugins/litcodex/vendor/scientific-visualization/evals/evals.json +158 -0
  957. package/marketplace/plugins/litcodex/vendor/scientific-visualization/references/color_palettes.md +380 -0
  958. package/marketplace/plugins/litcodex/vendor/scientific-visualization/references/journal_requirements.md +359 -0
  959. package/marketplace/plugins/litcodex/vendor/scientific-visualization/references/matplotlib_examples.md +608 -0
  960. package/marketplace/plugins/litcodex/vendor/scientific-visualization/references/mdanalysis_martini_visualization.md +85 -0
  961. package/marketplace/plugins/litcodex/vendor/scientific-visualization/references/publication_guidelines.md +217 -0
  962. package/marketplace/plugins/litcodex/vendor/scientific-visualization/references/seaborn_for_publications.md +293 -0
  963. package/marketplace/plugins/litcodex/vendor/scientific-visualization/scripts/figure_export.py +238 -0
  964. package/marketplace/plugins/litcodex/vendor/scientific-visualization/scripts/style_presets.py +467 -0
  965. package/marketplace/plugins/litcodex/vendor/scientific-visualization/tests/test_figure_export.py +51 -0
  966. package/marketplace/plugins/litcodex/vendor/scientific-visualization/tests/test_style_presets.py +114 -0
  967. package/model-catalog.json +36 -0
  968. package/node_modules/@litcodex/lit-loop/CHANGELOG.md +49 -0
  969. package/node_modules/@litcodex/lit-loop/LICENSE +21 -0
  970. package/node_modules/@litcodex/lit-loop/NOTICE +8 -0
  971. package/node_modules/@litcodex/lit-loop/README.md +55 -0
  972. package/node_modules/@litcodex/lit-loop/agents/litcodex-default.toml +14 -0
  973. package/node_modules/@litcodex/lit-loop/agents/litcodex-explorer.toml +81 -0
  974. package/node_modules/@litcodex/lit-loop/agents/litcodex-librarian.toml +104 -0
  975. package/node_modules/@litcodex/lit-loop/agents/litcodex-litwork-reviewer.toml +41 -0
  976. package/node_modules/@litcodex/lit-loop/agents/litcodex-metis.toml +71 -0
  977. package/node_modules/@litcodex/lit-loop/agents/litcodex-momus.toml +75 -0
  978. package/node_modules/@litcodex/lit-loop/agents/litcodex-plan.toml +193 -0
  979. package/node_modules/@litcodex/lit-loop/directive.md +240 -0
  980. package/node_modules/@litcodex/lit-loop/directives/browser-drive.md +140 -0
  981. package/node_modules/@litcodex/lit-loop/directives/deep-interview.md +250 -0
  982. package/node_modules/@litcodex/lit-loop/directives/lit-comprehend.md +247 -0
  983. package/node_modules/@litcodex/lit-loop/directives/lit-crucible.md +254 -0
  984. package/node_modules/@litcodex/lit-loop/directives/lit-handoff.md +126 -0
  985. package/node_modules/@litcodex/lit-loop/directives/lit-init.md +140 -0
  986. package/node_modules/@litcodex/lit-loop/directives/lit-plan.md +472 -0
  987. package/node_modules/@litcodex/lit-loop/directives/lit-recap.md +209 -0
  988. package/node_modules/@litcodex/lit-loop/directives/lit-scientific-visualization.md +144 -0
  989. package/node_modules/@litcodex/lit-loop/directives/litgoal.md +231 -0
  990. package/node_modules/@litcodex/lit-loop/directives/litresearch.md +218 -0
  991. package/node_modules/@litcodex/lit-loop/directives/litwork.md +507 -0
  992. package/node_modules/@litcodex/lit-loop/directives/review-work.md +184 -0
  993. package/node_modules/@litcodex/lit-loop/directives/skill-observer.md +105 -0
  994. package/node_modules/@litcodex/lit-loop/directives/start-work.md +149 -0
  995. package/node_modules/@litcodex/lit-loop/dist/_scaffold.d.ts +1 -0
  996. package/node_modules/@litcodex/lit-loop/dist/_scaffold.js +3 -0
  997. package/node_modules/@litcodex/lit-loop/dist/browser-drive-route.d.ts +7 -0
  998. package/node_modules/@litcodex/lit-loop/dist/browser-drive-route.js +13 -0
  999. package/node_modules/@litcodex/lit-loop/dist/cli.d.ts +6 -0
  1000. package/node_modules/@litcodex/lit-loop/dist/cli.js +64 -0
  1001. package/node_modules/@litcodex/lit-loop/dist/codex-goal-instruction.d.ts +18 -0
  1002. package/node_modules/@litcodex/lit-loop/dist/codex-goal-instruction.js +146 -0
  1003. package/node_modules/@litcodex/lit-loop/dist/codex-hook.d.ts +53 -0
  1004. package/node_modules/@litcodex/lit-loop/dist/codex-hook.js +228 -0
  1005. package/node_modules/@litcodex/lit-loop/dist/directive.d.ts +43 -0
  1006. package/node_modules/@litcodex/lit-loop/dist/directive.js +139 -0
  1007. package/node_modules/@litcodex/lit-loop/dist/goal-status.d.ts +14 -0
  1008. package/node_modules/@litcodex/lit-loop/dist/goal-status.js +32 -0
  1009. package/node_modules/@litcodex/lit-loop/dist/guards.d.ts +73 -0
  1010. package/node_modules/@litcodex/lit-loop/dist/guards.js +215 -0
  1011. package/node_modules/@litcodex/lit-loop/dist/handoff-route.d.ts +5 -0
  1012. package/node_modules/@litcodex/lit-loop/dist/handoff-route.js +11 -0
  1013. package/node_modules/@litcodex/lit-loop/dist/hook-cli.d.ts +19 -0
  1014. package/node_modules/@litcodex/lit-loop/dist/hook-cli.js +189 -0
  1015. package/node_modules/@litcodex/lit-loop/dist/lit-mark.d.ts +20 -0
  1016. package/node_modules/@litcodex/lit-loop/dist/lit-mark.js +138 -0
  1017. package/node_modules/@litcodex/lit-loop/dist/loop-cli.d.ts +19 -0
  1018. package/node_modules/@litcodex/lit-loop/dist/loop-cli.js +109 -0
  1019. package/node_modules/@litcodex/lit-loop/dist/loop-doctor-render.d.ts +7 -0
  1020. package/node_modules/@litcodex/lit-loop/dist/loop-doctor-render.js +39 -0
  1021. package/node_modules/@litcodex/lit-loop/dist/loop-doctor-types.d.ts +52 -0
  1022. package/node_modules/@litcodex/lit-loop/dist/loop-doctor-types.js +7 -0
  1023. package/node_modules/@litcodex/lit-loop/dist/loop-doctor.d.ts +34 -0
  1024. package/node_modules/@litcodex/lit-loop/dist/loop-doctor.js +336 -0
  1025. package/node_modules/@litcodex/lit-loop/dist/loop-errors.d.ts +15 -0
  1026. package/node_modules/@litcodex/lit-loop/dist/loop-errors.js +45 -0
  1027. package/node_modules/@litcodex/lit-loop/dist/loop-handlers.d.ts +18 -0
  1028. package/node_modules/@litcodex/lit-loop/dist/loop-handlers.js +367 -0
  1029. package/node_modules/@litcodex/lit-loop/dist/loop-model.d.ts +51 -0
  1030. package/node_modules/@litcodex/lit-loop/dist/loop-model.js +166 -0
  1031. package/node_modules/@litcodex/lit-loop/dist/loop-stdout.d.ts +6 -0
  1032. package/node_modules/@litcodex/lit-loop/dist/loop-stdout.js +11 -0
  1033. package/node_modules/@litcodex/lit-loop/dist/loop-types.d.ts +26 -0
  1034. package/node_modules/@litcodex/lit-loop/dist/loop-types.js +8 -0
  1035. package/node_modules/@litcodex/lit-loop/dist/markers.d.ts +33 -0
  1036. package/node_modules/@litcodex/lit-loop/dist/markers.js +38 -0
  1037. package/node_modules/@litcodex/lit-loop/dist/modes.d.ts +29 -0
  1038. package/node_modules/@litcodex/lit-loop/dist/modes.js +176 -0
  1039. package/node_modules/@litcodex/lit-loop/dist/plan-persistence.d.ts +20 -0
  1040. package/node_modules/@litcodex/lit-loop/dist/plan-persistence.js +147 -0
  1041. package/node_modules/@litcodex/lit-loop/dist/redaction.d.ts +3 -0
  1042. package/node_modules/@litcodex/lit-loop/dist/redaction.js +177 -0
  1043. package/node_modules/@litcodex/lit-loop/dist/scientific-visualization-route.d.ts +7 -0
  1044. package/node_modules/@litcodex/lit-loop/dist/scientific-visualization-route.js +15 -0
  1045. package/node_modules/@litcodex/lit-loop/dist/skill-loop/apply.d.ts +16 -0
  1046. package/node_modules/@litcodex/lit-loop/dist/skill-loop/apply.js +227 -0
  1047. package/node_modules/@litcodex/lit-loop/dist/skill-loop/config.d.ts +13 -0
  1048. package/node_modules/@litcodex/lit-loop/dist/skill-loop/config.js +12 -0
  1049. package/node_modules/@litcodex/lit-loop/dist/skill-loop/curator.d.ts +14 -0
  1050. package/node_modules/@litcodex/lit-loop/dist/skill-loop/curator.js +112 -0
  1051. package/node_modules/@litcodex/lit-loop/dist/skill-loop/hook.d.ts +19 -0
  1052. package/node_modules/@litcodex/lit-loop/dist/skill-loop/hook.js +435 -0
  1053. package/node_modules/@litcodex/lit-loop/dist/skill-loop/ownership.d.ts +6 -0
  1054. package/node_modules/@litcodex/lit-loop/dist/skill-loop/ownership.js +145 -0
  1055. package/node_modules/@litcodex/lit-loop/dist/skill-loop/paths.d.ts +18 -0
  1056. package/node_modules/@litcodex/lit-loop/dist/skill-loop/paths.js +43 -0
  1057. package/node_modules/@litcodex/lit-loop/dist/skill-loop/review.d.ts +28 -0
  1058. package/node_modules/@litcodex/lit-loop/dist/skill-loop/review.js +702 -0
  1059. package/node_modules/@litcodex/lit-loop/dist/skill-loop/store.d.ts +32 -0
  1060. package/node_modules/@litcodex/lit-loop/dist/skill-loop/store.js +667 -0
  1061. package/node_modules/@litcodex/lit-loop/dist/skill-loop/transaction.d.ts +26 -0
  1062. package/node_modules/@litcodex/lit-loop/dist/skill-loop/transaction.js +524 -0
  1063. package/node_modules/@litcodex/lit-loop/dist/skill-loop/types.d.ts +81 -0
  1064. package/node_modules/@litcodex/lit-loop/dist/skill-loop/types.js +246 -0
  1065. package/node_modules/@litcodex/lit-loop/dist/skill-loop/usage.d.ts +6 -0
  1066. package/node_modules/@litcodex/lit-loop/dist/skill-loop/usage.js +119 -0
  1067. package/node_modules/@litcodex/lit-loop/dist/skill-loop-cli.d.ts +8 -0
  1068. package/node_modules/@litcodex/lit-loop/dist/skill-loop-cli.js +111 -0
  1069. package/node_modules/@litcodex/lit-loop/dist/skill-mention-scope.d.ts +4 -0
  1070. package/node_modules/@litcodex/lit-loop/dist/skill-mention-scope.js +69 -0
  1071. package/node_modules/@litcodex/lit-loop/dist/skill-observer-cli.d.ts +3 -0
  1072. package/node_modules/@litcodex/lit-loop/dist/skill-observer-cli.js +116 -0
  1073. package/node_modules/@litcodex/lit-loop/dist/skill-observer-route.d.ts +6 -0
  1074. package/node_modules/@litcodex/lit-loop/dist/skill-observer-route.js +12 -0
  1075. package/node_modules/@litcodex/lit-loop/dist/skill-observer.d.ts +18 -0
  1076. package/node_modules/@litcodex/lit-loop/dist/skill-observer.js +946 -0
  1077. package/node_modules/@litcodex/lit-loop/dist/skill-renames.d.ts +20 -0
  1078. package/node_modules/@litcodex/lit-loop/dist/skill-renames.js +43 -0
  1079. package/node_modules/@litcodex/lit-loop/dist/state-paths.d.ts +43 -0
  1080. package/node_modules/@litcodex/lit-loop/dist/state-paths.js +121 -0
  1081. package/node_modules/@litcodex/lit-loop/dist/state-store.d.ts +40 -0
  1082. package/node_modules/@litcodex/lit-loop/dist/state-store.js +471 -0
  1083. package/node_modules/@litcodex/lit-loop/dist/state-types.d.ts +121 -0
  1084. package/node_modules/@litcodex/lit-loop/dist/state-types.js +67 -0
  1085. package/node_modules/@litcodex/lit-loop/dist/trigger.d.ts +62 -0
  1086. package/node_modules/@litcodex/lit-loop/dist/trigger.js +277 -0
  1087. package/node_modules/@litcodex/lit-loop/package.json +33 -0
  1088. package/node_modules/@litcodex/lit-loop/skills/browser-drive/SKILL.md +206 -0
  1089. package/node_modules/@litcodex/lit-loop/skills/browser-drive/agents/openai.yaml +6 -0
  1090. package/node_modules/@litcodex/lit-loop/skills/browser-drive/references/snapshot-act-loop.md +48 -0
  1091. package/node_modules/@litcodex/lit-loop/skills/browser-drive/scripts/capability-probe.mjs +437 -0
  1092. package/node_modules/@litcodex/lit-loop/skills/deep-interview/SKILL.md +339 -0
  1093. package/node_modules/@litcodex/lit-loop/skills/lit-burnoff/SKILL.md +489 -0
  1094. package/node_modules/@litcodex/lit-loop/skills/lit-burnoff/references/behavior-preserving-cleanup.md +105 -0
  1095. package/node_modules/@litcodex/lit-loop/skills/lit-burnoff-file/SKILL.md +169 -0
  1096. package/node_modules/@litcodex/lit-loop/skills/lit-code/SKILL.md +628 -0
  1097. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/engineering-risk-signals.md +123 -0
  1098. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/README.md +90 -0
  1099. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/backend-stack.md +641 -0
  1100. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/bootstrap.md +328 -0
  1101. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/bubbletea-v2.md +360 -0
  1102. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/cobra-stack.md +468 -0
  1103. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/concurrency.md +362 -0
  1104. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/data-modeling.md +329 -0
  1105. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/error-handling.md +359 -0
  1106. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/golangci-strict.md +236 -0
  1107. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/grpc-connect.md +375 -0
  1108. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/libraries.md +337 -0
  1109. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/one-liners.md +202 -0
  1110. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/sqlc-pgx.md +471 -0
  1111. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/testing.md +467 -0
  1112. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/type-patterns.md +298 -0
  1113. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/observability-contracts.md +124 -0
  1114. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/README.md +314 -0
  1115. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/async-anyio.md +442 -0
  1116. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/data-modeling.md +233 -0
  1117. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/data-processing.md +133 -0
  1118. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/error-handling.md +218 -0
  1119. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/fastapi-stack.md +316 -0
  1120. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/httpx2-optimization.md +360 -0
  1121. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/libraries.md +307 -0
  1122. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/one-liners.md +268 -0
  1123. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/orjson-stack.md +378 -0
  1124. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/pydantic-ai.md +285 -0
  1125. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/pyproject-strict.md +232 -0
  1126. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/textual-tui.md +201 -0
  1127. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/type-patterns.md +176 -0
  1128. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust/README.md +317 -0
  1129. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust/async-tokio.md +299 -0
  1130. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust/axum-stack.md +467 -0
  1131. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust/cargo-strict.md +317 -0
  1132. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust/clap-stack.md +409 -0
  1133. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust/concurrency.md +375 -0
  1134. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust/libraries.md +439 -0
  1135. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust/one-liners.md +291 -0
  1136. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust/proptest-insta.md +429 -0
  1137. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust/type-state.md +354 -0
  1138. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust/unsafe-discipline.md +250 -0
  1139. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust/zero-cost-safety.md +527 -0
  1140. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust-ub/README.md +289 -0
  1141. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust-ub/miri-sanitizers-loom.md +411 -0
  1142. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust-ub/ub-taxonomy.md +269 -0
  1143. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/typescript/README.md +195 -0
  1144. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/typescript/backend-hono.md +672 -0
  1145. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/typescript/bootstrap.md +199 -0
  1146. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/typescript/data-modeling.md +202 -0
  1147. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/typescript/error-handling.md +169 -0
  1148. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/typescript/tsconfig-strict.md +152 -0
  1149. package/node_modules/@litcodex/lit-loop/skills/lit-code/references/typescript/type-patterns.md +196 -0
  1150. package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/go/check-no-excuse-rules.sh +173 -0
  1151. package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/go/new-project.py +138 -0
  1152. package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/go/templates/.editorconfig +13 -0
  1153. package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/go/templates/.golangci.yml +95 -0
  1154. package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/go/templates/AGENTS.md.tmpl +24 -0
  1155. package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/go/templates/README.md.tmpl +12 -0
  1156. package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/go/templates/Taskfile.yml +40 -0
  1157. package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/go/templates/ci.yml +37 -0
  1158. package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/go/templates/config.go +24 -0
  1159. package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/go/templates/gitignore +15 -0
  1160. package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/go/templates/main.go.tmpl +22 -0
  1161. package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/go/templates/run.go +15 -0
  1162. package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/python/check-no-excuse-rules.py +687 -0
  1163. package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/python/new-project.py +172 -0
  1164. package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/python/new-script.py +116 -0
  1165. package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/rust/check-no-excuse-rules.py +296 -0
  1166. package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/rust/check-no-excuse-rules.sh +158 -0
  1167. package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/rust/new-project.py +175 -0
  1168. package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/typescript/check-no-excuse-rules.ts +344 -0
  1169. package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/typescript/new-project.ts +174 -0
  1170. package/node_modules/@litcodex/lit-loop/skills/lit-commit/SKILL.md +254 -0
  1171. package/node_modules/@litcodex/lit-loop/skills/lit-commit/agents/openai.yaml +13 -0
  1172. package/node_modules/@litcodex/lit-loop/skills/lit-commit/references/safe-git-operations.md +123 -0
  1173. package/node_modules/@litcodex/lit-loop/skills/lit-comprehend/SKILL.md +472 -0
  1174. package/node_modules/@litcodex/lit-loop/skills/lit-crucible/SKILL.md +321 -0
  1175. package/node_modules/@litcodex/lit-loop/skills/lit-crucible/agents/openai.yaml +6 -0
  1176. package/node_modules/@litcodex/lit-loop/skills/lit-crucible/references/adversarial-workflow.md +142 -0
  1177. package/node_modules/@litcodex/lit-loop/skills/lit-fetch/SKILL.md +326 -0
  1178. package/node_modules/@litcodex/lit-loop/skills/lit-fetch/references/ab-eval.md +36 -0
  1179. package/node_modules/@litcodex/lit-loop/skills/lit-fetch/references/discovery-evidence.md +200 -0
  1180. package/node_modules/@litcodex/lit-loop/skills/lit-fetch/references/workflow.md +137 -0
  1181. package/node_modules/@litcodex/lit-loop/skills/lit-fetch/scripts/lib/fetch.mjs +122 -0
  1182. package/node_modules/@litcodex/lit-loop/skills/lit-fetch/scripts/lib/reader.mjs +115 -0
  1183. package/node_modules/@litcodex/lit-loop/skills/lit-fetch/scripts/lib/redaction.mjs +53 -0
  1184. package/node_modules/@litcodex/lit-loop/skills/lit-fetch/scripts/lib/report.mjs +190 -0
  1185. package/node_modules/@litcodex/lit-loop/skills/lit-fetch/scripts/lib/routes.mjs +56 -0
  1186. package/node_modules/@litcodex/lit-loop/skills/lit-fetch/scripts/lib/safety.mjs +165 -0
  1187. package/node_modules/@litcodex/lit-loop/skills/lit-fetch/scripts/lib/validate.mjs +189 -0
  1188. package/node_modules/@litcodex/lit-loop/skills/lit-fetch/scripts/read-public-page.mjs +61 -0
  1189. package/node_modules/@litcodex/lit-loop/skills/lit-handoff/SKILL.md +231 -0
  1190. package/node_modules/@litcodex/lit-loop/skills/lit-init/SKILL.md +474 -0
  1191. package/node_modules/@litcodex/lit-loop/skills/lit-init/agents/openai.yaml +6 -0
  1192. package/node_modules/@litcodex/lit-loop/skills/lit-init/references/deep-repository-map.md +116 -0
  1193. package/node_modules/@litcodex/lit-loop/skills/lit-korean/SKILL.md +206 -0
  1194. package/node_modules/@litcodex/lit-loop/skills/lit-korean/references/prompt-injection-handling.md +23 -0
  1195. package/node_modules/@litcodex/lit-loop/skills/lit-korean/references/quick-rules.md +38 -0
  1196. package/node_modules/@litcodex/lit-loop/skills/lit-korean/references/safety-checklist.md +38 -0
  1197. package/node_modules/@litcodex/lit-loop/skills/lit-loop/SKILL.md +202 -0
  1198. package/node_modules/@litcodex/lit-loop/skills/lit-plan/SKILL.md +384 -0
  1199. package/node_modules/@litcodex/lit-loop/skills/lit-recap/SKILL.md +222 -0
  1200. package/node_modules/@litcodex/lit-loop/skills/lit-scientific-visualization/SKILL.md +255 -0
  1201. package/node_modules/@litcodex/lit-loop/skills/lit-scientific-visualization/scripts/dependency-preflight.py +233 -0
  1202. package/node_modules/@litcodex/lit-loop/skills/lit-team/SKILL.md +190 -0
  1203. package/node_modules/@litcodex/lit-loop/skills/lit-team/references/team-orchestration.md +147 -0
  1204. package/node_modules/@litcodex/lit-loop/skills/lit-team/scripts/owner-lock.mjs +82 -0
  1205. package/node_modules/@litcodex/lit-loop/skills/lit-team/scripts/team-guide.mjs +31 -0
  1206. package/node_modules/@litcodex/lit-loop/skills/lit-team/scripts/team-state.mjs +262 -0
  1207. package/node_modules/@litcodex/lit-loop/skills/lit-team/scripts/team.mjs +145 -0
  1208. package/node_modules/@litcodex/lit-loop/skills/litgoal/SKILL.md +209 -0
  1209. package/node_modules/@litcodex/lit-loop/skills/litresearch/SKILL.md +572 -0
  1210. package/node_modules/@litcodex/lit-loop/skills/litwork/SKILL.md +238 -0
  1211. package/node_modules/@litcodex/lit-loop/skills/review-work/SKILL.md +867 -0
  1212. package/node_modules/@litcodex/lit-loop/skills/skill-observer/SKILL.md +215 -0
  1213. package/node_modules/@litcodex/lit-loop/skills/skill-observer/references/review-contract.md +77 -0
  1214. package/node_modules/@litcodex/lit-loop/skills/start-work/SKILL.md +503 -0
  1215. package/node_modules/@litcodex/lit-loop/vendor/NOTICE +19 -0
  1216. package/node_modules/@litcodex/lit-loop/vendor/handoff/SKILL.md +199 -0
  1217. package/node_modules/@litcodex/lit-loop/vendor/handoff/evals/evals.json +154 -0
  1218. package/node_modules/@litcodex/lit-loop/vendor/handoff/examples/HANDOFF-example-generic-auth-refactor.md +97 -0
  1219. package/node_modules/@litcodex/lit-loop/vendor/handoff/templates/HANDOFF.md +121 -0
  1220. package/node_modules/@litcodex/lit-loop/vendor/licenses/022_handoff-MIT.txt +21 -0
  1221. package/node_modules/@litcodex/lit-loop/vendor/licenses/045_scientific-visualization-MIT.txt +21 -0
  1222. package/node_modules/@litcodex/lit-loop/vendor/provenance/022_handoff.md +25 -0
  1223. package/node_modules/@litcodex/lit-loop/vendor/provenance/045_scientific-visualization.md +42 -0
  1224. package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/SKILL.md +283 -0
  1225. package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/assets/color_palettes.py +197 -0
  1226. package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/assets/nature.mplstyle +75 -0
  1227. package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/assets/presentation.mplstyle +74 -0
  1228. package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/assets/publication.mplstyle +78 -0
  1229. package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/evals/evals.json +158 -0
  1230. package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/references/color_palettes.md +380 -0
  1231. package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/references/journal_requirements.md +359 -0
  1232. package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/references/matplotlib_examples.md +608 -0
  1233. package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/references/mdanalysis_martini_visualization.md +85 -0
  1234. package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/references/publication_guidelines.md +217 -0
  1235. package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/references/seaborn_for_publications.md +293 -0
  1236. package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/scripts/figure_export.py +238 -0
  1237. package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/scripts/style_presets.py +467 -0
  1238. package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/tests/test_figure_export.py +51 -0
  1239. package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/tests/test_style_presets.py +114 -0
  1240. package/package.json +64 -0
  1241. package/readme-assets/ascii-readme.svg +5 -0
  1242. package/readme-assets/badge-license.svg +1 -0
  1243. package/readme-assets/badge-version.svg +1 -0
  1244. package/readme-assets/clay-icon.png +0 -0
  1245. package/readme-assets/cover.webp +0 -0
  1246. package/readme-assets/ignition-poster.png +0 -0
  1247. package/readme-assets/litcodex-continuity-1600.webp +0 -0
  1248. package/readme-assets/litcodex-ignition-1600.webp +0 -0
  1249. package/readme-assets/litcodex-wordmark.svg +5 -0
  1250. package/readme-assets/lucide-book-open.svg +14 -0
  1251. package/readme-assets/lucide-play.svg +13 -0
  1252. package/readme-assets/lucide-shield-check.svg +14 -0
@@ -0,0 +1,946 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { closeSync, constants, fstatSync, fsyncSync, ftruncateSync, lstatSync, mkdirSync, openSync, readFileSync, realpathSync, renameSync, rmSync, unlinkSync, writeFileSync, writeSync, } from "node:fs";
3
+ import { dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
4
+ import { performance } from "node:perf_hooks";
5
+ import { TextDecoder } from "node:util";
6
+ import { redactSecrets } from "./redaction.js";
7
+ export const OBSERVER_SIGNALS = Object.freeze(["correction", "repetition", "coverage-gap"]);
8
+ export const OBSERVER_RECORD_STATE_UNKNOWN = "OBSERVER_RECORD_STATE_UNKNOWN";
9
+ export const OBSERVER_RECORD_COMMITTED_CLEANUP_FAILED = "OBSERVER_RECORD_COMMITTED_CLEANUP_FAILED";
10
+ const INPUT_FIELDS = Object.freeze(["signal", "skillId", "observed", "proposal"]);
11
+ const PERSISTED_FIELDS = Object.freeze([...INPUT_FIELDS, "applied"]);
12
+ const TEXT_CEILING = 1000;
13
+ const SKILL_ID = /^[a-z][a-z0-9-]{0,63}$/u;
14
+ const MAX_LOG_BYTES = 1024 * 1024;
15
+ const LOCK_WAIT_MS = 250;
16
+ const LOCK_POLL_MS = 10;
17
+ const LOCK_WAIT_BUFFER = new Int32Array(new SharedArrayBuffer(4));
18
+ const NO_FOLLOW = constants.O_NOFOLLOW ?? 0;
19
+ const OBSERVER_DIR = "skill-observer";
20
+ const LOG_NAME = "observations.jsonl";
21
+ const LOCK_SUFFIX = ".lock";
22
+ const LOCK_OWNER_NAME = "owner";
23
+ const LOCK_OWNER_MAX_BYTES = 512;
24
+ const UTF8_DECODER = new TextDecoder("utf-8", { fatal: true });
25
+ const CREDENTIAL_URI_PATTERN = /[a-z][a-z0-9+.-]*:\/\/[^/?#\s]*@/iu;
26
+ const WINDOWS_DRIVE_ABSOLUTE = /^[A-Za-z]:[\\/]/u;
27
+ const WINDOWS_UNC_ABSOLUTE = /^\\\\/u;
28
+ const LOCK_OWNER_TOKEN = /^[A-Za-z0-9:_-]{1,128}$/u;
29
+ export class SkillObserverError extends Error {
30
+ constructor(code, message) {
31
+ super(message);
32
+ this.name = "SkillObserverError";
33
+ this.code = code;
34
+ }
35
+ }
36
+ function safeRootPath(root) {
37
+ if (typeof root !== "string") {
38
+ throw new SkillObserverError("OBSERVER_PATH_UNSAFE", "the project root must be a path string");
39
+ }
40
+ if (process.platform !== "win32" && (WINDOWS_DRIVE_ABSOLUTE.test(root) || WINDOWS_UNC_ABSOLUTE.test(root))) {
41
+ throw new SkillObserverError("OBSERVER_PATH_UNSAFE", "the project root uses a foreign absolute path format");
42
+ }
43
+ try {
44
+ return resolve(root);
45
+ }
46
+ catch {
47
+ throw new SkillObserverError("OBSERVER_PATH_UNSAFE", "the project root could not be resolved safely");
48
+ }
49
+ }
50
+ export function observationLogPath(root = process.cwd()) {
51
+ return join(safeRootPath(root), ".litcodex", OBSERVER_DIR, LOG_NAME);
52
+ }
53
+ function errnoCode(error) {
54
+ return typeof error === "object" && error !== null && "code" in error
55
+ ? error.code
56
+ : undefined;
57
+ }
58
+ function pathIsWithin(root, candidate) {
59
+ const child = relative(root, candidate);
60
+ return child === "" || (!isAbsolute(child) && child !== ".." && !child.startsWith(`..${sep}`));
61
+ }
62
+ function pathsFor(root) {
63
+ const absoluteRoot = safeRootPath(root);
64
+ const stateDir = join(absoluteRoot, ".litcodex");
65
+ const observerDir = join(stateDir, OBSERVER_DIR);
66
+ const log = join(observerDir, LOG_NAME);
67
+ const lock = join(absoluteRoot, `${OBSERVER_DIR}${LOCK_SUFFIX}`);
68
+ if (![stateDir, observerDir, log, lock].every((path) => pathIsWithin(absoluteRoot, path))) {
69
+ throw new SkillObserverError("OBSERVER_PATH_UNSAFE", "the observation path escapes the project root");
70
+ }
71
+ return { root: absoluteRoot, stateDir, observerDir, log, lock };
72
+ }
73
+ function pathUnsafe(path, detail) {
74
+ return new SkillObserverError("OBSERVER_PATH_UNSAFE", `${detail}: ${path}`);
75
+ }
76
+ function isDarwinSystemAlias(path, target) {
77
+ return (process.platform === "darwin" &&
78
+ ((path === "/var" && target === "/private/var") || (path === "/tmp" && target === "/private/tmp")));
79
+ }
80
+ function assertSafeRootParents(root) {
81
+ let current = root;
82
+ for (;;) {
83
+ let entry;
84
+ try {
85
+ entry = lstatSync(current);
86
+ }
87
+ catch (error) {
88
+ if (errnoCode(error) !== "ENOENT") {
89
+ throw pathUnsafe(current, `cannot inspect a requested-root parent (${errnoCode(error) ?? "unknown error"})`);
90
+ }
91
+ }
92
+ if (entry?.isSymbolicLink()) {
93
+ if (current === root)
94
+ throw pathUnsafe(current, "the requested root is a symbolic link");
95
+ let target;
96
+ try {
97
+ target = realpathSync(current);
98
+ }
99
+ catch (error) {
100
+ throw pathUnsafe(current, `cannot resolve a requested-root parent (${errnoCode(error) ?? "unknown error"})`);
101
+ }
102
+ if (!isDarwinSystemAlias(current, target)) {
103
+ throw pathUnsafe(current, "a requested-root parent is a symbolic link");
104
+ }
105
+ }
106
+ const parent = dirname(current);
107
+ if (parent === current)
108
+ return;
109
+ current = parent;
110
+ }
111
+ }
112
+ function rootRealPath(paths, create) {
113
+ let rootStat;
114
+ assertSafeRootParents(paths.root);
115
+ try {
116
+ rootStat = lstatSync(paths.root);
117
+ }
118
+ catch (error) {
119
+ if (errnoCode(error) !== "ENOENT") {
120
+ throw pathUnsafe(paths.root, `cannot inspect the project root (${errnoCode(error) ?? "unknown error"})`);
121
+ }
122
+ if (!create)
123
+ return undefined;
124
+ try {
125
+ mkdirSync(paths.root, { mode: 0o700, recursive: true });
126
+ rootStat = lstatSync(paths.root);
127
+ }
128
+ catch (createError) {
129
+ throw pathUnsafe(paths.root, `cannot create the project root (${errnoCode(createError) ?? "unknown error"})`);
130
+ }
131
+ }
132
+ if (rootStat === undefined)
133
+ throw pathUnsafe(paths.root, "the project root is unavailable");
134
+ if (rootStat.isSymbolicLink())
135
+ throw pathUnsafe(paths.root, "the project root is a symbolic link");
136
+ if (!rootStat.isDirectory())
137
+ throw pathUnsafe(paths.root, "the project root is not a directory");
138
+ try {
139
+ return realpathSync(paths.root);
140
+ }
141
+ catch (error) {
142
+ throw pathUnsafe(paths.root, `cannot resolve the project root (${errnoCode(error) ?? "unknown error"})`);
143
+ }
144
+ }
145
+ function checkDirectory(path, rootReal, create) {
146
+ let directory;
147
+ try {
148
+ directory = lstatSync(path);
149
+ }
150
+ catch (error) {
151
+ if (errnoCode(error) !== "ENOENT") {
152
+ throw pathUnsafe(path, `cannot inspect an observer directory (${errnoCode(error) ?? "unknown error"})`);
153
+ }
154
+ if (!create)
155
+ return undefined;
156
+ try {
157
+ mkdirSync(path, { mode: 0o700 });
158
+ directory = lstatSync(path);
159
+ }
160
+ catch (createError) {
161
+ if (errnoCode(createError) !== "EEXIST") {
162
+ throw pathUnsafe(path, `cannot create the observer directory (${errnoCode(createError) ?? "unknown error"})`);
163
+ }
164
+ try {
165
+ directory = lstatSync(path);
166
+ }
167
+ catch (raceError) {
168
+ throw pathUnsafe(path, `cannot inspect the observer directory (${errnoCode(raceError) ?? "unknown error"})`);
169
+ }
170
+ }
171
+ }
172
+ if (directory === undefined)
173
+ throw pathUnsafe(path, "the observer directory is unavailable");
174
+ if (directory.isSymbolicLink())
175
+ throw pathUnsafe(path, "an observer parent is a symbolic link");
176
+ if (!directory.isDirectory())
177
+ throw pathUnsafe(path, "an observer parent is not a directory");
178
+ let real;
179
+ try {
180
+ real = realpathSync(path);
181
+ }
182
+ catch (error) {
183
+ throw pathUnsafe(path, `cannot resolve an observer parent (${errnoCode(error) ?? "unknown error"})`);
184
+ }
185
+ if (!pathIsWithin(rootReal, real))
186
+ throw pathUnsafe(path, "an observer parent escapes the project root");
187
+ return { dev: directory.dev, ino: directory.ino, birthtimeMs: directory.birthtimeMs };
188
+ }
189
+ function writablePaths(root) {
190
+ const paths = pathsFor(root);
191
+ const realRoot = rootRealPath(paths, true);
192
+ if (realRoot === undefined)
193
+ throw pathUnsafe(paths.root, "the project root is unavailable");
194
+ const stateIdentity = checkDirectory(paths.stateDir, realRoot, true);
195
+ const observerIdentity = checkDirectory(paths.observerDir, realRoot, true);
196
+ if (stateIdentity === undefined || observerIdentity === undefined) {
197
+ throw pathUnsafe(paths.observerDir, "the observer directory is unavailable");
198
+ }
199
+ return { ...paths, rootReal: realRoot, stateIdentity, observerIdentity };
200
+ }
201
+ function readablePaths(root) {
202
+ const paths = pathsFor(root);
203
+ const realRoot = rootRealPath(paths, false);
204
+ if (realRoot === undefined)
205
+ return undefined;
206
+ const stateIdentity = checkDirectory(paths.stateDir, realRoot, false);
207
+ const observerIdentity = checkDirectory(paths.observerDir, realRoot, false);
208
+ if (stateIdentity === undefined || observerIdentity === undefined)
209
+ return undefined;
210
+ return { ...paths, rootReal: realRoot, stateIdentity, observerIdentity };
211
+ }
212
+ function isRecord(value) {
213
+ return typeof value === "object" && value !== null && !Array.isArray(value);
214
+ }
215
+ function flatten(value) {
216
+ return value
217
+ .replace(/[\p{Cf}\u0080-\u009f]/gu, "")
218
+ .replace(/\p{Cc}/gu, " ")
219
+ .replace(/\s+/gu, " ")
220
+ .trim()
221
+ .slice(0, TEXT_CEILING);
222
+ }
223
+ function containsSecret(value) {
224
+ return redactSecrets(value) !== value || CREDENTIAL_URI_PATTERN.test(value);
225
+ }
226
+ function validateObservation(value, persisted) {
227
+ if (!isRecord(value)) {
228
+ throw new SkillObserverError("OBSERVER_SHAPE_INVALID", "an observation must be an object");
229
+ }
230
+ const fields = persisted ? PERSISTED_FIELDS : INPUT_FIELDS;
231
+ // The unknown key names are never echoed or persisted: a stray field name can carry secrets.
232
+ if (Object.keys(value).some((key) => !fields.includes(key))) {
233
+ throw new SkillObserverError("OBSERVER_FIELD_UNKNOWN", "an observation carries a field outside the contract");
234
+ }
235
+ if (persisted) {
236
+ const missing = PERSISTED_FIELDS.filter((field) => !Object.hasOwn(value, field));
237
+ if (missing.length > 0) {
238
+ throw new SkillObserverError("OBSERVER_FIELD_MISSING", `missing observation field: ${missing.join(", ")}`);
239
+ }
240
+ }
241
+ if (!OBSERVER_SIGNALS.includes(value["signal"])) {
242
+ throw new SkillObserverError("OBSERVER_SIGNAL_UNKNOWN", `signal must be one of ${OBSERVER_SIGNALS.join(", ")}`);
243
+ }
244
+ if (typeof value["skillId"] !== "string" || !SKILL_ID.test(value["skillId"])) {
245
+ throw new SkillObserverError("OBSERVER_SKILL_ID_INVALID", "skillId must be a lowercase skill identifier");
246
+ }
247
+ for (const field of ["observed", "proposal"]) {
248
+ const text = value[field];
249
+ if (typeof text !== "string" || text.trim() === "") {
250
+ throw new SkillObserverError("OBSERVER_TEXT_MISSING", `${field} must be non-empty text`);
251
+ }
252
+ const spaced = text
253
+ .replace(/[\p{Cc}\p{Cf}]/gu, " ")
254
+ .replace(/\s+/gu, " ")
255
+ .trim();
256
+ if (containsSecret(text) || containsSecret(flatten(text)) || containsSecret(spaced)) {
257
+ throw new SkillObserverError("OBSERVER_SECRET_REFUSED", `${field} looks like it carries a credential and was refused before any write`);
258
+ }
259
+ if (flatten(text).length === 0) {
260
+ throw new SkillObserverError("OBSERVER_TEXT_MISSING", `${field} must contain usable text`);
261
+ }
262
+ if (persisted && (text.length > TEXT_CEILING || flatten(text) !== text)) {
263
+ throw new SkillObserverError("OBSERVER_TEXT_NOT_CANONICAL", `${field} is not canonical bounded text`);
264
+ }
265
+ }
266
+ if (persisted && value["applied"] !== false) {
267
+ throw new SkillObserverError("OBSERVER_APPLIED_INVALID", "applied must be the boolean false");
268
+ }
269
+ }
270
+ function logEntryState(path) {
271
+ let entry;
272
+ try {
273
+ entry = lstatSync(path);
274
+ }
275
+ catch (error) {
276
+ if (errnoCode(error) === "ENOENT")
277
+ return "missing";
278
+ throw new SkillObserverError("OBSERVER_LOG_UNAVAILABLE", `cannot inspect the observation log: ${path}`);
279
+ }
280
+ if (entry === undefined) {
281
+ throw new SkillObserverError("OBSERVER_LOG_UNAVAILABLE", `cannot inspect the observation log: ${path}`);
282
+ }
283
+ if (entry.isSymbolicLink()) {
284
+ throw new SkillObserverError("OBSERVER_LOG_SYMLINK", "the observation log is a symbolic link");
285
+ }
286
+ if (!entry.isFile()) {
287
+ throw new SkillObserverError("OBSERVER_LOG_NOT_REGULAR", "the observation log is not a regular file");
288
+ }
289
+ if (entry.nlink !== 1)
290
+ throw new SkillObserverError("OBSERVER_LOG_HARD_LINK", "the observation log has hard links");
291
+ if ((entry.mode & 0o077) !== 0) {
292
+ throw new SkillObserverError("OBSERVER_LOG_PERMISSIONS", "the observation log has group or world permission bits");
293
+ }
294
+ return "present";
295
+ }
296
+ function assertRegularLogHandle(handle) {
297
+ const entry = fstatSync(handle);
298
+ if (!entry.isFile()) {
299
+ throw new SkillObserverError("OBSERVER_LOG_NOT_REGULAR", "the observation log is not a regular file");
300
+ }
301
+ if (entry.nlink !== 1)
302
+ throw new SkillObserverError("OBSERVER_LOG_HARD_LINK", "the observation log has hard links");
303
+ if ((entry.mode & 0o077) !== 0) {
304
+ throw new SkillObserverError("OBSERVER_LOG_PERMISSIONS", "the observation log has group or world permission bits");
305
+ }
306
+ }
307
+ function removeCreatedLogAfterOpenFailure(paths, handle) {
308
+ let descriptor;
309
+ try {
310
+ descriptor = fstatSync(handle);
311
+ }
312
+ catch {
313
+ throw new SkillObserverError("OBSERVER_LOG_OPEN_FAILED", "the newly created observation log could not be inspected");
314
+ }
315
+ let namedPath;
316
+ try {
317
+ namedPath = lstatSync(paths.log);
318
+ }
319
+ catch (error) {
320
+ if (errnoCode(error) === "ENOENT")
321
+ return;
322
+ throw new SkillObserverError("OBSERVER_LOG_OPEN_FAILED", "the newly created observation log could not be inspected");
323
+ }
324
+ if (namedPath.isSymbolicLink() ||
325
+ !namedPath.isFile() ||
326
+ namedPath.nlink !== 1 ||
327
+ namedPath.dev !== descriptor.dev ||
328
+ namedPath.ino !== descriptor.ino ||
329
+ namedPath.ctimeMs !== descriptor.ctimeMs ||
330
+ namedPath.birthtimeMs !== descriptor.birthtimeMs) {
331
+ throw new SkillObserverError("OBSERVER_LOG_PATH_CHANGED", "the newly created observation log path no longer identifies the opened file");
332
+ }
333
+ try {
334
+ unlinkSync(paths.log);
335
+ }
336
+ catch {
337
+ throw new SkillObserverError("OBSERVER_LOG_OPEN_FAILED", "the newly created observation log could not be removed");
338
+ }
339
+ try {
340
+ lstatSync(paths.log);
341
+ }
342
+ catch (error) {
343
+ if (errnoCode(error) === "ENOENT")
344
+ return;
345
+ }
346
+ throw new SkillObserverError("OBSERVER_LOG_OPEN_FAILED", "the newly created observation log could not be removed");
347
+ }
348
+ function assertLogPathIdentity(path, descriptor) {
349
+ let namedPath;
350
+ try {
351
+ namedPath = lstatSync(path);
352
+ }
353
+ catch {
354
+ throw new SkillObserverError("OBSERVER_LOG_PATH_CHANGED", "the observation log path no longer identifies the opened file");
355
+ }
356
+ if (namedPath.dev !== descriptor.dev ||
357
+ namedPath.ino !== descriptor.ino ||
358
+ namedPath.ctimeMs !== descriptor.ctimeMs ||
359
+ namedPath.birthtimeMs !== descriptor.birthtimeMs) {
360
+ throw new SkillObserverError("OBSERVER_LOG_PATH_CHANGED", "the observation log path no longer identifies the opened file");
361
+ }
362
+ }
363
+ function openLogForAppend(paths) {
364
+ assertTrustedParents(paths);
365
+ const state = logEntryState(paths.log);
366
+ assertTrustedParents(paths);
367
+ try {
368
+ const handle = openSync(paths.log, constants.O_RDWR |
369
+ constants.O_APPEND |
370
+ NO_FOLLOW |
371
+ (state === "missing" ? constants.O_CREAT | constants.O_EXCL : 0), 0o600);
372
+ try {
373
+ assertRegularLogHandle(handle);
374
+ try {
375
+ assertTrustedParents(paths);
376
+ }
377
+ catch (error) {
378
+ if (state === "missing")
379
+ removeCreatedLogAfterOpenFailure(paths, handle);
380
+ throw error;
381
+ }
382
+ return handle;
383
+ }
384
+ catch (error) {
385
+ closeSync(handle);
386
+ throw error;
387
+ }
388
+ }
389
+ catch (error) {
390
+ if (error instanceof SkillObserverError)
391
+ throw error;
392
+ if (errnoCode(error) === "EEXIST" && state === "missing") {
393
+ try {
394
+ const handle = openSync(paths.log, constants.O_RDWR | constants.O_APPEND | NO_FOLLOW);
395
+ try {
396
+ assertRegularLogHandle(handle);
397
+ return handle;
398
+ }
399
+ catch (innerError) {
400
+ closeSync(handle);
401
+ throw innerError;
402
+ }
403
+ }
404
+ catch (retryError) {
405
+ if (retryError instanceof SkillObserverError)
406
+ throw retryError;
407
+ throw new SkillObserverError("OBSERVER_LOG_OPEN_FAILED", `cannot open the observation log: ${paths.log}`);
408
+ }
409
+ }
410
+ if (errnoCode(error) === "ELOOP" && state === "missing") {
411
+ throw new SkillObserverError("OBSERVER_LOG_SYMLINK", "the observation log became a symbolic link");
412
+ }
413
+ throw new SkillObserverError("OBSERVER_LOG_OPEN_FAILED", `cannot open the observation log: ${paths.log}`);
414
+ }
415
+ }
416
+ function openLogForRead(path) {
417
+ if (logEntryState(path) === "missing")
418
+ return undefined;
419
+ try {
420
+ const handle = openSync(path, constants.O_RDONLY | NO_FOLLOW);
421
+ try {
422
+ assertRegularLogHandle(handle);
423
+ return handle;
424
+ }
425
+ catch (error) {
426
+ closeSync(handle);
427
+ throw error;
428
+ }
429
+ }
430
+ catch (error) {
431
+ if (error instanceof SkillObserverError)
432
+ throw error;
433
+ if (errnoCode(error) === "ELOOP") {
434
+ throw new SkillObserverError("OBSERVER_LOG_SYMLINK", "the observation log became a symbolic link");
435
+ }
436
+ if (errnoCode(error) === "ENOENT")
437
+ return undefined;
438
+ throw new SkillObserverError("OBSERVER_LOG_OPEN_FAILED", `cannot open the observation log: ${path}`);
439
+ }
440
+ }
441
+ function readLogBytes(path, handle) {
442
+ const before = fstatSync(handle);
443
+ if (before.size > MAX_LOG_BYTES) {
444
+ throw new SkillObserverError("OBSERVER_LOG_SIZE_EXCEEDED", "the observation log exceeds the 1 MiB limit");
445
+ }
446
+ let bytes;
447
+ try {
448
+ bytes = readFileSync(handle);
449
+ }
450
+ catch {
451
+ throw new SkillObserverError("OBSERVER_LOG_READ_FAILED", "the observation log could not be read");
452
+ }
453
+ if (bytes.byteLength !== before.size) {
454
+ throw new SkillObserverError("OBSERVER_LOG_CONCURRENT_MODIFICATION", "the observation log changed during the read");
455
+ }
456
+ let after;
457
+ try {
458
+ after = fstatSync(handle);
459
+ }
460
+ catch {
461
+ throw new SkillObserverError("OBSERVER_LOG_CONCURRENT_MODIFICATION", "the observation log changed during the read");
462
+ }
463
+ const changedTimestamp = (field) => {
464
+ const beforeValue = before[field];
465
+ const afterValue = after[field];
466
+ return typeof beforeValue === "number" && typeof afterValue === "number" && beforeValue !== afterValue;
467
+ };
468
+ if (before.dev !== after.dev ||
469
+ before.ino !== after.ino ||
470
+ before.size !== after.size ||
471
+ changedTimestamp("ctimeMs") ||
472
+ changedTimestamp("mtimeMs")) {
473
+ throw new SkillObserverError("OBSERVER_LOG_CONCURRENT_MODIFICATION", "the observation log changed during the read");
474
+ }
475
+ assertLogPathIdentity(path, after);
476
+ return bytes;
477
+ }
478
+ function parseLog(bytes) {
479
+ if (bytes.byteLength > MAX_LOG_BYTES) {
480
+ throw new SkillObserverError("OBSERVER_LOG_SIZE_EXCEEDED", "the observation log exceeds the 1 MiB limit");
481
+ }
482
+ if (bytes.byteLength === 0)
483
+ return [];
484
+ let raw;
485
+ try {
486
+ raw = UTF8_DECODER.decode(bytes);
487
+ }
488
+ catch {
489
+ throw new SkillObserverError("OBSERVER_LOG_MALFORMED", "the observation log is not valid UTF-8");
490
+ }
491
+ const content = raw.endsWith("\n") ? raw.slice(0, -1) : raw;
492
+ const records = [];
493
+ for (const [index, line] of content.split("\n").entries()) {
494
+ if (line.trim() === "") {
495
+ throw new SkillObserverError("OBSERVER_LOG_MALFORMED", `observation log record ${index + 1} is empty`);
496
+ }
497
+ let value;
498
+ try {
499
+ value = JSON.parse(line);
500
+ }
501
+ catch {
502
+ throw new SkillObserverError("OBSERVER_LOG_MALFORMED", `observation log record ${index + 1} is not JSON`);
503
+ }
504
+ try {
505
+ validateObservation(value, true);
506
+ }
507
+ catch (error) {
508
+ if (error instanceof SkillObserverError && error.code === "OBSERVER_SECRET_REFUSED")
509
+ throw error;
510
+ throw new SkillObserverError("OBSERVER_LOG_MALFORMED", `observation log record ${index + 1} is invalid`);
511
+ }
512
+ if (JSON.stringify(value) !== line) {
513
+ throw new SkillObserverError("OBSERVER_LOG_MALFORMED", `observation log record ${index + 1} is not canonical JSON`);
514
+ }
515
+ records.push(value);
516
+ }
517
+ return records;
518
+ }
519
+ function sleepForLock(milliseconds) {
520
+ Atomics.wait(LOCK_WAIT_BUFFER, 0, 0, milliseconds);
521
+ }
522
+ function monotonicNowMs() {
523
+ return performance.now();
524
+ }
525
+ function assertTrustedParents(paths) {
526
+ for (const [path, expected] of [
527
+ [paths.stateDir, paths.stateIdentity],
528
+ [paths.observerDir, paths.observerIdentity],
529
+ ]) {
530
+ let current;
531
+ try {
532
+ current = lstatSync(path);
533
+ }
534
+ catch {
535
+ throw new SkillObserverError("OBSERVER_LOCK_UNSAFE", "an observer parent changed during lock creation");
536
+ }
537
+ if (current.isSymbolicLink() ||
538
+ !current.isDirectory() ||
539
+ current.dev !== expected.dev ||
540
+ current.ino !== expected.ino ||
541
+ current.birthtimeMs !== expected.birthtimeMs) {
542
+ throw new SkillObserverError("OBSERVER_LOCK_UNSAFE", "an observer parent changed during lock creation");
543
+ }
544
+ }
545
+ }
546
+ function lockDirectoryIdentity(path, rootReal) {
547
+ let lock;
548
+ try {
549
+ lock = lstatSync(path);
550
+ }
551
+ catch (error) {
552
+ if (errnoCode(error) === "ENOENT")
553
+ return undefined;
554
+ throw new SkillObserverError("OBSERVER_LOCK_UNSAFE", "the observation log lock could not be inspected");
555
+ }
556
+ if (lock.isSymbolicLink() || !lock.isDirectory()) {
557
+ throw new SkillObserverError("OBSERVER_LOCK_UNSAFE", "the observation log lock is not a private directory");
558
+ }
559
+ let real;
560
+ try {
561
+ real = realpathSync(path);
562
+ }
563
+ catch (error) {
564
+ // A contender may release the lock between lstatSync and realpathSync. Treat that
565
+ // disappearance as a retryable observation, not as an unsafe path.
566
+ if (errnoCode(error) === "ENOENT")
567
+ return undefined;
568
+ throw new SkillObserverError("OBSERVER_LOCK_UNSAFE", "the observation log lock could not be resolved");
569
+ }
570
+ if (!pathIsWithin(rootReal, real)) {
571
+ throw new SkillObserverError("OBSERVER_LOCK_UNSAFE", "the observation log lock escapes the project root");
572
+ }
573
+ return { dev: lock.dev, ino: lock.ino, birthtimeMs: lock.birthtimeMs };
574
+ }
575
+ function assertLockDirectory(path, rootReal) {
576
+ return lockDirectoryIdentity(path, rootReal) !== undefined;
577
+ }
578
+ function parseLockOwner(value) {
579
+ if (value.length === 0 || Buffer.byteLength(value, "utf8") > LOCK_OWNER_MAX_BYTES || value !== value.trim()) {
580
+ return undefined;
581
+ }
582
+ const legacy = /^([1-9][0-9]*):([A-Za-z0-9_-]{1,96})$/u.exec(value);
583
+ if (legacy !== null) {
584
+ const pid = Number(legacy[1]);
585
+ const token = legacy[2];
586
+ if (typeof token === "string" && Number.isSafeInteger(pid) && pid > 0 && LOCK_OWNER_TOKEN.test(token))
587
+ return { pid, token };
588
+ return undefined;
589
+ }
590
+ let parsed;
591
+ try {
592
+ parsed = JSON.parse(value);
593
+ }
594
+ catch {
595
+ return undefined;
596
+ }
597
+ if (!isRecord(parsed))
598
+ return undefined;
599
+ const pid = parsed["pid"];
600
+ const token = parsed["token"];
601
+ if (!Number.isSafeInteger(pid) ||
602
+ pid <= 0 ||
603
+ typeof token !== "string" ||
604
+ !LOCK_OWNER_TOKEN.test(token)) {
605
+ return undefined;
606
+ }
607
+ return { pid: pid, token };
608
+ }
609
+ function ownerProcessState(pid) {
610
+ try {
611
+ process.kill(pid, 0);
612
+ return "live";
613
+ }
614
+ catch (error) {
615
+ const code = errnoCode(error);
616
+ if (code === "ESRCH")
617
+ return "dead";
618
+ if (code === "EPERM")
619
+ return "live";
620
+ return "unknown";
621
+ }
622
+ }
623
+ function inspectLock(paths) {
624
+ const identity = lockDirectoryIdentity(paths.lock, paths.rootReal);
625
+ if (identity === undefined)
626
+ return undefined;
627
+ const ownerPath = join(paths.lock, LOCK_OWNER_NAME);
628
+ let ownerStat;
629
+ try {
630
+ ownerStat = lstatSync(ownerPath);
631
+ }
632
+ catch (error) {
633
+ if (errnoCode(error) === "ENOENT")
634
+ return { identity, owner: undefined, state: "unknown" };
635
+ return { identity, owner: undefined, state: "unknown" };
636
+ }
637
+ if (ownerStat.isSymbolicLink() ||
638
+ !ownerStat.isFile() ||
639
+ ownerStat.nlink !== 1 ||
640
+ (ownerStat.mode & 0o077) !== 0 ||
641
+ ownerStat.size > LOCK_OWNER_MAX_BYTES) {
642
+ throw new SkillObserverError("OBSERVER_LOCK_UNSAFE", "the observation log lock owner is unsafe");
643
+ }
644
+ let raw;
645
+ try {
646
+ raw = readFileSync(ownerPath, "utf8");
647
+ }
648
+ catch {
649
+ return { identity, owner: undefined, state: "unknown" };
650
+ }
651
+ const owner = parseLockOwner(raw);
652
+ return owner === undefined
653
+ ? { identity, owner: undefined, state: "unknown" }
654
+ : {
655
+ identity,
656
+ owner,
657
+ state: ownerProcessState(owner.pid),
658
+ };
659
+ }
660
+ function sameLockOwner(left, right) {
661
+ return left?.pid === right?.pid && left?.token === right?.token;
662
+ }
663
+ function recoverStaleLock(paths, observed) {
664
+ if (observed.state !== "dead" || observed.owner === undefined)
665
+ return false;
666
+ const current = inspectLock(paths);
667
+ if (current === undefined ||
668
+ current.state !== "dead" ||
669
+ current.identity.dev !== observed.identity.dev ||
670
+ current.identity.ino !== observed.identity.ino ||
671
+ current.identity.birthtimeMs !== observed.identity.birthtimeMs ||
672
+ !sameLockOwner(current.owner, observed.owner)) {
673
+ return false;
674
+ }
675
+ const displaced = `${paths.lock}.stale.${randomUUID()}`;
676
+ try {
677
+ assertTrustedParents(paths);
678
+ const latest = inspectLock(paths);
679
+ if (latest === undefined ||
680
+ latest.state !== "dead" ||
681
+ latest.identity.dev !== observed.identity.dev ||
682
+ latest.identity.ino !== observed.identity.ino ||
683
+ latest.identity.birthtimeMs !== observed.identity.birthtimeMs ||
684
+ !sameLockOwner(latest.owner, observed.owner)) {
685
+ return false;
686
+ }
687
+ renameSync(paths.lock, displaced);
688
+ }
689
+ catch (error) {
690
+ const code = errnoCode(error);
691
+ if (code === "ENOENT" || code === "EEXIST" || code === "ENOTEMPTY")
692
+ return false;
693
+ if (error instanceof SkillObserverError)
694
+ throw error;
695
+ throw new SkillObserverError("OBSERVER_LOCK_RECOVERY_FAILED", "the stale observation lock could not be displaced");
696
+ }
697
+ try {
698
+ rmSync(displaced, { recursive: true, force: false });
699
+ }
700
+ catch {
701
+ throw new SkillObserverError("OBSERVER_LOCK_RECOVERY_FAILED", "the stale observation lock could not be cleaned up");
702
+ }
703
+ return true;
704
+ }
705
+ function acquireLock(paths) {
706
+ const lock = {
707
+ path: paths.lock,
708
+ ownerPath: join(paths.lock, LOCK_OWNER_NAME),
709
+ token: `${process.pid}:${randomUUID()}`,
710
+ paths,
711
+ };
712
+ const deadline = monotonicNowMs() + LOCK_WAIT_MS;
713
+ let created;
714
+ // Unknown owners are never reclaimed. A timeout leaves the lock for manual review.
715
+ for (;;) {
716
+ if (deadline - monotonicNowMs() <= 0) {
717
+ throw new SkillObserverError("OBSERVER_LOCK_TIMEOUT", "the observation log lock wait expired");
718
+ }
719
+ try {
720
+ assertTrustedParents(paths);
721
+ mkdirSync(lock.path, { mode: 0o700 });
722
+ const createdStat = lstatSync(lock.path);
723
+ if (createdStat.isSymbolicLink() || !createdStat.isDirectory()) {
724
+ throw new SkillObserverError("OBSERVER_LOCK_UNSAFE", "the observation log lock is not a private directory");
725
+ }
726
+ created = {
727
+ dev: createdStat.dev,
728
+ ino: createdStat.ino,
729
+ birthtimeMs: createdStat.birthtimeMs,
730
+ };
731
+ assertTrustedParents(paths);
732
+ if (!assertLockDirectory(lock.path, paths.rootReal)) {
733
+ throw new SkillObserverError("OBSERVER_LOCK_UNSAFE", "the observation log lock disappeared during creation");
734
+ }
735
+ try {
736
+ assertTrustedParents(paths);
737
+ writeFileSync(lock.ownerPath, lock.token, { encoding: "utf8", mode: 0o600, flag: "wx" });
738
+ assertTrustedParents(paths);
739
+ return lock;
740
+ }
741
+ catch (error) {
742
+ if (error instanceof SkillObserverError)
743
+ throw error;
744
+ throw new SkillObserverError("OBSERVER_LOCK_FAILED", "the observation log lock owner could not be recorded");
745
+ }
746
+ }
747
+ catch (error) {
748
+ if (created !== undefined) {
749
+ try {
750
+ const current = lstatSync(lock.path);
751
+ if (current.isDirectory() &&
752
+ !current.isSymbolicLink() &&
753
+ current.dev === created.dev &&
754
+ current.ino === created.ino &&
755
+ current.birthtimeMs === created.birthtimeMs) {
756
+ rmSync(lock.path, { recursive: true, force: false });
757
+ }
758
+ }
759
+ catch {
760
+ // Lock cleanup cannot change the fail-closed result.
761
+ }
762
+ created = undefined;
763
+ }
764
+ if (error instanceof SkillObserverError)
765
+ throw error;
766
+ if (errnoCode(error) !== "EEXIST") {
767
+ assertTrustedParents(paths);
768
+ throw new SkillObserverError("OBSERVER_LOCK_FAILED", "the observation log lock could not be created");
769
+ }
770
+ const inspection = inspectLock(paths);
771
+ if (inspection === undefined) {
772
+ const remaining = deadline - monotonicNowMs();
773
+ if (remaining <= 0) {
774
+ throw new SkillObserverError("OBSERVER_LOCK_TIMEOUT", "the observation log lock wait expired");
775
+ }
776
+ sleepForLock(Math.min(LOCK_POLL_MS, remaining));
777
+ continue;
778
+ }
779
+ if (recoverStaleLock(paths, inspection))
780
+ continue;
781
+ assertTrustedParents(paths);
782
+ const remaining = deadline - monotonicNowMs();
783
+ if (remaining <= 0) {
784
+ throw new SkillObserverError("OBSERVER_LOCK_TIMEOUT", "the observation log lock wait expired");
785
+ }
786
+ sleepForLock(Math.min(LOCK_POLL_MS, remaining));
787
+ }
788
+ }
789
+ }
790
+ function assertLockOwnership(lock) {
791
+ try {
792
+ assertTrustedParents(lock.paths);
793
+ const lockStat = lstatSync(lock.path);
794
+ if (lockStat.isSymbolicLink() || !lockStat.isDirectory()) {
795
+ throw new SkillObserverError("OBSERVER_LOCK_UNSAFE", "the observation log lock changed type");
796
+ }
797
+ const ownerStat = lstatSync(lock.ownerPath);
798
+ if (ownerStat.isSymbolicLink() ||
799
+ !ownerStat.isFile() ||
800
+ ownerStat.nlink !== 1 ||
801
+ (ownerStat.mode & 0o077) !== 0) {
802
+ throw new SkillObserverError("OBSERVER_LOCK_UNSAFE", "the observation log lock owner is unsafe");
803
+ }
804
+ if (readFileSync(lock.ownerPath, "utf8") !== lock.token) {
805
+ throw new SkillObserverError("OBSERVER_LOCK_OWNERSHIP_LOST", "the observation log lock owner changed");
806
+ }
807
+ }
808
+ catch (error) {
809
+ if (error instanceof SkillObserverError)
810
+ throw error;
811
+ throw new SkillObserverError("OBSERVER_LOCK_UNSAFE", "the observation log lock owner could not be verified");
812
+ }
813
+ }
814
+ function releaseLock(lock) {
815
+ try {
816
+ try {
817
+ lstatSync(lock.path);
818
+ }
819
+ catch (error) {
820
+ if (errnoCode(error) === "ENOENT")
821
+ return;
822
+ throw error;
823
+ }
824
+ assertLockOwnership(lock);
825
+ rmSync(lock.path, { recursive: true, force: false });
826
+ }
827
+ catch (error) {
828
+ if (errnoCode(error) === "ENOENT")
829
+ return;
830
+ if (error instanceof SkillObserverError)
831
+ throw error;
832
+ throw new SkillObserverError("OBSERVER_LOCK_RELEASE_FAILED", "the observation log lock could not be released");
833
+ }
834
+ }
835
+ function withLock(paths, action) {
836
+ const lock = acquireLock(paths);
837
+ try {
838
+ assertTrustedParents(paths);
839
+ return action();
840
+ }
841
+ finally {
842
+ releaseLock(lock);
843
+ }
844
+ }
845
+ export function recordObservation(root, observation) {
846
+ validateObservation(observation, false);
847
+ const record = {
848
+ signal: observation["signal"],
849
+ skillId: observation["skillId"],
850
+ observed: flatten(observation["observed"]),
851
+ proposal: flatten(observation["proposal"]),
852
+ applied: false,
853
+ };
854
+ const line = `${JSON.stringify(record)}\n`;
855
+ const lineBytes = Buffer.byteLength(line, "utf8");
856
+ if (lineBytes > MAX_LOG_BYTES) {
857
+ throw new SkillObserverError("OBSERVER_LOG_SIZE_EXCEEDED", "the observation record exceeds the 1 MiB limit");
858
+ }
859
+ const paths = writablePaths(root);
860
+ let committed = false;
861
+ let recordStateUnknownError;
862
+ try {
863
+ return withLock(paths, () => {
864
+ const handle = openLogForAppend(paths);
865
+ try {
866
+ assertTrustedParents(paths);
867
+ const existing = readLogBytes(paths.log, handle);
868
+ parseLog(existing);
869
+ const separator = existing.byteLength === 0 || existing.at(-1) === 0x0a ? "" : "\n";
870
+ const appendLine = `${separator}${line}`;
871
+ const appendBytes = Buffer.byteLength(appendLine, "utf8");
872
+ const expectedSize = existing.byteLength + appendBytes;
873
+ if (expectedSize > MAX_LOG_BYTES) {
874
+ throw new SkillObserverError("OBSERVER_LOG_SIZE_EXCEEDED", "the observation log would exceed the 1 MiB limit");
875
+ }
876
+ const appendBuffer = Buffer.from(appendLine, "utf8");
877
+ assertTrustedParents(paths);
878
+ try {
879
+ let written = 0;
880
+ while (written < appendBuffer.byteLength) {
881
+ const count = writeSync(handle, appendBuffer, written, appendBuffer.byteLength - written, null);
882
+ if (count <= 0)
883
+ throw new Error("the observation log write made no progress");
884
+ written += count;
885
+ }
886
+ fsyncSync(handle);
887
+ const after = fstatSync(handle);
888
+ assertLogPathIdentity(paths.log, after);
889
+ if (after.size > MAX_LOG_BYTES) {
890
+ throw new SkillObserverError("OBSERVER_LOG_SIZE_EXCEEDED", "the observation log exceeds the 1 MiB limit");
891
+ }
892
+ if (after.size !== expectedSize) {
893
+ throw new SkillObserverError("OBSERVER_LOG_CONCURRENT_MODIFICATION", "the observation log changed during the append");
894
+ }
895
+ assertRegularLogHandle(handle);
896
+ assertTrustedParents(paths);
897
+ }
898
+ catch (error) {
899
+ try {
900
+ ftruncateSync(handle, existing.byteLength);
901
+ fsyncSync(handle);
902
+ }
903
+ catch {
904
+ recordStateUnknownError = new SkillObserverError(OBSERVER_RECORD_STATE_UNKNOWN, "rollback failed; the record state is unknown; read the log before retrying");
905
+ throw recordStateUnknownError;
906
+ }
907
+ if (error instanceof SkillObserverError)
908
+ throw error;
909
+ throw new SkillObserverError("OBSERVER_LOG_WRITE_FAILED", "the observation log could not be written");
910
+ }
911
+ committed = true;
912
+ return record;
913
+ }
914
+ finally {
915
+ closeSync(handle);
916
+ }
917
+ });
918
+ }
919
+ catch (error) {
920
+ if (committed) {
921
+ throw new SkillObserverError(OBSERVER_RECORD_COMMITTED_CLEANUP_FAILED, "the record was committed, but cleanup failed; read the log before retrying");
922
+ }
923
+ if (recordStateUnknownError !== undefined)
924
+ throw recordStateUnknownError;
925
+ throw error;
926
+ }
927
+ }
928
+ export function readObservations(root = process.cwd()) {
929
+ const paths = readablePaths(root);
930
+ if (paths === undefined)
931
+ return [];
932
+ return withLock(paths, () => {
933
+ const handle = openLogForRead(paths.log);
934
+ if (handle === undefined) {
935
+ assertTrustedParents(paths);
936
+ return [];
937
+ }
938
+ try {
939
+ assertTrustedParents(paths);
940
+ return parseLog(readLogBytes(paths.log, handle));
941
+ }
942
+ finally {
943
+ closeSync(handle);
944
+ }
945
+ });
946
+ }