@codyswann/lisa 2.119.1 → 2.121.1

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 (766) hide show
  1. package/.claude-plugin/marketplace.json +18 -0
  2. package/dist/agy/agents-md-installer.d.ts +24 -0
  3. package/dist/agy/agents-md-installer.d.ts.map +1 -0
  4. package/dist/agy/agents-md-installer.js +126 -0
  5. package/dist/agy/agents-md-installer.js.map +1 -0
  6. package/dist/agy/mcp-installer.d.ts +102 -0
  7. package/dist/agy/mcp-installer.d.ts.map +1 -0
  8. package/dist/agy/mcp-installer.js +155 -0
  9. package/dist/agy/mcp-installer.js.map +1 -0
  10. package/dist/agy/plugin-installer.d.ts +21 -0
  11. package/dist/agy/plugin-installer.d.ts.map +1 -0
  12. package/dist/agy/plugin-installer.js +88 -0
  13. package/dist/agy/plugin-installer.js.map +1 -0
  14. package/dist/claude/claude-md-installer.d.ts +18 -0
  15. package/dist/claude/claude-md-installer.d.ts.map +1 -0
  16. package/dist/claude/claude-md-installer.js +62 -0
  17. package/dist/claude/claude-md-installer.js.map +1 -0
  18. package/dist/codex/lisa-plugin-detection.d.ts +68 -0
  19. package/dist/codex/lisa-plugin-detection.d.ts.map +1 -0
  20. package/dist/codex/lisa-plugin-detection.js +139 -0
  21. package/dist/codex/lisa-plugin-detection.js.map +1 -0
  22. package/dist/copilot/copilot-instructions-installer.d.ts +18 -0
  23. package/dist/copilot/copilot-instructions-installer.d.ts.map +1 -0
  24. package/dist/copilot/copilot-instructions-installer.js +61 -0
  25. package/dist/copilot/copilot-instructions-installer.js.map +1 -0
  26. package/dist/copilot/plugin-installer.d.ts +29 -0
  27. package/dist/copilot/plugin-installer.d.ts.map +1 -0
  28. package/dist/copilot/plugin-installer.js +144 -0
  29. package/dist/copilot/plugin-installer.js.map +1 -0
  30. package/dist/core/config.d.ts +28 -4
  31. package/dist/core/config.d.ts.map +1 -1
  32. package/dist/core/config.js +24 -0
  33. package/dist/core/config.js.map +1 -1
  34. package/dist/core/lisa.d.ts +35 -0
  35. package/dist/core/lisa.d.ts.map +1 -1
  36. package/dist/core/lisa.js +99 -2
  37. package/dist/core/lisa.js.map +1 -1
  38. package/package.json +1 -1
  39. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  40. package/plugins/lisa/.codex-plugin/plugin.json +2 -1
  41. package/plugins/lisa/hooks/hooks.json +75 -0
  42. package/plugins/lisa-agy/agents/architecture-specialist.md +47 -0
  43. package/plugins/lisa-agy/agents/bug-fixer.md +39 -0
  44. package/plugins/lisa-agy/agents/builder.md +40 -0
  45. package/plugins/lisa-agy/agents/confluence-prd-intake.md +65 -0
  46. package/plugins/lisa-agy/agents/debug-specialist.md +114 -0
  47. package/plugins/lisa-agy/agents/git-history-analyzer.md +183 -0
  48. package/plugins/lisa-agy/agents/github-agent.md +148 -0
  49. package/plugins/lisa-agy/agents/github-build-intake.md +64 -0
  50. package/plugins/lisa-agy/agents/github-prd-intake.md +66 -0
  51. package/plugins/lisa-agy/agents/jira-agent.md +129 -0
  52. package/plugins/lisa-agy/agents/jira-build-intake.md +64 -0
  53. package/plugins/lisa-agy/agents/learner.md +43 -0
  54. package/plugins/lisa-agy/agents/learnings-synthesizer.md +135 -0
  55. package/plugins/lisa-agy/agents/linear-agent.md +134 -0
  56. package/plugins/lisa-agy/agents/linear-build-intake.md +64 -0
  57. package/plugins/lisa-agy/agents/linear-prd-intake.md +66 -0
  58. package/plugins/lisa-agy/agents/notion-prd-intake.md +63 -0
  59. package/plugins/lisa-agy/agents/performance-specialist.md +85 -0
  60. package/plugins/lisa-agy/agents/pr-mining-specialist.md +85 -0
  61. package/plugins/lisa-agy/agents/product-specialist.md +63 -0
  62. package/plugins/lisa-agy/agents/quality-specialist.md +56 -0
  63. package/plugins/lisa-agy/agents/security-specialist.md +51 -0
  64. package/plugins/lisa-agy/agents/skill-evaluator.md +245 -0
  65. package/plugins/lisa-agy/agents/spec-conformance-specialist.md +49 -0
  66. package/plugins/lisa-agy/agents/test-specialist.md +49 -0
  67. package/plugins/lisa-agy/agents/tracker-mining-specialist.md +85 -0
  68. package/plugins/lisa-agy/agents/verification-specialist.md +135 -0
  69. package/plugins/lisa-agy/commands/automation-status.md +12 -0
  70. package/plugins/lisa-agy/commands/codify-verification.md +6 -0
  71. package/plugins/lisa-agy/commands/debrief/apply.md +6 -0
  72. package/plugins/lisa-agy/commands/debrief.md +6 -0
  73. package/plugins/lisa-agy/commands/doctor.md +6 -0
  74. package/plugins/lisa-agy/commands/fix/linter-error.md +7 -0
  75. package/plugins/lisa-agy/commands/git/commit.md +7 -0
  76. package/plugins/lisa-agy/commands/git/prune.md +6 -0
  77. package/plugins/lisa-agy/commands/git/submit-pr.md +7 -0
  78. package/plugins/lisa-agy/commands/implement.md +6 -0
  79. package/plugins/lisa-agy/commands/improve/code-complexity.md +6 -0
  80. package/plugins/lisa-agy/commands/improve/max-lines-per-function.md +7 -0
  81. package/plugins/lisa-agy/commands/improve/max-lines.md +7 -0
  82. package/plugins/lisa-agy/commands/improve/test-coverage.md +7 -0
  83. package/plugins/lisa-agy/commands/improve/tests.md +7 -0
  84. package/plugins/lisa-agy/commands/intake-explain.md +31 -0
  85. package/plugins/lisa-agy/commands/intake.md +6 -0
  86. package/plugins/lisa-agy/commands/monitor.md +6 -0
  87. package/plugins/lisa-agy/commands/plan.md +6 -0
  88. package/plugins/lisa-agy/commands/plugin-sync-explain.md +8 -0
  89. package/plugins/lisa-agy/commands/product-walkthrough.md +7 -0
  90. package/plugins/lisa-agy/commands/project-ideation.md +6 -0
  91. package/plugins/lisa-agy/commands/pull-request/review.md +7 -0
  92. package/plugins/lisa-agy/commands/queue-status.md +34 -0
  93. package/plugins/lisa-agy/commands/repair-intake.md +6 -0
  94. package/plugins/lisa-agy/commands/research.md +6 -0
  95. package/plugins/lisa-agy/commands/review/local.md +6 -0
  96. package/plugins/lisa-agy/commands/security/zap-scan.md +6 -0
  97. package/plugins/lisa-agy/commands/setup/atlassian.md +7 -0
  98. package/plugins/lisa-agy/commands/setup/confluence.md +7 -0
  99. package/plugins/lisa-agy/commands/setup/github.md +7 -0
  100. package/plugins/lisa-agy/commands/setup/jira.md +7 -0
  101. package/plugins/lisa-agy/commands/setup/linear.md +7 -0
  102. package/plugins/lisa-agy/commands/setup/notion.md +7 -0
  103. package/plugins/lisa-agy/commands/setup-automations.md +6 -0
  104. package/plugins/lisa-agy/commands/tear-down-automations.md +6 -0
  105. package/plugins/lisa-agy/commands/verify-prd.md +6 -0
  106. package/plugins/lisa-agy/commands/verify.md +6 -0
  107. package/plugins/lisa-agy/commands/wiki/install.md +7 -0
  108. package/plugins/lisa-agy/plugin.json +8 -0
  109. package/plugins/lisa-agy/scripts/automation-status-claude-adapter.mjs +672 -0
  110. package/plugins/lisa-agy/scripts/automation-status-codex-adapter.mjs +697 -0
  111. package/plugins/lisa-agy/scripts/automation-status-contract-drift.mjs +392 -0
  112. package/plugins/lisa-agy/scripts/automation-status-expected-fleet.mjs +319 -0
  113. package/plugins/lisa-agy/scripts/automation-status-report.mjs +170 -0
  114. package/plugins/lisa-agy/scripts/doctor-report.mjs +143 -0
  115. package/plugins/lisa-agy/scripts/plugin-sync-explain.mjs +512 -0
  116. package/plugins/lisa-agy/scripts/project-ideation-idempotency-harness.mjs +319 -0
  117. package/plugins/lisa-agy/scripts/queue-contract-resolution.mjs +453 -0
  118. package/plugins/lisa-agy/scripts/queue-health-classification.mjs +157 -0
  119. package/plugins/lisa-agy/scripts/queue-status-build-readers.mjs +509 -0
  120. package/plugins/lisa-agy/scripts/queue-status-prd-readers.mjs +452 -0
  121. package/plugins/lisa-agy/skills/acceptance-criteria/SKILL.md +71 -0
  122. package/plugins/lisa-agy/skills/agent-design-best-practices/SKILL.md +219 -0
  123. package/plugins/lisa-agy/skills/atlassian-access/SKILL.md +293 -0
  124. package/plugins/lisa-agy/skills/automation-status/SKILL.md +111 -0
  125. package/plugins/lisa-agy/skills/bug-triage/SKILL.md +23 -0
  126. package/plugins/lisa-agy/skills/codebase-research/SKILL.md +87 -0
  127. package/plugins/lisa-agy/skills/codify-verification/SKILL.md +152 -0
  128. package/plugins/lisa-agy/skills/confluence-prd-intake/SKILL.md +417 -0
  129. package/plugins/lisa-agy/skills/confluence-to-tracker/SKILL.md +360 -0
  130. package/plugins/lisa-agy/skills/confluence-write-prd/SKILL.md +109 -0
  131. package/plugins/lisa-agy/skills/debrief/SKILL.md +94 -0
  132. package/plugins/lisa-agy/skills/debrief-apply/SKILL.md +63 -0
  133. package/plugins/lisa-agy/skills/doctor/SKILL.md +317 -0
  134. package/plugins/lisa-agy/skills/epic-triage/SKILL.md +28 -0
  135. package/plugins/lisa-agy/skills/fix-linter-error/SKILL.md +45 -0
  136. package/plugins/lisa-agy/skills/git-commit/SKILL.md +48 -0
  137. package/plugins/lisa-agy/skills/git-prune/SKILL.md +35 -0
  138. package/plugins/lisa-agy/skills/git-submit-pr/SKILL.md +105 -0
  139. package/plugins/lisa-agy/skills/github-add-journey/SKILL.md +115 -0
  140. package/plugins/lisa-agy/skills/github-build-intake/SKILL.md +377 -0
  141. package/plugins/lisa-agy/skills/github-create/SKILL.md +101 -0
  142. package/plugins/lisa-agy/skills/github-evidence/SKILL.md +110 -0
  143. package/plugins/lisa-agy/skills/github-journey/SKILL.md +121 -0
  144. package/plugins/lisa-agy/skills/github-prd-intake/SKILL.md +432 -0
  145. package/plugins/lisa-agy/skills/github-project-v2/SKILL.md +227 -0
  146. package/plugins/lisa-agy/skills/github-read-issue/SKILL.md +248 -0
  147. package/plugins/lisa-agy/skills/github-sync/SKILL.md +119 -0
  148. package/plugins/lisa-agy/skills/github-to-tracker/SKILL.md +345 -0
  149. package/plugins/lisa-agy/skills/github-validate-issue/SKILL.md +331 -0
  150. package/plugins/lisa-agy/skills/github-verify/SKILL.md +29 -0
  151. package/plugins/lisa-agy/skills/github-write-issue/SKILL.md +339 -0
  152. package/plugins/lisa-agy/skills/github-write-prd/SKILL.md +157 -0
  153. package/plugins/lisa-agy/skills/implement/SKILL.md +145 -0
  154. package/plugins/lisa-agy/skills/improve-code-complexity/SKILL.md +44 -0
  155. package/plugins/lisa-agy/skills/improve-max-lines/SKILL.md +45 -0
  156. package/plugins/lisa-agy/skills/improve-max-lines-per-function/SKILL.md +46 -0
  157. package/plugins/lisa-agy/skills/improve-test-coverage/SKILL.md +44 -0
  158. package/plugins/lisa-agy/skills/improve-tests/SKILL.md +47 -0
  159. package/plugins/lisa-agy/skills/intake/SKILL.md +132 -0
  160. package/plugins/lisa-agy/skills/intake-explain/SKILL.md +279 -0
  161. package/plugins/lisa-agy/skills/jira-add-journey/SKILL.md +121 -0
  162. package/plugins/lisa-agy/skills/jira-build-intake/SKILL.md +286 -0
  163. package/plugins/lisa-agy/skills/jira-create/SKILL.md +154 -0
  164. package/plugins/lisa-agy/skills/jira-evidence/SKILL.md +90 -0
  165. package/plugins/lisa-agy/skills/jira-evidence/scripts/post-evidence.sh +163 -0
  166. package/plugins/lisa-agy/skills/jira-journey/SKILL.md +127 -0
  167. package/plugins/lisa-agy/skills/jira-journey/scripts/generate-templates.py +233 -0
  168. package/plugins/lisa-agy/skills/jira-journey/scripts/parse-plan.py +368 -0
  169. package/plugins/lisa-agy/skills/jira-read-ticket/SKILL.md +198 -0
  170. package/plugins/lisa-agy/skills/jira-read-ticket/scripts/download-attachment.sh +110 -0
  171. package/plugins/lisa-agy/skills/jira-sync/SKILL.md +95 -0
  172. package/plugins/lisa-agy/skills/jira-validate-ticket/SKILL.md +318 -0
  173. package/plugins/lisa-agy/skills/jira-verify/SKILL.md +30 -0
  174. package/plugins/lisa-agy/skills/jira-write-ticket/SKILL.md +265 -0
  175. package/plugins/lisa-agy/skills/jsdoc-best-practices/SKILL.md +432 -0
  176. package/plugins/lisa-agy/skills/linear-add-journey/SKILL.md +105 -0
  177. package/plugins/lisa-agy/skills/linear-build-intake/SKILL.md +283 -0
  178. package/plugins/lisa-agy/skills/linear-create/SKILL.md +146 -0
  179. package/plugins/lisa-agy/skills/linear-evidence/SKILL.md +103 -0
  180. package/plugins/lisa-agy/skills/linear-journey/SKILL.md +134 -0
  181. package/plugins/lisa-agy/skills/linear-prd-intake/SKILL.md +383 -0
  182. package/plugins/lisa-agy/skills/linear-read-issue/SKILL.md +200 -0
  183. package/plugins/lisa-agy/skills/linear-sync/SKILL.md +114 -0
  184. package/plugins/lisa-agy/skills/linear-to-tracker/SKILL.md +342 -0
  185. package/plugins/lisa-agy/skills/linear-validate-issue/SKILL.md +313 -0
  186. package/plugins/lisa-agy/skills/linear-verify/SKILL.md +51 -0
  187. package/plugins/lisa-agy/skills/linear-write-issue/SKILL.md +292 -0
  188. package/plugins/lisa-agy/skills/linear-write-prd/SKILL.md +96 -0
  189. package/plugins/lisa-agy/skills/lisa-review-implementation/SKILL.md +209 -0
  190. package/plugins/lisa-agy/skills/monitor/SKILL.md +48 -0
  191. package/plugins/lisa-agy/skills/nightly-add-test-coverage/SKILL.md +40 -0
  192. package/plugins/lisa-agy/skills/nightly-improve-tests/SKILL.md +29 -0
  193. package/plugins/lisa-agy/skills/nightly-lower-code-complexity/SKILL.md +28 -0
  194. package/plugins/lisa-agy/skills/notion-access/SKILL.md +226 -0
  195. package/plugins/lisa-agy/skills/notion-prd-intake/SKILL.md +360 -0
  196. package/plugins/lisa-agy/skills/notion-to-tracker/SKILL.md +357 -0
  197. package/plugins/lisa-agy/skills/notion-write-prd/SKILL.md +109 -0
  198. package/plugins/lisa-agy/skills/performance-review/SKILL.md +94 -0
  199. package/plugins/lisa-agy/skills/plan/SKILL.md +60 -0
  200. package/plugins/lisa-agy/skills/plugin-sync-explain/SKILL.md +53 -0
  201. package/plugins/lisa-agy/skills/prd-backlink/SKILL.md +265 -0
  202. package/plugins/lisa-agy/skills/prd-source-write/SKILL.md +101 -0
  203. package/plugins/lisa-agy/skills/prd-ticket-coverage/SKILL.md +170 -0
  204. package/plugins/lisa-agy/skills/product-walkthrough/SKILL.md +129 -0
  205. package/plugins/lisa-agy/skills/project-ideation/SKILL.md +315 -0
  206. package/plugins/lisa-agy/skills/project-ideation/examples/evidence-card-format.md +21 -0
  207. package/plugins/lisa-agy/skills/project-ideation/examples/host-project-only.md +22 -0
  208. package/plugins/lisa-agy/skills/project-ideation/examples/idempotency-verification-harness.md +57 -0
  209. package/plugins/lisa-agy/skills/project-ideation/examples/public-external-inspiration.md +22 -0
  210. package/plugins/lisa-agy/skills/project-ideation/examples/unavailable-data-rejection.md +22 -0
  211. package/plugins/lisa-agy/skills/pull-request-review/SKILL.md +68 -0
  212. package/plugins/lisa-agy/skills/quality-review/SKILL.md +54 -0
  213. package/plugins/lisa-agy/skills/queue-status/SKILL.md +133 -0
  214. package/plugins/lisa-agy/skills/repair-intake/SKILL.md +584 -0
  215. package/plugins/lisa-agy/skills/reproduce-bug/SKILL.md +96 -0
  216. package/plugins/lisa-agy/skills/research/SKILL.md +68 -0
  217. package/plugins/lisa-agy/skills/review-local/SKILL.md +88 -0
  218. package/plugins/lisa-agy/skills/root-cause-analysis/SKILL.md +155 -0
  219. package/plugins/lisa-agy/skills/security-review/SKILL.md +57 -0
  220. package/plugins/lisa-agy/skills/security-zap-scan/SKILL.md +33 -0
  221. package/plugins/lisa-agy/skills/setup-atlassian/SKILL.md +347 -0
  222. package/plugins/lisa-agy/skills/setup-automations/SKILL.md +99 -0
  223. package/plugins/lisa-agy/skills/setup-confluence/SKILL.md +254 -0
  224. package/plugins/lisa-agy/skills/setup-github/SKILL.md +268 -0
  225. package/plugins/lisa-agy/skills/setup-jira/SKILL.md +198 -0
  226. package/plugins/lisa-agy/skills/setup-linear/SKILL.md +251 -0
  227. package/plugins/lisa-agy/skills/setup-notion/SKILL.md +316 -0
  228. package/plugins/lisa-agy/skills/spec-conformance/SKILL.md +159 -0
  229. package/plugins/lisa-agy/skills/task-decomposition/SKILL.md +127 -0
  230. package/plugins/lisa-agy/skills/task-triage/SKILL.md +23 -0
  231. package/plugins/lisa-agy/skills/tdd-implementation/SKILL.md +83 -0
  232. package/plugins/lisa-agy/skills/tear-down-automations/SKILL.md +34 -0
  233. package/plugins/lisa-agy/skills/test-strategy/SKILL.md +63 -0
  234. package/plugins/lisa-agy/skills/ticket-triage/SKILL.md +182 -0
  235. package/plugins/lisa-agy/skills/tracker-add-journey/SKILL.md +26 -0
  236. package/plugins/lisa-agy/skills/tracker-build-intake/SKILL.md +64 -0
  237. package/plugins/lisa-agy/skills/tracker-create/SKILL.md +26 -0
  238. package/plugins/lisa-agy/skills/tracker-evidence/SKILL.md +52 -0
  239. package/plugins/lisa-agy/skills/tracker-journey/SKILL.md +26 -0
  240. package/plugins/lisa-agy/skills/tracker-read/SKILL.md +27 -0
  241. package/plugins/lisa-agy/skills/tracker-source-artifacts/SKILL.md +107 -0
  242. package/plugins/lisa-agy/skills/tracker-sync/SKILL.md +51 -0
  243. package/plugins/lisa-agy/skills/tracker-validate/SKILL.md +36 -0
  244. package/plugins/lisa-agy/skills/tracker-verify/SKILL.md +27 -0
  245. package/plugins/lisa-agy/skills/tracker-write/SKILL.md +53 -0
  246. package/plugins/lisa-agy/skills/usage-accounting/SKILL.md +170 -0
  247. package/plugins/lisa-agy/skills/verification-lifecycle/SKILL.md +339 -0
  248. package/plugins/lisa-agy/skills/verify/SKILL.md +49 -0
  249. package/plugins/lisa-agy/skills/verify-prd/SKILL.md +392 -0
  250. package/plugins/lisa-agy/skills/wiki-install/SKILL.md +101 -0
  251. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  252. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  253. package/plugins/lisa-copilot/.claude-plugin/plugin.json +72 -0
  254. package/plugins/lisa-copilot/agents/architecture-specialist.agent.md +47 -0
  255. package/plugins/lisa-copilot/agents/bug-fixer.agent.md +39 -0
  256. package/plugins/lisa-copilot/agents/builder.agent.md +40 -0
  257. package/plugins/lisa-copilot/agents/confluence-prd-intake.agent.md +65 -0
  258. package/plugins/lisa-copilot/agents/debug-specialist.agent.md +114 -0
  259. package/plugins/lisa-copilot/agents/git-history-analyzer.agent.md +183 -0
  260. package/plugins/lisa-copilot/agents/github-agent.agent.md +148 -0
  261. package/plugins/lisa-copilot/agents/github-build-intake.agent.md +64 -0
  262. package/plugins/lisa-copilot/agents/github-prd-intake.agent.md +66 -0
  263. package/plugins/lisa-copilot/agents/jira-agent.agent.md +129 -0
  264. package/plugins/lisa-copilot/agents/jira-build-intake.agent.md +64 -0
  265. package/plugins/lisa-copilot/agents/learner.agent.md +43 -0
  266. package/plugins/lisa-copilot/agents/learnings-synthesizer.agent.md +135 -0
  267. package/plugins/lisa-copilot/agents/linear-agent.agent.md +134 -0
  268. package/plugins/lisa-copilot/agents/linear-build-intake.agent.md +64 -0
  269. package/plugins/lisa-copilot/agents/linear-prd-intake.agent.md +66 -0
  270. package/plugins/lisa-copilot/agents/notion-prd-intake.agent.md +63 -0
  271. package/plugins/lisa-copilot/agents/performance-specialist.agent.md +85 -0
  272. package/plugins/lisa-copilot/agents/pr-mining-specialist.agent.md +85 -0
  273. package/plugins/lisa-copilot/agents/product-specialist.agent.md +63 -0
  274. package/plugins/lisa-copilot/agents/quality-specialist.agent.md +56 -0
  275. package/plugins/lisa-copilot/agents/security-specialist.agent.md +51 -0
  276. package/plugins/lisa-copilot/agents/skill-evaluator.agent.md +245 -0
  277. package/plugins/lisa-copilot/agents/spec-conformance-specialist.agent.md +49 -0
  278. package/plugins/lisa-copilot/agents/test-specialist.agent.md +49 -0
  279. package/plugins/lisa-copilot/agents/tracker-mining-specialist.agent.md +85 -0
  280. package/plugins/lisa-copilot/agents/verification-specialist.agent.md +135 -0
  281. package/plugins/lisa-copilot/commands/automation-status.md +12 -0
  282. package/plugins/lisa-copilot/commands/codify-verification.md +6 -0
  283. package/plugins/lisa-copilot/commands/debrief/apply.md +6 -0
  284. package/plugins/lisa-copilot/commands/debrief.md +6 -0
  285. package/plugins/lisa-copilot/commands/doctor.md +6 -0
  286. package/plugins/lisa-copilot/commands/fix/linter-error.md +7 -0
  287. package/plugins/lisa-copilot/commands/git/commit.md +7 -0
  288. package/plugins/lisa-copilot/commands/git/prune.md +6 -0
  289. package/plugins/lisa-copilot/commands/git/submit-pr.md +7 -0
  290. package/plugins/lisa-copilot/commands/implement.md +6 -0
  291. package/plugins/lisa-copilot/commands/improve/code-complexity.md +6 -0
  292. package/plugins/lisa-copilot/commands/improve/max-lines-per-function.md +7 -0
  293. package/plugins/lisa-copilot/commands/improve/max-lines.md +7 -0
  294. package/plugins/lisa-copilot/commands/improve/test-coverage.md +7 -0
  295. package/plugins/lisa-copilot/commands/improve/tests.md +7 -0
  296. package/plugins/lisa-copilot/commands/intake-explain.md +31 -0
  297. package/plugins/lisa-copilot/commands/intake.md +6 -0
  298. package/plugins/lisa-copilot/commands/monitor.md +6 -0
  299. package/plugins/lisa-copilot/commands/plan.md +6 -0
  300. package/plugins/lisa-copilot/commands/plugin-sync-explain.md +8 -0
  301. package/plugins/lisa-copilot/commands/product-walkthrough.md +7 -0
  302. package/plugins/lisa-copilot/commands/project-ideation.md +6 -0
  303. package/plugins/lisa-copilot/commands/pull-request/review.md +7 -0
  304. package/plugins/lisa-copilot/commands/queue-status.md +34 -0
  305. package/plugins/lisa-copilot/commands/repair-intake.md +6 -0
  306. package/plugins/lisa-copilot/commands/research.md +6 -0
  307. package/plugins/lisa-copilot/commands/review/local.md +6 -0
  308. package/plugins/lisa-copilot/commands/security/zap-scan.md +6 -0
  309. package/plugins/lisa-copilot/commands/setup/atlassian.md +7 -0
  310. package/plugins/lisa-copilot/commands/setup/confluence.md +7 -0
  311. package/plugins/lisa-copilot/commands/setup/github.md +7 -0
  312. package/plugins/lisa-copilot/commands/setup/jira.md +7 -0
  313. package/plugins/lisa-copilot/commands/setup/linear.md +7 -0
  314. package/plugins/lisa-copilot/commands/setup/notion.md +7 -0
  315. package/plugins/lisa-copilot/commands/setup-automations.md +6 -0
  316. package/plugins/lisa-copilot/commands/tear-down-automations.md +6 -0
  317. package/plugins/lisa-copilot/commands/verify-prd.md +6 -0
  318. package/plugins/lisa-copilot/commands/verify.md +6 -0
  319. package/plugins/lisa-copilot/commands/wiki/install.md +7 -0
  320. package/plugins/lisa-copilot/hooks/block-no-verify.sh +37 -0
  321. package/plugins/lisa-copilot/hooks/inject-rules.sh +33 -0
  322. package/plugins/lisa-copilot/hooks/install-pkgs.sh +69 -0
  323. package/plugins/lisa-copilot/hooks/notify-ntfy.sh +183 -0
  324. package/plugins/lisa-copilot/hooks/setup-jira-cli.sh +51 -0
  325. package/plugins/lisa-copilot/rules/eager/base-rules.md +70 -0
  326. package/plugins/lisa-copilot/rules/eager/coding-philosophy.md +27 -0
  327. package/plugins/lisa-copilot/rules/eager/config-resolution.md +28 -0
  328. package/plugins/lisa-copilot/rules/eager/documentation-source-paths.md +13 -0
  329. package/plugins/lisa-copilot/rules/eager/empirical-inquiry.md +22 -0
  330. package/plugins/lisa-copilot/rules/eager/intent-routing.md +18 -0
  331. package/plugins/lisa-copilot/rules/eager/leaf-only-lifecycle.md +39 -0
  332. package/plugins/lisa-copilot/rules/eager/prd-lifecycle-rollup.md +31 -0
  333. package/plugins/lisa-copilot/rules/eager/repo-scope-split.md +39 -0
  334. package/plugins/lisa-copilot/rules/eager/security-audit-handling.md +29 -0
  335. package/plugins/lisa-copilot/rules/eager/usage-accounting.md +28 -0
  336. package/plugins/lisa-copilot/rules/eager/verification.md +21 -0
  337. package/plugins/lisa-copilot/rules/eager/wiki-knowledge-source.md +16 -0
  338. package/plugins/lisa-copilot/rules/reference/base-rules.md +133 -0
  339. package/plugins/lisa-copilot/rules/reference/coding-philosophy.md +428 -0
  340. package/plugins/lisa-copilot/rules/reference/config-resolution.md +691 -0
  341. package/plugins/lisa-copilot/rules/reference/documentation-source-paths.md +13 -0
  342. package/plugins/lisa-copilot/rules/reference/empirical-inquiry.md +27 -0
  343. package/plugins/lisa-copilot/rules/reference/intent-routing.md +407 -0
  344. package/plugins/lisa-copilot/rules/reference/leaf-only-lifecycle.md +120 -0
  345. package/plugins/lisa-copilot/rules/reference/prd-lifecycle-rollup.md +156 -0
  346. package/plugins/lisa-copilot/rules/reference/repo-scope-split.md +58 -0
  347. package/plugins/lisa-copilot/rules/reference/security-audit-handling.md +30 -0
  348. package/plugins/lisa-copilot/rules/reference/usage-accounting.md +144 -0
  349. package/plugins/lisa-copilot/rules/reference/verification.md +124 -0
  350. package/plugins/lisa-copilot/rules/reference/wiki-knowledge-source.md +14 -0
  351. package/plugins/lisa-copilot/scripts/automation-status-claude-adapter.mjs +672 -0
  352. package/plugins/lisa-copilot/scripts/automation-status-codex-adapter.mjs +697 -0
  353. package/plugins/lisa-copilot/scripts/automation-status-contract-drift.mjs +392 -0
  354. package/plugins/lisa-copilot/scripts/automation-status-expected-fleet.mjs +319 -0
  355. package/plugins/lisa-copilot/scripts/automation-status-report.mjs +170 -0
  356. package/plugins/lisa-copilot/scripts/doctor-report.mjs +143 -0
  357. package/plugins/lisa-copilot/scripts/plugin-sync-explain.mjs +512 -0
  358. package/plugins/lisa-copilot/scripts/project-ideation-idempotency-harness.mjs +319 -0
  359. package/plugins/lisa-copilot/scripts/queue-contract-resolution.mjs +453 -0
  360. package/plugins/lisa-copilot/scripts/queue-health-classification.mjs +157 -0
  361. package/plugins/lisa-copilot/scripts/queue-status-build-readers.mjs +509 -0
  362. package/plugins/lisa-copilot/scripts/queue-status-prd-readers.mjs +452 -0
  363. package/plugins/lisa-copilot/skills/acceptance-criteria/SKILL.md +71 -0
  364. package/plugins/lisa-copilot/skills/agent-design-best-practices/SKILL.md +219 -0
  365. package/plugins/lisa-copilot/skills/atlassian-access/SKILL.md +293 -0
  366. package/plugins/lisa-copilot/skills/automation-status/SKILL.md +111 -0
  367. package/plugins/lisa-copilot/skills/bug-triage/SKILL.md +23 -0
  368. package/plugins/lisa-copilot/skills/codebase-research/SKILL.md +87 -0
  369. package/plugins/lisa-copilot/skills/codify-verification/SKILL.md +152 -0
  370. package/plugins/lisa-copilot/skills/confluence-prd-intake/SKILL.md +417 -0
  371. package/plugins/lisa-copilot/skills/confluence-to-tracker/SKILL.md +360 -0
  372. package/plugins/lisa-copilot/skills/confluence-write-prd/SKILL.md +109 -0
  373. package/plugins/lisa-copilot/skills/debrief/SKILL.md +94 -0
  374. package/plugins/lisa-copilot/skills/debrief-apply/SKILL.md +63 -0
  375. package/plugins/lisa-copilot/skills/doctor/SKILL.md +317 -0
  376. package/plugins/lisa-copilot/skills/epic-triage/SKILL.md +28 -0
  377. package/plugins/lisa-copilot/skills/fix-linter-error/SKILL.md +45 -0
  378. package/plugins/lisa-copilot/skills/git-commit/SKILL.md +48 -0
  379. package/plugins/lisa-copilot/skills/git-prune/SKILL.md +35 -0
  380. package/plugins/lisa-copilot/skills/git-submit-pr/SKILL.md +105 -0
  381. package/plugins/lisa-copilot/skills/github-add-journey/SKILL.md +115 -0
  382. package/plugins/lisa-copilot/skills/github-build-intake/SKILL.md +377 -0
  383. package/plugins/lisa-copilot/skills/github-create/SKILL.md +101 -0
  384. package/plugins/lisa-copilot/skills/github-evidence/SKILL.md +110 -0
  385. package/plugins/lisa-copilot/skills/github-journey/SKILL.md +121 -0
  386. package/plugins/lisa-copilot/skills/github-prd-intake/SKILL.md +432 -0
  387. package/plugins/lisa-copilot/skills/github-project-v2/SKILL.md +227 -0
  388. package/plugins/lisa-copilot/skills/github-read-issue/SKILL.md +248 -0
  389. package/plugins/lisa-copilot/skills/github-sync/SKILL.md +119 -0
  390. package/plugins/lisa-copilot/skills/github-to-tracker/SKILL.md +345 -0
  391. package/plugins/lisa-copilot/skills/github-validate-issue/SKILL.md +331 -0
  392. package/plugins/lisa-copilot/skills/github-verify/SKILL.md +29 -0
  393. package/plugins/lisa-copilot/skills/github-write-issue/SKILL.md +339 -0
  394. package/plugins/lisa-copilot/skills/github-write-prd/SKILL.md +157 -0
  395. package/plugins/lisa-copilot/skills/implement/SKILL.md +145 -0
  396. package/plugins/lisa-copilot/skills/improve-code-complexity/SKILL.md +44 -0
  397. package/plugins/lisa-copilot/skills/improve-max-lines/SKILL.md +45 -0
  398. package/plugins/lisa-copilot/skills/improve-max-lines-per-function/SKILL.md +46 -0
  399. package/plugins/lisa-copilot/skills/improve-test-coverage/SKILL.md +44 -0
  400. package/plugins/lisa-copilot/skills/improve-tests/SKILL.md +47 -0
  401. package/plugins/lisa-copilot/skills/intake/SKILL.md +132 -0
  402. package/plugins/lisa-copilot/skills/intake-explain/SKILL.md +279 -0
  403. package/plugins/lisa-copilot/skills/jira-add-journey/SKILL.md +121 -0
  404. package/plugins/lisa-copilot/skills/jira-build-intake/SKILL.md +286 -0
  405. package/plugins/lisa-copilot/skills/jira-create/SKILL.md +154 -0
  406. package/plugins/lisa-copilot/skills/jira-evidence/SKILL.md +90 -0
  407. package/plugins/lisa-copilot/skills/jira-evidence/scripts/post-evidence.sh +163 -0
  408. package/plugins/lisa-copilot/skills/jira-journey/SKILL.md +127 -0
  409. package/plugins/lisa-copilot/skills/jira-journey/scripts/generate-templates.py +233 -0
  410. package/plugins/lisa-copilot/skills/jira-journey/scripts/parse-plan.py +368 -0
  411. package/plugins/lisa-copilot/skills/jira-read-ticket/SKILL.md +198 -0
  412. package/plugins/lisa-copilot/skills/jira-read-ticket/scripts/download-attachment.sh +110 -0
  413. package/plugins/lisa-copilot/skills/jira-sync/SKILL.md +95 -0
  414. package/plugins/lisa-copilot/skills/jira-validate-ticket/SKILL.md +318 -0
  415. package/plugins/lisa-copilot/skills/jira-verify/SKILL.md +30 -0
  416. package/plugins/lisa-copilot/skills/jira-write-ticket/SKILL.md +265 -0
  417. package/plugins/lisa-copilot/skills/jsdoc-best-practices/SKILL.md +432 -0
  418. package/plugins/lisa-copilot/skills/linear-add-journey/SKILL.md +105 -0
  419. package/plugins/lisa-copilot/skills/linear-build-intake/SKILL.md +283 -0
  420. package/plugins/lisa-copilot/skills/linear-create/SKILL.md +146 -0
  421. package/plugins/lisa-copilot/skills/linear-evidence/SKILL.md +103 -0
  422. package/plugins/lisa-copilot/skills/linear-journey/SKILL.md +134 -0
  423. package/plugins/lisa-copilot/skills/linear-prd-intake/SKILL.md +383 -0
  424. package/plugins/lisa-copilot/skills/linear-read-issue/SKILL.md +200 -0
  425. package/plugins/lisa-copilot/skills/linear-sync/SKILL.md +114 -0
  426. package/plugins/lisa-copilot/skills/linear-to-tracker/SKILL.md +342 -0
  427. package/plugins/lisa-copilot/skills/linear-validate-issue/SKILL.md +313 -0
  428. package/plugins/lisa-copilot/skills/linear-verify/SKILL.md +51 -0
  429. package/plugins/lisa-copilot/skills/linear-write-issue/SKILL.md +292 -0
  430. package/plugins/lisa-copilot/skills/linear-write-prd/SKILL.md +96 -0
  431. package/plugins/lisa-copilot/skills/lisa-review-implementation/SKILL.md +209 -0
  432. package/plugins/lisa-copilot/skills/monitor/SKILL.md +48 -0
  433. package/plugins/lisa-copilot/skills/nightly-add-test-coverage/SKILL.md +40 -0
  434. package/plugins/lisa-copilot/skills/nightly-improve-tests/SKILL.md +29 -0
  435. package/plugins/lisa-copilot/skills/nightly-lower-code-complexity/SKILL.md +28 -0
  436. package/plugins/lisa-copilot/skills/notion-access/SKILL.md +226 -0
  437. package/plugins/lisa-copilot/skills/notion-prd-intake/SKILL.md +360 -0
  438. package/plugins/lisa-copilot/skills/notion-to-tracker/SKILL.md +357 -0
  439. package/plugins/lisa-copilot/skills/notion-write-prd/SKILL.md +109 -0
  440. package/plugins/lisa-copilot/skills/performance-review/SKILL.md +94 -0
  441. package/plugins/lisa-copilot/skills/plan/SKILL.md +60 -0
  442. package/plugins/lisa-copilot/skills/plugin-sync-explain/SKILL.md +53 -0
  443. package/plugins/lisa-copilot/skills/prd-backlink/SKILL.md +265 -0
  444. package/plugins/lisa-copilot/skills/prd-source-write/SKILL.md +101 -0
  445. package/plugins/lisa-copilot/skills/prd-ticket-coverage/SKILL.md +170 -0
  446. package/plugins/lisa-copilot/skills/product-walkthrough/SKILL.md +129 -0
  447. package/plugins/lisa-copilot/skills/project-ideation/SKILL.md +315 -0
  448. package/plugins/lisa-copilot/skills/project-ideation/examples/evidence-card-format.md +21 -0
  449. package/plugins/lisa-copilot/skills/project-ideation/examples/host-project-only.md +22 -0
  450. package/plugins/lisa-copilot/skills/project-ideation/examples/idempotency-verification-harness.md +57 -0
  451. package/plugins/lisa-copilot/skills/project-ideation/examples/public-external-inspiration.md +22 -0
  452. package/plugins/lisa-copilot/skills/project-ideation/examples/unavailable-data-rejection.md +22 -0
  453. package/plugins/lisa-copilot/skills/pull-request-review/SKILL.md +68 -0
  454. package/plugins/lisa-copilot/skills/quality-review/SKILL.md +54 -0
  455. package/plugins/lisa-copilot/skills/queue-status/SKILL.md +133 -0
  456. package/plugins/lisa-copilot/skills/repair-intake/SKILL.md +584 -0
  457. package/plugins/lisa-copilot/skills/reproduce-bug/SKILL.md +96 -0
  458. package/plugins/lisa-copilot/skills/research/SKILL.md +68 -0
  459. package/plugins/lisa-copilot/skills/review-local/SKILL.md +88 -0
  460. package/plugins/lisa-copilot/skills/root-cause-analysis/SKILL.md +155 -0
  461. package/plugins/lisa-copilot/skills/security-review/SKILL.md +57 -0
  462. package/plugins/lisa-copilot/skills/security-zap-scan/SKILL.md +33 -0
  463. package/plugins/lisa-copilot/skills/setup-atlassian/SKILL.md +347 -0
  464. package/plugins/lisa-copilot/skills/setup-automations/SKILL.md +99 -0
  465. package/plugins/lisa-copilot/skills/setup-confluence/SKILL.md +254 -0
  466. package/plugins/lisa-copilot/skills/setup-github/SKILL.md +268 -0
  467. package/plugins/lisa-copilot/skills/setup-jira/SKILL.md +198 -0
  468. package/plugins/lisa-copilot/skills/setup-linear/SKILL.md +251 -0
  469. package/plugins/lisa-copilot/skills/setup-notion/SKILL.md +316 -0
  470. package/plugins/lisa-copilot/skills/spec-conformance/SKILL.md +159 -0
  471. package/plugins/lisa-copilot/skills/task-decomposition/SKILL.md +127 -0
  472. package/plugins/lisa-copilot/skills/task-triage/SKILL.md +23 -0
  473. package/plugins/lisa-copilot/skills/tdd-implementation/SKILL.md +83 -0
  474. package/plugins/lisa-copilot/skills/tear-down-automations/SKILL.md +34 -0
  475. package/plugins/lisa-copilot/skills/test-strategy/SKILL.md +63 -0
  476. package/plugins/lisa-copilot/skills/ticket-triage/SKILL.md +182 -0
  477. package/plugins/lisa-copilot/skills/tracker-add-journey/SKILL.md +26 -0
  478. package/plugins/lisa-copilot/skills/tracker-build-intake/SKILL.md +64 -0
  479. package/plugins/lisa-copilot/skills/tracker-create/SKILL.md +26 -0
  480. package/plugins/lisa-copilot/skills/tracker-evidence/SKILL.md +52 -0
  481. package/plugins/lisa-copilot/skills/tracker-journey/SKILL.md +26 -0
  482. package/plugins/lisa-copilot/skills/tracker-read/SKILL.md +27 -0
  483. package/plugins/lisa-copilot/skills/tracker-source-artifacts/SKILL.md +107 -0
  484. package/plugins/lisa-copilot/skills/tracker-sync/SKILL.md +51 -0
  485. package/plugins/lisa-copilot/skills/tracker-validate/SKILL.md +36 -0
  486. package/plugins/lisa-copilot/skills/tracker-verify/SKILL.md +27 -0
  487. package/plugins/lisa-copilot/skills/tracker-write/SKILL.md +53 -0
  488. package/plugins/lisa-copilot/skills/usage-accounting/SKILL.md +170 -0
  489. package/plugins/lisa-copilot/skills/verification-lifecycle/SKILL.md +339 -0
  490. package/plugins/lisa-copilot/skills/verify/SKILL.md +49 -0
  491. package/plugins/lisa-copilot/skills/verify-prd/SKILL.md +392 -0
  492. package/plugins/lisa-copilot/skills/wiki-install/SKILL.md +101 -0
  493. package/plugins/lisa-cursor/.claude-plugin/plugin.json +52 -0
  494. package/plugins/lisa-cursor/agents/architecture-specialist.md +47 -0
  495. package/plugins/lisa-cursor/agents/bug-fixer.md +39 -0
  496. package/plugins/lisa-cursor/agents/builder.md +40 -0
  497. package/plugins/lisa-cursor/agents/confluence-prd-intake.md +65 -0
  498. package/plugins/lisa-cursor/agents/debug-specialist.md +114 -0
  499. package/plugins/lisa-cursor/agents/git-history-analyzer.md +183 -0
  500. package/plugins/lisa-cursor/agents/github-agent.md +148 -0
  501. package/plugins/lisa-cursor/agents/github-build-intake.md +64 -0
  502. package/plugins/lisa-cursor/agents/github-prd-intake.md +66 -0
  503. package/plugins/lisa-cursor/agents/jira-agent.md +129 -0
  504. package/plugins/lisa-cursor/agents/jira-build-intake.md +64 -0
  505. package/plugins/lisa-cursor/agents/learner.md +43 -0
  506. package/plugins/lisa-cursor/agents/learnings-synthesizer.md +135 -0
  507. package/plugins/lisa-cursor/agents/linear-agent.md +134 -0
  508. package/plugins/lisa-cursor/agents/linear-build-intake.md +64 -0
  509. package/plugins/lisa-cursor/agents/linear-prd-intake.md +66 -0
  510. package/plugins/lisa-cursor/agents/notion-prd-intake.md +63 -0
  511. package/plugins/lisa-cursor/agents/performance-specialist.md +85 -0
  512. package/plugins/lisa-cursor/agents/pr-mining-specialist.md +85 -0
  513. package/plugins/lisa-cursor/agents/product-specialist.md +63 -0
  514. package/plugins/lisa-cursor/agents/quality-specialist.md +56 -0
  515. package/plugins/lisa-cursor/agents/security-specialist.md +51 -0
  516. package/plugins/lisa-cursor/agents/skill-evaluator.md +245 -0
  517. package/plugins/lisa-cursor/agents/spec-conformance-specialist.md +49 -0
  518. package/plugins/lisa-cursor/agents/test-specialist.md +49 -0
  519. package/plugins/lisa-cursor/agents/tracker-mining-specialist.md +85 -0
  520. package/plugins/lisa-cursor/agents/verification-specialist.md +135 -0
  521. package/plugins/lisa-cursor/commands/automation-status.md +12 -0
  522. package/plugins/lisa-cursor/commands/codify-verification.md +6 -0
  523. package/plugins/lisa-cursor/commands/debrief/apply.md +6 -0
  524. package/plugins/lisa-cursor/commands/debrief.md +6 -0
  525. package/plugins/lisa-cursor/commands/doctor.md +6 -0
  526. package/plugins/lisa-cursor/commands/fix/linter-error.md +7 -0
  527. package/plugins/lisa-cursor/commands/git/commit.md +7 -0
  528. package/plugins/lisa-cursor/commands/git/prune.md +6 -0
  529. package/plugins/lisa-cursor/commands/git/submit-pr.md +7 -0
  530. package/plugins/lisa-cursor/commands/implement.md +6 -0
  531. package/plugins/lisa-cursor/commands/improve/code-complexity.md +6 -0
  532. package/plugins/lisa-cursor/commands/improve/max-lines-per-function.md +7 -0
  533. package/plugins/lisa-cursor/commands/improve/max-lines.md +7 -0
  534. package/plugins/lisa-cursor/commands/improve/test-coverage.md +7 -0
  535. package/plugins/lisa-cursor/commands/improve/tests.md +7 -0
  536. package/plugins/lisa-cursor/commands/intake-explain.md +31 -0
  537. package/plugins/lisa-cursor/commands/intake.md +6 -0
  538. package/plugins/lisa-cursor/commands/monitor.md +6 -0
  539. package/plugins/lisa-cursor/commands/plan.md +6 -0
  540. package/plugins/lisa-cursor/commands/plugin-sync-explain.md +8 -0
  541. package/plugins/lisa-cursor/commands/product-walkthrough.md +7 -0
  542. package/plugins/lisa-cursor/commands/project-ideation.md +6 -0
  543. package/plugins/lisa-cursor/commands/pull-request/review.md +7 -0
  544. package/plugins/lisa-cursor/commands/queue-status.md +34 -0
  545. package/plugins/lisa-cursor/commands/repair-intake.md +6 -0
  546. package/plugins/lisa-cursor/commands/research.md +6 -0
  547. package/plugins/lisa-cursor/commands/review/local.md +6 -0
  548. package/plugins/lisa-cursor/commands/security/zap-scan.md +6 -0
  549. package/plugins/lisa-cursor/commands/setup/atlassian.md +7 -0
  550. package/plugins/lisa-cursor/commands/setup/confluence.md +7 -0
  551. package/plugins/lisa-cursor/commands/setup/github.md +7 -0
  552. package/plugins/lisa-cursor/commands/setup/jira.md +7 -0
  553. package/plugins/lisa-cursor/commands/setup/linear.md +7 -0
  554. package/plugins/lisa-cursor/commands/setup/notion.md +7 -0
  555. package/plugins/lisa-cursor/commands/setup-automations.md +6 -0
  556. package/plugins/lisa-cursor/commands/tear-down-automations.md +6 -0
  557. package/plugins/lisa-cursor/commands/verify-prd.md +6 -0
  558. package/plugins/lisa-cursor/commands/verify.md +6 -0
  559. package/plugins/lisa-cursor/commands/wiki/install.md +7 -0
  560. package/plugins/lisa-cursor/hooks/block-no-verify.sh +37 -0
  561. package/plugins/lisa-cursor/hooks/install-pkgs.sh +69 -0
  562. package/plugins/lisa-cursor/hooks/notify-ntfy.sh +183 -0
  563. package/plugins/lisa-cursor/hooks/setup-jira-cli.sh +51 -0
  564. package/plugins/lisa-cursor/rules/eager/base-rules.md +70 -0
  565. package/plugins/lisa-cursor/rules/eager/coding-philosophy.md +27 -0
  566. package/plugins/lisa-cursor/rules/eager/config-resolution.md +28 -0
  567. package/plugins/lisa-cursor/rules/eager/documentation-source-paths.md +13 -0
  568. package/plugins/lisa-cursor/rules/eager/empirical-inquiry.md +22 -0
  569. package/plugins/lisa-cursor/rules/eager/intent-routing.md +18 -0
  570. package/plugins/lisa-cursor/rules/eager/leaf-only-lifecycle.md +39 -0
  571. package/plugins/lisa-cursor/rules/eager/prd-lifecycle-rollup.md +31 -0
  572. package/plugins/lisa-cursor/rules/eager/repo-scope-split.md +39 -0
  573. package/plugins/lisa-cursor/rules/eager/security-audit-handling.md +29 -0
  574. package/plugins/lisa-cursor/rules/eager/usage-accounting.md +28 -0
  575. package/plugins/lisa-cursor/rules/eager/verification.md +21 -0
  576. package/plugins/lisa-cursor/rules/eager/wiki-knowledge-source.md +16 -0
  577. package/plugins/lisa-cursor/rules/reference/base-rules.md +133 -0
  578. package/plugins/lisa-cursor/rules/reference/coding-philosophy.md +428 -0
  579. package/plugins/lisa-cursor/rules/reference/config-resolution.md +691 -0
  580. package/plugins/lisa-cursor/rules/reference/documentation-source-paths.md +13 -0
  581. package/plugins/lisa-cursor/rules/reference/empirical-inquiry.md +27 -0
  582. package/plugins/lisa-cursor/rules/reference/intent-routing.md +407 -0
  583. package/plugins/lisa-cursor/rules/reference/leaf-only-lifecycle.md +120 -0
  584. package/plugins/lisa-cursor/rules/reference/prd-lifecycle-rollup.md +156 -0
  585. package/plugins/lisa-cursor/rules/reference/repo-scope-split.md +58 -0
  586. package/plugins/lisa-cursor/rules/reference/security-audit-handling.md +30 -0
  587. package/plugins/lisa-cursor/rules/reference/usage-accounting.md +144 -0
  588. package/plugins/lisa-cursor/rules/reference/verification.md +124 -0
  589. package/plugins/lisa-cursor/rules/reference/wiki-knowledge-source.md +14 -0
  590. package/plugins/lisa-cursor/scripts/automation-status-claude-adapter.mjs +672 -0
  591. package/plugins/lisa-cursor/scripts/automation-status-codex-adapter.mjs +697 -0
  592. package/plugins/lisa-cursor/scripts/automation-status-contract-drift.mjs +392 -0
  593. package/plugins/lisa-cursor/scripts/automation-status-expected-fleet.mjs +319 -0
  594. package/plugins/lisa-cursor/scripts/automation-status-report.mjs +170 -0
  595. package/plugins/lisa-cursor/scripts/doctor-report.mjs +143 -0
  596. package/plugins/lisa-cursor/scripts/plugin-sync-explain.mjs +512 -0
  597. package/plugins/lisa-cursor/scripts/project-ideation-idempotency-harness.mjs +319 -0
  598. package/plugins/lisa-cursor/scripts/queue-contract-resolution.mjs +453 -0
  599. package/plugins/lisa-cursor/scripts/queue-health-classification.mjs +157 -0
  600. package/plugins/lisa-cursor/scripts/queue-status-build-readers.mjs +509 -0
  601. package/plugins/lisa-cursor/scripts/queue-status-prd-readers.mjs +452 -0
  602. package/plugins/lisa-cursor/skills/acceptance-criteria/SKILL.md +71 -0
  603. package/plugins/lisa-cursor/skills/agent-design-best-practices/SKILL.md +219 -0
  604. package/plugins/lisa-cursor/skills/atlassian-access/SKILL.md +293 -0
  605. package/plugins/lisa-cursor/skills/automation-status/SKILL.md +111 -0
  606. package/plugins/lisa-cursor/skills/bug-triage/SKILL.md +23 -0
  607. package/plugins/lisa-cursor/skills/codebase-research/SKILL.md +87 -0
  608. package/plugins/lisa-cursor/skills/codify-verification/SKILL.md +152 -0
  609. package/plugins/lisa-cursor/skills/confluence-prd-intake/SKILL.md +417 -0
  610. package/plugins/lisa-cursor/skills/confluence-to-tracker/SKILL.md +360 -0
  611. package/plugins/lisa-cursor/skills/confluence-write-prd/SKILL.md +109 -0
  612. package/plugins/lisa-cursor/skills/debrief/SKILL.md +94 -0
  613. package/plugins/lisa-cursor/skills/debrief-apply/SKILL.md +63 -0
  614. package/plugins/lisa-cursor/skills/doctor/SKILL.md +317 -0
  615. package/plugins/lisa-cursor/skills/epic-triage/SKILL.md +28 -0
  616. package/plugins/lisa-cursor/skills/fix-linter-error/SKILL.md +45 -0
  617. package/plugins/lisa-cursor/skills/git-commit/SKILL.md +48 -0
  618. package/plugins/lisa-cursor/skills/git-prune/SKILL.md +35 -0
  619. package/plugins/lisa-cursor/skills/git-submit-pr/SKILL.md +105 -0
  620. package/plugins/lisa-cursor/skills/github-add-journey/SKILL.md +115 -0
  621. package/plugins/lisa-cursor/skills/github-build-intake/SKILL.md +377 -0
  622. package/plugins/lisa-cursor/skills/github-create/SKILL.md +101 -0
  623. package/plugins/lisa-cursor/skills/github-evidence/SKILL.md +110 -0
  624. package/plugins/lisa-cursor/skills/github-journey/SKILL.md +121 -0
  625. package/plugins/lisa-cursor/skills/github-prd-intake/SKILL.md +432 -0
  626. package/plugins/lisa-cursor/skills/github-project-v2/SKILL.md +227 -0
  627. package/plugins/lisa-cursor/skills/github-read-issue/SKILL.md +248 -0
  628. package/plugins/lisa-cursor/skills/github-sync/SKILL.md +119 -0
  629. package/plugins/lisa-cursor/skills/github-to-tracker/SKILL.md +345 -0
  630. package/plugins/lisa-cursor/skills/github-validate-issue/SKILL.md +331 -0
  631. package/plugins/lisa-cursor/skills/github-verify/SKILL.md +29 -0
  632. package/plugins/lisa-cursor/skills/github-write-issue/SKILL.md +339 -0
  633. package/plugins/lisa-cursor/skills/github-write-prd/SKILL.md +157 -0
  634. package/plugins/lisa-cursor/skills/implement/SKILL.md +145 -0
  635. package/plugins/lisa-cursor/skills/improve-code-complexity/SKILL.md +44 -0
  636. package/plugins/lisa-cursor/skills/improve-max-lines/SKILL.md +45 -0
  637. package/plugins/lisa-cursor/skills/improve-max-lines-per-function/SKILL.md +46 -0
  638. package/plugins/lisa-cursor/skills/improve-test-coverage/SKILL.md +44 -0
  639. package/plugins/lisa-cursor/skills/improve-tests/SKILL.md +47 -0
  640. package/plugins/lisa-cursor/skills/intake/SKILL.md +132 -0
  641. package/plugins/lisa-cursor/skills/intake-explain/SKILL.md +279 -0
  642. package/plugins/lisa-cursor/skills/jira-add-journey/SKILL.md +121 -0
  643. package/plugins/lisa-cursor/skills/jira-build-intake/SKILL.md +286 -0
  644. package/plugins/lisa-cursor/skills/jira-create/SKILL.md +154 -0
  645. package/plugins/lisa-cursor/skills/jira-evidence/SKILL.md +90 -0
  646. package/plugins/lisa-cursor/skills/jira-evidence/scripts/post-evidence.sh +163 -0
  647. package/plugins/lisa-cursor/skills/jira-journey/SKILL.md +127 -0
  648. package/plugins/lisa-cursor/skills/jira-journey/scripts/generate-templates.py +233 -0
  649. package/plugins/lisa-cursor/skills/jira-journey/scripts/parse-plan.py +368 -0
  650. package/plugins/lisa-cursor/skills/jira-read-ticket/SKILL.md +198 -0
  651. package/plugins/lisa-cursor/skills/jira-read-ticket/scripts/download-attachment.sh +110 -0
  652. package/plugins/lisa-cursor/skills/jira-sync/SKILL.md +95 -0
  653. package/plugins/lisa-cursor/skills/jira-validate-ticket/SKILL.md +318 -0
  654. package/plugins/lisa-cursor/skills/jira-verify/SKILL.md +30 -0
  655. package/plugins/lisa-cursor/skills/jira-write-ticket/SKILL.md +265 -0
  656. package/plugins/lisa-cursor/skills/jsdoc-best-practices/SKILL.md +432 -0
  657. package/plugins/lisa-cursor/skills/linear-add-journey/SKILL.md +105 -0
  658. package/plugins/lisa-cursor/skills/linear-build-intake/SKILL.md +283 -0
  659. package/plugins/lisa-cursor/skills/linear-create/SKILL.md +146 -0
  660. package/plugins/lisa-cursor/skills/linear-evidence/SKILL.md +103 -0
  661. package/plugins/lisa-cursor/skills/linear-journey/SKILL.md +134 -0
  662. package/plugins/lisa-cursor/skills/linear-prd-intake/SKILL.md +383 -0
  663. package/plugins/lisa-cursor/skills/linear-read-issue/SKILL.md +200 -0
  664. package/plugins/lisa-cursor/skills/linear-sync/SKILL.md +114 -0
  665. package/plugins/lisa-cursor/skills/linear-to-tracker/SKILL.md +342 -0
  666. package/plugins/lisa-cursor/skills/linear-validate-issue/SKILL.md +313 -0
  667. package/plugins/lisa-cursor/skills/linear-verify/SKILL.md +51 -0
  668. package/plugins/lisa-cursor/skills/linear-write-issue/SKILL.md +292 -0
  669. package/plugins/lisa-cursor/skills/linear-write-prd/SKILL.md +96 -0
  670. package/plugins/lisa-cursor/skills/lisa-review-implementation/SKILL.md +209 -0
  671. package/plugins/lisa-cursor/skills/monitor/SKILL.md +48 -0
  672. package/plugins/lisa-cursor/skills/nightly-add-test-coverage/SKILL.md +40 -0
  673. package/plugins/lisa-cursor/skills/nightly-improve-tests/SKILL.md +29 -0
  674. package/plugins/lisa-cursor/skills/nightly-lower-code-complexity/SKILL.md +28 -0
  675. package/plugins/lisa-cursor/skills/notion-access/SKILL.md +226 -0
  676. package/plugins/lisa-cursor/skills/notion-prd-intake/SKILL.md +360 -0
  677. package/plugins/lisa-cursor/skills/notion-to-tracker/SKILL.md +357 -0
  678. package/plugins/lisa-cursor/skills/notion-write-prd/SKILL.md +109 -0
  679. package/plugins/lisa-cursor/skills/performance-review/SKILL.md +94 -0
  680. package/plugins/lisa-cursor/skills/plan/SKILL.md +60 -0
  681. package/plugins/lisa-cursor/skills/plugin-sync-explain/SKILL.md +53 -0
  682. package/plugins/lisa-cursor/skills/prd-backlink/SKILL.md +265 -0
  683. package/plugins/lisa-cursor/skills/prd-source-write/SKILL.md +101 -0
  684. package/plugins/lisa-cursor/skills/prd-ticket-coverage/SKILL.md +170 -0
  685. package/plugins/lisa-cursor/skills/product-walkthrough/SKILL.md +129 -0
  686. package/plugins/lisa-cursor/skills/project-ideation/SKILL.md +315 -0
  687. package/plugins/lisa-cursor/skills/project-ideation/examples/evidence-card-format.md +21 -0
  688. package/plugins/lisa-cursor/skills/project-ideation/examples/host-project-only.md +22 -0
  689. package/plugins/lisa-cursor/skills/project-ideation/examples/idempotency-verification-harness.md +57 -0
  690. package/plugins/lisa-cursor/skills/project-ideation/examples/public-external-inspiration.md +22 -0
  691. package/plugins/lisa-cursor/skills/project-ideation/examples/unavailable-data-rejection.md +22 -0
  692. package/plugins/lisa-cursor/skills/pull-request-review/SKILL.md +68 -0
  693. package/plugins/lisa-cursor/skills/quality-review/SKILL.md +54 -0
  694. package/plugins/lisa-cursor/skills/queue-status/SKILL.md +133 -0
  695. package/plugins/lisa-cursor/skills/repair-intake/SKILL.md +584 -0
  696. package/plugins/lisa-cursor/skills/reproduce-bug/SKILL.md +96 -0
  697. package/plugins/lisa-cursor/skills/research/SKILL.md +68 -0
  698. package/plugins/lisa-cursor/skills/review-local/SKILL.md +88 -0
  699. package/plugins/lisa-cursor/skills/root-cause-analysis/SKILL.md +155 -0
  700. package/plugins/lisa-cursor/skills/security-review/SKILL.md +57 -0
  701. package/plugins/lisa-cursor/skills/security-zap-scan/SKILL.md +33 -0
  702. package/plugins/lisa-cursor/skills/setup-atlassian/SKILL.md +347 -0
  703. package/plugins/lisa-cursor/skills/setup-automations/SKILL.md +99 -0
  704. package/plugins/lisa-cursor/skills/setup-confluence/SKILL.md +254 -0
  705. package/plugins/lisa-cursor/skills/setup-github/SKILL.md +268 -0
  706. package/plugins/lisa-cursor/skills/setup-jira/SKILL.md +198 -0
  707. package/plugins/lisa-cursor/skills/setup-linear/SKILL.md +251 -0
  708. package/plugins/lisa-cursor/skills/setup-notion/SKILL.md +316 -0
  709. package/plugins/lisa-cursor/skills/spec-conformance/SKILL.md +159 -0
  710. package/plugins/lisa-cursor/skills/task-decomposition/SKILL.md +127 -0
  711. package/plugins/lisa-cursor/skills/task-triage/SKILL.md +23 -0
  712. package/plugins/lisa-cursor/skills/tdd-implementation/SKILL.md +83 -0
  713. package/plugins/lisa-cursor/skills/tear-down-automations/SKILL.md +34 -0
  714. package/plugins/lisa-cursor/skills/test-strategy/SKILL.md +63 -0
  715. package/plugins/lisa-cursor/skills/ticket-triage/SKILL.md +182 -0
  716. package/plugins/lisa-cursor/skills/tracker-add-journey/SKILL.md +26 -0
  717. package/plugins/lisa-cursor/skills/tracker-build-intake/SKILL.md +64 -0
  718. package/plugins/lisa-cursor/skills/tracker-create/SKILL.md +26 -0
  719. package/plugins/lisa-cursor/skills/tracker-evidence/SKILL.md +52 -0
  720. package/plugins/lisa-cursor/skills/tracker-journey/SKILL.md +26 -0
  721. package/plugins/lisa-cursor/skills/tracker-read/SKILL.md +27 -0
  722. package/plugins/lisa-cursor/skills/tracker-source-artifacts/SKILL.md +107 -0
  723. package/plugins/lisa-cursor/skills/tracker-sync/SKILL.md +51 -0
  724. package/plugins/lisa-cursor/skills/tracker-validate/SKILL.md +36 -0
  725. package/plugins/lisa-cursor/skills/tracker-verify/SKILL.md +27 -0
  726. package/plugins/lisa-cursor/skills/tracker-write/SKILL.md +53 -0
  727. package/plugins/lisa-cursor/skills/usage-accounting/SKILL.md +170 -0
  728. package/plugins/lisa-cursor/skills/verification-lifecycle/SKILL.md +339 -0
  729. package/plugins/lisa-cursor/skills/verify/SKILL.md +49 -0
  730. package/plugins/lisa-cursor/skills/verify-prd/SKILL.md +392 -0
  731. package/plugins/lisa-cursor/skills/wiki-install/SKILL.md +101 -0
  732. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  733. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  734. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  735. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +2 -1
  736. package/plugins/lisa-harper-fabric/hooks/hooks.json +26 -0
  737. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  738. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +2 -1
  739. package/plugins/lisa-nestjs/hooks/hooks.json +15 -0
  740. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  741. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  742. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  743. package/plugins/lisa-rails/.codex-plugin/plugin.json +2 -1
  744. package/plugins/lisa-rails/hooks/hooks.json +41 -0
  745. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  746. package/plugins/lisa-typescript/.codex-plugin/plugin.json +2 -1
  747. package/plugins/lisa-typescript/hooks/format-on-edit.sh +5 -3
  748. package/plugins/lisa-typescript/hooks/hooks.json +34 -0
  749. package/plugins/lisa-typescript/hooks/lint-on-edit.sh +5 -2
  750. package/plugins/lisa-typescript/hooks/sg-scan-on-edit.sh +5 -2
  751. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  752. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  753. package/plugins/src/typescript/hooks/format-on-edit.sh +5 -3
  754. package/plugins/src/typescript/hooks/lint-on-edit.sh +5 -2
  755. package/plugins/src/typescript/hooks/sg-scan-on-edit.sh +5 -2
  756. package/scripts/build-plugins.sh +24 -0
  757. package/scripts/generate-agy-plugin-artifacts.mjs +168 -0
  758. package/scripts/generate-codex-plugin-artifacts.mjs +150 -12
  759. package/scripts/generate-copilot-plugin-artifacts.mjs +235 -0
  760. package/scripts/generate-cursor-plugin-artifacts.mjs +177 -0
  761. package/scripts/internal-agy-skill-policy.json +3 -0
  762. package/scripts/internal-copilot-runtime-probe.json +13 -0
  763. package/scripts/internal-copilot-skill-policy.json +3 -0
  764. package/scripts/internal-cursor-skill-policy.json +3 -0
  765. package/scripts/lib/per-agent-hook-filter.mjs +249 -0
  766. package/scripts/probes/wave3-verification.sh +106 -0
@@ -61,6 +61,24 @@
61
61
  "source": "./plugins/lisa-openclaw",
62
62
  "description": "Connect staff to Telegram or Slack via OpenClaw — facilitator/specialist routing and repo-coding topics (Claude + Codex)",
63
63
  "category": "productivity"
64
+ },
65
+ {
66
+ "name": "lisa-cursor",
67
+ "source": "./plugins/lisa-cursor",
68
+ "description": "Cursor (cursor-agent) variant — skills and agents consumed via Cursor's native .claude-plugin loader",
69
+ "category": "productivity"
70
+ },
71
+ {
72
+ "name": "lisa-agy",
73
+ "source": "./plugins/lisa-agy",
74
+ "description": "Antigravity (agy) variant — bare-manifest plugin with skills and agents; rules baked into AGENTS.md since agy plugin hooks don't fire",
75
+ "category": "productivity"
76
+ },
77
+ {
78
+ "name": "lisa-copilot",
79
+ "source": "./plugins/lisa-copilot",
80
+ "description": "GitHub Copilot variant — agents emitted as <name>.agent.md with camelCase hook events",
81
+ "category": "productivity"
64
82
  }
65
83
  ]
66
84
  }
@@ -0,0 +1,24 @@
1
+ /** Filename of agy's project memory file (auto-loaded since v1.20.3). */
2
+ export declare const AGENTS_MD_FILENAME = "AGENTS.md";
3
+ /** Marker placed at the start of the Lisa-managed block in AGENTS.md. */
4
+ export declare const LISA_RULES_START_MARKER = "<!-- LISA_RULES_START -->";
5
+ /** Marker placed at the end of the Lisa-managed block in AGENTS.md. */
6
+ export declare const LISA_RULES_END_MARKER = "<!-- LISA_RULES_END -->";
7
+ /** Result of the agy AGENTS.md install pass. */
8
+ export interface AgyAgentsMdInstallResult {
9
+ /** Absolute path to the AGENTS.md file. */
10
+ readonly path: string;
11
+ /** True when this run created the file for the first time. */
12
+ readonly created: boolean;
13
+ /** Number of `.md` rule files baked into the marker block. */
14
+ readonly rulesBaked: number;
15
+ }
16
+ /**
17
+ * Install (or refresh) Lisa's AGENTS.md at the host project root for agy.
18
+ * @param destDir - Absolute path to the host project root.
19
+ * @param rulesEagerDir - Absolute path to the plugin's `rules/eager/` directory
20
+ * containing the rule bodies to bake in.
21
+ * @returns Install result describing path, creation, and rules baked.
22
+ */
23
+ export declare function installAgyAgentsMd(destDir: string, rulesEagerDir: string): Promise<AgyAgentsMdInstallResult>;
24
+ //# sourceMappingURL=agents-md-installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents-md-installer.d.ts","sourceRoot":"","sources":["../../src/agy/agents-md-installer.ts"],"names":[],"mappings":"AA6BA,yEAAyE;AACzE,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAE9C,yEAAyE;AACzE,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,uEAAuE;AACvE,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAE/D,gDAAgD;AAChD,MAAM,WAAW,wBAAwB;IACvC,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,8DAA8D;IAC9D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AA+ED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,wBAAwB,CAAC,CAiBnC"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Write Lisa's AGENTS.md template for agy host projects, with rule content
3
+ * baked directly into the file body.
4
+ *
5
+ * Per the parity research artifact (Cluster 4-agy / Option α), Lisa cannot
6
+ * polyfill rules-injection on agy via a SessionStart hook because agy plugin
7
+ * hooks do not fire in `-p` headless mode. The alternative is to bake the
8
+ * eager rule content into the AGENTS.md template that agy auto-loads at
9
+ * session start (verified-by-doc since v1.20.3).
10
+ *
11
+ * Behavior diverges from `src/codex/agents-md-installer.ts`:
12
+ * - Codex installer is create-only and references hooks for rule injection.
13
+ * - agy installer is also create-only but appends the rule bodies directly
14
+ * to the template, with a Lisa-managed section marker so re-runs can
15
+ * refresh the rule content without overwriting host-authored sections.
16
+ *
17
+ * The marker block convention mirrors the tagged-merge pattern used in
18
+ * `src/codex/hooks-merger.ts`. On re-runs, the installer:
19
+ * 1. Reads the existing AGENTS.md.
20
+ * 2. Strips the `<!-- LISA_RULES_START -->...<!-- LISA_RULES_END -->` block
21
+ * if present.
22
+ * 3. Re-emits Lisa's current eager rules between fresh markers.
23
+ * 4. Preserves all content outside the marker block (host-authored guidance).
24
+ * @module agy/agents-md-installer
25
+ */
26
+ import { mkdir, readFile, readdir, writeFile } from "node:fs/promises";
27
+ import { existsSync } from "node:fs";
28
+ import * as path from "node:path";
29
+ /** Filename of agy's project memory file (auto-loaded since v1.20.3). */
30
+ export const AGENTS_MD_FILENAME = "AGENTS.md";
31
+ /** Marker placed at the start of the Lisa-managed block in AGENTS.md. */
32
+ export const LISA_RULES_START_MARKER = "<!-- LISA_RULES_START -->";
33
+ /** Marker placed at the end of the Lisa-managed block in AGENTS.md. */
34
+ export const LISA_RULES_END_MARKER = "<!-- LISA_RULES_END -->";
35
+ const HEADER = `# AGENTS.md
36
+
37
+ This file is auto-loaded by Antigravity (\`agy\`) at the start of every
38
+ session. Lisa polyfills rule injection by baking its eager rule content
39
+ directly into this file (agy plugin hooks do not fire in \`-p\` headless
40
+ mode, so the SessionStart-hook strategy Lisa uses on Claude and Codex is
41
+ not available on agy).
42
+
43
+ Anything between the markers below is Lisa-managed and is rewritten on
44
+ every \`lisa apply\` run. Add project-specific guidance OUTSIDE the marker
45
+ block — it will be preserved across re-applies.
46
+ `;
47
+ /**
48
+ * Read all eager rule files (the bodies Lisa wants in session context)
49
+ * sorted by filename for stable output.
50
+ * @param rulesEagerDir - Absolute path to the plugin's `rules/eager/` directory.
51
+ * @returns Array of `{ filename, body }` pairs.
52
+ */
53
+ async function readEagerRules(rulesEagerDir) {
54
+ if (!existsSync(rulesEagerDir))
55
+ return [];
56
+ const entries = await readdir(rulesEagerDir, { withFileTypes: true });
57
+ const mdEntries = [
58
+ ...entries.filter(entry => entry.isFile() && entry.name.endsWith(".md")),
59
+ ].sort((a, b) => a.name.localeCompare(b.name));
60
+ return await Promise.all(mdEntries.map(async (entry) => {
61
+ const filePath = path.join(rulesEagerDir, entry.name);
62
+ const body = await readFile(filePath, "utf8");
63
+ return { filename: entry.name, body };
64
+ }));
65
+ }
66
+ /**
67
+ * Build the Lisa-managed marker block from the eager rule bodies.
68
+ * @param rules - Eager rule contents read from `rules/eager/*.md`.
69
+ * @returns Markdown text including the start/end markers.
70
+ */
71
+ function buildLisaBlock(rules) {
72
+ const sections = rules.map(rule => {
73
+ // Drop any existing leading H1 from rule bodies — they are already
74
+ // contextual subsections inside AGENTS.md, not standalone documents.
75
+ // Strip an optional leading H1 line — bounded to one line and one trailing
76
+ // newline pair to satisfy sonarjs/slow-regex (no unbounded `+` quantifiers).
77
+ const trimmed = rule.body.replace(/^# [^\n]{0,256}\n\n?/, "").trim();
78
+ const heading = `## ${rule.filename.replace(/\.md$/, "")}\n\n`;
79
+ return `${heading + trimmed}\n`;
80
+ });
81
+ return `${LISA_RULES_START_MARKER}\n\n${sections.join("\n")}\n${LISA_RULES_END_MARKER}\n`;
82
+ }
83
+ /**
84
+ * Strip an existing Lisa-managed block from the AGENTS.md body and return the
85
+ * surrounding host-authored content.
86
+ *
87
+ * Tolerates either ordering and whitespace variance around the markers.
88
+ * @param body - Existing AGENTS.md file contents.
89
+ * @returns The body with the Lisa block (if present) removed.
90
+ */
91
+ function stripExistingLisaBlock(body) {
92
+ const startIdx = body.indexOf(LISA_RULES_START_MARKER);
93
+ const endIdx = body.indexOf(LISA_RULES_END_MARKER);
94
+ if (startIdx === -1 || endIdx === -1 || endIdx < startIdx) {
95
+ return body;
96
+ }
97
+ const before = body.slice(0, startIdx);
98
+ const after = body.slice(endIdx + LISA_RULES_END_MARKER.length);
99
+ // Use a bounded quantifier instead of `{3,}` (unbounded) to satisfy
100
+ // sonarjs/slow-regex — three or more consecutive newlines collapse to two.
101
+ return `${(before + after).replace(/\n\n\n+/g, "\n\n").trim()}\n`;
102
+ }
103
+ /**
104
+ * Install (or refresh) Lisa's AGENTS.md at the host project root for agy.
105
+ * @param destDir - Absolute path to the host project root.
106
+ * @param rulesEagerDir - Absolute path to the plugin's `rules/eager/` directory
107
+ * containing the rule bodies to bake in.
108
+ * @returns Install result describing path, creation, and rules baked.
109
+ */
110
+ export async function installAgyAgentsMd(destDir, rulesEagerDir) {
111
+ await mkdir(destDir, { recursive: true });
112
+ const filePath = path.join(destDir, AGENTS_MD_FILENAME);
113
+ const rules = await readEagerRules(rulesEagerDir);
114
+ const lisaBlock = buildLisaBlock(rules);
115
+ if (!existsSync(filePath)) {
116
+ const body = `${HEADER}\n${lisaBlock}`;
117
+ await writeFile(filePath, body, "utf8");
118
+ return { path: filePath, created: true, rulesBaked: rules.length };
119
+ }
120
+ const existing = await readFile(filePath, "utf8");
121
+ const hostContent = stripExistingLisaBlock(existing);
122
+ const updated = `${hostContent.trimEnd()}\n\n${lisaBlock}`;
123
+ await writeFile(filePath, updated, "utf8");
124
+ return { path: filePath, created: false, rulesBaked: rules.length };
125
+ }
126
+ //# sourceMappingURL=agents-md-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents-md-installer.js","sourceRoot":"","sources":["../../src/agy/agents-md-installer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ /** Marker field tagged onto every Lisa-owned MCP server entry. */
2
+ export declare const LISA_MANAGED_MARKER: "_lisaManaged";
3
+ /**
4
+ * Where agy reads user-scope MCP config (shared with Antigravity desktop).
5
+ * @returns Absolute path to `~/.gemini/config/mcp_config.json`.
6
+ */
7
+ export declare function defaultUserMcpConfigPath(): string;
8
+ /**
9
+ * Where agy reads project-scope MCP config (per-workspace override).
10
+ * @param destDir - Absolute path to the host project root.
11
+ * @returns Absolute path to `<destDir>/.agents/mcp_config.json`.
12
+ */
13
+ export declare function defaultProjectMcpConfigPath(destDir: string): string;
14
+ /** MCP config scope: per-project workspace file or the shared user file. */
15
+ export type AgyMcpScope = "project" | "user";
16
+ /**
17
+ * Resolve the agy MCP config path for a given scope.
18
+ *
19
+ * `lisa apply` operates on a single project, so the default scope is
20
+ * `"project"` — it writes `<destDir>/.agents/mcp_config.json` rather than
21
+ * polluting the user's global `~/.gemini/config/mcp_config.json` (shared with
22
+ * the Antigravity desktop app). Pass `scope: "user"` to target the shared file.
23
+ * @param opts - Scope selector and (for project scope) the host project root.
24
+ * @param opts.scope - `"project"` (default) or `"user"`.
25
+ * @param opts.destDir - Host project root; required for project scope.
26
+ * @returns Absolute path to the mcp_config.json for the requested scope.
27
+ */
28
+ export declare function resolveAgyMcpConfigPath(opts: {
29
+ readonly scope?: AgyMcpScope;
30
+ readonly destDir?: string;
31
+ }): string;
32
+ /** A single MCP server entry in agy's mcp_config.json schema. */
33
+ export interface AgyMcpServerEntry {
34
+ /** stdio: command to launch. Mutually exclusive with serverUrl. */
35
+ readonly command?: string;
36
+ readonly args?: readonly string[];
37
+ readonly env?: Readonly<Record<string, string>>;
38
+ /** HTTP transport: agy-specific key (NOT `url`). */
39
+ readonly serverUrl?: string;
40
+ readonly headers?: Readonly<Record<string, string>>;
41
+ /** Lisa ownership marker; only present on Lisa-managed entries. */
42
+ readonly [LISA_MANAGED_MARKER]?: boolean;
43
+ }
44
+ /** Top-level mcp_config.json shape. */
45
+ export interface AgyMcpConfig {
46
+ readonly mcpServers?: Readonly<Record<string, AgyMcpServerEntry>>;
47
+ }
48
+ /** Input MCP server entry in Claude/Codex shape, before agy translation. */
49
+ export interface ClaudeMcpServerEntry {
50
+ /** stdio command. */
51
+ readonly command?: string;
52
+ readonly args?: readonly string[];
53
+ readonly env?: Readonly<Record<string, string>>;
54
+ /** Claude/Codex HTTP shape: `{type:"http", url:"..."}`. */
55
+ readonly type?: "stdio" | "http" | "sse";
56
+ readonly url?: string;
57
+ readonly headers?: Readonly<Record<string, string>>;
58
+ }
59
+ /**
60
+ * Translate a Claude/Codex-shape MCP entry to agy's shape.
61
+ *
62
+ * Rules:
63
+ * - stdio entries: pass through `command`/`args`/`env` unchanged.
64
+ * - http entries: rename `url` → `serverUrl`, drop the `type` field, keep
65
+ * `headers` if present.
66
+ * - sse entries: agy SSE support is unverified at the schema level; pass
67
+ * through `serverUrl` and headers for parity with HTTP. Caller should
68
+ * verify before relying on SSE on agy.
69
+ *
70
+ * The Lisa-managed marker is attached at write time, not in this pure transform.
71
+ * @param input Claude/Codex-format MCP server entry.
72
+ * @returns agy-format MCP server entry.
73
+ */
74
+ export declare function translateMcpEntryToAgy(input: ClaudeMcpServerEntry): AgyMcpServerEntry;
75
+ /** Result of the agy MCP install pass. */
76
+ export interface AgyMcpInstallResult {
77
+ /** Absolute path written. */
78
+ readonly path: string;
79
+ /** Number of Lisa-managed entries written. */
80
+ readonly lisaEntryCount: number;
81
+ /** Number of host-authored entries preserved. */
82
+ readonly hostEntryCount: number;
83
+ }
84
+ /**
85
+ * Install Lisa's MCP servers into agy's mcp_config.json using tagged-merge.
86
+ *
87
+ * Tagged-merge rules:
88
+ * 1. Read existing mcpServers (if any).
89
+ * 2. Strip every entry where `_lisaManaged === true`.
90
+ * 3. Add Lisa's entries with `_lisaManaged: true` attached.
91
+ * 4. Host entries (no marker) are preserved verbatim.
92
+ *
93
+ * The target path defaults to `~/.gemini/config/mcp_config.json`. Pass
94
+ * `targetPath` to override (e.g. for the project-level `.agents/mcp_config.json`).
95
+ * @param lisaMcpServers - Lisa's MCP servers in Claude/Codex shape, keyed by
96
+ * server name.
97
+ * @param targetPath - Absolute path to the mcp_config.json file. Defaults to
98
+ * the user-level path.
99
+ * @returns Result with the path written and entry counts.
100
+ */
101
+ export declare function installAgyMcpConfig(lisaMcpServers: Readonly<Record<string, ClaudeMcpServerEntry>>, targetPath?: string): Promise<AgyMcpInstallResult>;
102
+ //# sourceMappingURL=mcp-installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-installer.d.ts","sourceRoot":"","sources":["../../src/agy/mcp-installer.ts"],"names":[],"mappings":"AAyBA,kEAAkE;AAClE,eAAO,MAAM,mBAAmB,EAAG,cAAuB,CAAC;AAE3D;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,4EAA4E;AAC5E,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;AAE7C;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,MAAM,CAST;AAED,iEAAiE;AACjE,MAAM,WAAW,iBAAiB;IAChC,mEAAmE;IACnE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,oDAAoD;IACpD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,mEAAmE;IACnE,QAAQ,CAAC,CAAC,mBAAmB,CAAC,CAAC,EAAE,OAAO,CAAC;CAC1C;AAED,uCAAuC;AACvC,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;CACnE;AAED,4EAA4E;AAC5E,MAAM,WAAW,oBAAoB;IACnC,qBAAqB;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;IACzC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,oBAAoB,GAC1B,iBAAiB,CAgBnB;AAED,0CAA0C;AAC1C,MAAM,WAAW,mBAAmB;IAClC,6BAA6B;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,iDAAiD;IACjD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAkBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,mBAAmB,CACvC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,EAC9D,UAAU,GAAE,MAAmC,GAC9C,OAAO,CAAC,mBAAmB,CAAC,CAsC9B"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Install Lisa's MCP server config into agy's user-level mcp_config.json.
3
+ *
4
+ * agy reads MCP server configs from `~/.gemini/config/mcp_config.json` (user
5
+ * scope, shared with Antigravity 2.0 desktop) or `<project>/.agents/mcp_config.json`
6
+ * (project scope). MCP is NOT a plugin component on agy — the file lives
7
+ * outside any plugin and is consumed independently per
8
+ * `wiki/architecture/coding-agent-parity.md` and
9
+ * `reference_agy_plugin_capabilities` memory.
10
+ *
11
+ * Schema differences from Claude/Codex:
12
+ * - agy uses `serverUrl` for HTTP transport (NOT `url` or `httpUrl`).
13
+ * - stdio servers use the same `command`/`args`/`env` shape as Claude/Codex.
14
+ *
15
+ * Tagged-merge convention: Lisa-owned entries carry `_lisaManaged: true` at
16
+ * the per-server level so the installer can rewrite Lisa's entries while
17
+ * preserving host-authored entries on re-runs (mirrors the
18
+ * `src/codex/hooks-merger.ts` pattern).
19
+ * @module agy/mcp-installer
20
+ */
21
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
22
+ import { existsSync } from "node:fs";
23
+ import * as os from "node:os";
24
+ import * as path from "node:path";
25
+ /** Marker field tagged onto every Lisa-owned MCP server entry. */
26
+ export const LISA_MANAGED_MARKER = "_lisaManaged";
27
+ /**
28
+ * Where agy reads user-scope MCP config (shared with Antigravity desktop).
29
+ * @returns Absolute path to `~/.gemini/config/mcp_config.json`.
30
+ */
31
+ export function defaultUserMcpConfigPath() {
32
+ return path.join(os.homedir(), ".gemini", "config", "mcp_config.json");
33
+ }
34
+ /**
35
+ * Where agy reads project-scope MCP config (per-workspace override).
36
+ * @param destDir - Absolute path to the host project root.
37
+ * @returns Absolute path to `<destDir>/.agents/mcp_config.json`.
38
+ */
39
+ export function defaultProjectMcpConfigPath(destDir) {
40
+ return path.join(destDir, ".agents", "mcp_config.json");
41
+ }
42
+ /**
43
+ * Resolve the agy MCP config path for a given scope.
44
+ *
45
+ * `lisa apply` operates on a single project, so the default scope is
46
+ * `"project"` — it writes `<destDir>/.agents/mcp_config.json` rather than
47
+ * polluting the user's global `~/.gemini/config/mcp_config.json` (shared with
48
+ * the Antigravity desktop app). Pass `scope: "user"` to target the shared file.
49
+ * @param opts - Scope selector and (for project scope) the host project root.
50
+ * @param opts.scope - `"project"` (default) or `"user"`.
51
+ * @param opts.destDir - Host project root; required for project scope.
52
+ * @returns Absolute path to the mcp_config.json for the requested scope.
53
+ */
54
+ export function resolveAgyMcpConfigPath(opts) {
55
+ const scope = opts.scope ?? "project";
56
+ if (scope === "user")
57
+ return defaultUserMcpConfigPath();
58
+ if (opts.destDir === undefined || opts.destDir === "") {
59
+ throw new Error("resolveAgyMcpConfigPath: project scope requires a destDir (host project root)");
60
+ }
61
+ return defaultProjectMcpConfigPath(opts.destDir);
62
+ }
63
+ /**
64
+ * Translate a Claude/Codex-shape MCP entry to agy's shape.
65
+ *
66
+ * Rules:
67
+ * - stdio entries: pass through `command`/`args`/`env` unchanged.
68
+ * - http entries: rename `url` → `serverUrl`, drop the `type` field, keep
69
+ * `headers` if present.
70
+ * - sse entries: agy SSE support is unverified at the schema level; pass
71
+ * through `serverUrl` and headers for parity with HTTP. Caller should
72
+ * verify before relying on SSE on agy.
73
+ *
74
+ * The Lisa-managed marker is attached at write time, not in this pure transform.
75
+ * @param input Claude/Codex-format MCP server entry.
76
+ * @returns agy-format MCP server entry.
77
+ */
78
+ export function translateMcpEntryToAgy(input) {
79
+ if (input.command !== undefined) {
80
+ return {
81
+ command: input.command,
82
+ ...(input.args !== undefined ? { args: input.args } : {}),
83
+ ...(input.env !== undefined ? { env: input.env } : {}),
84
+ };
85
+ }
86
+ if (input.url !== undefined) {
87
+ return {
88
+ serverUrl: input.url,
89
+ ...(input.headers !== undefined ? { headers: input.headers } : {}),
90
+ };
91
+ }
92
+ // Empty / unknown shape — return as-is minus the type field.
93
+ return {};
94
+ }
95
+ /**
96
+ * Read the existing mcp_config.json file (or empty when absent).
97
+ * @param filePath - Absolute path to the config file.
98
+ * @returns Parsed object or {} when the file is missing.
99
+ */
100
+ async function readExistingConfig(filePath) {
101
+ if (!existsSync(filePath))
102
+ return {};
103
+ try {
104
+ const raw = await readFile(filePath, "utf8");
105
+ if (raw.trim() === "")
106
+ return {};
107
+ return JSON.parse(raw);
108
+ }
109
+ catch {
110
+ return {};
111
+ }
112
+ }
113
+ /**
114
+ * Install Lisa's MCP servers into agy's mcp_config.json using tagged-merge.
115
+ *
116
+ * Tagged-merge rules:
117
+ * 1. Read existing mcpServers (if any).
118
+ * 2. Strip every entry where `_lisaManaged === true`.
119
+ * 3. Add Lisa's entries with `_lisaManaged: true` attached.
120
+ * 4. Host entries (no marker) are preserved verbatim.
121
+ *
122
+ * The target path defaults to `~/.gemini/config/mcp_config.json`. Pass
123
+ * `targetPath` to override (e.g. for the project-level `.agents/mcp_config.json`).
124
+ * @param lisaMcpServers - Lisa's MCP servers in Claude/Codex shape, keyed by
125
+ * server name.
126
+ * @param targetPath - Absolute path to the mcp_config.json file. Defaults to
127
+ * the user-level path.
128
+ * @returns Result with the path written and entry counts.
129
+ */
130
+ export async function installAgyMcpConfig(lisaMcpServers, targetPath = defaultUserMcpConfigPath()) {
131
+ await mkdir(path.dirname(targetPath), { recursive: true });
132
+ const existing = await readExistingConfig(targetPath);
133
+ const existingServers = existing.mcpServers ?? {};
134
+ // Strip Lisa-managed entries from the existing config (immutable filter).
135
+ const hostEntries = Object.fromEntries(Object.entries(existingServers).filter(([, entry]) => entry?.[LISA_MANAGED_MARKER] !== true));
136
+ // Translate Lisa's entries and tag them (immutable map).
137
+ const lisaEntries = Object.fromEntries(Object.entries(lisaMcpServers).map(([name, claudeEntry]) => [
138
+ name,
139
+ {
140
+ ...translateMcpEntryToAgy(claudeEntry),
141
+ [LISA_MANAGED_MARKER]: true,
142
+ },
143
+ ]));
144
+ const merged = {
145
+ ...existing,
146
+ mcpServers: { ...hostEntries, ...lisaEntries },
147
+ };
148
+ await writeFile(targetPath, `${JSON.stringify(merged, null, 2)}\n`, "utf8");
149
+ return {
150
+ path: targetPath,
151
+ lisaEntryCount: Object.keys(lisaEntries).length,
152
+ hostEntryCount: Object.keys(hostEntries).length,
153
+ };
154
+ }
155
+ //# sourceMappingURL=mcp-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-installer.js","sourceRoot":"","sources":["../../src/agy/mcp-installer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /** Result of the agy plugin install pass. */
2
+ export interface AgyPluginInstallResult {
3
+ /** True when agy was on PATH and the install command was attempted. */
4
+ readonly attempted: boolean;
5
+ /** True when the install command exited 0. False on any error. */
6
+ readonly installed: boolean;
7
+ /** Resolved absolute path to the source plugin tree that was installed. */
8
+ readonly source: string | undefined;
9
+ /** Error message when installation failed, or undefined on success/no-op. */
10
+ readonly error: string | undefined;
11
+ }
12
+ /**
13
+ * Install Lisa's agy plugin variant via `agy plugin install <local-path>`.
14
+ * @param lisaPluginRoot - Absolute path to Lisa's plugins directory (typically
15
+ * the `plugins/` directory inside the @codyswann/lisa package). The agy
16
+ * variant lives at `<lisaPluginRoot>/lisa-agy/`.
17
+ * @returns Install result describing whether the install was attempted, whether
18
+ * it succeeded, and any error message captured.
19
+ */
20
+ export declare function installAgyPlugin(lisaPluginRoot: string): Promise<AgyPluginInstallResult>;
21
+ //# sourceMappingURL=plugin-installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-installer.d.ts","sourceRoot":"","sources":["../../src/agy/plugin-installer.ts"],"names":[],"mappings":"AAuBA,6CAA6C;AAC7C,MAAM,WAAW,sBAAsB;IACrC,uEAAuE;IACvE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AAkBD;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,sBAAsB,CAAC,CA0CjC"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Detect `agy` (Antigravity CLI) and install Lisa's agy plugin variant.
3
+ *
4
+ * agy reads bare `plugin.json` plugins via `agy plugin install <local-path>`.
5
+ * Lisa's Pattern B build pipeline produces the agy-shaped variant at
6
+ * `plugins/lisa-agy/` (see `scripts/generate-agy-plugin-artifacts.mjs`).
7
+ *
8
+ * Detection rule: `agy` must be on `$PATH`. If absent, this installer is a
9
+ * no-op — the user does not have Antigravity installed and Lisa cannot help.
10
+ *
11
+ * Idempotence rule: re-running `agy plugin install` against the same source
12
+ * is treated as success (agy itself idempotently overwrites the import entry
13
+ * per its `installed_plugins.json` format).
14
+ * @module agy/plugin-installer
15
+ */
16
+ import { exec, execFile } from "node:child_process";
17
+ import { promisify } from "node:util";
18
+ import { existsSync } from "node:fs";
19
+ import * as path from "node:path";
20
+ const execAsync = promisify(exec);
21
+ const execFileAsync = promisify(execFile);
22
+ /**
23
+ * Detect whether `agy` is on PATH.
24
+ *
25
+ * Uses `command -v agy` for portability across the shells Lisa supports
26
+ * (bash + zsh). Returns true on success exit, false on non-zero or any error.
27
+ * @returns True when agy is callable.
28
+ */
29
+ async function detectAgy() {
30
+ try {
31
+ await execAsync("command -v agy");
32
+ return true;
33
+ }
34
+ catch {
35
+ return false;
36
+ }
37
+ }
38
+ /**
39
+ * Install Lisa's agy plugin variant via `agy plugin install <local-path>`.
40
+ * @param lisaPluginRoot - Absolute path to Lisa's plugins directory (typically
41
+ * the `plugins/` directory inside the @codyswann/lisa package). The agy
42
+ * variant lives at `<lisaPluginRoot>/lisa-agy/`.
43
+ * @returns Install result describing whether the install was attempted, whether
44
+ * it succeeded, and any error message captured.
45
+ */
46
+ export async function installAgyPlugin(lisaPluginRoot) {
47
+ if (!(await detectAgy())) {
48
+ return {
49
+ attempted: false,
50
+ installed: false,
51
+ source: undefined,
52
+ error: undefined,
53
+ };
54
+ }
55
+ const agyVariant = path.join(lisaPluginRoot, "lisa-agy");
56
+ if (!existsSync(path.join(agyVariant, "plugin.json"))) {
57
+ return {
58
+ attempted: true,
59
+ installed: false,
60
+ source: agyVariant,
61
+ error: `agy plugin variant not found at ${agyVariant}/plugin.json — run \`bun run build:plugins\` first`,
62
+ };
63
+ }
64
+ try {
65
+ // agy plugin install handles its own idempotence — re-installing the same
66
+ // source updates the entry in installed_plugins.json without erroring.
67
+ // Use execFile (no shell) so a plugin path containing shell metacharacters
68
+ // cannot be interpreted — `${JSON.stringify(path)}` under a shell still
69
+ // expands $(...), backticks, etc. inside double quotes.
70
+ await execFileAsync("agy", ["plugin", "install", agyVariant]);
71
+ return {
72
+ attempted: true,
73
+ installed: true,
74
+ source: agyVariant,
75
+ error: undefined,
76
+ };
77
+ }
78
+ catch (err) {
79
+ const message = err instanceof Error ? err.message : String(err);
80
+ return {
81
+ attempted: true,
82
+ installed: false,
83
+ source: agyVariant,
84
+ error: message,
85
+ };
86
+ }
87
+ }
88
+ //# sourceMappingURL=plugin-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-installer.js","sourceRoot":"","sources":["../../src/agy/plugin-installer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAClC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAc1C;;;;;;GAMG;AACH,KAAK,UAAU,SAAS;IACtB,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,cAAsB;IAEtB,IAAI,CAAC,CAAC,MAAM,SAAS,EAAE,CAAC,EAAE,CAAC;QACzB,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,SAAS;SACjB,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IACzD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC;QACtD,OAAO;YACL,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,UAAU;YAClB,KAAK,EAAE,mCAAmC,UAAU,oDAAoD;SACzG,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,0EAA0E;QAC1E,uEAAuE;QACvE,2EAA2E;QAC3E,wEAAwE;QACxE,wDAAwD;QACxD,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;QAC9D,OAAO;YACL,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,UAAU;YAClB,KAAK,EAAE,SAAS;SACjB,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO;YACL,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,UAAU;YAClB,KAAK,EAAE,OAAO;SACf,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ /** Filename of the Claude project doc at the host project root. */
2
+ export declare const CLAUDE_MD_FILENAME = "CLAUDE.md";
3
+ /** Result of the CLAUDE.md install pass. */
4
+ export interface ClaudeMdInstallResult {
5
+ /** True when Lisa created the file (false when it already existed). */
6
+ readonly created: boolean;
7
+ /** Path written, relative to the host project root, or undefined on no-op. */
8
+ readonly relativePath: string | undefined;
9
+ }
10
+ /**
11
+ * Write a starter CLAUDE.md at the host project root, but only if the file
12
+ * doesn't already exist.
13
+ *
14
+ * @param destDir - Absolute path to the host project root.
15
+ * @returns Result describing whether a file was created.
16
+ */
17
+ export declare function installClaudeMd(destDir: string): Promise<ClaudeMdInstallResult>;
18
+ //# sourceMappingURL=claude-md-installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-md-installer.d.ts","sourceRoot":"","sources":["../../src/claude/claude-md-installer.ts"],"names":[],"mappings":"AAkBA,mEAAmE;AACnE,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAE9C,4CAA4C;AAC5C,MAAM,WAAW,qBAAqB;IACpC,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,8EAA8E;IAC9E,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AA8BD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,qBAAqB,CAAC,CAOhC"}