@codyswann/lisa 4.71.5 → 4.71.7

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 (91) hide show
  1. package/all/copy-overwrite/scripts/lisa-hooks/block-direct-issue-create.sh +20 -2
  2. package/all/copy-overwrite/scripts/lisa-hooks/block-managed-file-edits.sh +71 -10
  3. package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
  4. package/dist/core/lisa-owned-hash-ledger.js +10 -0
  5. package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
  6. package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
  7. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  8. package/dist/core/upstream-evidence-manifest.js +12 -8
  9. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  10. package/dist/opencode/plugin-templates/block-managed-file-edits.sh +71 -10
  11. package/dist/opencode/plugin-templates/lisa-block-direct-issue-create.ts +8 -2
  12. package/package.json +4 -4
  13. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  14. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  15. package/plugins/lisa/.codex-plugin/skills/lisa-drive-pr-to-merge/SKILL.md +89 -5
  16. package/plugins/lisa/.codex-plugin/skills/lisa-queue-status/SKILL.md +43 -3
  17. package/plugins/lisa/hooks/block-direct-issue-create.sh +20 -2
  18. package/plugins/lisa/hooks/block-managed-file-edits.sh +71 -10
  19. package/plugins/lisa/skills/lisa-drive-pr-to-merge/SKILL.md +89 -5
  20. package/plugins/lisa/skills/lisa-queue-status/SKILL.md +43 -3
  21. package/plugins/lisa-agy/hooks/block-direct-issue-create.sh +20 -2
  22. package/plugins/lisa-agy/hooks/block-managed-file-edits.sh +71 -10
  23. package/plugins/lisa-agy/plugin.json +1 -1
  24. package/plugins/lisa-agy/skills/lisa-drive-pr-to-merge/SKILL.md +89 -5
  25. package/plugins/lisa-agy/skills/lisa-queue-status/SKILL.md +43 -3
  26. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  27. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  28. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  29. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  30. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  31. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  32. package/plugins/lisa-copilot/hooks/block-direct-issue-create.sh +20 -2
  33. package/plugins/lisa-copilot/hooks/block-managed-file-edits.sh +71 -10
  34. package/plugins/lisa-copilot/skills/lisa-drive-pr-to-merge/SKILL.md +89 -5
  35. package/plugins/lisa-copilot/skills/lisa-queue-status/SKILL.md +43 -3
  36. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  37. package/plugins/lisa-cursor/hooks/block-direct-issue-create.sh +20 -2
  38. package/plugins/lisa-cursor/hooks/block-managed-file-edits.sh +71 -10
  39. package/plugins/lisa-cursor/skills/lisa-drive-pr-to-merge/SKILL.md +89 -5
  40. package/plugins/lisa-cursor/skills/lisa-queue-status/SKILL.md +43 -3
  41. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  43. package/plugins/lisa-expo/.codex-plugin/skills/expo-router-best-practices/references/static-export-verification.md +1 -1
  44. package/plugins/lisa-expo/skills/expo-router-best-practices/references/static-export-verification.md +1 -1
  45. package/plugins/lisa-expo-agy/plugin.json +1 -1
  46. package/plugins/lisa-expo-agy/skills/expo-router-best-practices/references/static-export-verification.md +1 -1
  47. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  48. package/plugins/lisa-expo-copilot/skills/expo-router-best-practices/references/static-export-verification.md +1 -1
  49. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  50. package/plugins/lisa-expo-cursor/skills/expo-router-best-practices/references/static-export-verification.md +1 -1
  51. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  52. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  53. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  54. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  55. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  58. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  59. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  60. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  63. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  64. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  65. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  67. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  68. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  69. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  70. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  71. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  72. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  73. package/plugins/lisa-rails-agy/plugin.json +1 -1
  74. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  75. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  76. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  77. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  78. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  79. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  80. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  81. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  82. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  83. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  84. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  85. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  86. package/plugins/src/base/hooks/block-direct-issue-create.sh +20 -2
  87. package/plugins/src/base/hooks/block-managed-file-edits.sh +71 -10
  88. package/plugins/src/base/skills/lisa-drive-pr-to-merge/SKILL.md +89 -5
  89. package/plugins/src/base/skills/lisa-queue-status/SKILL.md +43 -3
  90. package/plugins/src/expo/skills/expo-router-best-practices/references/static-export-verification.md +1 -1
  91. package/typescript/copy-overwrite/scripts/check-skipped-required-checks.mjs +22 -3
@@ -351,7 +351,12 @@
351
351
  * @module scripts/check-skipped-required-checks
352
352
  */
353
353
 
354
- import { appendFileSync, existsSync, readFileSync } from "node:fs";
354
+ import {
355
+ appendFileSync,
356
+ existsSync,
357
+ readFileSync,
358
+ realpathSync,
359
+ } from "node:fs";
355
360
  import { resolve, sep } from "node:path";
356
361
  import { parseArgs } from "node:util";
357
362
 
@@ -393,7 +398,10 @@ const SKIP_JOBS_LINE = /^[ \t]*skip_jobs[ \t]*:[ \t]*((?:\S.*)?)$/;
393
398
  * `..` segments BEFORE the boundary test, so a traversal-shaped value fails
394
399
  * here instead of reaching `readFileSync` — the explicit refusal is also what
395
400
  * separates "read nothing because nothing was there" from "read something the
396
- * guard was never pointed at". (SonarCloud jssecurity:S8707 — the
401
+ * guard was never pointed at". Existing inputs also resolve their symlinks,
402
+ * including parent directories, against the real root before any content read.
403
+ * Missing inputs retain the caller's explicit absence refusal.
404
+ * (SonarCloud jssecurity:S8707 — the
397
405
  * normalise-then-bound check is the barrier the rule asks for between an
398
406
  * argv-shaped string and a filesystem read. CodySwannGT/lisa#4279.)
399
407
  *
@@ -411,7 +419,18 @@ function resolveWithinRoot(root, relative, what) {
411
419
  `check-skipped-required-checks: ${what} ${JSON.stringify(relative)} resolves outside the repository root. Refusing to read a path this guard was not pointed at.`
412
420
  );
413
421
  }
414
- return target;
422
+ if (!existsSync(target)) return target;
423
+ const actualBase = realpathSync(base);
424
+ const actualTarget = realpathSync(target);
425
+ if (
426
+ actualTarget !== actualBase &&
427
+ !actualTarget.startsWith(`${actualBase}${sep}`)
428
+ ) {
429
+ throw new Error(
430
+ `check-skipped-required-checks: ${what} ${JSON.stringify(relative)} resolves outside the repository root. Refusing to read a path this guard was not pointed at.`
431
+ );
432
+ }
433
+ return actualTarget;
415
434
  }
416
435
 
417
436
  /** Matches the tail permitted after a quoted scalar's closing quote. */