@indy2kro/agentenv 1.0.1 → 1.1.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 (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 +57 -0
  58. package/dist/commands/doctor.d.ts.map +1 -1
  59. package/dist/commands/doctor.js +233 -59
  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 +28 -3
  81. package/dist/config/schema.d.ts.map +1 -1
  82. package/dist/config/schema.js +206 -54
  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 +222 -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 +63 -5
  101. package/dist/shell/detector.d.ts.map +1 -1
  102. package/dist/shell/detector.js +253 -65
  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 +20 -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 +6 -5
@@ -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,CAiDlD,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
@@ -51,6 +51,20 @@ export const TOOL_CATEGORIES = {
51
51
  jless: 'Docs & Reading',
52
52
  tealdeer: 'Docs & Reading',
53
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
+ };
54
68
  /**
55
69
  * Generate AGENTS.md content from configuration
56
70
  */
@@ -62,26 +76,16 @@ export function generateAgentsMd(config) {
62
76
  const markerEnd = config.generate?.marker_end ||
63
77
  DEFAULT_CONFIG.generate?.marker_end ||
64
78
  '<!-- agentenv-managed-end -->';
79
+ const isUserScope = config.scope === 'user';
65
80
  // Keep all agentenv-owned content in a single block. User-authored content
66
81
  // can safely live before or after it.
67
82
  lines.push(markerStart);
68
83
  // Header
69
84
  lines.push('# AI Coding Agent Instructions');
70
85
  lines.push('');
71
- lines.push('This file provides instructions for AI coding agents operating in this repository.');
72
- lines.push('');
73
- // Supported Agents section
74
- lines.push('## Supported Agents');
75
- lines.push('');
76
- const enabledAgents = getEnabledAgentsForOutput(config);
77
- if (enabledAgents.length > 0) {
78
- for (const agent of enabledAgents) {
79
- lines.push(`- ${agent}`);
80
- }
81
- }
82
- else {
83
- lines.push('- No agents configured');
84
- }
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.');
85
89
  lines.push('');
86
90
  // Available Tools section
87
91
  lines.push('## Available Tools');
@@ -102,41 +106,42 @@ export function generateAgentsMd(config) {
102
106
  lines.push('');
103
107
  }
104
108
  }
105
- // 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).
106
112
  if (config.rtk?.enabled) {
107
113
  lines.push('### Token Optimization');
108
114
  lines.push('');
109
- lines.push('- **rtk**: CLI proxy that reduces LLM token consumption by 60-90% on common dev commands');
110
- lines.push(' - Automatically rewrites commands like `grep`, `find`, `cat`, etc. to faster, more token-efficient alternatives');
111
- 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');
112
119
  lines.push('');
113
120
  }
114
121
  lines.push('');
115
- // 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.
116
124
  lines.push('## General Instructions');
117
125
  lines.push('');
118
126
  lines.push('- Prefer using the tools listed above for their respective tasks');
119
- lines.push('- For file search, use `rg` (ripgrep) instead of `grep -r`');
120
- lines.push('- For finding files, use `fd` instead of `find`');
121
- lines.push('- For JSON processing, use `jq`');
122
- lines.push('- For viewing files, use `bat` instead of `cat`');
123
- lines.push('- For directory listings, use `eza` instead of `ls`');
124
- lines.push('- When working with git diffs, use `delta` for syntax-highlighted output');
125
- if (config.rtk?.enabled) {
126
- lines.push('');
127
- lines.push('## RTK Configuration');
128
- lines.push('');
129
- lines.push('RTK (Red Teaming Kit) is enabled and will optimize your commands:');
130
- lines.push('- Commands are automatically rewritten to use the most efficient tools available');
131
- lines.push('- Output is truncated to reduce token usage while preserving essential information');
132
- 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}`);
133
131
  }
134
132
  lines.push('');
135
133
  lines.push('## Environment Notes');
136
134
  lines.push('');
137
- lines.push('- This repository has been configured with agentenv for optimal AI coding agent performance');
138
- lines.push('- Tools are managed via [mise](https://mise.jdx.dev)');
139
- 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
+ }
140
145
  lines.push('- Configuration is managed in `agentenv.toml`');
141
146
  lines.push('');
142
147
  lines.push(markerEnd);
@@ -188,32 +193,6 @@ function categorizeTools(tools) {
188
193
  }
189
194
  return categories;
190
195
  }
191
- /**
192
- * Get enabled agents for output (formatted names)
193
- */
194
- function getEnabledAgentsForOutput(config) {
195
- const agents = config.agents || DEFAULT_CONFIG.agents || {};
196
- const enabled = [];
197
- if (agents.claude_code)
198
- enabled.push('Claude Code');
199
- if (agents.codex_cli)
200
- enabled.push('Codex CLI');
201
- if (agents.copilot)
202
- enabled.push('GitHub Copilot');
203
- if (agents.opencode)
204
- enabled.push('OpenCode');
205
- if (agents.gemini_cli)
206
- enabled.push('Gemini CLI');
207
- if (agents.cursor)
208
- enabled.push('Cursor');
209
- if (agents.windsurf)
210
- enabled.push('Windsurf');
211
- if (agents.cline)
212
- enabled.push('Cline CLI');
213
- if (agents.vibe)
214
- enabled.push('Mistral Vibe');
215
- return enabled;
216
- }
217
196
  /**
218
197
  * Get enabled tools for output
219
198
  */
@@ -291,102 +270,202 @@ export function saveGeneratedFiles(files) {
291
270
  errors,
292
271
  };
293
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
+ }
294
343
  /**
295
344
  * Update existing AGENTS.md/CLAUDE.md with new content, preserving user additions
296
345
  * Uses marker blocks to only replace the managed sections
297
346
  */
298
347
  export function updateWithMarkers(filePath, newContent, markerStart, markerEnd) {
299
348
  try {
300
- if (!fs.existsSync(filePath)) {
301
- // File doesn't exist, just create it
302
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
303
- writeFileWithRetry(filePath, newContent);
304
- return {
305
- success: true,
306
- updated: true,
307
- message: `Created ${filePath}`,
308
- };
309
- }
310
- const existingContent = fs.readFileSync(filePath, 'utf-8');
311
- const hasStart = existingContent.includes(markerStart);
312
- const hasEnd = existingContent.includes(markerEnd);
313
- // Only one marker present means a crashed/incomplete prior write; treat
314
- // the file as broken rather than appending a second block, which the next
315
- // pass would otherwise replace from the first start-marker to the later
316
- // end-marker — clobbering any user text between them.
317
- if (hasStart !== hasEnd) {
318
- return {
319
- success: false,
320
- updated: false,
321
- message: `File ${filePath} contains only one managed marker (a partial write); leaving it untouched`,
322
- };
323
- }
324
- // Existing files without markers belong to the user. Preserve them and
325
- // append only our newly managed block.
326
- if (!hasStart) {
327
- const newStartIndex = newContent.indexOf(markerStart);
328
- const newEndIndex = newContent.indexOf(markerEnd, newStartIndex);
329
- 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);
330
365
  return {
331
- success: false,
332
- updated: false,
333
- message: `Markers not found in new content`,
366
+ success: true,
367
+ updated: true,
368
+ message: plan.backupFirst ? `Added managed block to ${filePath}` : `Updated ${filePath}`,
334
369
  };
335
- }
336
- const managedBlock = newContent.substring(newStartIndex, newEndIndex + markerEnd.length);
337
- const separator = existingContent.length === 0 || existingContent.endsWith('\n') ? '\n' : '\n\n';
338
- writeFileWithRetry(filePath, `${existingContent}${separator}${managedBlock}\n`);
339
- return {
340
- success: true,
341
- updated: true,
342
- message: `Added managed block to ${filePath}`,
343
- };
344
- }
345
- // Extract the parts before and after the markers
346
- const startIndex = existingContent.indexOf(markerStart);
347
- const endIndex = existingContent.indexOf(markerEnd, startIndex);
348
- if (startIndex === -1 || endIndex === -1 || startIndex >= endIndex) {
349
- return {
350
- success: false,
351
- updated: false,
352
- message: `Invalid marker positions in ${filePath}`,
353
- };
354
- }
355
- const before = existingContent.substring(0, startIndex);
356
- const after = existingContent.substring(endIndex + markerEnd.length);
357
- // Find the content between markers in the new content
358
- const newStartIndex = newContent.indexOf(markerStart);
359
- const newEndIndex = newContent.indexOf(markerEnd, newStartIndex);
360
- if (newStartIndex === -1 || newEndIndex === -1) {
361
- return {
362
- success: false,
363
- updated: false,
364
- message: `Markers not found in new content`,
365
- };
366
- }
367
- const newMiddle = newContent.substring(newStartIndex, newEndIndex + markerEnd.length);
368
- // Reconstruct the file
369
- const updatedContent = before + newMiddle + after;
370
- // Only write if content actually changed
371
- if (updatedContent !== existingContent) {
372
- writeFileWithRetry(filePath, updatedContent);
373
- return {
374
- success: true,
375
- updated: true,
376
- message: `Updated ${filePath}`,
377
- };
378
370
  }
371
+ }
372
+ catch (err) {
379
373
  return {
380
- success: true,
374
+ success: false,
381
375
  updated: false,
382
- message: `No changes needed for ${filePath}`,
376
+ message: `Error updating ${filePath}: ${err instanceof Error ? err.message : String(err)}`,
383
377
  };
384
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
+ }
385
463
  catch (err) {
386
464
  return {
387
465
  success: false,
388
- updated: false,
389
- 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)}`,
390
469
  };
391
470
  }
392
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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"}
package/dist/index.js CHANGED
@@ -11,10 +11,12 @@ import { statusCommand } from './commands/status.js';
11
11
  import { updateCommand } from './commands/update.js';
12
12
  import { doctorCommand } from './commands/doctor.js';
13
13
  import { uninstallCommand } from './commands/uninstall.js';
14
+ import { addCommand, removeCommand } from './commands/config-edit.js';
14
15
  import { completionCommand } from './commands/completion.js';
15
16
  import { shellFixCommand } from './commands/shell-fix.js';
16
17
  import { setColorEnabled } from './ui/theme.js';
17
18
  import { setQuietEnabled } from './ui/output.js';
19
+ import { setSpinnerEnabled } from './ui/spinner.js';
18
20
  import { installExitOverride } from './cli/exit.js';
19
21
  const { version } = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf-8'));
20
22
  // Create the CLI
@@ -26,14 +28,17 @@ program
26
28
  .showSuggestionAfterError()
27
29
  .option('--no-color', 'disable colored output (also honors the NO_COLOR env var)')
28
30
  .option('-q, --quiet', 'suppress banner/footer chrome (data lines are kept)')
31
+ .option('--no-spinner', 'disable the animated spinner, keeping the label/succeed/fail lines (also auto-off under TERM=dumb or CI)')
29
32
  .option('--debug', 'print the failing command and stack trace for unhandled errors');
30
33
  // Color auto-detects from TTY + NO_COLOR/FORCE_COLOR by default (chalk);
31
- // --no-color and -q are explicit overrides, applied before any command runs.
34
+ // --no-color, -q and --no-spinner are explicit overrides, applied before any command runs.
32
35
  program.hook('preAction', (_thisCommand, actionCommand) => {
33
- const { color, quiet } = actionCommand.optsWithGlobals();
36
+ const { color, quiet, spinner } = actionCommand.optsWithGlobals();
34
37
  if (color === false)
35
38
  setColorEnabled(false);
36
39
  setQuietEnabled(quiet === true);
40
+ if (spinner === false)
41
+ setSpinnerEnabled(false);
37
42
  });
38
43
  // Add commands
39
44
  program.addCommand(setupCommand);
@@ -42,6 +47,8 @@ program.addCommand(statusCommand);
42
47
  program.addCommand(updateCommand);
43
48
  program.addCommand(doctorCommand);
44
49
  program.addCommand(uninstallCommand);
50
+ program.addCommand(addCommand);
51
+ program.addCommand(removeCommand);
45
52
  program.addCommand(completionCommand);
46
53
  program.addCommand(shellFixCommand);
47
54
  // After addCommand, so the override is installed on every subcommand too.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/integrations/render.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAS1E,0EAA0E;AAC1E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAIzE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAU1E;AAED,0DAA0D;AAC1D,wBAAgB,UAAU,CACxB,MAAM,EAAE,eAAe,GAAG,iBAAiB,GAAG,SAAS,GAAG,eAAe,GACxE,MAAM,CAkBR"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/integrations/render.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAiB1E,0EAA0E;AAC1E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAIzE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAU1E;AAED,0DAA0D;AAC1D,wBAAgB,UAAU,CACxB,MAAM,EAAE,eAAe,GAAG,iBAAiB,GAAG,SAAS,GAAG,eAAe,GACxE,MAAM,CAyBR"}