cgraphx 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (936) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +243 -0
  3. package/dist/.claude-template/commands/my-commit.md +9 -0
  4. package/dist/.claude-template/commands/my-query.md +4 -0
  5. package/dist/.claude-template/hooks/context-monitor/context-monitor.cjs +216 -0
  6. package/dist/.claude-template/plugins/claude-hud/dist/claude-config-dir.d.ts +4 -0
  7. package/dist/.claude-template/plugins/claude-hud/dist/claude-config-dir.d.ts.map +1 -0
  8. package/dist/.claude-template/plugins/claude-hud/dist/claude-config-dir.js +24 -0
  9. package/dist/.claude-template/plugins/claude-hud/dist/claude-config-dir.js.map +1 -0
  10. package/dist/.claude-template/plugins/claude-hud/dist/config-reader.d.ts +8 -0
  11. package/dist/.claude-template/plugins/claude-hud/dist/config-reader.d.ts.map +1 -0
  12. package/dist/.claude-template/plugins/claude-hud/dist/config-reader.js +204 -0
  13. package/dist/.claude-template/plugins/claude-hud/dist/config-reader.js.map +1 -0
  14. package/dist/.claude-template/plugins/claude-hud/dist/config.d.ts +46 -0
  15. package/dist/.claude-template/plugins/claude-hud/dist/config.d.ts.map +1 -0
  16. package/dist/.claude-template/plugins/claude-hud/dist/config.js +220 -0
  17. package/dist/.claude-template/plugins/claude-hud/dist/config.js.map +1 -0
  18. package/dist/.claude-template/plugins/claude-hud/dist/constants.d.ts +10 -0
  19. package/dist/.claude-template/plugins/claude-hud/dist/constants.d.ts.map +1 -0
  20. package/dist/.claude-template/plugins/claude-hud/dist/constants.js +10 -0
  21. package/dist/.claude-template/plugins/claude-hud/dist/constants.js.map +1 -0
  22. package/dist/.claude-template/plugins/claude-hud/dist/debug.d.ts +6 -0
  23. package/dist/.claude-template/plugins/claude-hud/dist/debug.d.ts.map +1 -0
  24. package/dist/.claude-template/plugins/claude-hud/dist/debug.js +15 -0
  25. package/dist/.claude-template/plugins/claude-hud/dist/debug.js.map +1 -0
  26. package/dist/.claude-template/plugins/claude-hud/dist/extra-cmd.d.ts +23 -0
  27. package/dist/.claude-template/plugins/claude-hud/dist/extra-cmd.d.ts.map +1 -0
  28. package/dist/.claude-template/plugins/claude-hud/dist/extra-cmd.js +103 -0
  29. package/dist/.claude-template/plugins/claude-hud/dist/extra-cmd.js.map +1 -0
  30. package/dist/.claude-template/plugins/claude-hud/dist/git.d.ts +16 -0
  31. package/dist/.claude-template/plugins/claude-hud/dist/git.d.ts.map +1 -0
  32. package/dist/.claude-template/plugins/claude-hud/dist/git.js +86 -0
  33. package/dist/.claude-template/plugins/claude-hud/dist/git.js.map +1 -0
  34. package/dist/.claude-template/plugins/claude-hud/dist/index.d.ts +24 -0
  35. package/dist/.claude-template/plugins/claude-hud/dist/index.d.ts.map +1 -0
  36. package/dist/.claude-template/plugins/claude-hud/dist/index.js +97 -0
  37. package/dist/.claude-template/plugins/claude-hud/dist/index.js.map +1 -0
  38. package/dist/.claude-template/plugins/claude-hud/dist/render/agents-line.d.ts +3 -0
  39. package/dist/.claude-template/plugins/claude-hud/dist/render/agents-line.d.ts.map +1 -0
  40. package/dist/.claude-template/plugins/claude-hud/dist/render/agents-line.js +44 -0
  41. package/dist/.claude-template/plugins/claude-hud/dist/render/agents-line.js.map +1 -0
  42. package/dist/.claude-template/plugins/claude-hud/dist/render/colors.d.ts +12 -0
  43. package/dist/.claude-template/plugins/claude-hud/dist/render/colors.d.ts.map +1 -0
  44. package/dist/.claude-template/plugins/claude-hud/dist/render/colors.js +58 -0
  45. package/dist/.claude-template/plugins/claude-hud/dist/render/colors.js.map +1 -0
  46. package/dist/.claude-template/plugins/claude-hud/dist/render/index.d.ts +3 -0
  47. package/dist/.claude-template/plugins/claude-hud/dist/render/index.d.ts.map +1 -0
  48. package/dist/.claude-template/plugins/claude-hud/dist/render/index.js +379 -0
  49. package/dist/.claude-template/plugins/claude-hud/dist/render/index.js.map +1 -0
  50. package/dist/.claude-template/plugins/claude-hud/dist/render/lines/environment.d.ts +3 -0
  51. package/dist/.claude-template/plugins/claude-hud/dist/render/lines/environment.d.ts.map +1 -0
  52. package/dist/.claude-template/plugins/claude-hud/dist/render/lines/environment.js +30 -0
  53. package/dist/.claude-template/plugins/claude-hud/dist/render/lines/environment.js.map +1 -0
  54. package/dist/.claude-template/plugins/claude-hud/dist/render/lines/identity.d.ts +3 -0
  55. package/dist/.claude-template/plugins/claude-hud/dist/render/lines/identity.d.ts.map +1 -0
  56. package/dist/.claude-template/plugins/claude-hud/dist/render/lines/identity.js +52 -0
  57. package/dist/.claude-template/plugins/claude-hud/dist/render/lines/identity.js.map +1 -0
  58. package/dist/.claude-template/plugins/claude-hud/dist/render/lines/index.d.ts +5 -0
  59. package/dist/.claude-template/plugins/claude-hud/dist/render/lines/index.d.ts.map +1 -0
  60. package/dist/.claude-template/plugins/claude-hud/dist/render/lines/index.js +5 -0
  61. package/dist/.claude-template/plugins/claude-hud/dist/render/lines/index.js.map +1 -0
  62. package/dist/.claude-template/plugins/claude-hud/dist/render/lines/project.d.ts +3 -0
  63. package/dist/.claude-template/plugins/claude-hud/dist/render/lines/project.d.ts.map +1 -0
  64. package/dist/.claude-template/plugins/claude-hud/dist/render/lines/project.js +74 -0
  65. package/dist/.claude-template/plugins/claude-hud/dist/render/lines/project.js.map +1 -0
  66. package/dist/.claude-template/plugins/claude-hud/dist/render/lines/usage.d.ts +3 -0
  67. package/dist/.claude-template/plugins/claude-hud/dist/render/lines/usage.d.ts.map +1 -0
  68. package/dist/.claude-template/plugins/claude-hud/dist/render/lines/usage.js +92 -0
  69. package/dist/.claude-template/plugins/claude-hud/dist/render/lines/usage.js.map +1 -0
  70. package/dist/.claude-template/plugins/claude-hud/dist/render/session-line.d.ts +7 -0
  71. package/dist/.claude-template/plugins/claude-hud/dist/render/session-line.d.ts.map +1 -0
  72. package/dist/.claude-template/plugins/claude-hud/dist/render/session-line.js +247 -0
  73. package/dist/.claude-template/plugins/claude-hud/dist/render/session-line.js.map +1 -0
  74. package/dist/.claude-template/plugins/claude-hud/dist/render/todos-line.d.ts +3 -0
  75. package/dist/.claude-template/plugins/claude-hud/dist/render/todos-line.d.ts.map +1 -0
  76. package/dist/.claude-template/plugins/claude-hud/dist/render/todos-line.js +25 -0
  77. package/dist/.claude-template/plugins/claude-hud/dist/render/todos-line.js.map +1 -0
  78. package/dist/.claude-template/plugins/claude-hud/dist/render/tools-line.d.ts +3 -0
  79. package/dist/.claude-template/plugins/claude-hud/dist/render/tools-line.d.ts.map +1 -0
  80. package/dist/.claude-template/plugins/claude-hud/dist/render/tools-line.js +43 -0
  81. package/dist/.claude-template/plugins/claude-hud/dist/render/tools-line.js.map +1 -0
  82. package/dist/.claude-template/plugins/claude-hud/dist/speed-tracker.d.ts +7 -0
  83. package/dist/.claude-template/plugins/claude-hud/dist/speed-tracker.d.ts.map +1 -0
  84. package/dist/.claude-template/plugins/claude-hud/dist/speed-tracker.js +62 -0
  85. package/dist/.claude-template/plugins/claude-hud/dist/speed-tracker.js.map +1 -0
  86. package/dist/.claude-template/plugins/claude-hud/dist/stdin.d.ts +9 -0
  87. package/dist/.claude-template/plugins/claude-hud/dist/stdin.d.ts.map +1 -0
  88. package/dist/.claude-template/plugins/claude-hud/dist/stdin.js +136 -0
  89. package/dist/.claude-template/plugins/claude-hud/dist/stdin.js.map +1 -0
  90. package/dist/.claude-template/plugins/claude-hud/dist/transcript.d.ts +3 -0
  91. package/dist/.claude-template/plugins/claude-hud/dist/transcript.d.ts.map +1 -0
  92. package/dist/.claude-template/plugins/claude-hud/dist/transcript.js +189 -0
  93. package/dist/.claude-template/plugins/claude-hud/dist/transcript.js.map +1 -0
  94. package/dist/.claude-template/plugins/claude-hud/dist/types.d.ts +79 -0
  95. package/dist/.claude-template/plugins/claude-hud/dist/types.d.ts.map +1 -0
  96. package/dist/.claude-template/plugins/claude-hud/dist/types.js +5 -0
  97. package/dist/.claude-template/plugins/claude-hud/dist/types.js.map +1 -0
  98. package/dist/.claude-template/plugins/claude-hud/dist/usage-api.d.ts +59 -0
  99. package/dist/.claude-template/plugins/claude-hud/dist/usage-api.d.ts.map +1 -0
  100. package/dist/.claude-template/plugins/claude-hud/dist/usage-api.js +733 -0
  101. package/dist/.claude-template/plugins/claude-hud/dist/usage-api.js.map +1 -0
  102. package/dist/.claude-template/skills/cgraphx/SKILL.md +143 -0
  103. package/dist/.claude-template/skills/cgraphx/agent-prompt.md +56 -0
  104. package/dist/.claude-template/skills/clarify-requirements/SKILL.md +425 -0
  105. package/dist/.claude-template/skills/code-impact-api/SKILL.md +143 -0
  106. package/dist/.claude-template/skills/code-impact-api/agent-prompt.md +51 -0
  107. package/dist/.claude-template/skills/code-impact-docgen/SKILL.md +366 -0
  108. package/dist/.claude-template/skills/code-impact-docgen/template-business-html.md +242 -0
  109. package/dist/.claude-template/skills/code-impact-docgen/template-business-md.md +107 -0
  110. package/dist/.claude-template/skills/code-impact-docgen/template-technical-html.md +205 -0
  111. package/dist/.claude-template/skills/code-impact-docgen/template-technical-md.md +155 -0
  112. package/dist/.claude-template/skills/code-impact-init/SKILL.md +800 -0
  113. package/dist/.claude-template/skills/code-impact-markdown/SKILL.md +345 -0
  114. package/dist/.claude-template/skills/code-impact-markdown/template-guide.md +68 -0
  115. package/dist/.claude-template/skills/code-impact-markdown/template-memory.md +82 -0
  116. package/dist/.claude-template/skills/code-impact-markdown/template-runbook.md +58 -0
  117. package/dist/.claude-template/skills/db-query/SKILL.md +166 -0
  118. package/dist/.claude-template/skills/db-query/agent-prompt.md +55 -0
  119. package/dist/.claude-template/skills/developer-timeline/SKILL.md +302 -0
  120. package/dist/.claude-template/skills/developer-timeline/demo-single-page-report.html +657 -0
  121. package/dist/.claude-template/skills/implementation/SKILL.md +136 -0
  122. package/dist/.claude-template/skills/subagent-implement/SKILL.md +225 -0
  123. package/dist/.claude-template/skills/subagent-implement/implementer-prompt.md +127 -0
  124. package/dist/.claude-template/skills/subagent-implement/quality-reviewer-prompt.md +130 -0
  125. package/dist/.claude-template/skills/subagent-implement/spec-reviewer-prompt.md +112 -0
  126. package/dist/.claude-template/skills/write-plan/SKILL.md +322 -0
  127. package/dist/.claude-template/skills/write-plan/plan-document-reviewer-prompt.md +134 -0
  128. package/dist/.claude-template/skills/write-prd/SKILL.md +242 -0
  129. package/dist/.claude-template/skills/write-spec/SKILL.md +278 -0
  130. package/dist/bin/codegraph.d.ts +26 -0
  131. package/dist/bin/codegraph.d.ts.map +1 -0
  132. package/dist/bin/codegraph.js +2014 -0
  133. package/dist/bin/codegraph.js.map +1 -0
  134. package/dist/bin/fatal-handler.d.ts +20 -0
  135. package/dist/bin/fatal-handler.d.ts.map +1 -0
  136. package/dist/bin/fatal-handler.js +118 -0
  137. package/dist/bin/fatal-handler.js.map +1 -0
  138. package/dist/bin/node-version-check.d.ts +51 -0
  139. package/dist/bin/node-version-check.d.ts.map +1 -0
  140. package/dist/bin/node-version-check.js +114 -0
  141. package/dist/bin/node-version-check.js.map +1 -0
  142. package/dist/bin/uninstall.d.ts +14 -0
  143. package/dist/bin/uninstall.d.ts.map +1 -0
  144. package/dist/bin/uninstall.js +36 -0
  145. package/dist/bin/uninstall.js.map +1 -0
  146. package/dist/context/formatter.d.ts +30 -0
  147. package/dist/context/formatter.d.ts.map +1 -0
  148. package/dist/context/formatter.js +263 -0
  149. package/dist/context/formatter.js.map +1 -0
  150. package/dist/context/index.d.ts +119 -0
  151. package/dist/context/index.d.ts.map +1 -0
  152. package/dist/context/index.js +1296 -0
  153. package/dist/context/index.js.map +1 -0
  154. package/dist/context/markers.d.ts +19 -0
  155. package/dist/context/markers.d.ts.map +1 -0
  156. package/dist/context/markers.js +22 -0
  157. package/dist/context/markers.js.map +1 -0
  158. package/dist/db/index.d.ts +122 -0
  159. package/dist/db/index.d.ts.map +1 -0
  160. package/dist/db/index.js +296 -0
  161. package/dist/db/index.js.map +1 -0
  162. package/dist/db/migrations.d.ts +44 -0
  163. package/dist/db/migrations.d.ts.map +1 -0
  164. package/dist/db/migrations.js +140 -0
  165. package/dist/db/migrations.js.map +1 -0
  166. package/dist/db/queries.d.ts +401 -0
  167. package/dist/db/queries.d.ts.map +1 -0
  168. package/dist/db/queries.js +1591 -0
  169. package/dist/db/queries.js.map +1 -0
  170. package/dist/db/schema.sql +152 -0
  171. package/dist/db/sqlite-adapter.d.ts +53 -0
  172. package/dist/db/sqlite-adapter.d.ts.map +1 -0
  173. package/dist/db/sqlite-adapter.js +117 -0
  174. package/dist/db/sqlite-adapter.js.map +1 -0
  175. package/dist/dbquery/cli.d.ts +17 -0
  176. package/dist/dbquery/cli.d.ts.map +1 -0
  177. package/dist/dbquery/cli.js +229 -0
  178. package/dist/dbquery/cli.js.map +1 -0
  179. package/dist/dbquery/config.d.ts +38 -0
  180. package/dist/dbquery/config.d.ts.map +1 -0
  181. package/dist/dbquery/config.js +244 -0
  182. package/dist/dbquery/config.js.map +1 -0
  183. package/dist/dbquery/constants.d.ts +40 -0
  184. package/dist/dbquery/constants.d.ts.map +1 -0
  185. package/dist/dbquery/constants.js +65 -0
  186. package/dist/dbquery/constants.js.map +1 -0
  187. package/dist/dbquery/drivers/mysql.d.ts +15 -0
  188. package/dist/dbquery/drivers/mysql.d.ts.map +1 -0
  189. package/dist/dbquery/drivers/mysql.js +102 -0
  190. package/dist/dbquery/drivers/mysql.js.map +1 -0
  191. package/dist/dbquery/drivers/postgres.d.ts +16 -0
  192. package/dist/dbquery/drivers/postgres.d.ts.map +1 -0
  193. package/dist/dbquery/drivers/postgres.js +105 -0
  194. package/dist/dbquery/drivers/postgres.js.map +1 -0
  195. package/dist/dbquery/errors.d.ts +40 -0
  196. package/dist/dbquery/errors.d.ts.map +1 -0
  197. package/dist/dbquery/errors.js +85 -0
  198. package/dist/dbquery/errors.js.map +1 -0
  199. package/dist/dbquery/executor.d.ts +30 -0
  200. package/dist/dbquery/executor.d.ts.map +1 -0
  201. package/dist/dbquery/executor.js +243 -0
  202. package/dist/dbquery/executor.js.map +1 -0
  203. package/dist/dbquery/format.d.ts +18 -0
  204. package/dist/dbquery/format.d.ts.map +1 -0
  205. package/dist/dbquery/format.js +174 -0
  206. package/dist/dbquery/format.js.map +1 -0
  207. package/dist/dbquery/index.d.ts +10 -0
  208. package/dist/dbquery/index.d.ts.map +1 -0
  209. package/dist/dbquery/index.js +23 -0
  210. package/dist/dbquery/index.js.map +1 -0
  211. package/dist/dbquery/init.d.ts +33 -0
  212. package/dist/dbquery/init.d.ts.map +1 -0
  213. package/dist/dbquery/init.js +125 -0
  214. package/dist/dbquery/init.js.map +1 -0
  215. package/dist/dbquery/logging.d.ts +22 -0
  216. package/dist/dbquery/logging.d.ts.map +1 -0
  217. package/dist/dbquery/logging.js +140 -0
  218. package/dist/dbquery/logging.js.map +1 -0
  219. package/dist/dbquery/mcp-tools.d.ts +29 -0
  220. package/dist/dbquery/mcp-tools.d.ts.map +1 -0
  221. package/dist/dbquery/mcp-tools.js +206 -0
  222. package/dist/dbquery/mcp-tools.js.map +1 -0
  223. package/dist/dbquery/queries.d.ts +31 -0
  224. package/dist/dbquery/queries.d.ts.map +1 -0
  225. package/dist/dbquery/queries.js +160 -0
  226. package/dist/dbquery/queries.js.map +1 -0
  227. package/dist/dbquery/safety.d.ts +35 -0
  228. package/dist/dbquery/safety.d.ts.map +1 -0
  229. package/dist/dbquery/safety.js +306 -0
  230. package/dist/dbquery/safety.js.map +1 -0
  231. package/dist/dbquery/types.d.ts +152 -0
  232. package/dist/dbquery/types.d.ts.map +1 -0
  233. package/dist/dbquery/types.js +10 -0
  234. package/dist/dbquery/types.js.map +1 -0
  235. package/dist/directory.d.ts +147 -0
  236. package/dist/directory.d.ts.map +1 -0
  237. package/dist/directory.js +523 -0
  238. package/dist/directory.js.map +1 -0
  239. package/dist/errors.d.ts +136 -0
  240. package/dist/errors.d.ts.map +1 -0
  241. package/dist/errors.js +219 -0
  242. package/dist/errors.js.map +1 -0
  243. package/dist/extraction/astro-extractor.d.ts +79 -0
  244. package/dist/extraction/astro-extractor.d.ts.map +1 -0
  245. package/dist/extraction/astro-extractor.js +320 -0
  246. package/dist/extraction/astro-extractor.js.map +1 -0
  247. package/dist/extraction/dfm-extractor.d.ts +31 -0
  248. package/dist/extraction/dfm-extractor.d.ts.map +1 -0
  249. package/dist/extraction/dfm-extractor.js +151 -0
  250. package/dist/extraction/dfm-extractor.js.map +1 -0
  251. package/dist/extraction/extraction-version.d.ts +25 -0
  252. package/dist/extraction/extraction-version.d.ts.map +1 -0
  253. package/dist/extraction/extraction-version.js +28 -0
  254. package/dist/extraction/extraction-version.js.map +1 -0
  255. package/dist/extraction/function-ref.d.ts +118 -0
  256. package/dist/extraction/function-ref.d.ts.map +1 -0
  257. package/dist/extraction/function-ref.js +727 -0
  258. package/dist/extraction/function-ref.js.map +1 -0
  259. package/dist/extraction/generated-detection.d.ts +30 -0
  260. package/dist/extraction/generated-detection.d.ts.map +1 -0
  261. package/dist/extraction/generated-detection.js +83 -0
  262. package/dist/extraction/generated-detection.js.map +1 -0
  263. package/dist/extraction/grammars.d.ts +114 -0
  264. package/dist/extraction/grammars.d.ts.map +1 -0
  265. package/dist/extraction/grammars.js +477 -0
  266. package/dist/extraction/grammars.js.map +1 -0
  267. package/dist/extraction/index.d.ts +175 -0
  268. package/dist/extraction/index.d.ts.map +1 -0
  269. package/dist/extraction/index.js +1887 -0
  270. package/dist/extraction/index.js.map +1 -0
  271. package/dist/extraction/languages/c-cpp.d.ts +12 -0
  272. package/dist/extraction/languages/c-cpp.d.ts.map +1 -0
  273. package/dist/extraction/languages/c-cpp.js +275 -0
  274. package/dist/extraction/languages/c-cpp.js.map +1 -0
  275. package/dist/extraction/languages/csharp.d.ts +25 -0
  276. package/dist/extraction/languages/csharp.d.ts.map +1 -0
  277. package/dist/extraction/languages/csharp.js +175 -0
  278. package/dist/extraction/languages/csharp.js.map +1 -0
  279. package/dist/extraction/languages/dart.d.ts +3 -0
  280. package/dist/extraction/languages/dart.d.ts.map +1 -0
  281. package/dist/extraction/languages/dart.js +374 -0
  282. package/dist/extraction/languages/dart.js.map +1 -0
  283. package/dist/extraction/languages/go.d.ts +3 -0
  284. package/dist/extraction/languages/go.d.ts.map +1 -0
  285. package/dist/extraction/languages/go.js +111 -0
  286. package/dist/extraction/languages/go.js.map +1 -0
  287. package/dist/extraction/languages/index.d.ts +10 -0
  288. package/dist/extraction/languages/index.d.ts.map +1 -0
  289. package/dist/extraction/languages/index.js +53 -0
  290. package/dist/extraction/languages/index.js.map +1 -0
  291. package/dist/extraction/languages/java.d.ts +3 -0
  292. package/dist/extraction/languages/java.d.ts.map +1 -0
  293. package/dist/extraction/languages/java.js +315 -0
  294. package/dist/extraction/languages/java.js.map +1 -0
  295. package/dist/extraction/languages/javascript.d.ts +3 -0
  296. package/dist/extraction/languages/javascript.d.ts.map +1 -0
  297. package/dist/extraction/languages/javascript.js +106 -0
  298. package/dist/extraction/languages/javascript.js.map +1 -0
  299. package/dist/extraction/languages/kotlin.d.ts +3 -0
  300. package/dist/extraction/languages/kotlin.d.ts.map +1 -0
  301. package/dist/extraction/languages/kotlin.js +379 -0
  302. package/dist/extraction/languages/kotlin.js.map +1 -0
  303. package/dist/extraction/languages/lua.d.ts +3 -0
  304. package/dist/extraction/languages/lua.d.ts.map +1 -0
  305. package/dist/extraction/languages/lua.js +150 -0
  306. package/dist/extraction/languages/lua.js.map +1 -0
  307. package/dist/extraction/languages/luau.d.ts +3 -0
  308. package/dist/extraction/languages/luau.d.ts.map +1 -0
  309. package/dist/extraction/languages/luau.js +37 -0
  310. package/dist/extraction/languages/luau.js.map +1 -0
  311. package/dist/extraction/languages/objc.d.ts +3 -0
  312. package/dist/extraction/languages/objc.d.ts.map +1 -0
  313. package/dist/extraction/languages/objc.js +175 -0
  314. package/dist/extraction/languages/objc.js.map +1 -0
  315. package/dist/extraction/languages/pascal.d.ts +3 -0
  316. package/dist/extraction/languages/pascal.d.ts.map +1 -0
  317. package/dist/extraction/languages/pascal.js +77 -0
  318. package/dist/extraction/languages/pascal.js.map +1 -0
  319. package/dist/extraction/languages/php.d.ts +3 -0
  320. package/dist/extraction/languages/php.d.ts.map +1 -0
  321. package/dist/extraction/languages/php.js +196 -0
  322. package/dist/extraction/languages/php.js.map +1 -0
  323. package/dist/extraction/languages/python.d.ts +3 -0
  324. package/dist/extraction/languages/python.d.ts.map +1 -0
  325. package/dist/extraction/languages/python.js +56 -0
  326. package/dist/extraction/languages/python.js.map +1 -0
  327. package/dist/extraction/languages/r.d.ts +3 -0
  328. package/dist/extraction/languages/r.d.ts.map +1 -0
  329. package/dist/extraction/languages/r.js +314 -0
  330. package/dist/extraction/languages/r.js.map +1 -0
  331. package/dist/extraction/languages/ruby.d.ts +3 -0
  332. package/dist/extraction/languages/ruby.d.ts.map +1 -0
  333. package/dist/extraction/languages/ruby.js +149 -0
  334. package/dist/extraction/languages/ruby.js.map +1 -0
  335. package/dist/extraction/languages/rust.d.ts +3 -0
  336. package/dist/extraction/languages/rust.d.ts.map +1 -0
  337. package/dist/extraction/languages/rust.js +142 -0
  338. package/dist/extraction/languages/rust.js.map +1 -0
  339. package/dist/extraction/languages/scala.d.ts +3 -0
  340. package/dist/extraction/languages/scala.d.ts.map +1 -0
  341. package/dist/extraction/languages/scala.js +209 -0
  342. package/dist/extraction/languages/scala.js.map +1 -0
  343. package/dist/extraction/languages/swift.d.ts +3 -0
  344. package/dist/extraction/languages/swift.d.ts.map +1 -0
  345. package/dist/extraction/languages/swift.js +152 -0
  346. package/dist/extraction/languages/swift.js.map +1 -0
  347. package/dist/extraction/languages/typescript.d.ts +16 -0
  348. package/dist/extraction/languages/typescript.d.ts.map +1 -0
  349. package/dist/extraction/languages/typescript.js +167 -0
  350. package/dist/extraction/languages/typescript.js.map +1 -0
  351. package/dist/extraction/liquid-extractor.d.ts +59 -0
  352. package/dist/extraction/liquid-extractor.d.ts.map +1 -0
  353. package/dist/extraction/liquid-extractor.js +357 -0
  354. package/dist/extraction/liquid-extractor.js.map +1 -0
  355. package/dist/extraction/mybatis-extractor.d.ts +48 -0
  356. package/dist/extraction/mybatis-extractor.d.ts.map +1 -0
  357. package/dist/extraction/mybatis-extractor.js +198 -0
  358. package/dist/extraction/mybatis-extractor.js.map +1 -0
  359. package/dist/extraction/parse-worker.d.ts +8 -0
  360. package/dist/extraction/parse-worker.d.ts.map +1 -0
  361. package/dist/extraction/parse-worker.js +97 -0
  362. package/dist/extraction/parse-worker.js.map +1 -0
  363. package/dist/extraction/razor-extractor.d.ts +42 -0
  364. package/dist/extraction/razor-extractor.d.ts.map +1 -0
  365. package/dist/extraction/razor-extractor.js +285 -0
  366. package/dist/extraction/razor-extractor.js.map +1 -0
  367. package/dist/extraction/svelte-extractor.d.ts +56 -0
  368. package/dist/extraction/svelte-extractor.d.ts.map +1 -0
  369. package/dist/extraction/svelte-extractor.js +275 -0
  370. package/dist/extraction/svelte-extractor.js.map +1 -0
  371. package/dist/extraction/tree-sitter-helpers.d.ts +28 -0
  372. package/dist/extraction/tree-sitter-helpers.d.ts.map +1 -0
  373. package/dist/extraction/tree-sitter-helpers.js +152 -0
  374. package/dist/extraction/tree-sitter-helpers.js.map +1 -0
  375. package/dist/extraction/tree-sitter-types.d.ts +239 -0
  376. package/dist/extraction/tree-sitter-types.d.ts.map +1 -0
  377. package/dist/extraction/tree-sitter-types.js +10 -0
  378. package/dist/extraction/tree-sitter-types.js.map +1 -0
  379. package/dist/extraction/tree-sitter.d.ts +647 -0
  380. package/dist/extraction/tree-sitter.d.ts.map +1 -0
  381. package/dist/extraction/tree-sitter.js +5592 -0
  382. package/dist/extraction/tree-sitter.js.map +1 -0
  383. package/dist/extraction/vue-extractor.d.ts +51 -0
  384. package/dist/extraction/vue-extractor.d.ts.map +1 -0
  385. package/dist/extraction/vue-extractor.js +254 -0
  386. package/dist/extraction/vue-extractor.js.map +1 -0
  387. package/dist/extraction/wasm/tree-sitter-c_sharp.wasm +0 -0
  388. package/dist/extraction/wasm/tree-sitter-lua.wasm +0 -0
  389. package/dist/extraction/wasm/tree-sitter-luau.wasm +0 -0
  390. package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
  391. package/dist/extraction/wasm/tree-sitter-r.wasm +0 -0
  392. package/dist/extraction/wasm/tree-sitter-scala.wasm +0 -0
  393. package/dist/extraction/wasm-runtime-flags.d.ts +38 -0
  394. package/dist/extraction/wasm-runtime-flags.d.ts.map +1 -0
  395. package/dist/extraction/wasm-runtime-flags.js +106 -0
  396. package/dist/extraction/wasm-runtime-flags.js.map +1 -0
  397. package/dist/graph/index.d.ts +8 -0
  398. package/dist/graph/index.d.ts.map +1 -0
  399. package/dist/graph/index.js +13 -0
  400. package/dist/graph/index.js.map +1 -0
  401. package/dist/graph/queries.d.ts +106 -0
  402. package/dist/graph/queries.d.ts.map +1 -0
  403. package/dist/graph/queries.js +339 -0
  404. package/dist/graph/queries.js.map +1 -0
  405. package/dist/graph/traversal.d.ts +127 -0
  406. package/dist/graph/traversal.d.ts.map +1 -0
  407. package/dist/graph/traversal.js +540 -0
  408. package/dist/graph/traversal.js.map +1 -0
  409. package/dist/index.d.ts +563 -0
  410. package/dist/index.d.ts.map +1 -0
  411. package/dist/index.js +1041 -0
  412. package/dist/index.js.map +1 -0
  413. package/dist/installer/claude-assets.d.ts +45 -0
  414. package/dist/installer/claude-assets.d.ts.map +1 -0
  415. package/dist/installer/claude-assets.js +144 -0
  416. package/dist/installer/claude-assets.js.map +1 -0
  417. package/dist/installer/config-writer.d.ts +28 -0
  418. package/dist/installer/config-writer.d.ts.map +1 -0
  419. package/dist/installer/config-writer.js +91 -0
  420. package/dist/installer/config-writer.js.map +1 -0
  421. package/dist/installer/index.d.ts +101 -0
  422. package/dist/installer/index.d.ts.map +1 -0
  423. package/dist/installer/index.js +692 -0
  424. package/dist/installer/index.js.map +1 -0
  425. package/dist/installer/instructions-template.d.ts +41 -0
  426. package/dist/installer/instructions-template.d.ts.map +1 -0
  427. package/dist/installer/instructions-template.js +53 -0
  428. package/dist/installer/instructions-template.js.map +1 -0
  429. package/dist/installer/targets/antigravity.d.ts +57 -0
  430. package/dist/installer/targets/antigravity.d.ts.map +1 -0
  431. package/dist/installer/targets/antigravity.js +308 -0
  432. package/dist/installer/targets/antigravity.js.map +1 -0
  433. package/dist/installer/targets/claude.d.ts +66 -0
  434. package/dist/installer/targets/claude.d.ts.map +1 -0
  435. package/dist/installer/targets/claude.js +564 -0
  436. package/dist/installer/targets/claude.js.map +1 -0
  437. package/dist/installer/targets/codex.d.ts +18 -0
  438. package/dist/installer/targets/codex.d.ts.map +1 -0
  439. package/dist/installer/targets/codex.js +185 -0
  440. package/dist/installer/targets/codex.js.map +1 -0
  441. package/dist/installer/targets/cursor.d.ts +35 -0
  442. package/dist/installer/targets/cursor.d.ts.map +1 -0
  443. package/dist/installer/targets/cursor.js +254 -0
  444. package/dist/installer/targets/cursor.js.map +1 -0
  445. package/dist/installer/targets/gemini.d.ts +26 -0
  446. package/dist/installer/targets/gemini.d.ts.map +1 -0
  447. package/dist/installer/targets/gemini.js +165 -0
  448. package/dist/installer/targets/gemini.js.map +1 -0
  449. package/dist/installer/targets/hermes.d.ts +18 -0
  450. package/dist/installer/targets/hermes.d.ts.map +1 -0
  451. package/dist/installer/targets/hermes.js +359 -0
  452. package/dist/installer/targets/hermes.js.map +1 -0
  453. package/dist/installer/targets/kiro.d.ts +27 -0
  454. package/dist/installer/targets/kiro.d.ts.map +1 -0
  455. package/dist/installer/targets/kiro.js +178 -0
  456. package/dist/installer/targets/kiro.js.map +1 -0
  457. package/dist/installer/targets/opencode.d.ts +38 -0
  458. package/dist/installer/targets/opencode.d.ts.map +1 -0
  459. package/dist/installer/targets/opencode.js +288 -0
  460. package/dist/installer/targets/opencode.js.map +1 -0
  461. package/dist/installer/targets/registry.d.ts +35 -0
  462. package/dist/installer/targets/registry.d.ts.map +1 -0
  463. package/dist/installer/targets/registry.js +91 -0
  464. package/dist/installer/targets/registry.js.map +1 -0
  465. package/dist/installer/targets/shared.d.ts +101 -0
  466. package/dist/installer/targets/shared.d.ts.map +1 -0
  467. package/dist/installer/targets/shared.js +264 -0
  468. package/dist/installer/targets/shared.js.map +1 -0
  469. package/dist/installer/targets/toml.d.ts +52 -0
  470. package/dist/installer/targets/toml.d.ts.map +1 -0
  471. package/dist/installer/targets/toml.js +147 -0
  472. package/dist/installer/targets/toml.js.map +1 -0
  473. package/dist/installer/targets/types.d.ts +108 -0
  474. package/dist/installer/targets/types.d.ts.map +1 -0
  475. package/dist/installer/targets/types.js +16 -0
  476. package/dist/installer/targets/types.js.map +1 -0
  477. package/dist/markdown/cli.d.ts +16 -0
  478. package/dist/markdown/cli.d.ts.map +1 -0
  479. package/dist/markdown/cli.js +533 -0
  480. package/dist/markdown/cli.js.map +1 -0
  481. package/dist/markdown/constants.d.ts +22 -0
  482. package/dist/markdown/constants.d.ts.map +1 -0
  483. package/dist/markdown/constants.js +71 -0
  484. package/dist/markdown/constants.js.map +1 -0
  485. package/dist/markdown/dedup.d.ts +20 -0
  486. package/dist/markdown/dedup.d.ts.map +1 -0
  487. package/dist/markdown/dedup.js +64 -0
  488. package/dist/markdown/dedup.js.map +1 -0
  489. package/dist/markdown/errors.d.ts +22 -0
  490. package/dist/markdown/errors.d.ts.map +1 -0
  491. package/dist/markdown/errors.js +45 -0
  492. package/dist/markdown/errors.js.map +1 -0
  493. package/dist/markdown/extractor.d.ts +43 -0
  494. package/dist/markdown/extractor.d.ts.map +1 -0
  495. package/dist/markdown/extractor.js +152 -0
  496. package/dist/markdown/extractor.js.map +1 -0
  497. package/dist/markdown/frontmatter-parser.d.ts +47 -0
  498. package/dist/markdown/frontmatter-parser.d.ts.map +1 -0
  499. package/dist/markdown/frontmatter-parser.js +199 -0
  500. package/dist/markdown/frontmatter-parser.js.map +1 -0
  501. package/dist/markdown/indexer.d.ts +34 -0
  502. package/dist/markdown/indexer.d.ts.map +1 -0
  503. package/dist/markdown/indexer.js +256 -0
  504. package/dist/markdown/indexer.js.map +1 -0
  505. package/dist/markdown/mcp-tools.d.ts +33 -0
  506. package/dist/markdown/mcp-tools.d.ts.map +1 -0
  507. package/dist/markdown/mcp-tools.js +300 -0
  508. package/dist/markdown/mcp-tools.js.map +1 -0
  509. package/dist/markdown/query.d.ts +108 -0
  510. package/dist/markdown/query.d.ts.map +1 -0
  511. package/dist/markdown/query.js +570 -0
  512. package/dist/markdown/query.js.map +1 -0
  513. package/dist/markdown/schema-bootstrap.d.ts +40 -0
  514. package/dist/markdown/schema-bootstrap.d.ts.map +1 -0
  515. package/dist/markdown/schema-bootstrap.js +85 -0
  516. package/dist/markdown/schema-bootstrap.js.map +1 -0
  517. package/dist/markdown/schema.sql +124 -0
  518. package/dist/markdown/store.d.ts +77 -0
  519. package/dist/markdown/store.d.ts.map +1 -0
  520. package/dist/markdown/store.js +194 -0
  521. package/dist/markdown/store.js.map +1 -0
  522. package/dist/markdown/summary-extractor.d.ts +22 -0
  523. package/dist/markdown/summary-extractor.d.ts.map +1 -0
  524. package/dist/markdown/summary-extractor.js +66 -0
  525. package/dist/markdown/summary-extractor.js.map +1 -0
  526. package/dist/markdown/types.d.ts +159 -0
  527. package/dist/markdown/types.d.ts.map +1 -0
  528. package/dist/markdown/types.js +9 -0
  529. package/dist/markdown/types.js.map +1 -0
  530. package/dist/markdown/validator.d.ts +44 -0
  531. package/dist/markdown/validator.d.ts.map +1 -0
  532. package/dist/markdown/validator.js +95 -0
  533. package/dist/markdown/validator.js.map +1 -0
  534. package/dist/mcp/daemon-manager.d.ts +42 -0
  535. package/dist/mcp/daemon-manager.d.ts.map +1 -0
  536. package/dist/mcp/daemon-manager.js +129 -0
  537. package/dist/mcp/daemon-manager.js.map +1 -0
  538. package/dist/mcp/daemon-paths.d.ts +46 -0
  539. package/dist/mcp/daemon-paths.d.ts.map +1 -0
  540. package/dist/mcp/daemon-paths.js +125 -0
  541. package/dist/mcp/daemon-paths.js.map +1 -0
  542. package/dist/mcp/daemon-registry.d.ts +47 -0
  543. package/dist/mcp/daemon-registry.d.ts.map +1 -0
  544. package/dist/mcp/daemon-registry.js +229 -0
  545. package/dist/mcp/daemon-registry.js.map +1 -0
  546. package/dist/mcp/daemon.d.ts +220 -0
  547. package/dist/mcp/daemon.d.ts.map +1 -0
  548. package/dist/mcp/daemon.js +637 -0
  549. package/dist/mcp/daemon.js.map +1 -0
  550. package/dist/mcp/dynamic-boundaries.d.ts +41 -0
  551. package/dist/mcp/dynamic-boundaries.d.ts.map +1 -0
  552. package/dist/mcp/dynamic-boundaries.js +359 -0
  553. package/dist/mcp/dynamic-boundaries.js.map +1 -0
  554. package/dist/mcp/engine.d.ts +105 -0
  555. package/dist/mcp/engine.d.ts.map +1 -0
  556. package/dist/mcp/engine.js +278 -0
  557. package/dist/mcp/engine.js.map +1 -0
  558. package/dist/mcp/index.d.ts +113 -0
  559. package/dist/mcp/index.d.ts.map +1 -0
  560. package/dist/mcp/index.js +499 -0
  561. package/dist/mcp/index.js.map +1 -0
  562. package/dist/mcp/liveness-watchdog.d.ts +18 -0
  563. package/dist/mcp/liveness-watchdog.d.ts.map +1 -0
  564. package/dist/mcp/liveness-watchdog.js +207 -0
  565. package/dist/mcp/liveness-watchdog.js.map +1 -0
  566. package/dist/mcp/ppid-watchdog.d.ts +44 -0
  567. package/dist/mcp/ppid-watchdog.d.ts.map +1 -0
  568. package/dist/mcp/ppid-watchdog.js +27 -0
  569. package/dist/mcp/ppid-watchdog.js.map +1 -0
  570. package/dist/mcp/proxy.d.ts +87 -0
  571. package/dist/mcp/proxy.d.ts.map +1 -0
  572. package/dist/mcp/proxy.js +641 -0
  573. package/dist/mcp/proxy.js.map +1 -0
  574. package/dist/mcp/server-instructions.d.ts +34 -0
  575. package/dist/mcp/server-instructions.d.ts.map +1 -0
  576. package/dist/mcp/server-instructions.js +106 -0
  577. package/dist/mcp/server-instructions.js.map +1 -0
  578. package/dist/mcp/session.d.ts +79 -0
  579. package/dist/mcp/session.d.ts.map +1 -0
  580. package/dist/mcp/session.js +330 -0
  581. package/dist/mcp/session.js.map +1 -0
  582. package/dist/mcp/stdin-teardown.d.ts +27 -0
  583. package/dist/mcp/stdin-teardown.d.ts.map +1 -0
  584. package/dist/mcp/stdin-teardown.js +49 -0
  585. package/dist/mcp/stdin-teardown.js.map +1 -0
  586. package/dist/mcp/tools.d.ts +547 -0
  587. package/dist/mcp/tools.d.ts.map +1 -0
  588. package/dist/mcp/tools.js +4122 -0
  589. package/dist/mcp/tools.js.map +1 -0
  590. package/dist/mcp/transport.d.ts +188 -0
  591. package/dist/mcp/transport.d.ts.map +1 -0
  592. package/dist/mcp/transport.js +359 -0
  593. package/dist/mcp/transport.js.map +1 -0
  594. package/dist/mcp/version.d.ts +19 -0
  595. package/dist/mcp/version.d.ts.map +1 -0
  596. package/dist/mcp/version.js +71 -0
  597. package/dist/mcp/version.js.map +1 -0
  598. package/dist/project-config.d.ts +36 -0
  599. package/dist/project-config.d.ts.map +1 -0
  600. package/dist/project-config.js +235 -0
  601. package/dist/project-config.js.map +1 -0
  602. package/dist/reasoning/config.d.ts +45 -0
  603. package/dist/reasoning/config.d.ts.map +1 -0
  604. package/dist/reasoning/config.js +171 -0
  605. package/dist/reasoning/config.js.map +1 -0
  606. package/dist/reasoning/credentials.d.ts +5 -0
  607. package/dist/reasoning/credentials.d.ts.map +1 -0
  608. package/dist/reasoning/credentials.js +83 -0
  609. package/dist/reasoning/credentials.js.map +1 -0
  610. package/dist/reasoning/login.d.ts +21 -0
  611. package/dist/reasoning/login.d.ts.map +1 -0
  612. package/dist/reasoning/login.js +85 -0
  613. package/dist/reasoning/login.js.map +1 -0
  614. package/dist/reasoning/reasoner.d.ts +43 -0
  615. package/dist/reasoning/reasoner.d.ts.map +1 -0
  616. package/dist/reasoning/reasoner.js +308 -0
  617. package/dist/reasoning/reasoner.js.map +1 -0
  618. package/dist/resolution/c-fnptr-synthesizer.d.ts +33 -0
  619. package/dist/resolution/c-fnptr-synthesizer.d.ts.map +1 -0
  620. package/dist/resolution/c-fnptr-synthesizer.js +352 -0
  621. package/dist/resolution/c-fnptr-synthesizer.js.map +1 -0
  622. package/dist/resolution/callback-synthesizer.d.ts +15 -0
  623. package/dist/resolution/callback-synthesizer.d.ts.map +1 -0
  624. package/dist/resolution/callback-synthesizer.js +2926 -0
  625. package/dist/resolution/callback-synthesizer.js.map +1 -0
  626. package/dist/resolution/frameworks/astro.d.ts +9 -0
  627. package/dist/resolution/frameworks/astro.d.ts.map +1 -0
  628. package/dist/resolution/frameworks/astro.js +169 -0
  629. package/dist/resolution/frameworks/astro.js.map +1 -0
  630. package/dist/resolution/frameworks/cargo-workspace.d.ts +18 -0
  631. package/dist/resolution/frameworks/cargo-workspace.d.ts.map +1 -0
  632. package/dist/resolution/frameworks/cargo-workspace.js +225 -0
  633. package/dist/resolution/frameworks/cargo-workspace.js.map +1 -0
  634. package/dist/resolution/frameworks/csharp.d.ts +8 -0
  635. package/dist/resolution/frameworks/csharp.d.ts.map +1 -0
  636. package/dist/resolution/frameworks/csharp.js +241 -0
  637. package/dist/resolution/frameworks/csharp.js.map +1 -0
  638. package/dist/resolution/frameworks/drupal.d.ts +51 -0
  639. package/dist/resolution/frameworks/drupal.d.ts.map +1 -0
  640. package/dist/resolution/frameworks/drupal.js +367 -0
  641. package/dist/resolution/frameworks/drupal.js.map +1 -0
  642. package/dist/resolution/frameworks/expo-modules.d.ts +3 -0
  643. package/dist/resolution/frameworks/expo-modules.d.ts.map +1 -0
  644. package/dist/resolution/frameworks/expo-modules.js +148 -0
  645. package/dist/resolution/frameworks/expo-modules.js.map +1 -0
  646. package/dist/resolution/frameworks/express.d.ts +8 -0
  647. package/dist/resolution/frameworks/express.d.ts.map +1 -0
  648. package/dist/resolution/frameworks/express.js +308 -0
  649. package/dist/resolution/frameworks/express.js.map +1 -0
  650. package/dist/resolution/frameworks/fabric.d.ts +3 -0
  651. package/dist/resolution/frameworks/fabric.d.ts.map +1 -0
  652. package/dist/resolution/frameworks/fabric.js +354 -0
  653. package/dist/resolution/frameworks/fabric.js.map +1 -0
  654. package/dist/resolution/frameworks/go.d.ts +8 -0
  655. package/dist/resolution/frameworks/go.d.ts.map +1 -0
  656. package/dist/resolution/frameworks/go.js +161 -0
  657. package/dist/resolution/frameworks/go.js.map +1 -0
  658. package/dist/resolution/frameworks/goframe.d.ts +41 -0
  659. package/dist/resolution/frameworks/goframe.d.ts.map +1 -0
  660. package/dist/resolution/frameworks/goframe.js +112 -0
  661. package/dist/resolution/frameworks/goframe.js.map +1 -0
  662. package/dist/resolution/frameworks/index.d.ts +50 -0
  663. package/dist/resolution/frameworks/index.d.ts.map +1 -0
  664. package/dist/resolution/frameworks/index.js +169 -0
  665. package/dist/resolution/frameworks/index.js.map +1 -0
  666. package/dist/resolution/frameworks/java.d.ts +8 -0
  667. package/dist/resolution/frameworks/java.d.ts.map +1 -0
  668. package/dist/resolution/frameworks/java.js +509 -0
  669. package/dist/resolution/frameworks/java.js.map +1 -0
  670. package/dist/resolution/frameworks/laravel.d.ts +13 -0
  671. package/dist/resolution/frameworks/laravel.d.ts.map +1 -0
  672. package/dist/resolution/frameworks/laravel.js +257 -0
  673. package/dist/resolution/frameworks/laravel.js.map +1 -0
  674. package/dist/resolution/frameworks/nestjs.d.ts +26 -0
  675. package/dist/resolution/frameworks/nestjs.d.ts.map +1 -0
  676. package/dist/resolution/frameworks/nestjs.js +698 -0
  677. package/dist/resolution/frameworks/nestjs.js.map +1 -0
  678. package/dist/resolution/frameworks/play.d.ts +19 -0
  679. package/dist/resolution/frameworks/play.d.ts.map +1 -0
  680. package/dist/resolution/frameworks/play.js +111 -0
  681. package/dist/resolution/frameworks/play.js.map +1 -0
  682. package/dist/resolution/frameworks/python.d.ts +10 -0
  683. package/dist/resolution/frameworks/python.d.ts.map +1 -0
  684. package/dist/resolution/frameworks/python.js +400 -0
  685. package/dist/resolution/frameworks/python.js.map +1 -0
  686. package/dist/resolution/frameworks/react-native.d.ts +3 -0
  687. package/dist/resolution/frameworks/react-native.d.ts.map +1 -0
  688. package/dist/resolution/frameworks/react-native.js +410 -0
  689. package/dist/resolution/frameworks/react-native.js.map +1 -0
  690. package/dist/resolution/frameworks/react.d.ts +8 -0
  691. package/dist/resolution/frameworks/react.d.ts.map +1 -0
  692. package/dist/resolution/frameworks/react.js +334 -0
  693. package/dist/resolution/frameworks/react.js.map +1 -0
  694. package/dist/resolution/frameworks/ruby.d.ts +8 -0
  695. package/dist/resolution/frameworks/ruby.d.ts.map +1 -0
  696. package/dist/resolution/frameworks/ruby.js +302 -0
  697. package/dist/resolution/frameworks/ruby.js.map +1 -0
  698. package/dist/resolution/frameworks/rust.d.ts +8 -0
  699. package/dist/resolution/frameworks/rust.d.ts.map +1 -0
  700. package/dist/resolution/frameworks/rust.js +304 -0
  701. package/dist/resolution/frameworks/rust.js.map +1 -0
  702. package/dist/resolution/frameworks/svelte.d.ts +9 -0
  703. package/dist/resolution/frameworks/svelte.d.ts.map +1 -0
  704. package/dist/resolution/frameworks/svelte.js +253 -0
  705. package/dist/resolution/frameworks/svelte.js.map +1 -0
  706. package/dist/resolution/frameworks/swift-objc.d.ts +37 -0
  707. package/dist/resolution/frameworks/swift-objc.d.ts.map +1 -0
  708. package/dist/resolution/frameworks/swift-objc.js +252 -0
  709. package/dist/resolution/frameworks/swift-objc.js.map +1 -0
  710. package/dist/resolution/frameworks/swift.d.ts +10 -0
  711. package/dist/resolution/frameworks/swift.d.ts.map +1 -0
  712. package/dist/resolution/frameworks/swift.js +400 -0
  713. package/dist/resolution/frameworks/swift.js.map +1 -0
  714. package/dist/resolution/frameworks/vue.d.ts +9 -0
  715. package/dist/resolution/frameworks/vue.d.ts.map +1 -0
  716. package/dist/resolution/frameworks/vue.js +303 -0
  717. package/dist/resolution/frameworks/vue.js.map +1 -0
  718. package/dist/resolution/go-module.d.ts +26 -0
  719. package/dist/resolution/go-module.d.ts.map +1 -0
  720. package/dist/resolution/go-module.js +78 -0
  721. package/dist/resolution/go-module.js.map +1 -0
  722. package/dist/resolution/goframe-synthesizer.d.ts +28 -0
  723. package/dist/resolution/goframe-synthesizer.d.ts.map +1 -0
  724. package/dist/resolution/goframe-synthesizer.js +158 -0
  725. package/dist/resolution/goframe-synthesizer.js.map +1 -0
  726. package/dist/resolution/import-resolver.d.ts +78 -0
  727. package/dist/resolution/import-resolver.d.ts.map +1 -0
  728. package/dist/resolution/import-resolver.js +1849 -0
  729. package/dist/resolution/import-resolver.js.map +1 -0
  730. package/dist/resolution/index.d.ts +196 -0
  731. package/dist/resolution/index.d.ts.map +1 -0
  732. package/dist/resolution/index.js +1328 -0
  733. package/dist/resolution/index.js.map +1 -0
  734. package/dist/resolution/lru-cache.d.ts +24 -0
  735. package/dist/resolution/lru-cache.d.ts.map +1 -0
  736. package/dist/resolution/lru-cache.js +62 -0
  737. package/dist/resolution/lru-cache.js.map +1 -0
  738. package/dist/resolution/name-matcher.d.ts +93 -0
  739. package/dist/resolution/name-matcher.d.ts.map +1 -0
  740. package/dist/resolution/name-matcher.js +1212 -0
  741. package/dist/resolution/name-matcher.js.map +1 -0
  742. package/dist/resolution/path-aliases.d.ts +68 -0
  743. package/dist/resolution/path-aliases.d.ts.map +1 -0
  744. package/dist/resolution/path-aliases.js +238 -0
  745. package/dist/resolution/path-aliases.js.map +1 -0
  746. package/dist/resolution/strip-comments.d.ts +27 -0
  747. package/dist/resolution/strip-comments.d.ts.map +1 -0
  748. package/dist/resolution/strip-comments.js +443 -0
  749. package/dist/resolution/strip-comments.js.map +1 -0
  750. package/dist/resolution/swift-objc-bridge.d.ts +134 -0
  751. package/dist/resolution/swift-objc-bridge.d.ts.map +1 -0
  752. package/dist/resolution/swift-objc-bridge.js +256 -0
  753. package/dist/resolution/swift-objc-bridge.js.map +1 -0
  754. package/dist/resolution/types.d.ts +233 -0
  755. package/dist/resolution/types.d.ts.map +1 -0
  756. package/dist/resolution/types.js +8 -0
  757. package/dist/resolution/types.js.map +1 -0
  758. package/dist/resolution/workspace-packages.d.ts +48 -0
  759. package/dist/resolution/workspace-packages.d.ts.map +1 -0
  760. package/dist/resolution/workspace-packages.js +208 -0
  761. package/dist/resolution/workspace-packages.js.map +1 -0
  762. package/dist/search/query-parser.d.ts +57 -0
  763. package/dist/search/query-parser.d.ts.map +1 -0
  764. package/dist/search/query-parser.js +177 -0
  765. package/dist/search/query-parser.js.map +1 -0
  766. package/dist/search/query-utils.d.ts +87 -0
  767. package/dist/search/query-utils.d.ts.map +1 -0
  768. package/dist/search/query-utils.js +449 -0
  769. package/dist/search/query-utils.js.map +1 -0
  770. package/dist/sync/git-hooks.d.ts +45 -0
  771. package/dist/sync/git-hooks.d.ts.map +1 -0
  772. package/dist/sync/git-hooks.js +225 -0
  773. package/dist/sync/git-hooks.js.map +1 -0
  774. package/dist/sync/index.d.ts +19 -0
  775. package/dist/sync/index.d.ts.map +1 -0
  776. package/dist/sync/index.js +35 -0
  777. package/dist/sync/index.js.map +1 -0
  778. package/dist/sync/watch-policy.d.ts +48 -0
  779. package/dist/sync/watch-policy.d.ts.map +1 -0
  780. package/dist/sync/watch-policy.js +124 -0
  781. package/dist/sync/watch-policy.js.map +1 -0
  782. package/dist/sync/watcher.d.ts +350 -0
  783. package/dist/sync/watcher.d.ts.map +1 -0
  784. package/dist/sync/watcher.js +811 -0
  785. package/dist/sync/watcher.js.map +1 -0
  786. package/dist/sync/worktree.d.ts +54 -0
  787. package/dist/sync/worktree.d.ts.map +1 -0
  788. package/dist/sync/worktree.js +137 -0
  789. package/dist/sync/worktree.js.map +1 -0
  790. package/dist/telemetry/index.d.ts +143 -0
  791. package/dist/telemetry/index.d.ts.map +1 -0
  792. package/dist/telemetry/index.js +541 -0
  793. package/dist/telemetry/index.js.map +1 -0
  794. package/dist/timeline/bash-semantics.d.ts +52 -0
  795. package/dist/timeline/bash-semantics.d.ts.map +1 -0
  796. package/dist/timeline/bash-semantics.js +376 -0
  797. package/dist/timeline/bash-semantics.js.map +1 -0
  798. package/dist/timeline/cli.d.ts +50 -0
  799. package/dist/timeline/cli.d.ts.map +1 -0
  800. package/dist/timeline/cli.js +367 -0
  801. package/dist/timeline/cli.js.map +1 -0
  802. package/dist/timeline/constants.d.ts +62 -0
  803. package/dist/timeline/constants.d.ts.map +1 -0
  804. package/dist/timeline/constants.js +73 -0
  805. package/dist/timeline/constants.js.map +1 -0
  806. package/dist/timeline/errors.d.ts +27 -0
  807. package/dist/timeline/errors.d.ts.map +1 -0
  808. package/dist/timeline/errors.js +51 -0
  809. package/dist/timeline/errors.js.map +1 -0
  810. package/dist/timeline/hook-runner.d.ts +36 -0
  811. package/dist/timeline/hook-runner.d.ts.map +1 -0
  812. package/dist/timeline/hook-runner.js +61 -0
  813. package/dist/timeline/hook-runner.js.map +1 -0
  814. package/dist/timeline/hooks.d.ts +45 -0
  815. package/dist/timeline/hooks.d.ts.map +1 -0
  816. package/dist/timeline/hooks.js +364 -0
  817. package/dist/timeline/hooks.js.map +1 -0
  818. package/dist/timeline/index.d.ts +12 -0
  819. package/dist/timeline/index.d.ts.map +1 -0
  820. package/dist/timeline/index.js +28 -0
  821. package/dist/timeline/index.js.map +1 -0
  822. package/dist/timeline/indexer.d.ts +37 -0
  823. package/dist/timeline/indexer.d.ts.map +1 -0
  824. package/dist/timeline/indexer.js +76 -0
  825. package/dist/timeline/indexer.js.map +1 -0
  826. package/dist/timeline/installer.d.ts +33 -0
  827. package/dist/timeline/installer.d.ts.map +1 -0
  828. package/dist/timeline/installer.js +255 -0
  829. package/dist/timeline/installer.js.map +1 -0
  830. package/dist/timeline/payload.d.ts +31 -0
  831. package/dist/timeline/payload.d.ts.map +1 -0
  832. package/dist/timeline/payload.js +58 -0
  833. package/dist/timeline/payload.js.map +1 -0
  834. package/dist/timeline/post-tool-summary.d.ts +29 -0
  835. package/dist/timeline/post-tool-summary.d.ts.map +1 -0
  836. package/dist/timeline/post-tool-summary.js +190 -0
  837. package/dist/timeline/post-tool-summary.js.map +1 -0
  838. package/dist/timeline/recorder.d.ts +36 -0
  839. package/dist/timeline/recorder.d.ts.map +1 -0
  840. package/dist/timeline/recorder.js +42 -0
  841. package/dist/timeline/recorder.js.map +1 -0
  842. package/dist/timeline/schema-bootstrap.d.ts +42 -0
  843. package/dist/timeline/schema-bootstrap.d.ts.map +1 -0
  844. package/dist/timeline/schema-bootstrap.js +81 -0
  845. package/dist/timeline/schema-bootstrap.js.map +1 -0
  846. package/dist/timeline/schema.sql +37 -0
  847. package/dist/timeline/store.d.ts +69 -0
  848. package/dist/timeline/store.d.ts.map +1 -0
  849. package/dist/timeline/store.js +429 -0
  850. package/dist/timeline/store.js.map +1 -0
  851. package/dist/timeline/types.d.ts +78 -0
  852. package/dist/timeline/types.d.ts.map +1 -0
  853. package/dist/timeline/types.js +9 -0
  854. package/dist/timeline/types.js.map +1 -0
  855. package/dist/types.d.ts +392 -0
  856. package/dist/types.d.ts.map +1 -0
  857. package/dist/types.js +81 -0
  858. package/dist/types.js.map +1 -0
  859. package/dist/ui/glyphs.d.ts +42 -0
  860. package/dist/ui/glyphs.d.ts.map +1 -0
  861. package/dist/ui/glyphs.js +78 -0
  862. package/dist/ui/glyphs.js.map +1 -0
  863. package/dist/ui/shimmer-progress.d.ts +11 -0
  864. package/dist/ui/shimmer-progress.d.ts.map +1 -0
  865. package/dist/ui/shimmer-progress.js +90 -0
  866. package/dist/ui/shimmer-progress.js.map +1 -0
  867. package/dist/ui/shimmer-worker.d.ts +2 -0
  868. package/dist/ui/shimmer-worker.d.ts.map +1 -0
  869. package/dist/ui/shimmer-worker.js +118 -0
  870. package/dist/ui/shimmer-worker.js.map +1 -0
  871. package/dist/ui/types.d.ts +17 -0
  872. package/dist/ui/types.d.ts.map +1 -0
  873. package/dist/ui/types.js +3 -0
  874. package/dist/ui/types.js.map +1 -0
  875. package/dist/upgrade/index.d.ts +132 -0
  876. package/dist/upgrade/index.d.ts.map +1 -0
  877. package/dist/upgrade/index.js +498 -0
  878. package/dist/upgrade/index.js.map +1 -0
  879. package/dist/utils.d.ts +224 -0
  880. package/dist/utils.d.ts.map +1 -0
  881. package/dist/utils.js +583 -0
  882. package/dist/utils.js.map +1 -0
  883. package/package.json +60 -0
  884. package/scripts/add-lang/bench.sh +60 -0
  885. package/scripts/add-lang/check-grammar.mjs +75 -0
  886. package/scripts/add-lang/dump-ast.mjs +103 -0
  887. package/scripts/add-lang/verify-extraction.mjs +70 -0
  888. package/scripts/agent-eval/ab-adoption.sh +91 -0
  889. package/scripts/agent-eval/ab-hook.sh +86 -0
  890. package/scripts/agent-eval/ab-impl.sh +78 -0
  891. package/scripts/agent-eval/ab-new-vs-baseline.sh +102 -0
  892. package/scripts/agent-eval/ab-sufficiency.sh +78 -0
  893. package/scripts/agent-eval/arms-F.sh +21 -0
  894. package/scripts/agent-eval/arms-matrix.sh +37 -0
  895. package/scripts/agent-eval/audit.sh +68 -0
  896. package/scripts/agent-eval/bench-readme.sh +28 -0
  897. package/scripts/agent-eval/bench-why-repo.sh +22 -0
  898. package/scripts/agent-eval/block-read-hook.sh +19 -0
  899. package/scripts/agent-eval/hook-settings.json +15 -0
  900. package/scripts/agent-eval/itrun.sh +120 -0
  901. package/scripts/agent-eval/offload-eval-3arm.sh +72 -0
  902. package/scripts/agent-eval/offload-eval-cost.mjs +133 -0
  903. package/scripts/agent-eval/offload-eval-effort.mjs +108 -0
  904. package/scripts/agent-eval/offload-eval-frontload-matrix.sh +25 -0
  905. package/scripts/agent-eval/offload-eval-frontload.sh +47 -0
  906. package/scripts/agent-eval/offload-eval-ground-truth.json +18 -0
  907. package/scripts/agent-eval/offload-eval-hook.mjs +84 -0
  908. package/scripts/agent-eval/offload-eval-judge.mjs +103 -0
  909. package/scripts/agent-eval/offload-eval-matrix.sh +20 -0
  910. package/scripts/agent-eval/offload-eval-metrics.mjs +94 -0
  911. package/scripts/agent-eval/offload-eval-refs1.sh +50 -0
  912. package/scripts/agent-eval/offload-eval-setup.sh +24 -0
  913. package/scripts/agent-eval/offload-eval-styles.sh +72 -0
  914. package/scripts/agent-eval/offload-eval-summarize.mjs +68 -0
  915. package/scripts/agent-eval/offload-eval.md +76 -0
  916. package/scripts/agent-eval/parse-arms.mjs +116 -0
  917. package/scripts/agent-eval/parse-bench-readme.mjs +84 -0
  918. package/scripts/agent-eval/parse-run.mjs +45 -0
  919. package/scripts/agent-eval/parse-session.mjs +93 -0
  920. package/scripts/agent-eval/probe-context.mjs +21 -0
  921. package/scripts/agent-eval/probe-explore.mjs +40 -0
  922. package/scripts/agent-eval/probe-node.mjs +20 -0
  923. package/scripts/agent-eval/probe-sweep.mjs +119 -0
  924. package/scripts/agent-eval/probe-trace.mjs +20 -0
  925. package/scripts/agent-eval/redirect-read-hook.sh +38 -0
  926. package/scripts/agent-eval/run-agent.sh +34 -0
  927. package/scripts/agent-eval/run-all.sh +69 -0
  928. package/scripts/agent-eval/run-arms.sh +56 -0
  929. package/scripts/agent-eval/seq-matrix.mjs +137 -0
  930. package/scripts/build-bundle.sh +118 -0
  931. package/scripts/extract-release-notes.mjs +130 -0
  932. package/scripts/local-install.sh +41 -0
  933. package/scripts/npm-sdk.js +75 -0
  934. package/scripts/npm-shim.js +246 -0
  935. package/scripts/pack-npm.sh +118 -0
  936. package/scripts/prepare-release.mjs +270 -0
@@ -0,0 +1,733 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import * as os from 'os';
4
+ import * as net from 'net';
5
+ import * as tls from 'tls';
6
+ import * as https from 'https';
7
+ import { execFileSync } from 'child_process';
8
+ import { createHash } from 'crypto';
9
+ import { createDebug } from './debug.js';
10
+ import { getClaudeConfigDir, getHudPluginDir } from './claude-config-dir.js';
11
+ const debug = createDebug('usage');
12
+ const LEGACY_KEYCHAIN_SERVICE_NAME = 'Claude Code-credentials';
13
+ // File-based cache (HUD runs as new process each render, so in-memory cache won't persist)
14
+ const CACHE_TTL_MS = 60_000; // 60 seconds
15
+ const CACHE_FAILURE_TTL_MS = 15_000; // 15 seconds for failed requests
16
+ const CACHE_LOCK_STALE_MS = 30_000;
17
+ const CACHE_LOCK_WAIT_MS = 2_000;
18
+ const CACHE_LOCK_POLL_MS = 50;
19
+ const KEYCHAIN_TIMEOUT_MS = 3000;
20
+ const KEYCHAIN_BACKOFF_MS = 60_000; // Backoff on keychain failures to avoid re-prompting
21
+ const USAGE_API_TIMEOUT_MS_DEFAULT = 15_000;
22
+ export const USAGE_API_USER_AGENT = 'claude-code/2.1';
23
+ /**
24
+ * Check if user is using a custom API endpoint instead of the default Anthropic API.
25
+ * When using custom providers (e.g., via cc-switch), the OAuth usage API is not applicable.
26
+ */
27
+ function isUsingCustomApiEndpoint(env = process.env) {
28
+ const baseUrl = env.ANTHROPIC_BASE_URL?.trim() || env.ANTHROPIC_API_BASE_URL?.trim();
29
+ // No custom endpoint configured - using default Anthropic API
30
+ if (!baseUrl) {
31
+ return false;
32
+ }
33
+ try {
34
+ return new URL(baseUrl).origin !== 'https://api.anthropic.com';
35
+ }
36
+ catch {
37
+ return true;
38
+ }
39
+ }
40
+ function getCachePath(homeDir) {
41
+ return path.join(getHudPluginDir(homeDir), '.usage-cache.json');
42
+ }
43
+ function getCacheLockPath(homeDir) {
44
+ return path.join(getHudPluginDir(homeDir), '.usage-cache.lock');
45
+ }
46
+ function hydrateCacheData(data) {
47
+ // JSON.stringify converts Date to ISO string, so we need to reconvert on read.
48
+ // new Date() handles both Date objects and ISO strings safely.
49
+ if (data.fiveHourResetAt) {
50
+ data.fiveHourResetAt = new Date(data.fiveHourResetAt);
51
+ }
52
+ if (data.sevenDayResetAt) {
53
+ data.sevenDayResetAt = new Date(data.sevenDayResetAt);
54
+ }
55
+ return data;
56
+ }
57
+ function readCacheState(homeDir, now, ttls) {
58
+ try {
59
+ const cachePath = getCachePath(homeDir);
60
+ if (!fs.existsSync(cachePath))
61
+ return null;
62
+ const content = fs.readFileSync(cachePath, 'utf8');
63
+ const cache = JSON.parse(content);
64
+ // Check TTL - use shorter TTL for failure results
65
+ const ttl = cache.data.apiUnavailable ? ttls.failureCacheTtlMs : ttls.cacheTtlMs;
66
+ return {
67
+ data: hydrateCacheData(cache.data),
68
+ timestamp: cache.timestamp,
69
+ isFresh: now - cache.timestamp < ttl,
70
+ };
71
+ }
72
+ catch {
73
+ return null;
74
+ }
75
+ }
76
+ function readCache(homeDir, now, ttls) {
77
+ const cache = readCacheState(homeDir, now, ttls);
78
+ return cache?.isFresh ? cache.data : null;
79
+ }
80
+ function writeCache(homeDir, data, timestamp) {
81
+ try {
82
+ const cachePath = getCachePath(homeDir);
83
+ const cacheDir = path.dirname(cachePath);
84
+ if (!fs.existsSync(cacheDir)) {
85
+ fs.mkdirSync(cacheDir, { recursive: true });
86
+ }
87
+ const cache = { data, timestamp };
88
+ fs.writeFileSync(cachePath, JSON.stringify(cache), 'utf8');
89
+ }
90
+ catch {
91
+ // Ignore cache write failures
92
+ }
93
+ }
94
+ function readLockTimestamp(lockPath) {
95
+ try {
96
+ if (!fs.existsSync(lockPath))
97
+ return null;
98
+ const raw = fs.readFileSync(lockPath, 'utf8').trim();
99
+ const parsed = Number.parseInt(raw, 10);
100
+ return Number.isFinite(parsed) ? parsed : null;
101
+ }
102
+ catch {
103
+ return null;
104
+ }
105
+ }
106
+ function tryAcquireCacheLock(homeDir) {
107
+ const lockPath = getCacheLockPath(homeDir);
108
+ const cacheDir = path.dirname(lockPath);
109
+ try {
110
+ if (!fs.existsSync(cacheDir)) {
111
+ fs.mkdirSync(cacheDir, { recursive: true });
112
+ }
113
+ const fd = fs.openSync(lockPath, 'wx');
114
+ try {
115
+ fs.writeFileSync(fd, String(Date.now()), 'utf8');
116
+ }
117
+ finally {
118
+ fs.closeSync(fd);
119
+ }
120
+ return 'acquired';
121
+ }
122
+ catch (error) {
123
+ const maybeError = error;
124
+ if (maybeError.code !== 'EEXIST') {
125
+ debug('Usage cache lock unavailable, continuing without coordination:', maybeError.message);
126
+ return 'unsupported';
127
+ }
128
+ }
129
+ const lockTimestamp = readLockTimestamp(lockPath);
130
+ if (lockTimestamp != null && Date.now() - lockTimestamp > CACHE_LOCK_STALE_MS) {
131
+ try {
132
+ fs.unlinkSync(lockPath);
133
+ }
134
+ catch {
135
+ return 'busy';
136
+ }
137
+ return tryAcquireCacheLock(homeDir);
138
+ }
139
+ return 'busy';
140
+ }
141
+ function releaseCacheLock(homeDir) {
142
+ try {
143
+ const lockPath = getCacheLockPath(homeDir);
144
+ if (fs.existsSync(lockPath)) {
145
+ fs.unlinkSync(lockPath);
146
+ }
147
+ }
148
+ catch {
149
+ // Ignore lock cleanup failures
150
+ }
151
+ }
152
+ async function waitForFreshCache(homeDir, now, ttls, timeoutMs = CACHE_LOCK_WAIT_MS) {
153
+ const deadline = Date.now() + timeoutMs;
154
+ while (Date.now() < deadline) {
155
+ await new Promise((resolve) => setTimeout(resolve, CACHE_LOCK_POLL_MS));
156
+ const cached = readCache(homeDir, now(), ttls);
157
+ if (cached) {
158
+ return cached;
159
+ }
160
+ if (!fs.existsSync(getCacheLockPath(homeDir))) {
161
+ break;
162
+ }
163
+ }
164
+ return readCache(homeDir, now(), ttls);
165
+ }
166
+ const defaultDeps = {
167
+ homeDir: () => os.homedir(),
168
+ fetchApi: fetchUsageApi,
169
+ now: () => Date.now(),
170
+ readKeychain: readKeychainCredentials,
171
+ ttls: { cacheTtlMs: CACHE_TTL_MS, failureCacheTtlMs: CACHE_FAILURE_TTL_MS },
172
+ };
173
+ /**
174
+ * Get OAuth usage data from Anthropic API.
175
+ * Returns null if user is an API user (no OAuth credentials) or credentials are expired.
176
+ * Returns { apiUnavailable: true, ... } if API call fails (to show warning in HUD).
177
+ *
178
+ * Uses file-based cache since HUD runs as a new process each render (~300ms).
179
+ * Cache TTL is configurable via usage.cacheTtlSeconds / usage.failureCacheTtlSeconds in config.json
180
+ * (defaults: 60s for success, 15s for failures).
181
+ */
182
+ export async function getUsage(overrides = {}) {
183
+ const deps = { ...defaultDeps, ...overrides };
184
+ const now = deps.now();
185
+ const homeDir = deps.homeDir();
186
+ // Skip usage API if user is using a custom provider
187
+ if (isUsingCustomApiEndpoint()) {
188
+ debug('Skipping usage API: custom API endpoint configured');
189
+ return null;
190
+ }
191
+ // Check file-based cache first
192
+ const cacheState = readCacheState(homeDir, now, deps.ttls);
193
+ if (cacheState?.isFresh) {
194
+ return cacheState.data;
195
+ }
196
+ let holdsCacheLock = false;
197
+ const lockStatus = tryAcquireCacheLock(homeDir);
198
+ if (lockStatus === 'busy') {
199
+ if (cacheState) {
200
+ return cacheState.data;
201
+ }
202
+ return await waitForFreshCache(homeDir, deps.now, deps.ttls);
203
+ }
204
+ holdsCacheLock = lockStatus === 'acquired';
205
+ try {
206
+ const refreshedCache = readCache(homeDir, deps.now(), deps.ttls);
207
+ if (refreshedCache) {
208
+ return refreshedCache;
209
+ }
210
+ const credentials = readCredentials(homeDir, now, deps.readKeychain);
211
+ if (!credentials) {
212
+ return null;
213
+ }
214
+ const { accessToken, subscriptionType } = credentials;
215
+ // Determine plan name from subscriptionType
216
+ const planName = getPlanName(subscriptionType);
217
+ if (!planName) {
218
+ // API user, no usage limits to show
219
+ return null;
220
+ }
221
+ // Fetch usage from API
222
+ const apiResult = await deps.fetchApi(accessToken);
223
+ if (!apiResult.data) {
224
+ // API call failed, cache the failure to prevent retry storms
225
+ const failureResult = {
226
+ planName,
227
+ fiveHour: null,
228
+ sevenDay: null,
229
+ fiveHourResetAt: null,
230
+ sevenDayResetAt: null,
231
+ apiUnavailable: true,
232
+ apiError: apiResult.error,
233
+ };
234
+ writeCache(homeDir, failureResult, now);
235
+ return failureResult;
236
+ }
237
+ // Parse response - API returns 0-100 percentage directly
238
+ // Clamp to 0-100 and handle NaN/Infinity
239
+ const fiveHour = parseUtilization(apiResult.data.five_hour?.utilization);
240
+ const sevenDay = parseUtilization(apiResult.data.seven_day?.utilization);
241
+ const fiveHourResetAt = parseDate(apiResult.data.five_hour?.resets_at);
242
+ const sevenDayResetAt = parseDate(apiResult.data.seven_day?.resets_at);
243
+ const result = {
244
+ planName,
245
+ fiveHour,
246
+ sevenDay,
247
+ fiveHourResetAt,
248
+ sevenDayResetAt,
249
+ };
250
+ // Write to file cache
251
+ writeCache(homeDir, result, now);
252
+ return result;
253
+ }
254
+ catch (error) {
255
+ debug('getUsage failed:', error);
256
+ return null;
257
+ }
258
+ finally {
259
+ if (holdsCacheLock) {
260
+ releaseCacheLock(homeDir);
261
+ }
262
+ }
263
+ }
264
+ /**
265
+ * Get path for keychain failure backoff cache.
266
+ * Separate from usage cache to track keychain-specific failures.
267
+ */
268
+ function getKeychainBackoffPath(homeDir) {
269
+ return path.join(getHudPluginDir(homeDir), '.keychain-backoff');
270
+ }
271
+ /**
272
+ * Check if we're in keychain backoff period (recent failure/timeout).
273
+ * Prevents re-prompting user on every render cycle.
274
+ */
275
+ function isKeychainBackoff(homeDir, now) {
276
+ try {
277
+ const backoffPath = getKeychainBackoffPath(homeDir);
278
+ if (!fs.existsSync(backoffPath))
279
+ return false;
280
+ const timestamp = parseInt(fs.readFileSync(backoffPath, 'utf8'), 10);
281
+ return now - timestamp < KEYCHAIN_BACKOFF_MS;
282
+ }
283
+ catch {
284
+ return false;
285
+ }
286
+ }
287
+ /**
288
+ * Record keychain failure for backoff.
289
+ */
290
+ function recordKeychainFailure(homeDir, now) {
291
+ try {
292
+ const backoffPath = getKeychainBackoffPath(homeDir);
293
+ const dir = path.dirname(backoffPath);
294
+ if (!fs.existsSync(dir)) {
295
+ fs.mkdirSync(dir, { recursive: true });
296
+ }
297
+ fs.writeFileSync(backoffPath, String(now), 'utf8');
298
+ }
299
+ catch {
300
+ // Ignore write failures
301
+ }
302
+ }
303
+ /**
304
+ * Determine the macOS Keychain service name for Claude Code credentials.
305
+ * Claude Code uses the default service for ~/.claude and a hashed suffix for custom config directories.
306
+ */
307
+ export function getKeychainServiceName(configDir, homeDir) {
308
+ const normalizedConfigDir = path.normalize(path.resolve(configDir));
309
+ const normalizedDefaultDir = path.normalize(path.resolve(path.join(homeDir, '.claude')));
310
+ if (normalizedConfigDir === normalizedDefaultDir) {
311
+ return LEGACY_KEYCHAIN_SERVICE_NAME;
312
+ }
313
+ const hash = createHash('sha256').update(normalizedConfigDir).digest('hex').slice(0, 8);
314
+ return `${LEGACY_KEYCHAIN_SERVICE_NAME}-${hash}`;
315
+ }
316
+ export function getKeychainServiceNames(configDir, homeDir, env = process.env) {
317
+ const serviceNames = [getKeychainServiceName(configDir, homeDir)];
318
+ const envConfigDir = env.CLAUDE_CONFIG_DIR?.trim();
319
+ if (envConfigDir) {
320
+ const normalizedDefaultDir = path.normalize(path.resolve(path.join(homeDir, '.claude')));
321
+ const normalizedEnvDir = path.normalize(path.resolve(envConfigDir));
322
+ if (normalizedEnvDir === normalizedDefaultDir) {
323
+ serviceNames.push(LEGACY_KEYCHAIN_SERVICE_NAME);
324
+ }
325
+ else {
326
+ const envHash = createHash('sha256').update(envConfigDir).digest('hex').slice(0, 8);
327
+ serviceNames.push(`${LEGACY_KEYCHAIN_SERVICE_NAME}-${envHash}`);
328
+ }
329
+ }
330
+ serviceNames.push(LEGACY_KEYCHAIN_SERVICE_NAME);
331
+ return [...new Set(serviceNames)];
332
+ }
333
+ function isMissingKeychainItemError(error) {
334
+ if (!error || typeof error !== 'object')
335
+ return false;
336
+ const maybeError = error;
337
+ if (maybeError.status === 44)
338
+ return true;
339
+ const message = typeof maybeError.message === 'string' ? maybeError.message.toLowerCase() : '';
340
+ if (message.includes('could not be found in the keychain'))
341
+ return true;
342
+ const stderr = typeof maybeError.stderr === 'string'
343
+ ? maybeError.stderr.toLowerCase()
344
+ : Buffer.isBuffer(maybeError.stderr)
345
+ ? maybeError.stderr.toString('utf8').toLowerCase()
346
+ : '';
347
+ return stderr.includes('could not be found in the keychain');
348
+ }
349
+ export function resolveKeychainCredentials(serviceNames, now, loadService) {
350
+ let shouldBackoff = false;
351
+ for (const serviceName of serviceNames) {
352
+ try {
353
+ const keychainData = loadService(serviceName).trim();
354
+ if (!keychainData)
355
+ continue;
356
+ const data = JSON.parse(keychainData);
357
+ const credentials = parseCredentialsData(data, now);
358
+ if (credentials) {
359
+ return { credentials, shouldBackoff: false };
360
+ }
361
+ }
362
+ catch (error) {
363
+ if (!isMissingKeychainItemError(error)) {
364
+ shouldBackoff = true;
365
+ }
366
+ }
367
+ }
368
+ return { credentials: null, shouldBackoff };
369
+ }
370
+ /**
371
+ * Read credentials from macOS Keychain.
372
+ * Claude Code stores OAuth credentials in the macOS Keychain with profile-specific service names.
373
+ * Returns null if not on macOS or credentials not found.
374
+ *
375
+ * Security: Uses execFileSync with absolute path to avoid shell injection and PATH hijacking.
376
+ */
377
+ function readKeychainCredentials(now, homeDir) {
378
+ // Only available on macOS
379
+ if (process.platform !== 'darwin') {
380
+ return null;
381
+ }
382
+ // Check backoff to avoid re-prompting on every render after a failure
383
+ if (isKeychainBackoff(homeDir, now)) {
384
+ debug('Keychain in backoff period, skipping');
385
+ return null;
386
+ }
387
+ try {
388
+ const configDir = getClaudeConfigDir(homeDir);
389
+ const serviceNames = getKeychainServiceNames(configDir, homeDir);
390
+ debug('Trying keychain service names:', serviceNames);
391
+ const resolved = resolveKeychainCredentials(serviceNames, now, (serviceName) => execFileSync('/usr/bin/security', ['find-generic-password', '-s', serviceName, '-w'], { encoding: 'utf8', stdio: ['pipe', 'pipe', 'pipe'], timeout: KEYCHAIN_TIMEOUT_MS }));
392
+ if (resolved.credentials) {
393
+ return resolved.credentials;
394
+ }
395
+ if (resolved.shouldBackoff) {
396
+ recordKeychainFailure(homeDir, now);
397
+ }
398
+ return null;
399
+ }
400
+ catch (error) {
401
+ // Security: Only log error message, not full error object (may contain stdout/stderr with tokens)
402
+ const message = error instanceof Error ? error.message : 'unknown error';
403
+ debug('Failed to read from macOS Keychain:', message);
404
+ // Record failure for backoff to avoid re-prompting
405
+ recordKeychainFailure(homeDir, now);
406
+ return null;
407
+ }
408
+ }
409
+ /**
410
+ * Read credentials from file (legacy method).
411
+ * Older versions of Claude Code stored credentials in {CLAUDE_CONFIG_DIR}/.credentials.json.
412
+ */
413
+ function readFileCredentials(homeDir, now) {
414
+ const credentialsPath = path.join(getClaudeConfigDir(homeDir), '.credentials.json');
415
+ if (!fs.existsSync(credentialsPath)) {
416
+ return null;
417
+ }
418
+ try {
419
+ const content = fs.readFileSync(credentialsPath, 'utf8');
420
+ const data = JSON.parse(content);
421
+ return parseCredentialsData(data, now);
422
+ }
423
+ catch (error) {
424
+ debug('Failed to read credentials file:', error);
425
+ return null;
426
+ }
427
+ }
428
+ function readFileSubscriptionType(homeDir) {
429
+ const credentialsPath = path.join(getClaudeConfigDir(homeDir), '.credentials.json');
430
+ if (!fs.existsSync(credentialsPath)) {
431
+ return null;
432
+ }
433
+ try {
434
+ const content = fs.readFileSync(credentialsPath, 'utf8');
435
+ const data = JSON.parse(content);
436
+ const subscriptionType = data.claudeAiOauth?.subscriptionType;
437
+ const normalizedSubscriptionType = typeof subscriptionType === 'string'
438
+ ? subscriptionType.trim()
439
+ : '';
440
+ if (!normalizedSubscriptionType) {
441
+ return null;
442
+ }
443
+ return normalizedSubscriptionType;
444
+ }
445
+ catch (error) {
446
+ debug('Failed to read file subscriptionType:', error);
447
+ return null;
448
+ }
449
+ }
450
+ /**
451
+ * Parse and validate credentials data from either Keychain or file.
452
+ */
453
+ function parseCredentialsData(data, now) {
454
+ const accessToken = data.claudeAiOauth?.accessToken;
455
+ const subscriptionType = data.claudeAiOauth?.subscriptionType ?? '';
456
+ if (!accessToken) {
457
+ return null;
458
+ }
459
+ // Check if token is expired (expiresAt is Unix ms timestamp)
460
+ // Use != null to handle expiresAt=0 correctly (would be expired)
461
+ const expiresAt = data.claudeAiOauth?.expiresAt;
462
+ if (expiresAt != null && expiresAt <= now) {
463
+ debug('OAuth token expired');
464
+ return null;
465
+ }
466
+ return { accessToken, subscriptionType };
467
+ }
468
+ /**
469
+ * Read OAuth credentials, trying macOS Keychain first (Claude Code 2.x),
470
+ * then falling back to file-based credentials (older versions).
471
+ *
472
+ * Token priority: Keychain token is authoritative (Claude Code 2.x stores current token there).
473
+ * SubscriptionType: Can be supplemented from file if keychain lacks it (display-only field).
474
+ */
475
+ function readCredentials(homeDir, now, readKeychain) {
476
+ // Try macOS Keychain first (Claude Code 2.x)
477
+ const keychainCreds = readKeychain(now, homeDir);
478
+ if (keychainCreds) {
479
+ if (keychainCreds.subscriptionType) {
480
+ debug('Using credentials from macOS Keychain');
481
+ return keychainCreds;
482
+ }
483
+ // Keychain has token but no subscriptionType - try to supplement from file
484
+ const fileSubscriptionType = readFileSubscriptionType(homeDir);
485
+ if (fileSubscriptionType) {
486
+ debug('Using keychain token with file subscriptionType');
487
+ return {
488
+ accessToken: keychainCreds.accessToken,
489
+ subscriptionType: fileSubscriptionType,
490
+ };
491
+ }
492
+ // No subscriptionType available - use keychain token anyway
493
+ debug('Using keychain token without subscriptionType');
494
+ return keychainCreds;
495
+ }
496
+ // Fall back to file-based credentials (older versions or non-macOS)
497
+ const fileCreds = readFileCredentials(homeDir, now);
498
+ if (fileCreds) {
499
+ debug('Using credentials from file');
500
+ return fileCreds;
501
+ }
502
+ return null;
503
+ }
504
+ function getPlanName(subscriptionType) {
505
+ const lower = subscriptionType.toLowerCase();
506
+ if (lower.includes('max'))
507
+ return 'Max';
508
+ if (lower.includes('pro'))
509
+ return 'Pro';
510
+ if (lower.includes('team'))
511
+ return 'Team';
512
+ // API users don't have subscriptionType or have 'api'
513
+ if (!subscriptionType || lower.includes('api'))
514
+ return null;
515
+ // Unknown subscription type - show it capitalized
516
+ return subscriptionType.charAt(0).toUpperCase() + subscriptionType.slice(1);
517
+ }
518
+ /** Parse utilization value, clamping to 0-100 and handling NaN/Infinity */
519
+ function parseUtilization(value) {
520
+ if (value == null)
521
+ return null;
522
+ if (!Number.isFinite(value))
523
+ return null; // Handles NaN and Infinity
524
+ return Math.round(Math.max(0, Math.min(100, value)));
525
+ }
526
+ /** Parse ISO date string safely, returning null for invalid dates */
527
+ function parseDate(dateStr) {
528
+ if (!dateStr)
529
+ return null;
530
+ const date = new Date(dateStr);
531
+ // Check for Invalid Date
532
+ if (isNaN(date.getTime())) {
533
+ debug('Invalid date string:', dateStr);
534
+ return null;
535
+ }
536
+ return date;
537
+ }
538
+ export function getUsageApiTimeoutMs(env = process.env) {
539
+ const raw = env.CLAUDE_HUD_USAGE_TIMEOUT_MS?.trim();
540
+ if (!raw)
541
+ return USAGE_API_TIMEOUT_MS_DEFAULT;
542
+ const parsed = Number(raw);
543
+ if (!Number.isInteger(parsed) || parsed <= 0) {
544
+ debug('Invalid CLAUDE_HUD_USAGE_TIMEOUT_MS value:', raw);
545
+ return USAGE_API_TIMEOUT_MS_DEFAULT;
546
+ }
547
+ return parsed;
548
+ }
549
+ export function isNoProxy(hostname, env = process.env) {
550
+ const noProxy = env.NO_PROXY ?? env.no_proxy;
551
+ if (!noProxy)
552
+ return false;
553
+ const host = hostname.toLowerCase();
554
+ return noProxy.split(',').some((entry) => {
555
+ const pattern = entry.trim().toLowerCase();
556
+ if (!pattern)
557
+ return false;
558
+ if (pattern === '*')
559
+ return true;
560
+ if (host === pattern)
561
+ return true;
562
+ const suffix = pattern.startsWith('.') ? pattern : `.${pattern}`;
563
+ return host.endsWith(suffix);
564
+ });
565
+ }
566
+ export function getProxyUrl(hostname, env = process.env) {
567
+ if (isNoProxy(hostname, env)) {
568
+ debug('Proxy bypassed by NO_PROXY for host:', hostname);
569
+ return null;
570
+ }
571
+ const proxyEnv = env.HTTPS_PROXY
572
+ ?? env.https_proxy
573
+ ?? env.ALL_PROXY
574
+ ?? env.all_proxy
575
+ ?? env.HTTP_PROXY
576
+ ?? env.http_proxy;
577
+ if (!proxyEnv)
578
+ return null;
579
+ try {
580
+ const proxyUrl = new URL(proxyEnv);
581
+ if (proxyUrl.protocol !== 'http:' && proxyUrl.protocol !== 'https:') {
582
+ debug('Unsupported proxy protocol:', proxyUrl.protocol);
583
+ return null;
584
+ }
585
+ return proxyUrl;
586
+ }
587
+ catch {
588
+ debug('Invalid proxy URL:', proxyEnv);
589
+ return null;
590
+ }
591
+ }
592
+ function createProxyTunnelAgent(proxyUrl) {
593
+ const proxyHost = proxyUrl.hostname;
594
+ const proxyPort = Number.parseInt(proxyUrl.port || (proxyUrl.protocol === 'https:' ? '443' : '80'), 10);
595
+ const proxyAuth = proxyUrl.username
596
+ ? `Basic ${Buffer.from(`${decodeURIComponent(proxyUrl.username)}:${decodeURIComponent(proxyUrl.password || '')}`).toString('base64')}`
597
+ : null;
598
+ return new class extends https.Agent {
599
+ createConnection(options, callback) {
600
+ const targetHost = String(options.host ?? options.hostname ?? 'localhost');
601
+ const targetPort = Number(options.port) || 443;
602
+ let settled = false;
603
+ const settle = (err, socket) => {
604
+ if (settled)
605
+ return;
606
+ settled = true;
607
+ callback?.(err, socket);
608
+ };
609
+ const proxySocket = proxyUrl.protocol === 'https:'
610
+ ? tls.connect({ host: proxyHost, port: proxyPort, servername: proxyHost })
611
+ : net.connect(proxyPort, proxyHost);
612
+ proxySocket.once('error', (error) => {
613
+ settle(error, proxySocket);
614
+ });
615
+ proxySocket.once('connect', () => {
616
+ const connectHeaders = [
617
+ `CONNECT ${targetHost}:${targetPort} HTTP/1.1`,
618
+ `Host: ${targetHost}:${targetPort}`,
619
+ ];
620
+ if (proxyAuth) {
621
+ connectHeaders.push(`Proxy-Authorization: ${proxyAuth}`);
622
+ }
623
+ connectHeaders.push('', '');
624
+ proxySocket.write(connectHeaders.join('\r\n'));
625
+ let responseBuffer = Buffer.alloc(0);
626
+ const onData = (chunk) => {
627
+ responseBuffer = Buffer.concat([responseBuffer, chunk]);
628
+ const headerEndIndex = responseBuffer.indexOf('\r\n\r\n');
629
+ if (headerEndIndex === -1)
630
+ return;
631
+ proxySocket.removeListener('data', onData);
632
+ const headerText = responseBuffer.subarray(0, headerEndIndex).toString('utf8');
633
+ const statusLine = headerText.split('\r\n')[0] ?? '';
634
+ if (!/^HTTP\/1\.[01] 200 /.test(statusLine)) {
635
+ const error = new Error(`Proxy CONNECT rejected: ${statusLine || 'unknown status'}`);
636
+ proxySocket.destroy(error);
637
+ settle(error, proxySocket);
638
+ return;
639
+ }
640
+ const tlsSocket = tls.connect({
641
+ socket: proxySocket,
642
+ servername: String(options.servername ?? targetHost),
643
+ rejectUnauthorized: options.rejectUnauthorized !== false,
644
+ }, () => {
645
+ settle(null, tlsSocket);
646
+ });
647
+ tlsSocket.once('error', (error) => {
648
+ settle(error, tlsSocket);
649
+ });
650
+ };
651
+ proxySocket.on('data', onData);
652
+ });
653
+ // Must not return the socket here. In Node.js _http_agent.js, createSocket()
654
+ // calls: `if (newSocket) oncreate(null, newSocket)` — returning a truthy value
655
+ // causes the HTTP request to be written to the raw proxy socket immediately,
656
+ // before the CONNECT tunnel is established. Only deliver the final TLS socket
657
+ // asynchronously via the callback after the CONNECT handshake succeeds.
658
+ return undefined;
659
+ }
660
+ }();
661
+ }
662
+ function fetchUsageApi(accessToken) {
663
+ return new Promise((resolve) => {
664
+ const host = 'api.anthropic.com';
665
+ const timeoutMs = getUsageApiTimeoutMs();
666
+ const proxyUrl = getProxyUrl(host);
667
+ const options = {
668
+ hostname: host,
669
+ path: '/api/oauth/usage',
670
+ method: 'GET',
671
+ headers: {
672
+ 'Authorization': `Bearer ${accessToken}`,
673
+ 'anthropic-beta': 'oauth-2025-04-20',
674
+ 'User-Agent': USAGE_API_USER_AGENT,
675
+ },
676
+ timeout: timeoutMs,
677
+ agent: proxyUrl ? createProxyTunnelAgent(proxyUrl) : undefined,
678
+ };
679
+ if (proxyUrl) {
680
+ debug('Using proxy for usage API:', proxyUrl.origin);
681
+ }
682
+ const req = https.request(options, (res) => {
683
+ let data = '';
684
+ res.on('data', (chunk) => {
685
+ data += chunk.toString();
686
+ });
687
+ res.on('end', () => {
688
+ if (res.statusCode !== 200) {
689
+ debug('API returned non-200 status:', res.statusCode);
690
+ resolve({ data: null, error: res.statusCode ? `http-${res.statusCode}` : 'http-error' });
691
+ return;
692
+ }
693
+ try {
694
+ const parsed = JSON.parse(data);
695
+ resolve({ data: parsed });
696
+ }
697
+ catch (error) {
698
+ debug('Failed to parse API response:', error);
699
+ resolve({ data: null, error: 'parse' });
700
+ }
701
+ });
702
+ });
703
+ req.on('error', (error) => {
704
+ debug('API request error:', error);
705
+ resolve({ data: null, error: 'network' });
706
+ });
707
+ req.on('timeout', () => {
708
+ debug('API request timeout');
709
+ req.destroy();
710
+ resolve({ data: null, error: 'timeout' });
711
+ });
712
+ req.end();
713
+ });
714
+ }
715
+ // Export for testing
716
+ export function clearCache(homeDir) {
717
+ if (homeDir) {
718
+ try {
719
+ const cachePath = getCachePath(homeDir);
720
+ if (fs.existsSync(cachePath)) {
721
+ fs.unlinkSync(cachePath);
722
+ }
723
+ const lockPath = getCacheLockPath(homeDir);
724
+ if (fs.existsSync(lockPath)) {
725
+ fs.unlinkSync(lockPath);
726
+ }
727
+ }
728
+ catch {
729
+ // Ignore
730
+ }
731
+ }
732
+ }
733
+ //# sourceMappingURL=usage-api.js.map