@tacuchi/agent-workflow-cli 5.0.2 → 5.3.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 (230) hide show
  1. package/dist/adapters/node-file-system.d.ts +7 -0
  2. package/dist/adapters/node-file-system.d.ts.map +1 -1
  3. package/dist/adapters/node-file-system.js +22 -2
  4. package/dist/adapters/node-file-system.js.map +1 -1
  5. package/dist/application/artifacts-service.d.ts.map +1 -1
  6. package/dist/application/artifacts-service.js +15 -13
  7. package/dist/application/artifacts-service.js.map +1 -1
  8. package/dist/application/checkpoint/markdown.d.ts +3 -0
  9. package/dist/application/checkpoint/markdown.d.ts.map +1 -0
  10. package/dist/application/checkpoint/markdown.js +86 -0
  11. package/dist/application/checkpoint/markdown.js.map +1 -0
  12. package/dist/application/checkpoint/state-reader.d.ts +28 -0
  13. package/dist/application/checkpoint/state-reader.d.ts.map +1 -0
  14. package/dist/application/checkpoint/state-reader.js +152 -0
  15. package/dist/application/checkpoint/state-reader.js.map +1 -0
  16. package/dist/application/checkpoint-service.d.ts.map +1 -1
  17. package/dist/application/checkpoint-service.js +15 -16
  18. package/dist/application/checkpoint-service.js.map +1 -1
  19. package/dist/application/checkpoint-write-service.d.ts.map +1 -1
  20. package/dist/application/checkpoint-write-service.js +2 -235
  21. package/dist/application/checkpoint-write-service.js.map +1 -1
  22. package/dist/application/decisiones-service.d.ts.map +1 -1
  23. package/dist/application/decisiones-service.js +5 -5
  24. package/dist/application/decisiones-service.js.map +1 -1
  25. package/dist/application/dependencias-service.d.ts.map +1 -1
  26. package/dist/application/dependencias-service.js +5 -5
  27. package/dist/application/dependencias-service.js.map +1 -1
  28. package/dist/application/dev-graduate-service.d.ts +2 -48
  29. package/dist/application/dev-graduate-service.d.ts.map +1 -1
  30. package/dist/application/dev-graduate-service.js +1 -226
  31. package/dist/application/dev-graduate-service.js.map +1 -1
  32. package/dist/application/graduate/handlers.d.ts +61 -0
  33. package/dist/application/graduate/handlers.d.ts.map +1 -0
  34. package/dist/application/graduate/handlers.js +148 -0
  35. package/dist/application/graduate/handlers.js.map +1 -0
  36. package/dist/application/graduate/helpers.d.ts +13 -0
  37. package/dist/application/graduate/helpers.d.ts.map +1 -0
  38. package/dist/application/graduate/helpers.js +82 -0
  39. package/dist/application/graduate/helpers.js.map +1 -0
  40. package/dist/application/handoff.d.ts.map +1 -1
  41. package/dist/application/handoff.js +14 -11
  42. package/dist/application/handoff.js.map +1 -1
  43. package/dist/application/markdown.d.ts +18 -0
  44. package/dist/application/markdown.d.ts.map +1 -1
  45. package/dist/application/markdown.js +129 -0
  46. package/dist/application/markdown.js.map +1 -1
  47. package/dist/application/multiroot/claude.d.ts +26 -0
  48. package/dist/application/multiroot/claude.d.ts.map +1 -0
  49. package/dist/application/multiroot/claude.js +125 -0
  50. package/dist/application/multiroot/claude.js.map +1 -0
  51. package/dist/application/multiroot/codex.d.ts +36 -0
  52. package/dist/application/multiroot/codex.d.ts.map +1 -0
  53. package/dist/application/multiroot/codex.js +221 -0
  54. package/dist/application/multiroot/codex.js.map +1 -0
  55. package/dist/application/multiroot/paths.d.ts +6 -0
  56. package/dist/application/multiroot/paths.d.ts.map +1 -0
  57. package/dist/application/multiroot/paths.js +23 -0
  58. package/dist/application/multiroot/paths.js.map +1 -0
  59. package/dist/application/multiroot-service.d.ts +2 -52
  60. package/dist/application/multiroot-service.d.ts.map +1 -1
  61. package/dist/application/multiroot-service.js +2 -364
  62. package/dist/application/multiroot-service.js.map +1 -1
  63. package/dist/application/objetivo-service.d.ts.map +1 -1
  64. package/dist/application/objetivo-service.js +3 -3
  65. package/dist/application/objetivo-service.js.map +1 -1
  66. package/dist/application/parsers/objetivo.d.ts.map +1 -1
  67. package/dist/application/parsers/objetivo.js +7 -10
  68. package/dist/application/parsers/objetivo.js.map +1 -1
  69. package/dist/application/phase-detect-service.d.ts.map +1 -1
  70. package/dist/application/phase-detect-service.js +6 -6
  71. package/dist/application/phase-detect-service.js.map +1 -1
  72. package/dist/application/plugin-doctor/common.d.ts +27 -0
  73. package/dist/application/plugin-doctor/common.d.ts.map +1 -0
  74. package/dist/application/plugin-doctor/common.js +28 -0
  75. package/dist/application/plugin-doctor/common.js.map +1 -0
  76. package/dist/application/plugin-doctor/exported-skills.d.ts +8 -0
  77. package/dist/application/plugin-doctor/exported-skills.d.ts.map +1 -0
  78. package/dist/application/plugin-doctor/exported-skills.js +128 -0
  79. package/dist/application/plugin-doctor/exported-skills.js.map +1 -0
  80. package/dist/application/plugin-doctor/hooks.d.ts +8 -0
  81. package/dist/application/plugin-doctor/hooks.d.ts.map +1 -0
  82. package/dist/application/plugin-doctor/hooks.js +53 -0
  83. package/dist/application/plugin-doctor/hooks.js.map +1 -0
  84. package/dist/application/plugin-doctor/manifests.d.ts +11 -0
  85. package/dist/application/plugin-doctor/manifests.d.ts.map +1 -0
  86. package/dist/application/plugin-doctor/manifests.js +83 -0
  87. package/dist/application/plugin-doctor/manifests.js.map +1 -0
  88. package/dist/application/plugin-doctor/mcp.d.ts +10 -0
  89. package/dist/application/plugin-doctor/mcp.d.ts.map +1 -0
  90. package/dist/application/plugin-doctor/mcp.js +58 -0
  91. package/dist/application/plugin-doctor/mcp.js.map +1 -0
  92. package/dist/application/plugin-doctor/skills.d.ts +16 -0
  93. package/dist/application/plugin-doctor/skills.d.ts.map +1 -0
  94. package/dist/application/plugin-doctor/skills.js +167 -0
  95. package/dist/application/plugin-doctor/skills.js.map +1 -0
  96. package/dist/application/plugin-doctor-service.d.ts +2 -23
  97. package/dist/application/plugin-doctor-service.d.ts.map +1 -1
  98. package/dist/application/plugin-doctor-service.js +10 -514
  99. package/dist/application/plugin-doctor-service.js.map +1 -1
  100. package/dist/application/release-data/artifacts.d.ts +32 -0
  101. package/dist/application/release-data/artifacts.d.ts.map +1 -0
  102. package/dist/application/release-data/artifacts.js +105 -0
  103. package/dist/application/release-data/artifacts.js.map +1 -0
  104. package/dist/application/release-data/bundles.d.ts +15 -0
  105. package/dist/application/release-data/bundles.d.ts.map +1 -0
  106. package/dist/application/release-data/bundles.js +42 -0
  107. package/dist/application/release-data/bundles.js.map +1 -0
  108. package/dist/application/release-data/common.d.ts +11 -0
  109. package/dist/application/release-data/common.d.ts.map +1 -0
  110. package/dist/application/release-data/common.js +61 -0
  111. package/dist/application/release-data/common.js.map +1 -0
  112. package/dist/application/release-data/sessions.d.ts +19 -0
  113. package/dist/application/release-data/sessions.d.ts.map +1 -0
  114. package/dist/application/release-data/sessions.js +51 -0
  115. package/dist/application/release-data/sessions.js.map +1 -0
  116. package/dist/application/release-data-service.d.ts +8 -50
  117. package/dist/application/release-data-service.d.ts.map +1 -1
  118. package/dist/application/release-data-service.js +14 -252
  119. package/dist/application/release-data-service.js.map +1 -1
  120. package/dist/application/session-artifacts.d.ts +48 -0
  121. package/dist/application/session-artifacts.d.ts.map +1 -0
  122. package/dist/application/session-artifacts.js +116 -0
  123. package/dist/application/session-artifacts.js.map +1 -0
  124. package/dist/application/session-create-service.d.ts.map +1 -1
  125. package/dist/application/session-create-service.js +45 -15
  126. package/dist/application/session-create-service.js.map +1 -1
  127. package/dist/application/session-resolver.d.ts.map +1 -1
  128. package/dist/application/session-resolver.js +10 -15
  129. package/dist/application/session-resolver.js.map +1 -1
  130. package/dist/application/session-resume-service.d.ts.map +1 -1
  131. package/dist/application/session-resume-service.js +3 -2
  132. package/dist/application/session-resume-service.js.map +1 -1
  133. package/dist/application/templates/objetivo.js +32 -32
  134. package/dist/cli/commands/auto-plan-decide.d.ts +3 -0
  135. package/dist/cli/commands/auto-plan-decide.d.ts.map +1 -0
  136. package/dist/cli/commands/auto-plan-decide.js +19 -0
  137. package/dist/cli/commands/auto-plan-decide.js.map +1 -0
  138. package/dist/cli/commands/bootstrap-dsn.d.ts +3 -0
  139. package/dist/cli/commands/bootstrap-dsn.d.ts.map +1 -0
  140. package/dist/cli/commands/bootstrap-dsn.js +20 -0
  141. package/dist/cli/commands/bootstrap-dsn.js.map +1 -0
  142. package/dist/cli/commands/check-branch.d.ts +3 -0
  143. package/dist/cli/commands/check-branch.d.ts.map +1 -0
  144. package/dist/cli/commands/check-branch.js +30 -0
  145. package/dist/cli/commands/check-branch.js.map +1 -0
  146. package/dist/cli/commands/checkpoint-read.d.ts +3 -0
  147. package/dist/cli/commands/checkpoint-read.d.ts.map +1 -0
  148. package/dist/cli/commands/checkpoint-read.js +19 -0
  149. package/dist/cli/commands/checkpoint-read.js.map +1 -0
  150. package/dist/cli/commands/code-scan.d.ts +3 -0
  151. package/dist/cli/commands/code-scan.d.ts.map +1 -0
  152. package/dist/cli/commands/code-scan.js +74 -0
  153. package/dist/cli/commands/code-scan.js.map +1 -0
  154. package/dist/cli/commands/compress-checkpoint.d.ts +3 -0
  155. package/dist/cli/commands/compress-checkpoint.d.ts.map +1 -0
  156. package/dist/cli/commands/compress-checkpoint.js +28 -0
  157. package/dist/cli/commands/compress-checkpoint.js.map +1 -0
  158. package/dist/cli/commands/graduate.d.ts +3 -0
  159. package/dist/cli/commands/graduate.d.ts.map +1 -0
  160. package/dist/cli/commands/graduate.js +36 -0
  161. package/dist/cli/commands/graduate.js.map +1 -0
  162. package/dist/cli/commands/hub-init.d.ts.map +1 -1
  163. package/dist/cli/commands/hub-init.js +13 -43
  164. package/dist/cli/commands/hub-init.js.map +1 -1
  165. package/dist/cli/commands/phase-detect.d.ts +3 -0
  166. package/dist/cli/commands/phase-detect.d.ts.map +1 -0
  167. package/dist/cli/commands/phase-detect.js +19 -0
  168. package/dist/cli/commands/phase-detect.js.map +1 -0
  169. package/dist/cli/commands/phase-next.d.ts +3 -0
  170. package/dist/cli/commands/phase-next.d.ts.map +1 -0
  171. package/dist/cli/commands/phase-next.js +23 -0
  172. package/dist/cli/commands/phase-next.js.map +1 -0
  173. package/dist/cli/commands/project-md-upsert.d.ts.map +1 -1
  174. package/dist/cli/commands/project-md-upsert.js +2 -49
  175. package/dist/cli/commands/project-md-upsert.js.map +1 -1
  176. package/dist/cli/commands/resume-summary.d.ts +3 -0
  177. package/dist/cli/commands/resume-summary.d.ts.map +1 -0
  178. package/dist/cli/commands/resume-summary.js +10 -0
  179. package/dist/cli/commands/resume-summary.js.map +1 -0
  180. package/dist/cli/commands/session-create.js +2 -2
  181. package/dist/cli/commands/session-create.js.map +1 -1
  182. package/dist/cli/commands/skill-index.d.ts +3 -0
  183. package/dist/cli/commands/skill-index.d.ts.map +1 -0
  184. package/dist/cli/commands/skill-index.js +20 -0
  185. package/dist/cli/commands/skill-index.js.map +1 -0
  186. package/dist/cli/commands/sources.d.ts +3 -0
  187. package/dist/cli/commands/sources.d.ts.map +1 -0
  188. package/dist/cli/commands/sources.js +30 -0
  189. package/dist/cli/commands/sources.js.map +1 -0
  190. package/dist/cli/commands/specialty-choose.d.ts +3 -0
  191. package/dist/cli/commands/specialty-choose.d.ts.map +1 -0
  192. package/dist/cli/commands/specialty-choose.js +30 -0
  193. package/dist/cli/commands/specialty-choose.js.map +1 -0
  194. package/dist/cli/commands/stack.d.ts +3 -0
  195. package/dist/cli/commands/stack.d.ts.map +1 -0
  196. package/dist/cli/commands/stack.js +11 -0
  197. package/dist/cli/commands/stack.js.map +1 -0
  198. package/dist/cli/commands/topic-change-check.d.ts +3 -0
  199. package/dist/cli/commands/topic-change-check.d.ts.map +1 -0
  200. package/dist/cli/commands/topic-change-check.js +23 -0
  201. package/dist/cli/commands/topic-change-check.js.map +1 -0
  202. package/dist/cli/commands/upgrade-hub-mode.d.ts +3 -0
  203. package/dist/cli/commands/upgrade-hub-mode.d.ts.map +1 -0
  204. package/dist/cli/commands/upgrade-hub-mode.js +11 -0
  205. package/dist/cli/commands/upgrade-hub-mode.js.map +1 -0
  206. package/dist/cli/commands/workflows.d.ts +3 -0
  207. package/dist/cli/commands/workflows.d.ts.map +1 -0
  208. package/dist/cli/commands/workflows.js +30 -0
  209. package/dist/cli/commands/workflows.js.map +1 -0
  210. package/dist/cli/commands/workspace-mode.d.ts +3 -0
  211. package/dist/cli/commands/workspace-mode.d.ts.map +1 -0
  212. package/dist/cli/commands/workspace-mode.js +11 -0
  213. package/dist/cli/commands/workspace-mode.js.map +1 -0
  214. package/dist/cli/helpers/objetivo-loader.d.ts +3 -0
  215. package/dist/cli/helpers/objetivo-loader.d.ts.map +1 -0
  216. package/dist/cli/helpers/objetivo-loader.js +17 -0
  217. package/dist/cli/helpers/objetivo-loader.js.map +1 -0
  218. package/dist/cli/main.js +18 -4
  219. package/dist/cli/main.js.map +1 -1
  220. package/dist/cli/parsers/fuentes.d.ts +11 -0
  221. package/dist/cli/parsers/fuentes.d.ts.map +1 -0
  222. package/dist/cli/parsers/fuentes.js +37 -0
  223. package/dist/cli/parsers/fuentes.js.map +1 -0
  224. package/dist/cli/parsers/working-branches.d.ts +2 -0
  225. package/dist/cli/parsers/working-branches.d.ts.map +1 -0
  226. package/dist/cli/parsers/working-branches.js +14 -0
  227. package/dist/cli/parsers/working-branches.js.map +1 -0
  228. package/dist/domain/session.d.ts +2 -2
  229. package/dist/domain/session.d.ts.map +1 -1
  230. package/package.json +1 -1
@@ -0,0 +1,221 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { backupFile, escapeRegex, normalizePath, toCodexPath } from "./paths.js";
4
+ export function codexConfigPath(scopeDir) {
5
+ return join(scopeDir, ".codex", "config.toml");
6
+ }
7
+ export function attachCodex(paths, scopeDir) {
8
+ const configFile = codexConfigPath(scopeDir);
9
+ mkdirSync(join(scopeDir, ".codex"), { recursive: true });
10
+ let content = "";
11
+ if (existsSync(configFile))
12
+ content = readFileSync(configFile, "utf-8");
13
+ const pathsCodex = paths.map(toCodexPath);
14
+ const r1 = updateWritableRoots(content, pathsCodex);
15
+ const r2 = ensureProjectTrust(r1.content, pathsCodex);
16
+ let backup = null;
17
+ let written = false;
18
+ if (r2.content !== content) {
19
+ backup = backupFile(configFile);
20
+ writeFileSync(configFile, r2.content, "utf-8");
21
+ written = true;
22
+ }
23
+ return {
24
+ file: configFile,
25
+ backup,
26
+ additional_writable_roots: { added: r1.added, already_present: r1.already },
27
+ projects_trusted: { added: r2.added, already_present: r2.already },
28
+ written,
29
+ };
30
+ }
31
+ export function detachCodex(paths, scopeDir) {
32
+ const configFile = codexConfigPath(scopeDir);
33
+ if (!existsSync(configFile)) {
34
+ return {
35
+ file: configFile,
36
+ backup: null,
37
+ additional_writable_roots: { removed: [], not_present: [...paths] },
38
+ projects_trusted: { removed: [], not_present: [...paths], skipped: [] },
39
+ written: false,
40
+ };
41
+ }
42
+ const content = readFileSync(configFile, "utf-8");
43
+ const pathsCodex = paths.map(toCodexPath);
44
+ const r1 = removeFromWritableRoots(content, pathsCodex);
45
+ const r2 = removeProjectTrust(r1.content, pathsCodex);
46
+ let backup = null;
47
+ let written = false;
48
+ if (r2.content !== content) {
49
+ backup = backupFile(configFile);
50
+ writeFileSync(configFile, r2.content, "utf-8");
51
+ written = true;
52
+ }
53
+ return {
54
+ file: configFile,
55
+ backup,
56
+ additional_writable_roots: { removed: r1.removed, not_present: r1.notPresent },
57
+ projects_trusted: {
58
+ removed: r2.removed,
59
+ not_present: r2.notPresent,
60
+ skipped: r2.skipped,
61
+ },
62
+ written,
63
+ };
64
+ }
65
+ function updateWritableRoots(content, pathsCodex) {
66
+ const re = /^additional_writable_roots\s*=\s*\[([\s\S]*?)\]/m;
67
+ const match = content.match(re);
68
+ const added = [];
69
+ const already = [];
70
+ if (match && match.index !== undefined) {
71
+ const existingBlock = match[1] ?? "";
72
+ const existing = [...existingBlock.matchAll(/["']([^"']+)["']/g)].map((m) => m[1]);
73
+ const existingNorm = new Set(existing.map(normalizePath));
74
+ const merged = [...existing];
75
+ for (const p of pathsCodex) {
76
+ if (existingNorm.has(normalizePath(p))) {
77
+ already.push(p);
78
+ }
79
+ else {
80
+ merged.push(p);
81
+ existingNorm.add(normalizePath(p));
82
+ added.push(p);
83
+ }
84
+ }
85
+ if (added.length > 0) {
86
+ const formatted = merged.map((p) => ` "${p}"`).join(",\n");
87
+ const replacement = `additional_writable_roots = [\n${formatted}\n]`;
88
+ const newContent = content.slice(0, match.index) + replacement + content.slice(match.index + match[0].length);
89
+ return { content: newContent, added, already };
90
+ }
91
+ return { content, added, already };
92
+ }
93
+ const formatted = pathsCodex.map((p) => ` "${p}"`).join(",\n");
94
+ const insertion = `additional_writable_roots = [\n${formatted}\n]\n\n`;
95
+ const firstSection = content.match(/^\[/m);
96
+ let newContent;
97
+ if (firstSection?.index !== undefined) {
98
+ newContent =
99
+ content.slice(0, firstSection.index) + insertion + content.slice(firstSection.index);
100
+ }
101
+ else {
102
+ newContent = `${content.replace(/\s+$/, "")}\n\n${insertion}`.replace(/^\s+/, "");
103
+ }
104
+ return { content: newContent, added: [...pathsCodex], already };
105
+ }
106
+ function ensureProjectTrust(content, pathsCodex) {
107
+ const added = [];
108
+ const already = [];
109
+ let newContent = content;
110
+ for (const p of pathsCodex) {
111
+ const variants = new Set([p]);
112
+ if (!p.startsWith("\\\\?\\"))
113
+ variants.add(`\\\\?\\${p}`);
114
+ else
115
+ variants.add(p.slice(4));
116
+ let present = false;
117
+ for (const variant of variants) {
118
+ const esc = escapeRegex(variant);
119
+ if (new RegExp(`^\\[projects\\.'${esc}'\\]`, "m").test(newContent)) {
120
+ present = true;
121
+ break;
122
+ }
123
+ if (new RegExp(`^\\[projects\\."${esc}"\\]`, "m").test(newContent)) {
124
+ present = true;
125
+ break;
126
+ }
127
+ }
128
+ if (present) {
129
+ already.push(p);
130
+ continue;
131
+ }
132
+ const block = `\n[projects.'${p}']\ntrust_level = "trusted"\n`;
133
+ if (!newContent.endsWith("\n"))
134
+ newContent += "\n";
135
+ newContent += block;
136
+ added.push(p);
137
+ }
138
+ return { content: newContent, added, already };
139
+ }
140
+ function removeFromWritableRoots(content, pathsCodex) {
141
+ const re = /^additional_writable_roots\s*=\s*\[([\s\S]*?)\]/m;
142
+ const match = content.match(re);
143
+ const targetNorm = new Set(pathsCodex.map(normalizePath));
144
+ if (!match || match.index === undefined) {
145
+ return { content, removed: [], notPresent: [...pathsCodex] };
146
+ }
147
+ const existingBlock = match[1] ?? "";
148
+ const existing = [...existingBlock.matchAll(/["']([^"']+)["']/g)].map((m) => m[1]);
149
+ const removed = [];
150
+ const kept = [];
151
+ for (const p of existing) {
152
+ if (targetNorm.has(normalizePath(p)))
153
+ removed.push(p);
154
+ else
155
+ kept.push(p);
156
+ }
157
+ const removedNorm = new Set(removed.map(normalizePath));
158
+ const notPresent = [];
159
+ for (const p of pathsCodex) {
160
+ if (!removedNorm.has(normalizePath(p)))
161
+ notPresent.push(p);
162
+ }
163
+ if (removed.length === 0)
164
+ return { content, removed: [], notPresent };
165
+ let replacement;
166
+ if (kept.length > 0) {
167
+ const formatted = kept.map((p) => ` "${p}"`).join(",\n");
168
+ replacement = `additional_writable_roots = [\n${formatted}\n]`;
169
+ }
170
+ else {
171
+ replacement = "";
172
+ }
173
+ let newContent = content.slice(0, match.index) + replacement + content.slice(match.index + match[0].length);
174
+ newContent = newContent.replace(/\n\n\n+/g, "\n\n");
175
+ return { content: newContent, removed, notPresent };
176
+ }
177
+ function removeProjectTrust(content, pathsCodex) {
178
+ const removed = [];
179
+ const notPresent = [];
180
+ const skipped = [];
181
+ let newContent = content;
182
+ for (const p of pathsCodex) {
183
+ const variants = new Set([p]);
184
+ if (!p.startsWith("\\\\?\\"))
185
+ variants.add(`\\\\?\\${p}`);
186
+ else
187
+ variants.add(p.slice(4));
188
+ let blockMatch = null;
189
+ outer: for (const variant of variants) {
190
+ const esc = escapeRegex(variant);
191
+ for (const quote of ["'", '"']) {
192
+ const re = new RegExp(`^\\[projects\\.${quote}${esc}${quote}\\]\\s*\\n(?:[ \\t]*[^\\[\\n]*\\n?)*?(?=^\\[|$(?![\\s\\S]))`, "ms");
193
+ const m = re.exec(newContent);
194
+ if (m) {
195
+ blockMatch = { start: m.index, end: m.index + m[0].length, text: m[0] };
196
+ break outer;
197
+ }
198
+ }
199
+ }
200
+ if (!blockMatch) {
201
+ notPresent.push(p);
202
+ continue;
203
+ }
204
+ const blockText = blockMatch.text;
205
+ const body = blockText.replace(/^\[projects\..+?\]\s*\n/, "");
206
+ const bodyLines = body
207
+ .split("\n")
208
+ .map((s) => s.trim())
209
+ .filter((s) => s.length > 0);
210
+ const isTrivial = bodyLines.length === 1 && /^trust_level\s*=\s*"trusted"\s*$/.test(bodyLines[0] ?? "");
211
+ if (!isTrivial) {
212
+ skipped.push({ path: p, reason: "block_has_extra_keys" });
213
+ continue;
214
+ }
215
+ newContent = newContent.slice(0, blockMatch.start) + newContent.slice(blockMatch.end);
216
+ newContent = newContent.replace(/\n\n\n+/g, "\n\n");
217
+ removed.push(p);
218
+ }
219
+ return { content: newContent, removed, notPresent, skipped };
220
+ }
221
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/application/multiroot/codex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function normalizePath(p: string): string;
2
+ export declare function toCodexPath(p: string): string;
3
+ export declare function backupFile(path: string): string | null;
4
+ export declare function withSuffixAdd(path: string, extra: string): string;
5
+ export declare function escapeRegex(s: string): string;
6
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/application/multiroot/paths.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMtD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C"}
@@ -0,0 +1,23 @@
1
+ import { copyFileSync, existsSync } from "node:fs";
2
+ export function normalizePath(p) {
3
+ return p.replace(/\\/g, "/").replace(/\/+$/, "");
4
+ }
5
+ export function toCodexPath(p) {
6
+ const np = normalizePath(p);
7
+ return process.platform === "win32" ? np.replace(/\//g, "\\") : np;
8
+ }
9
+ export function backupFile(path) {
10
+ if (!existsSync(path))
11
+ return null;
12
+ const ts = Math.floor(Date.now() / 1000);
13
+ const backupPath = withSuffixAdd(path, `.bak.${ts}`);
14
+ copyFileSync(path, backupPath);
15
+ return backupPath;
16
+ }
17
+ export function withSuffixAdd(path, extra) {
18
+ return `${path}${extra}`;
19
+ }
20
+ export function escapeRegex(s) {
21
+ return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
22
+ }
23
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/application/multiroot/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEnD,MAAM,UAAU,aAAa,CAAC,CAAS;IACrC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC5B,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IACrD,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC/B,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,KAAa;IACvD,OAAO,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC"}
@@ -1,5 +1,7 @@
1
1
  import type { EnvPort } from "../ports/env.js";
2
2
  import type { FileSystemPort } from "../ports/file-system.js";
3
+ import { type ClaudeResult } from "./multiroot/claude.js";
4
+ import { type CodexResult } from "./multiroot/codex.js";
3
5
  import type { PathsService } from "./paths-service.js";
4
6
  export interface MultirootInput {
5
7
  paths?: string[];
@@ -25,58 +27,6 @@ export interface MultirootResult {
25
27
  skipped: true;
26
28
  };
27
29
  }
28
- interface ClaudeAttachOk {
29
- file: string;
30
- backup: string | null;
31
- added: string[];
32
- already_present: string[];
33
- written: boolean;
34
- }
35
- interface ClaudeDetachOk {
36
- file: string;
37
- backup: string | null;
38
- removed: string[];
39
- not_present: string[];
40
- written: boolean;
41
- }
42
- interface ClaudeFail {
43
- file: string;
44
- error: string;
45
- detail?: string;
46
- skipped: true;
47
- }
48
- type ClaudeResult = ClaudeAttachOk | ClaudeDetachOk | ClaudeFail;
49
- interface CodexAttachOk {
50
- file: string;
51
- backup: string | null;
52
- additional_writable_roots: {
53
- added: string[];
54
- already_present: string[];
55
- };
56
- projects_trusted: {
57
- added: string[];
58
- already_present: string[];
59
- };
60
- written: boolean;
61
- }
62
- interface CodexDetachOk {
63
- file: string;
64
- backup: string | null;
65
- additional_writable_roots: {
66
- removed: string[];
67
- not_present: string[];
68
- };
69
- projects_trusted: {
70
- removed: string[];
71
- not_present: string[];
72
- skipped: {
73
- path: string;
74
- reason: string;
75
- }[];
76
- };
77
- written: boolean;
78
- }
79
- type CodexResult = CodexAttachOk | CodexDetachOk;
80
30
  type Mode = "attach" | "detach";
81
31
  export declare function runMultiroot(fs: FileSystemPort, env: EnvPort, pathsService: PathsService, mode: Mode, input: MultirootInput): Promise<MultirootResult | MultirootError>;
82
32
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"multiroot-service.d.ts","sourceRoot":"","sources":["../../src/application/multiroot-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"multiroot-service.d.ts","sourceRoot":"","sources":["../../src/application/multiroot-service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,KAAK,YAAY,EAA8B,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,KAAK,WAAW,EAA4B,MAAM,sBAAsB,CAAC;AAElF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,YAAY,GAAG;QAAE,OAAO,EAAE,IAAI,CAAA;KAAE,CAAC;IACzC,KAAK,EAAE,WAAW,GAAG;QAAE,OAAO,EAAE,IAAI,CAAA;KAAE,CAAC;CACxC;AAED,KAAK,IAAI,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEhC,wBAAsB,YAAY,CAChC,EAAE,EAAE,cAAc,EAClB,GAAG,EAAE,OAAO,EACZ,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,eAAe,GAAG,cAAc,CAAC,CAgC3C"}