@codyswann/lisa 2.247.3 → 2.250.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 (300) hide show
  1. package/README.md +5 -0
  2. package/all/copy-overwrite/scripts/lisa-work-item.mjs +1102 -0
  3. package/dist/cli/doctor-kane.d.ts +15 -0
  4. package/dist/cli/doctor-kane.d.ts.map +1 -0
  5. package/dist/cli/doctor-kane.js +28 -0
  6. package/dist/cli/doctor-kane.js.map +1 -0
  7. package/dist/cli/doctor.d.ts +3 -1
  8. package/dist/cli/doctor.d.ts.map +1 -1
  9. package/dist/cli/doctor.js +4 -0
  10. package/dist/cli/doctor.js.map +1 -1
  11. package/dist/cli/index.d.ts +7 -0
  12. package/dist/cli/index.d.ts.map +1 -1
  13. package/dist/cli/index.js +56 -8
  14. package/dist/cli/index.js.map +1 -1
  15. package/dist/cli/kane-cmd.d.ts +45 -0
  16. package/dist/cli/kane-cmd.d.ts.map +1 -0
  17. package/dist/cli/kane-cmd.js +91 -0
  18. package/dist/cli/kane-cmd.js.map +1 -0
  19. package/dist/cli/ui-lisa-version.d.ts.map +1 -1
  20. package/dist/cli/ui-lisa-version.js +1 -5
  21. package/dist/cli/ui-lisa-version.js.map +1 -1
  22. package/dist/core/kane-cli-parser.d.ts +9 -0
  23. package/dist/core/kane-cli-parser.d.ts.map +1 -0
  24. package/dist/core/kane-cli-parser.js +145 -0
  25. package/dist/core/kane-cli-parser.js.map +1 -0
  26. package/dist/core/kane-cli-process.d.ts +15 -0
  27. package/dist/core/kane-cli-process.d.ts.map +1 -0
  28. package/dist/core/kane-cli-process.js +77 -0
  29. package/dist/core/kane-cli-process.js.map +1 -0
  30. package/dist/core/kane-cli-types.d.ts +61 -0
  31. package/dist/core/kane-cli-types.d.ts.map +1 -0
  32. package/dist/core/kane-cli-types.js +3 -0
  33. package/dist/core/kane-cli-types.js.map +1 -0
  34. package/dist/core/kane-cli.d.ts +42 -0
  35. package/dist/core/kane-cli.d.ts.map +1 -0
  36. package/dist/core/kane-cli.js +253 -0
  37. package/dist/core/kane-cli.js.map +1 -0
  38. package/dist/core/kane-pilot-report.d.ts +21 -0
  39. package/dist/core/kane-pilot-report.d.ts.map +1 -0
  40. package/dist/core/kane-pilot-report.js +169 -0
  41. package/dist/core/kane-pilot-report.js.map +1 -0
  42. package/dist/core/kane-pilot-types.d.ts +60 -0
  43. package/dist/core/kane-pilot-types.d.ts.map +1 -0
  44. package/dist/core/kane-pilot-types.js +2 -0
  45. package/dist/core/kane-pilot-types.js.map +1 -0
  46. package/dist/core/kane-pilot.d.ts +25 -0
  47. package/dist/core/kane-pilot.d.ts.map +1 -0
  48. package/dist/core/kane-pilot.js +255 -0
  49. package/dist/core/kane-pilot.js.map +1 -0
  50. package/dist/core/project-config-kane.d.ts +27 -0
  51. package/dist/core/project-config-kane.d.ts.map +1 -0
  52. package/dist/core/project-config-kane.js +152 -0
  53. package/dist/core/project-config-kane.js.map +1 -0
  54. package/dist/core/project-config.d.ts +11 -0
  55. package/dist/core/project-config.d.ts.map +1 -1
  56. package/dist/core/project-config.js +7 -5
  57. package/dist/core/project-config.js.map +1 -1
  58. package/package.json +1 -1
  59. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  60. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  61. package/plugins/lisa/.codex-plugin/skills/lisa-codify-verification/SKILL.md +2 -0
  62. package/plugins/lisa/.codex-plugin/skills/lisa-doctor/SKILL.md +7 -0
  63. package/plugins/lisa/.codex-plugin/skills/lisa-exploratory-qa/SKILL.md +3 -0
  64. package/plugins/lisa/.codex-plugin/skills/lisa-github-claim/SKILL.md +27 -0
  65. package/plugins/lisa/.codex-plugin/skills/lisa-github-claim/agents/openai.yaml +4 -0
  66. package/plugins/lisa/.codex-plugin/skills/lisa-implement/SKILL.md +50 -14
  67. package/plugins/lisa/.codex-plugin/skills/lisa-improve-harness/SKILL.md +487 -0
  68. package/plugins/lisa/.codex-plugin/skills/lisa-improve-harness/agents/openai.yaml +4 -0
  69. package/plugins/lisa/.codex-plugin/skills/lisa-jira-claim/SKILL.md +27 -0
  70. package/plugins/lisa/.codex-plugin/skills/lisa-jira-claim/agents/openai.yaml +4 -0
  71. package/plugins/lisa/.codex-plugin/skills/lisa-kane-browser/SKILL.md +80 -0
  72. package/plugins/lisa/.codex-plugin/skills/lisa-kane-browser/agents/openai.yaml +4 -0
  73. package/plugins/lisa/.codex-plugin/skills/lisa-linear-claim/SKILL.md +27 -0
  74. package/plugins/lisa/.codex-plugin/skills/lisa-linear-claim/agents/openai.yaml +4 -0
  75. package/plugins/lisa/.codex-plugin/skills/lisa-monitor/SKILL.md +2 -0
  76. package/plugins/lisa/.codex-plugin/skills/lisa-parity-coderabbit/SKILL.md +10 -0
  77. package/plugins/lisa/.codex-plugin/skills/lisa-product-walkthrough/SKILL.md +2 -0
  78. package/plugins/lisa/.codex-plugin/skills/lisa-review-local/SKILL.md +11 -0
  79. package/plugins/lisa/.codex-plugin/skills/lisa-setup-kane/SKILL.md +96 -0
  80. package/plugins/lisa/.codex-plugin/skills/lisa-setup-kane/agents/openai.yaml +4 -0
  81. package/plugins/lisa/.codex-plugin/skills/lisa-track/SKILL.md +71 -0
  82. package/plugins/lisa/.codex-plugin/skills/lisa-track/agents/openai.yaml +4 -0
  83. package/plugins/lisa/.codex-plugin/skills/lisa-tracker-claim/SKILL.md +35 -0
  84. package/plugins/lisa/.codex-plugin/skills/lisa-tracker-claim/agents/openai.yaml +4 -0
  85. package/plugins/lisa/.codex-plugin/skills/lisa-use-the-product/SKILL.md +1 -1
  86. package/plugins/lisa/.codex-plugin/skills/lisa-verification-lifecycle/SKILL.md +3 -1
  87. package/plugins/lisa/.codex-plugin/skills/lisa-verify/SKILL.md +1 -0
  88. package/plugins/lisa/agents/product-specialist.md +2 -0
  89. package/plugins/lisa/agents/quality-specialist.md +4 -1
  90. package/plugins/lisa/agents/verification-specialist.md +2 -2
  91. package/plugins/lisa/commands/improve-harness.md +6 -0
  92. package/plugins/lisa/commands/track.md +6 -0
  93. package/plugins/lisa/rules/eager/config-resolution.md +9 -0
  94. package/plugins/lisa/rules/eager/convergent-review.md +19 -0
  95. package/plugins/lisa/rules/eager/tracked-work.md +7 -0
  96. package/plugins/lisa/rules/eager/verification.md +1 -1
  97. package/plugins/lisa/rules/reference/config-resolution.md +26 -1
  98. package/plugins/lisa/rules/reference/convergent-review.md +69 -0
  99. package/plugins/lisa/rules/reference/tracked-work.md +26 -0
  100. package/plugins/lisa/rules/reference/verification.md +4 -2
  101. package/plugins/lisa/skills/lisa-codify-verification/SKILL.md +2 -0
  102. package/plugins/lisa/skills/lisa-doctor/SKILL.md +7 -0
  103. package/plugins/lisa/skills/lisa-exploratory-qa/SKILL.md +3 -0
  104. package/plugins/lisa/skills/lisa-github-claim/SKILL.md +27 -0
  105. package/plugins/lisa/skills/lisa-github-claim/agents/openai.yaml +4 -0
  106. package/plugins/lisa/skills/lisa-implement/SKILL.md +50 -14
  107. package/plugins/lisa/skills/lisa-improve-harness/SKILL.md +487 -0
  108. package/plugins/lisa/skills/lisa-improve-harness/agents/openai.yaml +4 -0
  109. package/plugins/lisa/skills/lisa-jira-claim/SKILL.md +27 -0
  110. package/plugins/lisa/skills/lisa-jira-claim/agents/openai.yaml +4 -0
  111. package/plugins/lisa/skills/lisa-kane-browser/SKILL.md +80 -0
  112. package/plugins/lisa/skills/lisa-kane-browser/agents/openai.yaml +4 -0
  113. package/plugins/lisa/skills/lisa-linear-claim/SKILL.md +27 -0
  114. package/plugins/lisa/skills/lisa-linear-claim/agents/openai.yaml +4 -0
  115. package/plugins/lisa/skills/lisa-monitor/SKILL.md +2 -0
  116. package/plugins/lisa/skills/lisa-parity-coderabbit/SKILL.md +10 -0
  117. package/plugins/lisa/skills/lisa-product-walkthrough/SKILL.md +2 -0
  118. package/plugins/lisa/skills/lisa-review-local/SKILL.md +11 -0
  119. package/plugins/lisa/skills/lisa-setup-kane/SKILL.md +96 -0
  120. package/plugins/lisa/skills/lisa-setup-kane/agents/openai.yaml +4 -0
  121. package/plugins/lisa/skills/lisa-track/SKILL.md +71 -0
  122. package/plugins/lisa/skills/lisa-track/agents/openai.yaml +4 -0
  123. package/plugins/lisa/skills/lisa-tracker-claim/SKILL.md +35 -0
  124. package/plugins/lisa/skills/lisa-tracker-claim/agents/openai.yaml +4 -0
  125. package/plugins/lisa/skills/lisa-use-the-product/SKILL.md +1 -1
  126. package/plugins/lisa/skills/lisa-verification-lifecycle/SKILL.md +3 -1
  127. package/plugins/lisa/skills/lisa-verify/SKILL.md +1 -0
  128. package/plugins/lisa-agy/agents/product-specialist.md +2 -0
  129. package/plugins/lisa-agy/agents/quality-specialist.md +4 -1
  130. package/plugins/lisa-agy/agents/verification-specialist.md +2 -2
  131. package/plugins/lisa-agy/commands/lisa/improve-harness.md +6 -0
  132. package/plugins/lisa-agy/commands/lisa/track.md +6 -0
  133. package/plugins/lisa-agy/plugin.json +1 -1
  134. package/plugins/lisa-agy/skills/lisa-codify-verification/SKILL.md +2 -0
  135. package/plugins/lisa-agy/skills/lisa-doctor/SKILL.md +7 -0
  136. package/plugins/lisa-agy/skills/lisa-exploratory-qa/SKILL.md +3 -0
  137. package/plugins/lisa-agy/skills/lisa-github-claim/SKILL.md +27 -0
  138. package/plugins/lisa-agy/skills/lisa-implement/SKILL.md +50 -14
  139. package/plugins/lisa-agy/skills/lisa-improve-harness/SKILL.md +487 -0
  140. package/plugins/lisa-agy/skills/lisa-jira-claim/SKILL.md +27 -0
  141. package/plugins/lisa-agy/skills/lisa-kane-browser/SKILL.md +80 -0
  142. package/plugins/lisa-agy/skills/lisa-linear-claim/SKILL.md +27 -0
  143. package/plugins/lisa-agy/skills/lisa-monitor/SKILL.md +2 -0
  144. package/plugins/lisa-agy/skills/lisa-parity-coderabbit/SKILL.md +10 -0
  145. package/plugins/lisa-agy/skills/lisa-product-walkthrough/SKILL.md +2 -0
  146. package/plugins/lisa-agy/skills/lisa-review-local/SKILL.md +11 -0
  147. package/plugins/lisa-agy/skills/lisa-setup-kane/SKILL.md +96 -0
  148. package/plugins/lisa-agy/skills/lisa-track/SKILL.md +71 -0
  149. package/plugins/lisa-agy/skills/lisa-tracker-claim/SKILL.md +35 -0
  150. package/plugins/lisa-agy/skills/lisa-use-the-product/SKILL.md +1 -1
  151. package/plugins/lisa-agy/skills/lisa-verification-lifecycle/SKILL.md +3 -1
  152. package/plugins/lisa-agy/skills/lisa-verify/SKILL.md +1 -0
  153. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  154. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  155. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  156. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  157. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  158. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  159. package/plugins/lisa-copilot/agents/product-specialist.agent.md +2 -0
  160. package/plugins/lisa-copilot/agents/quality-specialist.agent.md +4 -1
  161. package/plugins/lisa-copilot/agents/verification-specialist.agent.md +2 -2
  162. package/plugins/lisa-copilot/commands/lisa/improve-harness.md +6 -0
  163. package/plugins/lisa-copilot/commands/lisa/track.md +6 -0
  164. package/plugins/lisa-copilot/rules/eager/config-resolution.md +9 -0
  165. package/plugins/lisa-copilot/rules/eager/convergent-review.md +19 -0
  166. package/plugins/lisa-copilot/rules/eager/tracked-work.md +7 -0
  167. package/plugins/lisa-copilot/rules/eager/verification.md +1 -1
  168. package/plugins/lisa-copilot/rules/reference/config-resolution.md +26 -1
  169. package/plugins/lisa-copilot/rules/reference/convergent-review.md +69 -0
  170. package/plugins/lisa-copilot/rules/reference/tracked-work.md +26 -0
  171. package/plugins/lisa-copilot/rules/reference/verification.md +4 -2
  172. package/plugins/lisa-copilot/skills/lisa-codify-verification/SKILL.md +2 -0
  173. package/plugins/lisa-copilot/skills/lisa-doctor/SKILL.md +7 -0
  174. package/plugins/lisa-copilot/skills/lisa-exploratory-qa/SKILL.md +3 -0
  175. package/plugins/lisa-copilot/skills/lisa-github-claim/SKILL.md +27 -0
  176. package/plugins/lisa-copilot/skills/lisa-implement/SKILL.md +50 -14
  177. package/plugins/lisa-copilot/skills/lisa-improve-harness/SKILL.md +487 -0
  178. package/plugins/lisa-copilot/skills/lisa-jira-claim/SKILL.md +27 -0
  179. package/plugins/lisa-copilot/skills/lisa-kane-browser/SKILL.md +80 -0
  180. package/plugins/lisa-copilot/skills/lisa-linear-claim/SKILL.md +27 -0
  181. package/plugins/lisa-copilot/skills/lisa-monitor/SKILL.md +2 -0
  182. package/plugins/lisa-copilot/skills/lisa-parity-coderabbit/SKILL.md +10 -0
  183. package/plugins/lisa-copilot/skills/lisa-product-walkthrough/SKILL.md +2 -0
  184. package/plugins/lisa-copilot/skills/lisa-review-local/SKILL.md +11 -0
  185. package/plugins/lisa-copilot/skills/lisa-setup-kane/SKILL.md +96 -0
  186. package/plugins/lisa-copilot/skills/lisa-track/SKILL.md +71 -0
  187. package/plugins/lisa-copilot/skills/lisa-tracker-claim/SKILL.md +35 -0
  188. package/plugins/lisa-copilot/skills/lisa-use-the-product/SKILL.md +1 -1
  189. package/plugins/lisa-copilot/skills/lisa-verification-lifecycle/SKILL.md +3 -1
  190. package/plugins/lisa-copilot/skills/lisa-verify/SKILL.md +1 -0
  191. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  192. package/plugins/lisa-cursor/agents/product-specialist.md +2 -0
  193. package/plugins/lisa-cursor/agents/quality-specialist.md +4 -1
  194. package/plugins/lisa-cursor/agents/verification-specialist.md +2 -2
  195. package/plugins/lisa-cursor/commands/lisa/improve-harness.md +6 -0
  196. package/plugins/lisa-cursor/commands/lisa/track.md +6 -0
  197. package/plugins/lisa-cursor/rules/config-resolution-reference.mdc +26 -1
  198. package/plugins/lisa-cursor/rules/config-resolution.mdc +9 -0
  199. package/plugins/lisa-cursor/rules/convergent-review-reference.mdc +74 -0
  200. package/plugins/lisa-cursor/rules/convergent-review.mdc +24 -0
  201. package/plugins/lisa-cursor/rules/tracked-work-reference.mdc +31 -0
  202. package/plugins/lisa-cursor/rules/tracked-work.mdc +12 -0
  203. package/plugins/lisa-cursor/rules/verification-reference.mdc +4 -2
  204. package/plugins/lisa-cursor/rules/verification.mdc +1 -1
  205. package/plugins/lisa-cursor/skills/lisa-codify-verification/SKILL.md +2 -0
  206. package/plugins/lisa-cursor/skills/lisa-doctor/SKILL.md +7 -0
  207. package/plugins/lisa-cursor/skills/lisa-exploratory-qa/SKILL.md +3 -0
  208. package/plugins/lisa-cursor/skills/lisa-github-claim/SKILL.md +27 -0
  209. package/plugins/lisa-cursor/skills/lisa-implement/SKILL.md +50 -14
  210. package/plugins/lisa-cursor/skills/lisa-improve-harness/SKILL.md +487 -0
  211. package/plugins/lisa-cursor/skills/lisa-jira-claim/SKILL.md +27 -0
  212. package/plugins/lisa-cursor/skills/lisa-kane-browser/SKILL.md +80 -0
  213. package/plugins/lisa-cursor/skills/lisa-linear-claim/SKILL.md +27 -0
  214. package/plugins/lisa-cursor/skills/lisa-monitor/SKILL.md +2 -0
  215. package/plugins/lisa-cursor/skills/lisa-parity-coderabbit/SKILL.md +10 -0
  216. package/plugins/lisa-cursor/skills/lisa-product-walkthrough/SKILL.md +2 -0
  217. package/plugins/lisa-cursor/skills/lisa-review-local/SKILL.md +11 -0
  218. package/plugins/lisa-cursor/skills/lisa-setup-kane/SKILL.md +96 -0
  219. package/plugins/lisa-cursor/skills/lisa-track/SKILL.md +71 -0
  220. package/plugins/lisa-cursor/skills/lisa-tracker-claim/SKILL.md +35 -0
  221. package/plugins/lisa-cursor/skills/lisa-use-the-product/SKILL.md +1 -1
  222. package/plugins/lisa-cursor/skills/lisa-verification-lifecycle/SKILL.md +3 -1
  223. package/plugins/lisa-cursor/skills/lisa-verify/SKILL.md +1 -0
  224. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  225. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  226. package/plugins/lisa-expo-agy/plugin.json +1 -1
  227. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  228. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  229. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  230. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  231. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  232. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  233. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  234. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  235. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  236. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  237. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  238. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  239. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  240. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  241. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  242. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  243. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  244. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  245. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  246. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  247. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  248. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  249. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  250. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  251. package/plugins/lisa-rails-agy/plugin.json +1 -1
  252. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  253. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  254. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  255. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  256. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  257. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  258. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  259. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  260. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  261. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  262. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  263. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  264. package/plugins/src/base/agents/product-specialist.md +2 -0
  265. package/plugins/src/base/agents/quality-specialist.md +4 -1
  266. package/plugins/src/base/agents/verification-specialist.md +2 -2
  267. package/plugins/src/base/commands/improve-harness.md +6 -0
  268. package/plugins/src/base/commands/track.md +6 -0
  269. package/plugins/src/base/rules/eager/config-resolution.md +9 -0
  270. package/plugins/src/base/rules/eager/convergent-review.md +19 -0
  271. package/plugins/src/base/rules/eager/tracked-work.md +7 -0
  272. package/plugins/src/base/rules/eager/verification.md +1 -1
  273. package/plugins/src/base/rules/reference/config-resolution.md +26 -1
  274. package/plugins/src/base/rules/reference/convergent-review.md +69 -0
  275. package/plugins/src/base/rules/reference/tracked-work.md +26 -0
  276. package/plugins/src/base/rules/reference/verification.md +4 -2
  277. package/plugins/src/base/skills/lisa-codify-verification/SKILL.md +2 -0
  278. package/plugins/src/base/skills/lisa-doctor/SKILL.md +7 -0
  279. package/plugins/src/base/skills/lisa-exploratory-qa/SKILL.md +3 -0
  280. package/plugins/src/base/skills/lisa-github-claim/SKILL.md +27 -0
  281. package/plugins/src/base/skills/lisa-implement/SKILL.md +50 -14
  282. package/plugins/src/base/skills/lisa-improve-harness/SKILL.md +487 -0
  283. package/plugins/src/base/skills/lisa-jira-claim/SKILL.md +27 -0
  284. package/plugins/src/base/skills/lisa-kane-browser/SKILL.md +80 -0
  285. package/plugins/src/base/skills/lisa-linear-claim/SKILL.md +27 -0
  286. package/plugins/src/base/skills/lisa-monitor/SKILL.md +2 -0
  287. package/plugins/src/base/skills/lisa-parity-coderabbit/SKILL.md +10 -0
  288. package/plugins/src/base/skills/lisa-product-walkthrough/SKILL.md +2 -0
  289. package/plugins/src/base/skills/lisa-review-local/SKILL.md +11 -0
  290. package/plugins/src/base/skills/lisa-setup-kane/SKILL.md +96 -0
  291. package/plugins/src/base/skills/lisa-track/SKILL.md +71 -0
  292. package/plugins/src/base/skills/lisa-tracker-claim/SKILL.md +35 -0
  293. package/plugins/src/base/skills/lisa-use-the-product/SKILL.md +1 -1
  294. package/plugins/src/base/skills/lisa-verification-lifecycle/SKILL.md +3 -1
  295. package/plugins/src/base/skills/lisa-verify/SKILL.md +1 -0
  296. package/rails/copy-overwrite/lefthook.yml +10 -0
  297. package/scripts/lisa-work-item.mjs +5 -0
  298. package/typescript/copy-contents/.husky/commit-msg +9 -23
  299. package/typescript/copy-contents/.husky/pre-push +10 -0
  300. package/typescript/copy-contents/.husky/prepare-commit-msg +15 -0
@@ -0,0 +1,21 @@
1
+ import type { KanePilotManifest, KanePilotRecord, KanePilotReport } from "./kane-pilot-types.js";
2
+ /** Default thresholds from Lisa's approved Kane integration plan. */
3
+ export declare const DEFAULT_KANE_PILOT_THRESHOLDS: Readonly<{
4
+ minimumRuns: 50;
5
+ minimumDays: 30;
6
+ evidenceCapturePercent: 90;
7
+ maximumProviderFailurePercent: 5;
8
+ maximumInconsistentVerdictPercent: 5;
9
+ minimumTimeReductionPercent: 30;
10
+ evidenceCompletenessPercent: 95;
11
+ maximumPolicyIncidents: 0;
12
+ }>;
13
+ /**
14
+ * Compute the collecting, adopt, or reject pilot verdict.
15
+ * @param manifest - Validated pilot manifest
16
+ * @param records - Validated accumulated records
17
+ * @param now - Evaluation time
18
+ * @returns Pilot report
19
+ */
20
+ export declare function buildKanePilotReport(manifest: KanePilotManifest, records: readonly KanePilotRecord[], now: Date): KanePilotReport;
21
+ //# sourceMappingURL=kane-pilot-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kane-pilot-report.d.ts","sourceRoot":"","sources":["../../src/core/kane-pilot-report.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAE/B,qEAAqE;AACrE,eAAO,MAAM,6BAA6B;;;;;;;;;EASxC,CAAC;AA0KH;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,SAAS,eAAe,EAAE,EACnC,GAAG,EAAE,IAAI,GACR,eAAe,CA8CjB"}
@@ -0,0 +1,169 @@
1
+ /** Default thresholds from Lisa's approved Kane integration plan. */
2
+ export const DEFAULT_KANE_PILOT_THRESHOLDS = Object.freeze({
3
+ minimumRuns: 50,
4
+ minimumDays: 30,
5
+ evidenceCapturePercent: 90,
6
+ maximumProviderFailurePercent: 5,
7
+ maximumInconsistentVerdictPercent: 5,
8
+ minimumTimeReductionPercent: 30,
9
+ evidenceCompletenessPercent: 95,
10
+ maximumPolicyIncidents: 0,
11
+ });
12
+ /**
13
+ * Calculate a count as a bounded percentage.
14
+ * @param count - Matching record count
15
+ * @param total - Total record count
16
+ * @returns Percentage rounded to two decimals
17
+ */
18
+ function percentage(count, total) {
19
+ return total === 0 ? 0 : Number(((count / total) * 100).toFixed(2));
20
+ }
21
+ /**
22
+ * Calculate the median of an ordered or unordered numeric sample.
23
+ * @param values - Numeric sample
24
+ * @returns Median or undefined for an empty sample
25
+ */
26
+ function median(values) {
27
+ if (values.length === 0)
28
+ return undefined;
29
+ const ordered = [...values].sort((left, right) => left - right);
30
+ const middle = Math.floor(ordered.length / 2);
31
+ if (ordered.length % 2 === 1)
32
+ return ordered[middle];
33
+ return (ordered[middle - 1] + ordered[middle]) / 2;
34
+ }
35
+ /**
36
+ * Group records by application and case without mutable accumulator state.
37
+ * @param records - Pilot records
38
+ * @returns Outcome/count observations per case
39
+ */
40
+ function caseObservations(records) {
41
+ const keys = [
42
+ ...new Set(records.map(record => `${record.application}\u0000${record.caseId}`)),
43
+ ];
44
+ return keys.map(key => {
45
+ const matching = records.filter(record => `${record.application}\u0000${record.caseId}` === key);
46
+ return {
47
+ outcomes: new Set(matching.map(record => record.outcome)),
48
+ count: matching.length,
49
+ };
50
+ });
51
+ }
52
+ /**
53
+ * Calculate every quantitative pilot metric.
54
+ * @param records - Append-only pilot records
55
+ * @param manifest - Pilot policy-review and budget configuration
56
+ * @returns Aggregate metrics
57
+ */
58
+ function calculateMetrics(records, manifest) {
59
+ const total = records.length;
60
+ const observations = caseObservations(records);
61
+ const reductions = records
62
+ .filter(record => record.durationSeconds !== undefined &&
63
+ record.baselineSeconds !== undefined)
64
+ .map(record => (1 -
65
+ record.durationSeconds /
66
+ record.baselineSeconds) *
67
+ 100);
68
+ const credits = records
69
+ .map(record => record.credits)
70
+ .filter((credit) => credit !== undefined);
71
+ const medianReduction = median(reductions);
72
+ return {
73
+ evidenceCapturePercent: percentage(records.filter(record => record.evidenceCaptured ?? record.evidenceComplete).length, total),
74
+ providerFailurePercent: percentage(records.filter(record => ["tool_failed", "timed_out"].includes(record.outcome)).length, total),
75
+ inconsistentVerdictPercent: percentage(observations.filter(observation => observation.outcomes.size > 1).length, observations.length),
76
+ evidenceCompletenessPercent: percentage(records.filter(record => record.evidenceComplete).length, total),
77
+ policyIncidents: Math.max(records.filter(record => record.policyIncident).length, manifest.policyReview?.incidents ?? 0),
78
+ ...(medianReduction === undefined
79
+ ? {}
80
+ : { timeReductionPercent: Number(medianReduction.toFixed(2)) }),
81
+ ...(credits.length === 0
82
+ ? {}
83
+ : {
84
+ averageCreditsPerRun: Number((credits.reduce((sum, credit) => sum + credit, 0) / credits.length).toFixed(2)),
85
+ }),
86
+ hasRepeatedCaseObservation: observations.length > 0 &&
87
+ observations.every(observation => observation.count >= 2),
88
+ };
89
+ }
90
+ /**
91
+ * List failed adoption thresholds.
92
+ * @param manifest - Pilot budget configuration
93
+ * @param metrics - Calculated metrics
94
+ * @returns Human-readable failed gates
95
+ */
96
+ function failureReasons(manifest, metrics) {
97
+ return [
98
+ metrics.evidenceCapturePercent < 90
99
+ ? "evidence capture below 90%"
100
+ : undefined,
101
+ metrics.providerFailurePercent > 5
102
+ ? "provider failure rate above 5%"
103
+ : undefined,
104
+ metrics.inconsistentVerdictPercent > 5
105
+ ? "inconsistent verdict rate above 5%"
106
+ : undefined,
107
+ metrics.timeReductionPercent !== undefined &&
108
+ metrics.timeReductionPercent < 30
109
+ ? "median workflow time reduction below 30%"
110
+ : undefined,
111
+ metrics.evidenceCompletenessPercent < 95
112
+ ? "evidence completeness below 95%"
113
+ : undefined,
114
+ metrics.policyIncidents > 0 ? "policy incidents detected" : undefined,
115
+ metrics.averageCreditsPerRun !== undefined &&
116
+ manifest.maximumCreditsPerRun !== undefined &&
117
+ metrics.averageCreditsPerRun > manifest.maximumCreditsPerRun
118
+ ? "average credit usage exceeds the manifest budget"
119
+ : undefined,
120
+ ].filter((reason) => reason !== undefined);
121
+ }
122
+ /**
123
+ * Compute the collecting, adopt, or reject pilot verdict.
124
+ * @param manifest - Validated pilot manifest
125
+ * @param records - Validated accumulated records
126
+ * @param now - Evaluation time
127
+ * @returns Pilot report
128
+ */
129
+ export function buildKanePilotReport(manifest, records, now) {
130
+ const daysElapsed = Math.max(0, Math.floor((now.getTime() - Date.parse(manifest.startedAt)) / (24 * 60 * 60 * 1000)));
131
+ const metrics = calculateMetrics(records, manifest);
132
+ const failures = failureReasons(manifest, metrics);
133
+ const policyReviewMature = manifest.policyReview !== undefined &&
134
+ Date.parse(manifest.policyReview.reviewedAt) <= now.getTime() &&
135
+ Date.parse(manifest.policyReview.reviewedAt) -
136
+ Date.parse(manifest.startedAt) >=
137
+ DEFAULT_KANE_PILOT_THRESHOLDS.minimumDays * 24 * 60 * 60 * 1000;
138
+ const collecting = daysElapsed < DEFAULT_KANE_PILOT_THRESHOLDS.minimumDays ||
139
+ records.length < DEFAULT_KANE_PILOT_THRESHOLDS.minimumRuns ||
140
+ !metrics.hasRepeatedCaseObservation ||
141
+ !policyReviewMature;
142
+ return {
143
+ verdict: collecting
144
+ ? "collecting"
145
+ : failures.length === 0
146
+ ? "adopt"
147
+ : "reject",
148
+ reasons: collecting
149
+ ? [
150
+ `collect until at least ${String(DEFAULT_KANE_PILOT_THRESHOLDS.minimumDays)} days, ${String(DEFAULT_KANE_PILOT_THRESHOLDS.minimumRuns)} runs, two observations per case, and a mature exterior policy review`,
151
+ ...failures,
152
+ ]
153
+ : failures,
154
+ daysElapsed,
155
+ totalRuns: records.length,
156
+ evidenceCapturePercent: metrics.evidenceCapturePercent,
157
+ providerFailurePercent: metrics.providerFailurePercent,
158
+ inconsistentVerdictPercent: metrics.inconsistentVerdictPercent,
159
+ evidenceCompletenessPercent: metrics.evidenceCompletenessPercent,
160
+ policyIncidents: metrics.policyIncidents,
161
+ ...(metrics.timeReductionPercent === undefined
162
+ ? {}
163
+ : { timeReductionPercent: metrics.timeReductionPercent }),
164
+ ...(metrics.averageCreditsPerRun === undefined
165
+ ? {}
166
+ : { averageCreditsPerRun: metrics.averageCreditsPerRun }),
167
+ };
168
+ }
169
+ //# sourceMappingURL=kane-pilot-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kane-pilot-report.js","sourceRoot":"","sources":["../../src/core/kane-pilot-report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /** Durable manifest, record, and report types for the Kane pilot. */
2
+ import type { KaneOutcome } from "./kane-cli.js";
3
+ /** One repeatable pilot journey. */
4
+ export interface KanePilotCase {
5
+ readonly id: string;
6
+ readonly objective: string;
7
+ readonly url: string;
8
+ readonly baselineSeconds?: number;
9
+ }
10
+ /** One disposable downstream application participating in the pilot. */
11
+ export interface KanePilotApplication {
12
+ readonly name: string;
13
+ readonly projectRoot: string;
14
+ readonly environment: string;
15
+ readonly cases: readonly KanePilotCase[];
16
+ }
17
+ /** Exterior review of security, privacy, and policy incidents. */
18
+ export interface KanePilotPolicyReview {
19
+ readonly reviewedAt: string;
20
+ readonly incidents: number;
21
+ }
22
+ /** Checked-in pilot manifest. */
23
+ export interface KanePilotManifest {
24
+ readonly version: 1;
25
+ readonly startedAt: string;
26
+ readonly applications: readonly KanePilotApplication[];
27
+ readonly resultsFile: string;
28
+ readonly maximumCreditsPerRun?: number;
29
+ readonly policyReview?: KanePilotPolicyReview;
30
+ }
31
+ /** Append-only record for one case execution. */
32
+ export interface KanePilotRecord {
33
+ readonly timestamp: string;
34
+ readonly application: string;
35
+ readonly caseId: string;
36
+ readonly outcome: KaneOutcome;
37
+ readonly durationSeconds?: number;
38
+ readonly baselineSeconds?: number;
39
+ readonly credits?: number;
40
+ readonly evidenceCaptured?: boolean;
41
+ readonly evidenceComplete: boolean;
42
+ readonly policyIncident: boolean;
43
+ }
44
+ /** Pilot adoption status. */
45
+ export type KanePilotVerdict = "collecting" | "adopt" | "reject";
46
+ /** Aggregated metrics and gate verdict. */
47
+ export interface KanePilotReport {
48
+ readonly verdict: KanePilotVerdict;
49
+ readonly reasons: readonly string[];
50
+ readonly daysElapsed: number;
51
+ readonly totalRuns: number;
52
+ readonly evidenceCapturePercent: number;
53
+ readonly providerFailurePercent: number;
54
+ readonly inconsistentVerdictPercent: number;
55
+ readonly timeReductionPercent?: number;
56
+ readonly evidenceCompletenessPercent: number;
57
+ readonly policyIncidents: number;
58
+ readonly averageCreditsPerRun?: number;
59
+ }
60
+ //# sourceMappingURL=kane-pilot-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kane-pilot-types.d.ts","sourceRoot":"","sources":["../../src/core/kane-pilot-types.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,oCAAoC;AACpC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,wEAAwE;AACxE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;CAC1C;AAED,kEAAkE;AAClE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,iCAAiC;AACjC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACvD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,YAAY,CAAC,EAAE,qBAAqB,CAAC;CAC/C;AAED,iDAAiD;AACjD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC;AAED,6BAA6B;AAC7B,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEjE,2CAA2C;AAC3C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAC;IAC5C,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,2BAA2B,EAAE,MAAM,CAAC;IAC7C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACxC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=kane-pilot-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kane-pilot-types.js","sourceRoot":"","sources":["../../src/core/kane-pilot-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import { runKane } from "./kane-cli.js";
2
+ import { buildKanePilotReport, DEFAULT_KANE_PILOT_THRESHOLDS } from "./kane-pilot-report.js";
3
+ import type { KanePilotManifest, KanePilotReport } from "./kane-pilot-types.js";
4
+ export { buildKanePilotReport, DEFAULT_KANE_PILOT_THRESHOLDS };
5
+ export type { KanePilotApplication, KanePilotCase, KanePilotManifest, KanePilotPolicyReview, KanePilotRecord, KanePilotReport, KanePilotVerdict, } from "./kane-pilot-types.js";
6
+ /**
7
+ * Validate an untrusted pilot manifest.
8
+ * @param value - Parsed manifest value
9
+ * @returns Valid pilot manifest
10
+ */
11
+ export declare function parseKanePilotManifest(value: unknown): KanePilotManifest;
12
+ /**
13
+ * Execute each configured case once and append immutable records.
14
+ * @param manifestPath - Pilot manifest path
15
+ * @param runner - Injectable adapter runner
16
+ * @returns Current pilot report
17
+ */
18
+ export declare function executeKanePilot(manifestPath: string, runner?: typeof runKane): Promise<KanePilotReport>;
19
+ /**
20
+ * Read accumulated JSONL records and evaluate the adoption gates.
21
+ * @param manifestPath - Pilot manifest path
22
+ * @returns Current pilot report
23
+ */
24
+ export declare function readKanePilotReport(manifestPath: string): Promise<KanePilotReport>;
25
+ //# sourceMappingURL=kane-pilot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kane-pilot.d.ts","sourceRoot":"","sources":["../../src/core/kane-pilot.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAwC,MAAM,eAAe,CAAC;AAC9E,OAAO,EACL,oBAAoB,EACpB,6BAA6B,EAC9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAGV,iBAAiB,EAGjB,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,CAAC;AAC/D,YAAY,EACV,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAyF/B;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAyCxE;AAoGD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,MAAM,EACpB,MAAM,GAAE,OAAO,OAAiB,GAC/B,OAAO,CAAC,eAAe,CAAC,CAuC1B;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,eAAe,CAAC,CAc1B"}
@@ -0,0 +1,255 @@
1
+ /** Manifest validation and execution for the Kane longitudinal pilot. */
2
+ import { appendFile, readFile } from "node:fs/promises";
3
+ import * as path from "node:path";
4
+ import { runKane } from "./kane-cli.js";
5
+ import { buildKanePilotReport, DEFAULT_KANE_PILOT_THRESHOLDS, } from "./kane-pilot-report.js";
6
+ export { buildKanePilotReport, DEFAULT_KANE_PILOT_THRESHOLDS };
7
+ /**
8
+ * Validate an optional exterior policy review.
9
+ * @param value - Untrusted policy-review value
10
+ * @returns Valid review or undefined
11
+ */
12
+ function parsePolicyReview(value) {
13
+ if (value === undefined)
14
+ return undefined;
15
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
16
+ throw new Error("Kane pilot policyReview must be an object");
17
+ }
18
+ const review = value;
19
+ if (typeof review.reviewedAt !== "string" ||
20
+ Number.isNaN(Date.parse(review.reviewedAt))) {
21
+ throw new Error("Kane pilot policyReview.reviewedAt must be an ISO timestamp");
22
+ }
23
+ if (!Number.isInteger(review.incidents) || Number(review.incidents) < 0) {
24
+ throw new Error("Kane pilot policyReview.incidents must be a non-negative integer");
25
+ }
26
+ return {
27
+ reviewedAt: review.reviewedAt,
28
+ incidents: Number(review.incidents),
29
+ };
30
+ }
31
+ /**
32
+ * Validate one pilot case.
33
+ * @param value - Untrusted case value
34
+ * @returns Valid pilot case
35
+ */
36
+ function parsePilotCase(value) {
37
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
38
+ throw new Error("Kane pilot case must be an object");
39
+ }
40
+ const record = value;
41
+ for (const field of ["id", "objective", "url"]) {
42
+ if (typeof record[field] !== "string" || record[field].length === 0) {
43
+ throw new Error(`Kane pilot case ${field} must be a string`);
44
+ }
45
+ }
46
+ if (record.baselineSeconds !== undefined &&
47
+ (typeof record.baselineSeconds !== "number" || record.baselineSeconds <= 0)) {
48
+ throw new Error("Kane pilot baselineSeconds must be positive");
49
+ }
50
+ return {
51
+ id: record.id,
52
+ objective: record.objective,
53
+ url: record.url,
54
+ ...(record.baselineSeconds === undefined
55
+ ? {}
56
+ : { baselineSeconds: record.baselineSeconds }),
57
+ };
58
+ }
59
+ /**
60
+ * Validate one pilot application.
61
+ * @param value - Untrusted application value
62
+ * @returns Valid pilot application
63
+ */
64
+ function parsePilotApplication(value) {
65
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
66
+ throw new Error("Kane pilot application must be an object");
67
+ }
68
+ const record = value;
69
+ for (const field of ["name", "projectRoot", "environment"]) {
70
+ if (typeof record[field] !== "string" || record[field].length === 0) {
71
+ throw new Error(`Kane pilot application ${field} must be a string`);
72
+ }
73
+ }
74
+ if (!Array.isArray(record.cases) || record.cases.length === 0) {
75
+ throw new Error("Kane pilot application must define cases");
76
+ }
77
+ return {
78
+ name: record.name,
79
+ projectRoot: record.projectRoot,
80
+ environment: record.environment,
81
+ cases: record.cases.map(parsePilotCase),
82
+ };
83
+ }
84
+ /**
85
+ * Validate an untrusted pilot manifest.
86
+ * @param value - Parsed manifest value
87
+ * @returns Valid pilot manifest
88
+ */
89
+ export function parseKanePilotManifest(value) {
90
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
91
+ throw new Error("Kane pilot manifest must be an object");
92
+ }
93
+ const record = value;
94
+ const policyReview = parsePolicyReview(record.policyReview);
95
+ if (record.version !== 1)
96
+ throw new Error("Kane pilot version must be 1");
97
+ if (typeof record.startedAt !== "string" ||
98
+ Number.isNaN(Date.parse(record.startedAt))) {
99
+ throw new Error("Kane pilot startedAt must be an ISO timestamp");
100
+ }
101
+ if (typeof record.resultsFile !== "string" ||
102
+ record.resultsFile.length === 0 ||
103
+ path.isAbsolute(record.resultsFile) ||
104
+ record.resultsFile.split(/[\\/]/u).includes("..")) {
105
+ throw new Error("Kane pilot resultsFile must be a safe relative path");
106
+ }
107
+ if (!Array.isArray(record.applications) || record.applications.length < 2) {
108
+ throw new Error("Kane pilot requires at least two applications");
109
+ }
110
+ if (record.maximumCreditsPerRun !== undefined &&
111
+ (typeof record.maximumCreditsPerRun !== "number" ||
112
+ record.maximumCreditsPerRun <= 0)) {
113
+ throw new Error("maximumCreditsPerRun must be a positive number");
114
+ }
115
+ return {
116
+ version: 1,
117
+ startedAt: record.startedAt,
118
+ resultsFile: record.resultsFile,
119
+ applications: record.applications.map(parsePilotApplication),
120
+ ...(policyReview === undefined ? {} : { policyReview }),
121
+ ...(record.maximumCreditsPerRun === undefined
122
+ ? {}
123
+ : { maximumCreditsPerRun: record.maximumCreditsPerRun }),
124
+ };
125
+ }
126
+ /**
127
+ * Convert one adapter result into a longitudinal record.
128
+ * @param application - Pilot application
129
+ * @param testCase - Pilot journey
130
+ * @param result - Normalized adapter result
131
+ * @returns Durable pilot record
132
+ */
133
+ function toPilotRecord(application, testCase, result) {
134
+ return {
135
+ timestamp: new Date().toISOString(),
136
+ application: application.name,
137
+ caseId: testCase.id,
138
+ outcome: result.outcome,
139
+ ...(result.terminal?.duration === undefined
140
+ ? {}
141
+ : { durationSeconds: result.terminal.duration }),
142
+ ...(testCase.baselineSeconds === undefined
143
+ ? {}
144
+ : { baselineSeconds: testCase.baselineSeconds }),
145
+ ...(result.terminal?.credits === undefined
146
+ ? {}
147
+ : { credits: result.terminal.credits }),
148
+ evidenceCaptured: result.evidencePack !== undefined,
149
+ evidenceComplete: result.evidencePack !== undefined &&
150
+ result.terminal?.test_url !== undefined,
151
+ policyIncident: false,
152
+ };
153
+ }
154
+ /**
155
+ * Parse one stored record fail-closed.
156
+ * @param value - Parsed JSONL value
157
+ * @returns Valid pilot record
158
+ */
159
+ function parseStoredRecord(value) {
160
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
161
+ throw new Error("Kane pilot record must be an object");
162
+ }
163
+ const record = value;
164
+ const outcomes = [
165
+ "passed",
166
+ "product_failed",
167
+ "tool_failed",
168
+ "timed_out",
169
+ ];
170
+ if (typeof record.timestamp !== "string" ||
171
+ Number.isNaN(Date.parse(record.timestamp)) ||
172
+ typeof record.application !== "string" ||
173
+ typeof record.caseId !== "string" ||
174
+ !outcomes.includes(record.outcome) ||
175
+ typeof record.evidenceComplete !== "boolean" ||
176
+ typeof record.policyIncident !== "boolean") {
177
+ throw new Error("Kane pilot record has an invalid required field");
178
+ }
179
+ for (const field of [
180
+ "durationSeconds",
181
+ "baselineSeconds",
182
+ "credits",
183
+ ]) {
184
+ if (record[field] !== undefined && typeof record[field] !== "number") {
185
+ throw new Error(`Kane pilot record ${field} must be numeric`);
186
+ }
187
+ }
188
+ if (record.evidenceCaptured !== undefined &&
189
+ typeof record.evidenceCaptured !== "boolean") {
190
+ throw new Error("Kane pilot record evidenceCaptured must be boolean");
191
+ }
192
+ return value;
193
+ }
194
+ /**
195
+ * Read validated JSONL records, treating an absent file as empty.
196
+ * @param resultsPath - Absolute results path
197
+ * @returns Validated records
198
+ */
199
+ async function readRecords(resultsPath) {
200
+ try {
201
+ return (await readFile(resultsPath, "utf8"))
202
+ .split(/\r?\n/u)
203
+ .filter(line => line.trim().length > 0)
204
+ .map(line => parseStoredRecord(JSON.parse(line)));
205
+ }
206
+ catch (error) {
207
+ if (error.code === "ENOENT")
208
+ return [];
209
+ throw error;
210
+ }
211
+ }
212
+ /**
213
+ * Execute each configured case once and append immutable records.
214
+ * @param manifestPath - Pilot manifest path
215
+ * @param runner - Injectable adapter runner
216
+ * @returns Current pilot report
217
+ */
218
+ export async function executeKanePilot(manifestPath, runner = runKane) {
219
+ const absoluteManifest = path.resolve(manifestPath);
220
+ const manifest = parseKanePilotManifest(JSON.parse(await readFile(absoluteManifest, "utf8")));
221
+ const manifestDirectory = path.dirname(absoluteManifest);
222
+ const resultsPath = path.resolve(manifestDirectory, manifest.resultsFile);
223
+ if (!resultsPath.startsWith(`${manifestDirectory}${path.sep}`)) {
224
+ throw new Error("Kane pilot resultsFile escapes the manifest directory");
225
+ }
226
+ const cases = manifest.applications.flatMap(application => application.cases.map(testCase => ({ application, testCase })));
227
+ const records = await cases.reduce(async (previous, entry) => {
228
+ const existing = await previous;
229
+ const result = await runner({
230
+ projectRoot: path.resolve(manifestDirectory, entry.application.projectRoot),
231
+ environment: entry.application.environment,
232
+ mutation: "full",
233
+ objective: entry.testCase.objective,
234
+ url: entry.testCase.url,
235
+ });
236
+ return [
237
+ ...existing,
238
+ toPilotRecord(entry.application, entry.testCase, result),
239
+ ];
240
+ }, Promise.resolve([]));
241
+ await appendFile(resultsPath, `${records.map(record => JSON.stringify(record)).join("\n")}\n`, "utf8");
242
+ return await readKanePilotReport(absoluteManifest);
243
+ }
244
+ /**
245
+ * Read accumulated JSONL records and evaluate the adoption gates.
246
+ * @param manifestPath - Pilot manifest path
247
+ * @returns Current pilot report
248
+ */
249
+ export async function readKanePilotReport(manifestPath) {
250
+ const absoluteManifest = path.resolve(manifestPath);
251
+ const manifest = parseKanePilotManifest(JSON.parse(await readFile(absoluteManifest, "utf8")));
252
+ const resultsPath = path.resolve(path.dirname(absoluteManifest), manifest.resultsFile);
253
+ return buildKanePilotReport(manifest, await readRecords(resultsPath), new Date());
254
+ }
255
+ //# sourceMappingURL=kane-pilot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kane-pilot.js","sourceRoot":"","sources":["../../src/core/kane-pilot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /** Validation contract for the optional Kane browser provider config. */
2
+ /** Kane CLI empirical-browser provider configuration. */
3
+ export interface KaneBrowserConfig {
4
+ readonly enabled?: boolean;
5
+ readonly version?: string;
6
+ readonly cloudUploadApproved?: boolean;
7
+ readonly allowedEnvironments?: readonly string[];
8
+ readonly projectId?: string;
9
+ readonly folderId?: string;
10
+ readonly timeoutSeconds?: number;
11
+ }
12
+ /** Browser-provider configuration nested under `verification`. */
13
+ export interface BrowserVerificationConfig {
14
+ readonly kane?: KaneBrowserConfig;
15
+ }
16
+ /** Empirical verification provider configuration. */
17
+ export interface VerificationConfig {
18
+ readonly browser?: BrowserVerificationConfig;
19
+ }
20
+ /**
21
+ * Validate the optional verification tree.
22
+ * @param value - Untrusted verification value
23
+ * @param source - Config source shown in errors
24
+ * @returns Valid verification config or undefined
25
+ */
26
+ export declare function validateVerificationConfig(value: unknown, source: string): VerificationConfig | undefined;
27
+ //# sourceMappingURL=project-config-kane.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-config-kane.d.ts","sourceRoot":"","sources":["../../src/core/project-config-kane.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAEzE,yDAAyD;AACzD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,kEAAkE;AAClE,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC;CACnC;AAED,qDAAqD;AACrD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,yBAAyB,CAAC;CAC9C;AAkMD;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,MAAM,GACb,kBAAkB,GAAG,SAAS,CAqBhC"}