@codyswann/lisa 3.29.2 → 3.30.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.
- package/all/copy-overwrite/scripts/lisa-hooks/block-managed-file-edits.sh +48 -1
- package/all/copy-overwrite/scripts/lisa-work-item.mjs +29 -1
- package/dist/cli/doctor-serialize-legs-contract.d.ts +69 -0
- package/dist/cli/doctor-serialize-legs-contract.d.ts.map +1 -0
- package/dist/cli/doctor-serialize-legs-contract.js +159 -0
- package/dist/cli/doctor-serialize-legs-contract.js.map +1 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +4 -0
- package/dist/cli/doctor.js.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.js +3 -0
- package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +7 -3
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/migrations/ensure-oxlint-base-configs.d.ts.map +1 -1
- package/dist/migrations/ensure-oxlint-base-configs.js +4 -1
- package/dist/migrations/ensure-oxlint-base-configs.js.map +1 -1
- package/dist/migrations/generated-paths.d.ts +33 -0
- package/dist/migrations/generated-paths.d.ts.map +1 -0
- package/dist/migrations/generated-paths.js +36 -0
- package/dist/migrations/generated-paths.js.map +1 -0
- package/package.json +16 -14
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa/hooks/block-managed-file-edits.sh +48 -1
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/hooks/block-managed-file-edits.sh +48 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/hooks/block-managed-file-edits.sh +48 -1
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/hooks/block-managed-file-edits.sh +48 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensure-oxlint-base-configs.d.ts","sourceRoot":"","sources":["../../src/migrations/ensure-oxlint-base-configs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ensure-oxlint-base-configs.d.ts","sourceRoot":"","sources":["../../src/migrations/ensure-oxlint-base-configs.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AA8MlC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,gCAAiC,YAAW,SAAS;IAChE,QAAQ,CAAC,IAAI,gCAAgC;IAC7C,QAAQ,CAAC,WAAW,8FACyE;IAE7F;;;;;OAKG;IACG,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAKtD;;;;OAIG;IACG,KAAK,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;CAuC7D"}
|
|
@@ -2,6 +2,7 @@ import { readFile, writeFile } from "node:fs/promises";
|
|
|
2
2
|
import * as path from "node:path";
|
|
3
3
|
import * as fse from "fs-extra";
|
|
4
4
|
import { readJsonOrNull } from "../utils/json-utils.js";
|
|
5
|
+
import { GENERATED_PATH_PREFIXES } from "./generated-paths.js";
|
|
5
6
|
const OXLINTRC = ".oxlintrc.json";
|
|
6
7
|
/**
|
|
7
8
|
* Repo-relative home for the Lisa oxlint configs vendored into a host project.
|
|
@@ -11,7 +12,9 @@ const OXLINTRC = ".oxlintrc.json";
|
|
|
11
12
|
* without asking. Hosts never hand-edit these — they layer their own rules in
|
|
12
13
|
* `.oxlintrc.json`, which stays host-owned.
|
|
13
14
|
*/
|
|
14
|
-
|
|
15
|
+
// Single source of truth, shared with the managed-file hook so a guard and a
|
|
16
|
+
// migration can never disagree about what apply regenerates.
|
|
17
|
+
const VENDOR_DIR = GENERATED_PATH_PREFIXES[0];
|
|
15
18
|
/** `extends` prefix that points at a vendored config. */
|
|
16
19
|
const VENDOR_PREFIX = `./${VENDOR_DIR}/`;
|
|
17
20
|
/** Directory inside the Lisa package holding the canonical oxlint configs. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensure-oxlint-base-configs.js","sourceRoot":"","sources":["../../src/migrations/ensure-oxlint-base-configs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"ensure-oxlint-base-configs.js","sourceRoot":"","sources":["../../src/migrations/ensure-oxlint-base-configs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project paths that `lisa apply` GENERATES rather than copies.
|
|
3
|
+
* @module migrations/generated-paths
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Repo-relative prefixes that apply regenerates on every run.
|
|
7
|
+
*
|
|
8
|
+
* A generated path fails differently from a `copy-overwrite` template, and the
|
|
9
|
+
* difference decides what a guard should tell someone who edits one:
|
|
10
|
+
*
|
|
11
|
+
* - **`copy-overwrite`, host-edited** — apply PRESERVES it. The file silently
|
|
12
|
+
* forks and stops receiving upstream fixes while looking current. Measured:
|
|
13
|
+
* four mutated files, `Overwritten: 0`.
|
|
14
|
+
* - **generated** — apply REBUILDS it. The edit works locally, CI agrees, and
|
|
15
|
+
* the next `bun install` reverts it with nothing reporting that it had.
|
|
16
|
+
*
|
|
17
|
+
* So this list exists to let one guard give two accurate answers, rather than
|
|
18
|
+
* one answer that is wrong for half the files it covers.
|
|
19
|
+
*
|
|
20
|
+
* It is the SINGLE source: the migration that vendors a tree imports its prefix
|
|
21
|
+
* from here, and the hook reads this module out of the installed package. A
|
|
22
|
+
* hook carrying its own copy of the list would be the defect this repository
|
|
23
|
+
* has filed repeatedly — a second place to update that nobody updates, which
|
|
24
|
+
* then governs silently.
|
|
25
|
+
*/
|
|
26
|
+
export declare const GENERATED_PATH_PREFIXES: readonly string[];
|
|
27
|
+
/**
|
|
28
|
+
* Whether a repo-relative path is regenerated by apply.
|
|
29
|
+
* @param relativePath - Repo-relative destination path
|
|
30
|
+
* @returns True when apply rebuilds this path rather than copying it
|
|
31
|
+
*/
|
|
32
|
+
export declare function isGeneratedPath(relativePath: string): boolean;
|
|
33
|
+
//# sourceMappingURL=generated-paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated-paths.d.ts","sourceRoot":"","sources":["../../src/migrations/generated-paths.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAA0B,CAAC;AAEhF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAK7D"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project paths that `lisa apply` GENERATES rather than copies.
|
|
3
|
+
* @module migrations/generated-paths
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Repo-relative prefixes that apply regenerates on every run.
|
|
7
|
+
*
|
|
8
|
+
* A generated path fails differently from a `copy-overwrite` template, and the
|
|
9
|
+
* difference decides what a guard should tell someone who edits one:
|
|
10
|
+
*
|
|
11
|
+
* - **`copy-overwrite`, host-edited** — apply PRESERVES it. The file silently
|
|
12
|
+
* forks and stops receiving upstream fixes while looking current. Measured:
|
|
13
|
+
* four mutated files, `Overwritten: 0`.
|
|
14
|
+
* - **generated** — apply REBUILDS it. The edit works locally, CI agrees, and
|
|
15
|
+
* the next `bun install` reverts it with nothing reporting that it had.
|
|
16
|
+
*
|
|
17
|
+
* So this list exists to let one guard give two accurate answers, rather than
|
|
18
|
+
* one answer that is wrong for half the files it covers.
|
|
19
|
+
*
|
|
20
|
+
* It is the SINGLE source: the migration that vendors a tree imports its prefix
|
|
21
|
+
* from here, and the hook reads this module out of the installed package. A
|
|
22
|
+
* hook carrying its own copy of the list would be the defect this repository
|
|
23
|
+
* has filed repeatedly — a second place to update that nobody updates, which
|
|
24
|
+
* then governs silently.
|
|
25
|
+
*/
|
|
26
|
+
export const GENERATED_PATH_PREFIXES = [".lisa/lisa-oxlint"];
|
|
27
|
+
/**
|
|
28
|
+
* Whether a repo-relative path is regenerated by apply.
|
|
29
|
+
* @param relativePath - Repo-relative destination path
|
|
30
|
+
* @returns True when apply rebuilds this path rather than copying it
|
|
31
|
+
*/
|
|
32
|
+
export function isGeneratedPath(relativePath) {
|
|
33
|
+
const normalised = relativePath.replaceAll("\\", "/").replace(/^\.\//u, "");
|
|
34
|
+
return GENERATED_PATH_PREFIXES.some(prefix => normalised === prefix || normalised.startsWith(`${prefix}/`));
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=generated-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated-paths.js","sourceRoot":"","sources":["../../src/migrations/generated-paths.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAsB,CAAC,mBAAmB,CAAC,CAAC;AAEhF;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,YAAoB;IAClD,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC5E,OAAO,uBAAuB,CAAC,IAAI,CACjC,MAAM,CAAC,EAAE,CAAC,UAAU,KAAK,MAAM,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC,CACvE,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -94,42 +94,44 @@
|
|
|
94
94
|
"@sentry/cli"
|
|
95
95
|
],
|
|
96
96
|
"resolutions": {
|
|
97
|
-
"nanoid": "^3.3.18",
|
|
98
97
|
"@isaacs/brace-expansion": "^5.0.1",
|
|
99
98
|
"axios": ">=1.15.2",
|
|
99
|
+
"brace-expansion": ">=5.0.9",
|
|
100
|
+
"deepmerge-ts": "^8.0.1",
|
|
100
101
|
"esbuild": ">=0.28.1",
|
|
101
102
|
"flatted": "^3.4.2",
|
|
103
|
+
"form-data": ">=4.0.6",
|
|
102
104
|
"handlebars": ">=4.7.9",
|
|
103
105
|
"lodash": ">=4.18.1",
|
|
104
|
-
"vite": "$vite",
|
|
105
|
-
"ws": ">=8.21.0",
|
|
106
106
|
"multer": ">=2.2.0",
|
|
107
|
+
"nanoid": "^3.3.18",
|
|
107
108
|
"postcss": ">=8.5.18",
|
|
108
109
|
"undici": "^6.27.0",
|
|
109
|
-
"
|
|
110
|
-
"
|
|
110
|
+
"vite": "$vite",
|
|
111
|
+
"ws": ">=8.21.0"
|
|
111
112
|
},
|
|
112
113
|
"overrides": {
|
|
113
|
-
"nanoid": "^3.3.18",
|
|
114
114
|
"@isaacs/brace-expansion": "^5.0.1",
|
|
115
|
+
"@istanbuljs/load-nyc-config": {
|
|
116
|
+
"js-yaml": "^3.15.1"
|
|
117
|
+
},
|
|
115
118
|
"axios": ">=1.15.2",
|
|
119
|
+
"brace-expansion": ">=5.0.9",
|
|
120
|
+
"deepmerge-ts": "^8.0.1",
|
|
116
121
|
"esbuild": ">=0.28.1",
|
|
117
122
|
"flatted": "^3.4.2",
|
|
123
|
+
"form-data": ">=4.0.6",
|
|
118
124
|
"handlebars": ">=4.7.9",
|
|
119
125
|
"lodash": ">=4.18.1",
|
|
120
|
-
"vite": "$vite",
|
|
121
|
-
"ws": ">=8.21.0",
|
|
122
126
|
"multer": ">=2.2.0",
|
|
127
|
+
"nanoid": "^3.3.18",
|
|
123
128
|
"postcss": ">=8.5.18",
|
|
124
129
|
"undici": "^6.27.0",
|
|
125
|
-
"
|
|
126
|
-
"
|
|
127
|
-
"@istanbuljs/load-nyc-config": {
|
|
128
|
-
"js-yaml": "^3.15.1"
|
|
129
|
-
}
|
|
130
|
+
"vite": "$vite",
|
|
131
|
+
"ws": ">=8.21.0"
|
|
130
132
|
},
|
|
131
133
|
"name": "@codyswann/lisa",
|
|
132
|
-
"version": "3.
|
|
134
|
+
"version": "3.30.0",
|
|
133
135
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
134
136
|
"main": "dist/index.js",
|
|
135
137
|
"exports": {
|
|
@@ -196,6 +196,45 @@ managed_source() {
|
|
|
196
196
|
return 0
|
|
197
197
|
fi
|
|
198
198
|
done
|
|
199
|
+
# A generated path has no template to point at — apply rebuilds it from the
|
|
200
|
+
# migration rather than copying it — so the source is named for the reader
|
|
201
|
+
# rather than resolved to a file that does not exist.
|
|
202
|
+
if generated_path "$rel"; then
|
|
203
|
+
printf '%s' "generated by lisa apply"
|
|
204
|
+
return 0
|
|
205
|
+
fi
|
|
206
|
+
return 1
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
# Whether a destination is a path `lisa apply` GENERATES rather than copies.
|
|
210
|
+
#
|
|
211
|
+
# Read out of the installed package, never restated here.
|
|
212
|
+
# `dist/migrations/generated-paths.js` is the single source the vendoring
|
|
213
|
+
# migration also imports, so a new generated tree is covered without editing this
|
|
214
|
+
# hook. A hook carrying its own copy of that list would be a second place to
|
|
215
|
+
# update that nobody updates, which then governs silently — the defect this file
|
|
216
|
+
# already documents for copy-overwrite, one step along.
|
|
217
|
+
#
|
|
218
|
+
# The distinction earns its keep because the two populations fail in OPPOSITE
|
|
219
|
+
# ways, and a guard that gives one answer is wrong for half the files it covers:
|
|
220
|
+
# an edited copy-overwrite file is PRESERVED and silently forks, while a
|
|
221
|
+
# generated file is REBUILT and the edit vanishes on the next install.
|
|
222
|
+
generated_path() {
|
|
223
|
+
local rel="$1"
|
|
224
|
+
local module="$package_root/dist/migrations/generated-paths.js"
|
|
225
|
+
[ -f "$module" ] || return 1
|
|
226
|
+
local prefixes
|
|
227
|
+
prefixes="$(grep -oE '"[^"]+"' "$module" 2>/dev/null | tr -d '"')"
|
|
228
|
+
local prefix
|
|
229
|
+
for prefix in $prefixes; do
|
|
230
|
+
case "$prefix" in
|
|
231
|
+
*/*) ;;
|
|
232
|
+
*) continue ;;
|
|
233
|
+
esac
|
|
234
|
+
case "$rel" in
|
|
235
|
+
"$prefix" | "$prefix"/*) return 0 ;;
|
|
236
|
+
esac
|
|
237
|
+
done
|
|
199
238
|
return 1
|
|
200
239
|
}
|
|
201
240
|
|
|
@@ -219,7 +258,15 @@ refuse() {
|
|
|
219
258
|
local source="$2"
|
|
220
259
|
local rel="$3"
|
|
221
260
|
local consequence
|
|
222
|
-
if
|
|
261
|
+
if generated_path "$rel"; then
|
|
262
|
+
consequence="\`lisa apply\` REGENERATES this file. It is not copied from a
|
|
263
|
+
template and it is not preserved: the next \`bun install\` rebuilds it and your
|
|
264
|
+
edit is gone, with nothing reporting that it had been.
|
|
265
|
+
|
|
266
|
+
That is the opposite failure from the copy-overwrite files this guard also
|
|
267
|
+
covers, where an edit SURVIVES and forks silently. Here the edit works locally,
|
|
268
|
+
CI agrees because CI regenerates too, and it disappears on the next install."
|
|
269
|
+
elif ledger_tracked "$rel"; then
|
|
223
270
|
consequence="\`lisa apply\` will KEEP your edit — this is a Lisa-owned guard,
|
|
224
271
|
and apply says so: \"its contents match no Lisa release, so Lisa cannot tell
|
|
225
272
|
whether it is out of date or deliberately stronger. Kept yours.\"
|
|
@@ -196,6 +196,45 @@ managed_source() {
|
|
|
196
196
|
return 0
|
|
197
197
|
fi
|
|
198
198
|
done
|
|
199
|
+
# A generated path has no template to point at — apply rebuilds it from the
|
|
200
|
+
# migration rather than copying it — so the source is named for the reader
|
|
201
|
+
# rather than resolved to a file that does not exist.
|
|
202
|
+
if generated_path "$rel"; then
|
|
203
|
+
printf '%s' "generated by lisa apply"
|
|
204
|
+
return 0
|
|
205
|
+
fi
|
|
206
|
+
return 1
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
# Whether a destination is a path `lisa apply` GENERATES rather than copies.
|
|
210
|
+
#
|
|
211
|
+
# Read out of the installed package, never restated here.
|
|
212
|
+
# `dist/migrations/generated-paths.js` is the single source the vendoring
|
|
213
|
+
# migration also imports, so a new generated tree is covered without editing this
|
|
214
|
+
# hook. A hook carrying its own copy of that list would be a second place to
|
|
215
|
+
# update that nobody updates, which then governs silently — the defect this file
|
|
216
|
+
# already documents for copy-overwrite, one step along.
|
|
217
|
+
#
|
|
218
|
+
# The distinction earns its keep because the two populations fail in OPPOSITE
|
|
219
|
+
# ways, and a guard that gives one answer is wrong for half the files it covers:
|
|
220
|
+
# an edited copy-overwrite file is PRESERVED and silently forks, while a
|
|
221
|
+
# generated file is REBUILT and the edit vanishes on the next install.
|
|
222
|
+
generated_path() {
|
|
223
|
+
local rel="$1"
|
|
224
|
+
local module="$package_root/dist/migrations/generated-paths.js"
|
|
225
|
+
[ -f "$module" ] || return 1
|
|
226
|
+
local prefixes
|
|
227
|
+
prefixes="$(grep -oE '"[^"]+"' "$module" 2>/dev/null | tr -d '"')"
|
|
228
|
+
local prefix
|
|
229
|
+
for prefix in $prefixes; do
|
|
230
|
+
case "$prefix" in
|
|
231
|
+
*/*) ;;
|
|
232
|
+
*) continue ;;
|
|
233
|
+
esac
|
|
234
|
+
case "$rel" in
|
|
235
|
+
"$prefix" | "$prefix"/*) return 0 ;;
|
|
236
|
+
esac
|
|
237
|
+
done
|
|
199
238
|
return 1
|
|
200
239
|
}
|
|
201
240
|
|
|
@@ -219,7 +258,15 @@ refuse() {
|
|
|
219
258
|
local source="$2"
|
|
220
259
|
local rel="$3"
|
|
221
260
|
local consequence
|
|
222
|
-
if
|
|
261
|
+
if generated_path "$rel"; then
|
|
262
|
+
consequence="\`lisa apply\` REGENERATES this file. It is not copied from a
|
|
263
|
+
template and it is not preserved: the next \`bun install\` rebuilds it and your
|
|
264
|
+
edit is gone, with nothing reporting that it had been.
|
|
265
|
+
|
|
266
|
+
That is the opposite failure from the copy-overwrite files this guard also
|
|
267
|
+
covers, where an edit SURVIVES and forks silently. Here the edit works locally,
|
|
268
|
+
CI agrees because CI regenerates too, and it disappears on the next install."
|
|
269
|
+
elif ledger_tracked "$rel"; then
|
|
223
270
|
consequence="\`lisa apply\` will KEEP your edit — this is a Lisa-owned guard,
|
|
224
271
|
and apply says so: \"its contents match no Lisa release, so Lisa cannot tell
|
|
225
272
|
whether it is out of date or deliberately stronger. Kept yours.\"
|
|
@@ -196,6 +196,45 @@ managed_source() {
|
|
|
196
196
|
return 0
|
|
197
197
|
fi
|
|
198
198
|
done
|
|
199
|
+
# A generated path has no template to point at — apply rebuilds it from the
|
|
200
|
+
# migration rather than copying it — so the source is named for the reader
|
|
201
|
+
# rather than resolved to a file that does not exist.
|
|
202
|
+
if generated_path "$rel"; then
|
|
203
|
+
printf '%s' "generated by lisa apply"
|
|
204
|
+
return 0
|
|
205
|
+
fi
|
|
206
|
+
return 1
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
# Whether a destination is a path `lisa apply` GENERATES rather than copies.
|
|
210
|
+
#
|
|
211
|
+
# Read out of the installed package, never restated here.
|
|
212
|
+
# `dist/migrations/generated-paths.js` is the single source the vendoring
|
|
213
|
+
# migration also imports, so a new generated tree is covered without editing this
|
|
214
|
+
# hook. A hook carrying its own copy of that list would be a second place to
|
|
215
|
+
# update that nobody updates, which then governs silently — the defect this file
|
|
216
|
+
# already documents for copy-overwrite, one step along.
|
|
217
|
+
#
|
|
218
|
+
# The distinction earns its keep because the two populations fail in OPPOSITE
|
|
219
|
+
# ways, and a guard that gives one answer is wrong for half the files it covers:
|
|
220
|
+
# an edited copy-overwrite file is PRESERVED and silently forks, while a
|
|
221
|
+
# generated file is REBUILT and the edit vanishes on the next install.
|
|
222
|
+
generated_path() {
|
|
223
|
+
local rel="$1"
|
|
224
|
+
local module="$package_root/dist/migrations/generated-paths.js"
|
|
225
|
+
[ -f "$module" ] || return 1
|
|
226
|
+
local prefixes
|
|
227
|
+
prefixes="$(grep -oE '"[^"]+"' "$module" 2>/dev/null | tr -d '"')"
|
|
228
|
+
local prefix
|
|
229
|
+
for prefix in $prefixes; do
|
|
230
|
+
case "$prefix" in
|
|
231
|
+
*/*) ;;
|
|
232
|
+
*) continue ;;
|
|
233
|
+
esac
|
|
234
|
+
case "$rel" in
|
|
235
|
+
"$prefix" | "$prefix"/*) return 0 ;;
|
|
236
|
+
esac
|
|
237
|
+
done
|
|
199
238
|
return 1
|
|
200
239
|
}
|
|
201
240
|
|
|
@@ -219,7 +258,15 @@ refuse() {
|
|
|
219
258
|
local source="$2"
|
|
220
259
|
local rel="$3"
|
|
221
260
|
local consequence
|
|
222
|
-
if
|
|
261
|
+
if generated_path "$rel"; then
|
|
262
|
+
consequence="\`lisa apply\` REGENERATES this file. It is not copied from a
|
|
263
|
+
template and it is not preserved: the next \`bun install\` rebuilds it and your
|
|
264
|
+
edit is gone, with nothing reporting that it had been.
|
|
265
|
+
|
|
266
|
+
That is the opposite failure from the copy-overwrite files this guard also
|
|
267
|
+
covers, where an edit SURVIVES and forks silently. Here the edit works locally,
|
|
268
|
+
CI agrees because CI regenerates too, and it disappears on the next install."
|
|
269
|
+
elif ledger_tracked "$rel"; then
|
|
223
270
|
consequence="\`lisa apply\` will KEEP your edit — this is a Lisa-owned guard,
|
|
224
271
|
and apply says so: \"its contents match no Lisa release, so Lisa cannot tell
|
|
225
272
|
whether it is out of date or deliberately stronger. Kept yours.\"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.30.0",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.30.0",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, across Claude and Codex.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|