@codyswann/lisa 2.137.2 → 2.138.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 (72) hide show
  1. package/dist/claude/claude-md-installer.d.ts +6 -0
  2. package/dist/claude/claude-md-installer.d.ts.map +1 -1
  3. package/dist/claude/claude-md-installer.js +27 -29
  4. package/dist/claude/claude-md-installer.js.map +1 -1
  5. package/dist/cli/doctor.d.ts.map +1 -1
  6. package/dist/cli/doctor.js +55 -0
  7. package/dist/cli/doctor.js.map +1 -1
  8. package/dist/codex/agents-md-installer.d.ts +5 -5
  9. package/dist/codex/agents-md-installer.d.ts.map +1 -1
  10. package/dist/codex/agents-md-installer.js +42 -37
  11. package/dist/codex/agents-md-installer.js.map +1 -1
  12. package/dist/copilot/copilot-instructions-installer.d.ts.map +1 -1
  13. package/dist/copilot/copilot-instructions-installer.js +9 -12
  14. package/dist/copilot/copilot-instructions-installer.js.map +1 -1
  15. package/dist/core/instruction-files-migration.d.ts +30 -0
  16. package/dist/core/instruction-files-migration.d.ts.map +1 -0
  17. package/dist/core/instruction-files-migration.js +108 -0
  18. package/dist/core/instruction-files-migration.js.map +1 -0
  19. package/dist/core/lisa.d.ts +14 -22
  20. package/dist/core/lisa.d.ts.map +1 -1
  21. package/dist/core/lisa.js +31 -47
  22. package/dist/core/lisa.js.map +1 -1
  23. package/package.json +1 -1
  24. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  25. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  26. package/plugins/lisa-agy/plugin.json +1 -1
  27. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  28. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  29. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  30. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  31. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  32. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  33. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  34. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  35. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  36. package/plugins/lisa-expo-agy/plugin.json +1 -1
  37. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  38. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  39. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  40. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  41. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  42. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  43. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  44. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  45. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  46. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  47. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  48. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  49. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  50. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  51. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  52. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  53. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  54. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  55. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  56. package/plugins/lisa-rails-agy/plugin.json +1 -1
  57. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  59. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  60. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  61. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  62. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  63. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  64. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  65. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  66. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  67. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  68. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  69. package/dist/agy/agents-md-installer.d.ts +0 -27
  70. package/dist/agy/agents-md-installer.d.ts.map +0 -1
  71. package/dist/agy/agents-md-installer.js +0 -131
  72. package/dist/agy/agents-md-installer.js.map +0 -1
@@ -1,5 +1,11 @@
1
1
  /** Filename of the Claude project doc at the host project root. */
2
2
  export declare const CLAUDE_MD_FILENAME = "CLAUDE.md";
3
+ /**
4
+ * The Claude Code `@`-import directive that pulls the canonical `AGENTS.md` into
5
+ * a Claude session. Exported so the doctor migration can detect whether an
6
+ * existing CLAUDE.md already points at AGENTS.md.
7
+ */
8
+ export declare const CLAUDE_MD_AGENTS_IMPORT = "@AGENTS.md";
3
9
  /** Result of the CLAUDE.md install pass. */
4
10
  export interface ClaudeMdInstallResult {
5
11
  /** True when Lisa created the file (false when it already existed). */
@@ -1 +1 @@
1
- {"version":3,"file":"claude-md-installer.d.ts","sourceRoot":"","sources":["../../src/claude/claude-md-installer.ts"],"names":[],"mappings":"AAkBA,mEAAmE;AACnE,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAE9C,4CAA4C;AAC5C,MAAM,WAAW,qBAAqB;IACpC,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,8EAA8E;IAC9E,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AA8BD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,qBAAqB,CAAC,CAOhC"}
1
+ {"version":3,"file":"claude-md-installer.d.ts","sourceRoot":"","sources":["../../src/claude/claude-md-installer.ts"],"names":[],"mappings":"AAuBA,mEAAmE;AACnE,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAE9C;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,eAAe,CAAC;AAEpD,4CAA4C;AAC5C,MAAM,WAAW,qBAAqB;IACpC,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,8EAA8E;IAC9E,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AAiBD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,qBAAqB,CAAC,CAOhC"}
@@ -1,15 +1,20 @@
1
1
  /**
2
2
  * Write Lisa's CLAUDE.md template for Claude Code host projects.
3
3
  *
4
- * Claude Code auto-loads `CLAUDE.md` from the project tree at session start
5
- * as repository-specific guidance. Lisa ships a starter template that:
4
+ * Claude Code auto-loads `CLAUDE.md` from the project tree at session start but,
5
+ * unlike Codex / Cursor / Copilot, does **not** read `AGENTS.md` natively. So
6
+ * Lisa keeps `CLAUDE.md` as a thin pointer: its only meaningful content is an
7
+ * `@AGENTS.md` import, which makes Claude Code load the canonical, cross-agent
8
+ * `AGENTS.md` (see `src/codex/agents-md-installer.ts`) at session start.
6
9
  *
7
- * - Advertises that Lisa governance is active in the project.
8
- * - Points downstream readers at the Lisa plugin (CodySwannGT/lisa).
9
- * - Reserves space for project-specific guidance the host can edit.
10
+ * This single-source-of-truth design avoids the double-load problem: agents that
11
+ * read both files (Copilot, Cursor) would otherwise ingest duplicated guidance.
12
+ * With CLAUDE.md reduced to a one-line import, the duplicate they see is
13
+ * negligible while Claude still gets the full canonical content.
10
14
  *
11
- * Create-only semantics: Lisa never overwrites a host-authored CLAUDE.md.
12
- * The Claude counterpart to `src/codex/agents-md-installer.ts`.
15
+ * Create-only semantics: Lisa never overwrites a host-authored CLAUDE.md. For
16
+ * existing projects that predate this pattern, `lisa doctor` non-destructively
17
+ * adds the `@AGENTS.md` import (see `src/core/instruction-files-migration.ts`).
13
18
  * @module claude/claude-md-installer
14
19
  */
15
20
  import { writeFile } from "node:fs/promises";
@@ -17,32 +22,25 @@ import { existsSync } from "node:fs";
17
22
  import * as path from "node:path";
18
23
  /** Filename of the Claude project doc at the host project root. */
19
24
  export const CLAUDE_MD_FILENAME = "CLAUDE.md";
25
+ /**
26
+ * The Claude Code `@`-import directive that pulls the canonical `AGENTS.md` into
27
+ * a Claude session. Exported so the doctor migration can detect whether an
28
+ * existing CLAUDE.md already points at AGENTS.md.
29
+ */
30
+ export const CLAUDE_MD_AGENTS_IMPORT = "@AGENTS.md";
20
31
  const TEMPLATE = `# Claude Instructions
21
32
 
22
- This file is auto-loaded by Claude Code at session start as repository-specific
23
- guidance. Anthropic's Claude Code reads CLAUDE.md from the project root, the
24
- parent tree, and the user-level home directory; project-level takes precedence.
25
-
26
- ## Lisa Governance
27
-
28
- This project uses [Lisa](https://github.com/CodySwannGT/lisa) for AI-assisted
29
- software development governance. The Lisa Claude Code plugin ships skills,
30
- agents, slash commands, hooks, rules, and MCP servers via the GitHub plugin
31
- marketplace.
32
-
33
- Lisa's eager rules are auto-injected into every Claude Code session via the
34
- plugin's \`SessionStart\` and \`SubagentStart\` hooks (see
35
- \`plugins/lisa/hooks/inject-rules.sh\` in the Lisa repository). The rules cover
36
- coding philosophy, intent routing, leaf-only lifecycle, PRD lifecycle rollup,
37
- repo-scope splits, security audit handling, documentation-source paths, and
38
- empirical-inquiry discipline.
39
-
40
- ## Add Project-Specific Guidance Below
33
+ ${CLAUDE_MD_AGENTS_IMPORT}
41
34
 
42
- The lines above are managed by Lisa; the rest of this file is owned by the host
43
- project. Add convention notes, terminology, architectural shorthand, or any
44
- project-specific guidance Claude Code should consume at session start.
35
+ <!--
36
+ Lisa keeps CLAUDE.md as a thin pointer to AGENTS.md — the canonical, cross-agent
37
+ instruction file — so this project's guidance lives in exactly one place. The
38
+ \`${CLAUDE_MD_AGENTS_IMPORT}\` line above uses Claude Code's @-import syntax to load
39
+ AGENTS.md at session start (Claude Code does not read AGENTS.md natively).
45
40
 
41
+ Put project guidance in AGENTS.md. Add Claude-specific guidance below only if you
42
+ need behavior that should apply to Claude Code but not other agents.
43
+ -->
46
44
  `;
47
45
  /**
48
46
  * Write a starter CLAUDE.md at the host project root, but only if the file
@@ -1 +1 @@
1
- {"version":3,"file":"claude-md-installer.js","sourceRoot":"","sources":["../../src/claude/claude-md-installer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,mEAAmE;AACnE,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAU9C,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BhB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAe;IAEf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACxD,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;IACrD,CAAC;IACD,MAAM,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"claude-md-installer.js","sourceRoot":"","sources":["../../src/claude/claude-md-installer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,mEAAmE;AACnE,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAE9C;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,YAAY,CAAC;AAUpD,MAAM,QAAQ,GAAG;;EAEf,uBAAuB;;;;;IAKrB,uBAAuB;;;;;;CAM1B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAe;IAEf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACxD,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;IACrD,CAAC;IACD,MAAM,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAC7D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,mDAAmD;AACnD,KAAK,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAM3C,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;CACnB;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;CAClC;AAmMD;;;;;;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,CA8BvB"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAQA,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;CACnB;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;CAClC;AAyPD;;;;;;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,CA+BvB"}
@@ -1,12 +1,16 @@
1
1
  import { existsSync } from "node:fs";
2
2
  import { readFile } from "node:fs/promises";
3
3
  import * as path from "node:path";
4
+ import { AGENTS_MD_FILENAME } from "../codex/agents-md-installer.js";
5
+ import { CLAUDE_MD_FILENAME } from "../claude/claude-md-installer.js";
6
+ import { migrateInstructionFiles } from "../core/instruction-files-migration.js";
4
7
  import { createDetectorRegistry } from "../detection/index.js";
5
8
  import { STARTERS } from "./starters.js";
6
9
  import { runUpdateCheck } from "./update-check.js";
7
10
  const VERSION_CHECK_NAME = "Lisa version current?";
8
11
  const STARTER_HEALTH_NAME = "Starter health";
9
12
  const PROJECT_CONFIG_CHECK_NAME = "Project Lisa config present?";
13
+ const INSTRUCTION_FILES_CHECK_NAME = "Instruction files canonical?";
10
14
  const DEFAULT_DEPENDENCIES = {
11
15
  fetchImpl: fetch,
12
16
  runUpdateCheck,
@@ -170,6 +174,56 @@ function checkWiki(targetPath) {
170
174
  : `Missing ${missing.join(", ")}`,
171
175
  };
172
176
  }
177
+ /**
178
+ * Determine whether a path looks like an agent-governed project, i.e. one that
179
+ * should carry the canonical `AGENTS.md` / `CLAUDE.md` pointer pattern. True
180
+ * when a Lisa config or either instruction file already exists — this keeps the
181
+ * mutating migration from touching unrelated, non-Lisa directories.
182
+ * @param targetPath - Project path to inspect
183
+ * @returns True when the path is an agent/Lisa project
184
+ */
185
+ function looksLikeAgentProject(targetPath) {
186
+ return [
187
+ ".lisa.config.json",
188
+ ".lisa.config.local.json",
189
+ AGENTS_MD_FILENAME,
190
+ CLAUDE_MD_FILENAME,
191
+ ].some(fileName => existsSync(path.join(targetPath, fileName)));
192
+ }
193
+ /**
194
+ * Ensure the project's agent instruction files follow Lisa's canonical pattern
195
+ * (canonical `AGENTS.md` + a thin `CLAUDE.md` that `@AGENTS.md`-imports it) and
196
+ * carry no legacy agy baked-rules block. This check is mutating: it repairs
197
+ * existing projects in place, non-destructively (host content is preserved).
198
+ * @param targetPath - Project path to inspect and repair
199
+ * @returns Doctor check result describing what, if anything, was changed
200
+ */
201
+ async function checkInstructionFiles(targetPath) {
202
+ if (!looksLikeAgentProject(targetPath)) {
203
+ return {
204
+ name: INSTRUCTION_FILES_CHECK_NAME,
205
+ status: "ok",
206
+ detail: "Not a Lisa/agent project; skipped",
207
+ };
208
+ }
209
+ try {
210
+ const result = await migrateInstructionFiles(targetPath);
211
+ return {
212
+ name: INSTRUCTION_FILES_CHECK_NAME,
213
+ status: "ok",
214
+ detail: result.changed
215
+ ? `Repaired: ${result.actions.join("; ")}`
216
+ : "Already canonical (AGENTS.md source of truth, CLAUDE.md imports it)",
217
+ };
218
+ }
219
+ catch (error) {
220
+ return {
221
+ name: INSTRUCTION_FILES_CHECK_NAME,
222
+ status: "fail",
223
+ detail: `Could not reconcile instruction files: ${error instanceof Error ? error.message : String(error)}`,
224
+ };
225
+ }
226
+ }
173
227
  /**
174
228
  * Run Lisa doctor checks.
175
229
  * @param targetPath - Optional project path
@@ -184,6 +238,7 @@ export async function runDoctor(targetPath, options, dependencies = {}) {
184
238
  await checkVersion(deps, options.offline === true),
185
239
  await checkProjectConfig(resolvedTarget),
186
240
  await checkProjectType(resolvedTarget),
241
+ await checkInstructionFiles(resolvedTarget),
187
242
  await checkStarterHealth(deps, options.offline === true),
188
243
  checkWiki(resolvedTarget),
189
244
  ];
@@ -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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"}
@@ -15,10 +15,10 @@ export interface AgentsMdInstallResult {
15
15
  */
16
16
  export declare function installAgentsMd(destDir: string): Promise<AgentsMdInstallResult>;
17
17
  /**
18
- * Starter template content. Intentionally short — the heavy lifting (Lisa
19
- * rules, intent routing, orchestration) lives in `.codex/lisa-rules/` and
20
- * is injected via the SessionStart hook, so AGENTS.md is reserved for
21
- * host-specific notes.
18
+ * Starter template content. Intentionally short and agent-neutral — the heavy
19
+ * lifting (Lisa rules, intent routing, orchestration) is injected per session
20
+ * via each agent's `inject-rules.sh` SessionStart hook, so `AGENTS.md` is
21
+ * reserved for host-specific notes and is never bloated with rule bodies.
22
22
  */
23
- export declare const AGENTS_MD_TEMPLATE = "# Project Guidance for Codex\n\nThis project uses Lisa governance. Codex sessions automatically receive\nLisa's rules, agents, and skills via the SessionStart hook in\n`.codex/hooks/lisa/inject-rules.sh`.\n\nThis file is for **project-specific guidance** \u2014 add anything Codex should\nknow about *this particular* project that isn't covered by Lisa's rules.\n\n## What lives where\n\n- `.codex/agents/lisa/` \u2014 Lisa-managed subagent role definitions\n- `.codex/skills/lisa/` \u2014 Lisa-managed skills (invoke via `$<name>`)\n- `.codex/lisa-rules/` \u2014 Lisa rules content (injected at session start)\n- `.codex/hooks/lisa/` \u2014 Lisa-managed hook scripts\n- `.codex/config.toml` \u2014 partly Lisa-managed Codex config\n\n## Lisa harness parity\n\nClaude is Lisa's production harness. When adding or changing Lisa behavior in\nthis project, keep the Claude and Codex implementations in parity where Codex\nhas an equivalent surface. Document any intentional gap instead of silently\ndropping Claude behavior from the Codex path.\n\n## Custom rules for this project\n\nAdd project-specific guidance below. This section is preserved across Lisa\nupdates (`AGENTS.md` is create-only).\n";
23
+ export declare const AGENTS_MD_TEMPLATE = "# Project Guidance\n\nThis is the **canonical, cross-agent instruction file** for this project. It\nfollows the [AGENTS.md](https://agents.md) open standard and is read natively at\nsession start by Codex, Cursor, GitHub Copilot, and Antigravity (`agy`). Claude\nCode reads it through the `@AGENTS.md` import in `CLAUDE.md`, so all of this\nproject's guidance lives in one place.\n\n## Lisa Governance\n\nThis project uses [Lisa](https://github.com/CodySwannGT/lisa) for AI-assisted\nsoftware development governance. Lisa ships skills, agents, slash commands,\nhooks, rules, and MCP servers via per-agent plugins. Lisa's eager rules are\ninjected into every session by the plugin's `SessionStart` / `SubagentStart`\nhooks (`inject-rules.sh`) \u2014 they are intentionally **not** duplicated into this\nfile.\n\n## Add Project-Specific Guidance Below\n\nThe lines above are a Lisa-managed starter; this file is owned by the host\nproject and is never overwritten on subsequent `lisa apply` runs. Add\nconvention notes, terminology, architectural shorthand, or anything agents\nshould know about *this particular* project that Lisa's universal rules do not\ncover.\n";
24
24
  //# sourceMappingURL=agents-md-installer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agents-md-installer.d.ts","sourceRoot":"","sources":["../../src/codex/agents-md-installer.ts"],"names":[],"mappings":"AAmBA,iEAAiE;AACjE,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAE9C,2CAA2C;AAC3C,MAAM,WAAW,qBAAqB;IACpC,kEAAkE;IAClE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,0EAA0E;IAC1E,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,qBAAqB,CAAC,CAOhC;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,irCA4B9B,CAAC"}
1
+ {"version":3,"file":"agents-md-installer.d.ts","sourceRoot":"","sources":["../../src/codex/agents-md-installer.ts"],"names":[],"mappings":"AA4BA,iEAAiE;AACjE,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAE9C,2CAA2C;AAC3C,MAAM,WAAW,qBAAqB;IACpC,kEAAkE;IAClE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,0EAA0E;IAC1E,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,qBAAqB,CAAC,CAOhC;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,ipCAwB9B,CAAC"}
@@ -1,16 +1,25 @@
1
1
  /**
2
- * Emit a create-only AGENTS.md template into the host project root.
2
+ * Emit the create-only, canonical `AGENTS.md` template into the host project
3
+ * root.
3
4
  *
4
- * Codex auto-loads `AGENTS.md` from the project tree on every session
5
- * (per `developers.openai.com/codex/guides/agents-md`). Lisa ships a
6
- * starter template so hosts know:
7
- * - Lisa governance is active in this project (rules injected via
8
- * SessionStart hook from `.codex/lisa-rules/`)
9
- * - This file is the place to add project-specific guidance
5
+ * `AGENTS.md` is Lisa's single, cross-agent instruction file. It follows the
6
+ * [AGENTS.md](https://agents.md) open standard and is read natively at session
7
+ * start by Codex, Cursor, GitHub Copilot, and Antigravity (`agy`). Claude Code
8
+ * does not read `AGENTS.md` natively, so Lisa points `CLAUDE.md` at it with an
9
+ * `@AGENTS.md` import (see `src/claude/claude-md-installer.ts`) — that keeps the
10
+ * project's guidance in exactly one place and avoids the double-load that
11
+ * separate-but-duplicated `AGENTS.md`/`CLAUDE.md` files cause for agents (Copilot,
12
+ * Cursor) that read both.
10
13
  *
11
- * Create-only: never overwritten on subsequent `lisa` runs. The host owns
12
- * the file once it exists. (Lisa's actual rules go via the inject-rules
13
- * hook, so AGENTS.md is purely a host-facing knob.)
14
+ * The template is deliberately agent-neutral and short: Lisa's actual rules are
15
+ * injected per session via each agent's `inject-rules.sh` SessionStart hook, so
16
+ * `AGENTS.md` is purely a host-facing knob, not a place to duplicate rule bodies.
17
+ *
18
+ * Create-only: never overwritten on subsequent `lisa` runs. The host owns the
19
+ * file once it exists.
20
+ *
21
+ * This module lives under `src/codex/` for historical reasons (Codex was the
22
+ * first non-Claude harness); the file it writes is canonical for all agents.
14
23
  * @module codex/agents-md-installer
15
24
  */
16
25
  import * as fse from "fs-extra";
@@ -33,38 +42,34 @@ export async function installAgentsMd(destDir) {
33
42
  return { created: true, relativePath: AGENTS_MD_FILENAME };
34
43
  }
35
44
  /**
36
- * Starter template content. Intentionally short — the heavy lifting (Lisa
37
- * rules, intent routing, orchestration) lives in `.codex/lisa-rules/` and
38
- * is injected via the SessionStart hook, so AGENTS.md is reserved for
39
- * host-specific notes.
45
+ * Starter template content. Intentionally short and agent-neutral — the heavy
46
+ * lifting (Lisa rules, intent routing, orchestration) is injected per session
47
+ * via each agent's `inject-rules.sh` SessionStart hook, so `AGENTS.md` is
48
+ * reserved for host-specific notes and is never bloated with rule bodies.
40
49
  */
41
- export const AGENTS_MD_TEMPLATE = `# Project Guidance for Codex
42
-
43
- This project uses Lisa governance. Codex sessions automatically receive
44
- Lisa's rules, agents, and skills via the SessionStart hook in
45
- \`.codex/hooks/lisa/inject-rules.sh\`.
46
-
47
- This file is for **project-specific guidance** — add anything Codex should
48
- know about *this particular* project that isn't covered by Lisa's rules.
49
-
50
- ## What lives where
50
+ export const AGENTS_MD_TEMPLATE = `# Project Guidance
51
51
 
52
- - \`.codex/agents/lisa/\` Lisa-managed subagent role definitions
53
- - \`.codex/skills/lisa/\` Lisa-managed skills (invoke via \`$<name>\`)
54
- - \`.codex/lisa-rules/\` Lisa rules content (injected at session start)
55
- - \`.codex/hooks/lisa/\` Lisa-managed hook scripts
56
- - \`.codex/config.toml\` partly Lisa-managed Codex config
52
+ This is the **canonical, cross-agent instruction file** for this project. It
53
+ follows the [AGENTS.md](https://agents.md) open standard and is read natively at
54
+ session start by Codex, Cursor, GitHub Copilot, and Antigravity (\`agy\`). Claude
55
+ Code reads it through the \`@AGENTS.md\` import in \`CLAUDE.md\`, so all of this
56
+ project's guidance lives in one place.
57
57
 
58
- ## Lisa harness parity
58
+ ## Lisa Governance
59
59
 
60
- Claude is Lisa's production harness. When adding or changing Lisa behavior in
61
- this project, keep the Claude and Codex implementations in parity where Codex
62
- has an equivalent surface. Document any intentional gap instead of silently
63
- dropping Claude behavior from the Codex path.
60
+ This project uses [Lisa](https://github.com/CodySwannGT/lisa) for AI-assisted
61
+ software development governance. Lisa ships skills, agents, slash commands,
62
+ hooks, rules, and MCP servers via per-agent plugins. Lisa's eager rules are
63
+ injected into every session by the plugin's \`SessionStart\` / \`SubagentStart\`
64
+ hooks (\`inject-rules.sh\`) — they are intentionally **not** duplicated into this
65
+ file.
64
66
 
65
- ## Custom rules for this project
67
+ ## Add Project-Specific Guidance Below
66
68
 
67
- Add project-specific guidance below. This section is preserved across Lisa
68
- updates (\`AGENTS.md\` is create-only).
69
+ The lines above are a Lisa-managed starter; this file is owned by the host
70
+ project and is never overwritten on subsequent \`lisa apply\` runs. Add
71
+ convention notes, terminology, architectural shorthand, or anything agents
72
+ should know about *this particular* project that Lisa's universal rules do not
73
+ cover.
69
74
  `;
70
75
  //# sourceMappingURL=agents-md-installer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agents-md-installer.js","sourceRoot":"","sources":["../../src/codex/agents-md-installer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,iEAAiE;AACjE,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAU9C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAe;IAEf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACxD,IAAI,MAAM,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;IACrD,CAAC;IACD,MAAM,SAAS,CAAC,QAAQ,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACtD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAC7D,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BjC,CAAC"}
1
+ {"version":3,"file":"agents-md-installer.js","sourceRoot":"","sources":["../../src/codex/agents-md-installer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,iEAAiE;AACjE,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAU9C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAe;IAEf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACxD,IAAI,MAAM,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;IACrD,CAAC;IACD,MAAM,SAAS,CAAC,QAAQ,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACtD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAC7D,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBjC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"copilot-instructions-installer.d.ts","sourceRoot":"","sources":["../../src/copilot/copilot-instructions-installer.ts"],"names":[],"mappings":"AAmBA,yEAAyE;AACzE,eAAO,MAAM,kCAAkC,QAG9C,CAAC;AAEF,uDAAuD;AACvD,MAAM,WAAW,gCAAgC;IAC/C,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,+EAA+E;IAC/E,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AA2BD;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gCAAgC,CAAC,CAQ3C"}
1
+ {"version":3,"file":"copilot-instructions-installer.d.ts","sourceRoot":"","sources":["../../src/copilot/copilot-instructions-installer.ts"],"names":[],"mappings":"AAmBA,yEAAyE;AACzE,eAAO,MAAM,kCAAkC,QAG9C,CAAC;AAEF,uDAAuD;AACvD,MAAM,WAAW,gCAAgC;IAC/C,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,+EAA+E;IAC/E,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AAwBD;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gCAAgC,CAAC,CAQ3C"}
@@ -20,8 +20,12 @@ import * as path from "node:path";
20
20
  export const COPILOT_INSTRUCTIONS_RELATIVE_PATH = path.join(".github", "copilot-instructions.md");
21
21
  const TEMPLATE = `# Copilot Instructions
22
22
 
23
- GitHub Copilot CLI auto-loads this file at session start as repository-specific
24
- guidance.
23
+ GitHub Copilot auto-loads this file at session start as repository-specific
24
+ guidance. Copilot also reads \`AGENTS.md\` at the project root natively — that is
25
+ Lisa's **canonical, cross-agent instruction file** and the single source of
26
+ truth for this project's guidance. Prefer editing \`AGENTS.md\`; keep this file
27
+ for Copilot-specific notes only, to avoid duplicated guidance across the two
28
+ files Copilot loads.
25
29
 
26
30
  Lisa governance is active in this project. Lisa's eager rules ship via the
27
31
  \`lisa-copilot\` plugin (see
@@ -30,17 +34,10 @@ through the plugin's bundled \`rules/\` directory plus the \`SessionStart\` hook
30
34
  \`inject-rules.sh\` (the same polyfill Lisa uses on Claude and Codex when the
31
35
  agent does not auto-load rules from a plugin).
32
36
 
33
- This file is the place to add project-specific guidance that Lisa's universal
34
- rules do not cover. It is create-only from Lisa's perspective — re-running
35
- \`lisa apply\` will never overwrite host-authored guidance here.
37
+ This file is create-only from Lisa's perspective — re-running \`lisa apply\` will
38
+ never overwrite host-authored guidance here.
36
39
 
37
- Reference paths Copilot reads natively at session start:
38
-
39
- - \`.github/copilot-instructions.md\` (this file)
40
- - \`AGENTS.md\` at project root, when present
41
- - \`CLAUDE.md\` at project root, when present (Copilot cross-reads)
42
-
43
- Add custom guidance below this line:
40
+ Add Copilot-specific guidance below this line:
44
41
  `;
45
42
  /**
46
43
  * Write a starter `.github/copilot-instructions.md` at the host project root,
@@ -1 +1 @@
1
- {"version":3,"file":"copilot-instructions-installer.js","sourceRoot":"","sources":["../../src/copilot/copilot-instructions-installer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,yEAAyE;AACzE,MAAM,CAAC,MAAM,kCAAkC,GAAG,IAAI,CAAC,IAAI,CACzD,SAAS,EACT,yBAAyB,CAC1B,CAAC;AAUF,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;CAuBhB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAAe;IAEf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kCAAkC,CAAC,CAAC;IACxE,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;IACrD,CAAC;IACD,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,kCAAkC,EAAE,CAAC;AAC7E,CAAC"}
1
+ {"version":3,"file":"copilot-instructions-installer.js","sourceRoot":"","sources":["../../src/copilot/copilot-instructions-installer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,yEAAyE;AACzE,MAAM,CAAC,MAAM,kCAAkC,GAAG,IAAI,CAAC,IAAI,CACzD,SAAS,EACT,yBAAyB,CAC1B,CAAC;AAUF,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;CAoBhB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAAe;IAEf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kCAAkC,CAAC,CAAC;IACxE,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;IACrD,CAAC;IACD,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,kCAAkC,EAAE,CAAC;AAC7E,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Marker that opened the legacy agy "baked rules" block in `AGENTS.md`. Retained
3
+ * here (after the agy AGENTS.md installer was removed) so the migration can
4
+ * recognize and strip blocks written by older Lisa versions.
5
+ */
6
+ export declare const LISA_RULES_START_MARKER = "<!-- LISA_RULES_START -->";
7
+ /** Marker that closed the legacy agy "baked rules" block in `AGENTS.md`. */
8
+ export declare const LISA_RULES_END_MARKER = "<!-- LISA_RULES_END -->";
9
+ /** Outcome of an instruction-files migration pass. */
10
+ export interface InstructionFilesMigrationResult {
11
+ /** True when any file was created or modified. */
12
+ readonly changed: boolean;
13
+ /** Human-readable description of each action taken (empty when no-op). */
14
+ readonly actions: readonly string[];
15
+ }
16
+ /**
17
+ * Remove a legacy agy `LISA_RULES_START..END` block from an AGENTS.md body,
18
+ * collapsing the whitespace left behind. Returns the original string unchanged
19
+ * when no well-formed block is present.
20
+ * @param body - Existing `AGENTS.md` contents.
21
+ * @returns The body with the Lisa-managed agy block removed.
22
+ */
23
+ export declare function stripBakedAgyRulesBlock(body: string): string;
24
+ /**
25
+ * Run the instruction-files migration against a host project root.
26
+ * @param destDir - Absolute path to the host project root.
27
+ * @returns Whether anything changed plus a description of each action.
28
+ */
29
+ export declare function migrateInstructionFiles(destDir: string): Promise<InstructionFilesMigrationResult>;
30
+ //# sourceMappingURL=instruction-files-migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instruction-files-migration.d.ts","sourceRoot":"","sources":["../../src/core/instruction-files-migration.ts"],"names":[],"mappings":"AAoCA;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,4EAA4E;AAC5E,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAE/D,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;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAU5D;AA8CD;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,+BAA+B,CAAC,CAK1C"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Migrate a host project's agent instruction files to Lisa's canonical pattern:
3
+ *
4
+ * - `AGENTS.md` is the single, cross-agent instruction file (read natively by
5
+ * Codex, Cursor, Copilot, and agy).
6
+ * - `CLAUDE.md` is a thin pointer that `@AGENTS.md`-imports it (Claude Code
7
+ * does not read AGENTS.md natively).
8
+ *
9
+ * This is the non-destructive, idempotent cleanup `lisa doctor` runs on existing
10
+ * projects that predate the pattern. It:
11
+ *
12
+ * 1. Creates a canonical `AGENTS.md` when one is missing.
13
+ * 2. Strips the legacy agy "baked rules" block
14
+ * (`<!-- LISA_RULES_START -->...<!-- LISA_RULES_END -->`) from an existing
15
+ * `AGENTS.md` — Lisa no longer bakes rule bodies into the file.
16
+ * 3. Ensures `CLAUDE.md` imports `AGENTS.md`: creates the pointer when no
17
+ * `CLAUDE.md` exists, or prepends the `@AGENTS.md` import to an existing
18
+ * host-authored `CLAUDE.md` (preserving all existing content).
19
+ *
20
+ * Host content is never deleted: the only thing removed is the clearly
21
+ * Lisa-managed agy marker block. Everything else is additive.
22
+ * @module core/instruction-files-migration
23
+ */
24
+ import { existsSync } from "node:fs";
25
+ import { readFile, writeFile } from "node:fs/promises";
26
+ import * as path from "node:path";
27
+ import { AGENTS_MD_FILENAME, installAgentsMd, } from "../codex/agents-md-installer.js";
28
+ import { CLAUDE_MD_AGENTS_IMPORT, CLAUDE_MD_FILENAME, installClaudeMd, } from "../claude/claude-md-installer.js";
29
+ /**
30
+ * Marker that opened the legacy agy "baked rules" block in `AGENTS.md`. Retained
31
+ * here (after the agy AGENTS.md installer was removed) so the migration can
32
+ * recognize and strip blocks written by older Lisa versions.
33
+ */
34
+ export const LISA_RULES_START_MARKER = "<!-- LISA_RULES_START -->";
35
+ /** Marker that closed the legacy agy "baked rules" block in `AGENTS.md`. */
36
+ export const LISA_RULES_END_MARKER = "<!-- LISA_RULES_END -->";
37
+ /**
38
+ * Remove a legacy agy `LISA_RULES_START..END` block from an AGENTS.md body,
39
+ * collapsing the whitespace left behind. Returns the original string unchanged
40
+ * when no well-formed block is present.
41
+ * @param body - Existing `AGENTS.md` contents.
42
+ * @returns The body with the Lisa-managed agy block removed.
43
+ */
44
+ export function stripBakedAgyRulesBlock(body) {
45
+ const startIdx = body.indexOf(LISA_RULES_START_MARKER);
46
+ const endIdx = body.indexOf(LISA_RULES_END_MARKER);
47
+ if (startIdx === -1 || endIdx === -1 || endIdx < startIdx) {
48
+ return body;
49
+ }
50
+ const before = body.slice(0, startIdx);
51
+ const after = body.slice(endIdx + LISA_RULES_END_MARKER.length);
52
+ // Collapse 3+ consecutive newlines to two (bounded quantifier for slow-regex).
53
+ return `${(before + after).replace(/\n\n\n+/g, "\n\n").trim()}\n`;
54
+ }
55
+ /**
56
+ * Ensure a canonical `AGENTS.md` exists and carries no legacy agy baked-rules
57
+ * block.
58
+ * @param destDir - Absolute path to the host project root.
59
+ * @returns Action strings describing what changed (empty when nothing did).
60
+ */
61
+ async function reconcileAgentsMd(destDir) {
62
+ const filePath = path.join(destDir, AGENTS_MD_FILENAME);
63
+ if (!existsSync(filePath)) {
64
+ const result = await installAgentsMd(destDir);
65
+ return result.created ? [`created ${AGENTS_MD_FILENAME}`] : [];
66
+ }
67
+ const existing = await readFile(filePath, "utf8");
68
+ const stripped = stripBakedAgyRulesBlock(existing);
69
+ if (stripped === existing) {
70
+ return [];
71
+ }
72
+ await writeFile(filePath, stripped, "utf8");
73
+ return [`removed legacy baked-rules block from ${AGENTS_MD_FILENAME}`];
74
+ }
75
+ /**
76
+ * Ensure `CLAUDE.md` imports the canonical `AGENTS.md`.
77
+ *
78
+ * Creates the pointer file when no `CLAUDE.md` exists, or prepends the
79
+ * `@AGENTS.md` import to an existing host-authored file (preserving its content).
80
+ * @param destDir - Absolute path to the host project root.
81
+ * @returns Action strings describing what changed (empty when nothing did).
82
+ */
83
+ async function reconcileClaudeMd(destDir) {
84
+ const filePath = path.join(destDir, CLAUDE_MD_FILENAME);
85
+ if (!existsSync(filePath)) {
86
+ const result = await installClaudeMd(destDir);
87
+ return result.created ? [`created ${CLAUDE_MD_FILENAME} pointer`] : [];
88
+ }
89
+ const existing = await readFile(filePath, "utf8");
90
+ if (existing.includes(CLAUDE_MD_AGENTS_IMPORT)) {
91
+ return [];
92
+ }
93
+ const prefix = `${CLAUDE_MD_AGENTS_IMPORT}\n\n<!-- Lisa: import the canonical AGENTS.md so Claude Code loads the same guidance every other agent reads. -->\n\n`;
94
+ await writeFile(filePath, prefix + existing, "utf8");
95
+ return [`added ${CLAUDE_MD_AGENTS_IMPORT} import to ${CLAUDE_MD_FILENAME}`];
96
+ }
97
+ /**
98
+ * Run the instruction-files migration against a host project root.
99
+ * @param destDir - Absolute path to the host project root.
100
+ * @returns Whether anything changed plus a description of each action.
101
+ */
102
+ export async function migrateInstructionFiles(destDir) {
103
+ const agentsActions = await reconcileAgentsMd(destDir);
104
+ const claudeActions = await reconcileClaudeMd(destDir);
105
+ const actions = [...agentsActions, ...claudeActions];
106
+ return { changed: actions.length > 0, actions };
107
+ }
108
+ //# sourceMappingURL=instruction-files-migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instruction-files-migration.js","sourceRoot":"","sources":["../../src/core/instruction-files-migration.ts"],"names":[],"mappings":"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"}