volute 0.33.0 → 0.35.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 (255) hide show
  1. package/README.md +7 -6
  2. package/dist/accept-ZBDVVCEU.js +42 -0
  3. package/dist/activity-events-ZW4SDL2C.js +15 -0
  4. package/dist/{ai-service-SBY2WG7O.js → ai-service-LURBEDDB.js} +6 -6
  5. package/dist/{api-client-YPKOZP2O.js → api-client-3A77HMH7.js} +2 -2
  6. package/dist/api.d.ts +1 -5195
  7. package/dist/{archive-INXYFVCW.js → archive-ESU2FUN4.js} +4 -4
  8. package/dist/{auth-GKCDSO4T.js → auth-WX4TESEI.js} +6 -6
  9. package/dist/bridge-PXIO6PS2.js +206 -0
  10. package/dist/chat-QXAJF3FU.js +51 -0
  11. package/dist/{chunk-NNB4WIG7.js → chunk-2TGZJFAT.js} +3 -3
  12. package/dist/{chunk-6LXAAQ43.js → chunk-33ODGMFZ.js} +1 -1
  13. package/dist/{chunk-RPZZSXV3.js → chunk-5N7Y5WAM.js} +21 -2
  14. package/dist/chunk-5T5YMX6S.js +23 -0
  15. package/dist/{chunk-7J3HEVR7.js → chunk-5XJYUFZH.js} +28 -16
  16. package/dist/chunk-7KJOFUNN.js +22 -0
  17. package/dist/{chunk-2NGTS5UU.js → chunk-A2ZLHBHG.js} +2 -2
  18. package/dist/{chunk-KIEPMIM5.js → chunk-AN2W47GW.js} +2 -2
  19. package/dist/{chunk-G53F3JA4.js → chunk-AOB6GVRM.js} +1 -1
  20. package/dist/{chunk-LRCG2JLP.js → chunk-BDYXIWA5.js} +9 -5
  21. package/dist/{chunk-YUIHSKR6.js → chunk-BKF4WQCY.js} +2 -2
  22. package/dist/{chunk-N432I7QH.js → chunk-BMZQYACC.js} +2 -2
  23. package/dist/{chunk-NAOW2CLO.js → chunk-BTY4WNFE.js} +1 -1
  24. package/dist/{chunk-ALEF47VT.js → chunk-BV65KRHM.js} +2 -2
  25. package/dist/{chunk-KVK2DLWI.js → chunk-CORXD635.js} +4 -4
  26. package/dist/{chunk-PVY5W6QN.js → chunk-F7ZNLYKZ.js} +2 -2
  27. package/dist/{chunk-QTUVYI7W.js → chunk-FT5KETXZ.js} +3 -3
  28. package/dist/{chunk-C7I35G4R.js → chunk-IJHIXLVN.js} +44 -8
  29. package/dist/{chunk-JUKK7FPS.js → chunk-J6CJQDWI.js} +37 -28
  30. package/dist/{chunk-4RQBJWQX.js → chunk-LOPXTW6H.js} +1 -1
  31. package/dist/{chunk-RSX4OPZY.js → chunk-MDJGMOSD.js} +8 -137
  32. package/dist/{chunk-LOEJ4HPQ.js → chunk-N446KRP7.js} +3 -3
  33. package/dist/{chunk-I5KY25PQ.js → chunk-N5LMGYXX.js} +2 -2
  34. package/dist/{chunk-G6BSYHPK.js → chunk-NJK5SDGR.js} +1 -1
  35. package/dist/{chunk-D424ZQGI.js → chunk-O7IGP7ZW.js} +11 -3
  36. package/dist/{chunk-M7UL5S3Q.js → chunk-OTC67N2Z.js} +2 -2
  37. package/dist/{chunk-GY5HBI7A.js → chunk-PWQ2ITYG.js} +4 -4
  38. package/dist/{chunk-KTLFDYPT.js → chunk-QCH6K235.js} +1 -1
  39. package/dist/chunk-QHG4OMZL.js +145 -0
  40. package/dist/{chunk-SKLSMHXO.js → chunk-QWTR6AWZ.js} +3 -3
  41. package/dist/chunk-TXSA4Q3V.js +116 -0
  42. package/dist/{chunk-VH33ZWMW.js → chunk-VHJRZM2S.js} +2 -2
  43. package/dist/{chunk-SSI47XP2.js → chunk-VHWGEJ4V.js} +1 -1
  44. package/dist/chunk-VY3RB2V7.js +164 -0
  45. package/dist/chunk-WJPROOU5.js +8314 -0
  46. package/dist/{chunk-RVGLDGMI.js → chunk-WZRZFFCL.js} +25 -27
  47. package/dist/{chunk-JYVGHWEJ.js → chunk-XRQSAMX2.js} +4 -4
  48. package/dist/{chunk-OYAKCAVY.js → chunk-ZSR72JB3.js} +1 -1
  49. package/dist/{chunk-UKVWJRKN.js → chunk-ZX7EAV5J.js} +17 -7
  50. package/dist/cli.js +90 -29
  51. package/dist/clock-HSEKS5AR.js +289 -0
  52. package/dist/{cloud-sync-4NWLMFVH.js → cloud-sync-6JL4C24T.js} +22 -23
  53. package/dist/config-UTS7QULS.js +76 -0
  54. package/dist/connectors/discord-bridge.js +4 -4
  55. package/dist/connectors/slack-bridge.js +4 -4
  56. package/dist/connectors/telegram-bridge.js +4 -4
  57. package/dist/{conversations-AWI5SZW2.js → conversations-2PW57WO2.js} +6 -6
  58. package/dist/create-5BPOOJAN.js +75 -0
  59. package/dist/create-UVCK2CS6.js +50 -0
  60. package/dist/daemon-client-RVIKXGFQ.js +12 -0
  61. package/dist/daemon-restart-HSZ3BCX5.js +65 -0
  62. package/dist/daemon.js +1349 -1211
  63. package/dist/db-BDMH4SZ2.js +20 -0
  64. package/dist/db-BVBJ57TU.js +9 -0
  65. package/dist/delete-L5PAVDGQ.js +42 -0
  66. package/dist/delivery-manager-H5ZVBMCQ.js +31 -0
  67. package/dist/{delivery-router-FL45JL7N.js → delivery-router-HEJSJAHQ.js} +5 -5
  68. package/dist/down-74VXM45A.js +17 -0
  69. package/dist/env-E4XHO2BI.js +223 -0
  70. package/dist/exec-PY7THYH4.js +17 -0
  71. package/dist/export-OAS6QVBN.js +113 -0
  72. package/dist/extension-D74CNM7G.js +89 -0
  73. package/dist/extensions-XDDFY72A.js +49 -0
  74. package/dist/files-CWTK6V3H.js +53 -0
  75. package/dist/import-5A3T7QV4.js +143 -0
  76. package/dist/{isolation-LLAYQYDY.js → isolation-TK5RX2WM.js} +4 -4
  77. package/dist/join-DF5XSJAC.js +67 -0
  78. package/dist/lib-DYEZMGW7.js +6588 -0
  79. package/dist/list-PDMQM7ZV.js +53 -0
  80. package/dist/login-7TE6CIZF.js +60 -0
  81. package/dist/login-GOTAYLXP.js +51 -0
  82. package/dist/logout-6KIA74EV.js +29 -0
  83. package/dist/logout-T4XS6LRU.js +50 -0
  84. package/dist/message-delivery-GRC4W6P7.js +41 -0
  85. package/dist/mind-5IEYKV7I.js +97 -0
  86. package/dist/mind-activity-tracker-QBLIV7ZJ.js +18 -0
  87. package/dist/mind-history-IE2QH7U5.js +275 -0
  88. package/dist/mind-list-GEWHWAL4.js +38 -0
  89. package/dist/mind-manager-HFLB5653.js +31 -0
  90. package/dist/mind-profile-DCBDVF5B.js +53 -0
  91. package/dist/mind-service-X2CAA6W6.js +37 -0
  92. package/dist/mind-sleep-ITCF6OQA.js +47 -0
  93. package/dist/mind-status-X4SX3YUG.js +65 -0
  94. package/dist/mind-wake-KXMKMGWX.js +42 -0
  95. package/dist/{package-U3VFO273.js → package-D2FSVFAX.js} +11 -8
  96. package/dist/read-67VRP2DO.js +91 -0
  97. package/dist/{read-stdin-HQJ7774D.js → read-stdin-3X5VYKNS.js} +2 -2
  98. package/dist/register-SB7NXCOE.js +51 -0
  99. package/dist/{registry-PJ4S5PHQ.js → registry-GBSNW3HG.js} +3 -3
  100. package/dist/reject-MUR2KWJ4.js +40 -0
  101. package/dist/restart-5EGG4JXU.js +42 -0
  102. package/dist/{sandbox-GJOK4QLQ.js → sandbox-R37VIU36.js} +6 -6
  103. package/dist/scheduler-Y7O4CJXL.js +31 -0
  104. package/dist/{schema-PA3M5ZKH.js → schema-XVZ2CLKW.js} +4 -2
  105. package/dist/{seed-QDYVLG74.js → seed-EQORWX77.js} +3 -3
  106. package/dist/seed-check-KJNTL72M.js +35 -0
  107. package/dist/seed-cmd-ZM2XGVU2.js +30 -0
  108. package/dist/seed-create-DRWGGHEI.js +113 -0
  109. package/dist/seed-sprout-JYXGXOP3.js +148 -0
  110. package/dist/send-JBJJQ7CA.js +409 -0
  111. package/dist/service-WNPCNHOX.js +121 -0
  112. package/dist/{setup-XMCBE3LF.js → setup-BJ4YAY26.js} +155 -129
  113. package/dist/{setup-TISPCO22.js → setup-RHJRFURI.js} +4 -4
  114. package/dist/skill-TAAKEYBV.js +389 -0
  115. package/dist/skills/plan-coordinator/SKILL.md +60 -0
  116. package/dist/skills/volute-mind/SKILL.md +9 -227
  117. package/dist/skills/volute-mind/references/extensions.md +34 -0
  118. package/dist/skills/volute-mind/references/integrations.md +48 -0
  119. package/dist/skills/volute-mind/references/routing.md +86 -0
  120. package/dist/skills/volute-mind/references/sleep.md +33 -0
  121. package/dist/skills/volute-mind/references/variants.md +31 -0
  122. package/dist/{skills-7FV7EJTE.js → skills-EKMCQ46K.js} +12 -8
  123. package/dist/sleep-manager-7KFK3USC.js +35 -0
  124. package/dist/spirit-ZFRDXMG7.js +23 -0
  125. package/dist/split-AWVOYOPZ.js +64 -0
  126. package/dist/{sprout-WKLZXUIQ.js → sprout-HE4TITMK.js} +3 -3
  127. package/dist/start-3UXOPXQG.js +39 -0
  128. package/dist/status-ZK34WYIM.js +125 -0
  129. package/dist/stop-3XYIBGFM.js +41 -0
  130. package/dist/system-chat-IDPHYHY4.js +35 -0
  131. package/dist/systems-O43WGQY6.js +52 -0
  132. package/dist/{tailscale-XHQBZROW.js → tailscale-ZIZ2HWJ5.js} +5 -5
  133. package/dist/template-hash-A7FNHTB7.js +9 -0
  134. package/dist/up-77ICEDEW.js +19 -0
  135. package/dist/update-ANE5ZM7F.js +225 -0
  136. package/dist/{update-check-ZD6OOIYQ.js → update-check-UV55CBEP.js} +4 -4
  137. package/dist/upgrade-ZMDGC7M2.js +74 -0
  138. package/dist/variant-QWL2WSRI.js +62 -0
  139. package/dist/{version-notify-NBI2MTJO.js → version-notify-FXSEMXWW.js} +29 -28
  140. package/dist/{volute-config-HD7WWUQC.js → volute-config-D2XVS2YI.js} +2 -2
  141. package/dist/web-assets/assets/index-BhxWKvbB.css +1 -0
  142. package/dist/web-assets/assets/index-CHVKJ9II.js +75 -0
  143. package/dist/web-assets/ext-theme.css +48 -9
  144. package/dist/web-assets/index.html +2 -2
  145. package/dist/web-assets/sw.js +117 -0
  146. package/drizzle/0005_meta_summaries.sql +15 -0
  147. package/drizzle/meta/0005_snapshot.json +7 -0
  148. package/drizzle/meta/_journal.json +7 -0
  149. package/package.json +10 -7
  150. package/packages/extensions/pages/dist/ui/assets/index-DKZLNMED.js +2 -0
  151. package/packages/extensions/pages/dist/ui/index.html +1 -1
  152. package/packages/extensions/pages/skills/pages/SKILL.md +84 -9
  153. package/packages/extensions/plan/dist/ui/assets/index-CJj2gZnZ.css +1 -0
  154. package/packages/extensions/plan/dist/ui/assets/index-FMEJmvQz.js +61 -0
  155. package/packages/extensions/plan/dist/ui/index.html +14 -0
  156. package/packages/extensions/plan/skills/plan/SKILL.md +43 -0
  157. package/packages/extensions/plan/skills/plan/scripts/plan-hook.sh +37 -0
  158. package/templates/_base/home/VOLUTE.md +12 -19
  159. package/templates/_base/src/lib/auto-commit.ts +8 -8
  160. package/templates/_base/src/lib/context-breakdown.ts +450 -0
  161. package/templates/_base/src/lib/format-prefix.ts +17 -0
  162. package/templates/_base/src/lib/hook-loader.ts +8 -2
  163. package/templates/_base/src/lib/router.ts +75 -33
  164. package/templates/_base/src/lib/routing.ts +4 -1
  165. package/templates/_base/src/lib/startup.ts +16 -8
  166. package/templates/_base/src/lib/types.ts +2 -1
  167. package/templates/_base/src/lib/volute-server.ts +75 -8
  168. package/templates/claude/.init/CLAUDE.md +4 -10
  169. package/templates/claude/package.json.tmpl +1 -0
  170. package/templates/claude/src/agent.ts +108 -33
  171. package/templates/claude/src/lib/hooks/reply-instructions.ts +27 -7
  172. package/templates/claude/src/lib/stream-consumer.ts +2 -2
  173. package/templates/claude/src/server.ts +1 -0
  174. package/templates/codex/package.json.tmpl +1 -0
  175. package/templates/codex/src/agent.ts +80 -8
  176. package/templates/codex/src/server.ts +1 -4
  177. package/templates/pi/package.json.tmpl +1 -0
  178. package/templates/pi/src/agent.ts +115 -36
  179. package/templates/pi/src/lib/event-handler.ts +22 -7
  180. package/templates/pi/src/lib/reply-instructions-extension.ts +23 -4
  181. package/templates/pi/src/lib/subagents.ts +20 -17
  182. package/templates/pi/src/server.ts +2 -5
  183. package/dist/accept-D5VBM7JW.js +0 -42
  184. package/dist/activity-events-XJO3P4RR.js +0 -15
  185. package/dist/bridge-TXWWPPOJ.js +0 -207
  186. package/dist/chat-U5ZOME3O.js +0 -68
  187. package/dist/chunk-3Z2DPESO.js +0 -3634
  188. package/dist/chunk-A2A4KLFE.js +0 -1528
  189. package/dist/chunk-K3NQKI34.js +0 -10
  190. package/dist/chunk-NPKSDYA2.js +0 -156
  191. package/dist/chunk-PB65JZK2.js +0 -85
  192. package/dist/clock-BVH3V6E3.js +0 -266
  193. package/dist/config-H2H4UIF7.js +0 -72
  194. package/dist/create-2FK7Z46Y.js +0 -44
  195. package/dist/create-YWD2TIP4.js +0 -71
  196. package/dist/daemon-client-6QXHZ7US.js +0 -12
  197. package/dist/daemon-restart-GOBUKLX7.js +0 -52
  198. package/dist/db-F34YLV7D.js +0 -9
  199. package/dist/db-RA45JBFG.js +0 -16
  200. package/dist/delete-QTGWEDBI.js +0 -35
  201. package/dist/delivery-manager-PFAKEJTC.js +0 -32
  202. package/dist/down-FWWTEKXM.js +0 -15
  203. package/dist/env-JCOF2222.js +0 -191
  204. package/dist/export-SUYRLI5Q.js +0 -112
  205. package/dist/extension-OBTGKQQD.js +0 -175
  206. package/dist/extensions-KYNTVTMO.js +0 -30
  207. package/dist/files-65PMW5IK.js +0 -47
  208. package/dist/history-DKCDI3JO.js +0 -128
  209. package/dist/import-DDUFE7AY.js +0 -23
  210. package/dist/join-I5QEE3LG.js +0 -66
  211. package/dist/list-JQ463EDA.js +0 -41
  212. package/dist/login-D7ETSU4R.js +0 -47
  213. package/dist/login-RIJF2F4G.js +0 -47
  214. package/dist/logout-5MLHZALK.js +0 -40
  215. package/dist/logout-UZJRGY4Z.js +0 -21
  216. package/dist/message-delivery-DFF5SJRM.js +0 -42
  217. package/dist/mind-IOJFLEM5.js +0 -108
  218. package/dist/mind-activity-tracker-F6O4Q2SL.js +0 -18
  219. package/dist/mind-list-WUPMQDYQ.js +0 -30
  220. package/dist/mind-manager-NBJF5D26.js +0 -32
  221. package/dist/mind-profile-P67FEHOY.js +0 -47
  222. package/dist/mind-service-2MQ6UK5N.js +0 -38
  223. package/dist/mind-sleep-WW2IX7JT.js +0 -42
  224. package/dist/mind-status-L3EFFRPR.js +0 -56
  225. package/dist/mind-wake-VSSGW465.js +0 -37
  226. package/dist/read-EBY56C33.js +0 -75
  227. package/dist/register-HD74C4TT.js +0 -47
  228. package/dist/reject-UJKFBHRO.js +0 -40
  229. package/dist/restart-3UCMRUVC.js +0 -33
  230. package/dist/scheduler-ZZ7XGQG6.js +0 -32
  231. package/dist/seed-check-S2IX25RL.js +0 -32
  232. package/dist/seed-cmd-DKOUFEAU.js +0 -36
  233. package/dist/seed-create-4XBBOLRH.js +0 -112
  234. package/dist/seed-sprout-GQEIIQRT.js +0 -132
  235. package/dist/send-QIV2INHB.js +0 -373
  236. package/dist/skill-PSQGRRJX.js +0 -358
  237. package/dist/skills/shared-files/SKILL.md +0 -44
  238. package/dist/skills/shared-files/scripts/merge.ts +0 -72
  239. package/dist/skills/shared-files/scripts/pull.ts +0 -52
  240. package/dist/sleep-manager-JTXSN7NV.js +0 -36
  241. package/dist/spirit-VRONKFMF.js +0 -23
  242. package/dist/split-STOROBYJ.js +0 -63
  243. package/dist/start-K2NCUUCG.js +0 -33
  244. package/dist/status-3JBTFSMI.js +0 -115
  245. package/dist/stop-H26JZDXF.js +0 -32
  246. package/dist/system-chat-JAPOJ3KE.js +0 -36
  247. package/dist/systems-XRI52VCH.js +0 -61
  248. package/dist/template-hash-A6VVKOXJ.js +0 -9
  249. package/dist/up-M5AS6SBV.js +0 -18
  250. package/dist/update-UD543CXX.js +0 -215
  251. package/dist/upgrade-O4Q7WJM3.js +0 -67
  252. package/dist/variant-7TGZHOU3.js +0 -41
  253. package/dist/web-assets/assets/index-CWJrVveV.css +0 -1
  254. package/dist/web-assets/assets/index-DJt14FRI.js +0 -75
  255. package/packages/extensions/pages/dist/ui/assets/index-tLTROSk5.js +0 -2
@@ -1,207 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- daemonFetch
4
- } from "./chunk-UKVWJRKN.js";
5
- import {
6
- parseArgs
7
- } from "./chunk-D424ZQGI.js";
8
- import "./chunk-LRCG2JLP.js";
9
- import "./chunk-RPZZSXV3.js";
10
- import "./chunk-K3NQKI34.js";
11
-
12
- // src/commands/chat/bridge.ts
13
- async function run(args) {
14
- const subcommand = args[0];
15
- const subArgs = args.slice(1);
16
- switch (subcommand) {
17
- case "add":
18
- await bridgeAdd(subArgs);
19
- break;
20
- case "remove":
21
- await bridgeRemove(subArgs);
22
- break;
23
- case "list":
24
- await bridgeList();
25
- break;
26
- case "map":
27
- await bridgeMap(subArgs);
28
- break;
29
- case "unmap":
30
- await bridgeUnmap(subArgs);
31
- break;
32
- case "mappings":
33
- await bridgeMappings(subArgs);
34
- break;
35
- case "--help":
36
- case "-h":
37
- case void 0:
38
- console.log(`volute chat bridge \u2014 manage platform bridges
39
-
40
- add <platform> Set up a bridge (e.g. discord, slack, telegram)
41
- remove <platform> Remove a bridge
42
- list Show bridges + status
43
- map <platform>:<channel> <ch> Map external \u2192 Volute channel
44
- unmap <platform>:<channel> Remove mapping
45
- mappings [<platform>] List mappings`);
46
- break;
47
- default:
48
- console.error(
49
- `Unknown bridge subcommand: ${subcommand}
50
- Run 'volute chat bridge --help' for usage.`
51
- );
52
- process.exit(1);
53
- }
54
- }
55
- async function bridgeAdd(args) {
56
- const { positional, flags } = parseArgs(args, {
57
- "default-mind": { type: "string" }
58
- });
59
- const platform = positional[0];
60
- if (!platform) {
61
- console.error("Usage: volute chat bridge add <platform> --default-mind <name>");
62
- process.exit(1);
63
- }
64
- const defaultMind = flags["default-mind"];
65
- if (!defaultMind) {
66
- console.error("--default-mind is required (mind to route DMs to)");
67
- process.exit(1);
68
- }
69
- const res = await daemonFetch(`/api/bridges/${encodeURIComponent(platform)}`, {
70
- method: "POST",
71
- headers: { "Content-Type": "application/json" },
72
- body: JSON.stringify({ defaultMind })
73
- });
74
- if (!res.ok) {
75
- const data = await res.json().catch(() => ({}));
76
- if (data.error === "missing_env" && data.missing) {
77
- console.error(`Missing required environment variables:`);
78
- for (const v of data.missing) {
79
- console.error(` ${v.name} \u2014 ${v.description}`);
80
- }
81
- console.error(`
82
- Set them with: volute env set <VAR> <value>`);
83
- } else {
84
- console.error(data.error ?? `Failed to add bridge: ${res.status}`);
85
- }
86
- process.exit(1);
87
- }
88
- console.log(`Bridge ${platform} enabled.`);
89
- }
90
- async function bridgeRemove(args) {
91
- const platform = args[0];
92
- if (!platform) {
93
- console.error("Usage: volute chat bridge remove <platform>");
94
- process.exit(1);
95
- }
96
- const res = await daemonFetch(`/api/bridges/${encodeURIComponent(platform)}`, {
97
- method: "DELETE"
98
- });
99
- if (!res.ok) {
100
- console.error(`Failed to remove bridge: ${res.status}`);
101
- process.exit(1);
102
- }
103
- console.log(`Bridge ${platform} removed.`);
104
- }
105
- async function bridgeList() {
106
- const res = await daemonFetch("/api/bridges");
107
- if (!res.ok) {
108
- console.error(`Failed to list bridges: ${res.status}`);
109
- process.exit(1);
110
- }
111
- const bridges = await res.json();
112
- if (bridges.length === 0) {
113
- console.log("No bridges configured. Use 'volute chat bridge add <platform>' to set one up.");
114
- return;
115
- }
116
- for (const b of bridges) {
117
- const status = b.running ? "running" : b.enabled ? "stopped" : "disabled";
118
- console.log(` ${b.displayName} (${b.platform}) ${status} default: ${b.defaultMind}`);
119
- }
120
- }
121
- async function bridgeMap(args) {
122
- const target = args[0];
123
- const voluteChannel = args[1];
124
- if (!target || !voluteChannel) {
125
- console.error("Usage: volute chat bridge map <platform>:<channel> <volute-channel>");
126
- process.exit(1);
127
- }
128
- const colonIdx = target.indexOf(":");
129
- if (colonIdx < 1) {
130
- console.error("Target must be in format platform:channel (e.g. discord:my-server/general)");
131
- process.exit(1);
132
- }
133
- const platform = target.slice(0, colonIdx);
134
- const externalChannel = target.slice(colonIdx + 1);
135
- const res = await daemonFetch(`/api/bridges/${encodeURIComponent(platform)}/mappings`, {
136
- method: "PUT",
137
- headers: { "Content-Type": "application/json" },
138
- body: JSON.stringify({ externalChannel, voluteChannel })
139
- });
140
- if (!res.ok) {
141
- const data = await res.json().catch(() => ({}));
142
- console.error(data.error ?? `Failed to set mapping: ${res.status}`);
143
- process.exit(1);
144
- }
145
- console.log(`Mapped ${platform}:${externalChannel} \u2192 ${voluteChannel}`);
146
- }
147
- async function bridgeUnmap(args) {
148
- const target = args[0];
149
- if (!target) {
150
- console.error("Usage: volute chat bridge unmap <platform>:<channel>");
151
- process.exit(1);
152
- }
153
- const colonIdx = target.indexOf(":");
154
- if (colonIdx < 1) {
155
- console.error("Target must be in format platform:channel");
156
- process.exit(1);
157
- }
158
- const platform = target.slice(0, colonIdx);
159
- const externalChannel = target.slice(colonIdx + 1);
160
- const res = await daemonFetch(
161
- `/api/bridges/${encodeURIComponent(platform)}/mappings/${encodeURIComponent(externalChannel)}`,
162
- { method: "DELETE" }
163
- );
164
- if (!res.ok) {
165
- console.error(`Failed to remove mapping: ${res.status}`);
166
- process.exit(1);
167
- }
168
- console.log(`Removed mapping for ${platform}:${externalChannel}`);
169
- }
170
- async function bridgeMappings(args) {
171
- const platform = args[0];
172
- if (platform) {
173
- const res = await daemonFetch(`/api/bridges/${encodeURIComponent(platform)}/mappings`);
174
- if (!res.ok) {
175
- console.error(`Failed to get mappings: ${res.status}`);
176
- process.exit(1);
177
- }
178
- const mappings = await res.json();
179
- if (Object.keys(mappings).length === 0) {
180
- console.log(`No mappings for ${platform}.`);
181
- return;
182
- }
183
- for (const [external, volute] of Object.entries(mappings)) {
184
- console.log(` ${platform}:${external} \u2192 ${volute}`);
185
- }
186
- } else {
187
- const res = await daemonFetch("/api/bridges");
188
- if (!res.ok) {
189
- console.error(`Failed to list bridges: ${res.status}`);
190
- process.exit(1);
191
- }
192
- const bridges = await res.json();
193
- let found = false;
194
- for (const b of bridges) {
195
- for (const [external, volute] of Object.entries(b.channelMappings)) {
196
- console.log(` ${b.platform}:${external} \u2192 ${volute}`);
197
- found = true;
198
- }
199
- }
200
- if (!found) {
201
- console.log("No mappings configured.");
202
- }
203
- }
204
- }
205
- export {
206
- run
207
- };
@@ -1,68 +0,0 @@
1
- #!/usr/bin/env node
2
- import "./chunk-K3NQKI34.js";
3
-
4
- // src/commands/chat.ts
5
- async function run(args) {
6
- const subcommand = args[0];
7
- const subArgs = args.slice(1);
8
- switch (subcommand) {
9
- case "send":
10
- await import("./send-QIV2INHB.js").then((m) => m.run(subArgs));
11
- break;
12
- case "list":
13
- await import("./list-JQ463EDA.js").then((m) => m.run(subArgs));
14
- break;
15
- case "read":
16
- await import("./read-EBY56C33.js").then((m) => m.run(subArgs));
17
- break;
18
- case "create":
19
- await import("./create-YWD2TIP4.js").then((m) => m.run(subArgs));
20
- break;
21
- case "bridge":
22
- await import("./bridge-TXWWPPOJ.js").then((m) => m.run(subArgs));
23
- break;
24
- case "files":
25
- await import("./files-65PMW5IK.js").then((m) => m.run(subArgs));
26
- break;
27
- case "accept":
28
- await import("./accept-D5VBM7JW.js").then((m) => m.run(subArgs));
29
- break;
30
- case "reject":
31
- await import("./reject-UJKFBHRO.js").then((m) => m.run(subArgs));
32
- break;
33
- case "--help":
34
- case "-h":
35
- case void 0:
36
- console.log(`volute chat \u2014 conversations, files, and bridges
37
-
38
- Messages:
39
- send <target> "<msg>" Send a message (--image, --file)
40
- list List conversations
41
- read <conversation> [--limit] Read conversation messages
42
- create --participants u1,u2 Create a conversation
43
-
44
- Files:
45
- files [--mind <name>] List pending incoming files
46
- accept <id> [--mind] [--dest] Accept a pending file
47
- reject <id> [--mind] Reject a pending file
48
-
49
- Bridges:
50
- bridge add <platform> Set up a bridge
51
- bridge remove <platform> Remove a bridge
52
- bridge list Show bridges + status
53
- bridge map <p>:<ch> <volute> Map external \u2192 Volute channel
54
- bridge unmap <p>:<ch> Remove mapping
55
- bridge mappings [<platform>] List mappings
56
-
57
- Send targets: @mindname for DMs, channel-name for conversations.
58
- Mind-scoped commands use --mind <name> or VOLUTE_MIND env var.`);
59
- break;
60
- default:
61
- console.error(`Unknown chat subcommand: ${subcommand}
62
- Run 'volute chat --help' for usage.`);
63
- process.exit(1);
64
- }
65
- }
66
- export {
67
- run
68
- };