@vibes.diy/api-svc 4.2.2 → 4.3.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/intern/attempt-backend-fetch.js +8 -0
- package/intern/attempt-backend-fetch.js.map +1 -1
- package/intern/attempt-backend-onchange.js +8 -0
- package/intern/attempt-backend-onchange.js.map +1 -1
- package/intern/attempt-backend-scheduled.js +8 -0
- package/intern/attempt-backend-scheduled.js.map +1 -1
- package/intern/backend-ai-callback.d.ts +10 -0
- package/intern/backend-ai-callback.js +117 -0
- package/intern/backend-ai-callback.js.map +1 -0
- package/intern/backend-ai-op.d.ts +1 -0
- package/intern/backend-ai-op.js +2 -0
- package/intern/backend-ai-op.js.map +1 -0
- package/intern/backend-do-addr.d.ts +3 -0
- package/intern/backend-do-addr.js +2 -0
- package/intern/backend-do-addr.js.map +1 -1
- package/intern/swr-html-cache-orchestrator.d.ts +2 -0
- package/intern/swr-html-cache-orchestrator.js +8 -2
- package/intern/swr-html-cache-orchestrator.js.map +1 -1
- package/intern/swr-purge.js +6 -3
- package/intern/swr-purge.js.map +1 -1
- package/package.json +13 -13
|
@@ -3,6 +3,7 @@ import { parseBackendJsMode, selectBackendExecutor } from "@vibes.diy/vibe-runti
|
|
|
3
3
|
import { loadSelectedBackend } from "./load-selected-backend.js";
|
|
4
4
|
import { loadVibeSecrets } from "./load-vibe-secrets.js";
|
|
5
5
|
import { makeBackendDbCallback, resolveBackendWriteIdentity } from "./backend-db-callback.js";
|
|
6
|
+
import { makeBackendAiCallback } from "./backend-ai-callback.js";
|
|
6
7
|
export async function attemptBackendFetch(vctx, input) {
|
|
7
8
|
const rExec = exception2Result(() => selectBackendExecutor(parseBackendJsMode(input.backendJs), {
|
|
8
9
|
loader: input.loader,
|
|
@@ -32,6 +33,12 @@ export async function attemptBackendFetch(vctx, input) {
|
|
|
32
33
|
adminMode: false,
|
|
33
34
|
});
|
|
34
35
|
const secrets = await loadVibeSecrets(vctx, input.ownerHandle, input.appSlug);
|
|
36
|
+
const ai = makeBackendAiCallback(vctx, {
|
|
37
|
+
ownerHandle: input.ownerHandle,
|
|
38
|
+
appSlug: input.appSlug,
|
|
39
|
+
triggerUserId: input.userId ?? null,
|
|
40
|
+
lane: "fetch",
|
|
41
|
+
});
|
|
35
42
|
const rRes = await exception2Result(async () => {
|
|
36
43
|
const payload = await serializeRequest(input.request);
|
|
37
44
|
return executor.invoke({
|
|
@@ -40,6 +47,7 @@ export async function attemptBackendFetch(vctx, input) {
|
|
|
40
47
|
trigger: { userHandle: identity.userContext?.userHandle ?? input.userHandle ?? null, payload },
|
|
41
48
|
secrets,
|
|
42
49
|
db,
|
|
50
|
+
ai,
|
|
43
51
|
dbFetcher: input.dbFetcher,
|
|
44
52
|
});
|
|
45
53
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attempt-backend-fetch.js","sourceRoot":"","sources":["../../jsr/intern/attempt-backend-fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAwB,MAAM,6CAA6C,CAAC;AAG9H,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"attempt-backend-fetch.js","sourceRoot":"","sources":["../../jsr/intern/attempt-backend-fetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { parseBackendJsMode, selectBackendExecutor } from "@vibes.diy/vibe-runti
|
|
|
3
3
|
import { loadSelectedBackend } from "./load-selected-backend.js";
|
|
4
4
|
import { loadVibeSecrets } from "./load-vibe-secrets.js";
|
|
5
5
|
import { makeBackendDbCallback, resolveBackendWriteIdentity } from "./backend-db-callback.js";
|
|
6
|
+
import { makeBackendAiCallback } from "./backend-ai-callback.js";
|
|
6
7
|
export async function attemptBackendOnChange(vctx, input) {
|
|
7
8
|
const rExec = exception2Result(() => selectBackendExecutor(parseBackendJsMode(input.backendJs), {
|
|
8
9
|
loader: input.loader,
|
|
@@ -31,6 +32,12 @@ export async function attemptBackendOnChange(vctx, input) {
|
|
|
31
32
|
adminMode: false,
|
|
32
33
|
});
|
|
33
34
|
const secrets = await loadVibeSecrets(vctx, input.ownerHandle, input.appSlug);
|
|
35
|
+
const ai = makeBackendAiCallback(vctx, {
|
|
36
|
+
ownerHandle: input.ownerHandle,
|
|
37
|
+
appSlug: input.appSlug,
|
|
38
|
+
triggerUserId: input.writerUserId ?? null,
|
|
39
|
+
lane: "onchange",
|
|
40
|
+
});
|
|
34
41
|
const rRes = await exception2Result(async () => executor.invoke({
|
|
35
42
|
source: loaded.source,
|
|
36
43
|
handler: "onChange",
|
|
@@ -47,6 +54,7 @@ export async function attemptBackendOnChange(vctx, input) {
|
|
|
47
54
|
},
|
|
48
55
|
secrets,
|
|
49
56
|
db,
|
|
57
|
+
ai,
|
|
50
58
|
dbFetcher: input.dbFetcher,
|
|
51
59
|
}));
|
|
52
60
|
if (rRes.isErr())
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attempt-backend-onchange.js","sourceRoot":"","sources":["../../jsr/intern/attempt-backend-onchange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAwB,MAAM,6CAA6C,CAAC;AAG9H,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"attempt-backend-onchange.js","sourceRoot":"","sources":["../../jsr/intern/attempt-backend-onchange.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { parseBackendJsMode, selectBackendExecutor } from "@vibes.diy/vibe-runti
|
|
|
3
3
|
import { loadSelectedBackend } from "./load-selected-backend.js";
|
|
4
4
|
import { loadVibeSecrets } from "./load-vibe-secrets.js";
|
|
5
5
|
import { makeBackendDbCallback, resolveOwnerWriteIdentity } from "./backend-db-callback.js";
|
|
6
|
+
import { makeBackendAiCallback } from "./backend-ai-callback.js";
|
|
6
7
|
export async function attemptBackendScheduled(vctx, input) {
|
|
7
8
|
const rExec = exception2Result(() => selectBackendExecutor(parseBackendJsMode(input.backendJs), {
|
|
8
9
|
loader: input.loader,
|
|
@@ -27,12 +28,19 @@ export async function attemptBackendScheduled(vctx, input) {
|
|
|
27
28
|
adminMode: true,
|
|
28
29
|
});
|
|
29
30
|
const secrets = await loadVibeSecrets(vctx, input.ownerHandle, input.appSlug);
|
|
31
|
+
const ai = makeBackendAiCallback(vctx, {
|
|
32
|
+
ownerHandle: input.ownerHandle,
|
|
33
|
+
appSlug: input.appSlug,
|
|
34
|
+
triggerUserId: null,
|
|
35
|
+
lane: "scheduled",
|
|
36
|
+
});
|
|
30
37
|
const rRes = await exception2Result(async () => executor.invoke({
|
|
31
38
|
source: loaded.source,
|
|
32
39
|
handler: "scheduled",
|
|
33
40
|
trigger: { userHandle: input.ownerHandle, payload: { scheduledTime: input.scheduledTime } },
|
|
34
41
|
secrets,
|
|
35
42
|
db,
|
|
43
|
+
ai,
|
|
36
44
|
dbFetcher: input.dbFetcher,
|
|
37
45
|
}));
|
|
38
46
|
if (rRes.isErr())
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attempt-backend-scheduled.js","sourceRoot":"","sources":["../../jsr/intern/attempt-backend-scheduled.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAwB,MAAM,6CAA6C,CAAC;AAG9H,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"attempt-backend-scheduled.js","sourceRoot":"","sources":["../../jsr/intern/attempt-backend-scheduled.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { BackendAiCallback } from "@vibes.diy/vibe-runtime/backend-executor.js";
|
|
2
|
+
import { VibesApiSQLCtx } from "../types.js";
|
|
3
|
+
export declare const MAX_AI_CALLS_PER_INVOCATION = 5;
|
|
4
|
+
export interface BackendAiCallbackBase {
|
|
5
|
+
readonly ownerHandle: string;
|
|
6
|
+
readonly appSlug: string;
|
|
7
|
+
readonly triggerUserId: string | null;
|
|
8
|
+
readonly lane: "onchange" | "fetch" | "scheduled";
|
|
9
|
+
}
|
|
10
|
+
export declare function makeBackendAiCallback(vctx: VibesApiSQLCtx, base: BackendAiCallbackBase): BackendAiCallback;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { costCentsFromUsage } from "../billing.js";
|
|
2
|
+
import { resolveOwnerWriteIdentity } from "./backend-db-callback.js";
|
|
3
|
+
export const MAX_AI_CALLS_PER_INVOCATION = 5;
|
|
4
|
+
const MAX_PROMPT_CHARS = 64_000;
|
|
5
|
+
const DEFAULT_MAX_TOKENS = 1_500;
|
|
6
|
+
const MAX_MAX_TOKENS = 8_192;
|
|
7
|
+
const DEFAULT_MODEL = "openrouter/auto";
|
|
8
|
+
const AI_TIMEOUT_MS = 45_000;
|
|
9
|
+
function completionText(json) {
|
|
10
|
+
const content = json.choices?.[0]?.message?.content;
|
|
11
|
+
if (typeof content === "string")
|
|
12
|
+
return content;
|
|
13
|
+
if (Array.isArray(content)) {
|
|
14
|
+
const text = content
|
|
15
|
+
.map((p) => p && typeof p === "object" && typeof p.text === "string" ? p.text : "")
|
|
16
|
+
.join("");
|
|
17
|
+
return text.length > 0 ? text : undefined;
|
|
18
|
+
}
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
export function makeBackendAiCallback(vctx, base) {
|
|
22
|
+
let calls = 0;
|
|
23
|
+
let billedUserIdP;
|
|
24
|
+
const billedUserId = () => {
|
|
25
|
+
billedUserIdP ??=
|
|
26
|
+
base.triggerUserId !== null
|
|
27
|
+
? Promise.resolve(base.triggerUserId)
|
|
28
|
+
: resolveOwnerWriteIdentity(vctx, { ownerHandle: base.ownerHandle, appSlug: base.appSlug }).then((id) => id.userId);
|
|
29
|
+
return billedUserIdP;
|
|
30
|
+
};
|
|
31
|
+
return async (op) => {
|
|
32
|
+
if (calls >= MAX_AI_CALLS_PER_INVOCATION) {
|
|
33
|
+
return { ok: false, error: `ctx.callAI call budget exceeded (max ${MAX_AI_CALLS_PER_INVOCATION} per invocation)` };
|
|
34
|
+
}
|
|
35
|
+
calls++;
|
|
36
|
+
if (typeof op.prompt !== "string" || op.prompt.length === 0) {
|
|
37
|
+
return { ok: false, error: "ctx.callAI requires a non-empty string prompt" };
|
|
38
|
+
}
|
|
39
|
+
if (op.prompt.length > MAX_PROMPT_CHARS) {
|
|
40
|
+
return { ok: false, error: `ctx.callAI prompt too long (max ${MAX_PROMPT_CHARS} chars)` };
|
|
41
|
+
}
|
|
42
|
+
const userId = await billedUserId();
|
|
43
|
+
if (vctx.billing.enforceEnabled) {
|
|
44
|
+
if (userId === null) {
|
|
45
|
+
return { ok: false, error: "ctx.callAI denied: no billable identity for this invocation" };
|
|
46
|
+
}
|
|
47
|
+
const rCheck = await vctx.billing.checkCredits({ userId });
|
|
48
|
+
if (rCheck.isErr()) {
|
|
49
|
+
vctx.logger
|
|
50
|
+
.Warn()
|
|
51
|
+
.Err(rCheck)
|
|
52
|
+
.Str("vibe", `${base.ownerHandle}/${base.appSlug}`)
|
|
53
|
+
.Msg("backend-ai-billing-check-failed-open");
|
|
54
|
+
}
|
|
55
|
+
else if (rCheck.Ok().allowed === false) {
|
|
56
|
+
return { ok: false, error: "credits-exhausted: the AI credits for this app's account are used up" };
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const opts = op.options ?? {};
|
|
60
|
+
const model = typeof opts.model === "string" && opts.model.length > 0 ? opts.model : DEFAULT_MODEL;
|
|
61
|
+
const maxTokens = Math.min(Math.max(1, Math.floor(typeof opts.max_tokens === "number" ? opts.max_tokens : DEFAULT_MAX_TOKENS)), MAX_MAX_TOKENS);
|
|
62
|
+
const temperature = typeof opts.temperature === "number" ? Math.min(Math.max(0, opts.temperature), 2) : undefined;
|
|
63
|
+
const req = {
|
|
64
|
+
model,
|
|
65
|
+
stream: false,
|
|
66
|
+
max_tokens: maxTokens,
|
|
67
|
+
...(temperature !== undefined ? { temperature } : {}),
|
|
68
|
+
messages: [{ role: "user", content: [{ type: "text", text: op.prompt }] }],
|
|
69
|
+
};
|
|
70
|
+
let res;
|
|
71
|
+
try {
|
|
72
|
+
res = await vctx.llmRequest({ ...req, headers: vctx.params.llm.headers }, { signal: AbortSignal.timeout(AI_TIMEOUT_MS) });
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return { ok: false, error: "ctx.callAI: ai gateway unreachable" };
|
|
76
|
+
}
|
|
77
|
+
if (!res.ok) {
|
|
78
|
+
await res.body?.cancel().catch(() => undefined);
|
|
79
|
+
return { ok: false, error: `ctx.callAI: ai gateway error (status ${res.status})` };
|
|
80
|
+
}
|
|
81
|
+
let json;
|
|
82
|
+
try {
|
|
83
|
+
json = (await res.json());
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return { ok: false, error: "ctx.callAI: ai gateway returned malformed JSON" };
|
|
87
|
+
}
|
|
88
|
+
const text = completionText(json);
|
|
89
|
+
if (text === undefined) {
|
|
90
|
+
return { ok: false, error: "ctx.callAI: ai gateway returned no completion" };
|
|
91
|
+
}
|
|
92
|
+
const usage = json.usage && typeof json.usage.total_tokens === "number" ? json.usage : undefined;
|
|
93
|
+
const totalTokens = usage?.total_tokens ?? Math.ceil((op.prompt.length + text.length) / 4);
|
|
94
|
+
const costCents = costCentsFromUsage({ given: usage ? [usage] : [], calculated: { total_tokens: totalTokens } });
|
|
95
|
+
if (userId !== null && costCents > 0) {
|
|
96
|
+
const rTrack = await vctx.billing.trackUsage({
|
|
97
|
+
userId,
|
|
98
|
+
costCents,
|
|
99
|
+
promptId: `backend-ai-${crypto.randomUUID()}`,
|
|
100
|
+
model,
|
|
101
|
+
mode: `backend-${base.lane}`,
|
|
102
|
+
});
|
|
103
|
+
if (rTrack.isErr()) {
|
|
104
|
+
vctx.logger.Warn().Err(rTrack).Str("vibe", `${base.ownerHandle}/${base.appSlug}`).Msg("backend-ai-billing-track-failed");
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else if (userId === null) {
|
|
108
|
+
vctx.logger.Warn().Str("vibe", `${base.ownerHandle}/${base.appSlug}`).Msg("backend-ai-unbilled-no-identity");
|
|
109
|
+
}
|
|
110
|
+
vctx.logger
|
|
111
|
+
.Info()
|
|
112
|
+
.Any("event", { vibe: `${base.ownerHandle}/${base.appSlug}`, lane: base.lane, model, totalTokens, costCents })
|
|
113
|
+
.Msg("backend-ai-call");
|
|
114
|
+
return { ok: true, text };
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=backend-ai-callback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend-ai-callback.js","sourceRoot":"","sources":["../../jsr/intern/backend-ai-callback.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { BACKEND_AI_OP_URL, handleBackendAiOp } from "@vibes.diy/vibe-runtime/backend-executor.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend-ai-op.js","sourceRoot":"","sources":["../../jsr/intern/backend-ai-op.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC"}
|
|
@@ -15,6 +15,8 @@ export declare function sanitizeBackendApiForwardHeaders(headers: MutableHeaders
|
|
|
15
15
|
}): void;
|
|
16
16
|
export type BackendDoLane = {
|
|
17
17
|
readonly lane: "db-op";
|
|
18
|
+
} | {
|
|
19
|
+
readonly lane: "ai-op";
|
|
18
20
|
} | {
|
|
19
21
|
readonly lane: "control-plane";
|
|
20
22
|
readonly op: string;
|
|
@@ -39,6 +41,7 @@ export declare function classifyBackendDoRequest(input: {
|
|
|
39
41
|
readonly internalSecret: string | undefined;
|
|
40
42
|
readonly providedAuth: string | null;
|
|
41
43
|
readonly dbOpUrl: string;
|
|
44
|
+
readonly aiOpUrl?: string;
|
|
42
45
|
}): BackendDoLane;
|
|
43
46
|
export declare function backendDoName(ownerHandle: string, appSlug: string): string;
|
|
44
47
|
export {};
|
|
@@ -18,6 +18,8 @@ export function sanitizeBackendApiForwardHeaders(headers, target) {
|
|
|
18
18
|
export function classifyBackendDoRequest(input) {
|
|
19
19
|
if (input.url === input.dbOpUrl)
|
|
20
20
|
return { lane: "db-op" };
|
|
21
|
+
if (input.aiOpUrl !== undefined && input.url === input.aiOpUrl)
|
|
22
|
+
return { lane: "ai-op" };
|
|
21
23
|
const authorized = isControlPlaneAuthorized(input.internalSecret, input.providedAuth);
|
|
22
24
|
const addressed = !!input.ownerHandle && !!input.appSlug;
|
|
23
25
|
if (input.op === BACKEND_OP_ARM || input.op === BACKEND_OP_ONCHANGE) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend-do-addr.js","sourceRoot":"","sources":["../../jsr/intern/backend-do-addr.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,oBAAoB,GAAG,cAAc,CAAC;AACnD,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC;AAOjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAChD,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC;AAEpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC;AAW9C,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAyB,CAAC;AAWtE,MAAM,UAAU,wBAAwB,CAAC,MAA0B,EAAE,QAAuB;IAC1F,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B,CAAC;AAyBD,MAAM,UAAU,gCAAgC,CAAC,OAAuB,EAAE,MAAgD;IACxH,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAClC,OAAO,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AACnD,CAAC;
|
|
1
|
+
{"version":3,"file":"backend-do-addr.js","sourceRoot":"","sources":["../../jsr/intern/backend-do-addr.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,oBAAoB,GAAG,cAAc,CAAC;AACnD,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC;AAOjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAChD,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC;AAEpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC;AAW9C,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAyB,CAAC;AAWtE,MAAM,UAAU,wBAAwB,CAAC,MAA0B,EAAE,QAAuB;IAC1F,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B,CAAC;AAyBD,MAAM,UAAU,gCAAgC,CAAC,OAAuB,EAAE,MAAgD;IACxH,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAClC,OAAO,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AACnD,CAAC;AAiCD,MAAM,UAAU,wBAAwB,CAAC,KAUxC;IACC,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAG1D,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACzF,MAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IACtF,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;IACzD,IAAI,KAAK,CAAC,EAAE,KAAK,cAAc,IAAI,KAAK,CAAC,EAAE,KAAK,mBAAmB,EAAE,CAAC;QACpE,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;YAC5B,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,WAAqB,EAAE,OAAO,EAAE,KAAK,CAAC,OAAiB,EAAE,CAAC;QAC7H,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,8BAA8B,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAC/E,CAAC;IACD,IAAI,UAAU,IAAI,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,WAAqB,EAAE,OAAO,EAAE,KAAK,CAAC,OAAiB,EAAE,CAAC;IAChI,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,sCAAsC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACvF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC5B,CAAC;AAOD,MAAM,UAAU,aAAa,CAAC,WAAmB,EAAE,OAAe;IAChE,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;IAC/C,OAAO,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;AACzD,CAAC"}
|
|
@@ -11,4 +11,6 @@ export interface ServeRootHtmlWithSwrOpts {
|
|
|
11
11
|
readonly waitUntil: (p: Promise<unknown>) => void;
|
|
12
12
|
readonly workspaceNpmUrl?: string;
|
|
13
13
|
}
|
|
14
|
+
export declare function bareRootHtmlSwrKey(origin: string, workspaceNpmUrl: string | undefined): string;
|
|
15
|
+
export declare function pinnedRootHtmlSwrKey(origin: string, npmUrl: string): string;
|
|
14
16
|
export declare function serveRootHtmlWithSwr(opts: ServeRootHtmlWithSwrOpts): Promise<Response>;
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { CACHEABLE_MARKER_HEADER, CACHED_AT_HEADER, CACHE_STATE_HEADER, cachedAtOf, fromStoredResponse, isPlatformWorkspaceNpmUrl, swrDecision, toCacheableStoredResponse, } from "./swr-html-cache.js";
|
|
2
2
|
import { etagMatches } from "../public/etag-utils.js";
|
|
3
|
+
export function bareRootHtmlSwrKey(origin, workspaceNpmUrl) {
|
|
4
|
+
return `${origin}/?vibes-root-swr=ws-${encodeURIComponent(workspaceNpmUrl ?? "")}`;
|
|
5
|
+
}
|
|
6
|
+
export function pinnedRootHtmlSwrKey(origin, npmUrl) {
|
|
7
|
+
return `${origin}/?npmUrl=${encodeURIComponent(npmUrl)}`;
|
|
8
|
+
}
|
|
3
9
|
function eligibleKey(req, workspaceNpmUrl) {
|
|
4
10
|
if (req.method !== "GET")
|
|
5
11
|
return undefined;
|
|
@@ -11,14 +17,14 @@ function eligibleKey(req, workspaceNpmUrl) {
|
|
|
11
17
|
if (url.pathname !== "/" && url.pathname !== "/index.html")
|
|
12
18
|
return undefined;
|
|
13
19
|
if (url.search === "")
|
|
14
|
-
return
|
|
20
|
+
return bareRootHtmlSwrKey(url.origin, workspaceNpmUrl);
|
|
15
21
|
const params = [...url.searchParams];
|
|
16
22
|
if (params.length !== 1 || params[0][0] !== "npmUrl")
|
|
17
23
|
return undefined;
|
|
18
24
|
const npmUrl = params[0][1];
|
|
19
25
|
if (workspaceNpmUrl === undefined || !isPlatformWorkspaceNpmUrl(npmUrl, workspaceNpmUrl))
|
|
20
26
|
return undefined;
|
|
21
|
-
return
|
|
27
|
+
return pinnedRootHtmlSwrKey(url.origin, npmUrl);
|
|
22
28
|
}
|
|
23
29
|
function refreshRequest(req) {
|
|
24
30
|
const headers = new Headers(req.headers);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swr-html-cache-orchestrator.js","sourceRoot":"","sources":["../../jsr/intern/swr-html-cache-orchestrator.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,kBAAkB,EAClB,yBAAyB,EACzB,WAAW,EACX,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"swr-html-cache-orchestrator.js","sourceRoot":"","sources":["../../jsr/intern/swr-html-cache-orchestrator.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,kBAAkB,EAClB,yBAAyB,EACzB,WAAW,EACX,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAoCtD,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,eAAmC;IACpF,OAAO,GAAG,MAAM,uBAAuB,kBAAkB,CAAC,eAAe,IAAI,EAAE,CAAC,EAAE,CAAC;AACrF,CAAC;AAOD,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,MAAc;IACjE,OAAO,GAAG,MAAM,YAAY,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;AAC3D,CAAC;AAWD,SAAS,WAAW,CAAC,GAAY,EAAE,eAAmC;IACpE,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK;QAAE,OAAO,SAAS,CAAC;IAI3C,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,UAAU;QAAE,OAAO,SAAS,CAAC;IAGvE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;QAAE,OAAO,SAAS,CAAC;IAClF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,aAAa;QAAE,OAAO,SAAS,CAAC;IAK7E,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE;QAAE,OAAO,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC;IACrC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACvE,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,eAAe,KAAK,SAAS,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,eAAe,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3G,OAAO,oBAAoB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAID,SAAS,cAAc,CAAC,GAAY;IAClC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAChC,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACpC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAA8B,EAAE,GAAW;IACvE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,yBAAyB,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAClE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;SAAM,CAAC;QAKN,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAKD,SAAS,QAAQ,CAAC,GAAY,EAAE,IAAmB;IACjD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7C,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAChD,OAAO,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAA8B;IACvE,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5D,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC7E,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;gBAGtB,IAAI,CAAC,SAAS,CACZ,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAC5B,GAAG,EAAE,CAAC,SAAS,EACf,GAAG,EAAE,CAAC,SAAS,CAChB,CACF,CAAC;YACJ,CAAC;YACD,MAAM,UAAU,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,sBAAsB,CAAC;YAC5E,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBACvD,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,EAAE,eAAe,EAAE,mCAAmC,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;gBAClH,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACxC,IAAI,IAAI,KAAK,IAAI;oBAAE,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACvC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACjC,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AACjE,CAAC"}
|
package/intern/swr-purge.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { calcEntryPointUrl } from "../entry-point-utils.js";
|
|
2
|
-
import {
|
|
2
|
+
import { bareRootHtmlSwrKey, pinnedRootHtmlSwrKey } from "./swr-html-cache-orchestrator.js";
|
|
3
3
|
export function purgeRootHtmlCacheSameColo(vctx, ownerHandle, appSlug) {
|
|
4
4
|
try {
|
|
5
5
|
const entry = calcEntryPointUrl({ ...vctx.params.vibes.svc, bindings: { ownerHandle, appSlug } });
|
|
6
|
-
const
|
|
7
|
-
|
|
6
|
+
const origin = new URL(entry).origin;
|
|
7
|
+
const workspace = vctx.params.pkgRepos.workspace;
|
|
8
|
+
for (const key of [bareRootHtmlSwrKey(origin, workspace), pinnedRootHtmlSwrKey(origin, workspace)]) {
|
|
9
|
+
void Promise.resolve(vctx.cache.delete(key)).catch(() => undefined);
|
|
10
|
+
}
|
|
8
11
|
}
|
|
9
12
|
catch {
|
|
10
13
|
}
|
package/intern/swr-purge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swr-purge.js","sourceRoot":"","sources":["../../jsr/intern/swr-purge.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"swr-purge.js","sourceRoot":"","sources":["../../jsr/intern/swr-purge.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAG5F,MAAM,UAAU,0BAA0B,CAAC,IAAoB,EAAE,WAAmB,EAAE,OAAe;IACnG,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAClG,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;QAMjD,KAAK,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,oBAAoB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;YACnG,KAAK,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;IAET,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibes.diy/api-svc",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -18,20 +18,20 @@
|
|
|
18
18
|
"@libsql/client": "~0.17.4",
|
|
19
19
|
"@neondatabase/serverless": "~1.1.0",
|
|
20
20
|
"@noble/hashes": "~2.2.0",
|
|
21
|
-
"@vibes.diy/api-impl": "4.
|
|
22
|
-
"@vibes.diy/api-pkg": "4.
|
|
23
|
-
"@vibes.diy/api-sql": "4.
|
|
24
|
-
"@vibes.diy/api-types": "4.
|
|
25
|
-
"@vibes.diy/call-ai-v2": "4.
|
|
26
|
-
"@vibes.diy/identity": "4.
|
|
27
|
-
"@vibes.diy/prompts": "4.
|
|
28
|
-
"@vibes.diy/use-vibes-base": "4.
|
|
29
|
-
"@vibes.diy/vibe-db-explorer": "4.
|
|
30
|
-
"@vibes.diy/vibe-runtime": "4.
|
|
31
|
-
"@vibes.diy/vibe-types": "4.
|
|
21
|
+
"@vibes.diy/api-impl": "4.3.0",
|
|
22
|
+
"@vibes.diy/api-pkg": "4.3.0",
|
|
23
|
+
"@vibes.diy/api-sql": "4.3.0",
|
|
24
|
+
"@vibes.diy/api-types": "4.3.0",
|
|
25
|
+
"@vibes.diy/call-ai-v2": "4.3.0",
|
|
26
|
+
"@vibes.diy/identity": "4.3.0",
|
|
27
|
+
"@vibes.diy/prompts": "4.3.0",
|
|
28
|
+
"@vibes.diy/use-vibes-base": "4.3.0",
|
|
29
|
+
"@vibes.diy/vibe-db-explorer": "4.3.0",
|
|
30
|
+
"@vibes.diy/vibe-runtime": "4.3.0",
|
|
31
|
+
"@vibes.diy/vibe-types": "4.3.0",
|
|
32
32
|
"acorn": "~8.17.0",
|
|
33
33
|
"arktype": "~2.2.2",
|
|
34
|
-
"call-ai": "4.
|
|
34
|
+
"call-ai": "4.3.0",
|
|
35
35
|
"cookie": "~1.1.1",
|
|
36
36
|
"drizzle-orm": "~0.45.2",
|
|
37
37
|
"jose": "~6.2.2",
|