volute 0.39.0 → 0.40.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 (108) hide show
  1. package/dist/{activity-events-CR4RIHJT.js → activity-events-OJZ7G5CG.js} +3 -3
  2. package/dist/{ai-service-PL7GKFQC.js → ai-service-JMV4KZN4.js} +8 -4
  3. package/dist/{archive-UEWIFRAR.js → archive-BC2MTNPV.js} +3 -3
  4. package/dist/{auth-OJ2YW3NR.js → auth-2IMZ6N5G.js} +4 -4
  5. package/dist/{chat-RQ5NV5EA.js → chat-O5QCGCUG.js} +2 -2
  6. package/dist/{chunk-TCNCRDB5.js → chunk-2AQCEQYN.js} +1 -1
  7. package/dist/{chunk-OEXOFBW5.js → chunk-3XSFMN3H.js} +1 -1
  8. package/dist/{chunk-7OS7QFDF.js → chunk-43PVCF4V.js} +3 -3
  9. package/dist/{chunk-7GZB3ZJP.js → chunk-5VBXKFPO.js} +2 -2
  10. package/dist/{chunk-IA2SZSLB.js → chunk-76Q6YLJL.js} +1 -1
  11. package/dist/{chunk-QDWPM73D.js → chunk-B7YJUWMM.js} +3 -3
  12. package/dist/{chunk-TT4WT6Y7.js → chunk-DNQPHLGM.js} +1 -1
  13. package/dist/{chunk-6FSSMAXU.js → chunk-FBV22PFY.js} +1 -1
  14. package/dist/{chunk-RAVQXKAG.js → chunk-FRJ73IWR.js} +1 -1
  15. package/dist/{chunk-WUH54G5S.js → chunk-HAJHDGBV.js} +1 -1
  16. package/dist/{chunk-X7GM2OPM.js → chunk-HEZM5GCV.js} +2 -2
  17. package/dist/{chunk-4BO4I7UF.js → chunk-JSITYTIL.js} +6 -6
  18. package/dist/{chunk-CJ26DXZL.js → chunk-MHFAWJCC.js} +16 -0
  19. package/dist/{chunk-OS5MRIEP.js → chunk-PC55DGNX.js} +1 -1
  20. package/dist/{chunk-QDWP435B.js → chunk-PDSA3ILI.js} +1 -1
  21. package/dist/{chunk-B7MWXFAH.js → chunk-PGX52NFO.js} +15 -1
  22. package/dist/{chunk-7W3UWCQD.js → chunk-PHR4XQPL.js} +3 -3
  23. package/dist/{chunk-EVKGKQ2P.js → chunk-PIRL2HAO.js} +1 -7
  24. package/dist/{chunk-Y5UC6G3O.js → chunk-PZTVQL3J.js} +2 -2
  25. package/dist/{chunk-DZ4LYU6J.js → chunk-RMZSICLS.js} +1 -1
  26. package/dist/{chunk-XOSAY7PY.js → chunk-S4YO5OWV.js} +1 -1
  27. package/dist/{chunk-6V2U3GFQ.js → chunk-SGC6CDXB.js} +2 -2
  28. package/dist/{chunk-QJ4GU5XT.js → chunk-SOPMVTTW.js} +2 -2
  29. package/dist/{chunk-IBOU6Q3Y.js → chunk-T26YLQPU.js} +5 -5
  30. package/dist/{chunk-Y4W3OS7Q.js → chunk-WGRMLXTH.js} +8 -8
  31. package/dist/{chunk-CHCISTH7.js → chunk-XUJR6NZW.js} +508 -332
  32. package/dist/cli.js +15 -15
  33. package/dist/{cloud-sync-NQCWJLYI.js → cloud-sync-5JF2Z7VM.js} +16 -16
  34. package/dist/{conversations-EUXHBWJD.js → conversations-LUVHGQSS.js} +4 -4
  35. package/dist/{create-3QH7DVLC.js → create-TDQM3SHV.js} +1 -1
  36. package/dist/{daemon-restart-UEB3PLKB.js → daemon-restart-XHDJDOPQ.js} +8 -8
  37. package/dist/daemon.js +219 -116
  38. package/dist/{db-32YFKMFL.js → db-2GIS7HSG.js} +2 -2
  39. package/dist/delivery-manager-L5WFP2ND.js +30 -0
  40. package/dist/{delivery-router-EUW4RIWG.js → delivery-router-IU4OMVKZ.js} +3 -3
  41. package/dist/down-KIJVZ3OC.js +17 -0
  42. package/dist/echo-text-TJWCUBPB.js +31 -0
  43. package/dist/{exec-2MFHTGOS.js → exec-BGMU7VXR.js} +4 -4
  44. package/dist/{export-JDAK3THX.js → export-RKUWSQSG.js} +3 -3
  45. package/dist/{extensions-V7TXKAKM.js → extensions-VN5SEVRP.js} +16 -16
  46. package/dist/{files-K5XV23H6.js → files-J2CKZ6PK.js} +3 -3
  47. package/dist/{import-GZ5IYVV7.js → import-KVY6BYXG.js} +6 -6
  48. package/dist/{isolation-FPF4UTH2.js → isolation-MM7YHK6J.js} +3 -3
  49. package/dist/{login-BGF5JY3I.js → login-OHM32QVD.js} +2 -2
  50. package/dist/{logout-GQHI6KH6.js → logout-74WBDMOE.js} +2 -2
  51. package/dist/{message-delivery-X7MKA3TA.js → message-delivery-VBBAJX3J.js} +16 -16
  52. package/dist/{mind-QMJIWWWW.js → mind-PUPXDIYQ.js} +5 -5
  53. package/dist/{mind-activity-tracker-Z3KBQTVU.js → mind-activity-tracker-7GE24YZE.js} +4 -4
  54. package/dist/mind-manager-4Q6KGZHL.js +30 -0
  55. package/dist/mind-service-7OD4PRO5.js +36 -0
  56. package/dist/{package-IR4ZEQA2.js → package-6YPVWGD3.js} +1 -1
  57. package/dist/{registry-LWEOAO53.js → registry-L272BZJR.js} +2 -2
  58. package/dist/{sandbox-KUAVC37A.js → sandbox-BQAFYHLE.js} +4 -4
  59. package/dist/scheduler-7E22Q7IC.js +30 -0
  60. package/dist/{schema-K575EBPE.js → schema-HHYJDG7B.js} +3 -1
  61. package/dist/{seed-GPBERPXJ.js → seed-4V2O7FQE.js} +1 -1
  62. package/dist/{seed-cmd-PWF4FYFG.js → seed-cmd-JKDEW4MP.js} +2 -2
  63. package/dist/{seed-create-NTIICZVB.js → seed-create-EPAO3H5F.js} +3 -3
  64. package/dist/{seed-sprout-PRPFKGJF.js → seed-sprout-EONCL4DU.js} +8 -8
  65. package/dist/{send-IMHDYJHW.js → send-232RAHPX.js} +3 -3
  66. package/dist/{service-DWBRRFXS.js → service-AG5BKRUV.js} +5 -5
  67. package/dist/{service-install-KEBDNZVE.js → service-install-HVAEUBAH.js} +6 -6
  68. package/dist/{setup-IFYS3TLS.js → setup-IL7QJZN4.js} +3 -3
  69. package/dist/{setup-4CWQ53VV.js → setup-PSA7LJ5U.js} +8 -8
  70. package/dist/{skills-FJ5W73AV.js → skills-SLEY5X6W.js} +6 -6
  71. package/dist/sleep-manager-27S7MKJO.js +34 -0
  72. package/dist/{spirit-U6MDQLYT.js → spirit-7BUHSEO2.js} +8 -8
  73. package/dist/{sprout-ABX2G76C.js → sprout-JWQ57KF3.js} +1 -1
  74. package/dist/{status-C6BBWNU3.js → status-6GSOSYOD.js} +6 -6
  75. package/dist/system-chat-EIINIHFB.js +34 -0
  76. package/dist/{tailscale-2KKXDMNK.js → tailscale-6MHNLBAX.js} +2 -2
  77. package/dist/up-4XS3RCPP.js +19 -0
  78. package/dist/{update-V26PT4VN.js → update-BT2PY73H.js} +6 -6
  79. package/dist/{update-check-XRERV36Y.js → update-check-Y3HBEMF2.js} +3 -3
  80. package/dist/{version-notify-ZBMY2TEX.js → version-notify-NFQMI5IY.js} +17 -17
  81. package/dist/web-assets/assets/index-DqHSW9Fr.css +1 -0
  82. package/dist/web-assets/assets/index-Jluza4c-.js +73 -0
  83. package/dist/web-assets/index.html +2 -2
  84. package/drizzle/0009_mind_notices.sql +14 -0
  85. package/drizzle/meta/_journal.json +7 -0
  86. package/package.json +1 -1
  87. package/templates/_base/.init/.local/hooks/pre-prompt/notices.ts +46 -0
  88. package/templates/_base/src/lib/context-breakdown.ts +281 -126
  89. package/templates/_base/src/lib/daemon-client.ts +5 -2
  90. package/templates/_base/src/lib/transparency.ts +5 -3
  91. package/templates/_base/src/lib/volute-server.ts +23 -0
  92. package/templates/claude/src/agent.ts +54 -16
  93. package/templates/claude/src/server.ts +1 -0
  94. package/templates/codex/src/agent.ts +45 -12
  95. package/templates/codex/src/server.ts +1 -0
  96. package/templates/pi/src/agent.ts +72 -13
  97. package/templates/pi/src/server.ts +1 -0
  98. package/dist/delivery-manager-N34XKUGL.js +0 -30
  99. package/dist/down-TCEBGTMY.js +0 -17
  100. package/dist/echo-text-N3BC3WNX.js +0 -31
  101. package/dist/mind-manager-7GWTTKWD.js +0 -30
  102. package/dist/mind-service-MO2XJKJN.js +0 -36
  103. package/dist/scheduler-CGUPAEBA.js +0 -30
  104. package/dist/sleep-manager-6QRMUNHK.js +0 -34
  105. package/dist/system-chat-D343HYGR.js +0 -34
  106. package/dist/up-ZU6ILVMA.js +0 -19
  107. package/dist/web-assets/assets/index-B1zwqwt8.css +0 -1
  108. package/dist/web-assets/assets/index-D1guJF1i.js +0 -73
@@ -3,10 +3,10 @@ import {
3
3
  broadcast,
4
4
  publish,
5
5
  subscribe
6
- } from "./chunk-7GZB3ZJP.js";
6
+ } from "./chunk-5VBXKFPO.js";
7
7
  import "./chunk-T2TP6ZC6.js";
8
- import "./chunk-QDWP435B.js";
9
- import "./chunk-CJ26DXZL.js";
8
+ import "./chunk-PDSA3ILI.js";
9
+ import "./chunk-MHFAWJCC.js";
10
10
  import "./chunk-K3NQKI34.js";
11
11
  export {
12
12
  broadcast,
@@ -2,6 +2,7 @@
2
2
  import {
3
3
  aiComplete,
4
4
  aiCompleteUtility,
5
+ fireProviderRefreshHook,
5
6
  getAiConfig,
6
7
  getAvailableModels,
7
8
  getConfiguredProviders,
@@ -15,17 +16,19 @@ import {
15
16
  resolveTemplate,
16
17
  saveProviderConfig,
17
18
  setEnabledModels,
19
+ setProviderRefreshHook,
18
20
  setUtilityModel,
19
21
  unqualifyModelId
20
- } from "./chunk-B7MWXFAH.js";
21
- import "./chunk-TCNCRDB5.js";
22
+ } from "./chunk-PGX52NFO.js";
23
+ import "./chunk-2AQCEQYN.js";
22
24
  import "./chunk-T2TP6ZC6.js";
23
- import "./chunk-QDWP435B.js";
24
- import "./chunk-CJ26DXZL.js";
25
+ import "./chunk-PDSA3ILI.js";
26
+ import "./chunk-MHFAWJCC.js";
25
27
  import "./chunk-K3NQKI34.js";
26
28
  export {
27
29
  aiComplete,
28
30
  aiCompleteUtility,
31
+ fireProviderRefreshHook,
29
32
  getAiConfig,
30
33
  getAvailableModels,
31
34
  getConfiguredProviders,
@@ -39,6 +42,7 @@ export {
39
42
  resolveTemplate,
40
43
  saveProviderConfig,
41
44
  setEnabledModels,
45
+ setProviderRefreshHook,
42
46
  setUtilityModel,
43
47
  unqualifyModelId
44
48
  };
@@ -5,9 +5,9 @@ import {
5
5
  extractArchive,
6
6
  isHomeOnlyArchive,
7
7
  readManifest
8
- } from "./chunk-IA2SZSLB.js";
9
- import "./chunk-QDWP435B.js";
10
- import "./chunk-CJ26DXZL.js";
8
+ } from "./chunk-76Q6YLJL.js";
9
+ import "./chunk-PDSA3ILI.js";
10
+ import "./chunk-MHFAWJCC.js";
11
11
  import "./chunk-K3NQKI34.js";
12
12
  export {
13
13
  addHistoryToArchive,
@@ -17,11 +17,11 @@ import {
17
17
  syncMindProfile,
18
18
  updateUserProfile,
19
19
  verifyUser
20
- } from "./chunk-7W3UWCQD.js";
21
- import "./chunk-7GZB3ZJP.js";
20
+ } from "./chunk-PHR4XQPL.js";
21
+ import "./chunk-5VBXKFPO.js";
22
22
  import "./chunk-T2TP6ZC6.js";
23
- import "./chunk-QDWP435B.js";
24
- import "./chunk-CJ26DXZL.js";
23
+ import "./chunk-PDSA3ILI.js";
24
+ import "./chunk-MHFAWJCC.js";
25
25
  import "./chunk-K3NQKI34.js";
26
26
  export {
27
27
  approveUser,
@@ -12,7 +12,7 @@ var cmd = subcommands({
12
12
  commands: {
13
13
  send: {
14
14
  description: "Send a message",
15
- run: (args) => import("./send-IMHDYJHW.js").then((m) => m.run(args))
15
+ run: (args) => import("./send-232RAHPX.js").then((m) => m.run(args))
16
16
  },
17
17
  list: {
18
18
  description: "List conversations",
@@ -32,7 +32,7 @@ var cmd = subcommands({
32
32
  },
33
33
  files: {
34
34
  description: "List pending incoming files",
35
- run: (args) => import("./files-K5XV23H6.js").then((m) => m.run(args))
35
+ run: (args) => import("./files-J2CKZ6PK.js").then((m) => m.run(args))
36
36
  },
37
37
  accept: {
38
38
  description: "Accept a pending file",
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  voluteSystemDir
4
- } from "./chunk-QDWP435B.js";
4
+ } from "./chunk-PDSA3ILI.js";
5
5
 
6
6
  // packages/daemon/src/lib/config/setup.ts
7
7
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  wrapForIsolation
4
- } from "./chunk-6FSSMAXU.js";
4
+ } from "./chunk-FBV22PFY.js";
5
5
 
6
6
  // packages/daemon/src/lib/util/exec.ts
7
7
  import { execFile as execFileCb, execFileSync, spawn } from "child_process";
@@ -7,14 +7,14 @@ import {
7
7
  modeLabel,
8
8
  pollHealth,
9
9
  startService
10
- } from "./chunk-6V2U3GFQ.js";
10
+ } from "./chunk-SGC6CDXB.js";
11
11
  import {
12
12
  readGlobalConfig
13
- } from "./chunk-TCNCRDB5.js";
13
+ } from "./chunk-2AQCEQYN.js";
14
14
  import {
15
15
  voluteHome,
16
16
  voluteSystemDir
17
- } from "./chunk-QDWP435B.js";
17
+ } from "./chunk-PDSA3ILI.js";
18
18
 
19
19
  // src/commands/up.ts
20
20
  import { spawn } from "child_process";
@@ -4,10 +4,10 @@ import {
4
4
  } from "./chunk-T2TP6ZC6.js";
5
5
  import {
6
6
  getDb
7
- } from "./chunk-QDWP435B.js";
7
+ } from "./chunk-PDSA3ILI.js";
8
8
  import {
9
9
  activity
10
- } from "./chunk-CJ26DXZL.js";
10
+ } from "./chunk-MHFAWJCC.js";
11
11
 
12
12
  // packages/daemon/src/lib/events/activity-events.ts
13
13
  var subscribers = /* @__PURE__ */ new Set();
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  mindDir,
4
4
  stateDir
5
- } from "./chunk-QDWP435B.js";
5
+ } from "./chunk-PDSA3ILI.js";
6
6
 
7
7
  // packages/daemon/src/lib/mind/archive.ts
8
8
  import { execFileSync } from "child_process";
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  subscribe
4
- } from "./chunk-7GZB3ZJP.js";
4
+ } from "./chunk-5VBXKFPO.js";
5
5
  import {
6
6
  logger_default
7
7
  } from "./chunk-T2TP6ZC6.js";
8
8
  import {
9
9
  getDb
10
- } from "./chunk-QDWP435B.js";
10
+ } from "./chunk-PDSA3ILI.js";
11
11
  import {
12
12
  channels,
13
13
  conversationParticipants,
@@ -15,7 +15,7 @@ import {
15
15
  conversations,
16
16
  messages,
17
17
  users
18
- } from "./chunk-CJ26DXZL.js";
18
+ } from "./chunk-MHFAWJCC.js";
19
19
 
20
20
  // packages/daemon/src/lib/events/conversations.ts
21
21
  import { randomUUID } from "crypto";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  stateDir
4
- } from "./chunk-QDWP435B.js";
4
+ } from "./chunk-PDSA3ILI.js";
5
5
 
6
6
  // packages/daemon/src/lib/chat/file-sharing.ts
7
7
  import { randomBytes } from "crypto";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  getBaseName,
4
4
  validateMindName
5
- } from "./chunk-QDWP435B.js";
5
+ } from "./chunk-PDSA3ILI.js";
6
6
 
7
7
  // packages/daemon/src/lib/mind/isolation.ts
8
8
  import { execFileSync } from "child_process";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  voluteSystemDir
4
- } from "./chunk-QDWP435B.js";
4
+ } from "./chunk-PDSA3ILI.js";
5
5
 
6
6
  // packages/daemon/src/lib/update-check.ts
7
7
  import { existsSync, readFileSync, writeFileSync } from "fs";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  stateDir,
4
4
  voluteSystemDir
5
- } from "./chunk-QDWP435B.js";
5
+ } from "./chunk-PDSA3ILI.js";
6
6
 
7
7
  // packages/daemon/src/lib/config/env.ts
8
8
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  setBridgeConfig
4
- } from "./chunk-XOSAY7PY.js";
4
+ } from "./chunk-S4YO5OWV.js";
5
5
  import {
6
6
  readEnv,
7
7
  sharedEnvPath,
8
8
  writeEnv
9
- } from "./chunk-WUH54G5S.js";
9
+ } from "./chunk-HAJHDGBV.js";
10
10
 
11
11
  // packages/daemon/src/lib/template/import-utils.ts
12
12
  import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from "fs";
@@ -2,15 +2,15 @@
2
2
  import {
3
3
  findBridgeForChannel,
4
4
  getBridgeConfig
5
- } from "./chunk-XOSAY7PY.js";
5
+ } from "./chunk-S4YO5OWV.js";
6
6
  import {
7
7
  publish,
8
8
  recordOutbound
9
- } from "./chunk-CHCISTH7.js";
9
+ } from "./chunk-XUJR6NZW.js";
10
10
  import {
11
11
  readEnv,
12
12
  sharedEnvPath
13
- } from "./chunk-WUH54G5S.js";
13
+ } from "./chunk-HAJHDGBV.js";
14
14
  import {
15
15
  addMessage,
16
16
  findDMConversation,
@@ -18,14 +18,14 @@ import {
18
18
  getChannelName,
19
19
  getConversation,
20
20
  getParticipants
21
- } from "./chunk-QDWPM73D.js";
21
+ } from "./chunk-B7YJUWMM.js";
22
22
  import {
23
23
  readVoluteConfig
24
24
  } from "./chunk-CU6OFXMM.js";
25
25
  import {
26
26
  getOrCreateMindUser,
27
27
  getUserByUsername
28
- } from "./chunk-7W3UWCQD.js";
28
+ } from "./chunk-PHR4XQPL.js";
29
29
  import {
30
30
  logger_default
31
31
  } from "./chunk-T2TP6ZC6.js";
@@ -35,7 +35,7 @@ import {
35
35
  import {
36
36
  mindDir,
37
37
  voluteSystemDir
38
- } from "./chunk-QDWP435B.js";
38
+ } from "./chunk-PDSA3ILI.js";
39
39
  import {
40
40
  __export
41
41
  } from "./chunk-K3NQKI34.js";
@@ -14,6 +14,7 @@ __export(schema_exports, {
14
14
  deliveryQueue: () => deliveryQueue,
15
15
  messages: () => messages,
16
16
  mindHistory: () => mindHistory,
17
+ mindNotices: () => mindNotices,
17
18
  minds: () => minds,
18
19
  sessions: () => sessions,
19
20
  sharedSkills: () => sharedSkills,
@@ -241,6 +242,20 @@ var messages = sqliteTable(
241
242
  index("idx_messages_turn_id").on(table.turn_id)
242
243
  ]
243
244
  );
245
+ var mindNotices = sqliteTable(
246
+ "mind_notices",
247
+ {
248
+ id: integer("id").primaryKey({ autoIncrement: true }),
249
+ mind: text("mind").notNull(),
250
+ session: text("session").notNull(),
251
+ kind: text("kind").$type().notNull(),
252
+ reason: text("reason").$type().notNull(),
253
+ detail: text("detail").notNull(),
254
+ raw: text("raw"),
255
+ created_at: text("created_at").notNull().default(sql`(datetime('now'))`)
256
+ },
257
+ (table) => [index("idx_mind_notices_mind_session").on(table.mind, table.session)]
258
+ );
244
259
 
245
260
  export {
246
261
  minds,
@@ -258,5 +273,6 @@ export {
258
273
  conversationReads,
259
274
  channels,
260
275
  messages,
276
+ mindNotices,
261
277
  schema_exports
262
278
  };
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-T2TP6ZC6.js";
5
5
  import {
6
6
  mindDir
7
- } from "./chunk-QDWP435B.js";
7
+ } from "./chunk-PDSA3ILI.js";
8
8
 
9
9
  // packages/daemon/src/lib/delivery/delivery-router.ts
10
10
  import { readFileSync, statSync } from "fs";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  minds,
4
4
  schema_exports
5
- } from "./chunk-CJ26DXZL.js";
5
+ } from "./chunk-MHFAWJCC.js";
6
6
 
7
7
  // packages/daemon/src/lib/db.ts
8
8
  import { chmodSync, existsSync } from "fs";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  readGlobalConfig,
4
4
  writeGlobalConfig
5
- } from "./chunk-TCNCRDB5.js";
5
+ } from "./chunk-2AQCEQYN.js";
6
6
  import {
7
7
  logger_default
8
8
  } from "./chunk-T2TP6ZC6.js";
@@ -11,6 +11,17 @@ import {
11
11
  import { complete, getEnvApiKey, getModel, getModels, getProviders } from "@mariozechner/pi-ai";
12
12
  import { getOAuthApiKey } from "@mariozechner/pi-ai/oauth";
13
13
  var aiLog = logger_default.child("ai-service");
14
+ var providerRefreshHook;
15
+ function setProviderRefreshHook(hook) {
16
+ providerRefreshHook = hook;
17
+ }
18
+ function fireProviderRefreshHook(providerId) {
19
+ try {
20
+ providerRefreshHook?.(providerId);
21
+ } catch (err) {
22
+ aiLog.warn(`provider refresh hook failed for ${providerId}`, logger_default.errorData(err));
23
+ }
24
+ }
14
25
  function getAiConfig() {
15
26
  const config = readGlobalConfig();
16
27
  return config.ai ?? null;
@@ -131,6 +142,7 @@ async function resolveApiKey(providerId) {
131
142
  if (result) {
132
143
  if (result.newCredentials.access !== providerConfig.oauth.access) {
133
144
  saveProviderConfig(providerId, { ...providerConfig, oauth: result.newCredentials });
145
+ fireProviderRefreshHook(providerId);
134
146
  }
135
147
  return result.apiKey;
136
148
  }
@@ -206,6 +218,8 @@ async function aiComplete(systemPrompt, userMessage, modelId) {
206
218
  }
207
219
 
208
220
  export {
221
+ setProviderRefreshHook,
222
+ fireProviderRefreshHook,
209
223
  getAiConfig,
210
224
  saveProviderConfig,
211
225
  removeProviderConfig,
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  broadcast
4
- } from "./chunk-7GZB3ZJP.js";
4
+ } from "./chunk-5VBXKFPO.js";
5
5
  import {
6
6
  getDb
7
- } from "./chunk-QDWP435B.js";
7
+ } from "./chunk-PDSA3ILI.js";
8
8
  import {
9
9
  users
10
- } from "./chunk-CJ26DXZL.js";
10
+ } from "./chunk-MHFAWJCC.js";
11
11
 
12
12
  // packages/daemon/src/lib/auth.ts
13
13
  import { compareSync, hashSync } from "bcryptjs";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  readGlobalConfig
4
- } from "./chunk-TCNCRDB5.js";
4
+ } from "./chunk-2AQCEQYN.js";
5
5
  import {
6
6
  logger_default
7
7
  } from "./chunk-T2TP6ZC6.js";
@@ -55,12 +55,6 @@ async function initSandbox() {
55
55
  }
56
56
  }
57
57
  const config = {
58
- network: {
59
- allowedDomains: ["*"],
60
- deniedDomains: [],
61
- allowLocalBinding: true,
62
- allowAllUnixSockets: true
63
- },
64
58
  filesystem: {
65
59
  denyRead: [],
66
60
  allowWrite: [],
@@ -3,10 +3,10 @@ import {
3
3
  LAUNCHD_PLIST_LABEL,
4
4
  LAUNCHD_PLIST_PATH,
5
5
  USER_SYSTEMD_UNIT
6
- } from "./chunk-6V2U3GFQ.js";
6
+ } from "./chunk-SGC6CDXB.js";
7
7
  import {
8
8
  resolveVoluteBin
9
- } from "./chunk-OEXOFBW5.js";
9
+ } from "./chunk-3XSFMN3H.js";
10
10
 
11
11
  // packages/daemon/src/lib/config/service-install.ts
12
12
  import { execFile } from "child_process";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  publish
4
- } from "./chunk-7GZB3ZJP.js";
4
+ } from "./chunk-5VBXKFPO.js";
5
5
  import {
6
6
  logger_default
7
7
  } from "./chunk-T2TP6ZC6.js";
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-T2TP6ZC6.js";
5
5
  import {
6
6
  voluteSystemDir
7
- } from "./chunk-QDWP435B.js";
7
+ } from "./chunk-PDSA3ILI.js";
8
8
 
9
9
  // packages/daemon/src/lib/bridges/bridges.ts
10
10
  import { existsSync, readFileSync, writeFileSync } from "fs";
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  exec,
4
4
  execInherit
5
- } from "./chunk-OEXOFBW5.js";
5
+ } from "./chunk-3XSFMN3H.js";
6
6
  import {
7
7
  voluteSystemDir
8
- } from "./chunk-QDWP435B.js";
8
+ } from "./chunk-PDSA3ILI.js";
9
9
 
10
10
  // packages/daemon/src/lib/config/service-mode.ts
11
11
  import { execFileSync } from "child_process";
@@ -8,10 +8,10 @@ import {
8
8
  pollHealthDown,
9
9
  readDaemonConfig,
10
10
  stopService
11
- } from "./chunk-6V2U3GFQ.js";
11
+ } from "./chunk-SGC6CDXB.js";
12
12
  import {
13
13
  voluteSystemDir
14
- } from "./chunk-QDWP435B.js";
14
+ } from "./chunk-PDSA3ILI.js";
15
15
 
16
16
  // src/commands/down.ts
17
17
  import { existsSync, readFileSync, unlinkSync } from "fs";
@@ -2,11 +2,11 @@
2
2
  import {
3
3
  exec,
4
4
  gitExec
5
- } from "./chunk-OEXOFBW5.js";
5
+ } from "./chunk-3XSFMN3H.js";
6
6
  import {
7
7
  readGlobalConfig,
8
8
  writeGlobalConfig
9
- } from "./chunk-TCNCRDB5.js";
9
+ } from "./chunk-2AQCEQYN.js";
10
10
  import {
11
11
  logger_default
12
12
  } from "./chunk-T2TP6ZC6.js";
@@ -15,10 +15,10 @@ import {
15
15
  mindDir,
16
16
  readRegistry,
17
17
  voluteHome
18
- } from "./chunk-QDWP435B.js";
18
+ } from "./chunk-PDSA3ILI.js";
19
19
  import {
20
20
  sharedSkills
21
- } from "./chunk-CJ26DXZL.js";
21
+ } from "./chunk-MHFAWJCC.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-V7TXKAKM.js");
49
+ const { getExtensionStandardSkills } = await import("./extensions-VN5SEVRP.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));
@@ -9,21 +9,21 @@ import {
9
9
  getSharedSkill,
10
10
  installSkill,
11
11
  mindSkillsDir
12
- } from "./chunk-IBOU6Q3Y.js";
12
+ } from "./chunk-T26YLQPU.js";
13
13
  import {
14
14
  readVoluteConfig,
15
15
  writeVoluteConfig
16
16
  } from "./chunk-CU6OFXMM.js";
17
17
  import {
18
18
  exec
19
- } from "./chunk-OEXOFBW5.js";
19
+ } from "./chunk-3XSFMN3H.js";
20
20
  import {
21
21
  qualifyModelId,
22
22
  resolveTemplate
23
- } from "./chunk-B7MWXFAH.js";
23
+ } from "./chunk-PGX52NFO.js";
24
24
  import {
25
25
  readGlobalConfig
26
- } from "./chunk-TCNCRDB5.js";
26
+ } from "./chunk-2AQCEQYN.js";
27
27
  import {
28
28
  logger_default
29
29
  } from "./chunk-T2TP6ZC6.js";
@@ -32,7 +32,7 @@ import {
32
32
  findMind,
33
33
  nextPort,
34
34
  voluteSystemDir
35
- } from "./chunk-QDWP435B.js";
35
+ } from "./chunk-PDSA3ILI.js";
36
36
 
37
37
  // packages/daemon/src/lib/mind/spirit.ts
38
38
  import { cpSync, existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "fs";
@@ -128,7 +128,7 @@ async function ensureSpiritProject() {
128
128
  } catch (err) {
129
129
  slog.warn("failed to add tending schedule to spirit config", logger_default.errorData(err));
130
130
  }
131
- const { createMindUser, chownMindDir, ensureVoluteGroup } = await import("./isolation-FPF4UTH2.js");
131
+ const { createMindUser, chownMindDir, ensureVoluteGroup } = await import("./isolation-MM7YHK6J.js");
132
132
  ensureVoluteGroup();
133
133
  createMindUser("volute", resolve(dir, "home"));
134
134
  chownMindDir(dir, "volute");
@@ -162,8 +162,8 @@ async function syncSpiritTemplate() {
162
162
  cpSync(newPkg, resolve(dir, "package.json"));
163
163
  await exec("npm", ["install"], { cwd: dir, env: npmEnv() });
164
164
  }
165
- const db = await (await import("./db-32YFKMFL.js")).getDb();
166
- const { minds } = await import("./schema-K575EBPE.js");
165
+ const db = await (await import("./db-2GIS7HSG.js")).getDb();
166
+ const { minds } = await import("./schema-HHYJDG7B.js");
167
167
  const { eq } = await import("drizzle-orm");
168
168
  await db.update(minds).set({ template: expectedTemplate }).where(eq(minds.name, "volute"));
169
169
  }