igrep2 0.1.139__cp314-none-any.whl

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 (640) hide show
  1. igrep/__init__.py +23 -0
  2. igrep/__init__.pyc +0 -0
  3. igrep/__main__.pyc +0 -0
  4. igrep/_tokenizer_utils.pyc +0 -0
  5. igrep/agent.pyc +0 -0
  6. igrep/agent_planning.pyc +0 -0
  7. igrep/agent_runs.pyc +0 -0
  8. igrep/agent_skills.pyc +0 -0
  9. igrep/api_client.pyc +0 -0
  10. igrep/ask.pyc +0 -0
  11. igrep/audit.pyc +0 -0
  12. igrep/backend_config.pyc +0 -0
  13. igrep/backend_policy.pyc +0 -0
  14. igrep/backend_profiles.pyc +0 -0
  15. igrep/bm25_index/__init__.py +19 -0
  16. igrep/bm25_index/__init__.pyc +0 -0
  17. igrep/bm25_index/analyzer.pyc +0 -0
  18. igrep/bm25_index/backend.pyc +0 -0
  19. igrep/bm25_index/builder.pyc +0 -0
  20. igrep/bm25_index/chunking.pyc +0 -0
  21. igrep/bm25_index/es_backend.pyc +0 -0
  22. igrep/bm25_index/resolve.pyc +0 -0
  23. igrep/bm25_index/scan.pyc +0 -0
  24. igrep/bm25_index/sqlite_backend.pyc +0 -0
  25. igrep/bm25_index/types.pyc +0 -0
  26. igrep/build_coordinator.pyc +0 -0
  27. igrep/cache_accounting.pyc +0 -0
  28. igrep/cache_db.pyc +0 -0
  29. igrep/chat.pyc +0 -0
  30. igrep/chat_capability_cache.pyc +0 -0
  31. igrep/chat_citations.pyc +0 -0
  32. igrep/chat_compress.pyc +0 -0
  33. igrep/chat_events.pyc +0 -0
  34. igrep/chat_model_selection.pyc +0 -0
  35. igrep/chat_paths.pyc +0 -0
  36. igrep/chat_repl.pyc +0 -0
  37. igrep/chat_store.pyc +0 -0
  38. igrep/chat_stream_events.pyc +0 -0
  39. igrep/chat_tools.pyc +0 -0
  40. igrep/chat_transports/__init__.py +14 -0
  41. igrep/chat_transports/__init__.pyc +0 -0
  42. igrep/chat_transports/ndjson.pyc +0 -0
  43. igrep/chat_transports/sse.pyc +0 -0
  44. igrep/chrome_site.pyc +0 -0
  45. igrep/chrome_site_activation.pyc +0 -0
  46. igrep/chrome_site_agent/__init__.py +20 -0
  47. igrep/chrome_site_agent/__init__.pyc +0 -0
  48. igrep/chrome_site_agent/compile.pyc +0 -0
  49. igrep/chrome_site_agent/evidence.pyc +0 -0
  50. igrep/chrome_site_agent/har.pyc +0 -0
  51. igrep/chrome_site_agent/html_fragment.pyc +0 -0
  52. igrep/chrome_site_agent/jsonpath.pyc +0 -0
  53. igrep/chrome_site_agent/orchestrate.pyc +0 -0
  54. igrep/chrome_site_agent/strategy.pyc +0 -0
  55. igrep/chrome_site_agent/verify.pyc +0 -0
  56. igrep/chrome_site_authoring.pyc +0 -0
  57. igrep/chrome_site_authoring_agent.pyc +0 -0
  58. igrep/chrome_site_authoring_cli.pyc +0 -0
  59. igrep/chrome_site_authoring_codex.pyc +0 -0
  60. igrep/chrome_site_authoring_llm.pyc +0 -0
  61. igrep/chrome_site_authoring_server.pyc +0 -0
  62. igrep/chrome_site_compile.pyc +0 -0
  63. igrep/chrome_site_compiler.pyc +0 -0
  64. igrep/chrome_site_contract.pyc +0 -0
  65. igrep/chrome_site_dev.pyc +0 -0
  66. igrep/chrome_site_prebuilt.pyc +0 -0
  67. igrep/chrome_site_recipes.pyc +0 -0
  68. igrep/chunk_level_score.pyc +0 -0
  69. igrep/chunker/__init__.py +16 -0
  70. igrep/chunker/__init__.pyc +0 -0
  71. igrep/chunker/base.pyc +0 -0
  72. igrep/chunker/code.pyc +0 -0
  73. igrep/chunker/text.pyc +0 -0
  74. igrep/cli/__init__.py +67 -0
  75. igrep/cli/__init__.pyc +0 -0
  76. igrep/cli/__main__.pyc +0 -0
  77. igrep/cli/_common.pyc +0 -0
  78. igrep/cli/_main.pyc +0 -0
  79. igrep/cli/agent.pyc +0 -0
  80. igrep/cli/bm25.pyc +0 -0
  81. igrep/cli/chat.pyc +0 -0
  82. igrep/cli/chrome_site_parser.pyc +0 -0
  83. igrep/cli/command_source.pyc +0 -0
  84. igrep/cli/context.pyc +0 -0
  85. igrep/cli/mem_parser.pyc +0 -0
  86. igrep/cli/ops.pyc +0 -0
  87. igrep/cli/page_search.pyc +0 -0
  88. igrep/cli/parser.pyc +0 -0
  89. igrep/cli/routing.pyc +0 -0
  90. igrep/cli/search.pyc +0 -0
  91. igrep/cli/setup.pyc +0 -0
  92. igrep/cli/source_map.pyc +0 -0
  93. igrep/cli/stopwords.pyc +0 -0
  94. igrep/clients.pyc +0 -0
  95. igrep/code_identifiers.pyc +0 -0
  96. igrep/code_keywords.pyc +0 -0
  97. igrep/config.pyc +0 -0
  98. igrep/conversion_cache.pyc +0 -0
  99. igrep/daemon.pyc +0 -0
  100. igrep/data/chrome-site/igrep-chrome-site.zip +0 -0
  101. igrep/data/deepseek-harness/igrep-dsh/README.md +165 -0
  102. igrep/data/deepseek-harness/igrep-dsh/cordis.patch.yml +8 -0
  103. igrep/data/deepseek-harness/igrep-dsh/igrep-cli.mjs +123 -0
  104. igrep/data/deepseek-harness/igrep-dsh/index.mjs +797 -0
  105. igrep/data/deepseek-harness/igrep-dsh/memory-lifecycle.mjs +205 -0
  106. igrep/data/deepseek-harness/igrep-dsh/package.json +27 -0
  107. igrep/data/deepseek-harness/igrep-dsh/search-routing.mjs +118 -0
  108. igrep/data/env.cloud +50 -0
  109. igrep/data/env.local +76 -0
  110. igrep/data/env.sample +98 -0
  111. igrep/data/hermes/igrep/README.md +42 -0
  112. igrep/data/hermes/igrep/__init__.py +35 -0
  113. igrep/data/hermes/igrep/plugin.yaml +3 -0
  114. igrep/data/hermes/igrep/schemas.py +134 -0
  115. igrep/data/hermes/igrep/skills/igrep-search/SKILL.md +37 -0
  116. igrep/data/hermes/igrep/tools.py +66 -0
  117. igrep/data/hermes/memory/igrep/README.md +48 -0
  118. igrep/data/hermes/memory/igrep/__init__.py +364 -0
  119. igrep/data/hermes/memory/igrep/cli.py +23 -0
  120. igrep/data/hermes/memory/igrep/plugin.yaml +8 -0
  121. igrep/data/obsidian/igrep/main.js +56296 -0
  122. igrep/data/obsidian/igrep/manifest.json +9 -0
  123. igrep/data/obsidian/igrep/styles.css +5280 -0
  124. igrep/data/openclaw/igrep-memory/README.md +71 -0
  125. igrep/data/openclaw/igrep-memory/flush-plan.mjs +148 -0
  126. igrep/data/openclaw/igrep-memory/index.mjs +596 -0
  127. igrep/data/openclaw/igrep-memory/ingest.mjs +54 -0
  128. igrep/data/openclaw/igrep-memory/openclaw.plugin.json +128 -0
  129. igrep/data/openclaw/igrep-memory/package.json +23 -0
  130. igrep/data/openclaw/igrep-search/README.md +32 -0
  131. igrep/data/openclaw/igrep-search/index.mjs +496 -0
  132. igrep/data/openclaw/igrep-search/openclaw.plugin.json +90 -0
  133. igrep/data/openclaw/igrep-search/package.json +23 -0
  134. igrep/data/openclaw/igrep-search/skills/SKILL.md +25 -0
  135. igrep/data/opencode-plugin/plugin.ts +80 -0
  136. igrep/data/pi/igrep-memory/README.md +58 -0
  137. igrep/data/pi/igrep-memory/igrep-cli.mjs +123 -0
  138. igrep/data/pi/igrep-memory/index.mjs +215 -0
  139. igrep/data/pi/igrep-memory/lifecycle.mjs +108 -0
  140. igrep/data/pi/igrep-memory/package.json +18 -0
  141. igrep/data/skill/SKILL.md +94 -0
  142. igrep/data/skill-find-skills/SKILL.md +53 -0
  143. igrep/data/skill-igrep-agents-md/AGENTS.md +13 -0
  144. igrep/data/skill-igrep-explorer/SKILL.md +50 -0
  145. igrep/data/skill-igrep-explorer/agents/openai.yaml +4 -0
  146. igrep/data/skill-planning-with-files/SKILL.md +129 -0
  147. igrep/data/skillhub/skills_store_cli.py +3013 -0
  148. igrep/data/skillhub/skills_upgrade.py +183 -0
  149. igrep/data/vscode/igrep.vsix +0 -0
  150. igrep/data_uri_sanitize.pyc +0 -0
  151. igrep/db.pyc +0 -0
  152. igrep/deepseek_harness_plugin.pyc +0 -0
  153. igrep/doctor.pyc +0 -0
  154. igrep/embed_cache.pyc +0 -0
  155. igrep/env_store.pyc +0 -0
  156. igrep/errors.pyc +0 -0
  157. igrep/eval.pyc +0 -0
  158. igrep/exit_codes.pyc +0 -0
  159. igrep/fast_search.pyc +0 -0
  160. igrep/file_lister.pyc +0 -0
  161. igrep/file_parser.pyc +0 -0
  162. igrep/finalize.pyc +0 -0
  163. igrep/formatter.pyc +0 -0
  164. igrep/fusion.pyc +0 -0
  165. igrep/hermes.pyc +0 -0
  166. igrep/hermes_plugin.pyc +0 -0
  167. igrep/hook_cli.pyc +0 -0
  168. igrep/hook_cli_codex.pyc +0 -0
  169. igrep/hook_core.pyc +0 -0
  170. igrep/hook_state.pyc +0 -0
  171. igrep/http_transport.pyc +0 -0
  172. igrep/ignore_files.pyc +0 -0
  173. igrep/image_augment/__init__.py +0 -0
  174. igrep/image_augment/__init__.pyc +0 -0
  175. igrep/image_augment/context.pyc +0 -0
  176. igrep/image_augment/derived_md.pyc +0 -0
  177. igrep/image_augment/icon.pyc +0 -0
  178. igrep/image_augment/image_context.pyc +0 -0
  179. igrep/image_augment/model_image.pyc +0 -0
  180. igrep/image_augment/native_md.pyc +0 -0
  181. igrep/image_augment/ocr_cache.pyc +0 -0
  182. igrep/image_augment/pipeline.pyc +0 -0
  183. igrep/image_augment/refs.pyc +0 -0
  184. igrep/image_augment/sidecar.pyc +0 -0
  185. igrep/image_augment/state.pyc +0 -0
  186. igrep/image_augment/vlm_cache.pyc +0 -0
  187. igrep/image_augment/vlm_client.pyc +0 -0
  188. igrep/index.pyc +0 -0
  189. igrep/index_context.pyc +0 -0
  190. igrep/index_registry.pyc +0 -0
  191. igrep/integrations/__init__.py +0 -0
  192. igrep/integrations/__init__.pyc +0 -0
  193. igrep/integrations/obsidian/__init__.py +0 -0
  194. igrep/integrations/obsidian/__init__.pyc +0 -0
  195. igrep/integrations/obsidian/installer.pyc +0 -0
  196. igrep/integrations/obsidian/vault.pyc +0 -0
  197. igrep/integrations/vscode/__init__.py +0 -0
  198. igrep/integrations/vscode/__init__.pyc +0 -0
  199. igrep/integrations/vscode/installer.pyc +0 -0
  200. igrep/internal_search.pyc +0 -0
  201. igrep/internal_source_selection.pyc +0 -0
  202. igrep/internal_sources/__init__.py +1 -0
  203. igrep/internal_sources/__init__.pyc +0 -0
  204. igrep/internal_sources/_helpers.pyc +0 -0
  205. igrep/internal_sources/_internal_base.pyc +0 -0
  206. igrep/internal_sources/_runtime.pyc +0 -0
  207. igrep/internal_sources/base.pyc +0 -0
  208. igrep/internal_sources/builtin/__init__.py +1 -0
  209. igrep/internal_sources/builtin/__init__.pyc +0 -0
  210. igrep/internal_sources/builtin/apple_notes.pyc +0 -0
  211. igrep/internal_sources/builtin/chrome_site.pyc +0 -0
  212. igrep/internal_sources/builtin/messages.pyc +0 -0
  213. igrep/internal_sources/builtin/notion.pyc +0 -0
  214. igrep/internal_sources/builtin/skillhub.pyc +0 -0
  215. igrep/internal_sources/builtin/spotlight_file.pyc +0 -0
  216. igrep/internal_sources/command.pyc +0 -0
  217. igrep/internal_sources/descriptor.pyc +0 -0
  218. igrep/internal_sources/discovery_format.pyc +0 -0
  219. igrep/internal_sources/errors.pyc +0 -0
  220. igrep/internal_sources/notion_oauth.pyc +0 -0
  221. igrep/internal_sources/notion_store.pyc +0 -0
  222. igrep/internal_sources/plugin_manager.pyc +0 -0
  223. igrep/internal_sources/plugin_module.pyc +0 -0
  224. igrep/internal_sources/qualify.pyc +0 -0
  225. igrep/internal_sources/registry.pyc +0 -0
  226. igrep/internal_sources/reserved.pyc +0 -0
  227. igrep/internal_sources/runner.pyc +0 -0
  228. igrep/internal_sources/source.pyc +0 -0
  229. igrep/internal_sources/transports/__init__.py +1 -0
  230. igrep/internal_sources/transports/__init__.pyc +0 -0
  231. igrep/internal_sources/transports/mcp_http.pyc +0 -0
  232. igrep/internal_sources/ultra.pyc +0 -0
  233. igrep/keybert_keywords.pyc +0 -0
  234. igrep/lexical_recall.pyc +0 -0
  235. igrep/llm_cache.pyc +0 -0
  236. igrep/llm_filter.pyc +0 -0
  237. igrep/llm_selector.pyc +0 -0
  238. igrep/local_model_policy.pyc +0 -0
  239. igrep/local_model_store.pyc +0 -0
  240. igrep/local_search/__init__.py +1 -0
  241. igrep/local_search/__init__.pyc +0 -0
  242. igrep/local_search/_shared.pyc +0 -0
  243. igrep/local_search/code_hints.pyc +0 -0
  244. igrep/local_search/code_literals.pyc +0 -0
  245. igrep/local_search/code_localizer.pyc +0 -0
  246. igrep/local_search/code_relation_helpers.pyc +0 -0
  247. igrep/local_search/code_rescue.pyc +0 -0
  248. igrep/local_search/doc_bridge.pyc +0 -0
  249. igrep/local_search/evidence_state.pyc +0 -0
  250. igrep/local_search/feedback.pyc +0 -0
  251. igrep/local_search/issue_evidence.pyc +0 -0
  252. igrep/local_search/kernel.pyc +0 -0
  253. igrep/local_search/lexical.pyc +0 -0
  254. igrep/local_search/paths.pyc +0 -0
  255. igrep/local_search/plans.pyc +0 -0
  256. igrep/local_search/recency.pyc +0 -0
  257. igrep/local_search/return_units.pyc +0 -0
  258. igrep/local_search/search.pyc +0 -0
  259. igrep/local_search/types.pyc +0 -0
  260. igrep/local_service_config.pyc +0 -0
  261. igrep/local_service_dependencies.pyc +0 -0
  262. igrep/local_service_diagnostics.pyc +0 -0
  263. igrep/local_service_models.pyc +0 -0
  264. igrep/local_service_reporting.pyc +0 -0
  265. igrep/local_service_setup.pyc +0 -0
  266. igrep/lsp/__init__.py +9 -0
  267. igrep/lsp/__init__.pyc +0 -0
  268. igrep/lsp/api.pyc +0 -0
  269. igrep/lsp/backend.pyc +0 -0
  270. igrep/lsp/backends/__init__.py +3 -0
  271. igrep/lsp/backends/__init__.pyc +0 -0
  272. igrep/lsp/backends/solidlsp_backend.pyc +0 -0
  273. igrep/lsp/format.pyc +0 -0
  274. igrep/lsp/language_registry.pyc +0 -0
  275. igrep/lsp/manager.pyc +0 -0
  276. igrep/lsp/query.pyc +0 -0
  277. igrep/lsp/schema.pyc +0 -0
  278. igrep/ltp_tokenizer.pyc +0 -0
  279. igrep/managed_local_policy.pyc +0 -0
  280. igrep/mcp_install.pyc +0 -0
  281. igrep/mcp_server.pyc +0 -0
  282. igrep/mcp_telemetry.pyc +0 -0
  283. igrep/mem.pyc +0 -0
  284. igrep/mem_defaults.pyc +0 -0
  285. igrep/mem_events.pyc +0 -0
  286. igrep/mem_facts.pyc +0 -0
  287. igrep/mem_intake.pyc +0 -0
  288. igrep/mem_relative_time.pyc +0 -0
  289. igrep/mem_retractions.pyc +0 -0
  290. igrep/mem_secrets.pyc +0 -0
  291. igrep/mem_store.pyc +0 -0
  292. igrep/mem_tenancy.pyc +0 -0
  293. igrep/models.pyc +0 -0
  294. igrep/nlp.pyc +0 -0
  295. igrep/noindex_code_literals.pyc +0 -0
  296. igrep/omlx_runtime.pyc +0 -0
  297. igrep/openai_client.pyc +0 -0
  298. igrep/openclaw_plugin.pyc +0 -0
  299. igrep/page_search.pyc +0 -0
  300. igrep/perf.pyc +0 -0
  301. igrep/phase1_trace.pyc +0 -0
  302. igrep/pi_plugin.pyc +0 -0
  303. igrep/plugin_api.pyc +0 -0
  304. igrep/plugin_config.pyc +0 -0
  305. igrep/pos_tagger.pyc +0 -0
  306. igrep/preproc.pyc +0 -0
  307. igrep/project_context.pyc +0 -0
  308. igrep/project_registration.pyc +0 -0
  309. igrep/prompt_merge.pyc +0 -0
  310. igrep/prompt_safety.pyc +0 -0
  311. igrep/qmd_expand.pyc +0 -0
  312. igrep/quality_artifacts.pyc +0 -0
  313. igrep/query_channels.pyc +0 -0
  314. igrep/query_expansion.pyc +0 -0
  315. igrep/query_intent.pyc +0 -0
  316. igrep/query_semantics.pyc +0 -0
  317. igrep/query_shape.pyc +0 -0
  318. igrep/query_transform.pyc +0 -0
  319. igrep/relevant_segment.pyc +0 -0
  320. igrep/remote_markdown.pyc +0 -0
  321. igrep/remote_source.pyc +0 -0
  322. igrep/remote_types.pyc +0 -0
  323. igrep/repo_init.pyc +0 -0
  324. igrep/request_env.pyc +0 -0
  325. igrep/rerank.pyc +0 -0
  326. igrep/rerank_cache.pyc +0 -0
  327. igrep/research.pyc +0 -0
  328. igrep/resilience.pyc +0 -0
  329. igrep/responses_adapter.pyc +0 -0
  330. igrep/result_filter.pyc +0 -0
  331. igrep/retrieval_limits.pyc +0 -0
  332. igrep/rg_rank.pyc +0 -0
  333. igrep/rjieba_tokenizer.pyc +0 -0
  334. igrep/scanner.pyc +0 -0
  335. igrep/search.pyc +0 -0
  336. igrep/segmentation.pyc +0 -0
  337. igrep/semantic_window.pyc +0 -0
  338. igrep/serve/__init__.py +23 -0
  339. igrep/serve/__init__.pyc +0 -0
  340. igrep/serve/app.pyc +0 -0
  341. igrep/serve/child_supervisor.pyc +0 -0
  342. igrep/serve/chrome_bridge.pyc +0 -0
  343. igrep/serve/chrome_site_runtime.pyc +0 -0
  344. igrep/serve/cli_contract.pyc +0 -0
  345. igrep/serve/cli_runner.pyc +0 -0
  346. igrep/serve/control_plane.pyc +0 -0
  347. igrep/serve/health.pyc +0 -0
  348. igrep/serve/net_guard.pyc +0 -0
  349. igrep/serve/os_service.pyc +0 -0
  350. igrep/serve/redis_supervisor.pyc +0 -0
  351. igrep/serve/routes/__init__.py +42 -0
  352. igrep/serve/routes/__init__.pyc +0 -0
  353. igrep/serve/routes/_env_writes.pyc +0 -0
  354. igrep/serve/routes/_guards.pyc +0 -0
  355. igrep/serve/routes/_shared.pyc +0 -0
  356. igrep/serve/routes/backends.pyc +0 -0
  357. igrep/serve/routes/chat.pyc +0 -0
  358. igrep/serve/routes/chrome_site.pyc +0 -0
  359. igrep/serve/routes/config.pyc +0 -0
  360. igrep/serve/routes/files.pyc +0 -0
  361. igrep/serve/routes/index.pyc +0 -0
  362. igrep/serve/routes/internal_search.pyc +0 -0
  363. igrep/serve/routes/memory.pyc +0 -0
  364. igrep/serve/routes/notion.pyc +0 -0
  365. igrep/serve/routes/plugins.pyc +0 -0
  366. igrep/serve/routes/projects.pyc +0 -0
  367. igrep/serve/routes/retrieval.pyc +0 -0
  368. igrep/serve/routes/search.pyc +0 -0
  369. igrep/serve/routes/static.pyc +0 -0
  370. igrep/serve/routes/watcher.pyc +0 -0
  371. igrep/serve/tokenize_supervisor.pyc +0 -0
  372. igrep/serve/web_build.pyc +0 -0
  373. igrep/serve_options.pyc +0 -0
  374. igrep/service_catalog.pyc +0 -0
  375. igrep/services/__init__.py +46 -0
  376. igrep/services/__init__.pyc +0 -0
  377. igrep/services/process.pyc +0 -0
  378. igrep/skill.pyc +0 -0
  379. igrep/skill_manifest.pyc +0 -0
  380. igrep/skill_search.pyc +0 -0
  381. igrep/source_map.pyc +0 -0
  382. igrep/stdin_records.pyc +0 -0
  383. igrep/stopwords.pyc +0 -0
  384. igrep/symbol_query.pyc +0 -0
  385. igrep/symbol_suggest.pyc +0 -0
  386. igrep/system_dependencies.pyc +0 -0
  387. igrep/text_lines.pyc +0 -0
  388. igrep/tokenize_client.pyc +0 -0
  389. igrep/tokenize_server.pyc +0 -0
  390. igrep/watch.pyc +0 -0
  391. igrep/web_agent.pyc +0 -0
  392. igrep/web_db.pyc +0 -0
  393. igrep/web_dig.pyc +0 -0
  394. igrep/web_evidence.pyc +0 -0
  395. igrep/web_fetch.pyc +0 -0
  396. igrep/web_pipeline.pyc +0 -0
  397. igrep/web_providers.pyc +0 -0
  398. igrep/web_search.pyc +0 -0
  399. igrep/web_search_cache.pyc +0 -0
  400. igrep/web_static/404.html +1 -0
  401. igrep/web_static/__next.__PAGE__.txt +9 -0
  402. igrep/web_static/__next._full.txt +24 -0
  403. igrep/web_static/__next._head.txt +6 -0
  404. igrep/web_static/__next._index.txt +12 -0
  405. igrep/web_static/__next._tree.txt +2 -0
  406. igrep/web_static/_next/static/D0NFlSXZAYc5sdmnVBpnz/_buildManifest.js +11 -0
  407. igrep/web_static/_next/static/D0NFlSXZAYc5sdmnVBpnz/_clientMiddlewareManifest.json +1 -0
  408. igrep/web_static/_next/static/D0NFlSXZAYc5sdmnVBpnz/_ssgManifest.js +1 -0
  409. igrep/web_static/_next/static/chunks/047452d475f30173.js +3 -0
  410. igrep/web_static/_next/static/chunks/08f162610c300f55.js +1 -0
  411. igrep/web_static/_next/static/chunks/0ad7efe7bdbe5181.js +1 -0
  412. igrep/web_static/_next/static/chunks/181ce592f48078f8.js +6 -0
  413. igrep/web_static/_next/static/chunks/26d9930218fd96f9.js +1 -0
  414. igrep/web_static/_next/static/chunks/2f057c76c329510b.js +2 -0
  415. igrep/web_static/_next/static/chunks/4b50d4d89743e323.css +1 -0
  416. igrep/web_static/_next/static/chunks/5ac574237755d8cf.js +1 -0
  417. igrep/web_static/_next/static/chunks/5e1795a806bd6c51.js +1 -0
  418. igrep/web_static/_next/static/chunks/710d19f09b8c1517.js +1 -0
  419. igrep/web_static/_next/static/chunks/722c7314c3920161.js +1 -0
  420. igrep/web_static/_next/static/chunks/7b92cbea38a1e546.js +1 -0
  421. igrep/web_static/_next/static/chunks/93236f24c41221e1.js +5 -0
  422. igrep/web_static/_next/static/chunks/9fab9649d8776079.js +1 -0
  423. igrep/web_static/_next/static/chunks/a6dad97d9634a72d.js +1 -0
  424. igrep/web_static/_next/static/chunks/a6dad97d9634a72d.js.map +1 -0
  425. igrep/web_static/_next/static/chunks/b09365fea826608e.js +1 -0
  426. igrep/web_static/_next/static/chunks/b5eafa1d70170b05.js +1 -0
  427. igrep/web_static/_next/static/chunks/bb29b3d5bc9022b7.js +1 -0
  428. igrep/web_static/_next/static/chunks/be626e1d0704a05b.js +1 -0
  429. igrep/web_static/_next/static/chunks/c3ed5b8cc55f6020.js +1 -0
  430. igrep/web_static/_next/static/chunks/c4529b624de27509.js +1 -0
  431. igrep/web_static/_next/static/chunks/c5a78335fce993d8.js +1 -0
  432. igrep/web_static/_next/static/chunks/cf99fe11dd147ae2.js +6 -0
  433. igrep/web_static/_next/static/chunks/dd09ff477e32861e.js +1 -0
  434. igrep/web_static/_next/static/chunks/e077699cab1c52c4.js +1 -0
  435. igrep/web_static/_next/static/chunks/e33d7cefae16181a.js +4 -0
  436. igrep/web_static/_next/static/chunks/e693b686a6675910.js +1 -0
  437. igrep/web_static/_next/static/chunks/e7b79c15d69f3129.js +1 -0
  438. igrep/web_static/_next/static/chunks/f29e7e075c13bd59.js +1 -0
  439. igrep/web_static/_next/static/chunks/f74a6859e1c4d5e3.js +1 -0
  440. igrep/web_static/_next/static/chunks/fd262c3b00a234c9.css +1 -0
  441. igrep/web_static/_next/static/chunks/turbopack-1e7eecc82751cb90.js +4 -0
  442. igrep/web_static/_next/static/media/favicon.0b3bf435.ico +0 -0
  443. igrep/web_static/_not-found/__next._full.txt +20 -0
  444. igrep/web_static/_not-found/__next._head.txt +6 -0
  445. igrep/web_static/_not-found/__next._index.txt +12 -0
  446. igrep/web_static/_not-found/__next._not-found.__PAGE__.txt +5 -0
  447. igrep/web_static/_not-found/__next._not-found.txt +4 -0
  448. igrep/web_static/_not-found/__next._tree.txt +2 -0
  449. igrep/web_static/_not-found.html +1 -0
  450. igrep/web_static/_not-found.txt +20 -0
  451. igrep/web_static/ask/__next._full.txt +24 -0
  452. igrep/web_static/ask/__next._head.txt +6 -0
  453. igrep/web_static/ask/__next._index.txt +12 -0
  454. igrep/web_static/ask/__next._tree.txt +2 -0
  455. igrep/web_static/ask/__next.ask.__PAGE__.txt +9 -0
  456. igrep/web_static/ask/__next.ask.txt +4 -0
  457. igrep/web_static/ask.html +1 -0
  458. igrep/web_static/ask.txt +24 -0
  459. igrep/web_static/backends/__next._full.txt +24 -0
  460. igrep/web_static/backends/__next._head.txt +6 -0
  461. igrep/web_static/backends/__next._index.txt +12 -0
  462. igrep/web_static/backends/__next._tree.txt +2 -0
  463. igrep/web_static/backends/__next.backends.__PAGE__.txt +9 -0
  464. igrep/web_static/backends/__next.backends.txt +4 -0
  465. igrep/web_static/backends.html +1 -0
  466. igrep/web_static/backends.txt +24 -0
  467. igrep/web_static/chat/__next._full.txt +24 -0
  468. igrep/web_static/chat/__next._head.txt +6 -0
  469. igrep/web_static/chat/__next._index.txt +12 -0
  470. igrep/web_static/chat/__next._tree.txt +2 -0
  471. igrep/web_static/chat/__next.chat.__PAGE__.txt +9 -0
  472. igrep/web_static/chat/__next.chat.txt +4 -0
  473. igrep/web_static/chat.html +1 -0
  474. igrep/web_static/chat.txt +24 -0
  475. igrep/web_static/favicon.ico +0 -0
  476. igrep/web_static/file.svg +1 -0
  477. igrep/web_static/globe.svg +1 -0
  478. igrep/web_static/index-mgmt/__next._full.txt +24 -0
  479. igrep/web_static/index-mgmt/__next._head.txt +6 -0
  480. igrep/web_static/index-mgmt/__next._index.txt +12 -0
  481. igrep/web_static/index-mgmt/__next._tree.txt +2 -0
  482. igrep/web_static/index-mgmt/__next.index-mgmt.__PAGE__.txt +9 -0
  483. igrep/web_static/index-mgmt/__next.index-mgmt.txt +4 -0
  484. igrep/web_static/index-mgmt.html +1 -0
  485. igrep/web_static/index-mgmt.txt +24 -0
  486. igrep/web_static/index.html +2 -0
  487. igrep/web_static/index.txt +24 -0
  488. igrep/web_static/memory/__next._full.txt +24 -0
  489. igrep/web_static/memory/__next._head.txt +6 -0
  490. igrep/web_static/memory/__next._index.txt +12 -0
  491. igrep/web_static/memory/__next._tree.txt +2 -0
  492. igrep/web_static/memory/__next.memory.__PAGE__.txt +9 -0
  493. igrep/web_static/memory/__next.memory.txt +4 -0
  494. igrep/web_static/memory.html +1 -0
  495. igrep/web_static/memory.txt +24 -0
  496. igrep/web_static/next.svg +1 -0
  497. igrep/web_static/plugins/__next._full.txt +25 -0
  498. igrep/web_static/plugins/__next._head.txt +6 -0
  499. igrep/web_static/plugins/__next._index.txt +12 -0
  500. igrep/web_static/plugins/__next._tree.txt +3 -0
  501. igrep/web_static/plugins/__next.plugins.__PAGE__.txt +10 -0
  502. igrep/web_static/plugins/__next.plugins.txt +4 -0
  503. igrep/web_static/plugins.html +1 -0
  504. igrep/web_static/plugins.txt +25 -0
  505. igrep/web_static/projects/__next._full.txt +24 -0
  506. igrep/web_static/projects/__next._head.txt +6 -0
  507. igrep/web_static/projects/__next._index.txt +12 -0
  508. igrep/web_static/projects/__next._tree.txt +2 -0
  509. igrep/web_static/projects/__next.projects.__PAGE__.txt +9 -0
  510. igrep/web_static/projects/__next.projects.txt +4 -0
  511. igrep/web_static/projects.html +1 -0
  512. igrep/web_static/projects.txt +24 -0
  513. igrep/web_static/search/__next._full.txt +24 -0
  514. igrep/web_static/search/__next._head.txt +6 -0
  515. igrep/web_static/search/__next._index.txt +12 -0
  516. igrep/web_static/search/__next._tree.txt +2 -0
  517. igrep/web_static/search/__next.search.__PAGE__.txt +9 -0
  518. igrep/web_static/search/__next.search.txt +4 -0
  519. igrep/web_static/search.html +1 -0
  520. igrep/web_static/search.txt +24 -0
  521. igrep/web_static/system/__next._full.txt +24 -0
  522. igrep/web_static/system/__next._head.txt +6 -0
  523. igrep/web_static/system/__next._index.txt +12 -0
  524. igrep/web_static/system/__next._tree.txt +2 -0
  525. igrep/web_static/system/__next.system.__PAGE__.txt +9 -0
  526. igrep/web_static/system/__next.system.txt +4 -0
  527. igrep/web_static/system.html +1 -0
  528. igrep/web_static/system.txt +24 -0
  529. igrep/web_static/vercel.svg +1 -0
  530. igrep/web_static/window.svg +1 -0
  531. igrep/web_ultra_selector.pyc +0 -0
  532. igrep2-0.1.139.dist-info/METADATA +386 -0
  533. igrep2-0.1.139.dist-info/RECORD +640 -0
  534. igrep2-0.1.139.dist-info/WHEEL +4 -0
  535. igrep2-0.1.139.dist-info/entry_points.txt +6 -0
  536. igrep2-0.1.139.dist-info/licenses/LICENSE +21 -0
  537. solidlsp/LSP_SPEC_README.md +10 -0
  538. solidlsp/README.md +28 -0
  539. solidlsp/SOLIDLSP_CUSTOMIZATION.md +59 -0
  540. solidlsp/__init__.py +2 -0
  541. solidlsp/dependency_provider.py +241 -0
  542. solidlsp/initialize_params.py +82 -0
  543. solidlsp/language_servers/ada_language_server.py +217 -0
  544. solidlsp/language_servers/al_language_server.py +1072 -0
  545. solidlsp/language_servers/angular_language_server.py +696 -0
  546. solidlsp/language_servers/ansible_language_server.py +324 -0
  547. solidlsp/language_servers/basedpyright_server.py +197 -0
  548. solidlsp/language_servers/bash_language_server.py +318 -0
  549. solidlsp/language_servers/bsl_language_server.py +216 -0
  550. solidlsp/language_servers/ccls_language_server.py +151 -0
  551. solidlsp/language_servers/clangd_language_server.py +417 -0
  552. solidlsp/language_servers/clojure_lsp.py +396 -0
  553. solidlsp/language_servers/common.py +192 -0
  554. solidlsp/language_servers/crystal_language_server.py +152 -0
  555. solidlsp/language_servers/csharp_language_server.py +760 -0
  556. solidlsp/language_servers/cue_language_server.py +259 -0
  557. solidlsp/language_servers/dart_language_server.py +213 -0
  558. solidlsp/language_servers/eclipse_jdtls.py +1559 -0
  559. solidlsp/language_servers/elixir_tools/README.md +87 -0
  560. solidlsp/language_servers/elixir_tools/__init__.py +1 -0
  561. solidlsp/language_servers/elixir_tools/elixir_tools.py +421 -0
  562. solidlsp/language_servers/elm_language_server.py +241 -0
  563. solidlsp/language_servers/erlang_language_server.py +222 -0
  564. solidlsp/language_servers/fortran_language_server.py +304 -0
  565. solidlsp/language_servers/fsharp_language_server.py +394 -0
  566. solidlsp/language_servers/godot_language_server.py +138 -0
  567. solidlsp/language_servers/gopls.py +328 -0
  568. solidlsp/language_servers/groovy_language_server.py +317 -0
  569. solidlsp/language_servers/haskell_language_server.py +369 -0
  570. solidlsp/language_servers/haxe_language_server.py +408 -0
  571. solidlsp/language_servers/hlsl_language_server.py +250 -0
  572. solidlsp/language_servers/intelephense.py +227 -0
  573. solidlsp/language_servers/jedi_server.py +180 -0
  574. solidlsp/language_servers/json_language_server.py +163 -0
  575. solidlsp/language_servers/julia_server.py +201 -0
  576. solidlsp/language_servers/kotlin_language_server.py +523 -0
  577. solidlsp/language_servers/lean4_language_server.py +161 -0
  578. solidlsp/language_servers/lua_ls.py +328 -0
  579. solidlsp/language_servers/luau_lsp.py +374 -0
  580. solidlsp/language_servers/marksman.py +260 -0
  581. solidlsp/language_servers/matlab_language_server.py +533 -0
  582. solidlsp/language_servers/msl_language_server.py +99 -0
  583. solidlsp/language_servers/msl_lsp_server.py +439 -0
  584. solidlsp/language_servers/nixd_ls.py +362 -0
  585. solidlsp/language_servers/ocaml_lsp_server.py +424 -0
  586. solidlsp/language_servers/omnisharp/initialize_params.json +631 -0
  587. solidlsp/language_servers/omnisharp/runtime_dependencies.json +450 -0
  588. solidlsp/language_servers/omnisharp/workspace_did_change_configuration.json +111 -0
  589. solidlsp/language_servers/omnisharp.py +411 -0
  590. solidlsp/language_servers/pascal_server.py +962 -0
  591. solidlsp/language_servers/perl_language_server.py +245 -0
  592. solidlsp/language_servers/phpactor.py +177 -0
  593. solidlsp/language_servers/phpantom.py +285 -0
  594. solidlsp/language_servers/powershell_language_server.py +418 -0
  595. solidlsp/language_servers/pyrefly_server.py +296 -0
  596. solidlsp/language_servers/pyright_server.py +242 -0
  597. solidlsp/language_servers/qml_language_server.py +128 -0
  598. solidlsp/language_servers/r_language_server.py +153 -0
  599. solidlsp/language_servers/regal_server.py +117 -0
  600. solidlsp/language_servers/ruby_lsp.py +497 -0
  601. solidlsp/language_servers/rust_analyzer.py +745 -0
  602. solidlsp/language_servers/scala_language_server.py +317 -0
  603. solidlsp/language_servers/solargraph.py +351 -0
  604. solidlsp/language_servers/solidity_language_server.py +425 -0
  605. solidlsp/language_servers/some_sass_language_server.py +226 -0
  606. solidlsp/language_servers/sourcekit_lsp.py +371 -0
  607. solidlsp/language_servers/svelte_language_server.py +730 -0
  608. solidlsp/language_servers/systemverilog_server.py +214 -0
  609. solidlsp/language_servers/taplo_server.py +283 -0
  610. solidlsp/language_servers/terraform_ls.py +273 -0
  611. solidlsp/language_servers/texlab_language_server.py +186 -0
  612. solidlsp/language_servers/ty_server.py +135 -0
  613. solidlsp/language_servers/typescript_language_server.py +554 -0
  614. solidlsp/language_servers/vscode_html_language_server.py +165 -0
  615. solidlsp/language_servers/vts_language_server.py +277 -0
  616. solidlsp/language_servers/vue_language_server.py +953 -0
  617. solidlsp/language_servers/yaml_language_server.py +189 -0
  618. solidlsp/language_servers/zls.py +225 -0
  619. solidlsp/ls.py +3205 -0
  620. solidlsp/ls_config.py +963 -0
  621. solidlsp/ls_exceptions.py +83 -0
  622. solidlsp/ls_process.py +907 -0
  623. solidlsp/ls_request.py +383 -0
  624. solidlsp/ls_types.py +425 -0
  625. solidlsp/ls_utils.py +789 -0
  626. solidlsp/lsp_protocol_complete.md +12290 -0
  627. solidlsp/lsp_protocol_handler/lsp_constants.py +69 -0
  628. solidlsp/lsp_protocol_handler/lsp_requests.py +561 -0
  629. solidlsp/lsp_protocol_handler/lsp_types.py +5943 -0
  630. solidlsp/lsp_protocol_handler/server.py +231 -0
  631. solidlsp/serena_compat.py +207 -0
  632. solidlsp/settings.py +84 -0
  633. solidlsp/sync_from_serena.sh +9 -0
  634. solidlsp/test_serena_compat.py +188 -0
  635. solidlsp/util/cache.py +23 -0
  636. solidlsp/util/dotnet.py +46 -0
  637. solidlsp/util/metals_db_utils.py +280 -0
  638. solidlsp/util/subprocess_util.py +109 -0
  639. solidlsp/util/zip.py +128 -0
  640. solidlsp/verify_solidlsp.sh +23 -0
igrep/__init__.py ADDED
@@ -0,0 +1,23 @@
1
+ """igrep — agent-first semantic grep / RAG grep CLI."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from pathlib import Path
6
+
7
+
8
+ def _read_version() -> str:
9
+ # SSoT: <repo-root>/VERSION (plain text). Two read paths:
10
+ # 1) source tree / editable install → read the live file (no install needed)
11
+ # 2) installed wheel → fall back to package metadata baked in by hatchling
12
+ repo_file = Path(__file__).resolve().parents[2] / "VERSION"
13
+ if repo_file.is_file():
14
+ return repo_file.read_text().strip()
15
+ from importlib.metadata import PackageNotFoundError, version
16
+
17
+ try:
18
+ return version("igrep2")
19
+ except PackageNotFoundError:
20
+ return "0.0.0+unknown"
21
+
22
+
23
+ __version__ = _read_version()
igrep/__init__.pyc ADDED
Binary file
igrep/__main__.pyc ADDED
Binary file
Binary file
igrep/agent.pyc ADDED
Binary file
Binary file
igrep/agent_runs.pyc ADDED
Binary file
igrep/agent_skills.pyc ADDED
Binary file
igrep/api_client.pyc ADDED
Binary file
igrep/ask.pyc ADDED
Binary file
igrep/audit.pyc ADDED
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,19 @@
1
+ """Optional BM25 lexical index that replaces the ripgrep scan step.
2
+
3
+ SPEC: Nothing in this package runs unless `IGREP_BM25_INDEX_BACKEND` names a
4
+ backend. `igrep search` without that setting is byte-identical to the
5
+ filesystem-native pipeline it has always been.
6
+ INTENT: Centralized deployments cannot afford O(corpus) per query. An inverted
7
+ index makes candidate generation O(hits); everything after candidate
8
+ generation is untouched, so retrieval quality does not move.
9
+
10
+ See `docs/BM25_INDEX_DESIGN.md` for the semantics proof and the pinned
11
+ divergences.
12
+ """
13
+
14
+ from __future__ import annotations
15
+
16
+ from igrep.bm25_index.resolve import IndexConfig, load_config
17
+ from igrep.bm25_index.types import IndexStats, IndexUnavailable
18
+
19
+ __all__ = ["IndexConfig", "IndexStats", "IndexUnavailable", "load_config"]
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
igrep/cache_db.pyc ADDED
Binary file
igrep/chat.pyc ADDED
Binary file
Binary file
Binary file
Binary file
igrep/chat_events.pyc ADDED
Binary file
Binary file
igrep/chat_paths.pyc ADDED
Binary file
igrep/chat_repl.pyc ADDED
Binary file
igrep/chat_store.pyc ADDED
Binary file
Binary file
igrep/chat_tools.pyc ADDED
Binary file
@@ -0,0 +1,14 @@
1
+ """Transport adapters that serialise ChatEvent to SSE or NDJSON.
2
+
3
+ The two adapters MUST produce byte-identical event payloads; only the framing
4
+ differs. Re-exported for convenient imports:
5
+
6
+ from igrep.chat_transports import sse_encode, ndjson_encode
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ from igrep.chat_transports.ndjson import ndjson_encode
12
+ from igrep.chat_transports.sse import sse_encode
13
+
14
+ __all__ = ["sse_encode", "ndjson_encode"]
Binary file
Binary file
Binary file
igrep/chrome_site.pyc ADDED
Binary file
Binary file
@@ -0,0 +1,20 @@
1
+ """HAR authoring of Chrome Site sources.
2
+
3
+ The user supplies a DevTools HAR export containing two searches; igrep
4
+ discovers the site's
5
+ direct URL-request search API, compiles a deterministic `request_replay`
6
+ profile, verifies it by replaying a fresh query, and persists it as a queryable
7
+ `igrep isearch --site` source.
8
+
9
+ Design SSoT: docs/CHROME_SITE_DESIGN.md. This builds on the
10
+ existing deterministic compiler (`igrep.chrome_site_compiler`) and profile
11
+ store (`igrep.chrome_site`); it only adds the discovery + verification loop.
12
+
13
+ Public API is intentionally tiny and import-light.
14
+ """
15
+
16
+ from __future__ import annotations
17
+
18
+ from .orchestrate import AuthorReport, AuthorSpec, author_site, run_self_test
19
+
20
+ __all__ = ["AuthorReport", "AuthorSpec", "author_site", "run_self_test"]
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,16 @@
1
+ """Chunking strategies for igrep document indexing."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from igrep.chunker.base import chunk_fallback
6
+ from igrep.chunker.code import chunk_code, tokenize_symbol_name
7
+ from igrep.chunker.text import (
8
+ chunk_file,
9
+ chunk_markdown,
10
+ chunk_text,
11
+ )
12
+
13
+ __all__ = [
14
+ "chunk_code", "chunk_fallback", "chunk_file", "chunk_markdown",
15
+ "chunk_text", "tokenize_symbol_name",
16
+ ]
Binary file
igrep/chunker/base.pyc ADDED
Binary file
igrep/chunker/code.pyc ADDED
Binary file
igrep/chunker/text.pyc ADDED
Binary file
igrep/cli/__init__.py ADDED
@@ -0,0 +1,67 @@
1
+ # ruff: noqa: F401,F403
2
+ """Compatibility facade for the split igrep CLI package."""
3
+
4
+ import sys as _sys
5
+ from types import ModuleType as _ModuleType
6
+
7
+ from . import _common as _common_module
8
+ from . import _main as _main_module
9
+ from . import agent as _agent_module
10
+ from . import chat as _chat_module
11
+ from . import command_source as _command_source_module
12
+ from . import context as _context_module
13
+ from . import ops as _ops_module
14
+ from . import page_search as _page_search_module
15
+ from . import parser as _parser_module
16
+ from . import routing as _routing_module
17
+ from . import search as _search_module
18
+ from . import setup as _setup_module
19
+ from . import source_map as _source_map_module
20
+ from ._common import *
21
+ from ._main import *
22
+ from .agent import *
23
+ from .chat import *
24
+ from .command_source import *
25
+ from .context import *
26
+ from .ops import *
27
+ from .page_search import *
28
+ from .parser import *
29
+ from .routing import *
30
+ from .search import *
31
+ from .setup import *
32
+ from .source_map import *
33
+
34
+ _COMPAT_MODULES = (
35
+ _common_module,
36
+ _main_module,
37
+ _agent_module,
38
+ _chat_module,
39
+ _command_source_module,
40
+ _context_module,
41
+ _ops_module,
42
+ _page_search_module,
43
+ _parser_module,
44
+ _routing_module,
45
+ _search_module,
46
+ _setup_module,
47
+ _source_map_module,
48
+ )
49
+ _COMPAT_TARGETS: dict[str, list[_ModuleType]] = {}
50
+ _facade_names = set(globals())
51
+ for _module in _COMPAT_MODULES:
52
+ for _name in _facade_names.intersection(vars(_module)):
53
+ if _name.startswith("__"):
54
+ continue
55
+ _COMPAT_TARGETS.setdefault(_name, []).append(_module)
56
+
57
+
58
+ class _CliFacadeModule(_ModuleType):
59
+ """Keep old single-module monkeypatch semantics after the CLI split."""
60
+
61
+ def __setattr__(self, name: str, value: object) -> None:
62
+ super().__setattr__(name, value)
63
+ for module in _COMPAT_TARGETS.get(name, ()):
64
+ setattr(module, name, value)
65
+
66
+
67
+ _sys.modules[__name__].__class__ = _CliFacadeModule
igrep/cli/__init__.pyc ADDED
Binary file
igrep/cli/__main__.pyc ADDED
Binary file
igrep/cli/_common.pyc ADDED
Binary file
igrep/cli/_main.pyc ADDED
Binary file
igrep/cli/agent.pyc ADDED
Binary file
igrep/cli/bm25.pyc ADDED
Binary file
igrep/cli/chat.pyc ADDED
Binary file
Binary file
Binary file
igrep/cli/context.pyc ADDED
Binary file
Binary file
igrep/cli/ops.pyc ADDED
Binary file
Binary file
igrep/cli/parser.pyc ADDED
Binary file
igrep/cli/routing.pyc ADDED
Binary file
igrep/cli/search.pyc ADDED
Binary file
igrep/cli/setup.pyc ADDED
Binary file
Binary file
Binary file
igrep/clients.pyc ADDED
Binary file
Binary file
Binary file
igrep/config.pyc ADDED
Binary file
Binary file
igrep/daemon.pyc ADDED
Binary file
@@ -0,0 +1,165 @@
1
+ # igrep plugin for DeepSeek Harness
2
+
3
+ 一个原生 cordis 插件(`name` / `inject` / `apply` 命名导出,和第一方
4
+ `@deepseek-ai/dsh-web-search-*` 同形),把 igrep 的检索与 Agent Memory 注册进
5
+ DSH 的既有 seam。它不拥有任何 ctx key:
6
+
7
+ | Seam | 注册内容 |
8
+ |---|---|
9
+ | `ctx.tools` | `igrep_search`、`memory_search`、`memory_record`,可选 `igrep_web_search` |
10
+ | `ctx.skills` | 可选注册 `igrep` routing skill;只有带 skill loader 的 preset 可用 |
11
+ | `ctx.web` | id 为 `igrep` 的 `WebSearchProvider` |
12
+ | `ctx.systemPrompt` | 工具引导 + 常驻用户 profile;完整 persona 可拒绝后续拼装 |
13
+ | `tools/post-execute` | grep/bash 失败时刻每 turn 至多注入一次 routing reminder |
14
+
15
+ 插件是公开 `igrep` CLI 的薄客户端:不重实现检索、不读 igrep 配置、不解析
16
+ igrep 的磁盘产物——与 OpenClaw / Hermes adapter 同一契约。
17
+
18
+ 本地检索只暴露一个模型入口 `igrep_search`,不同时挂载同义 MCP search 工具。
19
+ **工具名、description 与参数 schema 是唯一跨 preset 的主动路由契约。** 它覆盖
20
+ 概念/意图/陌生代码,也覆盖不知道精确字面量或文件时的仓库短事实,例如 URL、
21
+ 地址、route、path 和配置值。精确 literal、regex、已知文件和穷举扫描仍走 grep。
22
+ 本地工具刻意把必填参数命名为 `user_question` 而不是 `query`:字段名本身要求复制
23
+ 用户完整问句,避免搜索引擎式 keyword-soup 先验压过 description。
24
+
25
+ `standard` 等 preset 还会叠加 system prompt 与 skill catalog;`minimal` 的 persona 是
26
+ complete,且没有 skill loader,因此看不到这两层。这不是插件加载失败,插件必须仅靠
27
+ `igrep_search` schema 仍可正确路由。失败提醒负责恢复,结果页尾部负责成功后的跟读与
28
+ 多跳续搜,二者都不是首次选择的替代品。
29
+
30
+ 后置提醒只在**失败时刻**触发——`grep` 工具的 pattern 是自然语言、或结果 thin
31
+ (少于 2 条匹配);`bash` 里的 rg/grep **前台命令**从结构化 `stdout` 判定结果 thin,
32
+ 后台命令等待真实输出,不从渲染出的 `(no output)` / exit-code 文本猜结果数。自然语言
33
+ 判定也覆盖保守的无空格 CJK 问句,同时继续排除 regex。提醒从 DSH session log 读取
34
+ 本 turn 最近一条真实用户消息,原样起草 `igrep_search(user_question=…)`;绝不从 shell
35
+ regex、grep pattern 或答案形态反推问题。若日志里没有真实用户问句,只给通用提示,
36
+ 不生成可执行的伪参数。每 turn 至多一条,避免在同一个失败循环里重复收费。决策矩阵
37
+ 在 `search-routing.mjs`,真实 URL regex、前后台结果形态与空历史回归由测试锁定。
38
+
39
+ ## 安装
40
+
41
+ ```bash
42
+ igrep setup deepseek-harness # 默认 web profile
43
+ igrep setup deepseek-harness --profile headless
44
+ ```
45
+
46
+ 安装命令以 `file:` 实体包把随 igrep 发布的本地 bundle 交给
47
+ `dsh plugin --profile <name> add`。DSH 负责把 `@igrep/dsh-plugin` 写进 profile
48
+ 依赖、挂载本包的 `cordis.patch.yml`,因此 `dsh plugin list`、更新和删除共用同一
49
+ 生命周期。不能使用 `link:`:插件内部的 Node import 必须从 profile 安装树向上
50
+ 解析 DSH 自带的包。`@deepseek-ai/dsh-tools` 与 `@deepseek-ai/dsh-llm` 是必需
51
+ peer,由 DSH profile 的 `node_modules` fallback 提供,不由插件安装第二份。
52
+
53
+ 确认与卸载:
54
+
55
+ ```bash
56
+ dsh plugin --profile web list --depth 0
57
+ igrep setup deepseek-harness --profile web --uninstall
58
+ ```
59
+
60
+ ## 配置
61
+
62
+ | 键 | 默认 | 含义 |
63
+ |---|---|---|
64
+ | `command` | `igrep` | igrep CLI 命令或路径(支持 `~`) |
65
+ | `timeoutMs` | `60000` | 单次工具调用的 igrep 子进程预算 |
66
+ | `searchMode` | `normal` | 本地与 web 检索档位:`fast` / `normal` / `ultra` |
67
+ | `maxResults` | `8` | 本地与 web 检索硬上限(最高 20;模型只能下调) |
68
+ | `search` | `true` | 注册 `igrep_search` |
69
+ | `webProvider` | `true` | 把 igrep 注册为 `ctx.web` 的 search provider |
70
+ | `webTool` | `false` | 额外注册独立的 `igrep_web_search` 工具 |
71
+ | `memory` | `true` | 注册 `memory_search` + `memory_record` + wake + ingest |
72
+ | `memorySearchMode` | `ultra` | `mem search` 档位(产品默认即 ultra) |
73
+ | `memoryMaxResults` | `10` | 记忆检索硬上限(最高 50;模型只能下调) |
74
+ | `ingest` | `true` | 提交每轮对话(关掉则记忆库只读) |
75
+ | `wake` | `true` | 把常驻 profile 注入 system prompt |
76
+ | `ingestTimeoutMs` | `30000` | `mem ingest` 预算 |
77
+ | `maintainTimeoutMs` | `300000` | `mem maintain` 预算 |
78
+ | `wakeTimeoutMs` | `10000` | `mem wake` 预算 |
79
+ | `wakeMaxContextChars` | `12000` | 常驻 profile 字符预算 |
80
+
81
+ ## Web 检索:一个模型可见面
82
+
83
+ 默认走 `ctx.web` provider,因为 DSH 的 `web_search`(`dsh-tool-web`)已经是
84
+ 模型可见的 web 入口——再注册一个 `igrep_web_search` 只会让模型面对两个语义
85
+ 重叠的工具。
86
+
87
+ 若 composition 里还注册了 exa / perplexity 等 provider,seam 会以
88
+ `WEB_PROVIDER_AMBIGUOUS` 拒绝自动选择。显式选定:
89
+
90
+ ```yaml
91
+ - id: web
92
+ name: '@deepseek-ai/dsh-web'
93
+ config:
94
+ searchProvider: igrep
95
+ ```
96
+
97
+ 没有 `dsh-tool-web` 的 composition 用 `webTool: true` 拿独立工具。
98
+
99
+ provider 注册走 `ctx.inject(['web'], …)` 而不是 `inject` 声明或 apply 期的
100
+ `if (ctx.web)`:cordis 的 `Inject` 只有"名字数组"和"名字→intercept 映射"两种
101
+ 形式,**没有 optional**——把 `web` 写进 `inject` 会让没有 web 能力的
102
+ composition 连本地检索和记忆一起丢掉;而 apply 期的裸判断在 `dsh-web` 后于本
103
+ 插件加载时会静默不注册。运行期 inject 形式两个问题都不存在。
104
+
105
+ `available()` 恒为 `true`:provider 解析的 SSoT 是 igrep 的
106
+ `config.resolve_web_search_provider`,在插件里复刻一份凭证判断就是第二个
107
+ 真相源。因此没配 provider 时是执行期带着 igrep 原文的响亮失败,而不是从
108
+ 选择里静默消失——"没配 provider" 绝不能被读成"没有证据"。
109
+
110
+ ## Memory 生命周期
111
+
112
+ ```text
113
+ session/event -> 投影可见轮次到 .igrep/dsh-transcripts/<session>.jsonl
114
+ agent/turn-stopping -> igrep mem ingest (awaited,轮次关闭前提交)
115
+ session/disposed -> 最终 drain + igrep mem maintain
116
+ agent/session-start -> igrep mem wake 刷新常驻 profile
117
+ ```
118
+
119
+ DSH 自己的 session log 是 `.jsonl.zstd`,行是 `SessionEvent`(`assistant/chunk`、
120
+ `turn/end` …)。`igrep mem ingest` 读的是通用 role/content JSONL,直接指向
121
+ harness transcript 会投影出**零行**——记忆最贵的失败。所以插件在进程内把可见
122
+ 轮次投影成 igrep 的 canonical 行形状,再 ingest 那个文件。
123
+
124
+ 可见证据只有两类:用户亲自写的 `user/message`(`source.kind === 'user'`)和模型
125
+ 的 `assistant/message` 文本。plugin 注入的上下文、tool result、`assistant/chunk`
126
+ 增量、`reasoning` 块都不是"用户说过/被告知"的内容,一律不进记忆。
127
+
128
+ 同一 transcript 的 append 与 ingest 走**一条串行链**:`session/event` 是 emit 点,
129
+ host 不 await listener,并发 `appendFile` 会乱序落盘——答案排到问题前面。
130
+
131
+ profile 字节只经 `mem wake` 输出到达 host,插件从不直接读 `profile.md`。
132
+
133
+ `memory_record` 是 Agent 自写笔记(`add` / `replace` / `remove`)的唯一写面,走与
134
+ `memory_search` 同一条 `mem-api` JSON 通道(`memory-record`),字段逐一透传;harness 的
135
+ value-schema DSL 没有 minLength/maxLength,长度上限只由产品校验。产品侧
136
+ `InvalidArgumentsError` 原文作为 tool error 回给模型(写满时错误里带当前全部笔记),
137
+ 成功时产品 envelope 原样返回。`MEMORY.md` 经 `mem wake` 随 profile 注入
138
+ `{{igrep_memory_profile}}`。
139
+
140
+ wake 缓存按 workspace(session cwd)键。尚未 refresh 的 workspace 读到空,**不**
141
+ 回退到别的 workspace 的 profile——多用户宿主(每个用户一个 cwd,如 ibot)靠这条
142
+ 不串 profile;profile 晚一轮是良性的,别人的 profile 不是。
143
+
144
+ ## 测试
145
+
146
+ ```bash
147
+ cd integrations/deepseek-harness/igrep-dsh && bun test tests/*.test.js
148
+ ```
149
+
150
+ 契约测试:stub 掉 `@deepseek-ai/dsh-tools` 与假 igrep CLI,断言插件交给 harness
151
+ 的工具定义、argv、以及记忆生命周期的调用顺序。
152
+
153
+ 真实加载门(opt-in,需要目标 checkout 已 `pnpm install && pnpm run build:lib`):
154
+
155
+ ```bash
156
+ ./scripts/verify-deepseek-harness-live [path-to-deepseek-harness]
157
+ ```
158
+
159
+ 它先用**真实** DSH profile manager 验证 add/list/remove,再用**真实**的
160
+ `defineTool` 编译工具 spec、用**真实** cordis 挂载插件,并通过完整 persona 的真实
161
+ system-prompt/tool request 组装锁定跨 preset 的 `igrep_search` schema;同时锁定结构化
162
+ 前后台 bash 结果、原问题提醒和结果硬上限。stub 的
163
+ `defineTool` 是 identity,抓不到会在加载期 `authorError` 的 schema 错误,也证明
164
+ 不了 cordis 认不认这个插件形状——`inject` 的对象形式就是这样被抓到的。它只向
165
+ DSH checkout 做符号链接,不写入上游仓库。
@@ -0,0 +1,8 @@
1
+ # DSH owns this profile layer after `dsh plugin --profile <name> add`.
2
+ - insert:
3
+ - id: igrep
4
+ name: '@igrep/dsh-plugin'
5
+ config:
6
+ command: igrep
7
+ searchMode: normal
8
+ memorySearchMode: ultra