@codyswann/lisa 4.8.0 → 4.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/all/copy-overwrite/scripts/lisa-gates.mjs +72 -0
  2. package/dist/codex/hooks-installer.d.ts +24 -0
  3. package/dist/codex/hooks-installer.d.ts.map +1 -1
  4. package/dist/codex/hooks-installer.js +46 -7
  5. package/dist/codex/hooks-installer.js.map +1 -1
  6. package/dist/codex/scripts/block-migration-edits.sh +75 -3
  7. package/dist/codex/scripts/block-suppress-directives.sh +72 -2
  8. package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
  9. package/dist/core/lisa-owned-hash-ledger.js +2 -0
  10. package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
  11. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  12. package/dist/core/upstream-evidence-manifest.js +15 -4
  13. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  14. package/dist/migrations/ensure-lighthouse-collect-options.d.ts +3 -1
  15. package/dist/migrations/ensure-lighthouse-collect-options.d.ts.map +1 -1
  16. package/dist/migrations/ensure-lighthouse-collect-options.js +12 -4
  17. package/dist/migrations/ensure-lighthouse-collect-options.js.map +1 -1
  18. package/dist/migrations/ensure-nightly-e2e-workflow-pins.d.ts +51 -0
  19. package/dist/migrations/ensure-nightly-e2e-workflow-pins.d.ts.map +1 -0
  20. package/dist/migrations/ensure-nightly-e2e-workflow-pins.js +122 -0
  21. package/dist/migrations/ensure-nightly-e2e-workflow-pins.js.map +1 -0
  22. package/dist/migrations/index.d.ts +1 -0
  23. package/dist/migrations/index.d.ts.map +1 -1
  24. package/dist/migrations/index.js +3 -0
  25. package/dist/migrations/index.js.map +1 -1
  26. package/expo/create-only/lighthouserc.js +1 -1
  27. package/package.json +1 -1
  28. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  29. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  30. package/plugins/lisa-agy/plugin.json +1 -1
  31. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  32. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  33. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  34. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  35. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  36. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  37. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  38. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  39. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  40. package/plugins/lisa-expo-agy/plugin.json +1 -1
  41. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  43. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  44. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  45. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  46. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  48. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  49. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  50. package/plugins/lisa-nestjs/hooks/block-migration-edits.sh +79 -10
  51. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  52. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  53. package/plugins/lisa-nestjs-copilot/hooks/block-migration-edits.sh +79 -10
  54. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  55. package/plugins/lisa-nestjs-cursor/hooks/block-migration-edits.sh +79 -10
  56. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  58. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  59. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  60. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  63. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  64. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  65. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  67. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  68. package/plugins/lisa-rails-agy/plugin.json +1 -1
  69. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  70. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  71. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  72. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  73. package/plugins/lisa-typescript/hooks/block-suppress-directives.sh +71 -3
  74. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  75. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  76. package/plugins/lisa-typescript-copilot/hooks/block-suppress-directives.sh +71 -3
  77. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  78. package/plugins/lisa-typescript-cursor/hooks/block-suppress-directives.sh +71 -3
  79. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  80. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  81. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  82. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  83. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  84. package/plugins/src/nestjs/hooks/block-migration-edits.sh +79 -10
  85. package/plugins/src/typescript/hooks/block-suppress-directives.sh +71 -3
@@ -5,8 +5,10 @@ import type { Migration, MigrationContext, MigrationResult } from "./migration.i
5
5
  * from rewriting a host-diverged configuration.
6
6
  */
7
7
  export declare const STALE_COLLECT_BLOCK = " collect: {\n staticDistDir: collect.staticDistDir,\n numberOfRuns: collect.numberOfRuns,\n chromePath: process.env.CHROME_PATH || undefined,\n },";
8
+ /** The collect block first shipped by Lisa 4.6.11. */
9
+ export declare const ENV_FIRST_COLLECT_BLOCK = " collect: {\n ...collect,\n chromePath: process.env.CHROME_PATH || collect.chromePath || undefined,\n },";
8
10
  /** The current template block. */
9
- export declare const CURRENT_COLLECT_BLOCK = " collect: {\n ...collect,\n chromePath: process.env.CHROME_PATH || collect.chromePath || undefined,\n },";
11
+ export declare const CURRENT_COLLECT_BLOCK = " collect: {\n ...collect,\n chromePath: collect.chromePath || process.env.CHROME_PATH || undefined,\n },";
10
12
  /**
11
13
  * Retrofit the exact create-only Lighthouse configuration Lisa used to seed.
12
14
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ensure-lighthouse-collect-options.d.ts","sourceRoot":"","sources":["../../src/migrations/ensure-lighthouse-collect-options.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAIlC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,4KAIzB,CAAC;AAER,kCAAkC;AAClC,eAAO,MAAM,qBAAqB,6HAG3B,CAAC;AAER;;;;;;GAMG;AACH,qBAAa,uCAAwC,YAAW,SAAS;IACvE,QAAQ,CAAC,IAAI,uCAAuC;IACpD,QAAQ,CAAC,WAAW,kEAC6C;IAEjE;;;;;OAKG;IACG,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAOtD;;;;;OAKG;IACG,KAAK,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;CAmC7D"}
1
+ {"version":3,"file":"ensure-lighthouse-collect-options.d.ts","sourceRoot":"","sources":["../../src/migrations/ensure-lighthouse-collect-options.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAIlC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,4KAIzB,CAAC;AAER,sDAAsD;AACtD,eAAO,MAAM,uBAAuB,6HAG7B,CAAC;AAER,kCAAkC;AAClC,eAAO,MAAM,qBAAqB,6HAG3B,CAAC;AAIR;;;;;;GAMG;AACH,qBAAa,uCAAwC,YAAW,SAAS;IACvE,QAAQ,CAAC,IAAI,uCAAuC;IACpD,QAAQ,CAAC,WAAW,kEAC6C;IAEjE;;;;;OAKG;IACG,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAQtD;;;;;OAKG;IACG,KAAK,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;CAiC7D"}
@@ -12,11 +12,17 @@ export const STALE_COLLECT_BLOCK = ` collect: {
12
12
  numberOfRuns: collect.numberOfRuns,
13
13
  chromePath: process.env.CHROME_PATH || undefined,
14
14
  },`;
15
+ /** The collect block first shipped by Lisa 4.6.11. */
16
+ export const ENV_FIRST_COLLECT_BLOCK = ` collect: {
17
+ ...collect,
18
+ chromePath: process.env.CHROME_PATH || collect.chromePath || undefined,
19
+ },`;
15
20
  /** The current template block. */
16
21
  export const CURRENT_COLLECT_BLOCK = ` collect: {
17
22
  ...collect,
18
- chromePath: process.env.CHROME_PATH || collect.chromePath || undefined,
23
+ chromePath: collect.chromePath || process.env.CHROME_PATH || undefined,
19
24
  },`;
25
+ const STALE_BLOCKS = [STALE_COLLECT_BLOCK, ENV_FIRST_COLLECT_BLOCK];
20
26
  /**
21
27
  * Retrofit the exact create-only Lighthouse configuration Lisa used to seed.
22
28
  *
@@ -39,7 +45,8 @@ export class EnsureLighthouseCollectOptionsMigration {
39
45
  const file = path.join(ctx.projectDir, CONFIG_FILE);
40
46
  if (!(await fse.pathExists(file)))
41
47
  return false;
42
- return (await readFile(file, "utf8")).includes(STALE_COLLECT_BLOCK);
48
+ const source = await readFile(file, "utf8");
49
+ return STALE_BLOCKS.some(block => source.includes(block));
43
50
  }
44
51
  /**
45
52
  * Replace the stale block while preserving every other host-owned byte.
@@ -53,7 +60,8 @@ export class EnsureLighthouseCollectOptionsMigration {
53
60
  return { name: this.name, action: "noop" };
54
61
  }
55
62
  const before = await readFile(file, "utf8");
56
- if (!before.includes(STALE_COLLECT_BLOCK)) {
63
+ const staleBlock = STALE_BLOCKS.find(block => before.includes(block));
64
+ if (!staleBlock) {
57
65
  return { name: this.name, action: "noop" };
58
66
  }
59
67
  const message = "Forwarded project-specific Lighthouse static discovery options";
@@ -66,7 +74,7 @@ export class EnsureLighthouseCollectOptionsMigration {
66
74
  message,
67
75
  };
68
76
  }
69
- await writeFile(file, before.replace(STALE_COLLECT_BLOCK, CURRENT_COLLECT_BLOCK));
77
+ await writeFile(file, before.replace(staleBlock, CURRENT_COLLECT_BLOCK));
70
78
  ctx.logger.success(message);
71
79
  return {
72
80
  name: this.name,
@@ -1 +1 @@
1
- {"version":3,"file":"ensure-lighthouse-collect-options.js","sourceRoot":"","sources":["../../src/migrations/ensure-lighthouse-collect-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAOhC,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAEtC;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;OAI5B,CAAC;AAER,kCAAkC;AAClC,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;OAG9B,CAAC;AAER;;;;;;GAMG;AACH,MAAM,OAAO,uCAAuC;IACzC,IAAI,GAAG,mCAAmC,CAAC;IAC3C,WAAW,GAClB,8DAA8D,CAAC;IAEjE;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CAAC,GAAqB;QACjC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QACpD,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAChD,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IACtE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAK,CAAC,GAAqB;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QACpD,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAClC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC7C,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC1C,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC7C,CAAC;QAED,MAAM,OAAO,GACX,gEAAgE,CAAC;QACnE,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,WAAW,EAAE,CAAC,CAAC;YAC9C,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,SAAS;gBACjB,YAAY,EAAE,CAAC,WAAW,CAAC;gBAC3B,OAAO;aACR,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,CACb,IAAI,EACJ,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAC3D,CAAC;QACF,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,SAAS;YACjB,YAAY,EAAE,CAAC,WAAW,CAAC;YAC3B,OAAO;SACR,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"ensure-lighthouse-collect-options.js","sourceRoot":"","sources":["../../src/migrations/ensure-lighthouse-collect-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAOhC,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAEtC;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;OAI5B,CAAC;AAER,sDAAsD;AACtD,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;OAGhC,CAAC;AAER,kCAAkC;AAClC,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;OAG9B,CAAC;AAER,MAAM,YAAY,GAAG,CAAC,mBAAmB,EAAE,uBAAuB,CAAU,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,OAAO,uCAAuC;IACzC,IAAI,GAAG,mCAAmC,CAAC;IAC3C,WAAW,GAClB,8DAA8D,CAAC;IAEjE;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CAAC,GAAqB;QACjC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QACpD,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5C,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAK,CAAC,GAAqB;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QACpD,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAClC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC7C,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC7C,CAAC;QAED,MAAM,OAAO,GACX,gEAAgE,CAAC;QACnE,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,WAAW,EAAE,CAAC,CAAC;YAC9C,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,SAAS;gBACjB,YAAY,EAAE,CAAC,WAAW,CAAC;gBAC3B,OAAO;aACR,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC,CAAC;QACzE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,SAAS;YACjB,YAAY,EAAE,CAAC,WAAW,CAAC;YAC3B,OAAO;SACR,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,51 @@
1
+ import type { Migration, MigrationContext, MigrationResult } from "./migration.interface.js";
2
+ /** Read the installed Lisa package version. */
3
+ type VersionReader = () => string;
4
+ /** Keep an installed nightly E2E caller on the same immutable Lisa release. */
5
+ export declare class EnsureNightlyE2EWorkflowPinsMigration implements Migration {
6
+ private readonly readLisaVersion;
7
+ readonly name = "ensure-nightly-e2e-workflow-pins";
8
+ readonly description = "Align nightly E2E reusable-workflow pins with installed Lisa";
9
+ /**
10
+ * Create the migration.
11
+ *
12
+ * @param readLisaVersion - Version reader, injectable for deterministic tests
13
+ */
14
+ constructor(readLisaVersion?: VersionReader);
15
+ /**
16
+ * Decide whether an Expo caller still points at another Lisa release.
17
+ *
18
+ * @param ctx - Migration context
19
+ * @returns True when one supported caller needs a safe literal update
20
+ */
21
+ applies(ctx: MigrationContext): Promise<boolean>;
22
+ /**
23
+ * Update only Lisa's literal semver caller pins and their matching comment.
24
+ *
25
+ * A host that deliberately uses a branch, SHA, or different workflow path is
26
+ * left untouched because Lisa cannot infer that host's release policy.
27
+ *
28
+ * @param ctx - Migration context
29
+ * @returns Applied or no-op result
30
+ */
31
+ apply(ctx: MigrationContext): Promise<MigrationResult>;
32
+ /**
33
+ * Read the contract version shipped into the destination project.
34
+ *
35
+ * @param projectDir - Destination project directory
36
+ * @returns Contract version, or null when the guard is absent or diverged
37
+ */
38
+ private readContractVersion;
39
+ /**
40
+ * Update a supported caller without touching host-selected non-semver refs.
41
+ *
42
+ * @param source - Workflow source
43
+ * @param file - Supported workflow filename
44
+ * @param lisaVersion - Installed Lisa version
45
+ * @param contractVersion - Guard contract version, when available
46
+ * @returns Updated or original workflow source
47
+ */
48
+ private updateSource;
49
+ }
50
+ export {};
51
+ //# sourceMappingURL=ensure-nightly-e2e-workflow-pins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure-nightly-e2e-workflow-pins.d.ts","sourceRoot":"","sources":["../../src/migrations/ensure-nightly-e2e-workflow-pins.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAWlC,+CAA+C;AAC/C,KAAK,aAAa,GAAG,MAAM,MAAM,CAAC;AAElC,+EAA+E;AAC/E,qBAAa,qCAAsC,YAAW,SAAS;IAWnE,OAAO,CAAC,QAAQ,CAAC,eAAe;IAVlC,QAAQ,CAAC,IAAI,sCAAsC;IACnD,QAAQ,CAAC,WAAW,kEAC6C;IAEjE;;;;OAIG;gBAEgB,eAAe,GAAE,aAAiC;IAGrE;;;;;OAKG;IACG,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAkBtD;;;;;;;;OAQG;IACG,KAAK,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAuC5D;;;;;OAKG;YACW,mBAAmB;IAQjC;;;;;;;;OAQG;IACH,OAAO,CAAC,YAAY;CA6BrB"}
@@ -0,0 +1,122 @@
1
+ import { readFile, writeFile } from "node:fs/promises";
2
+ import * as path from "node:path";
3
+ import * as fse from "fs-extra";
4
+ import { getPackageVersion } from "../cli/version.js";
5
+ const WORKFLOW_DIR = path.join(".github", "workflows");
6
+ const WORKFLOW_FILES = [
7
+ "nightly-e2e-health.yml",
8
+ "nightly-e2e-report.yml",
9
+ ];
10
+ const CONTRACT_SCRIPT = path.join("scripts", "check-nightly-e2e-health.mjs");
11
+ const CONTRACT_PATTERN = /NIGHTLY_E2E_CONTRACT_VERSION\s*=\s*["'](\d+\.\d+\.\d+)["']/;
12
+ /** Keep an installed nightly E2E caller on the same immutable Lisa release. */
13
+ export class EnsureNightlyE2EWorkflowPinsMigration {
14
+ readLisaVersion;
15
+ name = "ensure-nightly-e2e-workflow-pins";
16
+ description = "Align nightly E2E reusable-workflow pins with installed Lisa";
17
+ /**
18
+ * Create the migration.
19
+ *
20
+ * @param readLisaVersion - Version reader, injectable for deterministic tests
21
+ */
22
+ constructor(readLisaVersion = getPackageVersion) {
23
+ this.readLisaVersion = readLisaVersion;
24
+ }
25
+ /**
26
+ * Decide whether an Expo caller still points at another Lisa release.
27
+ *
28
+ * @param ctx - Migration context
29
+ * @returns True when one supported caller needs a safe literal update
30
+ */
31
+ async applies(ctx) {
32
+ if (!ctx.detectedTypes.includes("expo"))
33
+ return false;
34
+ const contractVersion = await this.readContractVersion(ctx.projectDir);
35
+ const lisaVersion = this.readLisaVersion();
36
+ for (const file of WORKFLOW_FILES) {
37
+ const absolute = path.join(ctx.projectDir, WORKFLOW_DIR, file);
38
+ if (!(await fse.pathExists(absolute)))
39
+ continue;
40
+ const source = await readFile(absolute, "utf8");
41
+ if (this.updateSource(source, file, lisaVersion, contractVersion) !== source) {
42
+ return true;
43
+ }
44
+ }
45
+ return false;
46
+ }
47
+ /**
48
+ * Update only Lisa's literal semver caller pins and their matching comment.
49
+ *
50
+ * A host that deliberately uses a branch, SHA, or different workflow path is
51
+ * left untouched because Lisa cannot infer that host's release policy.
52
+ *
53
+ * @param ctx - Migration context
54
+ * @returns Applied or no-op result
55
+ */
56
+ async apply(ctx) {
57
+ const lisaVersion = this.readLisaVersion();
58
+ const contractVersion = await this.readContractVersion(ctx.projectDir);
59
+ const changedFiles = [];
60
+ const updates = [];
61
+ for (const file of WORKFLOW_FILES) {
62
+ const relative = path.join(WORKFLOW_DIR, file);
63
+ const absolute = path.join(ctx.projectDir, relative);
64
+ if (!(await fse.pathExists(absolute)))
65
+ continue;
66
+ const before = await readFile(absolute, "utf8");
67
+ const after = this.updateSource(before, file, lisaVersion, contractVersion);
68
+ if (after === before)
69
+ continue;
70
+ changedFiles.push(relative);
71
+ updates.push({ absolute, source: after });
72
+ }
73
+ if (changedFiles.length === 0) {
74
+ return { name: this.name, action: "noop" };
75
+ }
76
+ const message = `Aligned nightly E2E callers with Lisa ${lisaVersion}`;
77
+ if (ctx.dryRun) {
78
+ ctx.logger.dry(`Would update ${changedFiles.join(", ")}`);
79
+ return { name: this.name, action: "applied", changedFiles, message };
80
+ }
81
+ for (const update of updates) {
82
+ await writeFile(update.absolute, update.source);
83
+ }
84
+ ctx.logger.success(message);
85
+ return { name: this.name, action: "applied", changedFiles, message };
86
+ }
87
+ /**
88
+ * Read the contract version shipped into the destination project.
89
+ *
90
+ * @param projectDir - Destination project directory
91
+ * @returns Contract version, or null when the guard is absent or diverged
92
+ */
93
+ async readContractVersion(projectDir) {
94
+ const file = path.join(projectDir, CONTRACT_SCRIPT);
95
+ if (!(await fse.pathExists(file)))
96
+ return null;
97
+ return CONTRACT_PATTERN.exec(await readFile(file, "utf8"))?.[1] ?? null;
98
+ }
99
+ /**
100
+ * Update a supported caller without touching host-selected non-semver refs.
101
+ *
102
+ * @param source - Workflow source
103
+ * @param file - Supported workflow filename
104
+ * @param lisaVersion - Installed Lisa version
105
+ * @param contractVersion - Guard contract version, when available
106
+ * @returns Updated or original workflow source
107
+ */
108
+ updateSource(source, file, lisaVersion, contractVersion) {
109
+ const reusable = file.replace(/\.yml$/, "");
110
+ const pinPattern = new RegExp(`(uses:\\s*CodySwannGT/lisa/\\.github/workflows/${reusable}\\.yml@)v\\d+\\.\\d+\\.\\d+`, "g");
111
+ const pinUpdated = source.replace(pinPattern, `$1v${lisaVersion}`);
112
+ const pinChanged = pinUpdated !== source;
113
+ if (file === "nightly-e2e-health.yml" && pinChanged) {
114
+ const commentUpdated = pinUpdated.replace(/# v\d+\.\d+\.\d+ matches this repo's own installed Lisa/, `# v${lisaVersion} matches this repo's own installed Lisa`);
115
+ return contractVersion
116
+ ? commentUpdated.replace(/# the guard reports contract \d+\.\d+\.\d+ and the reusable asserts its MAJOR/, `# the guard reports contract ${contractVersion} and the reusable asserts its MAJOR`)
117
+ : commentUpdated;
118
+ }
119
+ return pinUpdated;
120
+ }
121
+ }
122
+ //# sourceMappingURL=ensure-nightly-e2e-workflow-pins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure-nightly-e2e-workflow-pins.js","sourceRoot":"","sources":["../../src/migrations/ensure-nightly-e2e-workflow-pins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAOtD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACvD,MAAM,cAAc,GAAG;IACrB,wBAAwB;IACxB,wBAAwB;CAChB,CAAC;AACX,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,8BAA8B,CAAC,CAAC;AAC7E,MAAM,gBAAgB,GACpB,4DAA4D,CAAC;AAK/D,+EAA+E;AAC/E,MAAM,OAAO,qCAAqC;IAW7B;IAVV,IAAI,GAAG,kCAAkC,CAAC;IAC1C,WAAW,GAClB,8DAA8D,CAAC;IAEjE;;;;OAIG;IACH,YACmB,kBAAiC,iBAAiB;QAAlD,oBAAe,GAAf,eAAe,CAAmC;IAClE,CAAC;IAEJ;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CAAC,GAAqB;QACjC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QACtD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvE,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAE3C,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;YAC/D,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAAE,SAAS;YAChD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAChD,IACE,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,CAAC,KAAK,MAAM,EACxE,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,KAAK,CAAC,GAAqB;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvE,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,OAAO,GAAgD,EAAE,CAAC;QAEhE,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACrD,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAAE,SAAS;YAChD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAChD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAC7B,MAAM,EACN,IAAI,EACJ,WAAW,EACX,eAAe,CAChB,CAAC;YACF,IAAI,KAAK,KAAK,MAAM;gBAAE,SAAS;YAC/B,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC7C,CAAC;QAED,MAAM,OAAO,GAAG,yCAAyC,WAAW,EAAE,CAAC;QACvE,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1D,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;QACvE,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAClD,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;IACvE,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,mBAAmB,CAC/B,UAAkB;QAElB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QACpD,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/C,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC1E,CAAC;IAED;;;;;;;;OAQG;IACK,YAAY,CAClB,MAAc,EACd,IAAqC,EACrC,WAAmB,EACnB,eAA8B;QAE9B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,MAAM,CAC3B,kDAAkD,QAAQ,6BAA6B,EACvF,GAAG,CACJ,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,WAAW,EAAE,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG,UAAU,KAAK,MAAM,CAAC;QAEzC,IAAI,IAAI,KAAK,wBAAwB,IAAI,UAAU,EAAE,CAAC;YACpD,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CACvC,yDAAyD,EACzD,MAAM,WAAW,yCAAyC,CAC3D,CAAC;YACF,OAAO,eAAe;gBACpB,CAAC,CAAC,cAAc,CAAC,OAAO,CACpB,+EAA+E,EAC/E,gCAAgC,eAAe,qCAAqC,CACrF;gBACH,CAAC,CAAC,cAAc,CAAC;QACrB,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
@@ -5,6 +5,7 @@ export { EnsureJestRnMockAccessibilityManagerMigration } from "./ensure-jest-rn-
5
5
  export { EnsureLearningsGitattributesMigration } from "./ensure-learnings-gitattributes.js";
6
6
  export { EnsureLearningsMergeDriverMigration } from "./ensure-learnings-merge-driver.js";
7
7
  export { EnsureLighthouseCollectOptionsMigration } from "./ensure-lighthouse-collect-options.js";
8
+ export { EnsureNightlyE2EWorkflowPinsMigration } from "./ensure-nightly-e2e-workflow-pins.js";
8
9
  export { EnsureLisaPostinstallMigration } from "./ensure-lisa-postinstall.js";
9
10
  export { EnsureOxlintBaseConfigsMigration } from "./ensure-oxlint-base-configs.js";
10
11
  export { EnsurePlaywrightDedicatedCallerMigration } from "./ensure-playwright-dedicated-caller.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAElC,YAAY,EACV,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,yCAAyC,EAAE,MAAM,2CAA2C,CAAC;AACtG,OAAO,EAAE,6CAA6C,EAAE,MAAM,gDAAgD,CAAC;AAC/G,OAAO,EAAE,qCAAqC,EAAE,MAAM,qCAAqC,CAAC;AAC5F,OAAO,EAAE,mCAAmC,EAAE,MAAM,oCAAoC,CAAC;AACzF,OAAO,EAAE,uCAAuC,EAAE,MAAM,wCAAwC,CAAC;AACjG,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,wCAAwC,EAAE,MAAM,yCAAyC,CAAC;AACnG,OAAO,EAAE,kCAAkC,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,uCAAuC,EAAE,MAAM,yCAAyC,CAAC;AAClG,OAAO,EAAE,yCAAyC,EAAE,MAAM,2CAA2C,CAAC;AACtG,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EAAE,oCAAoC,EAAE,MAAM,qCAAqC,CAAC;AAC3F,OAAO,EAAE,oCAAoC,EAAE,MAAM,qCAAqC,CAAC;AAC3F,OAAO,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AAElF;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAElD;;;OAGG;gBACS,UAAU,CAAC,EAAE,SAAS,SAAS,EAAE;IAqB7C;;;OAGG;IACH,MAAM,IAAI,SAAS,SAAS,EAAE;IAI9B;;;;OAIG;IACG,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/D;;;;OAIG;IACG,MAAM,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;CAazE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,iBAAiB,CAE3D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAElC,YAAY,EACV,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,yCAAyC,EAAE,MAAM,2CAA2C,CAAC;AACtG,OAAO,EAAE,6CAA6C,EAAE,MAAM,gDAAgD,CAAC;AAC/G,OAAO,EAAE,qCAAqC,EAAE,MAAM,qCAAqC,CAAC;AAC5F,OAAO,EAAE,mCAAmC,EAAE,MAAM,oCAAoC,CAAC;AACzF,OAAO,EAAE,uCAAuC,EAAE,MAAM,wCAAwC,CAAC;AACjG,OAAO,EAAE,qCAAqC,EAAE,MAAM,uCAAuC,CAAC;AAC9F,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,wCAAwC,EAAE,MAAM,yCAAyC,CAAC;AACnG,OAAO,EAAE,kCAAkC,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,uCAAuC,EAAE,MAAM,yCAAyC,CAAC;AAClG,OAAO,EAAE,yCAAyC,EAAE,MAAM,2CAA2C,CAAC;AACtG,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EAAE,oCAAoC,EAAE,MAAM,qCAAqC,CAAC;AAC3F,OAAO,EAAE,oCAAoC,EAAE,MAAM,qCAAqC,CAAC;AAC3F,OAAO,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AAElF;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAElD;;;OAGG;gBACS,UAAU,CAAC,EAAE,SAAS,SAAS,EAAE;IAsB7C;;;OAGG;IACH,MAAM,IAAI,SAAS,SAAS,EAAE;IAI9B;;;;OAIG;IACG,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/D;;;;OAIG;IACG,MAAM,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;CAazE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,iBAAiB,CAE3D"}
@@ -3,6 +3,7 @@ import { EnsureJestRnMockAccessibilityManagerMigration } from "./ensure-jest-rn-
3
3
  import { EnsureLearningsGitattributesMigration } from "./ensure-learnings-gitattributes.js";
4
4
  import { EnsureLearningsMergeDriverMigration } from "./ensure-learnings-merge-driver.js";
5
5
  import { EnsureLighthouseCollectOptionsMigration } from "./ensure-lighthouse-collect-options.js";
6
+ import { EnsureNightlyE2EWorkflowPinsMigration } from "./ensure-nightly-e2e-workflow-pins.js";
6
7
  import { EnsureLisaPostinstallMigration } from "./ensure-lisa-postinstall.js";
7
8
  import { EnsureOxlintBaseConfigsMigration } from "./ensure-oxlint-base-configs.js";
8
9
  import { EnsurePlaywrightDedicatedCallerMigration } from "./ensure-playwright-dedicated-caller.js";
@@ -19,6 +20,7 @@ export { EnsureJestRnMockAccessibilityManagerMigration } from "./ensure-jest-rn-
19
20
  export { EnsureLearningsGitattributesMigration } from "./ensure-learnings-gitattributes.js";
20
21
  export { EnsureLearningsMergeDriverMigration } from "./ensure-learnings-merge-driver.js";
21
22
  export { EnsureLighthouseCollectOptionsMigration } from "./ensure-lighthouse-collect-options.js";
23
+ export { EnsureNightlyE2EWorkflowPinsMigration } from "./ensure-nightly-e2e-workflow-pins.js";
22
24
  export { EnsureLisaPostinstallMigration } from "./ensure-lisa-postinstall.js";
23
25
  export { EnsureOxlintBaseConfigsMigration } from "./ensure-oxlint-base-configs.js";
24
26
  export { EnsurePlaywrightDedicatedCallerMigration } from "./ensure-playwright-dedicated-caller.js";
@@ -48,6 +50,7 @@ export class MigrationRegistry {
48
50
  new EnsureLearningsGitattributesMigration(),
49
51
  new EnsureLearningsMergeDriverMigration(),
50
52
  new EnsureLighthouseCollectOptionsMigration(),
53
+ new EnsureNightlyE2EWorkflowPinsMigration(),
51
54
  new EnsureLisaPostinstallMigration(),
52
55
  new EnsureOxlintBaseConfigsMigration(),
53
56
  new EnsurePlaywrightDedicatedCallerMigration(),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"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"}
@@ -205,7 +205,7 @@ module.exports = {
205
205
  ci: {
206
206
  collect: {
207
207
  ...collect,
208
- chromePath: process.env.CHROME_PATH || collect.chromePath || undefined,
208
+ chromePath: collect.chromePath || process.env.CHROME_PATH || undefined,
209
209
  },
210
210
 
211
211
  assert: {
package/package.json CHANGED
@@ -148,7 +148,7 @@
148
148
  "zod-validation-error": "^4.0.0"
149
149
  },
150
150
  "name": "@codyswann/lisa",
151
- "version": "4.8.0",
151
+ "version": "4.8.2",
152
152
  "description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
153
153
  "main": "dist/index.js",
154
154
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "4.8.0",
3
+ "version": "4.8.2",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "4.8.0",
3
+ "version": "4.8.2",
4
4
  "description": "Universal governance: agents, skills, commands, hooks, and rules for all projects.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "4.8.0",
3
+ "version": "4.8.2",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "4.8.0",
3
+ "version": "4.8.2",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "4.8.0",
3
+ "version": "4.8.2",
4
4
  "description": "AWS CDK-specific Lisa plugin.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "4.8.0",
3
+ "version": "4.8.2",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "4.8.0",
3
+ "version": "4.8.2",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "4.8.0",
3
+ "version": "4.8.2",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "4.8.0",
3
+ "version": "4.8.2",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "4.8.0",
3
+ "version": "4.8.2",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.8.0",
3
+ "version": "4.8.2",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.8.0",
3
+ "version": "4.8.2",
4
4
  "description": "Expo and React Native-specific skills, agents, rules, and MCP servers.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.8.0",
3
+ "version": "4.8.2",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.8.0",
3
+ "version": "4.8.2",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.8.0",
3
+ "version": "4.8.2",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.8.0",
3
+ "version": "4.8.2",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.8.0",
3
+ "version": "4.8.2",
4
4
  "description": "Harper/Fabric-specific Lisa rules for TypeScript component apps.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.8.0",
3
+ "version": "4.8.2",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.8.0",
3
+ "version": "4.8.2",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.8.0",
3
+ "version": "4.8.2",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.8.0",
3
+ "version": "4.8.2",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.8.0",
3
+ "version": "4.8.2",
4
4
  "description": "NestJS-specific skills and migration write-protection hooks.",
5
5
  "author": {
6
6
  "name": "Cody Swann"