@codyswann/lisa 4.17.2 → 4.17.4
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/cli/version.d.ts +8 -0
- package/dist/cli/version.d.ts.map +1 -1
- package/dist/cli/version.js +25 -0
- package/dist/cli/version.js.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.js +2 -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 +3 -2
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/migrations/ensure-nightly-e2e-workflow-pins.d.ts +13 -5
- package/dist/migrations/ensure-nightly-e2e-workflow-pins.d.ts.map +1 -1
- package/dist/migrations/ensure-nightly-e2e-workflow-pins.js +18 -11
- package/dist/migrations/ensure-nightly-e2e-workflow-pins.js.map +1 -1
- package/expo/copy-overwrite/scripts/check-lighthouse-details.mjs +13 -9
- package/package.json +3 -2
- 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/two-channel-couplings.json +1 -1
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
import type { Migration, MigrationContext, MigrationResult } from "./migration.interface.js";
|
|
2
2
|
/** Read the installed Lisa package version. */
|
|
3
3
|
type VersionReader = () => string;
|
|
4
|
+
/**
|
|
5
|
+
*
|
|
6
|
+
*/
|
|
7
|
+
type ReleaseCommitReader = () => string | null;
|
|
4
8
|
/** Keep an installed nightly E2E caller on the same immutable Lisa release. */
|
|
5
9
|
export declare class EnsureNightlyE2EWorkflowPinsMigration implements Migration {
|
|
6
10
|
private readonly readLisaVersion;
|
|
11
|
+
private readonly readReleaseCommit;
|
|
7
12
|
readonly name = "ensure-nightly-e2e-workflow-pins";
|
|
8
13
|
readonly description = "Align nightly E2E reusable-workflow pins with installed Lisa";
|
|
9
14
|
/**
|
|
10
15
|
* Create the migration.
|
|
11
16
|
*
|
|
12
17
|
* @param readLisaVersion - Version reader, injectable for deterministic tests
|
|
18
|
+
* @param readReleaseCommit - Published release commit reader
|
|
13
19
|
*/
|
|
14
|
-
constructor(readLisaVersion?: VersionReader);
|
|
20
|
+
constructor(readLisaVersion?: VersionReader, readReleaseCommit?: ReleaseCommitReader);
|
|
15
21
|
/**
|
|
16
22
|
* Decide whether an Expo caller still points at another Lisa release.
|
|
17
23
|
*
|
|
@@ -20,10 +26,11 @@ export declare class EnsureNightlyE2EWorkflowPinsMigration implements Migration
|
|
|
20
26
|
*/
|
|
21
27
|
applies(ctx: MigrationContext): Promise<boolean>;
|
|
22
28
|
/**
|
|
23
|
-
* Update
|
|
29
|
+
* Update Lisa's literal release caller pins and their matching comment.
|
|
24
30
|
*
|
|
25
|
-
* A host that deliberately uses a branch
|
|
26
|
-
*
|
|
31
|
+
* A host that deliberately uses a branch or different workflow path is left
|
|
32
|
+
* untouched because Lisa cannot infer that host's release policy. Canonical
|
|
33
|
+
* nightly callers advance both Lisa semver and commit pins together.
|
|
27
34
|
*
|
|
28
35
|
* @param ctx - Migration context
|
|
29
36
|
* @returns Applied or no-op result
|
|
@@ -37,11 +44,12 @@ export declare class EnsureNightlyE2EWorkflowPinsMigration implements Migration
|
|
|
37
44
|
*/
|
|
38
45
|
private readContractVersion;
|
|
39
46
|
/**
|
|
40
|
-
* Update a supported caller without touching host-selected
|
|
47
|
+
* Update a supported caller without touching host-selected branch refs.
|
|
41
48
|
*
|
|
42
49
|
* @param source - Workflow source
|
|
43
50
|
* @param file - Supported workflow filename
|
|
44
51
|
* @param lisaVersion - Installed Lisa version
|
|
52
|
+
* @param releaseRef - Immutable release commit, or the semver fallback
|
|
45
53
|
* @param contractVersion - Guard contract version, when available
|
|
46
54
|
* @returns Updated or original workflow source
|
|
47
55
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensure-nightly-e2e-workflow-pins.d.ts","sourceRoot":"","sources":["../../src/migrations/ensure-nightly-e2e-workflow-pins.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAWlC,+CAA+C;AAC/C,KAAK,aAAa,GAAG,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ensure-nightly-e2e-workflow-pins.d.ts","sourceRoot":"","sources":["../../src/migrations/ensure-nightly-e2e-workflow-pins.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAWlC,+CAA+C;AAC/C,KAAK,aAAa,GAAG,MAAM,MAAM,CAAC;AAClC;;GAEG;AACH,KAAK,mBAAmB,GAAG,MAAM,MAAM,GAAG,IAAI,CAAC;AAE/C,+EAA+E;AAC/E,qBAAa,qCAAsC,YAAW,SAAS;IAYnE,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAZpC,QAAQ,CAAC,IAAI,sCAAsC;IACnD,QAAQ,CAAC,WAAW,kEAC6C;IAEjE;;;;;OAKG;gBAEgB,eAAe,GAAE,aAAiC,EAClD,iBAAiB,GAAE,mBAA6C;IAGnF;;;;;OAKG;IACG,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAyBtD;;;;;;;;;OASG;IACG,KAAK,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAyC5D;;;;;OAKG;YACW,mBAAmB;IAQjC;;;;;;;;;OASG;IACH,OAAO,CAAC,YAAY;CA8BrB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { readFile, writeFile } from "node:fs/promises";
|
|
2
2
|
import * as path from "node:path";
|
|
3
3
|
import * as fse from "fs-extra";
|
|
4
|
-
import { getPackageVersion } from "../cli/version.js";
|
|
4
|
+
import { getPackageReleaseCommit, getPackageVersion } from "../cli/version.js";
|
|
5
5
|
const WORKFLOW_DIR = path.join(".github", "workflows");
|
|
6
6
|
const WORKFLOW_FILES = [
|
|
7
7
|
"nightly-e2e-health.yml",
|
|
@@ -12,15 +12,18 @@ const CONTRACT_PATTERN = /NIGHTLY_E2E_CONTRACT_VERSION\s*=\s*["'](\d+\.\d+\.\d+)
|
|
|
12
12
|
/** Keep an installed nightly E2E caller on the same immutable Lisa release. */
|
|
13
13
|
export class EnsureNightlyE2EWorkflowPinsMigration {
|
|
14
14
|
readLisaVersion;
|
|
15
|
+
readReleaseCommit;
|
|
15
16
|
name = "ensure-nightly-e2e-workflow-pins";
|
|
16
17
|
description = "Align nightly E2E reusable-workflow pins with installed Lisa";
|
|
17
18
|
/**
|
|
18
19
|
* Create the migration.
|
|
19
20
|
*
|
|
20
21
|
* @param readLisaVersion - Version reader, injectable for deterministic tests
|
|
22
|
+
* @param readReleaseCommit - Published release commit reader
|
|
21
23
|
*/
|
|
22
|
-
constructor(readLisaVersion = getPackageVersion) {
|
|
24
|
+
constructor(readLisaVersion = getPackageVersion, readReleaseCommit = getPackageReleaseCommit) {
|
|
23
25
|
this.readLisaVersion = readLisaVersion;
|
|
26
|
+
this.readReleaseCommit = readReleaseCommit;
|
|
24
27
|
}
|
|
25
28
|
/**
|
|
26
29
|
* Decide whether an Expo caller still points at another Lisa release.
|
|
@@ -33,28 +36,31 @@ export class EnsureNightlyE2EWorkflowPinsMigration {
|
|
|
33
36
|
return false;
|
|
34
37
|
const contractVersion = await this.readContractVersion(ctx.projectDir);
|
|
35
38
|
const lisaVersion = this.readLisaVersion();
|
|
39
|
+
const releaseRef = this.readReleaseCommit() ?? `v${lisaVersion}`;
|
|
36
40
|
for (const file of WORKFLOW_FILES) {
|
|
37
41
|
const absolute = path.join(ctx.projectDir, WORKFLOW_DIR, file);
|
|
38
42
|
if (!(await fse.pathExists(absolute)))
|
|
39
43
|
continue;
|
|
40
44
|
const source = await readFile(absolute, "utf8");
|
|
41
|
-
if (this.updateSource(source, file, lisaVersion, contractVersion) !== source) {
|
|
45
|
+
if (this.updateSource(source, file, lisaVersion, releaseRef, contractVersion) !== source) {
|
|
42
46
|
return true;
|
|
43
47
|
}
|
|
44
48
|
}
|
|
45
49
|
return false;
|
|
46
50
|
}
|
|
47
51
|
/**
|
|
48
|
-
* Update
|
|
52
|
+
* Update Lisa's literal release caller pins and their matching comment.
|
|
49
53
|
*
|
|
50
|
-
* A host that deliberately uses a branch
|
|
51
|
-
*
|
|
54
|
+
* A host that deliberately uses a branch or different workflow path is left
|
|
55
|
+
* untouched because Lisa cannot infer that host's release policy. Canonical
|
|
56
|
+
* nightly callers advance both Lisa semver and commit pins together.
|
|
52
57
|
*
|
|
53
58
|
* @param ctx - Migration context
|
|
54
59
|
* @returns Applied or no-op result
|
|
55
60
|
*/
|
|
56
61
|
async apply(ctx) {
|
|
57
62
|
const lisaVersion = this.readLisaVersion();
|
|
63
|
+
const releaseRef = this.readReleaseCommit() ?? `v${lisaVersion}`;
|
|
58
64
|
const contractVersion = await this.readContractVersion(ctx.projectDir);
|
|
59
65
|
const changedFiles = [];
|
|
60
66
|
const updates = [];
|
|
@@ -64,7 +70,7 @@ export class EnsureNightlyE2EWorkflowPinsMigration {
|
|
|
64
70
|
if (!(await fse.pathExists(absolute)))
|
|
65
71
|
continue;
|
|
66
72
|
const before = await readFile(absolute, "utf8");
|
|
67
|
-
const after = this.updateSource(before, file, lisaVersion, contractVersion);
|
|
73
|
+
const after = this.updateSource(before, file, lisaVersion, releaseRef, contractVersion);
|
|
68
74
|
if (after === before)
|
|
69
75
|
continue;
|
|
70
76
|
changedFiles.push(relative);
|
|
@@ -97,18 +103,19 @@ export class EnsureNightlyE2EWorkflowPinsMigration {
|
|
|
97
103
|
return CONTRACT_PATTERN.exec(await readFile(file, "utf8"))?.[1] ?? null;
|
|
98
104
|
}
|
|
99
105
|
/**
|
|
100
|
-
* Update a supported caller without touching host-selected
|
|
106
|
+
* Update a supported caller without touching host-selected branch refs.
|
|
101
107
|
*
|
|
102
108
|
* @param source - Workflow source
|
|
103
109
|
* @param file - Supported workflow filename
|
|
104
110
|
* @param lisaVersion - Installed Lisa version
|
|
111
|
+
* @param releaseRef - Immutable release commit, or the semver fallback
|
|
105
112
|
* @param contractVersion - Guard contract version, when available
|
|
106
113
|
* @returns Updated or original workflow source
|
|
107
114
|
*/
|
|
108
|
-
updateSource(source, file, lisaVersion, contractVersion) {
|
|
115
|
+
updateSource(source, file, lisaVersion, releaseRef, contractVersion) {
|
|
109
116
|
const reusable = file.replace(/\.yml$/, "");
|
|
110
|
-
const pinPattern = new RegExp(`(uses:\\s*CodySwannGT/lisa/\\.github/workflows/${reusable}\\.yml@)v\\d+\\.\\d+\\.\\d
|
|
111
|
-
const pinUpdated = source.replace(pinPattern, `$
|
|
117
|
+
const pinPattern = new RegExp(`(uses:\\s*CodySwannGT/lisa/\\.github/workflows/${reusable}\\.yml@)(?:v\\d+\\.\\d+\\.\\d+|[0-9a-f]{40})`, "g");
|
|
118
|
+
const pinUpdated = source.replace(pinPattern, `$1${releaseRef}`);
|
|
112
119
|
const pinChanged = pinUpdated !== source;
|
|
113
120
|
if (file === "nightly-e2e-health.yml" && pinChanged) {
|
|
114
121
|
const commentUpdated = pinUpdated.replace(/# v\d+\.\d+\.\d+ matches this repo's own installed Lisa/, `# v${lisaVersion} matches this repo's own installed Lisa`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensure-nightly-e2e-workflow-pins.js","sourceRoot":"","sources":["../../src/migrations/ensure-nightly-e2e-workflow-pins.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,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"ensure-nightly-e2e-workflow-pins.js","sourceRoot":"","sources":["../../src/migrations/ensure-nightly-e2e-workflow-pins.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,20 +32,24 @@ const DEFAULT_MAX_FORCED_REFLOW_MS = 100;
|
|
|
32
32
|
*/
|
|
33
33
|
function readAggregateMeasurements(details) {
|
|
34
34
|
if (details === null || typeof details !== "object") {
|
|
35
|
-
|
|
35
|
+
throw new Error("forced-reflow details are missing or malformed");
|
|
36
|
+
}
|
|
37
|
+
if (details.type !== "table" && !Array.isArray(details.items)) {
|
|
38
|
+
throw new Error("forced-reflow details are missing or malformed");
|
|
36
39
|
}
|
|
37
40
|
const tables =
|
|
38
41
|
details.type === "table"
|
|
39
42
|
? [details]
|
|
40
|
-
:
|
|
41
|
-
|
|
42
|
-
item
|
|
43
|
-
|
|
44
|
-
)
|
|
45
|
-
: [];
|
|
43
|
+
: details.items.filter(
|
|
44
|
+
item =>
|
|
45
|
+
item !== null && typeof item === "object" && item.type === "table"
|
|
46
|
+
);
|
|
46
47
|
const aggregate = tables.at(-1);
|
|
47
|
-
if (!aggregate
|
|
48
|
-
|
|
48
|
+
if (!aggregate) {
|
|
49
|
+
throw new Error("forced-reflow details contain no aggregate table");
|
|
50
|
+
}
|
|
51
|
+
if (!Array.isArray(aggregate.items)) {
|
|
52
|
+
throw new Error("forced-reflow aggregate table is malformed");
|
|
49
53
|
}
|
|
50
54
|
return aggregate.items.map((item, index) => {
|
|
51
55
|
const measurement = item?.reflowTime;
|
package/package.json
CHANGED
|
@@ -152,7 +152,7 @@
|
|
|
152
152
|
"zod-validation-error": "^4.0.0"
|
|
153
153
|
},
|
|
154
154
|
"name": "@codyswann/lisa",
|
|
155
|
-
"version": "4.17.
|
|
155
|
+
"version": "4.17.4",
|
|
156
156
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
157
157
|
"main": "dist/index.js",
|
|
158
158
|
"exports": {
|
|
@@ -290,5 +290,6 @@
|
|
|
290
290
|
"oxlint-tsgolint": "^0.24.0",
|
|
291
291
|
"vite": "^8.0.16"
|
|
292
292
|
},
|
|
293
|
-
"type": "module"
|
|
293
|
+
"type": "module",
|
|
294
|
+
"lisaReleaseCommit": "68074de09d4f23d299563d4669ded6e9064a0095"
|
|
294
295
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "4.17.
|
|
3
|
+
"version": "4.17.4",
|
|
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.17.
|
|
3
|
+
"version": "4.17.4",
|
|
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.17.
|
|
3
|
+
"version": "4.17.4",
|
|
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.17.
|
|
3
|
+
"version": "4.17.4",
|
|
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.17.
|
|
3
|
+
"version": "4.17.4",
|
|
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"
|