@codyswann/lisa 3.47.7 → 3.47.8
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/core/lisa-owned-provenance.d.ts +13 -0
- package/dist/core/lisa-owned-provenance.d.ts.map +1 -1
- package/dist/core/lisa-owned-provenance.js +18 -0
- package/dist/core/lisa-owned-provenance.js.map +1 -1
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +3 -0
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/strategies/copy-overwrite.d.ts +30 -4
- package/dist/strategies/copy-overwrite.d.ts.map +1 -1
- package/dist/strategies/copy-overwrite.js +63 -14
- package/dist/strategies/copy-overwrite.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
|
@@ -38,10 +38,10 @@ export declare class CopyOverwriteStrategy implements ICopyStrategy {
|
|
|
38
38
|
* That refresh is unconditional only where Lisa can prove the installed copy
|
|
39
39
|
* is behind. "Differs from mine" is not that proof — it is equally consistent
|
|
40
40
|
* with the host being *ahead*, which is how `acmeorga/frontend` had a guard
|
|
41
|
-
* they had hardened themselves silently replaced by a weaker upstream one.
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
41
|
+
* they had hardened themselves silently replaced by a weaker upstream one.
|
|
42
|
+
* That classification now runs in `apply`, before any branch here is chosen,
|
|
43
|
+
* so it covers the prompted routes too — see `preserveOwnedHostCopy`.
|
|
44
|
+
* Anything arriving here is either not Lisa's to judge, or provably behind.
|
|
45
45
|
* @param sourcePath - Packaged template path
|
|
46
46
|
* @param destPath - Installed file path
|
|
47
47
|
* @param relativePath - Repo-relative path for reporting
|
|
@@ -49,6 +49,25 @@ export declare class CopyOverwriteStrategy implements ICopyStrategy {
|
|
|
49
49
|
* @returns Whether the file was refreshed, preserved, or left out of date
|
|
50
50
|
*/
|
|
51
51
|
private applyNonInteractive;
|
|
52
|
+
/**
|
|
53
|
+
* Hold back a replacement of a Lisa-owned artifact on every route that has
|
|
54
|
+
* one, rather than on the single unattended route.
|
|
55
|
+
*
|
|
56
|
+
* Two conditions still let a replacement through. The file must be one Lisa
|
|
57
|
+
* owns outright — a `tsconfig.json` the project customised is not Lisa's to
|
|
58
|
+
* judge, and keeps its existing prompt-or-stale behaviour. And the operator
|
|
59
|
+
* must not have named it to `--refresh-templates`, which is them saying in
|
|
60
|
+
* advance "take upstream's version of these". That flag is the exit
|
|
61
|
+
* `describePreserved` tells them to use, so it has to actually work; the
|
|
62
|
+
* postinstall passes no flags, so honouring it here changes nothing for the
|
|
63
|
+
* unattended fleet.
|
|
64
|
+
* @param sourcePath - Packaged template path
|
|
65
|
+
* @param destPath - Installed file path
|
|
66
|
+
* @param relativePath - Repo-relative path for reporting
|
|
67
|
+
* @param context - Strategy context with config and ledger
|
|
68
|
+
* @returns A preserved result when the copy is kept, else undefined
|
|
69
|
+
*/
|
|
70
|
+
private preserveOwnedHostCopy;
|
|
52
71
|
/**
|
|
53
72
|
* Hold back a Lisa-owned refresh that cannot be proved to be an upgrade.
|
|
54
73
|
*
|
|
@@ -61,6 +80,13 @@ export declare class CopyOverwriteStrategy implements ICopyStrategy {
|
|
|
61
80
|
* bytes cannot be read they cannot be classified, and a classifier that
|
|
62
81
|
* defaults to "overwrite" when it is confused is the original defect wearing a
|
|
63
82
|
* different hat.
|
|
83
|
+
*
|
|
84
|
+
* That sentence described the intent and not the code until now: an
|
|
85
|
+
* unreadable file returned `undefined`, which is this method's word for
|
|
86
|
+
* "nothing to preserve", and the caller carried straight on to the overwrite.
|
|
87
|
+
* `filesIdentical` swallows its own read errors and answers "differs", so an
|
|
88
|
+
* unreadable Lisa-owned guard reached here on every apply and was replaced
|
|
89
|
+
* without ever being classified. Now it is kept, and the reason is named.
|
|
64
90
|
* @param sourcePath - Packaged template path
|
|
65
91
|
* @param destPath - Installed file path
|
|
66
92
|
* @param relativePath - Repo-relative path for reporting
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copy-overwrite.d.ts","sourceRoot":"","sources":["../../src/strategies/copy-overwrite.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"copy-overwrite.d.ts","sourceRoot":"","sources":["../../src/strategies/copy-overwrite.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAS7D,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG9E;;;;;;GAMG;AACH,qBAAa,qBAAsB,YAAW,aAAa;IACzD,QAAQ,CAAC,IAAI,EAAG,gBAAgB,CAAU;IAE1C;;;;;;;OAOG;IACG,KAAK,CACT,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,mBAAmB,CAAC;IA4E/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;YACW,mBAAmB;IAwBjC;;;;;;;;;;;;;;;;;OAiBG;YACW,qBAAqB;IAkBnC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;YACW,mBAAmB;CAkClC"}
|
|
@@ -2,7 +2,7 @@ import * as fse from "fs-extra";
|
|
|
2
2
|
import { copyFile, readFile } from "node:fs/promises";
|
|
3
3
|
import { mayRefreshTemplate } from "../core/config.js";
|
|
4
4
|
import { isLisaOwnedTemplate } from "../core/lisa-owned-templates.js";
|
|
5
|
-
import { classifyHostCopy, describePreserved, mayRefreshLisaOwned, } from "../core/lisa-owned-provenance.js";
|
|
5
|
+
import { classifyHostCopy, describePreserved, describeUnclassifiable, mayRefreshLisaOwned, } from "../core/lisa-owned-provenance.js";
|
|
6
6
|
import { filesIdentical, ensureParentDir } from "../utils/file-operations.js";
|
|
7
7
|
/**
|
|
8
8
|
* Copy-overwrite strategy: Replace file if exists (prompts on conflict)
|
|
@@ -34,6 +34,22 @@ export class CopyOverwriteStrategy {
|
|
|
34
34
|
if (await filesIdentical(sourcePath, destPath)) {
|
|
35
35
|
return { relativePath, strategy: this.name, action: "skipped" };
|
|
36
36
|
}
|
|
37
|
+
// Before any branch below decides *how* to replace the file, ask whether
|
|
38
|
+
// replacing it is an upgrade at all.
|
|
39
|
+
//
|
|
40
|
+
// This classification used to live inside `applyNonInteractive`, which is
|
|
41
|
+
// reached only when `skipGitCheck` is set — the postinstall's flag, not the
|
|
42
|
+
// command's. So `lisa apply` typed by an operator, `lisa apply --yes`, and
|
|
43
|
+
// every non-TTY run took the prompt branch instead and replaced the file
|
|
44
|
+
// without ever classifying it. Non-TTY is not the exotic case: with no
|
|
45
|
+
// usable stdin `createPrompter` returns `AutoAcceptPrompter`, whose
|
|
46
|
+
// `promptOverwrite` answers "yes" without asking anyone, which is what
|
|
47
|
+
// every scripted and agent-driven apply gets. The guard that stops a guard
|
|
48
|
+
// being silently downgraded could be walked around by running the command
|
|
49
|
+
// the normal way (#2577).
|
|
50
|
+
const preserved = await this.preserveOwnedHostCopy(sourcePath, destPath, relativePath, context);
|
|
51
|
+
if (preserved !== undefined)
|
|
52
|
+
return preserved;
|
|
37
53
|
// A non-interactive apply (postinstall / `--skip-git-check`) cannot prompt,
|
|
38
54
|
// and replacing a file the project may have customised without asking is
|
|
39
55
|
// not a decision this path gets to make. So the file is left alone — but
|
|
@@ -79,10 +95,10 @@ export class CopyOverwriteStrategy {
|
|
|
79
95
|
* That refresh is unconditional only where Lisa can prove the installed copy
|
|
80
96
|
* is behind. "Differs from mine" is not that proof — it is equally consistent
|
|
81
97
|
* with the host being *ahead*, which is how `acmeorga/frontend` had a guard
|
|
82
|
-
* they had hardened themselves silently replaced by a weaker upstream one.
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
98
|
+
* they had hardened themselves silently replaced by a weaker upstream one.
|
|
99
|
+
* That classification now runs in `apply`, before any branch here is chosen,
|
|
100
|
+
* so it covers the prompted routes too — see `preserveOwnedHostCopy`.
|
|
101
|
+
* Anything arriving here is either not Lisa's to judge, or provably behind.
|
|
86
102
|
* @param sourcePath - Packaged template path
|
|
87
103
|
* @param destPath - Installed file path
|
|
88
104
|
* @param relativePath - Repo-relative path for reporting
|
|
@@ -91,16 +107,10 @@ export class CopyOverwriteStrategy {
|
|
|
91
107
|
*/
|
|
92
108
|
async applyNonInteractive(sourcePath, destPath, relativePath, context) {
|
|
93
109
|
const { config, backupFile } = context;
|
|
94
|
-
|
|
95
|
-
if (!lisaOwned &&
|
|
110
|
+
if (!isLisaOwnedTemplate(relativePath) &&
|
|
96
111
|
!mayRefreshTemplate(relativePath, config.refreshTemplates)) {
|
|
97
112
|
return { relativePath, strategy: this.name, action: "stale" };
|
|
98
113
|
}
|
|
99
|
-
if (lisaOwned) {
|
|
100
|
-
const preserved = await this.preserveIfHostAhead(sourcePath, destPath, relativePath, context.hashLedger);
|
|
101
|
-
if (preserved !== undefined)
|
|
102
|
-
return preserved;
|
|
103
|
-
}
|
|
104
114
|
// Backed up first: opting in to an overwrite is not opting out of being
|
|
105
115
|
// able to undo it.
|
|
106
116
|
if (!config.dryRun) {
|
|
@@ -109,6 +119,32 @@ export class CopyOverwriteStrategy {
|
|
|
109
119
|
}
|
|
110
120
|
return { relativePath, strategy: this.name, action: "overwritten" };
|
|
111
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* Hold back a replacement of a Lisa-owned artifact on every route that has
|
|
124
|
+
* one, rather than on the single unattended route.
|
|
125
|
+
*
|
|
126
|
+
* Two conditions still let a replacement through. The file must be one Lisa
|
|
127
|
+
* owns outright — a `tsconfig.json` the project customised is not Lisa's to
|
|
128
|
+
* judge, and keeps its existing prompt-or-stale behaviour. And the operator
|
|
129
|
+
* must not have named it to `--refresh-templates`, which is them saying in
|
|
130
|
+
* advance "take upstream's version of these". That flag is the exit
|
|
131
|
+
* `describePreserved` tells them to use, so it has to actually work; the
|
|
132
|
+
* postinstall passes no flags, so honouring it here changes nothing for the
|
|
133
|
+
* unattended fleet.
|
|
134
|
+
* @param sourcePath - Packaged template path
|
|
135
|
+
* @param destPath - Installed file path
|
|
136
|
+
* @param relativePath - Repo-relative path for reporting
|
|
137
|
+
* @param context - Strategy context with config and ledger
|
|
138
|
+
* @returns A preserved result when the copy is kept, else undefined
|
|
139
|
+
*/
|
|
140
|
+
async preserveOwnedHostCopy(sourcePath, destPath, relativePath, context) {
|
|
141
|
+
if (!isLisaOwnedTemplate(relativePath))
|
|
142
|
+
return undefined;
|
|
143
|
+
if (mayRefreshTemplate(relativePath, context.config.refreshTemplates)) {
|
|
144
|
+
return undefined;
|
|
145
|
+
}
|
|
146
|
+
return this.preserveIfHostAhead(sourcePath, destPath, relativePath, context.hashLedger);
|
|
147
|
+
}
|
|
112
148
|
/**
|
|
113
149
|
* Hold back a Lisa-owned refresh that cannot be proved to be an upgrade.
|
|
114
150
|
*
|
|
@@ -121,6 +157,13 @@ export class CopyOverwriteStrategy {
|
|
|
121
157
|
* bytes cannot be read they cannot be classified, and a classifier that
|
|
122
158
|
* defaults to "overwrite" when it is confused is the original defect wearing a
|
|
123
159
|
* different hat.
|
|
160
|
+
*
|
|
161
|
+
* That sentence described the intent and not the code until now: an
|
|
162
|
+
* unreadable file returned `undefined`, which is this method's word for
|
|
163
|
+
* "nothing to preserve", and the caller carried straight on to the overwrite.
|
|
164
|
+
* `filesIdentical` swallows its own read errors and answers "differs", so an
|
|
165
|
+
* unreadable Lisa-owned guard reached here on every apply and was replaced
|
|
166
|
+
* without ever being classified. Now it is kept, and the reason is named.
|
|
124
167
|
* @param sourcePath - Packaged template path
|
|
125
168
|
* @param destPath - Installed file path
|
|
126
169
|
* @param relativePath - Repo-relative path for reporting
|
|
@@ -132,8 +175,14 @@ export class CopyOverwriteStrategy {
|
|
|
132
175
|
readFile(destPath).catch(() => undefined),
|
|
133
176
|
readFile(sourcePath).catch(() => undefined),
|
|
134
177
|
]);
|
|
135
|
-
if (hostBytes === undefined || lisaBytes === undefined)
|
|
136
|
-
return
|
|
178
|
+
if (hostBytes === undefined || lisaBytes === undefined) {
|
|
179
|
+
return {
|
|
180
|
+
relativePath,
|
|
181
|
+
strategy: this.name,
|
|
182
|
+
action: "host-ahead",
|
|
183
|
+
note: describeUnclassifiable(relativePath, hostBytes === undefined),
|
|
184
|
+
};
|
|
185
|
+
}
|
|
137
186
|
const verdict = classifyHostCopy(relativePath, hostBytes, lisaBytes, ledger);
|
|
138
187
|
if (mayRefreshLisaOwned(verdict))
|
|
139
188
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copy-overwrite.js","sourceRoot":"","sources":["../../src/strategies/copy-overwrite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,OAAO,qBAAqB;IACvB,IAAI,GAAG,gBAAyB,CAAC;IAE1C;;;;;;;OAOG;IACH,KAAK,CAAC,KAAK,CACT,UAAkB,EAClB,QAAgB,EAChB,YAAoB,EACpB,OAAwB;QAExB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;QACxD,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,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC/C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAClE,CAAC;QAED,4EAA4E;QAC5E,yEAAyE;QACzE,yEAAyE;QACzE,2CAA2C;QAC3C,EAAE;QACF,2EAA2E;QAC3E,yEAAyE;QACzE,0EAA0E;QAC1E,wEAAwE;QACxE,0EAA0E;QAC1E,wCAAwC;QACxC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,mBAAmB,CAC7B,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,OAAO,CACR,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;QACtE,CAAC;QAED,MAAM,eAAe,GAAG,MAAM,eAAe,CAC3C,YAAY,EACZ,UAAU,EACV,QAAQ,CACT,CAAC;QAEF,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC3B,MAAM,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACrC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;QACtE,CAAC;QAED,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAClE,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACK,KAAK,CAAC,mBAAmB,CAC/B,UAAkB,EAClB,QAAgB,EAChB,YAAoB,EACpB,OAAwB;QAExB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"copy-overwrite.js","sourceRoot":"","sources":["../../src/strategies/copy-overwrite.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -141,7 +141,7 @@
|
|
|
141
141
|
"zod-validation-error": "^4.0.0"
|
|
142
142
|
},
|
|
143
143
|
"name": "@codyswann/lisa",
|
|
144
|
-
"version": "3.47.
|
|
144
|
+
"version": "3.47.8",
|
|
145
145
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
146
146
|
"main": "dist/index.js",
|
|
147
147
|
"exports": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "3.47.
|
|
3
|
+
"version": "3.47.8",
|
|
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.47.
|
|
3
|
+
"version": "3.47.8",
|
|
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": "3.47.
|
|
3
|
+
"version": "3.47.8",
|
|
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.47.
|
|
3
|
+
"version": "3.47.8",
|
|
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.47.
|
|
3
|
+
"version": "3.47.8",
|
|
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"
|