@codyswann/lisa 4.25.1 → 4.25.2
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/lib/gate-failure-diagnosis.mjs +54 -11
- package/all/copy-overwrite/scripts/lisa-floor-collisions.mjs +33 -8
- package/all/copy-overwrite/scripts/lisa-work-item.mjs +28 -5
- package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.js +8 -0
- package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
- package/dist/core/lisa.d.ts +15 -0
- package/dist/core/lisa.d.ts.map +1 -1
- package/dist/core/lisa.js +39 -17
- package/dist/core/lisa.js.map +1 -1
- package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +6 -4
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/opencode/agent-installer.d.ts +10 -4
- package/dist/opencode/agent-installer.d.ts.map +1 -1
- package/dist/opencode/agent-installer.js +11 -6
- package/dist/opencode/agent-installer.js.map +1 -1
- package/dist/opencode/command-installer.d.ts +10 -4
- package/dist/opencode/command-installer.d.ts.map +1 -1
- package/dist/opencode/command-installer.js +12 -6
- package/dist/opencode/command-installer.js.map +1 -1
- package/dist/opencode/project-plugin-gate.d.ts +36 -0
- package/dist/opencode/project-plugin-gate.d.ts.map +1 -0
- package/dist/opencode/project-plugin-gate.js +13 -0
- package/dist/opencode/project-plugin-gate.js.map +1 -0
- package/dist/opencode/skills-installer.d.ts +5 -1
- package/dist/opencode/skills-installer.d.ts.map +1 -1
- package/dist/opencode/skills-installer.js +9 -4
- package/dist/opencode/skills-installer.js.map +1 -1
- package/package.json +3 -3
- 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/check-security-floors.mjs +58 -5
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "4.25.
|
|
3
|
+
"version": "4.25.2",
|
|
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": "4.25.
|
|
3
|
+
"version": "4.25.2",
|
|
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": "4.25.
|
|
3
|
+
"version": "4.25.2",
|
|
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": "4.25.
|
|
3
|
+
"version": "4.25.2",
|
|
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"
|
|
@@ -114,19 +114,67 @@ export function resolveSelfReference(manifest, name) {
|
|
|
114
114
|
* them, because a floor nobody looked at is indistinguishable in the output
|
|
115
115
|
* from a floor that passed.
|
|
116
116
|
*/
|
|
117
|
-
const MANIFEST_PATTERNS = Object.freeze([
|
|
117
|
+
export const MANIFEST_PATTERNS = Object.freeze([
|
|
118
118
|
"package.lisa.json",
|
|
119
119
|
"*/package-lisa/package.lisa.json",
|
|
120
120
|
]);
|
|
121
121
|
|
|
122
122
|
/** Paths that are copies of a manifest rather than a manifest. */
|
|
123
|
-
const NOT_A_MANIFEST = [
|
|
123
|
+
export const NOT_A_MANIFEST = [
|
|
124
124
|
"node_modules",
|
|
125
125
|
".worktrees",
|
|
126
126
|
"dist/",
|
|
127
127
|
"tests/fixtures",
|
|
128
128
|
];
|
|
129
129
|
|
|
130
|
+
/**
|
|
131
|
+
* The same policy as `NOT_A_MANIFEST`, expressed so the walker can prune.
|
|
132
|
+
*
|
|
133
|
+
* Two things this is NOT, both worth stating because both are easy to assume.
|
|
134
|
+
*
|
|
135
|
+
* It is not a cost fix. `MANIFEST_PATTERNS` contains no `**`, so `globSync`
|
|
136
|
+
* resolves it segment by segment and never walks the tree — measured on
|
|
137
|
+
* v22.22.0 against a synthetic root of 30000 vendored directories, median
|
|
138
|
+
* 0.21 ms with no options, and against this repository's real `node_modules`,
|
|
139
|
+
* median 0.99 ms. Passing `exclude` makes it slightly *slower* (0.77 ms and
|
|
140
|
+
* 2.56 ms respectively), because the prune patterns are themselves matched.
|
|
141
|
+
* At single-digit milliseconds inside a script that makes ~200 network calls
|
|
142
|
+
* the difference is not the point and neither direction is worth citing.
|
|
143
|
+
*
|
|
144
|
+
* It is not a redundant restatement of the post-filter either. It is a guard
|
|
145
|
+
* against the one edit this file actively invites: when a tracked manifest
|
|
146
|
+
* turns up unscanned, `main()` prints "Fix by widening `MANIFEST_PATTERNS`",
|
|
147
|
+
* and the natural widening is `**/package.lisa.json`. That single character
|
|
148
|
+
* pair converts this call into a full recursive walk over every vendored and
|
|
149
|
+
* nested-checkout tree in the repository — the walk that aborted on the heap
|
|
150
|
+
* limit at exit 134 in the runner that shares this shape. Having the prune
|
|
151
|
+
* list already in place means the widening stays cheap instead of arriving
|
|
152
|
+
* alongside a defect nobody was looking for.
|
|
153
|
+
*
|
|
154
|
+
* Derived from `NOT_A_MANIFEST` rather than written out beside it, for a
|
|
155
|
+
* stronger reason than tidiness. Every prune pattern here matches a strict
|
|
156
|
+
* subset of what the post-filter drops — `**/node_modules/**` is contained by
|
|
157
|
+
* `includes("node_modules")` — so pruning can never remove a manifest the
|
|
158
|
+
* filter would have kept. That containment is what keeps the `git ls-files`
|
|
159
|
+
* reconciliation honest: a hand-written prune list could exclude a tracked
|
|
160
|
+
* manifest the filter retains, which would surface as an `unscanned` entry and
|
|
161
|
+
* fail `--strict` for a coverage gap that was never real.
|
|
162
|
+
*
|
|
163
|
+
* `.worktrees` is inert: `**` neither matches nor descends into dot-leading
|
|
164
|
+
* segments, so its pattern can never fire. It is derived anyway, because the
|
|
165
|
+
* cost is nothing and the alternative is a list that silently disagrees with
|
|
166
|
+
* the one above it.
|
|
167
|
+
*
|
|
168
|
+
* The option is `exclude`. The intuitive spelling is `ignore`, which belongs
|
|
169
|
+
* to the `glob` NPM package; this is `node:fs`, which silently discards
|
|
170
|
+
* unknown option keys — measured on v22.22.0, passing `ignore` returns a
|
|
171
|
+
* result identical to passing no options at all. A test pins both halves so
|
|
172
|
+
* the no-op cannot be reintroduced.
|
|
173
|
+
*/
|
|
174
|
+
export const MANIFEST_EXCLUDE_GLOBS = Object.freeze(
|
|
175
|
+
NOT_A_MANIFEST.map(fragment => `**/${fragment.replace(/\/+$/, "")}/**`)
|
|
176
|
+
);
|
|
177
|
+
|
|
130
178
|
/**
|
|
131
179
|
* Every manifest git tracks, so the glob can be checked against reality.
|
|
132
180
|
*
|
|
@@ -179,9 +227,14 @@ export function collectFloors() {
|
|
|
179
227
|
const unresolved = [];
|
|
180
228
|
/** Floors carrying a version that resolves to no lower bound. */
|
|
181
229
|
const unparseable = [];
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
230
|
+
// `exclude` decides what is walked; the filter decides what is a manifest.
|
|
231
|
+
// Not redundant: the filter carries fragments that are not whole path
|
|
232
|
+
// segments, so it is not fully expressible as a prune list, and it also
|
|
233
|
+
// catches anything the walker reached by a route the prune list does not
|
|
234
|
+
// describe.
|
|
235
|
+
const files = globSync(MANIFEST_PATTERNS, {
|
|
236
|
+
exclude: MANIFEST_EXCLUDE_GLOBS,
|
|
237
|
+
}).filter(file => !NOT_A_MANIFEST.some(fragment => file.includes(fragment)));
|
|
185
238
|
// What the patterns reach, against what the repository actually carries. A
|
|
186
239
|
// glob is exactly the kind of thing that narrows by one level and keeps
|
|
187
240
|
// reporting a clean sheet for the files it stopped opening.
|