codesift-mcp 0.14.0 → 0.15.1

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 (458) hide show
  1. package/README.md +5 -1
  2. package/dist/cli/commands-admin.d.ts +18 -0
  3. package/dist/cli/commands-admin.d.ts.map +1 -0
  4. package/dist/cli/commands-admin.js +187 -0
  5. package/dist/cli/commands-admin.js.map +1 -0
  6. package/dist/cli/commands-daemon.d.ts +42 -0
  7. package/dist/cli/commands-daemon.d.ts.map +1 -0
  8. package/dist/cli/commands-daemon.js +163 -0
  9. package/dist/cli/commands-daemon.js.map +1 -0
  10. package/dist/cli/commands-index.d.ts +12 -0
  11. package/dist/cli/commands-index.d.ts.map +1 -0
  12. package/dist/cli/commands-index.js +133 -0
  13. package/dist/cli/commands-index.js.map +1 -0
  14. package/dist/cli/commands-maintenance.d.ts +12 -0
  15. package/dist/cli/commands-maintenance.d.ts.map +1 -0
  16. package/dist/cli/commands-maintenance.js +409 -0
  17. package/dist/cli/commands-maintenance.js.map +1 -0
  18. package/dist/cli/commands-query.d.ts +21 -0
  19. package/dist/cli/commands-query.d.ts.map +1 -0
  20. package/dist/cli/commands-query.js +270 -0
  21. package/dist/cli/commands-query.js.map +1 -0
  22. package/dist/cli/commands.d.ts +2 -36
  23. package/dist/cli/commands.d.ts.map +1 -1
  24. package/dist/cli/commands.js +8 -867
  25. package/dist/cli/commands.js.map +1 -1
  26. package/dist/cli/embed-child.js +13 -2
  27. package/dist/cli/embed-child.js.map +1 -1
  28. package/dist/instructions.d.ts +1 -1
  29. package/dist/instructions.d.ts.map +1 -1
  30. package/dist/instructions.js +5 -2
  31. package/dist/instructions.js.map +1 -1
  32. package/dist/parser/extractors/php-class-metadata.d.ts +10 -0
  33. package/dist/parser/extractors/php-class-metadata.d.ts.map +1 -0
  34. package/dist/parser/extractors/php-class-metadata.js +65 -0
  35. package/dist/parser/extractors/php-class-metadata.js.map +1 -0
  36. package/dist/parser/extractors/php-doc.d.ts +13 -0
  37. package/dist/parser/extractors/php-doc.d.ts.map +1 -0
  38. package/dist/parser/extractors/php-doc.js +39 -0
  39. package/dist/parser/extractors/php-doc.js.map +1 -0
  40. package/dist/parser/extractors/php-node-metadata.d.ts +26 -0
  41. package/dist/parser/extractors/php-node-metadata.d.ts.map +1 -0
  42. package/dist/parser/extractors/php-node-metadata.js +132 -0
  43. package/dist/parser/extractors/php-node-metadata.js.map +1 -0
  44. package/dist/parser/extractors/php-symbol-builders.d.ts +13 -0
  45. package/dist/parser/extractors/php-symbol-builders.d.ts.map +1 -0
  46. package/dist/parser/extractors/php-symbol-builders.js +58 -0
  47. package/dist/parser/extractors/php-symbol-builders.js.map +1 -0
  48. package/dist/parser/extractors/php-walker.d.ts +4 -0
  49. package/dist/parser/extractors/php-walker.d.ts.map +1 -0
  50. package/dist/parser/extractors/php-walker.js +238 -0
  51. package/dist/parser/extractors/php-walker.js.map +1 -0
  52. package/dist/parser/extractors/php.d.ts +2 -33
  53. package/dist/parser/extractors/php.d.ts.map +1 -1
  54. package/dist/parser/extractors/php.js +2 -747
  55. package/dist/parser/extractors/php.js.map +1 -1
  56. package/dist/register-tool-loaders.d.ts +11 -11
  57. package/dist/register-tool-loaders.d.ts.map +1 -1
  58. package/dist/register-tools/runtime.d.ts +11 -0
  59. package/dist/register-tools/runtime.d.ts.map +1 -1
  60. package/dist/register-tools/runtime.js +40 -0
  61. package/dist/register-tools/runtime.js.map +1 -1
  62. package/dist/register-tools.d.ts.map +1 -1
  63. package/dist/register-tools.js +5 -1
  64. package/dist/register-tools.js.map +1 -1
  65. package/dist/retrieval/semantic-handlers.d.ts.map +1 -1
  66. package/dist/retrieval/semantic-handlers.js +10 -3
  67. package/dist/retrieval/semantic-handlers.js.map +1 -1
  68. package/dist/search/semantic.d.ts +2 -0
  69. package/dist/search/semantic.d.ts.map +1 -1
  70. package/dist/search/semantic.js +41 -9
  71. package/dist/search/semantic.js.map +1 -1
  72. package/dist/storage/chunk-store.d.ts +14 -2
  73. package/dist/storage/chunk-store.d.ts.map +1 -1
  74. package/dist/storage/chunk-store.js +214 -34
  75. package/dist/storage/chunk-store.js.map +1 -1
  76. package/dist/storage/embedding-store.d.ts +0 -12
  77. package/dist/storage/embedding-store.d.ts.map +1 -1
  78. package/dist/storage/embedding-store.js +69 -9
  79. package/dist/storage/embedding-store.js.map +1 -1
  80. package/dist/storage/index-cache.d.ts +12 -0
  81. package/dist/storage/index-cache.d.ts.map +1 -0
  82. package/dist/storage/index-cache.js +89 -0
  83. package/dist/storage/index-cache.js.map +1 -0
  84. package/dist/storage/index-json-mutations.d.ts +11 -0
  85. package/dist/storage/index-json-mutations.d.ts.map +1 -0
  86. package/dist/storage/index-json-mutations.js +93 -0
  87. package/dist/storage/index-json-mutations.js.map +1 -0
  88. package/dist/storage/index-migration.d.ts +22 -0
  89. package/dist/storage/index-migration.d.ts.map +1 -0
  90. package/dist/storage/index-migration.js +80 -0
  91. package/dist/storage/index-migration.js.map +1 -0
  92. package/dist/storage/index-store.d.ts +5 -61
  93. package/dist/storage/index-store.d.ts.map +1 -1
  94. package/dist/storage/index-store.js +33 -414
  95. package/dist/storage/index-store.js.map +1 -1
  96. package/dist/storage/index-version.d.ts +39 -0
  97. package/dist/storage/index-version.d.ts.map +1 -0
  98. package/dist/storage/index-version.js +87 -0
  99. package/dist/storage/index-version.js.map +1 -0
  100. package/dist/storage/registry.d.ts +9 -1
  101. package/dist/storage/registry.d.ts.map +1 -1
  102. package/dist/storage/registry.js +169 -8
  103. package/dist/storage/registry.js.map +1 -1
  104. package/dist/storage/shared-embedding-cache.d.ts +23 -3
  105. package/dist/storage/shared-embedding-cache.d.ts.map +1 -1
  106. package/dist/storage/shared-embedding-cache.js +300 -45
  107. package/dist/storage/shared-embedding-cache.js.map +1 -1
  108. package/dist/storage/telemetry/config.d.ts.map +1 -1
  109. package/dist/storage/telemetry/config.js +3 -2
  110. package/dist/storage/telemetry/config.js.map +1 -1
  111. package/dist/storage/telemetry/retro-aggregator.d.ts +21 -0
  112. package/dist/storage/telemetry/retro-aggregator.d.ts.map +1 -1
  113. package/dist/storage/telemetry/retro-aggregator.js +58 -16
  114. package/dist/storage/telemetry/retro-aggregator.js.map +1 -1
  115. package/dist/storage/telemetry/sanitizer.d.ts +16 -0
  116. package/dist/storage/telemetry/sanitizer.d.ts.map +1 -1
  117. package/dist/storage/telemetry/sanitizer.js +2 -0
  118. package/dist/storage/telemetry/sanitizer.js.map +1 -1
  119. package/dist/storage/telemetry/uploader.d.ts +3 -1
  120. package/dist/storage/telemetry/uploader.d.ts.map +1 -1
  121. package/dist/storage/telemetry/uploader.js +158 -21
  122. package/dist/storage/telemetry/uploader.js.map +1 -1
  123. package/dist/storage/usage-tracker.d.ts +8 -12
  124. package/dist/storage/usage-tracker.d.ts.map +1 -1
  125. package/dist/storage/usage-tracker.js +74 -1
  126. package/dist/storage/usage-tracker.js.map +1 -1
  127. package/dist/tools/cross-repo-contract-adapters.d.ts +39 -0
  128. package/dist/tools/cross-repo-contract-adapters.d.ts.map +1 -0
  129. package/dist/tools/cross-repo-contract-adapters.js +70 -0
  130. package/dist/tools/cross-repo-contract-adapters.js.map +1 -0
  131. package/dist/tools/cross-repo-contract-group.d.ts +17 -0
  132. package/dist/tools/cross-repo-contract-group.d.ts.map +1 -0
  133. package/dist/tools/cross-repo-contract-group.js +89 -0
  134. package/dist/tools/cross-repo-contract-group.js.map +1 -0
  135. package/dist/tools/cross-repo-contract-matcher.d.ts +24 -0
  136. package/dist/tools/cross-repo-contract-matcher.d.ts.map +1 -0
  137. package/dist/tools/cross-repo-contract-matcher.js +134 -0
  138. package/dist/tools/cross-repo-contract-matcher.js.map +1 -0
  139. package/dist/tools/cross-repo-contract-resolver.d.ts +9 -0
  140. package/dist/tools/cross-repo-contract-resolver.d.ts.map +1 -0
  141. package/dist/tools/cross-repo-contract-resolver.js +86 -0
  142. package/dist/tools/cross-repo-contract-resolver.js.map +1 -0
  143. package/dist/tools/cross-repo-contract-tools.d.ts +12 -135
  144. package/dist/tools/cross-repo-contract-tools.d.ts.map +1 -1
  145. package/dist/tools/cross-repo-contract-tools.js +8 -589
  146. package/dist/tools/cross-repo-contract-tools.js.map +1 -1
  147. package/dist/tools/cross-repo-contract-types.d.ts +30 -0
  148. package/dist/tools/cross-repo-contract-types.d.ts.map +1 -0
  149. package/dist/tools/cross-repo-contract-types.js +3 -0
  150. package/dist/tools/cross-repo-contract-types.js.map +1 -0
  151. package/dist/tools/cross-repo-outbound-calls.d.ts +28 -0
  152. package/dist/tools/cross-repo-outbound-calls.d.ts.map +1 -0
  153. package/dist/tools/cross-repo-outbound-calls.js +347 -0
  154. package/dist/tools/cross-repo-outbound-calls.js.map +1 -0
  155. package/dist/tools/cross-repo-outbound-lexer/call-detectors.d.ts.map +1 -1
  156. package/dist/tools/cross-repo-outbound-lexer/call-detectors.js +2 -0
  157. package/dist/tools/cross-repo-outbound-lexer/call-detectors.js.map +1 -1
  158. package/dist/tools/cross-repo-outbound-lexer/types.d.ts +2 -0
  159. package/dist/tools/cross-repo-outbound-lexer/types.d.ts.map +1 -1
  160. package/dist/tools/index-tools/file-indexer.js +3 -3
  161. package/dist/tools/index-tools/file-indexer.js.map +1 -1
  162. package/dist/tools/index-tools/folder-indexer.d.ts.map +1 -1
  163. package/dist/tools/index-tools/folder-indexer.js +47 -2
  164. package/dist/tools/index-tools/folder-indexer.js.map +1 -1
  165. package/dist/tools/index-tools/parse.d.ts +12 -3
  166. package/dist/tools/index-tools/parse.d.ts.map +1 -1
  167. package/dist/tools/index-tools/parse.js +33 -8
  168. package/dist/tools/index-tools/parse.js.map +1 -1
  169. package/dist/tools/index-tools/registry.d.ts +19 -0
  170. package/dist/tools/index-tools/registry.d.ts.map +1 -1
  171. package/dist/tools/index-tools/registry.js +88 -2
  172. package/dist/tools/index-tools/registry.js.map +1 -1
  173. package/dist/tools/index-tools/state.d.ts +31 -0
  174. package/dist/tools/index-tools/state.d.ts.map +1 -1
  175. package/dist/tools/index-tools/state.js +53 -0
  176. package/dist/tools/index-tools/state.js.map +1 -1
  177. package/dist/tools/index-tools/types.d.ts +9 -0
  178. package/dist/tools/index-tools/types.d.ts.map +1 -1
  179. package/dist/tools/index-tools/watcher.js +3 -3
  180. package/dist/tools/index-tools/watcher.js.map +1 -1
  181. package/dist/tools/index-tools/worktree-seed.d.ts +44 -0
  182. package/dist/tools/index-tools/worktree-seed.d.ts.map +1 -0
  183. package/dist/tools/index-tools/worktree-seed.js +302 -0
  184. package/dist/tools/index-tools/worktree-seed.js.map +1 -0
  185. package/dist/tools/index-tools.d.ts.map +1 -1
  186. package/dist/tools/index-tools.js +3 -1
  187. package/dist/tools/index-tools.js.map +1 -1
  188. package/dist/tools/nest-ext-tools/graphql.d.ts +17 -0
  189. package/dist/tools/nest-ext-tools/graphql.d.ts.map +1 -0
  190. package/dist/tools/nest-ext-tools/graphql.js +54 -0
  191. package/dist/tools/nest-ext-tools/graphql.js.map +1 -0
  192. package/dist/tools/nest-ext-tools/microservice.d.ts +17 -0
  193. package/dist/tools/nest-ext-tools/microservice.d.ts.map +1 -0
  194. package/dist/tools/nest-ext-tools/microservice.js +51 -0
  195. package/dist/tools/nest-ext-tools/microservice.js.map +1 -0
  196. package/dist/tools/nest-ext-tools/openapi.d.ts +81 -0
  197. package/dist/tools/nest-ext-tools/openapi.d.ts.map +1 -0
  198. package/dist/tools/nest-ext-tools/openapi.js +254 -0
  199. package/dist/tools/nest-ext-tools/openapi.js.map +1 -0
  200. package/dist/tools/nest-ext-tools/queue.d.ts +27 -0
  201. package/dist/tools/nest-ext-tools/queue.d.ts.map +1 -0
  202. package/dist/tools/nest-ext-tools/queue.js +95 -0
  203. package/dist/tools/nest-ext-tools/queue.js.map +1 -0
  204. package/dist/tools/nest-ext-tools/schedule.d.ts +19 -0
  205. package/dist/tools/nest-ext-tools/schedule.d.ts.map +1 -0
  206. package/dist/tools/nest-ext-tools/schedule.js +89 -0
  207. package/dist/tools/nest-ext-tools/schedule.js.map +1 -0
  208. package/dist/tools/nest-ext-tools/scope.d.ts +19 -0
  209. package/dist/tools/nest-ext-tools/scope.d.ts.map +1 -0
  210. package/dist/tools/nest-ext-tools/scope.js +151 -0
  211. package/dist/tools/nest-ext-tools/scope.js.map +1 -0
  212. package/dist/tools/nest-ext-tools/shared.d.ts +33 -0
  213. package/dist/tools/nest-ext-tools/shared.d.ts.map +1 -0
  214. package/dist/tools/nest-ext-tools/shared.js +279 -0
  215. package/dist/tools/nest-ext-tools/shared.js.map +1 -0
  216. package/dist/tools/nest-ext-tools/typeorm.d.ts +22 -0
  217. package/dist/tools/nest-ext-tools/typeorm.d.ts.map +1 -0
  218. package/dist/tools/nest-ext-tools/typeorm.js +59 -0
  219. package/dist/tools/nest-ext-tools/typeorm.js.map +1 -0
  220. package/dist/tools/nest-ext-tools/websocket.d.ts +21 -0
  221. package/dist/tools/nest-ext-tools/websocket.d.ts.map +1 -0
  222. package/dist/tools/nest-ext-tools/websocket.js +70 -0
  223. package/dist/tools/nest-ext-tools/websocket.js.map +1 -0
  224. package/dist/tools/nest-ext-tools.d.ts +10 -204
  225. package/dist/tools/nest-ext-tools.d.ts.map +1 -1
  226. package/dist/tools/nest-ext-tools.js +10 -749
  227. package/dist/tools/nest-ext-tools.js.map +1 -1
  228. package/dist/tools/perf-tools.js +2 -2
  229. package/dist/tools/python-audit/checks/dead-code.d.ts +1 -1
  230. package/dist/tools/python-audit/checks/dead-code.d.ts.map +1 -1
  231. package/dist/tools/python-constants/constant-match.d.ts +5 -0
  232. package/dist/tools/python-constants/constant-match.d.ts.map +1 -0
  233. package/dist/tools/python-constants/constant-match.js +24 -0
  234. package/dist/tools/python-constants/constant-match.js.map +1 -0
  235. package/dist/tools/python-constants/file-context.d.ts +5 -0
  236. package/dist/tools/python-constants/file-context.d.ts.map +1 -0
  237. package/dist/tools/python-constants/file-context.js +91 -0
  238. package/dist/tools/python-constants/file-context.js.map +1 -0
  239. package/dist/tools/python-constants/function-defaults.d.ts +5 -0
  240. package/dist/tools/python-constants/function-defaults.d.ts.map +1 -0
  241. package/dist/tools/python-constants/function-defaults.js +98 -0
  242. package/dist/tools/python-constants/function-defaults.js.map +1 -0
  243. package/dist/tools/python-constants/model.d.ts +78 -0
  244. package/dist/tools/python-constants/model.d.ts.map +1 -0
  245. package/dist/tools/python-constants/model.js +2 -0
  246. package/dist/tools/python-constants/model.js.map +1 -0
  247. package/dist/tools/python-constants/syntax.d.ts +22 -0
  248. package/dist/tools/python-constants/syntax.d.ts.map +1 -0
  249. package/dist/tools/python-constants/syntax.js +93 -0
  250. package/dist/tools/python-constants/syntax.js.map +1 -0
  251. package/dist/tools/python-constants/value-resolver.d.ts +6 -0
  252. package/dist/tools/python-constants/value-resolver.d.ts.map +1 -0
  253. package/dist/tools/python-constants/value-resolver.js +320 -0
  254. package/dist/tools/python-constants/value-resolver.js.map +1 -0
  255. package/dist/tools/python-constants-tools.d.ts +3 -45
  256. package/dist/tools/python-constants-tools.d.ts.map +1 -1
  257. package/dist/tools/python-constants-tools.js +2 -505
  258. package/dist/tools/python-constants-tools.js.map +1 -1
  259. package/dist/tools/route-tools/django.d.ts +8 -0
  260. package/dist/tools/route-tools/django.d.ts.map +1 -0
  261. package/dist/tools/route-tools/django.js +52 -0
  262. package/dist/tools/route-tools/django.js.map +1 -0
  263. package/dist/tools/route-tools/express.d.ts +5 -0
  264. package/dist/tools/route-tools/express.d.ts.map +1 -0
  265. package/dist/tools/route-tools/express.js +33 -0
  266. package/dist/tools/route-tools/express.js.map +1 -0
  267. package/dist/tools/route-tools/file-sources.d.ts +7 -0
  268. package/dist/tools/route-tools/file-sources.d.ts.map +1 -0
  269. package/dist/tools/route-tools/file-sources.js +15 -0
  270. package/dist/tools/route-tools/file-sources.js.map +1 -0
  271. package/dist/tools/route-tools/handler-discovery.d.ts +4 -0
  272. package/dist/tools/route-tools/handler-discovery.d.ts.map +1 -0
  273. package/dist/tools/route-tools/handler-discovery.js +38 -0
  274. package/dist/tools/route-tools/handler-discovery.js.map +1 -0
  275. package/dist/tools/route-tools/hono.d.ts +5 -0
  276. package/dist/tools/route-tools/hono.d.ts.map +1 -0
  277. package/dist/tools/route-tools/hono.js +61 -0
  278. package/dist/tools/route-tools/hono.js.map +1 -0
  279. package/dist/tools/route-tools/ktor.d.ts +5 -0
  280. package/dist/tools/route-tools/ktor.d.ts.map +1 -0
  281. package/dist/tools/route-tools/ktor.js +76 -0
  282. package/dist/tools/route-tools/ktor.js.map +1 -0
  283. package/dist/tools/route-tools/laravel.d.ts +5 -0
  284. package/dist/tools/route-tools/laravel.d.ts.map +1 -0
  285. package/dist/tools/route-tools/laravel.js +45 -0
  286. package/dist/tools/route-tools/laravel.js.map +1 -0
  287. package/dist/tools/route-tools/mermaid-call-chain.d.ts +3 -0
  288. package/dist/tools/route-tools/mermaid-call-chain.d.ts.map +1 -0
  289. package/dist/tools/route-tools/mermaid-call-chain.js +50 -0
  290. package/dist/tools/route-tools/mermaid-call-chain.js.map +1 -0
  291. package/dist/tools/route-tools/nest.d.ts +5 -0
  292. package/dist/tools/route-tools/nest.d.ts.map +1 -0
  293. package/dist/tools/route-tools/nest.js +75 -0
  294. package/dist/tools/route-tools/nest.js.map +1 -0
  295. package/dist/tools/route-tools/next-trace.d.ts +4 -0
  296. package/dist/tools/route-tools/next-trace.d.ts.map +1 -0
  297. package/dist/tools/route-tools/next-trace.js +48 -0
  298. package/dist/tools/route-tools/next-trace.js.map +1 -0
  299. package/dist/tools/route-tools/next.d.ts +7 -0
  300. package/dist/tools/route-tools/next.d.ts.map +1 -0
  301. package/dist/tools/route-tools/next.js +77 -0
  302. package/dist/tools/route-tools/next.js.map +1 -0
  303. package/dist/tools/route-tools/python-decorators.d.ts +7 -0
  304. package/dist/tools/route-tools/python-decorators.d.ts.map +1 -0
  305. package/dist/tools/route-tools/python-decorators.js +53 -0
  306. package/dist/tools/route-tools/python-decorators.js.map +1 -0
  307. package/dist/tools/route-tools/route-mermaid.d.ts +4 -0
  308. package/dist/tools/route-tools/route-mermaid.d.ts.map +1 -0
  309. package/dist/tools/route-tools/route-mermaid.js +53 -0
  310. package/dist/tools/route-tools/route-mermaid.js.map +1 -0
  311. package/dist/tools/route-tools/spring-kotlin.d.ts +5 -0
  312. package/dist/tools/route-tools/spring-kotlin.d.ts.map +1 -0
  313. package/dist/tools/route-tools/spring-kotlin.js +52 -0
  314. package/dist/tools/route-tools/spring-kotlin.js.map +1 -0
  315. package/dist/tools/route-tools/trace-analysis.d.ts +4 -0
  316. package/dist/tools/route-tools/trace-analysis.d.ts.map +1 -0
  317. package/dist/tools/route-tools/trace-analysis.js +37 -0
  318. package/dist/tools/route-tools/trace-analysis.js.map +1 -0
  319. package/dist/tools/route-tools/trace-route.d.ts +6 -0
  320. package/dist/tools/route-tools/trace-route.d.ts.map +1 -0
  321. package/dist/tools/route-tools/trace-route.js +53 -0
  322. package/dist/tools/route-tools/trace-route.js.map +1 -0
  323. package/dist/tools/route-tools/types.d.ts +35 -0
  324. package/dist/tools/route-tools/types.d.ts.map +1 -0
  325. package/dist/tools/route-tools/types.js +2 -0
  326. package/dist/tools/route-tools/types.js.map +1 -0
  327. package/dist/tools/route-tools/yii2.d.ts +5 -0
  328. package/dist/tools/route-tools/yii2.d.ts.map +1 -0
  329. package/dist/tools/route-tools/yii2.js +73 -0
  330. package/dist/tools/route-tools/yii2.js.map +1 -0
  331. package/dist/tools/route-tools.d.ts +7 -49
  332. package/dist/tools/route-tools.d.ts.map +1 -1
  333. package/dist/tools/route-tools.js +5 -978
  334. package/dist/tools/route-tools.js.map +1 -1
  335. package/dist/tools/symbol-analysis-tools.d.ts +81 -0
  336. package/dist/tools/symbol-analysis-tools.d.ts.map +1 -0
  337. package/dist/tools/symbol-analysis-tools.js +327 -0
  338. package/dist/tools/symbol-analysis-tools.js.map +1 -0
  339. package/dist/tools/symbol-context-tools.d.ts +68 -0
  340. package/dist/tools/symbol-context-tools.d.ts.map +1 -0
  341. package/dist/tools/symbol-context-tools.js +232 -0
  342. package/dist/tools/symbol-context-tools.js.map +1 -0
  343. package/dist/tools/symbol-lookup-tools.d.ts +77 -0
  344. package/dist/tools/symbol-lookup-tools.d.ts.map +1 -0
  345. package/dist/tools/symbol-lookup-tools.js +305 -0
  346. package/dist/tools/symbol-lookup-tools.js.map +1 -0
  347. package/dist/tools/symbol-reference-tools.d.ts +38 -0
  348. package/dist/tools/symbol-reference-tools.d.ts.map +1 -0
  349. package/dist/tools/symbol-reference-tools.js +253 -0
  350. package/dist/tools/symbol-reference-tools.js.map +1 -0
  351. package/dist/tools/symbol-tool-internals.d.ts +9 -0
  352. package/dist/tools/symbol-tool-internals.d.ts.map +1 -0
  353. package/dist/tools/symbol-tool-internals.js +47 -0
  354. package/dist/tools/symbol-tool-internals.js.map +1 -0
  355. package/dist/tools/symbol-tools.d.ts +11 -270
  356. package/dist/tools/symbol-tools.d.ts.map +1 -1
  357. package/dist/tools/symbol-tools.js +7 -1131
  358. package/dist/tools/symbol-tools.js.map +1 -1
  359. package/dist/tools/taint/python-context.d.ts +10 -0
  360. package/dist/tools/taint/python-context.d.ts.map +1 -0
  361. package/dist/tools/taint/python-context.js +150 -0
  362. package/dist/tools/taint/python-context.js.map +1 -0
  363. package/dist/tools/taint/taint-analyzer.d.ts +2 -0
  364. package/dist/tools/taint/taint-analyzer.d.ts.map +1 -0
  365. package/dist/tools/taint/taint-analyzer.js +2 -0
  366. package/dist/tools/taint/taint-analyzer.js.map +1 -0
  367. package/dist/tools/taint/taint-expression.d.ts +18 -0
  368. package/dist/tools/taint/taint-expression.d.ts.map +1 -0
  369. package/dist/tools/taint/taint-expression.js +265 -0
  370. package/dist/tools/taint/taint-expression.js.map +1 -0
  371. package/dist/tools/taint/taint-flow.d.ts +10 -0
  372. package/dist/tools/taint/taint-flow.d.ts.map +1 -0
  373. package/dist/tools/taint/taint-flow.js +178 -0
  374. package/dist/tools/taint/taint-flow.js.map +1 -0
  375. package/dist/tools/taint/taint-model.d.ts +113 -0
  376. package/dist/tools/taint/taint-model.d.ts.map +1 -0
  377. package/dist/tools/taint/taint-model.js +277 -0
  378. package/dist/tools/taint/taint-model.js.map +1 -0
  379. package/dist/tools/taint-tools.d.ts +2 -34
  380. package/dist/tools/taint-tools.d.ts.map +1 -1
  381. package/dist/tools/taint-tools.js +2 -852
  382. package/dist/tools/taint-tools.js.map +1 -1
  383. package/dist/tools/typescript-constants/file-context.d.ts +7 -0
  384. package/dist/tools/typescript-constants/file-context.d.ts.map +1 -0
  385. package/dist/tools/typescript-constants/file-context.js +219 -0
  386. package/dist/tools/typescript-constants/file-context.js.map +1 -0
  387. package/dist/tools/typescript-constants/symbol-resolver.d.ts +7 -0
  388. package/dist/tools/typescript-constants/symbol-resolver.d.ts.map +1 -0
  389. package/dist/tools/typescript-constants/symbol-resolver.js +165 -0
  390. package/dist/tools/typescript-constants/symbol-resolver.js.map +1 -0
  391. package/dist/tools/typescript-constants/types.d.ts +44 -0
  392. package/dist/tools/typescript-constants/types.d.ts.map +1 -0
  393. package/dist/tools/typescript-constants/types.js +2 -0
  394. package/dist/tools/typescript-constants/types.js.map +1 -0
  395. package/dist/tools/typescript-constants/value-evaluator.d.ts +8 -0
  396. package/dist/tools/typescript-constants/value-evaluator.d.ts.map +1 -0
  397. package/dist/tools/typescript-constants/value-evaluator.js +404 -0
  398. package/dist/tools/typescript-constants/value-evaluator.js.map +1 -0
  399. package/dist/tools/typescript-constants-tools.d.ts.map +1 -1
  400. package/dist/tools/typescript-constants-tools.js +19 -709
  401. package/dist/tools/typescript-constants-tools.js.map +1 -1
  402. package/dist/utils/import-graph/collect.d.ts +5 -0
  403. package/dist/utils/import-graph/collect.d.ts.map +1 -0
  404. package/dist/utils/import-graph/collect.js +47 -0
  405. package/dist/utils/import-graph/collect.js.map +1 -0
  406. package/dist/utils/import-graph/edge-accumulator.d.ts +7 -0
  407. package/dist/utils/import-graph/edge-accumulator.d.ts.map +1 -0
  408. package/dist/utils/import-graph/edge-accumulator.js +47 -0
  409. package/dist/utils/import-graph/edge-accumulator.js.map +1 -0
  410. package/dist/utils/import-graph/language-imports.d.ts +6 -0
  411. package/dist/utils/import-graph/language-imports.d.ts.map +1 -0
  412. package/dist/utils/import-graph/language-imports.js +84 -0
  413. package/dist/utils/import-graph/language-imports.js.map +1 -0
  414. package/dist/utils/import-graph/metrics.d.ts +6 -0
  415. package/dist/utils/import-graph/metrics.d.ts.map +1 -0
  416. package/dist/utils/import-graph/metrics.js +51 -0
  417. package/dist/utils/import-graph/metrics.js.map +1 -0
  418. package/dist/utils/import-graph/path-map.d.ts +7 -0
  419. package/dist/utils/import-graph/path-map.d.ts.map +1 -0
  420. package/dist/utils/import-graph/path-map.js +56 -0
  421. package/dist/utils/import-graph/path-map.js.map +1 -0
  422. package/dist/utils/import-graph/python-php-edge-collectors.d.ts +5 -0
  423. package/dist/utils/import-graph/python-php-edge-collectors.d.ts.map +1 -0
  424. package/dist/utils/import-graph/python-php-edge-collectors.js +56 -0
  425. package/dist/utils/import-graph/python-php-edge-collectors.js.map +1 -0
  426. package/dist/utils/import-graph/source-edge-collector.d.ts +13 -0
  427. package/dist/utils/import-graph/source-edge-collector.d.ts.map +1 -0
  428. package/dist/utils/import-graph/source-edge-collector.js +42 -0
  429. package/dist/utils/import-graph/source-edge-collector.js.map +1 -0
  430. package/dist/utils/import-graph/source-imports.d.ts +5 -0
  431. package/dist/utils/import-graph/source-imports.d.ts.map +1 -0
  432. package/dist/utils/import-graph/source-imports.js +33 -0
  433. package/dist/utils/import-graph/source-imports.js.map +1 -0
  434. package/dist/utils/import-graph/types.d.ts +15 -0
  435. package/dist/utils/import-graph/types.d.ts.map +1 -0
  436. package/dist/utils/import-graph/types.js +2 -0
  437. package/dist/utils/import-graph/types.js.map +1 -0
  438. package/dist/utils/import-graph/typescript-edge-collector.d.ts +7 -0
  439. package/dist/utils/import-graph/typescript-edge-collector.d.ts.map +1 -0
  440. package/dist/utils/import-graph/typescript-edge-collector.js +58 -0
  441. package/dist/utils/import-graph/typescript-edge-collector.js.map +1 -0
  442. package/dist/utils/import-graph/workspace-alias.d.ts +7 -0
  443. package/dist/utils/import-graph/workspace-alias.d.ts.map +1 -0
  444. package/dist/utils/import-graph/workspace-alias.js +95 -0
  445. package/dist/utils/import-graph/workspace-alias.js.map +1 -0
  446. package/dist/utils/import-graph/workspace-entry.d.ts +3 -0
  447. package/dist/utils/import-graph/workspace-entry.d.ts.map +1 -0
  448. package/dist/utils/import-graph/workspace-entry.js +81 -0
  449. package/dist/utils/import-graph/workspace-entry.js.map +1 -0
  450. package/dist/utils/import-graph.d.ts +10 -94
  451. package/dist/utils/import-graph.d.ts.map +1 -1
  452. package/dist/utils/import-graph.js +6 -702
  453. package/dist/utils/import-graph.js.map +1 -1
  454. package/package.json +1 -1
  455. package/rules/codesift.md +11 -2
  456. package/rules/codesift.mdc +11 -2
  457. package/rules/codex.md +11 -2
  458. package/rules/gemini.md +11 -2
@@ -47,6 +47,18 @@ const FIELD_COUNT = 17;
47
47
  * where it runs and finds nothing.
48
48
  */
49
49
  const GATE_NOT_RUN = new Set(["skipped", "not_run", "blocked", "blocked_infra", "-", ""]);
50
+ /**
51
+ * `N/A` = the skill has no such step, so there is nothing to run. It is NOT a verdict and NOT a
52
+ * skip. Before 2026-08-06 zuvo's append-retro had no N/A in the blind-audit enum at all, so skills
53
+ * without the step were forced to file a verdict-shaped value — 108 of 164 recorded verdicts (66%)
54
+ * came from skills whose SKILL.md never mentions a blind audit. Once zuvo started emitting N/A,
55
+ * gateRan() would have counted it as a real verdict (it is not in GATE_NOT_RUN), turning the fix
56
+ * into a worse metric than the bug. Hence its own set and its own counter.
57
+ */
58
+ const GATE_NOT_APPLICABLE = new Set(["n/a", "na"]);
59
+ function gateNotApplicable(value) {
60
+ return GATE_NOT_APPLICABLE.has(value.trim().toLowerCase());
61
+ }
50
62
  /**
51
63
  * Collapse anything that is not a short, enum-shaped token to `"other"`.
52
64
  *
@@ -68,7 +80,7 @@ function enumish(value) {
68
80
  }
69
81
  function gateRan(value) {
70
82
  const v = value.trim().toLowerCase();
71
- return v.length > 0 && !GATE_NOT_RUN.has(v) && !v.startsWith("blocked");
83
+ return v.length > 0 && !GATE_NOT_RUN.has(v) && !GATE_NOT_APPLICABLE.has(v) && !v.startsWith("blocked");
72
84
  }
73
85
  function median(values) {
74
86
  if (values.length === 0)
@@ -85,20 +97,37 @@ function dayOf(tsField) {
85
97
  const match = tsField.match(/(\d{4}-\d{2}-\d{2})/);
86
98
  return match?.[1] ?? null;
87
99
  }
88
- /**
89
- * Read and aggregate `~/.zuvo/retros.log`.
90
- *
91
- * Returns [] when zuvo is not installed, which is the common case for a codesift user — this must
92
- * never be an error, only an absence.
93
- */
94
100
  export async function aggregateRetros(sinceTs = 0, logPath = join(homedir(), ".zuvo", "retros.log")) {
95
- let raw;
101
+ return (await scanRetros(sinceTs, logPath)).rows;
102
+ }
103
+ export async function scanRetros(sinceTs = 0, logPath = join(homedir(), ".zuvo", "retros.log"), cursor = "timestamp") {
104
+ let file;
96
105
  try {
97
- raw = await readFile(logPath, "utf-8");
106
+ file = await readFile(logPath);
98
107
  }
99
108
  catch {
100
- return []; // no zuvo on this machine
109
+ return { rows: [], maxTs: 0, nextOffset: cursor === "offset" ? sinceTs : 0 };
101
110
  }
111
+ let raw;
112
+ let nextOffset = file.length;
113
+ const filterSinceTs = cursor === "timestamp" ? sinceTs : 0;
114
+ if (cursor === "offset") {
115
+ const start = sinceTs >= 0 && sinceTs <= file.length ? sinceTs : 0;
116
+ const unread = file.subarray(start);
117
+ const finalNewline = unread.lastIndexOf(0x0a);
118
+ if (finalNewline < 0) {
119
+ raw = "";
120
+ nextOffset = start;
121
+ }
122
+ else {
123
+ raw = unread.subarray(0, finalNewline + 1).toString("utf-8");
124
+ nextOffset = start + finalNewline + 1;
125
+ }
126
+ }
127
+ else {
128
+ raw = file.toString("utf-8");
129
+ }
130
+ let maxTs = 0;
102
131
  const buckets = new Map();
103
132
  for (const line of raw.split(/\r?\n/)) {
104
133
  if (!line.startsWith("RETRO:"))
@@ -112,11 +141,15 @@ export async function aggregateRetros(sinceTs = 0, logPath = join(homedir(), ".z
112
141
  const day = dayOf(f[F.TS] ?? "");
113
142
  if (!day)
114
143
  continue;
115
- if (sinceTs > 0) {
116
- const at = Date.parse((f[F.TS] ?? "").replace(/^RETRO:\s*/, ""));
117
- if (Number.isFinite(at) && at < sinceTs)
118
- continue;
119
- }
144
+ const at = Date.parse((f[F.TS] ?? "").replace(/^RETRO:\s*/, ""));
145
+ // Track the newest timestamp across EVERY well-formed line, including ones this call filters
146
+ // out. The watermark must clear lines already sent, otherwise each flush rescans them.
147
+ if (Number.isFinite(at) && at > maxTs)
148
+ maxTs = at;
149
+ // `<=`, not `<`: the watermark stores the newest ts already sent, so a line sitting exactly on
150
+ // it was in the previous payload and would otherwise be re-sent on every flush forever.
151
+ if (filterSinceTs > 0 && Number.isFinite(at) && at <= filterSinceTs)
152
+ continue;
120
153
  // Group on the NORMALISED values, not the raw ones: two lines whose prose differs both store
121
154
  // `"other"`, so keying on the raw text would emit two aggregate rows with identical content.
122
155
  const dims = {
@@ -136,6 +169,8 @@ export async function aggregateRetros(sinceTs = 0, logPath = join(homedir(), ".z
136
169
  day,
137
170
  ...dims,
138
171
  blind_audit_ran: 0,
172
+ blind_audit_na: 0,
173
+ adversarial_na: 0,
139
174
  adversarial_ran: 0,
140
175
  turns: [],
141
176
  toolCalls: [],
@@ -154,10 +189,14 @@ export async function aggregateRetros(sinceTs = 0, logPath = join(homedir(), ".z
154
189
  b.filesModified.push(num(F.FILES_MODIFIED));
155
190
  if (gateRan(f[F.BLIND_AUDIT] ?? ""))
156
191
  b.blind_audit_ran++;
192
+ if (gateNotApplicable(f[F.BLIND_AUDIT] ?? ""))
193
+ b.blind_audit_na++;
194
+ if (gateNotApplicable(f[F.ADVERSARIAL] ?? ""))
195
+ b.adversarial_na++;
157
196
  if (gateRan(f[F.ADVERSARIAL] ?? ""))
158
197
  b.adversarial_ran++;
159
198
  }
160
- return [...buckets.values()]
199
+ const rows = [...buckets.values()]
161
200
  .map((b) => ({
162
201
  day: b.day,
163
202
  skill: b.skill,
@@ -173,7 +212,10 @@ export async function aggregateRetros(sinceTs = 0, logPath = join(homedir(), ".z
173
212
  median_files_modified: median(b.filesModified),
174
213
  blind_audit_ran: b.blind_audit_ran,
175
214
  adversarial_ran: b.adversarial_ran,
215
+ blind_audit_na: b.blind_audit_na,
216
+ adversarial_na: b.adversarial_na,
176
217
  }))
177
218
  .sort((a, b) => (a.day === b.day ? a.skill.localeCompare(b.skill) : a.day.localeCompare(b.day)));
219
+ return { rows, maxTs, nextOffset };
178
220
  }
179
221
  //# sourceMappingURL=retro-aggregator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"retro-aggregator.js","sourceRoot":"","sources":["../../../src/storage/telemetry/retro-aggregator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retro-aggregator.js","sourceRoot":"","sources":["../../../src/storage/telemetry/retro-aggregator.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,22 @@ export interface Level1Retro {
37
37
  median_files_modified: number;
38
38
  blind_audit_ran: number;
39
39
  adversarial_ran: number;
40
+ /**
41
+ * Gate outcomes that are NOT a verdict and NOT a skip: the skill has no such
42
+ * step at all.
43
+ *
44
+ * Without these the correction that produced them is unreadable at the far end.
45
+ * `gateRan` stopped counting `N/A` as a verdict, which is right, but if only the
46
+ * `_ran` counters ship then a population of skills that never had a blind audit
47
+ * looks identical to one that has a blind audit and skips it — the metric falls
48
+ * and the reason is unrecoverable. 108 of 164 recorded verdicts came from skills
49
+ * with no such step, so this is most of the signal, not an edge case.
50
+ *
51
+ * It reveals strictly less than `_ran` does: that a SKILL has no gate is a
52
+ * property of the skill, and which skill ran is already sent.
53
+ */
54
+ blind_audit_na: number;
55
+ adversarial_na: number;
40
56
  }
41
57
  export interface Level1ToolMetric {
42
58
  tool: string;
@@ -1 +1 @@
1
- {"version":3,"file":"sanitizer.d.ts","sourceRoot":"","sources":["../../../src/storage/telemetry/sanitizer.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,UAAU,CAAC;IAChB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,oFAAoF;IACpF,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;CACxB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AA2DD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,UAAU,CAAC;IAChB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;CACb,GAAG,aAAa,CAehB;AAYD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,SAAM,GAAG,IAAI,CAavE"}
1
+ {"version":3,"file":"sanitizer.d.ts","sourceRoot":"","sources":["../../../src/storage/telemetry/sanitizer.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,UAAU,CAAC;IAChB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,oFAAoF;IACpF,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;CACxB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB;;;;;;;;;;;;;OAaG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AA6DD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,UAAU,CAAC;IAChB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;CACb,GAAG,aAAa,CAehB;AAYD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,SAAM,GAAG,IAAI,CAavE"}
@@ -40,6 +40,8 @@ function pickRetro(r) {
40
40
  median_files_modified: r.median_files_modified,
41
41
  blind_audit_ran: r.blind_audit_ran,
42
42
  adversarial_ran: r.adversarial_ran,
43
+ blind_audit_na: r.blind_audit_na,
44
+ adversarial_na: r.adversarial_na,
43
45
  };
44
46
  }
45
47
  /** Explicitly pick ONLY allowlisted env fields (no hostname/paths). */
@@ -1 +1 @@
1
- {"version":3,"file":"sanitizer.js","sourceRoot":"","sources":["../../../src/storage/telemetry/sanitizer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sanitizer.js","sourceRoot":"","sources":["../../../src/storage/telemetry/sanitizer.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,11 @@
3
3
  * payload, POSTs once (with a single retry), and advances the watermark ONLY on
4
4
  * success. Best-effort; never throws.
5
5
  */
6
- export declare function flushTelemetry(now: number): Promise<"off" | "empty" | "sent" | "failed">;
6
+ type FlushResult = "off" | "empty" | "sent" | "failed";
7
+ export declare function flushTelemetry(now: number): Promise<FlushResult>;
7
8
  /** Start the background flush timer. Called once at server startup. No-op when
8
9
  * telemetry is off or no endpoint is configured. */
9
10
  export declare function startTelemetryTimer(): void;
10
11
  export declare function stopTelemetryTimer(): void;
12
+ export {};
11
13
  //# sourceMappingURL=uploader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"uploader.d.ts","sourceRoot":"","sources":["../../../src/storage/telemetry/uploader.ts"],"names":[],"mappings":"AAgFA;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC,CA0C9F;AAID;qDACqD;AACrD,wBAAgB,mBAAmB,IAAI,IAAI,CAO1C;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
1
+ {"version":3,"file":"uploader.d.ts","sourceRoot":"","sources":["../../../src/storage/telemetry/uploader.ts"],"names":[],"mappings":"AA+JA;;;;GAIG;AACH,KAAK,WAAW,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAGvD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAQhE;AA2FD;qDACqD;AACrD,wBAAgB,mBAAmB,IAAI,IAAI,CAO1C;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
@@ -4,7 +4,8 @@
4
4
  // configured (CODESIFT_TELEMETRY_URL); with no endpoint nothing leaves the
5
5
  // machine, which is the safe default until the public collector is exposed
6
6
  // (staged rollout: notice first, push later).
7
- import { readFileSync, writeFileSync, mkdirSync } from "node:fs";
7
+ import { closeSync, fstatSync, mkdirSync, openSync, readFileSync, readSync, renameSync, unlinkSync, writeFileSync, } from "node:fs";
8
+ import { createHash } from "node:crypto";
8
9
  import { gzipSync } from "node:zlib";
9
10
  import { join } from "node:path";
10
11
  import { homedir } from "node:os";
@@ -13,7 +14,7 @@ import { readLocalUsageEntries, aggregateToolMetrics, aggregateHintFunnel, aggre
13
14
  import { buildEnvProfile } from "./env-profile.js";
14
15
  import { getAnonId } from "./anon-id.js";
15
16
  import { buildLevel1Payload, assertSanitized } from "./sanitizer.js";
16
- import { aggregateRetros } from "./retro-aggregator.js";
17
+ import { scanRetros } from "./retro-aggregator.js";
17
18
  const FLUSH_TIMEOUT_MS = 2000; // hard cap per spec §3
18
19
  const INITIAL_FLUSH_DELAY_MS = 10_000;
19
20
  const FLUSH_INTERVAL_MS = 24 * 60 * 60 * 1000; // daily
@@ -23,24 +24,107 @@ function dataDir() {
23
24
  function watermarkPath() {
24
25
  return join(dataDir(), "telemetry-watermark");
25
26
  }
26
- function readWatermark() {
27
+ /**
28
+ * Retros get their OWN byte-offset cursor. They are append-only but can be written by processes
29
+ * whose clocks disagree, so a timestamp watermark loses late records with an older or identical
30
+ * timestamp. A byte offset follows append order and does not depend on event time.
31
+ *
32
+ * Absent on upgrade, so it starts at 0 and the first flush backfills the machine's retro history.
33
+ * That is intended: those runs happened and were never reported.
34
+ */
35
+ function retroWatermarkPath() {
36
+ return join(dataDir(), "telemetry-watermark-retros-offset");
37
+ }
38
+ function retroIdentityPath() {
39
+ return join(dataDir(), "telemetry-watermark-retros-identity");
40
+ }
41
+ function retroLogPath() {
42
+ return join(homedir(), ".zuvo", "retros.log");
43
+ }
44
+ /** Identity plus a digest of bytes immediately before an offset; stable across later appends. */
45
+ function retroLogIdentity(offset) {
46
+ let fd = null;
27
47
  try {
28
- const n = Number(readFileSync(watermarkPath(), "utf-8").trim());
48
+ fd = openSync(retroLogPath(), "r");
49
+ const stat = fstatSync(fd);
50
+ if (offset < 0 || offset > stat.size)
51
+ return null;
52
+ const start = Math.max(0, offset - 256);
53
+ const tail = Buffer.alloc(offset - start);
54
+ const bytes = readSync(fd, tail, 0, tail.length, start);
55
+ if (bytes !== tail.length)
56
+ return null;
57
+ const hash = createHash("sha256").update(tail).digest("hex").slice(0, 16);
58
+ return `${stat.dev}:${stat.ino}:${offset}:${hash}`;
59
+ }
60
+ catch {
61
+ return null;
62
+ }
63
+ finally {
64
+ if (fd !== null)
65
+ closeSync(fd);
66
+ }
67
+ }
68
+ function readText(path) {
69
+ try {
70
+ return readFileSync(path, "utf-8").trim();
71
+ }
72
+ catch {
73
+ return null;
74
+ }
75
+ }
76
+ function writeText(path, value) {
77
+ const tmp = `${path}.tmp.${process.pid}.${Date.now()}`;
78
+ try {
79
+ mkdirSync(dataDir(), { recursive: true });
80
+ writeFileSync(tmp, value, { encoding: "utf-8", flag: "wx" });
81
+ renameSync(tmp, path);
82
+ return true;
83
+ }
84
+ catch (err) {
85
+ try {
86
+ unlinkSync(tmp);
87
+ }
88
+ catch { /* no temp file to clean */ }
89
+ console.error(`[codesift] telemetry cursor identity could not be persisted: ${String(err)}`);
90
+ return false;
91
+ }
92
+ }
93
+ function readTs(path) {
94
+ try {
95
+ const n = Number(readFileSync(path, "utf-8").trim());
29
96
  return Number.isFinite(n) ? n : 0;
30
97
  }
31
98
  catch {
32
99
  return 0;
33
100
  }
34
101
  }
35
- function writeWatermark(ts) {
102
+ function writeTs(path, ts) {
103
+ const current = readTs(path);
104
+ if (current >= ts)
105
+ return true;
106
+ const tmp = `${path}.tmp.${process.pid}.${Date.now()}`;
36
107
  try {
37
108
  mkdirSync(dataDir(), { recursive: true });
38
- writeFileSync(watermarkPath(), String(ts), "utf-8");
109
+ writeFileSync(tmp, String(ts), { encoding: "utf-8", flag: "wx" });
110
+ renameSync(tmp, path);
111
+ return true;
39
112
  }
40
- catch {
41
- /* ignore */
113
+ catch (err) {
114
+ try {
115
+ unlinkSync(tmp);
116
+ }
117
+ catch { /* no temp file to clean */ }
118
+ console.error(`[codesift] telemetry watermark could not be persisted: ${String(err)}`);
119
+ return false;
42
120
  }
43
121
  }
122
+ function readWatermark() {
123
+ return readTs(watermarkPath());
124
+ }
125
+ function writeWatermark(ts) {
126
+ return writeTs(watermarkPath(), ts);
127
+ }
44
128
  /** Baked default collector — anonymous ingest needs NO token (the endpoint is
45
129
  * open + validated + rate-limited). Full/fleet sets CODESIFT_TELEMETRY_TOKEN.
46
130
  * Both are env-overridable. */
@@ -75,30 +159,70 @@ async function postGzip(url, token, body) {
75
159
  clearTimeout(timer);
76
160
  }
77
161
  }
78
- /**
79
- * One flush cycle. Reads usage since the watermark, builds the level-appropriate
80
- * payload, POSTs once (with a single retry), and advances the watermark ONLY on
81
- * success. Best-effort; never throws.
82
- */
83
- export async function flushTelemetry(now) {
162
+ let flushInFlight = null;
163
+ export function flushTelemetry(now) {
164
+ if (flushInFlight)
165
+ return flushInFlight;
166
+ const run = flushTelemetryOnce(now);
167
+ const tracked = run.finally(() => {
168
+ if (flushInFlight === tracked)
169
+ flushInFlight = null;
170
+ });
171
+ flushInFlight = tracked;
172
+ return tracked;
173
+ }
174
+ async function flushTelemetryOnce(now) {
84
175
  const level = resolveTelemetryLevel();
85
176
  if (level === "off")
86
177
  return "off";
87
178
  const ep = endpoint();
88
179
  const since = readWatermark();
89
180
  const entries = await readLocalUsageEntries(since);
90
- if (entries.length === 0)
91
- return "empty";
92
181
  const maxTs = entries.reduce((m, e) => (e.ts > m ? e.ts : m), since);
93
182
  let body;
94
183
  let path;
184
+ let retroSinceOffset = 0;
185
+ let retroNextOffset = 0;
186
+ let retroCursorReset = false;
95
187
  if (level === "full") {
96
- // Level 2 (opt-in): raw entries, batched. Full detail — query/paths included.
188
+ // Level 2 (opt-in): raw entries, batched. Full detail — query/paths included. Retros do not
189
+ // ride this level, so no tool usage genuinely means nothing to send.
190
+ if (entries.length === 0)
191
+ return "empty";
97
192
  path = "/ingest/codesift";
98
193
  body = { schema_version: 1, level: "full", anon_id: getAnonId(), entries };
99
194
  }
100
195
  else {
101
196
  // Level 1 (anon): aggregate-only, allowlisted, guarded.
197
+ // Read retros BEFORE deciding there is nothing to send. They are an independent stream: a
198
+ // machine can run zuvo skills with no CodeSift tool calls at all (measured: CodeSift was
199
+ // unavailable / not-indexed / transport-closed in ~40% of zuvo runs), and the old
200
+ // `entries.length === 0 -> empty` return fired first, so those machines reported NOTHING and
201
+ // read as "zuvo is not installed here".
202
+ const savedOffset = readTs(retroWatermarkPath());
203
+ const savedIdentity = retroLogIdentity(savedOffset);
204
+ if (savedIdentity !== null && readText(retroIdentityPath()) === savedIdentity) {
205
+ retroSinceOffset = savedOffset;
206
+ }
207
+ else {
208
+ retroCursorReset = savedOffset > 0;
209
+ retroSinceOffset = 0;
210
+ }
211
+ let scanIdentity = retroLogIdentity(retroSinceOffset);
212
+ let scan = await scanRetros(retroSinceOffset, retroLogPath(), "offset");
213
+ if (scanIdentity !== retroLogIdentity(retroSinceOffset)) {
214
+ // The path changed between validation and read. Retry from the beginning of the replacement
215
+ // and refuse to upload if it rotates again during the retry.
216
+ retroCursorReset = true;
217
+ retroSinceOffset = 0;
218
+ scanIdentity = retroLogIdentity(0);
219
+ scan = await scanRetros(0, retroLogPath(), "offset");
220
+ if (scanIdentity !== retroLogIdentity(0))
221
+ return "failed";
222
+ }
223
+ retroNextOffset = scan.nextOffset;
224
+ if (entries.length === 0 && scan.rows.length === 0)
225
+ return "empty";
102
226
  path = "/ingest/codesift";
103
227
  const payload = buildLevel1Payload({
104
228
  anonId: getAnonId(),
@@ -109,8 +233,8 @@ export async function flushTelemetry(now) {
109
233
  // Absent when zuvo is not installed. Rides this payload rather than getting its own channel
110
234
  // because this is the channel that reaches anyone: `/ingest/zuvo` is token-gated (it carries
111
235
  // repo names and debt text) and its sender ships over SSH to a tailnet address, so it has
112
- // exactly one reporting install. This one has eleven.
113
- retros: await aggregateRetros(since),
236
+ // exactly one reporting install.
237
+ retros: scan.rows,
114
238
  now,
115
239
  });
116
240
  assertSanitized(payload); // never send an unsanitized L1 payload
@@ -121,8 +245,21 @@ export async function flushTelemetry(now) {
121
245
  ok = await postGzip(ep.url + path, ep.token, body); // single retry
122
246
  if (!ok)
123
247
  return "failed"; // leave watermark — retry next flush
124
- writeWatermark(maxTs);
125
- return "sent";
248
+ let persisted = writeWatermark(maxTs);
249
+ // Advance the retro cursor independently, and only forward. Guarded so a flush that carried
250
+ // no retros (or a level that does not carry them) cannot move it — moving it on an empty scan
251
+ // would re-create the original bug in a new place.
252
+ if (retroNextOffset > retroSinceOffset) {
253
+ const offsetPersisted = retroCursorReset
254
+ ? writeText(retroWatermarkPath(), String(retroNextOffset))
255
+ : writeTs(retroWatermarkPath(), retroNextOffset);
256
+ const nextIdentity = retroLogIdentity(retroNextOffset);
257
+ const identityPersisted = offsetPersisted && nextIdentity !== null
258
+ ? writeText(retroIdentityPath(), nextIdentity)
259
+ : false;
260
+ persisted = persisted && offsetPersisted && identityPersisted;
261
+ }
262
+ return persisted ? "sent" : "failed";
126
263
  }
127
264
  let timer = null;
128
265
  /** Start the background flush timer. Called once at server startup. No-op when
@@ -1 +1 @@
1
- {"version":3,"file":"uploader.js","sourceRoot":"","sources":["../../../src/storage/telemetry/uploader.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,8EAA8E;AAC9E,2EAA2E;AAC3E,2EAA2E;AAC3E,2EAA2E;AAC3E,8CAA8C;AAC9C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC5H,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,gBAAgB,GAAG,IAAI,CAAC,CAAC,uBAAuB;AACtD,MAAM,sBAAsB,GAAG,MAAM,CAAC;AACtC,MAAM,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,QAAQ;AAEvD,SAAS,OAAO;IACd,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AAC1E,CAAC;AACD,SAAS,aAAa;IACpB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,qBAAqB,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAChE,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AACD,SAAS,cAAc,CAAC,EAAU;IAChC,IAAI,CAAC;QACH,SAAS,CAAC,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,aAAa,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;AACH,CAAC;AAED;;gCAEgC;AAChC,MAAM,qBAAqB,GAAG,4BAA4B,CAAC;AAE3D,SAAS,QAAQ;IACf,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,qBAAqB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAChG,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,IAAI,EAAE,CAAC;IAC5D,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,GAAW,EAAE,KAAa,EAAE,IAAa;IAC/D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,gBAAgB,CAAC,CAAC;IACrE,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,kBAAkB,EAAE,MAAM;gBAC1B,WAAW,EAAE,KAAK;gBAClB,oBAAoB,EAAE,cAAc;aACrC;YACD,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,EAAE,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC,CAAC,0CAA0C;IAC1D,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW;IAC9C,MAAM,KAAK,GAAG,qBAAqB,EAAE,CAAC;IACtC,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAElC,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtB,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACnD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IACzC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAErE,IAAI,IAAa,CAAC;IAClB,IAAI,IAAY,CAAC;IACjB,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,8EAA8E;QAC9E,IAAI,GAAG,kBAAkB,CAAC;QAC1B,IAAI,GAAG,EAAE,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC;IAC7E,CAAC;SAAM,CAAC;QACN,wDAAwD;QACxD,IAAI,GAAG,kBAAkB,CAAC;QAC1B,MAAM,OAAO,GAAG,kBAAkB,CAAC;YACjC,MAAM,EAAE,SAAS,EAAE;YACnB,GAAG,EAAE,eAAe,EAAE;YACtB,KAAK,EAAE,oBAAoB,CAAC,OAAO,CAAC;YACpC,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC;YACnC,QAAQ,EAAE,uBAAuB,CAAC,OAAO,CAAC;YAC1C,4FAA4F;YAC5F,6FAA6F;YAC7F,0FAA0F;YAC1F,sDAAsD;YACtD,MAAM,EAAE,MAAM,eAAe,CAAC,KAAK,CAAC;YACpC,GAAG;SACJ,CAAC,CAAC;QACH,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,uCAAuC;QACjE,IAAI,GAAG,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,EAAE;QAAE,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe;IAC5E,IAAI,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC,CAAC,qCAAqC;IAE/D,cAAc,CAAC,KAAK,CAAC,CAAC;IACtB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,IAAI,KAAK,GAA0B,IAAI,CAAC;AAExC;qDACqD;AACrD,MAAM,UAAU,mBAAmB;IACjC,IAAI,KAAK;QAAE,OAAO;IAClB,IAAI,qBAAqB,EAAE,KAAK,KAAK;QAAE,OAAO;IAC9C,MAAM,IAAI,GAAG,GAAG,EAAE,GAAG,KAAK,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,UAAU,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;IACjD,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IAC7C,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,IAAI,KAAK,EAAE,CAAC;QAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAAC,KAAK,GAAG,IAAI,CAAC;IAAC,CAAC;AACpD,CAAC"}
1
+ {"version":3,"file":"uploader.js","sourceRoot":"","sources":["../../../src/storage/telemetry/uploader.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,14 @@
1
- /**
2
- * Machine identity stamped on every entry so logs merged across machines
3
- * (laptop + VPS, see usage-remote/) stay attributable.
4
- *
5
- * `os.hostname()` alone is NOT stable: on macOS it follows DHCP/network state
6
- * and returns a different string over the life of one machine — a single Mac
7
- * produced four identities in `usage.jsonl` ("greg-m5", the .local name, "Mac",
8
- * and a bare IP), splitting its own stats four ways. An explicit
9
- * CODESIFT_HOST_TAG still wins, but when it is absent (a GUI app launched
10
- * before `launchctl setenv` never sees it) we fall back to a machine-local id
11
- * persisted once under the data dir, so the identity survives renames.
12
- */
1
+ export declare function machineId(): string;
2
+ /** Test-only — drop the memoised value. */
3
+ export declare function _resetMachineIdForTests(): void;
13
4
  export declare function resolveHostTag(): string;
14
5
  export interface UsageEntry {
15
6
  ts: number;
7
+ /**
8
+ * Stable machine identity — see {@link machineId}. Present so a line is attributable to a computer
9
+ * even when `host` is wrong, which it demonstrably can be.
10
+ */
11
+ machine?: string;
16
12
  tool: string;
17
13
  repo: string;
18
14
  args_summary: Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"usage-tracker.d.ts","sourceRoot":"","sources":["../../src/storage/usage-tracker.ts"],"names":[],"mappings":"AAYA;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAQvC;AA8CD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB;;yEAEqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;iEAE6D;IAC7D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,4EAA4E;IAC5E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;2DACuD;IACvD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;iEAC6D;IAC7D,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB;oEACgE;IAChE,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAMD,wBAAgB,YAAY,IAAI,MAAM,CAGrC;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C;AAED,2DAA2D;AAC3D,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAMD;uFACuF;AACvF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAC,CAqB5F,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyCzB;AAaD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CA+BzD;AAQD,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE/C;AAID;;;GAGG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBjE;AAYD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAEhE;AAuBD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE;IACN,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,GACA,IAAI,CA+BN;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC"}
1
+ {"version":3,"file":"usage-tracker.d.ts","sourceRoot":"","sources":["../../src/storage/usage-tracker.ts"],"names":[],"mappings":"AA4CA,wBAAgB,SAAS,IAAI,MAAM,CAmClC;AAED,2CAA2C;AAC3C,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAED,wBAAgB,cAAc,IAAI,MAAM,CAQvC;AAqDD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB;;yEAEqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;iEAE6D;IAC7D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,4EAA4E;IAC5E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;2DACuD;IACvD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;iEAC6D;IAC7D,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB;oEACgE;IAChE,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAMD,wBAAgB,YAAY,IAAI,MAAM,CAGrC;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C;AAED,2DAA2D;AAC3D,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAMD;uFACuF;AACvF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAC,CAqB5F,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyCzB;AAaD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CA+BzD;AAQD,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE/C;AAID;;;GAGG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBjE;AAYD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAEhE;AAuBD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE;IACN,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,GACA,IAAI,CAgCN;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC"}