@codyswann/lisa 2.301.3 → 2.301.5
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-delivery.js +1 -1
- package/dist/cli/doctor-readiness-delivery.js.map +1 -1
- package/dist/cli/doctor-readiness-release-path.d.ts +2 -1
- package/dist/cli/doctor-readiness-release-path.d.ts.map +1 -1
- package/dist/cli/doctor-readiness-release-path.js +20 -32
- package/dist/cli/doctor-readiness-release-path.js.map +1 -1
- package/dist/cli/doctor-readiness-reusable-callers.d.ts +25 -0
- package/dist/cli/doctor-readiness-reusable-callers.d.ts.map +1 -0
- package/dist/cli/doctor-readiness-reusable-callers.js +61 -0
- package/dist/cli/doctor-readiness-reusable-callers.js.map +1 -0
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +3 -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
|
@@ -44,7 +44,7 @@ const CREDENTIAL_BLOCKER_ID = "B3";
|
|
|
44
44
|
* @returns What the release paths established, in aggregate
|
|
45
45
|
*/
|
|
46
46
|
function summarizeReleasePaths(workflows, defaultBranches) {
|
|
47
|
-
const outcomes = workflows.flatMap(workflow => workflow.jobs.flatMap(job => assessReleasePaths(workflow, job, defaultBranches)));
|
|
47
|
+
const outcomes = workflows.flatMap(workflow => workflow.jobs.flatMap(job => assessReleasePaths(workflow, job, defaultBranches, workflows)));
|
|
48
48
|
return {
|
|
49
49
|
violations: outcomes.flatMap(outcome => outcome.kind === "violation" ? [outcome.evidence] : []),
|
|
50
50
|
unresolved: outcomes.flatMap(outcome => outcome.kind === "unresolved" ? [outcome.reason] : []),
|
|
@@ -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;AAE5C,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,CAAC,
|
|
1
|
+
{"version":3,"file":"doctor-readiness-delivery.js","sourceRoot":"","sources":["../../src/cli/doctor-readiness-delivery.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,7 +34,8 @@ export declare function findPublishSteps(job: ParsedWorkflowJob): readonly Parse
|
|
|
34
34
|
* @param workflow - The workflow declaring the job
|
|
35
35
|
* @param job - The job to assess
|
|
36
36
|
* @param defaultBranches - Project-local default-like branch names
|
|
37
|
+
* @param allWorkflows - Every parsed workflow in the repository
|
|
37
38
|
* @returns One outcome per publishing step, or an empty list when it ships nothing
|
|
38
39
|
*/
|
|
39
|
-
export declare function assessReleasePaths(workflow: ParsedWorkflow, job: ParsedWorkflowJob, defaultBranches?: readonly string[]): readonly ReleasePathOutcome[];
|
|
40
|
+
export declare function assessReleasePaths(workflow: ParsedWorkflow, job: ParsedWorkflowJob, defaultBranches?: readonly string[], allWorkflows?: readonly ParsedWorkflow[]): readonly ReleasePathOutcome[];
|
|
40
41
|
//# sourceMappingURL=doctor-readiness-release-path.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-readiness-release-path.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-readiness-release-path.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor-readiness-release-path.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-readiness-release-path.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,iCAAiC,CAAC;AAyFzC,eAAO,MAAM,gBAAgB,8BAA8B,CAAC;AAI5D,sDAAsD;AACtD,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAE/B;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAW7D;AAuDD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,iBAAiB,GACrB,SAAS,kBAAkB,EAAE,CAE/B;AAoJD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,cAAc,EACxB,GAAG,EAAE,iBAAiB,EACtB,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,EACnC,YAAY,CAAC,EAAE,SAAS,cAAc,EAAE,GACvC,SAAS,kBAAkB,EAAE,CA4B/B"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ancestorJobs, reusableCallerValidation, } from "./doctor-readiness-reusable-callers.js";
|
|
1
2
|
const PUBLISH_VERBS = [
|
|
2
3
|
"npm publish",
|
|
3
4
|
"docker push",
|
|
@@ -153,40 +154,20 @@ function isValidatingJob(job) {
|
|
|
153
154
|
return job.steps.some(step => isValidatingCommand(step.run) ||
|
|
154
155
|
(step.uses !== "" && VALIDATING_WORKFLOW.test(step.uses)));
|
|
155
156
|
}
|
|
156
|
-
/**
|
|
157
|
-
* Walk a job's transitive `needs:` closure within its workflow. The `seen` list
|
|
158
|
-
* makes a `needs:` cycle terminate instead of recursing forever.
|
|
159
|
-
* @param workflow - The workflow declaring the job
|
|
160
|
-
* @param job - The job whose ancestors to resolve
|
|
161
|
-
* @returns Every job the given job transitively depends on
|
|
162
|
-
*/
|
|
163
|
-
function ancestorJobs(workflow, job) {
|
|
164
|
-
const byId = new Map(workflow.jobs.map(entry => [entry.id, entry]));
|
|
165
|
-
const walk = (ids, seen) => {
|
|
166
|
-
const fresh = ids.filter(id => !seen.includes(id));
|
|
167
|
-
if (fresh.length === 0) {
|
|
168
|
-
return [];
|
|
169
|
-
}
|
|
170
|
-
const jobs = fresh.flatMap(id => {
|
|
171
|
-
const ancestor = byId.get(id);
|
|
172
|
-
return ancestor ? [ancestor] : [];
|
|
173
|
-
});
|
|
174
|
-
return [
|
|
175
|
-
...jobs,
|
|
176
|
-
...walk(jobs.flatMap(ancestor => ancestor.needs), [...seen, ...fresh]),
|
|
177
|
-
];
|
|
178
|
-
};
|
|
179
|
-
return walk(job.needs, []);
|
|
180
|
-
}
|
|
181
157
|
/**
|
|
182
158
|
* Whether validation provably precedes the publish: either an ancestor job
|
|
183
159
|
* validated, or a step earlier in this same job did.
|
|
184
160
|
* @param workflow - The workflow declaring the job
|
|
185
161
|
* @param job - The publishing job
|
|
186
162
|
* @param publishStep - The step that ships
|
|
163
|
+
* @param allWorkflows - Every parsed workflow in the repository
|
|
187
164
|
* @returns True when something was proved before the artifact left
|
|
188
165
|
*/
|
|
189
|
-
function validationPrecedesPublish(workflow, job, publishStep) {
|
|
166
|
+
function validationPrecedesPublish(workflow, job, publishStep, allWorkflows) {
|
|
167
|
+
if (reusableCallerValidation(workflow, allWorkflows, isValidatingJob) ===
|
|
168
|
+
"validated") {
|
|
169
|
+
return true;
|
|
170
|
+
}
|
|
190
171
|
if (ancestorJobs(workflow, job).some(isValidatingJob)) {
|
|
191
172
|
return true;
|
|
192
173
|
}
|
|
@@ -229,11 +210,16 @@ function shipsSelfBuiltArtifact(job, publishStep) {
|
|
|
229
210
|
* place for it — the only case where absent validation proves a bypass.
|
|
230
211
|
* @param workflow - The workflow to classify
|
|
231
212
|
* @param defaultBranches - Project-local default-like branch names
|
|
213
|
+
* @param allWorkflows - Every parsed workflow in the repository
|
|
232
214
|
* @returns The reason validation may live elsewhere, or null when it must be here
|
|
233
215
|
*/
|
|
234
|
-
function offlineUnresolvableTrigger(workflow, defaultBranches) {
|
|
216
|
+
function offlineUnresolvableTrigger(workflow, defaultBranches, allWorkflows) {
|
|
235
217
|
const events = workflow.on.events;
|
|
236
218
|
if (events.length > 0 && events.every(event => event === "workflow_call")) {
|
|
219
|
+
if (reusableCallerValidation(workflow, allWorkflows, isValidatingJob) ===
|
|
220
|
+
"unvalidated") {
|
|
221
|
+
return null;
|
|
222
|
+
}
|
|
237
223
|
return ("it is a reusable `workflow_call` workflow, so validation is the calling " +
|
|
238
224
|
"workflow's obligation and callers are not resolved offline");
|
|
239
225
|
}
|
|
@@ -267,16 +253,17 @@ function offlineUnresolvableTrigger(workflow, defaultBranches) {
|
|
|
267
253
|
* @param workflow - The workflow declaring the job
|
|
268
254
|
* @param job - The job to assess
|
|
269
255
|
* @param defaultBranches - Project-local default-like branch names
|
|
256
|
+
* @param allWorkflows - Every parsed workflow in the repository
|
|
270
257
|
* @returns One outcome per publishing step, or an empty list when it ships nothing
|
|
271
258
|
*/
|
|
272
|
-
export function assessReleasePaths(workflow, job, defaultBranches) {
|
|
259
|
+
export function assessReleasePaths(workflow, job, defaultBranches, allWorkflows) {
|
|
273
260
|
return findPublishSteps(job).map(publishStep => {
|
|
274
261
|
const where = `${workflow.file} job \`${job.id}\` step \`${describeStep(publishStep)}\``;
|
|
275
|
-
const validated = validationPrecedesPublish(workflow, job, publishStep);
|
|
262
|
+
const validated = validationPrecedesPublish(workflow, job, publishStep, allWorkflows);
|
|
276
263
|
if (shipsSelfBuiltArtifact(job, publishStep)) {
|
|
277
264
|
return validated
|
|
278
265
|
? rebuildPastValidation(where)
|
|
279
|
-
: unvalidatedSelfBuild(where, workflow, defaultBranches);
|
|
266
|
+
: unvalidatedSelfBuild(where, workflow, defaultBranches, allWorkflows);
|
|
280
267
|
}
|
|
281
268
|
if (validated || promotesValidatedArtifact(job, publishStep)) {
|
|
282
269
|
return { kind: "clean" };
|
|
@@ -316,10 +303,11 @@ function rebuildPastValidation(where) {
|
|
|
316
303
|
* @param where - Evidence location label
|
|
317
304
|
* @param workflow - The workflow declaring the job
|
|
318
305
|
* @param defaultBranches - Project-local default-like branch names
|
|
306
|
+
* @param allWorkflows - Every parsed workflow in the repository
|
|
319
307
|
* @returns The violation or unresolved outcome
|
|
320
308
|
*/
|
|
321
|
-
function unvalidatedSelfBuild(where, workflow, defaultBranches) {
|
|
322
|
-
const unresolvable = offlineUnresolvableTrigger(workflow, defaultBranches);
|
|
309
|
+
function unvalidatedSelfBuild(where, workflow, defaultBranches, allWorkflows) {
|
|
310
|
+
const unresolvable = offlineUnresolvableTrigger(workflow, defaultBranches, allWorkflows);
|
|
323
311
|
if (unresolvable !== null) {
|
|
324
312
|
return {
|
|
325
313
|
kind: "unresolved",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-readiness-release-path.js","sourceRoot":"","sources":["../../src/cli/doctor-readiness-release-path.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor-readiness-release-path.js","sourceRoot":"","sources":["../../src/cli/doctor-readiness-release-path.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,YAAY,EACZ,wBAAwB,GACzB,MAAM,wCAAwC,CAAC;AAEhD,MAAM,aAAa,GAAG;IACpB,aAAa;IACb,aAAa;IACb,mBAAmB;IACnB,aAAa;IACb,YAAY;IACZ,YAAY;CACb,CAAC;AAEF,MAAM,wBAAwB,GAAG,0BAA0B,CAAC;AAC5D,MAAM,mBAAmB,GAAG,6BAA6B,CAAC;AAC1D,MAAM,qBAAqB,GAAG,6BAA6B,CAAC;AAE5D,+CAA+C;AAC/C,MAAM,mBAAmB,GAAsB;IAC7C,kDAAkD;IAClD,gBAAgB;IAChB,iDAAiD;IACjD,8CAA8C;CAC/C,CAAC;AAEF;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,GAAW;IACtC,OAAO,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,4DAA4D;AAC5D,MAAM,mBAAmB,GAAG,wCAAwC,CAAC;AAErE,0EAA0E;AAC1E,MAAM,oBAAoB,GAAsB;IAC9C,qGAAqG;CACtG,CAAC;AAEF;;;;GAIG;AACH,SAAS,8BAA8B,CAAC,GAAW;IACjD,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,CAAC,MAAc,EAAW,EAAE;QACvC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3C,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QAC9C,IACE,CAAC,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACrC,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YACzC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EACjC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACvB,CAAC,CAAC;IACF,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,GAAW;IACtC,OAAO,CACL,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvD,8BAA8B,CAAC,GAAG,CAAC,CACpC,CAAC;AACJ,CAAC;AAED,MAAM,mBAAmB,GAAG,aAAa,CAAC;AAE1C,MAAM,mBAAmB,GAAG,2BAA2B,CAAC;AACxD,MAAM,CAAC,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;AAC5D,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AACrD,MAAM,cAAc,GAAG,EAAE,CAAC;AAQ1B;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,IAAwB;IACnD,MAAM,MAAM,GACV,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;QACrB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAClB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG;aACN,KAAK,CAAC,IAAI,CAAC;aACX,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;YACjC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC,MAAM,GAAG,cAAc;QACnC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,OAAO,EAAE,GAAG;QACjD,CAAC,CAAC,MAAM,CAAC;AACb,CAAC;AAED,gFAAgF;AAChF,MAAM,YAAY,GAAG,iBAAiB,CAAC;AAEvC;;;;GAIG;AACH,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACzD,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CAAC,MAAc,EAAE,IAAY;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAC5D,OAAO,IAAI,MAAM,CAAC,UAAU,OAAO,4BAA4B,EAAE,GAAG,CAAC,CAAC,IAAI,CACxE,MAAM,CACP,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,IAAwB;IAC/C,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,EAAE,KAAK,wBAAwB,EAAE,CAAC;QACpC,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,EAAE,KAAK,mBAAmB,IAAI,EAAE,KAAK,qBAAqB,CAAC;AACpE,CAAC;AAED;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,IAAwB;IAC7C,OAAO,CACL,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAClD,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/B,eAAe,CAAC,IAAI,CAAC,CACtB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAsB;IAEtB,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,GAAsB;IAC7C,IAAI,GAAG,CAAC,IAAI,KAAK,EAAE,IAAI,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CACnB,IAAI,CAAC,EAAE,CACL,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;QAC7B,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAC5D,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,yBAAyB,CAChC,QAAwB,EACxB,GAAsB,EACtB,WAA+B,EAC/B,YAAwC;IAExC,IACE,wBAAwB,CAAC,QAAQ,EAAE,YAAY,EAAE,eAAe,CAAC;QACjE,WAAW,EACX,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,GAAG,CAAC,KAAK;SACb,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;SACxC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,sBAAsB,CAC7B,GAAsB,EACtB,WAA+B;IAE/B,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,wBAAwB,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,mBAAmB,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;IACjE,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK;SAC5B,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC;SACtB,MAAM,CACL,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CACtB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EACvD,CAAC,CAAC,CACH,CAAC;IACJ,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,qBAAqB,GAAG,mBAAmB;aAC9C,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;aACxB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,CACL,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;QACzC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;QACzC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAChE,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,0BAA0B,CACjC,QAAwB,EACxB,eAAmC,EACnC,YAAwC;IAExC,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC;IAClC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,eAAe,CAAC,EAAE,CAAC;QAC1E,IACE,wBAAwB,CAAC,QAAQ,EAAE,YAAY,EAAE,eAAe,CAAC;YACjE,aAAa,EACb,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,CACL,0EAA0E;YAC1E,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACpC,OAAO,CACL,2EAA2E;YAC3E,8CAA8C,CAC/C,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,OAAO,CACL,0EAA0E;YAC1E,2EAA2E,CAC5E,CAAC;IACJ,CAAC;IACD,2EAA2E;IAC3E,2EAA2E;IAC3E,MAAM,cAAc,GAClB,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QACnC,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;QACrC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;IACpC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QAC/D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,CACL,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC;YAC7B,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,CACxE,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,IAAI,cAAc,IAAI,iBAAiB,EAAE,CAAC;QACxC,OAAO,CACL,2EAA2E;YAC3E,yEAAyE;YACzE,cAAc,CACf,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAwB,EACxB,GAAsB,EACtB,eAAmC,EACnC,YAAwC;IAExC,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;QAC7C,MAAM,KAAK,GAAG,GAAG,QAAQ,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,aAAa,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC;QACzF,MAAM,SAAS,GAAG,yBAAyB,CACzC,QAAQ,EACR,GAAG,EACH,WAAW,EACX,YAAY,CACb,CAAC;QACF,IAAI,sBAAsB,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC;YAC7C,OAAO,SAAS;gBACd,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC;gBAC9B,CAAC,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,SAAS,IAAI,yBAAyB,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC;YAC7D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC3B,CAAC;QACD,+EAA+E;QAC/E,8EAA8E;QAC9E,kDAAkD;QAClD,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,MAAM,EACJ,GAAG,KAAK,mEAAmE;gBAC3E,KAAK,gBAAgB,oDAAoD;gBACzE,qDAAqD;SACxD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,qBAAqB,CAAC,KAAa;IAC1C,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,QAAQ,EACN,GAAG,KAAK,kEAAkE;YAC1E,wEAAwE;YACxE,qEAAqE;YACrE,kBAAkB,gBAAgB,yCAAyC;KAC9E,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,oBAAoB,CAC3B,KAAa,EACb,QAAwB,EACxB,eAAmC,EACnC,YAAwC;IAExC,MAAM,YAAY,GAAG,0BAA0B,CAC7C,QAAQ,EACR,eAAe,EACf,YAAY,CACb,CAAC;IACF,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,MAAM,EACJ,GAAG,KAAK,+DAA+D;gBACvE,+BAA+B,YAAY,8BAA8B;gBACzE,4DAA4D;SAC/D,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,QAAQ,EACN,GAAG,KAAK,kEAAkE;YAC1E,mCAAmC,gBAAgB,sBAAsB;YACzE,sEAAsE;KACzE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,yBAAyB,CAChC,GAAsB,EACtB,WAA+B;IAE/B,OAAO,GAAG,CAAC,KAAK;SACb,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;SACxC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local reusable-workflow caller resolution for B2 delivery/authority readiness.
|
|
3
|
+
* @module cli/doctor-readiness-reusable-callers
|
|
4
|
+
*/
|
|
5
|
+
import type { ParsedWorkflow, ParsedWorkflowJob } from "./doctor-readiness-workflows.js";
|
|
6
|
+
/** What local caller workflows prove about a reusable workflow invocation. */
|
|
7
|
+
export type ReusableCallerValidation = "validated" | "unvalidated" | "unknown";
|
|
8
|
+
/**
|
|
9
|
+
* Walk a job's transitive `needs:` closure within its workflow.
|
|
10
|
+
* @param workflow - The workflow declaring the job
|
|
11
|
+
* @param job - The job whose ancestors to resolve
|
|
12
|
+
* @returns Every job the given job transitively depends on
|
|
13
|
+
*/
|
|
14
|
+
export declare function ancestorJobs(workflow: ParsedWorkflow, job: ParsedWorkflowJob): readonly ParsedWorkflowJob[];
|
|
15
|
+
/**
|
|
16
|
+
* Resolve whether known local callers validate before invoking a reusable
|
|
17
|
+
* publishing workflow. Unknown external callers stay unresolved; known local
|
|
18
|
+
* callers without a validating ancestor prove a bypass.
|
|
19
|
+
* @param workflow - The reusable workflow being assessed
|
|
20
|
+
* @param allWorkflows - Every parsed workflow in the repository
|
|
21
|
+
* @param isValidatingJob - Predicate for validation jobs
|
|
22
|
+
* @returns The local caller validation state
|
|
23
|
+
*/
|
|
24
|
+
export declare function reusableCallerValidation(workflow: ParsedWorkflow, allWorkflows: readonly ParsedWorkflow[] | undefined, isValidatingJob: (job: ParsedWorkflowJob) => boolean): ReusableCallerValidation;
|
|
25
|
+
//# sourceMappingURL=doctor-readiness-reusable-callers.d.ts.map
|
|
@@ -0,0 +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,CAsB1B"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Walk a job's transitive `needs:` closure within its workflow.
|
|
3
|
+
* @param workflow - The workflow declaring the job
|
|
4
|
+
* @param job - The job whose ancestors to resolve
|
|
5
|
+
* @returns Every job the given job transitively depends on
|
|
6
|
+
*/
|
|
7
|
+
export function ancestorJobs(workflow, job) {
|
|
8
|
+
const byId = new Map(workflow.jobs.map(entry => [entry.id, entry]));
|
|
9
|
+
const walk = (ids, seen) => {
|
|
10
|
+
const fresh = ids.filter(id => !seen.includes(id));
|
|
11
|
+
if (fresh.length === 0) {
|
|
12
|
+
return [];
|
|
13
|
+
}
|
|
14
|
+
const jobs = fresh.flatMap(id => {
|
|
15
|
+
const ancestor = byId.get(id);
|
|
16
|
+
return ancestor ? [ancestor] : [];
|
|
17
|
+
});
|
|
18
|
+
return [
|
|
19
|
+
...jobs,
|
|
20
|
+
...walk(jobs.flatMap(ancestor => ancestor.needs), [...seen, ...fresh]),
|
|
21
|
+
];
|
|
22
|
+
};
|
|
23
|
+
return walk(job.needs, []);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Normalize a local reusable workflow reference to a repo-relative workflow path.
|
|
27
|
+
* @param uses - Raw `job.uses` value
|
|
28
|
+
* @returns Repo-relative workflow path when the reference is local
|
|
29
|
+
*/
|
|
30
|
+
function localReusableWorkflowPath(uses) {
|
|
31
|
+
const withoutRef = uses.split("@")[0]?.trim() ?? "";
|
|
32
|
+
if (!withoutRef.startsWith("./.github/workflows/")) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
return withoutRef.slice(2);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Resolve whether known local callers validate before invoking a reusable
|
|
39
|
+
* publishing workflow. Unknown external callers stay unresolved; known local
|
|
40
|
+
* callers without a validating ancestor prove a bypass.
|
|
41
|
+
* @param workflow - The reusable workflow being assessed
|
|
42
|
+
* @param allWorkflows - Every parsed workflow in the repository
|
|
43
|
+
* @param isValidatingJob - Predicate for validation jobs
|
|
44
|
+
* @returns The local caller validation state
|
|
45
|
+
*/
|
|
46
|
+
export function reusableCallerValidation(workflow, allWorkflows, isValidatingJob) {
|
|
47
|
+
if (!(workflow.on.events.length > 0 &&
|
|
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 })));
|
|
54
|
+
if (callers.length === 0) {
|
|
55
|
+
return "unknown";
|
|
56
|
+
}
|
|
57
|
+
return callers.every(caller => ancestorJobs(caller.workflow, caller.job).some(isValidatingJob))
|
|
58
|
+
? "validated"
|
|
59
|
+
: "unvalidated";
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=doctor-readiness-reusable-callers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-readiness-reusable-callers.js","sourceRoot":"","sources":["../../src/cli/doctor-readiness-reusable-callers.ts"],"names":[],"mappings":"AAYA;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAC1B,QAAwB,EACxB,GAAsB;IAEtB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,CACX,GAAsB,EACtB,IAAuB,EACO,EAAE;QAChC,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QACnD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9B,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,OAAO;YACL,GAAG,IAAI;YACP,GAAG,IAAI,CACL,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EACxC,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CACpB;SACF,CAAC;IACJ,CAAC,CAAC;IACF,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,SAAS,yBAAyB,CAAC,IAAY;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACpD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAAwB,EACxB,YAAmD,EACnD,eAAoD;IAEpD,IACE,CAAC,CACC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAC7B,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,eAAe,CAAC,CAC7D,EACD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CACvD,SAAS,CAAC,IAAI;SACX,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC;SACpE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAC9C,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAC5B,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAChE;QACC,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,aAAa,CAAC;AACpB,CAAC"}
|
|
@@ -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,CAkiEpE,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,CAkiEpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAszMjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
|
|
@@ -6342,6 +6342,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
6342
6342
|
"src/cli/doctor-readiness-journey.ts": true,
|
|
6343
6343
|
"src/cli/doctor-readiness-operations.ts": true,
|
|
6344
6344
|
"src/cli/doctor-readiness-release-path.ts": true,
|
|
6345
|
+
"src/cli/doctor-readiness-reusable-callers.ts": true,
|
|
6345
6346
|
"src/cli/doctor-readiness-shared.ts": true,
|
|
6346
6347
|
"src/cli/doctor-readiness-supply-chain-evidence.ts": true,
|
|
6347
6348
|
"src/cli/doctor-readiness-supply-chain-scan.ts": true,
|
|
@@ -6718,8 +6719,10 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
6718
6719
|
"tests/unit/cli/doctor-readiness-context-precision.test.ts": true,
|
|
6719
6720
|
"tests/unit/cli/doctor-readiness-context.test.ts": true,
|
|
6720
6721
|
"tests/unit/cli/doctor-readiness-credentials-round2.test.ts": true,
|
|
6722
|
+
"tests/unit/cli/doctor-readiness-delivery-action-publish.test.ts": true,
|
|
6721
6723
|
"tests/unit/cli/doctor-readiness-delivery-artifact.test.ts": true,
|
|
6722
6724
|
"tests/unit/cli/doctor-readiness-delivery-multiple-publish.test.ts": true,
|
|
6725
|
+
"tests/unit/cli/doctor-readiness-delivery-reusable-callers.test.ts": true,
|
|
6723
6726
|
"tests/unit/cli/doctor-readiness-delivery-triggers.test.ts": true,
|
|
6724
6727
|
"tests/unit/cli/doctor-readiness-delivery.test.ts": true,
|
|
6725
6728
|
"tests/unit/cli/doctor-readiness-domain-ephemeral.test.ts": true,
|