volute 0.40.0 → 0.40.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 (164) hide show
  1. package/README.md +2 -2
  2. package/dist/{accept-AHAOUFBK.js → accept-IVHOHXQS.js} +1 -1
  3. package/dist/{activity-events-OJZ7G5CG.js → activity-events-DS4QRWBY.js} +4 -4
  4. package/dist/{ai-service-JMV4KZN4.js → ai-service-EVLKMAJD.js} +5 -5
  5. package/dist/{api-client-LC5YRA32.js → api-client-NFM6GX2N.js} +1 -1
  6. package/dist/{archive-BC2MTNPV.js → archive-UDHFZN4G.js} +4 -4
  7. package/dist/{auth-2IMZ6N5G.js → auth-X6ZITZ7D.js} +5 -5
  8. package/dist/{bridge-F3ZJEKDN.js → bridge-MSZC4HUT.js} +1 -1
  9. package/dist/{chat-O5QCGCUG.js → chat-F2EEN76G.js} +9 -9
  10. package/dist/{chunk-MHFAWJCC.js → chunk-2HZRJ35V.js} +1 -1
  11. package/dist/{chunk-B7YJUWMM.js → chunk-3Y7UDHO7.js} +3 -3
  12. package/dist/{chunk-RMZSICLS.js → chunk-42UMLIQR.js} +20 -21
  13. package/dist/{chunk-SGC6CDXB.js → chunk-4UMXOMZ6.js} +2 -2
  14. package/dist/{chunk-FBV22PFY.js → chunk-6SYHHEQ7.js} +1 -1
  15. package/dist/{chunk-3XSFMN3H.js → chunk-AEAZRTEV.js} +1 -1
  16. package/dist/{chunk-PDSA3ILI.js → chunk-B4WPXYPI.js} +1 -1
  17. package/dist/{chunk-2AQCEQYN.js → chunk-DNU6XLE2.js} +1 -1
  18. package/dist/{chunk-PHR4XQPL.js → chunk-E25SO3QW.js} +3 -3
  19. package/dist/{chunk-76Q6YLJL.js → chunk-I57LLNAQ.js} +1 -1
  20. package/dist/{chunk-HAJHDGBV.js → chunk-ITH5ZLZJ.js} +1 -1
  21. package/dist/{chunk-SOPMVTTW.js → chunk-JYQQDI3M.js} +2 -2
  22. package/dist/{chunk-PIRL2HAO.js → chunk-KMHC36CA.js} +1 -1
  23. package/dist/chunk-LMMQX4CK.js +49 -0
  24. package/dist/{chunk-FRJ73IWR.js → chunk-MNUXL4XN.js} +67 -3
  25. package/dist/{chunk-PC55DGNX.js → chunk-NERYUSER.js} +1 -1
  26. package/dist/{chunk-WGRMLXTH.js → chunk-NRJ3ZYFP.js} +10 -10
  27. package/dist/{chunk-43PVCF4V.js → chunk-PEKG3GNZ.js} +3 -3
  28. package/dist/{chunk-S4YO5OWV.js → chunk-PKGA23XM.js} +1 -1
  29. package/dist/{chunk-5VBXKFPO.js → chunk-QYI65HCL.js} +2 -2
  30. package/dist/{chunk-HEZM5GCV.js → chunk-SVXOBKQY.js} +2 -2
  31. package/dist/{chunk-PZTVQL3J.js → chunk-TOANT6FD.js} +2 -2
  32. package/dist/{chunk-T26YLQPU.js → chunk-UX7FPDDO.js} +5 -5
  33. package/dist/{chunk-JSITYTIL.js → chunk-WOWRLBL2.js} +10 -8
  34. package/dist/{chunk-DNQPHLGM.js → chunk-YHWGN4FX.js} +1 -1
  35. package/dist/chunk-YMMYN2V3.js +1212 -0
  36. package/dist/{chunk-XUJR6NZW.js → chunk-ZOI6D2YH.js} +194 -1313
  37. package/dist/{chunk-PGX52NFO.js → chunk-ZXPWTH4I.js} +43 -35
  38. package/dist/cli.js +24 -24
  39. package/dist/{clock-BMLJ2TR6.js → clock-YLDJUKBW.js} +3 -3
  40. package/dist/{cloud-sync-5JF2Z7VM.js → cloud-sync-GOSJZIHH.js} +18 -17
  41. package/dist/{config-QB7W3Z7P.js → config-PO4EZLIK.js} +4 -4
  42. package/dist/connectors/discord-bridge.js +1 -1
  43. package/dist/connectors/slack-bridge.js +1 -1
  44. package/dist/connectors/telegram-bridge.js +1 -1
  45. package/dist/{conversations-LUVHGQSS.js → conversations-AYLXPOGC.js} +5 -5
  46. package/dist/{create-TDQM3SHV.js → create-Y3RGU2GI.js} +5 -5
  47. package/dist/{create-C3BBFYV7.js → create-ZMTGINV3.js} +1 -1
  48. package/dist/{daemon-client-2MIPKY3E.js → daemon-client-H6MEKK2W.js} +1 -1
  49. package/dist/{daemon-restart-XHDJDOPQ.js → daemon-restart-FSWVXPUE.js} +9 -9
  50. package/dist/daemon.js +318 -280
  51. package/dist/{db-IJL6B26S.js → db-FSYOTHSN.js} +1 -1
  52. package/dist/db-ZEPKEJJD.js +9 -0
  53. package/dist/{delete-NLXES2C7.js → delete-TXVOH2OC.js} +3 -3
  54. package/dist/delivery-manager-3NTCDKHR.js +33 -0
  55. package/dist/{delivery-router-IU4OMVKZ.js → delivery-router-T6CYTS3M.js} +4 -4
  56. package/dist/down-6DYO2QV7.js +17 -0
  57. package/dist/echo-text-JUNRP4ER.js +32 -0
  58. package/dist/{env-IQ6Q2333.js → env-77IOWG4U.js} +1 -1
  59. package/dist/exec-5DGKQ5V3.js +17 -0
  60. package/dist/{export-RKUWSQSG.js → export-TZKOCSCE.js} +6 -6
  61. package/dist/{extension-LZYHBNLV.js → extension-35NB6GHW.js} +1 -1
  62. package/dist/{extensions-VN5SEVRP.js → extensions-MD757RFY.js} +18 -17
  63. package/dist/{files-J2CKZ6PK.js → files-WNNVJWJB.js} +4 -4
  64. package/dist/{import-KVY6BYXG.js → import-BNNFCQ7U.js} +11 -11
  65. package/dist/{isolation-MM7YHK6J.js → isolation-4Q4P7HRV.js} +4 -4
  66. package/dist/{join-6SZCA5FX.js → join-E2EJEXZO.js} +3 -3
  67. package/dist/{list-KHJZJPEJ.js → list-BYCEDASJ.js} +1 -1
  68. package/dist/{login-GYTH67ES.js → login-JNSIYFVH.js} +1 -1
  69. package/dist/{login-OHM32QVD.js → login-Y6UAYQVO.js} +3 -3
  70. package/dist/{logout-YHQLOFLR.js → logout-M6FI62BL.js} +1 -1
  71. package/dist/{logout-74WBDMOE.js → logout-VHGWVH63.js} +3 -3
  72. package/dist/message-delivery-Q7TU24IA.js +41 -0
  73. package/dist/{mind-PUPXDIYQ.js → mind-OOB2LEVC.js} +19 -19
  74. package/dist/{mind-activity-tracker-7GE24YZE.js → mind-activity-tracker-GJ5RJS32.js} +5 -5
  75. package/dist/{mind-history-WHCNZ6I5.js → mind-history-W4JPTPTV.js} +1 -1
  76. package/dist/{mind-list-H3HC2ZRG.js → mind-list-QROHCLGT.js} +1 -1
  77. package/dist/mind-manager-4NFK4GEU.js +31 -0
  78. package/dist/{mind-profile-7VYRJGFZ.js → mind-profile-3LNKXNPA.js} +2 -2
  79. package/dist/mind-service-X7FH3NA4.js +37 -0
  80. package/dist/{mind-sleep-ZL5ZXFTM.js → mind-sleep-PVCMLTAH.js} +1 -1
  81. package/dist/{mind-status-ZWULKOUO.js → mind-status-RAJFLRCN.js} +1 -1
  82. package/dist/{mind-wake-HK5ORGUK.js → mind-wake-HZUOVE7J.js} +1 -1
  83. package/dist/{package-6YPVWGD3.js → package-PPA3VWS2.js} +28 -27
  84. package/dist/{read-CP7MYMJQ.js → read-OOINVR2H.js} +1 -1
  85. package/dist/{read-stdin-4B5UYPPM.js → read-stdin-P6HCZUAA.js} +1 -1
  86. package/dist/{register-XOBFEMI4.js → register-ISOH34RF.js} +1 -1
  87. package/dist/{registry-L272BZJR.js → registry-GV35XFT7.js} +3 -3
  88. package/dist/{reject-43AGXB6B.js → reject-ZBWP62X5.js} +1 -1
  89. package/dist/{restart-O5QIYQJT.js → restart-QBJV5455.js} +1 -1
  90. package/dist/{sandbox-BQAFYHLE.js → sandbox-5R32QKWQ.js} +5 -5
  91. package/dist/scheduler-PDARH4CE.js +31 -0
  92. package/dist/{schema-HHYJDG7B.js → schema-LYQUDL7G.js} +2 -2
  93. package/dist/{seed-4V2O7FQE.js → seed-BTAHXCO5.js} +2 -2
  94. package/dist/{seed-check-HZPVFJKZ.js → seed-check-3WXXRHTC.js} +2 -2
  95. package/dist/{seed-cmd-JKDEW4MP.js → seed-cmd-VEJNJBAQ.js} +4 -4
  96. package/dist/{seed-create-EPAO3H5F.js → seed-create-LOU5RALI.js} +7 -7
  97. package/dist/{seed-sprout-EONCL4DU.js → seed-sprout-BXF5TBXD.js} +11 -11
  98. package/dist/{send-232RAHPX.js → send-WO3CVG73.js} +4 -4
  99. package/dist/{service-AG5BKRUV.js → service-WMV6R6VJ.js} +6 -6
  100. package/dist/service-install-W3FQXJKB.js +17 -0
  101. package/dist/{setup-IL7QJZN4.js → setup-OTEC3ZPM.js} +4 -4
  102. package/dist/{setup-PSA7LJ5U.js → setup-W3545462.js} +9 -9
  103. package/dist/{skill-ICN6Y2ZF.js → skill-QHACP7EU.js} +1 -1
  104. package/dist/{skills-SLEY5X6W.js → skills-3P7VQA4U.js} +7 -7
  105. package/dist/sleep-manager-TTNOLIX5.js +35 -0
  106. package/dist/{spirit-7BUHSEO2.js → spirit-T6GK5GEP.js} +9 -9
  107. package/dist/{split-5YBEQTBF.js → split-7AO4IO42.js} +3 -3
  108. package/dist/{sprout-JWQ57KF3.js → sprout-AQICF7WZ.js} +2 -2
  109. package/dist/{src-OYWRPLC6.js → src-2IMB3V27.js} +1 -1
  110. package/dist/src-OS75U2O7.js +241910 -0
  111. package/dist/{src-O4PRLMKM.js → src-XNUXP2FP.js} +1 -1
  112. package/dist/{start-LMXXRR3X.js → start-2U57BBK7.js} +1 -1
  113. package/dist/{status-6GSOSYOD.js → status-BRYYYO7C.js} +7 -7
  114. package/dist/{stop-TWDKVEUX.js → stop-QILBDUAR.js} +1 -1
  115. package/dist/system-chat-7CA2PP6A.js +35 -0
  116. package/dist/{systems-Y2WZV2K4.js → systems-3XTAHA35.js} +4 -4
  117. package/dist/{tailscale-6MHNLBAX.js → tailscale-X4HRKRTW.js} +3 -3
  118. package/dist/{template-hash-SSIBEEYK.js → template-hash-DMHSLRDX.js} +1 -1
  119. package/dist/turn-tracker-AI6WWEBA.js +35 -0
  120. package/dist/up-PKNNDN6M.js +19 -0
  121. package/dist/{update-BT2PY73H.js → update-OY2JYXYK.js} +61 -14
  122. package/dist/update-check-IUB7QHAF.js +24 -0
  123. package/dist/{upgrade-RXFZR5FI.js → upgrade-25J6AE47.js} +3 -3
  124. package/dist/{variant-HHDTW74J.js → variant-5LQOPCQA.js} +1 -1
  125. package/dist/{version-notify-NFQMI5IY.js → version-notify-DK6AHWX7.js} +19 -18
  126. package/dist/{volute-config-TS62GS6A.js → volute-config-7FO6QKWU.js} +1 -1
  127. package/dist/web-assets/assets/index-DaUp9iE2.js +79 -0
  128. package/dist/web-assets/index.html +1 -1
  129. package/package.json +27 -26
  130. package/packages/extensions/notes/dist/ui/assets/index-BbgANhFm.js +67 -0
  131. package/packages/extensions/notes/dist/ui/index.html +1 -1
  132. package/packages/extensions/pages/dist/ui/assets/index-Dxk-DYrf.js +2 -0
  133. package/packages/extensions/pages/dist/ui/index.html +1 -1
  134. package/packages/extensions/plan/dist/ui/assets/index-Cfzs-0G9.js +67 -0
  135. package/packages/extensions/plan/dist/ui/index.html +1 -1
  136. package/templates/claude/package.json.tmpl +5 -5
  137. package/templates/codex/package.json.tmpl +5 -5
  138. package/templates/pi/package.json.tmpl +7 -6
  139. package/templates/pi/src/agent.ts +3 -1
  140. package/templates/pi/src/lib/content.ts +1 -1
  141. package/templates/pi/src/lib/event-handler.ts +1 -1
  142. package/templates/pi/src/lib/reply-instructions-extension.ts +1 -1
  143. package/templates/pi/src/lib/resolve-model.ts +4 -4
  144. package/templates/pi/src/lib/subagents.ts +21 -19
  145. package/dist/chunk-K3NQKI34.js +0 -10
  146. package/dist/db-2GIS7HSG.js +0 -9
  147. package/dist/delivery-manager-L5WFP2ND.js +0 -30
  148. package/dist/down-KIJVZ3OC.js +0 -17
  149. package/dist/echo-text-TJWCUBPB.js +0 -31
  150. package/dist/exec-BGMU7VXR.js +0 -17
  151. package/dist/message-delivery-VBBAJX3J.js +0 -40
  152. package/dist/mind-manager-4Q6KGZHL.js +0 -30
  153. package/dist/mind-service-7OD4PRO5.js +0 -36
  154. package/dist/scheduler-7E22Q7IC.js +0 -30
  155. package/dist/service-install-HVAEUBAH.js +0 -17
  156. package/dist/sleep-manager-27S7MKJO.js +0 -34
  157. package/dist/src-6Z4XYDH5.js +0 -2164
  158. package/dist/system-chat-EIINIHFB.js +0 -34
  159. package/dist/up-4XS3RCPP.js +0 -19
  160. package/dist/update-check-Y3HBEMF2.js +0 -18
  161. package/dist/web-assets/assets/index-Jluza4c-.js +0 -73
  162. package/packages/extensions/notes/dist/ui/assets/index-Dsua7alJ.js +0 -61
  163. package/packages/extensions/pages/dist/ui/assets/index-BM7gRdg7.js +0 -2
  164. package/packages/extensions/plan/dist/ui/assets/index-DWiqtzBv.js +0 -61
@@ -2,15 +2,37 @@
2
2
  import {
3
3
  readGlobalConfig,
4
4
  writeGlobalConfig
5
- } from "./chunk-2AQCEQYN.js";
5
+ } from "./chunk-DNU6XLE2.js";
6
6
  import {
7
7
  logger_default
8
8
  } from "./chunk-T2TP6ZC6.js";
9
9
 
10
10
  // packages/daemon/src/lib/ai-service.ts
11
- import { complete, getEnvApiKey, getModel, getModels, getProviders } from "@mariozechner/pi-ai";
12
- import { getOAuthApiKey } from "@mariozechner/pi-ai/oauth";
11
+ import { defaultProviderAuthContext } from "@earendil-works/pi-ai";
12
+ import { getOAuthApiKey } from "@earendil-works/pi-ai/oauth";
13
+ import {
14
+ builtinModels,
15
+ getBuiltinModel,
16
+ getBuiltinModels,
17
+ getBuiltinProviders
18
+ } from "@earendil-works/pi-ai/providers/all";
13
19
  var aiLog = logger_default.child("ai-service");
20
+ var models = builtinModels();
21
+ var authContext = defaultProviderAuthContext();
22
+ async function resolveProviderKey(providerId, configKey) {
23
+ const provider = models.getProvider(providerId);
24
+ const model = getBuiltinModels(providerId)[0];
25
+ if (provider?.auth.apiKey && model) {
26
+ try {
27
+ const credential = configKey ? { type: "api_key", key: configKey } : void 0;
28
+ const res = await provider.auth.apiKey.resolve({ model, ctx: authContext, credential });
29
+ if (res?.auth.apiKey) return res.auth.apiKey;
30
+ } catch (err) {
31
+ aiLog.debug(`api key resolution failed for ${providerId}`, logger_default.errorData(err));
32
+ }
33
+ }
34
+ return configKey;
35
+ }
14
36
  var providerRefreshHook;
15
37
  function setProviderRefreshHook(hook) {
16
38
  providerRefreshHook = hook;
@@ -49,7 +71,7 @@ function removeAiConfig() {
49
71
  delete config.ai;
50
72
  writeGlobalConfig(config);
51
73
  }
52
- function getConfiguredProviders() {
74
+ async function getConfiguredProviders() {
53
75
  const ai = getAiConfig();
54
76
  const configured = /* @__PURE__ */ new Set();
55
77
  if (ai) {
@@ -58,8 +80,8 @@ function getConfiguredProviders() {
58
80
  if (p.apiKey || p.oauth) configured.add(id);
59
81
  }
60
82
  }
61
- for (const id of getProviders()) {
62
- if (!configured.has(id) && getEnvApiKey(id)) {
83
+ for (const id of getBuiltinProviders()) {
84
+ if (!configured.has(id) && await resolveProviderKey(id)) {
63
85
  configured.add(id);
64
86
  }
65
87
  }
@@ -87,14 +109,14 @@ function templateForProvider(provider) {
87
109
  if (provider === "openai-codex") return "codex";
88
110
  return "pi";
89
111
  }
90
- function resolveTemplate(modelId) {
112
+ async function resolveTemplate(modelId) {
91
113
  if (!modelId) {
92
114
  const enabled = getEnabledModels();
93
115
  if (enabled.length > 0) {
94
116
  const model2 = findModel(enabled[0]);
95
117
  if (model2) return templateForProvider(model2.provider);
96
118
  }
97
- const providers = getConfiguredProviders();
119
+ const providers = await getConfiguredProviders();
98
120
  if (providers.length === 1) return templateForProvider(providers[0]);
99
121
  if (providers.length > 0 && !providers.includes("anthropic")) {
100
122
  return templateForProvider(providers[0]);
@@ -119,17 +141,13 @@ function setEnabledModels(modelIds) {
119
141
  const config = readGlobalConfig();
120
142
  writeGlobalConfig({ ...config, ai });
121
143
  }
122
- function getAvailableModels() {
123
- const providers = getConfiguredProviders();
124
- const models = [];
144
+ async function getAvailableModels() {
145
+ const providers = await getConfiguredProviders();
146
+ const result = [];
125
147
  for (const provider of providers) {
126
- try {
127
- models.push(...getModels(provider));
128
- } catch (err) {
129
- aiLog.warn(`failed to load models for provider ${provider}`, logger_default.errorData(err));
130
- }
148
+ result.push(...getBuiltinModels(provider));
131
149
  }
132
- return models;
150
+ return result;
133
151
  }
134
152
  async function resolveApiKey(providerId) {
135
153
  const ai = getAiConfig();
@@ -150,8 +168,7 @@ async function resolveApiKey(providerId) {
150
168
  aiLog.warn(`OAuth key resolution failed for ${providerId}`, logger_default.errorData(err));
151
169
  }
152
170
  }
153
- if (providerConfig?.apiKey) return providerConfig.apiKey;
154
- return getEnvApiKey(providerId) ?? void 0;
171
+ return resolveProviderKey(providerId, providerConfig?.apiKey);
155
172
  }
156
173
  function qualifyModelId(modelId) {
157
174
  if (modelId.includes(":")) return modelId;
@@ -164,22 +181,13 @@ function unqualifyModelId(modelId) {
164
181
  return idx >= 0 ? modelId.slice(idx + 1) : modelId;
165
182
  }
166
183
  function findModel(modelId) {
167
- const providers = getConfiguredProviders();
168
- for (const provider of providers) {
169
- try {
170
- const model = getModel(provider, modelId);
171
- if (model) return model;
172
- } catch (err) {
173
- aiLog.debug(`model lookup failed for ${modelId} in ${provider}`, logger_default.errorData(err));
174
- }
184
+ for (const provider of getBuiltinProviders()) {
185
+ const model = getBuiltinModel(provider, modelId);
186
+ if (model) return model;
175
187
  }
176
- for (const provider of providers) {
177
- try {
178
- const found = getModels(provider).find((m) => m.id.startsWith(modelId));
179
- if (found) return found;
180
- } catch (err) {
181
- aiLog.debug(`prefix search failed for ${modelId} in ${provider}`, logger_default.errorData(err));
182
- }
188
+ for (const provider of getBuiltinProviders()) {
189
+ const found = getBuiltinModels(provider).find((m) => m.id.startsWith(modelId));
190
+ if (found) return found;
183
191
  }
184
192
  return void 0;
185
193
  }
@@ -201,7 +209,7 @@ async function aiComplete(systemPrompt, userMessage, modelId) {
201
209
  }
202
210
  try {
203
211
  const apiKey = await resolveApiKey(model.provider);
204
- const response = await complete(
212
+ const response = await models.complete(
205
213
  model,
206
214
  {
207
215
  systemPrompt,
package/dist/cli.js CHANGED
@@ -10,7 +10,7 @@ if (!process.env.VOLUTE_HOME) {
10
10
  var command = process.argv[2];
11
11
  var args = process.argv.slice(3);
12
12
  if (command === "--version" || command === "-v") {
13
- const { default: pkg } = await import("./package-6YPVWGD3.js");
13
+ const { default: pkg } = await import("./package-PPA3VWS2.js");
14
14
  console.log(pkg.version);
15
15
  process.exit(0);
16
16
  }
@@ -31,7 +31,7 @@ var ungatedCommands = /* @__PURE__ */ new Set([
31
31
  void 0
32
32
  ]);
33
33
  if (!ungatedCommands.has(command)) {
34
- const { isSetupComplete } = await import("./setup-IL7QJZN4.js");
34
+ const { isSetupComplete } = await import("./setup-OTEC3ZPM.js");
35
35
  if (!isSetupComplete()) {
36
36
  console.error("Volute is not set up. Run `volute setup` first.");
37
37
  process.exit(1);
@@ -39,61 +39,61 @@ if (!ungatedCommands.has(command)) {
39
39
  }
40
40
  switch (command) {
41
41
  case "setup":
42
- await import("./setup-PSA7LJ5U.js").then((m) => m.run(args));
42
+ await import("./setup-W3545462.js").then((m) => m.run(args));
43
43
  break;
44
44
  case "mind":
45
- await import("./mind-PUPXDIYQ.js").then((m) => m.run(args));
45
+ await import("./mind-OOB2LEVC.js").then((m) => m.run(args));
46
46
  break;
47
47
  case "seed":
48
- await import("./seed-cmd-JKDEW4MP.js").then((m) => m.run(args));
48
+ await import("./seed-cmd-VEJNJBAQ.js").then((m) => m.run(args));
49
49
  break;
50
50
  case "chat":
51
- await import("./chat-O5QCGCUG.js").then((m) => m.run(args));
51
+ await import("./chat-F2EEN76G.js").then((m) => m.run(args));
52
52
  break;
53
53
  case "variant":
54
- await import("./variant-HHDTW74J.js").then((m) => m.run(args));
54
+ await import("./variant-5LQOPCQA.js").then((m) => m.run(args));
55
55
  break;
56
56
  case "clock":
57
- await import("./clock-BMLJ2TR6.js").then((m) => m.run(args));
57
+ await import("./clock-YLDJUKBW.js").then((m) => m.run(args));
58
58
  break;
59
59
  case "skill":
60
- await import("./skill-ICN6Y2ZF.js").then((m) => m.run(args));
60
+ await import("./skill-QHACP7EU.js").then((m) => m.run(args));
61
61
  break;
62
62
  case "env":
63
- await import("./env-IQ6Q2333.js").then((m) => m.run(args));
63
+ await import("./env-77IOWG4U.js").then((m) => m.run(args));
64
64
  break;
65
65
  case "config":
66
- await import("./config-QB7W3Z7P.js").then((m) => m.run(args));
66
+ await import("./config-PO4EZLIK.js").then((m) => m.run(args));
67
67
  break;
68
68
  case "up":
69
- await import("./up-4XS3RCPP.js").then((m) => m.run(args));
69
+ await import("./up-PKNNDN6M.js").then((m) => m.run(args));
70
70
  break;
71
71
  case "down":
72
- await import("./down-KIJVZ3OC.js").then((m) => m.run(args));
72
+ await import("./down-6DYO2QV7.js").then((m) => m.run(args));
73
73
  break;
74
74
  case "restart":
75
- await import("./daemon-restart-XHDJDOPQ.js").then((m) => m.run(args));
75
+ await import("./daemon-restart-FSWVXPUE.js").then((m) => m.run(args));
76
76
  break;
77
77
  case "update":
78
- await import("./update-BT2PY73H.js").then((m) => m.run(args));
78
+ await import("./update-OY2JYXYK.js").then((m) => m.run(args));
79
79
  break;
80
80
  case "status":
81
- await import("./status-6GSOSYOD.js").then((m) => m.run(args));
81
+ await import("./status-BRYYYO7C.js").then((m) => m.run(args));
82
82
  break;
83
83
  case "extension":
84
- await import("./extension-LZYHBNLV.js").then((m) => m.run(args));
84
+ await import("./extension-35NB6GHW.js").then((m) => m.run(args));
85
85
  break;
86
86
  case "systems":
87
- await import("./systems-Y2WZV2K4.js").then((m) => m.run(args));
87
+ await import("./systems-3XTAHA35.js").then((m) => m.run(args));
88
88
  break;
89
89
  case "login":
90
- await import("./login-OHM32QVD.js").then((m) => m.run(args));
90
+ await import("./login-Y6UAYQVO.js").then((m) => m.run(args));
91
91
  break;
92
92
  case "logout":
93
- await import("./logout-74WBDMOE.js").then((m) => m.run(args));
93
+ await import("./logout-VHGWVH63.js").then((m) => m.run(args));
94
94
  break;
95
95
  case "service":
96
- await import("./service-AG5BKRUV.js").then((m) => m.run(args));
96
+ await import("./service-WMV6R6VJ.js").then((m) => m.run(args));
97
97
  break;
98
98
  case "--help":
99
99
  case "-h":
@@ -150,7 +150,7 @@ use --mind <name> or VOLUTE_MIND env var to identify the mind.`);
150
150
  default: {
151
151
  let isExtensionCommand = false;
152
152
  try {
153
- const { daemonFetch } = await import("./daemon-client-2MIPKY3E.js");
153
+ const { daemonFetch } = await import("./daemon-client-H6MEKK2W.js");
154
154
  const res = await daemonFetch("/api/extensions/commands");
155
155
  if (res.ok) {
156
156
  const extCommands = await res.json();
@@ -231,7 +231,7 @@ Use --mind <name> or VOLUTE_MIND to specify the mind.
231
231
  mind = cmdArgs[mindIdx + 1];
232
232
  cmdArgs.splice(mindIdx, 2);
233
233
  }
234
- const { readStdin } = await import("./read-stdin-4B5UYPPM.js");
234
+ const { readStdin } = await import("./read-stdin-P6HCZUAA.js");
235
235
  const stdin = await readStdin();
236
236
  const cmdRes = await daemonFetch(`/api/ext/${command}/commands/${subcommand}`, {
237
237
  method: "POST",
@@ -264,7 +264,7 @@ Run 'volute --help' for usage.`);
264
264
  }
265
265
  }
266
266
  if (command !== "update") {
267
- import("./update-check-Y3HBEMF2.js").then((m) => m.checkForUpdate()).then((result) => {
267
+ import("./update-check-IUB7QHAF.js").then((m) => m.checkForUpdate()).then((result) => {
268
268
  if (result.updateAvailable) {
269
269
  console.error(`
270
270
  Update available: ${result.current} \u2192 ${result.latest}`);
@@ -18,7 +18,7 @@ import {
18
18
  subcommands
19
19
  } from "./chunk-TXSA4Q3V.js";
20
20
  import "./chunk-O7IGP7ZW.js";
21
- import "./chunk-K3NQKI34.js";
21
+ import "./chunk-LMMQX4CK.js";
22
22
 
23
23
  // packages/cli/src/commands/clock.ts
24
24
  import { CronExpressionParser } from "cron-parser";
@@ -274,11 +274,11 @@ var cmd = subcommands({
274
274
  },
275
275
  sleep: {
276
276
  description: "Put a mind to sleep",
277
- run: (args) => import("./mind-sleep-ZL5ZXFTM.js").then((m) => m.run(args))
277
+ run: (args) => import("./mind-sleep-PVCMLTAH.js").then((m) => m.run(args))
278
278
  },
279
279
  wake: {
280
280
  description: "Wake a sleeping mind",
281
- run: (args) => import("./mind-wake-HK5ORGUK.js").then((m) => m.run(args))
281
+ run: (args) => import("./mind-wake-HZUOVE7J.js").then((m) => m.run(args))
282
282
  }
283
283
  },
284
284
  footer: "Use --mind <name> or VOLUTE_MIND to identify the mind."
@@ -1,31 +1,32 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  deliverMessage
4
- } from "./chunk-XUJR6NZW.js";
5
- import "./chunk-HAJHDGBV.js";
6
- import "./chunk-WGRMLXTH.js";
4
+ } from "./chunk-ZOI6D2YH.js";
5
+ import "./chunk-ITH5ZLZJ.js";
6
+ import "./chunk-NRJ3ZYFP.js";
7
7
  import "./chunk-46DYYHN6.js";
8
- import "./chunk-T26YLQPU.js";
8
+ import "./chunk-UX7FPDDO.js";
9
9
  import {
10
10
  getAuthHeaders,
11
11
  getWebhookUrl
12
- } from "./chunk-B7YJUWMM.js";
12
+ } from "./chunk-3Y7UDHO7.js";
13
13
  import "./chunk-CU6OFXMM.js";
14
- import "./chunk-PIRL2HAO.js";
15
- import "./chunk-RMZSICLS.js";
16
- import "./chunk-PC55DGNX.js";
17
- import "./chunk-3XSFMN3H.js";
18
- import "./chunk-FBV22PFY.js";
19
- import "./chunk-PGX52NFO.js";
20
- import "./chunk-2AQCEQYN.js";
21
- import "./chunk-PHR4XQPL.js";
22
- import "./chunk-5VBXKFPO.js";
14
+ import "./chunk-KMHC36CA.js";
15
+ import "./chunk-42UMLIQR.js";
16
+ import "./chunk-NERYUSER.js";
17
+ import "./chunk-YMMYN2V3.js";
18
+ import "./chunk-AEAZRTEV.js";
19
+ import "./chunk-6SYHHEQ7.js";
20
+ import "./chunk-ZXPWTH4I.js";
21
+ import "./chunk-DNU6XLE2.js";
22
+ import "./chunk-E25SO3QW.js";
23
+ import "./chunk-QYI65HCL.js";
23
24
  import {
24
25
  logger_default
25
26
  } from "./chunk-T2TP6ZC6.js";
26
- import "./chunk-PDSA3ILI.js";
27
- import "./chunk-MHFAWJCC.js";
28
- import "./chunk-K3NQKI34.js";
27
+ import "./chunk-B4WPXYPI.js";
28
+ import "./chunk-2HZRJ35V.js";
29
+ import "./chunk-LMMQX4CK.js";
29
30
 
30
31
  // packages/daemon/src/lib/cloud-sync.ts
31
32
  var slog = logger_default.child("cloud-sync");
@@ -3,11 +3,11 @@ import {
3
3
  subcommands
4
4
  } from "./chunk-TXSA4Q3V.js";
5
5
  import "./chunk-O7IGP7ZW.js";
6
- import "./chunk-K3NQKI34.js";
6
+ import "./chunk-LMMQX4CK.js";
7
7
 
8
8
  // packages/cli/src/commands/config.ts
9
9
  async function listModels() {
10
- const { daemonFetch } = await import("./daemon-client-2MIPKY3E.js");
10
+ const { daemonFetch } = await import("./daemon-client-H6MEKK2W.js");
11
11
  const res = await daemonFetch("/api/config/models");
12
12
  if (!res.ok) {
13
13
  console.error(`Failed to fetch models (HTTP ${res.status})`);
@@ -24,7 +24,7 @@ async function listModels() {
24
24
  }
25
25
  }
26
26
  async function listProviders() {
27
- const { daemonFetch } = await import("./daemon-client-2MIPKY3E.js");
27
+ const { daemonFetch } = await import("./daemon-client-H6MEKK2W.js");
28
28
  const res = await daemonFetch("/api/config/providers");
29
29
  if (!res.ok) {
30
30
  console.error(`Failed to fetch providers (HTTP ${res.status})`);
@@ -41,7 +41,7 @@ async function listProviders() {
41
41
  }
42
42
  }
43
43
  async function showStatus() {
44
- const { daemonFetch } = await import("./daemon-client-2MIPKY3E.js");
44
+ const { daemonFetch } = await import("./daemon-client-H6MEKK2W.js");
45
45
  const res = await daemonFetch("/api/config/status");
46
46
  if (!res.ok) {
47
47
  console.error(`Failed to fetch config (HTTP ${res.status})`);
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  slugify
9
9
  } from "../chunk-LGNUFVMR.js";
10
- import "../chunk-K3NQKI34.js";
10
+ import "../chunk-LMMQX4CK.js";
11
11
 
12
12
  // packages/daemon/src/lib/bridges/discord-bridge.ts
13
13
  import { Client, Events, GatewayIntentBits, Partials } from "discord.js";
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  slugify
9
9
  } from "../chunk-LGNUFVMR.js";
10
- import "../chunk-K3NQKI34.js";
10
+ import "../chunk-LMMQX4CK.js";
11
11
 
12
12
  // packages/daemon/src/lib/bridges/slack-bridge.ts
13
13
  import { App } from "@slack/bolt";
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  slugify
9
9
  } from "../chunk-LGNUFVMR.js";
10
- import "../chunk-K3NQKI34.js";
10
+ import "../chunk-LMMQX4CK.js";
11
11
 
12
12
  // packages/daemon/src/lib/bridges/telegram-bridge.ts
13
13
  import { Telegraf } from "telegraf";
@@ -29,12 +29,12 @@ import {
29
29
  removeParticipant,
30
30
  setConversationPrivate,
31
31
  updateChannelSettings
32
- } from "./chunk-B7YJUWMM.js";
33
- import "./chunk-5VBXKFPO.js";
32
+ } from "./chunk-3Y7UDHO7.js";
33
+ import "./chunk-QYI65HCL.js";
34
34
  import "./chunk-T2TP6ZC6.js";
35
- import "./chunk-PDSA3ILI.js";
36
- import "./chunk-MHFAWJCC.js";
37
- import "./chunk-K3NQKI34.js";
35
+ import "./chunk-B4WPXYPI.js";
36
+ import "./chunk-2HZRJ35V.js";
37
+ import "./chunk-LMMQX4CK.js";
38
38
  export {
39
39
  addMessage,
40
40
  addParticipant,
@@ -3,7 +3,7 @@ import {
3
3
  command
4
4
  } from "./chunk-TXSA4Q3V.js";
5
5
  import "./chunk-O7IGP7ZW.js";
6
- import "./chunk-K3NQKI34.js";
6
+ import "./chunk-LMMQX4CK.js";
7
7
 
8
8
  // packages/cli/src/commands/create.ts
9
9
  var cmd = command({
@@ -21,12 +21,12 @@ var cmd = command({
21
21
  const name = args.name;
22
22
  let template = flags.template;
23
23
  if (!template) {
24
- const { resolveTemplate } = await import("./ai-service-JMV4KZN4.js");
25
- template = resolveTemplate();
24
+ const { resolveTemplate } = await import("./ai-service-EVLKMAJD.js");
25
+ template = await resolveTemplate();
26
26
  }
27
27
  const skills = flags.skills === "none" ? [] : flags.skills ? flags.skills.split(",") : void 0;
28
- const { daemonFetch } = await import("./daemon-client-2MIPKY3E.js");
29
- const { getClient, urlOf } = await import("./api-client-LC5YRA32.js");
28
+ const { daemonFetch } = await import("./daemon-client-H6MEKK2W.js");
29
+ const { getClient, urlOf } = await import("./api-client-NFM6GX2N.js");
30
30
  const client = getClient();
31
31
  const res = await daemonFetch(urlOf(client.api.minds.$url()), {
32
32
  method: "POST",
@@ -9,7 +9,7 @@ import {
9
9
  command
10
10
  } from "./chunk-TXSA4Q3V.js";
11
11
  import "./chunk-O7IGP7ZW.js";
12
- import "./chunk-K3NQKI34.js";
12
+ import "./chunk-LMMQX4CK.js";
13
13
 
14
14
  // packages/cli/src/commands/chat/create.ts
15
15
  var cmd = command({
@@ -4,7 +4,7 @@ import {
4
4
  readSessionFile,
5
5
  resolveDaemonUrl
6
6
  } from "./chunk-ZX7EAV5J.js";
7
- import "./chunk-K3NQKI34.js";
7
+ import "./chunk-LMMQX4CK.js";
8
8
  export {
9
9
  daemonFetch,
10
10
  readSessionFile,
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  stopDaemon
4
- } from "./chunk-SOPMVTTW.js";
4
+ } from "./chunk-JYQQDI3M.js";
5
5
  import {
6
6
  run
7
- } from "./chunk-43PVCF4V.js";
7
+ } from "./chunk-PEKG3GNZ.js";
8
8
  import {
9
9
  command
10
10
  } from "./chunk-TXSA4Q3V.js";
@@ -15,13 +15,13 @@ import {
15
15
  pollHealth,
16
16
  readDaemonConfig,
17
17
  restartService
18
- } from "./chunk-SGC6CDXB.js";
19
- import "./chunk-3XSFMN3H.js";
20
- import "./chunk-FBV22PFY.js";
21
- import "./chunk-2AQCEQYN.js";
22
- import "./chunk-PDSA3ILI.js";
23
- import "./chunk-MHFAWJCC.js";
24
- import "./chunk-K3NQKI34.js";
18
+ } from "./chunk-4UMXOMZ6.js";
19
+ import "./chunk-AEAZRTEV.js";
20
+ import "./chunk-6SYHHEQ7.js";
21
+ import "./chunk-DNU6XLE2.js";
22
+ import "./chunk-B4WPXYPI.js";
23
+ import "./chunk-2HZRJ35V.js";
24
+ import "./chunk-LMMQX4CK.js";
25
25
 
26
26
  // src/commands/daemon-restart.ts
27
27
  var cmd = command({