@codyswann/lisa 2.277.4 → 2.279.0
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-credentials.d.ts +46 -0
- package/dist/cli/doctor-readiness-credentials.d.ts.map +1 -0
- package/dist/cli/doctor-readiness-credentials.js +199 -0
- package/dist/cli/doctor-readiness-credentials.js.map +1 -0
- package/dist/cli/doctor-readiness-delivery.d.ts +16 -0
- package/dist/cli/doctor-readiness-delivery.d.ts.map +1 -0
- package/dist/cli/doctor-readiness-delivery.js +243 -0
- package/dist/cli/doctor-readiness-delivery.js.map +1 -0
- package/dist/cli/doctor-readiness-journey.d.ts +4 -10
- package/dist/cli/doctor-readiness-journey.d.ts.map +1 -1
- package/dist/cli/doctor-readiness-journey.js +17 -1
- package/dist/cli/doctor-readiness-journey.js.map +1 -1
- package/dist/cli/doctor-readiness-release-path.d.ts +62 -0
- package/dist/cli/doctor-readiness-release-path.d.ts.map +1 -0
- package/dist/cli/doctor-readiness-release-path.js +275 -0
- package/dist/cli/doctor-readiness-release-path.js.map +1 -0
- package/dist/cli/doctor-readiness-types.d.ts +25 -0
- package/dist/cli/doctor-readiness-types.d.ts.map +1 -0
- package/dist/cli/doctor-readiness-types.js +13 -0
- package/dist/cli/doctor-readiness-types.js.map +1 -0
- package/dist/cli/doctor-readiness-workflows.d.ts +64 -0
- package/dist/cli/doctor-readiness-workflows.d.ts.map +1 -0
- package/dist/cli/doctor-readiness-workflows.js +198 -0
- package/dist/cli/doctor-readiness-workflows.js.map +1 -0
- package/dist/cli/doctor-readiness.d.ts +19 -3
- package/dist/cli/doctor-readiness.d.ts.map +1 -1
- package/dist/cli/doctor-readiness.js +87 -26
- package/dist/cli/doctor-readiness.js.map +1 -1
- package/dist/cli/ui-automations-adapters.d.ts +22 -0
- package/dist/cli/ui-automations-adapters.d.ts.map +1 -1
- package/dist/cli/ui-automations-adapters.js +24 -12
- package/dist/cli/ui-automations-adapters.js.map +1 -1
- package/dist/cli/ui-automations.d.ts +1 -0
- package/dist/cli/ui-automations.d.ts.map +1 -1
- package/dist/cli/ui-automations.js +1 -0
- package/dist/cli/ui-automations.js.map +1 -1
- package/dist/cli/ui-cmd.d.ts +4 -1
- package/dist/cli/ui-cmd.d.ts.map +1 -1
- package/dist/cli/ui-cmd.js +72 -17
- package/dist/cli/ui-cmd.js.map +1 -1
- package/dist/cli/ui-confined-project-read.d.ts +22 -0
- package/dist/cli/ui-confined-project-read.d.ts.map +1 -0
- package/dist/cli/ui-confined-project-read.js +38 -0
- package/dist/cli/ui-confined-project-read.js.map +1 -0
- package/dist/cli/ui-deploy-pipeline.d.ts.map +1 -1
- package/dist/cli/ui-deploy-pipeline.js +4 -15
- package/dist/cli/ui-deploy-pipeline.js.map +1 -1
- package/dist/cli/ui-detected-stacks.d.ts +9 -8
- package/dist/cli/ui-detected-stacks.d.ts.map +1 -1
- package/dist/cli/ui-detected-stacks.js +111 -0
- package/dist/cli/ui-detected-stacks.js.map +1 -1
- package/dist/cli/ui-github-repo-gh.d.ts +6 -0
- package/dist/cli/ui-github-repo-gh.d.ts.map +1 -1
- package/dist/cli/ui-github-repo-gh.js.map +1 -1
- package/dist/cli/ui-github-repo-map.d.ts.map +1 -1
- package/dist/cli/ui-github-repo-map.js +26 -1
- package/dist/cli/ui-github-repo-map.js.map +1 -1
- package/dist/cli/ui-setup-readiness-config.d.ts +28 -0
- package/dist/cli/ui-setup-readiness-config.d.ts.map +1 -0
- package/dist/cli/ui-setup-readiness-config.js +116 -0
- package/dist/cli/ui-setup-readiness-config.js.map +1 -0
- package/dist/cli/ui-setup-readiness-contract.d.ts +32 -0
- package/dist/cli/ui-setup-readiness-contract.d.ts.map +1 -0
- package/dist/cli/ui-setup-readiness-contract.js +61 -0
- package/dist/cli/ui-setup-readiness-contract.js.map +1 -0
- package/dist/cli/ui-setup-readiness-install.d.ts +24 -0
- package/dist/cli/ui-setup-readiness-install.d.ts.map +1 -0
- package/dist/cli/ui-setup-readiness-install.js +207 -0
- package/dist/cli/ui-setup-readiness-install.js.map +1 -0
- package/dist/cli/ui-setup-readiness-local.d.ts +40 -0
- package/dist/cli/ui-setup-readiness-local.d.ts.map +1 -0
- package/dist/cli/ui-setup-readiness-local.js +235 -0
- package/dist/cli/ui-setup-readiness-local.js.map +1 -0
- package/dist/cli/ui-setup-readiness-remote.d.ts +30 -0
- package/dist/cli/ui-setup-readiness-remote.d.ts.map +1 -0
- package/dist/cli/ui-setup-readiness-remote.js +108 -0
- package/dist/cli/ui-setup-readiness-remote.js.map +1 -0
- package/dist/cli/ui-setup-readiness.d.ts +52 -0
- package/dist/cli/ui-setup-readiness.d.ts.map +1 -0
- package/dist/cli/ui-setup-readiness.js +125 -0
- package/dist/cli/ui-setup-readiness.js.map +1 -0
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +24 -2
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/health/read-only-fs.d.ts +7 -0
- package/dist/health/read-only-fs.d.ts.map +1 -1
- package/dist/health/read-only-fs.js +40 -1
- package/dist/health/read-only-fs.js.map +1 -1
- package/dist/sync/registry.d.ts +14 -0
- package/dist/sync/registry.d.ts.map +1 -1
- package/dist/sync/registry.js +54 -15
- package/dist/sync/registry.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/scripts/automation-status-codex-adapter.mjs +270 -23
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/scripts/automation-status-codex-adapter.mjs +270 -23
- 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-copilot/scripts/automation-status-codex-adapter.mjs +270 -23
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/scripts/automation-status-codex-adapter.mjs +270 -23
- 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/plugins/src/base/scripts/automation-status-codex-adapter.mjs +270 -23
- package/ui/index.html +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-github-repo-map.js","sourceRoot":"","sources":["../../src/cli/ui-github-repo-map.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ui-github-repo-map.js","sourceRoot":"","sources":["../../src/cli/ui-github-repo-map.ts"],"names":[],"mappings":"AASA;;;;;GAKG;AACH,SAAS,cAAc,CAAC,MAAc,EAAE,GAAW;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvC,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,SAAS,CAAC,uCAAuC,GAAG,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,MAAc,EAAE,GAAW;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,SAAS,CAAC,sCAAsC,GAAG,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,MAAc;IAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IAC9D,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAC1D,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,SAAS,CAAC;AACvD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;IACxE,CAAC;IACD,OAAO;QACL,kBAAkB,EAAE,cAAc,CAAC,GAAG,EAAE,oBAAoB,CAAC;QAC7D,kBAAkB,EAAE,cAAc,CAAC,GAAG,EAAE,oBAAoB,CAAC;QAC7D,kBAAkB,EAAE,cAAc,CAAC,GAAG,EAAE,oBAAoB,CAAC;QAC7D,gBAAgB,EAAE,cAAc,CAAC,GAAG,EAAE,kBAAkB,CAAC;QACzD,mBAAmB,EAAE,cAAc,CAAC,GAAG,EAAE,qBAAqB,CAAC;QAC/D,sBAAsB,EAAE,cAAc,CAAC,GAAG,EAAE,wBAAwB,CAAC;QACrE,kBAAkB,EAAE,aAAa,CAAC,GAAG,EAAE,oBAAoB,CAAC;QAC5D,UAAU,EAAE,cAAc,CAAC,GAAG,EAAE,YAAY,CAAC;QAC7C,QAAQ,EAAE,cAAc,CAAC,GAAG,EAAE,UAAU,CAAC;QACzC,eAAe,EAAE,qBAAqB,CAAC,GAAG,CAAC;QAC3C,cAAc,EAAE,aAAa,CAAC,GAAG,EAAE,gBAAgB,CAAC;KACrD,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,QAA2B;IAClD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,QAAQ;SACZ,GAAG,CAAC,KAAK,CAAC,EAAE,CACX,KAAK;SACF,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;SAC9B,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;SAC7B,OAAO,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAC5C;SACA,IAAI,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,UAAmB;IAC1C,IACE,UAAU,KAAK,IAAI;QACnB,OAAO,UAAU,KAAK,QAAQ;QAC9B,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EACzB,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACpD,IACE,OAAO,KAAK,IAAI;QAChB,OAAO,OAAO,KAAK,QAAQ;QAC3B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EACtB,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;AAC/E,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,KAAK;SACT,GAAG,CAAC,IAAI,CAAC,EAAE;QACV,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9C,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvC,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACrD,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,SAAS,uBAAuB,CAAC,KAAc;IAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACvB,IACE,IAAI,KAAK,IAAI;YACb,OAAO,IAAI,KAAK,QAAQ;YACxB,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,wBAAwB,EACtD,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACnD,IAAI,UAAU,KAAK,IAAI,IAAI,OAAO,UAAU,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QACxE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC;QACjE,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;IACjE,OAAO;QACL,IAAI,EAAE,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC;QAChC,SAAS,EAAE,eAAe,CAAC,QAAQ,CAAC;QACpC,QAAQ,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG;QAC3D,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,QAAQ;QACpD,oBAAoB,EAAE,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC1D,mBAAmB,EAAE,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC;QACvD,oBAAoB,EAAE,uBAAuB,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;KACzE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,GAAW;IAC5D,OAAO,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/** Config-backed Setup readiness findings with independent provider lanes. */
|
|
2
|
+
import { type JsonObject } from "../sync/json-path.js";
|
|
3
|
+
import { type SetupReadinessFinding } from "./ui-setup-readiness-contract.js";
|
|
4
|
+
/**
|
|
5
|
+
* Read tracker readiness independently from the PRD source.
|
|
6
|
+
* @param config - Merged Lisa project configuration
|
|
7
|
+
* @returns Work-tracker readiness finding
|
|
8
|
+
*/
|
|
9
|
+
export declare function trackerFinding(config: JsonObject): SetupReadinessFinding;
|
|
10
|
+
/**
|
|
11
|
+
* Read PRD-source readiness independently from the work tracker.
|
|
12
|
+
* @param config - Merged Lisa project configuration
|
|
13
|
+
* @returns PRD-source readiness finding
|
|
14
|
+
*/
|
|
15
|
+
export declare function prdSourceFinding(config: JsonObject): SetupReadinessFinding;
|
|
16
|
+
/**
|
|
17
|
+
* Require an explicit exploration environment, policy, and test identity.
|
|
18
|
+
* @param config - Merged Lisa project configuration
|
|
19
|
+
* @returns Exploration-environment readiness finding
|
|
20
|
+
*/
|
|
21
|
+
export declare function explorationFinding(config: JsonObject): SetupReadinessFinding;
|
|
22
|
+
/**
|
|
23
|
+
* Require at least one bounded starter template provenance record.
|
|
24
|
+
* @param config - Merged Lisa project configuration
|
|
25
|
+
* @returns Starter-provenance readiness finding
|
|
26
|
+
*/
|
|
27
|
+
export declare function starterProvenanceFinding(config: JsonObject): SetupReadinessFinding;
|
|
28
|
+
//# sourceMappingURL=ui-setup-readiness-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-setup-readiness-config.d.ts","sourceRoot":"","sources":["../../src/cli/ui-setup-readiness-config.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGrE,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,kCAAkC,CAAC;AAkE1C;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,qBAAqB,CAOxE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,qBAAqB,CAO1E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,qBAAqB,CAyD5E;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,UAAU,GACjB,qBAAqB,CA6BvB"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/** Config-backed Setup readiness findings with independent provider lanes. */
|
|
2
|
+
import { isJsonObject } from "../sync/json-path.js";
|
|
3
|
+
import { SETUP_PROVIDER_REQUIREMENTS } from "../sync/registry.js";
|
|
4
|
+
import { resolveMutationPolicy } from "./doctor-readiness-journey-freshness.js";
|
|
5
|
+
import { setupFinding, } from "./ui-setup-readiness-contract.js";
|
|
6
|
+
const EXPLORATION_CHECK = "setup.exploration";
|
|
7
|
+
const STARTER_PROVENANCE_CHECK = "setup.starter-provenance";
|
|
8
|
+
/**
|
|
9
|
+
* Return whether a dot path resolves to a non-empty string.
|
|
10
|
+
* @param config - Merged Lisa project configuration
|
|
11
|
+
* @param dotPath - Dot-delimited property path to inspect
|
|
12
|
+
* @returns Whether the property contains non-empty text
|
|
13
|
+
*/
|
|
14
|
+
function hasString(config, dotPath) {
|
|
15
|
+
const value = dotPath.split(".").reduce((current, segment) => {
|
|
16
|
+
if (!isJsonObject(current))
|
|
17
|
+
return undefined;
|
|
18
|
+
return current[segment];
|
|
19
|
+
}, config);
|
|
20
|
+
return typeof value === "string" && value.trim().length > 0;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Evaluate one provider lane from the shared sync-registry requirements.
|
|
24
|
+
* @param config - Merged Lisa project configuration
|
|
25
|
+
* @param lane - Provider lane to validate
|
|
26
|
+
* @param check - Setup finding identifier for the lane
|
|
27
|
+
* @param selectionHint - Operator-facing setup commands for invalid providers
|
|
28
|
+
* @returns Deterministic readiness finding for the provider lane
|
|
29
|
+
*/
|
|
30
|
+
function providerLaneFinding(config, lane, check, selectionHint) {
|
|
31
|
+
const provider = config[lane];
|
|
32
|
+
const providers = SETUP_PROVIDER_REQUIREMENTS[lane];
|
|
33
|
+
if (typeof provider !== "string" || !Object.hasOwn(providers, provider)) {
|
|
34
|
+
return setupFinding(check, "fail", `${lane === "tracker" ? "Work tracker" : "PRD source"} is missing or unsupported. Run ${selectionHint}.`);
|
|
35
|
+
}
|
|
36
|
+
const requirement = providers[provider];
|
|
37
|
+
const missingAll = requirement.allOf.filter(key => !hasString(config, key));
|
|
38
|
+
const missingAny = requirement.anyOf !== undefined &&
|
|
39
|
+
!requirement.anyOf.some(key => hasString(config, key))
|
|
40
|
+
? [requirement.anyOf.join(" or ")]
|
|
41
|
+
: [];
|
|
42
|
+
const missing = [...missingAll, ...missingAny];
|
|
43
|
+
return missing.length === 0
|
|
44
|
+
? setupFinding(check, "pass", `${lane === "tracker" ? "Tracker" : "PRD source"} provider and required scope identifiers are configured.`)
|
|
45
|
+
: setupFinding(check, "fail", `Missing required configuration: ${missing.join(", ")}. Run ${requirement.setupHint}.`);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Read tracker readiness independently from the PRD source.
|
|
49
|
+
* @param config - Merged Lisa project configuration
|
|
50
|
+
* @returns Work-tracker readiness finding
|
|
51
|
+
*/
|
|
52
|
+
export function trackerFinding(config) {
|
|
53
|
+
return providerLaneFinding(config, "tracker", "setup.tracker", "/lisa:setup:jira, /lisa:setup:github, or /lisa:setup:linear");
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Read PRD-source readiness independently from the work tracker.
|
|
57
|
+
* @param config - Merged Lisa project configuration
|
|
58
|
+
* @returns PRD-source readiness finding
|
|
59
|
+
*/
|
|
60
|
+
export function prdSourceFinding(config) {
|
|
61
|
+
return providerLaneFinding(config, "source", "setup.prd-source", "/lisa:setup:notion, /lisa:setup:confluence, /lisa:setup:linear, or /lisa:setup:github");
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Require an explicit exploration environment, policy, and test identity.
|
|
65
|
+
* @param config - Merged Lisa project configuration
|
|
66
|
+
* @returns Exploration-environment readiness finding
|
|
67
|
+
*/
|
|
68
|
+
export function explorationFinding(config) {
|
|
69
|
+
const exploration = config.exploration;
|
|
70
|
+
if (!isJsonObject(exploration)) {
|
|
71
|
+
return setupFinding(EXPLORATION_CHECK, "warn", "Exploration environments are not configured in .lisa.config.json.");
|
|
72
|
+
}
|
|
73
|
+
const environmentName = exploration.default;
|
|
74
|
+
const environments = exploration.environments;
|
|
75
|
+
if (typeof environmentName !== "string" ||
|
|
76
|
+
environmentName.trim().length === 0 ||
|
|
77
|
+
!isJsonObject(environments) ||
|
|
78
|
+
!isJsonObject(environments[environmentName])) {
|
|
79
|
+
return setupFinding(EXPLORATION_CHECK, "warn", "Exploration requires a default environment with a matching environments entry.");
|
|
80
|
+
}
|
|
81
|
+
const environment = environments[environmentName];
|
|
82
|
+
const mutation = environment.mutation;
|
|
83
|
+
if (typeof mutation !== "string" ||
|
|
84
|
+
!["forbidden", "read-only", "full"].includes(mutation)) {
|
|
85
|
+
return setupFinding(EXPLORATION_CHECK, "warn", "The default exploration environment needs an explicit mutation policy.");
|
|
86
|
+
}
|
|
87
|
+
if (typeof environment.identity !== "string" ||
|
|
88
|
+
environment.identity.trim().length === 0) {
|
|
89
|
+
return setupFinding(EXPLORATION_CHECK, "warn", "The default exploration environment needs a dedicated test identity reference.");
|
|
90
|
+
}
|
|
91
|
+
const effective = resolveMutationPolicy(config);
|
|
92
|
+
return effective === mutation
|
|
93
|
+
? setupFinding(EXPLORATION_CHECK, "pass", `The default exploration environment has an explicit ${effective} policy and test identity reference.`)
|
|
94
|
+
: setupFinding(EXPLORATION_CHECK, "warn", `The configured mutation policy is unsafe for the selected environment and resolves to ${effective}.`);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Require at least one bounded starter template provenance record.
|
|
98
|
+
* @param config - Merged Lisa project configuration
|
|
99
|
+
* @returns Starter-provenance readiness finding
|
|
100
|
+
*/
|
|
101
|
+
export function starterProvenanceFinding(config) {
|
|
102
|
+
const starter = config.starter;
|
|
103
|
+
const templates = isJsonObject(starter) ? starter.templates : undefined;
|
|
104
|
+
if (!Array.isArray(templates) || templates.length === 0) {
|
|
105
|
+
return setupFinding(STARTER_PROVENANCE_CHECK, "warn", "Optional starter provenance is not recorded in starter.templates.");
|
|
106
|
+
}
|
|
107
|
+
const invalid = templates.some(template => !isJsonObject(template) ||
|
|
108
|
+
typeof template.repo !== "string" ||
|
|
109
|
+
template.repo.trim().length === 0 ||
|
|
110
|
+
typeof template.ref !== "string" ||
|
|
111
|
+
template.ref.trim().length === 0);
|
|
112
|
+
return invalid
|
|
113
|
+
? setupFinding(STARTER_PROVENANCE_CHECK, "warn", "Starter provenance contains a template without both repo and ref.")
|
|
114
|
+
: setupFinding(STARTER_PROVENANCE_CHECK, "pass", `${templates.length} starter template provenance record${templates.length === 1 ? " is" : "s are"} configured.`);
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=ui-setup-readiness-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-setup-readiness-config.js","sourceRoot":"","sources":["../../src/cli/ui-setup-readiness-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** Strict transport contract for the console Setup readiness projection. */
|
|
2
|
+
import { type HealthFinding, type HealthStatus } from "../health/contract.js";
|
|
3
|
+
/** Stable finding identifiers, in the existing checklist render order. */
|
|
4
|
+
export declare const SETUP_READINESS_CHECKS: readonly ["setup.install", "setup.sync", "setup.agent-ready", "setup.standards", "setup.tracker", "setup.prd-source", "setup.github-governance", "setup.secrets", "setup.automations", "setup.exploration", "setup.wiki", "setup.starter-provenance"];
|
|
5
|
+
/** One of the closed Setup checklist identifiers. */
|
|
6
|
+
export type SetupReadinessCheck = (typeof SETUP_READINESS_CHECKS)[number];
|
|
7
|
+
/** Setup finding reuses the closed Health finding shape without joining Health. */
|
|
8
|
+
export type SetupReadinessFinding = HealthFinding & {
|
|
9
|
+
readonly check: SetupReadinessCheck;
|
|
10
|
+
readonly layer: "deterministic";
|
|
11
|
+
};
|
|
12
|
+
/** Current, non-persisted Setup readiness response. */
|
|
13
|
+
export interface SetupReadinessResult {
|
|
14
|
+
readonly schemaVersion: 1;
|
|
15
|
+
readonly observedAt: string;
|
|
16
|
+
readonly findings: readonly SetupReadinessFinding[];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Create one operator-readable deterministic Setup finding.
|
|
20
|
+
* @param check - Closed Setup checklist identifier
|
|
21
|
+
* @param status - Deterministic readiness status
|
|
22
|
+
* @param reason - Operator-readable evidence or remediation summary
|
|
23
|
+
* @returns Deterministic Setup readiness finding
|
|
24
|
+
*/
|
|
25
|
+
export declare function setupFinding(check: SetupReadinessCheck, status: HealthStatus, reason: string): SetupReadinessFinding;
|
|
26
|
+
/**
|
|
27
|
+
* Validate, detach, and freeze a Setup readiness projection.
|
|
28
|
+
* @param candidate - Untrusted projection
|
|
29
|
+
* @returns Strict schema-v1 result with exactly the twelve checklist findings
|
|
30
|
+
*/
|
|
31
|
+
export declare function validateSetupReadinessResult(candidate: unknown): SetupReadinessResult;
|
|
32
|
+
//# sourceMappingURL=ui-setup-readiness-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-setup-readiness-contract.d.ts","sourceRoot":"","sources":["../../src/cli/ui-setup-readiness-contract.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAC;AAQ/B,0EAA0E;AAC1E,eAAO,MAAM,sBAAsB,uPAazB,CAAC;AAEX,qDAAqD;AACrD,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,mFAAmF;AACnF,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAAG;IAClD,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;CACjC,CAAC;AAEF,uDAAuD;AACvD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACrD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,GACb,qBAAqB,CAEvB;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,OAAO,GACjB,oBAAoB,CAwCtB"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/** Strict transport contract for the console Setup readiness projection. */
|
|
2
|
+
import { summarizeHealthFindings, validateHealthResult, } from "../health/contract.js";
|
|
3
|
+
import { readStrictDenseArray, readStrictProperty, requireCanonicalUtcTimestamp, requireStrictRecord, } from "../health/strict-validation.js";
|
|
4
|
+
/** Stable finding identifiers, in the existing checklist render order. */
|
|
5
|
+
export const SETUP_READINESS_CHECKS = [
|
|
6
|
+
"setup.install",
|
|
7
|
+
"setup.sync",
|
|
8
|
+
"setup.agent-ready",
|
|
9
|
+
"setup.standards",
|
|
10
|
+
"setup.tracker",
|
|
11
|
+
"setup.prd-source",
|
|
12
|
+
"setup.github-governance",
|
|
13
|
+
"setup.secrets",
|
|
14
|
+
"setup.automations",
|
|
15
|
+
"setup.exploration",
|
|
16
|
+
"setup.wiki",
|
|
17
|
+
"setup.starter-provenance",
|
|
18
|
+
];
|
|
19
|
+
/**
|
|
20
|
+
* Create one operator-readable deterministic Setup finding.
|
|
21
|
+
* @param check - Closed Setup checklist identifier
|
|
22
|
+
* @param status - Deterministic readiness status
|
|
23
|
+
* @param reason - Operator-readable evidence or remediation summary
|
|
24
|
+
* @returns Deterministic Setup readiness finding
|
|
25
|
+
*/
|
|
26
|
+
export function setupFinding(check, status, reason) {
|
|
27
|
+
return { check, layer: "deterministic", status, reason };
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Validate, detach, and freeze a Setup readiness projection.
|
|
31
|
+
* @param candidate - Untrusted projection
|
|
32
|
+
* @returns Strict schema-v1 result with exactly the twelve checklist findings
|
|
33
|
+
*/
|
|
34
|
+
export function validateSetupReadinessResult(candidate) {
|
|
35
|
+
const record = requireStrictRecord(candidate, ["schemaVersion", "observedAt", "findings"], "SetupReadinessResult");
|
|
36
|
+
if (readStrictProperty(record, "schemaVersion") !== 1) {
|
|
37
|
+
throw new Error("Invalid setup readiness schemaVersion: expected 1");
|
|
38
|
+
}
|
|
39
|
+
const observedAt = requireCanonicalUtcTimestamp(readStrictProperty(record, "observedAt"), "observedAt");
|
|
40
|
+
const rawFindings = readStrictDenseArray(readStrictProperty(record, "findings"), SETUP_READINESS_CHECKS.length, SETUP_READINESS_CHECKS.length, "findings");
|
|
41
|
+
const validated = validateHealthResult({
|
|
42
|
+
schemaVersion: 1,
|
|
43
|
+
runId: "setup-readiness-validation",
|
|
44
|
+
mode: "deterministic",
|
|
45
|
+
startedAt: observedAt,
|
|
46
|
+
completedAt: observedAt,
|
|
47
|
+
findings: rawFindings,
|
|
48
|
+
summary: summarizeHealthFindings(rawFindings),
|
|
49
|
+
}).findings;
|
|
50
|
+
const actual = validated.map(finding => finding.check);
|
|
51
|
+
if (SETUP_READINESS_CHECKS.some((check, index) => actual[index] !== check)) {
|
|
52
|
+
throw new Error(`Invalid setup readiness checks: expected ${SETUP_READINESS_CHECKS.join(", ")}`);
|
|
53
|
+
}
|
|
54
|
+
const findings = validated;
|
|
55
|
+
return Object.freeze({
|
|
56
|
+
schemaVersion: 1,
|
|
57
|
+
observedAt,
|
|
58
|
+
findings: Object.freeze(findings),
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=ui-setup-readiness-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-setup-readiness-contract.js","sourceRoot":"","sources":["../../src/cli/ui-setup-readiness-contract.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GAGrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,4BAA4B,EAC5B,mBAAmB,GACpB,MAAM,gCAAgC,CAAC;AAExC,0EAA0E;AAC1E,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,eAAe;IACf,YAAY;IACZ,mBAAmB;IACnB,iBAAiB;IACjB,eAAe;IACf,kBAAkB;IAClB,yBAAyB;IACzB,eAAe;IACf,mBAAmB;IACnB,mBAAmB;IACnB,YAAY;IACZ,0BAA0B;CAClB,CAAC;AAkBX;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,KAA0B,EAC1B,MAAoB,EACpB,MAAc;IAEd,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC3D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAC1C,SAAkB;IAElB,MAAM,MAAM,GAAG,mBAAmB,CAChC,SAAS,EACT,CAAC,eAAe,EAAE,YAAY,EAAE,UAAU,CAAU,EACpD,sBAAsB,CACvB,CAAC;IACF,IAAI,kBAAkB,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,UAAU,GAAG,4BAA4B,CAC7C,kBAAkB,CAAC,MAAM,EAAE,YAAY,CAAC,EACxC,YAAY,CACb,CAAC;IACF,MAAM,WAAW,GAAG,oBAAoB,CACtC,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,EACtC,sBAAsB,CAAC,MAAM,EAC7B,sBAAsB,CAAC,MAAM,EAC7B,UAAU,CACX,CAAC;IACF,MAAM,SAAS,GAAG,oBAAoB,CAAC;QACrC,aAAa,EAAE,CAAC;QAChB,KAAK,EAAE,4BAA4B;QACnC,IAAI,EAAE,eAAe;QACrB,SAAS,EAAE,UAAU;QACrB,WAAW,EAAE,UAAU;QACvB,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,uBAAuB,CAAC,WAAW,CAAC;KAC9C,CAAC,CAAC,QAAQ,CAAC;IACZ,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvD,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,KAAK,CACb,4CAA4C,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChF,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,SAA6C,CAAC;IAC/D,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,aAAa,EAAE,CAAC;QAChB,UAAU;QACV,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;KAClC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { HealthResult } from "../health/contract.js";
|
|
2
|
+
import type { JsonObject } from "../sync/json-path.js";
|
|
3
|
+
import { type SetupReadinessFinding } from "./ui-setup-readiness-contract.js";
|
|
4
|
+
/** Fixed Health checks that establish common project-owned apply surfaces. */
|
|
5
|
+
export declare const INSTALL_HEALTH_CHECKS: readonly ["project.state", "templates.managed", "package.conformance", "hooks.managed"];
|
|
6
|
+
/**
|
|
7
|
+
* Derive Codex's exact current managed-file set from the same selected plugin
|
|
8
|
+
* and agent discovery contract used by apply. No project file is trusted as a
|
|
9
|
+
* declaration of completeness.
|
|
10
|
+
* @param projectRoot - Project root to inspect
|
|
11
|
+
* @param config - Merged Lisa project configuration
|
|
12
|
+
* @returns Frozen authoritative Codex managed-file paths
|
|
13
|
+
*/
|
|
14
|
+
export declare function expectedCodexManagedFiles(projectRoot: string, config: JsonObject): Promise<readonly string[]>;
|
|
15
|
+
/**
|
|
16
|
+
* Establish only installation state that Lisa can observe authoritatively.
|
|
17
|
+
* External plugin/runtime state remains non-pass when no bounded reader exists.
|
|
18
|
+
* @param projectRoot - Project root to inspect
|
|
19
|
+
* @param config - Merged Lisa project configuration
|
|
20
|
+
* @param health - Current deterministic Health evidence, when available
|
|
21
|
+
* @returns Installation readiness finding for the configured harness
|
|
22
|
+
*/
|
|
23
|
+
export declare function installFinding(projectRoot: string, config: JsonObject, health: HealthResult | undefined): Promise<SetupReadinessFinding>;
|
|
24
|
+
//# sourceMappingURL=ui-setup-readiness-install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-setup-readiness-install.d.ts","sourceRoot":"","sources":["../../src/cli/ui-setup-readiness-install.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAO1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,kCAAkC,CAAC;AAI1C,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,yFAKxB,CAAC;AAgIX;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAwB5B;AAgFD;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,YAAY,GAAG,SAAS,GAC/B,OAAO,CAAC,qBAAqB,CAAC,CAqEhC"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
/** Truthful, harness-aware installation evidence for Setup readiness. */
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { realpath } from "node:fs/promises";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import { discoverLisaAgents, LISA_AGENTS_SUBDIR, } from "../codex/agent-installer.js";
|
|
6
|
+
import { DEFAULT_HARNESS, harnessIncludesAgent, } from "../core/config.js";
|
|
7
|
+
import { projectPluginFilter, selectProjectLisaPluginsFromState, } from "../core/lisa-plugin-selection.js";
|
|
8
|
+
import { normalizeHarness } from "../core/project-config.js";
|
|
9
|
+
import { projectPathKind, projectRegularFileExists, readProjectJsonObject, readProjectText, } from "../health/read-only-fs.js";
|
|
10
|
+
import { setupFinding, } from "./ui-setup-readiness-contract.js";
|
|
11
|
+
import { healthEvidenceFinding } from "./ui-setup-readiness-local.js";
|
|
12
|
+
import { readConfinedDetectedStacks } from "./ui-detected-stacks.js";
|
|
13
|
+
/** Fixed Health checks that establish common project-owned apply surfaces. */
|
|
14
|
+
export const INSTALL_HEALTH_CHECKS = [
|
|
15
|
+
"project.state",
|
|
16
|
+
"templates.managed",
|
|
17
|
+
"package.conformance",
|
|
18
|
+
"hooks.managed",
|
|
19
|
+
];
|
|
20
|
+
const MAX_MANAGED_FILES = 2_048;
|
|
21
|
+
const INSTALL_CHECK = "setup.install";
|
|
22
|
+
const EXTERNAL_ONLY_HARNESSES = new Set([
|
|
23
|
+
"cursor",
|
|
24
|
+
"agy",
|
|
25
|
+
"copilot",
|
|
26
|
+
"fleet",
|
|
27
|
+
]);
|
|
28
|
+
/**
|
|
29
|
+
* Resolve the configured harness without accepting a malformed value.
|
|
30
|
+
* @param config - Merged Lisa project configuration
|
|
31
|
+
* @returns Normalized harness, or undefined for malformed configuration
|
|
32
|
+
*/
|
|
33
|
+
function configuredHarness(config) {
|
|
34
|
+
const raw = config.harness ?? DEFAULT_HARNESS;
|
|
35
|
+
return typeof raw === "string" ? normalizeHarness(raw) : undefined;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Require one non-empty, confined regular project file.
|
|
39
|
+
* @param root - Canonical project root
|
|
40
|
+
* @param relativePath - Project-relative file path
|
|
41
|
+
* @returns Whether the confined file exists and contains non-whitespace text
|
|
42
|
+
*/
|
|
43
|
+
async function nonemptyProjectFile(root, relativePath) {
|
|
44
|
+
const text = await readProjectText(root, relativePath);
|
|
45
|
+
return text !== undefined && text.trim().length > 0;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Validate one normalized path relative to an agent-owned manifest directory.
|
|
49
|
+
* @param value - Untrusted managed-manifest entry
|
|
50
|
+
* @returns Whether the value is a normalized relative path
|
|
51
|
+
*/
|
|
52
|
+
function validManifestEntry(value) {
|
|
53
|
+
if (typeof value !== "string" ||
|
|
54
|
+
value.length === 0 ||
|
|
55
|
+
value.includes("\\") ||
|
|
56
|
+
path.posix.isAbsolute(value)) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
const segments = value.split("/");
|
|
60
|
+
return (segments.every(segment => segment !== "" && segment !== "." && segment !== "..") && path.posix.normalize(value) === value);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Refuse symlinked/special parents and final entries for one manifest file.
|
|
64
|
+
* @param root - Canonical project root
|
|
65
|
+
* @param configDir - Agent-owned configuration directory
|
|
66
|
+
* @param entry - Validated manifest-relative file path
|
|
67
|
+
* @returns Whether every parent and the final file are confined and regular
|
|
68
|
+
*/
|
|
69
|
+
async function manifestEntryIsRegular(root, configDir, entry) {
|
|
70
|
+
const segments = [configDir, ...entry.split("/")];
|
|
71
|
+
const parents = segments
|
|
72
|
+
.slice(0, -1)
|
|
73
|
+
.map((_, index) => segments.slice(0, index + 1).join("/"));
|
|
74
|
+
const kinds = await Promise.all(parents.map(parent => projectPathKind(root, parent)));
|
|
75
|
+
return (kinds.every(kind => kind === "directory") &&
|
|
76
|
+
(await projectRegularFileExists(root, `${configDir}/${entry}`)));
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Validate a bounded managed-artifact manifest and every file it names.
|
|
80
|
+
* @param root - Canonical project root
|
|
81
|
+
* @param configDir - Managed configuration directory
|
|
82
|
+
* @param expectedFiles - Optional authoritative set of required files
|
|
83
|
+
* @returns Whether the manifest is bounded, exact, and fully present
|
|
84
|
+
*/
|
|
85
|
+
async function managedManifestIsComplete(root, configDir, expectedFiles) {
|
|
86
|
+
const manifest = await readProjectJsonObject(root, `${configDir}/.lisa-managed.json`);
|
|
87
|
+
const files = manifest?.files;
|
|
88
|
+
if (!Array.isArray(files) ||
|
|
89
|
+
files.length === 0 ||
|
|
90
|
+
files.length > MAX_MANAGED_FILES ||
|
|
91
|
+
!files.every(validManifestEntry) ||
|
|
92
|
+
new Set(files).size !== files.length) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
if (expectedFiles !== undefined) {
|
|
96
|
+
const observed = [...files].sort((left, right) => left.localeCompare(right));
|
|
97
|
+
const expected = [...expectedFiles].sort((left, right) => left.localeCompare(right));
|
|
98
|
+
if (observed.length !== expected.length ||
|
|
99
|
+
observed.some((entry, index) => entry !== expected[index])) {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
const present = await Promise.all(files.map(entry => manifestEntryIsRegular(root, configDir, entry)));
|
|
104
|
+
return present.every(Boolean);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Derive Codex's exact current managed-file set from the same selected plugin
|
|
108
|
+
* and agent discovery contract used by apply. No project file is trusted as a
|
|
109
|
+
* declaration of completeness.
|
|
110
|
+
* @param projectRoot - Project root to inspect
|
|
111
|
+
* @param config - Merged Lisa project configuration
|
|
112
|
+
* @returns Frozen authoritative Codex managed-file paths
|
|
113
|
+
*/
|
|
114
|
+
export async function expectedCodexManagedFiles(projectRoot, config) {
|
|
115
|
+
const root = await realpath(projectRoot);
|
|
116
|
+
const lisaRoot = await realpath(path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../.."));
|
|
117
|
+
const [detectedTypes, wikiKind] = await Promise.all([
|
|
118
|
+
readConfinedDetectedStacks(root),
|
|
119
|
+
projectPathKind(root, "wiki/lisa-wiki.config.json"),
|
|
120
|
+
]);
|
|
121
|
+
const plugins = selectProjectLisaPluginsFromState(config, detectedTypes, wikiKind === "file");
|
|
122
|
+
const agents = await discoverLisaAgents(lisaRoot, projectPluginFilter(plugins));
|
|
123
|
+
return Object.freeze([
|
|
124
|
+
...agents.map(agent => path.posix.join(LISA_AGENTS_SUBDIR, `${agent.id}.toml`)),
|
|
125
|
+
"config.toml",
|
|
126
|
+
]);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Convert one boolean observation into a stable drift label.
|
|
130
|
+
* @param applicable - Whether the surface applies to the selected harness
|
|
131
|
+
* @param label - Stable operator-facing drift label
|
|
132
|
+
* @param observe - Read-only observation for the surface
|
|
133
|
+
* @returns Empty when inapplicable or present, otherwise the drift label
|
|
134
|
+
*/
|
|
135
|
+
async function evidenceDrift(applicable, label, observe) {
|
|
136
|
+
if (!applicable)
|
|
137
|
+
return [];
|
|
138
|
+
return (await observe()) ? [] : [label];
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Collect missing or unsafe project-owned surfaces for one harness.
|
|
142
|
+
* @param root - Canonical project root
|
|
143
|
+
* @param harness - Normalized configured harness
|
|
144
|
+
* @param config - Merged Lisa project configuration
|
|
145
|
+
* @returns Stable labels for missing or unsafe harness surfaces
|
|
146
|
+
*/
|
|
147
|
+
async function projectSurfaceDrift(root, harness, config) {
|
|
148
|
+
const includes = (agent) => harnessIncludesAgent(harness, agent);
|
|
149
|
+
const needsAgents = includes("claude") ||
|
|
150
|
+
includes("codex") ||
|
|
151
|
+
includes("agy") ||
|
|
152
|
+
includes("copilot") ||
|
|
153
|
+
includes("opencode");
|
|
154
|
+
const codexFiles = includes("codex")
|
|
155
|
+
? await expectedCodexManagedFiles(root, config)
|
|
156
|
+
: undefined;
|
|
157
|
+
const observations = await Promise.all([
|
|
158
|
+
evidenceDrift(needsAgents, "AGENTS.md", async () => await nonemptyProjectFile(root, "AGENTS.md")),
|
|
159
|
+
evidenceDrift(includes("claude"), "CLAUDE.md canonical AGENTS.md pointer", async () => (await readProjectText(root, "CLAUDE.md"))?.includes("@AGENTS.md") ===
|
|
160
|
+
true),
|
|
161
|
+
evidenceDrift(includes("codex"), ".codex managed-artifact manifest", async () => await managedManifestIsComplete(root, ".codex", codexFiles)),
|
|
162
|
+
evidenceDrift(includes("copilot"), ".github/copilot-instructions.md", async () => await nonemptyProjectFile(root, ".github/copilot-instructions.md")),
|
|
163
|
+
evidenceDrift(includes("opencode"), ".opencode managed-artifact manifest", async () => await managedManifestIsComplete(root, ".opencode")),
|
|
164
|
+
evidenceDrift(includes("opencode"), "opencode.json", async () => await nonemptyProjectFile(root, "opencode.json")),
|
|
165
|
+
]);
|
|
166
|
+
return observations.flat();
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Establish only installation state that Lisa can observe authoritatively.
|
|
170
|
+
* External plugin/runtime state remains non-pass when no bounded reader exists.
|
|
171
|
+
* @param projectRoot - Project root to inspect
|
|
172
|
+
* @param config - Merged Lisa project configuration
|
|
173
|
+
* @param health - Current deterministic Health evidence, when available
|
|
174
|
+
* @returns Installation readiness finding for the configured harness
|
|
175
|
+
*/
|
|
176
|
+
export async function installFinding(projectRoot, config, health) {
|
|
177
|
+
const common = healthEvidenceFinding(INSTALL_CHECK, health, INSTALL_HEALTH_CHECKS, "Lisa's common project templates, package, and git hooks are current.", "fail");
|
|
178
|
+
if (common.status !== "pass")
|
|
179
|
+
return common;
|
|
180
|
+
const harness = configuredHarness(config);
|
|
181
|
+
if (harness === undefined) {
|
|
182
|
+
return setupFinding(INSTALL_CHECK, "fail", "The configured Lisa harness is missing or invalid; run lisa sync and lisa apply.");
|
|
183
|
+
}
|
|
184
|
+
try {
|
|
185
|
+
const root = await realpath(projectRoot);
|
|
186
|
+
const drift = await projectSurfaceDrift(root, harness, config);
|
|
187
|
+
if (drift.length > 0) {
|
|
188
|
+
return setupFinding(INSTALL_CHECK, "fail", `Configured-harness project surfaces are missing or unsafe: ${drift.join(", ")}. Run lisa apply.`);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
return setupFinding(INSTALL_CHECK, "fail", "Configured-harness project surfaces could not be inspected safely; replace symlinks, special files, or oversized files and run lisa apply.");
|
|
193
|
+
}
|
|
194
|
+
if (harnessIncludesAgent(harness, "claude")) {
|
|
195
|
+
const claudePlugins = healthEvidenceFinding(INSTALL_CHECK, health, ["plugins.current"], "Claude's enabled and installed Lisa plugins are current.", "warn");
|
|
196
|
+
if (claudePlugins.status !== "pass")
|
|
197
|
+
return claudePlugins;
|
|
198
|
+
}
|
|
199
|
+
if (harnessIncludesAgent(harness, "opencode")) {
|
|
200
|
+
return setupFinding(INSTALL_CHECK, "warn", "OpenCode's declared managed files are present, but their completeness against the current emit catalog cannot yet be established authoritatively.");
|
|
201
|
+
}
|
|
202
|
+
if (EXTERNAL_ONLY_HARNESSES.has(harness)) {
|
|
203
|
+
return setupFinding(INSTALL_CHECK, "warn", `Lisa's project-owned ${harness} surfaces are current, but external ${harness} plugin/runtime installation cannot yet be observed authoritatively.`);
|
|
204
|
+
}
|
|
205
|
+
return setupFinding(INSTALL_CHECK, "pass", `Lisa's required project-owned ${harness} installation surfaces are present and complete.`);
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=ui-setup-readiness-install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-setup-readiness-install.js","sourceRoot":"","sources":["../../src/cli/ui-setup-readiness-install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { HealthResult, HealthStatus } from "../health/contract.js";
|
|
2
|
+
import { type SetupReadinessCheck, type SetupReadinessFinding } from "./ui-setup-readiness-contract.js";
|
|
3
|
+
/** Fixed Health checks that establish local standards/governance conformance. */
|
|
4
|
+
export declare const STANDARDS_HEALTH_CHECKS: readonly ["templates.managed", "package.conformance", "hooks.managed", "config.sync", "instructions.canonical", "ci.workflows"];
|
|
5
|
+
/**
|
|
6
|
+
* Never upgrade standards adoption without current lint/test preservation proof.
|
|
7
|
+
* @param health - Current deterministic Health evidence, when available
|
|
8
|
+
* @returns Standards-adoption readiness finding
|
|
9
|
+
*/
|
|
10
|
+
export declare function standardsFinding(health: HealthResult | undefined): SetupReadinessFinding;
|
|
11
|
+
/**
|
|
12
|
+
* Aggregate stable check IDs without interpreting human-readable reasons.
|
|
13
|
+
* @param check - Setup checklist identifier being evaluated
|
|
14
|
+
* @param health - Current deterministic Health evidence, when available
|
|
15
|
+
* @param requiredChecks - Health check identifiers required for readiness
|
|
16
|
+
* @param passReason - Operator-readable reason used when every check passes
|
|
17
|
+
* @param unavailableStatus - Status used when required evidence is absent
|
|
18
|
+
* @returns Setup finding derived from the required Health checks
|
|
19
|
+
*/
|
|
20
|
+
export declare function healthEvidenceFinding(check: SetupReadinessCheck, health: HealthResult | undefined, requiredChecks: readonly string[], passReason: string, unavailableStatus?: HealthStatus): SetupReadinessFinding;
|
|
21
|
+
/**
|
|
22
|
+
* Require a complete source registry and no open knowledge gaps.
|
|
23
|
+
* @param projectRoot - Project root containing agent-ready evidence
|
|
24
|
+
* @returns Agent-readiness finding from confined registry and gap evidence
|
|
25
|
+
*/
|
|
26
|
+
export declare function agentReadyFinding(projectRoot: string): Promise<SetupReadinessFinding>;
|
|
27
|
+
/**
|
|
28
|
+
* Require the optional wiki to exist before accepting the Health wiki check.
|
|
29
|
+
* @param projectRoot - Project root containing the optional wiki
|
|
30
|
+
* @param health - Current deterministic Health evidence, when available
|
|
31
|
+
* @returns Wiki setup readiness finding
|
|
32
|
+
*/
|
|
33
|
+
export declare function wikiSetupFinding(projectRoot: string, health: HealthResult | undefined): Promise<SetupReadinessFinding>;
|
|
34
|
+
/**
|
|
35
|
+
* Read names referenced as `secrets.NAME` from current workflow files.
|
|
36
|
+
* @param projectRoot - Project root containing GitHub workflows
|
|
37
|
+
* @returns Sorted unique explicit workflow secret names
|
|
38
|
+
*/
|
|
39
|
+
export declare function readWorkflowSecretNames(projectRoot: string): Promise<readonly string[]>;
|
|
40
|
+
//# sourceMappingURL=ui-setup-readiness-local.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-setup-readiness-local.d.ts","sourceRoot":"","sources":["../../src/cli/ui-setup-readiness-local.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAQxE,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC3B,MAAM,kCAAkC,CAAC;AAK1C,iFAAiF;AACjF,eAAO,MAAM,uBAAuB,iIAO1B,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,GAAG,SAAS,GAC/B,qBAAqB,CAevB;AA0GD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,YAAY,GAAG,SAAS,EAChC,cAAc,EAAE,SAAS,MAAM,EAAE,EACjC,UAAU,EAAE,MAAM,EAClB,iBAAiB,GAAE,YAAqB,GACvC,qBAAqB,CAwBvB;AAED;;;;GAIG;AAEH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,CAAC,CAqFhC;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,YAAY,GAAG,SAAS,GAC/B,OAAO,CAAC,qBAAqB,CAAC,CAuBhC;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CA+B5B"}
|