volute 0.40.1 → 0.41.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.
- package/README.md +2 -2
- package/dist/{accept-IVHOHXQS.js → accept-AHAOUFBK.js} +1 -1
- package/dist/{activity-events-DS4QRWBY.js → activity-events-EQGBUEZ7.js} +4 -4
- package/dist/{ai-service-AUWIPWLP.js → ai-service-ZHEPFC3U.js} +5 -5
- package/dist/{api-client-NFM6GX2N.js → api-client-LC5YRA32.js} +1 -1
- package/dist/{archive-UDHFZN4G.js → archive-LJAXDDEY.js} +4 -4
- package/dist/{auth-X6ZITZ7D.js → auth-VYW2ECCE.js} +5 -5
- package/dist/{bridge-MSZC4HUT.js → bridge-F3ZJEKDN.js} +1 -1
- package/dist/{chat-JD3TJINV.js → chat-FO722GU2.js} +9 -9
- package/dist/{chunk-4UMXOMZ6.js → chunk-2I7OKOYV.js} +2 -2
- package/dist/{chunk-3Y7UDHO7.js → chunk-2R4JIZCB.js} +3 -3
- package/dist/{chunk-QYI65HCL.js → chunk-2RQIIKFC.js} +2 -2
- package/dist/{chunk-6SYHHEQ7.js → chunk-4ED2DBNC.js} +1 -1
- package/dist/{chunk-E25SO3QW.js → chunk-6TPRURK5.js} +3 -3
- package/dist/{chunk-ITH5ZLZJ.js → chunk-6ZAT5PYV.js} +1 -1
- package/dist/{chunk-LZ6CQYRO.js → chunk-AXNAK3HT.js} +10 -8
- package/dist/{chunk-PKGA23XM.js → chunk-CYUNO4BM.js} +1 -1
- package/dist/{chunk-MNUXL4XN.js → chunk-FEQPNCXB.js} +1 -1
- package/dist/{chunk-5EVW4KOD.js → chunk-FU5YDH6Q.js} +3 -3
- package/dist/{chunk-NERYUSER.js → chunk-GMFCSXWB.js} +1 -1
- package/dist/{chunk-YHWGN4FX.js → chunk-GSOEUMVO.js} +1 -1
- package/dist/{chunk-QV7P3TYO.js → chunk-JIGVTFIR.js} +5 -5
- package/dist/chunk-K3NQKI34.js +10 -0
- package/dist/{chunk-2HZRJ35V.js → chunk-MHFAWJCC.js} +1 -1
- package/dist/{chunk-I57LLNAQ.js → chunk-MU2B7A3L.js} +1 -1
- package/dist/{chunk-DNU6XLE2.js → chunk-N64Q7FMP.js} +1 -1
- package/dist/{chunk-SVXOBKQY.js → chunk-OQ7UEW67.js} +2 -2
- package/dist/{chunk-ANSTTB55.js → chunk-PP5CGT2P.js} +20 -21
- package/dist/{chunk-TOANT6FD.js → chunk-SWY4DJ67.js} +2 -2
- package/dist/{chunk-KMHC36CA.js → chunk-U7UASV36.js} +1 -1
- package/dist/{chunk-KAB6UGOL.js → chunk-UU3Q65US.js} +1 -1
- package/dist/{chunk-JYQQDI3M.js → chunk-V67XMNGP.js} +2 -2
- package/dist/{chunk-B4WPXYPI.js → chunk-VDODEQSJ.js} +6 -1
- package/dist/{chunk-S4SXBQ7F.js → chunk-VK2YD7VJ.js} +43 -35
- package/dist/{chunk-BLAXARBZ.js → chunk-W5Z2H3LU.js} +194 -1313
- package/dist/{chunk-46DYYHN6.js → chunk-WSRGS4XP.js} +34 -0
- package/dist/{chunk-AEAZRTEV.js → chunk-Y2XLASFJ.js} +1 -1
- package/dist/chunk-YATR5BXD.js +1212 -0
- package/dist/{chunk-YTNBO7S6.js → chunk-YN6ISG7A.js} +11 -11
- package/dist/cli.js +24 -24
- package/dist/{clock-YLDJUKBW.js → clock-BMLJ2TR6.js} +3 -3
- package/dist/{cloud-sync-MAQCJEFJ.js → cloud-sync-GV6O2HN2.js} +19 -18
- package/dist/{config-PO4EZLIK.js → config-QB7W3Z7P.js} +4 -4
- package/dist/connectors/discord-bridge.js +1 -1
- package/dist/connectors/slack-bridge.js +1 -1
- package/dist/connectors/telegram-bridge.js +1 -1
- package/dist/{conversations-AYLXPOGC.js → conversations-KW7IYESK.js} +5 -5
- package/dist/{create-ZMTGINV3.js → create-C3BBFYV7.js} +1 -1
- package/dist/{create-T4UJ64WB.js → create-CTPXWFTL.js} +5 -5
- package/dist/{daemon-client-H6MEKK2W.js → daemon-client-2MIPKY3E.js} +1 -1
- package/dist/{daemon-restart-LP2DR24J.js → daemon-restart-W47YDE5E.js} +9 -9
- package/dist/daemon.js +155 -111
- package/dist/db-D4FVCA5I.js +9 -0
- package/dist/{db-FSYOTHSN.js → db-IJL6B26S.js} +1 -1
- package/dist/{delete-TXVOH2OC.js → delete-NLXES2C7.js} +3 -3
- package/dist/delivery-manager-EB52CQ5X.js +33 -0
- package/dist/{delivery-router-T6CYTS3M.js → delivery-router-Y66OXJPM.js} +4 -4
- package/dist/down-JVHNXOFU.js +17 -0
- package/dist/echo-text-QVPS6QDM.js +32 -0
- package/dist/{env-77IOWG4U.js → env-IQ6Q2333.js} +1 -1
- package/dist/exec-R2WWZ6FH.js +17 -0
- package/dist/{export-TZKOCSCE.js → export-ZZ5WWBUH.js} +6 -6
- package/dist/{extension-35NB6GHW.js → extension-LZYHBNLV.js} +1 -1
- package/dist/{extensions-LQX2N7TI.js → extensions-AGANCIQA.js} +19 -18
- package/dist/{files-WNNVJWJB.js → files-Q2Z4LQZP.js} +4 -4
- package/dist/{import-BNNFCQ7U.js → import-MFYCBS4K.js} +11 -11
- package/dist/{isolation-4Q4P7HRV.js → isolation-7F3MA4G7.js} +4 -4
- package/dist/{join-E2EJEXZO.js → join-6SZCA5FX.js} +3 -3
- package/dist/{list-BYCEDASJ.js → list-KHJZJPEJ.js} +1 -1
- package/dist/{login-JNSIYFVH.js → login-GYTH67ES.js} +1 -1
- package/dist/{login-Y6UAYQVO.js → login-WY3DADVB.js} +3 -3
- package/dist/{logout-VHGWVH63.js → logout-TFZHWNVL.js} +3 -3
- package/dist/{logout-M6FI62BL.js → logout-YHQLOFLR.js} +1 -1
- package/dist/message-delivery-X4CZE2L6.js +41 -0
- package/dist/{mind-ELPD6VBP.js → mind-XIKEPJNS.js} +19 -19
- package/dist/{mind-activity-tracker-XFRVGXFS.js → mind-activity-tracker-RSIWUUJK.js} +5 -5
- package/dist/{mind-history-W4JPTPTV.js → mind-history-WHCNZ6I5.js} +1 -1
- package/dist/{mind-list-QROHCLGT.js → mind-list-H3HC2ZRG.js} +1 -1
- package/dist/mind-manager-VU3RGCXD.js +31 -0
- package/dist/{mind-profile-3LNKXNPA.js → mind-profile-7VYRJGFZ.js} +2 -2
- package/dist/mind-service-L7LMMDYJ.js +37 -0
- package/dist/{mind-sleep-PVCMLTAH.js → mind-sleep-ZL5ZXFTM.js} +1 -1
- package/dist/{mind-status-RAJFLRCN.js → mind-status-ZWULKOUO.js} +1 -1
- package/dist/{mind-wake-HZUOVE7J.js → mind-wake-HK5ORGUK.js} +1 -1
- package/dist/{package-GO3PHHUF.js → package-2X7UNSTQ.js} +6 -5
- package/dist/{read-OOINVR2H.js → read-CP7MYMJQ.js} +1 -1
- package/dist/{read-stdin-P6HCZUAA.js → read-stdin-4B5UYPPM.js} +1 -1
- package/dist/{register-ISOH34RF.js → register-XOBFEMI4.js} +1 -1
- package/dist/{registry-GV35XFT7.js → registry-RAXNFN7K.js} +5 -3
- package/dist/{reject-ZBWP62X5.js → reject-43AGXB6B.js} +1 -1
- package/dist/{restart-QBJV5455.js → restart-O5QIYQJT.js} +1 -1
- package/dist/{sandbox-5R32QKWQ.js → sandbox-O3GZTS7J.js} +5 -5
- package/dist/scheduler-SXELVRWO.js +31 -0
- package/dist/{schema-LYQUDL7G.js → schema-HHYJDG7B.js} +2 -2
- package/dist/{seed-MO2C7CWC.js → seed-I4CNKTKZ.js} +2 -2
- package/dist/{seed-check-3WXXRHTC.js → seed-check-HZPVFJKZ.js} +2 -2
- package/dist/{seed-cmd-ETIF4WD6.js → seed-cmd-YTQYWCZF.js} +4 -4
- package/dist/{seed-create-BPQC2IOR.js → seed-create-MDBTVADS.js} +7 -7
- package/dist/{seed-sprout-TX72K33T.js → seed-sprout-N6O5FBPY.js} +11 -11
- package/dist/{send-WO3CVG73.js → send-5XA7LRNB.js} +4 -4
- package/dist/{service-WMV6R6VJ.js → service-AY5TGWJX.js} +6 -6
- package/dist/service-install-NLGAVTQS.js +17 -0
- package/dist/{setup-OTEC3ZPM.js → setup-3434PQ5Q.js} +4 -4
- package/dist/{setup-ZTW4FVMQ.js → setup-47NBOCZL.js} +9 -9
- package/dist/{skill-QHACP7EU.js → skill-ICN6Y2ZF.js} +1 -1
- package/dist/{skills-JEWMHIIE.js → skills-YTLBAF32.js} +7 -7
- package/dist/sleep-manager-T3AXQB3R.js +35 -0
- package/dist/spirit-KTBHLULO.js +24 -0
- package/dist/{split-7AO4IO42.js → split-5YBEQTBF.js} +3 -3
- package/dist/{sprout-NFJZKYEW.js → sprout-4ZUJUNDQ.js} +2 -2
- package/dist/src-4LFGGNW7.js +2201 -0
- package/dist/{src-XNUXP2FP.js → src-O4PRLMKM.js} +1 -1
- package/dist/{src-2IMB3V27.js → src-OYWRPLC6.js} +1 -1
- package/dist/{start-2U57BBK7.js → start-LMXXRR3X.js} +1 -1
- package/dist/{status-BRYYYO7C.js → status-VMOZUIZ2.js} +7 -7
- package/dist/{stop-QILBDUAR.js → stop-TWDKVEUX.js} +1 -1
- package/dist/system-chat-HCPHUQGI.js +35 -0
- package/dist/{systems-3XTAHA35.js → systems-Y2WZV2K4.js} +4 -4
- package/dist/{tailscale-X4HRKRTW.js → tailscale-PK3AI5EV.js} +3 -3
- package/dist/template-hash-JARTCRGS.js +9 -0
- package/dist/turn-tracker-SZBSL7LK.js +35 -0
- package/dist/up-VGVPOB6J.js +19 -0
- package/dist/{update-OY2JYXYK.js → update-3ANTQO54.js} +7 -7
- package/dist/{update-check-IUB7QHAF.js → update-check-4O6DKUOF.js} +4 -4
- package/dist/{upgrade-25J6AE47.js → upgrade-RXFZR5FI.js} +3 -3
- package/dist/{variant-5LQOPCQA.js → variant-HHDTW74J.js} +1 -1
- package/dist/{version-notify-N37N2C4G.js → version-notify-SSNAWZMX.js} +21 -20
- package/dist/{volute-config-7FO6QKWU.js → volute-config-TS62GS6A.js} +1 -1
- package/package.json +5 -4
- package/templates/claude/package.json.tmpl +1 -1
- package/templates/codex/package.json.tmpl +1 -1
- package/templates/pi/package.json.tmpl +2 -1
- package/templates/pi/src/agent.ts +1 -1
- package/templates/pi/src/lib/content.ts +1 -1
- package/templates/pi/src/lib/event-handler.ts +1 -1
- package/templates/pi/src/lib/reply-instructions-extension.ts +1 -1
- package/templates/pi/src/lib/resolve-model.ts +4 -4
- package/templates/pi/src/lib/subagents.ts +2 -2
- package/dist/chunk-LMMQX4CK.js +0 -49
- package/dist/db-ZEPKEJJD.js +0 -9
- package/dist/delivery-manager-VNHLQTTO.js +0 -30
- package/dist/down-6DYO2QV7.js +0 -17
- package/dist/echo-text-QFCH3H6G.js +0 -31
- package/dist/exec-5DGKQ5V3.js +0 -17
- package/dist/message-delivery-7BCYJLH2.js +0 -40
- package/dist/mind-manager-EDCLALBF.js +0 -30
- package/dist/mind-service-WTOFVNLW.js +0 -36
- package/dist/scheduler-GQBDCGLU.js +0 -30
- package/dist/service-install-W3FQXJKB.js +0 -17
- package/dist/sleep-manager-5277OBHI.js +0 -34
- package/dist/spirit-NVXWSVKM.js +0 -24
- package/dist/src-OS75U2O7.js +0 -241910
- package/dist/system-chat-LQSJVY55.js +0 -34
- package/dist/template-hash-DMHSLRDX.js +0 -9
- package/dist/up-4H7TL6WB.js +0 -19
|
@@ -2,15 +2,37 @@
|
|
|
2
2
|
import {
|
|
3
3
|
readGlobalConfig,
|
|
4
4
|
writeGlobalConfig
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-N64Q7FMP.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 {
|
|
12
|
-
import { getOAuthApiKey } from "@
|
|
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
|
|
62
|
-
if (!configured.has(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
|
|
144
|
+
async function getAvailableModels() {
|
|
145
|
+
const providers = await getConfiguredProviders();
|
|
146
|
+
const result = [];
|
|
125
147
|
for (const provider of providers) {
|
|
126
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
168
|
-
|
|
169
|
-
|
|
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
|
|
177
|
-
|
|
178
|
-
|
|
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,
|