@codyswann/lisa 4.49.0 → 4.50.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 (409) hide show
  1. package/all/copy-overwrite/scripts/check-conflict-markers.mjs +4 -1
  2. package/all/copy-overwrite/scripts/lib/gate-failure-diagnosis.mjs +163 -0
  3. package/all/copy-overwrite/scripts/lisa-enforcement-fallback.sh +178 -1
  4. package/all/copy-overwrite/scripts/lisa-hooks/block-direct-issue-create.sh +89 -10
  5. package/all/copy-overwrite/scripts/lisa-hooks/parity-safety-net.sh +44 -0
  6. package/all/copy-overwrite/scripts/lisa-lint-staged-preflight.mjs +1 -1
  7. package/all/copy-overwrite/scripts/lisa-run-gates.mjs +24 -24
  8. package/all/copy-overwrite/scripts/lisa-work-item.mjs +490 -81
  9. package/cdk/package-lisa/package.lisa.json +45 -15
  10. package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
  11. package/dist/core/lisa-owned-hash-ledger.js +76 -0
  12. package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
  13. package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
  14. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  15. package/dist/core/upstream-evidence-manifest.js +120 -227
  16. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  17. package/dist/opencode/plugin-templates/lisa-block-direct-issue-create.ts +45 -1
  18. package/dist/opencode/plugin-templates/parity-safety-net.sh +44 -0
  19. package/expo/package-lisa/package.lisa.json +83 -53
  20. package/harper-fabric/package-lisa/package.lisa.json +62 -32
  21. package/nestjs/package-lisa/package.lisa.json +57 -27
  22. package/npm-package/package-lisa/package.lisa.json +43 -7
  23. package/package.json +11 -7
  24. package/phaser/copy-overwrite/ast-grep/rules/no-day-truncating-file-age-predicate.yml +50 -0
  25. package/phaser/package-lisa/package.lisa.json +62 -32
  26. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  27. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  28. package/plugins/lisa/.codex-plugin/skills/lisa-drive-pr-to-merge/SKILL.md +17 -1
  29. package/plugins/lisa/.codex-plugin/skills/lisa-github-build-intake/SKILL.md +4 -0
  30. package/plugins/lisa/.codex-plugin/skills/lisa-jira-build-intake/SKILL.md +4 -0
  31. package/plugins/lisa/.codex-plugin/skills/lisa-linear-build-intake/SKILL.md +4 -0
  32. package/plugins/lisa/.codex-plugin/skills/lisa-repair-intake/SKILL.md +4 -1
  33. package/plugins/lisa/hooks/block-direct-issue-create.sh +89 -10
  34. package/plugins/lisa/hooks/discharge-work-item-gates.sh +7 -1
  35. package/plugins/lisa/hooks/parity-safety-net.sh +44 -0
  36. package/plugins/lisa/hooks/threshold-ratchet-families.mjs +12 -0
  37. package/plugins/lisa/rules/eager/00-rule-index.md +79 -0
  38. package/plugins/lisa/rules/eager/base-rules.md +10 -0
  39. package/plugins/lisa/rules/eager/config-resolution.md +1 -88
  40. package/plugins/lisa/rules/reference/automation-runbook-contract.md +97 -0
  41. package/plugins/lisa/rules/reference/bdd-e2e-coverage.md +56 -0
  42. package/plugins/lisa/rules/reference/blocker-containment.md +58 -0
  43. package/plugins/lisa/rules/reference/claim-archaeology.md +42 -0
  44. package/plugins/lisa/rules/reference/claim-evidence-mapping.md +83 -0
  45. package/plugins/lisa/rules/reference/claim-time-guards.md +37 -0
  46. package/plugins/lisa/rules/reference/config-resolution.md +97 -0
  47. package/plugins/lisa/rules/reference/control-reachability.md +44 -0
  48. package/plugins/lisa/rules/reference/convergent-review.md +31 -0
  49. package/plugins/lisa/rules/reference/credential-substrate-precedence.md +57 -0
  50. package/plugins/lisa/rules/reference/dependency-decision-records.md +37 -0
  51. package/plugins/lisa/rules/reference/dependency-internalization-kit.md +47 -0
  52. package/plugins/lisa/rules/reference/dependency-trust-classes.md +48 -0
  53. package/plugins/lisa/rules/reference/deployed-state-readback.md +52 -0
  54. package/plugins/lisa/rules/reference/derived-branch-plan.md +52 -0
  55. package/plugins/lisa/rules/reference/design-source-of-truth.md +43 -0
  56. package/plugins/lisa/rules/reference/design-value-binding.md +103 -0
  57. package/plugins/lisa/rules/reference/documentation-source-paths.md +18 -0
  58. package/plugins/lisa/rules/reference/leaf-only-lifecycle.md +75 -0
  59. package/plugins/lisa/rules/reference/observability-audit.md +20 -0
  60. package/plugins/lisa/rules/reference/prd-definition-of-ready.md +37 -0
  61. package/plugins/lisa/rules/reference/prd-lifecycle-rollup.md +36 -0
  62. package/plugins/lisa/rules/reference/pre-flight-autofill.md +88 -0
  63. package/plugins/lisa/rules/reference/promotion-contract.md +21 -0
  64. package/plugins/lisa/rules/reference/readiness-rubric.md +63 -0
  65. package/plugins/lisa/rules/reference/ready-role-filing.md +34 -0
  66. package/plugins/lisa/rules/reference/rejection-detection.md +69 -0
  67. package/plugins/lisa/rules/reference/repo-scope-split.md +48 -0
  68. package/plugins/lisa/rules/reference/reset-seed-coverage.md +55 -0
  69. package/plugins/lisa/rules/reference/usage-accounting.md +38 -0
  70. package/plugins/lisa/rules/reference/work-item-definition-of-ready.md +32 -0
  71. package/plugins/lisa/scripts/intake-blocker-reprobe.mjs +158 -1
  72. package/plugins/lisa/skills/lisa-drive-pr-to-merge/SKILL.md +17 -1
  73. package/plugins/lisa/skills/lisa-github-build-intake/SKILL.md +4 -0
  74. package/plugins/lisa/skills/lisa-jira-build-intake/SKILL.md +4 -0
  75. package/plugins/lisa/skills/lisa-linear-build-intake/SKILL.md +4 -0
  76. package/plugins/lisa/skills/lisa-repair-intake/SKILL.md +4 -1
  77. package/plugins/lisa-agy/hooks/block-direct-issue-create.sh +89 -10
  78. package/plugins/lisa-agy/hooks/parity-safety-net.sh +44 -0
  79. package/plugins/lisa-agy/plugin.json +1 -1
  80. package/plugins/lisa-agy/scripts/intake-blocker-reprobe.mjs +158 -1
  81. package/plugins/lisa-agy/skills/lisa-drive-pr-to-merge/SKILL.md +17 -1
  82. package/plugins/lisa-agy/skills/lisa-github-build-intake/SKILL.md +4 -0
  83. package/plugins/lisa-agy/skills/lisa-jira-build-intake/SKILL.md +4 -0
  84. package/plugins/lisa-agy/skills/lisa-linear-build-intake/SKILL.md +4 -0
  85. package/plugins/lisa-agy/skills/lisa-repair-intake/SKILL.md +4 -1
  86. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  87. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  88. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  89. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  90. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  91. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  92. package/plugins/lisa-copilot/hooks/block-direct-issue-create.sh +89 -10
  93. package/plugins/lisa-copilot/hooks/discharge-work-item-gates.sh +7 -1
  94. package/plugins/lisa-copilot/hooks/parity-safety-net.sh +44 -0
  95. package/plugins/lisa-copilot/hooks/threshold-ratchet-families.mjs +12 -0
  96. package/plugins/lisa-copilot/rules/eager/00-rule-index.md +79 -0
  97. package/plugins/lisa-copilot/rules/eager/base-rules.md +10 -0
  98. package/plugins/lisa-copilot/rules/eager/config-resolution.md +1 -88
  99. package/plugins/lisa-copilot/rules/reference/automation-runbook-contract.md +97 -0
  100. package/plugins/lisa-copilot/rules/reference/bdd-e2e-coverage.md +56 -0
  101. package/plugins/lisa-copilot/rules/reference/blocker-containment.md +58 -0
  102. package/plugins/lisa-copilot/rules/reference/claim-archaeology.md +42 -0
  103. package/plugins/lisa-copilot/rules/reference/claim-evidence-mapping.md +83 -0
  104. package/plugins/lisa-copilot/rules/reference/claim-time-guards.md +37 -0
  105. package/plugins/lisa-copilot/rules/reference/config-resolution.md +97 -0
  106. package/plugins/lisa-copilot/rules/reference/control-reachability.md +44 -0
  107. package/plugins/lisa-copilot/rules/reference/convergent-review.md +31 -0
  108. package/plugins/lisa-copilot/rules/reference/credential-substrate-precedence.md +57 -0
  109. package/plugins/lisa-copilot/rules/reference/dependency-decision-records.md +37 -0
  110. package/plugins/lisa-copilot/rules/reference/dependency-internalization-kit.md +47 -0
  111. package/plugins/lisa-copilot/rules/reference/dependency-trust-classes.md +48 -0
  112. package/plugins/lisa-copilot/rules/reference/deployed-state-readback.md +52 -0
  113. package/plugins/lisa-copilot/rules/reference/derived-branch-plan.md +52 -0
  114. package/plugins/lisa-copilot/rules/reference/design-source-of-truth.md +43 -0
  115. package/plugins/lisa-copilot/rules/reference/design-value-binding.md +103 -0
  116. package/plugins/lisa-copilot/rules/reference/documentation-source-paths.md +18 -0
  117. package/plugins/lisa-copilot/rules/reference/leaf-only-lifecycle.md +75 -0
  118. package/plugins/lisa-copilot/rules/reference/observability-audit.md +20 -0
  119. package/plugins/lisa-copilot/rules/reference/prd-definition-of-ready.md +37 -0
  120. package/plugins/lisa-copilot/rules/reference/prd-lifecycle-rollup.md +36 -0
  121. package/plugins/lisa-copilot/rules/reference/pre-flight-autofill.md +88 -0
  122. package/plugins/lisa-copilot/rules/reference/promotion-contract.md +21 -0
  123. package/plugins/lisa-copilot/rules/reference/readiness-rubric.md +63 -0
  124. package/plugins/lisa-copilot/rules/reference/ready-role-filing.md +34 -0
  125. package/plugins/lisa-copilot/rules/reference/rejection-detection.md +69 -0
  126. package/plugins/lisa-copilot/rules/reference/repo-scope-split.md +48 -0
  127. package/plugins/lisa-copilot/rules/reference/reset-seed-coverage.md +55 -0
  128. package/plugins/lisa-copilot/rules/reference/usage-accounting.md +38 -0
  129. package/plugins/lisa-copilot/rules/reference/work-item-definition-of-ready.md +32 -0
  130. package/plugins/lisa-copilot/scripts/intake-blocker-reprobe.mjs +158 -1
  131. package/plugins/lisa-copilot/skills/lisa-drive-pr-to-merge/SKILL.md +17 -1
  132. package/plugins/lisa-copilot/skills/lisa-github-build-intake/SKILL.md +4 -0
  133. package/plugins/lisa-copilot/skills/lisa-jira-build-intake/SKILL.md +4 -0
  134. package/plugins/lisa-copilot/skills/lisa-linear-build-intake/SKILL.md +4 -0
  135. package/plugins/lisa-copilot/skills/lisa-repair-intake/SKILL.md +4 -1
  136. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  137. package/plugins/lisa-cursor/hooks/block-direct-issue-create.sh +89 -10
  138. package/plugins/lisa-cursor/hooks/discharge-work-item-gates.sh +7 -1
  139. package/plugins/lisa-cursor/hooks/parity-safety-net.sh +44 -0
  140. package/plugins/lisa-cursor/hooks/threshold-ratchet-families.mjs +12 -0
  141. package/plugins/lisa-cursor/rules/00-rule-index.mdc +84 -0
  142. package/plugins/lisa-cursor/rules/automation-runbook-contract-reference.mdc +97 -0
  143. package/plugins/lisa-cursor/rules/base-rules.mdc +10 -0
  144. package/plugins/lisa-cursor/rules/bdd-e2e-coverage-reference.mdc +56 -0
  145. package/plugins/lisa-cursor/rules/blocker-containment-reference.mdc +58 -0
  146. package/plugins/lisa-cursor/rules/claim-archaeology-reference.mdc +42 -0
  147. package/plugins/lisa-cursor/rules/claim-evidence-mapping-reference.mdc +83 -0
  148. package/plugins/lisa-cursor/rules/claim-time-guards-reference.mdc +37 -0
  149. package/plugins/lisa-cursor/rules/config-resolution-reference.mdc +97 -0
  150. package/plugins/lisa-cursor/rules/config-resolution.mdc +1 -88
  151. package/plugins/lisa-cursor/rules/control-reachability-reference.mdc +44 -0
  152. package/plugins/lisa-cursor/rules/convergent-review-reference.mdc +31 -0
  153. package/plugins/lisa-cursor/rules/credential-substrate-precedence-reference.mdc +57 -0
  154. package/plugins/lisa-cursor/rules/dependency-decision-records-reference.mdc +37 -0
  155. package/plugins/lisa-cursor/rules/dependency-internalization-kit-reference.mdc +47 -0
  156. package/plugins/lisa-cursor/rules/dependency-trust-classes-reference.mdc +48 -0
  157. package/plugins/lisa-cursor/rules/deployed-state-readback-reference.mdc +52 -0
  158. package/plugins/lisa-cursor/rules/derived-branch-plan-reference.mdc +52 -0
  159. package/plugins/lisa-cursor/rules/design-source-of-truth-reference.mdc +43 -0
  160. package/plugins/lisa-cursor/rules/design-value-binding-reference.mdc +103 -0
  161. package/plugins/lisa-cursor/rules/documentation-source-paths-reference.mdc +18 -0
  162. package/plugins/lisa-cursor/rules/leaf-only-lifecycle-reference.mdc +75 -0
  163. package/plugins/lisa-cursor/rules/observability-audit-reference.mdc +20 -0
  164. package/plugins/lisa-cursor/rules/prd-definition-of-ready-reference.mdc +37 -0
  165. package/plugins/lisa-cursor/rules/prd-lifecycle-rollup-reference.mdc +36 -0
  166. package/plugins/lisa-cursor/rules/pre-flight-autofill-reference.mdc +88 -0
  167. package/plugins/lisa-cursor/rules/promotion-contract-reference.mdc +21 -0
  168. package/plugins/lisa-cursor/rules/readiness-rubric-reference.mdc +63 -0
  169. package/plugins/lisa-cursor/rules/ready-role-filing-reference.mdc +34 -0
  170. package/plugins/lisa-cursor/rules/rejection-detection-reference.mdc +69 -0
  171. package/plugins/lisa-cursor/rules/repo-scope-split-reference.mdc +48 -0
  172. package/plugins/lisa-cursor/rules/reset-seed-coverage-reference.mdc +55 -0
  173. package/plugins/lisa-cursor/rules/usage-accounting-reference.mdc +38 -0
  174. package/plugins/lisa-cursor/rules/work-item-definition-of-ready-reference.mdc +32 -0
  175. package/plugins/lisa-cursor/scripts/intake-blocker-reprobe.mjs +158 -1
  176. package/plugins/lisa-cursor/skills/lisa-drive-pr-to-merge/SKILL.md +17 -1
  177. package/plugins/lisa-cursor/skills/lisa-github-build-intake/SKILL.md +4 -0
  178. package/plugins/lisa-cursor/skills/lisa-jira-build-intake/SKILL.md +4 -0
  179. package/plugins/lisa-cursor/skills/lisa-linear-build-intake/SKILL.md +4 -0
  180. package/plugins/lisa-cursor/skills/lisa-repair-intake/SKILL.md +4 -1
  181. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  182. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  183. package/plugins/lisa-expo-agy/plugin.json +1 -1
  184. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  185. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  186. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  187. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  188. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  189. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  190. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  191. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  192. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  193. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  194. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  195. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  196. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  197. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  198. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  199. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  200. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  201. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  202. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  203. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  204. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  205. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  206. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  207. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  208. package/plugins/lisa-rails-agy/plugin.json +1 -1
  209. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  210. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  211. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  212. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  213. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  214. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  215. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  216. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  217. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  218. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  219. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  220. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  221. package/plugins/src/base/hooks/block-direct-issue-create.sh +89 -10
  222. package/plugins/src/base/hooks/discharge-work-item-gates.sh +7 -1
  223. package/plugins/src/base/hooks/parity-safety-net.sh +44 -0
  224. package/plugins/src/base/hooks/threshold-ratchet-families.mjs +12 -0
  225. package/plugins/src/base/rules/eager/00-rule-index.md +79 -0
  226. package/plugins/src/base/rules/eager/base-rules.md +10 -0
  227. package/plugins/src/base/rules/eager/config-resolution.md +1 -88
  228. package/plugins/src/base/rules/reference/automation-runbook-contract.md +97 -0
  229. package/plugins/src/base/rules/reference/bdd-e2e-coverage.md +56 -0
  230. package/plugins/src/base/rules/reference/blocker-containment.md +58 -0
  231. package/plugins/src/base/rules/reference/claim-archaeology.md +42 -0
  232. package/plugins/src/base/rules/reference/claim-evidence-mapping.md +83 -0
  233. package/plugins/src/base/rules/reference/claim-time-guards.md +37 -0
  234. package/plugins/src/base/rules/reference/config-resolution.md +97 -0
  235. package/plugins/src/base/rules/reference/control-reachability.md +44 -0
  236. package/plugins/src/base/rules/reference/convergent-review.md +31 -0
  237. package/plugins/src/base/rules/reference/credential-substrate-precedence.md +57 -0
  238. package/plugins/src/base/rules/reference/dependency-decision-records.md +37 -0
  239. package/plugins/src/base/rules/reference/dependency-internalization-kit.md +47 -0
  240. package/plugins/src/base/rules/reference/dependency-trust-classes.md +48 -0
  241. package/plugins/src/base/rules/reference/deployed-state-readback.md +52 -0
  242. package/plugins/src/base/rules/reference/derived-branch-plan.md +52 -0
  243. package/plugins/src/base/rules/reference/design-source-of-truth.md +43 -0
  244. package/plugins/src/base/rules/reference/design-value-binding.md +103 -0
  245. package/plugins/src/base/rules/reference/documentation-source-paths.md +18 -0
  246. package/plugins/src/base/rules/reference/leaf-only-lifecycle.md +75 -0
  247. package/plugins/src/base/rules/reference/observability-audit.md +20 -0
  248. package/plugins/src/base/rules/reference/prd-definition-of-ready.md +37 -0
  249. package/plugins/src/base/rules/reference/prd-lifecycle-rollup.md +36 -0
  250. package/plugins/src/base/rules/reference/pre-flight-autofill.md +88 -0
  251. package/plugins/src/base/rules/reference/promotion-contract.md +21 -0
  252. package/plugins/src/base/rules/reference/readiness-rubric.md +63 -0
  253. package/plugins/src/base/rules/reference/ready-role-filing.md +34 -0
  254. package/plugins/src/base/rules/reference/rejection-detection.md +69 -0
  255. package/plugins/src/base/rules/reference/repo-scope-split.md +48 -0
  256. package/plugins/src/base/rules/reference/reset-seed-coverage.md +55 -0
  257. package/plugins/src/base/rules/reference/usage-accounting.md +38 -0
  258. package/plugins/src/base/rules/reference/work-item-definition-of-ready.md +32 -0
  259. package/plugins/src/base/scripts/intake-blocker-reprobe.mjs +158 -1
  260. package/plugins/src/base/skills/lisa-drive-pr-to-merge/SKILL.md +17 -1
  261. package/plugins/src/base/skills/lisa-github-build-intake/SKILL.md +4 -0
  262. package/plugins/src/base/skills/lisa-jira-build-intake/SKILL.md +4 -0
  263. package/plugins/src/base/skills/lisa-linear-build-intake/SKILL.md +4 -0
  264. package/plugins/src/base/skills/lisa-repair-intake/SKILL.md +4 -1
  265. package/rails/copy-overwrite/ast-grep/rules/no-day-truncating-file-age-predicate.yml +50 -0
  266. package/rails/copy-overwrite/scripts/threshold-ratchet-families.mjs +12 -0
  267. package/scripts/check-eager-rule-budget.mjs +176 -0
  268. package/scripts/check-generated-artifact-merge-coverage.mjs +7 -0
  269. package/scripts/check-rules-pairing.sh +45 -14
  270. package/scripts/check-shipped-surface-removals.mjs +851 -0
  271. package/scripts/generate-export-surface.mjs +318 -0
  272. package/scripts/lib/shipped-surface.mjs +212 -0
  273. package/scripts/lisa-enforcement-fallback.sh +178 -1
  274. package/scripts/remedy-conformance.mjs +435 -0
  275. package/scripts/two-channel-couplings.json +2 -2
  276. package/typescript/copy-contents/.husky/pre-push +147 -2
  277. package/typescript/copy-overwrite/ast-grep/rules/no-day-truncating-file-age-predicate.yml +50 -0
  278. package/typescript/copy-overwrite/audit.ignore.config.json +0 -10
  279. package/typescript/copy-overwrite/scripts/lisa-mutation.mjs +180 -29
  280. package/typescript/copy-overwrite/scripts/threshold-ratchet-families.mjs +12 -0
  281. package/typescript/package-lisa/package.lisa.json +72 -42
  282. package/plugins/lisa/rules/eager/automation-runbook-contract.md +0 -92
  283. package/plugins/lisa/rules/eager/bdd-e2e-coverage.md +0 -51
  284. package/plugins/lisa/rules/eager/blocker-containment.md +0 -53
  285. package/plugins/lisa/rules/eager/claim-archaeology.md +0 -37
  286. package/plugins/lisa/rules/eager/claim-evidence-mapping.md +0 -78
  287. package/plugins/lisa/rules/eager/claim-time-guards.md +0 -32
  288. package/plugins/lisa/rules/eager/control-reachability.md +0 -39
  289. package/plugins/lisa/rules/eager/convergent-review.md +0 -24
  290. package/plugins/lisa/rules/eager/credential-substrate-precedence.md +0 -54
  291. package/plugins/lisa/rules/eager/dependency-decision-records.md +0 -32
  292. package/plugins/lisa/rules/eager/dependency-internalization-kit.md +0 -42
  293. package/plugins/lisa/rules/eager/dependency-trust-classes.md +0 -43
  294. package/plugins/lisa/rules/eager/deployed-state-readback.md +0 -47
  295. package/plugins/lisa/rules/eager/derived-branch-plan.md +0 -47
  296. package/plugins/lisa/rules/eager/design-source-of-truth.md +0 -38
  297. package/plugins/lisa/rules/eager/design-value-binding.md +0 -98
  298. package/plugins/lisa/rules/eager/documentation-source-paths.md +0 -13
  299. package/plugins/lisa/rules/eager/factory-model.md +0 -41
  300. package/plugins/lisa/rules/eager/leaf-only-lifecycle.md +0 -70
  301. package/plugins/lisa/rules/eager/observability-audit.md +0 -15
  302. package/plugins/lisa/rules/eager/prd-definition-of-ready.md +0 -32
  303. package/plugins/lisa/rules/eager/prd-lifecycle-rollup.md +0 -31
  304. package/plugins/lisa/rules/eager/pre-flight-autofill.md +0 -84
  305. package/plugins/lisa/rules/eager/project-learnings.md +0 -22
  306. package/plugins/lisa/rules/eager/promotion-contract.md +0 -18
  307. package/plugins/lisa/rules/eager/readiness-rubric.md +0 -58
  308. package/plugins/lisa/rules/eager/ready-role-filing.md +0 -29
  309. package/plugins/lisa/rules/eager/rejection-detection.md +0 -64
  310. package/plugins/lisa/rules/eager/repo-scope-split.md +0 -43
  311. package/plugins/lisa/rules/eager/reset-seed-coverage.md +0 -50
  312. package/plugins/lisa/rules/eager/usage-accounting.md +0 -33
  313. package/plugins/lisa/rules/eager/work-item-definition-of-ready.md +0 -27
  314. package/plugins/lisa-copilot/rules/eager/automation-runbook-contract.md +0 -92
  315. package/plugins/lisa-copilot/rules/eager/bdd-e2e-coverage.md +0 -51
  316. package/plugins/lisa-copilot/rules/eager/blocker-containment.md +0 -53
  317. package/plugins/lisa-copilot/rules/eager/claim-archaeology.md +0 -37
  318. package/plugins/lisa-copilot/rules/eager/claim-evidence-mapping.md +0 -78
  319. package/plugins/lisa-copilot/rules/eager/claim-time-guards.md +0 -32
  320. package/plugins/lisa-copilot/rules/eager/control-reachability.md +0 -39
  321. package/plugins/lisa-copilot/rules/eager/convergent-review.md +0 -24
  322. package/plugins/lisa-copilot/rules/eager/credential-substrate-precedence.md +0 -54
  323. package/plugins/lisa-copilot/rules/eager/dependency-decision-records.md +0 -32
  324. package/plugins/lisa-copilot/rules/eager/dependency-internalization-kit.md +0 -42
  325. package/plugins/lisa-copilot/rules/eager/dependency-trust-classes.md +0 -43
  326. package/plugins/lisa-copilot/rules/eager/deployed-state-readback.md +0 -47
  327. package/plugins/lisa-copilot/rules/eager/derived-branch-plan.md +0 -47
  328. package/plugins/lisa-copilot/rules/eager/design-source-of-truth.md +0 -38
  329. package/plugins/lisa-copilot/rules/eager/design-value-binding.md +0 -98
  330. package/plugins/lisa-copilot/rules/eager/documentation-source-paths.md +0 -13
  331. package/plugins/lisa-copilot/rules/eager/factory-model.md +0 -41
  332. package/plugins/lisa-copilot/rules/eager/leaf-only-lifecycle.md +0 -70
  333. package/plugins/lisa-copilot/rules/eager/observability-audit.md +0 -15
  334. package/plugins/lisa-copilot/rules/eager/prd-definition-of-ready.md +0 -32
  335. package/plugins/lisa-copilot/rules/eager/prd-lifecycle-rollup.md +0 -31
  336. package/plugins/lisa-copilot/rules/eager/pre-flight-autofill.md +0 -84
  337. package/plugins/lisa-copilot/rules/eager/project-learnings.md +0 -22
  338. package/plugins/lisa-copilot/rules/eager/promotion-contract.md +0 -18
  339. package/plugins/lisa-copilot/rules/eager/readiness-rubric.md +0 -58
  340. package/plugins/lisa-copilot/rules/eager/ready-role-filing.md +0 -29
  341. package/plugins/lisa-copilot/rules/eager/rejection-detection.md +0 -64
  342. package/plugins/lisa-copilot/rules/eager/repo-scope-split.md +0 -43
  343. package/plugins/lisa-copilot/rules/eager/reset-seed-coverage.md +0 -50
  344. package/plugins/lisa-copilot/rules/eager/usage-accounting.md +0 -33
  345. package/plugins/lisa-copilot/rules/eager/work-item-definition-of-ready.md +0 -27
  346. package/plugins/lisa-cursor/rules/automation-runbook-contract.mdc +0 -97
  347. package/plugins/lisa-cursor/rules/bdd-e2e-coverage.mdc +0 -56
  348. package/plugins/lisa-cursor/rules/blocker-containment.mdc +0 -58
  349. package/plugins/lisa-cursor/rules/claim-archaeology.mdc +0 -42
  350. package/plugins/lisa-cursor/rules/claim-evidence-mapping.mdc +0 -83
  351. package/plugins/lisa-cursor/rules/claim-time-guards.mdc +0 -37
  352. package/plugins/lisa-cursor/rules/control-reachability.mdc +0 -44
  353. package/plugins/lisa-cursor/rules/convergent-review.mdc +0 -29
  354. package/plugins/lisa-cursor/rules/credential-substrate-precedence.mdc +0 -59
  355. package/plugins/lisa-cursor/rules/dependency-decision-records.mdc +0 -37
  356. package/plugins/lisa-cursor/rules/dependency-internalization-kit.mdc +0 -47
  357. package/plugins/lisa-cursor/rules/dependency-trust-classes.mdc +0 -48
  358. package/plugins/lisa-cursor/rules/deployed-state-readback.mdc +0 -52
  359. package/plugins/lisa-cursor/rules/derived-branch-plan.mdc +0 -52
  360. package/plugins/lisa-cursor/rules/design-source-of-truth.mdc +0 -43
  361. package/plugins/lisa-cursor/rules/design-value-binding.mdc +0 -103
  362. package/plugins/lisa-cursor/rules/documentation-source-paths.mdc +0 -18
  363. package/plugins/lisa-cursor/rules/factory-model.mdc +0 -46
  364. package/plugins/lisa-cursor/rules/leaf-only-lifecycle.mdc +0 -75
  365. package/plugins/lisa-cursor/rules/observability-audit.mdc +0 -20
  366. package/plugins/lisa-cursor/rules/prd-definition-of-ready.mdc +0 -37
  367. package/plugins/lisa-cursor/rules/prd-lifecycle-rollup.mdc +0 -36
  368. package/plugins/lisa-cursor/rules/pre-flight-autofill.mdc +0 -89
  369. package/plugins/lisa-cursor/rules/project-learnings.mdc +0 -27
  370. package/plugins/lisa-cursor/rules/promotion-contract.mdc +0 -23
  371. package/plugins/lisa-cursor/rules/readiness-rubric.mdc +0 -63
  372. package/plugins/lisa-cursor/rules/ready-role-filing.mdc +0 -34
  373. package/plugins/lisa-cursor/rules/rejection-detection.mdc +0 -69
  374. package/plugins/lisa-cursor/rules/repo-scope-split.mdc +0 -48
  375. package/plugins/lisa-cursor/rules/reset-seed-coverage.mdc +0 -55
  376. package/plugins/lisa-cursor/rules/usage-accounting.mdc +0 -38
  377. package/plugins/lisa-cursor/rules/work-item-definition-of-ready.mdc +0 -32
  378. package/plugins/src/base/rules/eager/automation-runbook-contract.md +0 -92
  379. package/plugins/src/base/rules/eager/bdd-e2e-coverage.md +0 -51
  380. package/plugins/src/base/rules/eager/blocker-containment.md +0 -53
  381. package/plugins/src/base/rules/eager/claim-archaeology.md +0 -37
  382. package/plugins/src/base/rules/eager/claim-evidence-mapping.md +0 -78
  383. package/plugins/src/base/rules/eager/claim-time-guards.md +0 -32
  384. package/plugins/src/base/rules/eager/control-reachability.md +0 -39
  385. package/plugins/src/base/rules/eager/convergent-review.md +0 -24
  386. package/plugins/src/base/rules/eager/credential-substrate-precedence.md +0 -54
  387. package/plugins/src/base/rules/eager/dependency-decision-records.md +0 -32
  388. package/plugins/src/base/rules/eager/dependency-internalization-kit.md +0 -42
  389. package/plugins/src/base/rules/eager/dependency-trust-classes.md +0 -43
  390. package/plugins/src/base/rules/eager/deployed-state-readback.md +0 -47
  391. package/plugins/src/base/rules/eager/derived-branch-plan.md +0 -47
  392. package/plugins/src/base/rules/eager/design-source-of-truth.md +0 -38
  393. package/plugins/src/base/rules/eager/design-value-binding.md +0 -98
  394. package/plugins/src/base/rules/eager/documentation-source-paths.md +0 -13
  395. package/plugins/src/base/rules/eager/factory-model.md +0 -41
  396. package/plugins/src/base/rules/eager/leaf-only-lifecycle.md +0 -70
  397. package/plugins/src/base/rules/eager/observability-audit.md +0 -15
  398. package/plugins/src/base/rules/eager/prd-definition-of-ready.md +0 -32
  399. package/plugins/src/base/rules/eager/prd-lifecycle-rollup.md +0 -31
  400. package/plugins/src/base/rules/eager/pre-flight-autofill.md +0 -84
  401. package/plugins/src/base/rules/eager/project-learnings.md +0 -22
  402. package/plugins/src/base/rules/eager/promotion-contract.md +0 -18
  403. package/plugins/src/base/rules/eager/readiness-rubric.md +0 -58
  404. package/plugins/src/base/rules/eager/ready-role-filing.md +0 -29
  405. package/plugins/src/base/rules/eager/rejection-detection.md +0 -64
  406. package/plugins/src/base/rules/eager/repo-scope-split.md +0 -43
  407. package/plugins/src/base/rules/eager/reset-seed-coverage.md +0 -50
  408. package/plugins/src/base/rules/eager/usage-accounting.md +0 -33
  409. package/plugins/src/base/rules/eager/work-item-definition-of-ready.md +0 -27
@@ -116,6 +116,50 @@ export /**
116
116
  */
117
117
  const LisaBlockDirectIssueCreate = async () => {
118
118
  const HUMAN_GATE_MARKER = "[lisa-human-gate]";
119
+
120
+ /**
121
+ * Decoration a hold declaration may sit behind, and nothing more.
122
+ *
123
+ * The OpenCode port of the rule the bash guard applies
124
+ * (CodySwannGT/lisa#3815). This is a TWELFTH copy of a predicate that ticket
125
+ * inventoried at eleven, and it is named here because the cross-repo parity
126
+ * suite compares this port's verdict with the bash guard's on every case — so
127
+ * a precision change landing on one and not the other is a parity break
128
+ * rather than a silent divergence. That suite is what found it.
129
+ */
130
+ const HUMAN_GATE_DECORATION =
131
+ /^[ \t>*_+#-]*(?:\d+[.)][ \t]*)?(?:<!--[ \t]*)?[ \t]*/u;
132
+
133
+ /**
134
+ * Whether a text DECLARES a hold rather than merely mentioning one.
135
+ *
136
+ * The bare `includes` this replaces read a body that DISCUSSES the marker as
137
+ * a body that declares a hold. A declaration is positional: the marker leads
138
+ * its line behind at most the decoration above, or sits inside an HTML
139
+ * comment on that line, with fenced blocks and inline code spans removed
140
+ * first because that is how the marker gets written about.
141
+ */
142
+ const declaresHumanGate = (text: string): boolean => {
143
+ if (!text) return false;
144
+ const body = text
145
+ .replace(/```[\s\S]*?```/gu, "")
146
+ .replace(/`[^`\n]*`/gu, "");
147
+ return body.split("\n").some(line => {
148
+ if (
149
+ line.replace(HUMAN_GATE_DECORATION, "").startsWith(HUMAN_GATE_MARKER)
150
+ ) {
151
+ return true;
152
+ }
153
+ return line
154
+ .split("<!--")
155
+ .slice(1)
156
+ .some(segment => {
157
+ const close = segment.indexOf("-->");
158
+ const inside = close === -1 ? segment : segment.slice(0, close);
159
+ return inside.includes(HUMAN_GATE_MARKER);
160
+ });
161
+ });
162
+ };
119
163
  /**
120
164
  * A label / workflow-state assignment and its value.
121
165
  *
@@ -521,7 +565,7 @@ const LisaBlockDirectIssueCreate = async () => {
521
565
  .map(part => part.trim())
522
566
  .some(candidate => against.includes(candidate))
523
567
  ) ||
524
- text.includes(HUMAN_GATE_MARKER) ||
568
+ declaresHumanGate(text) ||
525
569
  (roleOk && LIFECYCLE_ROLE_READY.test(text)) ||
526
570
  // The container arm. The contradiction check comes first, so a filing
527
571
  // declaring itself both a container and a by-design leaf is refused
@@ -26,6 +26,11 @@
26
26
  # divergence: upstream blocks unconditionally; Lisa allows clean-tree resets.
27
27
  # Residual risk (documented, accepted): the dirty check runs in the hook's
28
28
  # cwd at hook time, so a `cd elsewhere && git reset --hard` evades it.
29
+ # - `git read-tree` with an update flag AND `--reset` while the working tree
30
+ # is dirty (issue #3978): the plumbing spelling of the same discard, on the
31
+ # same condition, printing the same remedy. Index-only `read-tree`, and
32
+ # `read-tree -m -u` without `--reset` (which git itself refuses rather than
33
+ # clobber a modified file), stay allowed. Lisa-only guard.
29
34
  # - `git rebase --abort`/`--quit` while the in-progress rebase holds
30
35
  # human-made conflict resolutions (AUTO_MERGE discriminator; issue #1956).
31
36
  # Clean or untouched rebase state stays abortable; the apply backend and a
@@ -1819,6 +1824,45 @@ $DESTRUCTIVE_GUIDANCE"
1819
1824
  fi
1820
1825
  fi
1821
1826
 
1827
+ # 3a. `git read-tree` with BOTH an update flag and `--reset`, on the same dirty
1828
+ # tree — the plumbing spelling of guard 3 (issue #3978). It resets the index
1829
+ # and writes the result into the working tree, discarding tracked
1830
+ # modifications: the identical destruction, reached through a command that
1831
+ # carries no `--hard` and no `reset` subcommand, so every pattern in
1832
+ # guard 3 misses it. A guard an agent can walk around is a guard that stops
1833
+ # the honest caller and not the one looking for a way through, and this
1834
+ # spelling is strictly worse than the blocked one — it discards WITHOUT
1835
+ # preserving, which is exactly the property guard 3's remedy supplies. Both
1836
+ # refusals therefore print the same $PRESERVE_GUIDANCE, so what they teach
1837
+ # cannot drift apart.
1838
+ #
1839
+ # `--reset` is the discriminator, not `-u`, and the pairing is deliberate:
1840
+ #
1841
+ # - `read-tree` with no update flag touches the INDEX only and destroys
1842
+ # nothing in the working tree, so a blanket `read-tree` block would be
1843
+ # over-broad.
1844
+ # - `read-tree -m -u` (a merge without `--reset`) is safe by git's own
1845
+ # construction: it REFUSES rather than overwrite a locally modified file
1846
+ # ("entry would be overwritten by merge"). `--reset` is precisely the flag
1847
+ # that switches that refusal off.
1848
+ #
1849
+ # So the destructive combination is an update flag AND `--reset` together,
1850
+ # in either order. The update flag is matched in the checkout guard's idiom
1851
+ # so a bundled short option (`-iu`) cannot dodge the anchor, with leading
1852
+ # whitespace required so a `--index-output=/tmp/out-u` style value cannot
1853
+ # read as the flag. Same conditional dirty-tree shape and same accepted
1854
+ # residual risk as guard 3: the probe runs in the hook's cwd at hook time.
1855
+ readonly GIT_READ_TREE="${GIT_CMD}read-tree"
1856
+ if matches "${GIT_READ_TREE}"'[^;&|]*[[:space:]]--reset([[:space:]]|$)' \
1857
+ && matches "${GIT_READ_TREE}"'[^;&|]*[[:space:]](-[[:alnum:]]*u[[:alnum:]]*|--update)([[:space:]]|=|$)'; then
1858
+ if git rev-parse --is-inside-work-tree >/dev/null 2>&1 \
1859
+ && [ -n "$(git status --porcelain 2>/dev/null)" ]; then
1860
+ block "git read-tree -u --reset on a dirty working tree would discard uncommitted changes (commit first, or preserve as below)" "$PRESERVE_GUIDANCE
1861
+
1862
+ $DESTRUCTIVE_GUIDANCE"
1863
+ fi
1864
+ fi
1865
+
1822
1866
  # 3b. `git rebase --abort` / `--quit` ONLY while human/agent conflict
1823
1867
  # resolutions exist (issue #1956). `--abort` restores the pre-rebase branch
1824
1868
  # and discards every resolution; `--quit` deletes the rebase bookkeeping
@@ -1,67 +1,67 @@
1
1
  {
2
2
  "force": {
3
3
  "scripts": {
4
- "setup:deploy-key": "setup-deploy-key",
5
- "lighthouse:check": "lhci autorun --collect.settings.chromeFlags='--no-sandbox --disable-gpu --headless' --assert.assertions.forced-reflow-insight=off && node scripts/check-lighthouse-details.mjs",
6
- "playwright:build": "expo export --platform web",
7
- "playwright:test": "bun run playwright:build && lisa-test-run --profile expo --adapter direct -- playwright test",
8
- "playwright:test:ui": "bun run playwright:build && lisa-test-run --profile expo --adapter direct -- playwright test --ui",
9
- "maestro:test": "lisa-test-run --profile expo --adapter direct -- maestro test .maestro/flows",
10
- "maestro:test:ios": "lisa-test-run --profile expo --adapter direct -- maestro test -p ios .maestro/flows",
11
- "maestro:test:android": "lisa-test-run --profile expo --adapter direct -- maestro test -p android .maestro/flows",
12
- "maestro:test:smoke": "lisa-test-run --profile expo --adapter direct -- maestro test -p ios --include-tags=smoke .maestro/flows",
13
- "maestro:studio": "maestro studio",
14
- "maestro:classify": "node scripts/classify-maestro-failures.mjs",
15
4
  "bdd:coverage": "node scripts/check-bdd-coverage.mjs",
16
5
  "bdd:coverage:write": "node scripts/check-bdd-coverage.mjs --write",
17
6
  "bdd:matrix": "node scripts/bdd-matrix.mjs --write",
18
- "start:local": "cp .env.localhost .env.local && STAGE=local expo start",
19
- "start:dev": "cp .env.development .env.local && STAGE=development expo start",
20
- "start:staging": "cp .env.staging .env.local && STAGE=staging expo start",
21
- "start:production": "cp .env.production .env.local && STAGE=production expo start",
22
- "start:simulator:ios:local": "cp .env.localhost .env.local && STAGE=local expo start --ios",
23
- "start:simulator:ios:dev": "cp .env.development .env.local && STAGE=development expo start --ios",
24
- "start:simulator:ios:staging": "cp .env.staging .env.local && STAGE=staging expo start --ios",
25
- "start:simulator:ios:production": "cp .env.production .env.local && STAGE=production expo start --ios",
26
- "start:simulator:android:local": "cp .env.localhost .env.local && STAGE=local expo start --android",
27
- "start:simulator:android:dev": "cp .env.development .env.local && STAGE=development expo start --android",
28
- "start:simulator:android:staging": "cp .env.staging .env.local && STAGE=staging expo start --android",
29
- "start:simulator:android:production": "cp .env.production .env.local && STAGE=production expo start --android",
30
- "build-and-run:simulator:ios:local": "cp .env.localhost .env.local && STAGE=local expo run:ios",
31
- "build-and-run:simulator:ios:dev": "cp .env.development .env.local && STAGE=development expo run:ios",
32
- "build-and-run:simulator:ios:staging": "cp .env.staging .env.local && STAGE=staging expo run:ios",
33
- "build-and-run:simulator:ios:production": "cp .env.production .env.local && STAGE=production expo run:ios",
34
- "build-and-run:simulator:android:local": "cp .env.localhost .env.local && STAGE=local expo run:android",
35
- "build-and-run:simulator:android:dev": "cp .env.development .env.local && STAGE=development expo run:android",
36
- "build-and-run:simulator:android:staging": "cp .env.staging .env.local && STAGE=staging expo run:android",
37
- "build-and-run:simulator:android:production": "cp .env.production .env.local && STAGE=production expo run:android",
38
7
  "build-and-run:local:android": "expo run:android",
39
8
  "build-and-run:local:ios": "expo run:ios",
40
- "fetch:graphql:schema:dev": "./scripts/fetch-graphql-schema.sh development",
41
- "fetch:graphql:schema:staging": "./scripts/fetch-graphql-schema.sh staging",
42
- "fetch:graphql:schema:production": "./scripts/fetch-graphql-schema.sh production",
43
- "export:web": "expo export --platform web --source-maps",
44
- "pre-build:eas": "cat .gitignore > .easignore && cat .easignore.extra >> .easignore",
45
- "eas:login": "eas login",
46
- "eas:whoami": "eas whoami",
9
+ "build-and-run:simulator:android:dev": "cp .env.development .env.local && STAGE=development expo run:android",
10
+ "build-and-run:simulator:android:local": "cp .env.localhost .env.local && STAGE=local expo run:android",
11
+ "build-and-run:simulator:android:production": "cp .env.production .env.local && STAGE=production expo run:android",
12
+ "build-and-run:simulator:android:staging": "cp .env.staging .env.local && STAGE=staging expo run:android",
13
+ "build-and-run:simulator:ios:dev": "cp .env.development .env.local && STAGE=development expo run:ios",
14
+ "build-and-run:simulator:ios:local": "cp .env.localhost .env.local && STAGE=local expo run:ios",
15
+ "build-and-run:simulator:ios:production": "cp .env.production .env.local && STAGE=production expo run:ios",
16
+ "build-and-run:simulator:ios:staging": "cp .env.staging .env.local && STAGE=staging expo run:ios",
47
17
  "eas:deploy:dev": "eas build --profile dev --non-interactive",
48
- "eas:deploy:staging": "eas build --profile staging --non-interactive",
49
18
  "eas:deploy:production": "eas build --profile production --non-interactive",
19
+ "eas:deploy:staging": "eas build --profile staging --non-interactive",
20
+ "eas:login": "eas login",
50
21
  "eas:publish:dev": "eas update --channel dev --environment development --non-interactive",
51
- "eas:publish:staging": "eas update --channel staging --environment preview --non-interactive",
52
22
  "eas:publish:production": "eas update --channel production --environment production --non-interactive",
23
+ "eas:publish:staging": "eas update --channel staging --environment preview --non-interactive",
24
+ "eas:whoami": "eas whoami",
25
+ "export:web": "expo export --platform web --source-maps",
26
+ "fetch:graphql:schema:dev": "./scripts/fetch-graphql-schema.sh development",
27
+ "fetch:graphql:schema:production": "./scripts/fetch-graphql-schema.sh production",
28
+ "fetch:graphql:schema:staging": "./scripts/fetch-graphql-schema.sh staging",
29
+ "lighthouse:check": "lhci autorun --collect.settings.chromeFlags='--no-sandbox --disable-gpu --headless' --assert.assertions.forced-reflow-insight=off && node scripts/check-lighthouse-details.mjs",
30
+ "lint:fix": "oxlint --fix && eslint . --fix",
31
+ "lint:lisa": "oxlint && eslint . --quiet",
32
+ "maestro:classify": "node scripts/classify-maestro-failures.mjs",
33
+ "maestro:studio": "maestro studio",
34
+ "maestro:test": "lisa-test-run --profile expo --adapter direct -- maestro test .maestro/flows",
35
+ "maestro:test:android": "lisa-test-run --profile expo --adapter direct -- maestro test -p android .maestro/flows",
36
+ "maestro:test:ios": "lisa-test-run --profile expo --adapter direct -- maestro test -p ios .maestro/flows",
37
+ "maestro:test:smoke": "lisa-test-run --profile expo --adapter direct -- maestro test -p ios --include-tags=smoke .maestro/flows",
38
+ "playwright:build": "expo export --platform web",
39
+ "playwright:test": "bun run playwright:build && lisa-test-run --profile expo --adapter direct -- playwright test",
40
+ "playwright:test:ui": "bun run playwright:build && lisa-test-run --profile expo --adapter direct -- playwright test --ui",
41
+ "pre-build:eas": "cat .gitignore > .easignore && cat .easignore.extra >> .easignore",
53
42
  "security:zap": "bash scripts/zap-baseline.sh",
54
- "test": "NODE_ENV=test lisa-test-run --profile expo --adapter direct -- jest",
55
- "test:unit": "NODE_ENV=test lisa-test-run --profile expo --adapter direct -- jest --testPathIgnorePatterns=\"\\.integration[.\\\\-](test|spec)\\.(ts|tsx)$\"",
43
+ "setup:deploy-key": "setup-deploy-key",
44
+ "start:atlas": "cp .env.development .env.local && STAGE=development EXPO_ATLAS=true expo start",
45
+ "start:dev": "cp .env.development .env.local && STAGE=development expo start",
46
+ "start:local": "cp .env.localhost .env.local && STAGE=local expo start",
47
+ "start:production": "cp .env.production .env.local && STAGE=production expo start",
48
+ "start:simulator:android:dev": "cp .env.development .env.local && STAGE=development expo start --android",
49
+ "start:simulator:android:local": "cp .env.localhost .env.local && STAGE=local expo start --android",
50
+ "start:simulator:android:production": "cp .env.production .env.local && STAGE=production expo start --android",
51
+ "start:simulator:android:staging": "cp .env.staging .env.local && STAGE=staging expo start --android",
52
+ "start:simulator:ios:dev": "cp .env.development .env.local && STAGE=development expo start --ios",
53
+ "start:simulator:ios:local": "cp .env.localhost .env.local && STAGE=local expo start --ios",
54
+ "start:simulator:ios:production": "cp .env.production .env.local && STAGE=production expo start --ios",
55
+ "start:simulator:ios:staging": "cp .env.staging .env.local && STAGE=staging expo start --ios",
56
+ "start:staging": "cp .env.staging .env.local && STAGE=staging expo start",
57
+ "test:cov:lisa": "NODE_ENV=test lisa-test-run --profile expo --adapter direct -- jest --coverage",
58
+ "test:cov:unit:lisa": "LISA_COVERAGE_SCOPE=unit NODE_ENV=test lisa-test-run --profile expo --adapter direct -- jest --coverage --testPathIgnorePatterns=\"\\.integration[.\\\\-](test|spec)\\.(ts|tsx)$\"",
56
59
  "test:integration:lisa": "NODE_ENV=test lisa-test-run --profile expo --adapter direct -- jest --testPathPatterns=\"\\.integration[.\\\\-](test|spec)\\.(ts|tsx)$\"",
57
- "test:cov": "NODE_ENV=test lisa-test-run --profile expo --adapter direct -- jest --coverage",
58
- "test:cov:unit": "LISA_COVERAGE_SCOPE=unit NODE_ENV=test lisa-test-run --profile expo --adapter direct -- jest --coverage --testPathIgnorePatterns=\"\\.integration[.\\\\-](test|spec)\\.(ts|tsx)$\"",
60
+ "test:lisa": "NODE_ENV=test lisa-test-run --profile expo --adapter direct -- jest",
59
61
  "test:mutation": "LISA_TEST_SCRATCH_PREFIXES='[\"lisa-mutation-\",\"worker-\"]' lisa-test-run --profile expo --adapter direct -- node scripts/lisa-mutation.mjs",
60
- "test:watch": "NODE_ENV=test lisa-test-run --profile expo --adapter direct -- jest --watch",
61
- "lint:lisa": "oxlint && eslint . --quiet",
62
- "lint:fix": "oxlint --fix && eslint . --fix",
63
- "start:atlas": "cp .env.development .env.local && STAGE=development EXPO_ATLAS=true expo start",
64
- "test:node": "LISA_TEST_SCRATCH_PREFIXES='[\"node-\"]' lisa-test-run --profile expo --adapter direct -- node scripts/lisa-test-node.mjs"
62
+ "test:node": "LISA_TEST_SCRATCH_PREFIXES='[\"node-\"]' lisa-test-run --profile expo --adapter direct -- node scripts/lisa-test-node.mjs",
63
+ "test:unit:lisa": "NODE_ENV=test lisa-test-run --profile expo --adapter direct -- jest --testPathIgnorePatterns=\"\\.integration[.\\\\-](test|spec)\\.(ts|tsx)$\"",
64
+ "test:watch:lisa": "NODE_ENV=test lisa-test-run --profile expo --adapter direct -- jest --watch"
65
65
  },
66
66
  "dependencies": {
67
67
  "@apollo/client": "^3.10.8",
@@ -182,8 +182,13 @@
182
182
  "jest-expo": "~57.0.1"
183
183
  },
184
184
  "scripts": {
185
+ "lint": "$npm_execpath run lint:lisa",
186
+ "test": "$npm_execpath run test:lisa",
187
+ "test:cov": "$npm_execpath run test:cov:lisa",
188
+ "test:cov:unit": "$npm_execpath run test:cov:unit:lisa",
185
189
  "test:integration": "$npm_execpath run test:integration:lisa",
186
- "lint": "$npm_execpath run lint:lisa"
190
+ "test:unit": "$npm_execpath run test:unit:lisa",
191
+ "test:watch": "$npm_execpath run test:watch:lisa"
187
192
  }
188
193
  },
189
194
  "remove": {
@@ -201,13 +206,38 @@
201
206
  },
202
207
  "adopt": {
203
208
  "scripts": {
209
+ "lint": [
210
+ "oxlint && eslint . --quiet",
211
+ "eslint . --quiet"
212
+ ],
213
+ "test": [
214
+ "NODE_ENV=test lisa-test-run --profile expo --adapter direct -- jest",
215
+ "NODE_ENV=test lisa-test-run --profile expo -- jest",
216
+ "NODE_ENV=test lisa-test-run -- jest"
217
+ ],
218
+ "test:cov": [
219
+ "NODE_ENV=test lisa-test-run --profile expo --adapter direct -- jest --coverage",
220
+ "NODE_ENV=test lisa-test-run --profile expo -- jest --coverage",
221
+ "NODE_ENV=test lisa-test-run -- jest --coverage"
222
+ ],
223
+ "test:cov:unit": [
224
+ "LISA_COVERAGE_SCOPE=unit NODE_ENV=test lisa-test-run --profile expo --adapter direct -- jest --coverage --testPathIgnorePatterns=\"\\.integration[.\\\\-](test|spec)\\.(ts|tsx)$\"",
225
+ "LISA_COVERAGE_SCOPE=unit NODE_ENV=test lisa-test-run --profile expo -- jest --coverage --testPathIgnorePatterns=\"\\.integration[.\\\\-](test|spec)\\.(ts|tsx)$\"",
226
+ "LISA_COVERAGE_SCOPE=unit NODE_ENV=test lisa-test-run -- jest --coverage --testPathIgnorePatterns=\"\\.integration[.\\\\-](test|spec)\\.(ts|tsx)$\""
227
+ ],
204
228
  "test:integration": [
205
229
  "NODE_ENV=test jest --testPathPatterns=\"\\.integration[.\\\\-](test|spec)\\.(ts|tsx)$\"",
206
230
  "NODE_ENV=test jest --testPathPatterns=\"\\.integration[.\\\\-](test|spec)\\.(ts|tsx)$\" --passWithNoTests"
207
231
  ],
208
- "lint": [
209
- "oxlint && eslint . --quiet",
210
- "eslint . --quiet"
232
+ "test:unit": [
233
+ "NODE_ENV=test lisa-test-run --profile expo --adapter direct -- jest --testPathIgnorePatterns=\"\\.integration[.\\\\-](test|spec)\\.(ts|tsx)$\"",
234
+ "NODE_ENV=test lisa-test-run --profile expo -- jest --testPathIgnorePatterns=\"\\.integration[.\\\\-](test|spec)\\.(ts|tsx)$\"",
235
+ "NODE_ENV=test lisa-test-run -- jest --testPathIgnorePatterns=\"\\.integration[.\\\\-](test|spec)\\.(ts|tsx)$\""
236
+ ],
237
+ "test:watch": [
238
+ "NODE_ENV=test lisa-test-run --profile expo --adapter direct -- jest --watch",
239
+ "NODE_ENV=test lisa-test-run --profile expo -- jest --watch",
240
+ "NODE_ENV=test lisa-test-run -- jest --watch"
211
241
  ]
212
242
  }
213
243
  }
@@ -2,30 +2,30 @@
2
2
  "force": {
3
3
  "scripts": {
4
4
  "bootstrap": "bash scripts/bootstrap.sh",
5
- "setup:deploy-key": "setup-deploy-key",
6
- "typecheck:lisa": "tsc --noEmit",
7
- "test": "lisa-test-run --profile harper-fabric --adapter vitest -- vitest run",
8
- "test:unit": "lisa-test-run --profile harper-fabric --adapter vitest -- vitest run --exclude='**/integration/**'",
9
- "test:integration:lisa": "lisa-test-run --profile harper-fabric --adapter vitest -- vitest run '.integration.' 'integration/'",
10
- "test:cov": "lisa-test-run --profile harper-fabric --adapter vitest -- vitest run --coverage",
11
- "test:cov:unit": "LISA_COVERAGE_SCOPE=unit lisa-test-run --profile harper-fabric --adapter vitest -- vitest run --coverage --exclude='**/integration/**'",
12
- "test:mutation": "LISA_TEST_SCRATCH_PREFIXES='[\"lisa-mutation-\",\"worker-\"]' lisa-test-run --profile harper-fabric --adapter direct -- node scripts/lisa-mutation.mjs",
13
- "test:watch": "lisa-test-run --profile harper-fabric --adapter vitest -- vitest",
14
- "lint:lisa": "oxlint && eslint . --quiet",
15
- "lint:fix": "oxlint --fix && eslint . --fix",
16
- "lint:slow:lisa": "eslint . --config eslint.slow.config.ts --quiet",
17
- "format:check:lisa": "prettier --check .",
18
5
  "format": "prettier --check . --write",
6
+ "format:check:lisa": "prettier --check .",
19
7
  "knip:check:lisa": "knip",
20
8
  "knip:fix": "knip --fix",
9
+ "lint:fix": "oxlint --fix && eslint . --fix",
10
+ "lint:lisa": "oxlint && eslint . --quiet",
11
+ "lint:slow:lisa": "eslint . --config eslint.slow.config.ts --quiet",
12
+ "prepare": "husky install || true",
13
+ "reset": "harperdb stop || true; [ -n \"$HOME\" ] && rm -rf \"$HOME/.harperdb\" && bun run bootstrap && bun run seed && bun run verify",
14
+ "setup:deploy-key": "setup-deploy-key",
21
15
  "sg:scan:lisa": "ast-grep scan",
22
16
  "sg:test": "ast-grep test",
23
17
  "start": "harperdb start",
24
- "stop": "harperdb stop",
25
18
  "status": "harperdb status",
26
- "reset": "harperdb stop || true; [ -n \"$HOME\" ] && rm -rf \"$HOME/.harperdb\" && bun run bootstrap && bun run seed && bun run verify",
27
- "prepare": "husky install || true",
28
- "test:node": "LISA_TEST_SCRATCH_PREFIXES='[\"node-\"]' lisa-test-run --profile harper-fabric --adapter direct -- node scripts/lisa-test-node.mjs"
19
+ "stop": "harperdb stop",
20
+ "test:cov:lisa": "lisa-test-run --profile harper-fabric --adapter vitest -- vitest run --coverage",
21
+ "test:cov:unit:lisa": "LISA_COVERAGE_SCOPE=unit lisa-test-run --profile harper-fabric --adapter vitest -- vitest run --coverage --exclude='**/integration/**'",
22
+ "test:integration:lisa": "lisa-test-run --profile harper-fabric --adapter vitest -- vitest run '.integration.' 'integration/'",
23
+ "test:lisa": "lisa-test-run --profile harper-fabric --adapter vitest -- vitest run",
24
+ "test:mutation": "LISA_TEST_SCRATCH_PREFIXES='[\"lisa-mutation-\",\"worker-\"]' lisa-test-run --profile harper-fabric --adapter direct -- node scripts/lisa-mutation.mjs",
25
+ "test:node": "LISA_TEST_SCRATCH_PREFIXES='[\"node-\"]' lisa-test-run --profile harper-fabric --adapter direct -- node scripts/lisa-test-node.mjs",
26
+ "test:unit:lisa": "lisa-test-run --profile harper-fabric --adapter vitest -- vitest run --exclude='**/integration/**'",
27
+ "test:watch:lisa": "lisa-test-run --profile harper-fabric --adapter vitest -- vitest",
28
+ "typecheck:lisa": "tsc --noEmit"
29
29
  },
30
30
  "dependencies": {
31
31
  "harperdb": "^4.7.29"
@@ -80,16 +80,21 @@
80
80
  "defaults": {
81
81
  "scripts": {
82
82
  "build": "tsc && node dist/build/build.js",
83
- "seed": "bun run build && node dist/scripts/seed.js",
84
- "verify": "bun run build && node dist/scripts/verify.js",
85
- "dev:server": "bun run build && node dist/scripts/dev_server.js",
86
83
  "deploy": "bun run build && node dist/scripts/deploy.js",
87
- "typecheck": "$npm_execpath run typecheck:lisa",
88
- "lint": "$npm_execpath run lint:lisa",
89
- "lint:slow": "$npm_execpath run lint:slow:lisa",
84
+ "dev:server": "bun run build && node dist/scripts/dev_server.js",
90
85
  "format:check": "$npm_execpath run format:check:lisa",
91
86
  "knip:check": "$npm_execpath run knip:check:lisa",
92
- "sg:scan": "$npm_execpath run sg:scan:lisa"
87
+ "lint": "$npm_execpath run lint:lisa",
88
+ "lint:slow": "$npm_execpath run lint:slow:lisa",
89
+ "seed": "bun run build && node dist/scripts/seed.js",
90
+ "sg:scan": "$npm_execpath run sg:scan:lisa",
91
+ "test": "$npm_execpath run test:lisa",
92
+ "test:cov": "$npm_execpath run test:cov:lisa",
93
+ "test:cov:unit": "$npm_execpath run test:cov:unit:lisa",
94
+ "test:unit": "$npm_execpath run test:unit:lisa",
95
+ "test:watch": "$npm_execpath run test:watch:lisa",
96
+ "typecheck": "$npm_execpath run typecheck:lisa",
97
+ "verify": "bun run build && node dist/scripts/verify.js"
93
98
  }
94
99
  },
95
100
  "remove": {
@@ -100,8 +105,11 @@
100
105
  },
101
106
  "adopt": {
102
107
  "scripts": {
103
- "typecheck": [
104
- "tsc --noEmit"
108
+ "format:check": [
109
+ "prettier --check ."
110
+ ],
111
+ "knip:check": [
112
+ "knip"
105
113
  ],
106
114
  "lint": [
107
115
  "oxlint && eslint . --quiet",
@@ -110,14 +118,36 @@
110
118
  "lint:slow": [
111
119
  "eslint . --config eslint.slow.config.ts --quiet"
112
120
  ],
113
- "format:check": [
114
- "prettier --check ."
115
- ],
116
- "knip:check": [
117
- "knip"
118
- ],
119
121
  "sg:scan": [
120
122
  "ast-grep scan"
123
+ ],
124
+ "test": [
125
+ "lisa-test-run --profile harper-fabric --adapter vitest -- vitest run",
126
+ "lisa-test-run --profile harper-fabric -- vitest run",
127
+ "lisa-test-run -- vitest run"
128
+ ],
129
+ "test:cov": [
130
+ "lisa-test-run --profile harper-fabric --adapter vitest -- vitest run --coverage",
131
+ "lisa-test-run --profile harper-fabric -- vitest run --coverage",
132
+ "lisa-test-run -- vitest run --coverage"
133
+ ],
134
+ "test:cov:unit": [
135
+ "LISA_COVERAGE_SCOPE=unit lisa-test-run --profile harper-fabric --adapter vitest -- vitest run --coverage --exclude='**/integration/**'",
136
+ "LISA_COVERAGE_SCOPE=unit lisa-test-run --profile harper-fabric -- vitest run --coverage --exclude='**/integration/**'",
137
+ "LISA_COVERAGE_SCOPE=unit lisa-test-run -- vitest run --coverage --exclude='**/integration/**'"
138
+ ],
139
+ "test:unit": [
140
+ "lisa-test-run --profile harper-fabric --adapter vitest -- vitest run --exclude='**/integration/**'",
141
+ "lisa-test-run --profile harper-fabric -- vitest run --exclude='**/integration/**'",
142
+ "lisa-test-run -- vitest run --exclude='**/integration/**'"
143
+ ],
144
+ "test:watch": [
145
+ "lisa-test-run --profile harper-fabric --adapter vitest -- vitest",
146
+ "lisa-test-run --profile harper-fabric -- vitest",
147
+ "lisa-test-run -- vitest"
148
+ ],
149
+ "typecheck": [
150
+ "tsc --noEmit"
121
151
  ]
122
152
  }
123
153
  }
@@ -7,11 +7,16 @@
7
7
  "tsx": "^4.20.6"
8
8
  },
9
9
  "scripts": {
10
+ "lint": "$npm_execpath run lint:lisa",
10
11
  "migration:generate": "tsx ./node_modules/typeorm/cli.js migration:generate -d typeorm.config.ts src/database/migrations/$npm_config_name",
11
- "migration:run": "tsx ./node_modules/typeorm/cli.js migration:run -d typeorm.config.ts",
12
12
  "migration:revert": "tsx ./node_modules/typeorm/cli.js migration:revert -d typeorm.config.ts",
13
+ "migration:run": "tsx ./node_modules/typeorm/cli.js migration:run -d typeorm.config.ts",
14
+ "test": "$npm_execpath run test:lisa",
15
+ "test:cov": "$npm_execpath run test:cov:lisa",
16
+ "test:cov:unit": "$npm_execpath run test:cov:unit:lisa",
13
17
  "test:integration": "$npm_execpath run test:integration:lisa",
14
- "lint": "$npm_execpath run lint:lisa"
18
+ "test:unit": "$npm_execpath run test:unit:lisa",
19
+ "test:watch": "$npm_execpath run test:watch:lisa"
15
20
  },
16
21
  "dependencies": {
17
22
  "class-validator": "^0.14.3",
@@ -20,37 +25,37 @@
20
25
  },
21
26
  "force": {
22
27
  "scripts": {
23
- "setup:deploy-key": "setup-deploy-key",
28
+ "deploy:dev": "sls deploy --stage dev",
29
+ "deploy:production": "sls deploy --stage production",
30
+ "deploy:staging": "sls deploy --stage staging",
31
+ "fetch:graphql:schema:dev": "./scripts/fetch-graphql-schema.sh development",
32
+ "fetch:graphql:schema:production": "./scripts/fetch-graphql-schema.sh production",
33
+ "fetch:graphql:schema:staging": "./scripts/fetch-graphql-schema.sh staging",
24
34
  "k6": "./scripts/k6-run.sh",
25
- "k6:smoke": "./scripts/k6-run.sh --scenario smoke",
35
+ "k6:docker:load": "./scripts/k6-run.sh --scenario load --docker",
36
+ "k6:docker:smoke": "./scripts/k6-run.sh --scenario smoke --docker",
26
37
  "k6:load": "./scripts/k6-run.sh --scenario load",
27
- "k6:stress": "./scripts/k6-run.sh --scenario stress",
28
- "k6:spike": "./scripts/k6-run.sh --scenario spike",
38
+ "k6:smoke": "./scripts/k6-run.sh --scenario smoke",
29
39
  "k6:soak": "./scripts/k6-run.sh --scenario soak",
30
- "k6:docker:smoke": "./scripts/k6-run.sh --scenario smoke --docker",
31
- "k6:docker:load": "./scripts/k6-run.sh --scenario load --docker",
32
- "start:local": "IS_OFFLINE=true sls offline start --noTimeout",
40
+ "k6:spike": "./scripts/k6-run.sh --scenario spike",
41
+ "k6:stress": "./scripts/k6-run.sh --scenario stress",
42
+ "lint:fix": "oxlint --fix && eslint . --fix",
43
+ "lint:lisa": "oxlint && eslint . --quiet",
44
+ "security:zap": "bash scripts/zap-baseline.sh",
45
+ "setup:deploy-key": "setup-deploy-key",
33
46
  "start:dev": "IS_OFFLINE=true sls offline start --stage dev",
34
47
  "start:docker": "docker compose up",
35
48
  "start:docker:build": "docker compose up --build",
36
49
  "start:docker:down": "docker compose down",
37
- "fetch:graphql:schema:dev": "./scripts/fetch-graphql-schema.sh development",
38
- "fetch:graphql:schema:staging": "./scripts/fetch-graphql-schema.sh staging",
39
- "fetch:graphql:schema:production": "./scripts/fetch-graphql-schema.sh production",
40
- "deploy:dev": "sls deploy --stage dev",
41
- "deploy:staging": "sls deploy --stage staging",
42
- "deploy:production": "sls deploy --stage production",
43
- "security:zap": "bash scripts/zap-baseline.sh",
44
- "test": "lisa-test-run --profile nestjs --adapter vitest -- vitest run",
45
- "test:unit": "lisa-test-run --profile nestjs --adapter vitest -- vitest run --exclude='**/integration/**' --exclude='**/*.integration.*'",
50
+ "start:local": "IS_OFFLINE=true sls offline start --noTimeout",
51
+ "test:cov:lisa": "lisa-test-run --profile nestjs --adapter vitest -- vitest run --coverage",
52
+ "test:cov:unit:lisa": "LISA_COVERAGE_SCOPE=unit lisa-test-run --profile nestjs --adapter vitest -- vitest run --coverage --exclude='**/integration/**' --exclude='**/*.integration.*'",
46
53
  "test:integration:lisa": "lisa-test-run --profile nestjs --adapter vitest -- vitest run '.integration.' 'integration/'",
47
- "test:cov": "lisa-test-run --profile nestjs --adapter vitest -- vitest run --coverage",
48
- "test:cov:unit": "LISA_COVERAGE_SCOPE=unit lisa-test-run --profile nestjs --adapter vitest -- vitest run --coverage --exclude='**/integration/**' --exclude='**/*.integration.*'",
54
+ "test:lisa": "lisa-test-run --profile nestjs --adapter vitest -- vitest run",
49
55
  "test:mutation": "LISA_TEST_SCRATCH_PREFIXES='[\"lisa-mutation-\",\"worker-\"]' lisa-test-run --profile nestjs --adapter direct -- node scripts/lisa-mutation.mjs",
50
- "test:watch": "lisa-test-run --profile nestjs --adapter vitest -- vitest",
51
- "lint:lisa": "oxlint && eslint . --quiet",
52
- "lint:fix": "oxlint --fix && eslint . --fix",
53
- "test:node": "LISA_TEST_SCRATCH_PREFIXES='[\"node-\"]' lisa-test-run --profile nestjs --adapter direct -- node scripts/lisa-test-node.mjs"
56
+ "test:node": "LISA_TEST_SCRATCH_PREFIXES='[\"node-\"]' lisa-test-run --profile nestjs --adapter direct -- node scripts/lisa-test-node.mjs",
57
+ "test:unit:lisa": "lisa-test-run --profile nestjs --adapter vitest -- vitest run --exclude='**/integration/**' --exclude='**/*.integration.*'",
58
+ "test:watch:lisa": "lisa-test-run --profile nestjs --adapter vitest -- vitest"
54
59
  },
55
60
  "dependencies": {
56
61
  "@apollo/server": "^5.4.0",
@@ -109,6 +114,25 @@
109
114
  },
110
115
  "adopt": {
111
116
  "scripts": {
117
+ "lint": [
118
+ "oxlint && eslint . --quiet",
119
+ "eslint . --quiet"
120
+ ],
121
+ "test": [
122
+ "lisa-test-run --profile nestjs --adapter vitest -- vitest run",
123
+ "lisa-test-run --profile nestjs -- vitest run",
124
+ "lisa-test-run -- vitest run"
125
+ ],
126
+ "test:cov": [
127
+ "lisa-test-run --profile nestjs --adapter vitest -- vitest run --coverage",
128
+ "lisa-test-run --profile nestjs -- vitest run --coverage",
129
+ "lisa-test-run -- vitest run --coverage"
130
+ ],
131
+ "test:cov:unit": [
132
+ "LISA_COVERAGE_SCOPE=unit lisa-test-run --profile nestjs --adapter vitest -- vitest run --coverage --exclude='**/integration/**' --exclude='**/*.integration.*'",
133
+ "LISA_COVERAGE_SCOPE=unit lisa-test-run --profile nestjs -- vitest run --coverage --exclude='**/integration/**' --exclude='**/*.integration.*'",
134
+ "LISA_COVERAGE_SCOPE=unit lisa-test-run -- vitest run --coverage --exclude='**/integration/**' --exclude='**/*.integration.*'"
135
+ ],
112
136
  "test:integration": [
113
137
  "lisa-test-run --profile nestjs --adapter vitest -- vitest run '.integration.' 'integration/' --passWithNoTests",
114
138
  "lisa-test-run --profile nestjs --adapter vitest -- vitest run '.integration.' 'integration/'",
@@ -123,9 +147,15 @@
123
147
  "vitest run tests/integration",
124
148
  "vitest run tests/integration --passWithNoTests"
125
149
  ],
126
- "lint": [
127
- "oxlint && eslint . --quiet",
128
- "eslint . --quiet"
150
+ "test:unit": [
151
+ "lisa-test-run --profile nestjs --adapter vitest -- vitest run --exclude='**/integration/**' --exclude='**/*.integration.*'",
152
+ "lisa-test-run --profile nestjs -- vitest run --exclude='**/integration/**' --exclude='**/*.integration.*'",
153
+ "lisa-test-run -- vitest run --exclude='**/integration/**' --exclude='**/*.integration.*'"
154
+ ],
155
+ "test:watch": [
156
+ "lisa-test-run --profile nestjs --adapter vitest -- vitest",
157
+ "lisa-test-run --profile nestjs -- vitest",
158
+ "lisa-test-run -- vitest"
129
159
  ]
130
160
  }
131
161
  }
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "force": {
3
3
  "scripts": {
4
+ "prepare": "$npm_execpath run build && husky install || true",
4
5
  "prepublishOnly": "$npm_execpath run build",
5
6
  "setup:deploy-key": "setup-deploy-key",
6
- "test": "lisa-test-run --profile npm-package --adapter vitest -- vitest run",
7
- "test:unit": "lisa-test-run --profile npm-package --adapter vitest -- vitest run --exclude='**/integration/**' --exclude='**/*.integration.*'",
7
+ "test:cov:lisa": "lisa-test-run --profile npm-package --adapter vitest -- vitest run --coverage",
8
+ "test:cov:unit:lisa": "LISA_COVERAGE_SCOPE=unit lisa-test-run --profile npm-package --adapter vitest -- vitest run --coverage --exclude='**/integration/**' --exclude='**/*.integration.*'",
8
9
  "test:integration:lisa": "lisa-test-run --profile npm-package --adapter vitest -- vitest run '.integration.' 'integration/'",
9
- "test:cov": "lisa-test-run --profile npm-package --adapter vitest -- vitest run --coverage",
10
- "test:cov:unit": "LISA_COVERAGE_SCOPE=unit lisa-test-run --profile npm-package --adapter vitest -- vitest run --coverage --exclude='**/integration/**' --exclude='**/*.integration.*'",
10
+ "test:lisa": "lisa-test-run --profile npm-package --adapter vitest -- vitest run",
11
11
  "test:mutation": "LISA_TEST_SCRATCH_PREFIXES='[\"lisa-mutation-\",\"worker-\"]' lisa-test-run --profile npm-package --adapter direct -- node scripts/lisa-mutation.mjs",
12
- "test:watch": "lisa-test-run --profile npm-package --adapter vitest -- vitest",
13
12
  "test:node": "LISA_TEST_SCRATCH_PREFIXES='[\"node-\"]' lisa-test-run --profile npm-package --adapter direct -- node scripts/lisa-test-node.mjs",
14
- "prepare": "$npm_execpath run build && husky install || true"
13
+ "test:unit:lisa": "lisa-test-run --profile npm-package --adapter vitest -- vitest run --exclude='**/integration/**' --exclude='**/*.integration.*'",
14
+ "test:watch:lisa": "lisa-test-run --profile npm-package --adapter vitest -- vitest"
15
15
  },
16
16
  "devDependencies": {
17
17
  "vite": "^8.0.16",
@@ -29,6 +29,42 @@
29
29
  "files": [
30
30
  "dist"
31
31
  ],
32
- "types": "./dist/index.d.ts"
32
+ "types": "./dist/index.d.ts",
33
+ "scripts": {
34
+ "test": "$npm_execpath run test:lisa",
35
+ "test:cov": "$npm_execpath run test:cov:lisa",
36
+ "test:cov:unit": "$npm_execpath run test:cov:unit:lisa",
37
+ "test:unit": "$npm_execpath run test:unit:lisa",
38
+ "test:watch": "$npm_execpath run test:watch:lisa"
39
+ }
40
+ },
41
+ "adopt": {
42
+ "scripts": {
43
+ "test": [
44
+ "lisa-test-run --profile npm-package --adapter vitest -- vitest run",
45
+ "lisa-test-run --profile npm-package -- vitest run",
46
+ "lisa-test-run -- vitest run"
47
+ ],
48
+ "test:cov": [
49
+ "lisa-test-run --profile npm-package --adapter vitest -- vitest run --coverage",
50
+ "lisa-test-run --profile npm-package -- vitest run --coverage",
51
+ "lisa-test-run -- vitest run --coverage"
52
+ ],
53
+ "test:cov:unit": [
54
+ "LISA_COVERAGE_SCOPE=unit lisa-test-run --profile npm-package --adapter vitest -- vitest run --coverage --exclude='**/integration/**' --exclude='**/*.integration.*'",
55
+ "LISA_COVERAGE_SCOPE=unit lisa-test-run --profile npm-package -- vitest run --coverage --exclude='**/integration/**' --exclude='**/*.integration.*'",
56
+ "LISA_COVERAGE_SCOPE=unit lisa-test-run -- vitest run --coverage --exclude='**/integration/**' --exclude='**/*.integration.*'"
57
+ ],
58
+ "test:unit": [
59
+ "lisa-test-run --profile npm-package --adapter vitest -- vitest run --exclude='**/integration/**' --exclude='**/*.integration.*'",
60
+ "lisa-test-run --profile npm-package -- vitest run --exclude='**/integration/**' --exclude='**/*.integration.*'",
61
+ "lisa-test-run -- vitest run --exclude='**/integration/**' --exclude='**/*.integration.*'"
62
+ ],
63
+ "test:watch": [
64
+ "lisa-test-run --profile npm-package --adapter vitest -- vitest",
65
+ "lisa-test-run --profile npm-package -- vitest",
66
+ "lisa-test-run -- vitest"
67
+ ]
68
+ }
33
69
  }
34
70
  }