volute 0.23.0 → 0.25.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 +5 -5
- package/dist/{activity-events-3WHHCOBB.js → activity-events-4O37J7PD.js} +2 -2
- package/dist/api.d.ts +419 -19
- package/dist/{channel-BOOMFULW.js → channel-HZOSHGNF.js} +1 -1
- package/dist/{chunk-QIXPN3OO.js → chunk-2767L2RZ.js} +5 -5
- package/dist/{chunk-SGPEZ32F.js → chunk-33XAVCS4.js} +16 -0
- package/dist/{chunk-VT5QODNE.js → chunk-3AIBT4TW.js} +4 -3
- package/dist/{chunk-A4S7H6G6.js → chunk-BFK6SOEJ.js} +1 -1
- package/dist/{chunk-RK627D57.js → chunk-BOTQ25QT.js} +3 -3
- package/dist/{chunk-TFS25FIM.js → chunk-DG7TO7EE.js} +31 -3
- package/dist/{chunk-HGCDWKSP.js → chunk-E7GOKNOT.js} +1 -1
- package/dist/{chunk-ISWZ6QUK.js → chunk-PMX4EIJK.js} +804 -115
- package/dist/{chunk-M5CNKH4J.js → chunk-SHSWYG2J.js} +7 -7
- package/dist/{chunk-XLC342FO.js → chunk-SIAG3QMM.js} +14 -1
- package/dist/{chunk-KFI7TQJ6.js → chunk-TRQEV3CD.js} +9 -5
- package/dist/{chunk-JG4CCJOA.js → chunk-ZSH4G2P5.js} +33 -15
- package/dist/cli.js +18 -18
- package/dist/{cloud-sync-PI47U2LT.js → cloud-sync-PPBBJDY6.js} +7 -9
- package/dist/{connector-PYT5UOTZ.js → connector-M6XFI6GM.js} +1 -1
- package/dist/{create-WIDA3M4C.js → create-VDQJER52.js} +1 -1
- package/dist/{daemon-client-ZHCDL4RS.js → daemon-client-JOVQZ52X.js} +1 -1
- package/dist/{daemon-restart-RMGOOGPE.js → daemon-restart-FDNOZEAD.js} +5 -5
- package/dist/daemon.js +1047 -981
- package/dist/{delete-LOIANQGD.js → delete-2MRR4JX5.js} +1 -1
- package/dist/{down-WSUASL5E.js → down-674SX2IZ.js} +2 -2
- package/dist/{env-4PHIHTF4.js → env-2FPOZK37.js} +1 -1
- package/dist/{export-XD6PJBQP.js → export-IKFAPRAO.js} +1 -1
- package/dist/{file-X4L5TTOL.js → file-KT3UIQM3.js} +1 -1
- package/dist/{history-HTEKRNID.js → history-46WZN5CN.js} +1 -1
- package/dist/{import-EAXTHHXL.js → import-TH26J76F.js} +2 -2
- package/dist/{log-SRO5Q6AD.js → log-6SGSSR3D.js} +1 -1
- package/dist/{logs-HNTNNBDW.js → logs-HRBONI5I.js} +1 -1
- package/dist/{merge-B6SYTGI7.js → merge-KSFJKX6T.js} +1 -1
- package/dist/{message-delivery-FHV4NO2F.js → message-delivery-XMGV3FUM.js} +6 -6
- package/dist/{mind-BTXR5B3C.js → mind-YVWAHL2A.js} +17 -17
- package/dist/{mind-activity-tracker-PGC3DBJ7.js → mind-activity-tracker-NMDDEV3K.js} +3 -3
- package/dist/{mind-manager-KMY4GA2J.js → mind-manager-4NDNAYAB.js} +2 -2
- package/dist/{mind-sleep-FWRBIFBS.js → mind-sleep-GHPTSAYN.js} +1 -1
- package/dist/{mind-wake-LJK2YU5X.js → mind-wake-BJDJFMDF.js} +1 -1
- package/dist/{package-CUBJ4PKS.js → package-3HF5MXU2.js} +2 -1
- package/dist/{pages-YSTRWJR4.js → pages-Y6DRWUOJ.js} +1 -1
- package/dist/{publish-BZNHKUUK.js → publish-EEKTZBHW.js} +1 -1
- package/dist/{pull-GRQAXM2E.js → pull-D32SPFVU.js} +1 -1
- package/dist/{restart-CIDAKGG2.js → restart-5BMNV7KU.js} +1 -1
- package/dist/{schedule-NLR3LZLY.js → schedule-YEFDLVMJ.js} +1 -1
- package/dist/{seed-3H2MRREW.js → seed-6FEKB3YC.js} +1 -1
- package/dist/{send-RP2TA7SG.js → send-IISDYFCL.js} +1 -1
- package/dist/{service-7BFXDI6J.js → service-FASYWLTC.js} +3 -3
- package/dist/{setup-SSIIXQMI.js → setup-BMLM2UTK.js} +1 -1
- package/dist/{shared-2OGT3NSL.js → shared-LWMNTTZN.js} +4 -4
- package/dist/{skill-Q2Y6PQ3L.js → skill-T3EMR6IR.js} +11 -3
- package/dist/skills/imagegen/SKILL.md +37 -0
- package/dist/skills/imagegen/references/INSTALL.md +13 -0
- package/dist/skills/imagegen/scripts/imagegen.ts +136 -0
- package/dist/skills/resonance/SKILL.md +73 -0
- package/dist/skills/resonance/assets/default-config.json +21 -0
- package/dist/skills/resonance/references/INSTALL.md +23 -0
- package/dist/skills/resonance/scripts/resonance.ts +1250 -0
- package/dist/skills/volute-mind/SKILL.md +94 -4
- package/dist/{sleep-manager-2TMQ65E4.js → sleep-manager-RKTFZPD3.js} +6 -6
- package/dist/{sprout-UKCYBGHK.js → sprout-QJVGJDSH.js} +3 -3
- package/dist/{start-JR6CUUWF.js → start-C7XITZ5O.js} +1 -1
- package/dist/{status-5XDGYHKP.js → status-LYS4NUOZ.js} +1 -1
- package/dist/{status-H2MKDN6L.js → status-SIRPLEZC.js} +4 -3
- package/dist/{stop-VKPGK25U.js → stop-CVKBSLXY.js} +1 -1
- package/dist/tailscale-AJ4VL5XK.js +49 -0
- package/dist/{up-Z5JRG2M2.js → up-CJ26KQLN.js} +2 -2
- package/dist/{update-ELC6MEUT.js → update-7XCZMYBT.js} +7 -7
- package/dist/{upgrade-GXW2EQY3.js → upgrade-7RUIXGOO.js} +1 -1
- package/dist/{variant-A4I7PHXS.js → variant-UGREB4G5.js} +4 -4
- package/dist/{version-notify-LKABEJSA.js → version-notify-AZQMC32A.js} +6 -6
- package/dist/web-assets/assets/index-CGPSVu19.js +69 -0
- package/dist/web-assets/assets/index-V_rNDsM8.css +1 -0
- package/dist/web-assets/favicon.png +0 -0
- package/dist/web-assets/index.html +5 -4
- package/dist/web-assets/logo.png +0 -0
- package/drizzle/0013_user_profiles.sql +3 -0
- package/drizzle/0014_conversation_reads.sql +7 -0
- package/drizzle/meta/0013_snapshot.json +7 -0
- package/drizzle/meta/_journal.json +14 -0
- package/package.json +2 -1
- package/templates/_base/home/public/.gitkeep +0 -0
- package/templates/_base/src/lib/format-prefix.ts +18 -2
- package/templates/_base/src/lib/routing.ts +2 -1
- package/templates/_base/src/lib/types.ts +8 -0
- package/dist/chunk-G5KRTU2F.js +0 -76
- package/dist/web-assets/assets/index-CZ26vsyY.js +0 -69
- package/dist/web-assets/assets/index-DyyAvJwW.css +0 -1
|
@@ -11,6 +11,7 @@ var schema_exports = {};
|
|
|
11
11
|
__export(schema_exports, {
|
|
12
12
|
activity: () => activity,
|
|
13
13
|
conversationParticipants: () => conversationParticipants,
|
|
14
|
+
conversationReads: () => conversationReads,
|
|
14
15
|
conversations: () => conversations,
|
|
15
16
|
deliveryQueue: () => deliveryQueue,
|
|
16
17
|
messages: () => messages,
|
|
@@ -28,6 +29,9 @@ var users = sqliteTable("users", {
|
|
|
28
29
|
password_hash: text("password_hash").notNull(),
|
|
29
30
|
role: text("role").notNull().default("pending"),
|
|
30
31
|
user_type: text("user_type").notNull().default("brain"),
|
|
32
|
+
display_name: text("display_name"),
|
|
33
|
+
description: text("description"),
|
|
34
|
+
avatar: text("avatar"),
|
|
31
35
|
created_at: text("created_at").notNull().default(sql`(datetime('now'))`)
|
|
32
36
|
});
|
|
33
37
|
var conversations = sqliteTable(
|
|
@@ -134,6 +138,17 @@ var activity = sqliteTable(
|
|
|
134
138
|
index("idx_activity_mind").on(table.mind)
|
|
135
139
|
]
|
|
136
140
|
);
|
|
141
|
+
var conversationReads = sqliteTable(
|
|
142
|
+
"conversation_reads",
|
|
143
|
+
{
|
|
144
|
+
user_id: integer("user_id").notNull().references(() => users.id, { onDelete: "cascade" }),
|
|
145
|
+
conversation_id: text("conversation_id").notNull().references(() => conversations.id, { onDelete: "cascade" }),
|
|
146
|
+
last_read_message_id: integer("last_read_message_id").notNull().default(0)
|
|
147
|
+
},
|
|
148
|
+
(table) => [
|
|
149
|
+
uniqueIndex("idx_conversation_reads_unique").on(table.user_id, table.conversation_id)
|
|
150
|
+
]
|
|
151
|
+
);
|
|
137
152
|
var messages = sqliteTable(
|
|
138
153
|
"messages",
|
|
139
154
|
{
|
|
@@ -182,6 +197,7 @@ export {
|
|
|
182
197
|
sharedSkills,
|
|
183
198
|
deliveryQueue,
|
|
184
199
|
activity,
|
|
200
|
+
conversationReads,
|
|
185
201
|
messages,
|
|
186
202
|
getDb
|
|
187
203
|
};
|
|
@@ -132,17 +132,18 @@ async function restartService(mode) {
|
|
|
132
132
|
}
|
|
133
133
|
function readDaemonConfig() {
|
|
134
134
|
const configPath = resolve(voluteHome(), "daemon.json");
|
|
135
|
-
if (!existsSync(configPath)) return { hostname: "127.0.0.1", port:
|
|
135
|
+
if (!existsSync(configPath)) return { hostname: "127.0.0.1", port: 1618 };
|
|
136
136
|
try {
|
|
137
137
|
const config = JSON.parse(readFileSync(configPath, "utf-8"));
|
|
138
138
|
return {
|
|
139
139
|
hostname: config.hostname || "127.0.0.1",
|
|
140
|
-
port: config.port ??
|
|
140
|
+
port: config.port ?? 1618,
|
|
141
|
+
internalPort: config.internalPort,
|
|
141
142
|
token: config.token
|
|
142
143
|
};
|
|
143
144
|
} catch {
|
|
144
145
|
console.error("Warning: could not read daemon config, using defaults.");
|
|
145
|
-
return { hostname: "127.0.0.1", port:
|
|
146
|
+
return { hostname: "127.0.0.1", port: 1618 };
|
|
146
147
|
}
|
|
147
148
|
}
|
|
148
149
|
function modeLabel(mode) {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
readVoluteConfig,
|
|
4
4
|
writeVoluteConfig
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-SIAG3QMM.js";
|
|
6
6
|
import {
|
|
7
7
|
mindEnvPath,
|
|
8
8
|
readEnv,
|
|
@@ -39,7 +39,7 @@ async function run(args) {
|
|
|
39
39
|
return;
|
|
40
40
|
}
|
|
41
41
|
const wsDir = resolveWorkspace(inputPath);
|
|
42
|
-
const { daemonFetch } = await import("./daemon-client-
|
|
42
|
+
const { daemonFetch } = await import("./daemon-client-JOVQZ52X.js");
|
|
43
43
|
const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
|
|
44
44
|
const client = getClient();
|
|
45
45
|
const res = await daemonFetch(urlOf(client.api.minds.import.$url()), {
|
|
@@ -91,7 +91,7 @@ async function importArchive(archivePath, nameOverride) {
|
|
|
91
91
|
process.exit(1);
|
|
92
92
|
}
|
|
93
93
|
try {
|
|
94
|
-
const { daemonFetch } = await import("./daemon-client-
|
|
94
|
+
const { daemonFetch } = await import("./daemon-client-JOVQZ52X.js");
|
|
95
95
|
const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
|
|
96
96
|
const client = getClient();
|
|
97
97
|
const res = await daemonFetch(urlOf(client.api.minds.import.$url()), {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
getDb,
|
|
4
4
|
sharedSkills
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-33XAVCS4.js";
|
|
6
6
|
import {
|
|
7
7
|
logger_default
|
|
8
8
|
} from "./chunk-YUIHSKR6.js";
|
|
@@ -41,13 +41,15 @@ function sharedSkillsDir() {
|
|
|
41
41
|
}
|
|
42
42
|
function parseSkillMd(content) {
|
|
43
43
|
const match = content.match(/^---\n([\s\S]*?)\n---/);
|
|
44
|
-
if (!match) return { name: "", description: "" };
|
|
44
|
+
if (!match) return { name: "", description: "", npmDependencies: [] };
|
|
45
45
|
const frontmatter = match[1];
|
|
46
46
|
const nameMatch = frontmatter.match(/^name:\s*(.+)$/m);
|
|
47
47
|
const descMatch = frontmatter.match(/^description:\s*(.+)$/m);
|
|
48
|
+
const depsMatch = frontmatter.match(/^\s*npm-dependencies:\s*(.+)$/m);
|
|
48
49
|
return {
|
|
49
50
|
name: nameMatch?.[1].trim() ?? "",
|
|
50
|
-
description: descMatch?.[1].trim() ?? ""
|
|
51
|
+
description: descMatch?.[1].trim() ?? "",
|
|
52
|
+
npmDependencies: depsMatch ? depsMatch[1].trim().split(/[\s,]+/).filter(Boolean) : []
|
|
51
53
|
};
|
|
52
54
|
}
|
|
53
55
|
async function listSharedSkills() {
|
|
@@ -127,7 +129,32 @@ async function installSkill(_mindName, dir, skillId) {
|
|
|
127
129
|
if (existsSync(destDir)) throw new Error(`Skill already installed: ${skillId}`);
|
|
128
130
|
mkdirSync(destDir, { recursive: true });
|
|
129
131
|
cpSync(sourceDir, destDir, { recursive: true });
|
|
132
|
+
const npmInstalled = [];
|
|
133
|
+
const skillMdPath = join(sourceDir, "SKILL.md");
|
|
134
|
+
if (existsSync(skillMdPath)) {
|
|
135
|
+
const { npmDependencies } = parseSkillMd(readFileSync(skillMdPath, "utf-8"));
|
|
136
|
+
if (npmDependencies.length > 0) {
|
|
137
|
+
try {
|
|
138
|
+
await exec("npm", ["install", ...npmDependencies], { cwd: dir });
|
|
139
|
+
npmInstalled.push(...npmDependencies);
|
|
140
|
+
} catch (e) {
|
|
141
|
+
rmSync(destDir, { recursive: true });
|
|
142
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
143
|
+
throw new Error(
|
|
144
|
+
`Failed to install npm dependencies (${npmDependencies.join(", ")}): ${msg}`
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
let installNotes = null;
|
|
150
|
+
const installMdPath = join(destDir, "references", "INSTALL.md");
|
|
151
|
+
if (existsSync(installMdPath)) {
|
|
152
|
+
installNotes = readFileSync(installMdPath, "utf-8");
|
|
153
|
+
}
|
|
130
154
|
await gitExec(["add", join("home", ".claude", "skills", skillId)], { cwd: dir });
|
|
155
|
+
if (npmInstalled.length > 0) {
|
|
156
|
+
await gitExec(["add", "package.json", "package-lock.json"], { cwd: dir });
|
|
157
|
+
}
|
|
131
158
|
await gitExec(["commit", "-m", `Install shared skill: ${skillId}`], { cwd: dir });
|
|
132
159
|
const commitHash = (await gitExec(["rev-parse", "HEAD"], { cwd: dir })).trim();
|
|
133
160
|
const upstream = {
|
|
@@ -141,6 +168,7 @@ async function installSkill(_mindName, dir, skillId) {
|
|
|
141
168
|
cwd: dir
|
|
142
169
|
});
|
|
143
170
|
await gitExec(["commit", "--amend", "--no-edit"], { cwd: dir });
|
|
171
|
+
return { installNotes, npmInstalled };
|
|
144
172
|
}
|
|
145
173
|
async function uninstallSkill(_mindName, dir, skillId) {
|
|
146
174
|
validateSkillId(skillId);
|