@mirnoorata/codexa 0.2.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 (364) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +634 -0
  3. package/dist/artifacts.d.ts +2 -0
  4. package/dist/artifacts.js +375 -0
  5. package/dist/artifacts.js.map +1 -0
  6. package/dist/autonomy.d.ts +17 -0
  7. package/dist/autonomy.js +124 -0
  8. package/dist/autonomy.js.map +1 -0
  9. package/dist/autoverify/policy.d.ts +5 -0
  10. package/dist/autoverify/policy.js +18 -0
  11. package/dist/autoverify/policy.js.map +1 -0
  12. package/dist/autoverify.d.ts +45 -0
  13. package/dist/autoverify.js +1041 -0
  14. package/dist/autoverify.js.map +1 -0
  15. package/dist/cache-lock.d.ts +16 -0
  16. package/dist/cache-lock.js +181 -0
  17. package/dist/cache-lock.js.map +1 -0
  18. package/dist/cli/hooks.d.ts +5 -0
  19. package/dist/cli/hooks.js +264 -0
  20. package/dist/cli/hooks.js.map +1 -0
  21. package/dist/cli.d.ts +2 -0
  22. package/dist/cli.js +1034 -0
  23. package/dist/cli.js.map +1 -0
  24. package/dist/codex-contract.d.ts +2 -0
  25. package/dist/codex-contract.js +78 -0
  26. package/dist/codex-contract.js.map +1 -0
  27. package/dist/command.d.ts +34 -0
  28. package/dist/command.js +162 -0
  29. package/dist/command.js.map +1 -0
  30. package/dist/doctor.d.ts +112 -0
  31. package/dist/doctor.js +518 -0
  32. package/dist/doctor.js.map +1 -0
  33. package/dist/eval/baseline.d.ts +7 -0
  34. package/dist/eval/baseline.js +146 -0
  35. package/dist/eval/baseline.js.map +1 -0
  36. package/dist/eval/historical.d.ts +4 -0
  37. package/dist/eval/historical.js +663 -0
  38. package/dist/eval/historical.js.map +1 -0
  39. package/dist/eval/render.d.ts +2 -0
  40. package/dist/eval/render.js +53 -0
  41. package/dist/eval/render.js.map +1 -0
  42. package/dist/eval/scoring.d.ts +21 -0
  43. package/dist/eval/scoring.js +618 -0
  44. package/dist/eval/scoring.js.map +1 -0
  45. package/dist/eval/synthetic.d.ts +36 -0
  46. package/dist/eval/synthetic.js +107 -0
  47. package/dist/eval/synthetic.js.map +1 -0
  48. package/dist/eval/types.d.ts +36 -0
  49. package/dist/eval/types.js +2 -0
  50. package/dist/eval/types.js.map +1 -0
  51. package/dist/eval.d.ts +140 -0
  52. package/dist/eval.js +551 -0
  53. package/dist/eval.js.map +1 -0
  54. package/dist/git.d.ts +17 -0
  55. package/dist/git.js +189 -0
  56. package/dist/git.js.map +1 -0
  57. package/dist/github-release.d.ts +47 -0
  58. package/dist/github-release.js +610 -0
  59. package/dist/github-release.js.map +1 -0
  60. package/dist/github-sync.d.ts +68 -0
  61. package/dist/github-sync.js +345 -0
  62. package/dist/github-sync.js.map +1 -0
  63. package/dist/graph.d.ts +10 -0
  64. package/dist/graph.js +665 -0
  65. package/dist/graph.js.map +1 -0
  66. package/dist/indexer/aliases.d.ts +2 -0
  67. package/dist/indexer/aliases.js +190 -0
  68. package/dist/indexer/aliases.js.map +1 -0
  69. package/dist/indexer/artifact-writing.d.ts +3 -0
  70. package/dist/indexer/artifact-writing.js +79 -0
  71. package/dist/indexer/artifact-writing.js.map +1 -0
  72. package/dist/indexer/discovery.d.ts +2 -0
  73. package/dist/indexer/discovery.js +5 -0
  74. package/dist/indexer/discovery.js.map +1 -0
  75. package/dist/indexer/external-facts.d.ts +6 -0
  76. package/dist/indexer/external-facts.js +45 -0
  77. package/dist/indexer/external-facts.js.map +1 -0
  78. package/dist/indexer/freshness.d.ts +8 -0
  79. package/dist/indexer/freshness.js +56 -0
  80. package/dist/indexer/freshness.js.map +1 -0
  81. package/dist/indexer/graph-stage.d.ts +2 -0
  82. package/dist/indexer/graph-stage.js +21 -0
  83. package/dist/indexer/graph-stage.js.map +1 -0
  84. package/dist/indexer/parsing.d.ts +30 -0
  85. package/dist/indexer/parsing.js +177 -0
  86. package/dist/indexer/parsing.js.map +1 -0
  87. package/dist/indexer/pipeline.d.ts +5 -0
  88. package/dist/indexer/pipeline.js +8 -0
  89. package/dist/indexer/pipeline.js.map +1 -0
  90. package/dist/indexer/ranking.d.ts +4 -0
  91. package/dist/indexer/ranking.js +134 -0
  92. package/dist/indexer/ranking.js.map +1 -0
  93. package/dist/indexer.d.ts +13 -0
  94. package/dist/indexer.js +395 -0
  95. package/dist/indexer.js.map +1 -0
  96. package/dist/init.d.ts +24 -0
  97. package/dist/init.js +566 -0
  98. package/dist/init.js.map +1 -0
  99. package/dist/language.d.ts +8 -0
  100. package/dist/language.js +123 -0
  101. package/dist/language.js.map +1 -0
  102. package/dist/live-index.d.ts +68 -0
  103. package/dist/live-index.js +215 -0
  104. package/dist/live-index.js.map +1 -0
  105. package/dist/lsp/assist.d.ts +44 -0
  106. package/dist/lsp/assist.js +331 -0
  107. package/dist/lsp/assist.js.map +1 -0
  108. package/dist/lsp/client.d.ts +59 -0
  109. package/dist/lsp/client.js +208 -0
  110. package/dist/lsp/client.js.map +1 -0
  111. package/dist/mcp/compaction.d.ts +15 -0
  112. package/dist/mcp/compaction.js +1249 -0
  113. package/dist/mcp/compaction.js.map +1 -0
  114. package/dist/mcp/envelope.d.ts +44 -0
  115. package/dist/mcp/envelope.js +425 -0
  116. package/dist/mcp/envelope.js.map +1 -0
  117. package/dist/mcp/prompts.d.ts +2 -0
  118. package/dist/mcp/prompts.js +109 -0
  119. package/dist/mcp/prompts.js.map +1 -0
  120. package/dist/mcp/resources.d.ts +2 -0
  121. package/dist/mcp/resources.js +132 -0
  122. package/dist/mcp/resources.js.map +1 -0
  123. package/dist/mcp/runtime.d.ts +15 -0
  124. package/dist/mcp/runtime.js +122 -0
  125. package/dist/mcp/runtime.js.map +1 -0
  126. package/dist/mcp/session-memory.d.ts +3 -0
  127. package/dist/mcp/session-memory.js +61 -0
  128. package/dist/mcp/session-memory.js.map +1 -0
  129. package/dist/mcp/tool-registry.d.ts +269 -0
  130. package/dist/mcp/tool-registry.js +284 -0
  131. package/dist/mcp/tool-registry.js.map +1 -0
  132. package/dist/mcp/tools.d.ts +53 -0
  133. package/dist/mcp/tools.js +372 -0
  134. package/dist/mcp/tools.js.map +1 -0
  135. package/dist/mcp-repo-root.d.ts +16 -0
  136. package/dist/mcp-repo-root.js +322 -0
  137. package/dist/mcp-repo-root.js.map +1 -0
  138. package/dist/mcp-tool-catalog.d.ts +2 -0
  139. package/dist/mcp-tool-catalog.js +2 -0
  140. package/dist/mcp-tool-catalog.js.map +1 -0
  141. package/dist/mcp.d.ts +11 -0
  142. package/dist/mcp.js +332 -0
  143. package/dist/mcp.js.map +1 -0
  144. package/dist/outcome-ranking.d.ts +5 -0
  145. package/dist/outcome-ranking.js +115 -0
  146. package/dist/outcome-ranking.js.map +1 -0
  147. package/dist/parser/context.d.ts +28 -0
  148. package/dist/parser/context.js +2 -0
  149. package/dist/parser/context.js.map +1 -0
  150. package/dist/parser/ecma.d.ts +5 -0
  151. package/dist/parser/ecma.js +388 -0
  152. package/dist/parser/ecma.js.map +1 -0
  153. package/dist/parser/facts.d.ts +12 -0
  154. package/dist/parser/facts.js +137 -0
  155. package/dist/parser/facts.js.map +1 -0
  156. package/dist/parser/json.d.ts +3 -0
  157. package/dist/parser/json.js +318 -0
  158. package/dist/parser/json.js.map +1 -0
  159. package/dist/parser/markdown.d.ts +3 -0
  160. package/dist/parser/markdown.js +180 -0
  161. package/dist/parser/markdown.js.map +1 -0
  162. package/dist/parser/nodes.d.ts +5 -0
  163. package/dist/parser/nodes.js +75 -0
  164. package/dist/parser/nodes.js.map +1 -0
  165. package/dist/parser/python.d.ts +2 -0
  166. package/dist/parser/python.js +307 -0
  167. package/dist/parser/python.js.map +1 -0
  168. package/dist/parser/references.d.ts +3 -0
  169. package/dist/parser/references.js +204 -0
  170. package/dist/parser/references.js.map +1 -0
  171. package/dist/parser/risks.d.ts +4 -0
  172. package/dist/parser/risks.js +62 -0
  173. package/dist/parser/risks.js.map +1 -0
  174. package/dist/parser/routes.d.ts +5 -0
  175. package/dist/parser/routes.js +97 -0
  176. package/dist/parser/routes.js.map +1 -0
  177. package/dist/parser/shallow.d.ts +3 -0
  178. package/dist/parser/shallow.js +545 -0
  179. package/dist/parser/shallow.js.map +1 -0
  180. package/dist/parser/source.d.ts +4 -0
  181. package/dist/parser/source.js +127 -0
  182. package/dist/parser/source.js.map +1 -0
  183. package/dist/parser.d.ts +2 -0
  184. package/dist/parser.js +2 -0
  185. package/dist/parser.js.map +1 -0
  186. package/dist/placeholder-signals.d.ts +15 -0
  187. package/dist/placeholder-signals.js +511 -0
  188. package/dist/placeholder-signals.js.map +1 -0
  189. package/dist/post-edit-outcomes.d.ts +167 -0
  190. package/dist/post-edit-outcomes.js +484 -0
  191. package/dist/post-edit-outcomes.js.map +1 -0
  192. package/dist/queries.d.ts +12 -0
  193. package/dist/queries.js +13 -0
  194. package/dist/queries.js.map +1 -0
  195. package/dist/query/change-plan.d.ts +48 -0
  196. package/dist/query/change-plan.js +858 -0
  197. package/dist/query/change-plan.js.map +1 -0
  198. package/dist/query/compact-data.d.ts +25 -0
  199. package/dist/query/compact-data.js +74 -0
  200. package/dist/query/compact-data.js.map +1 -0
  201. package/dist/query/context.d.ts +5 -0
  202. package/dist/query/context.js +1162 -0
  203. package/dist/query/context.js.map +1 -0
  204. package/dist/query/diff.d.ts +5 -0
  205. package/dist/query/diff.js +111 -0
  206. package/dist/query/diff.js.map +1 -0
  207. package/dist/query/edge-evidence.d.ts +3 -0
  208. package/dist/query/edge-evidence.js +36 -0
  209. package/dist/query/edge-evidence.js.map +1 -0
  210. package/dist/query/formatting.d.ts +14 -0
  211. package/dist/query/formatting.js +67 -0
  212. package/dist/query/formatting.js.map +1 -0
  213. package/dist/query/graph-traversal.d.ts +22 -0
  214. package/dist/query/graph-traversal.js +218 -0
  215. package/dist/query/graph-traversal.js.map +1 -0
  216. package/dist/query/graph.d.ts +14 -0
  217. package/dist/query/graph.js +102 -0
  218. package/dist/query/graph.js.map +1 -0
  219. package/dist/query/impact.d.ts +28 -0
  220. package/dist/query/impact.js +568 -0
  221. package/dist/query/impact.js.map +1 -0
  222. package/dist/query/inspection.d.ts +9 -0
  223. package/dist/query/inspection.js +290 -0
  224. package/dist/query/inspection.js.map +1 -0
  225. package/dist/query/next-tools.d.ts +3 -0
  226. package/dist/query/next-tools.js +25 -0
  227. package/dist/query/next-tools.js.map +1 -0
  228. package/dist/query/placeholders.d.ts +24 -0
  229. package/dist/query/placeholders.js +121 -0
  230. package/dist/query/placeholders.js.map +1 -0
  231. package/dist/query/post-edit/decision.d.ts +49 -0
  232. package/dist/query/post-edit/decision.js +130 -0
  233. package/dist/query/post-edit/decision.js.map +1 -0
  234. package/dist/query/post-edit/dirty-scope.d.ts +16 -0
  235. package/dist/query/post-edit/dirty-scope.js +21 -0
  236. package/dist/query/post-edit/dirty-scope.js.map +1 -0
  237. package/dist/query/post-edit/next-actions.d.ts +22 -0
  238. package/dist/query/post-edit/next-actions.js +44 -0
  239. package/dist/query/post-edit/next-actions.js.map +1 -0
  240. package/dist/query/post-edit/snapshot-contract.d.ts +8 -0
  241. package/dist/query/post-edit/snapshot-contract.js +111 -0
  242. package/dist/query/post-edit/snapshot-contract.js.map +1 -0
  243. package/dist/query/post-edit.d.ts +5 -0
  244. package/dist/query/post-edit.js +1108 -0
  245. package/dist/query/post-edit.js.map +1 -0
  246. package/dist/query/quality.d.ts +43 -0
  247. package/dist/query/quality.js +134 -0
  248. package/dist/query/quality.js.map +1 -0
  249. package/dist/query/raw-search.d.ts +23 -0
  250. package/dist/query/raw-search.js +147 -0
  251. package/dist/query/raw-search.js.map +1 -0
  252. package/dist/query/runtime.d.ts +11 -0
  253. package/dist/query/runtime.js +79 -0
  254. package/dist/query/runtime.js.map +1 -0
  255. package/dist/query/search.d.ts +25 -0
  256. package/dist/query/search.js +429 -0
  257. package/dist/query/search.js.map +1 -0
  258. package/dist/query/session-memory.d.ts +3 -0
  259. package/dist/query/session-memory.js +108 -0
  260. package/dist/query/session-memory.js.map +1 -0
  261. package/dist/query/session.d.ts +41 -0
  262. package/dist/query/session.js +90 -0
  263. package/dist/query/session.js.map +1 -0
  264. package/dist/query/targets.d.ts +25 -0
  265. package/dist/query/targets.js +97 -0
  266. package/dist/query/targets.js.map +1 -0
  267. package/dist/query/test-commands.d.ts +10 -0
  268. package/dist/query/test-commands.js +110 -0
  269. package/dist/query/test-commands.js.map +1 -0
  270. package/dist/query/test-plan.d.ts +6 -0
  271. package/dist/query/test-plan.js +104 -0
  272. package/dist/query/test-plan.js.map +1 -0
  273. package/dist/query/tests.d.ts +48 -0
  274. package/dist/query/tests.js +444 -0
  275. package/dist/query/tests.js.map +1 -0
  276. package/dist/query/verification/shell.d.ts +20 -0
  277. package/dist/query/verification/shell.js +164 -0
  278. package/dist/query/verification/shell.js.map +1 -0
  279. package/dist/query/verification.d.ts +47 -0
  280. package/dist/query/verification.js +1123 -0
  281. package/dist/query/verification.js.map +1 -0
  282. package/dist/query/workflow.d.ts +17 -0
  283. package/dist/query/workflow.js +252 -0
  284. package/dist/query/workflow.js.map +1 -0
  285. package/dist/query/workspace-guidance.d.ts +26 -0
  286. package/dist/query/workspace-guidance.js +214 -0
  287. package/dist/query/workspace-guidance.js.map +1 -0
  288. package/dist/query/worktree-state.d.ts +22 -0
  289. package/dist/query/worktree-state.js +32 -0
  290. package/dist/query/worktree-state.js.map +1 -0
  291. package/dist/query/worktree.d.ts +16 -0
  292. package/dist/query/worktree.js +194 -0
  293. package/dist/query/worktree.js.map +1 -0
  294. package/dist/query-data.d.ts +4 -0
  295. package/dist/query-data.js +112 -0
  296. package/dist/query-data.js.map +1 -0
  297. package/dist/repo-files.d.ts +24 -0
  298. package/dist/repo-files.js +105 -0
  299. package/dist/repo-files.js.map +1 -0
  300. package/dist/resolver.d.ts +9 -0
  301. package/dist/resolver.js +555 -0
  302. package/dist/resolver.js.map +1 -0
  303. package/dist/retrieval.d.ts +46 -0
  304. package/dist/retrieval.js +783 -0
  305. package/dist/retrieval.js.map +1 -0
  306. package/dist/risk-ingest.d.ts +16 -0
  307. package/dist/risk-ingest.js +458 -0
  308. package/dist/risk-ingest.js.map +1 -0
  309. package/dist/rules.d.ts +10 -0
  310. package/dist/rules.js +107 -0
  311. package/dist/rules.js.map +1 -0
  312. package/dist/semantic/python.d.ts +9 -0
  313. package/dist/semantic/python.js +817 -0
  314. package/dist/semantic/python.js.map +1 -0
  315. package/dist/semantic/typescript.d.ts +10 -0
  316. package/dist/semantic/typescript.js +714 -0
  317. package/dist/semantic/typescript.js.map +1 -0
  318. package/dist/semantic-retrieval.d.ts +53 -0
  319. package/dist/semantic-retrieval.js +673 -0
  320. package/dist/semantic-retrieval.js.map +1 -0
  321. package/dist/session-memory/derivation.d.ts +6 -0
  322. package/dist/session-memory/derivation.js +400 -0
  323. package/dist/session-memory/derivation.js.map +1 -0
  324. package/dist/session-memory/event-log.d.ts +23 -0
  325. package/dist/session-memory/event-log.js +126 -0
  326. package/dist/session-memory/event-log.js.map +1 -0
  327. package/dist/session-memory/formatting.d.ts +7 -0
  328. package/dist/session-memory/formatting.js +86 -0
  329. package/dist/session-memory/formatting.js.map +1 -0
  330. package/dist/session-memory/model.d.ts +94 -0
  331. package/dist/session-memory/model.js +17 -0
  332. package/dist/session-memory/model.js.map +1 -0
  333. package/dist/session-memory/runtime.d.ts +24 -0
  334. package/dist/session-memory/runtime.js +289 -0
  335. package/dist/session-memory/runtime.js.map +1 -0
  336. package/dist/session-memory/store.d.ts +27 -0
  337. package/dist/session-memory/store.js +447 -0
  338. package/dist/session-memory/store.js.map +1 -0
  339. package/dist/session-memory.d.ts +1 -0
  340. package/dist/session-memory.js +2 -0
  341. package/dist/session-memory.js.map +1 -0
  342. package/dist/static-analysis.d.ts +36 -0
  343. package/dist/static-analysis.js +505 -0
  344. package/dist/static-analysis.js.map +1 -0
  345. package/dist/symbol-report-ingest.d.ts +8 -0
  346. package/dist/symbol-report-ingest.js +504 -0
  347. package/dist/symbol-report-ingest.js.map +1 -0
  348. package/dist/task-snapshots.d.ts +41 -0
  349. package/dist/task-snapshots.js +430 -0
  350. package/dist/task-snapshots.js.map +1 -0
  351. package/dist/types.d.ts +848 -0
  352. package/dist/types.js +12 -0
  353. package/dist/types.js.map +1 -0
  354. package/dist/util.d.ts +11 -0
  355. package/dist/util.js +63 -0
  356. package/dist/util.js.map +1 -0
  357. package/dist/version.d.ts +1 -0
  358. package/dist/version.js +5 -0
  359. package/dist/version.js.map +1 -0
  360. package/package.json +81 -0
  361. package/plugins/codexa/.codex-plugin/plugin.json +38 -0
  362. package/plugins/codexa/.mcp.json +20 -0
  363. package/plugins/codexa/scripts/codexa-mcp.js +100 -0
  364. package/plugins/codexa/skills/codexa/SKILL.md +48 -0
package/dist/init.js ADDED
@@ -0,0 +1,566 @@
1
+ import { execFileSync } from "node:child_process";
2
+ import path from "node:path";
3
+ import { mkdir, readFile, rm, writeFile } from "node:fs/promises";
4
+ import { renderCodexUseContract } from "./codex-contract.js";
5
+ import { buildIndexLocked } from "./indexer.js";
6
+ import { PRIMARY_CODEX_LOOP, PRIMARY_MCP_TOOL_NAMES } from "./mcp-tool-catalog.js";
7
+ import { resolveMcpRepoRoot } from "./mcp-repo-root.js";
8
+ import { statusQuery } from "./queries.js";
9
+ const EDIT_HOOK_MATCHER = "Edit|MultiEdit|Write|NotebookEdit|apply_patch";
10
+ const CORE_PROFILE_TOOL_NAMES = [...PRIMARY_MCP_TOOL_NAMES, "impact", "freshness"];
11
+ export async function initializeProject(repoInput, options) {
12
+ const repoRoot = resolveInitRepo(repoInput);
13
+ const codexDir = path.join(repoRoot, ".codex");
14
+ const serverName = validateServerName(options.serverName ?? `codexa-${slugify(path.basename(repoRoot))}`);
15
+ const cliPath = path.resolve(options.cliPath);
16
+ const configPath = path.join(codexDir, "config.toml");
17
+ const hooksPath = path.join(codexDir, "hooks.json");
18
+ const writeHooks = options.hooks ?? true;
19
+ await mkdir(codexDir, { recursive: true });
20
+ const keepHooksFeature = writeHooks
21
+ ? true
22
+ : await removeCodexaManagedHooksConfig(hooksPath, {
23
+ cliPath,
24
+ repoRoot
25
+ });
26
+ await upsertCodexConfig(configPath, {
27
+ autoRefresh: options.autoRefresh ?? true,
28
+ cliPath,
29
+ repoRoot,
30
+ serverName,
31
+ hooks: keepHooksFeature,
32
+ toolProfile: options.toolProfile ?? "full"
33
+ });
34
+ if (writeHooks) {
35
+ await upsertHooksConfig(hooksPath, {
36
+ cliPath,
37
+ repoRoot
38
+ });
39
+ }
40
+ const agentsMdPath = options.agentsMd ? await upsertAgentsMd(repoRoot, serverName) : null;
41
+ const indexed = options.index === false
42
+ ? null
43
+ : summarizeIndex(await buildIndexLocked({ repoRoot, writeArtifacts: true }));
44
+ return {
45
+ repoRoot,
46
+ configPath,
47
+ hooksPath: writeHooks ? hooksPath : null,
48
+ agentsMdPath,
49
+ serverName,
50
+ indexed
51
+ };
52
+ }
53
+ export async function sessionStartSummary(repoInput, includeContext, autoRefresh = false) {
54
+ const configuredRoot = path.resolve(repoInput ?? process.cwd());
55
+ let repoRoot;
56
+ let resolutionNote;
57
+ try {
58
+ const resolution = await resolveMcpRepoRoot(configuredRoot);
59
+ repoRoot = resolution.repoRoot;
60
+ if (resolution.source !== "configured-root") {
61
+ const via = resolution.focusFile ? `${resolution.source}:${resolution.focusFile}` : resolution.source;
62
+ resolutionNote = `Workspace root: ${configuredRoot} -> focused repo via ${via}`;
63
+ }
64
+ }
65
+ catch (error) {
66
+ const lines = [`Codexa context for ${configuredRoot}:`];
67
+ lines.push(`Codexa status unavailable: ${boundedErrorMessage(error)}`);
68
+ lines.push("Codexa startup hook is advisory; continuing without blocking the session.");
69
+ return lines.join("\n");
70
+ }
71
+ const lines = [`Codexa context for ${repoRoot}:`];
72
+ if (resolutionNote) {
73
+ lines.push(resolutionNote);
74
+ }
75
+ let status;
76
+ try {
77
+ status = await statusQuery(repoRoot);
78
+ if (autoRefresh && status.freshness.stale) {
79
+ await buildIndexLocked({ repoRoot, writeArtifacts: true });
80
+ status = await statusQuery(repoRoot);
81
+ }
82
+ }
83
+ catch (error) {
84
+ lines.push(`Codexa status unavailable: ${boundedErrorMessage(error)}`);
85
+ lines.push("Codexa startup hook is advisory; continuing without blocking the session.");
86
+ return lines.join("\n");
87
+ }
88
+ lines.push(...status.text.split(/\r?\n/).slice(0, 6));
89
+ if (includeContext) {
90
+ lines.push("", ...renderCodexUseContract(status.freshness).split(/\r?\n/).slice(0, 78));
91
+ lines.push(`Session-start auto-refresh: ${autoRefresh ? "enabled for follow-up MCP context calls" : "disabled for this cheap startup check"}.`);
92
+ }
93
+ lines.push("Codexa MCP is ready.");
94
+ lines.push(`Automatic-use contract: primary loop ${PRIMARY_CODEX_LOOP}; broad task -> session_context then search if actionability needs a target; resume/reuse working memory -> session_memory; workflow/runtime change -> workflow_path; API/rename/delete -> callers/callees/dependency_path.`);
95
+ return lines.join("\n");
96
+ }
97
+ function summarizeIndex(index) {
98
+ return {
99
+ files: index.files.length,
100
+ symbols: index.symbols.length,
101
+ usageSites: index.usageSites.length
102
+ };
103
+ }
104
+ function resolveInitRepo(repoInput) {
105
+ const candidate = path.resolve(repoInput ?? process.cwd());
106
+ const gitRoot = runGit(candidate, ["rev-parse", "--show-toplevel"]);
107
+ if (!gitRoot) {
108
+ throw new Error(`Codexa init requires a git repository: ${candidate}`);
109
+ }
110
+ return path.resolve(gitRoot);
111
+ }
112
+ function runGit(cwd, args) {
113
+ try {
114
+ return execFileSync("git", ["-C", cwd, ...args], {
115
+ encoding: "utf8",
116
+ stdio: ["ignore", "pipe", "ignore"]
117
+ }).trim();
118
+ }
119
+ catch {
120
+ return null;
121
+ }
122
+ }
123
+ async function upsertCodexConfig(configPath, options) {
124
+ const existing = await readTextIfExists(configPath);
125
+ let next = stripManagedBlocks(existing);
126
+ next = removeCodexaMcpServerBlocks(next, options);
127
+ next = removeMcpServerBlock(next, options.serverName);
128
+ if (options.hooks) {
129
+ next = ensureHooksFeature(next);
130
+ }
131
+ else {
132
+ next = removeHooksFeature(next);
133
+ }
134
+ next = trimTrailingBlankLines(next);
135
+ if (next) {
136
+ next += "\n\n";
137
+ }
138
+ next += renderMcpServerBlock(options);
139
+ await writeFile(configPath, `${next}\n`, "utf8");
140
+ }
141
+ function renderMcpServerBlock(options) {
142
+ const args = [options.cliPath, "serve", options.repoRoot];
143
+ args.push(options.autoRefresh ? "--auto-refresh" : "--no-auto-refresh");
144
+ const toolProfileLines = options.toolProfile === "core"
145
+ ? [
146
+ "# Core profile: fewer exposed tools means less per-turn schema cost and better routing.",
147
+ `# Re-run \`codexa init --tools full\` to expose every tool.`,
148
+ `enabled_tools = [${CORE_PROFILE_TOOL_NAMES.map(tomlString).join(", ")}]`
149
+ ]
150
+ : [`# Tip: \`codexa init --tools core\` exposes only the primary loop tools (${CORE_PROFILE_TOOL_NAMES.join(", ")}) to cut per-turn token cost.`];
151
+ const refreshCommand = options.toolProfile === "core" ? "codexa init --tools core" : "codexa init";
152
+ return [
153
+ "# >>> codexa managed",
154
+ `# Re-run \`${refreshCommand}\` from this repository to refresh this block.`,
155
+ `[mcp_servers.${options.serverName}]`,
156
+ `command = "node"`,
157
+ `args = [${args.map(tomlString).join(", ")}]`,
158
+ "startup_timeout_sec = 20",
159
+ "tool_timeout_sec = 60",
160
+ ...toolProfileLines,
161
+ "# <<< codexa managed"
162
+ ].join("\n");
163
+ }
164
+ const AGENTS_MD_START = "<!-- >>> codexa managed -->";
165
+ const AGENTS_MD_END = "<!-- <<< codexa managed -->";
166
+ async function upsertAgentsMd(repoRoot, serverName) {
167
+ const agentsMdPath = path.join(repoRoot, "AGENTS.md");
168
+ const existing = await readTextIfExists(agentsMdPath);
169
+ assertBalancedAgentsMdMarkers(existing, agentsMdPath);
170
+ const block = [
171
+ AGENTS_MD_START,
172
+ `## Codexa (\`${serverName}\` MCP server)`,
173
+ "",
174
+ "Codexa serves evidence-backed repository context. Prefer it over raw grep for cross-file questions.",
175
+ "",
176
+ "- Orient: call `session_context` at session start; `search` when the target is unclear.",
177
+ "- Before non-trivial edits: `task_brief`, then `change_plan` with `saveSnapshot=true`.",
178
+ "- After edits: `post_edit_review` with the commands that actually ran; finish with `test_plan`.",
179
+ "- Inspect: `impact` before API/rename/delete changes; `callers`/`callees` for graph evidence.",
180
+ "",
181
+ "Each tool description states its output cost; prefer the cheapest sufficient tool.",
182
+ AGENTS_MD_END
183
+ ].join("\n");
184
+ const stripped = stripAgentsMdManagedBlock(existing).replace(/\s+$/u, "");
185
+ const next = stripped ? `${stripped}\n\n${block}\n` : `${block}\n`;
186
+ await writeFile(agentsMdPath, next, "utf8");
187
+ return agentsMdPath;
188
+ }
189
+ function stripAgentsMdManagedBlock(content) {
190
+ const lines = content.split(/\r?\n/);
191
+ const kept = [];
192
+ let skipping = false;
193
+ for (const line of lines) {
194
+ if (line.trim() === AGENTS_MD_START) {
195
+ skipping = true;
196
+ continue;
197
+ }
198
+ if (line.trim() === AGENTS_MD_END) {
199
+ skipping = false;
200
+ continue;
201
+ }
202
+ if (!skipping) {
203
+ kept.push(line);
204
+ }
205
+ }
206
+ return kept.join("\n");
207
+ }
208
+ // AGENTS.md is hand-authored user content; a stray or unbalanced marker must
209
+ // abort instead of silently deleting everything after it.
210
+ function assertBalancedAgentsMdMarkers(content, agentsMdPath) {
211
+ let skipping = false;
212
+ for (const line of content.split(/\r?\n/)) {
213
+ if (line.trim() === AGENTS_MD_START) {
214
+ if (skipping) {
215
+ throw new Error(`Cannot update ${agentsMdPath}: nested '${AGENTS_MD_START}' marker found; fix the file manually and re-run.`);
216
+ }
217
+ skipping = true;
218
+ }
219
+ else if (line.trim() === AGENTS_MD_END) {
220
+ if (!skipping) {
221
+ throw new Error(`Cannot update ${agentsMdPath}: orphan '${AGENTS_MD_END}' marker found; fix the file manually and re-run.`);
222
+ }
223
+ skipping = false;
224
+ }
225
+ }
226
+ if (skipping) {
227
+ throw new Error(`Cannot update ${agentsMdPath}: unterminated '${AGENTS_MD_START}' marker found; fix the file manually and re-run.`);
228
+ }
229
+ }
230
+ async function upsertHooksConfig(hooksPath, options) {
231
+ const existing = await readTextIfExists(hooksPath);
232
+ const parsed = existing.trim() ? parseHooksJson(existing, hooksPath) : {};
233
+ const hooks = isPlainObject(parsed.hooks) ? parsed.hooks : {};
234
+ const cleanedSessionStart = cleanHookList(hooks.SessionStart, options);
235
+ const cleanedPreToolUse = cleanHookList(hooks.PreToolUse, options);
236
+ const cleanedPostToolUse = cleanHookList(hooks.PostToolUse, options);
237
+ cleanedSessionStart.push({
238
+ codexaManaged: true,
239
+ matcher: "startup|resume",
240
+ hooks: [
241
+ {
242
+ codexaManaged: true,
243
+ type: "command",
244
+ command: `node ${shellQuote(options.cliPath)} session-start ${shellQuote(options.repoRoot)}`,
245
+ statusMessage: "Loading Codexa context",
246
+ timeout: 5
247
+ }
248
+ ]
249
+ });
250
+ cleanedPreToolUse.push({
251
+ codexaManaged: true,
252
+ matcher: EDIT_HOOK_MATCHER,
253
+ hooks: [
254
+ {
255
+ codexaManaged: true,
256
+ type: "command",
257
+ command: `node ${shellQuote(options.cliPath)} hook-pre-edit ${shellQuote(options.repoRoot)}`,
258
+ statusMessage: "Checking Codexa change-plan snapshot",
259
+ timeout: 5
260
+ }
261
+ ]
262
+ });
263
+ cleanedPostToolUse.push({
264
+ codexaManaged: true,
265
+ matcher: EDIT_HOOK_MATCHER,
266
+ hooks: [
267
+ {
268
+ codexaManaged: true,
269
+ type: "command",
270
+ command: `node ${shellQuote(options.cliPath)} hook-post-edit ${shellQuote(options.repoRoot)}`,
271
+ statusMessage: "Running Codexa post-edit review",
272
+ timeout: 90
273
+ }
274
+ ]
275
+ });
276
+ const next = {
277
+ ...parsed,
278
+ hooks: {
279
+ ...hooks,
280
+ SessionStart: cleanedSessionStart,
281
+ PreToolUse: cleanedPreToolUse,
282
+ PostToolUse: cleanedPostToolUse
283
+ }
284
+ };
285
+ await writeFile(hooksPath, `${JSON.stringify(next, null, 2)}\n`, "utf8");
286
+ }
287
+ async function removeCodexaManagedHooksConfig(hooksPath, options) {
288
+ const existing = await readTextIfExists(hooksPath);
289
+ if (!existing.trim()) {
290
+ await rm(hooksPath, { force: true });
291
+ return false;
292
+ }
293
+ const parsed = parseHooksJson(existing, hooksPath);
294
+ const hooks = isPlainObject(parsed.hooks) ? parsed.hooks : {};
295
+ const cleanedHooks = { ...hooks };
296
+ for (const key of ["SessionStart", "PreToolUse", "PostToolUse"]) {
297
+ const cleaned = cleanHookList(hooks[key], options);
298
+ if (cleaned.length > 0) {
299
+ cleanedHooks[key] = cleaned;
300
+ }
301
+ else {
302
+ delete cleanedHooks[key];
303
+ }
304
+ }
305
+ const hasRemainingHooks = Object.values(cleanedHooks).some((value) => Array.isArray(value) && value.length > 0);
306
+ if (!hasRemainingHooks) {
307
+ await rm(hooksPath, { force: true });
308
+ return false;
309
+ }
310
+ await writeFile(hooksPath, `${JSON.stringify({ ...parsed, hooks: cleanedHooks }, null, 2)}\n`, "utf8");
311
+ return true;
312
+ }
313
+ function cleanHookList(value, options) {
314
+ const entries = Array.isArray(value) ? value : [];
315
+ return entries
316
+ .map((entry) => cleanHookEntry(entry, options))
317
+ .filter((entry) => entry !== null);
318
+ }
319
+ function cleanHookEntry(entry, options) {
320
+ if (!isPlainObject(entry)) {
321
+ return null;
322
+ }
323
+ if (entry.codexaManaged === true) {
324
+ return null;
325
+ }
326
+ const hooks = Array.isArray(entry.hooks) ? entry.hooks : [];
327
+ const cleanedHooks = hooks.filter((hook) => {
328
+ if (!isPlainObject(hook)) {
329
+ return false;
330
+ }
331
+ if (hook.codexaManaged === true) {
332
+ return false;
333
+ }
334
+ const command = typeof hook.command === "string" ? hook.command : "";
335
+ return !isCodexaHookCommand(command, options);
336
+ });
337
+ if (cleanedHooks.length === 0) {
338
+ return null;
339
+ }
340
+ return {
341
+ ...entry,
342
+ hooks: cleanedHooks
343
+ };
344
+ }
345
+ function isCodexaHookCommand(command, options) {
346
+ const trimmed = command.trim();
347
+ if (/^codexa-sessionstart(?:\s|$)/u.test(trimmed) || /(?:^|\/)codexa-sessionstart-[^/\s]+\.sh(?:\s|$)/u.test(trimmed)) {
348
+ return true;
349
+ }
350
+ for (const action of ["session-start", "hook-pre-edit", "hook-post-edit"]) {
351
+ const generated = `node ${shellQuote(options.cliPath)} ${action} ${shellQuote(options.repoRoot)}`;
352
+ const generatedUnquoted = `node ${options.cliPath} ${action} ${options.repoRoot}`;
353
+ const generatedPrefix = `node ${shellQuote(options.cliPath)} ${action} `;
354
+ const generatedUnquotedPrefix = `node ${options.cliPath} ${action} `;
355
+ if (trimmed === generated || trimmed === generatedUnquoted || trimmed.startsWith(generatedPrefix) || trimmed.startsWith(generatedUnquotedPrefix)) {
356
+ return true;
357
+ }
358
+ }
359
+ return false;
360
+ }
361
+ function parseHooksJson(value, hooksPath) {
362
+ try {
363
+ const parsed = JSON.parse(value);
364
+ if (!isPlainObject(parsed)) {
365
+ throw new Error("top-level JSON value must be an object");
366
+ }
367
+ return parsed;
368
+ }
369
+ catch (error) {
370
+ const message = error instanceof Error ? error.message : String(error);
371
+ throw new Error(`Cannot update ${hooksPath}: ${message}`);
372
+ }
373
+ }
374
+ function ensureHooksFeature(config) {
375
+ const lines = config.split(/\r?\n/);
376
+ const featureStart = lines.findIndex((line) => line.trim() === "[features]");
377
+ if (featureStart === -1) {
378
+ return ["[features]", "hooks = true", "", ...lines].join("\n");
379
+ }
380
+ let sectionEnd = lines.length;
381
+ for (let index = featureStart + 1; index < lines.length; index += 1) {
382
+ const trimmed = lines[index].trim();
383
+ if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
384
+ sectionEnd = index;
385
+ break;
386
+ }
387
+ }
388
+ let hooksLine = -1;
389
+ let deprecatedLine = -1;
390
+ for (let index = featureStart + 1; index < sectionEnd; index += 1) {
391
+ const trimmed = lines[index].trim();
392
+ if (/^hooks\s*=/u.test(trimmed)) {
393
+ hooksLine = index;
394
+ }
395
+ else if (/^codex_hooks\s*=/u.test(trimmed)) {
396
+ deprecatedLine = index;
397
+ }
398
+ }
399
+ if (deprecatedLine !== -1) {
400
+ lines.splice(deprecatedLine, 1);
401
+ if (hooksLine > deprecatedLine) {
402
+ hooksLine -= 1;
403
+ }
404
+ }
405
+ if (hooksLine === -1) {
406
+ const insertAt = deprecatedLine === -1 ? featureStart + 1 : deprecatedLine;
407
+ lines.splice(insertAt, 0, "hooks = true");
408
+ }
409
+ else {
410
+ lines[hooksLine] = "hooks = true";
411
+ }
412
+ return lines.join("\n");
413
+ }
414
+ function removeHooksFeature(config) {
415
+ const lines = config.split(/\r?\n/);
416
+ const featureStart = lines.findIndex((line) => line.trim() === "[features]");
417
+ if (featureStart === -1) {
418
+ return config;
419
+ }
420
+ let sectionEnd = lines.length;
421
+ for (let index = featureStart + 1; index < lines.length; index += 1) {
422
+ const trimmed = lines[index].trim();
423
+ if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
424
+ sectionEnd = index;
425
+ break;
426
+ }
427
+ }
428
+ return lines
429
+ .filter((line, index) => index <= featureStart || index >= sectionEnd || !/^(?:codex_)?hooks\s*=/u.test(line.trim()))
430
+ .join("\n");
431
+ }
432
+ function stripManagedBlocks(config) {
433
+ const lines = config.split(/\r?\n/);
434
+ const kept = [];
435
+ let skipping = false;
436
+ for (const line of lines) {
437
+ if (line.trim() === "# >>> codexa managed") {
438
+ skipping = true;
439
+ continue;
440
+ }
441
+ if (line.trim() === "# <<< codexa managed") {
442
+ skipping = false;
443
+ continue;
444
+ }
445
+ if (!skipping) {
446
+ kept.push(line);
447
+ }
448
+ }
449
+ return kept.join("\n");
450
+ }
451
+ function removeMcpServerBlock(config, serverName) {
452
+ const lines = config.split(/\r?\n/);
453
+ const kept = [];
454
+ const header = `[mcp_servers.${serverName}]`;
455
+ const normalizedHeader = header.toLowerCase();
456
+ let skipping = false;
457
+ for (const line of lines) {
458
+ const trimmed = line.trim();
459
+ if (trimmed.toLowerCase() === normalizedHeader) {
460
+ skipping = true;
461
+ continue;
462
+ }
463
+ if (skipping && trimmed.startsWith("[") && trimmed.endsWith("]")) {
464
+ skipping = false;
465
+ }
466
+ if (!skipping) {
467
+ kept.push(line);
468
+ }
469
+ }
470
+ return kept.join("\n");
471
+ }
472
+ function removeCodexaMcpServerBlocks(config, options) {
473
+ const lines = config.split(/\r?\n/);
474
+ const kept = [];
475
+ let skipping = false;
476
+ let candidate = [];
477
+ const flushCandidate = () => {
478
+ if (candidate.length === 0) {
479
+ return;
480
+ }
481
+ if (!isCodexaMcpServerBlock(candidate, options)) {
482
+ kept.push(...candidate);
483
+ }
484
+ candidate = [];
485
+ };
486
+ for (const line of lines) {
487
+ const trimmed = line.trim();
488
+ const isSectionHeader = trimmed.startsWith("[") && trimmed.endsWith("]");
489
+ if (isSectionHeader) {
490
+ if (skipping) {
491
+ flushCandidate();
492
+ }
493
+ skipping = /^\[mcp_servers\.[^\]]+\]$/iu.test(trimmed);
494
+ if (skipping) {
495
+ candidate = [line];
496
+ }
497
+ else {
498
+ kept.push(line);
499
+ }
500
+ continue;
501
+ }
502
+ if (skipping) {
503
+ candidate.push(line);
504
+ }
505
+ else {
506
+ kept.push(line);
507
+ }
508
+ }
509
+ if (skipping) {
510
+ flushCandidate();
511
+ }
512
+ return kept.join("\n");
513
+ }
514
+ function isCodexaMcpServerBlock(lines, options) {
515
+ const block = lines.join("\n");
516
+ const header = lines[0]?.trim().toLowerCase() ?? "";
517
+ const blockWithoutRepoRoot = block.replaceAll(options.repoRoot, "");
518
+ if (!/\bserve\b/u.test(block)) {
519
+ return false;
520
+ }
521
+ if (/^\[mcp_servers\.codexa[-_.a-z0-9]*\]$/u.test(header) || /\bcodexa\b/u.test(blockWithoutRepoRoot)) {
522
+ return true;
523
+ }
524
+ return block.includes(tomlString(options.cliPath)) && block.includes(tomlString(options.repoRoot));
525
+ }
526
+ async function readTextIfExists(filePath) {
527
+ try {
528
+ return await readFile(filePath, "utf8");
529
+ }
530
+ catch (error) {
531
+ if (isNodeError(error) && error.code === "ENOENT") {
532
+ return "";
533
+ }
534
+ throw error;
535
+ }
536
+ }
537
+ function trimTrailingBlankLines(value) {
538
+ return value.replace(/\s+$/u, "");
539
+ }
540
+ function slugify(value) {
541
+ const slug = value.toLowerCase().replace(/[^a-z0-9_-]+/gu, "-").replace(/^-+|-+$/gu, "");
542
+ return slug || "repo";
543
+ }
544
+ function validateServerName(value) {
545
+ if (!/^[A-Za-z0-9_-]{1,64}$/u.test(value)) {
546
+ throw new Error(`Invalid Codexa MCP server name: ${value}`);
547
+ }
548
+ return value;
549
+ }
550
+ function tomlString(value) {
551
+ return JSON.stringify(value);
552
+ }
553
+ function shellQuote(value) {
554
+ return `'${value.replaceAll("'", "'\\''")}'`;
555
+ }
556
+ function isPlainObject(value) {
557
+ return typeof value === "object" && value !== null && !Array.isArray(value);
558
+ }
559
+ function isNodeError(error) {
560
+ return error instanceof Error && "code" in error;
561
+ }
562
+ function boundedErrorMessage(error) {
563
+ const message = error instanceof Error ? error.message : String(error);
564
+ return message.replace(/\s+/gu, " ").trim().slice(0, 300) || "unknown error";
565
+ }
566
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { LanguageId } from "./types.js";
2
+ export declare function languageForPath(filePath: string): LanguageId;
3
+ export declare function isSourcePath(filePath: string): boolean;
4
+ export declare function shouldSkipPath(filePath: string): boolean;
5
+ export declare function isGeneratedPath(filePath: string): boolean;
6
+ export declare function isTestPath(filePath: string): boolean;
7
+ export declare function moduleNameForPath(filePath: string): string;
8
+ export declare function isPublicSurfacePath(filePath: string): boolean;