@codyswann/lisa 2.247.2 → 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 (304) 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-worker-epoch.d.ts +11 -0
  8. package/dist/cli/doctor-worker-epoch.d.ts.map +1 -0
  9. package/dist/cli/doctor-worker-epoch.js +234 -0
  10. package/dist/cli/doctor-worker-epoch.js.map +1 -0
  11. package/dist/cli/doctor.d.ts +3 -1
  12. package/dist/cli/doctor.d.ts.map +1 -1
  13. package/dist/cli/doctor.js +6 -0
  14. package/dist/cli/doctor.js.map +1 -1
  15. package/dist/cli/index.d.ts +7 -0
  16. package/dist/cli/index.d.ts.map +1 -1
  17. package/dist/cli/index.js +56 -8
  18. package/dist/cli/index.js.map +1 -1
  19. package/dist/cli/kane-cmd.d.ts +45 -0
  20. package/dist/cli/kane-cmd.d.ts.map +1 -0
  21. package/dist/cli/kane-cmd.js +91 -0
  22. package/dist/cli/kane-cmd.js.map +1 -0
  23. package/dist/cli/ui-lisa-version.d.ts.map +1 -1
  24. package/dist/cli/ui-lisa-version.js +1 -5
  25. package/dist/cli/ui-lisa-version.js.map +1 -1
  26. package/dist/core/kane-cli-parser.d.ts +9 -0
  27. package/dist/core/kane-cli-parser.d.ts.map +1 -0
  28. package/dist/core/kane-cli-parser.js +145 -0
  29. package/dist/core/kane-cli-parser.js.map +1 -0
  30. package/dist/core/kane-cli-process.d.ts +15 -0
  31. package/dist/core/kane-cli-process.d.ts.map +1 -0
  32. package/dist/core/kane-cli-process.js +77 -0
  33. package/dist/core/kane-cli-process.js.map +1 -0
  34. package/dist/core/kane-cli-types.d.ts +61 -0
  35. package/dist/core/kane-cli-types.d.ts.map +1 -0
  36. package/dist/core/kane-cli-types.js +3 -0
  37. package/dist/core/kane-cli-types.js.map +1 -0
  38. package/dist/core/kane-cli.d.ts +42 -0
  39. package/dist/core/kane-cli.d.ts.map +1 -0
  40. package/dist/core/kane-cli.js +253 -0
  41. package/dist/core/kane-cli.js.map +1 -0
  42. package/dist/core/kane-pilot-report.d.ts +21 -0
  43. package/dist/core/kane-pilot-report.d.ts.map +1 -0
  44. package/dist/core/kane-pilot-report.js +169 -0
  45. package/dist/core/kane-pilot-report.js.map +1 -0
  46. package/dist/core/kane-pilot-types.d.ts +60 -0
  47. package/dist/core/kane-pilot-types.d.ts.map +1 -0
  48. package/dist/core/kane-pilot-types.js +2 -0
  49. package/dist/core/kane-pilot-types.js.map +1 -0
  50. package/dist/core/kane-pilot.d.ts +25 -0
  51. package/dist/core/kane-pilot.d.ts.map +1 -0
  52. package/dist/core/kane-pilot.js +255 -0
  53. package/dist/core/kane-pilot.js.map +1 -0
  54. package/dist/core/project-config-kane.d.ts +27 -0
  55. package/dist/core/project-config-kane.d.ts.map +1 -0
  56. package/dist/core/project-config-kane.js +152 -0
  57. package/dist/core/project-config-kane.js.map +1 -0
  58. package/dist/core/project-config.d.ts +11 -0
  59. package/dist/core/project-config.d.ts.map +1 -1
  60. package/dist/core/project-config.js +7 -5
  61. package/dist/core/project-config.js.map +1 -1
  62. package/package.json +1 -1
  63. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  64. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  65. package/plugins/lisa/.codex-plugin/skills/lisa-codify-verification/SKILL.md +2 -0
  66. package/plugins/lisa/.codex-plugin/skills/lisa-doctor/SKILL.md +7 -0
  67. package/plugins/lisa/.codex-plugin/skills/lisa-exploratory-qa/SKILL.md +3 -0
  68. package/plugins/lisa/.codex-plugin/skills/lisa-github-claim/SKILL.md +27 -0
  69. package/plugins/lisa/.codex-plugin/skills/lisa-github-claim/agents/openai.yaml +4 -0
  70. package/plugins/lisa/.codex-plugin/skills/lisa-implement/SKILL.md +50 -14
  71. package/plugins/lisa/.codex-plugin/skills/lisa-improve-harness/SKILL.md +487 -0
  72. package/plugins/lisa/.codex-plugin/skills/lisa-improve-harness/agents/openai.yaml +4 -0
  73. package/plugins/lisa/.codex-plugin/skills/lisa-jira-claim/SKILL.md +27 -0
  74. package/plugins/lisa/.codex-plugin/skills/lisa-jira-claim/agents/openai.yaml +4 -0
  75. package/plugins/lisa/.codex-plugin/skills/lisa-kane-browser/SKILL.md +80 -0
  76. package/plugins/lisa/.codex-plugin/skills/lisa-kane-browser/agents/openai.yaml +4 -0
  77. package/plugins/lisa/.codex-plugin/skills/lisa-linear-claim/SKILL.md +27 -0
  78. package/plugins/lisa/.codex-plugin/skills/lisa-linear-claim/agents/openai.yaml +4 -0
  79. package/plugins/lisa/.codex-plugin/skills/lisa-monitor/SKILL.md +2 -0
  80. package/plugins/lisa/.codex-plugin/skills/lisa-parity-coderabbit/SKILL.md +10 -0
  81. package/plugins/lisa/.codex-plugin/skills/lisa-product-walkthrough/SKILL.md +2 -0
  82. package/plugins/lisa/.codex-plugin/skills/lisa-review-local/SKILL.md +11 -0
  83. package/plugins/lisa/.codex-plugin/skills/lisa-setup-kane/SKILL.md +96 -0
  84. package/plugins/lisa/.codex-plugin/skills/lisa-setup-kane/agents/openai.yaml +4 -0
  85. package/plugins/lisa/.codex-plugin/skills/lisa-track/SKILL.md +71 -0
  86. package/plugins/lisa/.codex-plugin/skills/lisa-track/agents/openai.yaml +4 -0
  87. package/plugins/lisa/.codex-plugin/skills/lisa-tracker-claim/SKILL.md +35 -0
  88. package/plugins/lisa/.codex-plugin/skills/lisa-tracker-claim/agents/openai.yaml +4 -0
  89. package/plugins/lisa/.codex-plugin/skills/lisa-use-the-product/SKILL.md +1 -1
  90. package/plugins/lisa/.codex-plugin/skills/lisa-verification-lifecycle/SKILL.md +3 -1
  91. package/plugins/lisa/.codex-plugin/skills/lisa-verify/SKILL.md +1 -0
  92. package/plugins/lisa/agents/product-specialist.md +2 -0
  93. package/plugins/lisa/agents/quality-specialist.md +4 -1
  94. package/plugins/lisa/agents/verification-specialist.md +2 -2
  95. package/plugins/lisa/commands/improve-harness.md +6 -0
  96. package/plugins/lisa/commands/track.md +6 -0
  97. package/plugins/lisa/rules/eager/config-resolution.md +9 -0
  98. package/plugins/lisa/rules/eager/convergent-review.md +19 -0
  99. package/plugins/lisa/rules/eager/tracked-work.md +7 -0
  100. package/plugins/lisa/rules/eager/verification.md +1 -1
  101. package/plugins/lisa/rules/reference/config-resolution.md +26 -1
  102. package/plugins/lisa/rules/reference/convergent-review.md +69 -0
  103. package/plugins/lisa/rules/reference/tracked-work.md +26 -0
  104. package/plugins/lisa/rules/reference/verification.md +4 -2
  105. package/plugins/lisa/skills/lisa-codify-verification/SKILL.md +2 -0
  106. package/plugins/lisa/skills/lisa-doctor/SKILL.md +7 -0
  107. package/plugins/lisa/skills/lisa-exploratory-qa/SKILL.md +3 -0
  108. package/plugins/lisa/skills/lisa-github-claim/SKILL.md +27 -0
  109. package/plugins/lisa/skills/lisa-github-claim/agents/openai.yaml +4 -0
  110. package/plugins/lisa/skills/lisa-implement/SKILL.md +50 -14
  111. package/plugins/lisa/skills/lisa-improve-harness/SKILL.md +487 -0
  112. package/plugins/lisa/skills/lisa-improve-harness/agents/openai.yaml +4 -0
  113. package/plugins/lisa/skills/lisa-jira-claim/SKILL.md +27 -0
  114. package/plugins/lisa/skills/lisa-jira-claim/agents/openai.yaml +4 -0
  115. package/plugins/lisa/skills/lisa-kane-browser/SKILL.md +80 -0
  116. package/plugins/lisa/skills/lisa-kane-browser/agents/openai.yaml +4 -0
  117. package/plugins/lisa/skills/lisa-linear-claim/SKILL.md +27 -0
  118. package/plugins/lisa/skills/lisa-linear-claim/agents/openai.yaml +4 -0
  119. package/plugins/lisa/skills/lisa-monitor/SKILL.md +2 -0
  120. package/plugins/lisa/skills/lisa-parity-coderabbit/SKILL.md +10 -0
  121. package/plugins/lisa/skills/lisa-product-walkthrough/SKILL.md +2 -0
  122. package/plugins/lisa/skills/lisa-review-local/SKILL.md +11 -0
  123. package/plugins/lisa/skills/lisa-setup-kane/SKILL.md +96 -0
  124. package/plugins/lisa/skills/lisa-setup-kane/agents/openai.yaml +4 -0
  125. package/plugins/lisa/skills/lisa-track/SKILL.md +71 -0
  126. package/plugins/lisa/skills/lisa-track/agents/openai.yaml +4 -0
  127. package/plugins/lisa/skills/lisa-tracker-claim/SKILL.md +35 -0
  128. package/plugins/lisa/skills/lisa-tracker-claim/agents/openai.yaml +4 -0
  129. package/plugins/lisa/skills/lisa-use-the-product/SKILL.md +1 -1
  130. package/plugins/lisa/skills/lisa-verification-lifecycle/SKILL.md +3 -1
  131. package/plugins/lisa/skills/lisa-verify/SKILL.md +1 -0
  132. package/plugins/lisa-agy/agents/product-specialist.md +2 -0
  133. package/plugins/lisa-agy/agents/quality-specialist.md +4 -1
  134. package/plugins/lisa-agy/agents/verification-specialist.md +2 -2
  135. package/plugins/lisa-agy/commands/lisa/improve-harness.md +6 -0
  136. package/plugins/lisa-agy/commands/lisa/track.md +6 -0
  137. package/plugins/lisa-agy/plugin.json +1 -1
  138. package/plugins/lisa-agy/skills/lisa-codify-verification/SKILL.md +2 -0
  139. package/plugins/lisa-agy/skills/lisa-doctor/SKILL.md +7 -0
  140. package/plugins/lisa-agy/skills/lisa-exploratory-qa/SKILL.md +3 -0
  141. package/plugins/lisa-agy/skills/lisa-github-claim/SKILL.md +27 -0
  142. package/plugins/lisa-agy/skills/lisa-implement/SKILL.md +50 -14
  143. package/plugins/lisa-agy/skills/lisa-improve-harness/SKILL.md +487 -0
  144. package/plugins/lisa-agy/skills/lisa-jira-claim/SKILL.md +27 -0
  145. package/plugins/lisa-agy/skills/lisa-kane-browser/SKILL.md +80 -0
  146. package/plugins/lisa-agy/skills/lisa-linear-claim/SKILL.md +27 -0
  147. package/plugins/lisa-agy/skills/lisa-monitor/SKILL.md +2 -0
  148. package/plugins/lisa-agy/skills/lisa-parity-coderabbit/SKILL.md +10 -0
  149. package/plugins/lisa-agy/skills/lisa-product-walkthrough/SKILL.md +2 -0
  150. package/plugins/lisa-agy/skills/lisa-review-local/SKILL.md +11 -0
  151. package/plugins/lisa-agy/skills/lisa-setup-kane/SKILL.md +96 -0
  152. package/plugins/lisa-agy/skills/lisa-track/SKILL.md +71 -0
  153. package/plugins/lisa-agy/skills/lisa-tracker-claim/SKILL.md +35 -0
  154. package/plugins/lisa-agy/skills/lisa-use-the-product/SKILL.md +1 -1
  155. package/plugins/lisa-agy/skills/lisa-verification-lifecycle/SKILL.md +3 -1
  156. package/plugins/lisa-agy/skills/lisa-verify/SKILL.md +1 -0
  157. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  158. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  159. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  160. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  161. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  162. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  163. package/plugins/lisa-copilot/agents/product-specialist.agent.md +2 -0
  164. package/plugins/lisa-copilot/agents/quality-specialist.agent.md +4 -1
  165. package/plugins/lisa-copilot/agents/verification-specialist.agent.md +2 -2
  166. package/plugins/lisa-copilot/commands/lisa/improve-harness.md +6 -0
  167. package/plugins/lisa-copilot/commands/lisa/track.md +6 -0
  168. package/plugins/lisa-copilot/rules/eager/config-resolution.md +9 -0
  169. package/plugins/lisa-copilot/rules/eager/convergent-review.md +19 -0
  170. package/plugins/lisa-copilot/rules/eager/tracked-work.md +7 -0
  171. package/plugins/lisa-copilot/rules/eager/verification.md +1 -1
  172. package/plugins/lisa-copilot/rules/reference/config-resolution.md +26 -1
  173. package/plugins/lisa-copilot/rules/reference/convergent-review.md +69 -0
  174. package/plugins/lisa-copilot/rules/reference/tracked-work.md +26 -0
  175. package/plugins/lisa-copilot/rules/reference/verification.md +4 -2
  176. package/plugins/lisa-copilot/skills/lisa-codify-verification/SKILL.md +2 -0
  177. package/plugins/lisa-copilot/skills/lisa-doctor/SKILL.md +7 -0
  178. package/plugins/lisa-copilot/skills/lisa-exploratory-qa/SKILL.md +3 -0
  179. package/plugins/lisa-copilot/skills/lisa-github-claim/SKILL.md +27 -0
  180. package/plugins/lisa-copilot/skills/lisa-implement/SKILL.md +50 -14
  181. package/plugins/lisa-copilot/skills/lisa-improve-harness/SKILL.md +487 -0
  182. package/plugins/lisa-copilot/skills/lisa-jira-claim/SKILL.md +27 -0
  183. package/plugins/lisa-copilot/skills/lisa-kane-browser/SKILL.md +80 -0
  184. package/plugins/lisa-copilot/skills/lisa-linear-claim/SKILL.md +27 -0
  185. package/plugins/lisa-copilot/skills/lisa-monitor/SKILL.md +2 -0
  186. package/plugins/lisa-copilot/skills/lisa-parity-coderabbit/SKILL.md +10 -0
  187. package/plugins/lisa-copilot/skills/lisa-product-walkthrough/SKILL.md +2 -0
  188. package/plugins/lisa-copilot/skills/lisa-review-local/SKILL.md +11 -0
  189. package/plugins/lisa-copilot/skills/lisa-setup-kane/SKILL.md +96 -0
  190. package/plugins/lisa-copilot/skills/lisa-track/SKILL.md +71 -0
  191. package/plugins/lisa-copilot/skills/lisa-tracker-claim/SKILL.md +35 -0
  192. package/plugins/lisa-copilot/skills/lisa-use-the-product/SKILL.md +1 -1
  193. package/plugins/lisa-copilot/skills/lisa-verification-lifecycle/SKILL.md +3 -1
  194. package/plugins/lisa-copilot/skills/lisa-verify/SKILL.md +1 -0
  195. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  196. package/plugins/lisa-cursor/agents/product-specialist.md +2 -0
  197. package/plugins/lisa-cursor/agents/quality-specialist.md +4 -1
  198. package/plugins/lisa-cursor/agents/verification-specialist.md +2 -2
  199. package/plugins/lisa-cursor/commands/lisa/improve-harness.md +6 -0
  200. package/plugins/lisa-cursor/commands/lisa/track.md +6 -0
  201. package/plugins/lisa-cursor/rules/config-resolution-reference.mdc +26 -1
  202. package/plugins/lisa-cursor/rules/config-resolution.mdc +9 -0
  203. package/plugins/lisa-cursor/rules/convergent-review-reference.mdc +74 -0
  204. package/plugins/lisa-cursor/rules/convergent-review.mdc +24 -0
  205. package/plugins/lisa-cursor/rules/tracked-work-reference.mdc +31 -0
  206. package/plugins/lisa-cursor/rules/tracked-work.mdc +12 -0
  207. package/plugins/lisa-cursor/rules/verification-reference.mdc +4 -2
  208. package/plugins/lisa-cursor/rules/verification.mdc +1 -1
  209. package/plugins/lisa-cursor/skills/lisa-codify-verification/SKILL.md +2 -0
  210. package/plugins/lisa-cursor/skills/lisa-doctor/SKILL.md +7 -0
  211. package/plugins/lisa-cursor/skills/lisa-exploratory-qa/SKILL.md +3 -0
  212. package/plugins/lisa-cursor/skills/lisa-github-claim/SKILL.md +27 -0
  213. package/plugins/lisa-cursor/skills/lisa-implement/SKILL.md +50 -14
  214. package/plugins/lisa-cursor/skills/lisa-improve-harness/SKILL.md +487 -0
  215. package/plugins/lisa-cursor/skills/lisa-jira-claim/SKILL.md +27 -0
  216. package/plugins/lisa-cursor/skills/lisa-kane-browser/SKILL.md +80 -0
  217. package/plugins/lisa-cursor/skills/lisa-linear-claim/SKILL.md +27 -0
  218. package/plugins/lisa-cursor/skills/lisa-monitor/SKILL.md +2 -0
  219. package/plugins/lisa-cursor/skills/lisa-parity-coderabbit/SKILL.md +10 -0
  220. package/plugins/lisa-cursor/skills/lisa-product-walkthrough/SKILL.md +2 -0
  221. package/plugins/lisa-cursor/skills/lisa-review-local/SKILL.md +11 -0
  222. package/plugins/lisa-cursor/skills/lisa-setup-kane/SKILL.md +96 -0
  223. package/plugins/lisa-cursor/skills/lisa-track/SKILL.md +71 -0
  224. package/plugins/lisa-cursor/skills/lisa-tracker-claim/SKILL.md +35 -0
  225. package/plugins/lisa-cursor/skills/lisa-use-the-product/SKILL.md +1 -1
  226. package/plugins/lisa-cursor/skills/lisa-verification-lifecycle/SKILL.md +3 -1
  227. package/plugins/lisa-cursor/skills/lisa-verify/SKILL.md +1 -0
  228. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  229. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  230. package/plugins/lisa-expo-agy/plugin.json +1 -1
  231. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  232. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  233. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  234. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  235. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  236. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  237. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  238. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  239. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  240. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  241. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  242. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  243. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  244. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  245. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  246. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  247. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  248. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  249. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  250. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  251. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  252. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  253. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  254. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  255. package/plugins/lisa-rails-agy/plugin.json +1 -1
  256. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  257. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  258. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  259. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  260. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  261. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  262. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  263. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  264. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  265. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  266. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  267. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  268. package/plugins/src/base/agents/product-specialist.md +2 -0
  269. package/plugins/src/base/agents/quality-specialist.md +4 -1
  270. package/plugins/src/base/agents/verification-specialist.md +2 -2
  271. package/plugins/src/base/commands/improve-harness.md +6 -0
  272. package/plugins/src/base/commands/track.md +6 -0
  273. package/plugins/src/base/rules/eager/config-resolution.md +9 -0
  274. package/plugins/src/base/rules/eager/convergent-review.md +19 -0
  275. package/plugins/src/base/rules/eager/tracked-work.md +7 -0
  276. package/plugins/src/base/rules/eager/verification.md +1 -1
  277. package/plugins/src/base/rules/reference/config-resolution.md +26 -1
  278. package/plugins/src/base/rules/reference/convergent-review.md +69 -0
  279. package/plugins/src/base/rules/reference/tracked-work.md +26 -0
  280. package/plugins/src/base/rules/reference/verification.md +4 -2
  281. package/plugins/src/base/skills/lisa-codify-verification/SKILL.md +2 -0
  282. package/plugins/src/base/skills/lisa-doctor/SKILL.md +7 -0
  283. package/plugins/src/base/skills/lisa-exploratory-qa/SKILL.md +3 -0
  284. package/plugins/src/base/skills/lisa-github-claim/SKILL.md +27 -0
  285. package/plugins/src/base/skills/lisa-implement/SKILL.md +50 -14
  286. package/plugins/src/base/skills/lisa-improve-harness/SKILL.md +487 -0
  287. package/plugins/src/base/skills/lisa-jira-claim/SKILL.md +27 -0
  288. package/plugins/src/base/skills/lisa-kane-browser/SKILL.md +80 -0
  289. package/plugins/src/base/skills/lisa-linear-claim/SKILL.md +27 -0
  290. package/plugins/src/base/skills/lisa-monitor/SKILL.md +2 -0
  291. package/plugins/src/base/skills/lisa-parity-coderabbit/SKILL.md +10 -0
  292. package/plugins/src/base/skills/lisa-product-walkthrough/SKILL.md +2 -0
  293. package/plugins/src/base/skills/lisa-review-local/SKILL.md +11 -0
  294. package/plugins/src/base/skills/lisa-setup-kane/SKILL.md +96 -0
  295. package/plugins/src/base/skills/lisa-track/SKILL.md +71 -0
  296. package/plugins/src/base/skills/lisa-tracker-claim/SKILL.md +35 -0
  297. package/plugins/src/base/skills/lisa-use-the-product/SKILL.md +1 -1
  298. package/plugins/src/base/skills/lisa-verification-lifecycle/SKILL.md +3 -1
  299. package/plugins/src/base/skills/lisa-verify/SKILL.md +1 -0
  300. package/rails/copy-overwrite/lefthook.yml +10 -0
  301. package/scripts/lisa-work-item.mjs +5 -0
  302. package/typescript/copy-contents/.husky/commit-msg +9 -23
  303. package/typescript/copy-contents/.husky/pre-push +10 -0
  304. package/typescript/copy-contents/.husky/prepare-commit-msg +15 -0
@@ -0,0 +1,253 @@
1
+ /** Lisa-owned policy adapter for TestMu Kane CLI. */
2
+ import { existsSync } from "node:fs";
3
+ import { readFile } from "node:fs/promises";
4
+ import * as path from "node:path";
5
+ import { readProjectConfig, validateProjectConfig, } from "./project-config.js";
6
+ import { parseKaneResult } from "./kane-cli-parser.js";
7
+ import { isChromeAvailable, runKaneCommand } from "./kane-cli-process.js";
8
+ export { parseKaneResult } from "./kane-cli-parser.js";
9
+ export { isChromeAvailable, runKaneCommand } from "./kane-cli-process.js";
10
+ /** Kane CLI version covered by Lisa's adapter contract tests. */
11
+ export const SUPPORTED_KANE_VERSION = "0.6.3";
12
+ /**
13
+ * Merge committed and local Kane config using per-key local precedence.
14
+ * @param projectRoot - Downstream project root
15
+ * @returns Effective optional provider config
16
+ */
17
+ export async function readEffectiveKaneConfig(projectRoot) {
18
+ const committed = (await readProjectConfig(projectRoot)).verification?.browser
19
+ ?.kane;
20
+ const localPath = path.join(projectRoot, ".lisa.config.local.json");
21
+ if (!existsSync(localPath))
22
+ return committed;
23
+ const parsed = JSON.parse(await readFile(localPath, "utf8"));
24
+ const local = validateProjectConfig(parsed, localPath).verification?.browser
25
+ ?.kane;
26
+ return local === undefined ? committed : { ...committed, ...local };
27
+ }
28
+ /**
29
+ * Assert that a request satisfies Lisa's hard Kane safety gate.
30
+ * @param config - Effective provider config
31
+ * @param request - Environment and mutation policy
32
+ */
33
+ export function assertKaneRunAllowed(config, request) {
34
+ if (config?.enabled !== true) {
35
+ throw new Error("Kane CLI is not enabled for this project");
36
+ }
37
+ if (config.cloudUploadApproved !== true) {
38
+ throw new Error("Kane CLI cloud upload has not been approved for this project");
39
+ }
40
+ if (config.version !== SUPPORTED_KANE_VERSION) {
41
+ throw new Error(`Kane CLI version must be ${SUPPORTED_KANE_VERSION}; configured ${config.version ?? "none"}`);
42
+ }
43
+ if (!config.allowedEnvironments?.includes(request.environment) ||
44
+ ["prod", "production"].includes(request.environment.toLowerCase())) {
45
+ throw new Error(`Kane CLI is not allowed in environment ${JSON.stringify(request.environment)}`);
46
+ }
47
+ if (request.mutation !== "full") {
48
+ throw new Error("Kane CLI requires Lisa mutation policy 'full' during the initial provider rollout");
49
+ }
50
+ if (config.projectId === undefined) {
51
+ throw new Error("Kane CLI requires a configured Test Manager projectId");
52
+ }
53
+ }
54
+ /**
55
+ * Build the fixed provider argument vector.
56
+ * @param request - Validated run request
57
+ * @param config - Effective provider config
58
+ * @returns Kane argument vector
59
+ */
60
+ function buildRunArguments(request, config) {
61
+ return [
62
+ "run",
63
+ request.objective,
64
+ "--agent",
65
+ "--headless",
66
+ "--timeout",
67
+ String(config.timeoutSeconds ?? 120),
68
+ "--max-steps",
69
+ String(request.maxSteps ?? 30),
70
+ ...(request.url === undefined ? [] : ["--url", request.url]),
71
+ ];
72
+ }
73
+ /**
74
+ * Execute a run after asynchronous config resolution.
75
+ * @param request - Objective and resolved Lisa policy context
76
+ * @param config - Effective provider config
77
+ * @param runner - Fixed-argv process runner
78
+ * @returns Normalized provider result
79
+ */
80
+ async function executeKaneRun(request, config, runner) {
81
+ const timeoutSeconds = config?.timeoutSeconds ?? 120;
82
+ // eslint-disable-next-line no-restricted-syntax -- child inherits existing auth without logging values
83
+ const env = { ...process.env, KANE_CLI_USER_AGENT: "lisa" };
84
+ assertKaneRunAllowed(config, request);
85
+ if (request.objective.trim().length === 0) {
86
+ throw new Error("Kane CLI objective must not be empty");
87
+ }
88
+ if (request.maxSteps !== undefined &&
89
+ (!Number.isInteger(request.maxSteps) ||
90
+ request.maxSteps < 1 ||
91
+ request.maxSteps > 100)) {
92
+ throw new Error("Kane CLI maxSteps must be an integer from 1 to 100");
93
+ }
94
+ return parseKaneResult(await runner("kane-cli", buildRunArguments(request, config), {
95
+ cwd: request.projectRoot,
96
+ timeoutMs: (timeoutSeconds + 15) * 1000,
97
+ env,
98
+ }));
99
+ }
100
+ /**
101
+ * Run one policy-approved Kane browser objective.
102
+ * @param request - Objective and resolved Lisa policy context
103
+ * @param runner - Injectable fixed-argv process runner
104
+ * @returns Normalized provider result
105
+ */
106
+ export async function runKane(request, runner = runKaneCommand) {
107
+ const config = await readEffectiveKaneConfig(request.projectRoot);
108
+ return await executeKaneRun(request, config, runner);
109
+ }
110
+ /**
111
+ * Return a failed readiness result for an unknown error.
112
+ * @param error - Unknown caught value
113
+ * @returns Failed readiness result
114
+ */
115
+ function readinessError(error) {
116
+ return {
117
+ status: "fail",
118
+ detail: error instanceof Error ? error.message : String(error),
119
+ };
120
+ }
121
+ /**
122
+ * Evaluate config-only readiness policy.
123
+ * @param config - Enabled effective provider config
124
+ * @returns Failure result or undefined
125
+ */
126
+ function policyReadinessFailure(config) {
127
+ try {
128
+ assertKaneRunAllowed(config, {
129
+ environment: config.allowedEnvironments?.[0] ?? "",
130
+ mutation: "full",
131
+ });
132
+ return undefined;
133
+ }
134
+ catch (error) {
135
+ return readinessError(error);
136
+ }
137
+ }
138
+ /**
139
+ * Verify the configured Test Manager target.
140
+ * @param config - Effective provider config
141
+ * @param output - `config show` output
142
+ * @returns Failure detail or undefined
143
+ */
144
+ function targetFailure(config, output) {
145
+ return [config.projectId, config.folderId]
146
+ .filter((expected) => expected !== undefined)
147
+ .find(expected => !output.includes(expected));
148
+ }
149
+ /**
150
+ * Parse a numeric credit balance from supported human-readable output forms.
151
+ * @param output - Kane balance output
152
+ * @returns Numeric credits or undefined when not observable
153
+ */
154
+ function parseCreditBalance(output) {
155
+ const balanceLine = output
156
+ .split(/\r?\n/u)
157
+ .find(line => line.toLowerCase().includes("balance"));
158
+ const balanceFirst = balanceLine === undefined
159
+ ? undefined
160
+ : /-?\d+(?:\.\d+)?/u.exec(balanceLine)?.[0];
161
+ return balanceFirst === undefined ? undefined : Number(balanceFirst);
162
+ }
163
+ /**
164
+ * Interpret the final account-balance readiness probe.
165
+ * @param balance - Captured balance command
166
+ * @param projectId - Expected Test Manager project
167
+ * @returns Final readiness result
168
+ */
169
+ function balanceReadiness(balance, projectId) {
170
+ const credits = parseCreditBalance(balance.stdout);
171
+ if (balance.exitCode !== 0) {
172
+ return {
173
+ status: "warn",
174
+ detail: "Kane CLI is authenticated and configured, but balance could not be verified",
175
+ };
176
+ }
177
+ if (credits === undefined) {
178
+ return {
179
+ status: "warn",
180
+ detail: "Kane CLI is authenticated and configured, but its credit balance could not be parsed",
181
+ };
182
+ }
183
+ if (credits <= 0) {
184
+ return {
185
+ status: "fail",
186
+ detail: "Kane CLI account has no available credits",
187
+ };
188
+ }
189
+ return {
190
+ status: "ready",
191
+ detail: `Kane CLI ${SUPPORTED_KANE_VERSION} authenticated for project ${projectId}`,
192
+ };
193
+ }
194
+ /**
195
+ * Run install, version, auth, target, and balance readiness probes.
196
+ * @param projectRoot - Downstream project root
197
+ * @param runner - Injectable process runner
198
+ * @param chromeAvailable - Injectable host-browser probe
199
+ * @returns Readiness status for doctor and setup
200
+ */
201
+ export async function probeKaneReadiness(projectRoot, runner = runKaneCommand, chromeAvailable = isChromeAvailable) {
202
+ const config = await readEffectiveKaneConfig(projectRoot);
203
+ const policyFailure = config?.enabled === true ? policyReadinessFailure(config) : undefined;
204
+ if (config?.enabled !== true) {
205
+ return { status: "disabled", detail: "Kane CLI provider is not enabled" };
206
+ }
207
+ if (policyFailure !== undefined)
208
+ return policyFailure;
209
+ if (!chromeAvailable()) {
210
+ return {
211
+ status: "fail",
212
+ detail: "Kane CLI requires Google Chrome or Chromium; install it or set CHROME_PATH",
213
+ };
214
+ }
215
+ // eslint-disable-next-line no-restricted-syntax -- read-only probes inherit existing auth/config
216
+ const env = { ...process.env, KANE_CLI_USER_AGENT: "lisa-doctor" };
217
+ const options = { cwd: projectRoot, timeoutMs: 15_000, env };
218
+ const version = await runner("kane-cli", ["--version"], options);
219
+ const observedVersion = /\b\d+\.\d+\.\d+\b/u.exec(version.stdout)?.[0];
220
+ if (version.exitCode !== 0) {
221
+ return {
222
+ status: "fail",
223
+ detail: `Kane CLI unavailable: ${version.stderr.trim() || "version probe failed"}`,
224
+ };
225
+ }
226
+ if (observedVersion !== SUPPORTED_KANE_VERSION) {
227
+ return {
228
+ status: "fail",
229
+ detail: `Kane CLI ${SUPPORTED_KANE_VERSION} required; observed ${version.stdout.trim()}`,
230
+ };
231
+ }
232
+ const identity = await runner("kane-cli", ["whoami"], options);
233
+ if (identity.exitCode !== 0) {
234
+ return {
235
+ status: "fail",
236
+ detail: `Kane CLI authentication failed: ${identity.stderr.trim() || identity.stdout.trim()}`,
237
+ };
238
+ }
239
+ const shown = await runner("kane-cli", ["config", "show"], options);
240
+ if (shown.exitCode !== 0) {
241
+ return { status: "fail", detail: "Kane CLI config show failed" };
242
+ }
243
+ const missingTarget = targetFailure(config, shown.stdout);
244
+ if (missingTarget !== undefined) {
245
+ return {
246
+ status: "fail",
247
+ detail: `Kane CLI is not configured for expected Test Manager target ${missingTarget}`,
248
+ };
249
+ }
250
+ const balance = await runner("kane-cli", ["balance"], options);
251
+ return balanceReadiness(balance, config.projectId);
252
+ }
253
+ //# sourceMappingURL=kane-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kane-cli.js","sourceRoot":"","sources":["../../src/core/kane-cli.ts"],"names":[],"mappings":"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"}
@@ -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"}