@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
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env bash
2
+ # SessionStart: keep the project on the latest Lisa, locally
3
+ # (CodySwannGT/lisa#4337). `autoUpdate` in .lisa.config.json defaults to on;
4
+ # `false` opts out.
5
+ #
6
+ # All the work lives in the sibling `.mjs`, which is unit-tested. This wrapper
7
+ # only resolves the project root and hands off — the same division
8
+ # `enforcement-vintage.sh` beside it makes.
9
+ #
10
+ # FAIL SOFT, ALWAYS. Every exit is 0: a session must start even when the update
11
+ # cannot run, and the `.mjs` reports what it could not do in the context.
12
+ set -uo pipefail
13
+
14
+ cat >/dev/null 2>&1 || true
15
+
16
+ ROOT="${CLAUDE_PLUGIN_ROOT:-${PLUGIN_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)}}"
17
+ RUNNER="$ROOT/hooks/auto-update.mjs"
18
+
19
+ [ -f "$RUNNER" ] || exit 0
20
+ command -v node >/dev/null 2>&1 || exit 0
21
+
22
+ # CLAUDE_PROJECT_DIR is the harness's own declaration of the root; the git
23
+ # toplevel is the fallback, because the manifest and node_modules this updates
24
+ # live at the repository root, not at whatever directory the session opened in.
25
+ PROJECT_DIR="${CLAUDE_PROJECT_DIR:-}"
26
+ if [ -z "${PROJECT_DIR}" ] || [ ! -d "${PROJECT_DIR}" ]; then
27
+ PROJECT_DIR="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
28
+ fi
29
+
30
+ node "$RUNNER" --project-dir "$PROJECT_DIR" || true
31
+ exit 0
@@ -259,8 +259,8 @@ export function renderNpmRows(state) {
259
259
  const guidance = state.projectBehind
260
260
  ? [
261
261
  `PROJECT BEHIND — this project installs lisa ${state.pin?.version} while lisa ${state.latest?.version} is published.`,
262
- "- Do NOT upgrade Lisa inside the current task: a version bump plus its template apply belongs in its own pull request, never mixed into feature work.",
263
- "- Check for an open pull request on a `lisa/update-*` branch. If none is open, the project's Lisa Update workflow (`.github/workflows/lisa-update.yml`) opens one on its schedule; say so in your report, and if that workflow is missing, recommend running `lisa apply` once so the project receives it.",
262
+ "- Do NOT upgrade Lisa by hand inside the current task. The session-start auto-update applies it on a clean tree as its own commit; see the lisa-auto-update block for what it did this session.",
263
+ '- If it did not run (autoUpdate is false, the tree was dirty, or it failed), say so in your report; the update happens at the start of the next session on a clean tree, or with "autoUpdate" left on.',
264
264
  ]
265
265
  : [];
266
266
  return { rows, guidance };
@@ -170,6 +170,19 @@ const SCRIPT_RULES = {
170
170
  agy: false,
171
171
  copilot: true,
172
172
  },
173
+ // Session-start local Lisa update (CodySwannGT/lisa#4337). Every harness with
174
+ // a session-start event gets it; OpenCode runs the same engine from its
175
+ // session bootstrap plugin. Documented gap: agy has no SessionStart event, so
176
+ // agy sessions never auto-update — the project still updates the next time a
177
+ // session on any other harness starts in it, and `lisa doctor` reports a
178
+ // stale install on every agent.
179
+ "auto-update.sh": {
180
+ claude: true,
181
+ codex: true,
182
+ cursor: true,
183
+ agy: false,
184
+ copilot: true,
185
+ },
173
186
  "inject-flow-context.sh": {
174
187
  claude: true,
175
188
  codex: true,
@@ -97,7 +97,7 @@
97
97
  "workflows": 23,
98
98
  "steps": 784,
99
99
  "couplings": 33,
100
- "inventory": 91
100
+ "inventory": 90
101
101
  },
102
102
  "counts": {
103
103
  "package-backed": 10,
@@ -15,6 +15,7 @@
15
15
  * bun scripts/update-node-version.ts
16
16
  * ```
17
17
  */
18
+ import { execFileSync } from "node:child_process";
18
19
  import * as fs from "node:fs";
19
20
  import * as path from "node:path";
20
21
 
@@ -35,17 +36,21 @@ interface ReplacementPattern {
35
36
  }
36
37
 
37
38
  const WORKFLOW_PATTERNS: readonly ReplacementPattern[] = [
38
- // node_version: '22.21.1' (workflow input defaults)
39
+ // Include reusable-workflow defaults and expression fallbacks as well as
40
+ // ordinary callers. Only Node-shaped keys are rewritten.
39
41
  {
40
- pattern: /(node_version:\s*['"])[\d.]+(['"])/g,
42
+ pattern: /((?:node_version|node-version):\s*['"]?)\d+\.\d+\.\d+(['"]?)/g,
41
43
  replacement: VERSION_REPLACEMENT,
42
44
  },
43
- // node-version: '22.21.1' (actions/setup-node)
44
45
  {
45
- pattern: /(node-version:\s*['"])[\d.]+(['"])/g,
46
+ pattern:
47
+ /(node_version:\n(?: +(?:description|type|required):[^\n]*\n)* +default: *['"])\d+\.\d+\.\d+(['"])/g,
48
+ replacement: VERSION_REPLACEMENT,
49
+ },
50
+ {
51
+ pattern: /(node-version:.*?\|\|\s*['"])\d+\.\d+\.\d+(['"])/g,
46
52
  replacement: VERSION_REPLACEMENT,
47
53
  },
48
- // node-version: '22.x' (major version pattern)
49
54
  {
50
55
  pattern: /(node-version:\s*['"])\d+\.x(['"])/g,
51
56
  replacement: "$1{{major}}.x$2",
@@ -53,43 +58,39 @@ const WORKFLOW_PATTERNS: readonly ReplacementPattern[] = [
53
58
  ];
54
59
 
55
60
  const PACKAGE_JSON_PATTERN: ReplacementPattern = {
56
- pattern: /("node":\s*["'])[\d.]+(["'])/g,
61
+ pattern: /("node":\s*["'](?:>=\s*)?)\d+\.\d+\.\d+(["'])/g,
57
62
  replacement: VERSION_REPLACEMENT,
58
63
  };
59
64
 
60
65
  /**
61
- * Files to update (relative to project root)
66
+ * Current tracked runtime surfaces, rather than the removed merge/workflow
67
+ * paths used by the original updater. Historical plans and test fixtures are
68
+ * deliberately excluded. Adding a shipped stack workflow needs no list edit.
69
+ * @returns Existing repository-relative files governed by shared Node policy
62
70
  */
63
- const FILES_TO_UPDATE: readonly string[] = [
64
- // This project's workflows
65
- ".github/workflows/ci.yml",
66
- ".github/workflows/quality.yml",
67
- ".github/workflows/publish-to-npm.yml",
68
-
69
- // TypeScript template workflows
70
- "typescript/copy-overwrite/.github/workflows/quality.yml",
71
- "typescript/copy-overwrite/.github/workflows/release.yml",
72
- "typescript/copy-overwrite/.github/workflows/create-github-issue-on-failure.yml",
73
- "typescript/copy-overwrite/.github/workflows/create-jira-issue-on-failure.yml",
74
- "typescript/copy-overwrite/.github/workflows/create-sentry-issue-on-failure.yml",
75
- "typescript/merge/package.json",
76
-
77
- // Expo template workflows
78
- "expo/copy-overwrite/.github/workflows/ci.yml",
79
- "expo/copy-overwrite/.github/workflows/deploy.yml",
80
- "expo/copy-overwrite/.github/workflows/build.yml",
81
- "expo/copy-overwrite/.github/workflows/lighthouse.yml",
82
-
83
- // NestJS template workflows
84
- "nestjs/copy-overwrite/.github/workflows/ci.yml",
85
- "nestjs/copy-overwrite/.github/workflows/deploy.yml",
86
-
87
- // CDK template workflows
88
- "cdk/copy-overwrite/workflows/ci.yml",
89
-
90
- // npm-package template workflows
91
- "npm-package/copy-overwrite/.github/workflows/publish-to-npm.yml",
92
- ];
71
+ function filesToUpdate(): readonly string[] {
72
+ return execFileSync("git", ["ls-files", "-z"], {
73
+ cwd: PROJECT_ROOT,
74
+ encoding: "utf8",
75
+ })
76
+ .split("\0")
77
+ .filter(
78
+ file =>
79
+ [
80
+ "package.json",
81
+ "package.lisa.json",
82
+ "typescript/copy-overwrite/.nvmrc",
83
+ "expo/create-only/eas.json",
84
+ ].includes(file) ||
85
+ /^(?:typescript|cdk|nestjs|npm-package|phaser|harper-fabric)\/package-lisa\/package\.lisa\.json$/.test(
86
+ file
87
+ ) ||
88
+ /^\.github\/workflows\/[^/]+\.ya?ml$/.test(file) ||
89
+ /^(?:all|typescript|cdk|expo|nestjs|npm-package|phaser|harper-fabric)\/(?:copy-overwrite|create-only)\/\.github\/workflows\/[^/]+\.ya?ml$/.test(
90
+ file
91
+ )
92
+ );
93
+ }
93
94
 
94
95
  /**
95
96
  * Reads the Node.js version from .nvmrc
@@ -100,7 +101,7 @@ function readNvmrcVersion(): string {
100
101
 
101
102
  if (!/^\d+\.\d+\.\d+$/.test(content)) {
102
103
  throw new Error(
103
- `Invalid version format in .nvmrc: "${content}". Expected semver (e.g., 22.21.1)`
104
+ `Invalid version format in .nvmrc: "${content}". Expected semver (e.g., 22.23.3)`
104
105
  );
105
106
  }
106
107
 
@@ -133,9 +134,16 @@ function updateFile(
133
134
  let content = originalContent;
134
135
  let totalChanges = 0;
135
136
 
136
- const patterns = filePath.endsWith(".json")
137
- ? [PACKAGE_JSON_PATTERN]
138
- : WORKFLOW_PATTERNS;
137
+ if (filePath.endsWith(".nvmrc")) {
138
+ content = `${version}\n`;
139
+ totalChanges = Number(content !== originalContent);
140
+ }
141
+
142
+ const patterns = filePath.endsWith(".nvmrc")
143
+ ? []
144
+ : filePath.endsWith(".json")
145
+ ? [PACKAGE_JSON_PATTERN]
146
+ : WORKFLOW_PATTERNS;
139
147
 
140
148
  patterns.forEach(({ pattern, replacement }) => {
141
149
  const resolvedReplacement = replacement
@@ -179,7 +187,7 @@ function main(): void {
179
187
  let filesUpdated = 0;
180
188
  let totalChanges = 0;
181
189
 
182
- FILES_TO_UPDATE.forEach(file => {
190
+ filesToUpdate().forEach(file => {
183
191
  const result = updateFile(file, version, majorVersion);
184
192
  if (result.updated) {
185
193
  filesUpdated++;
@@ -193,7 +201,7 @@ function main(): void {
193
201
 
194
202
  if (filesUpdated > 0) {
195
203
  console.log(
196
- "\nRemember to commit these changes and regenerate package-lock.json if needed."
204
+ "\nRemember to commit these changes and refresh the repository lockfile if needed."
197
205
  );
198
206
  }
199
207
  }
@@ -68,7 +68,7 @@ Runs on every pull request to validate code quality:
68
68
  **Configuration**:
69
69
  ```yaml
70
70
  # In ci.yml, modify these inputs:
71
- node_version: '22.21.1'
71
+ node_version: '22.23.3'
72
72
  package_manager: 'bun'
73
73
  skip_jobs: 'test,test:integration,test:e2e' # Comma-separated list
74
74
  ```
@@ -610,7 +610,7 @@ release.yml and create the environment in **Settings** > **Environments** first
610
610
  ```yaml
611
611
  uses: ./.github/workflows/quality.yml
612
612
  with:
613
- node_version: '22.21.1'
613
+ node_version: '22.23.3'
614
614
  package_manager: 'bun' # or npm, yarn
615
615
  ```
616
616
 
@@ -1 +1 @@
1
- 22.21.1
1
+ 22.23.3
@@ -92,7 +92,6 @@ scripts/lisa-postinstall.mjs
92
92
  scripts/lisa-reconcile-policy.mjs
93
93
  scripts/lisa-run-gates.mjs
94
94
  scripts/lisa-schema-validate.mjs
95
- scripts/lisa-self-update.mjs
96
95
  scripts/lisa-test-node.mjs
97
96
  scripts/lisa-work-item.mjs
98
97
  scripts/lisa-worktree-guard.mjs
@@ -137,12 +137,6 @@
137
137
  "id": "GHSA-j759-j44w-7fr8",
138
138
  "package": "@xmldom/xmldom",
139
139
  "reason": "XML node injection via unvalidated comment serialization. Transitive via expo > @expo/config-plugins > @expo/plist; only serializes developer-authored plist files at build/prebuild time, no runtime code path serializes attacker-controlled XML."
140
- },
141
- {
142
- "id": "GHSA-vfj7-8cjw-p6xm",
143
- "cve": "CVE-2026-93687",
144
- "package": "braces",
145
- "reason": "Stack-exhaustion DoS (uncaught RangeError) via deeply nested brace patterns; no patched release exists. Keep this exclusion only if no runtime code path passes attacker-supplied glob or brace patterns to braces/micromatch (dev tooling expanding repo-owned globs is unaffected)."
146
140
  }
147
141
  ]
148
142
  }
@@ -31,7 +31,7 @@ jobs:
31
31
  # declared a break, and says NOT DETERMINED if this line goes missing
32
32
  # (CodySwannGT/lisa#3698).
33
33
  expected_workflow_contract_major: '1'
34
- node_version: '22.21.1'
34
+ node_version: '22.23.3'
35
35
  package_manager: 'bun'
36
36
  skip_jobs: ''
37
37
  secrets:
@@ -190,7 +190,7 @@ jobs:
190
190
  uses: actions/setup-node@v6
191
191
  with:
192
192
  package-manager-cache: false
193
- node-version: '22.21.1'
193
+ node-version: '22.23.3'
194
194
 
195
195
  - name: 🕵️ Refuse a required check that reviewed nothing
196
196
  id: review_evidence
@@ -90,7 +90,7 @@ jobs:
90
90
  uses: actions/setup-node@v6
91
91
  with:
92
92
  package-manager-cache: false
93
- node-version: ${{ vars.NODE_VERSION || '22.21.1' }}
93
+ node-version: ${{ vars.NODE_VERSION || '22.23.3' }}
94
94
 
95
95
  - name: 🕵️ Prove review evidence, or a posted substitute, at this head
96
96
  env:
@@ -40,26 +40,26 @@
40
40
  },
41
41
  "resolutions": {
42
42
  "@isaacs/brace-expansion": "^5.0.1",
43
- "axios": ">=1.18.0",
43
+ "axios": ">=1.20.0",
44
44
  "esbuild": ">=0.28.1",
45
45
  "handlebars": ">=4.7.9",
46
46
  "lodash": ">=4.18.1",
47
47
  "multer": ">=2.3.0",
48
- "undici": "^6.28.0",
49
- "vite": ">=8.0.16",
48
+ "undici": "^6.28.1",
49
+ "vite": "^8.3.2",
50
50
  "ws": ">=8.21.0",
51
51
  "form-data": ">=4.0.6",
52
52
  "systeminformation": ">=5.31.7"
53
53
  },
54
54
  "overrides": {
55
55
  "@isaacs/brace-expansion": "^5.0.1",
56
- "axios": ">=1.18.0",
56
+ "axios": ">=1.20.0",
57
57
  "esbuild": ">=0.28.1",
58
58
  "handlebars": ">=4.7.9",
59
59
  "lodash": ">=4.18.1",
60
60
  "multer": ">=2.3.0",
61
- "undici": "^6.28.0",
62
- "vite": "^8.0.16",
61
+ "undici": "^6.28.1",
62
+ "vite": "^8.3.2",
63
63
  "ws": ">=8.21.0",
64
64
  "form-data": ">=4.0.6",
65
65
  "systeminformation": ">=5.31.7"
@@ -68,12 +68,12 @@
68
68
  "defaults": {
69
69
  "devDependencies": {
70
70
  "@ast-grep/cli": "^0.40.4",
71
- "@vitest/coverage-v8": "^4.1.0",
71
+ "@vitest/coverage-v8": "^4.1.11",
72
72
  "eslint": "^9.39.0",
73
73
  "husky": "^8.0.0",
74
74
  "prettier": "^3.3.3",
75
75
  "typescript": "^6.0.3",
76
- "vitest": "^4.1.0"
76
+ "vitest": "^4.1.11"
77
77
  },
78
78
  "scripts": {
79
79
  "build": "node scripts/lib/worktree-dependencies.mjs && tsc",
@@ -97,7 +97,7 @@
97
97
  "yarn": "please-use-bun",
98
98
  "pnpm": "please-use-bun",
99
99
  "bun": "1.3.8",
100
- "node": "22.21.1"
100
+ "node": "22.23.3"
101
101
  }
102
102
  },
103
103
  "merge": {
package/ui/index.html CHANGED
@@ -7525,7 +7525,7 @@
7525
7525
  more: [
7526
7526
  "Enforced configs: eslint.config.ts, tsconfig.json, vitest.config.ts, knip.json, commitlint, Prettier, ast-grep",
7527
7527
  "Seeded once: ci.yml, claude*.yml, nightly improvement workflows, eslint.config.local.ts, thresholds files",
7528
- "package.json governance: lint/test/typecheck scripts forced, security overrides forced, engines bun 1.3.8 / node 22.21.1 defaulted",
7528
+ "package.json governance: lint/test/typecheck scripts forced, security overrides forced, engines bun 1.3.8 / node 22.23.3 defaulted",
7529
7529
  ],
7530
7530
  },
7531
7531
  {
@@ -9662,7 +9662,7 @@
9662
9662
  key: "node_version",
9663
9663
  label: "Node version",
9664
9664
  desc: "",
9665
- control: txt("22.21.1", { mono: true }),
9665
+ control: txt("22.23.3", { mono: true }),
9666
9666
  },
9667
9667
  {
9668
9668
  key: "verify_enforced",