@codyswann/lisa 4.3.3 → 4.3.4

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 (61) hide show
  1. package/dist/core/lisa-owned-templates.d.ts +25 -0
  2. package/dist/core/lisa-owned-templates.d.ts.map +1 -1
  3. package/dist/core/lisa-owned-templates.js +39 -0
  4. package/dist/core/lisa-owned-templates.js.map +1 -1
  5. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  6. package/dist/core/upstream-evidence-manifest.js +3 -0
  7. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  8. package/dist/strategies/copy-overwrite.d.ts.map +1 -1
  9. package/dist/strategies/copy-overwrite.js +29 -1
  10. package/dist/strategies/copy-overwrite.js.map +1 -1
  11. package/package.json +1 -1
  12. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  13. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  14. package/plugins/lisa-agy/plugin.json +1 -1
  15. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  16. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  17. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  18. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  19. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  20. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  21. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  22. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  23. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  24. package/plugins/lisa-expo-agy/plugin.json +1 -1
  25. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  26. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  27. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  28. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  29. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  30. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  31. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  32. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  33. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  34. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  35. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  36. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  37. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  38. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  39. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  40. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  41. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  43. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  44. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  45. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  46. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  48. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  49. package/plugins/lisa-rails-agy/plugin.json +1 -1
  50. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  51. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  52. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  53. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  54. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  55. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  59. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  60. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
@@ -65,4 +65,29 @@
65
65
  * @returns True when Lisa owns the file outright and may refresh it unprompted
66
66
  */
67
67
  export declare function isLisaOwnedTemplate(relativePath: string): boolean;
68
+ /**
69
+ * Whether a template declares, in its own text, that Lisa replaces it wholesale
70
+ * on every run.
71
+ *
72
+ * This is the third population, and it exists because owned/not-owned is not a
73
+ * fine enough cut. `eslint.config.ts` is not Lisa-owned by
74
+ * {@link isLisaOwnedTemplate} — no `lisa-` segment, not under `scripts/` — and
75
+ * it is nonetheless replaced every run by design, with its header saying so and
76
+ * pointing at `eslint.config.local.ts` for customisation.
77
+ *
78
+ * Before this predicate existed that contract was honoured only by accident: a
79
+ * non-owned file fell through to the prompt branch, and under `--yes` the
80
+ * prompter said yes. The same fall-through discarded curated `knip.json` and
81
+ * `tsconfig.json` content, which is the defect. Separating the two populations
82
+ * by the declaration the template already carries fixes the second without
83
+ * freezing the first — freezing it would be #2374's undeliverable-fix incident
84
+ * returning through the door opened to fix this.
85
+ *
86
+ * Read from the PACKAGED source rather than the installed copy. The declaration
87
+ * is Lisa's statement about its own file, so a host cannot opt out by deleting
88
+ * the sentence; `.lisaignore` is the sanctioned way to hold your own version.
89
+ * @param templateContents - Contents of the packaged template file
90
+ * @returns True when the template declares it is replaced on every run
91
+ */
92
+ export declare function declaresReplacedEveryRun(templateContents: string): boolean;
68
93
  //# sourceMappingURL=lisa-owned-templates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lisa-owned-templates.d.ts","sourceRoot":"","sources":["../../src/core/lisa-owned-templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAQH;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAQjE"}
1
+ {"version":3,"file":"lisa-owned-templates.d.ts","sourceRoot":"","sources":["../../src/core/lisa-owned-templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAQH;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAQjE;AAeD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,wBAAwB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAE1E"}
@@ -75,4 +75,43 @@ export function isLisaOwnedTemplate(relativePath) {
75
75
  .split("/")
76
76
  .some(segment => segment.startsWith(LISA_NAMESPACE_PREFIX)));
77
77
  }
78
+ /**
79
+ * The sentence a template uses to declare that Lisa replaces it on every run.
80
+ *
81
+ * Authored in the template itself, which is what makes it trustworthy: the file
82
+ * that says it is replaced is the file being replaced, so the declaration
83
+ * cannot drift away from the thing it describes the way an external roster can.
84
+ * 42 shipped templates carry it — `eslint.config.ts`, `vitest.config.ts`,
85
+ * `jest.config.ts`, `sgconfig.yml`, `lefthook.yml`, the ast-grep rule files —
86
+ * and each pairs it with the customisation surface a host is meant to use
87
+ * instead (`eslint.config.local.ts`, `*.thresholds.json`).
88
+ */
89
+ const REPLACED_EVERY_RUN_MARKER = "IS replaced on each";
90
+ /**
91
+ * Whether a template declares, in its own text, that Lisa replaces it wholesale
92
+ * on every run.
93
+ *
94
+ * This is the third population, and it exists because owned/not-owned is not a
95
+ * fine enough cut. `eslint.config.ts` is not Lisa-owned by
96
+ * {@link isLisaOwnedTemplate} — no `lisa-` segment, not under `scripts/` — and
97
+ * it is nonetheless replaced every run by design, with its header saying so and
98
+ * pointing at `eslint.config.local.ts` for customisation.
99
+ *
100
+ * Before this predicate existed that contract was honoured only by accident: a
101
+ * non-owned file fell through to the prompt branch, and under `--yes` the
102
+ * prompter said yes. The same fall-through discarded curated `knip.json` and
103
+ * `tsconfig.json` content, which is the defect. Separating the two populations
104
+ * by the declaration the template already carries fixes the second without
105
+ * freezing the first — freezing it would be #2374's undeliverable-fix incident
106
+ * returning through the door opened to fix this.
107
+ *
108
+ * Read from the PACKAGED source rather than the installed copy. The declaration
109
+ * is Lisa's statement about its own file, so a host cannot opt out by deleting
110
+ * the sentence; `.lisaignore` is the sanctioned way to hold your own version.
111
+ * @param templateContents - Contents of the packaged template file
112
+ * @returns True when the template declares it is replaced on every run
113
+ */
114
+ export function declaresReplacedEveryRun(templateContents) {
115
+ return templateContents.includes(REPLACED_EVERY_RUN_MARKER);
116
+ }
78
117
  //# sourceMappingURL=lisa-owned-templates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lisa-owned-templates.js","sourceRoot":"","sources":["../../src/core/lisa-owned-templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,2EAA2E;AAC3E,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAEtC,yEAAyE;AACzE,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAEpC;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,YAAoB;IACtD,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACtD,OAAO,CACL,UAAU,CAAC,UAAU,CAAC,gBAAgB,CAAC;QACvC,UAAU;aACP,KAAK,CAAC,GAAG,CAAC;aACV,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,CAC9D,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"lisa-owned-templates.js","sourceRoot":"","sources":["../../src/core/lisa-owned-templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,2EAA2E;AAC3E,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAEtC,yEAAyE;AACzE,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAEpC;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,YAAoB;IACtD,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACtD,OAAO,CACL,UAAU,CAAC,UAAU,CAAC,gBAAgB,CAAC;QACvC,UAAU;aACP,KAAK,CAAC,GAAG,CAAC;aACV,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,CAC9D,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,yBAAyB,GAAG,qBAAqB,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,wBAAwB,CAAC,gBAAwB;IAC/D,OAAO,gBAAgB,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;AAC9D,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,CAs4EpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CA6iPjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,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,CAs4EpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAgjPjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
@@ -8010,6 +8010,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
8010
8010
  "tests/unit/core/learnings-writer.test.ts": true,
8011
8011
  "tests/unit/core/lisa-owned-enforcement-scripts.test.ts": true,
8012
8012
  "tests/unit/core/lisa-owned-provenance.test.ts": true,
8013
+ "tests/unit/core/lisa-owned-templates-classification.test.ts": true,
8013
8014
  "tests/unit/core/lisa-owned-templates.test.ts": true,
8014
8015
  "tests/unit/core/lisa-plugin-selection.test.ts": true,
8015
8016
  "tests/unit/core/lisa-skill-sources.test.ts": true,
@@ -8022,6 +8023,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
8022
8023
  "tests/unit/core/self-apply.test.ts": true,
8023
8024
  "tests/unit/core/skill-frontmatter-contract.test.ts": true,
8024
8025
  "tests/unit/core/sonar-integration.test.ts": true,
8026
+ "tests/unit/core/update-skill-apply-mode.test.ts": true,
8025
8027
  "tests/unit/core/upstream-attribution-body-hardening.test.ts": true,
8026
8028
  "tests/unit/core/upstream-attribution-body.test.ts": true,
8027
8029
  "tests/unit/core/upstream-attribution-file-safety.test.ts": true,
@@ -8411,6 +8413,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
8411
8413
  "tests/unit/strategies/copy-overwrite-prompted-downgrade.test.ts": true,
8412
8414
  "tests/unit/strategies/copy-overwrite-refresh-templates.test.ts": true,
8413
8415
  "tests/unit/strategies/copy-overwrite-unattended-consent.test.ts": true,
8416
+ "tests/unit/strategies/copy-overwrite-yes-preserves-curated.test.ts": true,
8414
8417
  "tests/unit/strategies/copy-overwrite.test.ts": true,
8415
8418
  "tests/unit/strategies/create-only.test.ts": true,
8416
8419
  "tests/unit/strategies/credential-substrate-precedence.test.ts": true,