@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/types.js ADDED
@@ -0,0 +1,12 @@
1
+ export const VERIFICATION_PROVENANCE_SCHEMA_VERSION = 1;
2
+ export const VERIFICATION_COMMAND_COVERAGE_CLASSIFIER_VERSION = "command-coverage-v3";
3
+ export const VERIFICATION_COMMAND_ENVELOPE_RULESET_VERSION = "command-envelope-v2";
4
+ export const VERIFICATION_LEDGER_VERSION = "verification-ledger-v2";
5
+ export const CURRENT_VERIFICATION_PROVENANCE = {
6
+ schemaVersion: VERIFICATION_PROVENANCE_SCHEMA_VERSION,
7
+ commandCoverageClassifier: "codexa-command-coverage",
8
+ commandCoverageClassifierVersion: VERIFICATION_COMMAND_COVERAGE_CLASSIFIER_VERSION,
9
+ commandEnvelopeRulesetVersion: VERIFICATION_COMMAND_ENVELOPE_RULESET_VERSION,
10
+ verificationLedgerVersion: VERIFICATION_LEDGER_VERSION
11
+ };
12
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA41BA,MAAM,CAAC,MAAM,sCAAsC,GAAG,CAAU,CAAC;AACjE,MAAM,CAAC,MAAM,gDAAgD,GAAG,qBAAqB,CAAC;AACtF,MAAM,CAAC,MAAM,6CAA6C,GAAG,qBAAqB,CAAC;AACnF,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAwB,CAAC;AAUpE,MAAM,CAAC,MAAM,+BAA+B,GAA2B;IACrE,aAAa,EAAE,sCAAsC;IACrD,yBAAyB,EAAE,yBAAyB;IACpD,gCAAgC,EAAE,gDAAgD;IAClF,6BAA6B,EAAE,6CAA6C;IAC5E,yBAAyB,EAAE,2BAA2B;CACvD,CAAC"}
package/dist/util.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ export declare function normalizePath(filePath: string): string;
2
+ export declare function stableId(...parts: Array<string | number | undefined | null>): string;
3
+ export declare function clamp(value: number, min: number, max: number): number;
4
+ export declare function uniqueSorted(values: Iterable<string>): string[];
5
+ export declare function topBy<T>(items: T[], score: (item: T) => number, limit: number): T[];
6
+ export declare function mapLimit<T, R>(items: T[], limit: number, mapper: (item: T) => Promise<R>): Promise<R[]>;
7
+ export declare function relativeTo(base: string, target: string): string;
8
+ export declare function formatPathLine(filePath: string, line?: number): string;
9
+ export declare function escapeMarkdown(value: string): string;
10
+ export declare function limitText(value: string, max?: number): string;
11
+ export declare function isSubpath(candidate: string, parent: string): boolean;
package/dist/util.js ADDED
@@ -0,0 +1,63 @@
1
+ import { createHash } from "node:crypto";
2
+ import path from "node:path";
3
+ export function normalizePath(filePath) {
4
+ return filePath.split(path.sep).join("/");
5
+ }
6
+ export function stableId(...parts) {
7
+ const hash = createHash("sha1");
8
+ hash.update(parts.filter((part) => part !== undefined && part !== null).join("\0"));
9
+ return hash.digest("hex").slice(0, 16);
10
+ }
11
+ export function clamp(value, min, max) {
12
+ return Math.max(min, Math.min(max, value));
13
+ }
14
+ export function uniqueSorted(values) {
15
+ return [...new Set(values)].sort((a, b) => a.localeCompare(b));
16
+ }
17
+ export function topBy(items, score, limit) {
18
+ return [...items].sort((a, b) => score(b) - score(a) || stableSortKey(a).localeCompare(stableSortKey(b))).slice(0, limit);
19
+ }
20
+ export async function mapLimit(items, limit, mapper) {
21
+ const results = new Array(items.length);
22
+ let cursor = 0;
23
+ const workers = Array.from({ length: Math.min(limit, items.length) }, async () => {
24
+ while (cursor < items.length) {
25
+ const index = cursor;
26
+ cursor += 1;
27
+ results[index] = await mapper(items[index]);
28
+ }
29
+ });
30
+ await Promise.all(workers);
31
+ return results;
32
+ }
33
+ function stableSortKey(item) {
34
+ if (item && typeof item === "object") {
35
+ const record = item;
36
+ for (const key of ["path", "qualifiedName", "name", "id"]) {
37
+ if (typeof record[key] === "string") {
38
+ return record[key];
39
+ }
40
+ }
41
+ }
42
+ return JSON.stringify(item);
43
+ }
44
+ export function relativeTo(base, target) {
45
+ return normalizePath(path.relative(base, target));
46
+ }
47
+ export function formatPathLine(filePath, line) {
48
+ return line ? `${filePath}:${line}` : filePath;
49
+ }
50
+ export function escapeMarkdown(value) {
51
+ return value.replaceAll("|", "\\|").replaceAll("\n", " ");
52
+ }
53
+ export function limitText(value, max = 2000) {
54
+ if (value.length <= max) {
55
+ return value;
56
+ }
57
+ return `${value.slice(0, max - 20)}\n... truncated ...`;
58
+ }
59
+ export function isSubpath(candidate, parent) {
60
+ const rel = path.relative(parent, candidate);
61
+ return rel === "" || (!rel.startsWith("..") && !path.isAbsolute(rel));
62
+ }
63
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const CODEXA_VERSION: string;
@@ -0,0 +1,5 @@
1
+ import { createRequire } from "node:module";
2
+ const require = createRequire(import.meta.url);
3
+ const packageJson = require("../package.json");
4
+ export const CODEXA_VERSION = typeof packageJson.version === "string" && packageJson.version ? packageJson.version : "0.0.0";
5
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAA0B,CAAC;AAExE,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC"}
package/package.json ADDED
@@ -0,0 +1,81 @@
1
+ {
2
+ "name": "@mirnoorata/codexa",
3
+ "version": "0.2.0",
4
+ "mcpName": "io.github.mirnoorata/codexa",
5
+ "description": "Codex-native codebase intelligence context compiler and query-only MCP server.",
6
+ "keywords": [
7
+ "codex",
8
+ "mcp",
9
+ "code-intelligence",
10
+ "symbol-search",
11
+ "impact-analysis",
12
+ "local-first",
13
+ "verification"
14
+ ],
15
+ "license": "MIT",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/mirnoorata/codexa.git"
19
+ },
20
+ "bugs": {
21
+ "url": "https://github.com/mirnoorata/codexa/issues"
22
+ },
23
+ "homepage": "https://github.com/mirnoorata/codexa#readme",
24
+ "type": "module",
25
+ "publishConfig": {
26
+ "access": "public"
27
+ },
28
+ "bin": {
29
+ "codexa": "dist/cli.js"
30
+ },
31
+ "files": [
32
+ "dist",
33
+ "plugins/codexa"
34
+ ],
35
+ "scripts": {
36
+ "build": "tsc -p tsconfig.json",
37
+ "typecheck": "tsc -p tsconfig.json --noEmit",
38
+ "lint": "node scripts/verify-source-hygiene.mjs && node scripts/verify-release-path.mjs && bash scripts/verify-codexa-publish.sh",
39
+ "audit": "npm audit --audit-level=moderate",
40
+ "privacy": "node scripts/verify-public-hygiene.mjs",
41
+ "privacy:history": "node scripts/verify-public-hygiene.mjs --history",
42
+ "privacy:release": "npm run privacy && npm run privacy:history",
43
+ "plugin:hygiene": "node scripts/verify-plugin-package.mjs",
44
+ "package:hygiene": "node scripts/verify-package-hygiene.mjs && npm run plugin:hygiene",
45
+ "smoke:package": "node scripts/package-install-smoke.mjs",
46
+ "benchmark:ci": "npm run build && node scripts/benchmark-hot-paths.mjs --output .codex/cache/codexa-benchmarks/latest.json",
47
+ "ci:extended": "npm run smoke:package && npm run benchmark:ci",
48
+ "public:snapshot-check": "node scripts/verify-public-snapshot.mjs",
49
+ "clean:private-artifacts": "node scripts/clean-private-artifacts.mjs",
50
+ "prepare:codera-parking": "node scripts/prepare-codera-parking-package.mjs && node scripts/verify-package-hygiene.mjs .local/release/codera",
51
+ "prepack": "npm run build",
52
+ "prepublishOnly": "npm run security:check",
53
+ "publish:codexa": "bash scripts/codexa-publish.sh",
54
+ "release:archive": "npm run check && git archive --format=tar.gz --output codexa-public-head.tar.gz HEAD",
55
+ "release:github:dry-run": "npm run build && node dist/cli.js github-release . --dry-run",
56
+ "release:github": "npm run security:check && node dist/cli.js github-release .",
57
+ "test": "npm run build && vitest run",
58
+ "test:schema": "vitest run tests/schema.test.ts",
59
+ "test:claude-code": "bash integrations/claude-code/tests/cmd-smoke.sh && bash integrations/claude-code/tests/hook-smoke.sh",
60
+ "check": "npm run typecheck && npm run lint && npm run privacy && npm run test:claude-code && npm test",
61
+ "security:check": "npm run check && npm run audit && npm run public:snapshot-check && npm run package:hygiene && npm run smoke:package",
62
+ "dev": "tsx src/cli.ts"
63
+ },
64
+ "dependencies": {
65
+ "@modelcontextprotocol/sdk": "1.29.0",
66
+ "commander": "15.0.0",
67
+ "tree-sitter": "0.21.1",
68
+ "tree-sitter-python": "0.21.0",
69
+ "tree-sitter-typescript": "0.23.2",
70
+ "typescript": "6.0.3",
71
+ "zod": "4.4.3"
72
+ },
73
+ "devDependencies": {
74
+ "@types/node": "25.6.2",
75
+ "tsx": "4.22.4",
76
+ "vitest": "4.1.8"
77
+ },
78
+ "engines": {
79
+ "node": ">=22"
80
+ }
81
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "codexa",
3
+ "version": "0.1.0",
4
+ "description": "Codex-native codebase intelligence workflows, MCP setup, and edit accountability for repositories indexed by Codexa.",
5
+ "author": {
6
+ "name": "Codexa maintainers",
7
+ "url": "https://github.com/mirnoorata/codexa"
8
+ },
9
+ "homepage": "https://github.com/mirnoorata/codexa#readme",
10
+ "repository": "https://github.com/mirnoorata/codexa",
11
+ "license": "MIT",
12
+ "keywords": [
13
+ "codex",
14
+ "mcp",
15
+ "codebase-intelligence",
16
+ "task-brief",
17
+ "post-edit-review"
18
+ ],
19
+ "skills": "./skills/",
20
+ "mcpServers": "./.mcp.json",
21
+ "interface": {
22
+ "displayName": "Codexa",
23
+ "shortDescription": "Use Codexa context packets, change plans, and post-edit reviews inside Codex.",
24
+ "longDescription": "Codexa packages a repository-focused Codex workflow: load task briefs before edits, save change-plan snapshots for non-trivial work, review drift after edits, and request targeted verification from the local Codexa MCP server.",
25
+ "developerName": "Codexa maintainers",
26
+ "category": "Productivity",
27
+ "capabilities": [
28
+ "Read"
29
+ ],
30
+ "websiteURL": "https://github.com/mirnoorata/codexa",
31
+ "defaultPrompt": [
32
+ "Use Codexa to brief this code change before editing.",
33
+ "Use Codexa to review the dirty tree against the saved change plan.",
34
+ "Use Codexa to recommend targeted tests for this task."
35
+ ],
36
+ "brandColor": "#2563EB"
37
+ }
38
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "mcpServers": {
3
+ "codexa": {
4
+ "command": "node",
5
+ "args": [
6
+ "./scripts/codexa-mcp.js"
7
+ ],
8
+ "env_vars": [
9
+ "CODEXA_REPO",
10
+ "CODEXA_FOCUSED_REPO",
11
+ "CODEXA_WORKSPACE_FOCUS_FILE",
12
+ "CODEX_WORKSPACE",
13
+ "CODEX_WORKSPACE_ROOT",
14
+ "CODEXA_PLUGIN_AUTO_REFRESH"
15
+ ],
16
+ "startup_timeout_sec": 20,
17
+ "tool_timeout_sec": 60
18
+ }
19
+ }
20
+ }
@@ -0,0 +1,100 @@
1
+ #!/usr/bin/env node
2
+ import { spawn, spawnSync } from "node:child_process";
3
+ import { existsSync } from "node:fs";
4
+ import path from "node:path";
5
+ import { fileURLToPath } from "node:url";
6
+
7
+ const explicitRepo = process.argv[2];
8
+ const autoRefresh = process.env.CODEXA_PLUGIN_AUTO_REFRESH !== "0";
9
+ const repoRoot = resolveRepoRoot(explicitRepo);
10
+ if (!repoRoot) {
11
+ console.error(
12
+ "codexa plugin MCP could not find a git repository or focused workspace. Set CODEXA_REPO to the repository root or run Codexa from inside the workspace."
13
+ );
14
+ process.exit(1);
15
+ }
16
+
17
+ const launch = resolveCodexaLaunch(repoRoot, autoRefresh);
18
+ const child = spawn(launch.command, launch.args, {
19
+ cwd: repoRoot,
20
+ stdio: ["inherit", "inherit", "inherit"],
21
+ env: process.env
22
+ });
23
+
24
+ child.on("exit", (code, signal) => {
25
+ if (signal) {
26
+ process.kill(process.pid, signal);
27
+ return;
28
+ }
29
+ process.exit(code ?? 1);
30
+ });
31
+
32
+ child.on("error", (error) => {
33
+ console.error(`codexa plugin MCP failed to start ${launch.command}: ${error.message}`);
34
+ process.exit(1);
35
+ });
36
+
37
+ function resolveCodexaLaunch(repoRoot, autoRefresh) {
38
+ const serveArgs = ["serve", repoRoot, autoRefresh ? "--auto-refresh" : "--no-auto-refresh"];
39
+ const scriptDir = path.dirname(fileURLToPath(import.meta.url));
40
+ const bundledCli = path.resolve(scriptDir, "../../../dist/cli.js");
41
+ if (existsSync(bundledCli)) {
42
+ return { command: process.execPath, args: [bundledCli, ...serveArgs] };
43
+ }
44
+ if (process.env.CODEXA_PLUGIN_ALLOW_NPX_FALLBACK === "1") {
45
+ return { command: "npx", args: ["-y", "@mirnoorata/codexa", ...serveArgs] };
46
+ }
47
+ console.error(
48
+ "codexa plugin MCP could not find the bundled Codexa CLI. Reinstall the Codexa plugin package or set CODEXA_PLUGIN_ALLOW_NPX_FALLBACK=1 to allow npm registry fallback."
49
+ );
50
+ process.exit(1);
51
+ }
52
+
53
+ function resolveRepoRoot(explicit) {
54
+ const candidates = [
55
+ explicit,
56
+ process.env.CODEXA_REPO,
57
+ process.env.CODEXA_FOCUSED_REPO,
58
+ process.env.CODEX_WORKSPACE_ROOT,
59
+ process.env.CODEX_WORKSPACE,
60
+ process.env.PWD,
61
+ process.cwd()
62
+ ].filter((value) => typeof value === "string" && value.trim().length > 0);
63
+
64
+ for (const candidate of candidates) {
65
+ const resolved = path.resolve(candidate);
66
+ const root = gitRoot(resolved);
67
+ if (root) {
68
+ return root;
69
+ }
70
+ if (workspaceFocusFileExists(resolved)) {
71
+ return resolved;
72
+ }
73
+ }
74
+ return null;
75
+ }
76
+
77
+ function workspaceFocusFileExists(candidate) {
78
+ return focusFileCandidates(candidate).some((focusFile) => existsSync(focusFile));
79
+ }
80
+
81
+ function focusFileCandidates(candidate) {
82
+ return [process.env.CODEXA_WORKSPACE_FOCUS_FILE, path.join(candidate, ".codex", "WORKING.md")].filter(
83
+ (value) => typeof value === "string" && value.trim().length > 0
84
+ );
85
+ }
86
+
87
+ function gitRoot(candidate) {
88
+ if (!existsSync(candidate)) {
89
+ return null;
90
+ }
91
+ const result = spawnSync("git", ["-C", candidate, "rev-parse", "--show-toplevel"], {
92
+ encoding: "utf8",
93
+ stdio: ["ignore", "pipe", "ignore"]
94
+ });
95
+ if (result.status !== 0) {
96
+ return null;
97
+ }
98
+ const root = result.stdout.trim();
99
+ return root ? path.resolve(root) : null;
100
+ }
@@ -0,0 +1,48 @@
1
+ ---
2
+ name: codexa
3
+ description: Use Codexa's repository context server for first-class hybrid semantic search, task briefs, change plans, post-edit reviews, dependency/workflow tracing, verification planning, and evidence review before or after code edits.
4
+ ---
5
+
6
+ # Codexa Workflow
7
+
8
+ Use this skill when a task involves understanding, editing, reviewing, or verifying a repository that has Codexa installed or available through the Codexa MCP server.
9
+
10
+ ## Operating Rules
11
+
12
+ 1. Resolve the active repository first. If the repo has `.codex/config.toml`, use the project-local Codexa MCP server. If the MCP server is unavailable, run the equivalent `codexa` CLI command from the repository.
13
+ 2. Primary Codexa path: `session_context -> search(if target unclear) -> task_brief -> change_plan(saveSnapshot) -> post_edit_review -> test_plan`.
14
+ 3. For broad tasks, call `session_context` first. If the target is unclear or `actionability` says `needs_target`, `raw_search_better`, or `raw_search_sufficient`, use first-class `search` or ask for an explicit target before planning edits.
15
+ 4. For code edits, debugging, reviews, or non-trivial refactors, call `search` first when the target is unclear; otherwise call `task_brief` before reading or editing source.
16
+ 5. For symbol-level changes, call `symbol_context` or `impact` when you need callers, callees, implementations, tests, risks, edge evidence, or the next exact Codexa tool.
17
+ 6. Before non-trivial edits, call `change_plan` with `saveSnapshot=true` so Codexa can compare the plan with the final dirty tree and planned-test provenance.
18
+ 7. After edits, call go-to `post_edit_review` before the final response and pass any commands or test reports that were actually run. Treat degraded snapshot tests as evidence to inspect or rerun, not as trusted coverage. MCP `post_edit_review` is review-only; AutoVerify execution is limited to the Codexa hook path when the user environment enables it.
19
+ 8. For workflow/runtime/API/rename/delete changes, use `workflow_path`, `callers`, `callees`, or `dependency_path` before editing shared surfaces.
20
+ 9. Finish with `test_plan` when the verification surface is unclear.
21
+
22
+ ## Thin Adapter Rules
23
+
24
+ 1. Keep host adapters thin. They should launch the shared Codexa MCP server or CLI and should not add independent planning, ranking, indexing, or source-editing behavior.
25
+ 2. Codexa MCP tools may write generated `.codex/` cache artifacts, but there must be no source-mutating MCP tool path.
26
+ 3. Do not add broad host-specific tools when the primary MCP path or an existing advanced tool can answer the need.
27
+
28
+ ## CLI Fallbacks
29
+
30
+ Use these commands from the target repository when MCP is not available:
31
+
32
+ ```bash
33
+ codexa session-context .
34
+ codexa search . --query "<task, literal, or symbol>"
35
+ codexa brief . --task "<task>"
36
+ codexa explain . --symbol "<symbol_or_stable_id>"
37
+ codexa impact . --symbol "<symbol_or_stable_id>"
38
+ codexa change-plan . --task "<task>" --save-snapshot --task-id "<task_id>"
39
+ codexa post-edit-review . --task-id "<task_id>" --ran-command "<command>"
40
+ codexa test-plan .
41
+ codexa serve . --transport http --host 127.0.0.1 --port 8729
42
+ ```
43
+
44
+ Prefer `--task-id` for `post-edit-review` so Codexa can compare against the
45
+ saved snapshot. Use `post-edit-review . --task "<task>" ...` only when no
46
+ snapshot exists.
47
+
48
+ Use `--no-auto-refresh` only when the host requires strict filesystem-read-only metadata. The default auto-refresh mode may update generated Codexa cache artifacts under `.codex/`, but it does not mutate source files.