@codyswann/lisa 3.31.1 → 3.31.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/dist/cli/doctor-serialize-legs-contract.d.ts +28 -0
- package/dist/cli/doctor-serialize-legs-contract.d.ts.map +1 -1
- package/dist/cli/doctor-serialize-legs-contract.js +47 -1
- package/dist/cli/doctor-serialize-legs-contract.js.map +1 -1
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +1 -0
- package/dist/core/upstream-evidence-manifest.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,4 +1,32 @@
|
|
|
1
1
|
import type { DoctorCheck } from "./doctor.js";
|
|
2
|
+
/**
|
|
3
|
+
* Whether the REUSABLE workflow's own `permissions:` block grants `actions`.
|
|
4
|
+
*
|
|
5
|
+
* This is the part no caller can supply. A called workflow's `permissions:`
|
|
6
|
+
* block is a ceiling that zeroes everything unlisted, so a caller's grant is
|
|
7
|
+
* discarded at the reusable-workflow boundary no matter where it is placed.
|
|
8
|
+
* While this is false, `serialize_platform_legs` cannot order anything in ANY
|
|
9
|
+
* repository, and reporting a fully configured caller as `ok` would certify a
|
|
10
|
+
* configuration measured to fail.
|
|
11
|
+
*
|
|
12
|
+
* Measured 2026-08-17 against a caller granting `actions: read` at BOTH job and
|
|
13
|
+
* workflow level: the job's own token grant showed `Contents: read` and
|
|
14
|
+
* `Metadata: read` with no Actions scope, the jobs API answered 403, and the
|
|
15
|
+
* two platform legs started two seconds apart.
|
|
16
|
+
*
|
|
17
|
+
* A constant rather than a read of the workflow file, because consumers
|
|
18
|
+
* reference the reusable workflow at `@main` and do not have a copy of it to
|
|
19
|
+
* read. `serialize-legs-callee-grant.test.ts` pins this to the actual
|
|
20
|
+
* `permissions:` block in `.github/workflows/maestro-native-e2e.yml`, so it
|
|
21
|
+
* cannot drift from what Lisa ships — flipping it and forgetting the workflow,
|
|
22
|
+
* or the reverse, fails that test.
|
|
23
|
+
*
|
|
24
|
+
* Residual limit worth naming: a consumer's `lisa doctor` comes from its
|
|
25
|
+
* installed package while the workflow it runs comes from `@main`, so a stale
|
|
26
|
+
* install can disagree with what actually runs. That is a property of `@main`
|
|
27
|
+
* refs, not of this check.
|
|
28
|
+
*/
|
|
29
|
+
export declare const CALLEE_GRANTS_ACTIONS_READ = false;
|
|
2
30
|
/** Which of the three required parts a caller declares. */
|
|
3
31
|
export interface SerializeContract {
|
|
4
32
|
/** `serialize_platform_legs: true` in the `with:` block. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-serialize-legs-contract.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-serialize-legs-contract.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,2DAA2D;AAC3D,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,2DAA2D;IAC3D,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;CACrC;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,iBAAiB,GAAG,SAAS,MAAM,EAAE,CAQ3E;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAEtE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"doctor-serialize-legs-contract.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-serialize-legs-contract.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,0BAA0B,QAAQ,CAAC;AAEhD,2DAA2D;AAC3D,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,2DAA2D;IAC3D,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;CACrC;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,iBAAiB,GAAG,SAAS,MAAM,EAAE,CAQ3E;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAEtE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,CAAC,CAwEtB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAU9D"}
|
|
@@ -6,6 +6,34 @@ import { readFile } from "node:fs/promises";
|
|
|
6
6
|
import * as path from "node:path";
|
|
7
7
|
import { loadYaml } from "../utils/yaml.js";
|
|
8
8
|
const CHECK_NAME = "Maestro leg serialization wired?";
|
|
9
|
+
/**
|
|
10
|
+
* Whether the REUSABLE workflow's own `permissions:` block grants `actions`.
|
|
11
|
+
*
|
|
12
|
+
* This is the part no caller can supply. A called workflow's `permissions:`
|
|
13
|
+
* block is a ceiling that zeroes everything unlisted, so a caller's grant is
|
|
14
|
+
* discarded at the reusable-workflow boundary no matter where it is placed.
|
|
15
|
+
* While this is false, `serialize_platform_legs` cannot order anything in ANY
|
|
16
|
+
* repository, and reporting a fully configured caller as `ok` would certify a
|
|
17
|
+
* configuration measured to fail.
|
|
18
|
+
*
|
|
19
|
+
* Measured 2026-08-17 against a caller granting `actions: read` at BOTH job and
|
|
20
|
+
* workflow level: the job's own token grant showed `Contents: read` and
|
|
21
|
+
* `Metadata: read` with no Actions scope, the jobs API answered 403, and the
|
|
22
|
+
* two platform legs started two seconds apart.
|
|
23
|
+
*
|
|
24
|
+
* A constant rather than a read of the workflow file, because consumers
|
|
25
|
+
* reference the reusable workflow at `@main` and do not have a copy of it to
|
|
26
|
+
* read. `serialize-legs-callee-grant.test.ts` pins this to the actual
|
|
27
|
+
* `permissions:` block in `.github/workflows/maestro-native-e2e.yml`, so it
|
|
28
|
+
* cannot drift from what Lisa ships — flipping it and forgetting the workflow,
|
|
29
|
+
* or the reverse, fails that test.
|
|
30
|
+
*
|
|
31
|
+
* Residual limit worth naming: a consumer's `lisa doctor` comes from its
|
|
32
|
+
* installed package while the workflow it runs comes from `@main`, so a stale
|
|
33
|
+
* install can disagree with what actually runs. That is a property of `@main`
|
|
34
|
+
* refs, not of this check.
|
|
35
|
+
*/
|
|
36
|
+
export const CALLEE_GRANTS_ACTIONS_READ = false;
|
|
9
37
|
/**
|
|
10
38
|
* Which required parts are missing from a declared opt-in.
|
|
11
39
|
*
|
|
@@ -82,6 +110,21 @@ export async function checkSerializeLegsContract(targetPath) {
|
|
|
82
110
|
}
|
|
83
111
|
const missing = missingParts(contract);
|
|
84
112
|
if (missing.length === 0) {
|
|
113
|
+
if (!CALLEE_GRANTS_ACTIONS_READ) {
|
|
114
|
+
return {
|
|
115
|
+
name: CHECK_NAME,
|
|
116
|
+
status: "warn",
|
|
117
|
+
detail: "serialize_platform_legs is enabled and this repository's side is " +
|
|
118
|
+
"complete, but the ordering CANNOT work in this version of Lisa and " +
|
|
119
|
+
"nothing here will change that. The reusable workflow's own " +
|
|
120
|
+
"`permissions:` block omits `actions`, and a called workflow's " +
|
|
121
|
+
"permissions are a ceiling that zeroes everything unlisted — so the " +
|
|
122
|
+
"grant is discarded at the boundary wherever it is declared. The " +
|
|
123
|
+
"jobs API answers 403, the ordering job logs a warning, concludes " +
|
|
124
|
+
"`success`, and both legs start together. Nothing to fix here; " +
|
|
125
|
+
"tracked upstream on CodySwannGT/lisa#2662",
|
|
126
|
+
};
|
|
127
|
+
}
|
|
85
128
|
return {
|
|
86
129
|
name: CHECK_NAME,
|
|
87
130
|
status: "ok",
|
|
@@ -100,7 +143,10 @@ export async function checkSerializeLegsContract(targetPath) {
|
|
|
100
143
|
"the suite behaves exactly as it did before the opt-in while reporting " +
|
|
101
144
|
"green. `actions: read` must sit on the CALLING workflow's own " +
|
|
102
145
|
"`permissions:`, not on the job: a called workflow requesting a scope " +
|
|
103
|
-
"its caller never held is a startup_failure for the entire run"
|
|
146
|
+
"its caller never held is a startup_failure for the entire run. " +
|
|
147
|
+
"Completing these parts is necessary but NOT sufficient today — see " +
|
|
148
|
+
"CodySwannGT/lisa#2662, which tracks the reusable workflow's own " +
|
|
149
|
+
"permissions ceiling discarding the grant",
|
|
104
150
|
};
|
|
105
151
|
}
|
|
106
152
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-serialize-legs-contract.js","sourceRoot":"","sources":["../../src/cli/doctor-serialize-legs-contract.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,MAAM,UAAU,GAAG,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor-serialize-legs-contract.js","sourceRoot":"","sources":["../../src/cli/doctor-serialize-legs-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA00EpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA00EpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAkrOjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
|
|
@@ -7562,6 +7562,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
7562
7562
|
"tests/unit/cli/merge-learnings-cmd.test.ts": true,
|
|
7563
7563
|
"tests/unit/cli/parse-refresh-templates.test.ts": true,
|
|
7564
7564
|
"tests/unit/cli/prompts.test.ts": true,
|
|
7565
|
+
"tests/unit/cli/serialize-legs-callee-grant.test.ts": true,
|
|
7565
7566
|
"tests/unit/cli/setup-project.test.ts": true,
|
|
7566
7567
|
"tests/unit/cli/setup-wiki.test.ts": true,
|
|
7567
7568
|
"tests/unit/cli/shared-options.test.ts": true,
|