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,121 +0,0 @@
1
- /**
2
- * salvage-analyzer.ts — Phase C3 semantic intelligence
3
- *
4
- * Diff abandoned branch symbols vs main and report unique symbols
5
- * not present in main (salvageable code). Wired into `rescue --symbols`.
6
- */
7
- import { execFileSync } from 'child_process';
8
- import { mkdtempSync, writeFileSync, rmSync } from 'fs';
9
- import { join } from 'path';
10
- import { tmpdir } from 'os';
11
- import { extractSymbols } from './symbol-extractor.js';
12
- import { validateBranchName } from './security.js';
13
- /**
14
- * Analyse an abandoned branch for symbols not present in main.
15
- * Uses ts-morph (via symbol-extractor) for reliable TypeScript parsing.
16
- */
17
- export async function analyzeSalvage(branch, mainRef = 'main') {
18
- // Validate inputs before passing to git to prevent injection
19
- validateBranchName(branch);
20
- validateBranchName(mainRef);
21
- const report = {
22
- branch,
23
- analysedFiles: 0,
24
- salvageable: [],
25
- alreadyInMain: 0,
26
- };
27
- // List TypeScript/JavaScript files in the abandoned branch
28
- let branchFiles;
29
- try {
30
- const raw = execFileSync('git', ['ls-tree', '-r', '--name-only', branch], {
31
- encoding: 'utf-8',
32
- });
33
- branchFiles = raw
34
- .trim()
35
- .split('\n')
36
- .filter(f => /\.(ts|js|tsx|jsx)$/.test(f) && !f.includes('node_modules'));
37
- }
38
- catch {
39
- return report;
40
- }
41
- const tmpDir = mkdtempSync(join(tmpdir(), 'ssan-salvage-'));
42
- try {
43
- for (const file of branchFiles) {
44
- // Get file content from the abandoned branch
45
- let branchContent;
46
- try {
47
- branchContent = execFileSync('git', ['show', `${branch}:${file}`], {
48
- encoding: 'utf-8',
49
- });
50
- }
51
- catch {
52
- continue;
53
- }
54
- // Write to temp file for ts-morph
55
- const tmpFile = join(tmpDir, file.replace(/\//g, '_'));
56
- writeFileSync(tmpFile, branchContent, 'utf-8');
57
- const branchSymbols = extractSymbols(tmpFile);
58
- report.analysedFiles++;
59
- // Get main version (may not exist)
60
- let mainContent = null;
61
- try {
62
- mainContent = execFileSync('git', ['show', `${mainRef}:${file}`], {
63
- encoding: 'utf-8',
64
- });
65
- }
66
- catch {
67
- // File not in main — all its symbols are salvageable
68
- }
69
- if (!mainContent) {
70
- // Entire file is unique to the branch
71
- for (const sym of branchSymbols.symbols) {
72
- report.salvageable.push({ ...sym, file, branch });
73
- }
74
- continue;
75
- }
76
- // Compare symbols with main version
77
- const mainTmpFile = join(tmpDir, `main_${file.replace(/\//g, '_')}`);
78
- writeFileSync(mainTmpFile, mainContent, 'utf-8');
79
- const mainSymbols = extractSymbols(mainTmpFile);
80
- const mainNames = new Set(mainSymbols.symbols.map(s => s.name));
81
- for (const sym of branchSymbols.symbols) {
82
- if (!mainNames.has(sym.name)) {
83
- report.salvageable.push({ ...sym, file, branch });
84
- }
85
- else {
86
- report.alreadyInMain++;
87
- }
88
- }
89
- }
90
- }
91
- finally {
92
- try {
93
- rmSync(tmpDir, { recursive: true, force: true });
94
- }
95
- catch {
96
- // best-effort cleanup
97
- }
98
- }
99
- return report;
100
- }
101
- /**
102
- * Format a salvage report for CLI display.
103
- */
104
- export function formatSalvageReport(report) {
105
- const lines = [
106
- `🔍 Salvage analysis: ${report.branch}`,
107
- ` Files analysed: ${report.analysedFiles}`,
108
- ` Symbols already in main: ${report.alreadyInMain}`,
109
- ` Salvageable symbols: ${report.salvageable.length}`,
110
- ];
111
- if (report.salvageable.length === 0) {
112
- lines.push('\n ✅ No unique symbols — branch is fully superseded by main.');
113
- return lines.join('\n');
114
- }
115
- lines.push('\n Salvageable symbols (unique to this branch):');
116
- for (const sym of report.salvageable) {
117
- lines.push(` • [${sym.kind.padEnd(9)}] ${sym.name} (${sym.file}:${sym.line})`);
118
- }
119
- return lines.join('\n');
120
- }
121
- //# sourceMappingURL=salvage-analyzer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"salvage-analyzer.js","sourceRoot":"","sources":["../../src/lib/salvage-analyzer.ts"],"names":[],"mappings":"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"}
@@ -1,54 +0,0 @@
1
- /**
2
- * Session Logger — captures raw spidersan ask/advise/explain sessions for training.
3
- *
4
- * Writes to ~/.spidersan/sessions/YYYY-MM-DD.jsonl (one JSON object per line).
5
- * Each entry is a raw session: context + result + outcome.
6
- *
7
- * Outcome is what makes this a gold pair. Without it we just have questions.
8
- * Outcome is captured inline (TTY prompt after response) or left null.
9
- *
10
- * Anonymization + gold pair transformation happens at `watsan index-pair` time,
11
- * not here. This logger stores raw data locally — nothing leaves the machine.
12
- *
13
- * Design:
14
- * - Never throws — session logging must not crash spidersan ask
15
- * - Append-only JSONL — safe for concurrent writes, easy to process
16
- * - File per day — easy to hand to watsan for a given date range
17
- */
18
- import type { Interface as ReadlineInterface } from 'readline';
19
- import type { SpiderContext } from './ai/types.js';
20
- import type { ReasoningResult, ReasoningMode } from './ai/index.js';
21
- export type SessionOutcome = 'followed' | 'ignored' | `modified:${string}` | null;
22
- export interface RawSession {
23
- session_id: string;
24
- logged_at: string;
25
- mode: ReasoningMode;
26
- question?: string;
27
- branch?: string;
28
- context: SpiderContext;
29
- result: ReasoningResult;
30
- outcome: SessionOutcome;
31
- outcome_captured_at: string | null;
32
- }
33
- /**
34
- * Append a session entry to today's log file.
35
- * Returns the session_id so the caller can later capture the outcome.
36
- * Never throws.
37
- */
38
- export declare function logSession(mode: ReasoningMode, context: SpiderContext, result: ReasoningResult, opts?: {
39
- question?: string;
40
- branch?: string;
41
- }): string;
42
- /**
43
- * Update the outcome for a previously logged session.
44
- * Checks today's and yesterday's log files.
45
- * Never throws.
46
- */
47
- export declare function captureOutcome(session_id: string, outcome: SessionOutcome): void;
48
- /**
49
- * Show a brief outcome prompt after a response (TTY only).
50
- * Non-blocking: skips if stdin is not a TTY or SPIDERSAN_NO_OUTCOME_PROMPT=1.
51
- * Returns the captured outcome (or null if skipped).
52
- */
53
- export declare function promptOutcome(session_id: string, rl: ReadlineInterface): Promise<SessionOutcome>;
54
- //# sourceMappingURL=session-logger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-logger.d.ts","sourceRoot":"","sources":["../../src/lib/session-logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,OAAO,KAAK,EAAE,SAAS,IAAI,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAIpE,MAAM,MAAM,cAAc,GACtB,UAAU,GACV,SAAS,GACT,YAAY,MAAM,EAAE,GACpB,IAAI,CAAC;AAET,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,cAAc,CAAC;IACxB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAqBD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,eAAe,EACvB,IAAI,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C,MAAM,CAoBR;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAuBhF;AAID;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,iBAAiB,GACpB,OAAO,CAAC,cAAc,CAAC,CA8BzB"}
@@ -1,136 +0,0 @@
1
- /**
2
- * Session Logger — captures raw spidersan ask/advise/explain sessions for training.
3
- *
4
- * Writes to ~/.spidersan/sessions/YYYY-MM-DD.jsonl (one JSON object per line).
5
- * Each entry is a raw session: context + result + outcome.
6
- *
7
- * Outcome is what makes this a gold pair. Without it we just have questions.
8
- * Outcome is captured inline (TTY prompt after response) or left null.
9
- *
10
- * Anonymization + gold pair transformation happens at `watsan index-pair` time,
11
- * not here. This logger stores raw data locally — nothing leaves the machine.
12
- *
13
- * Design:
14
- * - Never throws — session logging must not crash spidersan ask
15
- * - Append-only JSONL — safe for concurrent writes, easy to process
16
- * - File per day — easy to hand to watsan for a given date range
17
- */
18
- import { appendFileSync, readFileSync, writeFileSync, mkdirSync, existsSync } from 'fs';
19
- import { join } from 'path';
20
- import { homedir } from 'os';
21
- import { randomUUID } from 'crypto';
22
- // ─── Paths ────────────────────────────────────────────────────
23
- function sessionsDir() {
24
- return join(homedir(), '.spidersan', 'sessions');
25
- }
26
- function dateFile(offsetDays = 0) {
27
- const d = new Date(Date.now() - offsetDays * 86_400_000);
28
- const ymd = `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}`;
29
- return join(sessionsDir(), `${ymd}.jsonl`);
30
- }
31
- function ensureDir() {
32
- const dir = sessionsDir();
33
- if (!existsSync(dir))
34
- mkdirSync(dir, { recursive: true, mode: 0o700 });
35
- }
36
- // ─── Write ────────────────────────────────────────────────────
37
- /**
38
- * Append a session entry to today's log file.
39
- * Returns the session_id so the caller can later capture the outcome.
40
- * Never throws.
41
- */
42
- export function logSession(mode, context, result, opts) {
43
- const session_id = randomUUID();
44
- try {
45
- ensureDir();
46
- const entry = {
47
- session_id,
48
- logged_at: new Date().toISOString(),
49
- mode,
50
- question: opts?.question,
51
- branch: opts?.branch,
52
- context,
53
- result,
54
- outcome: null,
55
- outcome_captured_at: null,
56
- };
57
- appendFileSync(dateFile(), JSON.stringify(entry) + '\n', { encoding: 'utf-8' });
58
- }
59
- catch {
60
- // Silent — logging must never crash the main command
61
- }
62
- return session_id;
63
- }
64
- /**
65
- * Update the outcome for a previously logged session.
66
- * Checks today's and yesterday's log files.
67
- * Never throws.
68
- */
69
- export function captureOutcome(session_id, outcome) {
70
- try {
71
- const now = new Date().toISOString();
72
- // Check today and yesterday (covers sessions that started near midnight)
73
- for (const filePath of [dateFile(0), dateFile(1)]) {
74
- if (!existsSync(filePath))
75
- continue;
76
- const lines = readFileSync(filePath, 'utf-8').split('\n').filter(Boolean);
77
- const idx = lines.findIndex(line => {
78
- try {
79
- return JSON.parse(line).session_id === session_id;
80
- }
81
- catch {
82
- return false;
83
- }
84
- });
85
- if (idx === -1)
86
- continue;
87
- const entry = JSON.parse(lines[idx]);
88
- entry.outcome = outcome;
89
- entry.outcome_captured_at = now;
90
- lines[idx] = JSON.stringify(entry);
91
- writeFileSync(filePath, lines.join('\n') + '\n', { encoding: 'utf-8' });
92
- return;
93
- }
94
- }
95
- catch {
96
- // Silent
97
- }
98
- }
99
- // ─── Inline outcome prompt ────────────────────────────────────
100
- /**
101
- * Show a brief outcome prompt after a response (TTY only).
102
- * Non-blocking: skips if stdin is not a TTY or SPIDERSAN_NO_OUTCOME_PROMPT=1.
103
- * Returns the captured outcome (or null if skipped).
104
- */
105
- export async function promptOutcome(session_id, rl) {
106
- if (!process.stdin.isTTY || process.env['SPIDERSAN_NO_OUTCOME_PROMPT'] === '1') {
107
- return null;
108
- }
109
- return new Promise((resolve) => {
110
- process.stdout.write('\x1b[2m Follow this advice? [y/n/m=modified, Enter to skip] \x1b[0m');
111
- rl.once('line', (answer) => {
112
- const a = answer.trim().toLowerCase();
113
- if (a === 'y' || a === 'yes') {
114
- captureOutcome(session_id, 'followed');
115
- resolve('followed');
116
- }
117
- else if (a === 'n' || a === 'no') {
118
- captureOutcome(session_id, 'ignored');
119
- resolve('ignored');
120
- }
121
- else if (a.startsWith('m')) {
122
- process.stdout.write('\x1b[2m What changed? (one line) \x1b[0m');
123
- rl.once('line', (desc) => {
124
- const outcome = `modified:${desc.trim().slice(0, 200)}`;
125
- captureOutcome(session_id, outcome);
126
- resolve(outcome);
127
- });
128
- }
129
- else {
130
- // Enter / anything else → skip
131
- resolve(null);
132
- }
133
- });
134
- });
135
- }
136
- //# sourceMappingURL=session-logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-logger.js","sourceRoot":"","sources":["../../src/lib/session-logger.ts"],"names":[],"mappings":"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"}
@@ -1,41 +0,0 @@
1
- /**
2
- * symbol-extractor.ts — Phase C semantic intelligence
3
- *
4
- * Extract exported symbols (functions, classes, types, consts) from a TS file
5
- * using ts-morph. Used by `spidersan conflicts --semantic`.
6
- */
7
- export interface ExtractedSymbol {
8
- name: string;
9
- kind: 'function' | 'class' | 'type' | 'interface' | 'const' | 'enum' | 'other';
10
- line: number;
11
- }
12
- export interface FileSymbols {
13
- file: string;
14
- symbols: ExtractedSymbol[];
15
- }
16
- /**
17
- * Extract all exported symbols from a TypeScript file.
18
- * Returns an empty symbols array if the file doesn't exist or isn't parseable.
19
- */
20
- export declare function extractSymbols(filePath: string): FileSymbols;
21
- /**
22
- * Find symbol-level overlaps between two sets of file symbols.
23
- * Returns symbols that share the same name across different branches.
24
- */
25
- export interface SymbolOverlap {
26
- name: string;
27
- kind: ExtractedSymbol['kind'];
28
- branches: Array<{
29
- branch: string;
30
- file: string;
31
- line: number;
32
- }>;
33
- }
34
- export declare function findSymbolOverlaps(left: {
35
- branch: string;
36
- symbols: FileSymbols;
37
- }, right: {
38
- branch: string;
39
- symbols: FileSymbols;
40
- }): SymbolOverlap[];
41
- //# sourceMappingURL=symbol-extractor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"symbol-extractor.d.ts","sourceRoot":"","sources":["../../src/lib/symbol-extractor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/E,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CA0B5D;AAyBD;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9B,QAAQ,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjE;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,EAC9C,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,GAC9C,aAAa,EAAE,CAmBjB"}
@@ -1,78 +0,0 @@
1
- /**
2
- * symbol-extractor.ts — Phase C semantic intelligence
3
- *
4
- * Extract exported symbols (functions, classes, types, consts) from a TS file
5
- * using ts-morph. Used by `spidersan conflicts --semantic`.
6
- */
7
- import { Project, SyntaxKind } from 'ts-morph';
8
- import { existsSync } from 'fs';
9
- /**
10
- * Extract all exported symbols from a TypeScript file.
11
- * Returns an empty symbols array if the file doesn't exist or isn't parseable.
12
- */
13
- export function extractSymbols(filePath) {
14
- if (!existsSync(filePath)) {
15
- return { file: filePath, symbols: [] };
16
- }
17
- try {
18
- const project = new Project({
19
- compilerOptions: { allowJs: true },
20
- skipAddingFilesFromTsConfig: true,
21
- });
22
- const sourceFile = project.addSourceFileAtPath(filePath);
23
- const symbols = [];
24
- for (const decl of sourceFile.getExportedDeclarations()) {
25
- const [name, nodes] = decl;
26
- for (const node of nodes) {
27
- const kind = kindOf(node.getKind());
28
- const line = node.getStartLineNumber();
29
- symbols.push({ name, kind, line });
30
- }
31
- }
32
- return { file: filePath, symbols };
33
- }
34
- catch {
35
- return { file: filePath, symbols: [] };
36
- }
37
- }
38
- function kindOf(syntaxKind) {
39
- switch (syntaxKind) {
40
- case SyntaxKind.FunctionDeclaration:
41
- case SyntaxKind.ArrowFunction:
42
- case SyntaxKind.FunctionExpression:
43
- case SyntaxKind.MethodDeclaration:
44
- return 'function';
45
- case SyntaxKind.ClassDeclaration:
46
- return 'class';
47
- case SyntaxKind.TypeAliasDeclaration:
48
- return 'type';
49
- case SyntaxKind.InterfaceDeclaration:
50
- return 'interface';
51
- case SyntaxKind.EnumDeclaration:
52
- return 'enum';
53
- case SyntaxKind.VariableDeclaration:
54
- case SyntaxKind.VariableStatement:
55
- return 'const';
56
- default:
57
- return 'other';
58
- }
59
- }
60
- export function findSymbolOverlaps(left, right) {
61
- const leftMap = new Map(left.symbols.symbols.map(s => [s.name, s]));
62
- const overlaps = [];
63
- for (const rs of right.symbols.symbols) {
64
- const ls = leftMap.get(rs.name);
65
- if (ls) {
66
- overlaps.push({
67
- name: rs.name,
68
- kind: rs.kind,
69
- branches: [
70
- { branch: left.branch, file: left.symbols.file, line: ls.line },
71
- { branch: right.branch, file: right.symbols.file, line: rs.line },
72
- ],
73
- });
74
- }
75
- }
76
- return overlaps;
77
- }
78
- //# sourceMappingURL=symbol-extractor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"symbol-extractor.js","sourceRoot":"","sources":["../../src/lib/symbol-extractor.ts"],"names":[],"mappings":"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"}
@@ -1,53 +0,0 @@
1
- /**
2
- * Git Coordination Branch Message Storage Adapter (Tier 2)
3
- *
4
- * Stores messages in an orphan branch: spidersan/messages
5
- * Structure:
6
- * inbox/<agent-id>/<timestamp>_<from>_<subject-slug>.json
7
- * outbox/<agent-id>/<timestamp>_<to>_<subject-slug>.json
8
- *
9
- * Near-real-time coordination on pull. Works across machines with git remote.
10
- */
11
- import type { MessageStorageAdapter, Message, SendMessageInput, InboxOptions, TierStatus } from './message-adapter.js';
12
- export declare class GitMessagesAdapter implements MessageStorageAdapter {
13
- private basePath;
14
- private branchInitialized;
15
- constructor(basePath?: string);
16
- getTier(): number;
17
- getTierName(): string;
18
- isAvailable(): Promise<boolean>;
19
- getStatus(): Promise<TierStatus>;
20
- /**
21
- * Check if the messages branch exists
22
- */
23
- private branchExists;
24
- /**
25
- * Initialize the orphan branch if it doesn't exist
26
- */
27
- private ensureBranch;
28
- /**
29
- * Generate filename for a message
30
- */
31
- private generateFilename;
32
- /**
33
- * Read a file from the messages branch without checkout
34
- */
35
- private readFromBranch;
36
- /**
37
- * List files in a directory on the messages branch
38
- */
39
- private listFromBranch;
40
- /**
41
- * Write a file to the messages branch
42
- */
43
- private writeToBranch;
44
- /**
45
- * Update a file on the messages branch (for marking read)
46
- */
47
- private updateOnBranch;
48
- send(input: SendMessageInput): Promise<Message>;
49
- inbox(agentId: string, options?: InboxOptions): Promise<Message[]>;
50
- read(messageId: string): Promise<Message | null>;
51
- markRead(messageId: string): Promise<boolean>;
52
- }
53
- //# sourceMappingURL=git-messages.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git-messages.d.ts","sourceRoot":"","sources":["../../src/storage/git-messages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EACR,qBAAqB,EACrB,OAAO,EACP,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACb,MAAM,sBAAsB,CAAC;AAM9B,qBAAa,kBAAmB,YAAW,qBAAqB;IAC5D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,iBAAiB,CAAwB;gBAErC,QAAQ,GAAE,MAAsB;IAI5C,OAAO,IAAI,MAAM;IAIjB,WAAW,IAAI,MAAM;IAIf,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAa/B,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;IAYtC;;OAEG;IACH,OAAO,CAAC,YAAY;IAYpB;;OAEG;YACW,YAAY;IAuE1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;YACW,aAAa;IAsF3B;;OAEG;YACW,cAAc;IAOtB,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAoC/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IA8CtE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAwChD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAWtD"}