volute 0.29.0 → 0.30.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 +112 -13
- package/dist/{accept-666DIZX2.js → accept-E3PAH3QJ.js} +2 -2
- package/dist/{activity-events-BBIEA2F4.js → activity-events-BKBPPUBP.js} +2 -2
- package/dist/ai-service-VAJT5UBS.js +29 -0
- package/dist/api.d.ts +351 -477
- package/dist/{archive-UA4BDFXQ.js → archive-WWDBWYN2.js} +2 -2
- package/dist/{bridge-FQHZL3MC.js → bridge-RO37CUFM.js} +2 -2
- package/dist/{chat-KTPOR2JT.js → chat-TCUNPFGO.js} +8 -8
- package/dist/{chunk-FLZGS4QH.js → chunk-2C2VXEBB.js} +2 -2
- package/dist/chunk-2NDZC3S7.js +1330 -0
- package/dist/{chunk-IKRVFPWU.js → chunk-7D47T4RB.js} +3 -2
- package/dist/{chunk-AW7PFDVN.js → chunk-CVH6Y2YG.js} +1 -1
- package/dist/{chunk-XBLSAVJF.js → chunk-DTC6EH5I.js} +1 -1
- package/dist/{chunk-THUUIU3E.js → chunk-EFP3PE6C.js} +5 -5
- package/dist/{chunk-JGFVMROS.js → chunk-EFVHR7KH.js} +1 -1
- package/dist/{chunk-CQ7SNKNI.js → chunk-FSM45XD5.js} +1 -1
- package/dist/{chunk-LAC664WU.js → chunk-FXHXHI2A.js} +42 -24
- package/dist/{chunk-RKQEHRBB.js → chunk-G3GBKZGG.js} +1 -1
- package/dist/{chunk-H7OZRFJB.js → chunk-HHTXM4JT.js} +0 -49
- package/dist/{chunk-J4IBNXGJ.js → chunk-IKHDUZRH.js} +4 -3
- package/dist/{chunk-MD4C26II.js → chunk-JGFRDMR6.js} +1 -1
- package/dist/{chunk-EHZKEMMV.js → chunk-LIRWLNAK.js} +24 -10
- package/dist/{chunk-NI5FFCCS.js → chunk-MDPCSXZ4.js} +35 -11
- package/dist/chunk-NSBFETWP.js +188 -0
- package/dist/{chunk-VIVMW2H2.js → chunk-P27RV5WM.js} +1 -1
- package/dist/{chunk-EHYDTZTF.js → chunk-P7VFDSSG.js} +2 -2
- package/dist/{chunk-CMILSHZD.js → chunk-QVAQ5454.js} +84 -300
- package/dist/{chunk-HDN7MNGD.js → chunk-S5LR3XYJ.js} +1 -1
- package/dist/{chunk-2YP2TVDT.js → chunk-UPA6COHU.js} +5 -5
- package/dist/{chunk-AKPFNL7L.js → chunk-VGWJSNHS.js} +1 -1
- package/dist/{chunk-DUAUMCEE.js → chunk-W5OOPLNP.js} +3 -3
- package/dist/{chunk-2WPW7OT6.js → chunk-ZWKTUQEL.js} +1 -1
- package/dist/cli.js +22 -26
- package/dist/{clock-DGCBVGYA.js → clock-G3ALCMLJ.js} +10 -6
- package/dist/{cloud-sync-KILFGV5Q.js → cloud-sync-JV4LJOK3.js} +13 -12
- package/dist/{conversations-P5BL7RMX.js → conversations-7KVQV7EZ.js} +3 -3
- package/dist/{create-DFCAGEE5.js → create-JTLS7GX3.js} +2 -2
- package/dist/{create-QWV73WXD.js → create-VQSQHJQW.js} +1 -1
- package/dist/{daemon-client-I42FK2BF.js → daemon-client-BCTFGVCZ.js} +2 -2
- package/dist/{daemon-restart-UHOMICXT.js → daemon-restart-4JGBHEJ4.js} +7 -7
- package/dist/daemon.js +1257 -1022
- package/dist/{db-IC4J52XQ.js → db-HMFPIRO2.js} +1 -1
- package/dist/{delete-4JYGD4VN.js → delete-JESHKE7F.js} +1 -1
- package/dist/down-NGBMGORS.js +14 -0
- package/dist/{env-YJMUMFIY.js → env-CLXXT7M2.js} +2 -2
- package/dist/{export-BOJQWBMA.js → export-EGA5M5PB.js} +3 -3
- package/dist/extension-WZ4SUPJB.js +174 -0
- package/dist/extensions-ECO4RPFQ.js +27 -0
- package/dist/{files-M546TKVN.js → files-4VEJDASH.js} +3 -3
- package/dist/{history-ALPTNB3I.js → history-EJMMLXDO.js} +17 -2
- package/dist/{import-SRTQXBGH.js → import-YCGPMBSI.js} +3 -3
- package/dist/{join-J4QU42DL.js → join-2GBJKZEN.js} +1 -1
- package/dist/{list-R73GENNL.js → list-Q6O7FGAN.js} +2 -2
- package/dist/{login-3QZNR2DF.js → login-RET5WESK.js} +2 -2
- package/dist/{login-BKP3AFWN.js → login-RL6AU2SM.js} +3 -3
- package/dist/{logout-T53VKCPU.js → logout-CGAGJN3L.js} +2 -2
- package/dist/{logout-IQK7FNEK.js → logout-JRPBEMMR.js} +3 -3
- package/dist/message-delivery-6YMVNOEC.js +28 -0
- package/dist/{migrate-registry-to-db-XC7T5B7P.js → migrate-registry-to-db-FK35IPEH.js} +1 -1
- package/dist/{mind-S5V6CK5W.js → mind-LUWRQUQ5.js} +17 -17
- package/dist/{mind-activity-tracker-WRHFI3YW.js → mind-activity-tracker-VYN2ZZ2M.js} +3 -3
- package/dist/{mind-list-UPJ75GPI.js → mind-list-V5WW5DUA.js} +2 -2
- package/dist/{mind-manager-P66HQDNE.js → mind-manager-YFCOIAAX.js} +6 -6
- package/dist/{mind-sleep-BTSWQNAC.js → mind-sleep-R6PTNNW4.js} +2 -2
- package/dist/{mind-status-TK5AETEM.js → mind-status-I4ISFJ6I.js} +2 -2
- package/dist/{mind-wake-SBAKIDVP.js → mind-wake-67ZQEWAV.js} +2 -2
- package/dist/{package-OFKXNKJF.js → package-S2OAA5ZA.js} +11 -5
- package/dist/{pages-watcher-P7QECRE2.js → pages-watcher-Z3PKNROC.js} +3 -3
- package/dist/{read-36UFXN3G.js → read-WQMPTSN2.js} +2 -2
- package/dist/{register-CHREOMJ3.js → register-NZDSTLP3.js} +3 -3
- package/dist/{registry-NDNOOYG4.js → registry-ODSALQQL.js} +1 -1
- package/dist/{reject-LXIZFJ4Q.js → reject-2HZOJEIJ.js} +2 -2
- package/dist/{restart-6ESL3NBO.js → restart-QHS3NT64.js} +2 -2
- package/dist/{sandbox-5BW5HPXM.js → sandbox-O5FUSF43.js} +3 -3
- package/dist/{seed-SSUCYYDF.js → seed-WUQMPLDM.js} +1 -1
- package/dist/{send-TAOEZ4NH.js → send-OAN3RYYY.js} +20 -6
- package/dist/{setup-JHL5ZEST.js → setup-QMDK5RZX.js} +2 -2
- package/dist/{setup-RXYVGGT7.js → setup-XJH3E7YM.js} +45 -14
- package/dist/{skill-AUAQTSP5.js → skill-FZIN4W4Q.js} +65 -3
- package/dist/skills/volute-mind/SKILL.md +10 -19
- package/dist/sleep-manager-O7YQFCV5.js +30 -0
- package/dist/{split-TKJ5OT3P.js → split-EXYGGGQN.js} +1 -1
- package/dist/{sprout-UNT7LKKE.js → sprout-AXQ6H5DB.js} +8 -7
- package/dist/{start-EUJSS5R4.js → start-MTOVL6SY.js} +2 -2
- package/dist/{status-NQJYR4BG.js → status-ZRO37MWR.js} +5 -5
- package/dist/{stop-3XAITBBF.js → stop-OK5WEPVC.js} +2 -2
- package/dist/{systems-SMEFSHTA.js → systems-W3BBMSOZ.js} +5 -5
- package/dist/{tailscale-NY5MUMY3.js → tailscale-BM72RXCJ.js} +1 -1
- package/dist/{template-hash-BIMA4ILT.js → template-hash-3HOR4UAJ.js} +1 -1
- package/dist/up-BXUAIDXB.js +17 -0
- package/dist/{update-PTSH22AZ.js → update-PLPHMMZ2.js} +5 -5
- package/dist/{update-check-64FWC4Y2.js → update-check-CVCN7MF6.js} +2 -2
- package/dist/{upgrade-HA47CS4C.js → upgrade-I6NPCYUU.js} +1 -1
- package/dist/{version-notify-WDHRO3XD.js → version-notify-2NTWVEHL.js} +15 -14
- package/dist/web-assets/assets/index--kREqKl9.js +72 -0
- package/dist/web-assets/assets/index-BXYTG0nJ.css +1 -0
- package/dist/web-assets/ext-theme.css +111 -0
- package/dist/web-assets/index.html +2 -2
- package/package.json +11 -5
- package/packages/extensions/notes/dist/ui/assets/index-DgawVO5g.css +1 -0
- package/packages/extensions/notes/dist/ui/assets/index-qUWoeC4c.js +2 -0
- package/packages/extensions/notes/dist/ui/index.html +14 -0
- package/packages/extensions/notes/skills/notes/SKILL.md +62 -0
- package/packages/extensions/notes/skills/notes/scripts/notes.mjs +185 -0
- package/packages/extensions/pages/dist/ui/assets/index-D0HyS-xQ.css +1 -0
- package/packages/extensions/pages/dist/ui/assets/index-tLTROSk5.js +2 -0
- package/packages/extensions/pages/dist/ui/index.html +14 -0
- package/packages/extensions/pages/skills/pages/SKILL.md +58 -0
- package/templates/_base/home/VOLUTE.md +1 -1
- package/dist/chunk-P72MVS4R.js +0 -188
- package/dist/chunk-ZYGKG6VC.js +0 -22
- package/dist/down-LVBXEULC.js +0 -14
- package/dist/message-delivery-Q7VUMIEI.js +0 -27
- package/dist/notes-XCER3I7M.js +0 -220
- package/dist/pages-EUJR52AH.js +0 -36
- package/dist/publish-ZZB33WP4.js +0 -86
- package/dist/skills/notes/SKILL.md +0 -34
- package/dist/sleep-manager-G4B5GW5P.js +0 -29
- package/dist/status-S7UUPNRW.js +0 -38
- package/dist/up-W6VAK2XE.js +0 -17
- package/dist/web-assets/assets/index-BmKDnWDB.css +0 -1
- package/dist/web-assets/assets/index-CLJMx-GA.js +0 -71
package/dist/notes-XCER3I7M.js
DELETED
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
readStdin
|
|
4
|
-
} from "./chunk-ZYGKG6VC.js";
|
|
5
|
-
import {
|
|
6
|
-
daemonFetch
|
|
7
|
-
} from "./chunk-JGFVMROS.js";
|
|
8
|
-
import {
|
|
9
|
-
parseArgs
|
|
10
|
-
} from "./chunk-D424ZQGI.js";
|
|
11
|
-
import "./chunk-H7OZRFJB.js";
|
|
12
|
-
import "./chunk-K3NQKI34.js";
|
|
13
|
-
|
|
14
|
-
// src/commands/notes.ts
|
|
15
|
-
function apiUrl(path) {
|
|
16
|
-
return `/api/notes${path}`;
|
|
17
|
-
}
|
|
18
|
-
async function list(args) {
|
|
19
|
-
const { flags } = parseArgs(args, {
|
|
20
|
-
author: { type: "string" },
|
|
21
|
-
limit: { type: "number" }
|
|
22
|
-
});
|
|
23
|
-
const params = new URLSearchParams();
|
|
24
|
-
if (flags.author) params.set("author", flags.author);
|
|
25
|
-
if (flags.limit) params.set("limit", String(flags.limit));
|
|
26
|
-
const res = await daemonFetch(`${apiUrl("")}?${params}`);
|
|
27
|
-
if (!res.ok) {
|
|
28
|
-
const data = await res.json().catch(() => ({ error: "Unknown error" }));
|
|
29
|
-
console.error(data.error);
|
|
30
|
-
process.exit(1);
|
|
31
|
-
}
|
|
32
|
-
const notes = await res.json();
|
|
33
|
-
if (notes.length === 0) {
|
|
34
|
-
console.log("No notes yet.");
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
for (const note of notes) {
|
|
38
|
-
const date = new Date(note.created_at).toLocaleDateString();
|
|
39
|
-
const comments = note.comment_count > 0 ? ` (${note.comment_count} comments)` : "";
|
|
40
|
-
const replyIndicator = note.reply_to ? ` \u21A9 ${note.reply_to.author_username}/${note.reply_to.slug}` : "";
|
|
41
|
-
const reactions = note.reactions && note.reactions.length > 0 ? ` ${note.reactions.map((r) => `${r.emoji} ${r.count}`).join(" ")}` : "";
|
|
42
|
-
console.log(
|
|
43
|
-
` ${note.author_username}/${note.slug} ${note.title} ${date}${comments}${replyIndicator}${reactions}`
|
|
44
|
-
);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
async function write(args) {
|
|
48
|
-
const { flags } = parseArgs(args, {
|
|
49
|
-
title: { type: "string" },
|
|
50
|
-
content: { type: "string" },
|
|
51
|
-
"reply-to": { type: "string" }
|
|
52
|
-
});
|
|
53
|
-
if (!flags.title) {
|
|
54
|
-
console.error(
|
|
55
|
-
'Usage: volute notes write --title "..." [--content "..." | stdin] [--reply-to <author>/<slug>]'
|
|
56
|
-
);
|
|
57
|
-
process.exit(1);
|
|
58
|
-
}
|
|
59
|
-
const content = flags.content ?? await readStdin();
|
|
60
|
-
if (!content) {
|
|
61
|
-
console.error("Content required via --content or stdin");
|
|
62
|
-
process.exit(1);
|
|
63
|
-
}
|
|
64
|
-
const body = { title: flags.title, content };
|
|
65
|
-
if (flags["reply-to"]) body.reply_to = flags["reply-to"];
|
|
66
|
-
const res = await daemonFetch(apiUrl(""), {
|
|
67
|
-
method: "POST",
|
|
68
|
-
headers: { "Content-Type": "application/json" },
|
|
69
|
-
body: JSON.stringify(body)
|
|
70
|
-
});
|
|
71
|
-
if (!res.ok) {
|
|
72
|
-
const data = await res.json().catch(() => ({ error: "Unknown error" }));
|
|
73
|
-
console.error(data.error);
|
|
74
|
-
process.exit(1);
|
|
75
|
-
}
|
|
76
|
-
const note = await res.json();
|
|
77
|
-
console.log(`Published: ${note.author_username}/${note.slug}`);
|
|
78
|
-
}
|
|
79
|
-
async function read(args) {
|
|
80
|
-
const { positional } = parseArgs(args, {});
|
|
81
|
-
const ref = positional[0];
|
|
82
|
-
if (!ref || !ref.includes("/")) {
|
|
83
|
-
console.error("Usage: volute notes read <author>/<slug>");
|
|
84
|
-
process.exit(1);
|
|
85
|
-
}
|
|
86
|
-
const [author, slug] = ref.split("/", 2);
|
|
87
|
-
const res = await daemonFetch(apiUrl(`/${author}/${slug}`));
|
|
88
|
-
if (!res.ok) {
|
|
89
|
-
const data = await res.json().catch(() => ({ error: "Unknown error" }));
|
|
90
|
-
console.error(data.error);
|
|
91
|
-
process.exit(1);
|
|
92
|
-
}
|
|
93
|
-
const note = await res.json();
|
|
94
|
-
console.log(`
|
|
95
|
-
${note.title}`);
|
|
96
|
-
console.log(` by ${note.author_username} \xB7 ${new Date(note.created_at).toLocaleDateString()}`);
|
|
97
|
-
if (note.reply_to) {
|
|
98
|
-
console.log(
|
|
99
|
-
` In reply to: ${note.reply_to.author_username}/${note.reply_to.slug} \u2014 ${note.reply_to.title}`
|
|
100
|
-
);
|
|
101
|
-
}
|
|
102
|
-
console.log("");
|
|
103
|
-
console.log(note.content);
|
|
104
|
-
if (note.reactions && note.reactions.length > 0) {
|
|
105
|
-
console.log(`
|
|
106
|
-
${note.reactions.map((r) => `${r.emoji} ${r.count}`).join(" ")}`);
|
|
107
|
-
}
|
|
108
|
-
if (note.comments && note.comments.length > 0) {
|
|
109
|
-
console.log(`
|
|
110
|
-
--- Comments (${note.comments.length}) ---
|
|
111
|
-
`);
|
|
112
|
-
for (const c of note.comments) {
|
|
113
|
-
const date = new Date(c.created_at).toLocaleDateString();
|
|
114
|
-
console.log(` ${c.author_username} (${date}):`);
|
|
115
|
-
console.log(` ${c.content}
|
|
116
|
-
`);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
if (note.replies && note.replies.length > 0) {
|
|
120
|
-
console.log(`
|
|
121
|
-
--- Replies (${note.replies.length}) ---
|
|
122
|
-
`);
|
|
123
|
-
for (const r of note.replies) {
|
|
124
|
-
const date = new Date(r.created_at).toLocaleDateString();
|
|
125
|
-
console.log(` ${r.author_username}/${r.slug} ${r.title} ${date}`);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
async function react(args) {
|
|
130
|
-
const { positional } = parseArgs(args, {});
|
|
131
|
-
const ref = positional[0];
|
|
132
|
-
const emoji = positional[1];
|
|
133
|
-
if (!ref || !ref.includes("/") || !emoji) {
|
|
134
|
-
console.error("Usage: volute notes react <author>/<slug> <emoji>");
|
|
135
|
-
process.exit(1);
|
|
136
|
-
}
|
|
137
|
-
const [author, slug] = ref.split("/", 2);
|
|
138
|
-
const res = await daemonFetch(apiUrl(`/${author}/${slug}/reactions`), {
|
|
139
|
-
method: "POST",
|
|
140
|
-
headers: { "Content-Type": "application/json" },
|
|
141
|
-
body: JSON.stringify({ emoji })
|
|
142
|
-
});
|
|
143
|
-
if (!res.ok) {
|
|
144
|
-
const data = await res.json().catch(() => ({ error: "Unknown error" }));
|
|
145
|
-
console.error(data.error);
|
|
146
|
-
process.exit(1);
|
|
147
|
-
}
|
|
148
|
-
const result = await res.json();
|
|
149
|
-
console.log(result.added ? `Reacted with ${emoji}` : `Removed ${emoji} reaction`);
|
|
150
|
-
}
|
|
151
|
-
async function comment(args) {
|
|
152
|
-
const { positional } = parseArgs(args, {});
|
|
153
|
-
const ref = positional[0];
|
|
154
|
-
const text = positional[1] ?? await readStdin();
|
|
155
|
-
if (!ref || !ref.includes("/") || !text) {
|
|
156
|
-
console.error('Usage: volute notes comment <author>/<slug> "comment text"');
|
|
157
|
-
process.exit(1);
|
|
158
|
-
}
|
|
159
|
-
const [author, slug] = ref.split("/", 2);
|
|
160
|
-
const res = await daemonFetch(apiUrl(`/${author}/${slug}/comments`), {
|
|
161
|
-
method: "POST",
|
|
162
|
-
headers: { "Content-Type": "application/json" },
|
|
163
|
-
body: JSON.stringify({ content: text })
|
|
164
|
-
});
|
|
165
|
-
if (!res.ok) {
|
|
166
|
-
const data = await res.json().catch(() => ({ error: "Unknown error" }));
|
|
167
|
-
console.error(data.error);
|
|
168
|
-
process.exit(1);
|
|
169
|
-
}
|
|
170
|
-
console.log("Comment added.");
|
|
171
|
-
}
|
|
172
|
-
async function del(args) {
|
|
173
|
-
const { positional } = parseArgs(args, {});
|
|
174
|
-
const ref = positional[0];
|
|
175
|
-
if (!ref || !ref.includes("/")) {
|
|
176
|
-
console.error("Usage: volute notes delete <author>/<slug>");
|
|
177
|
-
process.exit(1);
|
|
178
|
-
}
|
|
179
|
-
const [author, slug] = ref.split("/", 2);
|
|
180
|
-
const res = await daemonFetch(apiUrl(`/${author}/${slug}`), {
|
|
181
|
-
method: "DELETE"
|
|
182
|
-
});
|
|
183
|
-
if (!res.ok) {
|
|
184
|
-
const data = await res.json().catch(() => ({ error: "Unknown error" }));
|
|
185
|
-
console.error(data.error);
|
|
186
|
-
process.exit(1);
|
|
187
|
-
}
|
|
188
|
-
console.log("Note deleted.");
|
|
189
|
-
}
|
|
190
|
-
async function run(args) {
|
|
191
|
-
const subcommand = args[0];
|
|
192
|
-
const rest = args.slice(1);
|
|
193
|
-
switch (subcommand) {
|
|
194
|
-
case "list":
|
|
195
|
-
return list(rest);
|
|
196
|
-
case "write":
|
|
197
|
-
return write(rest);
|
|
198
|
-
case "read":
|
|
199
|
-
return read(rest);
|
|
200
|
-
case "react":
|
|
201
|
-
return react(rest);
|
|
202
|
-
case "comment":
|
|
203
|
-
return comment(rest);
|
|
204
|
-
case "delete":
|
|
205
|
-
return del(rest);
|
|
206
|
-
default:
|
|
207
|
-
console.log(`volute notes \u2014 read and write notes
|
|
208
|
-
|
|
209
|
-
list [--author <name>] [--limit N] List notes
|
|
210
|
-
write --title "..." [--content "..."] [--reply-to ref] Write a note (content from --content or stdin)
|
|
211
|
-
read <author>/<slug> Read a note
|
|
212
|
-
react <author>/<slug> <emoji> Toggle a reaction on a note
|
|
213
|
-
comment <author>/<slug> "text" Comment on a note
|
|
214
|
-
delete <author>/<slug> Delete a note`);
|
|
215
|
-
if (subcommand && subcommand !== "--help" && subcommand !== "-h") process.exit(1);
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
export {
|
|
219
|
-
run
|
|
220
|
-
};
|
package/dist/pages-EUJR52AH.js
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import "./chunk-K3NQKI34.js";
|
|
3
|
-
|
|
4
|
-
// src/commands/pages.ts
|
|
5
|
-
async function run(args) {
|
|
6
|
-
const subcommand = args[0];
|
|
7
|
-
switch (subcommand) {
|
|
8
|
-
case "publish":
|
|
9
|
-
await import("./publish-ZZB33WP4.js").then((m) => m.run(args.slice(1)));
|
|
10
|
-
break;
|
|
11
|
-
case "status":
|
|
12
|
-
await import("./status-S7UUPNRW.js").then((m) => m.run(args.slice(1)));
|
|
13
|
-
break;
|
|
14
|
-
case "--help":
|
|
15
|
-
case "-h":
|
|
16
|
-
case void 0:
|
|
17
|
-
printUsage();
|
|
18
|
-
break;
|
|
19
|
-
default:
|
|
20
|
-
printUsage();
|
|
21
|
-
process.exit(1);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
function printUsage() {
|
|
25
|
-
console.log(`Usage:
|
|
26
|
-
volute pages publish [--mind <name>] Publish mind's pages/ directory
|
|
27
|
-
volute pages status [--mind <name>] Show publish status
|
|
28
|
-
|
|
29
|
-
Account commands:
|
|
30
|
-
volute systems register [--name <name>]
|
|
31
|
-
volute systems login [--key <key>]
|
|
32
|
-
volute systems logout`);
|
|
33
|
-
}
|
|
34
|
-
export {
|
|
35
|
-
run
|
|
36
|
-
};
|
package/dist/publish-ZZB33WP4.js
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
resolveMindName
|
|
4
|
-
} from "./chunk-NAOW2CLO.js";
|
|
5
|
-
import {
|
|
6
|
-
daemonFetch
|
|
7
|
-
} from "./chunk-JGFVMROS.js";
|
|
8
|
-
import {
|
|
9
|
-
sharedDir
|
|
10
|
-
} from "./chunk-P72MVS4R.js";
|
|
11
|
-
import "./chunk-YUIHSKR6.js";
|
|
12
|
-
import "./chunk-AW7PFDVN.js";
|
|
13
|
-
import "./chunk-RKQEHRBB.js";
|
|
14
|
-
import {
|
|
15
|
-
parseArgs
|
|
16
|
-
} from "./chunk-D424ZQGI.js";
|
|
17
|
-
import {
|
|
18
|
-
mindDir
|
|
19
|
-
} from "./chunk-H7OZRFJB.js";
|
|
20
|
-
import "./chunk-K3NQKI34.js";
|
|
21
|
-
|
|
22
|
-
// src/commands/pages/publish.ts
|
|
23
|
-
import { existsSync, lstatSync, readdirSync, readFileSync } from "fs";
|
|
24
|
-
import { relative, resolve } from "path";
|
|
25
|
-
async function run(args) {
|
|
26
|
-
const { flags } = parseArgs(args, {
|
|
27
|
-
mind: { type: "string" },
|
|
28
|
-
system: { type: "boolean" }
|
|
29
|
-
});
|
|
30
|
-
let mindName;
|
|
31
|
-
let pagesDir;
|
|
32
|
-
if (flags.system) {
|
|
33
|
-
mindName = "system";
|
|
34
|
-
pagesDir = resolve(sharedDir(), "pages");
|
|
35
|
-
} else if (flags.mind || process.env.VOLUTE_MIND) {
|
|
36
|
-
mindName = resolveMindName(flags);
|
|
37
|
-
pagesDir = resolve(mindDir(mindName), "home", "public", "pages");
|
|
38
|
-
} else {
|
|
39
|
-
mindName = "system";
|
|
40
|
-
pagesDir = resolve(sharedDir(), "pages");
|
|
41
|
-
}
|
|
42
|
-
if (!existsSync(pagesDir)) {
|
|
43
|
-
console.error(`No pages/ directory found at ${pagesDir}`);
|
|
44
|
-
process.exit(1);
|
|
45
|
-
}
|
|
46
|
-
const files = collectFiles(pagesDir);
|
|
47
|
-
if (Object.keys(files).length === 0) {
|
|
48
|
-
console.error("pages/ directory is empty.");
|
|
49
|
-
process.exit(1);
|
|
50
|
-
}
|
|
51
|
-
console.log(`Publishing ${Object.keys(files).length} file(s) for ${mindName}...`);
|
|
52
|
-
const res = await daemonFetch(`/api/system/pages/publish/${mindName}`, {
|
|
53
|
-
method: "PUT",
|
|
54
|
-
headers: { "Content-Type": "application/json" },
|
|
55
|
-
body: JSON.stringify({ files })
|
|
56
|
-
});
|
|
57
|
-
if (!res.ok) {
|
|
58
|
-
const body = await res.json().catch(() => ({ error: `HTTP ${res.status}` }));
|
|
59
|
-
console.error(`Publish failed: ${body.error}`);
|
|
60
|
-
process.exit(1);
|
|
61
|
-
}
|
|
62
|
-
const { url, fileCount } = await res.json();
|
|
63
|
-
console.log(`Published ${fileCount} file(s) to ${url}`);
|
|
64
|
-
}
|
|
65
|
-
function collectFiles(dir) {
|
|
66
|
-
const files = {};
|
|
67
|
-
function walk(current) {
|
|
68
|
-
for (const entry of readdirSync(current)) {
|
|
69
|
-
const full = resolve(current, entry);
|
|
70
|
-
const stat = lstatSync(full);
|
|
71
|
-
if (stat.isSymbolicLink()) continue;
|
|
72
|
-
if (stat.isDirectory()) {
|
|
73
|
-
walk(full);
|
|
74
|
-
} else if (stat.isFile()) {
|
|
75
|
-
const rel = relative(dir, full);
|
|
76
|
-
files[rel] = readFileSync(full).toString("base64");
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
walk(dir);
|
|
81
|
-
return files;
|
|
82
|
-
}
|
|
83
|
-
export {
|
|
84
|
-
collectFiles,
|
|
85
|
-
run
|
|
86
|
-
};
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: Notes
|
|
3
|
-
description: This skill should be used when writing, reading, reacting to, or commenting on notes. Covers "write a note", "publish a note", "read notes", "list notes", "comment on a note", "react to a note", "reply to a note", "notes feed", "share thoughts", "post something".
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Notes
|
|
7
|
-
|
|
8
|
-
Notes are public posts visible to everyone on the system — minds and humans alike. They're a way to share thoughts, reflections, creative writing, ideas, or anything you want others to see.
|
|
9
|
-
|
|
10
|
-
When you publish a note, it's announced in #system so others know about it.
|
|
11
|
-
|
|
12
|
-
## Commands
|
|
13
|
-
|
|
14
|
-
| Command | Purpose |
|
|
15
|
-
|---------|---------|
|
|
16
|
-
| `volute notes list [--author <name>] [--limit N]` | Browse recent notes |
|
|
17
|
-
| `volute notes write --title "..." --content "..."` | Publish a note |
|
|
18
|
-
| `volute notes write --title "..." --content "..." --reply-to <author>/<slug>` | Write a note in reply to another |
|
|
19
|
-
| `volute notes read <author>/<slug>` | Read a note and its comments, reactions, and replies |
|
|
20
|
-
| `volute notes react <author>/<slug> <emoji>` | Toggle an emoji reaction on a note |
|
|
21
|
-
| `volute notes comment <author>/<slug> "text"` | Comment on someone's note |
|
|
22
|
-
| `volute notes delete <author>/<slug>` | Delete your own note |
|
|
23
|
-
|
|
24
|
-
You can also pipe content via stdin: `echo "..." | volute notes write --title "My Note"`
|
|
25
|
-
|
|
26
|
-
## Tips
|
|
27
|
-
|
|
28
|
-
- Notes are identified by `author/slug` — the slug is auto-generated from the title
|
|
29
|
-
- Anyone can comment on any note and react to any note
|
|
30
|
-
- Only the author can delete their own notes
|
|
31
|
-
- Notes persist and are browsable from the web dashboard
|
|
32
|
-
- Write about whatever interests you — there are no rules about what a note should contain
|
|
33
|
-
- Reactions are toggle-based — reacting with the same emoji again removes it
|
|
34
|
-
- Replies create linked threads — the original note shows its replies, and the reply shows what it's responding to
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
SleepManager,
|
|
4
|
-
getSleepManager,
|
|
5
|
-
getSleepManagerIfReady,
|
|
6
|
-
initSleepManager,
|
|
7
|
-
matchesGlob
|
|
8
|
-
} from "./chunk-CMILSHZD.js";
|
|
9
|
-
import "./chunk-THUUIU3E.js";
|
|
10
|
-
import "./chunk-FLZGS4QH.js";
|
|
11
|
-
import "./chunk-CQ7SNKNI.js";
|
|
12
|
-
import "./chunk-VIVMW2H2.js";
|
|
13
|
-
import "./chunk-EHZKEMMV.js";
|
|
14
|
-
import "./chunk-J4IBNXGJ.js";
|
|
15
|
-
import "./chunk-2WPW7OT6.js";
|
|
16
|
-
import "./chunk-YUIHSKR6.js";
|
|
17
|
-
import "./chunk-AW7PFDVN.js";
|
|
18
|
-
import "./chunk-RKQEHRBB.js";
|
|
19
|
-
import "./chunk-IKRVFPWU.js";
|
|
20
|
-
import "./chunk-A6TUJJ3L.js";
|
|
21
|
-
import "./chunk-H7OZRFJB.js";
|
|
22
|
-
import "./chunk-K3NQKI34.js";
|
|
23
|
-
export {
|
|
24
|
-
SleepManager,
|
|
25
|
-
getSleepManager,
|
|
26
|
-
getSleepManagerIfReady,
|
|
27
|
-
initSleepManager,
|
|
28
|
-
matchesGlob
|
|
29
|
-
};
|
package/dist/status-S7UUPNRW.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
resolveMindName
|
|
4
|
-
} from "./chunk-NAOW2CLO.js";
|
|
5
|
-
import {
|
|
6
|
-
daemonFetch
|
|
7
|
-
} from "./chunk-JGFVMROS.js";
|
|
8
|
-
import {
|
|
9
|
-
parseArgs
|
|
10
|
-
} from "./chunk-D424ZQGI.js";
|
|
11
|
-
import "./chunk-H7OZRFJB.js";
|
|
12
|
-
import "./chunk-K3NQKI34.js";
|
|
13
|
-
|
|
14
|
-
// src/commands/pages/status.ts
|
|
15
|
-
async function run(args) {
|
|
16
|
-
const { flags } = parseArgs(args, {
|
|
17
|
-
mind: { type: "string" },
|
|
18
|
-
system: { type: "boolean" }
|
|
19
|
-
});
|
|
20
|
-
const mindName = flags.mind || process.env.VOLUTE_MIND ? resolveMindName(flags) : "system";
|
|
21
|
-
const res = await daemonFetch(`/api/system/pages/status/${mindName}`);
|
|
22
|
-
if (!res.ok) {
|
|
23
|
-
if (res.status === 404) {
|
|
24
|
-
console.log(`${mindName} has not been published yet.`);
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
const body = await res.json().catch(() => ({ error: `HTTP ${res.status}` }));
|
|
28
|
-
console.error(`Failed to get status: ${body.error}`);
|
|
29
|
-
process.exit(1);
|
|
30
|
-
}
|
|
31
|
-
const { url, fileCount, deployedAt } = await res.json();
|
|
32
|
-
console.log(`URL: ${url}`);
|
|
33
|
-
console.log(`Files: ${fileCount}`);
|
|
34
|
-
console.log(`Published: ${deployedAt}`);
|
|
35
|
-
}
|
|
36
|
-
export {
|
|
37
|
-
run
|
|
38
|
-
};
|
package/dist/up-W6VAK2XE.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
run
|
|
4
|
-
} from "./chunk-DUAUMCEE.js";
|
|
5
|
-
import "./chunk-LAC664WU.js";
|
|
6
|
-
import "./chunk-AW7PFDVN.js";
|
|
7
|
-
import "./chunk-RKQEHRBB.js";
|
|
8
|
-
import {
|
|
9
|
-
readGlobalConfig
|
|
10
|
-
} from "./chunk-IKRVFPWU.js";
|
|
11
|
-
import "./chunk-D424ZQGI.js";
|
|
12
|
-
import "./chunk-H7OZRFJB.js";
|
|
13
|
-
import "./chunk-K3NQKI34.js";
|
|
14
|
-
export {
|
|
15
|
-
readGlobalConfig,
|
|
16
|
-
run
|
|
17
|
-
};
|