@blxzer/cursor-trellis 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (687) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/LICENSE +235 -0
  3. package/README.md +9 -0
  4. package/bin/smart-search.js +79 -0
  5. package/bin/trellis.js +3 -0
  6. package/dist/cli/index.d.ts +3 -0
  7. package/dist/cli/index.d.ts.map +1 -0
  8. package/dist/cli/index.js +258 -0
  9. package/dist/cli/index.js.map +1 -0
  10. package/dist/commands/channel/adapters/claude.d.ts +29 -0
  11. package/dist/commands/channel/adapters/claude.d.ts.map +1 -0
  12. package/dist/commands/channel/adapters/claude.js +203 -0
  13. package/dist/commands/channel/adapters/claude.js.map +1 -0
  14. package/dist/commands/channel/adapters/codex.d.ts +85 -0
  15. package/dist/commands/channel/adapters/codex.d.ts.map +1 -0
  16. package/dist/commands/channel/adapters/codex.js +505 -0
  17. package/dist/commands/channel/adapters/codex.js.map +1 -0
  18. package/dist/commands/channel/adapters/index.d.ts +84 -0
  19. package/dist/commands/channel/adapters/index.d.ts.map +1 -0
  20. package/dist/commands/channel/adapters/index.js +115 -0
  21. package/dist/commands/channel/adapters/index.js.map +1 -0
  22. package/dist/commands/channel/adapters/types.d.ts +33 -0
  23. package/dist/commands/channel/adapters/types.d.ts.map +1 -0
  24. package/dist/commands/channel/adapters/types.js +2 -0
  25. package/dist/commands/channel/adapters/types.js.map +1 -0
  26. package/dist/commands/channel/agent-loader.d.ts +32 -0
  27. package/dist/commands/channel/agent-loader.d.ts.map +1 -0
  28. package/dist/commands/channel/agent-loader.js +154 -0
  29. package/dist/commands/channel/agent-loader.js.map +1 -0
  30. package/dist/commands/channel/context-loader.d.ts +26 -0
  31. package/dist/commands/channel/context-loader.d.ts.map +1 -0
  32. package/dist/commands/channel/context-loader.js +290 -0
  33. package/dist/commands/channel/context-loader.js.map +1 -0
  34. package/dist/commands/channel/context.d.ts +16 -0
  35. package/dist/commands/channel/context.d.ts.map +1 -0
  36. package/dist/commands/channel/context.js +83 -0
  37. package/dist/commands/channel/context.js.map +1 -0
  38. package/dist/commands/channel/create.d.ts +27 -0
  39. package/dist/commands/channel/create.d.ts.map +1 -0
  40. package/dist/commands/channel/create.js +39 -0
  41. package/dist/commands/channel/create.js.map +1 -0
  42. package/dist/commands/channel/dev-parse-trace.d.ts +14 -0
  43. package/dist/commands/channel/dev-parse-trace.d.ts.map +1 -0
  44. package/dist/commands/channel/dev-parse-trace.js +70 -0
  45. package/dist/commands/channel/dev-parse-trace.js.map +1 -0
  46. package/dist/commands/channel/guard.d.ts +150 -0
  47. package/dist/commands/channel/guard.d.ts.map +1 -0
  48. package/dist/commands/channel/guard.js +474 -0
  49. package/dist/commands/channel/guard.js.map +1 -0
  50. package/dist/commands/channel/index.d.ts +3 -0
  51. package/dist/commands/channel/index.d.ts.map +1 -0
  52. package/dist/commands/channel/index.js +531 -0
  53. package/dist/commands/channel/index.js.map +1 -0
  54. package/dist/commands/channel/interrupt.d.ts +10 -0
  55. package/dist/commands/channel/interrupt.d.ts.map +1 -0
  56. package/dist/commands/channel/interrupt.js +22 -0
  57. package/dist/commands/channel/interrupt.js.map +1 -0
  58. package/dist/commands/channel/kill.d.ts +7 -0
  59. package/dist/commands/channel/kill.d.ts.map +1 -0
  60. package/dist/commands/channel/kill.js +121 -0
  61. package/dist/commands/channel/kill.js.map +1 -0
  62. package/dist/commands/channel/list.d.ts +17 -0
  63. package/dist/commands/channel/list.d.ts.map +1 -0
  64. package/dist/commands/channel/list.js +233 -0
  65. package/dist/commands/channel/list.js.map +1 -0
  66. package/dist/commands/channel/messages.d.ts +15 -0
  67. package/dist/commands/channel/messages.d.ts.map +1 -0
  68. package/dist/commands/channel/messages.js +245 -0
  69. package/dist/commands/channel/messages.js.map +1 -0
  70. package/dist/commands/channel/rm.d.ts +27 -0
  71. package/dist/commands/channel/rm.d.ts.map +1 -0
  72. package/dist/commands/channel/rm.js +216 -0
  73. package/dist/commands/channel/rm.js.map +1 -0
  74. package/dist/commands/channel/run.d.ts +30 -0
  75. package/dist/commands/channel/run.d.ts.map +1 -0
  76. package/dist/commands/channel/run.js +130 -0
  77. package/dist/commands/channel/run.js.map +1 -0
  78. package/dist/commands/channel/send.d.ts +11 -0
  79. package/dist/commands/channel/send.d.ts.map +1 -0
  80. package/dist/commands/channel/send.js +24 -0
  81. package/dist/commands/channel/send.js.map +1 -0
  82. package/dist/commands/channel/spawn.d.ts +40 -0
  83. package/dist/commands/channel/spawn.d.ts.map +1 -0
  84. package/dist/commands/channel/spawn.js +244 -0
  85. package/dist/commands/channel/spawn.js.map +1 -0
  86. package/dist/commands/channel/store/events.d.ts +39 -0
  87. package/dist/commands/channel/store/events.d.ts.map +1 -0
  88. package/dist/commands/channel/store/events.js +87 -0
  89. package/dist/commands/channel/store/events.js.map +1 -0
  90. package/dist/commands/channel/store/filter.d.ts +3 -0
  91. package/dist/commands/channel/store/filter.d.ts.map +1 -0
  92. package/dist/commands/channel/store/filter.js +2 -0
  93. package/dist/commands/channel/store/filter.js.map +1 -0
  94. package/dist/commands/channel/store/lock.d.ts +23 -0
  95. package/dist/commands/channel/store/lock.d.ts.map +1 -0
  96. package/dist/commands/channel/store/lock.js +99 -0
  97. package/dist/commands/channel/store/lock.js.map +1 -0
  98. package/dist/commands/channel/store/paths.d.ts +63 -0
  99. package/dist/commands/channel/store/paths.d.ts.map +1 -0
  100. package/dist/commands/channel/store/paths.js +246 -0
  101. package/dist/commands/channel/store/paths.js.map +1 -0
  102. package/dist/commands/channel/store/schema.d.ts +27 -0
  103. package/dist/commands/channel/store/schema.d.ts.map +1 -0
  104. package/dist/commands/channel/store/schema.js +34 -0
  105. package/dist/commands/channel/store/schema.js.map +1 -0
  106. package/dist/commands/channel/store/thread-state.d.ts +5 -0
  107. package/dist/commands/channel/store/thread-state.d.ts.map +1 -0
  108. package/dist/commands/channel/store/thread-state.js +16 -0
  109. package/dist/commands/channel/store/thread-state.js.map +1 -0
  110. package/dist/commands/channel/store/watch.d.ts +19 -0
  111. package/dist/commands/channel/store/watch.d.ts.map +1 -0
  112. package/dist/commands/channel/store/watch.js +146 -0
  113. package/dist/commands/channel/store/watch.js.map +1 -0
  114. package/dist/commands/channel/supervisor/idle.d.ts +46 -0
  115. package/dist/commands/channel/supervisor/idle.d.ts.map +1 -0
  116. package/dist/commands/channel/supervisor/idle.js +72 -0
  117. package/dist/commands/channel/supervisor/idle.js.map +1 -0
  118. package/dist/commands/channel/supervisor/inbox.d.ts +30 -0
  119. package/dist/commands/channel/supervisor/inbox.d.ts.map +1 -0
  120. package/dist/commands/channel/supervisor/inbox.js +160 -0
  121. package/dist/commands/channel/supervisor/inbox.js.map +1 -0
  122. package/dist/commands/channel/supervisor/shutdown.d.ts +68 -0
  123. package/dist/commands/channel/supervisor/shutdown.d.ts.map +1 -0
  124. package/dist/commands/channel/supervisor/shutdown.js +146 -0
  125. package/dist/commands/channel/supervisor/shutdown.js.map +1 -0
  126. package/dist/commands/channel/supervisor/stdout.d.ts +51 -0
  127. package/dist/commands/channel/supervisor/stdout.d.ts.map +1 -0
  128. package/dist/commands/channel/supervisor/stdout.js +121 -0
  129. package/dist/commands/channel/supervisor/stdout.js.map +1 -0
  130. package/dist/commands/channel/supervisor/turns.d.ts +31 -0
  131. package/dist/commands/channel/supervisor/turns.d.ts.map +1 -0
  132. package/dist/commands/channel/supervisor/turns.js +45 -0
  133. package/dist/commands/channel/supervisor/turns.js.map +1 -0
  134. package/dist/commands/channel/supervisor/warning.d.ts +48 -0
  135. package/dist/commands/channel/supervisor/warning.d.ts.map +1 -0
  136. package/dist/commands/channel/supervisor/warning.js +77 -0
  137. package/dist/commands/channel/supervisor/warning.js.map +1 -0
  138. package/dist/commands/channel/supervisor.d.ts +59 -0
  139. package/dist/commands/channel/supervisor.d.ts.map +1 -0
  140. package/dist/commands/channel/supervisor.js +344 -0
  141. package/dist/commands/channel/supervisor.js.map +1 -0
  142. package/dist/commands/channel/text-body.d.ts +13 -0
  143. package/dist/commands/channel/text-body.d.ts.map +1 -0
  144. package/dist/commands/channel/text-body.js +47 -0
  145. package/dist/commands/channel/text-body.js.map +1 -0
  146. package/dist/commands/channel/threads.d.ts +39 -0
  147. package/dist/commands/channel/threads.d.ts.map +1 -0
  148. package/dist/commands/channel/threads.js +106 -0
  149. package/dist/commands/channel/threads.js.map +1 -0
  150. package/dist/commands/channel/title.d.ts +12 -0
  151. package/dist/commands/channel/title.d.ts.map +1 -0
  152. package/dist/commands/channel/title.js +24 -0
  153. package/dist/commands/channel/title.js.map +1 -0
  154. package/dist/commands/channel/wait.d.ts +17 -0
  155. package/dist/commands/channel/wait.d.ts.map +1 -0
  156. package/dist/commands/channel/wait.js +75 -0
  157. package/dist/commands/channel/wait.js.map +1 -0
  158. package/dist/commands/init.d.ts +62 -0
  159. package/dist/commands/init.d.ts.map +1 -0
  160. package/dist/commands/init.js +1656 -0
  161. package/dist/commands/init.js.map +1 -0
  162. package/dist/commands/mem.d.ts +30 -0
  163. package/dist/commands/mem.d.ts.map +1 -0
  164. package/dist/commands/mem.js +424 -0
  165. package/dist/commands/mem.js.map +1 -0
  166. package/dist/commands/rollout.d.ts +34 -0
  167. package/dist/commands/rollout.d.ts.map +1 -0
  168. package/dist/commands/rollout.js +102 -0
  169. package/dist/commands/rollout.js.map +1 -0
  170. package/dist/commands/uninstall.d.ts +27 -0
  171. package/dist/commands/uninstall.d.ts.map +1 -0
  172. package/dist/commands/uninstall.js +339 -0
  173. package/dist/commands/uninstall.js.map +1 -0
  174. package/dist/commands/update.d.ts +80 -0
  175. package/dist/commands/update.d.ts.map +1 -0
  176. package/dist/commands/update.js +2185 -0
  177. package/dist/commands/update.js.map +1 -0
  178. package/dist/commands/upgrade.d.ts +28 -0
  179. package/dist/commands/upgrade.d.ts.map +1 -0
  180. package/dist/commands/upgrade.js +84 -0
  181. package/dist/commands/upgrade.js.map +1 -0
  182. package/dist/commands/workflow.d.ts +35 -0
  183. package/dist/commands/workflow.d.ts.map +1 -0
  184. package/dist/commands/workflow.js +219 -0
  185. package/dist/commands/workflow.js.map +1 -0
  186. package/dist/configurators/antigravity.d.ts +7 -0
  187. package/dist/configurators/antigravity.d.ts.map +1 -0
  188. package/dist/configurators/antigravity.js +19 -0
  189. package/dist/configurators/antigravity.js.map +1 -0
  190. package/dist/configurators/claude.d.ts +9 -0
  191. package/dist/configurators/claude.d.ts.map +1 -0
  192. package/dist/configurators/claude.js +72 -0
  193. package/dist/configurators/claude.js.map +1 -0
  194. package/dist/configurators/codebuddy.d.ts +10 -0
  195. package/dist/configurators/codebuddy.d.ts.map +1 -0
  196. package/dist/configurators/codebuddy.js +30 -0
  197. package/dist/configurators/codebuddy.js.map +1 -0
  198. package/dist/configurators/codex.d.ts +8 -0
  199. package/dist/configurators/codex.d.ts.map +1 -0
  200. package/dist/configurators/codex.js +87 -0
  201. package/dist/configurators/codex.js.map +1 -0
  202. package/dist/configurators/copilot.d.ts +10 -0
  203. package/dist/configurators/copilot.d.ts.map +1 -0
  204. package/dist/configurators/copilot.js +51 -0
  205. package/dist/configurators/copilot.js.map +1 -0
  206. package/dist/configurators/cursor.d.ts +20 -0
  207. package/dist/configurators/cursor.d.ts.map +1 -0
  208. package/dist/configurators/cursor.js +49 -0
  209. package/dist/configurators/cursor.js.map +1 -0
  210. package/dist/configurators/cursor2plus-local.d.ts +6 -0
  211. package/dist/configurators/cursor2plus-local.d.ts.map +1 -0
  212. package/dist/configurators/cursor2plus-local.js +20 -0
  213. package/dist/configurators/cursor2plus-local.js.map +1 -0
  214. package/dist/configurators/droid.d.ts +10 -0
  215. package/dist/configurators/droid.d.ts.map +1 -0
  216. package/dist/configurators/droid.js +30 -0
  217. package/dist/configurators/droid.js.map +1 -0
  218. package/dist/configurators/gemini.d.ts +16 -0
  219. package/dist/configurators/gemini.d.ts.map +1 -0
  220. package/dist/configurators/gemini.js +38 -0
  221. package/dist/configurators/gemini.js.map +1 -0
  222. package/dist/configurators/index.d.ts +69 -0
  223. package/dist/configurators/index.d.ts.map +1 -0
  224. package/dist/configurators/index.js +395 -0
  225. package/dist/configurators/index.js.map +1 -0
  226. package/dist/configurators/kilo.d.ts +7 -0
  227. package/dist/configurators/kilo.d.ts.map +1 -0
  228. package/dist/configurators/kilo.js +19 -0
  229. package/dist/configurators/kilo.js.map +1 -0
  230. package/dist/configurators/kiro.d.ts +8 -0
  231. package/dist/configurators/kiro.d.ts.map +1 -0
  232. package/dist/configurators/kiro.js +24 -0
  233. package/dist/configurators/kiro.js.map +1 -0
  234. package/dist/configurators/opencode.d.ts +14 -0
  235. package/dist/configurators/opencode.d.ts.map +1 -0
  236. package/dist/configurators/opencode.js +96 -0
  237. package/dist/configurators/opencode.js.map +1 -0
  238. package/dist/configurators/pi.d.ts +3 -0
  239. package/dist/configurators/pi.d.ts.map +1 -0
  240. package/dist/configurators/pi.js +45 -0
  241. package/dist/configurators/pi.js.map +1 -0
  242. package/dist/configurators/qoder.d.ts +11 -0
  243. package/dist/configurators/qoder.d.ts.map +1 -0
  244. package/dist/configurators/qoder.js +31 -0
  245. package/dist/configurators/qoder.js.map +1 -0
  246. package/dist/configurators/shared.d.ts +183 -0
  247. package/dist/configurators/shared.d.ts.map +1 -0
  248. package/dist/configurators/shared.js +557 -0
  249. package/dist/configurators/shared.js.map +1 -0
  250. package/dist/configurators/windsurf.d.ts +7 -0
  251. package/dist/configurators/windsurf.d.ts.map +1 -0
  252. package/dist/configurators/windsurf.js +19 -0
  253. package/dist/configurators/windsurf.js.map +1 -0
  254. package/dist/configurators/workflow.d.ts +46 -0
  255. package/dist/configurators/workflow.d.ts.map +1 -0
  256. package/dist/configurators/workflow.js +180 -0
  257. package/dist/configurators/workflow.js.map +1 -0
  258. package/dist/constants/paths.d.ts +70 -0
  259. package/dist/constants/paths.d.ts.map +1 -0
  260. package/dist/constants/paths.js +79 -0
  261. package/dist/constants/paths.js.map +1 -0
  262. package/dist/constants/version.d.ts +9 -0
  263. package/dist/constants/version.d.ts.map +1 -0
  264. package/dist/constants/version.js +15 -0
  265. package/dist/constants/version.js.map +1 -0
  266. package/dist/index.d.ts +9 -0
  267. package/dist/index.d.ts.map +1 -0
  268. package/dist/index.js +9 -0
  269. package/dist/index.js.map +1 -0
  270. package/dist/migrations/index.d.ts +62 -0
  271. package/dist/migrations/index.d.ts.map +1 -0
  272. package/dist/migrations/index.js +187 -0
  273. package/dist/migrations/index.js.map +1 -0
  274. package/dist/migrations/manifests/0.1.0.json +9 -0
  275. package/dist/templates/claude/agents/trellis-check.md +124 -0
  276. package/dist/templates/claude/agents/trellis-implement.md +110 -0
  277. package/dist/templates/claude/agents/trellis-research.md +137 -0
  278. package/dist/templates/claude/index.d.ts +22 -0
  279. package/dist/templates/claude/index.d.ts.map +1 -0
  280. package/dist/templates/claude/index.js +46 -0
  281. package/dist/templates/claude/index.js.map +1 -0
  282. package/dist/templates/claude/settings.json +84 -0
  283. package/dist/templates/codebuddy/agents/trellis-check.md +115 -0
  284. package/dist/templates/codebuddy/agents/trellis-implement.md +110 -0
  285. package/dist/templates/codebuddy/agents/trellis-research.md +137 -0
  286. package/dist/templates/codebuddy/index.d.ts +15 -0
  287. package/dist/templates/codebuddy/index.d.ts.map +1 -0
  288. package/dist/templates/codebuddy/index.js +15 -0
  289. package/dist/templates/codebuddy/index.js.map +1 -0
  290. package/dist/templates/codebuddy/settings.json +70 -0
  291. package/dist/templates/codex/agents/trellis-check.toml +67 -0
  292. package/dist/templates/codex/agents/trellis-implement.toml +40 -0
  293. package/dist/templates/codex/agents/trellis-research.toml +73 -0
  294. package/dist/templates/codex/config.toml +28 -0
  295. package/dist/templates/codex/hooks/session-start.py +575 -0
  296. package/dist/templates/codex/hooks.json +15 -0
  297. package/dist/templates/codex/index.d.ts +39 -0
  298. package/dist/templates/codex/index.d.ts.map +1 -0
  299. package/dist/templates/codex/index.js +85 -0
  300. package/dist/templates/codex/index.js.map +1 -0
  301. package/dist/templates/codex/skills/before-dev/SKILL.md +40 -0
  302. package/dist/templates/codex/skills/brainstorm/SKILL.md +112 -0
  303. package/dist/templates/codex/skills/break-loop/SKILL.md +130 -0
  304. package/dist/templates/codex/skills/check/SKILL.md +98 -0
  305. package/dist/templates/codex/skills/check-cross-layer/SKILL.md +158 -0
  306. package/dist/templates/codex/skills/create-command/SKILL.md +101 -0
  307. package/dist/templates/codex/skills/finish-work/SKILL.md +90 -0
  308. package/dist/templates/codex/skills/improve-ut/SKILL.md +69 -0
  309. package/dist/templates/codex/skills/integrate-skill/SKILL.md +221 -0
  310. package/dist/templates/codex/skills/onboard/SKILL.md +363 -0
  311. package/dist/templates/codex/skills/record-session/SKILL.md +67 -0
  312. package/dist/templates/codex/skills/start/SKILL.md +66 -0
  313. package/dist/templates/codex/skills/update-spec/SKILL.md +335 -0
  314. package/dist/templates/common/bundled-skills/smart-search-cli/SKILL.md +388 -0
  315. package/dist/templates/common/bundled-skills/smart-search-cli/agents/openai.yaml +3 -0
  316. package/dist/templates/common/bundled-skills/smart-search-cli/examples/batch-search.md +98 -0
  317. package/dist/templates/common/bundled-skills/smart-search-cli/examples/evidence-gathering.md +89 -0
  318. package/dist/templates/common/bundled-skills/smart-search-cli/references/cli-contract.md +337 -0
  319. package/dist/templates/common/bundled-skills/trellis-cursor2plus-setup/SKILL.md +62 -0
  320. package/dist/templates/common/bundled-skills/trellis-meta/SKILL.md +73 -0
  321. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/add-project-local-conventions.md +83 -0
  322. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-agents.md +54 -0
  323. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-context-loading.md +84 -0
  324. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-hooks.md +57 -0
  325. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-skills-or-commands.md +80 -0
  326. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-spec-structure.md +83 -0
  327. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-task-lifecycle.md +88 -0
  328. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-workflow.md +65 -0
  329. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/overview.md +55 -0
  330. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/context-injection.md +68 -0
  331. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/generated-files.md +80 -0
  332. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/overview.md +51 -0
  333. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/spec-system.md +102 -0
  334. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/task-system.md +133 -0
  335. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/workflow.md +75 -0
  336. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/workspace-memory.md +71 -0
  337. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/agents.md +80 -0
  338. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/hooks-and-settings.md +69 -0
  339. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/overview.md +61 -0
  340. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/platform-map.md +76 -0
  341. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/skills-and-commands.md +128 -0
  342. package/dist/templates/common/bundled-skills/trellis-micro-grill/SKILL.md +47 -0
  343. package/dist/templates/common/bundled-skills/trellis-skill-creator/SKILL.md +44 -0
  344. package/dist/templates/common/bundled-skills/trellis-skill-creator/references/authoring-rules.md +97 -0
  345. package/dist/templates/common/bundled-skills/trellis-skill-creator/references/review-checklist.md +47 -0
  346. package/dist/templates/common/bundled-skills/trellis-skill-creator/references/trellis-skill-locations.md +52 -0
  347. package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/SKILL.md +41 -0
  348. package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/mcp-setup.md +90 -0
  349. package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/repository-analysis.md +59 -0
  350. package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/spec-task-planning.md +61 -0
  351. package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/spec-writing.md +70 -0
  352. package/dist/templates/common/commands/continue.md +63 -0
  353. package/dist/templates/common/commands/finish-work.md +68 -0
  354. package/dist/templates/common/commands/start.md +69 -0
  355. package/dist/templates/common/index.d.ts +48 -0
  356. package/dist/templates/common/index.d.ts.map +1 -0
  357. package/dist/templates/common/index.js +104 -0
  358. package/dist/templates/common/index.js.map +1 -0
  359. package/dist/templates/common/skills/before-dev.md +35 -0
  360. package/dist/templates/common/skills/brainstorm.md +164 -0
  361. package/dist/templates/common/skills/break-loop.md +125 -0
  362. package/dist/templates/common/skills/check.md +106 -0
  363. package/dist/templates/common/skills/update-spec.md +364 -0
  364. package/dist/templates/copilot/hooks/session-start.py +557 -0
  365. package/dist/templates/copilot/hooks.json +19 -0
  366. package/dist/templates/copilot/index.d.ts +23 -0
  367. package/dist/templates/copilot/index.d.ts.map +1 -0
  368. package/dist/templates/copilot/index.js +54 -0
  369. package/dist/templates/copilot/index.js.map +1 -0
  370. package/dist/templates/copilot/prompts/before-dev.prompt.md +39 -0
  371. package/dist/templates/copilot/prompts/brainstorm.prompt.md +111 -0
  372. package/dist/templates/copilot/prompts/break-loop.prompt.md +129 -0
  373. package/dist/templates/copilot/prompts/check-cross-layer.prompt.md +157 -0
  374. package/dist/templates/copilot/prompts/check.prompt.md +97 -0
  375. package/dist/templates/copilot/prompts/create-command.prompt.md +116 -0
  376. package/dist/templates/copilot/prompts/finish-work.prompt.md +99 -0
  377. package/dist/templates/copilot/prompts/integrate-skill.prompt.md +223 -0
  378. package/dist/templates/copilot/prompts/onboard.prompt.md +362 -0
  379. package/dist/templates/copilot/prompts/parallel.prompt.md +204 -0
  380. package/dist/templates/copilot/prompts/record-session.prompt.md +66 -0
  381. package/dist/templates/copilot/prompts/start.prompt.md +63 -0
  382. package/dist/templates/copilot/prompts/update-spec.prompt.md +358 -0
  383. package/dist/templates/cursor/agents/trellis-check.md +139 -0
  384. package/dist/templates/cursor/agents/trellis-implement.md +119 -0
  385. package/dist/templates/cursor/agents/trellis-research.md +147 -0
  386. package/dist/templates/cursor/commands/cursor2plus-setup.md +82 -0
  387. package/dist/templates/cursor/hooks.json +30 -0
  388. package/dist/templates/cursor/index.d.ts +19 -0
  389. package/dist/templates/cursor/index.d.ts.map +1 -0
  390. package/dist/templates/cursor/index.js +19 -0
  391. package/dist/templates/cursor/index.js.map +1 -0
  392. package/dist/templates/cursor/rules/trellis-triage.mdc +38 -0
  393. package/dist/templates/cursor/worktrees.json +11 -0
  394. package/dist/templates/droid/droids/trellis-check.md +107 -0
  395. package/dist/templates/droid/droids/trellis-implement.md +102 -0
  396. package/dist/templates/droid/droids/trellis-research.md +137 -0
  397. package/dist/templates/droid/index.d.ts +15 -0
  398. package/dist/templates/droid/index.d.ts.map +1 -0
  399. package/dist/templates/droid/index.js +15 -0
  400. package/dist/templates/droid/index.js.map +1 -0
  401. package/dist/templates/droid/settings.json +70 -0
  402. package/dist/templates/extract.d.ts +40 -0
  403. package/dist/templates/extract.d.ts.map +1 -0
  404. package/dist/templates/extract.js +106 -0
  405. package/dist/templates/extract.js.map +1 -0
  406. package/dist/templates/gemini/agents/trellis-check.md +107 -0
  407. package/dist/templates/gemini/agents/trellis-implement.md +102 -0
  408. package/dist/templates/gemini/agents/trellis-research.md +136 -0
  409. package/dist/templates/gemini/index.d.ts +13 -0
  410. package/dist/templates/gemini/index.d.ts.map +1 -0
  411. package/dist/templates/gemini/index.js +13 -0
  412. package/dist/templates/gemini/index.js.map +1 -0
  413. package/dist/templates/gemini/settings.json +28 -0
  414. package/dist/templates/kiro/agents/trellis-check.json +26 -0
  415. package/dist/templates/kiro/agents/trellis-implement.json +26 -0
  416. package/dist/templates/kiro/agents/trellis-research.json +30 -0
  417. package/dist/templates/kiro/index.d.ts +18 -0
  418. package/dist/templates/kiro/index.d.ts.map +1 -0
  419. package/dist/templates/kiro/index.js +18 -0
  420. package/dist/templates/kiro/index.js.map +1 -0
  421. package/dist/templates/markdown/agents.md +32 -0
  422. package/dist/templates/markdown/gitignore.txt +15 -0
  423. package/dist/templates/markdown/index.d.ts +30 -0
  424. package/dist/templates/markdown/index.d.ts.map +1 -0
  425. package/dist/templates/markdown/index.js +55 -0
  426. package/dist/templates/markdown/index.js.map +1 -0
  427. package/dist/templates/markdown/spec/backend/database-guidelines.md.txt +51 -0
  428. package/dist/templates/markdown/spec/backend/directory-structure.md.txt +54 -0
  429. package/dist/templates/markdown/spec/backend/error-handling.md.txt +51 -0
  430. package/dist/templates/markdown/spec/backend/index.md.txt +38 -0
  431. package/dist/templates/markdown/spec/backend/logging-guidelines.md.txt +51 -0
  432. package/dist/templates/markdown/spec/backend/quality-guidelines.md.txt +51 -0
  433. package/dist/templates/markdown/spec/frontend/component-guidelines.md.txt +59 -0
  434. package/dist/templates/markdown/spec/frontend/directory-structure.md.txt +54 -0
  435. package/dist/templates/markdown/spec/frontend/hook-guidelines.md.txt +51 -0
  436. package/dist/templates/markdown/spec/frontend/index.md.txt +39 -0
  437. package/dist/templates/markdown/spec/frontend/quality-guidelines.md.txt +51 -0
  438. package/dist/templates/markdown/spec/frontend/state-management.md.txt +51 -0
  439. package/dist/templates/markdown/spec/frontend/type-safety.md.txt +51 -0
  440. package/dist/templates/markdown/spec/guides/code-reuse-thinking-guide.md.txt +223 -0
  441. package/dist/templates/markdown/spec/guides/cross-layer-thinking-guide.md.txt +259 -0
  442. package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md.txt +633 -0
  443. package/dist/templates/markdown/spec/guides/cursor-context-injection-guide.md.txt +65 -0
  444. package/dist/templates/markdown/spec/guides/cursor-subagent-policy.md.txt +382 -0
  445. package/dist/templates/markdown/spec/guides/durable-learning-decision-guide.md.txt +76 -0
  446. package/dist/templates/markdown/spec/guides/index.md.txt +101 -0
  447. package/dist/templates/markdown/spec/guides/retrieval-daily-guide.md.txt +92 -0
  448. package/dist/templates/markdown/workspace-index.md +125 -0
  449. package/dist/templates/markdown/worktree.yaml.txt +58 -0
  450. package/dist/templates/opencode/agents/trellis-check.md +122 -0
  451. package/dist/templates/opencode/agents/trellis-implement.md +118 -0
  452. package/dist/templates/opencode/agents/trellis-research.md +145 -0
  453. package/dist/templates/opencode/lib/session-utils.js +667 -0
  454. package/dist/templates/opencode/lib/trellis-context.js +336 -0
  455. package/dist/templates/opencode/package.json +5 -0
  456. package/dist/templates/opencode/plugins/inject-subagent-context.js +495 -0
  457. package/dist/templates/opencode/plugins/inject-workflow-state.js +159 -0
  458. package/dist/templates/opencode/plugins/session-start.js +101 -0
  459. package/dist/templates/pi/agents/trellis-check.md +37 -0
  460. package/dist/templates/pi/agents/trellis-implement.md +42 -0
  461. package/dist/templates/pi/agents/trellis-research.md +25 -0
  462. package/dist/templates/pi/extensions/trellis/index.ts.txt +1600 -0
  463. package/dist/templates/pi/index.d.ts +5 -0
  464. package/dist/templates/pi/index.d.ts.map +1 -0
  465. package/dist/templates/pi/index.js +12 -0
  466. package/dist/templates/pi/index.js.map +1 -0
  467. package/dist/templates/pi/settings.json +12 -0
  468. package/dist/templates/qoder/agents/trellis-check.md +108 -0
  469. package/dist/templates/qoder/agents/trellis-implement.md +103 -0
  470. package/dist/templates/qoder/agents/trellis-research.md +137 -0
  471. package/dist/templates/qoder/index.d.ts +15 -0
  472. package/dist/templates/qoder/index.d.ts.map +1 -0
  473. package/dist/templates/qoder/index.js +15 -0
  474. package/dist/templates/qoder/index.js.map +1 -0
  475. package/dist/templates/qoder/settings.json +47 -0
  476. package/dist/templates/shared-hooks/index.d.ts +50 -0
  477. package/dist/templates/shared-hooks/index.d.ts.map +1 -0
  478. package/dist/templates/shared-hooks/index.js +92 -0
  479. package/dist/templates/shared-hooks/index.js.map +1 -0
  480. package/dist/templates/shared-hooks/inject-shell-session-context.py +183 -0
  481. package/dist/templates/shared-hooks/inject-subagent-context.py +774 -0
  482. package/dist/templates/shared-hooks/inject-workflow-state.py +366 -0
  483. package/dist/templates/shared-hooks/research-end-retrieval-pack.py +220 -0
  484. package/dist/templates/shared-hooks/session-start.py +873 -0
  485. package/dist/templates/template-utils.d.ts +28 -0
  486. package/dist/templates/template-utils.d.ts.map +1 -0
  487. package/dist/templates/template-utils.js +83 -0
  488. package/dist/templates/template-utils.js.map +1 -0
  489. package/dist/templates/trellis/config.yaml +132 -0
  490. package/dist/templates/trellis/gitignore.txt +39 -0
  491. package/dist/templates/trellis/index.d.ts +80 -0
  492. package/dist/templates/trellis/index.d.ts.map +1 -0
  493. package/dist/templates/trellis/index.js +171 -0
  494. package/dist/templates/trellis/index.js.map +1 -0
  495. package/dist/templates/trellis/local/README.md +59 -0
  496. package/dist/templates/trellis/local/config.local.json.example +6 -0
  497. package/dist/templates/trellis/local/index.d.ts +7 -0
  498. package/dist/templates/trellis/local/index.d.ts.map +1 -0
  499. package/dist/templates/trellis/local/index.js +14 -0
  500. package/dist/templates/trellis/local/index.js.map +1 -0
  501. package/dist/templates/trellis/local/patch_wpelc8.py +297 -0
  502. package/dist/templates/trellis/local/subagent-models.json.example +4 -0
  503. package/dist/templates/trellis/local/trellis-task-models.json.example +10 -0
  504. package/dist/templates/trellis/local/trellis-task-models.json5.example +45 -0
  505. package/dist/templates/trellis/local/trellis_task_models_config.py +200 -0
  506. package/dist/templates/trellis/scripts/__init__.py +5 -0
  507. package/dist/templates/trellis/scripts/add_session.py +547 -0
  508. package/dist/templates/trellis/scripts/build_context_pack.py +12 -0
  509. package/dist/templates/trellis/scripts/build_retrieval_pack.py +12 -0
  510. package/dist/templates/trellis/scripts/common/__init__.py +103 -0
  511. package/dist/templates/trellis/scripts/common/active_task.py +607 -0
  512. package/dist/templates/trellis/scripts/common/artifact_search.py +587 -0
  513. package/dist/templates/trellis/scripts/common/cli_adapter.py +811 -0
  514. package/dist/templates/trellis/scripts/common/cli_environment.py +155 -0
  515. package/dist/templates/trellis/scripts/common/codebase_retrieval_router.py +902 -0
  516. package/dist/templates/trellis/scripts/common/config.py +458 -0
  517. package/dist/templates/trellis/scripts/common/context_pack.py +371 -0
  518. package/dist/templates/trellis/scripts/common/developer.py +190 -0
  519. package/dist/templates/trellis/scripts/common/git.py +31 -0
  520. package/dist/templates/trellis/scripts/common/git_context.py +149 -0
  521. package/dist/templates/trellis/scripts/common/io.py +37 -0
  522. package/dist/templates/trellis/scripts/common/log.py +45 -0
  523. package/dist/templates/trellis/scripts/common/packages_context.py +239 -0
  524. package/dist/templates/trellis/scripts/common/parent_orchestration.py +691 -0
  525. package/dist/templates/trellis/scripts/common/paths.py +457 -0
  526. package/dist/templates/trellis/scripts/common/retrieval_adapter_metadata.py +889 -0
  527. package/dist/templates/trellis/scripts/common/retrieval_evidence.py +917 -0
  528. package/dist/templates/trellis/scripts/common/retrieval_pack.py +425 -0
  529. package/dist/templates/trellis/scripts/common/retrieval_pack_context.py +126 -0
  530. package/dist/templates/trellis/scripts/common/safe_commit.py +285 -0
  531. package/dist/templates/trellis/scripts/common/session_context.py +1159 -0
  532. package/dist/templates/trellis/scripts/common/session_memory.py +360 -0
  533. package/dist/templates/trellis/scripts/common/smart_search_evidence.py +479 -0
  534. package/dist/templates/trellis/scripts/common/smart_search_resolve.py +125 -0
  535. package/dist/templates/trellis/scripts/common/task_context.py +223 -0
  536. package/dist/templates/trellis/scripts/common/task_dashboard.py +140 -0
  537. package/dist/templates/trellis/scripts/common/task_gates.py +1735 -0
  538. package/dist/templates/trellis/scripts/common/task_map.py +586 -0
  539. package/dist/templates/trellis/scripts/common/task_queue.py +188 -0
  540. package/dist/templates/trellis/scripts/common/task_store.py +1533 -0
  541. package/dist/templates/trellis/scripts/common/task_utils.py +274 -0
  542. package/dist/templates/trellis/scripts/common/tasks.py +231 -0
  543. package/dist/templates/trellis/scripts/common/test_retrieval_arbitration.py +333 -0
  544. package/dist/templates/trellis/scripts/common/trellis_config.py +131 -0
  545. package/dist/templates/trellis/scripts/common/types.py +110 -0
  546. package/dist/templates/trellis/scripts/common/workflow_phase.py +212 -0
  547. package/dist/templates/trellis/scripts/get_context.py +17 -0
  548. package/dist/templates/trellis/scripts/get_developer.py +26 -0
  549. package/dist/templates/trellis/scripts/hooks/linear_sync.py +243 -0
  550. package/dist/templates/trellis/scripts/init_developer.py +51 -0
  551. package/dist/templates/trellis/scripts/route_codebase_retrieval.py +77 -0
  552. package/dist/templates/trellis/scripts/run_smart_search.py +12 -0
  553. package/dist/templates/trellis/scripts/search_artifacts.py +13 -0
  554. package/dist/templates/trellis/scripts/search_memory.py +12 -0
  555. package/dist/templates/trellis/scripts/task.py +851 -0
  556. package/dist/templates/trellis/tasks/.gitkeep +0 -0
  557. package/dist/templates/trellis/tasks/templates/release-execution/design.md +61 -0
  558. package/dist/templates/trellis/tasks/templates/release-execution/handoff-template.md +29 -0
  559. package/dist/templates/trellis/tasks/templates/release-execution/implement.md +29 -0
  560. package/dist/templates/trellis/tasks/templates/release-execution/prd.md +31 -0
  561. package/dist/templates/trellis/tasks/templates/release-readiness/design.md +50 -0
  562. package/dist/templates/trellis/tasks/templates/release-readiness/handoff-template.md +39 -0
  563. package/dist/templates/trellis/tasks/templates/release-readiness/implement.md +29 -0
  564. package/dist/templates/trellis/tasks/templates/release-readiness/prd.md +31 -0
  565. package/dist/templates/trellis/workflow.md +960 -0
  566. package/dist/types/ai-tools.d.ts +106 -0
  567. package/dist/types/ai-tools.d.ts.map +1 -0
  568. package/dist/types/ai-tools.js +294 -0
  569. package/dist/types/ai-tools.js.map +1 -0
  570. package/dist/types/migration.d.ts +125 -0
  571. package/dist/types/migration.d.ts.map +1 -0
  572. package/dist/types/migration.js +8 -0
  573. package/dist/types/migration.js.map +1 -0
  574. package/dist/utils/codebase-retrieval-router.d.ts +77 -0
  575. package/dist/utils/codebase-retrieval-router.d.ts.map +1 -0
  576. package/dist/utils/codebase-retrieval-router.js +767 -0
  577. package/dist/utils/codebase-retrieval-router.js.map +1 -0
  578. package/dist/utils/compare-versions.d.ts +12 -0
  579. package/dist/utils/compare-versions.d.ts.map +1 -0
  580. package/dist/utils/compare-versions.js +86 -0
  581. package/dist/utils/compare-versions.js.map +1 -0
  582. package/dist/utils/cwd-guard.d.ts +38 -0
  583. package/dist/utils/cwd-guard.d.ts.map +1 -0
  584. package/dist/utils/cwd-guard.js +62 -0
  585. package/dist/utils/cwd-guard.js.map +1 -0
  586. package/dist/utils/file-writer.d.ts +36 -0
  587. package/dist/utils/file-writer.d.ts.map +1 -0
  588. package/dist/utils/file-writer.js +203 -0
  589. package/dist/utils/file-writer.js.map +1 -0
  590. package/dist/utils/manifest-prune.d.ts +61 -0
  591. package/dist/utils/manifest-prune.d.ts.map +1 -0
  592. package/dist/utils/manifest-prune.js +136 -0
  593. package/dist/utils/manifest-prune.js.map +1 -0
  594. package/dist/utils/posix.d.ts +13 -0
  595. package/dist/utils/posix.d.ts.map +1 -0
  596. package/dist/utils/posix.js +15 -0
  597. package/dist/utils/posix.js.map +1 -0
  598. package/dist/utils/post-update-smoke.d.ts +7 -0
  599. package/dist/utils/post-update-smoke.d.ts.map +1 -0
  600. package/dist/utils/post-update-smoke.js +40 -0
  601. package/dist/utils/post-update-smoke.js.map +1 -0
  602. package/dist/utils/project-capabilities.d.ts +54 -0
  603. package/dist/utils/project-capabilities.d.ts.map +1 -0
  604. package/dist/utils/project-capabilities.js +515 -0
  605. package/dist/utils/project-capabilities.js.map +1 -0
  606. package/dist/utils/project-detector.d.ts +46 -0
  607. package/dist/utils/project-detector.d.ts.map +1 -0
  608. package/dist/utils/project-detector.js +666 -0
  609. package/dist/utils/project-detector.js.map +1 -0
  610. package/dist/utils/proxy.d.ts +25 -0
  611. package/dist/utils/proxy.d.ts.map +1 -0
  612. package/dist/utils/proxy.js +60 -0
  613. package/dist/utils/proxy.js.map +1 -0
  614. package/dist/utils/readiness.d.ts +20 -0
  615. package/dist/utils/readiness.d.ts.map +1 -0
  616. package/dist/utils/readiness.js +430 -0
  617. package/dist/utils/readiness.js.map +1 -0
  618. package/dist/utils/retrieval-execution-telemetry.d.ts +162 -0
  619. package/dist/utils/retrieval-execution-telemetry.d.ts.map +1 -0
  620. package/dist/utils/retrieval-execution-telemetry.js +288 -0
  621. package/dist/utils/retrieval-execution-telemetry.js.map +1 -0
  622. package/dist/utils/retrieval-result-ranking.d.ts +40 -0
  623. package/dist/utils/retrieval-result-ranking.d.ts.map +1 -0
  624. package/dist/utils/retrieval-result-ranking.js +162 -0
  625. package/dist/utils/retrieval-result-ranking.js.map +1 -0
  626. package/dist/utils/task-json.d.ts +13 -0
  627. package/dist/utils/task-json.d.ts.map +1 -0
  628. package/dist/utils/task-json.js +12 -0
  629. package/dist/utils/task-json.js.map +1 -0
  630. package/dist/utils/template-fetcher.d.ts +150 -0
  631. package/dist/utils/template-fetcher.d.ts.map +1 -0
  632. package/dist/utils/template-fetcher.js +907 -0
  633. package/dist/utils/template-fetcher.js.map +1 -0
  634. package/dist/utils/template-hash.d.ts +123 -0
  635. package/dist/utils/template-hash.d.ts.map +1 -0
  636. package/dist/utils/template-hash.js +334 -0
  637. package/dist/utils/template-hash.js.map +1 -0
  638. package/dist/utils/uninstall-scrubbers.d.ts +66 -0
  639. package/dist/utils/uninstall-scrubbers.d.ts.map +1 -0
  640. package/dist/utils/uninstall-scrubbers.js +342 -0
  641. package/dist/utils/uninstall-scrubbers.js.map +1 -0
  642. package/dist/utils/update-rollout-report.d.ts +137 -0
  643. package/dist/utils/update-rollout-report.d.ts.map +1 -0
  644. package/dist/utils/update-rollout-report.js +108 -0
  645. package/dist/utils/update-rollout-report.js.map +1 -0
  646. package/dist/utils/workflow-resolver.d.ts +86 -0
  647. package/dist/utils/workflow-resolver.d.ts.map +1 -0
  648. package/dist/utils/workflow-resolver.js +265 -0
  649. package/dist/utils/workflow-resolver.js.map +1 -0
  650. package/package.json +137 -0
  651. package/scripts/postinstall.js +45 -0
  652. package/vendor/smart-search/LICENSE +21 -0
  653. package/vendor/smart-search/README.md +412 -0
  654. package/vendor/smart-search/README.zh-CN.md +430 -0
  655. package/vendor/smart-search/npm/bin/smart-search.js +63 -0
  656. package/vendor/smart-search/npm/scripts/postinstall.js +87 -0
  657. package/vendor/smart-search/npm/scripts/resolve-prerelease-version.js +108 -0
  658. package/vendor/smart-search/npm/scripts/set-package-version.js +35 -0
  659. package/vendor/smart-search/npm/scripts/sync-python-version.js +22 -0
  660. package/vendor/smart-search/npm/scripts/test-wrapper-repair.js +99 -0
  661. package/vendor/smart-search/npm/scripts/test.js +85 -0
  662. package/vendor/smart-search/package.json +42 -0
  663. package/vendor/smart-search/pyproject.toml +37 -0
  664. package/vendor/smart-search/skills/smart-search-cli/SKILL.md +387 -0
  665. package/vendor/smart-search/skills/smart-search-cli/agents/openai.yaml +3 -0
  666. package/vendor/smart-search/skills/smart-search-cli/examples/batch-search.md +98 -0
  667. package/vendor/smart-search/skills/smart-search-cli/examples/evidence-gathering.md +89 -0
  668. package/vendor/smart-search/skills/smart-search-cli/references/cli-contract.md +337 -0
  669. package/vendor/smart-search/src/smart_search/__init__.py +1 -0
  670. package/vendor/smart-search/src/smart_search/assets/skills/smart-search-cli/SKILL.md +387 -0
  671. package/vendor/smart-search/src/smart_search/assets/skills/smart-search-cli/agents/openai.yaml +3 -0
  672. package/vendor/smart-search/src/smart_search/assets/skills/smart-search-cli/examples/batch-search.md +98 -0
  673. package/vendor/smart-search/src/smart_search/assets/skills/smart-search-cli/examples/evidence-gathering.md +89 -0
  674. package/vendor/smart-search/src/smart_search/assets/skills/smart-search-cli/references/cli-contract.md +337 -0
  675. package/vendor/smart-search/src/smart_search/cli.py +2003 -0
  676. package/vendor/smart-search/src/smart_search/config.py +580 -0
  677. package/vendor/smart-search/src/smart_search/logger.py +43 -0
  678. package/vendor/smart-search/src/smart_search/providers/__init__.py +16 -0
  679. package/vendor/smart-search/src/smart_search/providers/base.py +41 -0
  680. package/vendor/smart-search/src/smart_search/providers/context7.py +141 -0
  681. package/vendor/smart-search/src/smart_search/providers/exa.py +206 -0
  682. package/vendor/smart-search/src/smart_search/providers/jina.py +136 -0
  683. package/vendor/smart-search/src/smart_search/providers/openai_compatible.py +370 -0
  684. package/vendor/smart-search/src/smart_search/providers/zhipu.py +143 -0
  685. package/vendor/smart-search/src/smart_search/service.py +2865 -0
  686. package/vendor/smart-search/src/smart_search/sources.py +429 -0
  687. package/vendor/smart-search/src/smart_search/utils.py +220 -0
@@ -0,0 +1,767 @@
1
+ /**
2
+ * Deterministic codebase retrieval intent router.
3
+ *
4
+ * Mirrors machine-readable rules from `codebase-retrieval` capability guidance
5
+ * in project-capabilities.ts. Produces the parent shared evidence envelope
6
+ * (router-owned fields only; adapterState/freshness are pass-through stubs).
7
+ */
8
+ export const CODEBASE_RETRIEVAL_ROUTER_VERSION = 2;
9
+ export const PLATFORM_CURSOR = "cursor";
10
+ export const PLATFORM_CLAUDE_CODE = "claude-code";
11
+ export const PLATFORM_CODEX = "codex";
12
+ export const PLATFORM_GENERIC = "generic";
13
+ export const KNOWN_PLATFORMS = new Set([
14
+ PLATFORM_CURSOR,
15
+ PLATFORM_CLAUDE_CODE,
16
+ PLATFORM_CODEX,
17
+ PLATFORM_GENERIC,
18
+ ]);
19
+ export const MODALITY_LEXICAL = "lexical";
20
+ export const MODALITY_STRUCTURAL = "structural";
21
+ export const MODALITY_SEMANTIC = "semantic";
22
+ export const TOKEN_ECONOMY_HIGH = "high";
23
+ export const TOKEN_ECONOMY_MEDIUM = "medium";
24
+ export const TOKEN_ECONOMY_LOW = "low";
25
+ export function emptyCodebaseRetrievalPlan(query = "", platform = PLATFORM_GENERIC, projectFileCount = null) {
26
+ return {
27
+ version: CODEBASE_RETRIEVAL_ROUTER_VERSION,
28
+ query,
29
+ intents: [],
30
+ routes: [],
31
+ adapterState: [],
32
+ freshness: [],
33
+ fallback: [],
34
+ warnings: [],
35
+ verification: [],
36
+ platform,
37
+ projectFileCount,
38
+ };
39
+ }
40
+ const POLICY_SIGNALS = [
41
+ /\bstorage\s+policy\b/i,
42
+ /\bsidecar\b/i,
43
+ /\bsqlite\s+only\b/i,
44
+ /\bpersistence\b/i,
45
+ /\bimport\s+boundar/i,
46
+ /\btransport[- ]only\b/i,
47
+ /\barchitecture\b/i,
48
+ /\bconvention(s)?\b/i,
49
+ /\bforbidden\b/i,
50
+ /\ballowed\b/i,
51
+ /\bwhere\s+is\s+\w+\s+defined\b/i,
52
+ /\bwho\s+owns\b/i,
53
+ /\bwho\s+is\s+responsible\s+for\b/i,
54
+ /\bwhich\s+module\s+handles\b/i,
55
+ /\bwhich\s+package\s+is\s+responsible\b/i,
56
+ /\ballowed\s+in\b/i,
57
+ /\bforbidden\s+in\b/i,
58
+ /\brestricted\s+to\b/i,
59
+ /\bmust\s+not\b/i,
60
+ /\bshould\s+not\b/i,
61
+ /\bboundary\s+between\b/i,
62
+ /\bboundary\s+of\b/i,
63
+ /\bcode\s+boundary\b/i,
64
+ /\bmodule\s+boundary\b/i,
65
+ /\bpackage\s+boundary\b/i,
66
+ /规定/,
67
+ /边界/,
68
+ /为什么不能/,
69
+ /\bAGENTS\.md\b/i,
70
+ /\bpolicy\b/i,
71
+ /\bownership\b/i,
72
+ /\bresponsibilit(y|ies)\b/i,
73
+ /不能/,
74
+ /规则/,
75
+ ];
76
+ const CONCEPTUAL_SIGNALS = [
77
+ /\bhow\s+does\b/i,
78
+ /\bacross\s+(packages|modules)\b/i,
79
+ /\bwhere\s+is\b.*\b(handled|implemented)\b/i,
80
+ /\bdifference\s+between\b/i,
81
+ /\boverall\s+design\b/i,
82
+ /如何/,
83
+ /机制/,
84
+ /跨/,
85
+ /为什么/,
86
+ /原理/,
87
+ /区别/,
88
+ ];
89
+ const PRESERVE_SIGNALS = [
90
+ /\bapps\/(ios|android)\b/i,
91
+ /\bgateway-protocol\b/i,
92
+ /\bpackages\/gateway-protocol\b/i,
93
+ /\.swift\b/i,
94
+ /\.kt\b/i,
95
+ /\bschema\b/i,
96
+ /\bcontract\b/i,
97
+ /\bprotocol\s+constant\b/i,
98
+ ];
99
+ const CALLER_CHAIN_SIGNALS = [
100
+ /\bwho\s+calls\b/i,
101
+ /\bwhich\s+modules?\s+invoke\b/i,
102
+ /\bcall\s*sites?\b/i,
103
+ /\bcaller(s)?\b/i,
104
+ /\bwired\b/i,
105
+ /\bdelegate(s|d)?\b/i,
106
+ /\bassembly\b/i,
107
+ /\bdependents\b/i,
108
+ /\busages?\s+of\b/i,
109
+ /谁调用/,
110
+ /调用链/,
111
+ /影响面/,
112
+ /被哪些/,
113
+ /哪些地方/,
114
+ /哪里用到/,
115
+ ];
116
+ const TRAP_SIGNALS = [
117
+ /\bpackages\/[a-z0-9-]+\b/i,
118
+ /\bsrc\/agents\b/i,
119
+ /\btrap\b/i,
120
+ /\bdifferent\s+package\b/i,
121
+ /\blayer\b/i,
122
+ /\boverlay\b/i,
123
+ /\bcore\s+library\b/i,
124
+ ];
125
+ const EXTENSION_SIGNALS = [
126
+ /\bextensions\/\b/i,
127
+ /\bextension\s+id\b/i,
128
+ /\bshared\s+symbol\b/i,
129
+ /\bacross\s+extensions\b/i,
130
+ ];
131
+ const ENV_LITERAL_SIGNALS = [
132
+ /\bOPENCLAW_[A-Z0-9_]+\b/,
133
+ /\be2e\b/i,
134
+ /\bbench(mark)?\b/i,
135
+ /\benv\s+var/i,
136
+ /\benvironment\s+variable\b/i,
137
+ /\bstartup\s+script\b/i,
138
+ ];
139
+ const EXACT_SYMBOL_SIGNALS = [
140
+ /\b[A-Z][a-zA-Z0-9]+(?:[A-Z][a-zA-Z0-9]+)+\b/,
141
+ /\b[a-z][a-zA-Z0-9]+(?:[A-Z][a-zA-Z0-9]+)+\b/,
142
+ /`[^`]+`/,
143
+ /\b[\w.-]+\.(ts|tsx|js|jsx|py|rs|go|swift|kt|md|json|yaml|yml)\b/i,
144
+ /\b(?:src|packages|extensions)\/[\w./-]+/i,
145
+ ];
146
+ function normalizeQuery(query) {
147
+ return query.replace(/\s+/g, " ").trim();
148
+ }
149
+ function matchAny(patterns, text) {
150
+ const hits = [];
151
+ for (const pattern of patterns) {
152
+ const match = text.match(pattern);
153
+ if (match) {
154
+ hits.push(match[0]);
155
+ }
156
+ }
157
+ return hits;
158
+ }
159
+ function intentConfidence(hitCount, strong) {
160
+ if (strong && hitCount >= 2)
161
+ return "high";
162
+ if (hitCount >= 2)
163
+ return "medium";
164
+ if (hitCount === 1)
165
+ return strong ? "medium" : "low";
166
+ return "low";
167
+ }
168
+ function buildIntent(id, label, signals, confidence, preserveExactPrimary) {
169
+ return {
170
+ id,
171
+ label,
172
+ confidence,
173
+ signals: [...new Set(signals)].slice(0, 12),
174
+ preserveExactPrimary,
175
+ };
176
+ }
177
+ function baseVerification() {
178
+ return [
179
+ {
180
+ id: "source-read",
181
+ requirement: "Read current source around candidate file ranges before final claims.",
182
+ appliesToRoles: ["exact", "ast", "lsp", "semantic"],
183
+ },
184
+ {
185
+ id: "git-scope",
186
+ requirement: "Inspect relevant Git diff/log evidence when behavior or impact is claimed.",
187
+ appliesToRoles: ["verification"],
188
+ },
189
+ {
190
+ id: "focused-tests",
191
+ requirement: "Run task-appropriate validation when tests define the claim boundary.",
192
+ appliesToRoles: ["verification"],
193
+ },
194
+ ];
195
+ }
196
+ function policyVerification() {
197
+ return [
198
+ {
199
+ id: "policy-doc-top1",
200
+ requirement: "For policy/document intents, confirm Top-1 policy evidence from AGENTS.md or .trellis/spec before ranking implementation modules first.",
201
+ appliesToRoles: ["exact", "semantic"],
202
+ },
203
+ {
204
+ id: "agents-neighborhood",
205
+ requirement: "Read AGENTS.md neighborhood: root AGENTS.md, nested **/AGENTS.md, and package-level policy files before searching implementation modules.",
206
+ appliesToRoles: ["exact", "semantic"],
207
+ },
208
+ ...baseVerification(),
209
+ ];
210
+ }
211
+ function callerVerification() {
212
+ return [
213
+ {
214
+ id: "caller-sites",
215
+ requirement: "Confirm codegraph-caller results cover the call chain, then verify " +
216
+ "dynamic dispatch points (callbacks, event handlers, DI registrations) " +
217
+ "that codegraph may not resolve statically.",
218
+ appliesToRoles: ["exact", "ast"],
219
+ },
220
+ ...baseVerification(),
221
+ ];
222
+ }
223
+ function trapVerification() {
224
+ return [
225
+ {
226
+ id: "trap-package-check",
227
+ requirement: "When multiple same-named symbols exist across packages, confirm the " +
228
+ "codegraph result belongs to the correct package by checking the file's " +
229
+ "package root or AGENTS.md scope before ranking.",
230
+ appliesToRoles: ["ast", "exact"],
231
+ },
232
+ ...baseVerification(),
233
+ ];
234
+ }
235
+ function extensionVerification() {
236
+ return [
237
+ {
238
+ id: "extension-scope-check",
239
+ requirement: "Confirm the symbol definition lives inside the target extension " +
240
+ "directory, not in a shared core module with the same name.",
241
+ appliesToRoles: ["ast", "exact"],
242
+ },
243
+ ...baseVerification(),
244
+ ];
245
+ }
246
+ function routeExactPrimary(intentIds) {
247
+ return {
248
+ order: 1,
249
+ id: "exact-rg-primary",
250
+ role: "exact",
251
+ sourceFamily: "rg",
252
+ commands: ["rg <pattern> <path>"],
253
+ rationale: "Exact identifiers, literals, paths, and protocol constants stay primary; corroborate with direct reads.",
254
+ intentIds,
255
+ };
256
+ }
257
+ function routePolicyDocs(intentIds) {
258
+ return {
259
+ order: 2,
260
+ id: "policy-docs-rg",
261
+ role: "exact",
262
+ sourceFamily: "policy-docs",
263
+ commands: [
264
+ 'rg -i "storage default|sidecar|sqlite only" AGENTS.md "**/AGENTS.md" README.md CONTRIBUTING.md .trellis/spec',
265
+ ],
266
+ rationale: "Policy/document intent: search instruction and spec docs before implementation modules.",
267
+ intentIds,
268
+ };
269
+ }
270
+ function routeAst(intentIds, order) {
271
+ return {
272
+ order,
273
+ id: "ast-codegraph",
274
+ role: "ast",
275
+ sourceFamily: "codegraph",
276
+ commands: [
277
+ "codegraph query <symbol-or-search> --path <path> --json",
278
+ "codegraph callers <symbol> --path <path> --json",
279
+ "codegraph callees <symbol> --path <path> --json",
280
+ ],
281
+ rationale: "Structural expansion after exact candidates exist; graph output remains candidate until freshness and source checks.",
282
+ intentIds,
283
+ };
284
+ }
285
+ function routeSemantic(intentIds, order) {
286
+ return {
287
+ order,
288
+ id: "semantic-fast-context",
289
+ role: "semantic",
290
+ sourceFamily: "fast-context",
291
+ commands: ["fast_context_search query=<question> project_path=<root>"],
292
+ rationale: "Semantic recall last on policy/env/extension-heavy queries; convert hits to exact rg follow-ups.",
293
+ intentIds,
294
+ };
295
+ }
296
+ function routeVerification(intentIds, order) {
297
+ return {
298
+ order,
299
+ id: "verification-source-git-tests",
300
+ role: "verification",
301
+ sourceFamily: "source-git-tests",
302
+ commands: ["git diff -- <path>", "Get-Content <file>"],
303
+ rationale: "Required proof layer for verified claims.",
304
+ intentIds,
305
+ };
306
+ }
307
+ function modalityForIntent(intentIds, structuralIntents) {
308
+ const structural = structuralIntents ??
309
+ new Set([
310
+ "caller-chain",
311
+ "trap-package-disambiguation",
312
+ "extension-shared-symbol",
313
+ ]);
314
+ const hasStructural = [...intentIds].some((id) => structural.has(id));
315
+ if (hasStructural) {
316
+ return [MODALITY_STRUCTURAL, MODALITY_LEXICAL, MODALITY_SEMANTIC];
317
+ }
318
+ if (intentIds.has("cross-cutting-discovery") && !intentIds.has("exact-symbol-path")) {
319
+ return [MODALITY_SEMANTIC, MODALITY_LEXICAL, MODALITY_STRUCTURAL];
320
+ }
321
+ return [MODALITY_LEXICAL, MODALITY_STRUCTURAL, MODALITY_SEMANTIC];
322
+ }
323
+ function tokenEconomyForRoute(routeId, platform) {
324
+ const highEconomyRoutes = new Set([
325
+ "caller-chain-ast",
326
+ "trap-demote-codegraph",
327
+ "extension-codegraph",
328
+ "ast-codegraph",
329
+ "platform-semantic",
330
+ ]);
331
+ if (highEconomyRoutes.has(routeId)) {
332
+ return TOKEN_ECONOMY_HIGH;
333
+ }
334
+ const lowEconomyRoutes = new Set(["exact-rg-primary"]);
335
+ if (lowEconomyRoutes.has(routeId) && platform !== PLATFORM_CURSOR) {
336
+ return TOKEN_ECONOMY_LOW;
337
+ }
338
+ return TOKEN_ECONOMY_MEDIUM;
339
+ }
340
+ function largeProject(projectFileCount) {
341
+ if (projectFileCount === null)
342
+ return false;
343
+ return projectFileCount > 2000;
344
+ }
345
+ function orderedRoutesForIntents(intents, includeOptionalAdapters, platform = PLATFORM_GENERIC, projectFileCount = null) {
346
+ const ids = new Set(intents.map((item) => item.id));
347
+ const preserve = ids.has("protocol-platform-preserve");
348
+ const policy = ids.has("policy-document");
349
+ const caller = ids.has("caller-chain");
350
+ const trap = ids.has("trap-package-disambiguation");
351
+ const extension = ids.has("extension-shared-symbol");
352
+ const env = ids.has("env-config-literal");
353
+ const exact = ids.has("exact-symbol-path");
354
+ const conceptual = ids.has("cross-cutting-discovery");
355
+ const activeIntentIds = [...ids];
356
+ const isCursor = platform === PLATFORM_CURSOR;
357
+ const isLarge = largeProject(projectFileCount);
358
+ let semanticPromoted = false;
359
+ const routes = [];
360
+ function append(route) {
361
+ routes.push({
362
+ ...route,
363
+ order: routes.length + 1,
364
+ intentIds: activeIntentIds,
365
+ tokenEconomy: tokenEconomyForRoute(route.id, platform),
366
+ platformNative: route.platformNative ?? false,
367
+ });
368
+ }
369
+ // ── Structural-first intents: caller, trap, extension ──
370
+ if (caller) {
371
+ append({
372
+ id: "caller-chain-ast",
373
+ role: "ast",
374
+ sourceFamily: "codegraph",
375
+ commands: ["codegraph callers <symbol> --path <path> --json"],
376
+ rationale: "Caller-chain intent: codegraph for precise call edges first.",
377
+ });
378
+ append({
379
+ id: "caller-rg-followup",
380
+ role: "exact",
381
+ sourceFamily: "rg",
382
+ commands: ["rg <symbol> --glob '*.ts'"],
383
+ rationale: "Caller-chain intent: rg follow-up for dynamic callsites codegraph may miss.",
384
+ });
385
+ }
386
+ if (trap && !preserve) {
387
+ append({
388
+ id: "trap-demote-codegraph",
389
+ role: "ast",
390
+ sourceFamily: "codegraph",
391
+ commands: ["codegraph search <symbol> --path <path> --json"],
392
+ rationale: "Trap intent: codegraph distinguishes same-named symbols across packages.",
393
+ });
394
+ append({
395
+ id: "trap-demote-rg",
396
+ role: "exact",
397
+ sourceFamily: "rg",
398
+ commands: ["rg <symbol> packages/<name>/", "rg <symbol> src/"],
399
+ rationale: "Trap intent: rg follow-up across package boundaries.",
400
+ });
401
+ }
402
+ if (extension && !preserve) {
403
+ append({
404
+ id: "extension-codegraph",
405
+ role: "ast",
406
+ sourceFamily: "codegraph",
407
+ commands: ["codegraph search <symbol> --path <path> --json"],
408
+ rationale: "Extension intent: codegraph finds cross-extension symbol definitions.",
409
+ });
410
+ append({
411
+ id: "extension-rg",
412
+ role: "exact",
413
+ sourceFamily: "rg",
414
+ commands: ["rg <symbol> extensions/"],
415
+ rationale: "Extension intent: rg follow-up for extension directory.",
416
+ });
417
+ }
418
+ // ── Lexical-first intents: exact, policy, preserve, env ──
419
+ const exactPrimaryFirst = preserve || exact;
420
+ const conceptualPrimary = conceptual && !preserve && !exactPrimaryFirst;
421
+ if (conceptualPrimary) {
422
+ if (policy) {
423
+ append({
424
+ id: "policy-docs-rg",
425
+ role: "exact",
426
+ sourceFamily: "policy-docs",
427
+ commands: [
428
+ 'rg -i "storage default|sidecar|sqlite only" AGENTS.md "**/AGENTS.md" README.md CONTRIBUTING.md .trellis/spec',
429
+ ],
430
+ rationale: "Policy/document intent: search instruction and spec docs first.",
431
+ });
432
+ }
433
+ const semanticRationale = policy
434
+ ? "Policy plus conceptual intent: semantic recall after policy docs, before exact rg follow-up."
435
+ : "Conceptual query without exact signals; semantic recall before exact rg narrowing.";
436
+ if (isCursor) {
437
+ append({
438
+ id: "platform-semantic",
439
+ role: "semantic",
440
+ sourceFamily: "platform-semantic",
441
+ commands: ["cursor @codebase or built-in semantic search"],
442
+ rationale: semanticRationale + " (platform-native on Cursor)",
443
+ platformNative: true,
444
+ });
445
+ }
446
+ else {
447
+ append({
448
+ id: "semantic-fast-context",
449
+ role: "semantic",
450
+ sourceFamily: "fast-context",
451
+ commands: ["fast_context_search query=<question> project_path=<root>"],
452
+ rationale: semanticRationale,
453
+ });
454
+ }
455
+ semanticPromoted = true;
456
+ append({
457
+ id: "exact-rg-primary",
458
+ role: "exact",
459
+ sourceFamily: "rg",
460
+ commands: ["rg <pattern> <path>"],
461
+ rationale: "Exact rg follow-up after semantic recall (or policy docs) narrows candidate files and symbols.",
462
+ });
463
+ }
464
+ else if (policy && !preserve && !exactPrimaryFirst) {
465
+ append({
466
+ id: "policy-docs-rg",
467
+ role: "exact",
468
+ sourceFamily: "policy-docs",
469
+ commands: [
470
+ 'rg -i "storage default|sidecar|sqlite only" AGENTS.md "**/AGENTS.md" README.md CONTRIBUTING.md .trellis/spec',
471
+ ],
472
+ rationale: "Policy/document intent: search instruction and spec docs first.",
473
+ });
474
+ append({
475
+ id: "exact-rg-primary",
476
+ role: "exact",
477
+ sourceFamily: "rg",
478
+ commands: ["rg <pattern> <path>"],
479
+ rationale: "Exact rg after policy doc pass when no symbol/path intent is present.",
480
+ });
481
+ }
482
+ else if (exactPrimaryFirst) {
483
+ append({
484
+ id: "exact-rg-primary",
485
+ role: "exact",
486
+ sourceFamily: "rg",
487
+ commands: ["rg <pattern> <path>"],
488
+ rationale: "Exact identifiers and paths stay primary.",
489
+ });
490
+ if (policy && !preserve) {
491
+ append({
492
+ id: "policy-docs-rg",
493
+ role: "exact",
494
+ sourceFamily: "policy-docs",
495
+ commands: [
496
+ 'rg -i "storage default|sidecar|sqlite only" AGENTS.md "**/AGENTS.md" README.md CONTRIBUTING.md .trellis/spec',
497
+ ],
498
+ rationale: "Policy/document branch after exact-primary when both intents match.",
499
+ });
500
+ }
501
+ }
502
+ if (env && !preserve) {
503
+ append({
504
+ id: "env-scripts-rg",
505
+ role: "exact",
506
+ sourceFamily: "rg",
507
+ commands: ["rg <env-prefix> scripts test e2e bench"],
508
+ rationale: "Env/config literals: scripts and test trees before src/ modules.",
509
+ });
510
+ }
511
+ if (!routes.some((r) => r.id === "exact-rg-primary")) {
512
+ append({
513
+ id: "exact-rg-primary",
514
+ role: "exact",
515
+ sourceFamily: "rg",
516
+ commands: ["rg <pattern> <path>"],
517
+ rationale: "Baseline exact search.",
518
+ });
519
+ }
520
+ // ── Optional adapters ──
521
+ if (includeOptionalAdapters) {
522
+ if (!routes.some((r) => r.id === "caller-chain-ast")) {
523
+ const cgRationale = isLarge
524
+ ? "Structural search first on large codebase for token efficiency."
525
+ : "Structural expansion after exact candidates.";
526
+ append({
527
+ id: "ast-codegraph",
528
+ role: "ast",
529
+ sourceFamily: "codegraph",
530
+ commands: [
531
+ "codegraph query <symbol-or-search> --path <path> --json",
532
+ "codegraph callers <symbol> --path <path> --json",
533
+ ],
534
+ rationale: cgRationale,
535
+ });
536
+ }
537
+ if (isCursor) {
538
+ append({
539
+ id: "lsp-navigation",
540
+ role: "lsp",
541
+ sourceFamily: "language-server",
542
+ commands: ["definition", "references", "hover"],
543
+ rationale: "LSP via platform-native Cursor features.",
544
+ platformNative: true,
545
+ });
546
+ }
547
+ else {
548
+ append({
549
+ id: "lsp-navigation",
550
+ role: "lsp",
551
+ sourceFamily: "language-server",
552
+ commands: ["definition", "references", "hover"],
553
+ rationale: "LSP after candidate symbols exist.",
554
+ });
555
+ }
556
+ if (!semanticPromoted) {
557
+ if (isCursor) {
558
+ append({
559
+ id: "platform-semantic",
560
+ role: "semantic",
561
+ sourceFamily: "platform-semantic",
562
+ commands: ["cursor @codebase or built-in semantic search"],
563
+ rationale: "Semantic recall via platform-native Cursor search.",
564
+ platformNative: true,
565
+ });
566
+ }
567
+ else {
568
+ append({
569
+ id: "semantic-fast-context",
570
+ role: "semantic",
571
+ sourceFamily: "fast-context",
572
+ commands: ["fast_context_search query=<question> project_path=<root>"],
573
+ rationale: "Semantic recall last; convert to exact rg follow-ups.",
574
+ });
575
+ }
576
+ }
577
+ }
578
+ append({
579
+ id: "verification-source-git-tests",
580
+ role: "verification",
581
+ sourceFamily: "source-git-tests",
582
+ commands: ["git diff -- <path>", "Get-Content <file>"],
583
+ rationale: "Required proof layer for verified claims.",
584
+ });
585
+ // Large project: reorder so structural (ast) routes precede others
586
+ if (isLarge) {
587
+ const structural = routes.filter((r) => r.role === "ast");
588
+ const others = routes.filter((r) => r.role !== "ast");
589
+ const reordered = [...structural, ...others];
590
+ return reordered.map((route, index) => ({ ...route, order: index + 1 }));
591
+ }
592
+ return routes
593
+ .sort((a, b) => a.order - b.order)
594
+ .map((route, index) => ({ ...route, order: index + 1 }));
595
+ }
596
+ function classifyIntents(query) {
597
+ const intents = [];
598
+ const preserveHits = matchAny(PRESERVE_SIGNALS, query);
599
+ if (preserveHits.length > 0) {
600
+ intents.push(buildIntent("protocol-platform-preserve", "Protocol / platform preserve (F/G)", preserveHits, intentConfidence(preserveHits.length, true), true));
601
+ }
602
+ const exactHits = matchAny(EXACT_SYMBOL_SIGNALS, query);
603
+ if (exactHits.length > 0) {
604
+ intents.push(buildIntent("exact-symbol-path", "Exact symbol or path", exactHits, intentConfidence(exactHits.length, true), true));
605
+ }
606
+ const policyHits = matchAny(POLICY_SIGNALS, query);
607
+ if (policyHits.length > 0) {
608
+ intents.push(buildIntent("policy-document", "Policy and document-first (C-class)", policyHits, intentConfidence(policyHits.length, false), false));
609
+ }
610
+ const callerHits = matchAny(CALLER_CHAIN_SIGNALS, query);
611
+ if (callerHits.length > 0) {
612
+ intents.push(buildIntent("caller-chain", "Caller and assembly chain (B-class)", callerHits, intentConfidence(callerHits.length, false), false));
613
+ }
614
+ const trapHits = matchAny(TRAP_SIGNALS, query);
615
+ if (trapHits.length > 0) {
616
+ intents.push(buildIntent("trap-package-disambiguation", "Trap demotion and package boundary (E-class)", trapHits, intentConfidence(trapHits.length, false), false));
617
+ }
618
+ const extensionHits = matchAny(EXTENSION_SIGNALS, query);
619
+ if (extensionHits.length > 0) {
620
+ intents.push(buildIntent("extension-shared-symbol", "Extension shared-symbol disambiguation (A-class)", extensionHits, intentConfidence(extensionHits.length, false), false));
621
+ }
622
+ const envHits = matchAny(ENV_LITERAL_SIGNALS, query);
623
+ if (envHits.length > 0) {
624
+ intents.push(buildIntent("env-config-literal", "Environment and config literals (D-class)", envHits, intentConfidence(envHits.length, false), false));
625
+ }
626
+ if (exactHits.length === 0 && preserveHits.length === 0) {
627
+ const conceptualHits = matchAny(CONCEPTUAL_SIGNALS, query);
628
+ if (conceptualHits.length > 0) {
629
+ intents.push(buildIntent("cross-cutting-discovery", "Conceptual / cross-cutting discovery", conceptualHits, intentConfidence(conceptualHits.length, false), false));
630
+ }
631
+ }
632
+ if (intents.length === 0) {
633
+ intents.push(buildIntent("exact-symbol-path", "General codebase (exact baseline)", ["default-exact-baseline"], "low", true));
634
+ }
635
+ const seen = new Set();
636
+ return intents.filter((intent) => {
637
+ if (seen.has(intent.id))
638
+ return false;
639
+ seen.add(intent.id);
640
+ return true;
641
+ });
642
+ }
643
+ function buildFallbackHints(intents, includeOptionalAdapters, routes, platform = PLATFORM_GENERIC) {
644
+ const hints = [
645
+ {
646
+ when: "rg missing on PATH",
647
+ action: "Codebase retrieval readiness fails; install or expose rg before claiming readiness.",
648
+ },
649
+ ];
650
+ const isCursor = platform === PLATFORM_CURSOR;
651
+ if (!includeOptionalAdapters) {
652
+ hints.push({
653
+ when: "codebase-retrieval not selected",
654
+ action: "Skip optional AST/LSP/semantic routes; continue with exact search and verification only.",
655
+ replacesRole: "semantic",
656
+ });
657
+ }
658
+ if (intents.some((i) => i.id === "policy-document")) {
659
+ hints.push({
660
+ when: "semantic Top-1 is implementation-only for policy query",
661
+ action: "Fall back to policy-doc rg route and AGENTS.md/.trellis/spec reads before accepting semantic ranking.",
662
+ replacesRole: "semantic",
663
+ });
664
+ }
665
+ const semanticRoute = routes.find((r) => r.role === "semantic");
666
+ const hasConceptual = intents.some((i) => i.id === "cross-cutting-discovery");
667
+ const exactPrimary = intents.some((i) => i.id === "exact-symbol-path" && i.preserveExactPrimary);
668
+ if (includeOptionalAdapters &&
669
+ semanticRoute &&
670
+ (hasConceptual || semanticRoute.order >= 3 || exactPrimary)) {
671
+ if (isCursor) {
672
+ hints.push({
673
+ when: "exact rg returns no corroborated file/range candidates (or only trap hits) before final Top-1",
674
+ action: "Use Cursor @codebase or built-in semantic search per platform-semantic route, then narrow with rg on returned keywords and paths.",
675
+ replacesRole: "semantic",
676
+ });
677
+ }
678
+ else {
679
+ hints.push({
680
+ when: "exact rg returns no corroborated file/range candidates (or only trap hits) before final Top-1",
681
+ action: "Invoke fast_context_search per semantic-fast-context route, then narrow with rg on returned keywords and paths; semantic output remains recall-only until source reads confirm.",
682
+ replacesRole: "semantic",
683
+ });
684
+ }
685
+ }
686
+ return hints;
687
+ }
688
+ function buildWarnings(intents, platform = PLATFORM_GENERIC) {
689
+ const warnings = [];
690
+ const low = intents.filter((i) => i.confidence === "low");
691
+ if (low.length > 0) {
692
+ warnings.push(`Low-confidence intent classification for: ${low.map((i) => i.id).join(", ")}.`);
693
+ }
694
+ const hasPolicy = intents.some((i) => i.id === "policy-document");
695
+ const hasPreserve = intents.some((i) => i.id === "protocol-platform-preserve");
696
+ if (hasPolicy && hasPreserve) {
697
+ warnings.push("Both policy-document and protocol-platform-preserve detected; preserve route keeps exact-symbol primary.");
698
+ }
699
+ const hasConceptual = intents.some((i) => i.id === "cross-cutting-discovery");
700
+ const hasExactIntent = intents.some((i) => i.id === "exact-symbol-path");
701
+ if (hasConceptual &&
702
+ !hasExactIntent &&
703
+ !intents.some((i) => i.id === "protocol-platform-preserve")) {
704
+ const semanticHint = platform === PLATFORM_CURSOR ? "platform-semantic" : "semantic-fast-context";
705
+ warnings.push(`Conceptual intent without exact signals; ${semanticHint} route promoted in plan. Convert semantic hits to exact rg follow-ups before final claims.`);
706
+ }
707
+ return warnings;
708
+ }
709
+ function verificationForIntents(intents) {
710
+ if (intents.some((i) => i.id === "policy-document")) {
711
+ return policyVerification();
712
+ }
713
+ if (intents.some((i) => i.id === "caller-chain")) {
714
+ return callerVerification();
715
+ }
716
+ if (intents.some((i) => i.id === "trap-package-disambiguation")) {
717
+ return trapVerification();
718
+ }
719
+ if (intents.some((i) => i.id === "extension-shared-symbol")) {
720
+ return extensionVerification();
721
+ }
722
+ return baseVerification();
723
+ }
724
+ /**
725
+ * Build a deterministic retrieval plan envelope for a natural-language query.
726
+ */
727
+ export function routeCodebaseRetrieval(input) {
728
+ const query = normalizeQuery(input.query);
729
+ const includeOptionalAdapters = input.codebaseRetrievalSelected !== false;
730
+ const platform = input.platform && KNOWN_PLATFORMS.has(input.platform)
731
+ ? input.platform
732
+ : PLATFORM_GENERIC;
733
+ const projectFileCount = input.projectFileCount ?? null;
734
+ if (!query) {
735
+ const emptyIntent = buildIntent("exact-symbol-path", "General codebase (exact baseline)", ["empty-query"], "low", true);
736
+ const emptyRoutes = orderedRoutesForIntents([emptyIntent], includeOptionalAdapters, platform, projectFileCount);
737
+ return {
738
+ version: CODEBASE_RETRIEVAL_ROUTER_VERSION,
739
+ query,
740
+ intents: [emptyIntent],
741
+ routes: emptyRoutes,
742
+ adapterState: [],
743
+ freshness: [],
744
+ fallback: buildFallbackHints([emptyIntent], includeOptionalAdapters, emptyRoutes, platform),
745
+ warnings: ["Empty query; only baseline exact route is emitted."],
746
+ verification: baseVerification(),
747
+ platform,
748
+ projectFileCount,
749
+ };
750
+ }
751
+ const intents = classifyIntents(query);
752
+ const routes = orderedRoutesForIntents(intents, includeOptionalAdapters, platform, projectFileCount);
753
+ return {
754
+ version: CODEBASE_RETRIEVAL_ROUTER_VERSION,
755
+ query,
756
+ intents,
757
+ routes,
758
+ adapterState: [],
759
+ freshness: [],
760
+ fallback: buildFallbackHints(intents, includeOptionalAdapters, routes, platform),
761
+ warnings: buildWarnings(intents, platform),
762
+ verification: verificationForIntents(intents),
763
+ platform,
764
+ projectFileCount,
765
+ };
766
+ }
767
+ //# sourceMappingURL=codebase-retrieval-router.js.map