@indy2kro/agentenv 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/dist/adapters/agent-dirs.d.ts +29 -0
  2. package/dist/adapters/agent-dirs.d.ts.map +1 -0
  3. package/dist/adapters/agent-dirs.js +46 -0
  4. package/dist/adapters/agent-dirs.js.map +1 -0
  5. package/dist/adapters/base.d.ts +7 -1
  6. package/dist/adapters/base.d.ts.map +1 -1
  7. package/dist/adapters/base.js.map +1 -1
  8. package/dist/adapters/claude.d.ts.map +1 -1
  9. package/dist/adapters/claude.js +18 -10
  10. package/dist/adapters/claude.js.map +1 -1
  11. package/dist/adapters/cline.d.ts.map +1 -1
  12. package/dist/adapters/cline.js +2 -2
  13. package/dist/adapters/cline.js.map +1 -1
  14. package/dist/adapters/codex.d.ts.map +1 -1
  15. package/dist/adapters/codex.js +3 -2
  16. package/dist/adapters/codex.js.map +1 -1
  17. package/dist/adapters/copilot.d.ts.map +1 -1
  18. package/dist/adapters/copilot.js +3 -4
  19. package/dist/adapters/copilot.js.map +1 -1
  20. package/dist/adapters/cursor.d.ts.map +1 -1
  21. package/dist/adapters/cursor.js +7 -6
  22. package/dist/adapters/cursor.js.map +1 -1
  23. package/dist/adapters/detect.d.ts.map +1 -1
  24. package/dist/adapters/detect.js +1 -0
  25. package/dist/adapters/detect.js.map +1 -1
  26. package/dist/adapters/gemini.d.ts.map +1 -1
  27. package/dist/adapters/gemini.js +2 -2
  28. package/dist/adapters/gemini.js.map +1 -1
  29. package/dist/adapters/index.d.ts +4 -0
  30. package/dist/adapters/index.d.ts.map +1 -1
  31. package/dist/adapters/index.js +21 -0
  32. package/dist/adapters/index.js.map +1 -1
  33. package/dist/adapters/opencode.d.ts.map +1 -1
  34. package/dist/adapters/opencode.js +2 -2
  35. package/dist/adapters/opencode.js.map +1 -1
  36. package/dist/adapters/rtk-delegation.d.ts.map +1 -1
  37. package/dist/adapters/rtk-delegation.js +16 -1
  38. package/dist/adapters/rtk-delegation.js.map +1 -1
  39. package/dist/adapters/vibe.d.ts.map +1 -1
  40. package/dist/adapters/vibe.js +2 -2
  41. package/dist/adapters/vibe.js.map +1 -1
  42. package/dist/adapters/windsurf.d.ts.map +1 -1
  43. package/dist/adapters/windsurf.js +2 -2
  44. package/dist/adapters/windsurf.js.map +1 -1
  45. package/dist/cli/exit.d.ts +17 -6
  46. package/dist/cli/exit.d.ts.map +1 -1
  47. package/dist/cli/exit.js +17 -7
  48. package/dist/cli/exit.js.map +1 -1
  49. package/dist/commands/apply.d.ts +77 -0
  50. package/dist/commands/apply.d.ts.map +1 -1
  51. package/dist/commands/apply.js +202 -27
  52. package/dist/commands/apply.js.map +1 -1
  53. package/dist/commands/config-edit.d.ts +33 -0
  54. package/dist/commands/config-edit.d.ts.map +1 -0
  55. package/dist/commands/config-edit.js +216 -0
  56. package/dist/commands/config-edit.js.map +1 -0
  57. package/dist/commands/doctor.d.ts +41 -0
  58. package/dist/commands/doctor.d.ts.map +1 -1
  59. package/dist/commands/doctor.js +135 -52
  60. package/dist/commands/doctor.js.map +1 -1
  61. package/dist/commands/setup.d.ts +4 -0
  62. package/dist/commands/setup.d.ts.map +1 -1
  63. package/dist/commands/setup.js +58 -5
  64. package/dist/commands/setup.js.map +1 -1
  65. package/dist/commands/status.d.ts.map +1 -1
  66. package/dist/commands/status.js +40 -16
  67. package/dist/commands/status.js.map +1 -1
  68. package/dist/commands/uninstall.d.ts +78 -1
  69. package/dist/commands/uninstall.d.ts.map +1 -1
  70. package/dist/commands/uninstall.js +329 -31
  71. package/dist/commands/uninstall.js.map +1 -1
  72. package/dist/commands/update.d.ts +51 -0
  73. package/dist/commands/update.d.ts.map +1 -1
  74. package/dist/commands/update.js +172 -71
  75. package/dist/commands/update.js.map +1 -1
  76. package/dist/commands/wizard.d.ts +27 -1
  77. package/dist/commands/wizard.d.ts.map +1 -1
  78. package/dist/commands/wizard.js +48 -31
  79. package/dist/commands/wizard.js.map +1 -1
  80. package/dist/config/schema.d.ts +31 -3
  81. package/dist/config/schema.d.ts.map +1 -1
  82. package/dist/config/schema.js +224 -123
  83. package/dist/config/schema.js.map +1 -1
  84. package/dist/config/scopes.d.ts +4 -2
  85. package/dist/config/scopes.d.ts.map +1 -1
  86. package/dist/config/scopes.js +23 -4
  87. package/dist/config/scopes.js.map +1 -1
  88. package/dist/generate/agentsmd.d.ts +54 -0
  89. package/dist/generate/agentsmd.d.ts.map +1 -1
  90. package/dist/generate/agentsmd.js +225 -143
  91. package/dist/generate/agentsmd.js.map +1 -1
  92. package/dist/index.js +9 -2
  93. package/dist/index.js.map +1 -1
  94. package/dist/integrations/render.d.ts.map +1 -1
  95. package/dist/integrations/render.js +25 -10
  96. package/dist/integrations/render.js.map +1 -1
  97. package/dist/integrations/superpowers.d.ts.map +1 -1
  98. package/dist/integrations/superpowers.js +2 -0
  99. package/dist/integrations/superpowers.js.map +1 -1
  100. package/dist/shell/detector.d.ts +22 -2
  101. package/dist/shell/detector.d.ts.map +1 -1
  102. package/dist/shell/detector.js +122 -34
  103. package/dist/shell/detector.js.map +1 -1
  104. package/dist/toolchain/gh.d.ts.map +1 -1
  105. package/dist/toolchain/gh.js +1 -0
  106. package/dist/toolchain/gh.js.map +1 -1
  107. package/dist/toolchain/mise.d.ts +7 -0
  108. package/dist/toolchain/mise.d.ts.map +1 -1
  109. package/dist/toolchain/mise.js +23 -3
  110. package/dist/toolchain/mise.js.map +1 -1
  111. package/dist/toolchain/rtk.d.ts +71 -3
  112. package/dist/toolchain/rtk.d.ts.map +1 -1
  113. package/dist/toolchain/rtk.js +115 -7
  114. package/dist/toolchain/rtk.js.map +1 -1
  115. package/dist/ui/output.d.ts.map +1 -1
  116. package/dist/ui/output.js +10 -2
  117. package/dist/ui/output.js.map +1 -1
  118. package/dist/ui/spinner.d.ts +15 -3
  119. package/dist/ui/spinner.d.ts.map +1 -1
  120. package/dist/ui/spinner.js +52 -4
  121. package/dist/ui/spinner.js.map +1 -1
  122. package/dist/ui/theme.d.ts +27 -1
  123. package/dist/ui/theme.d.ts.map +1 -1
  124. package/dist/ui/theme.js +73 -8
  125. package/dist/ui/theme.js.map +1 -1
  126. package/dist/utils/fs-retry.d.ts +16 -0
  127. package/dist/utils/fs-retry.d.ts.map +1 -1
  128. package/dist/utils/fs-retry.js +28 -0
  129. package/dist/utils/fs-retry.js.map +1 -1
  130. package/package.json +4 -3
@@ -1 +1 @@
1
- {"version":3,"file":"scopes.d.ts","sourceRoot":"","sources":["../../src/config/scopes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,eAAO,MAAM,YAAY,8BAA+B,CAAC;AACzD,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG;IAAE,KAAK,CAAC,EAAE,UAAU,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAIhG;AAED,wBAAgB,aAAa,IAAI,MAAM,CAOtC;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAE7E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAE5E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,GAAG,SAAS,CAM9E"}
1
+ {"version":3,"file":"scopes.d.ts","sourceRoot":"","sources":["../../src/config/scopes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,eAAO,MAAM,YAAY,8BAA+B,CAAC;AACzD,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG;IAAE,KAAK,CAAC,EAAE,UAAU,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAIhG;AAED,wBAAgB,aAAa,IAAI,MAAM,CAOtC;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAE7E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAE5E;AAkBD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,GAAG,SAAS,CAM9E"}
@@ -36,12 +36,31 @@ export function configFilePath(scope) {
36
36
  return path.join(resolveScopeDir(scope), 'agentenv.toml');
37
37
  }
38
38
  /**
39
- * Locate an existing agentenv.toml: project config first, then user/global.
40
- * Returns the first match, or undefined when none exists.
39
+ * Walk from `startDir` up to the filesystem root looking for `filename`, the
40
+ * way git looks for `.git` and mise looks for `mise.toml`. Returns the first
41
+ * match, or undefined if none exists all the way to the root.
42
+ */
43
+ function findUpward(startDir, filename) {
44
+ let dir = path.resolve(startDir);
45
+ for (;;) {
46
+ const candidate = path.join(dir, filename);
47
+ if (fs.existsSync(candidate))
48
+ return candidate;
49
+ const parent = path.dirname(dir);
50
+ if (parent === dir)
51
+ return undefined;
52
+ dir = parent;
53
+ }
54
+ }
55
+ /**
56
+ * Locate an existing agentenv.toml: project config first — searching `cwd`
57
+ * and its parent directories, so `agentenv status` from `repo/src` still
58
+ * finds `repo/agentenv.toml` — then user/global. Returns the first match, or
59
+ * undefined when none exists.
41
60
  */
42
61
  export function findConfigPath(cwd = process.cwd()) {
43
- const project = path.join(cwd, 'agentenv.toml');
44
- if (fs.existsSync(project))
62
+ const project = findUpward(cwd, 'agentenv.toml');
63
+ if (project)
45
64
  return project;
46
65
  const user = path.join(userConfigDir(), 'agentenv.toml');
47
66
  if (fs.existsSync(user))
@@ -1 +1 @@
1
- {"version":3,"file":"scopes.js","sourceRoot":"","sources":["../../src/config/scopes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,MAAM,CAAU,CAAC;AAGzD;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,KAAyB;IACtD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACrE,OAAO,EAAE,KAAK,EAAE,oBAAoB,KAAK,kCAAkC,EAAE,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACxC,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IACzE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAqC;IACnE,OAAO,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAqC;IAClE,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACxD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAChD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,eAAe,CAAC,CAAC;IACzD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"scopes.js","sourceRoot":"","sources":["../../src/config/scopes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,MAAM,CAAU,CAAC;AAGzD;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,KAAyB;IACtD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACrE,OAAO,EAAE,KAAK,EAAE,oBAAoB,KAAK,kCAAkC,EAAE,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACxC,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IACzE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAqC;IACnE,OAAO,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAqC;IAClE,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC,CAAC;AAC5D,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CAAC,QAAgB,EAAE,QAAgB;IACpD,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,SAAS,CAAC;QACR,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC3C,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,SAAS,CAAC;QACrC,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACxD,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IACjD,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,eAAe,CAAC,CAAC;IACzD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -40,6 +40,26 @@ export declare function saveGeneratedFiles(files: GeneratedFile[]): {
40
40
  error: string;
41
41
  }>;
42
42
  };
43
+ export type MarkerUpdatePlan = {
44
+ status: 'create';
45
+ content: string;
46
+ } | {
47
+ status: 'update';
48
+ content: string;
49
+ backupFirst: boolean;
50
+ } | {
51
+ status: 'unchanged';
52
+ } | {
53
+ status: 'error';
54
+ message: string;
55
+ };
56
+ /**
57
+ * Decide what updateWithMarkers() would do to `filePath`, without writing
58
+ * anything (it still reads the existing file, if any). The single source of
59
+ * truth for both the real write and `apply --dry-run`'s preview (FEAT-06),
60
+ * so they can never disagree about what counts as a change.
61
+ */
62
+ export declare function planMarkerUpdate(filePath: string, newContent: string, markerStart: string, markerEnd: string): MarkerUpdatePlan;
43
63
  /**
44
64
  * Update existing AGENTS.md/CLAUDE.md with new content, preserving user additions
45
65
  * Uses marker blocks to only replace the managed sections
@@ -49,4 +69,38 @@ export declare function updateWithMarkers(filePath: string, newContent: string,
49
69
  updated: boolean;
50
70
  message: string;
51
71
  };
72
+ export type MarkerRemovalPlan = {
73
+ status: 'delete';
74
+ } | {
75
+ status: 'strip';
76
+ content: string;
77
+ } | {
78
+ status: 'absent';
79
+ } | {
80
+ status: 'no-markers';
81
+ } | {
82
+ status: 'error';
83
+ message: string;
84
+ };
85
+ /**
86
+ * Decide what removeMarkerBlock() would do to `filePath` — the read half of
87
+ * an unwire (FEAT-03), mirroring planMarkerUpdate()'s role for apply. A file
88
+ * that contains only the managed block (nothing else before/after it, once
89
+ * whitespace is trimmed) is deleted outright rather than left as an empty
90
+ * shell; a file with user content around the block keeps that content and
91
+ * loses only the block.
92
+ */
93
+ export declare function planMarkerRemoval(filePath: string, markerStart: string, markerEnd: string): MarkerRemovalPlan;
94
+ /**
95
+ * Remove the agentenv-managed block from `filePath` (the write half of an
96
+ * unwire, FEAT-03). Deletes the file when it held only the managed block;
97
+ * otherwise strips just the block and preserves the surrounding user
98
+ * content. A file with no markers, or that doesn't exist, is left untouched.
99
+ */
100
+ export declare function removeMarkerBlock(filePath: string, markerStart: string, markerEnd: string): {
101
+ success: boolean;
102
+ removed: boolean;
103
+ deleted: boolean;
104
+ message: string;
105
+ };
52
106
  //# sourceMappingURL=agentsmd.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agentsmd.d.ts","sourceRoot":"","sources":["../../src/generate/agentsmd.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,cAAc,EAAiD,MAAM,qBAAqB,CAAC;AAIpG,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA8ClD,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAgH/D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,cAA+B,GAAG,MAAM,CAgChF;AAkED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,qCAAsC,CAAC;AAExE;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,MAAY,GACpB,aAAa,EAAE,CAsBjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG;IAC1D,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD,CAsBA;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CA4GA"}
1
+ {"version":3,"file":"agentsmd.d.ts","sourceRoot":"","sources":["../../src/generate/agentsmd.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,cAAc,EAAiD,MAAM,qBAAqB,CAAC;AAIpG,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAiDlD,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAkBD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CA0G/D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,cAA+B,GAAG,MAAM,CAgChF;AA8CD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,qCAAsC,CAAC;AAExE;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,MAAY,GACpB,aAAa,EAAE,CAsBjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG;IAC1D,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD,CAsBA;AAaD,MAAM,MAAM,gBAAgB,GACxB;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,GAC3D;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,gBAAgB,CAsElB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CA8BA;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,GACpB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,GACpB;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,GACxB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,iBAAiB,CAoCnB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA6C3E"}
@@ -5,7 +5,7 @@
5
5
  import * as fs from 'fs';
6
6
  import * as path from 'path';
7
7
  import { BINARY_MAP, TOOL_DESCRIPTIONS, DEFAULT_CONFIG } from '../config/schema.js';
8
- import { writeFileWithRetry } from '../utils/fs-retry.js';
8
+ import { backupBeforeFirstEdit, writeFileWithRetry } from '../utils/fs-retry.js';
9
9
  // Tool categories for organization
10
10
  export const TOOL_CATEGORIES = {
11
11
  // Search & Text Processing
@@ -41,6 +41,9 @@ export const TOOL_CATEGORIES = {
41
41
  shellcheck: 'Linting & Security',
42
42
  actionlint: 'Linting & Security',
43
43
  gitleaks: 'Linting & Security',
44
+ taplo: 'Linting & Security',
45
+ hadolint: 'Linting & Security',
46
+ trivy: 'Linting & Security',
44
47
  // Data & Analysis
45
48
  duckdb: 'Data & Analysis',
46
49
  qsv: 'Data & Analysis',
@@ -48,6 +51,20 @@ export const TOOL_CATEGORIES = {
48
51
  jless: 'Docs & Reading',
49
52
  tealdeer: 'Docs & Reading',
50
53
  };
54
+ /**
55
+ * Per-tool tips for the "General Instructions" section. Only tools that are
56
+ * actually enabled get a tip, so agents are never told to use a binary that
57
+ * isn't installed. `bat`/`git_delta` point agents at non-interactive
58
+ * flags/commands instead of a pager, since agents run without a TTY.
59
+ */
60
+ const GENERAL_INSTRUCTION_TIPS = {
61
+ ripgrep: 'For file search, use `rg` (ripgrep) instead of `grep -r`',
62
+ fd: 'For finding files, use `fd` instead of `find`',
63
+ jq: 'For JSON processing, use `jq`',
64
+ bat: 'For viewing files, use `bat --plain --paging=never` instead of `cat` (skips the pager and decorations, which matter for a human, not an agent)',
65
+ eza: 'For directory listings, use `eza` instead of `ls`',
66
+ git_delta: '`delta` gives syntax-highlighted diffs for human review; run `git --no-pager diff` (or plain `git diff`) directly instead of piping through it',
67
+ };
51
68
  /**
52
69
  * Generate AGENTS.md content from configuration
53
70
  */
@@ -59,26 +76,16 @@ export function generateAgentsMd(config) {
59
76
  const markerEnd = config.generate?.marker_end ||
60
77
  DEFAULT_CONFIG.generate?.marker_end ||
61
78
  '<!-- agentenv-managed-end -->';
79
+ const isUserScope = config.scope === 'user';
62
80
  // Keep all agentenv-owned content in a single block. User-authored content
63
81
  // can safely live before or after it.
64
82
  lines.push(markerStart);
65
83
  // Header
66
84
  lines.push('# AI Coding Agent Instructions');
67
85
  lines.push('');
68
- lines.push('This file provides instructions for AI coding agents operating in this repository.');
69
- lines.push('');
70
- // Supported Agents section
71
- lines.push('## Supported Agents');
72
- lines.push('');
73
- const enabledAgents = getEnabledAgentsForOutput(config);
74
- if (enabledAgents.length > 0) {
75
- for (const agent of enabledAgents) {
76
- lines.push(`- ${agent}`);
77
- }
78
- }
79
- else {
80
- lines.push('- No agents configured');
81
- }
86
+ lines.push(isUserScope
87
+ ? 'This file provides instructions for AI coding agents, configured globally by agentenv.'
88
+ : 'This file provides instructions for AI coding agents operating in this repository.');
82
89
  lines.push('');
83
90
  // Available Tools section
84
91
  lines.push('## Available Tools');
@@ -99,41 +106,42 @@ export function generateAgentsMd(config) {
99
106
  lines.push('');
100
107
  }
101
108
  }
102
- // RTK special section
109
+ // A single rtk section (catalog entry + usage notes combined, rather than
110
+ // repeating the same "rewrites commands to save tokens" claim twice under
111
+ // two separate headings).
103
112
  if (config.rtk?.enabled) {
104
113
  lines.push('### Token Optimization');
105
114
  lines.push('');
106
- lines.push('- **rtk**: CLI proxy that reduces LLM token consumption by 60-90% on common dev commands');
107
- lines.push(' - Automatically rewrites commands like `grep`, `find`, `cat`, etc. to faster, more token-efficient alternatives');
108
- lines.push(' - Maintains command semantics while optimizing for LLM context');
115
+ lines.push('- **rtk** (binary: `rtk`): CLI proxy that reduces LLM token consumption by 60-90% on common dev commands');
116
+ lines.push(' - Automatically rewrites commands like `grep`, `find`, `cat`, etc. to faster, more token-efficient alternatives; output is truncated to reduce token usage while preserving essential information');
117
+ lines.push(" - If a rewrite misbehaves (e.g. drops a flag it doesn't understand), run `rtk proxy <cmd>` to execute the original command unmodified");
118
+ lines.push(' - Use `rtk --help` for more information');
109
119
  lines.push('');
110
120
  }
111
121
  lines.push('');
112
- // General Instructions section
122
+ // General Instructions section — generated from the enabled tools so an
123
+ // agent is never told to use a binary that isn't actually available.
113
124
  lines.push('## General Instructions');
114
125
  lines.push('');
115
126
  lines.push('- Prefer using the tools listed above for their respective tasks');
116
- lines.push('- For file search, use `rg` (ripgrep) instead of `grep -r`');
117
- lines.push('- For finding files, use `fd` instead of `find`');
118
- lines.push('- For JSON processing, use `jq`');
119
- lines.push('- For viewing files, use `bat` instead of `cat`');
120
- lines.push('- For directory listings, use `eza` instead of `ls`');
121
- lines.push('- When working with git diffs, use `delta` for syntax-highlighted output');
122
- if (config.rtk?.enabled) {
123
- lines.push('');
124
- lines.push('## RTK Configuration');
125
- lines.push('');
126
- lines.push('RTK (Red Teaming Kit) is enabled and will optimize your commands:');
127
- lines.push('- Commands are automatically rewritten to use the most efficient tools available');
128
- lines.push('- Output is truncated to reduce token usage while preserving essential information');
129
- lines.push('- Use `rtk --help` for more information about RTK');
127
+ for (const tool of enabledTools) {
128
+ const tip = GENERAL_INSTRUCTION_TIPS[tool];
129
+ if (tip)
130
+ lines.push(`- ${tip}`);
130
131
  }
131
132
  lines.push('');
132
133
  lines.push('## Environment Notes');
133
134
  lines.push('');
134
- lines.push('- This repository has been configured with agentenv for optimal AI coding agent performance');
135
- lines.push('- Tools are managed via [mise](https://mise.jdx.dev)');
136
- lines.push('- If a listed tool is missing, run `mise trust` and `mise install` in the repo root');
135
+ if (isUserScope) {
136
+ lines.push('- This machine has been configured with agentenv (user scope) for optimal AI coding agent performance');
137
+ lines.push('- Tools are managed via [mise](https://mise.jdx.dev)');
138
+ lines.push('- If a listed tool is missing, run `mise trust` and `mise install` in your agentenv user config directory (`~/.config/agentenv` by default, or `$XDG_CONFIG_HOME/agentenv`)');
139
+ }
140
+ else {
141
+ lines.push('- This repository has been configured with agentenv for optimal AI coding agent performance');
142
+ lines.push('- Tools are managed via [mise](https://mise.jdx.dev)');
143
+ lines.push('- If a listed tool is missing, run `mise trust` and `mise install` in the repo root');
144
+ }
137
145
  lines.push('- Configuration is managed in `agentenv.toml`');
138
146
  lines.push('');
139
147
  lines.push(markerEnd);
@@ -185,32 +193,6 @@ function categorizeTools(tools) {
185
193
  }
186
194
  return categories;
187
195
  }
188
- /**
189
- * Get enabled agents for output (formatted names)
190
- */
191
- function getEnabledAgentsForOutput(config) {
192
- const agents = config.agents || DEFAULT_CONFIG.agents || {};
193
- const enabled = [];
194
- if (agents.claude_code)
195
- enabled.push('Claude Code');
196
- if (agents.codex_cli)
197
- enabled.push('Codex CLI');
198
- if (agents.copilot)
199
- enabled.push('GitHub Copilot');
200
- if (agents.opencode)
201
- enabled.push('OpenCode');
202
- if (agents.gemini_cli)
203
- enabled.push('Gemini CLI');
204
- if (agents.cursor)
205
- enabled.push('Cursor');
206
- if (agents.windsurf)
207
- enabled.push('Windsurf');
208
- if (agents.cline)
209
- enabled.push('Cline CLI');
210
- if (agents.vibe)
211
- enabled.push('Mistral Vibe');
212
- return enabled;
213
- }
214
196
  /**
215
197
  * Get enabled tools for output
216
198
  */
@@ -288,102 +270,202 @@ export function saveGeneratedFiles(files) {
288
270
  errors,
289
271
  };
290
272
  }
273
+ /** The dominant line ending in `content`, defaulting to LF for empty/LF-only content. */
274
+ function detectLineEnding(content) {
275
+ return content.includes('\r\n') ? '\r\n' : '\n';
276
+ }
277
+ /** Normalize `content` to LF, then to `eol` — so callers never double up an existing `\r`. */
278
+ function matchLineEndings(content, eol) {
279
+ const normalized = content.replace(/\r\n/g, '\n');
280
+ return eol === '\r\n' ? normalized.replace(/\n/g, '\r\n') : normalized;
281
+ }
282
+ /**
283
+ * Decide what updateWithMarkers() would do to `filePath`, without writing
284
+ * anything (it still reads the existing file, if any). The single source of
285
+ * truth for both the real write and `apply --dry-run`'s preview (FEAT-06),
286
+ * so they can never disagree about what counts as a change.
287
+ */
288
+ export function planMarkerUpdate(filePath, newContent, markerStart, markerEnd) {
289
+ if (!fs.existsSync(filePath)) {
290
+ return { status: 'create', content: newContent };
291
+ }
292
+ const existingContent = fs.readFileSync(filePath, 'utf-8');
293
+ const hasStart = existingContent.includes(markerStart);
294
+ const hasEnd = existingContent.includes(markerEnd);
295
+ // Only one marker present means a crashed/incomplete prior write; treat
296
+ // the file as broken rather than appending a second block, which the next
297
+ // pass would otherwise replace from the first start-marker to the later
298
+ // end-marker — clobbering any user text between them.
299
+ if (hasStart !== hasEnd) {
300
+ return {
301
+ status: 'error',
302
+ message: `File ${filePath} contains only one managed marker (a partial write); leaving it untouched`,
303
+ };
304
+ }
305
+ // Existing files without markers belong to the user. Preserve them and
306
+ // append only our newly managed block.
307
+ if (!hasStart) {
308
+ const newStartIndex = newContent.indexOf(markerStart);
309
+ const newEndIndex = newContent.indexOf(markerEnd, newStartIndex);
310
+ if (newStartIndex === -1 || newEndIndex === -1) {
311
+ return { status: 'error', message: `Markers not found in new content` };
312
+ }
313
+ const eol = detectLineEnding(existingContent);
314
+ const managedBlock = matchLineEndings(newContent.substring(newStartIndex, newEndIndex + markerEnd.length), eol);
315
+ const separator = existingContent.length === 0 || existingContent.endsWith(eol) ? eol : eol + eol;
316
+ return {
317
+ status: 'update',
318
+ content: `${existingContent}${separator}${managedBlock}${eol}`,
319
+ backupFirst: true,
320
+ };
321
+ }
322
+ // Extract the parts before and after the markers
323
+ const startIndex = existingContent.indexOf(markerStart);
324
+ const endIndex = existingContent.indexOf(markerEnd, startIndex);
325
+ if (startIndex === -1 || endIndex === -1 || startIndex >= endIndex) {
326
+ return { status: 'error', message: `Invalid marker positions in ${filePath}` };
327
+ }
328
+ const before = existingContent.substring(0, startIndex);
329
+ const after = existingContent.substring(endIndex + markerEnd.length);
330
+ // Find the content between markers in the new content
331
+ const newStartIndex = newContent.indexOf(markerStart);
332
+ const newEndIndex = newContent.indexOf(markerEnd, newStartIndex);
333
+ if (newStartIndex === -1 || newEndIndex === -1) {
334
+ return { status: 'error', message: `Markers not found in new content` };
335
+ }
336
+ const newMiddle = matchLineEndings(newContent.substring(newStartIndex, newEndIndex + markerEnd.length), detectLineEnding(existingContent));
337
+ const updatedContent = before + newMiddle + after;
338
+ if (updatedContent === existingContent) {
339
+ return { status: 'unchanged' };
340
+ }
341
+ return { status: 'update', content: updatedContent, backupFirst: false };
342
+ }
291
343
  /**
292
344
  * Update existing AGENTS.md/CLAUDE.md with new content, preserving user additions
293
345
  * Uses marker blocks to only replace the managed sections
294
346
  */
295
347
  export function updateWithMarkers(filePath, newContent, markerStart, markerEnd) {
296
348
  try {
297
- if (!fs.existsSync(filePath)) {
298
- // File doesn't exist, just create it
299
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
300
- writeFileWithRetry(filePath, newContent);
301
- return {
302
- success: true,
303
- updated: true,
304
- message: `Created ${filePath}`,
305
- };
306
- }
307
- const existingContent = fs.readFileSync(filePath, 'utf-8');
308
- const hasStart = existingContent.includes(markerStart);
309
- const hasEnd = existingContent.includes(markerEnd);
310
- // Only one marker present means a crashed/incomplete prior write; treat
311
- // the file as broken rather than appending a second block, which the next
312
- // pass would otherwise replace from the first start-marker to the later
313
- // end-marker — clobbering any user text between them.
314
- if (hasStart !== hasEnd) {
315
- return {
316
- success: false,
317
- updated: false,
318
- message: `File ${filePath} contains only one managed marker (a partial write); leaving it untouched`,
319
- };
320
- }
321
- // Existing files without markers belong to the user. Preserve them and
322
- // append only our newly managed block.
323
- if (!hasStart) {
324
- const newStartIndex = newContent.indexOf(markerStart);
325
- const newEndIndex = newContent.indexOf(markerEnd, newStartIndex);
326
- if (newStartIndex === -1 || newEndIndex === -1) {
349
+ const plan = planMarkerUpdate(filePath, newContent, markerStart, markerEnd);
350
+ switch (plan.status) {
351
+ case 'error':
352
+ return { success: false, updated: false, message: plan.message };
353
+ case 'unchanged':
354
+ return { success: true, updated: false, message: `No changes needed for ${filePath}` };
355
+ case 'create':
356
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
357
+ writeFileWithRetry(filePath, plan.content);
358
+ return { success: true, updated: true, message: `Created ${filePath}` };
359
+ case 'update':
360
+ // This file predates agentenv (it had no managed markers yet) —
361
+ // back up the user's original content before appending to it.
362
+ if (plan.backupFirst)
363
+ backupBeforeFirstEdit(filePath);
364
+ writeFileWithRetry(filePath, plan.content);
327
365
  return {
328
- success: false,
329
- updated: false,
330
- message: `Markers not found in new content`,
366
+ success: true,
367
+ updated: true,
368
+ message: plan.backupFirst ? `Added managed block to ${filePath}` : `Updated ${filePath}`,
331
369
  };
332
- }
333
- const managedBlock = newContent.substring(newStartIndex, newEndIndex + markerEnd.length);
334
- const separator = existingContent.length === 0 || existingContent.endsWith('\n') ? '\n' : '\n\n';
335
- writeFileWithRetry(filePath, `${existingContent}${separator}${managedBlock}\n`);
336
- return {
337
- success: true,
338
- updated: true,
339
- message: `Added managed block to ${filePath}`,
340
- };
341
- }
342
- // Extract the parts before and after the markers
343
- const startIndex = existingContent.indexOf(markerStart);
344
- const endIndex = existingContent.indexOf(markerEnd, startIndex);
345
- if (startIndex === -1 || endIndex === -1 || startIndex >= endIndex) {
346
- return {
347
- success: false,
348
- updated: false,
349
- message: `Invalid marker positions in ${filePath}`,
350
- };
351
- }
352
- const before = existingContent.substring(0, startIndex);
353
- const after = existingContent.substring(endIndex + markerEnd.length);
354
- // Find the content between markers in the new content
355
- const newStartIndex = newContent.indexOf(markerStart);
356
- const newEndIndex = newContent.indexOf(markerEnd, newStartIndex);
357
- if (newStartIndex === -1 || newEndIndex === -1) {
358
- return {
359
- success: false,
360
- updated: false,
361
- message: `Markers not found in new content`,
362
- };
363
- }
364
- const newMiddle = newContent.substring(newStartIndex, newEndIndex + markerEnd.length);
365
- // Reconstruct the file
366
- const updatedContent = before + newMiddle + after;
367
- // Only write if content actually changed
368
- if (updatedContent !== existingContent) {
369
- writeFileWithRetry(filePath, updatedContent);
370
- return {
371
- success: true,
372
- updated: true,
373
- message: `Updated ${filePath}`,
374
- };
375
370
  }
371
+ }
372
+ catch (err) {
376
373
  return {
377
- success: true,
374
+ success: false,
378
375
  updated: false,
379
- message: `No changes needed for ${filePath}`,
376
+ message: `Error updating ${filePath}: ${err instanceof Error ? err.message : String(err)}`,
380
377
  };
381
378
  }
379
+ }
380
+ /**
381
+ * Decide what removeMarkerBlock() would do to `filePath` — the read half of
382
+ * an unwire (FEAT-03), mirroring planMarkerUpdate()'s role for apply. A file
383
+ * that contains only the managed block (nothing else before/after it, once
384
+ * whitespace is trimmed) is deleted outright rather than left as an empty
385
+ * shell; a file with user content around the block keeps that content and
386
+ * loses only the block.
387
+ */
388
+ export function planMarkerRemoval(filePath, markerStart, markerEnd) {
389
+ if (!fs.existsSync(filePath)) {
390
+ return { status: 'absent' };
391
+ }
392
+ const existingContent = fs.readFileSync(filePath, 'utf-8');
393
+ const hasStart = existingContent.includes(markerStart);
394
+ const hasEnd = existingContent.includes(markerEnd);
395
+ if (!hasStart && !hasEnd) {
396
+ return { status: 'no-markers' };
397
+ }
398
+ if (hasStart !== hasEnd) {
399
+ return {
400
+ status: 'error',
401
+ message: `File ${filePath} contains only one managed marker (a partial write); leaving it untouched`,
402
+ };
403
+ }
404
+ const startIndex = existingContent.indexOf(markerStart);
405
+ const endIndex = existingContent.indexOf(markerEnd, startIndex);
406
+ if (startIndex === -1 || endIndex === -1 || startIndex >= endIndex) {
407
+ return { status: 'error', message: `Invalid marker positions in ${filePath}` };
408
+ }
409
+ const before = existingContent.slice(0, startIndex).replace(/\s+$/, '');
410
+ const after = existingContent.slice(endIndex + markerEnd.length).replace(/^\s+/, '');
411
+ if (before.length === 0 && after.length === 0) {
412
+ return { status: 'delete' };
413
+ }
414
+ const eol = detectLineEnding(existingContent);
415
+ const separator = before.length > 0 && after.length > 0 ? eol + eol : '';
416
+ const body = `${before}${separator}${after}`;
417
+ return { status: 'strip', content: body.endsWith(eol) ? body : `${body}${eol}` };
418
+ }
419
+ /**
420
+ * Remove the agentenv-managed block from `filePath` (the write half of an
421
+ * unwire, FEAT-03). Deletes the file when it held only the managed block;
422
+ * otherwise strips just the block and preserves the surrounding user
423
+ * content. A file with no markers, or that doesn't exist, is left untouched.
424
+ */
425
+ export function removeMarkerBlock(filePath, markerStart, markerEnd) {
426
+ try {
427
+ const plan = planMarkerRemoval(filePath, markerStart, markerEnd);
428
+ switch (plan.status) {
429
+ case 'absent':
430
+ return {
431
+ success: true,
432
+ removed: false,
433
+ deleted: false,
434
+ message: `${filePath} does not exist; nothing to remove`,
435
+ };
436
+ case 'no-markers':
437
+ return {
438
+ success: true,
439
+ removed: false,
440
+ deleted: false,
441
+ message: `${filePath} has no managed block; left untouched`,
442
+ };
443
+ case 'error':
444
+ return { success: false, removed: false, deleted: false, message: plan.message };
445
+ case 'delete':
446
+ fs.unlinkSync(filePath);
447
+ return {
448
+ success: true,
449
+ removed: true,
450
+ deleted: true,
451
+ message: `Deleted ${filePath} (contained only agentenv-managed content)`,
452
+ };
453
+ case 'strip':
454
+ writeFileWithRetry(filePath, plan.content);
455
+ return {
456
+ success: true,
457
+ removed: true,
458
+ deleted: false,
459
+ message: `Removed managed block from ${filePath}`,
460
+ };
461
+ }
462
+ }
382
463
  catch (err) {
383
464
  return {
384
465
  success: false,
385
- updated: false,
386
- message: `Error updating ${filePath}: ${err instanceof Error ? err.message : String(err)}`,
466
+ removed: false,
467
+ deleted: false,
468
+ message: `Error removing managed block from ${filePath}: ${err instanceof Error ? err.message : String(err)}`,
387
469
  };
388
470
  }
389
471
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agentsmd.js","sourceRoot":"","sources":["../../src/generate/agentsmd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agentsmd.js","sourceRoot":"","sources":["../../src/generate/agentsmd.ts"],"names":[],"mappings":"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"}