@codyswann/lisa 3.12.0 → 3.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/all/copy-overwrite/scripts/lisa-hooks/block-no-verify.sh +15 -2
  2. package/all/create-only/scripts/remote-agent-aws-setup.sh +3 -0
  3. package/cdk/create-only/.github/workflows/deploy.yml +2 -1
  4. package/cdk/create-only/vitest.config.local.ts +3 -0
  5. package/dist/cli/doctor-lisa-owned-artifacts.d.ts +11 -2
  6. package/dist/cli/doctor-lisa-owned-artifacts.d.ts.map +1 -1
  7. package/dist/cli/doctor-lisa-owned-artifacts.js +60 -15
  8. package/dist/cli/doctor-lisa-owned-artifacts.js.map +1 -1
  9. package/dist/core/config.d.ts +21 -1
  10. package/dist/core/config.d.ts.map +1 -1
  11. package/dist/core/config.js +1 -0
  12. package/dist/core/config.js.map +1 -1
  13. package/dist/core/guard-capabilities.d.ts +60 -0
  14. package/dist/core/guard-capabilities.d.ts.map +1 -0
  15. package/dist/core/guard-capabilities.js +102 -0
  16. package/dist/core/guard-capabilities.js.map +1 -0
  17. package/dist/core/lisa-owned-hash-ledger.d.ts +11 -0
  18. package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -0
  19. package/dist/core/lisa-owned-hash-ledger.js +127 -0
  20. package/dist/core/lisa-owned-hash-ledger.js.map +1 -0
  21. package/dist/core/lisa-owned-provenance.d.ts +71 -0
  22. package/dist/core/lisa-owned-provenance.d.ts.map +1 -0
  23. package/dist/core/lisa-owned-provenance.js +144 -0
  24. package/dist/core/lisa-owned-provenance.js.map +1 -0
  25. package/dist/core/lisa.d.ts +18 -0
  26. package/dist/core/lisa.d.ts.map +1 -1
  27. package/dist/core/lisa.js +38 -0
  28. package/dist/core/lisa.js.map +1 -1
  29. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  30. package/dist/core/upstream-evidence-manifest.js +59 -51
  31. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  32. package/dist/strategies/copy-overwrite.d.ts +28 -1
  33. package/dist/strategies/copy-overwrite.d.ts.map +1 -1
  34. package/dist/strategies/copy-overwrite.js +53 -3
  35. package/dist/strategies/copy-overwrite.js.map +1 -1
  36. package/dist/strategies/strategy.interface.d.ts +13 -0
  37. package/dist/strategies/strategy.interface.d.ts.map +1 -1
  38. package/expo/create-only/.github/workflows/ci.yml +3 -0
  39. package/expo/create-only/.github/workflows/deploy.yml +2 -1
  40. package/expo/create-only/.github/workflows/maestro-e2e.yml +3 -0
  41. package/expo/create-only/.github/workflows/nightly-e2e-bypass-reaper.yml +3 -0
  42. package/expo/create-only/.github/workflows/nightly-e2e-health.yml +3 -0
  43. package/expo/create-only/.github/workflows/nightly-e2e-report.yml +3 -0
  44. package/expo/create-only/babel.config.js +3 -0
  45. package/expo/create-only/jest.config.local.ts +3 -0
  46. package/expo/create-only/jest.config.react-native-mock.js +3 -0
  47. package/expo/create-only/jest.setup.local.ts +3 -0
  48. package/expo/create-only/jest.setup.pre.local.js +3 -0
  49. package/expo/create-only/scripts/zap-baseline.sh +3 -0
  50. package/harper-fabric/create-only/.github/workflows/deploy.yml +3 -0
  51. package/harper-fabric/create-only/.github/workflows/zap-baseline.yml +3 -0
  52. package/harper-fabric/create-only/scripts/zap-baseline.sh +3 -0
  53. package/nestjs/create-only/.github/workflows/deploy.yml +3 -0
  54. package/nestjs/create-only/scripts/zap-baseline.sh +3 -0
  55. package/nestjs/create-only/vitest.config.local.ts +3 -0
  56. package/npm-package/create-only/.github/workflows/publish-to-npm.yml +2 -1
  57. package/package.json +3 -1
  58. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  59. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  60. package/plugins/lisa/hooks/block-no-verify.sh +15 -2
  61. package/plugins/lisa-agy/plugin.json +1 -1
  62. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  63. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  64. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  65. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  67. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  68. package/plugins/lisa-copilot/hooks/block-no-verify.sh +15 -2
  69. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  70. package/plugins/lisa-cursor/hooks/block-no-verify.sh +15 -2
  71. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  72. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  73. package/plugins/lisa-expo-agy/plugin.json +1 -1
  74. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  75. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  76. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  77. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  78. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  79. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  80. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  81. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  82. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  83. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  84. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  85. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  86. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  87. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  88. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  89. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  90. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  91. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  92. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  93. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  94. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  95. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  96. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  97. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  98. package/plugins/lisa-rails-agy/plugin.json +1 -1
  99. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  100. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  101. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  102. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  103. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  104. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  105. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  106. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  107. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  108. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  109. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  110. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  111. package/plugins/src/base/hooks/block-no-verify.sh +15 -2
  112. package/rails/create-only/.github/workflows/claude-code-review-response.yml +2 -1
  113. package/rails/create-only/.github/workflows/claude-nightly-code-complexity.yml +2 -1
  114. package/rails/create-only/.github/workflows/claude-nightly-test-coverage.yml +2 -1
  115. package/rails/create-only/.github/workflows/claude-nightly-test-improvement.yml +2 -1
  116. package/rails/create-only/.github/workflows/claude-sync-down-branches.yml +2 -1
  117. package/rails/create-only/.github/workflows/deploy.yml +2 -1
  118. package/rails/create-only/.mutant.yml +3 -0
  119. package/rails/create-only/.reek.yml +3 -0
  120. package/rails/create-only/.rubocop_todo.yml +3 -0
  121. package/rails/create-only/mutation.gate.yml +3 -0
  122. package/rails/create-only/rubocop.thresholds.yml +3 -0
  123. package/rails/create-only/spec/rails_helper.rb +2 -0
  124. package/rails/create-only/spec/spec_helper.rb +2 -0
  125. package/scripts/generate-lisa-owned-hash-ledger.mjs +279 -0
  126. package/typescript/create-only/.github/workflows/auto-update-pr-branches-dispatch.yml +2 -1
  127. package/typescript/create-only/.github/workflows/auto-update-pr-branches.yml +2 -1
  128. package/typescript/create-only/.github/workflows/claude-ci-auto-fix.yml +2 -1
  129. package/typescript/create-only/.github/workflows/claude-code-review-response.yml +2 -1
  130. package/typescript/create-only/.github/workflows/claude-deploy-auto-fix.yml +2 -1
  131. package/typescript/create-only/.github/workflows/claude-nightly-code-complexity.yml +2 -1
  132. package/typescript/create-only/.github/workflows/claude-nightly-test-coverage.yml +2 -1
  133. package/typescript/create-only/.github/workflows/claude-nightly-test-improvement.yml +2 -1
  134. package/typescript/create-only/.github/workflows/claude-sync-down-branches.yml +2 -1
  135. package/typescript/create-only/.github/workflows/claude.yml +2 -1
  136. package/typescript/create-only/.github/workflows/required-checks-drift.yml +2 -1
  137. package/typescript/create-only/eslint.config.local.ts +3 -0
  138. package/typescript/create-only/jest.config.local.ts +3 -0
  139. package/typescript/create-only/vitest.config.local.ts +3 -0
@@ -5,9 +5,22 @@
5
5
  # check. See feedback_never_no_verify in user memory.
6
6
  #
7
7
  # Blocked bypass vectors:
8
- # 1. the --no-verify long flag (any subcommand, any position, incl. subshells);
8
+ # 1. --no-verify, and any prefix abbreviation git would accept for it;
9
9
  # 2. HUSKY=0 / HUSKY_SKIP_HOOKS=... — disables husky-managed git hooks;
10
- # 3. core.hooksPath pointed at /dev/null or set empty disables ALL git hooks.
10
+ # 3. core.hooksPath pointed anywhere but an allowlisted in-repo hooks dir;
11
+ # 4. --config-env=core.hooksPath=VAR, in both the one- and two-token spellings;
12
+ # 5. GIT_CONFIG_KEY_<n>=core.hooksPath env-var-style command-scope config.
13
+ #
14
+ # The line below is what lets `lisa apply` tell a downstream copy of this guard
15
+ # that is BEHIND from one that is AHEAD. Byte comparison cannot: both look like
16
+ # "differs from mine", and guessing "behind" is how a fork's stronger guard gets
17
+ # silently replaced by a weaker upstream one. Refresh compares the two declared
18
+ # sets, and refuses to overwrite a copy declaring anything this one does not.
19
+ #
20
+ # Add a name here in the same commit that closes a vector. A hardening that
21
+ # forgets to is invisible to refresh, and shows up as an unexplained diff at
22
+ # review time instead of a named capability.
23
+ # lisa-guard-capabilities: no-verify-abbrev, husky-env, hookspath-allowlist, config-env, git-config-key
11
24
  #
12
25
  # Shell-token matching avoids false positives from issue bodies, heredocs, and
13
26
  # commit-message prose while still catching quoted real argv values such as
@@ -1,4 +1,7 @@
1
1
  #!/usr/bin/env bash
2
+ # Seeded by Lisa on first setup — this file is YOURS.
3
+ # Lisa will not overwrite it. (copy-overwrite assets ARE replaced each run.)
4
+
2
5
  # Installed by Lisa. The authoritative implementation is shipped by the
3
6
  # lisa-setup-remote-aws skill and the @codyswann/lisa package.
4
7
 
@@ -1,4 +1,5 @@
1
- # This file is created by Lisa (create-only edit freely, Lisa won't overwrite it).
1
+ # Seeded by Lisa on first setup this file is YOURS.
2
+ # Lisa will not overwrite it. (copy-overwrite assets ARE replaced each run.)
2
3
 
3
4
  name: 🚀 Release and Deploy
4
5
 
@@ -1,3 +1,6 @@
1
+ // Seeded by Lisa on first setup — this file is YOURS.
2
+ // Lisa will not overwrite it. (copy-overwrite assets ARE replaced each run.)
3
+
1
4
  /**
2
5
  * Vitest Configuration - Project-Local Customizations
3
6
  *
@@ -1,3 +1,4 @@
1
+ import type { HashLedger } from "../core/lisa-owned-provenance.js";
1
2
  /** One doctor check result, structurally identical to `DoctorCheck`. */
2
3
  interface ArtifactCheck {
3
4
  name: string;
@@ -5,14 +6,22 @@ interface ArtifactCheck {
5
6
  detail: string;
6
7
  }
7
8
  /**
8
- * Report Lisa-owned enforcement artifacts the project has an outdated copy of.
9
+ * Report Lisa-owned enforcement artifacts that differ from what Lisa ships.
10
+ *
11
+ * Two different findings, deliberately not merged. An *outdated* copy is fixed
12
+ * by running apply. A *modified* copy is one apply will now refuse to touch, so
13
+ * telling the operator to run apply would send them round a loop that never
14
+ * terminates and make the protection look like a bug. Both still warn — a guard
15
+ * nobody can account for is worth a line either way, and staying silent about a
16
+ * downstream edit would let a project quietly swap a guard for a stub.
9
17
  *
10
18
  * Only artifacts the project already has are considered: a missing one means
11
19
  * the stack does not apply here, not that something drifted.
12
20
  * @param targetPath - Project path to inspect
13
21
  * @param lisaRoot - Installed Lisa package root (injected by tests)
22
+ * @param ledger - Known-good hashes, defaulting to Lisa's shipping history
14
23
  * @returns Doctor check result
15
24
  */
16
- export declare function checkLisaOwnedArtifacts(targetPath: string, lisaRoot?: string): Promise<ArtifactCheck>;
25
+ export declare function checkLisaOwnedArtifacts(targetPath: string, lisaRoot?: string, ledger?: HashLedger): Promise<ArtifactCheck>;
17
26
  export {};
18
27
  //# sourceMappingURL=doctor-lisa-owned-artifacts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor-lisa-owned-artifacts.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-lisa-owned-artifacts.ts"],"names":[],"mappings":"AA0CA,wEAAwE;AACxE,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAkHD;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,MAA0B,GACnC,OAAO,CAAC,aAAa,CAAC,CAiDxB"}
1
+ {"version":3,"file":"doctor-lisa-owned-artifacts.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-lisa-owned-artifacts.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAoBnE,wEAAwE;AACxE,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAkHD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,MAA0B,EACpC,MAAM,CAAC,EAAE,UAAU,GAClB,OAAO,CAAC,aAAa,CAAC,CA+CxB"}
@@ -20,6 +20,7 @@ import * as path from "node:path";
20
20
  import { fileURLToPath } from "node:url";
21
21
  import * as fse from "fs-extra";
22
22
  import { PROJECT_TYPE_ORDER } from "../core/config.js";
23
+ import { classifyHostCopy, mayRefreshLisaOwned, } from "../core/lisa-owned-provenance.js";
23
24
  import { isLisaOwnedTemplate } from "../core/lisa-owned-templates.js";
24
25
  import { isLisaSourceRepo } from "../core/self-apply.js";
25
26
  import { listFilesRecursive } from "../utils/file-operations.js";
@@ -112,15 +113,23 @@ function reExportsShippedTemplate(installed, installedPath, sources) {
112
113
  return [...installed.toString("utf8").matchAll(RELATIVE_SPECIFIER)].some(match => shipped.has(path.resolve(directory, match[1] ?? "")));
113
114
  }
114
115
  /**
115
- * Report Lisa-owned enforcement artifacts the project has an outdated copy of.
116
+ * Report Lisa-owned enforcement artifacts that differ from what Lisa ships.
117
+ *
118
+ * Two different findings, deliberately not merged. An *outdated* copy is fixed
119
+ * by running apply. A *modified* copy is one apply will now refuse to touch, so
120
+ * telling the operator to run apply would send them round a loop that never
121
+ * terminates and make the protection look like a bug. Both still warn — a guard
122
+ * nobody can account for is worth a line either way, and staying silent about a
123
+ * downstream edit would let a project quietly swap a guard for a stub.
116
124
  *
117
125
  * Only artifacts the project already has are considered: a missing one means
118
126
  * the stack does not apply here, not that something drifted.
119
127
  * @param targetPath - Project path to inspect
120
128
  * @param lisaRoot - Installed Lisa package root (injected by tests)
129
+ * @param ledger - Known-good hashes, defaulting to Lisa's shipping history
121
130
  * @returns Doctor check result
122
131
  */
123
- export async function checkLisaOwnedArtifacts(targetPath, lisaRoot = defaultLisaRoot()) {
132
+ export async function checkLisaOwnedArtifacts(targetPath, lisaRoot = defaultLisaRoot(), ledger) {
124
133
  const shipped = await shippedArtifacts(lisaRoot);
125
134
  if (shipped.size === 0) {
126
135
  return {
@@ -145,24 +154,60 @@ export async function checkLisaOwnedArtifacts(targetPath, lisaRoot = defaultLisa
145
154
  return undefined;
146
155
  if (await matchesAnyShipped(installed, sources))
147
156
  return undefined;
148
- return selfHost &&
149
- reExportsShippedTemplate(installed, installedPath, sources)
150
- ? undefined
151
- : destination;
157
+ if (selfHost &&
158
+ reExportsShippedTemplate(installed, installedPath, sources))
159
+ return undefined;
160
+ const outdated = await isProvablyStale(installed, destination, sources, ledger);
161
+ return [destination, outdated ? "stale" : "modified"];
152
162
  }));
153
- const stale = results
154
- .filter((item) => item !== undefined)
163
+ return summarise(results.filter((item) => item !== undefined));
164
+ }
165
+ /**
166
+ * Turn the per-artifact findings into one doctor line.
167
+ * @param findings - Destination paths paired with what was found
168
+ * @returns Doctor check result
169
+ */
170
+ function summarise(findings) {
171
+ const pick = (wanted) => findings
172
+ .filter(([, finding]) => finding === wanted)
173
+ .map(([destination]) => destination)
155
174
  .sort((left, right) => left.localeCompare(right));
156
- return stale.length === 0
157
- ? {
175
+ const stale = pick("stale");
176
+ const modified = pick("modified");
177
+ if (stale.length === 0 && modified.length === 0) {
178
+ return {
158
179
  name: CHECK_NAME,
159
180
  status: "ok",
160
181
  detail: "Enforcement guards match the installed Lisa version",
161
- }
162
- : {
163
- name: CHECK_NAME,
164
- status: "warn",
165
- detail: `Outdated Lisa-owned guards (run \`npx lisa apply .\` to refresh): ${stale.join(", ")}`,
166
182
  };
183
+ }
184
+ const parts = [
185
+ stale.length > 0
186
+ ? `Outdated Lisa-owned guards (run \`npx lisa apply .\` to refresh): ${stale.join(", ")}`
187
+ : "",
188
+ modified.length > 0
189
+ ? `Lisa-owned guards edited in this project, so apply will keep yours rather than overwrite them: ${modified.join(", ")}`
190
+ : "",
191
+ ].filter(part => part.length > 0);
192
+ return { name: CHECK_NAME, status: "warn", detail: parts.join(". ") };
193
+ }
194
+ /**
195
+ * Whether a differing installed guard is genuinely behind Lisa's.
196
+ *
197
+ * Doctor and apply have to agree, or the operator gets contradictory
198
+ * instructions: doctor telling somebody to run `lisa apply .` to fix a file
199
+ * apply will then deliberately refuse to touch is a loop with no exit, and it
200
+ * reads as a broken tool rather than as the protection it is. So a copy apply
201
+ * would preserve is not reported here either — it is not outdated, and calling
202
+ * it outdated invites the operator to discard their own hardening.
203
+ * @param installed - Bytes currently installed in the project
204
+ * @param destination - Repo-relative destination path
205
+ * @param sources - Absolute paths of the shipped variants
206
+ * @param ledger - Known-good hashes, defaulting to Lisa's shipping history
207
+ * @returns True when every shipped variant considers the installed copy stale
208
+ */
209
+ async function isProvablyStale(installed, destination, sources, ledger) {
210
+ const shipped = await Promise.all(sources.map(async (source) => readFile(source)));
211
+ return shipped.every(candidate => mayRefreshLisaOwned(classifyHostCopy(destination, installed, candidate, ledger)));
167
212
  }
168
213
  //# sourceMappingURL=doctor-lisa-owned-artifacts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor-lisa-owned-artifacts.js","sourceRoot":"","sources":["../../src/cli/doctor-lisa-owned-artifacts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor-lisa-owned-artifacts.js","sourceRoot":"","sources":["../../src/cli/doctor-lisa-owned-artifacts.ts"],"names":[],"mappings":"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"}
@@ -158,8 +158,26 @@ export interface FileOperationResult {
158
158
  * let template changes — including fixes to the enforcement guards —
159
159
  * go undelivered while the summary read exactly like a clean no-op.
160
160
  */
161
- | "stale" | "overwritten" | "appended" | "merged" | "created";
161
+ | "stale"
162
+ /**
163
+ * A Lisa-owned artifact whose installed copy could not be proved to be
164
+ * behind Lisa's, so it was preserved rather than overwritten.
165
+ *
166
+ * Emphatically not "stale" — that word says the file is out of date, and
167
+ * here the likeliest reason it differs is that it is *ahead*. Filing the two
168
+ * under one label would reproduce the original defect in the reporting: an
169
+ * operator reading "out of date" about a guard they deliberately hardened
170
+ * would fix the wrong thing.
171
+ */
172
+ | "host-ahead" | "overwritten" | "appended" | "merged" | "created";
162
173
  readonly linesAdded?: number;
174
+ /**
175
+ * Operator-readable explanation of a non-obvious outcome, shown verbatim.
176
+ *
177
+ * Carries the "why" for `host-ahead`, where the path alone tells an operator
178
+ * nothing actionable and the whole point is to say what would have been lost.
179
+ */
180
+ readonly note?: string;
163
181
  }
164
182
  /**
165
183
  * Counters for operation summary
@@ -169,6 +187,8 @@ export interface OperationCounters {
169
187
  skipped: number;
170
188
  /** Managed files left out of date because this apply could not overwrite them. */
171
189
  stale: number;
190
+ /** Lisa-owned artifacts preserved because the installed copy may be ahead. */
191
+ hostAhead: number;
172
192
  overwritten: number;
173
193
  appended: number;
174
194
  merged: number;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
@@ -139,6 +139,7 @@ export function createInitialCounters() {
139
139
  copied: 0,
140
140
  skipped: 0,
141
141
  stale: 0,
142
+ hostAhead: 0,
142
143
  overwritten: 0,
143
144
  appended: 0,
144
145
  merged: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * The capability marker a Lisa-owned guard uses to declare what it defends
3
+ * against, so refresh can compare two copies by *what they stop* rather than by
4
+ * bytes.
5
+ *
6
+ * A byte comparison answers "are these the same?" and nothing else. It cannot
7
+ * answer the only question refresh actually needs answered — "is the host's copy
8
+ * behind mine, or ahead of it?" — and guessing "behind" is how a host's stronger
9
+ * guard gets silently replaced by a weaker upstream one.
10
+ *
11
+ * The marker is one comment line in the guard's header:
12
+ *
13
+ * ```
14
+ * # lisa-guard-capabilities: no-verify-abbrev, hookspath-allowlist, config-env
15
+ * ```
16
+ *
17
+ * Deliberately a *set*, not a version number. A monotonic `lisa-guard-version: N`
18
+ * is easier to compare but lies the moment two hosts harden different vectors
19
+ * independently — which is exactly what happened: `propswapllc/frontend` closed
20
+ * the `GIT_CONFIG_KEY_<n>` bypass while `tunnl-infrastructure` closed a different
21
+ * one. Both would have bumped to the same number and one would have silently
22
+ * won. Two sets stay two sets, and set difference names precisely what each copy
23
+ * has that the other does not.
24
+ *
25
+ * Only the header window is scanned. A guard whose *body* greps for the marker
26
+ * string, or a test fixture that quotes one, must not be read as declaring it.
27
+ * @module core/guard-capabilities
28
+ */
29
+ /** A guard's declared capability set, normalised for comparison. */
30
+ export type CapabilitySet = ReadonlySet<string>;
31
+ /**
32
+ * Read the capabilities a guard's header declares.
33
+ *
34
+ * Absence is not an error and not a failure signal — it means the artifact has
35
+ * not been enrolled, and every caller treats that as "no declaration made"
36
+ * rather than "declares nothing dangerous". That is what lets the marker roll
37
+ * out one guard at a time with no flag day.
38
+ * Scanned line by line with plain string operations rather than a regular
39
+ * expression. A header is untrusted input — it arrives from whatever repository
40
+ * the "host" copy came from — and a linear scan cannot be made to backtrack.
41
+ * @param bytes - Full contents of the guard file
42
+ * @returns The declared capabilities, lower-cased and de-duplicated
43
+ */
44
+ export declare function readGuardCapabilities(bytes: Buffer): CapabilitySet;
45
+ /**
46
+ * The capabilities the host declares that Lisa's copy does not.
47
+ *
48
+ * A non-empty result is the whole signal: the host copy defends something
49
+ * upstream does not, so overwriting it removes protection. This is set
50
+ * *difference*, not a strict-superset test, on purpose — a host that hardened
51
+ * vector A while upstream hardened vector B is not a superset of upstream, yet
52
+ * overwriting it still deletes A. Asking only "is the host a superset?" would
53
+ * clobber precisely the divergent-hardening case the set representation exists
54
+ * to handle.
55
+ * @param host - Capabilities declared by the installed copy
56
+ * @param lisa - Capabilities declared by the packaged copy
57
+ * @returns Capabilities present on the host and absent upstream, sorted
58
+ */
59
+ export declare function capabilitiesOnlyOnHost(host: CapabilitySet, lisa: CapabilitySet): readonly string[];
60
+ //# sourceMappingURL=guard-capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard-capabilities.d.ts","sourceRoot":"","sources":["../../src/core/guard-capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAsBH,oEAAoE;AACpE,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAEhD;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAQlE;AAgBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,aAAa,GAClB,SAAS,MAAM,EAAE,CAInB"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * The capability marker a Lisa-owned guard uses to declare what it defends
3
+ * against, so refresh can compare two copies by *what they stop* rather than by
4
+ * bytes.
5
+ *
6
+ * A byte comparison answers "are these the same?" and nothing else. It cannot
7
+ * answer the only question refresh actually needs answered — "is the host's copy
8
+ * behind mine, or ahead of it?" — and guessing "behind" is how a host's stronger
9
+ * guard gets silently replaced by a weaker upstream one.
10
+ *
11
+ * The marker is one comment line in the guard's header:
12
+ *
13
+ * ```
14
+ * # lisa-guard-capabilities: no-verify-abbrev, hookspath-allowlist, config-env
15
+ * ```
16
+ *
17
+ * Deliberately a *set*, not a version number. A monotonic `lisa-guard-version: N`
18
+ * is easier to compare but lies the moment two hosts harden different vectors
19
+ * independently — which is exactly what happened: `propswapllc/frontend` closed
20
+ * the `GIT_CONFIG_KEY_<n>` bypass while `tunnl-infrastructure` closed a different
21
+ * one. Both would have bumped to the same number and one would have silently
22
+ * won. Two sets stay two sets, and set difference names precisely what each copy
23
+ * has that the other does not.
24
+ *
25
+ * Only the header window is scanned. A guard whose *body* greps for the marker
26
+ * string, or a test fixture that quotes one, must not be read as declaring it.
27
+ * @module core/guard-capabilities
28
+ */
29
+ /**
30
+ * How much of a file counts as its header.
31
+ *
32
+ * Generous enough for the long rationale comments Lisa's guards carry, small
33
+ * enough that the marker cannot be smuggled in from a file's body.
34
+ */
35
+ const HEADER_BYTES = 4096;
36
+ /** The token that introduces a declaration. */
37
+ const MARKER = "lisa-guard-capabilities:";
38
+ /**
39
+ * Characters allowed between the start of a line and the marker.
40
+ *
41
+ * Covers every comment syntax Lisa's owned artifacts use: `#` for shell, `//`
42
+ * and `*` for JS/TS. Requiring the marker to be preceded by nothing else is what
43
+ * makes it a declaration rather than a mention inside prose or a quoted string.
44
+ */
45
+ const COMMENT_PREFIX = new Set([" ", "\t", "#", "/", "*"]);
46
+ /**
47
+ * Read the capabilities a guard's header declares.
48
+ *
49
+ * Absence is not an error and not a failure signal — it means the artifact has
50
+ * not been enrolled, and every caller treats that as "no declaration made"
51
+ * rather than "declares nothing dangerous". That is what lets the marker roll
52
+ * out one guard at a time with no flag day.
53
+ * Scanned line by line with plain string operations rather than a regular
54
+ * expression. A header is untrusted input — it arrives from whatever repository
55
+ * the "host" copy came from — and a linear scan cannot be made to backtrack.
56
+ * @param bytes - Full contents of the guard file
57
+ * @returns The declared capabilities, lower-cased and de-duplicated
58
+ */
59
+ export function readGuardCapabilities(bytes) {
60
+ const header = bytes.subarray(0, HEADER_BYTES).toString("utf8");
61
+ const declared = header
62
+ .split("\n")
63
+ .flatMap(line => declarationOn(line))
64
+ .map(entry => entry.trim().toLowerCase())
65
+ .filter(entry => entry.length > 0);
66
+ return new Set(declared);
67
+ }
68
+ /**
69
+ * The capabilities one line declares, if it is a declaration at all.
70
+ * @param line - A single line from the header
71
+ * @returns Raw comma-separated entries, or nothing when the line declares none
72
+ */
73
+ function declarationOn(line) {
74
+ const at = line.indexOf(MARKER);
75
+ if (at === -1)
76
+ return [];
77
+ for (const character of line.slice(0, at)) {
78
+ if (!COMMENT_PREFIX.has(character))
79
+ return [];
80
+ }
81
+ return line.slice(at + MARKER.length).split(",");
82
+ }
83
+ /**
84
+ * The capabilities the host declares that Lisa's copy does not.
85
+ *
86
+ * A non-empty result is the whole signal: the host copy defends something
87
+ * upstream does not, so overwriting it removes protection. This is set
88
+ * *difference*, not a strict-superset test, on purpose — a host that hardened
89
+ * vector A while upstream hardened vector B is not a superset of upstream, yet
90
+ * overwriting it still deletes A. Asking only "is the host a superset?" would
91
+ * clobber precisely the divergent-hardening case the set representation exists
92
+ * to handle.
93
+ * @param host - Capabilities declared by the installed copy
94
+ * @param lisa - Capabilities declared by the packaged copy
95
+ * @returns Capabilities present on the host and absent upstream, sorted
96
+ */
97
+ export function capabilitiesOnlyOnHost(host, lisa) {
98
+ return [...host]
99
+ .filter(capability => !lisa.has(capability))
100
+ .sort((left, right) => left.localeCompare(right));
101
+ }
102
+ //# sourceMappingURL=guard-capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard-capabilities.js","sourceRoot":"","sources":["../../src/core/guard-capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH;;;;;GAKG;AACH,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B,+CAA+C;AAC/C,MAAM,MAAM,GAAG,0BAA0B,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAK3D;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,MAAM;SACpB,KAAK,CAAC,IAAI,CAAC;SACX,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SACpC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SACxC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC3B,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IACzB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,OAAO,EAAE,CAAC;IAChD,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAmB,EACnB,IAAmB;IAEnB,OAAO,CAAC,GAAG,IAAI,CAAC;SACb,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SAC3C,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,11 @@
1
+ /** Generated by scripts/generate-lisa-owned-hash-ledger.mjs. Do not edit. */
2
+ /**
3
+ * Every content hash Lisa has published at each Lisa-owned destination path.
4
+ *
5
+ * A host copy whose hash appears here is provably an older Lisa artifact and may
6
+ * be refreshed. One that appears nowhere here was edited downstream, and refresh
7
+ * refuses rather than risk deleting a stronger guard. See
8
+ * `src/core/lisa-owned-provenance.ts`.
9
+ */
10
+ export declare const LISA_OWNED_HASH_LEDGER: Readonly<Record<string, readonly string[]>>;
11
+ //# sourceMappingURL=lisa-owned-hash-ledger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lisa-owned-hash-ledger.d.ts","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAC3C,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAqHjC,CAAC"}
@@ -0,0 +1,127 @@
1
+ /** Generated by scripts/generate-lisa-owned-hash-ledger.mjs. Do not edit. */
2
+ /**
3
+ * Every content hash Lisa has published at each Lisa-owned destination path.
4
+ *
5
+ * A host copy whose hash appears here is provably an older Lisa artifact and may
6
+ * be refreshed. One that appears nowhere here was edited downstream, and refresh
7
+ * refuses rather than risk deleting a stronger guard. See
8
+ * `src/core/lisa-owned-provenance.ts`.
9
+ */
10
+ export const LISA_OWNED_HASH_LEDGER = Object.freeze({
11
+ "scripts/lisa-clean-git-env.sh": Object.freeze([
12
+ "d15af6f13eedbca41046070972380e69fc0af8f7d903aac12b8644389b9a0c91",
13
+ "e7121a0ee9e1bf7c01cd2ab55f563dd6d9ab75990739bb6ddf571a513efa10e9",
14
+ ]),
15
+ "scripts/lisa-command-envelope.mjs": Object.freeze([
16
+ "2011331056b1c86bd181649713a395dbfd2768f9fcd7e37b521d6ad2a9318ea9",
17
+ "4f76bb7d466eb153a4e1414d06f12856a1242de2cfa4cb4b1b942cf29d8b7f37",
18
+ "6b198f088cd3cd862d4357fbb069b1ad5d3afeb7be594f2bf1ff603b092a8354",
19
+ "e06cb11f1418fe94564cea527a22b039f53b7ab10c1cd182264a31e52bba9fa8",
20
+ ]),
21
+ "scripts/lisa-destructive-guard.mjs": Object.freeze([
22
+ "4fb431a3c58f443e303d613934d023d9e95ddae5c42710bb7009f7c080c82a64",
23
+ ]),
24
+ "scripts/lisa-enforcement-fallback.sh": Object.freeze([
25
+ "1bec5f3c284b3febdc471487ee6a23ffb72bd4e7b293f9e26b0188f32318c722",
26
+ "3049c2f1051c7c02dd60b62355964651e1565ebe6bdcb5e37634cd686cf1deb1",
27
+ "8dc942ac4edc2017d6b8277296c8f80542e7c024eef1bb65de609979d0ca9a0e",
28
+ "9cab71562d01421d57c6719318a4d03a6249a45c1aea434db3ff26e3065eeb66",
29
+ "d7d88e44763694bed5eae998cd3663922c957e49f9f9621d9201f0417a4128ad",
30
+ "e17c45f7cadf0fb55dd07270776caf211af99b7d4771a4fde75aafe5919e8dbe",
31
+ ]),
32
+ "scripts/lisa-floor-collisions.mjs": Object.freeze([
33
+ "2d11968f6852ab745cba939de03c6d6cb5f413975d2cfc8fc447bdd0b218e91a",
34
+ "3c7a0234b4f5609fce49e44711d2ec86af8cf7fb82b0831e4450e3347ecefe45",
35
+ "a612f172282d13ba9318fe5e03689d7c6ff42a0122d0c9d5d39051e1967b93dc",
36
+ ]),
37
+ "scripts/lisa-hooks/block-direct-issue-create.sh": Object.freeze([
38
+ "22184f1dd1b96e818741bd4ae659446299535d7ce594817155edebac4172a7ba",
39
+ "60a4f94ec671b2372f7492680ab327d97aff686588ce85791f54e0fbd098b0ca",
40
+ "73e94b73830d8961026947d99bf4ac5f959b5bca025203b913d8a6363cbe2b9f",
41
+ "847dfca48823a495fc3de47dfdb4b26e49d6808c6570c46d024a99793df1d370",
42
+ ]),
43
+ "scripts/lisa-hooks/block-instruction-file-edits.sh": Object.freeze([
44
+ "6f52076e3488821d638b6dd45b5faca527d92b181cc12e6e5033859e0786c8a7",
45
+ "850cfc23852eb752114ae1e938a1c7bcf34bc50c85d3aaca0c02311cc8c0ef70",
46
+ "8996e0bcbf1db085a5d99734e797c91f5025997bd967bc374efff8348dac14c2",
47
+ "be1e77fb0ddb246eddae71ebac25e972c3c9e8079514e0dc78d0b73df919464c",
48
+ "d47314b66d6ce85f77d6e058f861eede4462b2b0a33d54e82ff1c931167ec3f7",
49
+ ]),
50
+ "scripts/lisa-hooks/block-no-verify.sh": Object.freeze([
51
+ "031ef7a53fc49cb18665105b834b7b50ad6a43317e0821949809e877e0562ce4",
52
+ "18b7bb8867c5e6f719a9c503a38525f4c05e3d611717c3e1a503cf58dfb2832f",
53
+ "2df476aacebcb2544a12f459a0092e88eb28c0d00e45fd7ed909c75dfe441027",
54
+ "33e2bd341eb992036059b0c4606db35a218adcfeca7e44d174fedf8ebdff29d2",
55
+ "3b93a0affab6413e3c14a6f43de5acb586286ed1819ece0a66b30429b4d00490",
56
+ "3ff7255f395a9552366faaac34d383f4c95fecfb39882cd1d57854356422fe61",
57
+ "7790a560850c9d38709dbaccdaa10733e632c1bd4d975cbec7e3cc5a8650b36a",
58
+ "a6ed91576efebb6ba40cfa4e9d8a3e8566314909210ae8d5860be62a3feb4cff",
59
+ "aa95a84f9f9224914947a09b858535aa8bd052199ff64cb53768cf78fb69b687",
60
+ "b9f299cb9d3ad75b71296376ae2c40eb207a3b2706dafdaa41fc586050a53aad",
61
+ "dd1aea1b9fdd0da023bf704b331b350bc14620f4364afa5001c6690fcbc940cc",
62
+ "e3407d63eae16662923d46b75b6a41e7ca7ab206b428ea2cbb0b4fee226f6516",
63
+ ]),
64
+ "scripts/lisa-hooks/block-shell-json-parsing.sh": Object.freeze([
65
+ "1934a15e154fda3c2a40979a5cd6225661b14fe7bc77328a69ce499bea85dba7",
66
+ "3b5f074f3ab5708030af507eea962389f3b067c5dbdc76580bd9e44d3ac6c603",
67
+ "90601e31603c440d8f19d213d63bfef8d18596c60f88cb6e28c93d12453c5c0c",
68
+ ]),
69
+ "scripts/lisa-hooks/parity-safety-net.sh": Object.freeze([
70
+ "062c69eea85157f1e941ec3626d8912aa9f182af6ccdbe19687588a6074db5ce",
71
+ "07002535de10d89f6d73e8922517550a02a8974549aaf200c9c314e6f4f83c70",
72
+ "1162ffd16cef3b23282d2f5207abcb88429462a74a9df1035f0df4968f6dd456",
73
+ "14fc5e292aebf83dd24fec12fb32e2beb509a9324f127a24a64d5c5d4d05c576",
74
+ "1bf3512bb94923a6cb25b1e7a619a3fc8e1336bffa16f499b459aaee3eaed66d",
75
+ "388cf8847581d96a1ff8ea98290a33a5f96d67cdd502ea807a0b8d88efe90e19",
76
+ "64546813f168fb446f39e34bc674fd3af85b15bd5e7f4f6bf4503463e701a7b9",
77
+ "772202ddd42d626625ff719666afbbe83445d8bae1bc7c0fb5ffdcb402be83f8",
78
+ "7f55986eb29f8ace8616595da4bbe60d80a96f9f29b24fb72efd66bb96b22464",
79
+ "8e19d5f1ba7abe3d22fbee47ff8e0fad76b965ccca20b8849e3c43ab07d9a4ef",
80
+ "a22fd1b7c483f1a538202353ee85c82be17a8910e03c0a930635ce8cb3595c64",
81
+ "b83c5043a0f29b2d8851258acfe6906aab7922cd80f486e25220e55f26a8c0a5",
82
+ "caea02a07027fc1c74d47e08b36299d369c5c9f7c4043da8828fbca3c64eb2aa",
83
+ "d12583803e8ff5e4b64e68eafc8d3c377af4c400d8b7ecd1c7fe699d8f92784a",
84
+ "d9ea58150aa27e7f0aa9a4ef155ed446d30bdfc932d01c64e2b8ca211aa0de7b",
85
+ "f740f600b255742a50f28e5c9d09427c5783c4084e84052dca46bc1f0c94a187",
86
+ "fa8f4a6517eacd9266feb7afd62398cdf2075d4824cac24b45bb64ad0cd18c86",
87
+ ]),
88
+ "scripts/lisa-hooks/sonar-secrets.sh": Object.freeze([
89
+ "7a408788975a6351d53e14aa32bb9a5d161f33df9dfea59ba32784ae33a62e67",
90
+ "945453fb275a58aa7185e150e6b05e5810739750928ab5bd6edfbf87d1c8aa0d",
91
+ "bf4132e49ba18e2f7e941520c299c15aeeacfd220e489f3d2eb8397f2048157b",
92
+ ]),
93
+ "scripts/lisa-mutation.mjs": Object.freeze([
94
+ "7d8d24dea151ef2178807046e97aea7ebfadd9c88eb50347feb7bb4bb190227d",
95
+ "8e0bdb491dfaea04e88be1c1e2c6cc7cd34fa4ca18adddf5fecc43d7de8ffded",
96
+ "a630bde6cddae283776b8d34763a3642edbea8096d583a90ec6d43a9588ca8a6",
97
+ ]),
98
+ "scripts/lisa-schema-validate.mjs": Object.freeze([
99
+ "2ace82daacdebbbb00a7eceb09fbe82cabec04330a083ca10417b2ee4e0a63eb",
100
+ "4a05a0ed70a274827fd2f0fd0c98890c66bee2fde70785b8379943ebe6650473",
101
+ "9dd145c0f9dac6ed252b13d32e130dbab964da6cd357981b58541780ecb2f981",
102
+ ]),
103
+ "scripts/lisa-work-item.mjs": Object.freeze([
104
+ "238dc2da29938edd92518c2b08192d14c6f2751ed175c07d6e882814829b7b7e",
105
+ "2d9ca0841db9e75ddfd95e3a4d485fd01aa639a512ef648996f565b7991d8e2b",
106
+ "4c263fef48c03b3b6c623ea8a6cd55505bfaf28197e5072226ea35f9f3d26885",
107
+ "5eb31c284e820a51312d4484f0669128007326af55ee515923fec33700d003a1",
108
+ "6a8be8577242588f14ab52b25b2a22b6def53aefa9513b4d3d7c49f4d8027079",
109
+ "9223856be4618fb1e3e731b259ae5bf5328decc322f0b4a0d0fd18d6b12cd45a",
110
+ "96a87c131606b3edd43e52485e68f8ffbf5c528cb4beb7a1185263519a9632ce",
111
+ "ab0dede91c5c8a07984ae13aa48ec70cdcd2fa691b59617bc4b57998dc79a51c",
112
+ "c78df9d5f0f3fc388ff60a7db5898478a2a4d6d7325833f10384b5a8c62bb34a",
113
+ "e30016a49deff1c3cd3ae7951262aeb2ef3d472bce76bbbe2a177db6017c7cad",
114
+ "e41e9534988ce69a836664437a78f3a3f3dc7ebbe396c86cdab0ea63fb7c19da",
115
+ "f12006df4ed9974f65d955718af7dcc8a079799d02c58bd38b2d9c49f271db72",
116
+ "f88f69d44693084428f44e3f2b80afecda08c7ee8747588f40277fdc9396fd8f",
117
+ "fc0d92739e620d8fd70f7aa4a12d3e0b3a8f790d47c4a8322040f32c30b9445a",
118
+ "fe064a2bd11200ed256fb36e203978f858fccbcaf40708496c066383345900ef",
119
+ ]),
120
+ "scripts/schemas/lisa-command-envelope.v1.schema.json": Object.freeze([
121
+ "d153b7c2953a30f180e38f09e98240c63327f5196eeba9bdf545e5a1f125a879",
122
+ ]),
123
+ "scripts/schemas/lisa-state-contract.v1.schema.json": Object.freeze([
124
+ "6b7afe4ffeba8aaa53871d8855172f7eacde05953b1321145218ec638ff5c1c4",
125
+ ]),
126
+ });
127
+ //# sourceMappingURL=lisa-owned-hash-ledger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lisa-owned-hash-ledger.js","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAE/B,MAAM,CAAC,MAAM,CAAC;IAChB,+BAA+B,EAAE,MAAM,CAAC,MAAM,CAAC;QAC7C,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,mCAAmC,EAAE,MAAM,CAAC,MAAM,CAAC;QACjD,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,oCAAoC,EAAE,MAAM,CAAC,MAAM,CAAC;QAClD,kEAAkE;KACnE,CAAC;IACF,sCAAsC,EAAE,MAAM,CAAC,MAAM,CAAC;QACpD,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,mCAAmC,EAAE,MAAM,CAAC,MAAM,CAAC;QACjD,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,iDAAiD,EAAE,MAAM,CAAC,MAAM,CAAC;QAC/D,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,oDAAoD,EAAE,MAAM,CAAC,MAAM,CAAC;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,uCAAuC,EAAE,MAAM,CAAC,MAAM,CAAC;QACrD,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,gDAAgD,EAAE,MAAM,CAAC,MAAM,CAAC;QAC9D,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,yCAAyC,EAAE,MAAM,CAAC,MAAM,CAAC;QACvD,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,qCAAqC,EAAE,MAAM,CAAC,MAAM,CAAC;QACnD,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,2BAA2B,EAAE,MAAM,CAAC,MAAM,CAAC;QACzC,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,kCAAkC,EAAE,MAAM,CAAC,MAAM,CAAC;QAChD,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,4BAA4B,EAAE,MAAM,CAAC,MAAM,CAAC;QAC1C,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,sDAAsD,EAAE,MAAM,CAAC,MAAM,CAAC;QACpE,kEAAkE;KACnE,CAAC;IACF,oDAAoD,EAAE,MAAM,CAAC,MAAM,CAAC;QAClE,kEAAkE;KACnE,CAAC;CACH,CAAC,CAAC"}