@codyswann/lisa 4.37.2 → 4.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/all/copy-contents/.gitattributes +9 -0
  2. package/all/copy-contents/gitignore +6 -0
  3. package/dist/core/learnings-merge-driver.d.ts +8 -0
  4. package/dist/core/learnings-merge-driver.d.ts.map +1 -1
  5. package/dist/core/learnings-merge-driver.js +17 -0
  6. package/dist/core/learnings-merge-driver.js.map +1 -1
  7. package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
  8. package/dist/core/lisa-owned-hash-ledger.js +4 -0
  9. package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
  10. package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
  11. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  12. package/dist/core/upstream-evidence-manifest.js +64 -11
  13. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  14. package/package.json +6 -4
  15. package/plugins/lisa/.claude-plugin/plugin.json +28 -1
  16. package/plugins/lisa/.codex-plugin/hooks.json +27 -0
  17. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  18. package/plugins/lisa/.codex-plugin/skills/lisa-github-write-issue/SKILL.md +11 -0
  19. package/plugins/lisa/.codex-plugin/skills/lisa-jira-write-ticket/SKILL.md +11 -0
  20. package/plugins/lisa/.codex-plugin/skills/lisa-linear-write-issue/SKILL.md +11 -0
  21. package/plugins/lisa/.codex-plugin/skills/lisa-repair-intake/SKILL.md +30 -2
  22. package/plugins/lisa/hooks/inject-resolved-config.mjs +26 -7
  23. package/plugins/lisa/hooks/withdrawn-rulings.mjs +525 -0
  24. package/plugins/lisa/hooks/withdrawn-rulings.sh +24 -0
  25. package/plugins/lisa/rules/eager/config-resolution.md +3 -1
  26. package/plugins/lisa/rules/eager/withdrawn-rulings.md +69 -0
  27. package/plugins/lisa/rules/reference/config-resolution.md +1 -1
  28. package/plugins/lisa/rules/reference/withdrawn-rulings.md +114 -0
  29. package/plugins/lisa/scripts/intake-blocker-reprobe.mjs +120 -3
  30. package/plugins/lisa/skills/lisa-github-write-issue/SKILL.md +11 -0
  31. package/plugins/lisa/skills/lisa-jira-write-ticket/SKILL.md +11 -0
  32. package/plugins/lisa/skills/lisa-linear-write-issue/SKILL.md +11 -0
  33. package/plugins/lisa/skills/lisa-repair-intake/SKILL.md +30 -2
  34. package/plugins/lisa-agy/plugin.json +1 -1
  35. package/plugins/lisa-agy/scripts/intake-blocker-reprobe.mjs +120 -3
  36. package/plugins/lisa-agy/skills/lisa-github-write-issue/SKILL.md +11 -0
  37. package/plugins/lisa-agy/skills/lisa-jira-write-ticket/SKILL.md +11 -0
  38. package/plugins/lisa-agy/skills/lisa-linear-write-issue/SKILL.md +11 -0
  39. package/plugins/lisa-agy/skills/lisa-repair-intake/SKILL.md +30 -2
  40. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  41. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  42. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  43. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  44. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  45. package/plugins/lisa-copilot/.claude-plugin/plugin.json +19 -1
  46. package/plugins/lisa-copilot/hooks/inject-resolved-config.mjs +26 -7
  47. package/plugins/lisa-copilot/hooks/withdrawn-rulings.mjs +525 -0
  48. package/plugins/lisa-copilot/hooks/withdrawn-rulings.sh +24 -0
  49. package/plugins/lisa-copilot/rules/eager/config-resolution.md +3 -1
  50. package/plugins/lisa-copilot/rules/eager/withdrawn-rulings.md +69 -0
  51. package/plugins/lisa-copilot/rules/reference/config-resolution.md +1 -1
  52. package/plugins/lisa-copilot/rules/reference/withdrawn-rulings.md +114 -0
  53. package/plugins/lisa-copilot/scripts/intake-blocker-reprobe.mjs +120 -3
  54. package/plugins/lisa-copilot/skills/lisa-github-write-issue/SKILL.md +11 -0
  55. package/plugins/lisa-copilot/skills/lisa-jira-write-ticket/SKILL.md +11 -0
  56. package/plugins/lisa-copilot/skills/lisa-linear-write-issue/SKILL.md +11 -0
  57. package/plugins/lisa-copilot/skills/lisa-repair-intake/SKILL.md +30 -2
  58. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  59. package/plugins/lisa-cursor/hooks/hooks.json +10 -0
  60. package/plugins/lisa-cursor/hooks/inject-resolved-config.mjs +26 -7
  61. package/plugins/lisa-cursor/hooks/withdrawn-rulings.mjs +525 -0
  62. package/plugins/lisa-cursor/hooks/withdrawn-rulings.sh +24 -0
  63. package/plugins/lisa-cursor/rules/config-resolution-reference.mdc +1 -1
  64. package/plugins/lisa-cursor/rules/config-resolution.mdc +3 -1
  65. package/plugins/lisa-cursor/rules/withdrawn-rulings-reference.mdc +119 -0
  66. package/plugins/lisa-cursor/rules/withdrawn-rulings.mdc +74 -0
  67. package/plugins/lisa-cursor/scripts/intake-blocker-reprobe.mjs +120 -3
  68. package/plugins/lisa-cursor/skills/lisa-github-write-issue/SKILL.md +11 -0
  69. package/plugins/lisa-cursor/skills/lisa-jira-write-ticket/SKILL.md +11 -0
  70. package/plugins/lisa-cursor/skills/lisa-linear-write-issue/SKILL.md +11 -0
  71. package/plugins/lisa-cursor/skills/lisa-repair-intake/SKILL.md +30 -2
  72. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  73. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  74. package/plugins/lisa-expo-agy/plugin.json +1 -1
  75. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  76. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  77. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  78. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  79. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  80. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  81. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  82. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  83. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  84. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  85. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  86. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  87. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  88. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  89. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  90. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  91. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  92. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  93. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  94. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  95. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  96. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  97. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  98. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  99. package/plugins/lisa-rails-agy/plugin.json +1 -1
  100. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  101. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  102. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  103. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  104. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  105. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  106. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  107. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  108. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  109. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  110. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  111. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  112. package/plugins/src/base/.claude-plugin/plugin.json +27 -0
  113. package/plugins/src/base/hooks/inject-resolved-config.mjs +26 -7
  114. package/plugins/src/base/hooks/withdrawn-rulings.mjs +525 -0
  115. package/plugins/src/base/hooks/withdrawn-rulings.sh +24 -0
  116. package/plugins/src/base/rules/eager/config-resolution.md +3 -1
  117. package/plugins/src/base/rules/eager/withdrawn-rulings.md +69 -0
  118. package/plugins/src/base/rules/reference/config-resolution.md +1 -1
  119. package/plugins/src/base/rules/reference/withdrawn-rulings.md +114 -0
  120. package/plugins/src/base/scripts/intake-blocker-reprobe.mjs +120 -3
  121. package/plugins/src/base/skills/lisa-github-write-issue/SKILL.md +11 -0
  122. package/plugins/src/base/skills/lisa-jira-write-ticket/SKILL.md +11 -0
  123. package/plugins/src/base/skills/lisa-linear-write-issue/SKILL.md +11 -0
  124. package/plugins/src/base/skills/lisa-repair-intake/SKILL.md +30 -2
  125. package/scripts/lib/hook-registration-audit.mjs +612 -0
  126. package/scripts/measure-tmpdir-growth.mjs +925 -0
  127. package/typescript/copy-contents/.husky/pre-push +98 -26
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.37.2",
3
+ "version": "4.38.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.37.2",
3
+ "version": "4.38.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.37.2",
3
+ "version": "4.38.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.37.2",
3
+ "version": "4.38.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.37.2",
3
+ "version": "4.38.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.37.2",
3
+ "version": "4.38.0",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.37.2",
3
+ "version": "4.38.0",
4
4
  "description": "Ruby on Rails-specific skills and hooks for RuboCop and ast-grep scanning on edit.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.37.2",
3
+ "version": "4.38.0",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.37.2",
3
+ "version": "4.38.0",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.37.2",
3
+ "version": "4.38.0",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.37.2",
3
+ "version": "4.38.0",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.37.2",
3
+ "version": "4.38.0",
4
4
  "description": "TypeScript-specific hooks for formatting, linting, and ast-grep scanning on edit.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.37.2",
3
+ "version": "4.38.0",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.37.2",
3
+ "version": "4.38.0",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.37.2",
3
+ "version": "4.38.0",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.37.2",
3
+ "version": "4.38.0",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.37.2",
3
+ "version": "4.38.0",
4
4
  "description": "Distributable LLM Wiki kernel — ingest, query, lint, and maintain a git-native markdown knowledge base across Claude and Codex.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.37.2",
3
+ "version": "4.38.0",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.37.2",
3
+ "version": "4.38.0",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.37.2",
3
+ "version": "4.38.0",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -89,6 +89,15 @@
89
89
  "command": "${CLAUDE_PLUGIN_ROOT}/hooks/enforce-team-first.sh"
90
90
  }
91
91
  ]
92
+ },
93
+ {
94
+ "matcher": "Bash|Edit|Write|Read|Task|Grep|Glob",
95
+ "hooks": [
96
+ {
97
+ "type": "command",
98
+ "command": "${CLAUDE_PLUGIN_ROOT}/hooks/withdrawn-rulings.sh --hook"
99
+ }
100
+ ]
92
101
  }
93
102
  ],
94
103
  "PreToolUse": [
@@ -201,6 +210,15 @@
201
210
  }
202
211
  ]
203
212
  },
213
+ {
214
+ "matcher": "",
215
+ "hooks": [
216
+ {
217
+ "type": "command",
218
+ "command": "${CLAUDE_PLUGIN_ROOT}/hooks/withdrawn-rulings.sh --session-start"
219
+ }
220
+ ]
221
+ },
204
222
  {
205
223
  "matcher": "",
206
224
  "hooks": [
@@ -248,6 +266,15 @@
248
266
  }
249
267
  ]
250
268
  },
269
+ {
270
+ "matcher": "",
271
+ "hooks": [
272
+ {
273
+ "type": "command",
274
+ "command": "${CLAUDE_PLUGIN_ROOT}/hooks/withdrawn-rulings.sh --session-start"
275
+ }
276
+ ]
277
+ },
251
278
  {
252
279
  "matcher": "",
253
280
  "hooks": [
@@ -51,7 +51,7 @@
51
51
  * @module inject-resolved-config
52
52
  */
53
53
  import { existsSync, readFileSync, realpathSync } from "node:fs";
54
- import { join } from "node:path";
54
+ import { basename, join } from "node:path";
55
55
  import { fileURLToPath } from "node:url";
56
56
 
57
57
  /** Committed, project-wide configuration. */
@@ -799,13 +799,32 @@ export function buildContext(projectDir) {
799
799
  ? `${MAIN_CONFIG} + ${LOCAL_CONFIG} (local wins where they overlap)`
800
800
  : `${MAIN_CONFIG} (no local override file)`;
801
801
 
802
+ // The block used to say "this project's" — a possessive with no referent
803
+ // anywhere in its text, so two repositories emitted blocks that were
804
+ // character-identical except for the values. An agent standing in one
805
+ // directory while doing work governed by another read something perfectly
806
+ // true about the directory and wrong about the work, and the next sentence
807
+ // told it not to open the files that would have shown the difference. Six
808
+ // independent agent cycles reached the same false conclusion from one such
809
+ // block (CodySwannGT/lisa#3765).
810
+ //
811
+ // `basename` rather than the git remote: naming the subject must not cost a
812
+ // subprocess on a hook that runs at every session and subagent start, and it
813
+ // must not fail in a directory that is not a git checkout. The absolute path
814
+ // beside it is the unambiguous identifier; the basename is the short name a
815
+ // reader actually compares against the work in front of them.
816
+ const subject = basename(projectDir) || projectDir;
817
+
802
818
  return block(
803
- `These are this project's EFFECTIVE Lisa configuration values, already resolved from ${sources}.\n` +
804
- `Act on them directly. Do not re-read the config files to learn them, and do not act ` +
805
- `against them. A line marked [Lisa built-in default] is NOT something this project ` +
806
- `declared. A key whose NAME is identity- or credential-shaped is withheld and counted, ` +
807
- `and a VALUE matching a known credential shape is replaced with ${REDACTED}: a ` +
808
- `best-effort filter, not proof that anything it left alone is safe to repeat.\n\n` +
819
+ `These are the EFFECTIVE Lisa configuration values for ${subject}, resolved from ${sources} ` +
820
+ `at ${projectDir}.\n` +
821
+ `Act on them directly and do not act against them. They describe THAT directory: if your ` +
822
+ `work targets a different repository, read that repository's config rather than these. For ` +
823
+ `work in ${subject}, do not re-read the config files to learn these values. A line marked ` +
824
+ `[Lisa built-in default] is NOT something ${subject} declared. A key whose NAME is identity- ` +
825
+ `or credential-shaped is withheld and counted, and a VALUE matching a known credential shape ` +
826
+ `is replaced with ${REDACTED}: a best-effort filter, not proof that anything it left alone ` +
827
+ `is safe to repeat.\n\n` +
809
828
  renderBody(resolved)
810
829
  );
811
830
  }