@codyswann/lisa 4.15.0 → 4.15.1
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/doctor-two-channel-drift.d.ts.map +1 -1
- package/dist/cli/doctor-two-channel-drift.js +79 -19
- package/dist/cli/doctor-two-channel-drift.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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-two-channel-drift.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-two-channel-drift.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor-two-channel-drift.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-two-channel-drift.ts"],"names":[],"mappings":"AA+CA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA+E/C;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAmB5B;AAyHD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,MAA4B,GACvC,OAAO,CAAC,WAAW,CAAC,CAsDtB"}
|
|
@@ -43,6 +43,7 @@ import { existsSync } from "node:fs";
|
|
|
43
43
|
import { readdir, readFile } from "node:fs/promises";
|
|
44
44
|
import * as path from "node:path";
|
|
45
45
|
import { fileURLToPath } from "node:url";
|
|
46
|
+
import { createDetectorRegistry } from "../detection/index.js";
|
|
46
47
|
/** Name rendered in the doctor report. */
|
|
47
48
|
const CHECK_NAME = "Two-channel delivery drift";
|
|
48
49
|
/** The ledger's location relative to the package root, in either tree layout. */
|
|
@@ -74,7 +75,11 @@ async function readLedger(ledgerPath) {
|
|
|
74
75
|
return { state: "absent" };
|
|
75
76
|
try {
|
|
76
77
|
const parsed = JSON.parse(await readFile(ledgerPath, "utf-8"));
|
|
77
|
-
return {
|
|
78
|
+
return {
|
|
79
|
+
state: "read",
|
|
80
|
+
couplings: parsed.couplings ?? [],
|
|
81
|
+
ratified: parsed.ratified ?? {},
|
|
82
|
+
};
|
|
78
83
|
}
|
|
79
84
|
catch (error) {
|
|
80
85
|
return {
|
|
@@ -118,9 +123,79 @@ function advisoryFor(coupling) {
|
|
|
118
123
|
? "Run `lisa apply` — the artifact is delivered on that channel and your tree is behind it."
|
|
119
124
|
: coupling.remedy === "adopt-the-artifact"
|
|
120
125
|
? "Lisa writes this artifact ONCE, at scaffold time, and never refreshes it — no version bump brings it. Copy it in from the Lisa package's delivery lane and commit it."
|
|
121
|
-
: "Lisa ships no such artifact. Author it in your own tree, or
|
|
126
|
+
: "Lisa ships no such artifact. Author it in your own tree, or declare the governing named gate `off` in `.lisa.config.json` so the decision is explicit and auditable.";
|
|
122
127
|
return ` - \`${coupling.workflow}\` reads \`${coupling.path}\`, which your tree does not have. ${coupling.detail} ${step}`;
|
|
123
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* Whether at least one delivery lane can run for the target project.
|
|
131
|
+
* Couplings without lanes are still relevant: they are precisely the cases
|
|
132
|
+
* where no generated lane currently delivers the caller-tree artifact.
|
|
133
|
+
* @param coupling - Ledger coupling to classify
|
|
134
|
+
* @param activeTypes - Detected project types, including expanded parents
|
|
135
|
+
* @returns True when the coupling applies to this target
|
|
136
|
+
*/
|
|
137
|
+
function appliesToProject(coupling, activeTypes) {
|
|
138
|
+
if (coupling.lanes === undefined || coupling.lanes.length === 0)
|
|
139
|
+
return true;
|
|
140
|
+
return coupling.lanes.some(lane => {
|
|
141
|
+
const [projectType] = lane.split("/", 1);
|
|
142
|
+
return projectType === "all" || activeTypes.has(projectType ?? "");
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Select caller-tree couplings that can apply to this target.
|
|
147
|
+
* @param targetPath - Project path to inspect
|
|
148
|
+
* @param callers - Live reusable workflow names
|
|
149
|
+
* @param couplings - Couplings from the shipped ledger
|
|
150
|
+
* @returns Applicable caller-tree couplings
|
|
151
|
+
*/
|
|
152
|
+
async function applicableCouplings(targetPath, callers, couplings) {
|
|
153
|
+
const detectorRegistry = createDetectorRegistry();
|
|
154
|
+
const activeTypes = new Set(detectorRegistry.expandAndOrderTypes(await detectorRegistry.detectAll(targetPath)));
|
|
155
|
+
return couplings.filter(coupling => callers.includes(coupling.workflow) &&
|
|
156
|
+
coupling.verdict !== "package-backed" &&
|
|
157
|
+
appliesToProject(coupling, activeTypes));
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Summarize what was inspected, including accepted ledger exceptions.
|
|
161
|
+
* @param relevant - Applicable couplings
|
|
162
|
+
* @param callers - Live reusable workflow names
|
|
163
|
+
* @param ratifiedCount - Number covered by a ledger ratification
|
|
164
|
+
* @returns Human-readable inspection summary
|
|
165
|
+
*/
|
|
166
|
+
function inspectionSummary(relevant, callers, ratifiedCount) {
|
|
167
|
+
const exceptions = ratifiedCount > 0
|
|
168
|
+
? ` Honored ${ratifiedCount} ledger-ratified exception(s).`
|
|
169
|
+
: "";
|
|
170
|
+
return `Inspected ${relevant.length} coupling(s) across ${callers.length} live caller(s) (${callers.join(", ")}).${exceptions}`;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Turn applicable couplings into the final doctor result.
|
|
174
|
+
* @param targetPath - Project path to inspect
|
|
175
|
+
* @param callers - Live reusable workflow names
|
|
176
|
+
* @param relevant - Applicable caller-tree couplings
|
|
177
|
+
* @param ratifications - Accepted source-only exceptions by coupling key
|
|
178
|
+
* @returns The doctor check result
|
|
179
|
+
*/
|
|
180
|
+
function evaluateCouplings(targetPath, callers, relevant, ratifications) {
|
|
181
|
+
const ratified = relevant.filter(coupling => ratifications[coupling.key] !== undefined);
|
|
182
|
+
const missing = relevant.filter(coupling => ratifications[coupling.key] === undefined &&
|
|
183
|
+
!existsSync(path.join(targetPath, coupling.path)));
|
|
184
|
+
const inspected = inspectionSummary(relevant, callers, ratified.length);
|
|
185
|
+
if (missing.length === 0) {
|
|
186
|
+
return {
|
|
187
|
+
name: CHECK_NAME,
|
|
188
|
+
status: "ok",
|
|
189
|
+
detail: `${inspected} Every applicable, unratified caller-tree artifact those workflows read is present, so both halves are in step.`,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
const unrestorable = missing.filter(coupling => UNRESTORABLE.has(coupling.verdict));
|
|
193
|
+
return {
|
|
194
|
+
name: CHECK_NAME,
|
|
195
|
+
status: unrestorable.length > 0 ? "fail" : "warn",
|
|
196
|
+
detail: `${inspected} ${missing.length} of them read a caller-tree artifact this checkout does not have — the workflow half arrived at \`@main\` and the artifact half did not:\n${missing.map(advisoryFor).join("\n")}`,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
124
199
|
/**
|
|
125
200
|
* Report caller-tree artifacts the project's live `@main` callers need.
|
|
126
201
|
* @param targetPath - Project path to inspect
|
|
@@ -169,22 +244,7 @@ export async function checkTwoChannelDrift(targetPath, ledgerPath = defaultLedge
|
|
|
169
244
|
"cannot legitimately be empty.",
|
|
170
245
|
};
|
|
171
246
|
}
|
|
172
|
-
const relevant =
|
|
173
|
-
|
|
174
|
-
const inspected = `Inspected ${relevant.length} coupling(s) across ${callers.length} live ` +
|
|
175
|
-
`caller(s) (${callers.join(", ")}).`;
|
|
176
|
-
if (missing.length === 0) {
|
|
177
|
-
return {
|
|
178
|
-
name: CHECK_NAME,
|
|
179
|
-
status: "ok",
|
|
180
|
-
detail: `${inspected} Every caller-tree artifact those workflows read is present, so both halves are in step.`,
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
const unrestorable = missing.filter(coupling => UNRESTORABLE.has(coupling.verdict));
|
|
184
|
-
return {
|
|
185
|
-
name: CHECK_NAME,
|
|
186
|
-
status: unrestorable.length > 0 ? "fail" : "warn",
|
|
187
|
-
detail: `${inspected} ${missing.length} of them read a caller-tree artifact this checkout does not have — the workflow half arrived at \`@main\` and the artifact half did not:\n${missing.map(advisoryFor).join("\n")}`,
|
|
188
|
-
};
|
|
247
|
+
const relevant = await applicableCouplings(targetPath, callers, ledger.couplings);
|
|
248
|
+
return evaluateCouplings(targetPath, callers, relevant, ledger.ratified);
|
|
189
249
|
}
|
|
190
250
|
//# sourceMappingURL=doctor-two-channel-drift.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-two-channel-drift.js","sourceRoot":"","sources":["../../src/cli/doctor-two-channel-drift.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor-two-channel-drift.js","sourceRoot":"","sources":["../../src/cli/doctor-two-channel-drift.ts"],"names":[],"mappings":"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"}
|
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.15.
|
|
155
|
+
"version": "4.15.1",
|
|
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": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "4.15.
|
|
3
|
+
"version": "4.15.1",
|
|
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.15.
|
|
3
|
+
"version": "4.15.1",
|
|
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.15.
|
|
3
|
+
"version": "4.15.1",
|
|
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.15.
|
|
3
|
+
"version": "4.15.1",
|
|
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.15.
|
|
3
|
+
"version": "4.15.1",
|
|
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"
|