@codyswann/lisa 2.311.5 → 2.311.6
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-readiness-action-pins.d.ts +2 -1
- package/dist/cli/doctor-readiness-action-pins.d.ts.map +1 -1
- package/dist/cli/doctor-readiness-action-pins.js +4 -2
- package/dist/cli/doctor-readiness-action-pins.js.map +1 -1
- package/dist/cli/doctor-readiness-delivery.js +1 -1
- package/dist/cli/doctor-readiness-delivery.js.map +1 -1
- package/dist/cli/doctor-readiness-reusable-callers.d.ts +14 -0
- package/dist/cli/doctor-readiness-reusable-callers.d.ts.map +1 -1
- package/dist/cli/doctor-readiness-reusable-callers.js +16 -7
- package/dist/cli/doctor-readiness-reusable-callers.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
|
@@ -12,7 +12,8 @@ import type { ParsedWorkflow, ParsedWorkflowJob } from "./doctor-readiness-workf
|
|
|
12
12
|
* closure: their output is what makes the artifact trusted.
|
|
13
13
|
* @param workflow - The workflow declaring the job
|
|
14
14
|
* @param job - The job to assess
|
|
15
|
+
* @param allWorkflows - Every parsed workflow in the repository
|
|
15
16
|
* @returns B2 evidence lines for unpinned action refs
|
|
16
17
|
*/
|
|
17
|
-
export declare function unpinnedPublishingActionViolations(workflow: ParsedWorkflow, job: ParsedWorkflowJob): readonly string[];
|
|
18
|
+
export declare function unpinnedPublishingActionViolations(workflow: ParsedWorkflow, job: ParsedWorkflowJob, allWorkflows?: readonly ParsedWorkflow[]): readonly string[];
|
|
18
19
|
//# sourceMappingURL=doctor-readiness-action-pins.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-readiness-action-pins.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-readiness-action-pins.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EAElB,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor-readiness-action-pins.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-readiness-action-pins.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EAElB,MAAM,iCAAiC,CAAC;AAwEzC;;;;;;;;;;;GAWG;AACH,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,cAAc,EACxB,GAAG,EAAE,iBAAiB,EACtB,YAAY,CAAC,EAAE,SAAS,cAAc,EAAE,GACvC,SAAS,MAAM,EAAE,CAuBnB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describeStep, findPublishSteps, } from "./doctor-readiness-release-path.js";
|
|
2
|
-
import { ancestorJobs } from "./doctor-readiness-reusable-callers.js";
|
|
2
|
+
import { ancestorJobs, reusableWorkflowCallers, } from "./doctor-readiness-reusable-callers.js";
|
|
3
3
|
const PINNED_ACTION_REF = /^[a-f0-9]{40}$/i;
|
|
4
4
|
const PINNED_DOCKER_ACTION_REF = /^docker:\/\/.+@sha256:[a-f0-9]{64}$/i;
|
|
5
5
|
/**
|
|
@@ -54,15 +54,17 @@ function mutableActionViolations(workflow, job, role) {
|
|
|
54
54
|
* closure: their output is what makes the artifact trusted.
|
|
55
55
|
* @param workflow - The workflow declaring the job
|
|
56
56
|
* @param job - The job to assess
|
|
57
|
+
* @param allWorkflows - Every parsed workflow in the repository
|
|
57
58
|
* @returns B2 evidence lines for unpinned action refs
|
|
58
59
|
*/
|
|
59
|
-
export function unpinnedPublishingActionViolations(workflow, job) {
|
|
60
|
+
export function unpinnedPublishingActionViolations(workflow, job, allWorkflows) {
|
|
60
61
|
if (findPublishSteps(job).length === 0) {
|
|
61
62
|
return [];
|
|
62
63
|
}
|
|
63
64
|
return [
|
|
64
65
|
...mutableActionViolations(workflow, job, "a publishing job"),
|
|
65
66
|
...ancestorJobs(workflow, job).flatMap(ancestor => mutableActionViolations(workflow, ancestor, "a validating ancestor of a publishing job")),
|
|
67
|
+
...reusableWorkflowCallers(workflow, allWorkflows).flatMap(caller => ancestorJobs(caller.workflow, caller.job).flatMap(ancestor => mutableActionViolations(caller.workflow, ancestor, "a validating local caller ancestor of a reusable publishing workflow"))),
|
|
66
68
|
];
|
|
67
69
|
}
|
|
68
70
|
//# sourceMappingURL=doctor-readiness-action-pins.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-readiness-action-pins.js","sourceRoot":"","sources":["../../src/cli/doctor-readiness-action-pins.ts"],"names":[],"mappings":"AASA,OAAO,EACL,YAAY,EACZ,gBAAgB,GACjB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"doctor-readiness-action-pins.js","sourceRoot":"","sources":["../../src/cli/doctor-readiness-action-pins.ts"],"names":[],"mappings":"AASA,OAAO,EACL,YAAY,EACZ,gBAAgB,GACjB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,YAAY,EACZ,uBAAuB,GACxB,MAAM,wCAAwC,CAAC;AAEhD,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAC5C,MAAM,wBAAwB,GAAG,sCAAsC,CAAC;AAExE;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5E,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IACD,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,OAAO,GAAG,KAAK,SAAS,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,qBAAqB,CAC5B,QAAwB,EACxB,GAAsB,EACtB,IAAwB,EACxB,IAAY;IAEZ,OAAO,CACL,GAAG,QAAQ,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,aAAa,YAAY,CAAC,IAAI,CAAC,KAAK;QACpE,mCAAmC,IAAI,CAAC,IAAI,SAAS,IAAI,gBAAgB;QACzE,uEAAuE;QACvE,eAAe,CAChB,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,uBAAuB,CAC9B,QAAwB,EACxB,GAAsB,EACtB,IAAY;IAEZ,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAC9B,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3B,CAAC,CAAC,CAAC,qBAAqB,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACpD,CAAC,CAAC,EAAE,CACP,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kCAAkC,CAChD,QAAwB,EACxB,GAAsB,EACtB,YAAwC;IAExC,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO;QACL,GAAG,uBAAuB,CAAC,QAAQ,EAAE,GAAG,EAAE,kBAAkB,CAAC;QAC7D,GAAG,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAChD,uBAAuB,CACrB,QAAQ,EACR,QAAQ,EACR,2CAA2C,CAC5C,CACF;QACD,GAAG,uBAAuB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAClE,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAC3D,uBAAuB,CACrB,MAAM,CAAC,QAAQ,EACf,QAAQ,EACR,sEAAsE,CACvE,CACF,CACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -46,7 +46,7 @@ const CREDENTIAL_BLOCKER_ID = "B3";
|
|
|
46
46
|
*/
|
|
47
47
|
function summarizeReleasePaths(workflows, defaultBranches) {
|
|
48
48
|
const outcomes = workflows.flatMap(workflow => workflow.jobs.flatMap(job => assessReleasePaths(workflow, job, defaultBranches, workflows)));
|
|
49
|
-
const unpinnedActionViolations = workflows.flatMap(workflow => workflow.jobs.flatMap(job => unpinnedPublishingActionViolations(workflow, job)));
|
|
49
|
+
const unpinnedActionViolations = workflows.flatMap(workflow => workflow.jobs.flatMap(job => unpinnedPublishingActionViolations(workflow, job, workflows)));
|
|
50
50
|
return {
|
|
51
51
|
violations: [
|
|
52
52
|
...outcomes.flatMap(outcome => outcome.kind === "violation" ? [outcome.evidence] : []),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-readiness-delivery.js","sourceRoot":"","sources":["../../src/cli/doctor-readiness-delivery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAEL,wBAAwB,GACzB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EACL,kBAAkB,EAClB,gBAAgB,GAEjB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,kCAAkC,EAAE,MAAM,mCAAmC,CAAC;AAEvF,OAAO,EAEL,wBAAwB,GACzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,+EAA+E;AAC/E,MAAM,CAAC,MAAM,+BAA+B,GAAG,oBAAoB,CAAC;AAEpE,gFAAgF;AAChF,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEhC,+EAA+E;AAC/E,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAUnC;;;;;GAKG;AACH,SAAS,qBAAqB,CAC5B,SAAoC,EACpC,eAAmC;IAEnC,MAAM,QAAQ,GAAkC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAC3E,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAC1B,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,eAAe,EAAE,SAAS,CAAC,CAC9D,CACF,CAAC;IACF,MAAM,wBAAwB,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAC5D,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAC1B,kCAAkC,CAAC,QAAQ,EAAE,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"doctor-readiness-delivery.js","sourceRoot":"","sources":["../../src/cli/doctor-readiness-delivery.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,13 @@
|
|
|
5
5
|
import type { ParsedWorkflow, ParsedWorkflowJob } from "./doctor-readiness-workflows.js";
|
|
6
6
|
/** What local caller workflows prove about a reusable workflow invocation. */
|
|
7
7
|
export type ReusableCallerValidation = "validated" | "unvalidated" | "unknown";
|
|
8
|
+
/** One local workflow job that invokes a reusable workflow. */
|
|
9
|
+
export interface ReusableWorkflowCaller {
|
|
10
|
+
/** Workflow declaring the caller job. */
|
|
11
|
+
readonly workflow: ParsedWorkflow;
|
|
12
|
+
/** Job whose `uses:` points at the reusable workflow. */
|
|
13
|
+
readonly job: ParsedWorkflowJob;
|
|
14
|
+
}
|
|
8
15
|
/**
|
|
9
16
|
* Walk a job's transitive `needs:` closure within its workflow.
|
|
10
17
|
* @param workflow - The workflow declaring the job
|
|
@@ -12,6 +19,13 @@ export type ReusableCallerValidation = "validated" | "unvalidated" | "unknown";
|
|
|
12
19
|
* @returns Every job the given job transitively depends on
|
|
13
20
|
*/
|
|
14
21
|
export declare function ancestorJobs(workflow: ParsedWorkflow, job: ParsedWorkflowJob): readonly ParsedWorkflowJob[];
|
|
22
|
+
/**
|
|
23
|
+
* Find local jobs that call the given reusable workflow.
|
|
24
|
+
* @param workflow - The reusable workflow being assessed
|
|
25
|
+
* @param allWorkflows - Every parsed workflow in the repository
|
|
26
|
+
* @returns Local caller jobs with their declaring workflows
|
|
27
|
+
*/
|
|
28
|
+
export declare function reusableWorkflowCallers(workflow: ParsedWorkflow, allWorkflows: readonly ParsedWorkflow[] | undefined): readonly ReusableWorkflowCaller[];
|
|
15
29
|
/**
|
|
16
30
|
* Resolve whether known local callers validate before invoking a reusable
|
|
17
31
|
* publishing workflow. Unknown external callers stay unresolved; known local
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-readiness-reusable-callers.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-readiness-reusable-callers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EAClB,MAAM,iCAAiC,CAAC;AAEzC,8EAA8E;AAC9E,MAAM,MAAM,wBAAwB,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;AAE/E;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,cAAc,EACxB,GAAG,EAAE,iBAAiB,GACrB,SAAS,iBAAiB,EAAE,CAuB9B;AAeD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,SAAS,cAAc,EAAE,GAAG,SAAS,EACnD,eAAe,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,OAAO,GACnD,wBAAwB,
|
|
1
|
+
{"version":3,"file":"doctor-readiness-reusable-callers.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-readiness-reusable-callers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EAClB,MAAM,iCAAiC,CAAC;AAEzC,8EAA8E;AAC9E,MAAM,MAAM,wBAAwB,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;AAE/E,+DAA+D;AAC/D,MAAM,WAAW,sBAAsB;IACrC,yCAAyC;IACzC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,yDAAyD;IACzD,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,cAAc,EACxB,GAAG,EAAE,iBAAiB,GACrB,SAAS,iBAAiB,EAAE,CAuB9B;AAeD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,SAAS,cAAc,EAAE,GAAG,SAAS,GAClD,SAAS,sBAAsB,EAAE,CAcnC;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,SAAS,cAAc,EAAE,GAAG,SAAS,EACnD,eAAe,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,OAAO,GACnD,wBAAwB,CAU1B"}
|
|
@@ -34,6 +34,21 @@ function localReusableWorkflowPath(uses) {
|
|
|
34
34
|
}
|
|
35
35
|
return withoutRef.slice(2);
|
|
36
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Find local jobs that call the given reusable workflow.
|
|
39
|
+
* @param workflow - The reusable workflow being assessed
|
|
40
|
+
* @param allWorkflows - Every parsed workflow in the repository
|
|
41
|
+
* @returns Local caller jobs with their declaring workflows
|
|
42
|
+
*/
|
|
43
|
+
export function reusableWorkflowCallers(workflow, allWorkflows) {
|
|
44
|
+
if (!(workflow.on.events.length > 0 &&
|
|
45
|
+
workflow.on.events.includes("workflow_call"))) {
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
return (allWorkflows ?? []).flatMap(candidate => candidate.jobs
|
|
49
|
+
.filter(job => localReusableWorkflowPath(job.uses) === workflow.file)
|
|
50
|
+
.map(job => ({ workflow: candidate, job })));
|
|
51
|
+
}
|
|
37
52
|
/**
|
|
38
53
|
* Resolve whether known local callers validate before invoking a reusable
|
|
39
54
|
* publishing workflow. Unknown external callers stay unresolved; known local
|
|
@@ -44,13 +59,7 @@ function localReusableWorkflowPath(uses) {
|
|
|
44
59
|
* @returns The local caller validation state
|
|
45
60
|
*/
|
|
46
61
|
export function reusableCallerValidation(workflow, allWorkflows, isValidatingJob) {
|
|
47
|
-
|
|
48
|
-
workflow.on.events.every(event => event === "workflow_call"))) {
|
|
49
|
-
return "unknown";
|
|
50
|
-
}
|
|
51
|
-
const callers = (allWorkflows ?? []).flatMap(candidate => candidate.jobs
|
|
52
|
-
.filter(job => localReusableWorkflowPath(job.uses) === workflow.file)
|
|
53
|
-
.map(job => ({ workflow: candidate, job })));
|
|
62
|
+
const callers = reusableWorkflowCallers(workflow, allWorkflows);
|
|
54
63
|
if (callers.length === 0) {
|
|
55
64
|
return "unknown";
|
|
56
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-readiness-reusable-callers.js","sourceRoot":"","sources":["../../src/cli/doctor-readiness-reusable-callers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor-readiness-reusable-callers.js","sourceRoot":"","sources":["../../src/cli/doctor-readiness-reusable-callers.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
"brace-expansion": ">=5.0.8"
|
|
116
116
|
},
|
|
117
117
|
"name": "@codyswann/lisa",
|
|
118
|
-
"version": "2.311.
|
|
118
|
+
"version": "2.311.6",
|
|
119
119
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
120
120
|
"main": "dist/index.js",
|
|
121
121
|
"exports": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.311.
|
|
3
|
+
"version": "2.311.6",
|
|
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": "2.311.
|
|
3
|
+
"version": "2.311.6",
|
|
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": "2.311.
|
|
3
|
+
"version": "2.311.6",
|
|
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": "2.311.
|
|
3
|
+
"version": "2.311.6",
|
|
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": "2.311.
|
|
3
|
+
"version": "2.311.6",
|
|
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"
|