volute 0.35.0 → 0.37.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 (167) hide show
  1. package/dist/{accept-ZBDVVCEU.js → accept-AHAOUFBK.js} +4 -4
  2. package/dist/activity-events-N6HCHU4P.js +15 -0
  3. package/dist/{ai-service-LURBEDDB.js → ai-service-C2YNARGH.js} +6 -6
  4. package/dist/{api-client-3A77HMH7.js → api-client-LC5YRA32.js} +1 -1
  5. package/dist/{archive-ESU2FUN4.js → archive-AWIJTVQV.js} +4 -4
  6. package/dist/{auth-WX4TESEI.js → auth-2QOOPMBX.js} +6 -6
  7. package/dist/{bridge-PXIO6PS2.js → bridge-F3ZJEKDN.js} +4 -4
  8. package/dist/{chat-QXAJF3FU.js → chat-5Y4FD77E.js} +9 -9
  9. package/dist/{chunk-BDYXIWA5.js → chunk-2NHRJ3YO.js} +13 -2
  10. package/dist/{chunk-AN2W47GW.js → chunk-3F7XK5Q7.js} +2 -2
  11. package/dist/{chunk-AOB6GVRM.js → chunk-46DYYHN6.js} +8 -3
  12. package/dist/{chunk-WZRZFFCL.js → chunk-5DPRTREW.js} +146 -186
  13. package/dist/{chunk-QWTR6AWZ.js → chunk-7AZQFSOV.js} +2 -2
  14. package/dist/{chunk-BMZQYACC.js → chunk-A6FLW5XD.js} +19 -4
  15. package/dist/{chunk-N5LMGYXX.js → chunk-BIEWHAAM.js} +2 -2
  16. package/dist/{chunk-5N7Y5WAM.js → chunk-CJ26DXZL.js} +29 -13
  17. package/dist/{chunk-ZSR72JB3.js → chunk-CU6OFXMM.js} +1 -1
  18. package/dist/{chunk-N446KRP7.js → chunk-GVVVMZ4J.js} +2 -2
  19. package/dist/chunk-K3NQKI34.js +10 -0
  20. package/dist/{chunk-F7ZNLYKZ.js → chunk-KAB6UGOL.js} +2 -2
  21. package/dist/{chunk-WJPROOU5.js → chunk-KBRGHKVU.js} +681 -3726
  22. package/dist/{chunk-PWQ2ITYG.js → chunk-KXXJYY62.js} +6 -6
  23. package/dist/{chunk-NJK5SDGR.js → chunk-LGNUFVMR.js} +1 -1
  24. package/dist/chunk-LQ6Z4FXN.js +87 -0
  25. package/dist/{chunk-J6CJQDWI.js → chunk-MQRS4J24.js} +2 -2
  26. package/dist/{chunk-CORXD635.js → chunk-N42QMDID.js} +3 -3
  27. package/dist/{chunk-IJHIXLVN.js → chunk-NYP3LBIV.js} +15 -13
  28. package/dist/{chunk-FT5KETXZ.js → chunk-ORNY3MZR.js} +4 -4
  29. package/dist/{chunk-A2ZLHBHG.js → chunk-PMMHVSCR.js} +2 -2
  30. package/dist/chunk-QQQI6ISK.js +853 -0
  31. package/dist/chunk-RG5TOL4O.js +18 -0
  32. package/dist/{chunk-VHJRZM2S.js → chunk-SNW2NPP4.js} +2 -2
  33. package/dist/chunk-SZJWC2GA.js +125 -0
  34. package/dist/{chunk-BKF4WQCY.js → chunk-T2TP6ZC6.js} +20 -8
  35. package/dist/{chunk-2TGZJFAT.js → chunk-TNZ5XQA4.js} +3 -3
  36. package/dist/{chunk-QCH6K235.js → chunk-UI7RPV2B.js} +1 -1
  37. package/dist/{chunk-XRQSAMX2.js → chunk-UIM5NHPP.js} +3 -3
  38. package/dist/{chunk-5XJYUFZH.js → chunk-UQFYNZKT.js} +76 -30
  39. package/dist/{chunk-OTC67N2Z.js → chunk-WC635OPK.js} +1 -1
  40. package/dist/{chunk-BV65KRHM.js → chunk-XLBQYIHH.js} +2 -2
  41. package/dist/{chunk-VY3RB2V7.js → chunk-Z6TIXE77.js} +3 -3
  42. package/dist/cli.js +24 -24
  43. package/dist/{clock-HSEKS5AR.js → clock-BMLJ2TR6.js} +8 -8
  44. package/dist/{cloud-sync-6JL4C24T.js → cloud-sync-OIX576NA.js} +20 -21
  45. package/dist/{config-UTS7QULS.js → config-QB7W3Z7P.js} +4 -4
  46. package/dist/connectors/discord-bridge.js +4 -4
  47. package/dist/connectors/slack-bridge.js +4 -4
  48. package/dist/connectors/telegram-bridge.js +4 -4
  49. package/dist/{conversations-2PW57WO2.js → conversations-G6YRSABR.js} +16 -10
  50. package/dist/{create-5BPOOJAN.js → create-C3BBFYV7.js} +4 -4
  51. package/dist/{create-UVCK2CS6.js → create-PN73742N.js} +4 -4
  52. package/dist/{daemon-client-RVIKXGFQ.js → daemon-client-2MIPKY3E.js} +1 -1
  53. package/dist/{daemon-restart-HSZ3BCX5.js → daemon-restart-L2O6L7NR.js} +9 -9
  54. package/dist/daemon.js +690 -1281
  55. package/dist/db-CBOCDYVA.js +9 -0
  56. package/dist/{db-BDMH4SZ2.js → db-IJL6B26S.js} +1 -1
  57. package/dist/{delete-L5PAVDGQ.js → delete-NLXES2C7.js} +3 -3
  58. package/dist/delivery-manager-4PVBUZJB.js +30 -0
  59. package/dist/{delivery-router-HEJSJAHQ.js → delivery-router-QTFEZ26O.js} +5 -5
  60. package/dist/down-25L2RKCQ.js +17 -0
  61. package/dist/echo-text-T5ZLGMA7.js +31 -0
  62. package/dist/{env-E4XHO2BI.js → env-IQ6Q2333.js} +6 -6
  63. package/dist/exec-ONYZEA5B.js +17 -0
  64. package/dist/{export-OAS6QVBN.js → export-JPDBQESV.js} +6 -6
  65. package/dist/{extension-D74CNM7G.js → extension-LZYHBNLV.js} +26 -7
  66. package/dist/extensions-CLYXNGYB.js +50 -0
  67. package/dist/{files-CWTK6V3H.js → files-LAQ3NXQK.js} +7 -7
  68. package/dist/{import-5A3T7QV4.js → import-EROF27RH.js} +12 -11
  69. package/dist/{isolation-TK5RX2WM.js → isolation-G5J3MTKU.js} +4 -4
  70. package/dist/{join-DF5XSJAC.js → join-6SZCA5FX.js} +3 -3
  71. package/dist/{list-PDMQM7ZV.js → list-KHJZJPEJ.js} +11 -5
  72. package/dist/{login-7TE6CIZF.js → login-F6YMAVLE.js} +6 -6
  73. package/dist/{login-GOTAYLXP.js → login-GYTH67ES.js} +4 -4
  74. package/dist/{logout-T4XS6LRU.js → logout-HHPH52KZ.js} +6 -6
  75. package/dist/{logout-6KIA74EV.js → logout-YHQLOFLR.js} +4 -4
  76. package/dist/message-delivery-N2V5APCS.js +40 -0
  77. package/dist/{mind-5IEYKV7I.js → mind-M57ET546.js} +19 -19
  78. package/dist/mind-activity-tracker-42ENM32S.js +18 -0
  79. package/dist/{mind-history-IE2QH7U5.js → mind-history-WHCNZ6I5.js} +86 -19
  80. package/dist/{mind-list-GEWHWAL4.js → mind-list-H3HC2ZRG.js} +4 -4
  81. package/dist/mind-manager-LS2AIXHQ.js +30 -0
  82. package/dist/{mind-profile-DCBDVF5B.js → mind-profile-7VYRJGFZ.js} +2 -2
  83. package/dist/mind-service-UDXF5WC2.js +36 -0
  84. package/dist/{mind-sleep-ITCF6OQA.js → mind-sleep-ZL5ZXFTM.js} +4 -4
  85. package/dist/{mind-status-X4SX3YUG.js → mind-status-ZWULKOUO.js} +4 -4
  86. package/dist/{mind-wake-KXMKMGWX.js → mind-wake-HK5ORGUK.js} +4 -4
  87. package/dist/{package-D2FSVFAX.js → package-5FGU5QNP.js} +6 -6
  88. package/dist/{read-67VRP2DO.js → read-CP7MYMJQ.js} +8 -8
  89. package/dist/{read-stdin-3X5VYKNS.js → read-stdin-4B5UYPPM.js} +1 -1
  90. package/dist/{register-SB7NXCOE.js → register-XOBFEMI4.js} +4 -4
  91. package/dist/{registry-GBSNW3HG.js → registry-KMELPC3X.js} +3 -3
  92. package/dist/{reject-MUR2KWJ4.js → reject-43AGXB6B.js} +4 -4
  93. package/dist/{restart-5EGG4JXU.js → restart-O5QIYQJT.js} +5 -5
  94. package/dist/{sandbox-R37VIU36.js → sandbox-PQYEICEF.js} +6 -6
  95. package/dist/scheduler-NTC74JYH.js +30 -0
  96. package/dist/{schema-XVZ2CLKW.js → schema-K575EBPE.js} +4 -2
  97. package/dist/{seed-EQORWX77.js → seed-55VC3A57.js} +2 -2
  98. package/dist/{seed-check-KJNTL72M.js → seed-check-HZPVFJKZ.js} +2 -2
  99. package/dist/{seed-cmd-ZM2XGVU2.js → seed-cmd-2KOEQZK6.js} +4 -4
  100. package/dist/{seed-create-DRWGGHEI.js → seed-create-Y2Z5JWBB.js} +6 -6
  101. package/dist/{seed-sprout-JYXGXOP3.js → seed-sprout-OLSIWXZN.js} +15 -15
  102. package/dist/{send-JBJJQ7CA.js → send-7CIP5GLS.js} +8 -8
  103. package/dist/{service-WNPCNHOX.js → service-YMHWPDXW.js} +6 -6
  104. package/dist/{setup-BJ4YAY26.js → setup-6Z34JJEB.js} +32 -37
  105. package/dist/{setup-RHJRFURI.js → setup-PF7JSFMO.js} +6 -4
  106. package/dist/{skill-TAAKEYBV.js → skill-ICN6Y2ZF.js} +6 -6
  107. package/dist/skills/tending/SKILL.md +52 -0
  108. package/dist/{skills-EKMCQ46K.js → skills-FDMLJGZ3.js} +8 -8
  109. package/dist/sleep-manager-TQP5ZJI5.js +34 -0
  110. package/dist/spirit-SM6ARJ2N.js +24 -0
  111. package/dist/{split-AWVOYOPZ.js → split-5YBEQTBF.js} +3 -3
  112. package/dist/{sprout-HE4TITMK.js → sprout-G6G57IOY.js} +2 -2
  113. package/dist/src-LT6ZBYYX.js +2133 -0
  114. package/dist/src-O4PRLMKM.js +425 -0
  115. package/dist/src-OYWRPLC6.js +617 -0
  116. package/dist/{start-3UXOPXQG.js → start-LMXXRR3X.js} +5 -5
  117. package/dist/{status-ZK34WYIM.js → status-MC2P7DBG.js} +7 -7
  118. package/dist/{stop-3XYIBGFM.js → stop-TWDKVEUX.js} +5 -5
  119. package/dist/system-chat-NNXYCSVL.js +34 -0
  120. package/dist/{systems-O43WGQY6.js → systems-Y2WZV2K4.js} +7 -7
  121. package/dist/{tailscale-ZIZ2HWJ5.js → tailscale-LTYNKIPZ.js} +4 -4
  122. package/dist/template-hash-SSIBEEYK.js +9 -0
  123. package/dist/up-5JXV6BZS.js +19 -0
  124. package/dist/{update-ANE5ZM7F.js → update-UOP2INF2.js} +7 -7
  125. package/dist/{update-check-UV55CBEP.js → update-check-IKS7SGK5.js} +4 -4
  126. package/dist/{upgrade-ZMDGC7M2.js → upgrade-RXFZR5FI.js} +3 -3
  127. package/dist/{variant-QWL2WSRI.js → variant-HHDTW74J.js} +1 -1
  128. package/dist/{version-notify-FXSEMXWW.js → version-notify-CSE4NBYM.js} +22 -23
  129. package/dist/{volute-config-D2XVS2YI.js → volute-config-TS62GS6A.js} +2 -2
  130. package/dist/web-assets/assets/index-B3xLeex8.js +75 -0
  131. package/dist/web-assets/assets/index-Dr4A90Lo.css +1 -0
  132. package/dist/web-assets/index.html +2 -2
  133. package/drizzle/0006_channels.sql +17 -0
  134. package/drizzle/0007_drop_conversation_name_title.sql +11 -0
  135. package/drizzle/0008_performance_indexes.sql +6 -0
  136. package/drizzle/meta/0006_snapshot.json +7 -0
  137. package/drizzle/meta/0007_snapshot.json +7 -0
  138. package/drizzle/meta/_journal.json +21 -0
  139. package/package.json +5 -5
  140. package/templates/_base/home/.config/routes.json +2 -2
  141. package/templates/_base/home/VOLUTE.md +1 -2
  142. package/templates/_base/src/lib/context-breakdown.ts +22 -16
  143. package/templates/_base/src/lib/format-prefix.ts +1 -7
  144. package/templates/claude/.init/.config/routes.json +2 -2
  145. package/templates/codex/.init/.config/routes.json +2 -2
  146. package/templates/pi/.init/.config/routes.json +2 -2
  147. package/dist/activity-events-ZW4SDL2C.js +0 -15
  148. package/dist/chunk-7KJOFUNN.js +0 -22
  149. package/dist/chunk-MDJGMOSD.js +0 -207
  150. package/dist/db-BVBJ57TU.js +0 -9
  151. package/dist/delivery-manager-H5ZVBMCQ.js +0 -31
  152. package/dist/down-74VXM45A.js +0 -17
  153. package/dist/exec-PY7THYH4.js +0 -17
  154. package/dist/extensions-XDDFY72A.js +0 -49
  155. package/dist/lib-DYEZMGW7.js +0 -6588
  156. package/dist/message-delivery-GRC4W6P7.js +0 -41
  157. package/dist/mind-activity-tracker-QBLIV7ZJ.js +0 -18
  158. package/dist/mind-manager-HFLB5653.js +0 -31
  159. package/dist/mind-service-X2CAA6W6.js +0 -37
  160. package/dist/scheduler-Y7O4CJXL.js +0 -31
  161. package/dist/sleep-manager-7KFK3USC.js +0 -35
  162. package/dist/spirit-ZFRDXMG7.js +0 -23
  163. package/dist/system-chat-IDPHYHY4.js +0 -35
  164. package/dist/template-hash-A7FNHTB7.js +0 -9
  165. package/dist/up-77ICEDEW.js +0 -19
  166. package/dist/web-assets/assets/index-BhxWKvbB.css +0 -1
  167. package/dist/web-assets/assets/index-CHVKJ9II.js +0 -75
@@ -1,19 +1,19 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- logger_default
4
- } from "./chunk-BKF4WQCY.js";
5
2
  import {
6
3
  readGlobalConfig
7
- } from "./chunk-BMZQYACC.js";
4
+ } from "./chunk-A6FLW5XD.js";
5
+ import {
6
+ logger_default
7
+ } from "./chunk-T2TP6ZC6.js";
8
8
  import {
9
9
  getBaseName,
10
10
  readRegistry,
11
11
  voluteHome,
12
12
  voluteSystemDir,
13
13
  voluteUserHome
14
- } from "./chunk-BDYXIWA5.js";
14
+ } from "./chunk-2NHRJ3YO.js";
15
15
 
16
- // packages/daemon/src/lib/sandbox.ts
16
+ // packages/daemon/src/lib/mind/sandbox.ts
17
17
  import { resolve } from "path";
18
18
  var slog = logger_default.child("sandbox");
19
19
  var sandboxManager = null;
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- // packages/daemon/src/lib/slugify.ts
3
+ // packages/daemon/src/lib/util/slugify.ts
4
4
  function slugify(text) {
5
5
  return text.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/-+/g, "-").replace(/^-|-$/g, "");
6
6
  }
@@ -0,0 +1,87 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ logger_default
4
+ } from "./chunk-T2TP6ZC6.js";
5
+ import {
6
+ voluteSystemDir
7
+ } from "./chunk-2NHRJ3YO.js";
8
+
9
+ // packages/daemon/src/lib/bridges/bridges.ts
10
+ import { existsSync, readFileSync, writeFileSync } from "fs";
11
+ import { resolve } from "path";
12
+ function bridgesPath() {
13
+ return resolve(voluteSystemDir(), "bridges.json");
14
+ }
15
+ function readBridgesConfig() {
16
+ const path = bridgesPath();
17
+ if (!existsSync(path)) return {};
18
+ try {
19
+ return JSON.parse(readFileSync(path, "utf-8"));
20
+ } catch (err) {
21
+ logger_default.error(
22
+ `bridges.json is corrupt or unreadable at ${path} \u2014 all bridges disabled`,
23
+ logger_default.errorData(err)
24
+ );
25
+ return {};
26
+ }
27
+ }
28
+ function writeBridgesConfig(config) {
29
+ writeFileSync(bridgesPath(), `${JSON.stringify(config, null, 2)}
30
+ `, { mode: 384 });
31
+ }
32
+ function getBridgeConfig(platform) {
33
+ const config = readBridgesConfig();
34
+ return config[platform] ?? null;
35
+ }
36
+ function setBridgeConfig(platform, bridge) {
37
+ const config = readBridgesConfig();
38
+ config[platform] = bridge;
39
+ writeBridgesConfig(config);
40
+ }
41
+ function removeBridgeConfig(platform) {
42
+ const config = readBridgesConfig();
43
+ delete config[platform];
44
+ writeBridgesConfig(config);
45
+ }
46
+ function setChannelMapping(platform, externalChannel, voluteChannel) {
47
+ const config = readBridgesConfig();
48
+ const bridge = config[platform];
49
+ if (!bridge) throw new Error(`Bridge not configured for ${platform}`);
50
+ bridge.channelMappings[externalChannel] = voluteChannel;
51
+ writeBridgesConfig(config);
52
+ }
53
+ function removeChannelMapping(platform, externalChannel) {
54
+ const config = readBridgesConfig();
55
+ const bridge = config[platform];
56
+ if (!bridge) return;
57
+ delete bridge.channelMappings[externalChannel];
58
+ writeBridgesConfig(config);
59
+ }
60
+ function resolveChannelMapping(platform, externalChannel) {
61
+ const bridge = getBridgeConfig(platform);
62
+ if (!bridge) return null;
63
+ return bridge.channelMappings[externalChannel] ?? null;
64
+ }
65
+ function findBridgeForChannel(voluteChannelName) {
66
+ const config = readBridgesConfig();
67
+ for (const [platform, bridge] of Object.entries(config)) {
68
+ if (!bridge.enabled) continue;
69
+ for (const [external, volute] of Object.entries(bridge.channelMappings)) {
70
+ if (volute === voluteChannelName) {
71
+ return { platform, externalChannel: external };
72
+ }
73
+ }
74
+ }
75
+ return null;
76
+ }
77
+
78
+ export {
79
+ readBridgesConfig,
80
+ getBridgeConfig,
81
+ setBridgeConfig,
82
+ removeBridgeConfig,
83
+ setChannelMapping,
84
+ removeChannelMapping,
85
+ resolveChannelMapping,
86
+ findBridgeForChannel
87
+ };
@@ -5,13 +5,13 @@ import {
5
5
  pollHealthDown,
6
6
  readDaemonConfig,
7
7
  stopService
8
- } from "./chunk-2TGZJFAT.js";
8
+ } from "./chunk-TNZ5XQA4.js";
9
9
  import {
10
10
  command
11
11
  } from "./chunk-TXSA4Q3V.js";
12
12
  import {
13
13
  voluteSystemDir
14
- } from "./chunk-BDYXIWA5.js";
14
+ } from "./chunk-2NHRJ3YO.js";
15
15
 
16
16
  // src/commands/down.ts
17
17
  import { existsSync, readFileSync, unlinkSync } from "fs";
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  logger_default
4
- } from "./chunk-BKF4WQCY.js";
4
+ } from "./chunk-T2TP6ZC6.js";
5
5
  import {
6
6
  getDb
7
- } from "./chunk-BDYXIWA5.js";
7
+ } from "./chunk-2NHRJ3YO.js";
8
8
  import {
9
9
  activity
10
- } from "./chunk-5N7Y5WAM.js";
10
+ } from "./chunk-CJ26DXZL.js";
11
11
 
12
12
  // packages/daemon/src/lib/events/activity-events.ts
13
13
  var subscribers = /* @__PURE__ */ new Set();
@@ -1,24 +1,24 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- logger_default
4
- } from "./chunk-BKF4WQCY.js";
5
2
  import {
6
3
  exec,
7
4
  gitExec
8
- } from "./chunk-AN2W47GW.js";
5
+ } from "./chunk-3F7XK5Q7.js";
9
6
  import {
10
7
  readGlobalConfig,
11
8
  writeGlobalConfig
12
- } from "./chunk-BMZQYACC.js";
9
+ } from "./chunk-A6FLW5XD.js";
10
+ import {
11
+ logger_default
12
+ } from "./chunk-T2TP6ZC6.js";
13
13
  import {
14
14
  getDb,
15
15
  mindDir,
16
16
  readRegistry,
17
17
  voluteHome
18
- } from "./chunk-BDYXIWA5.js";
18
+ } from "./chunk-2NHRJ3YO.js";
19
19
  import {
20
20
  sharedSkills
21
- } from "./chunk-5N7Y5WAM.js";
21
+ } from "./chunk-CJ26DXZL.js";
22
22
 
23
23
  // packages/daemon/src/lib/skills.ts
24
24
  import { createHash } from "crypto";
@@ -46,7 +46,7 @@ async function initDefaultSkills() {
46
46
  const config = readGlobalConfig();
47
47
  let extensionSkills = [];
48
48
  try {
49
- const { getExtensionStandardSkills } = await import("./extensions-XDDFY72A.js");
49
+ const { getExtensionStandardSkills } = await import("./extensions-CLYXNGYB.js");
50
50
  extensionSkills = getExtensionStandardSkills();
51
51
  } catch (err) {
52
52
  logger_default.warn("failed to load extension standard skills during init", logger_default.errorData(err));
@@ -206,7 +206,7 @@ async function installSkill(_mindName, dir, skillId) {
206
206
  const npmInstalled = [];
207
207
  const skillMdPath = join(sourceDir, "SKILL.md");
208
208
  if (existsSync(skillMdPath)) {
209
- const { npmDependencies } = parseSkillMd(readFileSync(skillMdPath, "utf-8"));
209
+ const { npmDependencies, hooks, bin } = parseSkillMd(readFileSync(skillMdPath, "utf-8"));
210
210
  if (npmDependencies.length > 0) {
211
211
  try {
212
212
  await exec("npm", ["install", ...npmDependencies], { cwd: dir });
@@ -219,9 +219,6 @@ async function installSkill(_mindName, dir, skillId) {
219
219
  );
220
220
  }
221
221
  }
222
- }
223
- if (existsSync(skillMdPath)) {
224
- const { hooks, bin } = parseSkillMd(readFileSync(skillMdPath, "utf-8"));
225
222
  installHookShims(dir, skillId, hooks);
226
223
  if (bin) installBinShim(dir, skillId, bin);
227
224
  }
@@ -506,11 +503,16 @@ function listFilesRecursive(dir, prefix = "") {
506
503
  }
507
504
  return results;
508
505
  }
506
+ var _skillsRoot = null;
509
507
  function findSkillsRoot() {
508
+ if (_skillsRoot) return _skillsRoot;
510
509
  let dir = dirname(new URL(import.meta.url).pathname);
511
510
  for (let i = 0; i < 5; i++) {
512
511
  const candidate = resolve(dir, "skills");
513
- if (existsSync(candidate) && hasSkillSubdir(candidate)) return candidate;
512
+ if (existsSync(candidate) && hasSkillSubdir(candidate)) {
513
+ _skillsRoot = candidate;
514
+ return _skillsRoot;
515
+ }
514
516
  dir = dirname(dir);
515
517
  }
516
518
  throw new Error("Skills directory not found");
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- logger_default
4
- } from "./chunk-BKF4WQCY.js";
5
2
  import {
6
3
  readGlobalConfig,
7
4
  writeGlobalConfig
8
- } from "./chunk-BMZQYACC.js";
5
+ } from "./chunk-A6FLW5XD.js";
6
+ import {
7
+ logger_default
8
+ } from "./chunk-T2TP6ZC6.js";
9
9
 
10
10
  // packages/daemon/src/lib/ai-service.ts
11
11
  import { complete, getEnvApiKey, getModel, getModels, getProviders } from "@mariozechner/pi-ai";
@@ -2,9 +2,9 @@
2
2
  import {
3
3
  stateDir,
4
4
  voluteSystemDir
5
- } from "./chunk-BDYXIWA5.js";
5
+ } from "./chunk-2NHRJ3YO.js";
6
6
 
7
- // packages/daemon/src/lib/env.ts
7
+ // packages/daemon/src/lib/config/env.ts
8
8
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
9
9
  import { dirname, resolve } from "path";
10
10
  function sharedEnvPath() {