@codyswann/lisa 2.351.0 → 2.353.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.
Files changed (205) hide show
  1. package/all/copy-overwrite/scripts/lisa-hooks/block-instruction-file-edits.sh +1 -1
  2. package/all/copy-overwrite/scripts/lisa-hooks/block-shell-json-parsing.sh +1 -1
  3. package/all/create-only/.agents/rules/README.md +45 -0
  4. package/dist/cli/doctor-lisa-owned-artifacts.d.ts +18 -0
  5. package/dist/cli/doctor-lisa-owned-artifacts.d.ts.map +1 -0
  6. package/dist/cli/doctor-lisa-owned-artifacts.js +129 -0
  7. package/dist/cli/doctor-lisa-owned-artifacts.js.map +1 -0
  8. package/dist/cli/doctor.d.ts.map +1 -1
  9. package/dist/cli/doctor.js +2 -0
  10. package/dist/cli/doctor.js.map +1 -1
  11. package/dist/codex/scripts/_extract-edit-paths.sh +1 -1
  12. package/dist/codex/scripts/format-on-edit.sh +1 -1
  13. package/dist/codex/scripts/lint-on-edit.sh +1 -1
  14. package/dist/codex/scripts/rubocop-on-edit.sh +1 -1
  15. package/dist/codex/scripts/sg-scan-on-edit.sh +1 -1
  16. package/dist/configs/eslint/cdk.js +2 -2
  17. package/dist/configs/eslint/cdk.js.map +1 -1
  18. package/dist/configs/eslint/nestjs.js +2 -2
  19. package/dist/configs/eslint/nestjs.js.map +1 -1
  20. package/dist/configs/eslint/typescript.js +2 -2
  21. package/dist/configs/eslint/typescript.js.map +1 -1
  22. package/dist/core/host-rules-pointer.d.ts +33 -0
  23. package/dist/core/host-rules-pointer.d.ts.map +1 -0
  24. package/dist/core/host-rules-pointer.js +115 -0
  25. package/dist/core/host-rules-pointer.js.map +1 -0
  26. package/dist/core/instruction-files-migration.d.ts +3 -2
  27. package/dist/core/instruction-files-migration.d.ts.map +1 -1
  28. package/dist/core/instruction-files-migration.js +62 -64
  29. package/dist/core/instruction-files-migration.js.map +1 -1
  30. package/dist/core/learnings.d.ts +1 -1
  31. package/dist/core/learnings.d.ts.map +1 -1
  32. package/dist/core/learnings.js +1 -1
  33. package/dist/core/learnings.js.map +1 -1
  34. package/dist/core/lisa-owned-templates.d.ts +34 -0
  35. package/dist/core/lisa-owned-templates.d.ts.map +1 -0
  36. package/dist/core/lisa-owned-templates.js +41 -0
  37. package/dist/core/lisa-owned-templates.js.map +1 -0
  38. package/dist/core/lisa.d.ts.map +1 -1
  39. package/dist/core/lisa.js +5 -1
  40. package/dist/core/lisa.js.map +1 -1
  41. package/dist/core/project-config.d.ts +39 -9
  42. package/dist/core/project-config.d.ts.map +1 -1
  43. package/dist/core/project-config.js +37 -10
  44. package/dist/core/project-config.js.map +1 -1
  45. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  46. package/dist/core/upstream-evidence-manifest.js +42 -26
  47. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  48. package/dist/opencode/plugin-templates/lisa-block-instruction-file-edits.ts +1 -1
  49. package/dist/strategies/copy-overwrite.d.ts +13 -6
  50. package/dist/strategies/copy-overwrite.d.ts.map +1 -1
  51. package/dist/strategies/copy-overwrite.js +16 -7
  52. package/dist/strategies/copy-overwrite.js.map +1 -1
  53. package/dist/sync/registry.d.ts.map +1 -1
  54. package/dist/sync/registry.js +0 -6
  55. package/dist/sync/registry.js.map +1 -1
  56. package/expo/create-only/.github/workflows/maestro-e2e.yml +10 -1
  57. package/expo/create-only/.github/workflows/nightly-e2e-health.yml +5 -0
  58. package/package.json +1 -1
  59. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  60. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  61. package/plugins/lisa/.codex-plugin/skills/lisa-debrief/SKILL.md +1 -1
  62. package/plugins/lisa/.codex-plugin/skills/lisa-debrief-apply/SKILL.md +3 -3
  63. package/plugins/lisa/.codex-plugin/skills/lisa-doctor/SKILL.md +4 -1
  64. package/plugins/lisa/.codex-plugin/skills/lisa-improve-harness/SKILL.md +2 -2
  65. package/plugins/lisa/.codex-plugin/skills/lisa-learnings-audit/SKILL.md +6 -3
  66. package/plugins/lisa/.codex-plugin/skills/lisa-linear-access/SKILL.md +34 -0
  67. package/plugins/lisa/.codex-plugin/skills/lisa-validate-tracker-mapping/SKILL.md +33 -4
  68. package/plugins/lisa/agents/learnings-synthesizer.md +1 -1
  69. package/plugins/lisa/agents/skill-evaluator.md +1 -1
  70. package/plugins/lisa/hooks/block-instruction-file-edits.sh +1 -1
  71. package/plugins/lisa/hooks/block-shell-json-parsing.sh +1 -1
  72. package/plugins/lisa/rules/eager/config-resolution.md +6 -3
  73. package/plugins/lisa/rules/eager/project-learnings.md +3 -2
  74. package/plugins/lisa/rules/reference/config-resolution.md +17 -2
  75. package/plugins/lisa/rules/reference/intent-routing.md +1 -1
  76. package/plugins/lisa/rules/reference/project-learnings.md +6 -4
  77. package/plugins/lisa/rules/reference/promotion-contract.md +2 -1
  78. package/plugins/lisa/scripts/queue-contract-resolution.mjs +50 -1
  79. package/plugins/lisa/skills/lisa-debrief/SKILL.md +1 -1
  80. package/plugins/lisa/skills/lisa-debrief-apply/SKILL.md +3 -3
  81. package/plugins/lisa/skills/lisa-doctor/SKILL.md +4 -1
  82. package/plugins/lisa/skills/lisa-improve-harness/SKILL.md +2 -2
  83. package/plugins/lisa/skills/lisa-learnings-audit/SKILL.md +6 -3
  84. package/plugins/lisa/skills/lisa-linear-access/SKILL.md +34 -0
  85. package/plugins/lisa/skills/lisa-validate-tracker-mapping/SKILL.md +33 -4
  86. package/plugins/lisa-agy/agents/learnings-synthesizer.md +1 -1
  87. package/plugins/lisa-agy/agents/skill-evaluator.md +1 -1
  88. package/plugins/lisa-agy/hooks/block-instruction-file-edits.sh +1 -1
  89. package/plugins/lisa-agy/hooks/block-shell-json-parsing.sh +1 -1
  90. package/plugins/lisa-agy/plugin.json +1 -1
  91. package/plugins/lisa-agy/scripts/queue-contract-resolution.mjs +50 -1
  92. package/plugins/lisa-agy/skills/lisa-debrief/SKILL.md +1 -1
  93. package/plugins/lisa-agy/skills/lisa-debrief-apply/SKILL.md +3 -3
  94. package/plugins/lisa-agy/skills/lisa-doctor/SKILL.md +4 -1
  95. package/plugins/lisa-agy/skills/lisa-improve-harness/SKILL.md +2 -2
  96. package/plugins/lisa-agy/skills/lisa-learnings-audit/SKILL.md +6 -3
  97. package/plugins/lisa-agy/skills/lisa-linear-access/SKILL.md +34 -0
  98. package/plugins/lisa-agy/skills/lisa-validate-tracker-mapping/SKILL.md +33 -4
  99. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  100. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  101. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  102. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  103. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  104. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  105. package/plugins/lisa-copilot/agents/learnings-synthesizer.agent.md +1 -1
  106. package/plugins/lisa-copilot/agents/skill-evaluator.agent.md +1 -1
  107. package/plugins/lisa-copilot/hooks/block-instruction-file-edits.sh +1 -1
  108. package/plugins/lisa-copilot/hooks/block-shell-json-parsing.sh +1 -1
  109. package/plugins/lisa-copilot/rules/eager/config-resolution.md +6 -3
  110. package/plugins/lisa-copilot/rules/eager/project-learnings.md +3 -2
  111. package/plugins/lisa-copilot/rules/reference/config-resolution.md +17 -2
  112. package/plugins/lisa-copilot/rules/reference/intent-routing.md +1 -1
  113. package/plugins/lisa-copilot/rules/reference/project-learnings.md +6 -4
  114. package/plugins/lisa-copilot/rules/reference/promotion-contract.md +2 -1
  115. package/plugins/lisa-copilot/scripts/queue-contract-resolution.mjs +50 -1
  116. package/plugins/lisa-copilot/skills/lisa-debrief/SKILL.md +1 -1
  117. package/plugins/lisa-copilot/skills/lisa-debrief-apply/SKILL.md +3 -3
  118. package/plugins/lisa-copilot/skills/lisa-doctor/SKILL.md +4 -1
  119. package/plugins/lisa-copilot/skills/lisa-improve-harness/SKILL.md +2 -2
  120. package/plugins/lisa-copilot/skills/lisa-learnings-audit/SKILL.md +6 -3
  121. package/plugins/lisa-copilot/skills/lisa-linear-access/SKILL.md +34 -0
  122. package/plugins/lisa-copilot/skills/lisa-validate-tracker-mapping/SKILL.md +33 -4
  123. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  124. package/plugins/lisa-cursor/agents/learnings-synthesizer.md +1 -1
  125. package/plugins/lisa-cursor/agents/skill-evaluator.md +1 -1
  126. package/plugins/lisa-cursor/hooks/block-instruction-file-edits.sh +1 -1
  127. package/plugins/lisa-cursor/hooks/block-shell-json-parsing.sh +1 -1
  128. package/plugins/lisa-cursor/rules/config-resolution-reference.mdc +17 -2
  129. package/plugins/lisa-cursor/rules/config-resolution.mdc +6 -3
  130. package/plugins/lisa-cursor/rules/intent-routing-reference.mdc +1 -1
  131. package/plugins/lisa-cursor/rules/project-learnings-reference.mdc +6 -4
  132. package/plugins/lisa-cursor/rules/project-learnings.mdc +3 -2
  133. package/plugins/lisa-cursor/rules/promotion-contract-reference.mdc +2 -1
  134. package/plugins/lisa-cursor/scripts/queue-contract-resolution.mjs +50 -1
  135. package/plugins/lisa-cursor/skills/lisa-debrief/SKILL.md +1 -1
  136. package/plugins/lisa-cursor/skills/lisa-debrief-apply/SKILL.md +3 -3
  137. package/plugins/lisa-cursor/skills/lisa-doctor/SKILL.md +4 -1
  138. package/plugins/lisa-cursor/skills/lisa-improve-harness/SKILL.md +2 -2
  139. package/plugins/lisa-cursor/skills/lisa-learnings-audit/SKILL.md +6 -3
  140. package/plugins/lisa-cursor/skills/lisa-linear-access/SKILL.md +34 -0
  141. package/plugins/lisa-cursor/skills/lisa-validate-tracker-mapping/SKILL.md +33 -4
  142. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  143. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  144. package/plugins/lisa-expo-agy/plugin.json +1 -1
  145. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  146. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  147. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  148. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  149. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  150. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  151. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  152. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  153. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  154. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  155. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  156. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  157. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  158. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  159. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  160. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  161. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  162. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  163. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  164. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  165. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  166. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  167. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  168. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  169. package/plugins/lisa-rails-agy/plugin.json +1 -1
  170. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  171. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  172. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  173. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  174. package/plugins/lisa-typescript/hooks/block-suppress-directives.sh +1 -1
  175. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  176. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  177. package/plugins/lisa-typescript-copilot/hooks/block-suppress-directives.sh +1 -1
  178. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  179. package/plugins/lisa-typescript-cursor/hooks/block-suppress-directives.sh +1 -1
  180. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  181. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  182. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  183. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  184. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  185. package/plugins/src/base/agents/learnings-synthesizer.md +1 -1
  186. package/plugins/src/base/agents/skill-evaluator.md +1 -1
  187. package/plugins/src/base/hooks/block-instruction-file-edits.sh +1 -1
  188. package/plugins/src/base/hooks/block-shell-json-parsing.sh +1 -1
  189. package/plugins/src/base/rules/eager/config-resolution.md +6 -3
  190. package/plugins/src/base/rules/eager/project-learnings.md +3 -2
  191. package/plugins/src/base/rules/reference/config-resolution.md +17 -2
  192. package/plugins/src/base/rules/reference/intent-routing.md +1 -1
  193. package/plugins/src/base/rules/reference/project-learnings.md +6 -4
  194. package/plugins/src/base/rules/reference/promotion-contract.md +2 -1
  195. package/plugins/src/base/scripts/queue-contract-resolution.mjs +50 -1
  196. package/plugins/src/base/skills/lisa-debrief/SKILL.md +1 -1
  197. package/plugins/src/base/skills/lisa-debrief-apply/SKILL.md +3 -3
  198. package/plugins/src/base/skills/lisa-doctor/SKILL.md +4 -1
  199. package/plugins/src/base/skills/lisa-improve-harness/SKILL.md +2 -2
  200. package/plugins/src/base/skills/lisa-learnings-audit/SKILL.md +6 -3
  201. package/plugins/src/base/skills/lisa-linear-access/SKILL.md +34 -0
  202. package/plugins/src/base/skills/lisa-validate-tracker-mapping/SKILL.md +33 -4
  203. package/plugins/src/typescript/hooks/block-suppress-directives.sh +1 -1
  204. package/typescript/copy-overwrite/scripts/check-nightly-e2e-health.mjs +76 -10
  205. package/all/create-only/.claude/rules/PROJECT_RULES.md +0 -17
@@ -117,7 +117,7 @@ WHERE IT GOES INSTEAD — take the first one that fits:
117
117
  That is a project rule — but do not write it yourself. Capture it with
118
118
  \`/lisa:persist-learning\` so it lands in the learnings ledger with provenance
119
119
  and a confidence score. The gardener (\`/lisa:learnings:audit\`) then proposes
120
- promotion into \`.claude/rules/PROJECT_RULES.md\` as a human-gated ticket.
120
+ promotion into the host-rules directory \`.agents/rules/\` as a human-gated ticket.
121
121
 
122
122
  2. It changes how an existing skill should behave. Edit that skill's SKILL.md.
123
123
  Knowledge belongs next to the procedure it modifies, not in a global preamble.
@@ -3,7 +3,7 @@
3
3
  # Text tools (grep/sed/cut/awk) break on valid JSON — multiline values, escaped
4
4
  # quotes, reordered keys, nested objects — producing silently wrong output
5
5
  # instead of errors. jq is the required tool for structural JSON reads and
6
- # writes in shell. Promoted from PROJECT_RULES.md prose to an executable
6
+ # writes in shell. Promoted from host-rules prose to an executable
7
7
  # control by the learnings gardener (issue #1787).
8
8
  #
9
9
  # Precision-first: this hook fires only on high-confidence STRUCTURAL parsing
@@ -0,0 +1,45 @@
1
+ # Host Rules
2
+
3
+ This directory holds **this project's** durable operating rules. One directory,
4
+ every coding agent — Claude Code, Codex, Cursor, OpenCode, Copilot, and
5
+ Antigravity (`agy`) all reach it through the Lisa-managed pointer block in
6
+ `AGENTS.md`.
7
+
8
+ ## Ownership
9
+
10
+ This directory is **human-authored only** — the humans' decree surface. Lisa
11
+ never writes rule bodies into it, and never edits or deletes a file in it.
12
+
13
+ - Lisa's own rules live in its per-agent plugins and arrive by their own route.
14
+ Do not copy them here.
15
+ - Machine-captured learnings do **not** belong here either. They land in the
16
+ learnings ledger (`.lisa/PROJECT_LEARNINGS.md` by default) through the
17
+ executable contract, and only the gardener (`/lisa:learnings:audit`) ever
18
+ proposes a promotion out of it — as a human-gated tracker ticket, never a
19
+ silent agent rewrite.
20
+ - Rules already sitting here are first-run gardener candidates like any other
21
+ knowledge: expect prose that restates what a lint rule or hook already
22
+ enforces to earn a promote-and-delete ticket, so this directory shrinks
23
+ instead of growing.
24
+
25
+ ## What belongs here
26
+
27
+ Short, always-relevant operating rules — the things an agent must know before it
28
+ starts work, that no lint rule or hook already enforces.
29
+
30
+ What does **not** belong here:
31
+
32
+ - Prose restating a lint rule, hook, or CI gate. Enforce it in the tool instead.
33
+ - Deep codebase or domain knowledge. That belongs in the project wiki, queried
34
+ on demand.
35
+ - Bug reports, to-do lists, or design notes. Those belong in the tracker.
36
+
37
+ ## How to add one
38
+
39
+ Create a Markdown file per topic (for example `deploys.md`, `data-migrations.md`)
40
+ with a heading and a handful of imperative rules. Keep each file short: this
41
+ directory is read in full whenever an agent consults it, so length is a real
42
+ cost paid on every consultation.
43
+
44
+ This README is a Lisa-seeded starter and is never overwritten — edit or delete
45
+ it freely once the directory has real content.
@@ -0,0 +1,18 @@
1
+ /** One doctor check result, structurally identical to `DoctorCheck`. */
2
+ interface ArtifactCheck {
3
+ name: string;
4
+ status: "ok" | "warn" | "fail";
5
+ detail: string;
6
+ }
7
+ /**
8
+ * Report Lisa-owned enforcement artifacts the project has an outdated copy of.
9
+ *
10
+ * Only artifacts the project already has are considered: a missing one means
11
+ * the stack does not apply here, not that something drifted.
12
+ * @param targetPath - Project path to inspect
13
+ * @param lisaRoot - Installed Lisa package root (injected by tests)
14
+ * @returns Doctor check result
15
+ */
16
+ export declare function checkLisaOwnedArtifacts(targetPath: string, lisaRoot?: string): Promise<ArtifactCheck>;
17
+ export {};
18
+ //# sourceMappingURL=doctor-lisa-owned-artifacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-lisa-owned-artifacts.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-lisa-owned-artifacts.ts"],"names":[],"mappings":"AAkCA,wEAAwE;AACxE,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAoFD;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,MAA0B,GACnC,OAAO,CAAC,aAAa,CAAC,CA2CxB"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Doctor check: is this project running the enforcement guards it shipped with,
3
+ * or an older copy?
4
+ *
5
+ * Apply now refreshes Lisa-owned artifacts on a version bump, so in the normal
6
+ * case this check is quiet. It exists because the fleet had no way to notice the
7
+ * abnormal case. Before the apply fix, a project could sit for months on a guard
8
+ * with a known fail-open hole and nothing anywhere said so — not the apply
9
+ * summary, not doctor, not CI. It can still happen: a project that pinned an old
10
+ * Lisa, or listed the path in `.lisaignore`, or never re-applied after upgrading,
11
+ * keeps whatever it has. This turns that silence into one warn line naming the
12
+ * files.
13
+ *
14
+ * Warn, not fail: a stale guard is a real hole, but the remedy is one command,
15
+ * and failing doctor would redden CI in every repo mid-upgrade.
16
+ * @module cli/doctor-lisa-owned-artifacts
17
+ */
18
+ import { readFile } from "node:fs/promises";
19
+ import * as path from "node:path";
20
+ import { fileURLToPath } from "node:url";
21
+ import * as fse from "fs-extra";
22
+ import { PROJECT_TYPE_ORDER } from "../core/config.js";
23
+ import { isLisaOwnedTemplate } from "../core/lisa-owned-templates.js";
24
+ import { listFilesRecursive } from "../utils/file-operations.js";
25
+ import { matchesAnyPattern, parseIgnorePatterns, } from "../utils/ignore-patterns.js";
26
+ const CHECK_NAME = "Lisa enforcement artifacts current?";
27
+ const COPY_OVERWRITE = "copy-overwrite";
28
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
29
+ /**
30
+ * Resolve the installed Lisa package root, mirroring how apply resolves it.
31
+ * @returns Absolute path to the Lisa package root
32
+ */
33
+ function defaultLisaRoot() {
34
+ return path.resolve(__dirname, "..", "..");
35
+ }
36
+ /**
37
+ * List the Lisa-owned artifacts one stack's copy-overwrite tree ships.
38
+ * @param lisaRoot - Installed Lisa package root
39
+ * @param type - Stack directory name
40
+ * @returns Destination/source pairs shipped by that stack
41
+ */
42
+ async function shippedByStack(lisaRoot, type) {
43
+ const directory = path.join(lisaRoot, type, COPY_OVERWRITE);
44
+ if (!(await fse.pathExists(directory)))
45
+ return [];
46
+ return (await listFilesRecursive(directory))
47
+ .map(source => [
48
+ path.relative(directory, source).split(path.sep).join("/"),
49
+ source,
50
+ ])
51
+ .filter(([destination]) => isLisaOwnedTemplate(destination));
52
+ }
53
+ /**
54
+ * Collect every shipped Lisa-owned artifact, keyed by its destination path.
55
+ *
56
+ * A destination can be shipped by more than one stack; all shipped variants are
57
+ * kept so the comparison can accept whichever one the project actually has,
58
+ * rather than guessing which stack won at apply time.
59
+ * @param lisaRoot - Installed Lisa package root
60
+ * @returns Destination path to the shipped source files that produce it
61
+ */
62
+ async function shippedArtifacts(lisaRoot) {
63
+ const shipped = (await Promise.all(["all", ...PROJECT_TYPE_ORDER].map(async (type) => shippedByStack(lisaRoot, type)))).flat();
64
+ const destinations = [
65
+ ...new Set(shipped.map(([destination]) => destination)),
66
+ ];
67
+ return new Map(destinations.map(destination => [
68
+ destination,
69
+ shipped
70
+ .filter(([candidate]) => candidate === destination)
71
+ .map(([, source]) => source),
72
+ ]));
73
+ }
74
+ /**
75
+ * Whether the installed file matches any shipped variant of that artifact.
76
+ * @param installed - Bytes currently installed in the project
77
+ * @param sources - Absolute paths of the shipped variants
78
+ * @returns True when the project is running a shipped version
79
+ */
80
+ async function matchesAnyShipped(installed, sources) {
81
+ const shipped = await Promise.all(sources.map(async (source) => readFile(source)));
82
+ return shipped.some(candidate => installed.equals(candidate));
83
+ }
84
+ /**
85
+ * Report Lisa-owned enforcement artifacts the project has an outdated copy of.
86
+ *
87
+ * Only artifacts the project already has are considered: a missing one means
88
+ * the stack does not apply here, not that something drifted.
89
+ * @param targetPath - Project path to inspect
90
+ * @param lisaRoot - Installed Lisa package root (injected by tests)
91
+ * @returns Doctor check result
92
+ */
93
+ export async function checkLisaOwnedArtifacts(targetPath, lisaRoot = defaultLisaRoot()) {
94
+ const shipped = await shippedArtifacts(lisaRoot);
95
+ if (shipped.size === 0) {
96
+ return {
97
+ name: CHECK_NAME,
98
+ status: "ok",
99
+ detail: "No Lisa-owned enforcement artifacts are shipped",
100
+ };
101
+ }
102
+ const ignoreText = await readFile(path.join(targetPath, ".lisaignore"), "utf8").catch(() => "");
103
+ const ignorePatterns = parseIgnorePatterns(ignoreText);
104
+ const results = await Promise.all([...shipped].map(async ([destination, sources]) => {
105
+ if (matchesAnyPattern(destination, ignorePatterns))
106
+ return undefined;
107
+ const installed = await readFile(path.join(targetPath, destination)).catch(() => undefined);
108
+ if (installed === undefined)
109
+ return undefined;
110
+ return (await matchesAnyShipped(installed, sources))
111
+ ? undefined
112
+ : destination;
113
+ }));
114
+ const stale = results
115
+ .filter((item) => item !== undefined)
116
+ .sort((left, right) => left.localeCompare(right));
117
+ return stale.length === 0
118
+ ? {
119
+ name: CHECK_NAME,
120
+ status: "ok",
121
+ detail: "Enforcement guards match the installed Lisa version",
122
+ }
123
+ : {
124
+ name: CHECK_NAME,
125
+ status: "warn",
126
+ detail: `Outdated Lisa-owned guards (run \`npx lisa apply .\` to refresh): ${stale.join(", ")}`,
127
+ };
128
+ }
129
+ //# sourceMappingURL=doctor-lisa-owned-artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-lisa-owned-artifacts.js","sourceRoot":"","sources":["../../src/cli/doctor-lisa-owned-artifacts.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAUnE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,mDAAmD;AACnD,KAAK,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAO3C,oCAAoC;AACpC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,sCAAsC;AACtC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wCAAwC;AACxC,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,OAAO,KAAK,CAAC;IACxB,cAAc,EAAE,OAAO,cAAc,CAAC;IACtC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;IAC9C,mBAAmB,EAAE,OAAO,mBAAmB,CAAC;CACjD;AAaD;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,EAChD,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,WAAW,CAAC,CAyBtB;AA4MD;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,aAAa,EACtB,YAAY,GAAE,OAAO,CAAC,kBAAkB,CAAM,GAC7C,OAAO,CAAC,YAAY,CAAC,CA4CvB"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAWnE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,mDAAmD;AACnD,KAAK,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAO3C,oCAAoC;AACpC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,sCAAsC;AACtC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wCAAwC;AACxC,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,OAAO,KAAK,CAAC;IACxB,cAAc,EAAE,OAAO,cAAc,CAAC;IACtC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;IAC9C,mBAAmB,EAAE,OAAO,mBAAmB,CAAC;CACjD;AAaD;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,EAChD,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,WAAW,CAAC,CAyBtB;AA4MD;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,aAAa,EACtB,YAAY,GAAE,OAAO,CAAC,kBAAkB,CAAM,GAC7C,OAAO,CAAC,YAAY,CAAC,CA6CvB"}
@@ -11,6 +11,7 @@ import { checkKaneProvider } from "./doctor-kane.js";
11
11
  import { checkLearningsLedger } from "./doctor-learnings-ledger.js";
12
12
  import { checkSonarProvider } from "./doctor-sonar.js";
13
13
  import { checkLegacyCodexOverlay } from "./doctor-legacy-overlay.js";
14
+ import { checkLisaOwnedArtifacts } from "./doctor-lisa-owned-artifacts.js";
14
15
  import { checkLegacyMonitorThresholds } from "./doctor-monitor-thresholds.js";
15
16
  import { checkRepositoryReadiness } from "./doctor-readiness.js";
16
17
  import { checkWorkerEpoch } from "./doctor-worker-epoch.js";
@@ -253,6 +254,7 @@ export async function runDoctor(targetPath, options, dependencies = {}) {
253
254
  await checkKaneProvider(resolvedTarget, deps),
254
255
  await checkSonarProvider(resolvedTarget, deps),
255
256
  await checkLegacyMonitorThresholds(resolvedTarget),
257
+ await checkLisaOwnedArtifacts(resolvedTarget),
256
258
  await checkProjectType(resolvedTarget),
257
259
  await checkInstructionFiles(resolvedTarget),
258
260
  // Runs AFTER the instruction-files check because that check performs the
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,7 @@ lisa_extract_edit_paths() {
35
35
  patch_text="$(printf '%s' "$json" | jq -r '.tool_input.command // empty')"
36
36
  [ -n "$patch_text" ] || return 0
37
37
  # Walk the patch line-by-line with bash-native string ops (NOT grep/sed on
38
- # JSON — see .claude/rules/PROJECT_RULES.md) to pull out every file header.
38
+ # JSON — see the host rules in .agents/rules/) to pull out every file header.
39
39
  while IFS= read -r line; do
40
40
  case "$line" in
41
41
  "*** Add File: "* | "*** Update File: "* | "*** Delete File: "*)
@@ -7,7 +7,7 @@ set -uo pipefail
7
7
 
8
8
  JSON_INPUT="$(cat)"
9
9
 
10
- # Project rule (.claude/rules/PROJECT_RULES.md): never parse JSON in shell
10
+ # Project rule (host rules, .agents/rules/): never parse JSON in shell
11
11
  # with grep/sed/cut/awk — always use jq. Fail open without jq so we don't
12
12
  # block the agent on missing tooling.
13
13
  command -v jq >/dev/null 2>&1 || exit 0
@@ -7,7 +7,7 @@ set -uo pipefail
7
7
 
8
8
  JSON_INPUT="$(cat)"
9
9
 
10
- # Project rule (.claude/rules/PROJECT_RULES.md): never parse JSON in shell
10
+ # Project rule (host rules, .agents/rules/): never parse JSON in shell
11
11
  # with grep/sed/cut/awk — always use jq. Fail open without jq.
12
12
  command -v jq >/dev/null 2>&1 || exit 0
13
13
 
@@ -8,7 +8,7 @@ set -uo pipefail
8
8
 
9
9
  JSON_INPUT="$(cat)"
10
10
 
11
- # Project rule (.claude/rules/PROJECT_RULES.md): never parse JSON in shell
11
+ # Project rule (host rules, .agents/rules/): never parse JSON in shell
12
12
  # with grep/sed/cut/awk — always use jq. Fail open without jq.
13
13
  command -v jq >/dev/null 2>&1 || exit 0
14
14
 
@@ -8,7 +8,7 @@ set -uo pipefail
8
8
 
9
9
  JSON_INPUT="$(cat)"
10
10
 
11
- # Project rule (.claude/rules/PROJECT_RULES.md): never parse JSON in shell
11
+ # Project rule (host rules, .agents/rules/): never parse JSON in shell
12
12
  # with grep/sed/cut/awk — always use jq. Fail open without jq.
13
13
  command -v jq >/dev/null 2>&1 || exit 0
14
14
 
@@ -53,12 +53,12 @@ export function getCdkConfig({ tsconfigRootDir, ignorePatterns = cdkIgnores, thr
53
53
  "code-organization/enforce-statement-order": "error",
54
54
  // Configuration enforcement - prevent direct process.env access
55
55
  // All configuration should go through config module
56
- // @see .claude/rules/PROJECT_RULES.md
56
+ // @see the host rules in .agents/rules/
57
57
  "no-restricted-syntax": [
58
58
  "error",
59
59
  {
60
60
  selector: "MemberExpression[object.name='process'][property.name='env']",
61
- message: "Direct process.env access is forbidden. Use config module for type-safe configuration. See .claude/rules/PROJECT_RULES.md.",
61
+ message: "Direct process.env access is forbidden. Use config module for type-safe configuration. See the host rules in .agents/rules/.",
62
62
  },
63
63
  ],
64
64
  // CDK uses classes for constructs and stacks
@@ -1 +1 @@
1
- {"version":3,"file":"cdk.js","sourceRoot":"","sources":["../../../src/configs/eslint/cdk.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E;;;;;;;;;;;;;GAaG;AAEH,yCAAyC;AACzC,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,mCAAmC;AACnC,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,cAAc,GACf,CAAC;AAEF,uBAAuB;AACvB,MAAM,UAAU,GAAG;IACjB,GAAG,cAAc;IACjB,YAAY;IACZ,MAAM,EAAE,yBAAyB;IACjC,QAAQ;CACT,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,EAC3B,eAAe,EACf,cAAc,GAAG,UAAU,EAC3B,UAAU,GAAG,iBAAiB,GAK/B;IACC,OAAO;QACL,iBAAiB;QACjB;YACE,OAAO,EAAE,cAAc;SACxB;QAED,yCAAyC;QACzC,GAAG,cAAc,EAAE;QAEnB,mCAAmC;QACnC;YACE,eAAe,EAAE,sBAAsB,EAAE;YACzC,OAAO,EAAE;gBACP,mBAAmB,EAAE,gBAAgB;aACtC;YACD,KAAK,EAAE;gBACL,yBAAyB;gBACzB,GAAG,cAAc,CAAC,UAAU,CAAC;gBAE7B,oBAAoB;gBACpB,2CAA2C,EAAE,OAAO;gBAEpD,gEAAgE;gBAChE,oDAAoD;gBACpD,sCAAsC;gBACtC,sBAAsB,EAAE;oBACtB,OAAO;oBACP;wBACE,QAAQ,EACN,8DAA8D;wBAChE,OAAO,EACL,4HAA4H;qBAC/H;iBACF;gBAED,6CAA6C;gBAC7C,uBAAuB,EAAE,KAAK;gBAE9B,kDAAkD;gBAClD,qBAAqB,EAAE;oBACrB,OAAO;oBACP;wBACE,OAAO,EAAE;4BACP,mBAAmB,EAAE,IAAI;4BACzB,gBAAgB,EAAE,IAAI;4BACtB,gBAAgB,EAAE,IAAI;4BACtB,uBAAuB,EAAE,KAAK;4BAC9B,kBAAkB,EAAE,KAAK;yBAC1B;wBACD,QAAQ,EAAE;4BACR,wBAAwB;4BACxB,wBAAwB;4BACxB,iGAAiG;yBAClG;qBACF;iBACF;aACF;SACF;QAED,4BAA4B;QAC5B,kBAAkB,EAAE;QAEpB,8BAA8B;QAC9B,sBAAsB,EAAE;QAExB,aAAa;QACb,oBAAoB,EAAE;QAEtB,iDAAiD;QACjD,kBAAkB,CAAC,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;QAEhD,iDAAiD;QACjD,sBAAsB,CAAC,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QAExD,0EAA0E;QAC1E;YACE,KAAK,EAAE,CAAC,aAAa,CAAC;YACtB,KAAK,EAAE;gBACL,sBAAsB,EAAE,KAAK;aAC9B;SACF;QAED,4DAA4D;QAC5D;YACE,KAAK,EAAE,CAAC,cAAc,EAAE,mBAAmB,CAAC;YAC5C,KAAK,EAAE;gBACL,sBAAsB,EAAE,KAAK;aAC9B;SACF;QAED,qDAAqD;QACrD;YACE,KAAK,EAAE;gBACL,mBAAmB;gBACnB,oBAAoB;gBACpB,sBAAsB;aACvB;YACD,KAAK,EAAE;gBACL,+CAA+C;gBAC/C,8BAA8B,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;aAC9C;SACF;KAC6C,CAAC;AACnD,CAAC;AACD,6EAA6E"}
1
+ {"version":3,"file":"cdk.js","sourceRoot":"","sources":["../../../src/configs/eslint/cdk.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E;;;;;;;;;;;;;GAaG;AAEH,yCAAyC;AACzC,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,mCAAmC;AACnC,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,cAAc,GACf,CAAC;AAEF,uBAAuB;AACvB,MAAM,UAAU,GAAG;IACjB,GAAG,cAAc;IACjB,YAAY;IACZ,MAAM,EAAE,yBAAyB;IACjC,QAAQ;CACT,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,EAC3B,eAAe,EACf,cAAc,GAAG,UAAU,EAC3B,UAAU,GAAG,iBAAiB,GAK/B;IACC,OAAO;QACL,iBAAiB;QACjB;YACE,OAAO,EAAE,cAAc;SACxB;QAED,yCAAyC;QACzC,GAAG,cAAc,EAAE;QAEnB,mCAAmC;QACnC;YACE,eAAe,EAAE,sBAAsB,EAAE;YACzC,OAAO,EAAE;gBACP,mBAAmB,EAAE,gBAAgB;aACtC;YACD,KAAK,EAAE;gBACL,yBAAyB;gBACzB,GAAG,cAAc,CAAC,UAAU,CAAC;gBAE7B,oBAAoB;gBACpB,2CAA2C,EAAE,OAAO;gBAEpD,gEAAgE;gBAChE,oDAAoD;gBACpD,wCAAwC;gBACxC,sBAAsB,EAAE;oBACtB,OAAO;oBACP;wBACE,QAAQ,EACN,8DAA8D;wBAChE,OAAO,EACL,8HAA8H;qBACjI;iBACF;gBAED,6CAA6C;gBAC7C,uBAAuB,EAAE,KAAK;gBAE9B,kDAAkD;gBAClD,qBAAqB,EAAE;oBACrB,OAAO;oBACP;wBACE,OAAO,EAAE;4BACP,mBAAmB,EAAE,IAAI;4BACzB,gBAAgB,EAAE,IAAI;4BACtB,gBAAgB,EAAE,IAAI;4BACtB,uBAAuB,EAAE,KAAK;4BAC9B,kBAAkB,EAAE,KAAK;yBAC1B;wBACD,QAAQ,EAAE;4BACR,wBAAwB;4BACxB,wBAAwB;4BACxB,iGAAiG;yBAClG;qBACF;iBACF;aACF;SACF;QAED,4BAA4B;QAC5B,kBAAkB,EAAE;QAEpB,8BAA8B;QAC9B,sBAAsB,EAAE;QAExB,aAAa;QACb,oBAAoB,EAAE;QAEtB,iDAAiD;QACjD,kBAAkB,CAAC,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;QAEhD,iDAAiD;QACjD,sBAAsB,CAAC,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QAExD,0EAA0E;QAC1E;YACE,KAAK,EAAE,CAAC,aAAa,CAAC;YACtB,KAAK,EAAE;gBACL,sBAAsB,EAAE,KAAK;aAC9B;SACF;QAED,4DAA4D;QAC5D;YACE,KAAK,EAAE,CAAC,cAAc,EAAE,mBAAmB,CAAC;YAC5C,KAAK,EAAE;gBACL,sBAAsB,EAAE,KAAK;aAC9B;SACF;QAED,qDAAqD;QACrD;YACE,KAAK,EAAE;gBACL,mBAAmB;gBACnB,oBAAoB;gBACpB,sBAAsB;aACvB;YACD,KAAK,EAAE;gBACL,+CAA+C;gBAC/C,8BAA8B,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;aAC9C;SACF;KAC6C,CAAC;AACnD,CAAC;AACD,6EAA6E"}
@@ -46,12 +46,12 @@ export function getNestjsConfig({ tsconfigRootDir, ignorePatterns = defaultIgnor
46
46
  "code-organization/enforce-statement-order": "error",
47
47
  // Configuration enforcement - prevent direct process.env access
48
48
  // All configuration should go through ConfigService
49
- // @see .claude/rules/PROJECT_RULES.md
49
+ // @see the host rules in .agents/rules/
50
50
  "no-restricted-syntax": [
51
51
  "error",
52
52
  {
53
53
  selector: "MemberExpression[object.name='process'][property.name='env']",
54
- message: "Direct process.env access is forbidden. Use ConfigService for type-safe configuration. See .claude/rules/PROJECT_RULES.md.",
54
+ message: "Direct process.env access is forbidden. Use ConfigService for type-safe configuration. See the host rules in .agents/rules/.",
55
55
  },
56
56
  ],
57
57
  // NestJS uses classes extensively for modules, controllers, services, etc.
@@ -1 +1 @@
1
- {"version":3,"file":"nestjs.js","sourceRoot":"","sources":["../../../src/configs/eslint/nestjs.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E;;;;;;;;;;;;;GAaG;AAEH,yCAAyC;AACzC,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,mCAAmC;AACnC,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,cAAc,GACf,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,eAAe,EACf,cAAc,GAAG,cAAc,EAC/B,UAAU,GAAG,iBAAiB,GAK/B;IACC,OAAO;QACL,iBAAiB;QACjB;YACE,OAAO,EAAE,cAAc;SACxB;QAED,yCAAyC;QACzC,GAAG,cAAc,EAAE;QAEnB,mCAAmC;QACnC;YACE,eAAe,EAAE,sBAAsB,EAAE;YACzC,OAAO,EAAE;gBACP,mBAAmB,EAAE,gBAAgB;aACtC;YACD,KAAK,EAAE;gBACL,yBAAyB;gBACzB,GAAG,cAAc,CAAC,UAAU,CAAC;gBAE7B,oBAAoB;gBACpB,2CAA2C,EAAE,OAAO;gBAEpD,gEAAgE;gBAChE,oDAAoD;gBACpD,sCAAsC;gBACtC,sBAAsB,EAAE;oBACtB,OAAO;oBACP;wBACE,QAAQ,EACN,8DAA8D;wBAChE,OAAO,EACL,4HAA4H;qBAC/H;iBACF;gBAED,2EAA2E;gBAC3E,uBAAuB,EAAE,KAAK;gBAE9B,0CAA0C;gBAC1C,qBAAqB,EAAE;oBACrB,OAAO;oBACP;wBACE,OAAO,EAAE;4BACP,mBAAmB,EAAE,IAAI;4BACzB,gBAAgB,EAAE,IAAI;4BACtB,gBAAgB,EAAE,IAAI;4BACtB,uBAAuB,EAAE,KAAK;4BAC9B,kBAAkB,EAAE,KAAK;yBAC1B;wBACD,QAAQ,EAAE;4BACR,wBAAwB;4BACxB,wBAAwB;4BACxB,iGAAiG;yBAClG;qBACF;iBACF;aACF;SACF;QAED,4BAA4B;QAC5B,kBAAkB,EAAE;QAEpB,8BAA8B;QAC9B,sBAAsB,EAAE;QAExB,aAAa;QACb,oBAAoB,EAAE;QAEtB,iDAAiD;QACjD,kBAAkB,CAAC,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;QAEhD,iDAAiD;QACjD,sBAAsB,CAAC;YACrB,cAAc;YACd,cAAc;YACd,kBAAkB;SACnB,CAAC;QAEF,yCAAyC;QACzC;YACE,KAAK,EAAE,CAAC,gBAAgB,CAAC;YACzB,KAAK,EAAE;gBACL,mCAAmC;gBACnC,WAAW,EAAE,KAAK;aACnB;SACF;QAED,kCAAkC;QAClC;YACE,KAAK,EAAE,CAAC,oBAAoB,EAAE,iBAAiB,EAAE,kBAAkB,CAAC;YACpE,KAAK,EAAE;gBACL,sCAAsC;gBACtC,wBAAwB,EAAE,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;aAClD;SACF;QAED,4DAA4D;QAC5D;YACE,KAAK,EAAE,CAAC,cAAc,EAAE,qBAAqB,EAAE,gBAAgB,CAAC;YAChE,KAAK,EAAE;gBACL,sBAAsB,EAAE,KAAK;aAC9B;SACF;QAED,yDAAyD;QACzD;YACE,KAAK,EAAE,CAAC,qBAAqB,EAAE,mBAAmB,CAAC;YACnD,KAAK,EAAE;gBACL,sBAAsB,EAAE,KAAK;aAC9B;SACF;KAC6C,CAAC;AACnD,CAAC;AACD,6EAA6E"}
1
+ {"version":3,"file":"nestjs.js","sourceRoot":"","sources":["../../../src/configs/eslint/nestjs.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E;;;;;;;;;;;;;GAaG;AAEH,yCAAyC;AACzC,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,mCAAmC;AACnC,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,cAAc,GACf,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,eAAe,EACf,cAAc,GAAG,cAAc,EAC/B,UAAU,GAAG,iBAAiB,GAK/B;IACC,OAAO;QACL,iBAAiB;QACjB;YACE,OAAO,EAAE,cAAc;SACxB;QAED,yCAAyC;QACzC,GAAG,cAAc,EAAE;QAEnB,mCAAmC;QACnC;YACE,eAAe,EAAE,sBAAsB,EAAE;YACzC,OAAO,EAAE;gBACP,mBAAmB,EAAE,gBAAgB;aACtC;YACD,KAAK,EAAE;gBACL,yBAAyB;gBACzB,GAAG,cAAc,CAAC,UAAU,CAAC;gBAE7B,oBAAoB;gBACpB,2CAA2C,EAAE,OAAO;gBAEpD,gEAAgE;gBAChE,oDAAoD;gBACpD,wCAAwC;gBACxC,sBAAsB,EAAE;oBACtB,OAAO;oBACP;wBACE,QAAQ,EACN,8DAA8D;wBAChE,OAAO,EACL,8HAA8H;qBACjI;iBACF;gBAED,2EAA2E;gBAC3E,uBAAuB,EAAE,KAAK;gBAE9B,0CAA0C;gBAC1C,qBAAqB,EAAE;oBACrB,OAAO;oBACP;wBACE,OAAO,EAAE;4BACP,mBAAmB,EAAE,IAAI;4BACzB,gBAAgB,EAAE,IAAI;4BACtB,gBAAgB,EAAE,IAAI;4BACtB,uBAAuB,EAAE,KAAK;4BAC9B,kBAAkB,EAAE,KAAK;yBAC1B;wBACD,QAAQ,EAAE;4BACR,wBAAwB;4BACxB,wBAAwB;4BACxB,iGAAiG;yBAClG;qBACF;iBACF;aACF;SACF;QAED,4BAA4B;QAC5B,kBAAkB,EAAE;QAEpB,8BAA8B;QAC9B,sBAAsB,EAAE;QAExB,aAAa;QACb,oBAAoB,EAAE;QAEtB,iDAAiD;QACjD,kBAAkB,CAAC,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;QAEhD,iDAAiD;QACjD,sBAAsB,CAAC;YACrB,cAAc;YACd,cAAc;YACd,kBAAkB;SACnB,CAAC;QAEF,yCAAyC;QACzC;YACE,KAAK,EAAE,CAAC,gBAAgB,CAAC;YACzB,KAAK,EAAE;gBACL,mCAAmC;gBACnC,WAAW,EAAE,KAAK;aACnB;SACF;QAED,kCAAkC;QAClC;YACE,KAAK,EAAE,CAAC,oBAAoB,EAAE,iBAAiB,EAAE,kBAAkB,CAAC;YACpE,KAAK,EAAE;gBACL,sCAAsC;gBACtC,wBAAwB,EAAE,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;aAClD;SACF;QAED,4DAA4D;QAC5D;YACE,KAAK,EAAE,CAAC,cAAc,EAAE,qBAAqB,EAAE,gBAAgB,CAAC;YAChE,KAAK,EAAE;gBACL,sBAAsB,EAAE,KAAK;aAC9B;SACF;QAED,yDAAyD;QACzD;YACE,KAAK,EAAE,CAAC,qBAAqB,EAAE,mBAAmB,CAAC;YACnD,KAAK,EAAE;gBACL,sBAAsB,EAAE,KAAK;aAC9B;SACF;KAC6C,CAAC;AACnD,CAAC;AACD,6EAA6E"}
@@ -48,12 +48,12 @@ export function getTypescriptConfig({ tsconfigRootDir, ignorePatterns = defaultI
48
48
  "code-organization/enforce-statement-order": "error",
49
49
  // Configuration enforcement - prevent direct process.env access
50
50
  // All configuration should go through ConfigService or getStandaloneConfig()
51
- // @see .claude/rules/PROJECT_RULES.md
51
+ // @see the host rules in .agents/rules/
52
52
  "no-restricted-syntax": [
53
53
  "error",
54
54
  {
55
55
  selector: "MemberExpression[object.name='process'][property.name='env']",
56
- message: "Direct process.env access is forbidden. Use ConfigService (in NestJS context) or getStandaloneConfig() (in Lambda handlers). See .claude/rules/PROJECT_RULES.md.",
56
+ message: "Direct process.env access is forbidden. Use ConfigService (in NestJS context) or getStandaloneConfig() (in Lambda handlers). See the host rules in .agents/rules/.",
57
57
  },
58
58
  ],
59
59
  // Disabled: NestJS relies heavily on classes for modules, controllers, services, etc.
@@ -1 +1 @@
1
- {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/configs/eslint/typescript.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,mCAAmC;AACnC,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AAEnB,6DAA6D;AAC7D,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,CAAC;AAEF,+EAA+E;AAC/E,kFAAkF;AAClF,uFAAuF;AACvF,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,gBAAgB,GAAG,OAAO,CAC9B,aAAa,CACX,IAAI,GAAG,CACL,mDAAmD,EACnD,MAAM,CAAC,IAAI,CAAC,GAAG,CAChB,CACF,CACF,CAAC;AAEF,8CAA8C;AAC9C,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAClC,eAAe,EACf,cAAc,GAAG,cAAc,EAC/B,UAAU,GAAG,iBAAiB,GAK/B;IACC,OAAO;QACL,iBAAiB;QACjB;YACE,OAAO,EAAE,cAAc;SACxB;QAED,yCAAyC;QACzC,GAAG,cAAc,EAAE;QAEnB,mCAAmC;QACnC;YACE,eAAe,EAAE,sBAAsB,EAAE;YACzC,OAAO,EAAE;gBACP,mBAAmB,EAAE,gBAAgB;aACtC;YACD,KAAK,EAAE;gBACL,yBAAyB;gBACzB,GAAG,cAAc,CAAC,UAAU,CAAC;gBAE7B,oBAAoB;gBACpB,2CAA2C,EAAE,OAAO;gBAEpD,gEAAgE;gBAChE,6EAA6E;gBAC7E,sCAAsC;gBACtC,sBAAsB,EAAE;oBACtB,OAAO;oBACP;wBACE,QAAQ,EACN,8DAA8D;wBAChE,OAAO,EACL,kKAAkK;qBACrK;iBACF;gBAED,sFAAsF;gBACtF,uBAAuB,EAAE,KAAK;aAC/B;SACF;QAED,4BAA4B;QAC5B,kBAAkB,EAAE;QAEpB,8BAA8B;QAC9B,sBAAsB,EAAE;QAExB,4BAA4B;QAC5B,oBAAoB,EAAE;QAEtB,iDAAiD;QACjD,kBAAkB,CAAC,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;QAEhD,qFAAqF;QACrF,sBAAsB,CAAC,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QAExD,4DAA4D;QAC5D;YACE,KAAK,EAAE,CAAC,cAAc,CAAC;YACvB,KAAK,EAAE;gBACL,sBAAsB,EAAE,KAAK;aAC9B;SACF;KAC6C,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/configs/eslint/typescript.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,mCAAmC;AACnC,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AAEnB,6DAA6D;AAC7D,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,CAAC;AAEF,+EAA+E;AAC/E,kFAAkF;AAClF,uFAAuF;AACvF,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,gBAAgB,GAAG,OAAO,CAC9B,aAAa,CACX,IAAI,GAAG,CACL,mDAAmD,EACnD,MAAM,CAAC,IAAI,CAAC,GAAG,CAChB,CACF,CACF,CAAC;AAEF,8CAA8C;AAC9C,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAClC,eAAe,EACf,cAAc,GAAG,cAAc,EAC/B,UAAU,GAAG,iBAAiB,GAK/B;IACC,OAAO;QACL,iBAAiB;QACjB;YACE,OAAO,EAAE,cAAc;SACxB;QAED,yCAAyC;QACzC,GAAG,cAAc,EAAE;QAEnB,mCAAmC;QACnC;YACE,eAAe,EAAE,sBAAsB,EAAE;YACzC,OAAO,EAAE;gBACP,mBAAmB,EAAE,gBAAgB;aACtC;YACD,KAAK,EAAE;gBACL,yBAAyB;gBACzB,GAAG,cAAc,CAAC,UAAU,CAAC;gBAE7B,oBAAoB;gBACpB,2CAA2C,EAAE,OAAO;gBAEpD,gEAAgE;gBAChE,6EAA6E;gBAC7E,wCAAwC;gBACxC,sBAAsB,EAAE;oBACtB,OAAO;oBACP;wBACE,QAAQ,EACN,8DAA8D;wBAChE,OAAO,EACL,oKAAoK;qBACvK;iBACF;gBAED,sFAAsF;gBACtF,uBAAuB,EAAE,KAAK;aAC/B;SACF;QAED,4BAA4B;QAC5B,kBAAkB,EAAE;QAEpB,8BAA8B;QAC9B,sBAAsB,EAAE;QAExB,4BAA4B;QAC5B,oBAAoB,EAAE;QAEtB,iDAAiD;QACjD,kBAAkB,CAAC,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;QAEhD,qFAAqF;QACrF,sBAAsB,CAAC,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QAExD,4DAA4D;QAC5D;YACE,KAAK,EAAE,CAAC,cAAc,CAAC;YACvB,KAAK,EAAE;gBACL,sBAAsB,EAAE,KAAK;aAC9B;SACF;KAC6C,CAAC;AACnD,CAAC"}
@@ -0,0 +1,33 @@
1
+ /** Marker opening Lisa's bounded host-rules pointer block. */
2
+ export declare const LISA_HOST_RULES_START_MARKER = "<!-- LISA_HOST_RULES_START -->";
3
+ /** Marker closing Lisa's bounded host-rules pointer block. */
4
+ export declare const LISA_HOST_RULES_END_MARKER = "<!-- LISA_HOST_RULES_END -->";
5
+ /**
6
+ * Add, replace, or remove one bounded Lisa-managed block in an instruction
7
+ * file, leaving every byte outside the markers untouched.
8
+ *
9
+ * Malformed markers are a hard no-op — only one of the pair present, the end
10
+ * before the start, or either marker occurring more than once — because Lisa
11
+ * must never guess which host bytes belong to it.
12
+ * @param body - Existing instruction-file body.
13
+ * @param startMarker - Opening marker for the managed block.
14
+ * @param endMarker - Closing marker for the managed block.
15
+ * @param replacement - Full replacement block, or empty string to remove.
16
+ * @returns Updated body, or the original body for malformed markers.
17
+ */
18
+ export declare function replaceManagedBlock(body: string, startMarker: string, endMarker: string, replacement: string): string;
19
+ /**
20
+ * Build the exact bounded host-rules pointer block.
21
+ * @param legacyRulesFile - Project-relative path to a surviving legacy
22
+ * single-file rules document, when one exists. Omit when none does.
23
+ * @returns Managed pointer block with surrounding markers.
24
+ */
25
+ export declare function buildHostRulesPointer(legacyRulesFile?: string): string;
26
+ /**
27
+ * Remove the managed host-rules pointer from an AGENTS.md body. Malformed
28
+ * marker pairs are left unchanged.
29
+ * @param body - Existing `AGENTS.md` contents.
30
+ * @returns The body with the managed pointer removed, when a full block exists.
31
+ */
32
+ export declare function stripHostRulesPointer(body: string): string;
33
+ //# sourceMappingURL=host-rules-pointer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-rules-pointer.d.ts","sourceRoot":"","sources":["../../src/core/host-rules-pointer.ts"],"names":[],"mappings":"AAiBA,8DAA8D;AAC9D,eAAO,MAAM,4BAA4B,mCAAmC,CAAC;AAC7E,8DAA8D;AAC9D,eAAO,MAAM,0BAA0B,iCAAiC,CAAC;AAEzE;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,MAAM,CA6BR;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAiBtE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO1D"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * The Lisa-managed host-rules pointer block, and the bounded-block editor every
3
+ * managed block in `AGENTS.md` is written through.
4
+ *
5
+ * `.agents/rules/` is the canonical, agent-neutral directory for host-authored
6
+ * operating rules. It is deliberately not a native auto-load tree for any
7
+ * runtime, so every agent reaches it through exactly one surface — this pointer
8
+ * block in `AGENTS.md` (Claude via the `@AGENTS.md` import in `CLAUDE.md`) — and
9
+ * no agent loads host rules twice.
10
+ *
11
+ * Pointer only. Lisa never writes rule bodies into `AGENTS.md` or into
12
+ * `.agents/rules/`; that is what distinguishes this block from the legacy
13
+ * `LISA_RULES_START..END` bake that PR #1150 removed.
14
+ * @module core/host-rules-pointer
15
+ */
16
+ import { HOST_RULES_DIR } from "./project-config.js";
17
+ /** Marker opening Lisa's bounded host-rules pointer block. */
18
+ export const LISA_HOST_RULES_START_MARKER = "<!-- LISA_HOST_RULES_START -->";
19
+ /** Marker closing Lisa's bounded host-rules pointer block. */
20
+ export const LISA_HOST_RULES_END_MARKER = "<!-- LISA_HOST_RULES_END -->";
21
+ /**
22
+ * Add, replace, or remove one bounded Lisa-managed block in an instruction
23
+ * file, leaving every byte outside the markers untouched.
24
+ *
25
+ * Malformed markers are a hard no-op — only one of the pair present, the end
26
+ * before the start, or either marker occurring more than once — because Lisa
27
+ * must never guess which host bytes belong to it.
28
+ * @param body - Existing instruction-file body.
29
+ * @param startMarker - Opening marker for the managed block.
30
+ * @param endMarker - Closing marker for the managed block.
31
+ * @param replacement - Full replacement block, or empty string to remove.
32
+ * @returns Updated body, or the original body for malformed markers.
33
+ */
34
+ export function replaceManagedBlock(body, startMarker, endMarker, replacement) {
35
+ const startIdx = body.indexOf(startMarker);
36
+ const endIdx = body.indexOf(endMarker);
37
+ const hasStart = startIdx !== -1;
38
+ const hasEnd = endIdx !== -1;
39
+ const hasDuplicateStart = hasStart && body.indexOf(startMarker, startIdx + startMarker.length) !== -1;
40
+ const hasDuplicateEnd = hasEnd && body.indexOf(endMarker, endIdx + endMarker.length) !== -1;
41
+ if (hasStart !== hasEnd ||
42
+ (hasStart && endIdx < startIdx) ||
43
+ hasDuplicateStart ||
44
+ hasDuplicateEnd) {
45
+ return body;
46
+ }
47
+ if (!hasStart) {
48
+ if (replacement === "") {
49
+ return body;
50
+ }
51
+ const separator = body.endsWith("\n") ? "\n" : "\n\n";
52
+ return `${body}${separator}${replacement}\n`;
53
+ }
54
+ const before = body.slice(0, startIdx);
55
+ const after = body.slice(endIdx + endMarker.length);
56
+ const next = `${before}${replacement}${after}`;
57
+ // Collapse 3+ consecutive newlines to two (bounded quantifier for slow-regex).
58
+ return `${next.replace(/\n\n\n+/g, "\n\n").trim()}\n`;
59
+ }
60
+ /**
61
+ * Build the exact bounded host-rules pointer block.
62
+ * @param legacyRulesFile - Project-relative path to a surviving legacy
63
+ * single-file rules document, when one exists. Omit when none does.
64
+ * @returns Managed pointer block with surrounding markers.
65
+ */
66
+ export function buildHostRulesPointer(legacyRulesFile) {
67
+ return [
68
+ LISA_HOST_RULES_START_MARKER,
69
+ "## Host Rules",
70
+ "",
71
+ `This project's durable, host-authored operating rules live in \`${HOST_RULES_DIR}/\`.`,
72
+ "Read those files when you need this project's standing rules. They are not",
73
+ "injected at session start, so consult them on demand — which also means every",
74
+ "agent reads them through this one pointer and no agent loads them twice.",
75
+ "",
76
+ `**Ownership.** The host owns every file in \`${HOST_RULES_DIR}/\`. Lisa never writes`,
77
+ "rule bodies there; Lisa's own rules ship through its per-agent plugins. This",
78
+ "marked block is the only Lisa-managed content in this file — everything outside",
79
+ "the markers belongs to the host and is never touched.",
80
+ ...transitionParagraph(legacyRulesFile),
81
+ LISA_HOST_RULES_END_MARKER,
82
+ ].join("\n");
83
+ }
84
+ /**
85
+ * Remove the managed host-rules pointer from an AGENTS.md body. Malformed
86
+ * marker pairs are left unchanged.
87
+ * @param body - Existing `AGENTS.md` contents.
88
+ * @returns The body with the managed pointer removed, when a full block exists.
89
+ */
90
+ export function stripHostRulesPointer(body) {
91
+ return replaceManagedBlock(body, LISA_HOST_RULES_START_MARKER, LISA_HOST_RULES_END_MARKER, "");
92
+ }
93
+ /**
94
+ * Lines naming a surviving legacy single-file rules document, so its content
95
+ * stays reachable while the project transitions. Empty when the project has
96
+ * none — the paragraph then disappears on its own.
97
+ * @param legacyRulesFile - Project-relative legacy rules path, if any.
98
+ * @returns Zero or more block lines.
99
+ */
100
+ function transitionParagraph(legacyRulesFile) {
101
+ if (legacyRulesFile === undefined) {
102
+ return [];
103
+ }
104
+ return [
105
+ "",
106
+ `**Transition.** This project still has host rules at \`${legacyRulesFile}\`.`,
107
+ "They remain authoritative and are left exactly as written — Lisa does not",
108
+ "move, rewrite, or delete them. Agents whose runtime auto-loads that path",
109
+ "(Claude Code auto-loads `.claude/rules/`) already have that content and must",
110
+ "not read it a second time; every other agent should read it alongside",
111
+ `\`${HOST_RULES_DIR}/\`. Reclassifying or relocating it is a human-gated`,
112
+ "decision, never an automated rewrite.",
113
+ ];
114
+ }
115
+ //# sourceMappingURL=host-rules-pointer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-rules-pointer.js","sourceRoot":"","sources":["../../src/core/host-rules-pointer.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ export declare const LISA_RULES_END_MARKER = "<!-- LISA_RULES_END -->";
10
10
  export declare const LISA_PROJECT_LEARNINGS_START_MARKER = "<!-- LISA_PROJECT_LEARNINGS_START -->";
11
11
  /** Marker closing Lisa's bounded Antigravity project-learnings bridge. */
12
12
  export declare const LISA_PROJECT_LEARNINGS_END_MARKER = "<!-- LISA_PROJECT_LEARNINGS_END -->";
13
+ export { LISA_HOST_RULES_END_MARKER, LISA_HOST_RULES_START_MARKER, buildHostRulesPointer, stripHostRulesPointer, } from "./host-rules-pointer.js";
13
14
  /** Outcome of an instruction-files migration pass. */
14
15
  export interface InstructionFilesMigrationResult {
15
16
  /** True when any file was created or modified. */
@@ -65,8 +66,8 @@ export interface MigrateInstructionFilesOptions {
65
66
  */
66
67
  readonly reconcileAgyProjectLearnings?: boolean;
67
68
  /**
68
- * Resolved project-relative learnings path. Defaults to the sibling of the
69
- * configured `projectRulesFile`.
69
+ * Resolved project-relative learnings path. Defaults to the canonical
70
+ * `.lisa/PROJECT_LEARNINGS.md` (or a validated `learnings.file` override).
70
71
  */
71
72
  readonly projectLearningsFile?: string;
72
73
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"instruction-files-migration.d.ts","sourceRoot":"","sources":["../../src/core/instruction-files-migration.ts"],"names":[],"mappings":"AA+CA;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,4EAA4E;AAC5E,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAC/D,0EAA0E;AAC1E,eAAO,MAAM,mCAAmC,0CACP,CAAC;AAC1C,0EAA0E;AAC1E,eAAO,MAAM,iCAAiC,wCACP,CAAC;AAExC,sDAAsD;AACtD,MAAM,WAAW,+BAA+B;IAC9C,kDAAkD;IAClD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,kDAAkD;AAClD,MAAM,WAAW,yBAAyB;IACxC,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,yEAAyE;IACzE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,yBAAyB,CAAC,CA8BpC;AAED,2DAA2D;AAC3D,MAAM,WAAW,8BAA8B;IAC7C;;;;;;;OAOG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC;;;;OAIG;IACH,QAAQ,CAAC,4BAA4B,CAAC,EAAE,OAAO,CAAC;IAChD;;;OAGG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC;;;;;;OAMG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACtC;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAU5D;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,oBAAoB,EAAE,MAAM,GAC3B,MAAM,CAaR;AAoLD;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,8BAAmC,GAC3C,OAAO,CAAC,+BAA+B,CAAC,CAmB1C"}
1
+ {"version":3,"file":"instruction-files-migration.d.ts","sourceRoot":"","sources":["../../src/core/instruction-files-migration.ts"],"names":[],"mappings":"AA6DA;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,4EAA4E;AAC5E,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAC/D,0EAA0E;AAC1E,eAAO,MAAM,mCAAmC,0CACP,CAAC;AAC1C,0EAA0E;AAC1E,eAAO,MAAM,iCAAiC,wCACP,CAAC;AAExC,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAEjC,sDAAsD;AACtD,MAAM,WAAW,+BAA+B;IAC9C,kDAAkD;IAClD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,kDAAkD;AAClD,MAAM,WAAW,yBAAyB;IACxC,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,yEAAyE;IACzE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,yBAAyB,CAAC,CA8BpC;AAED,2DAA2D;AAC3D,MAAM,WAAW,8BAA8B;IAC7C;;;;;;;OAOG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC;;;;OAIG;IACH,QAAQ,CAAC,4BAA4B,CAAC,EAAE,OAAO,CAAC;IAChD;;;OAGG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC;;;;;;OAMG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACtC;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAU5D;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,oBAAoB,EAAE,MAAM,GAC3B,MAAM,CAaR;AAuKD;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,8BAAmC,GAC3C,OAAO,CAAC,+BAA+B,CAAC,CAyB1C"}