@codyswann/lisa 4.68.1 → 4.69.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 (115) hide show
  1. package/README.md +16 -0
  2. package/all/copy-overwrite/scripts/lisa-work-item.mjs +96 -5
  3. package/all/create-only/.github/workflows/continuous-gates.yml +2 -2
  4. package/all/create-only/.github/workflows/workflow-load-failure-sweep.yml +1 -1
  5. package/all/deletions.json +4 -2
  6. package/cdk/create-only/.github/workflows/ci.yml +2 -2
  7. package/cdk/create-only/.github/workflows/deploy.yml +3 -3
  8. package/cdk/package-lisa/package.lisa.json +4 -4
  9. package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
  10. package/dist/core/lisa-owned-hash-ledger.js +8 -0
  11. package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
  12. package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
  13. package/dist/core/project-config.d.ts +6 -0
  14. package/dist/core/project-config.d.ts.map +1 -1
  15. package/dist/core/project-config.js.map +1 -1
  16. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  17. package/dist/core/upstream-evidence-manifest.js +142 -43
  18. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  19. package/dist/opencode/plugin-templates/lisa-session-bootstrap.ts +41 -1
  20. package/expo/create-only/.github/workflows/ci.yml +3 -3
  21. package/expo/create-only/.github/workflows/deploy.yml +4 -4
  22. package/expo/create-only/.github/workflows/nightly-e2e-bypass-reaper.yml +1 -1
  23. package/expo/create-only/.github/workflows/playwright-e2e.yml +1 -1
  24. package/expo/create-only/eas.json +1 -1
  25. package/harper-fabric/copy-overwrite/.github/workflows/ci.yml +1 -1
  26. package/harper-fabric/create-only/.github/workflows/deploy.yml +3 -3
  27. package/harper-fabric/create-only/.github/workflows/zap-baseline.yml +1 -1
  28. package/harper-fabric/package-lisa/package.lisa.json +3 -3
  29. package/nestjs/create-only/.github/workflows/ci.yml +2 -2
  30. package/nestjs/create-only/.github/workflows/deploy.yml +5 -5
  31. package/nestjs/package-lisa/package.lisa.json +3 -3
  32. package/npm-package/package-lisa/package.lisa.json +3 -3
  33. package/package.json +12 -12
  34. package/phaser/copy-overwrite/.github/workflows/ci.yml +1 -1
  35. package/phaser/package-lisa/package.lisa.json +4 -4
  36. package/plugins/lisa/.claude-plugin/plugin.json +11 -1
  37. package/plugins/lisa/.codex-plugin/hooks.json +10 -0
  38. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  39. package/plugins/lisa/hooks/auto-update.mjs +756 -0
  40. package/plugins/lisa/hooks/auto-update.sh +31 -0
  41. package/plugins/lisa/hooks/enforcement-vintage-npm.mjs +2 -2
  42. package/plugins/lisa-agy/plugin.json +1 -1
  43. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  44. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  45. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  46. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  48. package/plugins/lisa-copilot/.claude-plugin/plugin.json +11 -1
  49. package/plugins/lisa-copilot/hooks/auto-update.mjs +756 -0
  50. package/plugins/lisa-copilot/hooks/auto-update.sh +31 -0
  51. package/plugins/lisa-copilot/hooks/enforcement-vintage-npm.mjs +2 -2
  52. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  53. package/plugins/lisa-cursor/hooks/auto-update.mjs +756 -0
  54. package/plugins/lisa-cursor/hooks/auto-update.sh +31 -0
  55. package/plugins/lisa-cursor/hooks/enforcement-vintage-npm.mjs +2 -2
  56. package/plugins/lisa-cursor/hooks/hooks.json +4 -0
  57. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  59. package/plugins/lisa-expo-agy/plugin.json +1 -1
  60. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  63. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  64. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  65. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  67. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  68. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  69. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  70. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  71. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  72. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  73. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  74. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  75. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  76. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  77. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  78. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  79. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  80. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  81. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  82. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  83. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  84. package/plugins/lisa-rails-agy/plugin.json +1 -1
  85. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  86. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  87. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  88. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  89. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  90. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  91. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  92. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  93. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  94. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  95. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  96. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  97. package/plugins/src/base/.claude-plugin/plugin.json +10 -0
  98. package/plugins/src/base/hooks/auto-update.mjs +756 -0
  99. package/plugins/src/base/hooks/auto-update.sh +31 -0
  100. package/plugins/src/base/hooks/enforcement-vintage-npm.mjs +2 -2
  101. package/scripts/lib/per-agent-hook-filter.mjs +13 -0
  102. package/scripts/two-channel-couplings.json +1 -1
  103. package/scripts/update-node-version.ts +51 -43
  104. package/typescript/copy-overwrite/.github/GITHUB_ACTIONS.md +2 -2
  105. package/typescript/copy-overwrite/.nvmrc +1 -1
  106. package/typescript/copy-overwrite/.prettierignore +0 -1
  107. package/typescript/copy-overwrite/audit.ignore.config.json +0 -6
  108. package/typescript/create-only/.github/workflows/ci.yml +1 -1
  109. package/typescript/create-only/.github/workflows/review-evidence.yml +1 -1
  110. package/typescript/create-only/.github/workflows/third-party-review-evidence.yml +1 -1
  111. package/typescript/package-lisa/package.lisa.json +9 -9
  112. package/ui/index.html +2 -2
  113. package/all/copy-overwrite/scripts/lisa-self-update.mjs +0 -1047
  114. package/all/create-only/.github/workflows/lisa-update.yml +0 -99
  115. package/scripts/lisa-self-update.mjs +0 -14
@@ -6,8 +6,9 @@
6
6
  * - install-pkgs.sh → install dependencies when node_modules is missing
7
7
  * - setup-jira-cli.sh → write jira-cli config from environment variables, only
8
8
  * when the project's configured tracker is jira
9
+ * - auto-update.sh → update the project to the latest Lisa (autoUpdate)
9
10
  *
10
- * Both are fully fail-open (wrapped in try/catch) so a package-manager or
11
+ * All are fully fail-open (wrapped in try/catch) so a package-manager or
11
12
  * filesystem hiccup never bricks OpenCode startup, mirroring the Codex scripts.
12
13
  * install only runs on the first session of a fresh checkout (node_modules
13
14
  * absent), so the common case is a cheap no-op.
@@ -61,6 +62,45 @@ export const LisaSessionBootstrap = async ({
61
62
  // fail open — never block startup on a dependency-install error
62
63
  }
63
64
 
65
+ // auto-update: the same engine as the Claude/Codex/Cursor/Copilot SessionStart
66
+ // hook (CodySwannGT/lisa#4337), run from the project's installed Lisa package,
67
+ // which ships `plugins/lisa/hooks/`. It is not a guard, so it is not staged
68
+ // beside this plugin; running it from node_modules is safe even though it
69
+ // rewrites node_modules, because Node has loaded it before anything changes.
70
+ // It runs after install so it sees the installed version, honours
71
+ // `autoUpdate: false`, only touches a clean tree, and reports what it did.
72
+ // OpenCode has no context-injection channel here, so the report goes to the
73
+ // console the session shows.
74
+ try {
75
+ const engine = `${root}/node_modules/@codyswann/lisa/plugins/lisa/hooks/auto-update.mjs`;
76
+ if (existsSync(engine) && !Bun.which("node")) {
77
+ console.error(
78
+ "lisa-auto-update: node is not on PATH, so the session-start Lisa update could not run. Install Node.js (or add it to PATH) to enable it."
79
+ );
80
+ } else if (existsSync(engine)) {
81
+ const result = await $`node ${engine} --project-dir ${root}`
82
+ .cwd(root)
83
+ .quiet()
84
+ .nothrow();
85
+ const text = String(result.stdout ?? "").trim();
86
+ if (text) {
87
+ const context = JSON.parse(text)?.hookSpecificOutput?.additionalContext;
88
+ if (context) console.error(context);
89
+ }
90
+ } else if (
91
+ existsSync(`${root}/node_modules/@codyswann/lisa/package.json`)
92
+ ) {
93
+ // This plugin is only written by an apply of a Lisa that ships the
94
+ // engine, so an installed Lisa without it means node_modules is older
95
+ // than the project's own files. Say so rather than skipping silently.
96
+ console.error(
97
+ "lisa-auto-update: the installed @codyswann/lisa predates this project's Lisa files, so the session-start update could not run. Run your package install to bring node_modules up to date."
98
+ );
99
+ }
100
+ } catch {
101
+ // fail open — a session must start even when the update cannot run
102
+ }
103
+
64
104
  // setup-jira-cli: write jira-cli config from environment variables and non-secret Lisa config.
65
105
  // Gated on `tracker: "jira"` — a project on Linear or GitHub Issues has no use
66
106
  // for a jira-cli config, and writing one made a false implicit claim about the
@@ -47,7 +47,7 @@ jobs:
47
47
  # declared a break, and says NOT DETERMINED if this line goes missing
48
48
  # (CodySwannGT/lisa#3698).
49
49
  expected_workflow_contract_major: '1'
50
- node_version: '22.21.1'
50
+ node_version: '22.23.3'
51
51
  package_manager: 'bun'
52
52
  skip_jobs: 'test:e2e,playwright_e2e'
53
53
  # Forward SE-4551 / SE-4552 inputs. `|| fromJSON('...')` falls back to
@@ -82,7 +82,7 @@ jobs:
82
82
  # declared a break, and says NOT DETERMINED if this line goes missing
83
83
  # (CodySwannGT/lisa#3698).
84
84
  expected_workflow_contract_major: '1'
85
- node_version: '22.21.1'
85
+ node_version: '22.23.3'
86
86
  package_manager: 'bun'
87
87
 
88
88
  zap:
@@ -98,5 +98,5 @@ jobs:
98
98
  # declared a break, and says NOT DETERMINED if this line goes missing
99
99
  # (CodySwannGT/lisa#3698).
100
100
  expected_workflow_contract_major: '1'
101
- node_version: '22.21.1'
101
+ node_version: '22.23.3'
102
102
  package_manager: 'bun'
@@ -114,7 +114,7 @@ jobs:
114
114
  # (CodySwannGT/lisa#3698).
115
115
  expected_workflow_contract_major: '1'
116
116
  moment: pre-deploy:${{ needs.determine_environment.outputs.environment }}
117
- node_version: '22.21.1'
117
+ node_version: '22.23.3'
118
118
  package_manager: 'bun'
119
119
  # No `secrets:` key: gates.yml declares none in its `workflow_call`, so
120
120
  # passing any grants everything to a callee that reads nothing (#3065).
@@ -142,7 +142,7 @@ jobs:
142
142
  approval_environment: ${{ needs.determine_environment.outputs.approval_environment }}
143
143
  require_signatures: false
144
144
  generate_sbom: true
145
- node_version: '22.21.1'
145
+ node_version: '22.23.3'
146
146
  package_manager: 'bun'
147
147
  override_blackout: true
148
148
  emergency_release: false
@@ -330,7 +330,7 @@ jobs:
330
330
  uses: actions/setup-node@v6
331
331
  with:
332
332
  package-manager-cache: false
333
- node-version: '22.21.1'
333
+ node-version: '22.23.3'
334
334
  - name: 🍞 Setup Bun
335
335
  uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
336
336
  with:
@@ -424,7 +424,7 @@ jobs:
424
424
  # (CodySwannGT/lisa#3698).
425
425
  expected_workflow_contract_major: '1'
426
426
  moment: post-deploy:${{ needs.determine_environment.outputs.environment }}
427
- node_version: '22.21.1'
427
+ node_version: '22.23.3'
428
428
  package_manager: 'bun'
429
429
  # No `secrets:` key: gates.yml declares none in its `workflow_call`, so
430
430
  # passing any grants everything to a callee that reads nothing (#3065).
@@ -93,7 +93,7 @@ jobs:
93
93
  uses: actions/setup-node@v6
94
94
  with:
95
95
  package-manager-cache: false
96
- node-version: '22'
96
+ node-version: '22.23.3'
97
97
 
98
98
  - name: 🔎 Locate the guard
99
99
  id: guard
@@ -137,7 +137,7 @@ jobs:
137
137
  # declared a break, and says NOT DETERMINED if this line goes missing
138
138
  # (CodySwannGT/lisa#3698).
139
139
  expected_workflow_contract_major: '1'
140
- node_version: '22.21.1'
140
+ node_version: '22.23.3'
141
141
  package_manager: 'bun'
142
142
  # The moment this workflow's cadence corresponds to. It is what makes the
143
143
  # `.lisa.config.json` declaration above readable from here — a gate
@@ -5,7 +5,7 @@
5
5
  },
6
6
  "build": {
7
7
  "base": {
8
- "node": "22.21.1",
8
+ "node": "22.23.3",
9
9
  "resourceClass": "large",
10
10
  "env": {
11
11
  "NODE_OPTIONS": "--max-old-space-size=4096",
@@ -26,7 +26,7 @@ jobs:
26
26
  # declared a break, and says NOT DETERMINED if this line goes missing
27
27
  # (CodySwannGT/lisa#3698).
28
28
  expected_workflow_contract_major: '1'
29
- node_version: '22.21.1'
29
+ node_version: '22.23.3'
30
30
  package_manager: 'bun'
31
31
  skip_jobs: ''
32
32
  secrets:
@@ -41,7 +41,7 @@ jobs:
41
41
  # (CodySwannGT/lisa#3698).
42
42
  expected_workflow_contract_major: '1'
43
43
  moment: pre-deploy:${{ github.ref_name }}
44
- node_version: '22.21.1'
44
+ node_version: '22.23.3'
45
45
  package_manager: 'bun'
46
46
  # No `secrets:` key: gates.yml declares none in its `workflow_call`, so
47
47
  # passing any grants everything to a callee that reads nothing (#3065).
@@ -64,7 +64,7 @@ jobs:
64
64
  - name: Setup Node.js
65
65
  uses: actions/setup-node@v6
66
66
  with:
67
- node-version: '22.21.1'
67
+ node-version: '22.23.3'
68
68
  package-manager-cache: false
69
69
 
70
70
  - name: Setup Bun
@@ -132,7 +132,7 @@ jobs:
132
132
  # (CodySwannGT/lisa#3698).
133
133
  expected_workflow_contract_major: '1'
134
134
  moment: post-deploy:${{ github.ref_name }}
135
- node_version: '22.21.1'
135
+ node_version: '22.23.3'
136
136
  package_manager: 'bun'
137
137
  # No `secrets:` key: gates.yml declares none in its `workflow_call`, so
138
138
  # passing any grants everything to a callee that reads nothing (#3065).
@@ -33,7 +33,7 @@ jobs:
33
33
  - name: Setup Node.js
34
34
  uses: actions/setup-node@v6
35
35
  with:
36
- node-version: '22.21.1'
36
+ node-version: '22.23.3'
37
37
  package-manager-cache: false
38
38
 
39
39
  - name: Setup Bun
@@ -38,7 +38,7 @@
38
38
  "@eslint/eslintrc": "^3.2.0",
39
39
  "@eslint/js": "^9.39.0",
40
40
  "@types/node": "^22.0.0",
41
- "@vitest/coverage-v8": "^4.1.0",
41
+ "@vitest/coverage-v8": "^4.1.11",
42
42
  "eslint": "^9.39.0",
43
43
  "eslint-config-prettier": "^10.0.0",
44
44
  "eslint-import-resolver-typescript": "^4.4.4",
@@ -58,14 +58,14 @@
58
58
  "tsx": "^4.20.6",
59
59
  "typescript": "^6.0.3",
60
60
  "uuid": "^13.0.0",
61
- "vitest": "^4.1.0"
61
+ "vitest": "^4.1.11"
62
62
  },
63
63
  "engines": {
64
64
  "npm": "please-use-bun",
65
65
  "yarn": "please-use-bun",
66
66
  "pnpm": "please-use-bun",
67
67
  "bun": ">= 1.3.11",
68
- "node": ">= 22.21.1"
68
+ "node": ">= 22.23.3"
69
69
  },
70
70
  "packageManager": "bun@1.3.11",
71
71
  "private": true
@@ -28,7 +28,7 @@ jobs:
28
28
  # declared a break, and says NOT DETERMINED if this line goes missing
29
29
  # (CodySwannGT/lisa#3698).
30
30
  expected_workflow_contract_major: '1'
31
- node_version: '22.21.1'
31
+ node_version: '22.23.3'
32
32
  package_manager: 'bun'
33
33
  skip_jobs: 'test:e2e,playwright_e2e'
34
34
  secrets:
@@ -56,5 +56,5 @@ jobs:
56
56
  # declared a break, and says NOT DETERMINED if this line goes missing
57
57
  # (CodySwannGT/lisa#3698).
58
58
  expected_workflow_contract_major: '1'
59
- node_version: '22.21.1'
59
+ node_version: '22.23.3'
60
60
  package_manager: 'bun'
@@ -110,7 +110,7 @@ jobs:
110
110
  # (CodySwannGT/lisa#3698).
111
111
  expected_workflow_contract_major: '1'
112
112
  moment: pre-deploy:${{ needs.determine_environment.outputs.environment }}
113
- node_version: '22.21.1'
113
+ node_version: '22.23.3'
114
114
  package_manager: 'bun'
115
115
  # No `secrets:` key: gates.yml declares none in its `workflow_call`, so
116
116
  # passing any grants everything to a callee that reads nothing (#3065).
@@ -139,7 +139,7 @@ jobs:
139
139
  require_approval: ${{ needs.determine_environment.outputs.require_approval == 'true' }}
140
140
  approval_environment: ${{ needs.determine_environment.outputs.approval_environment }}
141
141
  require_signatures: false
142
- node_version: '22.21.1'
142
+ node_version: '22.23.3'
143
143
  package_manager: 'bun'
144
144
  secrets:
145
145
  DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
@@ -306,10 +306,10 @@ jobs:
306
306
  contents: read
307
307
  steps:
308
308
  - uses: actions/checkout@v6
309
- - name: Use Node.js 22.21.1
309
+ - name: Use Node.js 22.23.3
310
310
  uses: actions/setup-node@v6
311
311
  with:
312
- node-version: 22.21.1
312
+ node-version: 22.23.3
313
313
  package-manager-cache: false
314
314
  - uses: noliran/branch-based-secrets@ef9182f16f118c7c3d05c36973546ebc990b8c69 # v1 (2020-10-09, no semver tag)
315
315
  with:
@@ -462,7 +462,7 @@ jobs:
462
462
  # (CodySwannGT/lisa#3698).
463
463
  expected_workflow_contract_major: '1'
464
464
  moment: post-deploy:${{ needs.determine_environment.outputs.environment }}
465
- node_version: '22.21.1'
465
+ node_version: '22.23.3'
466
466
  package_manager: 'bun'
467
467
  # No `secrets:` key: gates.yml declares none in its `workflow_call`, so
468
468
  # passing any grants everything to a callee that reads nothing (#3065).
@@ -97,9 +97,9 @@
97
97
  "serverless": "^4.30.0",
98
98
  "serverless-esbuild": "^1.57.0",
99
99
  "serverless-offline": "^14.4.0",
100
- "vite": "^8.0.16",
101
- "vitest": "^4.1.0",
102
- "@vitest/coverage-v8": "^4.1.0",
100
+ "vite": "^8.3.2",
101
+ "vitest": "^4.1.11",
102
+ "@vitest/coverage-v8": "^4.1.11",
103
103
  "eslint-plugin-oxlint": "^1.62.0",
104
104
  "oxlint": "^1.62.0",
105
105
  "oxlint-tsgolint": "^0.24.0",
@@ -14,9 +14,9 @@
14
14
  "test:watch:lisa": "node scripts/lib/worktree-dependencies.mjs && lisa-test-run --profile npm-package --adapter vitest -- vitest"
15
15
  },
16
16
  "devDependencies": {
17
- "vite": "^8.0.16",
18
- "vitest": "^4.1.0",
19
- "@vitest/coverage-v8": "^4.1.0"
17
+ "vite": "^8.3.2",
18
+ "vitest": "^4.1.11",
19
+ "@vitest/coverage-v8": "^4.1.11"
20
20
  },
21
21
  "overrides": {
22
22
  "vite": "$vite"
package/package.json CHANGED
@@ -109,7 +109,7 @@
109
109
  "yarn": "please-use-bun",
110
110
  "pnpm": "please-use-bun",
111
111
  "bun": "1.3.8",
112
- "node": "22.21.1"
112
+ "node": "22.23.3"
113
113
  },
114
114
  "workspaces": [
115
115
  "eslint-plugin-code-organization",
@@ -146,7 +146,7 @@
146
146
  ],
147
147
  "resolutions": {
148
148
  "@isaacs/brace-expansion": "^5.0.1",
149
- "axios": ">=1.15.2",
149
+ "axios": ">=1.20.0",
150
150
  "browserslist": ">=4.28.8",
151
151
  "deepmerge-ts": "^8.0.1",
152
152
  "esbuild": ">=0.28.1",
@@ -158,7 +158,7 @@
158
158
  "multer": ">=2.3.0",
159
159
  "nanoid": "^3.3.18",
160
160
  "postcss": ">=8.5.18",
161
- "undici": "^6.28.0",
161
+ "undici": "^6.28.1",
162
162
  "vite": "$vite",
163
163
  "ws": ">=8.21.0",
164
164
  "zod-validation-error": "^4.0.0"
@@ -169,7 +169,7 @@
169
169
  "@istanbuljs/load-nyc-config": {
170
170
  "js-yaml": "^3.15.1"
171
171
  },
172
- "axios": ">=1.15.2",
172
+ "axios": ">=1.20.0",
173
173
  "browserslist": ">=4.28.8",
174
174
  "deepmerge-ts": "^8.0.1",
175
175
  "esbuild": ">=0.28.1",
@@ -181,13 +181,13 @@
181
181
  "multer": ">=2.3.0",
182
182
  "nanoid": "^3.3.18",
183
183
  "postcss": ">=8.5.18",
184
- "undici": "^6.28.0",
184
+ "undici": "^6.28.1",
185
185
  "vite": "$vite",
186
186
  "ws": ">=8.21.0",
187
187
  "zod-validation-error": "^4.0.0"
188
188
  },
189
189
  "name": "@codyswann/lisa",
190
- "version": "4.68.1",
190
+ "version": "4.69.1",
191
191
  "description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
192
192
  "main": "dist/index.js",
193
193
  "exports": {
@@ -271,7 +271,7 @@
271
271
  "@types/jest": "^30.0.0",
272
272
  "@types/lodash.merge": "^4.6.0",
273
273
  "@types/node": "^22.0.0",
274
- "@vitest/coverage-v8": "^4.1.9",
274
+ "@vitest/coverage-v8": "^4.1.11",
275
275
  "commander": "^12.0.0",
276
276
  "esbuild-register": "^3.6.0",
277
277
  "eslint": "^9.39.0",
@@ -311,7 +311,7 @@
311
311
  "tsx": "^4.0.0",
312
312
  "typescript": "^6.0.3",
313
313
  "typescript-eslint": "^8.0.0",
314
- "vitest": "^4.1.9"
314
+ "vitest": "^4.1.11"
315
315
  },
316
316
  "devDependencies": {
317
317
  "@actions/expressions": "0.3.61",
@@ -328,7 +328,7 @@
328
328
  "fast-check": "^4.9.0",
329
329
  "oxlint": "^1.62.0",
330
330
  "oxlint-tsgolint": "^0.24.0",
331
- "vite": "^8.0.16"
331
+ "vite": "^8.3.2"
332
332
  },
333
333
  "type": "module",
334
334
  "directories": {
@@ -336,7 +336,7 @@
336
336
  "test": "tests"
337
337
  },
338
338
  "types": "./dist/index.d.ts",
339
- "lisaReleaseCommit": "d58ad3182285c14e174f430045b385a678a07bcd",
340
- "gitHead": "d58ad3182285c14e174f430045b385a678a07bcd",
341
- "lisaReleaseTag": "v4.68.1"
339
+ "lisaReleaseCommit": "995f533b00d9b8a60256096bf6d28940164cd893",
340
+ "gitHead": "995f533b00d9b8a60256096bf6d28940164cd893",
341
+ "lisaReleaseTag": "v4.69.1"
342
342
  }
@@ -29,7 +29,7 @@ jobs:
29
29
  # declared a break, and says NOT DETERMINED if this line goes missing
30
30
  # (CodySwannGT/lisa#3698).
31
31
  expected_workflow_contract_major: '1'
32
- node_version: '22.21.1'
32
+ node_version: '22.23.3'
33
33
  package_manager: 'bun'
34
34
  skip_jobs: ''
35
35
  # Verification IS UAT: a feat/fix must ship a tests/e2e verification spec
@@ -31,7 +31,7 @@
31
31
  "@eslint/eslintrc": "^3.2.0",
32
32
  "@eslint/js": "^9.39.0",
33
33
  "@types/node": "^22.0.0",
34
- "@vitest/coverage-v8": "^4.1.0",
34
+ "@vitest/coverage-v8": "^4.1.11",
35
35
  "eslint": "^9.39.0",
36
36
  "eslint-config-prettier": "^10.0.0",
37
37
  "eslint-import-resolver-typescript": "^4.4.4",
@@ -50,14 +50,14 @@
50
50
  "prettier": "^3.3.3",
51
51
  "tsx": "^4.20.6",
52
52
  "typescript": "^6.0.3",
53
- "vitest": "^4.1.0"
53
+ "vitest": "^4.1.11"
54
54
  },
55
55
  "engines": {
56
56
  "npm": "please-use-bun",
57
57
  "yarn": "please-use-bun",
58
58
  "pnpm": "please-use-bun",
59
59
  "bun": ">= 1.3.11",
60
- "node": ">= 22.21.1"
60
+ "node": ">= 22.23.3"
61
61
  },
62
62
  "packageManager": "bun@1.3.11",
63
63
  "private": true,
@@ -102,7 +102,7 @@
102
102
  "phaser": "^4.2.0"
103
103
  },
104
104
  "devDependencies": {
105
- "vite": "^8.0.16",
105
+ "vite": "^8.3.2",
106
106
  "vite-plugin-pwa": "^1.3.0",
107
107
  "@playwright/test": "^1.56.1",
108
108
  "free-tex-packer-core": "^0.3.8",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "4.68.1",
3
+ "version": "4.69.1",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -294,6 +294,16 @@
294
294
  }
295
295
  ]
296
296
  },
297
+ {
298
+ "matcher": "startup",
299
+ "hooks": [
300
+ {
301
+ "type": "command",
302
+ "command": "${CLAUDE_PLUGIN_ROOT}/hooks/auto-update.sh",
303
+ "timeout": 600
304
+ }
305
+ ]
306
+ },
297
307
  {
298
308
  "matcher": "",
299
309
  "hooks": [
@@ -216,6 +216,16 @@
216
216
  }
217
217
  ]
218
218
  },
219
+ {
220
+ "matcher": "startup",
221
+ "hooks": [
222
+ {
223
+ "type": "command",
224
+ "command": "${PLUGIN_ROOT}/hooks/auto-update.sh",
225
+ "timeout": 600
226
+ }
227
+ ]
228
+ },
219
229
  {
220
230
  "matcher": "",
221
231
  "hooks": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "4.68.1",
3
+ "version": "4.69.1",
4
4
  "description": "Universal governance: agents, skills, commands, hooks, and rules for all projects.",
5
5
  "author": {
6
6
  "name": "Cody Swann"