@codyswann/lisa 3.26.1 → 3.26.2

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 (151) hide show
  1. package/all/copy-overwrite/scripts/check-state-classification.mjs +31 -0
  2. package/all/copy-overwrite/scripts/lisa-gates.mjs +10 -1
  3. package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
  4. package/dist/core/lisa-owned-hash-ledger.js +3 -0
  5. package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
  6. package/dist/core/upstream-evidence-manifest.js +21 -21
  7. package/package.json +1 -1
  8. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  9. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  10. package/plugins/lisa/.codex-plugin/skills/lisa-atlassian-access/scripts/markdown-to-adf.mjs +23 -1
  11. package/plugins/lisa/.codex-plugin/skills/lisa-detect-tooling/scripts/detect-tooling.mjs +31 -2
  12. package/plugins/lisa/.codex-plugin/skills/lisa-remote-dispatch/scripts/dispatch.mjs +30 -2
  13. package/plugins/lisa/.codex-plugin/skills/lisa-secrets-access/scripts/doctor-secrets.mjs +25 -1
  14. package/plugins/lisa/.codex-plugin/skills/lisa-secrets-access/scripts/inspect-vault.mjs +23 -1
  15. package/plugins/lisa/.codex-plugin/skills/lisa-secrets-access/scripts/materialize-secrets.mjs +24 -1
  16. package/plugins/lisa/.codex-plugin/skills/lisa-secrets-access/scripts/read-secret-note.mjs +25 -2
  17. package/plugins/lisa/.codex-plugin/skills/lisa-secrets-access/scripts/resolve-secret.mjs +25 -2
  18. package/plugins/lisa/.codex-plugin/skills/lisa-secrets-access/scripts/rotate-secret.mjs +25 -2
  19. package/plugins/lisa/.codex-plugin/skills/lisa-secrets-access/scripts/sync-secret-to-ci.mjs +25 -1
  20. package/plugins/lisa/.codex-plugin/skills/lisa-secrets-access/scripts/validate-config.mjs +25 -2
  21. package/plugins/lisa/.codex-plugin/skills/lisa-setup-automations/scripts/generate-workflow.mjs +31 -2
  22. package/plugins/lisa/.codex-plugin/skills/lisa-setup-local-env/scripts/local-env.mjs +24 -2
  23. package/plugins/lisa/.codex-plugin/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +23 -1
  24. package/plugins/lisa/.codex-plugin/skills/lisa-setup-remote-env/scripts/verify-remote-env.mjs +25 -2
  25. package/plugins/lisa/skills/lisa-atlassian-access/scripts/markdown-to-adf.mjs +23 -1
  26. package/plugins/lisa/skills/lisa-detect-tooling/scripts/detect-tooling.mjs +31 -2
  27. package/plugins/lisa/skills/lisa-remote-dispatch/scripts/dispatch.mjs +30 -2
  28. package/plugins/lisa/skills/lisa-secrets-access/scripts/doctor-secrets.mjs +25 -1
  29. package/plugins/lisa/skills/lisa-secrets-access/scripts/inspect-vault.mjs +23 -1
  30. package/plugins/lisa/skills/lisa-secrets-access/scripts/materialize-secrets.mjs +24 -1
  31. package/plugins/lisa/skills/lisa-secrets-access/scripts/read-secret-note.mjs +25 -2
  32. package/plugins/lisa/skills/lisa-secrets-access/scripts/resolve-secret.mjs +25 -2
  33. package/plugins/lisa/skills/lisa-secrets-access/scripts/rotate-secret.mjs +25 -2
  34. package/plugins/lisa/skills/lisa-secrets-access/scripts/sync-secret-to-ci.mjs +25 -1
  35. package/plugins/lisa/skills/lisa-secrets-access/scripts/validate-config.mjs +25 -2
  36. package/plugins/lisa/skills/lisa-setup-automations/scripts/generate-workflow.mjs +31 -2
  37. package/plugins/lisa/skills/lisa-setup-local-env/scripts/local-env.mjs +24 -2
  38. package/plugins/lisa/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +23 -1
  39. package/plugins/lisa/skills/lisa-setup-remote-env/scripts/verify-remote-env.mjs +25 -2
  40. package/plugins/lisa-agy/plugin.json +1 -1
  41. package/plugins/lisa-agy/skills/lisa-atlassian-access/scripts/markdown-to-adf.mjs +23 -1
  42. package/plugins/lisa-agy/skills/lisa-detect-tooling/scripts/detect-tooling.mjs +31 -2
  43. package/plugins/lisa-agy/skills/lisa-remote-dispatch/scripts/dispatch.mjs +30 -2
  44. package/plugins/lisa-agy/skills/lisa-secrets-access/scripts/doctor-secrets.mjs +25 -1
  45. package/plugins/lisa-agy/skills/lisa-secrets-access/scripts/inspect-vault.mjs +23 -1
  46. package/plugins/lisa-agy/skills/lisa-secrets-access/scripts/materialize-secrets.mjs +24 -1
  47. package/plugins/lisa-agy/skills/lisa-secrets-access/scripts/read-secret-note.mjs +25 -2
  48. package/plugins/lisa-agy/skills/lisa-secrets-access/scripts/resolve-secret.mjs +25 -2
  49. package/plugins/lisa-agy/skills/lisa-secrets-access/scripts/rotate-secret.mjs +25 -2
  50. package/plugins/lisa-agy/skills/lisa-secrets-access/scripts/sync-secret-to-ci.mjs +25 -1
  51. package/plugins/lisa-agy/skills/lisa-secrets-access/scripts/validate-config.mjs +25 -2
  52. package/plugins/lisa-agy/skills/lisa-setup-automations/scripts/generate-workflow.mjs +31 -2
  53. package/plugins/lisa-agy/skills/lisa-setup-local-env/scripts/local-env.mjs +24 -2
  54. package/plugins/lisa-agy/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +23 -1
  55. package/plugins/lisa-agy/skills/lisa-setup-remote-env/scripts/verify-remote-env.mjs +25 -2
  56. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  58. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  59. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  60. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-copilot/skills/lisa-atlassian-access/scripts/markdown-to-adf.mjs +23 -1
  63. package/plugins/lisa-copilot/skills/lisa-detect-tooling/scripts/detect-tooling.mjs +31 -2
  64. package/plugins/lisa-copilot/skills/lisa-remote-dispatch/scripts/dispatch.mjs +30 -2
  65. package/plugins/lisa-copilot/skills/lisa-secrets-access/scripts/doctor-secrets.mjs +25 -1
  66. package/plugins/lisa-copilot/skills/lisa-secrets-access/scripts/inspect-vault.mjs +23 -1
  67. package/plugins/lisa-copilot/skills/lisa-secrets-access/scripts/materialize-secrets.mjs +24 -1
  68. package/plugins/lisa-copilot/skills/lisa-secrets-access/scripts/read-secret-note.mjs +25 -2
  69. package/plugins/lisa-copilot/skills/lisa-secrets-access/scripts/resolve-secret.mjs +25 -2
  70. package/plugins/lisa-copilot/skills/lisa-secrets-access/scripts/rotate-secret.mjs +25 -2
  71. package/plugins/lisa-copilot/skills/lisa-secrets-access/scripts/sync-secret-to-ci.mjs +25 -1
  72. package/plugins/lisa-copilot/skills/lisa-secrets-access/scripts/validate-config.mjs +25 -2
  73. package/plugins/lisa-copilot/skills/lisa-setup-automations/scripts/generate-workflow.mjs +31 -2
  74. package/plugins/lisa-copilot/skills/lisa-setup-local-env/scripts/local-env.mjs +24 -2
  75. package/plugins/lisa-copilot/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +23 -1
  76. package/plugins/lisa-copilot/skills/lisa-setup-remote-env/scripts/verify-remote-env.mjs +25 -2
  77. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  78. package/plugins/lisa-cursor/skills/lisa-atlassian-access/scripts/markdown-to-adf.mjs +23 -1
  79. package/plugins/lisa-cursor/skills/lisa-detect-tooling/scripts/detect-tooling.mjs +31 -2
  80. package/plugins/lisa-cursor/skills/lisa-remote-dispatch/scripts/dispatch.mjs +30 -2
  81. package/plugins/lisa-cursor/skills/lisa-secrets-access/scripts/doctor-secrets.mjs +25 -1
  82. package/plugins/lisa-cursor/skills/lisa-secrets-access/scripts/inspect-vault.mjs +23 -1
  83. package/plugins/lisa-cursor/skills/lisa-secrets-access/scripts/materialize-secrets.mjs +24 -1
  84. package/plugins/lisa-cursor/skills/lisa-secrets-access/scripts/read-secret-note.mjs +25 -2
  85. package/plugins/lisa-cursor/skills/lisa-secrets-access/scripts/resolve-secret.mjs +25 -2
  86. package/plugins/lisa-cursor/skills/lisa-secrets-access/scripts/rotate-secret.mjs +25 -2
  87. package/plugins/lisa-cursor/skills/lisa-secrets-access/scripts/sync-secret-to-ci.mjs +25 -1
  88. package/plugins/lisa-cursor/skills/lisa-secrets-access/scripts/validate-config.mjs +25 -2
  89. package/plugins/lisa-cursor/skills/lisa-setup-automations/scripts/generate-workflow.mjs +31 -2
  90. package/plugins/lisa-cursor/skills/lisa-setup-local-env/scripts/local-env.mjs +24 -2
  91. package/plugins/lisa-cursor/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +23 -1
  92. package/plugins/lisa-cursor/skills/lisa-setup-remote-env/scripts/verify-remote-env.mjs +25 -2
  93. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  94. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  95. package/plugins/lisa-expo-agy/plugin.json +1 -1
  96. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  97. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  98. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  99. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  100. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  101. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  102. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  103. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  104. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  105. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  106. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  107. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  108. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  109. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  110. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  111. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  112. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  113. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  114. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  115. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  116. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  117. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  118. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  119. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  120. package/plugins/lisa-rails-agy/plugin.json +1 -1
  121. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  122. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  123. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  124. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  125. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  126. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  127. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  128. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  129. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  130. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  131. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  132. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  133. package/plugins/src/base/skills/lisa-atlassian-access/scripts/markdown-to-adf.mjs +23 -1
  134. package/plugins/src/base/skills/lisa-detect-tooling/scripts/detect-tooling.mjs +31 -2
  135. package/plugins/src/base/skills/lisa-remote-dispatch/scripts/dispatch.mjs +30 -2
  136. package/plugins/src/base/skills/lisa-secrets-access/scripts/doctor-secrets.mjs +25 -1
  137. package/plugins/src/base/skills/lisa-secrets-access/scripts/inspect-vault.mjs +23 -1
  138. package/plugins/src/base/skills/lisa-secrets-access/scripts/materialize-secrets.mjs +24 -1
  139. package/plugins/src/base/skills/lisa-secrets-access/scripts/read-secret-note.mjs +25 -2
  140. package/plugins/src/base/skills/lisa-secrets-access/scripts/resolve-secret.mjs +25 -2
  141. package/plugins/src/base/skills/lisa-secrets-access/scripts/rotate-secret.mjs +25 -2
  142. package/plugins/src/base/skills/lisa-secrets-access/scripts/sync-secret-to-ci.mjs +25 -1
  143. package/plugins/src/base/skills/lisa-secrets-access/scripts/validate-config.mjs +25 -2
  144. package/plugins/src/base/skills/lisa-setup-automations/scripts/generate-workflow.mjs +31 -2
  145. package/plugins/src/base/skills/lisa-setup-local-env/scripts/local-env.mjs +24 -2
  146. package/plugins/src/base/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +23 -1
  147. package/plugins/src/base/skills/lisa-setup-remote-env/scripts/verify-remote-env.mjs +25 -2
  148. package/scripts/generate-agy-plugin-artifacts.mjs +2 -1
  149. package/scripts/generate-copilot-plugin-artifacts.mjs +2 -1
  150. package/scripts/generate-cursor-plugin-artifacts.mjs +2 -1
  151. package/typescript/copy-overwrite/scripts/check-skipped-required-checks.mjs +14 -3
@@ -560,6 +560,37 @@ export function run(options = {}) {
560
560
  };
561
561
  }
562
562
 
563
+ // Parsed is not the same as shaped. `readJsonFile` proves only that the bytes
564
+ // were JSON, and `compareInventory` reads `inventory.entities` — so `null`
565
+ // throws a TypeError on property access and the CLI dies with a stack trace
566
+ // instead of emitting an `invalid` envelope, while an array or a string
567
+ // silently yields zero entities and every declared entity reads as
568
+ // unconfirmed. A wrong-shaped inventory must be reported as invalid, not
569
+ // mistaken for an empty one.
570
+ const inventoryValue = inventoryRead.value;
571
+ if (
572
+ inventoryValue === null ||
573
+ typeof inventoryValue !== "object" ||
574
+ Array.isArray(inventoryValue) ||
575
+ !Array.isArray(inventoryValue.entities)
576
+ ) {
577
+ return {
578
+ findings: [
579
+ {
580
+ code: "invalid-inventory",
581
+ subject: path.relative(root, inventoryPath),
582
+ message:
583
+ "parsed as JSON but is not an inventory: expected an object with an `entities` array. Regenerate it with the project's `state:inventory` adapter.",
584
+ severity: "error",
585
+ },
586
+ ],
587
+ envelope: envelopeFor("invalid", {
588
+ contractVersion: contract.contractVersion,
589
+ reason: `runtime inventory at ${path.relative(root, inventoryPath)} parsed but has the wrong shape — an inventory that cannot be read is not an empty inventory.`,
590
+ }),
591
+ };
592
+ }
593
+
563
594
  const verdict = compareInventory({
564
595
  contract,
565
596
  inventory: inventoryRead.value,
@@ -63,6 +63,8 @@
63
63
  import { existsSync, readFileSync } from "node:fs";
64
64
  import { join } from "node:path";
65
65
 
66
+ import { invokedAsScript } from "./lib/invoked-as-script.mjs";
67
+
66
68
  /** Enforcement levels a moment may carry. */
67
69
  export const LEVELS = ["required", "optional", "off"];
68
70
 
@@ -1307,7 +1309,14 @@ function main() {
1307
1309
  );
1308
1310
  }
1309
1311
 
1310
- if (import.meta.url === `file://${process.argv[1]}`) {
1312
+ // Realpath both sides rather than comparing URL strings. A raw comparison
1313
+ // answers "no" through a symlinked checkout, a git worktree, or a /tmp path on
1314
+ // macOS — all three of which this fleet runs in — so the module would load, run
1315
+ // nothing, and exit 0. For THIS file that is the worst possible silence: the
1316
+ // quality workflow pipes its output into a resolver that reads empty input as
1317
+ // `[]`, reports `configured=false` for every job, and runs the fallback. The
1318
+ // whole gate registry would be bypassed with nothing reporting it.
1319
+ if (invokedAsScript(import.meta.url)) {
1311
1320
  try {
1312
1321
  main();
1313
1322
  } catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"lisa-owned-hash-ledger.d.ts","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"AACA,6EAA6E;AAE7E;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAC3C,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CA6UjC,CAAC"}
1
+ {"version":3,"file":"lisa-owned-hash-ledger.d.ts","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"AACA,6EAA6E;AAE7E;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAC3C,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAgVjC,CAAC"}
@@ -111,6 +111,7 @@ export const LISA_OWNED_HASH_LEDGER = Object.freeze({
111
111
  "scripts/check-skipped-required-checks.mjs": Object.freeze([
112
112
  "0a8b14790f38e00e5abfc665d3e3d2c29e0a139a2a22c4a65e0c08547b42fb7f",
113
113
  "1bcd3f065465731df4eb02b93b73a0162d287e365ed1a396138d97d71d403b31",
114
+ "444210c8fbfca1d3e6ae0e180fe95752e10152610ad349ffea377136f4ae8cf7",
114
115
  "48d3fa3043e144bcf52feb0e20db887d75c7ebda3b1fa708fe93f6554f6bec78",
115
116
  "5af5f112ba258c4874a65c72c8bed12165e75e4df407265eb46ee9c89c4e0e53",
116
117
  "86de31fbda9dd26a938bf30846c5fc70744cf199df7d475a35f3f25dbc0f7c2f",
@@ -120,6 +121,7 @@ export const LISA_OWNED_HASH_LEDGER = Object.freeze({
120
121
  ]),
121
122
  "scripts/check-state-classification.mjs": Object.freeze([
122
123
  "94dc98e0bbfcf8d43cba035d4805a1c5d61a3a0db88faa791e8e06e34e741f46",
124
+ "96599f9cf25d7d96afc82a92c477ca851e3fa1f918a06a5b81a29dd1b0039f38",
123
125
  "ac539349c86a7b5b0083ec0e6aaf0eb4c3e40fbd4dc31511c6460a2bad7af9a5",
124
126
  "b218927f64a3db4f37762b60014e29d85a46899f4a0d17fcecc7782ce48bc499",
125
127
  ]),
@@ -193,6 +195,7 @@ export const LISA_OWNED_HASH_LEDGER = Object.freeze({
193
195
  "79b646d543b541c096d79526fa09dbda3408667ba1a99ee833f94668b181433b",
194
196
  "7d89a49da89895a3e377702d0049e1dbcc7ea666dcfa3749874f0986db31ee1a",
195
197
  "9195c267d98f2fa8071fc0bd2d5623a7ab82f82d136bdb23061f89a2c1db6efe",
198
+ "98652623c7451d05e48239e1678ad7977a323eaf7ff5ca4b4f3bbc0798396859",
196
199
  "bba52f26e70e0dc399a8ed8ea9cbd3885a18f08401b28bd18871a1af4fbca375",
197
200
  "cc4270e365f53c60a5eefb58a8ac8e22be184c0821fcdcc8fe67bcfc1df5e3dd",
198
201
  "dbca450e5a17133841ab015e71808feb028996f8297fda362dbeca4f07af2352",
@@ -1 +1 @@
1
- {"version":3,"file":"lisa-owned-hash-ledger.js","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,6EAA6E;AAE7E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAE/B,MAAM,CAAC,MAAM,CAAC;IAChB,wBAAwB,EAAE,MAAM,CAAC,MAAM,CAAC;QACtC,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,0BAA0B,EAAE,MAAM,CAAC,MAAM,CAAC;QACxC,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,0BAA0B,EAAE,MAAM,CAAC,MAAM,CAAC;QACxC,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,0BAA0B,EAAE,MAAM,CAAC,MAAM,CAAC;QACxC,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,0BAA0B,EAAE,MAAM,CAAC,MAAM,CAAC;QACxC,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,+BAA+B,EAAE,MAAM,CAAC,MAAM,CAAC;QAC7C,kEAAkE;KACnE,CAAC;IACF,uBAAuB,EAAE,MAAM,CAAC,MAAM,CAAC;QACrC,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,wBAAwB,EAAE,MAAM,CAAC,MAAM,CAAC;QACtC,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,wBAAwB,EAAE,MAAM,CAAC,MAAM,CAAC;QACtC,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,0BAA0B,EAAE,MAAM,CAAC,MAAM,CAAC;QACxC,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,yBAAyB,EAAE,MAAM,CAAC,MAAM,CAAC;QACvC,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,gCAAgC,EAAE,MAAM,CAAC,MAAM,CAAC;QAC9C,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,gCAAgC,EAAE,MAAM,CAAC,MAAM,CAAC;QAC9C,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,sCAAsC,EAAE,MAAM,CAAC,MAAM,CAAC;QACpD,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,2CAA2C,EAAE,MAAM,CAAC,MAAM,CAAC;QACzD,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,wCAAwC,EAAE,MAAM,CAAC,MAAM,CAAC;QACtD,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,qCAAqC,EAAE,MAAM,CAAC,MAAM,CAAC;QACnD,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,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;KACnE,CAAC;IACF,uCAAuC,EAAE,MAAM,CAAC,MAAM,CAAC;QACrD,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,mCAAmC,EAAE,MAAM,CAAC,MAAM,CAAC;QACjD,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,+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;QAClE,kEAAkE;KACnE,CAAC;IACF,oCAAoC,EAAE,MAAM,CAAC,MAAM,CAAC;QAClD,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,sCAAsC,EAAE,MAAM,CAAC,MAAM,CAAC;QACpD,kEAAkE;QAClE,kEAAkE;QAClE,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,wBAAwB,EAAE,MAAM,CAAC,MAAM,CAAC;QACtC,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,iDAAiD,EAAE,MAAM,CAAC,MAAM,CAAC;QAC/D,kEAAkE;QAClE,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;QAClE,kEAAkE;KACnE,CAAC;IACF,gDAAgD,EAAE,MAAM,CAAC,MAAM,CAAC;QAC9D,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;QAClE,kEAAkE;KACnE,CAAC;IACF,gDAAgD,EAAE,MAAM,CAAC,MAAM,CAAC;QAC9D,kEAAkE;QAClE,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;QAClE,kEAAkE;KACnE,CAAC;IACF,qCAAqC,EAAE,MAAM,CAAC,MAAM,CAAC;QACnD,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,2BAA2B,EAAE,MAAM,CAAC,MAAM,CAAC;QACzC,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,mCAAmC,EAAE,MAAM,CAAC,MAAM,CAAC;QACjD,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;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;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;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,wCAAwC,EAAE,MAAM,CAAC,MAAM,CAAC;QACtD,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;IACF,uCAAuC,EAAE,MAAM,CAAC,MAAM,CAAC;QACrD,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;IACF,wCAAwC,EAAE,MAAM,CAAC,MAAM,CAAC;QACtD,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;KACnE,CAAC;CACH,CAAC,CAAC;AACH,sEAAsE"}
1
+ {"version":3,"file":"lisa-owned-hash-ledger.js","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"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"}
@@ -3,13 +3,13 @@
3
3
  export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
4
4
  "all/copy-contents/.gitattributes": "9d3831007e681186a3673e1037ef3fc82980cab2fc04e27c0868e562912c9e9f",
5
5
  "all/copy-contents/gitignore": "8104ccd32d7e6137cae706511c5037d11d6b6045b8e2a9bb7b3a48a81c053cfa",
6
- "all/copy-overwrite/scripts/check-state-classification.mjs": "b218927f64a3db4f37762b60014e29d85a46899f4a0d17fcecc7782ce48bc499",
6
+ "all/copy-overwrite/scripts/check-state-classification.mjs": "96599f9cf25d7d96afc82a92c477ca851e3fa1f918a06a5b81a29dd1b0039f38",
7
7
  "all/copy-overwrite/scripts/lib/invoked-as-script.mjs": "fbb9b88fc85a3e22f21af39e1c17acf67ff83fc6b5a6cdc8081bde333c48faa7",
8
8
  "all/copy-overwrite/scripts/lisa-command-envelope.mjs": "014a94647efc636cbce961364a82f03c1f3c1e54a55e9d21508fded88dce49c4",
9
9
  "all/copy-overwrite/scripts/lisa-destructive-guard.mjs": "f0f3c43bbb6d1e389135b0205a051e64891e539d4272df2a87841ee82a8b7a55",
10
10
  "all/copy-overwrite/scripts/lisa-enforcement-fallback.sh": "aafd027c4b6092da15d0389f9e8dcedbd9105e9083057e2da39f78fd5f72e0df",
11
11
  "all/copy-overwrite/scripts/lisa-floor-collisions.mjs": "2d11968f6852ab745cba939de03c6d6cb5f413975d2cfc8fc447bdd0b218e91a",
12
- "all/copy-overwrite/scripts/lisa-gates.mjs": "bba52f26e70e0dc399a8ed8ea9cbd3885a18f08401b28bd18871a1af4fbca375",
12
+ "all/copy-overwrite/scripts/lisa-gates.mjs": "98652623c7451d05e48239e1678ad7977a323eaf7ff5ca4b4f3bbc0798396859",
13
13
  "all/copy-overwrite/scripts/lisa-hooks/block-direct-issue-create.sh": "8d1f04ef5c5da9db9190e22b37a435e118e39d6e7deafc5402b4593c8e9db2b2",
14
14
  "all/copy-overwrite/scripts/lisa-hooks/block-instruction-file-edits.sh": "3e709e1ec8a5843c00684bc477ad32ddab2c5fdb11f71d5aeec0c49609eaf025",
15
15
  "all/copy-overwrite/scripts/lisa-hooks/block-managed-file-edits.sh": "c1b2abf324269c0248136500eb37d7c43559552f152a7c5d07a23c219fdc70b2",
@@ -488,7 +488,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
488
488
  "plugins/src/base/skills/lisa-agent-ready/SKILL.md": "f65e5e866bc476ba2b40e4fb29e6754bdd5824e1f0706f28d4f2beb2af0faf53",
489
489
  "plugins/src/base/skills/lisa-analyze-claude-remote/SKILL.md": "a5863836b8fa9d67825d048e1c2fc086d3df95de33cf110129488959b83cb4b5",
490
490
  "plugins/src/base/skills/lisa-atlassian-access/SKILL.md": "6366ccce961217d1c7bcac4dad9c2293ee4dcc395b27c142a3b59c62f00b685c",
491
- "plugins/src/base/skills/lisa-atlassian-access/scripts/markdown-to-adf.mjs": "538e5a3d91482b9e2a055e133b7c1fcf809be51d4ae72a10776aaeeb8df4832a",
491
+ "plugins/src/base/skills/lisa-atlassian-access/scripts/markdown-to-adf.mjs": "8ea94fa2b3fbe860cee365a6dd935a0f7ef9e749a2ab59c8b8dfc1838cdb0d37",
492
492
  "plugins/src/base/skills/lisa-attribute-failure/SKILL.md": "5d737b9fda916f02aaf13b208316cd54995d83aa06d27ba5daa19b6ebed6b4d9",
493
493
  "plugins/src/base/skills/lisa-automation-status/SKILL.md": "595b57feb3aa13b8a1a32691a25fc0c1b91f689e06745b4582d540c1d34a3b83",
494
494
  "plugins/src/base/skills/lisa-bug-triage/SKILL.md": "bd5bae508a8f344d8b5cb46cfddcb178ff8368ca77936f9e2c63058e05f61af4",
@@ -504,7 +504,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
504
504
  "plugins/src/base/skills/lisa-delivery-effectiveness/SKILL.md": "21bc55fa0e86a9694bd22269fd089dbfae0c54c199262f46a4955447acea0f35",
505
505
  "plugins/src/base/skills/lisa-detect-tooling/SKILL.md": "4ef9b5004e13beb46cac5ae994c24d91c3715363771e3d89c32b0610408fc887",
506
506
  "plugins/src/base/skills/lisa-detect-tooling/scripts/commands.mjs": "e28bd61fdde4a336b56ae3395423026943a5816015719d31d04f0d5a0ab50eec",
507
- "plugins/src/base/skills/lisa-detect-tooling/scripts/detect-tooling.mjs": "9d06590e6b99cce33e5fb10bd5b9e7515318133e3635368ef47162abc123bdfa",
507
+ "plugins/src/base/skills/lisa-detect-tooling/scripts/detect-tooling.mjs": "3a79e0a09112268c2bfe51575355c10c2fa5305fdac6629cada2028ab3f07a00",
508
508
  "plugins/src/base/skills/lisa-doctor/SKILL.md": "f015bd91a615fa22b8e9f2bcb89a8bbce4a3f7d4fd977bfe94970e8d21d640d8",
509
509
  "plugins/src/base/skills/lisa-drive-pr-to-merge/SKILL.md": "bbf4f08502f0f860a18e1a374998ed276931708c7c092f078837c98f7e25ac9a",
510
510
  "plugins/src/base/skills/lisa-epic-triage/SKILL.md": "d02760411249bddbd396f283191fe3e82bb7b95bf9393a19a7025dc5a57c3ab7",
@@ -614,7 +614,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
614
614
  "plugins/src/base/skills/lisa-quality-review/SKILL.md": "520437da40257686203468f39b61fbecb2f5c534faaaa488734e828f74c04825",
615
615
  "plugins/src/base/skills/lisa-queue-status/SKILL.md": "87c6d34d0511d4afd812d1af3fee80fa3b7aa47db8449760b12f2699fedc1d78",
616
616
  "plugins/src/base/skills/lisa-remote-dispatch/SKILL.md": "f3c48120a206d01db45f849ca5b61690d572abc16bc36d559a4cacc8f9422c06",
617
- "plugins/src/base/skills/lisa-remote-dispatch/scripts/dispatch.mjs": "475963ed64d9e72a6cbd6cbb61c8b57a419f2e1805e3ddfa76066047c590deeb",
617
+ "plugins/src/base/skills/lisa-remote-dispatch/scripts/dispatch.mjs": "3cf5802d8154ea8ec6c531db6d54c37dd38ab2573e3a0cb38fdfef535150b933",
618
618
  "plugins/src/base/skills/lisa-repair-intake/SKILL.md": "b9cc5064f24eead0c2f446951eb098a31b8e34c1d5e78929112d0685a6ce9de9",
619
619
  "plugins/src/base/skills/lisa-reproduce-bug/SKILL.md": "4d460993fac6021219ca23eee29b1b9afa7c37479dddc662b2fcfaca510edd68",
620
620
  "plugins/src/base/skills/lisa-research/SKILL.md": "9e2e7f3d02a18d9bb34f0b9e8c43d6b9b454d0f81987390839d40a84331b20f7",
@@ -625,28 +625,28 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
625
625
  "plugins/src/base/skills/lisa-secrets-access/SKILL.md": "32790da3a954eb16fbd47114f6b239d7eec7b16d1490de2d0dd461234d974c11",
626
626
  "plugins/src/base/skills/lisa-secrets-access/scripts/aws-bootstrap.mjs": "a06c212d45442a0a2daaefda1a7255e299f82704ca3637243b778d8268a5ce65",
627
627
  "plugins/src/base/skills/lisa-secrets-access/scripts/bootstrap-store.mjs": "8dd5ca2c99394ead696093dd10caf664ce2609d39fb8d8ae8f4d4f236dbddbe6",
628
- "plugins/src/base/skills/lisa-secrets-access/scripts/doctor-secrets.mjs": "5e3b936279d663ad714f0c699af1cd8f487b1212657cd4ad30dbe563d8dee9f8",
628
+ "plugins/src/base/skills/lisa-secrets-access/scripts/doctor-secrets.mjs": "71fd7a3f26d7e4424bb8ef80caaaa3db136595a5b9e620a32084a00521277ba3",
629
629
  "plugins/src/base/skills/lisa-secrets-access/scripts/envfile.mjs": "be4e38ce85f9268b52b29dbde264ecd8d50973c2b63a15410336234a921d9644",
630
- "plugins/src/base/skills/lisa-secrets-access/scripts/inspect-vault.mjs": "ce48f609f1434d75d00422ab3251f327233596ccac46d5f6437523b435dda164",
631
- "plugins/src/base/skills/lisa-secrets-access/scripts/materialize-secrets.mjs": "694f2660df23871d470701d1fb9fc7e24fcf7be137d9c275059ae7f7383340e9",
630
+ "plugins/src/base/skills/lisa-secrets-access/scripts/inspect-vault.mjs": "d2841042eda0f0c50f995ccc34e09e25aced0abbf3a96bce52a9f604e4009520",
631
+ "plugins/src/base/skills/lisa-secrets-access/scripts/materialize-secrets.mjs": "ebfd1bad8cd6ff85b746c2d69393997e7a6793b4cb2b9695efb2033bd3420ae6",
632
632
  "plugins/src/base/skills/lisa-secrets-access/scripts/note-format.mjs": "09bd6904bc84a5a93a32499ac94db5ec7728db68908a661698445ef5e6974f3e",
633
633
  "plugins/src/base/skills/lisa-secrets-access/scripts/preflight-secrets.mjs": "f6c6f87bb309d755fb715abcf5f7f1802d3ed7375a0d052118c547c3c46d5e37",
634
634
  "plugins/src/base/skills/lisa-secrets-access/scripts/prompt-secret.mjs": "22b28bcdf49b9b0fcd1b15639e031655efacc028b74d48d57e2275f3e1557508",
635
635
  "plugins/src/base/skills/lisa-secrets-access/scripts/providers.mjs": "f295709e2d14267db89d03d7d61cec9611897d816d5b31eed4b397b9c52d54af",
636
- "plugins/src/base/skills/lisa-secrets-access/scripts/read-secret-note.mjs": "1471d2108058f3059e242f9c71208c99fdbc212bde32de34b798eaa9a27ffbcc",
637
- "plugins/src/base/skills/lisa-secrets-access/scripts/resolve-secret.mjs": "75ae143c971a7d442d513f2458ac64322d2394dec77ec806af82f39c5ed815be",
638
- "plugins/src/base/skills/lisa-secrets-access/scripts/rotate-secret.mjs": "546dc1c2f279cee6db56c0f55c01aabae0c316842f32d3219c5af6d638936a9c",
636
+ "plugins/src/base/skills/lisa-secrets-access/scripts/read-secret-note.mjs": "735434e25bf1db9f2f7eb3d5ede8361cba01b922d65931393bd36e6f96531654",
637
+ "plugins/src/base/skills/lisa-secrets-access/scripts/resolve-secret.mjs": "4170220c95f410072f3871f58938b7575684254480d0645e3dbb1535cf09d7a7",
638
+ "plugins/src/base/skills/lisa-secrets-access/scripts/rotate-secret.mjs": "adada60f766760395858c69ef784654e9e096943485ed237c395c8fc2ca8e20f",
639
639
  "plugins/src/base/skills/lisa-secrets-access/scripts/routing-floor.mjs": "fa1bdeda4e38bbd149f993ab0288f11b7ba6f2a3b9bf91a5918de7356e21f786",
640
640
  "plugins/src/base/skills/lisa-secrets-access/scripts/surfaces.mjs": "945957bbb54d184a07703cf727844f0838810d33dd385b068934b571252934e6",
641
- "plugins/src/base/skills/lisa-secrets-access/scripts/sync-secret-to-ci.mjs": "4887a65b7589a47c7da3b5ed04907bfcb9773289c0dd3597c69a35ba239f14d9",
641
+ "plugins/src/base/skills/lisa-secrets-access/scripts/sync-secret-to-ci.mjs": "563ab35320a0ba58269ac3dd81155ffe3a299f6835210073e6fc9012ab436f41",
642
642
  "plugins/src/base/skills/lisa-secrets-access/scripts/tools-from-notes.mjs": "360f740cac081151491428043b04fec2f5db6f3ba36394f7378af312396d53ca",
643
- "plugins/src/base/skills/lisa-secrets-access/scripts/validate-config.mjs": "b521aa3e3e4049d2c40f81382c28b8d81ecad9221d147d3be8c94a444ae518a5",
643
+ "plugins/src/base/skills/lisa-secrets-access/scripts/validate-config.mjs": "85c5ec348e0f38128f44f3207fcbc047952ae88f48adf81b7879c24b1a66cbf0",
644
644
  "plugins/src/base/skills/lisa-security-review/SKILL.md": "5a980eaf5efc4fcce66e75521ec5b1eda143a5b0d36e7157234a705dac94e3f5",
645
645
  "plugins/src/base/skills/lisa-security-zap-scan/SKILL.md": "a5189442dbf970cc49fd089ab03c386c8a205b856e09501f6ad1966321e7e4b5",
646
646
  "plugins/src/base/skills/lisa-sentry-access/SKILL.md": "e8ea8e6e4288385202f88b04e258b6d86f304a05d6dc118ebde6e88a7e8b5f44",
647
647
  "plugins/src/base/skills/lisa-setup-atlassian/SKILL.md": "4fa7f9a83a9998951528c8ffffa930c61b5c316b510356a3e7a90ccb9d5ca123",
648
648
  "plugins/src/base/skills/lisa-setup-automations/SKILL.md": "4bf86639bca29641686fd124d7d4b6c177775063930a309e2c33f808e33d505f",
649
- "plugins/src/base/skills/lisa-setup-automations/scripts/generate-workflow.mjs": "f639c3f174378f0068b9c9d56e59b356c6da988730a1390c61e4348b4a4073ac",
649
+ "plugins/src/base/skills/lisa-setup-automations/scripts/generate-workflow.mjs": "c13e287c8beb6f847b03c93298b8a3fb211e65ce897e63692933377f8c4303f1",
650
650
  "plugins/src/base/skills/lisa-setup-confluence/SKILL.md": "e92d762dbdaeae671c3e52dfe8e10d40a10b606b5e050589181a3898649faedc",
651
651
  "plugins/src/base/skills/lisa-setup-github-repo/SKILL.md": "b9b223a5ffad2f88e3fde5831b60fea9bdc2c981750c49d03bb046d43772a0d3",
652
652
  "plugins/src/base/skills/lisa-setup-github/SKILL.md": "75435e81130abd21c678d302b7a220da95a19868d122ca93168278628b200666",
@@ -654,7 +654,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
654
654
  "plugins/src/base/skills/lisa-setup-kane/SKILL.md": "fe50024a4f896af01716f2435f57227b1f8de61803e80bf3e3c3247ec179b103",
655
655
  "plugins/src/base/skills/lisa-setup-linear/SKILL.md": "8813f9374f0d485c1ca1d2b2549e990dee1b232e82487c85caec972c47cceb64",
656
656
  "plugins/src/base/skills/lisa-setup-local-env/SKILL.md": "4d4b8c92e3616256f5f689fbe433f09c31d39c623508bc4ec0d8c1770caddf22",
657
- "plugins/src/base/skills/lisa-setup-local-env/scripts/local-env.mjs": "bff68aa66d6d4cd7cb9d0e39be691c6daa232edb097f8a601815432a32cca6a6",
657
+ "plugins/src/base/skills/lisa-setup-local-env/scripts/local-env.mjs": "6f3713451139d9d4fd8eed8f11f49e472667394c4f9a7cae63897b7702115687",
658
658
  "plugins/src/base/skills/lisa-setup-notion/SKILL.md": "a00121623871aa7578281779214d2a8ed871c7dfba19937f80374e76d6aa2b7f",
659
659
  "plugins/src/base/skills/lisa-setup-remote-aws/SKILL.md": "80fbf157f9c562c033886c25a99b37356602edd9e61cd2d492f339769ddcf97e",
660
660
  "plugins/src/base/skills/lisa-setup-remote-env/SKILL.md": "7aa1f616440cb262e47881e8b37b701ebd11ad1ea619412aa04c33324770904c",
@@ -662,10 +662,10 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
662
662
  "plugins/src/base/skills/lisa-setup-remote-env/assets/setup.sh": "c30d98a5645f033fc1d3a723043691b9ad997ae5666df539ff6aa19c563431b2",
663
663
  "plugins/src/base/skills/lisa-setup-remote-env/scripts/environment.mjs": "3b9be11691d81a896fc779c37fb6d69e8e7222f95e23f84aa03d4e590f9d9108",
664
664
  "plugins/src/base/skills/lisa-setup-remote-env/scripts/preflight-tools.mjs": "eb8ee672fbfdb0ab41dde5f17337dae59912f18eafa6f15a05fd203906d16352",
665
- "plugins/src/base/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs": "b4b831f8900360bbb36922edcddaef6bbe4b3730cb21cf0a365d76b914bcbe4e",
665
+ "plugins/src/base/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs": "c34250b56a158f3876a4134b92210b2b7ed1f26261901840928ef9fa3ce87789",
666
666
  "plugins/src/base/skills/lisa-setup-remote-env/scripts/tool-floor.mjs": "8bf279a2b198c7a6d4163420ec73f871fb9c9cb70d7c87d852026bc5dbf97091",
667
667
  "plugins/src/base/skills/lisa-setup-remote-env/scripts/toolchain.mjs": "496de5aed034692fee421dc3a1fbad9f85ed9e1d0c83a1080f781a486d0274e6",
668
- "plugins/src/base/skills/lisa-setup-remote-env/scripts/verify-remote-env.mjs": "362ff4a8196cbdcac3633e7d41437b0e8f966eb628924c8dba64646dd1e671c1",
668
+ "plugins/src/base/skills/lisa-setup-remote-env/scripts/verify-remote-env.mjs": "97f83b16a0ee5fc84c3b793afce24602b9fd0f67ae89501f424eae804eaead12",
669
669
  "plugins/src/base/skills/lisa-setup-sonar/SKILL.md": "b18e07ae942f75aad5730c0535840ef5f7115072f1b6cc62afac83196b28d6a3",
670
670
  "plugins/src/base/skills/lisa-setup-workstation/SKILL.md": "e57e64083c292f0402b704eeb647244be0f33ab17394a688bce57a1efd59f169",
671
671
  "plugins/src/base/skills/lisa-setup-workstation/scripts/catalogue.mjs": "eb0b8ec8a5d4fd81402dcbf40e6ccb55eb5e0c960f11aa928e45b99de43fabbc",
@@ -1071,10 +1071,10 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
1071
1071
  "scripts/fix-namespace-test-assertions.mjs": "bfed6f27753660b38457c3f0a032a6c866691666d2d5d61fc10c3fb2f4f4f412",
1072
1072
  "scripts/fix-test-assertions-pass2.mjs": "baca043a291120ff52ce61c06397206dc21ca3bef9c23a5975b9c1f896d963c7",
1073
1073
  "scripts/fix-test-assertions.mjs": "59b5e8cc31e7c7323d20bd180f2ae97c08a9685758483b6fe00ba77317a845f2",
1074
- "scripts/generate-agy-plugin-artifacts.mjs": "61aef7c20d92839a394f459f3012eb0b4e73d93ff56fa512b0244c68d96c72b4",
1074
+ "scripts/generate-agy-plugin-artifacts.mjs": "55328577509da3bb47c5a775ecbac6063a94b4ba52adf71d3de9322600a336c3",
1075
1075
  "scripts/generate-codex-plugin-artifacts.mjs": "1d1a362afb8dba408741a3eed9fe583296f6bcb048608979f73f359cd609c03d",
1076
- "scripts/generate-copilot-plugin-artifacts.mjs": "70d283eed7cb7c1351d13cf0497f06dec175562c5918921c404393a76f11278f",
1077
- "scripts/generate-cursor-plugin-artifacts.mjs": "d8806197a723f0c2b50a8155ffc5b6f0abc30c68dc2385cb80b0dd066d061231",
1076
+ "scripts/generate-copilot-plugin-artifacts.mjs": "2e5ce9a9f7390149bd3c24374960a51bda35afd1332cd2ad82a34bc0d50b8f50",
1077
+ "scripts/generate-cursor-plugin-artifacts.mjs": "19cadeae80428a932d9f7a6d36eba4f14e95761ede26ab773ca26bfbeaa9252e",
1078
1078
  "scripts/generate-lisa-owned-hash-ledger.mjs": "4e7a6dd9325fff77faec49c1dcbf8a8cfeb987052eeed89885deb4f7b0a107bc",
1079
1079
  "scripts/generate-upstream-evidence-manifest.mjs": "e1f0485918ab8a2206e8200f297acb495400f321bed5d31d3f60f8da11d8fdc6",
1080
1080
  "scripts/github-status-check.sh": "c6a4a13ff5cf689fcbd7a6aca718f9e7d46d54ccb6687f662b055c1ca20e792f",
@@ -1153,7 +1153,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
1153
1153
  "typescript/copy-overwrite/eslint.slow.config.ts": "9f0efef2d1012e21a1d5e03eb98634bfeb459e3427147d75ad6905acbbab8466",
1154
1154
  "typescript/copy-overwrite/knip.json": "6eb93d705a2d645332fbae1dd42cf2d48f85978ebc265451a53790912f277d12",
1155
1155
  "typescript/copy-overwrite/scripts/check-nightly-e2e-health.mjs": "5f47f02563671a25ad14dc69210f1f52e9141e0e53a27bafce52d41899aa9d21",
1156
- "typescript/copy-overwrite/scripts/check-skipped-required-checks.mjs": "5af5f112ba258c4874a65c72c8bed12165e75e4df407265eb46ee9c89c4e0e53",
1156
+ "typescript/copy-overwrite/scripts/check-skipped-required-checks.mjs": "444210c8fbfca1d3e6ae0e180fe95752e10152610ad349ffea377136f4ae8cf7",
1157
1157
  "typescript/copy-overwrite/scripts/check-threshold-ratchet.mjs": "6bcf8b88b1d5ade1aa7c7902ba12af1df7b0b13d4e69c49a24f76a92474c93ec",
1158
1158
  "typescript/copy-overwrite/scripts/check-verification-coverage.mjs": "0cddac03366644cdc99cc239e74520ac420d475b461a40a21728e43756872b07",
1159
1159
  "typescript/copy-overwrite/scripts/lib/invoked-as-script.mjs": "fbb9b88fc85a3e22f21af39e1c17acf67ff83fc6b5a6cdc8081bde333c48faa7",
package/package.json CHANGED
@@ -129,7 +129,7 @@
129
129
  }
130
130
  },
131
131
  "name": "@codyswann/lisa",
132
- "version": "3.26.1",
132
+ "version": "3.26.2",
133
133
  "description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
134
134
  "main": "dist/index.js",
135
135
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "3.26.1",
3
+ "version": "3.26.2",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "3.26.1",
3
+ "version": "3.26.2",
4
4
  "description": "Universal governance: agents, skills, commands, hooks, and rules for all projects.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -202,7 +202,29 @@ function parseInline(text) {
202
202
  return nodes.length > 0 ? nodes : [{ type: "text", text: "" }];
203
203
  }
204
204
 
205
- if (import.meta.url === `file://${process.argv[1]}`) {
205
+ /**
206
+ * Whether this module is the one node was asked to run.
207
+ *
208
+ * Both sides are realpath'd: a raw URL comparison answers "no" through a
209
+ * symlinked checkout, a git worktree, or a /tmp path on macOS, so the module
210
+ * loads, runs nothing and exits 0 — a silent no-op that reads as success.
211
+ *
212
+ * A local copy rather than an import: plugin payload scripts ship standalone,
213
+ * with no `lib/` sibling to import from once installed.
214
+ * @param {string} moduleUrl - The caller's own `import.meta.url`.
215
+ * @param {string | undefined} [argv1] - Entry path; defaults to `process.argv[1]`.
216
+ * @returns {boolean} Whether the caller should run its CLI body.
217
+ */
218
+ function invokedAsScript(moduleUrl, argv1 = process.argv[1]) {
219
+ if (!argv1) return false;
220
+ try {
221
+ return realpathSync(argv1) === realpathSync(fileURLToPath(moduleUrl));
222
+ } catch {
223
+ return false;
224
+ }
225
+ }
226
+
227
+ if (invokedAsScript(import.meta.url)) {
206
228
  let input = "";
207
229
  process.stdin.setEncoding("utf8");
208
230
  process.stdin.on("data", chunk => {
@@ -22,7 +22,14 @@
22
22
  * @module detect-tooling
23
23
  */
24
24
 
25
- import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
25
+ import {
26
+ existsSync,
27
+ readFileSync,
28
+ readdirSync,
29
+ statSync,
30
+ realpathSync,
31
+ } from "node:fs";
32
+ import { fileURLToPath } from "node:url";
26
33
  import { join } from "node:path";
27
34
 
28
35
  import { commandsIn } from "./commands.mjs";
@@ -583,7 +590,29 @@ export function proposedEntries(proposal) {
583
590
  };
584
591
  }
585
592
 
586
- if (process.argv[1] && import.meta.url === `file://${process.argv[1]}`) {
593
+ /**
594
+ * Whether this module is the one node was asked to run.
595
+ *
596
+ * Both sides are realpath'd: a raw URL comparison answers "no" through a
597
+ * symlinked checkout, a git worktree, or a /tmp path on macOS, so the module
598
+ * loads, runs nothing and exits 0 — a silent no-op that reads as success.
599
+ *
600
+ * A local copy rather than an import: plugin payload scripts ship standalone,
601
+ * with no `lib/` sibling to import from once installed.
602
+ * @param {string} moduleUrl - The caller's own `import.meta.url`.
603
+ * @param {string | undefined} [argv1] - Entry path; defaults to `process.argv[1]`.
604
+ * @returns {boolean} Whether the caller should run its CLI body.
605
+ */
606
+ function invokedAsScript(moduleUrl, argv1 = process.argv[1]) {
607
+ if (!argv1) return false;
608
+ try {
609
+ return realpathSync(argv1) === realpathSync(fileURLToPath(moduleUrl));
610
+ } catch {
611
+ return false;
612
+ }
613
+ }
614
+
615
+ if (invokedAsScript(import.meta.url)) {
587
616
  const proposals = detectTooling();
588
617
  if (process.argv.includes("--json")) {
589
618
  console.log(JSON.stringify(proposals, null, 2));
@@ -20,7 +20,13 @@
20
20
  */
21
21
 
22
22
  import { execFileSync } from "node:child_process";
23
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
23
+ import {
24
+ existsSync,
25
+ mkdirSync,
26
+ readFileSync,
27
+ writeFileSync,
28
+ realpathSync,
29
+ } from "node:fs";
24
30
  import { dirname, join, resolve } from "node:path";
25
31
  import { fileURLToPath } from "node:url";
26
32
 
@@ -495,7 +501,29 @@ async function main() {
495
501
  console.log(`recorded in ${LEDGER}; not polling — this process is done.`);
496
502
  }
497
503
 
498
- if (import.meta.url === `file://${process.argv[1]}`) {
504
+ /**
505
+ * Whether this module is the one node was asked to run.
506
+ *
507
+ * Both sides are realpath'd: a raw URL comparison answers "no" through a
508
+ * symlinked checkout, a git worktree, or a /tmp path on macOS, so the module
509
+ * loads, runs nothing and exits 0 — a silent no-op that reads as success.
510
+ *
511
+ * A local copy rather than an import: plugin payload scripts ship standalone,
512
+ * with no `lib/` sibling to import from once installed.
513
+ * @param {string} moduleUrl - The caller's own `import.meta.url`.
514
+ * @param {string | undefined} [argv1] - Entry path; defaults to `process.argv[1]`.
515
+ * @returns {boolean} Whether the caller should run its CLI body.
516
+ */
517
+ function invokedAsScript(moduleUrl, argv1 = process.argv[1]) {
518
+ if (!argv1) return false;
519
+ try {
520
+ return realpathSync(argv1) === realpathSync(fileURLToPath(moduleUrl));
521
+ } catch {
522
+ return false;
523
+ }
524
+ }
525
+
526
+ if (invokedAsScript(import.meta.url)) {
499
527
  // Awaited rather than called bare: one dispatch path is async, so a synchronous
500
528
  // try/catch would let a rejection escape as an unhandled rejection and exit 0 —
501
529
  // reporting dispatched work that was never accepted.
@@ -18,6 +18,8 @@
18
18
  */
19
19
 
20
20
  import { createHash } from "node:crypto";
21
+ import { fileURLToPath } from "node:url";
22
+ import { realpathSync } from "node:fs";
21
23
 
22
24
  import { validateNote } from "./note-format.mjs";
23
25
  import { fetchAll, fetchRotatable } from "./providers.mjs";
@@ -239,7 +241,29 @@ function main() {
239
241
  if (errors) throw new Error(`${errors} secrets configuration error(s)`);
240
242
  }
241
243
 
242
- if (import.meta.url === `file://${process.argv[1]}`) {
244
+ /**
245
+ * Whether this module is the one node was asked to run.
246
+ *
247
+ * Both sides are realpath'd: a raw URL comparison answers "no" through a
248
+ * symlinked checkout, a git worktree, or a /tmp path on macOS, so the module
249
+ * loads, runs nothing and exits 0 — a silent no-op that reads as success.
250
+ *
251
+ * A local copy rather than an import: plugin payload scripts ship standalone,
252
+ * with no `lib/` sibling to import from once installed.
253
+ * @param {string} moduleUrl - The caller's own `import.meta.url`.
254
+ * @param {string | undefined} [argv1] - Entry path; defaults to `process.argv[1]`.
255
+ * @returns {boolean} Whether the caller should run its CLI body.
256
+ */
257
+ function invokedAsScript(moduleUrl, argv1 = process.argv[1]) {
258
+ if (!argv1) return false;
259
+ try {
260
+ return realpathSync(argv1) === realpathSync(fileURLToPath(moduleUrl));
261
+ } catch {
262
+ return false;
263
+ }
264
+ }
265
+
266
+ if (invokedAsScript(import.meta.url)) {
243
267
  try {
244
268
  main();
245
269
  } catch (err) {
@@ -115,6 +115,28 @@ function main() {
115
115
  console.log(`\n${rows.length} secret(s). Values are never printed.`);
116
116
  }
117
117
 
118
- if (import.meta.url === `file://${process.argv[1]}`) {
118
+ /**
119
+ * Whether this module is the one node was asked to run.
120
+ *
121
+ * Both sides are realpath'd: a raw URL comparison answers "no" through a
122
+ * symlinked checkout, a git worktree, or a /tmp path on macOS, so the module
123
+ * loads, runs nothing and exits 0 — a silent no-op that reads as success.
124
+ *
125
+ * A local copy rather than an import: plugin payload scripts ship standalone,
126
+ * with no `lib/` sibling to import from once installed.
127
+ * @param {string} moduleUrl - The caller's own `import.meta.url`.
128
+ * @param {string | undefined} [argv1] - Entry path; defaults to `process.argv[1]`.
129
+ * @returns {boolean} Whether the caller should run its CLI body.
130
+ */
131
+ function invokedAsScript(moduleUrl, argv1 = process.argv[1]) {
132
+ if (!argv1) return false;
133
+ try {
134
+ return realpathSync(argv1) === realpathSync(fileURLToPath(moduleUrl));
135
+ } catch {
136
+ return false;
137
+ }
138
+ }
139
+
140
+ if (invokedAsScript(import.meta.url)) {
119
141
  main();
120
142
  }
@@ -30,6 +30,7 @@ import {
30
30
  } from "node:fs";
31
31
  import { homedir } from "node:os";
32
32
  import { join } from "node:path";
33
+ import { fileURLToPath } from "node:url";
33
34
 
34
35
  import {
35
36
  BOOTSTRAP_KEY,
@@ -454,7 +455,29 @@ function main() {
454
455
  }
455
456
  }
456
457
 
457
- if (import.meta.url === `file://${process.argv[1]}`) {
458
+ /**
459
+ * Whether this module is the one node was asked to run.
460
+ *
461
+ * Both sides are realpath'd: a raw URL comparison answers "no" through a
462
+ * symlinked checkout, a git worktree, or a /tmp path on macOS, so the module
463
+ * loads, runs nothing and exits 0 — a silent no-op that reads as success.
464
+ *
465
+ * A local copy rather than an import: plugin payload scripts ship standalone,
466
+ * with no `lib/` sibling to import from once installed.
467
+ * @param {string} moduleUrl - The caller's own `import.meta.url`.
468
+ * @param {string | undefined} [argv1] - Entry path; defaults to `process.argv[1]`.
469
+ * @returns {boolean} Whether the caller should run its CLI body.
470
+ */
471
+ function invokedAsScript(moduleUrl, argv1 = process.argv[1]) {
472
+ if (!argv1) return false;
473
+ try {
474
+ return realpathSync(argv1) === realpathSync(fileURLToPath(moduleUrl));
475
+ } catch {
476
+ return false;
477
+ }
478
+ }
479
+
480
+ if (invokedAsScript(import.meta.url)) {
458
481
  try {
459
482
  main();
460
483
  } catch (err) {
@@ -13,7 +13,8 @@
13
13
  * @module read-secret-note
14
14
  */
15
15
 
16
- import { existsSync, readFileSync } from "node:fs";
16
+ import { existsSync, readFileSync, realpathSync } from "node:fs";
17
+ import { fileURLToPath } from "node:url";
17
18
 
18
19
  import { materializedPaths, readConfig } from "./surfaces.mjs";
19
20
 
@@ -72,7 +73,29 @@ function main() {
72
73
  console.log(noteFor(name, loadNotes(notesFile)));
73
74
  }
74
75
 
75
- if (import.meta.url === `file://${process.argv[1]}`) {
76
+ /**
77
+ * Whether this module is the one node was asked to run.
78
+ *
79
+ * Both sides are realpath'd: a raw URL comparison answers "no" through a
80
+ * symlinked checkout, a git worktree, or a /tmp path on macOS, so the module
81
+ * loads, runs nothing and exits 0 — a silent no-op that reads as success.
82
+ *
83
+ * A local copy rather than an import: plugin payload scripts ship standalone,
84
+ * with no `lib/` sibling to import from once installed.
85
+ * @param {string} moduleUrl - The caller's own `import.meta.url`.
86
+ * @param {string | undefined} [argv1] - Entry path; defaults to `process.argv[1]`.
87
+ * @returns {boolean} Whether the caller should run its CLI body.
88
+ */
89
+ function invokedAsScript(moduleUrl, argv1 = process.argv[1]) {
90
+ if (!argv1) return false;
91
+ try {
92
+ return realpathSync(argv1) === realpathSync(fileURLToPath(moduleUrl));
93
+ } catch {
94
+ return false;
95
+ }
96
+ }
97
+
98
+ if (invokedAsScript(import.meta.url)) {
76
99
  try {
77
100
  main();
78
101
  } catch (err) {
@@ -27,7 +27,8 @@
27
27
  * @module resolve-secret
28
28
  */
29
29
 
30
- import { existsSync, readFileSync } from "node:fs";
30
+ import { existsSync, readFileSync, realpathSync } from "node:fs";
31
+ import { fileURLToPath } from "node:url";
31
32
 
32
33
  import { parseEnv } from "./envfile.mjs";
33
34
  import { validateNote } from "./note-format.mjs";
@@ -252,7 +253,29 @@ function main() {
252
253
  );
253
254
  }
254
255
 
255
- if (import.meta.url === `file://${process.argv[1]}`) {
256
+ /**
257
+ * Whether this module is the one node was asked to run.
258
+ *
259
+ * Both sides are realpath'd: a raw URL comparison answers "no" through a
260
+ * symlinked checkout, a git worktree, or a /tmp path on macOS, so the module
261
+ * loads, runs nothing and exits 0 — a silent no-op that reads as success.
262
+ *
263
+ * A local copy rather than an import: plugin payload scripts ship standalone,
264
+ * with no `lib/` sibling to import from once installed.
265
+ * @param {string} moduleUrl - The caller's own `import.meta.url`.
266
+ * @param {string | undefined} [argv1] - Entry path; defaults to `process.argv[1]`.
267
+ * @returns {boolean} Whether the caller should run its CLI body.
268
+ */
269
+ function invokedAsScript(moduleUrl, argv1 = process.argv[1]) {
270
+ if (!argv1) return false;
271
+ try {
272
+ return realpathSync(argv1) === realpathSync(fileURLToPath(moduleUrl));
273
+ } catch {
274
+ return false;
275
+ }
276
+ }
277
+
278
+ if (invokedAsScript(import.meta.url)) {
256
279
  try {
257
280
  main();
258
281
  } catch (err) {