codesift-mcp 0.10.1 → 0.11.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 (388) hide show
  1. package/dist/cache/hono-cache.d.ts.map +1 -1
  2. package/dist/cli/commands.d.ts.map +1 -1
  3. package/dist/cli/commands.js +104 -0
  4. package/dist/cli/commands.js.map +1 -1
  5. package/dist/cli/embed-child-marker.d.ts +10 -0
  6. package/dist/cli/embed-child-marker.d.ts.map +1 -0
  7. package/dist/cli/embed-child-marker.js +10 -0
  8. package/dist/cli/embed-child-marker.js.map +1 -0
  9. package/dist/cli/embed-child.d.ts +2 -0
  10. package/dist/cli/embed-child.d.ts.map +1 -0
  11. package/dist/cli/embed-child.js +52 -0
  12. package/dist/cli/embed-child.js.map +1 -0
  13. package/dist/cli/git-hooks-installer.js.map +1 -1
  14. package/dist/cli/help.d.ts +1 -1
  15. package/dist/cli/help.d.ts.map +1 -1
  16. package/dist/cli/help.js +22 -0
  17. package/dist/cli/help.js.map +1 -1
  18. package/dist/cli/hooks/pre-tool-use.d.ts.map +1 -1
  19. package/dist/cli/hooks/pre-tool-use.js +197 -10
  20. package/dist/cli/hooks/pre-tool-use.js.map +1 -1
  21. package/dist/cli/hooks/shared.d.ts +17 -0
  22. package/dist/cli/hooks/shared.d.ts.map +1 -1
  23. package/dist/cli/hooks/shared.js +51 -0
  24. package/dist/cli/hooks/shared.js.map +1 -1
  25. package/dist/cli/service.d.ts +133 -0
  26. package/dist/cli/service.d.ts.map +1 -0
  27. package/dist/cli/service.js +317 -0
  28. package/dist/cli/service.js.map +1 -0
  29. package/dist/cli/setup/fs.js.map +1 -1
  30. package/dist/cli/setup/mcp.d.ts.map +1 -1
  31. package/dist/cli/setup/mcp.js +5 -2
  32. package/dist/cli/setup/mcp.js.map +1 -1
  33. package/dist/cli/setup.d.ts.map +1 -1
  34. package/dist/cli/telemetry-commands.js.map +1 -1
  35. package/dist/cli.js +29 -4
  36. package/dist/cli.js.map +1 -1
  37. package/dist/config.d.ts +2 -0
  38. package/dist/config.d.ts.map +1 -1
  39. package/dist/config.js +5 -0
  40. package/dist/config.js.map +1 -1
  41. package/dist/formatter-dispatch.d.ts.map +1 -1
  42. package/dist/instructions.d.ts +1 -1
  43. package/dist/instructions.d.ts.map +1 -1
  44. package/dist/instructions.js +1 -0
  45. package/dist/instructions.js.map +1 -1
  46. package/dist/lsp/lsp-client.d.ts.map +1 -1
  47. package/dist/lsp/lsp-client.js.map +1 -1
  48. package/dist/lsp/lsp-manager.d.ts.map +1 -1
  49. package/dist/lsp/lsp-tools.d.ts.map +1 -1
  50. package/dist/lsp/lsp-tools.js +21 -1
  51. package/dist/lsp/lsp-tools.js.map +1 -1
  52. package/dist/parser/astro-template/state.d.ts.map +1 -1
  53. package/dist/parser/extractors/_shared.d.ts +4 -4
  54. package/dist/parser/extractors/_shared.d.ts.map +1 -1
  55. package/dist/parser/extractors/_shared.js.map +1 -1
  56. package/dist/parser/extractors/conversation.js.map +1 -1
  57. package/dist/parser/extractors/go.d.ts +2 -2
  58. package/dist/parser/extractors/go.d.ts.map +1 -1
  59. package/dist/parser/extractors/go.js.map +1 -1
  60. package/dist/parser/extractors/gradle-kts.d.ts +2 -2
  61. package/dist/parser/extractors/gradle-kts.d.ts.map +1 -1
  62. package/dist/parser/extractors/gradle-kts.js.map +1 -1
  63. package/dist/parser/extractors/hono-app-discovery.d.ts +2 -2
  64. package/dist/parser/extractors/hono-app-discovery.d.ts.map +1 -1
  65. package/dist/parser/extractors/hono-app-discovery.js.map +1 -1
  66. package/dist/parser/extractors/hono-ast-utils.d.ts +4 -4
  67. package/dist/parser/extractors/hono-ast-utils.d.ts.map +1 -1
  68. package/dist/parser/extractors/hono-ast-utils.js.map +1 -1
  69. package/dist/parser/extractors/hono-context-extractor.d.ts +2 -2
  70. package/dist/parser/extractors/hono-context-extractor.d.ts.map +1 -1
  71. package/dist/parser/extractors/hono-context-extractor.js.map +1 -1
  72. package/dist/parser/extractors/hono-inline-analyzer.d.ts +2 -2
  73. package/dist/parser/extractors/hono-inline-analyzer.d.ts.map +1 -1
  74. package/dist/parser/extractors/hono-inline-analyzer.js.map +1 -1
  75. package/dist/parser/extractors/hono-middleware-extractor.d.ts +2 -2
  76. package/dist/parser/extractors/hono-middleware-extractor.d.ts.map +1 -1
  77. package/dist/parser/extractors/hono-middleware-extractor.js.map +1 -1
  78. package/dist/parser/extractors/hono-openapi-extractor.d.ts +2 -2
  79. package/dist/parser/extractors/hono-openapi-extractor.d.ts.map +1 -1
  80. package/dist/parser/extractors/hono-openapi-extractor.js.map +1 -1
  81. package/dist/parser/extractors/hono-route-extractor.d.ts +2 -2
  82. package/dist/parser/extractors/hono-route-extractor.d.ts.map +1 -1
  83. package/dist/parser/extractors/hono-route-extractor.js.map +1 -1
  84. package/dist/parser/extractors/hono-route-utils.d.ts +2 -2
  85. package/dist/parser/extractors/hono-route-utils.d.ts.map +1 -1
  86. package/dist/parser/extractors/hono-route-utils.js.map +1 -1
  87. package/dist/parser/extractors/hono-runtime-extractor.d.ts +2 -2
  88. package/dist/parser/extractors/hono-runtime-extractor.d.ts.map +1 -1
  89. package/dist/parser/extractors/hono-runtime-extractor.js.map +1 -1
  90. package/dist/parser/extractors/hono.d.ts.map +1 -1
  91. package/dist/parser/extractors/hono.js.map +1 -1
  92. package/dist/parser/extractors/javascript.d.ts +2 -2
  93. package/dist/parser/extractors/javascript.d.ts.map +1 -1
  94. package/dist/parser/extractors/javascript.js.map +1 -1
  95. package/dist/parser/extractors/kotlin-ast-helpers.d.ts +9 -9
  96. package/dist/parser/extractors/kotlin-ast-helpers.d.ts.map +1 -1
  97. package/dist/parser/extractors/kotlin-ast-helpers.js.map +1 -1
  98. package/dist/parser/extractors/kotlin-test-symbols.d.ts +4 -4
  99. package/dist/parser/extractors/kotlin-test-symbols.d.ts.map +1 -1
  100. package/dist/parser/extractors/kotlin-test-symbols.js.map +1 -1
  101. package/dist/parser/extractors/kotlin.d.ts +2 -2
  102. package/dist/parser/extractors/kotlin.d.ts.map +1 -1
  103. package/dist/parser/extractors/kotlin.js.map +1 -1
  104. package/dist/parser/extractors/php.d.ts +2 -2
  105. package/dist/parser/extractors/php.d.ts.map +1 -1
  106. package/dist/parser/extractors/php.js.map +1 -1
  107. package/dist/parser/extractors/python.d.ts +2 -2
  108. package/dist/parser/extractors/python.d.ts.map +1 -1
  109. package/dist/parser/extractors/python.js.map +1 -1
  110. package/dist/parser/extractors/rust.d.ts +2 -2
  111. package/dist/parser/extractors/rust.d.ts.map +1 -1
  112. package/dist/parser/extractors/rust.js.map +1 -1
  113. package/dist/parser/extractors/sql-boundaries.js.map +1 -1
  114. package/dist/parser/extractors/typescript-cjs-nodes.d.ts +3 -3
  115. package/dist/parser/extractors/typescript-cjs-nodes.d.ts.map +1 -1
  116. package/dist/parser/extractors/typescript-cjs-nodes.js.map +1 -1
  117. package/dist/parser/extractors/typescript-class-nodes.d.ts +6 -6
  118. package/dist/parser/extractors/typescript-class-nodes.d.ts.map +1 -1
  119. package/dist/parser/extractors/typescript-class-nodes.js.map +1 -1
  120. package/dist/parser/extractors/typescript-declaration-nodes.d.ts +3 -3
  121. package/dist/parser/extractors/typescript-declaration-nodes.d.ts.map +1 -1
  122. package/dist/parser/extractors/typescript-declaration-nodes.js.map +1 -1
  123. package/dist/parser/extractors/typescript-module-nodes.d.ts +4 -4
  124. package/dist/parser/extractors/typescript-module-nodes.d.ts.map +1 -1
  125. package/dist/parser/extractors/typescript-module-nodes.js.map +1 -1
  126. package/dist/parser/extractors/typescript-react.d.ts +6 -6
  127. package/dist/parser/extractors/typescript-react.d.ts.map +1 -1
  128. package/dist/parser/extractors/typescript-react.js.map +1 -1
  129. package/dist/parser/extractors/typescript-shared.d.ts +8 -8
  130. package/dist/parser/extractors/typescript-shared.d.ts.map +1 -1
  131. package/dist/parser/extractors/typescript-shared.js.map +1 -1
  132. package/dist/parser/extractors/typescript-test-nodes.d.ts +2 -2
  133. package/dist/parser/extractors/typescript-test-nodes.d.ts.map +1 -1
  134. package/dist/parser/extractors/typescript-test-nodes.js.map +1 -1
  135. package/dist/parser/extractors/typescript-type-nodes.d.ts +4 -4
  136. package/dist/parser/extractors/typescript-type-nodes.d.ts.map +1 -1
  137. package/dist/parser/extractors/typescript-type-nodes.js.map +1 -1
  138. package/dist/parser/extractors/typescript.d.ts +2 -2
  139. package/dist/parser/extractors/typescript.d.ts.map +1 -1
  140. package/dist/parser/extractors/typescript.js.map +1 -1
  141. package/dist/parser/parse-cache.d.ts +3 -3
  142. package/dist/parser/parse-cache.d.ts.map +1 -1
  143. package/dist/parser/parse-cache.js.map +1 -1
  144. package/dist/parser/parser-manager.d.ts +3 -2
  145. package/dist/parser/parser-manager.d.ts.map +1 -1
  146. package/dist/parser/parser-manager.js +9 -3
  147. package/dist/parser/parser-manager.js.map +1 -1
  148. package/dist/parser/parser-pool.d.ts.map +1 -1
  149. package/dist/parser/parser-pool.js +39 -8
  150. package/dist/parser/parser-pool.js.map +1 -1
  151. package/dist/parser/symbol-extractor.d.ts +2 -2
  152. package/dist/parser/symbol-extractor.d.ts.map +1 -1
  153. package/dist/parser/symbol-extractor.js.map +1 -1
  154. package/dist/register-tool-groups/core/search.d.ts.map +1 -1
  155. package/dist/register-tool-groups/core/search.js +12 -2
  156. package/dist/register-tool-groups/core/search.js.map +1 -1
  157. package/dist/register-tool-groups/core/symbols.d.ts.map +1 -1
  158. package/dist/register-tool-groups/core/symbols.js +45 -6
  159. package/dist/register-tool-groups/core/symbols.js.map +1 -1
  160. package/dist/register-tool-groups/meta.js.map +1 -1
  161. package/dist/register-tool-groups/shared.d.ts.map +1 -1
  162. package/dist/register-tools/discovery.d.ts +18 -0
  163. package/dist/register-tools/discovery.d.ts.map +1 -1
  164. package/dist/register-tools/discovery.js +71 -0
  165. package/dist/register-tools/discovery.js.map +1 -1
  166. package/dist/register-tools.d.ts +31 -1
  167. package/dist/register-tools.d.ts.map +1 -1
  168. package/dist/register-tools.js +76 -6
  169. package/dist/register-tools.js.map +1 -1
  170. package/dist/retrieval/codebase-retrieval.js.map +1 -1
  171. package/dist/retrieval/retrieval-schemas.d.ts +13 -13
  172. package/dist/retrieval/semantic-handlers.d.ts.map +1 -1
  173. package/dist/retrieval/semantic-handlers.js +15 -1
  174. package/dist/retrieval/semantic-handlers.js.map +1 -1
  175. package/dist/search/semantic.d.ts +63 -3
  176. package/dist/search/semantic.d.ts.map +1 -1
  177. package/dist/search/semantic.js +196 -37
  178. package/dist/search/semantic.js.map +1 -1
  179. package/dist/search/static-embedding-provider.d.ts.map +1 -1
  180. package/dist/search/static-embedding-provider.js.map +1 -1
  181. package/dist/search/tool-embedding-storage.d.ts.map +1 -1
  182. package/dist/search/tool-embedding-storage.js +5 -1
  183. package/dist/search/tool-embedding-storage.js.map +1 -1
  184. package/dist/server-helpers/repo-resolution.d.ts +18 -4
  185. package/dist/server-helpers/repo-resolution.d.ts.map +1 -1
  186. package/dist/server-helpers/repo-resolution.js +50 -11
  187. package/dist/server-helpers/repo-resolution.js.map +1 -1
  188. package/dist/server-helpers/response-hints.d.ts.map +1 -1
  189. package/dist/server-helpers/response-hints.js +41 -0
  190. package/dist/server-helpers/response-hints.js.map +1 -1
  191. package/dist/server.d.ts.map +1 -1
  192. package/dist/server.js +15 -3
  193. package/dist/server.js.map +1 -1
  194. package/dist/storage/_shared.d.ts +15 -0
  195. package/dist/storage/_shared.d.ts.map +1 -1
  196. package/dist/storage/_shared.js +39 -2
  197. package/dist/storage/_shared.js.map +1 -1
  198. package/dist/storage/chunk-store.d.ts.map +1 -1
  199. package/dist/storage/chunk-store.js +38 -6
  200. package/dist/storage/chunk-store.js.map +1 -1
  201. package/dist/storage/embedding-store.d.ts +1 -1
  202. package/dist/storage/embedding-store.d.ts.map +1 -1
  203. package/dist/storage/embedding-store.js +54 -4
  204. package/dist/storage/embedding-store.js.map +1 -1
  205. package/dist/storage/index-store.d.ts +2 -0
  206. package/dist/storage/index-store.d.ts.map +1 -1
  207. package/dist/storage/index-store.js +101 -22
  208. package/dist/storage/index-store.js.map +1 -1
  209. package/dist/storage/registry.d.ts.map +1 -1
  210. package/dist/storage/registry.js +48 -19
  211. package/dist/storage/registry.js.map +1 -1
  212. package/dist/storage/telemetry/env-profile.js.map +1 -1
  213. package/dist/storage/usage-tracker.d.ts +13 -0
  214. package/dist/storage/usage-tracker.d.ts.map +1 -1
  215. package/dist/storage/usage-tracker.js +58 -4
  216. package/dist/storage/usage-tracker.js.map +1 -1
  217. package/dist/tools/agent-config-tools.js.map +1 -1
  218. package/dist/tools/ast-query-tools.d.ts.map +1 -1
  219. package/dist/tools/ast-query-tools.js +12 -2
  220. package/dist/tools/ast-query-tools.js.map +1 -1
  221. package/dist/tools/astro-actions/ast.d.ts +7 -7
  222. package/dist/tools/astro-actions/ast.d.ts.map +1 -1
  223. package/dist/tools/astro-actions/ast.js.map +1 -1
  224. package/dist/tools/astro-actions/parser.d.ts.map +1 -1
  225. package/dist/tools/astro-actions/parser.js +3 -0
  226. package/dist/tools/astro-actions/parser.js.map +1 -1
  227. package/dist/tools/astro-actions/types.d.ts.map +1 -1
  228. package/dist/tools/astro-actions/zod-ast.d.ts +3 -3
  229. package/dist/tools/astro-actions/zod-ast.d.ts.map +1 -1
  230. package/dist/tools/astro-actions/zod-ast.js.map +1 -1
  231. package/dist/tools/astro-audit.js.map +1 -1
  232. package/dist/tools/astro-config.d.ts.map +1 -1
  233. package/dist/tools/astro-config.js +3 -0
  234. package/dist/tools/astro-config.js.map +1 -1
  235. package/dist/tools/astro-content-collections/discovery.d.ts +2 -2
  236. package/dist/tools/astro-content-collections/discovery.d.ts.map +1 -1
  237. package/dist/tools/astro-content-collections/discovery.js.map +1 -1
  238. package/dist/tools/astro-content-collections/schema.d.ts +2 -2
  239. package/dist/tools/astro-content-collections/schema.d.ts.map +1 -1
  240. package/dist/tools/astro-content-collections/schema.js.map +1 -1
  241. package/dist/tools/astro-content-collections.d.ts.map +1 -1
  242. package/dist/tools/astro-content-collections.js +5 -1
  243. package/dist/tools/astro-content-collections.js.map +1 -1
  244. package/dist/tools/astro-db-audit.d.ts.map +1 -1
  245. package/dist/tools/astro-db-audit.js +8 -0
  246. package/dist/tools/astro-db-audit.js.map +1 -1
  247. package/dist/tools/astro-db-parser.d.ts.map +1 -1
  248. package/dist/tools/astro-db-parser.js +3 -0
  249. package/dist/tools/astro-db-parser.js.map +1 -1
  250. package/dist/tools/astro-env-validator.d.ts.map +1 -1
  251. package/dist/tools/astro-env-validator.js +4 -0
  252. package/dist/tools/astro-env-validator.js.map +1 -1
  253. package/dist/tools/astro-helpers.d.ts +6 -6
  254. package/dist/tools/astro-helpers.d.ts.map +1 -1
  255. package/dist/tools/astro-helpers.js.map +1 -1
  256. package/dist/tools/astro-middleware.d.ts.map +1 -1
  257. package/dist/tools/astro-middleware.js +4 -0
  258. package/dist/tools/astro-middleware.js.map +1 -1
  259. package/dist/tools/astro-sessions.d.ts.map +1 -1
  260. package/dist/tools/astro-sessions.js +4 -0
  261. package/dist/tools/astro-sessions.js.map +1 -1
  262. package/dist/tools/complexity-tools.d.ts.map +1 -1
  263. package/dist/tools/complexity-tools.js +51 -15
  264. package/dist/tools/complexity-tools.js.map +1 -1
  265. package/dist/tools/context-tools.js.map +1 -1
  266. package/dist/tools/conversation-cache.d.ts.map +1 -1
  267. package/dist/tools/conversation-cache.js +2 -1
  268. package/dist/tools/conversation-cache.js.map +1 -1
  269. package/dist/tools/conversation-index-tools.d.ts +3 -1
  270. package/dist/tools/conversation-index-tools.d.ts.map +1 -1
  271. package/dist/tools/conversation-index-tools.js +24 -8
  272. package/dist/tools/conversation-index-tools.js.map +1 -1
  273. package/dist/tools/cross-repo-outbound-lexer/context.d.ts.map +1 -1
  274. package/dist/tools/cross-repo-outbound-lexer/context.js.map +1 -1
  275. package/dist/tools/dependency-audit-lockfile-tools.js.map +1 -1
  276. package/dist/tools/hono-api-contract.js.map +1 -1
  277. package/dist/tools/hono-visualize.js.map +1 -1
  278. package/dist/tools/index-shared.d.ts.map +1 -1
  279. package/dist/tools/index-tools/folder-indexer.d.ts +8 -0
  280. package/dist/tools/index-tools/folder-indexer.d.ts.map +1 -1
  281. package/dist/tools/index-tools/folder-indexer.js +59 -8
  282. package/dist/tools/index-tools/folder-indexer.js.map +1 -1
  283. package/dist/tools/index-tools/parse.d.ts.map +1 -1
  284. package/dist/tools/index-tools/parse.js +2 -1
  285. package/dist/tools/index-tools/parse.js.map +1 -1
  286. package/dist/tools/index-tools/registry.d.ts.map +1 -1
  287. package/dist/tools/index-tools/registry.js +26 -1
  288. package/dist/tools/index-tools/registry.js.map +1 -1
  289. package/dist/tools/index-tools/snapshots.js.map +1 -1
  290. package/dist/tools/insights-tools.js.map +1 -1
  291. package/dist/tools/journal-generator-helpers.d.ts.map +1 -1
  292. package/dist/tools/journal-generator-helpers.js.map +1 -1
  293. package/dist/tools/journal-git-client.js.map +1 -1
  294. package/dist/tools/journal-llm-client.d.ts.map +1 -1
  295. package/dist/tools/journal-llm-client.js.map +1 -1
  296. package/dist/tools/journal-migrator.d.ts.map +1 -1
  297. package/dist/tools/journal-phase-detector.d.ts.map +1 -1
  298. package/dist/tools/journal-sentinel.d.ts.map +1 -1
  299. package/dist/tools/nest-audit-tools.js.map +1 -1
  300. package/dist/tools/nest-ext-tools.js.map +1 -1
  301. package/dist/tools/nextjs-api-contract-readers.d.ts +5 -5
  302. package/dist/tools/nextjs-api-contract-readers.d.ts.map +1 -1
  303. package/dist/tools/nextjs-api-contract-readers.js.map +1 -1
  304. package/dist/tools/nextjs-boundary-tools.d.ts +2 -2
  305. package/dist/tools/nextjs-boundary-tools.d.ts.map +1 -1
  306. package/dist/tools/nextjs-boundary-tools.js.map +1 -1
  307. package/dist/tools/nextjs-component-readers.d.ts +3 -3
  308. package/dist/tools/nextjs-component-readers.d.ts.map +1 -1
  309. package/dist/tools/nextjs-component-readers.js.map +1 -1
  310. package/dist/tools/nextjs-framework-audit-tools.js.map +1 -1
  311. package/dist/tools/nextjs-metadata-tools.d.ts.map +1 -1
  312. package/dist/tools/nextjs-route-readers.d.ts +2 -2
  313. package/dist/tools/nextjs-route-readers.d.ts.map +1 -1
  314. package/dist/tools/nextjs-route-readers.js.map +1 -1
  315. package/dist/tools/nextjs-security-readers.d.ts +6 -6
  316. package/dist/tools/nextjs-security-readers.d.ts.map +1 -1
  317. package/dist/tools/nextjs-security-readers.js.map +1 -1
  318. package/dist/tools/pg-introspection.js.map +1 -1
  319. package/dist/tools/php-active-record-tools.js.map +1 -1
  320. package/dist/tools/php-view-tools.js.map +1 -1
  321. package/dist/tools/plan-turn/orchestrator.d.ts.map +1 -1
  322. package/dist/tools/plan-turn/orchestrator.js +14 -4
  323. package/dist/tools/plan-turn/orchestrator.js.map +1 -1
  324. package/dist/tools/plan-turn/recommendations.js +2 -2
  325. package/dist/tools/plan-turn/recommendations.js.map +1 -1
  326. package/dist/tools/project-profile-extractors.js.map +1 -1
  327. package/dist/tools/project-tools.d.ts.map +1 -1
  328. package/dist/tools/project-tools.js.map +1 -1
  329. package/dist/tools/pydantic-models.js.map +1 -1
  330. package/dist/tools/python-audit/aggregate.js.map +1 -1
  331. package/dist/tools/python-circular-imports.d.ts.map +1 -1
  332. package/dist/tools/python-circular-imports.js +3 -0
  333. package/dist/tools/python-circular-imports.js.map +1 -1
  334. package/dist/tools/python-constants-tools.d.ts.map +1 -1
  335. package/dist/tools/python-constants-tools.js +14 -0
  336. package/dist/tools/python-constants-tools.js.map +1 -1
  337. package/dist/tools/query-tools.js.map +1 -1
  338. package/dist/tools/review-diff/constants.d.ts.map +1 -1
  339. package/dist/tools/search-tools/text-search.js.map +1 -1
  340. package/dist/tools/symbol-tools.d.ts +25 -0
  341. package/dist/tools/symbol-tools.d.ts.map +1 -1
  342. package/dist/tools/symbol-tools.js +50 -2
  343. package/dist/tools/symbol-tools.js.map +1 -1
  344. package/dist/tools/taint-tools.d.ts.map +1 -1
  345. package/dist/tools/taint-tools.js +4 -0
  346. package/dist/tools/taint-tools.js.map +1 -1
  347. package/dist/tools/typescript-constants-tools.d.ts.map +1 -1
  348. package/dist/tools/typescript-constants-tools.js +14 -0
  349. package/dist/tools/typescript-constants-tools.js.map +1 -1
  350. package/dist/tools/wiki-manifest.js.map +1 -1
  351. package/dist/tools/workspace-tools.d.ts.map +1 -1
  352. package/dist/tools/yii-migrations-tools.js.map +1 -1
  353. package/dist/tools/yii-modules-tools.js.map +1 -1
  354. package/dist/utils/git-head.js.map +1 -1
  355. package/dist/utils/git-validation.d.ts.map +1 -1
  356. package/dist/utils/import-graph.d.ts.map +1 -1
  357. package/dist/utils/import-graph.js +10 -0
  358. package/dist/utils/import-graph.js.map +1 -1
  359. package/dist/utils/language-detect.d.ts.map +1 -1
  360. package/dist/utils/language-detect.js +6 -3
  361. package/dist/utils/language-detect.js.map +1 -1
  362. package/dist/utils/nextjs-ast-readers.d.ts +3 -3
  363. package/dist/utils/nextjs-ast-readers.d.ts.map +1 -1
  364. package/dist/utils/nextjs-ast-readers.js.map +1 -1
  365. package/dist/utils/nextjs-audit-cache.d.ts +3 -3
  366. package/dist/utils/nextjs-audit-cache.d.ts.map +1 -1
  367. package/dist/utils/nextjs-audit-cache.js.map +1 -1
  368. package/dist/utils/nextjs-metadata-readers.d.ts +4 -4
  369. package/dist/utils/nextjs-metadata-readers.d.ts.map +1 -1
  370. package/dist/utils/nextjs-metadata-readers.js.map +1 -1
  371. package/dist/utils/overlay-cache.d.ts.map +1 -1
  372. package/dist/utils/overlay-cache.js.map +1 -1
  373. package/dist/utils/python-imports.d.ts +2 -2
  374. package/dist/utils/python-imports.d.ts.map +1 -1
  375. package/dist/utils/python-imports.js.map +1 -1
  376. package/dist/utils/ts-imports.d.ts +2 -2
  377. package/dist/utils/ts-imports.d.ts.map +1 -1
  378. package/dist/utils/ts-imports.js.map +1 -1
  379. package/dist/utils/walk/limits.d.ts.map +1 -1
  380. package/dist/utils/worktree.d.ts +60 -0
  381. package/dist/utils/worktree.d.ts.map +1 -0
  382. package/dist/utils/worktree.js +170 -0
  383. package/dist/utils/worktree.js.map +1 -0
  384. package/package.json +10 -7
  385. package/rules/codesift.md +5 -1
  386. package/rules/codesift.mdc +5 -1
  387. package/rules/codex.md +5 -1
  388. package/rules/gemini.md +5 -1
@@ -1,6 +1,6 @@
1
1
  import { closeSync, constants, fstatSync, openSync, readSync, statSync } from "node:fs";
2
2
  import { extname } from "node:path";
3
- import { CODE_EXTENSIONS, DEFAULT_MIN_LINES, denyTool, isCurrentRepoIndexed } from "./shared.js";
3
+ import { CODE_EXTENSIONS, DEFAULT_MIN_LINES, denyTool, isCodesiftServerRunning, isCurrentRepoIndexed } from "./shared.js";
4
4
  import { parseHookInput, readRawInput } from "./input.js";
5
5
  import { tryLoadWikiSummary } from "./wiki.js";
6
6
  const DEFAULT_MAX_BYTES = 20_000;
@@ -90,7 +90,7 @@ export async function handlePrecheckRead() {
90
90
  process.exit(0);
91
91
  return;
92
92
  }
93
- if (!isCurrentRepoIndexed()) {
93
+ if (!isCurrentRepoIndexed() || !isCodesiftServerRunning()) {
94
94
  process.exit(0);
95
95
  return;
96
96
  }
@@ -134,16 +134,191 @@ export async function handlePrecheckRead() {
134
134
  process.exit(0);
135
135
  }
136
136
  }
137
+ /** Wrapper commands that precede the real command word (`sudo rg`, `xargs -0 rg`). */
138
+ const COMMAND_PREFIXES = new Set([
139
+ "sudo", "env", "time", "command", "nohup", "nice", "stdbuf", "exec", "builtin", "xargs",
140
+ "if", "elif", "then", "else", "while", "until", "do", "!",
141
+ ]);
142
+ /**
143
+ * Lex a command line into segments, each starting at a command position.
144
+ *
145
+ * A regex over the raw string cannot do this correctly, and the two failure
146
+ * modes both showed up in practice:
147
+ *
148
+ * - Quoted text was treated as shell code, so any command that merely MENTIONS
149
+ * a search tool got intercepted — `echo "use rg instead"`, or a python/node
150
+ * analysis script passed via `-c`/heredoc whose source contains `'rg'`.
151
+ * - Flags were matched across the whole line, so `grep -ic x "$f" | sort -rn`
152
+ * read as a recursive grep because of `sort`'s `-rn`.
153
+ *
154
+ * Quoted regions therefore stay inert for separator splitting but keep their
155
+ * text (so `"rg" "TODO"` is still recognised as ripgrep). UNQUOTED command
156
+ * substitutions (`$(...)`, backticks) split into their own segment so the inner
157
+ * command is still checked. Heredoc bodies are skipped entirely — they are
158
+ * data, not commands.
159
+ *
160
+ * Known limit: a substitution nested INSIDE double quotes (`echo "$(rg x)"`) is
161
+ * consumed as one quoted token, so the inner command is not inspected. That is
162
+ * an accepted under-block: this hook is a nudge toward CodeSift, not a security
163
+ * boundary, and the costly direction is over-blocking — a false deny stops
164
+ * legitimate work, a missed nudge only means the agent used grep.
165
+ */
166
+ function lexShellSegments(cmd) {
167
+ const segments = [];
168
+ let segment = [];
169
+ let text = "";
170
+ let quoted = false;
171
+ let started = false;
172
+ const endToken = () => {
173
+ if (!started)
174
+ return;
175
+ segment.push({ text, quoted });
176
+ text = "";
177
+ quoted = false;
178
+ started = false;
179
+ };
180
+ const endSegment = () => {
181
+ endToken();
182
+ if (segment.length > 0)
183
+ segments.push(segment);
184
+ segment = [];
185
+ };
186
+ let i = 0;
187
+ while (i < cmd.length) {
188
+ const ch = cmd[i];
189
+ // Herestring (`<<<WORD`) is NOT a heredoc and has no body. Without this the
190
+ // scanner skips the first `<`, then reads the remaining `<<WORD` as a
191
+ // heredoc open, finds no closing `WORD` line, and swallows the REST OF THE
192
+ // COMMAND as body — so `cat <<<EOF; rg "TODO" src/` silently under-blocks.
193
+ if (ch === "<" && cmd[i + 1] === "<" && cmd[i + 2] === "<") {
194
+ endToken();
195
+ i += 3;
196
+ continue;
197
+ }
198
+ // Heredoc (`<<EOF`, `<<-EOF`, `<<'EOF'`) — skip the redirect and its body.
199
+ if (ch === "<" && cmd[i + 1] === "<") {
200
+ const marker = /^<<-?\s*(['"]?)([A-Za-z_][A-Za-z0-9_]*)\1/.exec(cmd.slice(i));
201
+ if (marker) {
202
+ endToken();
203
+ i += marker[0].length;
204
+ const rest = cmd.slice(i);
205
+ const end = new RegExp(`\\n[ \\t]*${marker[2]}[ \\t]*(?:\\n|$)`).exec(rest);
206
+ i += end ? end.index + end[0].length : rest.length;
207
+ continue;
208
+ }
209
+ }
210
+ if (ch === "'") {
211
+ started = true;
212
+ quoted = true;
213
+ i++;
214
+ while (i < cmd.length && cmd[i] !== "'") {
215
+ text += cmd[i];
216
+ i++;
217
+ }
218
+ i++;
219
+ continue;
220
+ }
221
+ if (ch === '"') {
222
+ started = true;
223
+ quoted = true;
224
+ i++;
225
+ while (i < cmd.length && cmd[i] !== '"') {
226
+ if (cmd[i] === "\\" && i + 1 < cmd.length) {
227
+ text += cmd[i + 1];
228
+ i += 2;
229
+ continue;
230
+ }
231
+ text += cmd[i];
232
+ i++;
233
+ }
234
+ i++;
235
+ continue;
236
+ }
237
+ if (ch === "\\" && i + 1 < cmd.length) {
238
+ started = true;
239
+ text += cmd[i + 1];
240
+ i += 2;
241
+ continue;
242
+ }
243
+ if (ch === "\n") {
244
+ endSegment();
245
+ i++;
246
+ continue;
247
+ }
248
+ if (/\s/.test(ch)) {
249
+ endToken();
250
+ i++;
251
+ continue;
252
+ }
253
+ // Backtick substitution splits like `$(...)` does. Without this the tick
254
+ // glues onto the command word (`` `grep `` != `grep`) and the whole
255
+ // invocation slips past unrecognised.
256
+ if (ch === ";" || ch === "|" || ch === "&" || ch === "(" || ch === ")" || ch === "{" || ch === "}" || ch === "`") {
257
+ endSegment();
258
+ i++;
259
+ continue;
260
+ }
261
+ started = true;
262
+ text += ch;
263
+ i++;
264
+ }
265
+ endSegment();
266
+ return segments;
267
+ }
268
+ /** The command a segment actually invokes, plus its unquoted argument tokens. */
269
+ function segmentInvocation(tokens) {
270
+ let i = 0;
271
+ while (i < tokens.length) {
272
+ const token = tokens[i];
273
+ // Skip `FOO=bar` env assignments and shell/wrapper words like `sudo`, `do`.
274
+ if (/^[A-Za-z_][A-Za-z0-9_]*=/.test(token.text)) {
275
+ i++;
276
+ continue;
277
+ }
278
+ const base = token.text.split("/").pop() ?? token.text;
279
+ if (COMMAND_PREFIXES.has(base)) {
280
+ i++;
281
+ // A wrapper's own flags (`xargs -0 rg`) precede the real command.
282
+ while (i < tokens.length && tokens[i].text.startsWith("-"))
283
+ i++;
284
+ continue;
285
+ }
286
+ return { name: base, args: tokens.slice(i + 1) };
287
+ }
288
+ return null;
289
+ }
290
+ /** Flags only count when they were written unquoted — `grep "x -r y" f` is a pattern. */
291
+ function hasFlag(args, pattern) {
292
+ return args.some((token) => !token.quoted && pattern.test(token.text));
293
+ }
137
294
  function isFileFindCommand(cmd) {
138
- const hasFind = /\bfind\s/.test(cmd);
139
- const hasNameFilter = /\s-i?name\s/.test(cmd);
140
- const hasDestructive = /\s-(?:exec|delete|ok)\b|\brm\s|\bmv\s/.test(cmd);
141
- return hasFind && hasNameFilter && !hasDestructive;
295
+ for (const segment of lexShellSegments(cmd)) {
296
+ const invocation = segmentInvocation(segment);
297
+ if (invocation?.name !== "find")
298
+ continue;
299
+ const hasNameFilter = hasFlag(invocation.args, /^-i?name$/);
300
+ const hasDestructive = hasFlag(invocation.args, /^-(?:exec|delete|ok)$/) ||
301
+ invocation.args.some((token) => !token.quoted && (token.text === "rm" || token.text === "mv"));
302
+ if (hasNameFilter && !hasDestructive)
303
+ return true;
304
+ }
305
+ return false;
142
306
  }
143
307
  function isContentGrepCommand(cmd) {
144
- const hasRecursiveGrep = /\bgrep\b.*(?:\s-\w*[rR]\w*(?:\s|$)|--recursive(?:\s|$))/.test(cmd) && !/\bgit\s+grep\b/.test(cmd);
145
- const hasRg = /(?:^|[\s;&|"'`])(?:[./\w-]+\/)?rg(?=$|[\s;&|"'`])/.test(cmd);
146
- return hasRecursiveGrep || hasRg;
308
+ for (const segment of lexShellSegments(cmd)) {
309
+ const invocation = segmentInvocation(segment);
310
+ if (!invocation)
311
+ continue;
312
+ if (invocation.name === "rg")
313
+ return true;
314
+ // `git grep` lexes as command `git` with args `grep …`, so it never matches
315
+ // here — which is intended: it is repo-aware already and is left alone.
316
+ if (invocation.name !== "grep" && invocation.name !== "egrep")
317
+ continue;
318
+ if (hasFlag(invocation.args, /^--recursive$/) || hasFlag(invocation.args, /^-[A-Za-z]*[rR]/))
319
+ return true;
320
+ }
321
+ return false;
147
322
  }
148
323
  export async function handlePrecheckBash() {
149
324
  try {
@@ -162,7 +337,7 @@ export async function handlePrecheckBash() {
162
337
  process.exit(0);
163
338
  return;
164
339
  }
165
- if (!isCurrentRepoIndexed()) {
340
+ if (!isCurrentRepoIndexed() || !isCodesiftServerRunning()) {
166
341
  process.exit(0);
167
342
  return;
168
343
  }
@@ -189,6 +364,13 @@ export async function handlePrecheckGlob() {
189
364
  process.exit(0);
190
365
  return;
191
366
  }
367
+ // "CodeSift is available" must be true before we say it. This denied
368
+ // unconditionally, so a dead server left callers with neither Glob nor the
369
+ // tools it advertised.
370
+ if (!isCodesiftServerRunning()) {
371
+ process.exit(0);
372
+ return;
373
+ }
192
374
  denyTool(`CodeSift is available. Use CodeSift instead of Glob:\n` +
193
375
  ` get_file_tree(compact=true, name_pattern="*.ts") — find files\n` +
194
376
  ` search_symbols(query="name", kind="function") — find symbols`);
@@ -204,6 +386,11 @@ export async function handlePrecheckGrep() {
204
386
  process.exit(0);
205
387
  return;
206
388
  }
389
+ // Same as Glob above: never redirect to tools the caller cannot reach.
390
+ if (!isCodesiftServerRunning()) {
391
+ process.exit(0);
392
+ return;
393
+ }
207
394
  denyTool(`CodeSift is available. Use CodeSift instead of Grep:\n` +
208
395
  ` search_text(query="pattern", file_pattern="*.ts") — BM25-ranked full-text search\n` +
209
396
  ` search_symbols(query="name", include_source=true) — find functions/classes`);
@@ -1 +1 @@
1
- {"version":3,"file":"pre-tool-use.js","sourceRoot":"","sources":["../../../src/cli/hooks/pre-tool-use.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pre-tool-use.js","sourceRoot":"","sources":["../../../src/cli/hooks/pre-tool-use.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,23 @@
1
1
  export declare const CODE_EXTENSIONS: ReadonlySet<string>;
2
2
  export declare const DEFAULT_MIN_LINES = 200;
3
3
  export declare function isCwdInsideRepo(cwd: string, repoRoot: string): boolean;
4
+ /**
5
+ * True when a CodeSift MCP server is actually running, i.e. the agent plausibly
6
+ * HAS the tools these hooks redirect to.
7
+ *
8
+ * Without this check the hooks only ask "is the repo indexed on disk?" — which
9
+ * stays true long after the server dies. Three independent agents were observed
10
+ * being denied `grep`/`find`/`Read` and told to "use CodeSift MCP tools" while
11
+ * having no CodeSift tools at all; each ended up smuggling the same search
12
+ * through an inline `python3` script, so the block bought nothing and cost every
13
+ * one of them a detour. Redirecting to a capability the caller does not have is
14
+ * strictly worse than allowing the fallback.
15
+ *
16
+ * Deliberately fails OPEN: any error, or an unreadable process table, means we
17
+ * do not block. The `ps` spawn only happens on the deny path (a find/grep in an
18
+ * indexed repo), never on the common path.
19
+ */
20
+ export declare function isCodesiftServerRunning(): boolean;
4
21
  export declare function isCurrentRepoIndexed(): boolean;
5
22
  export declare function denyTool(reason: string): never;
6
23
  //# sourceMappingURL=shared.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/cli/hooks/shared.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,MAAM,CAmB9C,CAAC;AAEH,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAMrC,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKtE;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAoB9C;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAS9C"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/cli/hooks/shared.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,MAAM,CAmB9C,CAAC;AAEH,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAMrC,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKtE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CA8BjD;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAoB9C;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAS9C"}
@@ -1,4 +1,5 @@
1
1
  import { existsSync, readFileSync } from "node:fs";
2
+ import { execFileSync } from "node:child_process";
2
3
  import { join, posix as pathPosix, win32 as pathWin32 } from "node:path";
3
4
  import { homedir } from "node:os";
4
5
  export const CODE_EXTENSIONS = new Set([
@@ -32,6 +33,56 @@ export function isCwdInsideRepo(cwd, repoRoot) {
32
33
  return true;
33
34
  return rel !== ".." && !rel.startsWith(`..${pathApi.sep}`) && !pathApi.isAbsolute(rel);
34
35
  }
36
+ /**
37
+ * True when a CodeSift MCP server is actually running, i.e. the agent plausibly
38
+ * HAS the tools these hooks redirect to.
39
+ *
40
+ * Without this check the hooks only ask "is the repo indexed on disk?" — which
41
+ * stays true long after the server dies. Three independent agents were observed
42
+ * being denied `grep`/`find`/`Read` and told to "use CodeSift MCP tools" while
43
+ * having no CodeSift tools at all; each ended up smuggling the same search
44
+ * through an inline `python3` script, so the block bought nothing and cost every
45
+ * one of them a detour. Redirecting to a capability the caller does not have is
46
+ * strictly worse than allowing the fallback.
47
+ *
48
+ * Deliberately fails OPEN: any error, or an unreadable process table, means we
49
+ * do not block. The `ps` spawn only happens on the deny path (a find/grep in an
50
+ * indexed repo), never on the common path.
51
+ */
52
+ export function isCodesiftServerRunning() {
53
+ try {
54
+ // Static import — this file ships as ESM, where `require` is undefined. Using
55
+ // it here threw ReferenceError straight into the catch below, which returns
56
+ // true, so the guard silently reported "server running" every single time and
57
+ // never actually unblocked anything.
58
+ const out = execFileSync("ps", ["-Ao", "command"], {
59
+ encoding: "utf-8",
60
+ timeout: 2000,
61
+ maxBuffer: 8 * 1024 * 1024,
62
+ });
63
+ // Match the SERVER entrypoint only. Matching any command containing
64
+ // "codesift-mcp" is far too loose: the CLI hooks themselves
65
+ // (postindex-file, precheck-*) resolve through
66
+ // .../node_modules/codesift-mcp/dist/cli.js, so every edit-triggered hook
67
+ // looked like a running server and the guard never fired.
68
+ return out.split("\n").some((line) => {
69
+ const cmd = line.trim();
70
+ if (!cmd || cmd.includes("precheck-") || cmd.includes("postindex-"))
71
+ return false;
72
+ if (cmd.includes("dist/server.js"))
73
+ return true; // absolute OR relative invocation
74
+ return /(^|\/)codesift-mcp(\s|$)/.test(cmd); // the codesift-mcp bin, no subcommand
75
+ });
76
+ }
77
+ catch {
78
+ // Fail OPEN, as the contract above promises. This used to `return true`
79
+ // ("assume running"), which inverted it: callers treat true as "server is
80
+ // up" and go on to deny the tool, so an unreadable process table produced
81
+ // exactly the outage this function exists to prevent — the agent loses the
82
+ // native fallback AND has no CodeSift tools to redirect to.
83
+ return false;
84
+ }
85
+ }
35
86
  export function isCurrentRepoIndexed() {
36
87
  try {
37
88
  const raw = readFileSync(getRegistryPath(), "utf-8");
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/cli/hooks/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/cli/hooks/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * `codesift service` — run the shared daemon as a supervised background service.
3
+ *
4
+ * Without this, `codesift serve` is a foreground process: it dies with the
5
+ * terminal that launched it, does not come back after a crash, and is not there
6
+ * after a reboot. Every client is then configured to talk to a daemon that
7
+ * isn't running. Supervision is what makes the shared-daemon model safe to
8
+ * depend on — it turns "one process for everyone" from a single point of
9
+ * failure into a service that restarts itself.
10
+ *
11
+ * macOS gets a per-user LaunchAgent, Linux a systemd *user* unit. Both are
12
+ * per-user and unprivileged by design: nothing here needs root, and a daemon
13
+ * holding every index on the machine is exactly the thing that should not run
14
+ * as root.
15
+ */
16
+ export declare const SERVICE_LABEL = "com.codesift.daemon";
17
+ export declare const DEFAULT_SERVICE_PORT = 7077;
18
+ /**
19
+ * PATH handed to the service.
20
+ *
21
+ * launchd does NOT give an agent the login shell's PATH — it gets a minimal
22
+ * one. CodeSift shells out to `git` (repo detection, churn analysis, diff
23
+ * tools) and optionally to `rg`, so a daemon started by launchd with the
24
+ * default PATH silently loses those features while looking healthy. Homebrew
25
+ * differs by arch (/opt/homebrew on Apple Silicon, /usr/local on Intel), so
26
+ * both are listed.
27
+ */
28
+ export declare const SERVICE_PATH_ENTRIES: string[];
29
+ export interface ServicePlan {
30
+ label: string;
31
+ port: number;
32
+ host: string;
33
+ /** Absolute path to the node binary that will run the daemon. */
34
+ execPath: string;
35
+ /** Absolute path to the codesift CLI entry point. */
36
+ cliPath: string;
37
+ /** Where the unit file goes. */
38
+ unitPath: string;
39
+ stdoutLog: string;
40
+ stderrLog: string;
41
+ dataDir: string;
42
+ }
43
+ /** Escape a string for inclusion in XML text content. */
44
+ export declare function escapeXml(value: string): string;
45
+ /**
46
+ * True for addresses that keep the daemon reachable only from this machine.
47
+ *
48
+ * This matters more than it looks: the daemon answers MCP tool calls that read
49
+ * any indexed repository, so binding it to a routable interface publishes the
50
+ * user's entire source tree — and their indexed conversation history — to
51
+ * anything that can reach the port. There is no authentication by default.
52
+ */
53
+ export declare function isLoopbackHost(host: string): boolean;
54
+ /** Resolve the CLI entry point for the currently running codesift install. */
55
+ export declare function resolveCliPath(): string;
56
+ export declare function buildServicePlan(opts: {
57
+ port?: number;
58
+ host?: string;
59
+ dataDir: string;
60
+ execPath?: string;
61
+ cliPath?: string;
62
+ home?: string;
63
+ os?: NodeJS.Platform;
64
+ }): ServicePlan;
65
+ /**
66
+ * macOS LaunchAgent.
67
+ *
68
+ * `KeepAlive` restarts the daemon whenever it exits for any reason — crash, OOM
69
+ * kill, or a `kill` from a user cleaning up processes. `ThrottleInterval` is the
70
+ * guard that keeps that from becoming a restart storm if the daemon cannot
71
+ * start at all (port taken by something else, corrupt install): launchd waits
72
+ * between attempts instead of spinning. `RunAtLoad` covers login and reboot.
73
+ *
74
+ * To stop it deliberately, unload the agent (`codesift service uninstall`) —
75
+ * killing the process alone just makes launchd start it again, which is the
76
+ * whole point.
77
+ */
78
+ export declare function buildLaunchAgentPlist(plan: ServicePlan): string;
79
+ /** Linux systemd *user* unit — same supervision contract as the LaunchAgent. */
80
+ export declare function buildSystemdUnit(plan: ServicePlan): string;
81
+ export declare function renderUnit(plan: ServicePlan, os: NodeJS.Platform): string;
82
+ export interface InstallResult {
83
+ status: "installed" | "already-installed" | "unsupported";
84
+ unitPath: string;
85
+ url: string;
86
+ activated: boolean;
87
+ note?: string;
88
+ }
89
+ /** Injectable so tests can exercise install/uninstall without touching launchd. */
90
+ export type CommandRunner = (cmd: string, args: string[]) => {
91
+ ok: boolean;
92
+ message: string;
93
+ };
94
+ export declare function installService(opts: {
95
+ port?: number;
96
+ host?: string;
97
+ dataDir: string;
98
+ force?: boolean;
99
+ os?: NodeJS.Platform;
100
+ home?: string;
101
+ runner?: CommandRunner;
102
+ }): InstallResult;
103
+ export declare function uninstallService(opts: {
104
+ dataDir: string;
105
+ os?: NodeJS.Platform;
106
+ home?: string;
107
+ runner?: CommandRunner;
108
+ }): {
109
+ status: "removed" | "not-installed";
110
+ unitPath: string;
111
+ };
112
+ /**
113
+ * Installed / starting / running, kept distinct on purpose.
114
+ *
115
+ * The daemon writes `daemon.pid` when it takes the lock but `daemon.port` only
116
+ * once the HTTP listener is actually up, and on a machine with large indexes
117
+ * that gap is tens of seconds. Collapsing the gap into "running" reports a
118
+ * daemon nothing can connect to yet as healthy, which sends whoever is
119
+ * debugging a client straight past the real answer ("wait, then retry").
120
+ */
121
+ export declare function serviceStatus(opts: {
122
+ dataDir: string;
123
+ os?: NodeJS.Platform;
124
+ home?: string;
125
+ }): {
126
+ installed: boolean;
127
+ unitPath: string;
128
+ state: "not-installed" | "stopped" | "starting" | "running";
129
+ running: boolean;
130
+ pid: number | null;
131
+ port: number | null;
132
+ };
133
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/cli/service.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;GAcG;AAEH,eAAO,MAAM,aAAa,wBAAwB,CAAC;AACnD,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,UAOhC,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,yDAAyD;AACzD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO/C;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGpD;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,IAAI,MAAM,CAGvC;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;CACtB,GAAG,WAAW,CAqBd;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAqC/D;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAsB1D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAEzE;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,WAAW,GAAG,mBAAmB,GAAG,aAAa,CAAC;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,mFAAmF;AACnF,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AA0B9F,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB,GAAG,aAAa,CAiEhB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB,GAAG;IAAE,MAAM,EAAE,SAAS,GAAG,eAAe,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAe5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAC7F,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,eAAe,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IAC5D,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB,CAgCA"}