@codyswann/lisa 4.28.4 → 4.29.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 (218) hide show
  1. package/README.md +3 -1
  2. package/all/copy-overwrite/scripts/lisa-gates.mjs +2 -1
  3. package/all/copy-overwrite/scripts/lisa-hooks/sonar-secrets.sh +3 -2
  4. package/all/copy-overwrite/scripts/lisa-postinstall.mjs +6 -2
  5. package/cdk/create-only/vitest.config.local.ts +5 -1
  6. package/cdk/package-lisa/package.lisa.json +14 -7
  7. package/dist/cli/apply.d.ts +20 -0
  8. package/dist/cli/apply.d.ts.map +1 -1
  9. package/dist/cli/apply.js +70 -3
  10. package/dist/cli/apply.js.map +1 -1
  11. package/dist/cli/doctor-apply-freshness.d.ts.map +1 -1
  12. package/dist/cli/doctor-apply-freshness.js +10 -4
  13. package/dist/cli/doctor-apply-freshness.js.map +1 -1
  14. package/dist/cli/lisa-test-run-bootstrap.d.ts +3 -0
  15. package/dist/cli/lisa-test-run-bootstrap.d.ts.map +1 -0
  16. package/dist/cli/lisa-test-run-bootstrap.js +201 -0
  17. package/dist/cli/lisa-test-run-bootstrap.js.map +1 -0
  18. package/dist/cli/lisa-test-run-ipc.d.ts +42 -0
  19. package/dist/cli/lisa-test-run-ipc.d.ts.map +1 -0
  20. package/dist/cli/lisa-test-run-ipc.js +200 -0
  21. package/dist/cli/lisa-test-run-ipc.js.map +1 -0
  22. package/dist/cli/lisa-test-run-process-group.d.ts +30 -0
  23. package/dist/cli/lisa-test-run-process-group.d.ts.map +1 -0
  24. package/dist/cli/lisa-test-run-process-group.js +123 -0
  25. package/dist/cli/lisa-test-run-process-group.js.map +1 -0
  26. package/dist/cli/lisa-test-run-reaper.d.ts +3 -0
  27. package/dist/cli/lisa-test-run-reaper.d.ts.map +1 -0
  28. package/dist/cli/lisa-test-run-reaper.js +195 -0
  29. package/dist/cli/lisa-test-run-reaper.js.map +1 -0
  30. package/dist/cli/lisa-test-run-runtime.d.ts +46 -0
  31. package/dist/cli/lisa-test-run-runtime.d.ts.map +1 -0
  32. package/dist/cli/lisa-test-run-runtime.js +123 -0
  33. package/dist/cli/lisa-test-run-runtime.js.map +1 -0
  34. package/dist/cli/lisa-test-run-supervisor.d.ts +13 -0
  35. package/dist/cli/lisa-test-run-supervisor.d.ts.map +1 -0
  36. package/dist/cli/lisa-test-run-supervisor.js +268 -0
  37. package/dist/cli/lisa-test-run-supervisor.js.map +1 -0
  38. package/dist/cli/lisa-test-run.d.ts +3 -0
  39. package/dist/cli/lisa-test-run.d.ts.map +1 -0
  40. package/dist/cli/lisa-test-run.js +66 -0
  41. package/dist/cli/lisa-test-run.js.map +1 -0
  42. package/dist/cli/shared-options.d.ts +11 -4
  43. package/dist/cli/shared-options.d.ts.map +1 -1
  44. package/dist/cli/shared-options.js +8 -8
  45. package/dist/cli/shared-options.js.map +1 -1
  46. package/dist/configs/vitest/base.d.ts.map +1 -1
  47. package/dist/configs/vitest/base.js +5 -2
  48. package/dist/configs/vitest/base.js.map +1 -1
  49. package/dist/configs/vitest/cdk.d.ts +4 -0
  50. package/dist/configs/vitest/cdk.d.ts.map +1 -1
  51. package/dist/configs/vitest/cdk.js +5 -0
  52. package/dist/configs/vitest/cdk.js.map +1 -1
  53. package/dist/configs/vitest/harper-fabric.d.ts.map +1 -1
  54. package/dist/configs/vitest/harper-fabric.js +1 -0
  55. package/dist/configs/vitest/harper-fabric.js.map +1 -1
  56. package/dist/configs/vitest/nestjs.d.ts.map +1 -1
  57. package/dist/configs/vitest/nestjs.js +1 -0
  58. package/dist/configs/vitest/nestjs.js.map +1 -1
  59. package/dist/configs/vitest/phaser.d.ts.map +1 -1
  60. package/dist/configs/vitest/phaser.js +1 -0
  61. package/dist/configs/vitest/phaser.js.map +1 -1
  62. package/dist/configs/vitest/scratch-authority.d.ts +25 -0
  63. package/dist/configs/vitest/scratch-authority.d.ts.map +1 -0
  64. package/dist/configs/vitest/scratch-authority.js +107 -0
  65. package/dist/configs/vitest/scratch-authority.js.map +1 -0
  66. package/dist/configs/vitest/scratch-bound-cleanup-programs.d.ts +5 -0
  67. package/dist/configs/vitest/scratch-bound-cleanup-programs.d.ts.map +1 -0
  68. package/dist/configs/vitest/scratch-bound-cleanup-programs.js +219 -0
  69. package/dist/configs/vitest/scratch-bound-cleanup-programs.js.map +1 -0
  70. package/dist/configs/vitest/scratch-bound-cleanup.d.ts +28 -0
  71. package/dist/configs/vitest/scratch-bound-cleanup.d.ts.map +1 -0
  72. package/dist/configs/vitest/scratch-bound-cleanup.js +155 -0
  73. package/dist/configs/vitest/scratch-bound-cleanup.js.map +1 -0
  74. package/dist/configs/vitest/scratch-bound-root-cleanup.d.ts +17 -0
  75. package/dist/configs/vitest/scratch-bound-root-cleanup.d.ts.map +1 -0
  76. package/dist/configs/vitest/scratch-bound-root-cleanup.js +149 -0
  77. package/dist/configs/vitest/scratch-bound-root-cleanup.js.map +1 -0
  78. package/dist/configs/vitest/scratch-global-setup.d.ts +17 -9
  79. package/dist/configs/vitest/scratch-global-setup.d.ts.map +1 -1
  80. package/dist/configs/vitest/scratch-global-setup.js +103 -35
  81. package/dist/configs/vitest/scratch-global-setup.js.map +1 -1
  82. package/dist/configs/vitest/scratch-leak-setup.d.ts +2 -0
  83. package/dist/configs/vitest/scratch-leak-setup.d.ts.map +1 -0
  84. package/dist/configs/vitest/scratch-leak-setup.js +108 -0
  85. package/dist/configs/vitest/scratch-leak-setup.js.map +1 -0
  86. package/dist/configs/vitest/scratch-namespace-authority.d.ts +80 -0
  87. package/dist/configs/vitest/scratch-namespace-authority.d.ts.map +1 -0
  88. package/dist/configs/vitest/scratch-namespace-authority.js +291 -0
  89. package/dist/configs/vitest/scratch-namespace-authority.js.map +1 -0
  90. package/dist/configs/vitest/scratch-owner.d.ts +131 -0
  91. package/dist/configs/vitest/scratch-owner.d.ts.map +1 -0
  92. package/dist/configs/vitest/scratch-owner.js +297 -0
  93. package/dist/configs/vitest/scratch-owner.js.map +1 -0
  94. package/dist/configs/vitest/scratch-route-profile.d.ts +36 -0
  95. package/dist/configs/vitest/scratch-route-profile.d.ts.map +1 -0
  96. package/dist/configs/vitest/scratch-route-profile.js +217 -0
  97. package/dist/configs/vitest/scratch-route-profile.js.map +1 -0
  98. package/dist/configs/vitest/scratch-run-root-compatibility.d.ts +33 -0
  99. package/dist/configs/vitest/scratch-run-root-compatibility.d.ts.map +1 -0
  100. package/dist/configs/vitest/scratch-run-root-compatibility.js +137 -0
  101. package/dist/configs/vitest/scratch-run-root-compatibility.js.map +1 -0
  102. package/dist/configs/vitest/scratch-run-root-intent.d.ts +66 -0
  103. package/dist/configs/vitest/scratch-run-root-intent.d.ts.map +1 -0
  104. package/dist/configs/vitest/scratch-run-root-intent.js +183 -0
  105. package/dist/configs/vitest/scratch-run-root-intent.js.map +1 -0
  106. package/dist/configs/vitest/scratch-setup.d.ts.map +1 -1
  107. package/dist/configs/vitest/scratch-setup.js +45 -15
  108. package/dist/configs/vitest/scratch-setup.js.map +1 -1
  109. package/dist/configs/vitest/scratch-supervision-intent.d.ts +8 -0
  110. package/dist/configs/vitest/scratch-supervision-intent.d.ts.map +1 -0
  111. package/dist/configs/vitest/scratch-supervision-intent.js +125 -0
  112. package/dist/configs/vitest/scratch-supervision-intent.js.map +1 -0
  113. package/dist/configs/vitest/scratch-supervision-protocol.d.ts +12 -0
  114. package/dist/configs/vitest/scratch-supervision-protocol.d.ts.map +1 -0
  115. package/dist/configs/vitest/scratch-supervision-protocol.js +230 -0
  116. package/dist/configs/vitest/scratch-supervision-protocol.js.map +1 -0
  117. package/dist/configs/vitest/scratch-supervision.d.ts +64 -0
  118. package/dist/configs/vitest/scratch-supervision.d.ts.map +1 -0
  119. package/dist/configs/vitest/scratch-supervision.js +209 -0
  120. package/dist/configs/vitest/scratch-supervision.js.map +1 -0
  121. package/dist/configs/vitest/scratch-sweep.d.ts +66 -0
  122. package/dist/configs/vitest/scratch-sweep.d.ts.map +1 -0
  123. package/dist/configs/vitest/scratch-sweep.js +82 -0
  124. package/dist/configs/vitest/scratch-sweep.js.map +1 -0
  125. package/dist/configs/vitest/scratch.d.ts +14 -187
  126. package/dist/configs/vitest/scratch.d.ts.map +1 -1
  127. package/dist/configs/vitest/scratch.js +18 -285
  128. package/dist/configs/vitest/scratch.js.map +1 -1
  129. package/dist/configs/vitest/typescript.d.ts.map +1 -1
  130. package/dist/configs/vitest/typescript.js +1 -0
  131. package/dist/configs/vitest/typescript.js.map +1 -1
  132. package/dist/core/apply-mode.d.ts +80 -29
  133. package/dist/core/apply-mode.d.ts.map +1 -1
  134. package/dist/core/apply-mode.js +23 -2
  135. package/dist/core/apply-mode.js.map +1 -1
  136. package/dist/core/apply-receipt.d.ts +5 -1
  137. package/dist/core/apply-receipt.d.ts.map +1 -1
  138. package/dist/core/apply-receipt.js.map +1 -1
  139. package/dist/core/config.d.ts +24 -12
  140. package/dist/core/config.d.ts.map +1 -1
  141. package/dist/core/config.js.map +1 -1
  142. package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
  143. package/dist/core/lisa-owned-hash-ledger.js +8 -0
  144. package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
  145. package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
  146. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  147. package/dist/core/upstream-evidence-manifest.js +63 -15
  148. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  149. package/dist/migrations/ensure-lisa-postinstall.d.ts +1 -1
  150. package/dist/migrations/ensure-lisa-postinstall.d.ts.map +1 -1
  151. package/dist/migrations/ensure-lisa-postinstall.js +28 -5
  152. package/dist/migrations/ensure-lisa-postinstall.js.map +1 -1
  153. package/dist/utils/postinstall-trampoline-source.js +10 -1
  154. package/dist/utils/postinstall-trampoline-source.js.map +1 -1
  155. package/expo/package-lisa/package.lisa.json +14 -14
  156. package/harper-fabric/package-lisa/package.lisa.json +8 -3
  157. package/nestjs/create-only/vitest.config.local.ts +5 -1
  158. package/nestjs/package-lisa/package.lisa.json +14 -8
  159. package/npm-package/package-lisa/package.lisa.json +8 -0
  160. package/package.json +17 -13
  161. package/phaser/package-lisa/package.lisa.json +9 -3
  162. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  163. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  164. package/plugins/lisa/hooks/sonar-secrets.sh +3 -2
  165. package/plugins/lisa-agy/plugin.json +1 -1
  166. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  167. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  168. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  169. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  170. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  171. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  172. package/plugins/lisa-copilot/hooks/sonar-secrets.sh +3 -2
  173. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  174. package/plugins/lisa-cursor/hooks/sonar-secrets.sh +3 -2
  175. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  176. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  177. package/plugins/lisa-expo-agy/plugin.json +1 -1
  178. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  179. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  180. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  181. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  182. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  183. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  184. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  185. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  186. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  187. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  188. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  189. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  190. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  191. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  192. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  193. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  194. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  195. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  196. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  197. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  198. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  199. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  200. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  201. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  202. package/plugins/lisa-rails-agy/plugin.json +1 -1
  203. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  204. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  205. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  206. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  207. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  208. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  209. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  210. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  211. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  212. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  213. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  214. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  215. package/plugins/src/base/hooks/sonar-secrets.sh +3 -2
  216. package/scripts/install-claude-plugins.sh +7 -2
  217. package/typescript/create-only/vitest.config.local.ts +5 -1
  218. package/typescript/package-lisa/package.lisa.json +14 -8
package/README.md CHANGED
@@ -184,7 +184,9 @@ whenever a project seems to have stopped tracking upstream changes; a repo can
184
184
  otherwise sit silently stale for months.
185
185
 
186
186
  The same check covers a second, quieter gap. A package install runs apply in
187
- **postinstall-safe** mode (`--skip-git-check`), which deliberately skips every
187
+ **postinstall-safe** mode — declared by the `LISA_POSTINSTALL=1` /
188
+ `--postinstall-safe` marker every Lisa-written postinstall invocation carries —
189
+ which deliberately skips every
188
190
  agent emit — Codex, Claude, agy, Copilot, OpenCode — and the Sonar integration,
189
191
  because those rewrite host-owned files. So no `bun install` at any version can
190
192
  reconcile `.codex/config.toml`; only a full `lisa apply .` does. Doctor now says
@@ -1523,7 +1523,8 @@ const QUALITY_FALLBACKS = Object.freeze({
1523
1523
  ],
1524
1524
  },
1525
1525
  test_node_suites: {
1526
- command: "node <lisa>/scripts/lisa-test-node.mjs",
1526
+ command:
1527
+ "lisa-test-run --profile <stack-or-node> --adapter direct -- node <lisa>/scripts/lisa-test-node.mjs",
1527
1528
  seedRun: ["test:node"],
1528
1529
  steps: ["🧪 Run .mjs suites (lisa-test-node)"],
1529
1530
  },
@@ -137,10 +137,11 @@ is_inactive() {
137
137
  # The FIFO is a rendezvous, not storage: a named pipe holds no data at rest, so
138
138
  # the value still never lands on disk (CWE-922) and a kill at any point leaves an
139
139
  # empty pipe behind rather than a readable token. The directory is `mktemp -d`,
140
- # which is 0700.
140
+ # which is 0700. Its explicit Lisa prefix makes an interrupted resolver
141
+ # attributable to the owning scratch lifecycle instead of anonymous `tmp.*`.
141
142
  resolve_secret() {
142
143
  local resolver="$1" name="$2" value="" child="" dir="" fifo=""
143
- dir="$(mktemp -d)" || return 0
144
+ dir="$(mktemp -d "${TMPDIR:-/tmp}/lisa-sonar-resolver.XXXXXXXX")" || return 0
144
145
  fifo="$dir/resolver"
145
146
  if ! mkfifo -m 600 "$fifo" 2>/dev/null; then
146
147
  rm -rf "$dir"
@@ -152,7 +152,11 @@ export function runPostinstall(cwd = process.cwd(), env = process.env) {
152
152
  try {
153
153
  child = boundedSpawnSync(
154
154
  process.execPath,
155
- [LISA_ENTRY, "--yes", "--skip-git-check", "."],
155
+ // `--postinstall-safe` is what selects the reduced apply, NOT
156
+ // `--skip-git-check` (CodySwannGT/lisa#3066). Both are needed here: an
157
+ // install has already dirtied package.json and the lockfile, and an
158
+ // install must not regenerate committed agent trees.
159
+ [LISA_ENTRY, "--yes", "--skip-git-check", "--postinstall-safe", "."],
156
160
  {
157
161
  cwd,
158
162
  env: { ...env, LISA_BOOTSTRAP: "1" },
@@ -209,7 +213,7 @@ export function runPostinstall(cwd = process.cwd(), env = process.env) {
209
213
  " The error is printed above. Run `lisa doctor` for the recorded state, or",
210
214
  " re-run the apply directly to see it in isolation:",
211
215
  "",
212
- ` node ${LISA_ENTRY} --yes --skip-git-check .`,
216
+ ` node ${LISA_ENTRY} --yes --skip-git-check --postinstall-safe .`,
213
217
  "",
214
218
  ].join("\n")
215
219
  );
@@ -28,7 +28,11 @@
28
28
  import type { ViteUserConfig } from "vitest/config";
29
29
 
30
30
  const config: ViteUserConfig = {
31
- // Add project-specific settings here
31
+ test: {
32
+ // Scratch redirection must install before the leak guard, and the guard's
33
+ // afterAll must run after project hooks so cleanup is attributed correctly.
34
+ sequence: { setupFiles: "list", hooks: "stack" },
35
+ },
32
36
  };
33
37
 
34
38
  export default config;
@@ -6,15 +6,16 @@
6
6
  "cdk": "cdk",
7
7
  "build": "tsc --noEmit",
8
8
  "prepare": "husky install || true",
9
- "test": "vitest run",
10
- "test:unit": "vitest run --exclude='**/integration/**'",
11
- "test:integration:lisa": "vitest run '.integration.' 'integration/'",
12
- "test:cov": "vitest run --coverage",
13
- "test:mutation": "node scripts/lisa-mutation.mjs",
14
- "test:watch": "vitest",
9
+ "test": "lisa-test-run --profile cdk --adapter vitest -- vitest run",
10
+ "test:unit": "lisa-test-run --profile cdk --adapter vitest -- vitest run --exclude='**/integration/**'",
11
+ "test:integration:lisa": "lisa-test-run --profile cdk --adapter vitest -- vitest run '.integration.' 'integration/'",
12
+ "test:cov": "lisa-test-run --profile cdk --adapter vitest -- vitest run --coverage",
13
+ "test:cov:unit": "LISA_COVERAGE_SCOPE=unit lisa-test-run --profile cdk --adapter vitest -- vitest run --coverage --exclude='**/integration/**'",
14
+ "test:mutation": "LISA_TEST_SCRATCH_PREFIXES='[\"lisa-mutation-\",\"worker-\"]' lisa-test-run --profile cdk --adapter direct -- node scripts/lisa-mutation.mjs",
15
+ "test:watch": "lisa-test-run --profile cdk --adapter vitest -- vitest",
15
16
  "lint:lisa": "oxlint && eslint . --quiet",
16
17
  "lint:fix": "oxlint --fix && eslint . --fix",
17
- "test:node": "node scripts/lisa-test-node.mjs"
18
+ "test:node": "LISA_TEST_SCRATCH_PREFIXES='[\"node-\"]' lisa-test-run --profile cdk --adapter direct -- node scripts/lisa-test-node.mjs"
18
19
  },
19
20
  "dependencies": {
20
21
  "aws-cdk-github-oidc": "^2.4.1",
@@ -68,6 +69,12 @@
68
69
  "adopt": {
69
70
  "scripts": {
70
71
  "test:integration": [
72
+ "lisa-test-run --profile cdk --adapter vitest -- vitest run '.integration.' 'integration/' --passWithNoTests",
73
+ "lisa-test-run --profile cdk --adapter vitest -- vitest run '.integration.' 'integration/'",
74
+ "lisa-test-run --profile cdk -- vitest run '.integration.' 'integration/' --passWithNoTests",
75
+ "lisa-test-run --profile cdk -- vitest run '.integration.' 'integration/'",
76
+ "lisa-test-run -- vitest run '.integration.' 'integration/' --passWithNoTests",
77
+ "lisa-test-run -- vitest run '.integration.' 'integration/'",
71
78
  "vitest run '.integration.' 'integration/' --passWithNoTests",
72
79
  "vitest run '.integration.' 'integration/'",
73
80
  "vitest run tests/integration",
@@ -1,4 +1,24 @@
1
+ import { type ApplyModeInputs } from "../core/apply-mode.js";
1
2
  import { type CLIOptions } from "./shared-options.js";
3
+ /**
4
+ * The one-time notice for the retired meaning of `--skip-git-check`.
5
+ *
6
+ * Until CodySwannGT/lisa#3066 the flag also selected the reduced
7
+ * `postinstall-safe` subset. Every Lisa-written postinstall invocation now
8
+ * declares its own context instead, so those callers are unaffected — but a
9
+ * hand-written or copied command that passes only the flag gets a DIFFERENT
10
+ * apply than it used to, and a change of meaning that arrives silently is the
11
+ * defect restated rather than fixed.
12
+ *
13
+ * It warns rather than fails. A hard failure would abort the apply for every
14
+ * consumer whose `package.json` still carries the pre-fix hook text, turning a
15
+ * template-sync change into a fleet-wide stop on template updates — strictly
16
+ * worse than the bug. The hook migrates itself on the first apply, so the
17
+ * notice is also self-limiting.
18
+ * @param state - The resolved apply-mode inputs for this invocation.
19
+ * @returns The notice, or undefined when nothing changed for this caller.
20
+ */
21
+ export declare function getRetiredSkipGitCheckNotice(state: ApplyModeInputs): string | undefined;
2
22
  /**
3
23
  * Apply Lisa to the given destination with the given options.
4
24
  *
@@ -1 +1 @@
1
- {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/cli/apply.ts"],"names":[],"mappings":"AAmBA,OAAO,EACL,KAAK,UAAU,EAGhB,MAAM,qBAAqB,CAAC;AAuN7B;;;;;;;;;;GAUG;AACH,wBAAsB,QAAQ,CAC5B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,IAAI,CAAC,CAqEf"}
1
+ {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/cli/apply.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,eAAe,EAIrB,MAAM,uBAAuB,CAAC;AAgB/B,OAAO,EACL,KAAK,UAAU,EAGhB,MAAM,qBAAqB,CAAC;AAoO7B;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,eAAe,GACrB,MAAM,GAAG,SAAS,CAepB;AAmCD;;;;;;;;;;GAUG;AACH,wBAAsB,QAAQ,CAC5B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,IAAI,CAAC,CAwEf"}
package/dist/cli/apply.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as path from "node:path";
2
2
  import { fileURLToPath } from "node:url";
3
- import { resolveApplyMode } from "../core/apply-mode.js";
3
+ import { LISA_POSTINSTALL_ENV, resolveApplyMode, resolvePostinstallDeclaration, } from "../core/apply-mode.js";
4
4
  import { recordSuccessfulApply } from "../core/apply-receipt.js";
5
5
  import { getBootstrapApplySkipNotice } from "../core/bootstrap-environment.js";
6
6
  import { ACCEPTED_HARNESS_INPUTS } from "../core/config.js";
@@ -32,7 +32,12 @@ function printUsageAndExit() {
32
32
  console.log(" -n, --dry-run Show what would be done without making changes");
33
33
  console.log(" -y, --yes Non-interactive mode (auto-accept defaults, overwrite on conflict)");
34
34
  console.log(" -v, --validate Validate project compatibility without applying changes");
35
- console.log(" --skip-git-check Skip dirty git working directory check (for postinstall use)");
35
+ console.log(" --skip-git-check Skip the dirty git working directory check. The apply still");
36
+ console.log(" runs in full, including every agent emit.");
37
+ console.log(" --postinstall-safe");
38
+ console.log(" Declare a package-manager install lifecycle: runs the reduced");
39
+ console.log(" subset (no agent emit, no Sonar). Same as LISA_POSTINSTALL=1.");
40
+ console.log(" --full-apply Run the FULL apply even inside a declared postinstall");
36
41
  console.log(" --refresh-templates [paths]");
37
42
  console.log(" Let a non-interactive apply replace managed files it would");
38
43
  console.log(" otherwise report as out of date. Optionally scope to a");
@@ -99,7 +104,8 @@ async function migrateLegacyHarnessIfNeeded(destDir, logger) {
99
104
  * @param parts.yesMode - Whether prompts auto-accept
100
105
  * @param parts.validateOnly - Whether to validate instead of apply
101
106
  * @param parts.skipGitCheck - Whether the dirty-tree prompt is skipped
102
- * @param parts.fullApply - Whether to run the full apply despite skipGitCheck
107
+ * @param parts.postinstall - Whether this apply declared a postinstall context
108
+ * @param parts.fullApply - Whether to force the full apply anyway
103
109
  * @param parts.refreshTemplates - Opted-in managed files, if any
104
110
  * @param parts.harness - Target harness for emitted artifacts
105
111
  * @returns The config to hand to Lisa
@@ -157,6 +163,64 @@ async function finalizeSuccessfulApply(parts) {
157
163
  stalePaths,
158
164
  });
159
165
  }
166
+ /**
167
+ * The one-time notice for the retired meaning of `--skip-git-check`.
168
+ *
169
+ * Until CodySwannGT/lisa#3066 the flag also selected the reduced
170
+ * `postinstall-safe` subset. Every Lisa-written postinstall invocation now
171
+ * declares its own context instead, so those callers are unaffected — but a
172
+ * hand-written or copied command that passes only the flag gets a DIFFERENT
173
+ * apply than it used to, and a change of meaning that arrives silently is the
174
+ * defect restated rather than fixed.
175
+ *
176
+ * It warns rather than fails. A hard failure would abort the apply for every
177
+ * consumer whose `package.json` still carries the pre-fix hook text, turning a
178
+ * template-sync change into a fleet-wide stop on template updates — strictly
179
+ * worse than the bug. The hook migrates itself on the first apply, so the
180
+ * notice is also self-limiting.
181
+ * @param state - The resolved apply-mode inputs for this invocation.
182
+ * @returns The notice, or undefined when nothing changed for this caller.
183
+ */
184
+ export function getRetiredSkipGitCheckNotice(state) {
185
+ if (!state.skipGitCheck ||
186
+ state.postinstall === true ||
187
+ state.fullApply === true) {
188
+ return undefined;
189
+ }
190
+ return ("--skip-git-check now waives ONLY the clean-tree check; this apply runs in " +
191
+ "FULL, including every agent emit and the Sonar integration. It used to " +
192
+ "also select the reduced postinstall-safe subset (CodySwannGT/lisa#3066). " +
193
+ `Pass --postinstall-safe (or set ${LISA_POSTINSTALL_ENV}=1) if you wanted ` +
194
+ "the reduced apply.");
195
+ }
196
+ /**
197
+ * Read this process's postinstall declaration.
198
+ *
199
+ * The environment spelling is not optional here: the declaration originates in
200
+ * the hook text inside a consumer's own `package.json`, and a shell command
201
+ * prefix is the only way that text can reach the process it launches.
202
+ * @param options - Parsed CLI options for this invocation.
203
+ * @returns True when this apply declared itself a package-manager install.
204
+ */
205
+ function readPostinstallDeclaration(options) {
206
+ // Lisa's CLI is not a Nest service or a Lambda handler; it must introspect
207
+ // the environment its own postinstall hook hands it, and routing this one
208
+ // presence check through a config service would add indirection rather than
209
+ // type-safety.
210
+ // eslint-disable-next-line no-restricted-syntax -- see above
211
+ return resolvePostinstallDeclaration(options.postinstallSafe, process.env);
212
+ }
213
+ /**
214
+ * Announce the retired meaning of `--skip-git-check` when it applies.
215
+ * @param logger - Where the notice goes.
216
+ * @param state - The resolved apply-mode inputs for this invocation.
217
+ */
218
+ function warnIfRetiredSkipGitCheck(logger, state) {
219
+ const notice = getRetiredSkipGitCheckNotice(state);
220
+ if (notice !== undefined) {
221
+ logger.warn(notice);
222
+ }
223
+ }
160
224
  /**
161
225
  * Apply Lisa to the given destination with the given options.
162
226
  *
@@ -184,18 +248,21 @@ export async function runApply(destination, options) {
184
248
  const configFileExists = await projectConfigExists(destDir);
185
249
  const harness = resolveHarness(options.harness, projectConfig);
186
250
  const refreshTemplates = parseRefreshTemplates(options.refreshTemplates);
251
+ const postinstall = readPostinstallDeclaration(options);
187
252
  const config = buildApplyConfig({
188
253
  destDir,
189
254
  dryRun,
190
255
  yesMode,
191
256
  validateOnly,
192
257
  skipGitCheck: options.skipGitCheck ?? false,
258
+ postinstall,
193
259
  fullApply: options.fullApply ?? false,
194
260
  refreshTemplates,
195
261
  harness,
196
262
  });
197
263
  const deps = createDependencies(dryRun, yesMode, logger);
198
264
  const lisa = new Lisa(config, deps);
265
+ warnIfRetiredSkipGitCheck(logger, config);
199
266
  try {
200
267
  const result = options.validate
201
268
  ? await lisa.validate()
@@ -1 +1 @@
1
- {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/cli/apply.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/cli/apply.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor-apply-freshness.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-apply-freshness.ts"],"names":[],"mappings":"AA4EA,wEAAwE;AACxE,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAoLD;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,CAAC,CA2BzB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,IAAI,cAAc,CASjD"}
1
+ {"version":3,"file":"doctor-apply-freshness.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-apply-freshness.ts"],"names":[],"mappings":"AAkFA,wEAAwE;AACxE,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAoLD;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,CAAC,CA2BzB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,IAAI,cAAc,CASjD"}
@@ -15,9 +15,9 @@
15
15
  * version stamp means none has finished since that version. Both are reported
16
16
  * with the version and date, and with the command that reproduces the failure.
17
17
  *
18
- * A third silence lives in the same subsystem: postinstall-safe mode
19
- * (`--skip-git-check`, which is what a package manager runs) skips every agent
20
- * emit. That is deliberate — those emits rewrite host-owned files — but it
18
+ * A third silence lives in the same subsystem: postinstall-safe mode (what a
19
+ * package manager's install declares, via `--postinstall-safe` /
20
+ * `LISA_POSTINSTALL=1`) skips every agent emit. That is deliberate — those emits rewrite host-owned files — but it
21
21
  * means no `bun install` at any version can reconcile `.codex/config.toml`, so
22
22
  * repos on the newest Lisa still carry a deprecated `codex_hooks` key and an
23
23
  * audit reasonably but wrongly concluded "apply just hasn't re-run". Same shape
@@ -51,7 +51,13 @@ import { getPackageVersion } from "./version.js";
51
51
  const CHECK_NAME = "Templates applied by this Lisa version?";
52
52
  const YAML_CHECK_NAME = "YAML runtime usable?";
53
53
  const REAPPLY_COMMAND = "node node_modules/@codyswann/lisa/dist/index.js --yes --skip-git-check .";
54
- /** No `--skip-git-check`: the only form that performs the agent emits. */
54
+ /**
55
+ * A plain operator apply, which performs the agent emits.
56
+ *
57
+ * `REAPPLY_COMMAND` above performs them too now — since
58
+ * CodySwannGT/lisa#3066 `--skip-git-check` waives only the clean-tree check —
59
+ * but this is the form to hand someone whose tree is already clean.
60
+ */
55
61
  const FULL_APPLY_COMMAND = "node node_modules/@codyswann/lisa/dist/index.js .";
56
62
  /**
57
63
  * How many stale paths to name inline before deferring to the receipt.
@@ -1 +1 @@
1
- {"version":3,"file":"doctor-apply-freshness.js","sourceRoot":"","sources":["../../src/cli/doctor-apply-freshness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor-apply-freshness.js","sourceRoot":"","sources":["../../src/cli/doctor-apply-freshness.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=lisa-test-run-bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lisa-test-run-bootstrap.d.ts","sourceRoot":"","sources":["../../src/cli/lisa-test-run-bootstrap.ts"],"names":[],"mappings":""}
@@ -0,0 +1,201 @@
1
+ #!/usr/bin/env node
2
+ /** Inert process-group leader that gates a supervised test payload on GO. */
3
+ import { spawn } from "node:child_process";
4
+ import { env } from "node:process";
5
+ import { parseScratchProtocolMessage } from "../configs/vitest/scratch-supervision.js";
6
+ /** Private deterministic IPC-close seam, never inherited by the payload. */
7
+ const TEST_FAULT_ENV = "LISA_TEST_RUN_TEST_FAULT";
8
+ /** Signals the foreground supervisor owns and the group leader must survive. */
9
+ const SUPERVISED_SIGNALS = [
10
+ "SIGINT",
11
+ "SIGTERM",
12
+ "SIGHUP",
13
+ ];
14
+ /**
15
+ * Parse the exact bounded inert command envelope.
16
+ * @param value - Parsed IPC command body
17
+ * @returns Validated command
18
+ */
19
+ function validateCommand(value) {
20
+ const candidate = value;
21
+ if (typeof value !== "object" ||
22
+ value === null ||
23
+ candidate.schema !== 1 ||
24
+ !Array.isArray(candidate.argv) ||
25
+ candidate.argv.length === 0 ||
26
+ !candidate.argv.every(argument => typeof argument === "string") ||
27
+ typeof candidate.env !== "object" ||
28
+ candidate.env === null ||
29
+ !Object.values(candidate.env).every(entry => typeof entry === "string")) {
30
+ throw new Error("Invalid lisa-test-run bootstrap command schema");
31
+ }
32
+ return candidate;
33
+ }
34
+ /**
35
+ * Forward one signal to the payload when it is still present.
36
+ * @param payload - Current payload process
37
+ * @param signal - Signal to deliver
38
+ */
39
+ function signalPayload(payload, signal) {
40
+ try {
41
+ payload?.kill(signal);
42
+ }
43
+ catch {
44
+ // A concurrently exiting payload is already drained.
45
+ }
46
+ }
47
+ /**
48
+ * Kill the payload and mark operational failure after channel loss.
49
+ * @param state - Bootstrap lifecycle state
50
+ */
51
+ function failClosed(state) {
52
+ if (state.failingClosed)
53
+ return;
54
+ // eslint-disable-next-line functional/immutable-data -- one-process protocol state transition
55
+ state.failingClosed = true;
56
+ if (!state.payloadExited)
57
+ signalPayload(state.payload, "SIGKILL");
58
+ process.exitCode = 1;
59
+ if (process.connected)
60
+ process.disconnect();
61
+ }
62
+ /**
63
+ * Send one exact response with callback-safe channel settlement.
64
+ * @param state - Bootstrap lifecycle state
65
+ * @param message - Exact protocol response
66
+ */
67
+ function sendResponse(state, message) {
68
+ const type = message["type"];
69
+ const fault = env[TEST_FAULT_ENV];
70
+ const closeForFault = (fault === "bootstrap-close-command-ready" && type === "COMMAND_READY") ||
71
+ (fault === "bootstrap-close-payload-exit" && type === "PAYLOAD_EXIT");
72
+ if (closeForFault && process.connected)
73
+ process.disconnect();
74
+ if (!process.connected || process.send === undefined) {
75
+ failClosed(state);
76
+ return;
77
+ }
78
+ try {
79
+ process.send(message, error => {
80
+ if (error !== null)
81
+ failClosed(state);
82
+ });
83
+ }
84
+ catch {
85
+ failClosed(state);
86
+ }
87
+ }
88
+ /**
89
+ * Start one payload only after the ordered COMMAND/GO handshake.
90
+ * @param state - Bootstrap lifecycle state
91
+ * @param command - Immutable payload command
92
+ */
93
+ function startPayload(state, command) {
94
+ // eslint-disable-next-line functional/immutable-data -- ordered protocol transition before spawn
95
+ state.phase = "running";
96
+ const payload = spawn(command.argv[0], command.argv.slice(1), {
97
+ cwd: process.cwd(),
98
+ env: command.env,
99
+ detached: false,
100
+ shell: false,
101
+ stdio: "inherit",
102
+ });
103
+ // eslint-disable-next-line functional/immutable-data -- single owned payload handle
104
+ state.payload = payload;
105
+ payload.once("error", error => {
106
+ sendResponse(state, {
107
+ schema: 1,
108
+ type: "PAYLOAD_ERROR",
109
+ message: error.message,
110
+ });
111
+ });
112
+ payload.once("exit", (code, signal) => {
113
+ // eslint-disable-next-line functional/immutable-data -- terminal payload state
114
+ state.payloadExited = true;
115
+ // eslint-disable-next-line functional/immutable-data -- terminal payload state
116
+ state.phase = "payload-exited";
117
+ sendResponse(state, { schema: 1, type: "PAYLOAD_EXIT", code, signal });
118
+ });
119
+ }
120
+ /**
121
+ * Deliver a forwarded signal, treating one outside `running` as the race it is.
122
+ *
123
+ * Two windows produce a legitimate out-of-phase SIGNAL: the supervisor arms its
124
+ * handlers before it sends GO, so a signal there arrives in `await-go`; and the
125
+ * payload's own exit records `payload-exited` before PAYLOAD_EXIT reaches the
126
+ * supervisor, so a signal forwarded in that gap arrives after there is anything
127
+ * left to signal. Refusing either would fail this process closed -- exit 1 and
128
+ * an abrupt disconnect -- reporting an ordinary signal-terminated run as a
129
+ * protocol refusal plus an unexpected channel loss.
130
+ * @param state - Bootstrap lifecycle state
131
+ * @param signal - Signal the supervisor forwarded
132
+ */
133
+ function forwardSignal(state, signal) {
134
+ if (state.phase !== "running")
135
+ return;
136
+ signalPayload(state.payload, signal);
137
+ }
138
+ /**
139
+ * Apply one already-validated message to the exact protocol phase.
140
+ * @param state - Bootstrap lifecycle state
141
+ * @param message - Untrusted IPC message
142
+ */
143
+ function handleMessage(state, message) {
144
+ const protocol = parseScratchProtocolMessage(message);
145
+ const type = protocol.type;
146
+ if (state.phase === "await-command" && type === "COMMAND") {
147
+ // eslint-disable-next-line functional/immutable-data -- command becomes immutable after the one accepted transition
148
+ state.command = validateCommand(protocol["command"]);
149
+ // eslint-disable-next-line functional/immutable-data -- ordered protocol transition
150
+ state.phase = "await-go";
151
+ sendResponse(state, { schema: 1, type: "COMMAND_READY" });
152
+ return;
153
+ }
154
+ if (state.phase === "await-go" && type === "GO" && state.command) {
155
+ startPayload(state, state.command);
156
+ return;
157
+ }
158
+ if (type === "SIGNAL") {
159
+ forwardSignal(state, protocol["signal"]);
160
+ return;
161
+ }
162
+ if (type === "STOP" && state.phase !== "stopping") {
163
+ // eslint-disable-next-line functional/immutable-data -- terminal protocol transition
164
+ state.phase = "stopping";
165
+ if (!state.payloadExited)
166
+ signalPayload(state.payload, "SIGKILL");
167
+ process.disconnect();
168
+ process.exit(0);
169
+ }
170
+ throw new Error(`Unexpected ${type} in bootstrap state ${state.phase}`);
171
+ }
172
+ /** Run the process-group leader protocol. */
173
+ function main() {
174
+ const state = {
175
+ payloadExited: false,
176
+ failingClosed: false,
177
+ phase: "await-command",
178
+ };
179
+ for (const signal of SUPERVISED_SIGNALS) {
180
+ process.on(signal, () => undefined);
181
+ }
182
+ sendResponse(state, { schema: 1, type: "BOOTSTRAP_READY", pid: process.pid });
183
+ process.on("message", message => {
184
+ try {
185
+ handleMessage(state, message);
186
+ }
187
+ catch (error) {
188
+ process.stderr.write(`lisa-test-run bootstrap refused protocol: ${error instanceof Error ? error.message : String(error)}\n`);
189
+ failClosed(state);
190
+ }
191
+ });
192
+ process.on("disconnect", () => failClosed(state));
193
+ }
194
+ try {
195
+ main();
196
+ }
197
+ catch (error) {
198
+ process.stderr.write(`lisa-test-run bootstrap failed: ${error instanceof Error ? error.message : String(error)}\n`);
199
+ process.exit(1);
200
+ }
201
+ //# sourceMappingURL=lisa-test-run-bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lisa-test-run-bootstrap.js","sourceRoot":"","sources":["../../src/cli/lisa-test-run-bootstrap.ts"],"names":[],"mappings":";AACA,6EAA6E;AAC7E,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AAuBvF,4EAA4E;AAC5E,MAAM,cAAc,GAAG,0BAA0B,CAAC;AAElD,gFAAgF;AAChF,MAAM,kBAAkB,GAA8B;IACpD,QAAQ;IACR,SAAS;IACT,QAAQ;CACT,CAAC;AAEF;;;;GAIG;AACH,SAAS,eAAe,CAAC,KAAc;IACrC,MAAM,SAAS,GAAG,KAAoC,CAAC;IACvD,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,SAAS,CAAC,MAAM,KAAK,CAAC;QACtB,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;QAC9B,SAAS,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QAC3B,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC;QAC/D,OAAO,SAAS,CAAC,GAAG,KAAK,QAAQ;QACjC,SAAS,CAAC,GAAG,KAAK,IAAI;QACtB,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,EACvE,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,SAA+B,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CACpB,OAAiC,EACjC,MAAsB;IAEtB,IAAI,CAAC;QACH,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,qDAAqD;IACvD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU,CAAC,KAAqB;IACvC,IAAI,KAAK,CAAC,aAAa;QAAE,OAAO;IAChC,8FAA8F;IAC9F,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,KAAK,CAAC,aAAa;QAAE,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAClE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACrB,IAAI,OAAO,CAAC,SAAS;QAAE,OAAO,CAAC,UAAU,EAAE,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CACnB,KAAqB,EACrB,OAA0C;IAE1C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC;IAClC,MAAM,aAAa,GACjB,CAAC,KAAK,KAAK,+BAA+B,IAAI,IAAI,KAAK,eAAe,CAAC;QACvE,CAAC,KAAK,KAAK,8BAA8B,IAAI,IAAI,KAAK,cAAc,CAAC,CAAC;IACxE,IAAI,aAAa,IAAI,OAAO,CAAC,SAAS;QAAE,OAAO,CAAC,UAAU,EAAE,CAAC;IAC7D,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACrD,UAAU,CAAC,KAAK,CAAC,CAAC;QAClB,OAAO;IACT,CAAC;IACD,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;YAC5B,IAAI,KAAK,KAAK,IAAI;gBAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,UAAU,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CACnB,KAAqB,EACrB,OAA2B;IAE3B,iGAAiG;IACjG,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;IACxB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QAC5D,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IACH,oFAAoF;IACpF,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;QAC5B,YAAY,CAAC,KAAK,EAAE;YAClB,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QACpC,+EAA+E;QAC/E,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;QAC3B,+EAA+E;QAC/E,KAAK,CAAC,KAAK,GAAG,gBAAgB,CAAC;QAC/B,YAAY,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,aAAa,CAAC,KAAqB,EAAE,MAAsB;IAClE,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO;IACtC,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,KAAqB,EAAE,OAAgB;IAC5D,MAAM,QAAQ,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC3B,IAAI,KAAK,CAAC,KAAK,KAAK,eAAe,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC1D,oHAAoH;QACpH,KAAK,CAAC,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QACrD,oFAAoF;QACpF,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC;QACzB,YAAY,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACjE,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAmB,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAClD,qFAAqF;QACrF,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,aAAa;YAAE,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAClE,OAAO,CAAC,UAAU,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,uBAAuB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,6CAA6C;AAC7C,SAAS,IAAI;IACX,MAAM,KAAK,GAAmB;QAC5B,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,KAAK;QACpB,KAAK,EAAE,eAAe;KACvB,CAAC;IACF,KAAK,MAAM,MAAM,IAAI,kBAAkB,EAAE,CAAC;QACxC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IACD,YAAY,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9E,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE;QAC9B,IAAI,CAAC;YACH,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,6CAA6C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CACxG,CAAC;YACF,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,IAAI,CAAC;IACH,IAAI,EAAE,CAAC;AACT,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAC9F,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,42 @@
1
+ /** Exact, bounded parent-side IPC operations for lisa-test-run companions. */
2
+ import type { ChildProcess } from "node:child_process";
3
+ import { type ScratchProtocolMessageV1 } from "../configs/vitest/scratch-supervision.js";
4
+ /** Child outcome retained until cleanup and disarm are proven. */
5
+ export interface PayloadOutcome {
6
+ readonly code: number | null;
7
+ readonly signal: NodeJS.Signals | null;
8
+ }
9
+ /**
10
+ * Wait for one exact child acknowledgement or fail closed.
11
+ * @param child - Protocol companion
12
+ * @param expected - Exact expected type
13
+ * @param correlation - Optional exact root token
14
+ * @returns Promise settled by the exact validated acknowledgement
15
+ */
16
+ export declare function waitForMessage(child: ChildProcess, expected: string, correlation?: string): Promise<ScratchProtocolMessageV1>;
17
+ /**
18
+ * Wait until a protocol companion is absent from the process table.
19
+ * @param child - Protocol companion
20
+ * @returns Promise settled after exit
21
+ */
22
+ export declare function waitForExit(child: ChildProcess): Promise<void>;
23
+ /**
24
+ * Send one versioned message or reject a closed IPC channel.
25
+ * @param child - Protocol companion
26
+ * @param message - Exact message body without schema
27
+ * @returns Callback-settled send promise
28
+ */
29
+ export declare function sendMessage(child: ChildProcess, message: Readonly<Record<string, unknown>>): Promise<void>;
30
+ /**
31
+ * Wait for the payload result and reject every other message.
32
+ * @param bootstrap - Inert bootstrap leader
33
+ * @param signalEscalating - Whether parent signal escalation owns its exit
34
+ * @returns Exact payload result
35
+ */
36
+ export declare function waitForPayload(bootstrap: ChildProcess, signalEscalating?: () => boolean): Promise<PayloadOutcome>;
37
+ /**
38
+ * Stop the inert leader and wait for it to leave the target group.
39
+ * @param bootstrap - Inert bootstrap leader
40
+ */
41
+ export declare function stopBootstrap(bootstrap: ChildProcess): Promise<void>;
42
+ //# sourceMappingURL=lisa-test-run-ipc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lisa-test-run-ipc.d.ts","sourceRoot":"","sources":["../../src/cli/lisa-test-run-ipc.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,0CAA0C,CAAC;AAgDlD,kEAAkE;AAClE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;CACxC;AAOD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,wBAAwB,CAAC,CAsCnC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAK9D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACzC,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAYD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,YAAY,EACvB,gBAAgB,GAAE,MAAM,OAAqB,GAC5C,OAAO,CAAC,cAAc,CAAC,CAkCzB;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAa1E"}