spidersan 0.10.0 → 0.20.2

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 (430) hide show
  1. package/CHANGELOG.md +171 -0
  2. package/README.md +39 -280
  3. package/dist/bin/command-registry.d.ts +25 -0
  4. package/dist/bin/command-registry.d.ts.map +1 -0
  5. package/dist/bin/command-registry.js +29 -0
  6. package/dist/bin/command-registry.js.map +1 -0
  7. package/dist/bin/spidersan.d.ts +7 -0
  8. package/dist/bin/spidersan.d.ts.map +1 -1
  9. package/dist/bin/spidersan.js +38 -57
  10. package/dist/bin/spidersan.js.map +1 -1
  11. package/dist/commands/cleanup.d.ts.map +1 -1
  12. package/dist/commands/cleanup.js +17 -3
  13. package/dist/commands/cleanup.js.map +1 -1
  14. package/dist/commands/config.d.ts.map +1 -1
  15. package/dist/commands/config.js +11 -39
  16. package/dist/commands/config.js.map +1 -1
  17. package/dist/commands/conflicts.d.ts +22 -0
  18. package/dist/commands/conflicts.d.ts.map +1 -1
  19. package/dist/commands/conflicts.js +459 -256
  20. package/dist/commands/conflicts.js.map +1 -1
  21. package/dist/commands/cross-conflicts.d.ts.map +1 -1
  22. package/dist/commands/cross-conflicts.js +7 -8
  23. package/dist/commands/cross-conflicts.js.map +1 -1
  24. package/dist/commands/depends.d.ts +4 -1
  25. package/dist/commands/depends.d.ts.map +1 -1
  26. package/dist/commands/depends.js +35 -8
  27. package/dist/commands/depends.js.map +1 -1
  28. package/dist/commands/doctor.d.ts.map +1 -1
  29. package/dist/commands/doctor.js +25 -7
  30. package/dist/commands/doctor.js.map +1 -1
  31. package/dist/commands/git-watch.d.ts +1 -1
  32. package/dist/commands/git-watch.js +1 -1
  33. package/dist/commands/github-sync.d.ts +33 -0
  34. package/dist/commands/github-sync.d.ts.map +1 -1
  35. package/dist/commands/github-sync.js +68 -57
  36. package/dist/commands/github-sync.js.map +1 -1
  37. package/dist/commands/index.d.ts +2 -13
  38. package/dist/commands/index.d.ts.map +1 -1
  39. package/dist/commands/index.js +5 -20
  40. package/dist/commands/index.js.map +1 -1
  41. package/dist/commands/merge-order.d.ts.map +1 -1
  42. package/dist/commands/merge-order.js +8 -4
  43. package/dist/commands/merge-order.js.map +1 -1
  44. package/dist/commands/merged.d.ts.map +1 -1
  45. package/dist/commands/merged.js +5 -1
  46. package/dist/commands/merged.js.map +1 -1
  47. package/dist/commands/pr-check.d.ts +24 -0
  48. package/dist/commands/pr-check.d.ts.map +1 -0
  49. package/dist/commands/pr-check.js +85 -0
  50. package/dist/commands/pr-check.js.map +1 -0
  51. package/dist/commands/ready-check.d.ts.map +1 -1
  52. package/dist/commands/ready-check.js +6 -3
  53. package/dist/commands/ready-check.js.map +1 -1
  54. package/dist/commands/register.d.ts +5 -0
  55. package/dist/commands/register.d.ts.map +1 -1
  56. package/dist/commands/register.js +14 -1
  57. package/dist/commands/register.js.map +1 -1
  58. package/dist/commands/registry-sync.d.ts.map +1 -1
  59. package/dist/commands/registry-sync.js +12 -46
  60. package/dist/commands/registry-sync.js.map +1 -1
  61. package/dist/commands/stale.d.ts.map +1 -1
  62. package/dist/commands/stale.js +8 -3
  63. package/dist/commands/stale.js.map +1 -1
  64. package/dist/commands/sync.d.ts +14 -1
  65. package/dist/commands/sync.d.ts.map +1 -1
  66. package/dist/commands/sync.js +49 -31
  67. package/dist/commands/sync.js.map +1 -1
  68. package/dist/commands/verify-trunk.d.ts +18 -0
  69. package/dist/commands/verify-trunk.d.ts.map +1 -0
  70. package/dist/commands/verify-trunk.js +77 -0
  71. package/dist/commands/verify-trunk.js.map +1 -0
  72. package/dist/commands/watch.d.ts +0 -1
  73. package/dist/commands/watch.d.ts.map +1 -1
  74. package/dist/commands/watch.js +50 -77
  75. package/dist/commands/watch.js.map +1 -1
  76. package/dist/index.d.ts +0 -3
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +0 -3
  79. package/dist/index.js.map +1 -1
  80. package/dist/lib/activity.d.ts.map +1 -1
  81. package/dist/lib/activity.js +6 -2
  82. package/dist/lib/activity.js.map +1 -1
  83. package/dist/lib/ai/context-builder.d.ts.map +1 -1
  84. package/dist/lib/ai/context-builder.js +19 -6
  85. package/dist/lib/ai/context-builder.js.map +1 -1
  86. package/dist/lib/ai/event-handler.d.ts.map +1 -1
  87. package/dist/lib/ai/event-handler.js +15 -2
  88. package/dist/lib/ai/event-handler.js.map +1 -1
  89. package/dist/lib/ai/reasoner.d.ts.map +1 -1
  90. package/dist/lib/ai/reasoner.js +63 -82
  91. package/dist/lib/ai/reasoner.js.map +1 -1
  92. package/dist/lib/ai/setup.d.ts +1 -1
  93. package/dist/lib/ai/setup.d.ts.map +1 -1
  94. package/dist/lib/ai/types.d.ts.map +1 -1
  95. package/dist/lib/ai/types.js +5 -2
  96. package/dist/lib/ai/types.js.map +1 -1
  97. package/dist/lib/ast.d.ts +10 -2
  98. package/dist/lib/ast.d.ts.map +1 -1
  99. package/dist/lib/ast.js +52 -27
  100. package/dist/lib/ast.js.map +1 -1
  101. package/dist/lib/carries.d.ts +22 -0
  102. package/dist/lib/carries.d.ts.map +1 -0
  103. package/dist/lib/carries.js +56 -0
  104. package/dist/lib/carries.js.map +1 -0
  105. package/dist/lib/colony-subscriber.d.ts +1 -1
  106. package/dist/lib/colony-subscriber.js +1 -1
  107. package/dist/lib/config.d.ts +2 -2
  108. package/dist/lib/config.d.ts.map +1 -1
  109. package/dist/lib/config.js +13 -8
  110. package/dist/lib/config.js.map +1 -1
  111. package/dist/lib/conflict-renderer.d.ts.map +1 -1
  112. package/dist/lib/conflict-renderer.js +17 -34
  113. package/dist/lib/conflict-renderer.js.map +1 -1
  114. package/dist/lib/ecosystem-env.d.ts +33 -0
  115. package/dist/lib/ecosystem-env.d.ts.map +1 -0
  116. package/dist/lib/ecosystem-env.js +62 -0
  117. package/dist/lib/ecosystem-env.js.map +1 -0
  118. package/dist/lib/git-events-subscriber.d.ts +27 -0
  119. package/dist/lib/git-events-subscriber.d.ts.map +1 -1
  120. package/dist/lib/git-events-subscriber.js +149 -58
  121. package/dist/lib/git-events-subscriber.js.map +1 -1
  122. package/dist/lib/git-merge-analyzer.d.ts +38 -0
  123. package/dist/lib/git-merge-analyzer.d.ts.map +1 -0
  124. package/dist/lib/git-merge-analyzer.js +23 -0
  125. package/dist/lib/git-merge-analyzer.js.map +1 -0
  126. package/dist/lib/git.d.ts +88 -0
  127. package/dist/lib/git.d.ts.map +1 -1
  128. package/dist/lib/git.js +499 -9
  129. package/dist/lib/git.js.map +1 -1
  130. package/dist/lib/github.d.ts +69 -1
  131. package/dist/lib/github.d.ts.map +1 -1
  132. package/dist/lib/github.js +230 -16
  133. package/dist/lib/github.js.map +1 -1
  134. package/dist/lib/graph.d.ts +15 -0
  135. package/dist/lib/graph.d.ts.map +1 -1
  136. package/dist/lib/graph.js +31 -0
  137. package/dist/lib/graph.js.map +1 -1
  138. package/dist/lib/machine.d.ts +14 -0
  139. package/dist/lib/machine.d.ts.map +1 -0
  140. package/dist/lib/machine.js +38 -0
  141. package/dist/lib/machine.js.map +1 -0
  142. package/dist/lib/notify.d.ts +68 -0
  143. package/dist/lib/notify.d.ts.map +1 -0
  144. package/dist/lib/notify.js +111 -0
  145. package/dist/lib/notify.js.map +1 -0
  146. package/dist/lib/outline.d.ts +6 -0
  147. package/dist/lib/outline.d.ts.map +1 -0
  148. package/dist/lib/outline.js +60 -0
  149. package/dist/lib/outline.js.map +1 -0
  150. package/dist/lib/push-registry.d.ts +22 -0
  151. package/dist/lib/push-registry.d.ts.map +1 -0
  152. package/dist/lib/push-registry.js +21 -0
  153. package/dist/lib/push-registry.js.map +1 -0
  154. package/dist/lib/reconcile.d.ts +100 -0
  155. package/dist/lib/reconcile.d.ts.map +1 -0
  156. package/dist/lib/reconcile.js +121 -0
  157. package/dist/lib/reconcile.js.map +1 -0
  158. package/dist/lib/security.d.ts +1 -6
  159. package/dist/lib/security.d.ts.map +1 -1
  160. package/dist/lib/security.js +1 -11
  161. package/dist/lib/security.js.map +1 -1
  162. package/dist/lib/semantic-analysis.d.ts +31 -0
  163. package/dist/lib/semantic-analysis.d.ts.map +1 -0
  164. package/dist/lib/semantic-analysis.js +120 -0
  165. package/dist/lib/semantic-analysis.js.map +1 -0
  166. package/dist/lib/supabase-credentials.d.ts +36 -0
  167. package/dist/lib/supabase-credentials.d.ts.map +1 -0
  168. package/dist/lib/supabase-credentials.js +43 -0
  169. package/dist/lib/supabase-credentials.js.map +1 -0
  170. package/dist/lib/trunk.d.ts +39 -0
  171. package/dist/lib/trunk.d.ts.map +1 -0
  172. package/dist/lib/trunk.js +116 -0
  173. package/dist/lib/trunk.js.map +1 -0
  174. package/dist/storage/adapter.d.ts +20 -1
  175. package/dist/storage/adapter.d.ts.map +1 -1
  176. package/dist/storage/branch-registry-store.d.ts +1 -1
  177. package/dist/storage/branch-registry-store.d.ts.map +1 -1
  178. package/dist/storage/factory.d.ts +0 -4
  179. package/dist/storage/factory.d.ts.map +1 -1
  180. package/dist/storage/factory.js +2 -26
  181. package/dist/storage/factory.js.map +1 -1
  182. package/dist/storage/json-branch-registry-store.d.ts +1 -1
  183. package/dist/storage/json-branch-registry-store.d.ts.map +1 -1
  184. package/dist/storage/json-branch-registry-store.js +33 -7
  185. package/dist/storage/json-branch-registry-store.js.map +1 -1
  186. package/dist/storage/local.d.ts +1 -1
  187. package/dist/storage/local.d.ts.map +1 -1
  188. package/dist/storage/local.js +2 -2
  189. package/dist/storage/local.js.map +1 -1
  190. package/dist/storage/memory-branch-registry-store.d.ts +1 -1
  191. package/dist/storage/memory-branch-registry-store.d.ts.map +1 -1
  192. package/dist/storage/memory-branch-registry-store.js +4 -1
  193. package/dist/storage/memory-branch-registry-store.js.map +1 -1
  194. package/dist/storage/supabase-registry-sync-client-impl.d.ts +1 -7
  195. package/dist/storage/supabase-registry-sync-client-impl.d.ts.map +1 -1
  196. package/dist/storage/supabase-registry-sync-client-impl.js +17 -61
  197. package/dist/storage/supabase-registry-sync-client-impl.js.map +1 -1
  198. package/dist/storage/supabase-registry-sync-client.d.ts +1 -1
  199. package/dist/storage/supabase-registry-sync-client.d.ts.map +1 -1
  200. package/dist/storage/supabase.d.ts +3 -9
  201. package/dist/storage/supabase.d.ts.map +1 -1
  202. package/dist/storage/supabase.js +4 -22
  203. package/dist/storage/supabase.js.map +1 -1
  204. package/dist/types/cloud.d.ts +1 -0
  205. package/dist/types/cloud.d.ts.map +1 -1
  206. package/package.json +88 -90
  207. package/dist/commands/activate.d.ts +0 -9
  208. package/dist/commands/activate.d.ts.map +0 -1
  209. package/dist/commands/activate.js +0 -45
  210. package/dist/commands/activate.js.map +0 -1
  211. package/dist/commands/active-windows.d.ts +0 -16
  212. package/dist/commands/active-windows.d.ts.map +0 -1
  213. package/dist/commands/active-windows.js +0 -373
  214. package/dist/commands/active-windows.js.map +0 -1
  215. package/dist/commands/ai.d.ts +0 -15
  216. package/dist/commands/ai.d.ts.map +0 -1
  217. package/dist/commands/ai.js +0 -498
  218. package/dist/commands/ai.js.map +0 -1
  219. package/dist/commands/audit-mark.d.ts +0 -12
  220. package/dist/commands/audit-mark.d.ts.map +0 -1
  221. package/dist/commands/audit-mark.js +0 -204
  222. package/dist/commands/audit-mark.js.map +0 -1
  223. package/dist/commands/auto.d.ts +0 -8
  224. package/dist/commands/auto.d.ts.map +0 -1
  225. package/dist/commands/auto.js +0 -207
  226. package/dist/commands/auto.js.map +0 -1
  227. package/dist/commands/bot.d.ts +0 -16
  228. package/dist/commands/bot.d.ts.map +0 -1
  229. package/dist/commands/bot.js +0 -416
  230. package/dist/commands/bot.js.map +0 -1
  231. package/dist/commands/close.d.ts +0 -9
  232. package/dist/commands/close.d.ts.map +0 -1
  233. package/dist/commands/close.js +0 -129
  234. package/dist/commands/close.js.map +0 -1
  235. package/dist/commands/collab-sync.d.ts +0 -14
  236. package/dist/commands/collab-sync.d.ts.map +0 -1
  237. package/dist/commands/collab-sync.js +0 -264
  238. package/dist/commands/collab-sync.js.map +0 -1
  239. package/dist/commands/collab.d.ts +0 -6
  240. package/dist/commands/collab.d.ts.map +0 -1
  241. package/dist/commands/collab.js +0 -103
  242. package/dist/commands/collab.js.map +0 -1
  243. package/dist/commands/completions.d.ts +0 -8
  244. package/dist/commands/completions.d.ts.map +0 -1
  245. package/dist/commands/completions.js +0 -83
  246. package/dist/commands/completions.js.map +0 -1
  247. package/dist/commands/daily.d.ts +0 -7
  248. package/dist/commands/daily.d.ts.map +0 -1
  249. package/dist/commands/daily.js +0 -171
  250. package/dist/commands/daily.js.map +0 -1
  251. package/dist/commands/dashboard.d.ts +0 -22
  252. package/dist/commands/dashboard.d.ts.map +0 -1
  253. package/dist/commands/dashboard.js +0 -401
  254. package/dist/commands/dashboard.js.map +0 -1
  255. package/dist/commands/demo.d.ts +0 -3
  256. package/dist/commands/demo.d.ts.map +0 -1
  257. package/dist/commands/demo.js +0 -118
  258. package/dist/commands/demo.js.map +0 -1
  259. package/dist/commands/ecosystem-loader.d.ts +0 -14
  260. package/dist/commands/ecosystem-loader.d.ts.map +0 -1
  261. package/dist/commands/ecosystem-loader.js +0 -90
  262. package/dist/commands/ecosystem-loader.js.map +0 -1
  263. package/dist/commands/fleet-status.d.ts +0 -14
  264. package/dist/commands/fleet-status.d.ts.map +0 -1
  265. package/dist/commands/fleet-status.js +0 -127
  266. package/dist/commands/fleet-status.js.map +0 -1
  267. package/dist/commands/inbox.d.ts +0 -3
  268. package/dist/commands/inbox.d.ts.map +0 -1
  269. package/dist/commands/inbox.js +0 -120
  270. package/dist/commands/inbox.js.map +0 -1
  271. package/dist/commands/intent-scan.d.ts +0 -17
  272. package/dist/commands/intent-scan.d.ts.map +0 -1
  273. package/dist/commands/intent-scan.js +0 -336
  274. package/dist/commands/intent-scan.js.map +0 -1
  275. package/dist/commands/key-import.d.ts +0 -3
  276. package/dist/commands/key-import.d.ts.map +0 -1
  277. package/dist/commands/key-import.js +0 -54
  278. package/dist/commands/key-import.js.map +0 -1
  279. package/dist/commands/keygen.d.ts +0 -3
  280. package/dist/commands/keygen.d.ts.map +0 -1
  281. package/dist/commands/keygen.js +0 -53
  282. package/dist/commands/keygen.js.map +0 -1
  283. package/dist/commands/keys.d.ts +0 -3
  284. package/dist/commands/keys.d.ts.map +0 -1
  285. package/dist/commands/keys.js +0 -56
  286. package/dist/commands/keys.js.map +0 -1
  287. package/dist/commands/lock.d.ts +0 -11
  288. package/dist/commands/lock.d.ts.map +0 -1
  289. package/dist/commands/lock.js +0 -257
  290. package/dist/commands/lock.js.map +0 -1
  291. package/dist/commands/mcp-health.d.ts +0 -3
  292. package/dist/commands/mcp-health.d.ts.map +0 -1
  293. package/dist/commands/mcp-health.js +0 -305
  294. package/dist/commands/mcp-health.js.map +0 -1
  295. package/dist/commands/mcp-restart.d.ts +0 -3
  296. package/dist/commands/mcp-restart.d.ts.map +0 -1
  297. package/dist/commands/mcp-restart.js +0 -176
  298. package/dist/commands/mcp-restart.js.map +0 -1
  299. package/dist/commands/monitor.d.ts +0 -3
  300. package/dist/commands/monitor.d.ts.map +0 -1
  301. package/dist/commands/monitor.js +0 -153
  302. package/dist/commands/monitor.js.map +0 -1
  303. package/dist/commands/msg-read.d.ts +0 -3
  304. package/dist/commands/msg-read.d.ts.map +0 -1
  305. package/dist/commands/msg-read.js +0 -95
  306. package/dist/commands/msg-read.js.map +0 -1
  307. package/dist/commands/pulse.d.ts +0 -13
  308. package/dist/commands/pulse.d.ts.map +0 -1
  309. package/dist/commands/pulse.js +0 -174
  310. package/dist/commands/pulse.js.map +0 -1
  311. package/dist/commands/queen.d.ts +0 -25
  312. package/dist/commands/queen.d.ts.map +0 -1
  313. package/dist/commands/queen.js +0 -326
  314. package/dist/commands/queen.js.map +0 -1
  315. package/dist/commands/radar.d.ts +0 -3
  316. package/dist/commands/radar.d.ts.map +0 -1
  317. package/dist/commands/radar.js +0 -147
  318. package/dist/commands/radar.js.map +0 -1
  319. package/dist/commands/rescue.d.ts +0 -11
  320. package/dist/commands/rescue.d.ts.map +0 -1
  321. package/dist/commands/rescue.js +0 -147
  322. package/dist/commands/rescue.js.map +0 -1
  323. package/dist/commands/semantic.d.ts +0 -3
  324. package/dist/commands/semantic.d.ts.map +0 -1
  325. package/dist/commands/semantic.js +0 -62
  326. package/dist/commands/semantic.js.map +0 -1
  327. package/dist/commands/send.d.ts +0 -3
  328. package/dist/commands/send.d.ts.map +0 -1
  329. package/dist/commands/send.js +0 -121
  330. package/dist/commands/send.js.map +0 -1
  331. package/dist/commands/status.d.ts +0 -9
  332. package/dist/commands/status.d.ts.map +0 -1
  333. package/dist/commands/status.js +0 -41
  334. package/dist/commands/status.js.map +0 -1
  335. package/dist/commands/sync-advisor.d.ts +0 -14
  336. package/dist/commands/sync-advisor.d.ts.map +0 -1
  337. package/dist/commands/sync-advisor.js +0 -110
  338. package/dist/commands/sync-advisor.js.map +0 -1
  339. package/dist/commands/tension.d.ts +0 -12
  340. package/dist/commands/tension.d.ts.map +0 -1
  341. package/dist/commands/tension.js +0 -262
  342. package/dist/commands/tension.js.map +0 -1
  343. package/dist/commands/torrent.d.ts +0 -9
  344. package/dist/commands/torrent.d.ts.map +0 -1
  345. package/dist/commands/torrent.js +0 -470
  346. package/dist/commands/torrent.js.map +0 -1
  347. package/dist/commands/tui.d.ts +0 -8
  348. package/dist/commands/tui.d.ts.map +0 -1
  349. package/dist/commands/tui.js +0 -15
  350. package/dist/commands/tui.js.map +0 -1
  351. package/dist/commands/wake.d.ts +0 -9
  352. package/dist/commands/wake.d.ts.map +0 -1
  353. package/dist/commands/wake.js +0 -188
  354. package/dist/commands/wake.js.map +0 -1
  355. package/dist/commands/welcome.d.ts +0 -8
  356. package/dist/commands/welcome.d.ts.map +0 -1
  357. package/dist/commands/welcome.js +0 -85
  358. package/dist/commands/welcome.js.map +0 -1
  359. package/dist/commands/who-owns.d.ts +0 -3
  360. package/dist/commands/who-owns.d.ts.map +0 -1
  361. package/dist/commands/who-owns.js +0 -68
  362. package/dist/commands/who-owns.js.map +0 -1
  363. package/dist/commands/who-touched.d.ts +0 -9
  364. package/dist/commands/who-touched.d.ts.map +0 -1
  365. package/dist/commands/who-touched.js +0 -198
  366. package/dist/commands/who-touched.js.map +0 -1
  367. package/dist/lib/crdt.d.ts +0 -83
  368. package/dist/lib/crdt.d.ts.map +0 -1
  369. package/dist/lib/crdt.js +0 -160
  370. package/dist/lib/crdt.js.map +0 -1
  371. package/dist/lib/daily-bridge.d.ts +0 -41
  372. package/dist/lib/daily-bridge.d.ts.map +0 -1
  373. package/dist/lib/daily-bridge.js +0 -186
  374. package/dist/lib/daily-bridge.js.map +0 -1
  375. package/dist/lib/hub.d.ts +0 -31
  376. package/dist/lib/hub.d.ts.map +0 -1
  377. package/dist/lib/hub.js +0 -92
  378. package/dist/lib/hub.js.map +0 -1
  379. package/dist/lib/license.d.ts +0 -61
  380. package/dist/lib/license.d.ts.map +0 -1
  381. package/dist/lib/license.js +0 -171
  382. package/dist/lib/license.js.map +0 -1
  383. package/dist/lib/pulse-renderer.d.ts +0 -19
  384. package/dist/lib/pulse-renderer.d.ts.map +0 -1
  385. package/dist/lib/pulse-renderer.js +0 -108
  386. package/dist/lib/pulse-renderer.js.map +0 -1
  387. package/dist/lib/repo-scanner.d.ts +0 -32
  388. package/dist/lib/repo-scanner.d.ts.map +0 -1
  389. package/dist/lib/repo-scanner.js +0 -160
  390. package/dist/lib/repo-scanner.js.map +0 -1
  391. package/dist/lib/salvage-analyzer.d.ts +0 -29
  392. package/dist/lib/salvage-analyzer.d.ts.map +0 -1
  393. package/dist/lib/salvage-analyzer.js +0 -121
  394. package/dist/lib/salvage-analyzer.js.map +0 -1
  395. package/dist/lib/session-logger.d.ts +0 -54
  396. package/dist/lib/session-logger.d.ts.map +0 -1
  397. package/dist/lib/session-logger.js +0 -136
  398. package/dist/lib/session-logger.js.map +0 -1
  399. package/dist/lib/symbol-extractor.d.ts +0 -41
  400. package/dist/lib/symbol-extractor.d.ts.map +0 -1
  401. package/dist/lib/symbol-extractor.js +0 -78
  402. package/dist/lib/symbol-extractor.js.map +0 -1
  403. package/dist/storage/git-messages.d.ts +0 -53
  404. package/dist/storage/git-messages.d.ts.map +0 -1
  405. package/dist/storage/git-messages.js +0 -376
  406. package/dist/storage/git-messages.js.map +0 -1
  407. package/dist/storage/local-messages.d.ts +0 -37
  408. package/dist/storage/local-messages.d.ts.map +0 -1
  409. package/dist/storage/local-messages.js +0 -151
  410. package/dist/storage/local-messages.js.map +0 -1
  411. package/dist/storage/message-adapter.d.ts +0 -86
  412. package/dist/storage/message-adapter.d.ts.map +0 -1
  413. package/dist/storage/message-adapter.js +0 -28
  414. package/dist/storage/message-adapter.js.map +0 -1
  415. package/dist/storage/message-factory.d.ts +0 -36
  416. package/dist/storage/message-factory.d.ts.map +0 -1
  417. package/dist/storage/message-factory.js +0 -99
  418. package/dist/storage/message-factory.js.map +0 -1
  419. package/dist/storage/mycmail-adapter.d.ts +0 -38
  420. package/dist/storage/mycmail-adapter.d.ts.map +0 -1
  421. package/dist/storage/mycmail-adapter.js +0 -300
  422. package/dist/storage/mycmail-adapter.js.map +0 -1
  423. package/dist/tui/dashboard.d.ts +0 -35
  424. package/dist/tui/dashboard.d.ts.map +0 -1
  425. package/dist/tui/dashboard.js +0 -199
  426. package/dist/tui/dashboard.js.map +0 -1
  427. package/dist/tui/screen.d.ts +0 -14
  428. package/dist/tui/screen.d.ts.map +0 -1
  429. package/dist/tui/screen.js +0 -138
  430. package/dist/tui/screen.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/lib/git.ts"],"names":[],"mappings":"AAIA,qBAAa,QAAS,SAAQ,KAAK;aAGX,IAAI,EAAE,YAAY,GAAG,aAAa,GAAG,aAAa;gBADlE,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,YAAY,GAAG,aAAa,GAAG,aAAa;CAKzE;AAsED,wBAAgB,gBAAgB,IAAI,MAAM,CAMzC;AAED,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,EAAE,CAqBrE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA4BzE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiB3E;AAED,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA2ClG"}
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/lib/git.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,eAAe,CAAC;AAI3E,qBAAa,QAAS,SAAQ,KAAK;aAGX,IAAI,EAAE,YAAY,GAAG,aAAa,GAAG,aAAa;gBADlE,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,YAAY,GAAG,aAAa,GAAG,aAAa;CAKzE;AAED,KAAK,cAAc,GAAG,IAAI,CAAC,qCAAqC,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC,CAAC;AAY/F,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,MAAM,CAMxE;AAkDD,wBAAgB,gBAAgB,IAAI,MAAM,CAMzC;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAMpC;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAQ5C;AAED,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,EAAE,CAoBrE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA4BzE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqB3E;AAMD,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,SAAS,GAAG,eAAe,GAAG,QAAQ,CAAC;AAEnF,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,iBAAiB,CAAA;KAAE,EAAE,CAAC;IACvD,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,YAAY,GAAG,QAAQ,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAqLD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAsJnF;AAED,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA2ClG;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,SAAW,GAAG,MAAM,GAAG,IAAI,CAkB/E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,SAAW,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAOrE;AAED,2EAA2E;AAC3E,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgBjE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CASrE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAsB3E"}
package/dist/lib/git.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { execFileSync } from 'child_process';
2
+ import { basename } from 'path';
2
3
  import { validateFilePath, validateBranchName } from './security.js';
3
4
  export class GitError extends Error {
4
5
  code;
@@ -11,7 +12,7 @@ export class GitError extends Error {
11
12
  function gitEnv() {
12
13
  return { ...process.env };
13
14
  }
14
- function execGit(args, options) {
15
+ export function execGit(args, options) {
15
16
  return execFileSync('git', args, {
16
17
  encoding: 'utf-8',
17
18
  env: gitEnv(),
@@ -67,18 +68,49 @@ export function getCurrentBranch() {
67
68
  throw toGitError(error, 'Failed to determine current branch', 'EXEC_FAILED');
68
69
  }
69
70
  }
71
+ /**
72
+ * Repo name as used for the `repo_name` column in spider_registries.
73
+ *
74
+ * Must stay identical across push and read paths: `registry-sync --push` stamps
75
+ * rows with this value and `conflicts`/`cross-conflicts` filter on it, so any
76
+ * divergence makes a pull silently return zero rows (tb-ly0b).
77
+ */
78
+ export function getRepoName() {
79
+ try {
80
+ return basename(execGit(['rev-parse', '--show-toplevel']).trim());
81
+ }
82
+ catch {
83
+ return basename(process.cwd());
84
+ }
85
+ }
86
+ /**
87
+ * Every repo_name a read should match: the clone's directory name (what registry-sync
88
+ * writes) plus the lowercased GitHub repo name from `origin` (what the spidersan-webhook
89
+ * edge function writes for pushed branches — it never sees the local directory). They
90
+ * differ for spidersan-oss cloned as `spidersan`, or `toak` cloned as `Toak`.
91
+ */
92
+ export function registryRepoNames() {
93
+ const names = [getRepoName()];
94
+ try {
95
+ const url = execGit(['remote', 'get-url', 'origin']).trim();
96
+ const m = url.match(/[/:]([^/]+?)(?:\.git)?$/);
97
+ if (m && !names.includes(m[1].toLowerCase()))
98
+ names.push(m[1].toLowerCase());
99
+ }
100
+ catch { /* no origin: directory name only */ }
101
+ return names;
102
+ }
70
103
  export function getChangedFiles(options) {
71
104
  const baseRef = options?.base ?? 'main';
72
105
  const strategies = [`${baseRef}...HEAD`, 'HEAD~1', 'HEAD'];
73
106
  for (const strategy of strategies) {
74
107
  try {
75
- const output = execGit(['diff', '--name-only', strategy], {
108
+ const output = execGit(['-c', 'core.quotepath=off', 'diff', '--name-only', strategy], {
76
109
  stdio: ['pipe', 'pipe', 'ignore'],
77
110
  });
78
- const files = output.trim().split('\n').filter(Boolean);
79
- if (files.length > 0) {
80
- return files;
81
- }
111
+ // A successful diff is authoritative — an empty result means no changes,
112
+ // not "try the next strategy" (HEAD~1 would report already-merged files).
113
+ return output.trim().split('\n').filter(Boolean);
82
114
  }
83
115
  catch (error) {
84
116
  if (isNotRepoError(error)) {
@@ -121,19 +153,349 @@ export function getFileAtRef(ref, filePath) {
121
153
  export function getRemoteHead(remote, branch) {
122
154
  const safeBranch = validateBranchName(branch);
123
155
  try {
124
- const output = execGit(['ls-remote', '--heads', remote, safeBranch], {
156
+ // ls-remote patterns match ref suffixes ("main" also matches "feature/main"),
157
+ // so query the full refname and match the exact line.
158
+ const refName = `refs/heads/${safeBranch}`;
159
+ const output = execGit(['ls-remote', '--heads', remote, refName], {
125
160
  stdio: ['pipe', 'pipe', 'ignore'],
126
161
  }).trim();
127
- if (!output) {
162
+ const line = output.split('\n').find((l) => l.endsWith(`\t${refName}`));
163
+ if (!line) {
128
164
  return null;
129
165
  }
130
- const [sha] = output.split(/\s+/, 1);
166
+ const [sha] = line.split(/\s+/, 1);
131
167
  return sha || null;
132
168
  }
133
169
  catch {
134
170
  return null;
135
171
  }
136
172
  }
173
+ /** Read stdout off a thrown execFileSync error (utf-8). */
174
+ function getThrownStdout(error) {
175
+ const gitError = error;
176
+ if (typeof gitError?.stdout === 'string') {
177
+ return gitError.stdout;
178
+ }
179
+ if (Buffer.isBuffer(gitError?.stdout)) {
180
+ return gitError.stdout.toString('utf-8');
181
+ }
182
+ return '';
183
+ }
184
+ /** "unknown option" / usage failure → modern --write-tree unsupported, fall back to legacy. */
185
+ function isUnknownOptionError(error) {
186
+ return /(unknown option|usage: git merge-tree|is not a git command)/i.test(getErrorText(error));
187
+ }
188
+ /**
189
+ * Resolve a ref leniently to a commit SHA.
190
+ * Accepts a local branch / SHA, and falls back to `origin/<ref>`.
191
+ * Returns null if the ref cannot be resolved (caller turns this into `error`).
192
+ */
193
+ function resolveRefToSha(ref) {
194
+ const candidates = ref.startsWith('origin/') ? [ref] : [ref, `origin/${ref}`];
195
+ for (const candidate of candidates) {
196
+ try {
197
+ return execGit(['rev-parse', '--verify', `${candidate}^{commit}`], {
198
+ stdio: ['pipe', 'pipe', 'ignore'],
199
+ }).trim();
200
+ }
201
+ catch {
202
+ // try next candidate
203
+ }
204
+ }
205
+ return null;
206
+ }
207
+ /** Probe once whether this git supports `git merge-tree --write-tree`. */
208
+ let writeTreeSupportedCache = null;
209
+ function supportsWriteTree() {
210
+ if (writeTreeSupportedCache !== null) {
211
+ return writeTreeSupportedCache;
212
+ }
213
+ try {
214
+ // Empty-tree against itself is a trivial, side-effect-free probe.
215
+ const empty = '4b825dc642cb6eb9a060e54bf8d69288fbee4904';
216
+ execGit(['merge-tree', '--write-tree', empty, empty], {
217
+ stdio: ['pipe', 'pipe', 'ignore'],
218
+ });
219
+ writeTreeSupportedCache = true;
220
+ }
221
+ catch (error) {
222
+ // Exit-1 here would still mean the option IS supported (just "conflict"/no-op);
223
+ // only a usage/unknown-option failure means it's unsupported.
224
+ writeTreeSupportedCache = !isUnknownOptionError(error);
225
+ }
226
+ return writeTreeSupportedCache;
227
+ }
228
+ const KIND_FROM_LABEL = {
229
+ content: 'content',
230
+ 'add/add': 'add/add',
231
+ 'modify/delete': 'delete/modify',
232
+ 'delete/modify': 'delete/modify',
233
+ distinct: 'rename',
234
+ rename: 'rename',
235
+ 'rename/rename': 'rename',
236
+ 'rename/add': 'rename',
237
+ 'rename/delete': 'rename',
238
+ };
239
+ function mapKind(label) {
240
+ const normalized = label.trim().toLowerCase();
241
+ return KIND_FROM_LABEL[normalized] ?? 'content';
242
+ }
243
+ /**
244
+ * Parse modern `git merge-tree --write-tree <base> <branch>` output.
245
+ * Format: first line = written tree OID; then a blank line; then an info block
246
+ * with `CONFLICT (<kind>): ... in <path>` lines (and `Auto-merging <path>`).
247
+ * The CONFLICT lines carry BOTH the path and the kind, so we parse those.
248
+ */
249
+ function parseWriteTreeConflicts(output) {
250
+ const conflicts = new Map();
251
+ const lines = output.split('\n');
252
+ for (const line of lines) {
253
+ // CONFLICT (content): Merge conflict in <path>
254
+ // CONFLICT (add/add): Merge conflict in <path>
255
+ const merge = line.match(/^CONFLICT \(([^)]+)\): Merge conflict in (.+)$/);
256
+ if (merge) {
257
+ const [, label, path] = merge;
258
+ conflicts.set(path, mapKind(label));
259
+ continue;
260
+ }
261
+ // CONFLICT (modify/delete): <path> deleted in X and modified in Y. ...
262
+ // CONFLICT (rename/delete): <path> renamed ... but deleted in ...
263
+ // Terminate on the multi-word PHRASE that follows the path (" deleted in ",
264
+ // " renamed to ", …), NOT a bare keyword — a path like "my added notes.txt"
265
+ // contains the word "added" but not the phrase " added in ", so phrases avoid
266
+ // truncating the captured path.
267
+ const other = line.match(/^CONFLICT \(([^)]+)\): (.+?)(?: deleted in | renamed to | added in | modified in | left in tree)/);
268
+ if (other) {
269
+ const [, label, path] = other;
270
+ conflicts.set(path, mapKind(label));
271
+ }
272
+ }
273
+ return Array.from(conflicts, ([file, kind]) => ({ file, kind }));
274
+ }
275
+ /**
276
+ * Parse legacy `git merge-tree <mergeBase> <base> <branch>` output.
277
+ * Output is a per-file record stream. Records begin with an unindented header
278
+ * (`changed in both`, `added in both`, `removed in remote`, `merged`, …) followed
279
+ * by indented ` base/our/their <mode> <oid> <path>` lines and a diff hunk.
280
+ *
281
+ * A `changed in both`/`added in both` header signals BOTH sides touched the path,
282
+ * but is only an actual CONFLICT when its hunk contains `<<<<<<<` markers
283
+ * (e.g. same-file/different-region merges cleanly yet still shows `changed in both`).
284
+ * We track the header record for the path (handling spaces) and require a marker.
285
+ *
286
+ * KNOWN LIMITATION (legacy/git<2.38 only — modern --write-tree path is preferred and
287
+ * always taken on git>=2.38): marker-less conflict classes (modify/delete, rename/*)
288
+ * emit no `<<<<<<<` and are under-reported here. Tracked in STATE.json known-issues;
289
+ * not fixed because legacy git is effectively absent in this fleet (CI/dev on 2.50).
290
+ */
291
+ function parseLegacyConflicts(output) {
292
+ const conflicts = new Map();
293
+ const lines = output.split('\n');
294
+ let currentHeader = null;
295
+ let currentPath = null;
296
+ let currentKind = 'content';
297
+ let sawMarker = false;
298
+ const flush = () => {
299
+ if (currentHeader && currentPath && sawMarker) {
300
+ conflicts.set(currentPath, currentKind);
301
+ }
302
+ currentHeader = null;
303
+ currentPath = null;
304
+ currentKind = 'content';
305
+ sawMarker = false;
306
+ };
307
+ for (const line of lines) {
308
+ // Unindented record header (starts a new record).
309
+ const header = line.match(/^(changed in both|added in both|removed in (?:both|remote|local)|added in (?:remote|local)|merged|renamed)\b/);
310
+ if (header) {
311
+ flush();
312
+ currentHeader = header[1];
313
+ if (currentHeader === 'added in both') {
314
+ currentKind = 'add/add';
315
+ }
316
+ else if (currentHeader.startsWith('removed in')) {
317
+ currentKind = 'delete/modify';
318
+ }
319
+ else if (currentHeader === 'renamed') {
320
+ currentKind = 'rename';
321
+ }
322
+ else {
323
+ currentKind = 'content';
324
+ }
325
+ continue;
326
+ }
327
+ // Indented file record line: ` our 100644 <oid> <path>` — extract the path.
328
+ // Path may contain spaces; take everything after the oid token.
329
+ const fileLine = line.match(/^\s+(?:base|our|their)\s+\d{6}\s+[0-9a-f]{7,64}\s+(.+)$/);
330
+ if (fileLine && currentHeader && !currentPath) {
331
+ currentPath = fileLine[1];
332
+ continue;
333
+ }
334
+ if (line.includes('<<<<<<<')) {
335
+ sawMarker = true;
336
+ }
337
+ }
338
+ flush();
339
+ return Array.from(conflicts, ([file, kind]) => ({ file, kind }));
340
+ }
341
+ /**
342
+ * Real conflicts merging `branch` into `base`. Prefers `--write-tree` (git ≥2.38),
343
+ * falls back to the legacy 3-arg form. NEVER throws for "they conflict" — only sets
344
+ * `error` for environmental failures (bad ref / not a repo / unsupported tooling).
345
+ */
346
+ export function getMergeConflicts(base, branch) {
347
+ const baseResult = {
348
+ base,
349
+ branch,
350
+ mergeBase: null,
351
+ conflicts: [],
352
+ clean: false,
353
+ method: 'write-tree',
354
+ error: undefined,
355
+ };
356
+ // Resolve both refs leniently first; a missing ref is an env error, not a throw.
357
+ let baseSha;
358
+ let branchSha;
359
+ try {
360
+ baseSha = resolveRefToSha(base);
361
+ }
362
+ catch (error) {
363
+ if (isNotRepoError(error)) {
364
+ return { ...baseResult, error: 'Not in a git repository' };
365
+ }
366
+ baseSha = null;
367
+ }
368
+ if (baseSha === null) {
369
+ return { ...baseResult, error: `ref not found: ${base}` };
370
+ }
371
+ try {
372
+ branchSha = resolveRefToSha(branch);
373
+ }
374
+ catch (error) {
375
+ if (isNotRepoError(error)) {
376
+ return { ...baseResult, error: 'Not in a git repository' };
377
+ }
378
+ branchSha = null;
379
+ }
380
+ if (branchSha === null) {
381
+ return { ...baseResult, error: `ref not found: ${branch}` };
382
+ }
383
+ // Compute merge-base (best-effort; not fatal if unrelated histories).
384
+ let mergeBase;
385
+ try {
386
+ mergeBase = execGit(['merge-base', baseSha, branchSha], {
387
+ stdio: ['pipe', 'pipe', 'ignore'],
388
+ }).trim() || null;
389
+ }
390
+ catch {
391
+ mergeBase = null;
392
+ }
393
+ // ── Modern path: git merge-tree --write-tree <base> <branch> ──
394
+ if (supportsWriteTree()) {
395
+ try {
396
+ const output = execGit(['merge-tree', '--write-tree', baseSha, branchSha], {
397
+ stdio: ['pipe', 'pipe', 'ignore'],
398
+ });
399
+ // Exit 0 → clean merge (first line is the tree OID, no conflict block).
400
+ return {
401
+ ...baseResult,
402
+ mergeBase,
403
+ conflicts: [],
404
+ clean: true,
405
+ method: 'write-tree',
406
+ rawOutput: output,
407
+ };
408
+ }
409
+ catch (error) {
410
+ if (isNotRepoError(error)) {
411
+ return { ...baseResult, mergeBase, error: 'Not in a git repository' };
412
+ }
413
+ if (isUnknownOptionError(error)) {
414
+ // Tooling regression mid-run — fall through to legacy.
415
+ writeTreeSupportedCache = false;
416
+ }
417
+ else {
418
+ // Exit non-zero WITH parseable conflict output = a valid conflict RESULT.
419
+ const stdout = getThrownStdout(error);
420
+ if (stdout) {
421
+ const conflicts = parseWriteTreeConflicts(stdout);
422
+ if (conflicts.length > 0) {
423
+ return {
424
+ ...baseResult,
425
+ mergeBase,
426
+ conflicts,
427
+ clean: false,
428
+ method: 'write-tree',
429
+ rawOutput: stdout,
430
+ };
431
+ }
432
+ // Non-zero but no parseable conflict (e.g. unrelated histories) → env error.
433
+ return {
434
+ ...baseResult,
435
+ mergeBase,
436
+ method: 'write-tree',
437
+ rawOutput: stdout,
438
+ error: getErrorText(error).split('\n')[0] || 'git merge-tree failed',
439
+ };
440
+ }
441
+ return {
442
+ ...baseResult,
443
+ mergeBase,
444
+ method: 'write-tree',
445
+ error: getErrorText(error).split('\n')[0] || 'git merge-tree failed',
446
+ };
447
+ }
448
+ }
449
+ }
450
+ // ── Legacy path: git merge-tree <mergeBase> <base> <branch> ──
451
+ if (mergeBase === null) {
452
+ // Legacy form requires a merge-base; without one we cannot analyze.
453
+ return {
454
+ ...baseResult,
455
+ mergeBase,
456
+ method: 'legacy',
457
+ error: `no merge-base between ${base} and ${branch}`,
458
+ };
459
+ }
460
+ try {
461
+ const output = execGit(['merge-tree', mergeBase, baseSha, branchSha], {
462
+ stdio: ['pipe', 'pipe', 'ignore'],
463
+ });
464
+ const conflicts = parseLegacyConflicts(output);
465
+ return {
466
+ ...baseResult,
467
+ mergeBase,
468
+ conflicts,
469
+ clean: conflicts.length === 0,
470
+ method: 'legacy',
471
+ rawOutput: output,
472
+ };
473
+ }
474
+ catch (error) {
475
+ if (isNotRepoError(error)) {
476
+ return { ...baseResult, mergeBase, method: 'legacy', error: 'Not in a git repository' };
477
+ }
478
+ // Legacy form may still produce output on a thrown error in some gits.
479
+ const stdout = getThrownStdout(error);
480
+ if (stdout) {
481
+ const conflicts = parseLegacyConflicts(stdout);
482
+ return {
483
+ ...baseResult,
484
+ mergeBase,
485
+ conflicts,
486
+ clean: conflicts.length === 0,
487
+ method: 'legacy',
488
+ rawOutput: stdout,
489
+ };
490
+ }
491
+ return {
492
+ ...baseResult,
493
+ mergeBase,
494
+ method: 'legacy',
495
+ error: getErrorText(error).split('\n')[0] || 'git merge-tree failed',
496
+ };
497
+ }
498
+ }
137
499
  export function getAheadBehind(remote, branch) {
138
500
  let upstreamRef;
139
501
  if (remote && branch) {
@@ -177,4 +539,132 @@ export function getAheadBehind(remote, branch) {
177
539
  throw toGitError(error, `Failed to determine ahead/behind for ${upstreamRef}`, 'EXEC_FAILED');
178
540
  }
179
541
  }
542
+ /**
543
+ * Resolve a usable git ref for a branch name, preferring the remote-tracking
544
+ * ref (`refs/remotes/<remote>/<name>`) over the local ref (`refs/heads/<name>`).
545
+ *
546
+ * Returns the resolved ref string, or `null` if neither a remote nor a local
547
+ * ref exists — i.e. the branch is gone from this checkout AND the remote
548
+ * (an orphan). Preferring the remote ref means a stale local branch doesn't
549
+ * mask a delete, and vice-versa.
550
+ *
551
+ * Invalid branch names resolve to `null` rather than throwing, so a poisoned
552
+ * registry entry degrades to "orphan" instead of crashing reconcile-on-read.
553
+ */
554
+ export function resolveBranchRef(name, remote = 'origin') {
555
+ let branch;
556
+ try {
557
+ branch = validateBranchName(name);
558
+ }
559
+ catch {
560
+ return null;
561
+ }
562
+ for (const ref of [`refs/remotes/${remote}/${branch}`, `refs/heads/${branch}`]) {
563
+ try {
564
+ execGit(['rev-parse', '--verify', '--quiet', ref], {
565
+ stdio: ['pipe', 'pipe', 'ignore'],
566
+ });
567
+ return ref;
568
+ }
569
+ catch {
570
+ // Ref doesn't exist — try the next candidate.
571
+ }
572
+ }
573
+ return null;
574
+ }
575
+ /**
576
+ * Branch names that exist on `remote` right now (`git ls-remote --heads`), or
577
+ * `null` when the remote can't be asked (offline, no remote, timeout). A missing
578
+ * local/tracking ref only proves "not fetched here"; this is the call that
579
+ * proves "deleted". One network round-trip for the whole registry.
580
+ */
581
+ export function listRemoteHeads(remote = 'origin') {
582
+ try {
583
+ const out = execGit(['ls-remote', '--heads', remote], { stdio: ['pipe', 'pipe', 'ignore'], timeout: 15_000 });
584
+ return new Set(out.split('\n').map(l => l.split('\trefs/heads/')[1]).filter((b) => !!b));
585
+ }
586
+ catch {
587
+ return null;
588
+ }
589
+ }
590
+ /** Resolve only the LOCAL ref (`refs/heads/<name>`), or `null` if none. */
591
+ export function resolveLocalBranchRef(name) {
592
+ let branch;
593
+ try {
594
+ branch = validateBranchName(name);
595
+ }
596
+ catch {
597
+ return null;
598
+ }
599
+ const ref = `refs/heads/${branch}`;
600
+ try {
601
+ execGit(['rev-parse', '--verify', '--quiet', ref], {
602
+ stdio: ['pipe', 'pipe', 'ignore'],
603
+ });
604
+ return ref;
605
+ }
606
+ catch {
607
+ return null;
608
+ }
609
+ }
610
+ /**
611
+ * True if `ref` is an ancestor of `ancestorOf` — i.e. `ref` is fully merged
612
+ * into it. Backed by `git merge-base --is-ancestor` (exit 0 = ancestor,
613
+ * exit 1 = not). Any failure (not-an-ancestor, bad ref, not a repo) returns
614
+ * `false`, so the caller treats "can't prove merged" as "still live" — the
615
+ * safe default for conflict detection.
616
+ *
617
+ * NOTE: detects merge-commit / fast-forward merges, where the branch tip is
618
+ * an ancestor of trunk. Squash merges rewrite history, so the tip is NOT an
619
+ * ancestor — use {@link isSquashMergedInto} for those.
620
+ */
621
+ export function isMergedInto(ref, ancestorOf) {
622
+ try {
623
+ execGit(['merge-base', '--is-ancestor', ref, ancestorOf], {
624
+ stdio: ['pipe', 'pipe', 'ignore'],
625
+ });
626
+ return true;
627
+ }
628
+ catch {
629
+ return false;
630
+ }
631
+ }
632
+ /**
633
+ * True if `ref`'s content landed in `ancestorOf` via a SQUASH merge (tb-tr1z).
634
+ *
635
+ * Squash merges rewrite history, so `merge-base --is-ancestor` can never see
636
+ * them. Instead we ask whether trunk contains a patch-id-equivalent change:
637
+ * commit the branch's tree onto its merge-base as one synthetic commit (the
638
+ * exact diff a squash merge lands), then `git cherry` it against trunk — a
639
+ * leading `-` means an equivalent patch is already there.
640
+ *
641
+ * The synthetic commit is a dangling object git eventually gc's; author and
642
+ * dates are pinned so repeat probes reuse the identical object instead of
643
+ * accreting new ones. Any failure returns `false` — "can't prove merged"
644
+ * stays "live", same as {@link isMergedInto}.
645
+ */
646
+ export function isSquashMergedInto(ref, ancestorOf) {
647
+ const quiet = { stdio: ['pipe', 'pipe', 'ignore'] };
648
+ try {
649
+ const base = execGit(['merge-base', ancestorOf, ref], quiet).trim();
650
+ const tree = execGit(['rev-parse', `${ref}^{tree}`], quiet).trim();
651
+ const probe = execGit(['commit-tree', tree, '-p', base, '-m', 'spidersan squash probe'], {
652
+ ...quiet,
653
+ env: {
654
+ ...gitEnv(),
655
+ GIT_AUTHOR_NAME: 'spidersan',
656
+ GIT_AUTHOR_EMAIL: 'probe@spidersan',
657
+ GIT_COMMITTER_NAME: 'spidersan',
658
+ GIT_COMMITTER_EMAIL: 'probe@spidersan',
659
+ GIT_AUTHOR_DATE: '2000-01-01T00:00:00Z',
660
+ GIT_COMMITTER_DATE: '2000-01-01T00:00:00Z',
661
+ },
662
+ }).trim();
663
+ const cherry = execGit(['cherry', ancestorOf, probe], quiet).trim();
664
+ return cherry !== '' && cherry.split('\n').every(line => line.startsWith('-'));
665
+ }
666
+ catch {
667
+ return false;
668
+ }
669
+ }
180
670
  //# sourceMappingURL=git.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/lib/git.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/lib/git.ts"],"names":[],"mappings":"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"}