volute 0.27.0 → 0.28.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 (61) hide show
  1. package/README.md +5 -5
  2. package/dist/accept-666DIZX2.js +41 -0
  3. package/dist/api.d.ts +150 -134
  4. package/dist/{chat-MHJ3L6JQ.js → chat-M4SX42JD.js} +17 -7
  5. package/dist/{chunk-OQZH4PBB.js → chunk-AAPXKR5V.js} +124 -55
  6. package/dist/{chunk-USUXRNVD.js → chunk-J4IBNXGJ.js} +0 -2
  7. package/dist/chunk-MD4C26II.js +128 -0
  8. package/dist/{chunk-4WXYUOAK.js → chunk-NI5FFCCS.js} +8 -1
  9. package/dist/{chunk-JKOWNZ4P.js → chunk-P72MVS4R.js} +1 -40
  10. package/dist/{chunk-PHSAT7YL.js → chunk-POSXWWTA.js} +2 -2
  11. package/dist/cli.js +16 -28
  12. package/dist/{cloud-sync-T7M3ESC3.js → cloud-sync-HDL6PHZI.js} +4 -5
  13. package/dist/{daemon-restart-M2QTYMEG.js → daemon-restart-G4B2OYAB.js} +1 -1
  14. package/dist/daemon.js +570 -631
  15. package/dist/files-M546TKVN.js +46 -0
  16. package/dist/{login-XX37I52P.js → login-BKP3AFWN.js} +7 -17
  17. package/dist/logout-IQK7FNEK.js +20 -0
  18. package/dist/{message-delivery-LDXLGERA.js → message-delivery-HV3S6HZV.js} +4 -5
  19. package/dist/{mind-DI33C74K.js → mind-S5V6CK5W.js} +8 -13
  20. package/dist/mind-list-UPJ75GPI.js +29 -0
  21. package/dist/{mind-manager-M6EMUW5I.js → mind-manager-S6ILZVX3.js} +2 -2
  22. package/dist/mind-status-TK5AETEM.js +55 -0
  23. package/dist/{package-7WY6VKU3.js → package-CG4RWUGP.js} +1 -1
  24. package/dist/{pages-6EBS6CBR.js → pages-KJDJX4TA.js} +5 -5
  25. package/dist/{publish-66UB2ZFY.js → publish-ZZB33WP4.js} +6 -17
  26. package/dist/{register-6B2CXTYM.js → register-CHREOMJ3.js} +5 -24
  27. package/dist/reject-LXIZFJ4Q.js +39 -0
  28. package/dist/{sandbox-TGBX22DS.js → sandbox-5BW5HPXM.js} +1 -1
  29. package/dist/{send-ZNCJDSRP.js → send-TAOEZ4NH.js} +64 -6
  30. package/dist/skills/shared-files/SKILL.md +44 -0
  31. package/dist/skills/shared-files/scripts/merge.ts +72 -0
  32. package/dist/skills/shared-files/scripts/pull.ts +52 -0
  33. package/dist/skills/volute-mind/SKILL.md +5 -6
  34. package/dist/{sleep-manager-MWYHM5HV.js → sleep-manager-WMVG2VCL.js} +4 -5
  35. package/dist/{sprout-IJVVKSJ2.js → sprout-UNT7LKKE.js} +1 -1
  36. package/dist/{status-77YEPHMW.js → status-NQJYR4BG.js} +45 -1
  37. package/dist/{status-THLOBLWG.js → status-S7UUPNRW.js} +3 -13
  38. package/dist/systems-SMEFSHTA.js +60 -0
  39. package/dist/{up-NKSMXBWR.js → up-GM2JOH2Y.js} +1 -1
  40. package/dist/{version-notify-5Z4MNR6M.js → version-notify-JDUF4HQJ.js} +9 -10
  41. package/dist/web-assets/assets/{index-CI5wgghI.css → index-BZGvToHi.css} +1 -1
  42. package/dist/web-assets/assets/index-Cz4TrpzB.js +75 -0
  43. package/dist/web-assets/index.html +2 -2
  44. package/package.json +1 -1
  45. package/templates/_base/src/lib/logger.ts +0 -4
  46. package/dist/auth-D3OT2ARB.js +0 -37
  47. package/dist/chunk-KDGS53OS.js +0 -50
  48. package/dist/chunk-RWKVSSLY.js +0 -26
  49. package/dist/file-CR36YUPD.js +0 -204
  50. package/dist/log-ABYNVYJ3.js +0 -39
  51. package/dist/logout-W4KOOBIT.js +0 -18
  52. package/dist/logs-U35JR2KE.js +0 -77
  53. package/dist/merge-LNSMSAOF.js +0 -46
  54. package/dist/pull-XCHJTM5M.js +0 -39
  55. package/dist/service-6LIN3F3K.js +0 -122
  56. package/dist/shared-ML5I4Q2A.js +0 -39
  57. package/dist/status-7GA4SM4Y.js +0 -35
  58. package/dist/web-assets/assets/index-is5CvJWH.js +0 -75
  59. package/dist/{chunk-GIE6CSN5.js → chunk-SGVNFZHW.js} +0 -0
  60. package/dist/{history-XKRTAFS2.js → history-ALPTNB3I.js} +0 -0
  61. package/dist/{setup-JG4QAEBV.js → setup-RXYVGGT7.js} +3 -3
package/README.md CHANGED
@@ -55,7 +55,7 @@ volute mind start atlas # start it
55
55
  volute mind stop atlas # stop it
56
56
  volute mind list # list all minds
57
57
  volute mind status atlas # check one
58
- volute mind logs atlas --follow # tail logs
58
+ volute mind history atlas --full # view activity history
59
59
  volute mind delete atlas # remove from registry
60
60
  volute mind delete atlas --force # also delete files
61
61
  ```
@@ -173,10 +173,10 @@ Publish a mind's `home/pages/` directory to the web via [volute.systems](https:/
173
173
 
174
174
  ```sh
175
175
  # Register a system name (one-time)
176
- volute auth register --name my-system
176
+ volute systems register --name my-system
177
177
 
178
178
  # Or log in with an existing key
179
- volute auth login --key vp_...
179
+ volute systems login --key vp_...
180
180
  ```
181
181
 
182
182
  ### Publishing
@@ -192,7 +192,7 @@ The command uploads everything in the mind's `home/pages/` directory. Minds can
192
192
 
193
193
  ```sh
194
194
  volute pages status --mind atlas # show published URL, file count, last publish time
195
- volute auth logout # remove stored credentials
195
+ volute systems logout # remove stored credentials
196
196
  ```
197
197
 
198
198
  ## Environment variables
@@ -282,7 +282,7 @@ On macOS or Linux (without root), include `--service` during setup:
282
282
 
283
283
  ```sh
284
284
  volute setup --name my-system --service # local install + auto-start on login
285
- volute service status # check status
285
+ volute status # check status
286
286
  ```
287
287
 
288
288
  ## Development
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ resolveMindName
4
+ } from "./chunk-NAOW2CLO.js";
5
+ import {
6
+ daemonFetch
7
+ } from "./chunk-JGFVMROS.js";
8
+ import {
9
+ parseArgs
10
+ } from "./chunk-D424ZQGI.js";
11
+ import "./chunk-H7OZRFJB.js";
12
+ import "./chunk-K3NQKI34.js";
13
+
14
+ // src/commands/chat/accept.ts
15
+ async function run(args) {
16
+ const { positional, flags } = parseArgs(args, {
17
+ mind: { type: "string" },
18
+ dest: { type: "string" }
19
+ });
20
+ const mind = resolveMindName(flags);
21
+ const id = positional[0];
22
+ if (!id) {
23
+ console.error("Usage: volute chat accept <id> [--mind <name>] [--dest <path>]");
24
+ process.exit(1);
25
+ }
26
+ const res = await daemonFetch(`/api/minds/${encodeURIComponent(mind)}/files/accept`, {
27
+ method: "POST",
28
+ headers: { "Content-Type": "application/json" },
29
+ body: JSON.stringify({ id, dest: flags.dest })
30
+ });
31
+ if (!res.ok) {
32
+ const data2 = await res.json();
33
+ console.error(data2.error ?? `Failed to accept file: ${res.status}`);
34
+ process.exit(1);
35
+ }
36
+ const data = await res.json();
37
+ console.log(`File accepted: ${data.destPath}`);
38
+ }
39
+ export {
40
+ run
41
+ };
package/dist/api.d.ts CHANGED
@@ -630,6 +630,80 @@ declare const routes: hono_hono_base.HonoBase<hono_types.BlankEnv, hono_types.Bl
630
630
  status: hono_utils_http_status.ContentfulStatusCode;
631
631
  };
632
632
  };
633
+ } & {
634
+ "/pages/publish/:name": {
635
+ $put: {
636
+ input: {
637
+ param: {
638
+ name: string;
639
+ };
640
+ };
641
+ output: {
642
+ error: string;
643
+ };
644
+ outputFormat: "json";
645
+ status: 400;
646
+ } | {
647
+ input: {
648
+ param: {
649
+ name: string;
650
+ };
651
+ };
652
+ output: {
653
+ [x: string]: hono_utils_types.JSONValue;
654
+ };
655
+ outputFormat: "json";
656
+ status: 100 | 403 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511 | -1;
657
+ } | {
658
+ input: {
659
+ param: {
660
+ name: string;
661
+ };
662
+ };
663
+ output: {
664
+ error: string;
665
+ };
666
+ outputFormat: "json";
667
+ status: 502;
668
+ };
669
+ };
670
+ } & {
671
+ "/pages/status/:name": {
672
+ $get: {
673
+ input: {
674
+ param: {
675
+ name: string;
676
+ };
677
+ };
678
+ output: {
679
+ [x: string]: hono_utils_types.JSONValue;
680
+ };
681
+ outputFormat: "json";
682
+ status: 100 | 403 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511 | -1;
683
+ } | {
684
+ input: {
685
+ param: {
686
+ name: string;
687
+ };
688
+ };
689
+ output: {
690
+ error: string;
691
+ };
692
+ outputFormat: "json";
693
+ status: 400;
694
+ } | {
695
+ input: {
696
+ param: {
697
+ name: string;
698
+ };
699
+ };
700
+ output: {
701
+ error: string;
702
+ };
703
+ outputFormat: "json";
704
+ status: 502;
705
+ };
706
+ };
633
707
  }, "/api/system"> | hono_types.MergeSchemaPath<{
634
708
  "/update": {
635
709
  $get: {
@@ -1693,6 +1767,10 @@ declare const routes: hono_hono_base.HonoBase<hono_types.BlankEnv, hono_types.Bl
1693
1767
  media_type: string;
1694
1768
  data: string;
1695
1769
  }[] | undefined;
1770
+ files?: {
1771
+ filename: string;
1772
+ data: string;
1773
+ }[] | undefined;
1696
1774
  };
1697
1775
  } & {
1698
1776
  param: {
@@ -1714,6 +1792,10 @@ declare const routes: hono_hono_base.HonoBase<hono_types.BlankEnv, hono_types.Bl
1714
1792
  media_type: string;
1715
1793
  data: string;
1716
1794
  }[] | undefined;
1795
+ files?: {
1796
+ filename: string;
1797
+ data: string;
1798
+ }[] | undefined;
1717
1799
  };
1718
1800
  } & {
1719
1801
  param: {
@@ -1735,6 +1817,35 @@ declare const routes: hono_hono_base.HonoBase<hono_types.BlankEnv, hono_types.Bl
1735
1817
  media_type: string;
1736
1818
  data: string;
1737
1819
  }[] | undefined;
1820
+ files?: {
1821
+ filename: string;
1822
+ data: string;
1823
+ }[] | undefined;
1824
+ };
1825
+ } & {
1826
+ param: {
1827
+ name: string;
1828
+ };
1829
+ };
1830
+ output: {
1831
+ error: string;
1832
+ };
1833
+ outputFormat: "json";
1834
+ status: 413;
1835
+ } | {
1836
+ input: {
1837
+ json: {
1838
+ message?: string | undefined;
1839
+ conversationId?: string | undefined;
1840
+ sender?: string | undefined;
1841
+ images?: {
1842
+ media_type: string;
1843
+ data: string;
1844
+ }[] | undefined;
1845
+ files?: {
1846
+ filename: string;
1847
+ data: string;
1848
+ }[] | undefined;
1738
1849
  };
1739
1850
  } & {
1740
1851
  param: {
@@ -2310,11 +2421,10 @@ declare const routes: hono_hono_base.HonoBase<hono_types.BlankEnv, hono_types.Bl
2310
2421
  };
2311
2422
  };
2312
2423
  output: {
2313
- status: string;
2314
- destPath: string;
2424
+ error: string;
2315
2425
  };
2316
2426
  outputFormat: "json";
2317
- status: 200;
2427
+ status: 500;
2318
2428
  } | {
2319
2429
  input: {
2320
2430
  param: {
@@ -2458,7 +2568,7 @@ declare const routes: hono_hono_base.HonoBase<hono_types.BlankEnv, hono_types.Bl
2458
2568
  };
2459
2569
  };
2460
2570
  } & {
2461
- "/:name/files/trust": {
2571
+ "/:name/files/stage": {
2462
2572
  $post: {
2463
2573
  input: {
2464
2574
  param: {
@@ -2487,41 +2597,23 @@ declare const routes: hono_hono_base.HonoBase<hono_types.BlankEnv, hono_types.Bl
2487
2597
  name: string;
2488
2598
  };
2489
2599
  };
2490
- output: {
2491
- ok: true;
2492
- };
2493
- outputFormat: "json";
2494
- status: hono_utils_http_status.ContentfulStatusCode;
2495
- };
2496
- };
2497
- } & {
2498
- "/:name/files/trust/:sender": {
2499
- $delete: {
2500
- input: {
2501
- param: {
2502
- name: string;
2503
- } & {
2504
- sender: string;
2505
- };
2506
- };
2507
2600
  output: {
2508
2601
  error: string;
2509
2602
  };
2510
2603
  outputFormat: "json";
2511
- status: 404;
2604
+ status: 413;
2512
2605
  } | {
2513
2606
  input: {
2514
2607
  param: {
2515
2608
  name: string;
2516
- } & {
2517
- sender: string;
2518
2609
  };
2519
2610
  };
2520
2611
  output: {
2521
- ok: true;
2612
+ status: string;
2613
+ id: string;
2522
2614
  };
2523
2615
  outputFormat: "json";
2524
- status: hono_utils_http_status.ContentfulStatusCode;
2616
+ status: 200;
2525
2617
  };
2526
2618
  };
2527
2619
  }, "/api/minds"> | hono_types.MergeSchemaPath<{
@@ -2906,114 +2998,6 @@ declare const routes: hono_hono_base.HonoBase<hono_types.BlankEnv, hono_types.Bl
2906
2998
  status: 500;
2907
2999
  };
2908
3000
  };
2909
- } & {
2910
- "/:name/shared/pull": {
2911
- $post: {
2912
- input: {
2913
- param: {
2914
- name: string;
2915
- };
2916
- };
2917
- output: {
2918
- error: string;
2919
- };
2920
- outputFormat: "json";
2921
- status: 404;
2922
- } | {
2923
- input: {
2924
- param: {
2925
- name: string;
2926
- };
2927
- };
2928
- output: {
2929
- ok: boolean;
2930
- message?: string | undefined;
2931
- };
2932
- outputFormat: "json";
2933
- status: hono_utils_http_status.ContentfulStatusCode;
2934
- } | {
2935
- input: {
2936
- param: {
2937
- name: string;
2938
- };
2939
- };
2940
- output: {
2941
- error: string;
2942
- };
2943
- outputFormat: "json";
2944
- status: 500;
2945
- };
2946
- };
2947
- } & {
2948
- "/:name/shared/log": {
2949
- $get: {
2950
- input: {
2951
- param: {
2952
- name: string;
2953
- };
2954
- };
2955
- output: string;
2956
- outputFormat: "text";
2957
- status: hono_utils_http_status.ContentfulStatusCode;
2958
- } | {
2959
- input: {
2960
- param: {
2961
- name: string;
2962
- };
2963
- };
2964
- output: {
2965
- error: string;
2966
- };
2967
- outputFormat: "json";
2968
- status: 404;
2969
- } | {
2970
- input: {
2971
- param: {
2972
- name: string;
2973
- };
2974
- };
2975
- output: {
2976
- error: string;
2977
- };
2978
- outputFormat: "json";
2979
- status: 500;
2980
- };
2981
- };
2982
- } & {
2983
- "/:name/shared/status": {
2984
- $get: {
2985
- input: {
2986
- param: {
2987
- name: string;
2988
- };
2989
- };
2990
- output: string;
2991
- outputFormat: "text";
2992
- status: hono_utils_http_status.ContentfulStatusCode;
2993
- } | {
2994
- input: {
2995
- param: {
2996
- name: string;
2997
- };
2998
- };
2999
- output: {
3000
- error: string;
3001
- };
3002
- outputFormat: "json";
3003
- status: 404;
3004
- } | {
3005
- input: {
3006
- param: {
3007
- name: string;
3008
- };
3009
- };
3010
- output: {
3011
- error: string;
3012
- };
3013
- outputFormat: "json";
3014
- status: 500;
3015
- };
3016
- };
3017
3001
  }, "/api/minds"> | hono_types.MergeSchemaPath<{
3018
3002
  "/:name/env": {
3019
3003
  $get: {
@@ -4650,6 +4634,10 @@ declare const routes: hono_hono_base.HonoBase<hono_types.BlankEnv, hono_types.Bl
4650
4634
  media_type: string;
4651
4635
  data: string;
4652
4636
  }[] | undefined;
4637
+ files?: {
4638
+ filename: string;
4639
+ data: string;
4640
+ }[] | undefined;
4653
4641
  };
4654
4642
  };
4655
4643
  output: {
@@ -4666,6 +4654,10 @@ declare const routes: hono_hono_base.HonoBase<hono_types.BlankEnv, hono_types.Bl
4666
4654
  media_type: string;
4667
4655
  data: string;
4668
4656
  }[] | undefined;
4657
+ files?: {
4658
+ filename: string;
4659
+ data: string;
4660
+ }[] | undefined;
4669
4661
  };
4670
4662
  };
4671
4663
  output: {
@@ -4682,6 +4674,30 @@ declare const routes: hono_hono_base.HonoBase<hono_types.BlankEnv, hono_types.Bl
4682
4674
  media_type: string;
4683
4675
  data: string;
4684
4676
  }[] | undefined;
4677
+ files?: {
4678
+ filename: string;
4679
+ data: string;
4680
+ }[] | undefined;
4681
+ };
4682
+ };
4683
+ output: {
4684
+ error: string;
4685
+ };
4686
+ outputFormat: "json";
4687
+ status: 413;
4688
+ } | {
4689
+ input: {
4690
+ json: {
4691
+ conversationId: string;
4692
+ message?: string | undefined;
4693
+ images?: {
4694
+ media_type: string;
4695
+ data: string;
4696
+ }[] | undefined;
4697
+ files?: {
4698
+ filename: string;
4699
+ data: string;
4700
+ }[] | undefined;
4685
4701
  };
4686
4702
  };
4687
4703
  output: {
@@ -7,10 +7,7 @@ async function run(args) {
7
7
  const subArgs = args.slice(1);
8
8
  switch (subcommand) {
9
9
  case "send":
10
- await import("./send-ZNCJDSRP.js").then((m) => m.run(subArgs));
11
- break;
12
- case "history":
13
- await import("./history-XKRTAFS2.js").then((m) => m.run(subArgs));
10
+ await import("./send-TAOEZ4NH.js").then((m) => m.run(subArgs));
14
11
  break;
15
12
  case "list":
16
13
  await import("./list-R73GENNL.js").then((m) => m.run(subArgs));
@@ -24,18 +21,31 @@ async function run(args) {
24
21
  case "bridge":
25
22
  await import("./bridge-FQHZL3MC.js").then((m) => m.run(subArgs));
26
23
  break;
24
+ case "files":
25
+ await import("./files-M546TKVN.js").then((m) => m.run(subArgs));
26
+ break;
27
+ case "accept":
28
+ await import("./accept-666DIZX2.js").then((m) => m.run(subArgs));
29
+ break;
30
+ case "reject":
31
+ await import("./reject-LXIZFJ4Q.js").then((m) => m.run(subArgs));
32
+ break;
27
33
  case "--help":
28
34
  case "-h":
29
35
  case void 0:
30
- console.log(`volute chat \u2014 conversations and bridges
36
+ console.log(`volute chat \u2014 conversations, files, and bridges
31
37
 
32
38
  Messages:
33
- send <target> "<msg>" Send a message
34
- history [--mind] [--limit N] View activity history
39
+ send <target> "<msg>" Send a message (--image, --file)
35
40
  list List conversations
36
41
  read <conversation> [--limit] Read conversation messages
37
42
  create --participants u1,u2 Create a conversation
38
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
+
39
49
  Bridges:
40
50
  bridge add <platform> Set up a bridge
41
51
  bridge remove <platform> Remove a bridge