@codyswann/lisa 2.189.19 → 2.189.21
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/dist/strategies/merge.d.ts.map +1 -1
- package/dist/strategies/merge.js +4 -3
- package/dist/strategies/merge.js.map +1 -1
- package/dist/utils/json-utils.d.ts +8 -0
- package/dist/utils/json-utils.d.ts.map +1 -1
- package/dist/utils/json-utils.js +95 -0
- package/dist/utils/json-utils.js.map +1 -1
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -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-cursor/.claude-plugin/plugin.json +1 -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/scripts/install-claude-plugins.sh +29 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/strategies/merge.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/strategies/merge.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAS9E;;;;;GAKG;AACH,qBAAa,aAAc,YAAW,aAAa;IACjD,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IAEjC;;;;;;;OAOG;IACG,KAAK,CACT,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,mBAAmB,CAAC;CAiDhC"}
|
package/dist/strategies/merge.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as fse from "fs-extra";
|
|
2
2
|
import { copyFile } from "node:fs/promises";
|
|
3
3
|
import { ensureParentDir } from "../utils/file-operations.js";
|
|
4
|
-
import { readJson, writeJson,
|
|
4
|
+
import { readJson, writeJson, deepMergeWithArrayUnion, } from "../utils/json-utils.js";
|
|
5
5
|
import { JsonMergeError } from "../errors/index.js";
|
|
6
6
|
/**
|
|
7
7
|
* Merge strategy: Deep merge JSON files (Lisa values take precedence)
|
|
@@ -38,8 +38,9 @@ export class MergeStrategy {
|
|
|
38
38
|
const destJson = await readJson(destPath).catch(() => {
|
|
39
39
|
throw new JsonMergeError(relativePath, `Failed to parse destination: ${destPath}`);
|
|
40
40
|
});
|
|
41
|
-
// Deep merge: Lisa (source) takes precedence, project (dest) provides defaults
|
|
42
|
-
|
|
41
|
+
// Deep merge: Lisa (source) takes precedence, project (dest) provides defaults.
|
|
42
|
+
// Arrays are unioned so Lisa templates add guardrails without removing host ones.
|
|
43
|
+
const merged = deepMergeWithArrayUnion(destJson, sourceJson);
|
|
43
44
|
// Normalize for comparison (parse and re-stringify both)
|
|
44
45
|
const normalizedDest = JSON.stringify(destJson, null, 2);
|
|
45
46
|
const normalizedMerged = JSON.stringify(merged, null, 2);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/strategies/merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/strategies/merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EACL,QAAQ,EACR,SAAS,EACT,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,OAAO,aAAa;IACf,IAAI,GAAG,OAAgB,CAAC;IAEjC;;;;;;;OAOG;IACH,KAAK,CAAC,KAAK,CACT,UAAkB,EAClB,QAAgB,EAChB,YAAoB,EACpB,OAAwB;QAExB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QACvC,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAElD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;gBAChC,MAAM,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACvC,CAAC;YACD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QACjE,CAAC;QAED,IAAI,MAAM,CAAC,YAAY,IAAI,YAAY,KAAK,cAAc,EAAE,CAAC;YAC3D,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAClE,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAS,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YAC/D,MAAM,IAAI,cAAc,CACtB,YAAY,EACZ,2BAA2B,UAAU,EAAE,CACxC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAS,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YAC3D,MAAM,IAAI,cAAc,CACtB,YAAY,EACZ,gCAAgC,QAAQ,EAAE,CAC3C,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,gFAAgF;QAChF,kFAAkF;QAClF,MAAM,MAAM,GAAG,uBAAuB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAE7D,yDAAyD;QACzD,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACzD,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAEzD,IAAI,cAAc,KAAK,gBAAgB,EAAE,CAAC;YACxC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAClE,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC3B,MAAM,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACjE,CAAC;CACF"}
|
|
@@ -31,4 +31,12 @@ export declare function isValidJson(filePath: string): Promise<boolean>;
|
|
|
31
31
|
* @returns Merged object with Lisa values winning conflicts
|
|
32
32
|
*/
|
|
33
33
|
export declare function deepMerge<T extends object>(base: T, override: T): T;
|
|
34
|
+
/**
|
|
35
|
+
* Deep merge two JSON objects while preserving array entries from both sides.
|
|
36
|
+
* Scalar conflicts still use override-wins semantics.
|
|
37
|
+
* @param base Base object (project values)
|
|
38
|
+
* @param override Override object with precedence (Lisa values)
|
|
39
|
+
* @returns Merged object with arrays concatenated and deduplicated
|
|
40
|
+
*/
|
|
41
|
+
export declare function deepMergeWithArrayUnion<T extends object>(base: T, override: T): T;
|
|
34
42
|
//# sourceMappingURL=json-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-utils.d.ts","sourceRoot":"","sources":["../../src/utils/json-utils.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAUxE;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,CAAC,GAAG,OAAO,EAC9C,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAMnB;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EACb,MAAM,SAAI,GACT,OAAO,CAAC,IAAI,CAAC,CAGf;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOpE;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAGnE"}
|
|
1
|
+
{"version":3,"file":"json-utils.d.ts","sourceRoot":"","sources":["../../src/utils/json-utils.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAUxE;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,CAAC,GAAG,OAAO,EAC9C,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAMnB;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EACb,MAAM,SAAI,GACT,OAAO,CAAC,IAAI,CAAC,CAGf;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOpE;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAGnE;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,MAAM,EACtD,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CAAC,GACV,CAAC,CAEH"}
|
package/dist/utils/json-utils.js
CHANGED
|
@@ -66,4 +66,99 @@ export function deepMerge(base, override) {
|
|
|
66
66
|
// Create a new object to avoid mutating inputs
|
|
67
67
|
return merge({}, base, override);
|
|
68
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Deep merge two JSON objects while preserving array entries from both sides.
|
|
71
|
+
* Scalar conflicts still use override-wins semantics.
|
|
72
|
+
* @param base Base object (project values)
|
|
73
|
+
* @param override Override object with precedence (Lisa values)
|
|
74
|
+
* @returns Merged object with arrays concatenated and deduplicated
|
|
75
|
+
*/
|
|
76
|
+
export function deepMergeWithArrayUnion(base, override) {
|
|
77
|
+
return mergeJsonValues(base, override);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Merge two JSON-compatible values.
|
|
81
|
+
* @param base Lower-precedence value
|
|
82
|
+
* @param override Higher-precedence value
|
|
83
|
+
* @returns Merged JSON-compatible value
|
|
84
|
+
*/
|
|
85
|
+
function mergeJsonValues(base, override) {
|
|
86
|
+
if (Array.isArray(base) && Array.isArray(override)) {
|
|
87
|
+
return dedupeArray([...base, ...override]);
|
|
88
|
+
}
|
|
89
|
+
if (isJsonObject(base) && isJsonObject(override)) {
|
|
90
|
+
return mergeJsonObjects(base, override);
|
|
91
|
+
}
|
|
92
|
+
return cloneJsonValue(override);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Merge two JSON object records without mutating either input.
|
|
96
|
+
* @param base Lower-precedence object
|
|
97
|
+
* @param override Higher-precedence object
|
|
98
|
+
* @returns Merged object
|
|
99
|
+
*/
|
|
100
|
+
function mergeJsonObjects(base, override) {
|
|
101
|
+
const keys = new Set([...Object.keys(base), ...Object.keys(override)]);
|
|
102
|
+
return Object.fromEntries(Array.from(keys).map(key => {
|
|
103
|
+
const value = Object.hasOwn(override, key)
|
|
104
|
+
? Object.hasOwn(base, key)
|
|
105
|
+
? mergeJsonValues(base[key], override[key])
|
|
106
|
+
: cloneJsonValue(override[key])
|
|
107
|
+
: cloneJsonValue(base[key]);
|
|
108
|
+
return [key, value];
|
|
109
|
+
}));
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Remove duplicate JSON array entries while preserving first occurrence order.
|
|
113
|
+
* Uses structural equality so key order does not affect deduplication.
|
|
114
|
+
* @param items Array entries to deduplicate
|
|
115
|
+
* @returns Deduplicated array
|
|
116
|
+
*/
|
|
117
|
+
function dedupeArray(items) {
|
|
118
|
+
return items.reduce((deduped, item) => deduped.some(existing => isDeepEqualJsonValue(existing, item))
|
|
119
|
+
? deduped
|
|
120
|
+
: [...deduped, cloneJsonValue(item)], []);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Compare two JSON-compatible values for structural equality, independent of
|
|
124
|
+
* object key insertion order.
|
|
125
|
+
* @param a First value
|
|
126
|
+
* @param b Second value
|
|
127
|
+
* @returns True when the values are structurally equal
|
|
128
|
+
*/
|
|
129
|
+
function isDeepEqualJsonValue(a, b) {
|
|
130
|
+
if (Array.isArray(a) && Array.isArray(b)) {
|
|
131
|
+
return (a.length === b.length &&
|
|
132
|
+
a.every((entry, index) => isDeepEqualJsonValue(entry, b[index])));
|
|
133
|
+
}
|
|
134
|
+
if (isJsonObject(a) && isJsonObject(b)) {
|
|
135
|
+
const aKeys = Object.keys(a);
|
|
136
|
+
const bKeys = Object.keys(b);
|
|
137
|
+
return (aKeys.length === bKeys.length &&
|
|
138
|
+
aKeys.every(key => Object.hasOwn(b, key) && isDeepEqualJsonValue(a[key], b[key])));
|
|
139
|
+
}
|
|
140
|
+
return a === b;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Check whether a value is a non-array JSON object.
|
|
144
|
+
* @param value Candidate value
|
|
145
|
+
* @returns True when the value is a plain JSON object record
|
|
146
|
+
*/
|
|
147
|
+
function isJsonObject(value) {
|
|
148
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Clone JSON-compatible values so merge results do not retain input references.
|
|
152
|
+
* @param value JSON-compatible value
|
|
153
|
+
* @returns Cloned JSON-compatible value
|
|
154
|
+
*/
|
|
155
|
+
function cloneJsonValue(value) {
|
|
156
|
+
if (Array.isArray(value)) {
|
|
157
|
+
return value.map(cloneJsonValue);
|
|
158
|
+
}
|
|
159
|
+
if (isJsonObject(value)) {
|
|
160
|
+
return Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, cloneJsonValue(entry)]));
|
|
161
|
+
}
|
|
162
|
+
return value;
|
|
163
|
+
}
|
|
69
164
|
//# sourceMappingURL=json-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-utils.js","sourceRoot":"","sources":["../../src/utils/json-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,MAAM,cAAc,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAc,QAAgB;IAC1D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB;IAEhB,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAI,QAAQ,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,QAAgB,EAChB,IAAa,EACb,MAAM,GAAG,CAAC;IAEV,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,SAAS,CAAC,QAAQ,EAAE,GAAG,OAAO,IAAI,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAgB;IAChD,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAmB,IAAO,EAAE,QAAW;IAC9D,+CAA+C;IAC/C,OAAO,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAM,CAAC;AACxC,CAAC"}
|
|
1
|
+
{"version":3,"file":"json-utils.js","sourceRoot":"","sources":["../../src/utils/json-utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
"ws": ">=8.20.1"
|
|
96
96
|
},
|
|
97
97
|
"name": "@codyswann/lisa",
|
|
98
|
-
"version": "2.189.
|
|
98
|
+
"version": "2.189.21",
|
|
99
99
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
100
100
|
"main": "dist/index.js",
|
|
101
101
|
"exports": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.189.
|
|
3
|
+
"version": "2.189.21",
|
|
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": "2.189.
|
|
3
|
+
"version": "2.189.21",
|
|
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"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.189.
|
|
3
|
+
"version": "2.189.21",
|
|
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": "2.189.
|
|
3
|
+
"version": "2.189.21",
|
|
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": "2.189.
|
|
3
|
+
"version": "2.189.21",
|
|
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"
|
|
@@ -3,8 +3,35 @@
|
|
|
3
3
|
# Runs as Lisa's postinstall lifecycle script.
|
|
4
4
|
set -euo pipefail
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"
|
|
7
|
+
PACKAGE_ROOT="$(cd "$SCRIPT_DIR/.." && pwd -P)"
|
|
8
|
+
|
|
9
|
+
case "$PACKAGE_ROOT" in
|
|
10
|
+
*/node_modules/.pnpm/*/node_modules/@codyswann/lisa)
|
|
11
|
+
PROJECT_ROOT="${PACKAGE_ROOT%%/node_modules/.pnpm/*}"
|
|
12
|
+
;;
|
|
13
|
+
*/node_modules/@codyswann/lisa)
|
|
14
|
+
PROJECT_ROOT="$(cd "$PACKAGE_ROOT/../../.." && pwd -P)"
|
|
15
|
+
;;
|
|
16
|
+
*)
|
|
17
|
+
PROJECT_ROOT="$PACKAGE_ROOT"
|
|
18
|
+
;;
|
|
19
|
+
esac
|
|
20
|
+
|
|
21
|
+
sanitize_package_manager_env() {
|
|
22
|
+
local env_name
|
|
23
|
+
while IFS='=' read -r env_name _; do
|
|
24
|
+
case "$env_name" in
|
|
25
|
+
npm_config_*|npm_package_*|npm_lifecycle_*)
|
|
26
|
+
unset "$env_name"
|
|
27
|
+
;;
|
|
28
|
+
esac
|
|
29
|
+
done < <(env)
|
|
30
|
+
|
|
31
|
+
unset INIT_CWD npm_node_execpath npm_execpath PROJECT_CWD BUN_INSTALL_CACHE_DIR
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
sanitize_package_manager_env
|
|
8
35
|
|
|
9
36
|
SETTINGS_FILE="$PROJECT_ROOT/.claude/settings.json"
|
|
10
37
|
|