@vibes.diy/api-svc 2.0.0-dev-cli-d → 2.0.0-dev-cli-i

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 (96) hide show
  1. package/cf-serve.d.ts +1 -4
  2. package/cf-serve.js +10 -15
  3. package/cf-serve.js.map +1 -1
  4. package/check-auth.js +13 -3
  5. package/check-auth.js.map +1 -1
  6. package/create-handler.d.ts +5 -6
  7. package/create-handler.js +6 -32
  8. package/create-handler.js.map +1 -1
  9. package/index.d.ts +0 -1
  10. package/index.js +0 -1
  11. package/index.js.map +1 -1
  12. package/intern/ensure-application-chat-id.js +5 -5
  13. package/intern/ensure-application-chat-id.js.map +1 -1
  14. package/intern/ensure-chat-id.js +45 -33
  15. package/intern/ensure-chat-id.js.map +1 -1
  16. package/intern/ensure-slug-binding.d.ts +12 -26
  17. package/intern/ensure-slug-binding.js +125 -29
  18. package/intern/ensure-slug-binding.js.map +1 -1
  19. package/intern/get-model-defaults.d.ts +12 -0
  20. package/intern/get-model-defaults.js +90 -0
  21. package/intern/get-model-defaults.js.map +1 -0
  22. package/intern/get-slug-binding.d.ts +2 -3
  23. package/intern/get-slug-binding.js +13 -4
  24. package/intern/get-slug-binding.js.map +1 -1
  25. package/intern/grouped-vibe-import-map.d.ts +2 -0
  26. package/intern/grouped-vibe-import-map.js +2 -0
  27. package/intern/grouped-vibe-import-map.js.map +1 -1
  28. package/intern/render-vibe.d.ts +2 -2
  29. package/intern/render-vibe.js.map +1 -1
  30. package/intern/resend-prev-msg.js +5 -13
  31. package/intern/resend-prev-msg.js.map +1 -1
  32. package/intern/write-apps.d.ts +4 -5
  33. package/intern/write-apps.js +27 -18
  34. package/intern/write-apps.js.map +1 -1
  35. package/models.json +179 -0
  36. package/package.json +19 -16
  37. package/peers/s3.d.ts +1 -1
  38. package/public/ensure-app-settings.js +39 -12
  39. package/public/ensure-app-settings.js.map +1 -1
  40. package/public/ensure-app-slug-item.js +23 -47
  41. package/public/ensure-app-slug-item.js.map +1 -1
  42. package/public/ensure-user-settings.js +9 -8
  43. package/public/ensure-user-settings.js.map +1 -1
  44. package/public/get-chat-details.js +7 -5
  45. package/public/get-chat-details.js.map +1 -1
  46. package/public/invite-flow.js +59 -36
  47. package/public/invite-flow.js.map +1 -1
  48. package/public/list-models.d.ts +14 -0
  49. package/public/list-models.js +41 -0
  50. package/public/list-models.js.map +1 -0
  51. package/public/open-chat.js +2 -2
  52. package/public/open-chat.js.map +1 -1
  53. package/public/prompt-chat-section.d.ts +1 -1
  54. package/public/prompt-chat-section.js +40 -15
  55. package/public/prompt-chat-section.js.map +1 -1
  56. package/public/request-flow.js +65 -53
  57. package/public/request-flow.js.map +1 -1
  58. package/public/user-slug-bindings.d.ts +5 -0
  59. package/public/user-slug-bindings.js +144 -0
  60. package/public/user-slug-bindings.js.map +1 -0
  61. package/types.d.ts +37 -18
  62. package/types.js +27 -1
  63. package/types.js.map +1 -1
  64. package/usage-report/README.md +27 -0
  65. package/usage-report/inspect-db-report-template.d.ts +29 -0
  66. package/usage-report/inspect-db-report-template.js +379 -0
  67. package/usage-report/inspect-db-report-template.js.map +1 -0
  68. package/usage-report/inspect-db-report.d.ts +1 -0
  69. package/usage-report/inspect-db-report.js +264 -0
  70. package/usage-report/inspect-db-report.js.map +1 -0
  71. package/usage-report/inspect-db.d.ts +1 -0
  72. package/usage-report/inspect-db.js +226 -0
  73. package/usage-report/inspect-db.js.map +1 -0
  74. package/vibes-msg-evento.js +3 -1
  75. package/vibes-msg-evento.js.map +1 -1
  76. package/intern/ensure-storage.d.ts +0 -26
  77. package/intern/ensure-storage.js +0 -86
  78. package/intern/ensure-storage.js.map +0 -1
  79. package/intern/send-email.d.ts +0 -4
  80. package/intern/send-email.js +0 -55
  81. package/intern/send-email.js.map +0 -1
  82. package/intern/store-screenshot.d.ts +0 -17
  83. package/intern/store-screenshot.js +0 -36
  84. package/intern/store-screenshot.js.map +0 -1
  85. package/peers/sql.d.ts +0 -22
  86. package/peers/sql.js +0 -102
  87. package/peers/sql.js.map +0 -1
  88. package/sql/tables.d.ts +0 -1536
  89. package/sql/tables.js +0 -38
  90. package/sql/tables.js.map +0 -1
  91. package/sql/vibes-diy-api-schema-pg.d.ts +0 -1418
  92. package/sql/vibes-diy-api-schema-pg.js +0 -141
  93. package/sql/vibes-diy-api-schema-pg.js.map +0 -1
  94. package/sql/vibes-diy-api-schema-sqlite.d.ts +0 -1536
  95. package/sql/vibes-diy-api-schema-sqlite.js +0 -131
  96. package/sql/vibes-diy-api-schema-sqlite.js.map +0 -1
@@ -0,0 +1,226 @@
1
+ import * as fs from "node:fs";
2
+ import * as path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import { Pool } from "@neondatabase/serverless";
5
+ import { Result, exception2Result } from "@adviser/cement";
6
+ function printUsage() {
7
+ console.log(`
8
+ Usage:
9
+ pnpm --dir vibes.diy/api/svc run inspect:db info
10
+ pnpm --dir vibes.diy/api/svc run inspect:db tables
11
+ pnpm --dir vibes.diy/api/svc run inspect:db table UserSettings --limit 20
12
+ pnpm --dir vibes.diy/api/svc run inspect:db sql "select * from \\"UserSettings\\" limit 5"
13
+
14
+ Environment:
15
+ NEON_DATABASE_URL or DATABASE_URL must be set.
16
+
17
+ Examples:
18
+ NEON_DATABASE_URL="$(pbpaste)" pnpm --dir vibes.diy/api/svc run inspect:db info
19
+ NEON_DATABASE_URL="$(pbpaste)" pnpm --dir vibes.diy/api/svc run inspect:db tables
20
+ NEON_DATABASE_URL="$(pbpaste)" pnpm --dir vibes.diy/api/svc run inspect:db table UserSettings --limit 5
21
+ NEON_DATABASE_URL="$(pbpaste)" pnpm --dir vibes.diy/api/svc run inspect:db sql "select userId, updated from \\"UserSettings\\" order by updated desc limit 5"
22
+ `.trim());
23
+ }
24
+ function quoteIdentifier(value) {
25
+ return `"${value.replaceAll('"', '""')}"`;
26
+ }
27
+ async function listTables(pool) {
28
+ const result = await pool.query(`
29
+ select table_schema, table_name
30
+ from information_schema.tables
31
+ where table_type = 'BASE TABLE'
32
+ and table_schema not in ('pg_catalog', 'information_schema')
33
+ order by table_schema, table_name
34
+ `);
35
+ return result.rows;
36
+ }
37
+ async function getConnectionInfo(pool) {
38
+ const [{ rows: currentRows }, { rows: schemaRows }] = await Promise.all([
39
+ pool.query(`
40
+ select
41
+ current_database() as database,
42
+ current_schema() as current_schema,
43
+ current_user as current_user,
44
+ inet_server_addr()::text as server_addr,
45
+ inet_server_port() as server_port
46
+ `),
47
+ pool.query(`
48
+ select schema_name
49
+ from information_schema.schemata
50
+ where schema_name not in ('pg_catalog', 'information_schema')
51
+ order by schema_name
52
+ `),
53
+ ]);
54
+ return {
55
+ ...(currentRows[0] ?? {}),
56
+ schemas: schemaRows.map((row) => row.schema_name),
57
+ };
58
+ }
59
+ async function resolveTable(pool, requestedName) {
60
+ const tables = await listTables(pool);
61
+ const normalizedRequest = requestedName.trim();
62
+ const dottedRequest = normalizedRequest.includes(".") ? normalizedRequest : `public.${normalizedRequest}`;
63
+ const exact = tables.find((table) => table.table_name === normalizedRequest || `${table.table_schema}.${table.table_name}` === normalizedRequest);
64
+ if (exact !== undefined) {
65
+ return Result.Ok(exact);
66
+ }
67
+ const folded = normalizedRequest.toLowerCase();
68
+ const foldedDotted = dottedRequest.toLowerCase();
69
+ const caseInsensitive = tables.find((table) => table.table_name.toLowerCase() === folded || `${table.table_schema}.${table.table_name}`.toLowerCase() === foldedDotted);
70
+ if (caseInsensitive !== undefined) {
71
+ return Result.Ok(caseInsensitive);
72
+ }
73
+ return Result.Err(`unknown table: ${requestedName}. Run 'pnpm --dir vibes.diy/api/svc run inspect:db tables' to see actual tables in this database`);
74
+ }
75
+ function loadDevVars() {
76
+ const scriptDir = path.dirname(fileURLToPath(import.meta.url));
77
+ const candidatePaths = [path.join(scriptDir, "..", ".dev.vars"), path.join(process.cwd(), ".dev.vars")];
78
+ for (const candidatePath of candidatePaths) {
79
+ if (!fs.existsSync(candidatePath)) {
80
+ continue;
81
+ }
82
+ const content = fs.readFileSync(candidatePath, "utf8");
83
+ for (const rawLine of content.split(/\r?\n/)) {
84
+ const line = rawLine.trim();
85
+ if (line === "" || line.startsWith("#")) {
86
+ continue;
87
+ }
88
+ const separator = line.indexOf("=");
89
+ if (separator <= 0) {
90
+ continue;
91
+ }
92
+ const key = line.slice(0, separator).trim();
93
+ let value = line.slice(separator + 1).trim();
94
+ if ((value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) {
95
+ value = value.slice(1, -1);
96
+ }
97
+ if (!(key in process.env)) {
98
+ process.env[key] = value;
99
+ }
100
+ }
101
+ }
102
+ }
103
+ function parseArgs(argv) {
104
+ const args = [...argv];
105
+ const command = args.shift();
106
+ let limit = 20;
107
+ while (args.length > 0) {
108
+ const idx = args.findIndex((arg) => arg === "--limit");
109
+ if (idx === -1)
110
+ break;
111
+ const raw = args[idx + 1];
112
+ if (raw === undefined) {
113
+ return Result.Err("--limit requires a number");
114
+ }
115
+ const parsed = Number.parseInt(raw, 10);
116
+ if (!Number.isFinite(parsed) || parsed <= 0) {
117
+ return Result.Err(`invalid --limit value: ${raw}`);
118
+ }
119
+ limit = parsed;
120
+ args.splice(idx, 2);
121
+ }
122
+ return Result.Ok({ command, args, limit });
123
+ }
124
+ function assertReadonlySql(sql) {
125
+ const normalized = sql.trim().replace(/;+$/, "").toLowerCase();
126
+ if (normalized === "") {
127
+ return Result.Err("SQL is empty");
128
+ }
129
+ if (!(normalized.startsWith("select ") ||
130
+ normalized.startsWith("with ") ||
131
+ normalized.startsWith("show ") ||
132
+ normalized.startsWith("explain "))) {
133
+ return Result.Err("Only read-only SELECT/WITH/SHOW/EXPLAIN statements are allowed");
134
+ }
135
+ return Result.Ok(sql);
136
+ }
137
+ async function run() {
138
+ loadDevVars();
139
+ const rParsed = parseArgs(process.argv.slice(2));
140
+ if (rParsed.isErr()) {
141
+ return Result.Err(rParsed);
142
+ }
143
+ const { command, args, limit } = rParsed.Ok();
144
+ if (command === undefined || command === "help" || command === "--help" || command === "-h") {
145
+ printUsage();
146
+ return Result.Ok(undefined);
147
+ }
148
+ const connectionString = process.env["NEON_DATABASE_URL"] ?? process.env["DATABASE_URL"];
149
+ if (connectionString === undefined) {
150
+ printUsage();
151
+ return Result.Err("NEON_DATABASE_URL or DATABASE_URL is required");
152
+ }
153
+ const pool = new Pool({ connectionString });
154
+ const result = await exception2Result(async () => {
155
+ if (command === "info") {
156
+ const info = await getConnectionInfo(pool);
157
+ console.log(JSON.stringify(info, null, 2));
158
+ return;
159
+ }
160
+ if (command === "tables") {
161
+ const [info, tables] = await Promise.all([getConnectionInfo(pool), listTables(pool)]);
162
+ console.log(JSON.stringify({ ...info, tables }, null, 2));
163
+ return;
164
+ }
165
+ if (command === "table") {
166
+ const requestedTableName = args[0];
167
+ if (requestedTableName === undefined) {
168
+ throw new Error("table name is required");
169
+ }
170
+ const rTable = await resolveTable(pool, requestedTableName);
171
+ if (rTable.isErr()) {
172
+ throw new Error(rTable.Err().message);
173
+ }
174
+ const table = rTable.Ok();
175
+ const sql = `select * from ${quoteIdentifier(table.table_schema)}.${quoteIdentifier(table.table_name)} order by 1 desc limit $1`;
176
+ const queryResult = await pool.query(sql, [limit]);
177
+ console.log(JSON.stringify({
178
+ table: `${table.table_schema}.${table.table_name}`,
179
+ rowCount: queryResult.rowCount,
180
+ rows: queryResult.rows,
181
+ }, null, 2));
182
+ return;
183
+ }
184
+ if (command === "sql") {
185
+ const sql = args.join(" ").trim();
186
+ const rSql = assertReadonlySql(sql);
187
+ if (rSql.isErr()) {
188
+ throw new Error(rSql.Err().message);
189
+ }
190
+ const queryResult = await pool.query(sql);
191
+ console.log(JSON.stringify({
192
+ rowCount: queryResult.rowCount,
193
+ rows: queryResult.rows,
194
+ }, null, 2));
195
+ return;
196
+ }
197
+ throw new Error(`unknown command: ${command}`);
198
+ });
199
+ await pool.end();
200
+ return result;
201
+ }
202
+ function formatError(error) {
203
+ if (typeof error === "string")
204
+ return error;
205
+ if (typeof error === "object" && error !== null) {
206
+ const obj = error;
207
+ if (typeof obj["message"] === "string" && obj["message"] !== "") {
208
+ return obj["message"];
209
+ }
210
+ const nested = obj["error"];
211
+ if (typeof nested === "object" && nested !== null) {
212
+ const nestedObj = nested;
213
+ if (typeof nestedObj["message"] === "string" && nestedObj["message"] !== "") {
214
+ return nestedObj["message"];
215
+ }
216
+ }
217
+ }
218
+ return String(error);
219
+ }
220
+ run().then((result) => {
221
+ if (result.isErr()) {
222
+ console.error(formatError(result.Err()));
223
+ process.exitCode = 1;
224
+ }
225
+ });
226
+ //# sourceMappingURL=inspect-db.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect-db.js","sourceRoot":"","sources":["../../jsr/usage-report/inspect-db.ts"],"names":[],"mappings":"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"}
@@ -14,10 +14,12 @@ import { getCertFromCsrEvento } from "./public/get-cert-from-csr.js";
14
14
  import { getFPCloudTokenEvento } from "./public/get-fp-cloud-token.js";
15
15
  import { promptChatAddFS } from "./public/prompt-chat-add-fs.js";
16
16
  import { createInviteEvento, revokeInviteEvento, redeemInviteEvento, hasAccessInviteEvento, inviteSetRoleEvento, listInviteGrantsEvento, } from "./public/invite-flow.js";
17
+ import { listUserSlugBindingsEvento, createUserSlugBindingEvento, deleteUserSlugBindingEvento, } from "./public/user-slug-bindings.js";
17
18
  import { listRequestGrantsEvento, requestAccessEvento, approveRequestEvento, requestSetRoleEvento, revokeRequestEvento, hasAccessRequestEvento, } from "./public/request-flow.js";
19
+ import { listModelsEvento } from "./public/list-models.js";
18
20
  export const vibesMsgEvento = Lazy(() => {
19
21
  const evento = new Evento(new W3CWebSocketEventEventoEnDecoder());
20
- evento.push(ensureAppSlugItemEvento, getFPCloudTokenEvento, listUserSlugAppSlugEvento, getChatDetailsEvento, getAppByFsIdEvento, openChat, promptChatSection, promptChatAddFS, createInviteEvento, revokeInviteEvento, redeemInviteEvento, hasAccessInviteEvento, inviteSetRoleEvento, listInviteGrantsEvento, requestAccessEvento, hasAccessRequestEvento, approveRequestEvento, requestSetRoleEvento, revokeRequestEvento, listRequestGrantsEvento, getCertFromCsrEvento, ensureAppSettingsEvento, setModeFsIdEvento, ensureUserSettingsEvento, listApplicationChats, {
22
+ evento.push(ensureAppSlugItemEvento, getFPCloudTokenEvento, listUserSlugAppSlugEvento, getChatDetailsEvento, getAppByFsIdEvento, openChat, promptChatSection, promptChatAddFS, createInviteEvento, revokeInviteEvento, redeemInviteEvento, hasAccessInviteEvento, inviteSetRoleEvento, listInviteGrantsEvento, requestAccessEvento, hasAccessRequestEvento, approveRequestEvento, requestSetRoleEvento, revokeRequestEvento, listRequestGrantsEvento, getCertFromCsrEvento, listModelsEvento, ensureAppSettingsEvento, setModeFsIdEvento, ensureUserSettingsEvento, listApplicationChats, listUserSlugBindingsEvento, createUserSlugBindingEvento, deleteUserSlugBindingEvento, {
21
23
  type: EventoType.WildCard,
22
24
  hash: "not-msg-implemented-handler",
23
25
  handle: async (ctx) => {
@@ -1 +1 @@
1
- {"version":3,"file":"vibes-msg-evento.js","sourceRoot":"","sources":["../jsr/vibes-msg-evento.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vibes-msg-evento.js","sourceRoot":"","sources":["../jsr/vibes-msg-evento.ts"],"names":[],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- import { Result, PeerStream, Peer } from "@adviser/cement";
2
- import { Storage, VibesApiTables } from "../types.js";
3
- import { VibesSqlite } from "../create-handler.js";
4
- import { sha256 } from "@noble/hashes/sha2.js";
5
- import { S3Api } from "@vibes.diy/api-types";
6
- import { DBFlavour } from "../sql/tables.js";
7
- export interface CalcCidResult {
8
- cid: string;
9
- size: number;
10
- }
11
- export type PeerStreamWithCommit = PeerStream & {
12
- commit: (iname?: string) => Promise<Result<{
13
- url: string;
14
- }>>;
15
- };
16
- export interface PeerWithCommit extends Peer {
17
- begin: () => Promise<Result<PeerStreamWithCommit>>;
18
- }
19
- export declare class Cider {
20
- readonly h: ReturnType<typeof sha256.create>;
21
- size: number;
22
- readonly processStreamPromise: Promise<void>;
23
- constructor(inStream: ReadableStream<Uint8Array>);
24
- readonly getCID: () => Promise<CalcCidResult>;
25
- }
26
- export declare function ensureStorage(flavour: DBFlavour, db: VibesSqlite, assets: VibesApiTables["assets"], s3: S3Api): Storage;
@@ -1,86 +0,0 @@
1
- import { Result, URI, teeWriter, processStream, Lazy, coerceStreamUint8 } from "@adviser/cement";
2
- import { sha256 } from "@noble/hashes/sha2.js";
3
- import { base58btc } from "multiformats/bases/base58";
4
- import { S3PeerFetch } from "../peers/s3.js";
5
- import { SQLPeer, SQLPeerFetch } from "../peers/sql.js";
6
- export class Cider {
7
- h;
8
- size = 0;
9
- processStreamPromise;
10
- constructor(inStream) {
11
- this.h = sha256.create();
12
- this.processStreamPromise = processStream(inStream, (chunk) => {
13
- this.h.update(chunk);
14
- this.size += chunk.length;
15
- });
16
- }
17
- getCID = Lazy(() => {
18
- return this.processStreamPromise.then(() => {
19
- const cid = base58btc.encode(this.h.digest());
20
- return {
21
- cid,
22
- size: this.size,
23
- };
24
- });
25
- });
26
- }
27
- export function ensureStorage(flavour, db, assets, s3) {
28
- return {
29
- fetch: async (iurl) => {
30
- const peers = [new SQLPeerFetch(flavour, db, assets), new S3PeerFetch(s3)];
31
- const url = URI.from(iurl);
32
- for (const peer of peers) {
33
- const res = await peer.fetch(url);
34
- if (res.IsSome()) {
35
- return res.unwrap();
36
- }
37
- }
38
- return {
39
- type: "fetch.notfound",
40
- url: url.toString(),
41
- };
42
- },
43
- ensure: async (...items) => {
44
- const tees = await Promise.allSettled(items.map((item) => {
45
- const [lag1, lag2] = coerceStreamUint8(item).tee();
46
- const cider = new Cider(lag1);
47
- const peers = [new SQLPeer(flavour, db, assets, cider, 10 * 1024 * 1024)];
48
- return teeWriter(peers, lag2).then(async (rTee) => {
49
- if (rTee.isErr()) {
50
- return Result.Err(rTee);
51
- }
52
- return cider.getCID().then(({ cid, size }) => {
53
- const tok = rTee.Ok().peer;
54
- return tok.commit(cid).then((r) => {
55
- if (r.isErr()) {
56
- return Result.Err(r);
57
- }
58
- return Result.Ok({
59
- cid,
60
- url: r.Ok().url,
61
- size,
62
- });
63
- });
64
- });
65
- });
66
- }));
67
- return tees.map((res) => {
68
- if (res.status !== "fulfilled") {
69
- return Result.Err(new Error(`Failed to process item: ${res.reason}`));
70
- }
71
- if (res.value.isErr()) {
72
- return Result.Err(new Error(`Failed to write to peer: ${res.value.Err()}`));
73
- }
74
- const { cid, url, size } = res.value.Ok();
75
- return Result.Ok({
76
- cid,
77
- getURL: url,
78
- mode: "created",
79
- created: new Date(),
80
- size,
81
- });
82
- });
83
- },
84
- };
85
- }
86
- //# sourceMappingURL=ensure-storage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ensure-storage.js","sourceRoot":"","sources":["../../jsr/intern/ensure-storage.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import { Result } from "@adviser/cement";
2
- import { EmailOps } from "@vibes.diy/api-types";
3
- import { VibesApiSQLCtx } from "../types.js";
4
- export declare function sendEmailOpts(vctx: VibesApiSQLCtx, ops: EmailOps[]): Promise<Result<void>[]>;
@@ -1,55 +0,0 @@
1
- import { BuildURI, Result } from "@adviser/cement";
2
- import { isEmailOpsInvite } from "@vibes.diy/api-types";
3
- export function sendEmailOpts(vctx, ops) {
4
- return Promise.all(ops.map((op) => {
5
- let raw;
6
- const buri = BuildURI.from(vctx.params.vibes.env.VIBES_DIY_PUBLIC_BASE_URL)
7
- .appendRelative("vibe")
8
- .appendRelative(op.userSlug)
9
- .appendRelative(op.appSlug);
10
- if (isEmailOpsInvite(op)) {
11
- buri.setParam("token", op.token);
12
- }
13
- switch (op.action) {
14
- case "invite":
15
- raw = {
16
- to: op.dst,
17
- subject: `You've been invited as ${op.role} a Vibe App from ${op.userSlug}`,
18
- text: [
19
- "Hello,",
20
- `You have been invited as ${op.role} to the app "${op.appSlug}" on Vibes DIY by ${op.userSlug}.`,
21
- "To accept the invitation and start collaborating, please click the link below:",
22
- `${buri.toString()}`,
23
- ].join("\n"),
24
- };
25
- break;
26
- case "req-accepted":
27
- raw = {
28
- to: op.dst,
29
- subject: `Your request to join "${op.appSlug}" has been approved`,
30
- text: [
31
- "Hello,",
32
- `Great news — ${op.userSlug} has approved your request to access the app "${op.appSlug}" on Vibes DIY as ${op.role}.`,
33
- "You can open the app here:",
34
- `${buri.toString()}`,
35
- ].join("\n\n"),
36
- };
37
- break;
38
- case "req-rejected":
39
- raw = {
40
- to: op.dst,
41
- subject: `Your request to join "${op.appSlug}" was not approved`,
42
- text: [
43
- "Hello,",
44
- `Unfortunately, your request to access the app "${op.appSlug}" on Vibes DIY was not approved by ${op.userSlug}.`,
45
- "If you think this was a mistake, you can reach out to the app owner directly.",
46
- ].join("\n\n"),
47
- };
48
- break;
49
- default:
50
- return Result.Err(new Error(`unsupported email action: ${JSON.stringify(op)}`));
51
- }
52
- return vctx.sendEmail(raw);
53
- }));
54
- }
55
- //# sourceMappingURL=send-email.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"send-email.js","sourceRoot":"","sources":["../../jsr/intern/send-email.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAY,gBAAgB,EAAuB,MAAM,sBAAsB,CAAC;AAGvF,MAAM,UAAU,aAAa,CAAC,IAAoB,EAAE,GAAe;IACjE,OAAO,OAAO,CAAC,GAAG,CAChB,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACb,IAAI,GAAyB,CAAC;QAE9B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC;aACxE,cAAc,CAAC,MAAM,CAAC;aACtB,cAAc,CAAC,EAAE,CAAC,QAAQ,CAAC;aAC3B,cAAc,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAE9B,IAAI,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC;YAClB,KAAK,QAAQ;gBACX,GAAG,GAAG;oBACJ,EAAE,EAAE,EAAE,CAAC,GAAG;oBACV,OAAO,EAAE,0BAA0B,EAAE,CAAC,IAAI,oBAAoB,EAAE,CAAC,QAAQ,EAAE;oBAC3E,IAAI,EAAE;wBACJ,QAAQ;wBAER,4BAA4B,EAAE,CAAC,IAAI,gBAAgB,EAAE,CAAC,OAAO,qBAAqB,EAAE,CAAC,QAAQ,GAAG;wBAEhG,gFAAgF;wBAChF,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE;qBACrB,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb,CAAC;gBACF,MAAM;YACR,KAAK,cAAc;gBACjB,GAAG,GAAG;oBACJ,EAAE,EAAE,EAAE,CAAC,GAAG;oBACV,OAAO,EAAE,yBAAyB,EAAE,CAAC,OAAO,qBAAqB;oBACjE,IAAI,EAAE;wBACJ,QAAQ;wBAER,gBAAgB,EAAE,CAAC,QAAQ,iDAAiD,EAAE,CAAC,OAAO,qBAAqB,EAAE,CAAC,IAAI,GAAG;wBAErH,4BAA4B;wBAC5B,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE;qBACrB,CAAC,IAAI,CAAC,MAAM,CAAC;iBACf,CAAC;gBACF,MAAM;YACR,KAAK,cAAc;gBACjB,GAAG,GAAG;oBACJ,EAAE,EAAE,EAAE,CAAC,GAAG;oBACV,OAAO,EAAE,yBAAyB,EAAE,CAAC,OAAO,oBAAoB;oBAChE,IAAI,EAAE;wBACJ,QAAQ;wBAER,kDAAkD,EAAE,CAAC,OAAO,sCAAsC,EAAE,CAAC,QAAQ,GAAG;wBAEhH,+EAA+E;qBAChF,CAAC,IAAI,CAAC,MAAM,CAAC;iBACf,CAAC;gBACF,MAAM;YACR;gBACE,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,6BAA6B,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -1,17 +0,0 @@
1
- import { Result } from "@adviser/cement";
2
- import { VibesSqlite } from "../create-handler.js";
3
- import type { VibesApiTables } from "../types.js";
4
- import { S3Api } from "@vibes.diy/api-types";
5
- import { DBFlavour } from "../sql/tables.js";
6
- export interface StoreScreenshotResult {
7
- readonly fsId: string;
8
- readonly assetUrl: string;
9
- }
10
- export declare function storeScreenshot({ sql, s3Api }: {
11
- s3Api: S3Api;
12
- sql: {
13
- dbFlavour: DBFlavour;
14
- db: VibesSqlite;
15
- tables: Pick<VibesApiTables, "apps" | "assets">;
16
- };
17
- }, fsId: string, screenshotData: Uint8Array): Promise<Result<StoreScreenshotResult>>;
@@ -1,36 +0,0 @@
1
- import { Result, uint8array2stream } from "@adviser/cement";
2
- import { eq } from "drizzle-orm/sql/expressions";
3
- import { type } from "arktype";
4
- import { isMetaScreenShot, MetaItem } from "@vibes.diy/api-types";
5
- import { ensureStorage } from "./ensure-storage.js";
6
- export async function storeScreenshot({ sql, s3Api, }, fsId, screenshotData) {
7
- const { db, tables } = sql;
8
- const found = await db.select().from(tables.apps).where(eq(tables.apps.fsId, fsId)).limit(1);
9
- if (found.length === 0) {
10
- return Result.Err(`App with fsId ${fsId} not found`);
11
- }
12
- const app = found[0];
13
- const meta = MetaItem.array()(app.meta);
14
- if (meta instanceof type.errors) {
15
- return Result.Err(`Invalid meta format: ${meta.summary}`);
16
- }
17
- const [storageResult] = await ensureStorage(sql.dbFlavour, db, tables.assets, s3Api).ensure(uint8array2stream(screenshotData));
18
- if (!storageResult || storageResult.isErr()) {
19
- return Result.Err(`Failed to store screenshot: ${storageResult?.Err()}`);
20
- }
21
- const existingIdx = meta.findIndex((item) => isMetaScreenShot(item));
22
- if (existingIdx >= 0) {
23
- meta.splice(existingIdx, 1);
24
- }
25
- meta.push({
26
- type: "screen-shot-ref",
27
- mime: "image/jpeg",
28
- assetUrl: storageResult.Ok().getURL,
29
- });
30
- await db.update(tables.apps).set({ meta }).where(eq(tables.apps.fsId, fsId));
31
- return Result.Ok({
32
- fsId,
33
- assetUrl: storageResult.Ok().getURL,
34
- });
35
- }
36
- //# sourceMappingURL=store-screenshot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"store-screenshot.js","sourceRoot":"","sources":["../../jsr/intern/store-screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG/B,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAS,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAgBpD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EACE,GAAG,EACH,KAAK,GAIN,EACD,IAAY,EACZ,cAA0B;IAE1B,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAE3B,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE7F,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC,GAAG,CAAC,iBAAiB,IAAI,YAAY,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAGrB,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,IAAI,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;IAMD,MAAM,CAAC,aAAa,CAAC,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;IAC/H,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC;QAC5C,OAAO,MAAM,CAAC,GAAG,CAAC,+BAA+B,aAAa,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC9B,CAAC;IAGD,IAAI,CAAC,IAAI,CAAC;QACR,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,aAAa,CAAC,EAAE,EAAE,CAAC,MAAM;KACpC,CAAC,CAAC;IAGH,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAE7E,OAAO,MAAM,CAAC,EAAE,CAAC;QACf,IAAI;QACJ,QAAQ,EAAE,aAAa,CAAC,EAAE,EAAE,CAAC,MAAM;KACpC,CAAC,CAAC;AACL,CAAC"}
package/peers/sql.d.ts DELETED
@@ -1,22 +0,0 @@
1
- import { Option, URI, Result } from "@adviser/cement";
2
- import { VibesSqlite } from "../create-handler.js";
3
- import type { VibesApiTables } from "../types.js";
4
- import { Cider, PeerStreamWithCommit, PeerWithCommit } from "../intern/ensure-storage.js";
5
- import { FetchResult } from "@vibes.diy/api-types";
6
- import { DBFlavour } from "../sql/tables.js";
7
- export declare class SQLPeer implements PeerWithCommit {
8
- readonly db: VibesSqlite;
9
- readonly assets: VibesApiTables["assets"];
10
- readonly cider: Cider;
11
- readonly cutoffSize: number;
12
- readonly flavour: DBFlavour;
13
- constructor(flavour: DBFlavour, db: VibesSqlite, assets: VibesApiTables["assets"], cider: Cider, cutoffSize: number);
14
- begin(): Promise<Result<PeerStreamWithCommit>>;
15
- }
16
- export declare class SQLPeerFetch {
17
- readonly db: VibesSqlite;
18
- readonly assets: VibesApiTables["assets"];
19
- readonly flavour: DBFlavour;
20
- constructor(flavour: DBFlavour, db: VibesSqlite, assets: VibesApiTables["assets"]);
21
- fetch(url: URI): Promise<Option<FetchResult>>;
22
- }
package/peers/sql.js DELETED
@@ -1,102 +0,0 @@
1
- import { Option, uint8array2stream, exception2Result, concatUint8, Result } from "@adviser/cement";
2
- import { eq } from "drizzle-orm/sql/expressions";
3
- class SQLPeerStream {
4
- owner;
5
- chunks = [];
6
- constructor(owner) {
7
- this.owner = owner;
8
- }
9
- write(chunk) {
10
- this.chunks.push(chunk);
11
- if (this.chunks.reduce((acc, curr) => acc + curr.length, 0) > this.owner.cutoffSize) {
12
- return Promise.reject(new Error("SQLitePeerStream: max size exceeded (4KB)"));
13
- }
14
- return Promise.resolve();
15
- }
16
- async cancel() {
17
- }
18
- async close() {
19
- }
20
- async commit() {
21
- const now = new Date();
22
- const created = now.toISOString();
23
- const { cid: assetID } = await this.owner.cider.getCID();
24
- const res = await exception2Result(() => this.owner.db
25
- .insert(this.owner.assets)
26
- .values({
27
- assetId: assetID,
28
- content: concatUint8(...this.chunks),
29
- created,
30
- })
31
- .onConflictDoNothing());
32
- if (res.isErr()) {
33
- return Result.Err(res);
34
- }
35
- return Result.Ok({
36
- url: `${this.owner.flavour}://Assets/${assetID}`,
37
- });
38
- }
39
- }
40
- export class SQLPeer {
41
- db;
42
- assets;
43
- cider;
44
- cutoffSize;
45
- flavour;
46
- constructor(flavour, db, assets, cider, cutoffSize) {
47
- this.flavour = flavour;
48
- this.db = db;
49
- this.assets = assets;
50
- this.cider = cider;
51
- this.cutoffSize = cutoffSize;
52
- }
53
- begin() {
54
- return Promise.resolve(Result.Ok(new SQLPeerStream(this)));
55
- }
56
- }
57
- export class SQLPeerFetch {
58
- db;
59
- assets;
60
- flavour;
61
- constructor(flavour, db, assets) {
62
- this.flavour = flavour;
63
- this.db = db;
64
- this.assets = assets;
65
- }
66
- async fetch(url) {
67
- let compatProtocol = url.protocol;
68
- if (compatProtocol === "sql:") {
69
- compatProtocol = this.flavour + ":";
70
- }
71
- if (compatProtocol !== `${this.flavour}:`) {
72
- return Promise.resolve(Option.None());
73
- }
74
- const assetId = url.pathname.slice("Assets/".length);
75
- const rAsset = await exception2Result(() => this.db
76
- .select()
77
- .from(this.assets)
78
- .where(eq(this.assets.assetId, assetId))
79
- .limit(1)
80
- .then((r) => r[0]));
81
- if (rAsset.isErr()) {
82
- return Option.Some({
83
- type: "fetch.err",
84
- url: url.toString(),
85
- error: rAsset.Err(),
86
- });
87
- }
88
- const asset = rAsset.Ok();
89
- if (!asset) {
90
- return Option.Some({
91
- type: "fetch.notfound",
92
- url: url.toString(),
93
- });
94
- }
95
- return Option.Some({
96
- type: "fetch.ok",
97
- url: url.toString(),
98
- data: uint8array2stream(asset.content),
99
- });
100
- }
101
- }
102
- //# sourceMappingURL=sql.js.map