volute 0.18.0 → 0.19.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 (104) hide show
  1. package/README.md +1 -1
  2. package/dist/archive-ZCFOSTKB.js +15 -0
  3. package/dist/{channel-SLURLIRV.js → channel-PUQKGSQM.js} +60 -7
  4. package/dist/{chunk-AYB7XAWO.js → chunk-2TJGRJ4O.js} +114 -279
  5. package/dist/{chunk-6BDNWYKG.js → chunk-32VR2EOH.js} +2 -2
  6. package/dist/chunk-4KPUF5JD.js +214 -0
  7. package/dist/{chunk-QJIIHU32.js → chunk-7NO7EV5Z.js} +2 -2
  8. package/dist/chunk-AW7P4EVV.js +159 -0
  9. package/dist/{chunk-2Y77MCFG.js → chunk-DYZGP3EW.js} +2 -2
  10. package/dist/{chunk-M77QBTEH.js → chunk-EBGCNDMM.js} +24 -14
  11. package/dist/{chunk-GSPWIM5E.js → chunk-EMQSAY3B.js} +77 -6
  12. package/dist/{chunk-37X7ECMF.js → chunk-FCDU5BFX.js} +1 -1
  13. package/dist/chunk-FGV2H4TX.js +803 -0
  14. package/dist/{chunk-ZCEYUUID.js → chunk-OGXOMR65.js} +2 -1
  15. package/dist/chunk-OTWLI7F4.js +375 -0
  16. package/dist/{chunk-GK4E7LM7.js → chunk-RHEGSQFJ.js} +1 -1
  17. package/dist/{chunk-MVSXRMJJ.js → chunk-SCUDS4US.js} +1 -1
  18. package/dist/{chunk-FW5API7X.js → chunk-UJ6GHNR7.js} +2 -2
  19. package/dist/{chunk-OYSZNX5I.js → chunk-VDWCHYTS.js} +1 -1
  20. package/dist/{chunk-6DVBMLVN.js → chunk-VE4D3GOP.js} +2 -2
  21. package/dist/chunk-VQWDC6UK.js +142 -0
  22. package/dist/{chunk-OJQ47SCA.js → chunk-WC6ZHVRL.js} +1 -1
  23. package/dist/chunk-YUIHSKR6.js +72 -0
  24. package/dist/chunk-Z524RFCJ.js +36 -0
  25. package/dist/cli.js +33 -25
  26. package/dist/{connector-3ELFMI2R.js → connector-JBVNZ7VK.js} +6 -6
  27. package/dist/connectors/discord.js +2 -2
  28. package/dist/connectors/slack.js +2 -2
  29. package/dist/connectors/telegram.js +2 -2
  30. package/dist/{create-ZWHCRT5F.js → create-HP4OVVHF.js} +6 -4
  31. package/dist/{daemon-client-ODKDUYDE.js → daemon-client-ITWUCNFO.js} +2 -2
  32. package/dist/{daemon-restart-2HVTHZAT.js → daemon-restart-JMZM3QY4.js} +8 -8
  33. package/dist/daemon.js +1144 -1108
  34. package/dist/db-5ZVC6MQF.js +10 -0
  35. package/dist/{delete-6G6WEX4F.js → delete-BSU7K3RY.js} +1 -1
  36. package/dist/delivery-manager-ISTJMZDW.js +16 -0
  37. package/dist/down-ZY35KMHR.js +14 -0
  38. package/dist/{env-6IDWGBUH.js → env-A3LMO777.js} +6 -6
  39. package/dist/export-GCDNQCF3.js +100 -0
  40. package/dist/{history-YUEKTJ2N.js → history-WNK3DFUM.js} +6 -6
  41. package/dist/{import-EDGRLIGO.js → import-M63VIUJ5.js} +3 -3
  42. package/dist/log-PPPZDVEF.js +39 -0
  43. package/dist/{login-ORQDXLBM.js → login-HNH3EUQV.js} +2 -2
  44. package/dist/{logout-XC5AUO5I.js → logout-I5CB5UZS.js} +2 -2
  45. package/dist/{logs-GYOR3L2L.js → logs-SF2IMJN4.js} +6 -6
  46. package/dist/merge-33C237A4.js +46 -0
  47. package/dist/{mind-OJN6RBZW.js → mind-PQ5NCPSU.js} +14 -10
  48. package/dist/mind-manager-RVCFROAY.js +18 -0
  49. package/dist/{package-OKLFO7UY.js → package-MYE2ZJLV.js} +5 -3
  50. package/dist/{pages-6IV4VQTU.js → pages-AXCOSY3P.js} +2 -2
  51. package/dist/{publish-Q4RPSJLL.js → publish-YB377JB7.js} +18 -4
  52. package/dist/pull-XAEWQJ47.js +39 -0
  53. package/dist/{register-LDE6LRXY.js → register-VSPCMHKX.js} +2 -2
  54. package/dist/{restart-YFAWFS5T.js → restart-IQKMCK5M.js} +6 -6
  55. package/dist/{schedule-AGYLDMNS.js → schedule-LMX7GAQZ.js} +6 -6
  56. package/dist/schema-5BW7DFZI.js +24 -0
  57. package/dist/{seed-AP4Q7RZ7.js → seed-J43YDKXG.js} +7 -4
  58. package/dist/{send-BNDTLUPM.js → send-KVIZIGCE.js} +8 -8
  59. package/dist/{service-U7MZ2H7F.js → service-LUR7WDO7.js} +6 -6
  60. package/dist/{setup-DJKIZKGW.js → setup-OH3PJUJO.js} +7 -7
  61. package/dist/shared-KO35ZM44.js +39 -0
  62. package/dist/{skill-2Y42P4JY.js → skill-BCVNI6TV.js} +6 -6
  63. package/{templates/_base/_skills → dist/skills}/orientation/SKILL.md +1 -1
  64. package/{templates/_base/_skills → dist/skills}/sessions/SKILL.md +2 -2
  65. package/{templates/_base/_skills → dist/skills}/volute-mind/SKILL.md +19 -1
  66. package/dist/{sprout-TJ3BHVOG.js → sprout-VBEX63LX.js} +38 -20
  67. package/dist/{start-3YYRXBKP.js → start-I5JYB65M.js} +6 -6
  68. package/dist/{status-VSFZYX7S.js → status-4ESFLGH4.js} +5 -5
  69. package/dist/status-D7E5HHBV.js +35 -0
  70. package/dist/{status-OKNA6AR3.js → status-JCJAOXTW.js} +2 -2
  71. package/dist/{stop-AA5K5LYG.js → stop-NBVKEFQQ.js} +6 -6
  72. package/dist/{up-7B3BWF2U.js → up-WG65SWJU.js} +5 -5
  73. package/dist/{update-YAGN5ODG.js → update-FJIHDJKM.js} +5 -5
  74. package/dist/{update-check-APLTH4IN.js → update-check-MWE5AH4U.js} +2 -2
  75. package/dist/{upgrade-KXZCQSZN.js → upgrade-AIT24B5I.js} +1 -1
  76. package/dist/{variant-X5QFG6KK.js → variant-63ZWO2W7.js} +4 -4
  77. package/dist/variants-JAGWGBXG.js +26 -0
  78. package/dist/web-assets/assets/index-BAbuRsVF.css +1 -0
  79. package/dist/web-assets/assets/index-CiQhSKi_.js +63 -0
  80. package/dist/web-assets/index.html +2 -2
  81. package/drizzle/0010_delivery_queue.sql +12 -0
  82. package/drizzle/0011_rename_human_to_brain.sql +1 -0
  83. package/drizzle/meta/0010_snapshot.json +7 -0
  84. package/drizzle/meta/0011_snapshot.json +7 -0
  85. package/drizzle/meta/_journal.json +14 -0
  86. package/package.json +5 -3
  87. package/templates/_base/.init/.config/hooks/startup-context.sh +1 -1
  88. package/templates/_base/.init/.config/scripts/session-reader.ts +3 -3
  89. package/templates/_base/home/VOLUTE.md +16 -1
  90. package/templates/_base/src/lib/auto-commit.ts +51 -14
  91. package/templates/_base/src/lib/router.ts +123 -1
  92. package/templates/_base/src/lib/types.ts +4 -0
  93. package/templates/_base/src/lib/volute-server.ts +91 -2
  94. package/templates/claude/src/server.ts +2 -2
  95. package/templates/claude/volute-template.json +1 -2
  96. package/templates/pi/src/agent.ts +1 -1
  97. package/templates/pi/src/lib/session-context-extension.ts +2 -2
  98. package/templates/pi/volute-template.json +1 -2
  99. package/dist/chunk-PO5Q2AYN.js +0 -121
  100. package/dist/down-A56B5JLK.js +0 -14
  101. package/dist/mind-manager-Z7O7PN2O.js +0 -15
  102. package/dist/web-assets/assets/index-CtiimdWK.css +0 -1
  103. package/dist/web-assets/assets/index-kt1_EcuO.js +0 -63
  104. /package/{templates/_base/_skills → dist/skills}/memory/SKILL.md +0 -0
@@ -9,17 +9,19 @@ async function run(args) {
9
9
  const { positional, flags } = parseArgs(args, {
10
10
  template: { type: "string" },
11
11
  model: { type: "string" },
12
- description: { type: "string" }
12
+ description: { type: "string" },
13
+ skills: { type: "string" }
13
14
  });
14
15
  const name = positional[0];
15
16
  if (!name) {
16
17
  console.error(
17
- "Usage: volute seed <name> [--template <name>] [--model <model>] [--description <text>]"
18
+ "Usage: volute seed <name> [--template <name>] [--model <model>] [--description <text>] [--skills <list|none>]"
18
19
  );
19
20
  process.exit(1);
20
21
  }
21
22
  const template = flags.template ?? "claude";
22
- const { daemonFetch } = await import("./daemon-client-ODKDUYDE.js");
23
+ const skills = flags.skills === "none" ? [] : flags.skills ? flags.skills.split(",") : void 0;
24
+ const { daemonFetch } = await import("./daemon-client-ITWUCNFO.js");
23
25
  const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
24
26
  const client = getClient();
25
27
  const createRes = await daemonFetch(urlOf(client.api.minds.$url()), {
@@ -30,7 +32,8 @@ async function run(args) {
30
32
  template,
31
33
  stage: "seed",
32
34
  description: flags.description,
33
- model: flags.model
35
+ model: flags.model,
36
+ skills
34
37
  })
35
38
  });
36
39
  const createData = await createRes.json();
@@ -1,24 +1,24 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ getClient,
4
+ urlOf
5
+ } from "./chunk-4RQBJWQX.js";
2
6
  import {
3
7
  resolveMindName
4
8
  } from "./chunk-NAOW2CLO.js";
5
9
  import {
6
10
  getChannelDriver
7
- } from "./chunk-FW5API7X.js";
11
+ } from "./chunk-UJ6GHNR7.js";
8
12
  import {
9
13
  parseArgs
10
14
  } from "./chunk-D424ZQGI.js";
11
- import "./chunk-GK4E7LM7.js";
15
+ import "./chunk-RHEGSQFJ.js";
12
16
  import {
13
17
  daemonFetch
14
- } from "./chunk-OJQ47SCA.js";
18
+ } from "./chunk-WC6ZHVRL.js";
15
19
  import {
16
20
  findMind
17
- } from "./chunk-M77QBTEH.js";
18
- import {
19
- getClient,
20
- urlOf
21
- } from "./chunk-4RQBJWQX.js";
21
+ } from "./chunk-EBGCNDMM.js";
22
22
  import "./chunk-K3NQKI34.js";
23
23
 
24
24
  // src/commands/send.ts
@@ -4,15 +4,15 @@ import {
4
4
  LAUNCHD_PLIST_PATH,
5
5
  SYSTEM_SERVICE_PATH,
6
6
  USER_SYSTEMD_UNIT
7
- } from "./chunk-6BDNWYKG.js";
8
- import {
9
- resolveVoluteBin
10
- } from "./chunk-2Y77MCFG.js";
11
- import "./chunk-ZCEYUUID.js";
7
+ } from "./chunk-32VR2EOH.js";
12
8
  import {
13
9
  parseArgs
14
10
  } from "./chunk-D424ZQGI.js";
15
- import "./chunk-M77QBTEH.js";
11
+ import {
12
+ resolveVoluteBin
13
+ } from "./chunk-DYZGP3EW.js";
14
+ import "./chunk-OGXOMR65.js";
15
+ import "./chunk-EBGCNDMM.js";
16
16
  import "./chunk-K3NQKI34.js";
17
17
 
18
18
  // src/commands/service.ts
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  SYSTEM_SERVICE_PATH
4
- } from "./chunk-6BDNWYKG.js";
4
+ } from "./chunk-32VR2EOH.js";
5
+ import {
6
+ parseArgs
7
+ } from "./chunk-D424ZQGI.js";
5
8
  import {
6
9
  resolveVoluteBin
7
- } from "./chunk-2Y77MCFG.js";
10
+ } from "./chunk-DYZGP3EW.js";
8
11
  import {
9
12
  ensureVoluteGroup
10
- } from "./chunk-ZCEYUUID.js";
11
- import {
12
- parseArgs
13
- } from "./chunk-D424ZQGI.js";
14
- import "./chunk-M77QBTEH.js";
13
+ } from "./chunk-OGXOMR65.js";
14
+ import "./chunk-EBGCNDMM.js";
15
15
  import "./chunk-K3NQKI34.js";
16
16
 
17
17
  // src/commands/setup.ts
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env node
2
+ import "./chunk-K3NQKI34.js";
3
+
4
+ // src/commands/shared.ts
5
+ async function run(args) {
6
+ const subcommand = args[0];
7
+ switch (subcommand) {
8
+ case "merge":
9
+ await import("./merge-33C237A4.js").then((m) => m.run(args.slice(1)));
10
+ break;
11
+ case "pull":
12
+ await import("./pull-XAEWQJ47.js").then((m) => m.run(args.slice(1)));
13
+ break;
14
+ case "log":
15
+ await import("./log-PPPZDVEF.js").then((m) => m.run(args.slice(1)));
16
+ break;
17
+ case "status":
18
+ await import("./status-D7E5HHBV.js").then((m) => m.run(args.slice(1)));
19
+ break;
20
+ case "--help":
21
+ case "-h":
22
+ case void 0:
23
+ printUsage();
24
+ break;
25
+ default:
26
+ printUsage();
27
+ process.exit(1);
28
+ }
29
+ }
30
+ function printUsage() {
31
+ console.log(`Usage:
32
+ volute shared merge "<message>" [--mind <name>] Merge shared changes to main
33
+ volute shared pull [--mind <name>] Pull latest shared changes
34
+ volute shared log [--limit N] [--mind <name>] Show shared repo history
35
+ volute shared status [--mind <name>] Show pending changes diff`);
36
+ }
37
+ export {
38
+ run
39
+ };
@@ -1,4 +1,8 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ getClient,
4
+ urlOf
5
+ } from "./chunk-4RQBJWQX.js";
2
6
  import {
3
7
  resolveMindName
4
8
  } from "./chunk-NAOW2CLO.js";
@@ -7,12 +11,8 @@ import {
7
11
  } from "./chunk-D424ZQGI.js";
8
12
  import {
9
13
  daemonFetch
10
- } from "./chunk-OJQ47SCA.js";
11
- import "./chunk-M77QBTEH.js";
12
- import {
13
- getClient,
14
- urlOf
15
- } from "./chunk-4RQBJWQX.js";
14
+ } from "./chunk-WC6ZHVRL.js";
15
+ import "./chunk-EBGCNDMM.js";
16
16
  import "./chunk-K3NQKI34.js";
17
17
 
18
18
  // src/commands/skill.ts
@@ -47,7 +47,7 @@ After sprouting, you'll have full mind capabilities (connectors, schedules, vari
47
47
 
48
48
  | Command | Purpose |
49
49
  |---------|---------|
50
- | `volute send @<name> "msg"` | Send a message to a user or mind |
50
+ | `volute send @<name> "msg"` | Send a message to another user |
51
51
  | `volute sprout` | Complete orientation and become a full mind |
52
52
 
53
53
  ## Files
@@ -16,8 +16,8 @@ When a message arrives, you automatically receive a brief summary of new activit
16
16
  To see which sessions are active:
17
17
 
18
18
  ```sh
19
- ls ../.volute/sessions/ # claude template
20
- ls ../.volute/pi-sessions/ # pi template
19
+ ls ../.mind/sessions/ # claude template
20
+ ls ../.mind/pi-sessions/ # pi template
21
21
  ```
22
22
 
23
23
  ## Reading a Session Log
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: Volute CLI
3
- description: This skill should be used when working with the volute CLI, understanding variants, forking, merging, or managing the mind server. Also covers routing config, batch settings, channel gating, message flow, and shared skills. Covers "create variant", "merge variant", "send to variant", "fork", "volute CLI", "variant workflow", "mind server", "supervisor", "channel", "discord", "send message", "read messages", "history", "connector", "schedule", "mind-to-mind", "proactive", "initiative", "reach out", "conversation", "group chat", "participants", "invite", "routing", "routes.json", "batch", "debounce", "trigger", "gating", "gate", "skill", "shared skill", "install skill", "publish skill", "update skill".
3
+ description: This skill should be used when working with the volute CLI, understanding variants, forking, merging, or managing the mind server. Also covers routing config, batch settings, channel gating, message flow, shared skills, and shared files. Covers "create variant", "merge variant", "send to variant", "fork", "volute CLI", "variant workflow", "mind server", "supervisor", "channel", "discord", "send message", "read messages", "history", "connector", "schedule", "mind-to-mind", "proactive", "initiative", "reach out", "conversation", "group chat", "participants", "invite", "routing", "routes.json", "batch", "debounce", "trigger", "gating", "gate", "skill", "shared skill", "install skill", "publish skill", "update skill", "shared files", "shared pages", "collaborate", "shared merge", "shared pull".
4
4
  ---
5
5
 
6
6
  # Self-Management
@@ -32,6 +32,10 @@ You manage yourself through the `volute` CLI. Your mind name is auto-detected vi
32
32
  | `volute schedule add --cron "..." --message "..."` | Schedule a recurring message to yourself |
33
33
  | `volute schedule list` | List your schedules |
34
34
  | `volute schedule remove --id <id>` | Remove a schedule |
35
+ | `volute shared status` | See your pending changes vs main |
36
+ | `volute shared merge "<message>"` | Share your changes with all minds |
37
+ | `volute shared pull` | Get latest shared changes from other minds |
38
+ | `volute shared log [--limit N]` | View recent shared history |
35
39
 
36
40
  ## Schedules
37
41
 
@@ -116,6 +120,20 @@ Your system has a shared skill repository that all minds can browse and install
116
120
 
117
121
  When you install a skill, it's copied to your skills directory. You can modify it freely — updates use a 3-way merge to preserve your changes. If there are merge conflicts, resolve them like any git conflict.
118
122
 
123
+ ## Shared Files
124
+
125
+ Your `shared/` directory is a collaborative space backed by git. Each mind works on its own branch — changes are private until deliberately shared.
126
+
127
+ **Workflow:**
128
+ 1. Edit files in `shared/` normally — auto-commit saves changes to your branch
129
+ 2. `volute shared status` — see what you've changed compared to main
130
+ 3. `volute shared merge "description"` — squash-merge your changes to main
131
+ 4. `volute shared pull` — rebase your branch onto latest main to get others' changes
132
+
133
+ **Conflicts:** If your merge fails due to conflicts, pull the latest (`volute shared pull`), reconcile the conflicting files, and merge again. If pull itself conflicts (your uncommitted changes clash), reset to main with `git -C shared reset --hard main`, re-apply your changes, and merge.
134
+
135
+ **Shared pages:** The `shared/pages/` directory is the system-level website. Any mind can contribute. Publish with `volute pages publish` (no `--mind` flag) to deploy the shared site.
136
+
119
137
  ## MCP Configuration
120
138
 
121
139
  Edit `home/.mcp.json` to configure MCP servers for your SDK session. This gives you access to additional tools and services.
@@ -1,16 +1,23 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
- composeTemplate,
4
- findTemplatesRoot
5
- } from "./chunk-PO5Q2AYN.js";
3
+ STANDARD_SKILLS,
4
+ getSharedSkill,
5
+ installSkill,
6
+ uninstallSkill
7
+ } from "./chunk-OTWLI7F4.js";
8
+ import "./chunk-YUIHSKR6.js";
9
+ import "./chunk-Z524RFCJ.js";
10
+ import "./chunk-VQWDC6UK.js";
11
+ import "./chunk-DYZGP3EW.js";
12
+ import "./chunk-OGXOMR65.js";
6
13
  import {
7
14
  findMind,
8
15
  mindDir
9
- } from "./chunk-M77QBTEH.js";
16
+ } from "./chunk-EBGCNDMM.js";
10
17
  import "./chunk-K3NQKI34.js";
11
18
 
12
19
  // src/commands/sprout.ts
13
- import { cpSync, existsSync, readFileSync, rmSync } from "fs";
20
+ import { existsSync, readFileSync } from "fs";
14
21
  import { resolve } from "path";
15
22
  var ORIENTATION_MARKER = "You don't have a soul yet";
16
23
  async function run(_args) {
@@ -46,25 +53,36 @@ async function run(_args) {
46
53
  console.error("Write your MEMORY.md before sprouting.");
47
54
  process.exit(1);
48
55
  }
49
- const templatesRoot = findTemplatesRoot();
50
- const { composedDir, manifest } = composeTemplate(templatesRoot, "claude");
51
- try {
52
- const skillsDir = resolve(dir, manifest.skillsDir);
53
- const composedSkillsDir = resolve(composedDir, manifest.skillsDir);
54
- for (const skill of ["volute-mind", "memory", "sessions"]) {
55
- const src = resolve(composedSkillsDir, skill);
56
- if (existsSync(src)) {
57
- cpSync(src, resolve(skillsDir, skill), { recursive: true });
56
+ const failedSkills = [];
57
+ for (const skillId of STANDARD_SKILLS) {
58
+ const shared = await getSharedSkill(skillId);
59
+ if (!shared) {
60
+ console.error(`Shared skill not found: ${skillId} \u2014 run 'volute up' to sync built-in skills`);
61
+ failedSkills.push(skillId);
62
+ continue;
63
+ }
64
+ const skillDir = resolve(dir, "home", ".claude", "skills", skillId);
65
+ if (!existsSync(skillDir)) {
66
+ try {
67
+ await installSkill(mindName, dir, skillId);
68
+ } catch (err) {
69
+ console.error(`Failed to install skill ${skillId}: ${err.message}`);
70
+ failedSkills.push(skillId);
58
71
  }
59
72
  }
60
- const orientationPath = resolve(skillsDir, "orientation");
61
- if (existsSync(orientationPath)) {
62
- rmSync(orientationPath, { recursive: true, force: true });
73
+ }
74
+ const orientationDir = resolve(dir, "home", ".claude", "skills", "orientation");
75
+ if (existsSync(orientationDir)) {
76
+ try {
77
+ await uninstallSkill(mindName, dir, "orientation");
78
+ } catch (err) {
79
+ console.error(`Failed to uninstall orientation skill: ${err.message}`);
63
80
  }
64
- } finally {
65
- rmSync(composedDir, { recursive: true, force: true });
66
81
  }
67
- const { daemonFetch } = await import("./daemon-client-ODKDUYDE.js");
82
+ if (failedSkills.length > 0) {
83
+ console.error(`Warning: failed to install skills: ${failedSkills.join(", ")}`);
84
+ }
85
+ const { daemonFetch } = await import("./daemon-client-ITWUCNFO.js");
68
86
  const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
69
87
  const client = getClient();
70
88
  const sproutRes = await daemonFetch(
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- daemonFetch
4
- } from "./chunk-OJQ47SCA.js";
5
- import {
6
- resolveMind
7
- } from "./chunk-M77QBTEH.js";
8
2
  import {
9
3
  getClient,
10
4
  urlOf
11
5
  } from "./chunk-4RQBJWQX.js";
6
+ import {
7
+ daemonFetch
8
+ } from "./chunk-WC6ZHVRL.js";
9
+ import {
10
+ resolveMind
11
+ } from "./chunk-EBGCNDMM.js";
12
12
  import "./chunk-K3NQKI34.js";
13
13
 
14
14
  // src/commands/start.ts
@@ -4,13 +4,13 @@ import {
4
4
  getServiceMode,
5
5
  modeLabel,
6
6
  readDaemonConfig
7
- } from "./chunk-6BDNWYKG.js";
8
- import "./chunk-2Y77MCFG.js";
9
- import "./chunk-ZCEYUUID.js";
7
+ } from "./chunk-32VR2EOH.js";
8
+ import "./chunk-DYZGP3EW.js";
9
+ import "./chunk-OGXOMR65.js";
10
10
  import {
11
11
  checkForUpdate
12
- } from "./chunk-MVSXRMJJ.js";
13
- import "./chunk-M77QBTEH.js";
12
+ } from "./chunk-SCUDS4US.js";
13
+ import "./chunk-EBGCNDMM.js";
14
14
  import "./chunk-K3NQKI34.js";
15
15
 
16
16
  // src/commands/status.ts
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ resolveMindName
4
+ } from "./chunk-NAOW2CLO.js";
5
+ import {
6
+ parseArgs
7
+ } from "./chunk-D424ZQGI.js";
8
+ import {
9
+ daemonFetch
10
+ } from "./chunk-WC6ZHVRL.js";
11
+ import "./chunk-EBGCNDMM.js";
12
+ import "./chunk-K3NQKI34.js";
13
+
14
+ // src/commands/shared/status.ts
15
+ async function run(args) {
16
+ const { flags } = parseArgs(args, {
17
+ mind: { type: "string" }
18
+ });
19
+ const mindName = resolveMindName(flags);
20
+ const res = await daemonFetch(`/api/minds/${encodeURIComponent(mindName)}/shared/status`);
21
+ if (!res.ok) {
22
+ const body = await res.json().catch(() => ({}));
23
+ console.error(body.error ?? `Server responded with ${res.status}`);
24
+ process.exit(1);
25
+ }
26
+ const output = await res.text();
27
+ if (output.trim()) {
28
+ console.log(output.trimEnd());
29
+ } else {
30
+ console.log("No pending changes.");
31
+ }
32
+ }
33
+ export {
34
+ run
35
+ };
@@ -7,11 +7,11 @@ import {
7
7
  } from "./chunk-NAOW2CLO.js";
8
8
  import {
9
9
  readSystemsConfig
10
- } from "./chunk-37X7ECMF.js";
10
+ } from "./chunk-FCDU5BFX.js";
11
11
  import {
12
12
  parseArgs
13
13
  } from "./chunk-D424ZQGI.js";
14
- import "./chunk-M77QBTEH.js";
14
+ import "./chunk-EBGCNDMM.js";
15
15
  import "./chunk-K3NQKI34.js";
16
16
 
17
17
  // src/commands/pages/status.ts
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ getClient,
4
+ urlOf
5
+ } from "./chunk-4RQBJWQX.js";
2
6
  import {
3
7
  resolveMindName
4
8
  } from "./chunk-NAOW2CLO.js";
5
9
  import {
6
10
  daemonFetch
7
- } from "./chunk-OJQ47SCA.js";
11
+ } from "./chunk-WC6ZHVRL.js";
8
12
  import {
9
13
  resolveMind
10
- } from "./chunk-M77QBTEH.js";
11
- import {
12
- getClient,
13
- urlOf
14
- } from "./chunk-4RQBJWQX.js";
14
+ } from "./chunk-EBGCNDMM.js";
15
15
  import "./chunk-K3NQKI34.js";
16
16
 
17
17
  // src/commands/stop.ts
@@ -2,12 +2,12 @@
2
2
  import {
3
3
  readGlobalConfig,
4
4
  run
5
- } from "./chunk-6DVBMLVN.js";
6
- import "./chunk-6BDNWYKG.js";
7
- import "./chunk-2Y77MCFG.js";
8
- import "./chunk-ZCEYUUID.js";
5
+ } from "./chunk-VE4D3GOP.js";
6
+ import "./chunk-32VR2EOH.js";
9
7
  import "./chunk-D424ZQGI.js";
10
- import "./chunk-M77QBTEH.js";
8
+ import "./chunk-DYZGP3EW.js";
9
+ import "./chunk-OGXOMR65.js";
10
+ import "./chunk-EBGCNDMM.js";
11
11
  import "./chunk-K3NQKI34.js";
12
12
  export {
13
13
  readGlobalConfig,
@@ -5,19 +5,19 @@ import {
5
5
  pollHealth,
6
6
  readDaemonConfig,
7
7
  restartService
8
- } from "./chunk-6BDNWYKG.js";
8
+ } from "./chunk-32VR2EOH.js";
9
9
  import {
10
10
  exec,
11
11
  execInherit,
12
12
  resolveVoluteBin
13
- } from "./chunk-2Y77MCFG.js";
14
- import "./chunk-ZCEYUUID.js";
13
+ } from "./chunk-DYZGP3EW.js";
14
+ import "./chunk-OGXOMR65.js";
15
15
  import {
16
16
  checkForUpdate
17
- } from "./chunk-MVSXRMJJ.js";
17
+ } from "./chunk-SCUDS4US.js";
18
18
  import {
19
19
  voluteHome
20
- } from "./chunk-M77QBTEH.js";
20
+ } from "./chunk-EBGCNDMM.js";
21
21
  import "./chunk-K3NQKI34.js";
22
22
 
23
23
  // src/commands/update.ts
@@ -5,8 +5,8 @@ import {
5
5
  fetchLatestVersion,
6
6
  getCurrentVersion,
7
7
  isNewer
8
- } from "./chunk-MVSXRMJJ.js";
9
- import "./chunk-M77QBTEH.js";
8
+ } from "./chunk-SCUDS4US.js";
9
+ import "./chunk-EBGCNDMM.js";
10
10
  import "./chunk-K3NQKI34.js";
11
11
  export {
12
12
  checkForUpdate,
@@ -14,7 +14,7 @@ async function run(args) {
14
14
  continue: { type: "boolean" }
15
15
  });
16
16
  const mindName = resolveMindName({ mind: positional[0] });
17
- const { daemonFetch } = await import("./daemon-client-ODKDUYDE.js");
17
+ const { daemonFetch } = await import("./daemon-client-ITWUCNFO.js");
18
18
  const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
19
19
  const client = getClient();
20
20
  const res = await daemonFetch(
@@ -10,7 +10,7 @@ import {
10
10
  readVariants,
11
11
  resolveMind,
12
12
  writeVariants
13
- } from "./chunk-M77QBTEH.js";
13
+ } from "./chunk-EBGCNDMM.js";
14
14
  import "./chunk-K3NQKI34.js";
15
15
 
16
16
  // src/commands/variant.ts
@@ -65,7 +65,7 @@ async function createVariant(args) {
65
65
  process.exit(1);
66
66
  }
67
67
  if (!json) console.log("Creating variant via daemon...");
68
- const { daemonFetch } = await import("./daemon-client-ODKDUYDE.js");
68
+ const { daemonFetch } = await import("./daemon-client-ITWUCNFO.js");
69
69
  const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
70
70
  const client = getClient();
71
71
  const res = await daemonFetch(
@@ -155,7 +155,7 @@ async function mergeVariant(args) {
155
155
  process.exit(1);
156
156
  }
157
157
  console.log(`Merging variant ${variantName}...`);
158
- const { daemonFetch } = await import("./daemon-client-ODKDUYDE.js");
158
+ const { daemonFetch } = await import("./daemon-client-ITWUCNFO.js");
159
159
  const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
160
160
  const client = getClient();
161
161
  const res = await daemonFetch(
@@ -192,7 +192,7 @@ async function deleteVariant(args) {
192
192
  console.error("Usage: volute variant delete <variant> [--mind <name>]");
193
193
  process.exit(1);
194
194
  }
195
- const { daemonFetch } = await import("./daemon-client-ODKDUYDE.js");
195
+ const { daemonFetch } = await import("./daemon-client-ITWUCNFO.js");
196
196
  const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
197
197
  const client = getClient();
198
198
  const res = await daemonFetch(
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ addVariant,
4
+ checkHealth,
5
+ findVariant,
6
+ getAllRunningVariants,
7
+ readVariants,
8
+ removeAllVariants,
9
+ removeVariant,
10
+ setVariantRunning,
11
+ validateBranchName,
12
+ writeVariants
13
+ } from "./chunk-EBGCNDMM.js";
14
+ import "./chunk-K3NQKI34.js";
15
+ export {
16
+ addVariant,
17
+ checkHealth,
18
+ findVariant,
19
+ getAllRunningVariants,
20
+ readVariants,
21
+ removeAllVariants,
22
+ removeVariant,
23
+ setVariantRunning,
24
+ validateBranchName,
25
+ writeVariants
26
+ };