@vibes.diy/api-svc 4.5.5 → 5.2.2
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/autumn.config.d.ts +4 -2
- package/autumn.config.js +12 -7
- package/autumn.config.js.map +1 -1
- package/billing.d.ts +77 -1
- package/billing.js +264 -3
- package/billing.js.map +1 -1
- package/cf-serve.d.ts +4 -1
- package/cf-serve.js +23 -0
- package/cf-serve.js.map +1 -1
- package/create-handler.d.ts +9 -1
- package/create-handler.js +5 -0
- package/create-handler.js.map +1 -1
- package/evento-handler-manifest.js +36 -0
- package/evento-handler-manifest.js.map +1 -1
- package/index.d.ts +17 -0
- package/index.js +17 -0
- package/index.js.map +1 -1
- package/intern/backend-db-callback.js +56 -0
- package/intern/backend-db-callback.js.map +1 -1
- package/intern/backend-egress.d.ts +1 -1
- package/intern/backend-egress.js +74 -22
- package/intern/backend-egress.js.map +1 -1
- package/intern/backend-policy-version.d.ts +1 -1
- package/intern/backend-policy-version.js +1 -1
- package/intern/components/vibe-page.js +5 -1
- package/intern/components/vibe-page.js.map +1 -1
- package/intern/delete-access-gate.d.ts +4 -0
- package/intern/delete-access-gate.js +46 -5
- package/intern/delete-access-gate.js.map +1 -1
- package/intern/egress-platform-list.d.ts +1 -0
- package/intern/egress-platform-list.js +4 -0
- package/intern/egress-platform-list.js.map +1 -1
- package/intern/emit-notification.d.ts +21 -0
- package/intern/emit-notification.js +43 -0
- package/intern/emit-notification.js.map +1 -0
- package/intern/ensure-app-metadata.js +4 -0
- package/intern/ensure-app-metadata.js.map +1 -1
- package/intern/ensure-chat-id.js +13 -2
- package/intern/ensure-chat-id.js.map +1 -1
- package/intern/ensure-slug-binding.js +20 -2
- package/intern/ensure-slug-binding.js.map +1 -1
- package/intern/notify-comment-posted.d.ts +8 -0
- package/intern/notify-comment-posted.js +24 -0
- package/intern/notify-comment-posted.js.map +1 -0
- package/intern/notify-dm-received.d.ts +9 -0
- package/intern/notify-dm-received.js +25 -0
- package/intern/notify-dm-received.js.map +1 -0
- package/intern/notify-member-joined.d.ts +11 -0
- package/intern/notify-member-joined.js +16 -0
- package/intern/notify-member-joined.js.map +1 -0
- package/intern/notify-remix-clone.d.ts +6 -0
- package/intern/notify-remix-clone.js +21 -0
- package/intern/notify-remix-clone.js.map +1 -0
- package/intern/notify-remix.d.ts +8 -0
- package/intern/notify-remix.js +23 -0
- package/intern/notify-remix.js.map +1 -0
- package/intern/notify-request-grant.d.ts +9 -0
- package/intern/notify-request-grant.js +18 -0
- package/intern/notify-request-grant.js.map +1 -0
- package/intern/notify-social-edge.d.ts +9 -0
- package/intern/notify-social-edge.js +45 -0
- package/intern/notify-social-edge.js.map +1 -0
- package/intern/notify-vibe-published.d.ts +7 -0
- package/intern/notify-vibe-published.js +22 -0
- package/intern/notify-vibe-published.js.map +1 -0
- package/intern/pre-allocate.d.ts +1 -0
- package/intern/pre-allocate.js +1 -0
- package/intern/pre-allocate.js.map +1 -1
- package/intern/process-access-bindings.js +12 -2
- package/intern/process-access-bindings.js.map +1 -1
- package/intern/put-access-gate.js +25 -3
- package/intern/put-access-gate.js.map +1 -1
- package/intern/read-anonymous-seed-docs.js +1 -1
- package/intern/read-anonymous-seed-docs.js.map +1 -1
- package/intern/recovery.d.ts +7 -1
- package/intern/recovery.js +5 -5
- package/intern/recovery.js.map +1 -1
- package/intern/render-vibe.js +7 -3
- package/intern/render-vibe.js.map +1 -1
- package/intern/slot-assembler.d.ts +2 -0
- package/intern/slot-assembler.js +9 -3
- package/intern/slot-assembler.js.map +1 -1
- package/intern/vibe-curation-decision.d.ts +18 -0
- package/intern/vibe-curation-decision.js +46 -0
- package/intern/vibe-curation-decision.js.map +1 -0
- package/intern/write-apps.js +9 -2
- package/intern/write-apps.js.map +1 -1
- package/package.json +16 -15
- package/public/access-function.js +4 -1
- package/public/access-function.js.map +1 -1
- package/public/access-helpers.js +5 -0
- package/public/access-helpers.js.map +1 -1
- package/public/app-documents-broadcast.d.ts +8 -0
- package/public/app-documents-broadcast.js +15 -0
- package/public/app-documents-broadcast.js.map +1 -1
- package/public/app-documents-grant-delta.js +3 -2
- package/public/app-documents-grant-delta.js.map +1 -1
- package/public/app-documents-read-eventos.js +72 -13
- package/public/app-documents-read-eventos.js.map +1 -1
- package/public/app-documents-write-eventos.js +28 -11
- package/public/app-documents-write-eventos.js.map +1 -1
- package/public/app-settings-sql-upsert.js +4 -1
- package/public/app-settings-sql-upsert.js.map +1 -1
- package/public/audience-arms-store.d.ts +21 -0
- package/public/audience-arms-store.js +110 -0
- package/public/audience-arms-store.js.map +1 -0
- package/public/audience-channels.d.ts +14 -0
- package/public/audience-channels.js +71 -0
- package/public/audience-channels.js.map +1 -0
- package/public/audience-derived-trigger.d.ts +15 -0
- package/public/audience-derived-trigger.js +45 -0
- package/public/audience-derived-trigger.js.map +1 -0
- package/public/audience-key-patch.d.ts +16 -0
- package/public/audience-key-patch.js +38 -0
- package/public/audience-key-patch.js.map +1 -0
- package/public/billing-msg.d.ts +5 -0
- package/public/billing-msg.js +143 -0
- package/public/billing-msg.js.map +1 -0
- package/public/channel-read-filter.js +4 -2
- package/public/channel-read-filter.js.map +1 -1
- package/public/curated-new-vibes.d.ts +5 -0
- package/public/curated-new-vibes.js +64 -0
- package/public/curated-new-vibes.js.map +1 -0
- package/public/developer-grants-flow.d.ts +5 -0
- package/public/developer-grants-flow.js +218 -0
- package/public/developer-grants-flow.js.map +1 -0
- package/public/developer-grants.d.ts +12 -0
- package/public/developer-grants.js +40 -0
- package/public/developer-grants.js.map +1 -0
- package/public/email-unsubscribe.d.ts +7 -0
- package/public/email-unsubscribe.js +41 -0
- package/public/email-unsubscribe.js.map +1 -0
- package/public/ensure-app-settings.js +69 -3
- package/public/ensure-app-settings.js.map +1 -1
- package/public/ensure-user-settings.js +9 -1
- package/public/ensure-user-settings.js.map +1 -1
- package/public/fork-app.js +24 -1
- package/public/fork-app.js.map +1 -1
- package/public/grant-reduce.d.ts +4 -2
- package/public/grant-reduce.js +11 -3
- package/public/grant-reduce.js.map +1 -1
- package/public/home-feed-common.d.ts +18 -0
- package/public/home-feed-common.js +46 -0
- package/public/home-feed-common.js.map +1 -0
- package/public/home-leaderboard.d.ts +5 -0
- package/public/home-leaderboard.js +64 -0
- package/public/home-leaderboard.js.map +1 -0
- package/public/image-gen.js +9 -0
- package/public/image-gen.js.map +1 -1
- package/public/invite-unsubscribe.d.ts +3 -0
- package/public/invite-unsubscribe.js +31 -0
- package/public/invite-unsubscribe.js.map +1 -0
- package/public/list-notifications.d.ts +4 -0
- package/public/list-notifications.js +157 -0
- package/public/list-notifications.js.map +1 -0
- package/public/related-vibes.d.ts +3 -0
- package/public/related-vibes.js +134 -0
- package/public/related-vibes.js.map +1 -0
- package/public/serv-entry-point.js +2 -2
- package/public/serv-entry-point.js.map +1 -1
- package/public/social-flow.d.ts +21 -0
- package/public/social-flow.js +765 -0
- package/public/social-flow.js.map +1 -0
- package/public/social-invite-flow.d.ts +3 -0
- package/public/social-invite-flow.js +73 -0
- package/public/social-invite-flow.js.map +1 -0
- package/public/social-invite-signup-match.d.ts +6 -0
- package/public/social-invite-signup-match.js +38 -0
- package/public/social-invite-signup-match.js.map +1 -0
- package/public/social-invite-store.d.ts +70 -0
- package/public/social-invite-store.js +172 -0
- package/public/social-invite-store.js.map +1 -0
- package/public/social-store.d.ts +109 -0
- package/public/social-store.js +469 -0
- package/public/social-store.js.map +1 -0
- package/public/who-am-i.js +5 -3
- package/public/who-am-i.js.map +1 -1
- package/svc-ws-send-provider.d.ts +2 -0
- package/svc-ws-send-provider.js +2 -0
- package/svc-ws-send-provider.js.map +1 -1
- package/types.d.ts +20 -1
- package/types.js.map +1 -1
- package/usage-report/README.md +1 -0
- package/usage-report/billing-reconcile-util.d.ts +7 -5
- package/usage-report/billing-reconcile-util.js +32 -17
- package/usage-report/billing-reconcile-util.js.map +1 -1
- package/usage-report/vibe-usage.py +171 -0
package/autumn.config.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ interface AutumnItem {
|
|
|
12
12
|
};
|
|
13
13
|
price?: {
|
|
14
14
|
amount: number;
|
|
15
|
-
billingMethod: "
|
|
15
|
+
billingMethod: "prepaid";
|
|
16
16
|
billingUnits: number;
|
|
17
17
|
};
|
|
18
18
|
}
|
|
@@ -20,6 +20,7 @@ interface AutumnPlan {
|
|
|
20
20
|
id: string;
|
|
21
21
|
name: string;
|
|
22
22
|
autoEnable?: boolean;
|
|
23
|
+
addOn?: boolean;
|
|
23
24
|
price?: {
|
|
24
25
|
amount: number;
|
|
25
26
|
interval: "month";
|
|
@@ -28,5 +29,6 @@ interface AutumnPlan {
|
|
|
28
29
|
}
|
|
29
30
|
export declare const aiCredits: AutumnFeature;
|
|
30
31
|
export declare const free: AutumnPlan;
|
|
31
|
-
export declare const
|
|
32
|
+
export declare const plus: AutumnPlan;
|
|
33
|
+
export declare const credits: AutumnPlan;
|
|
32
34
|
export {};
|
package/autumn.config.js
CHANGED
|
@@ -8,18 +8,23 @@ export const free = {
|
|
|
8
8
|
id: "free",
|
|
9
9
|
name: "Free",
|
|
10
10
|
autoEnable: true,
|
|
11
|
-
items: [{ featureId: aiCredits.id, included:
|
|
11
|
+
items: [{ featureId: aiCredits.id, included: 500, reset: { interval: "month" } }],
|
|
12
12
|
};
|
|
13
|
-
export const
|
|
14
|
-
id: "
|
|
15
|
-
name: "Vibes
|
|
13
|
+
export const plus = {
|
|
14
|
+
id: "plus",
|
|
15
|
+
name: "Vibes Plus",
|
|
16
16
|
price: { amount: 5, interval: "month" },
|
|
17
|
+
items: [{ featureId: aiCredits.id, included: 1000, reset: { interval: "month" } }],
|
|
18
|
+
};
|
|
19
|
+
export const credits = {
|
|
20
|
+
id: "credits",
|
|
21
|
+
name: "AI Credits Top-Up",
|
|
22
|
+
addOn: true,
|
|
17
23
|
items: [
|
|
18
24
|
{
|
|
19
25
|
featureId: aiCredits.id,
|
|
20
|
-
included:
|
|
21
|
-
|
|
22
|
-
price: { amount: 0.02, billingMethod: "usage_based", billingUnits: 1 },
|
|
26
|
+
included: 0,
|
|
27
|
+
price: { amount: 5, billingMethod: "prepaid", billingUnits: 500 },
|
|
23
28
|
},
|
|
24
29
|
],
|
|
25
30
|
};
|
package/autumn.config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autumn.config.js","sourceRoot":"","sources":["../jsr/autumn.config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"autumn.config.js","sourceRoot":"","sources":["../jsr/autumn.config.ts"],"names":[],"mappings":"AAqDA,MAAM,CAAC,MAAM,SAAS,GAAkB;IACtC,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,SAAS;IACf,UAAU,EAAE,IAAI;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAe;IAC9B,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;CAClF,CAAC;AAGF,MAAM,CAAC,MAAM,IAAI,GAAe;IAC9B,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE;IAIvC,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;CACnF,CAAC;AAMF,MAAM,CAAC,MAAM,OAAO,GAAe;IACjC,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,mBAAmB;IACzB,KAAK,EAAE,IAAI;IACX,KAAK,EAAE;QACL;YACE,SAAS,EAAE,SAAS,CAAC,EAAE;YACvB,QAAQ,EAAE,CAAC;YACX,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,EAAE;SAClE;KACF;CACF,CAAC"}
|
package/billing.d.ts
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
import { Logger, Result } from "@adviser/cement";
|
|
2
2
|
export declare const AI_CREDITS_FEATURE_ID = "ai_credits";
|
|
3
|
+
export declare const DISPLAY_CREDITS_PER_CENT = 2;
|
|
4
|
+
export declare const PLUS_PLAN_ID = "plus";
|
|
5
|
+
export declare const CREDITS_PLAN_ID = "credits";
|
|
6
|
+
export declare const FREE_INCLUDED_CREDITS = 500;
|
|
7
|
+
export declare const PLUS_INCLUDED_CREDITS = 1000;
|
|
8
|
+
export declare const CREDITS_PER_TOPUP_UNIT = 500;
|
|
9
|
+
export declare const MAX_TOPUP_UNITS = 20;
|
|
10
|
+
export declare const AUTO_REFILL_THRESHOLDS: readonly [100, 200, 500];
|
|
11
|
+
export declare const AUTO_REFILL_RELOADS_USD: readonly [5, 10, 25];
|
|
12
|
+
export declare const AUTO_REFILL_DEFAULTS: {
|
|
13
|
+
readonly enabled: false;
|
|
14
|
+
readonly threshold: 200;
|
|
15
|
+
readonly reloadUsd: 5;
|
|
16
|
+
readonly capUsd: 25;
|
|
17
|
+
};
|
|
18
|
+
export declare function autoRefillCapChoicesUsd(reloadUsd: number): number[];
|
|
3
19
|
export declare function costCentsFromUsage(usage: {
|
|
4
20
|
readonly given: readonly object[];
|
|
5
21
|
readonly calculated: {
|
|
@@ -15,14 +31,74 @@ export interface BillingTrackArgs {
|
|
|
15
31
|
}
|
|
16
32
|
export interface BillingCheckResult {
|
|
17
33
|
readonly allowed: boolean;
|
|
18
|
-
readonly
|
|
34
|
+
readonly remainingCredits?: number;
|
|
19
35
|
}
|
|
36
|
+
export interface BillingCustomerData {
|
|
37
|
+
readonly name?: string;
|
|
38
|
+
readonly email?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface BillingAutoRefillState {
|
|
41
|
+
readonly enabled: boolean;
|
|
42
|
+
readonly threshold: number;
|
|
43
|
+
readonly reloadUsd: number;
|
|
44
|
+
readonly capUsd: number;
|
|
45
|
+
}
|
|
46
|
+
export interface BillingCustomerSummary {
|
|
47
|
+
readonly enabled: boolean;
|
|
48
|
+
readonly plan?: "free" | "plus";
|
|
49
|
+
readonly remaining?: number;
|
|
50
|
+
readonly grantRemaining?: number;
|
|
51
|
+
readonly grantIncluded?: number;
|
|
52
|
+
readonly grantResetsAt?: number;
|
|
53
|
+
readonly purchasedRemaining?: number;
|
|
54
|
+
readonly autoRefill?: BillingAutoRefillState;
|
|
55
|
+
}
|
|
56
|
+
export interface BillingCheckoutArgs {
|
|
57
|
+
readonly userId: string;
|
|
58
|
+
readonly kind: "subscribe-plus" | "top-up";
|
|
59
|
+
readonly units?: number;
|
|
60
|
+
readonly successUrl: string;
|
|
61
|
+
readonly customerData?: BillingCustomerData;
|
|
62
|
+
}
|
|
63
|
+
export type BillingCheckoutResult = {
|
|
64
|
+
readonly status: "ok";
|
|
65
|
+
readonly checkoutUrl: string;
|
|
66
|
+
} | {
|
|
67
|
+
readonly status: "membership-required";
|
|
68
|
+
};
|
|
69
|
+
export type BillingConfigResult = {
|
|
70
|
+
readonly status: "ok";
|
|
71
|
+
readonly autoRefill: BillingAutoRefillState;
|
|
72
|
+
} | {
|
|
73
|
+
readonly status: "membership-required";
|
|
74
|
+
} | {
|
|
75
|
+
readonly status: "no-saved-card";
|
|
76
|
+
};
|
|
77
|
+
export interface BillingConfigArgs {
|
|
78
|
+
readonly userId: string;
|
|
79
|
+
readonly autoRefill: BillingAutoRefillState;
|
|
80
|
+
readonly customerData?: BillingCustomerData;
|
|
81
|
+
}
|
|
82
|
+
export declare function isAllowedSuccessUrl(raw: string): boolean;
|
|
83
|
+
export interface AutoRefillWire {
|
|
84
|
+
readonly enabled: boolean;
|
|
85
|
+
readonly threshold: number;
|
|
86
|
+
readonly quantityCredits: number;
|
|
87
|
+
readonly limit: number;
|
|
88
|
+
}
|
|
89
|
+
export declare function parseAutoRefillConfig(cfg: BillingAutoRefillState): Result<AutoRefillWire>;
|
|
20
90
|
export interface BillingIf {
|
|
21
91
|
readonly enforceEnabled: boolean;
|
|
22
92
|
trackUsage(args: BillingTrackArgs): Promise<Result<void>>;
|
|
23
93
|
checkCredits(args: {
|
|
24
94
|
readonly userId: string;
|
|
25
95
|
}): Promise<Result<BillingCheckResult>>;
|
|
96
|
+
customerSummary(args: {
|
|
97
|
+
readonly userId: string;
|
|
98
|
+
readonly customerData?: BillingCustomerData;
|
|
99
|
+
}): Promise<Result<BillingCustomerSummary>>;
|
|
100
|
+
createCheckout(args: BillingCheckoutArgs): Promise<Result<BillingCheckoutResult>>;
|
|
101
|
+
setAutoRefill(args: BillingConfigArgs): Promise<Result<BillingConfigResult>>;
|
|
26
102
|
}
|
|
27
103
|
export declare function disabledBilling(): BillingIf;
|
|
28
104
|
export declare function defaultBilling(opts: {
|
package/billing.js
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
|
-
import { exception2Result, Result } from "@adviser/cement";
|
|
1
|
+
import { exception2Result, Result, URI } from "@adviser/cement";
|
|
2
2
|
export const AI_CREDITS_FEATURE_ID = "ai_credits";
|
|
3
|
+
export const DISPLAY_CREDITS_PER_CENT = 2;
|
|
4
|
+
export const PLUS_PLAN_ID = "plus";
|
|
5
|
+
export const CREDITS_PLAN_ID = "credits";
|
|
6
|
+
export const FREE_INCLUDED_CREDITS = 500;
|
|
7
|
+
export const PLUS_INCLUDED_CREDITS = 1000;
|
|
8
|
+
export const CREDITS_PER_TOPUP_UNIT = 500;
|
|
9
|
+
const USD_PER_TOPUP_UNIT = 5;
|
|
10
|
+
export const MAX_TOPUP_UNITS = 20;
|
|
11
|
+
export const AUTO_REFILL_THRESHOLDS = [100, 200, 500];
|
|
12
|
+
export const AUTO_REFILL_RELOADS_USD = [5, 10, 25];
|
|
13
|
+
export const AUTO_REFILL_DEFAULTS = { enabled: false, threshold: 200, reloadUsd: 5, capUsd: 25 };
|
|
14
|
+
const AUTO_REFILL_CAP_MENU_USD = [10, 25, 50, 100];
|
|
15
|
+
export function autoRefillCapChoicesUsd(reloadUsd) {
|
|
16
|
+
return AUTO_REFILL_CAP_MENU_USD.filter((cap) => cap % reloadUsd === 0).slice(0, 3);
|
|
17
|
+
}
|
|
3
18
|
const FALLBACK_USD_PER_MTOK = 5;
|
|
4
19
|
export function costCentsFromUsage(usage) {
|
|
5
20
|
let usd = 0;
|
|
@@ -16,14 +31,130 @@ export function costCentsFromUsage(usage) {
|
|
|
16
31
|
}
|
|
17
32
|
return Math.max(0, Math.round(usd * 100));
|
|
18
33
|
}
|
|
34
|
+
export function isAllowedSuccessUrl(raw) {
|
|
35
|
+
const r = exception2Result(() => {
|
|
36
|
+
const uri = URI.from(raw);
|
|
37
|
+
return { protocol: uri.protocol, hostname: uri.hostname };
|
|
38
|
+
});
|
|
39
|
+
if (r.isErr()) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
const { protocol, hostname } = r.Ok();
|
|
43
|
+
const isLocalhost = hostname === "localhost" || hostname.endsWith(".localhost") || hostname.endsWith(".localhost.vibesdiy.net");
|
|
44
|
+
if (protocol !== "https:" && (protocol !== "http:" || isLocalhost === false)) {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
return (isLocalhost ||
|
|
48
|
+
hostname === "vibes.diy" ||
|
|
49
|
+
hostname.endsWith(".vibes.diy") ||
|
|
50
|
+
hostname === "vibesdiy.net" ||
|
|
51
|
+
hostname.endsWith(".vibesdiy.net") ||
|
|
52
|
+
hostname === "vibespreview.dev" ||
|
|
53
|
+
hostname.endsWith(".vibespreview.dev") ||
|
|
54
|
+
hostname.endsWith(".jchris.workers.dev"));
|
|
55
|
+
}
|
|
56
|
+
export function parseAutoRefillConfig(cfg) {
|
|
57
|
+
if (AUTO_REFILL_THRESHOLDS.some((t) => t === cfg.threshold) === false) {
|
|
58
|
+
return Result.Err(`auto-refill threshold must be one of ${AUTO_REFILL_THRESHOLDS.join("/")}`);
|
|
59
|
+
}
|
|
60
|
+
if (AUTO_REFILL_RELOADS_USD.some((rl) => rl === cfg.reloadUsd) === false) {
|
|
61
|
+
return Result.Err(`auto-refill reload must be one of $${AUTO_REFILL_RELOADS_USD.join("/$")}`);
|
|
62
|
+
}
|
|
63
|
+
if (Number.isInteger(cfg.capUsd) === false || cfg.capUsd <= 0 || cfg.capUsd % cfg.reloadUsd !== 0) {
|
|
64
|
+
return Result.Err(`auto-refill cap must be a positive multiple of the $${cfg.reloadUsd} reload`);
|
|
65
|
+
}
|
|
66
|
+
return Result.Ok({
|
|
67
|
+
enabled: cfg.enabled,
|
|
68
|
+
threshold: cfg.threshold,
|
|
69
|
+
quantityCredits: (cfg.reloadUsd / USD_PER_TOPUP_UNIT) * CREDITS_PER_TOPUP_UNIT,
|
|
70
|
+
limit: cfg.capUsd / cfg.reloadUsd,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
19
73
|
export function disabledBilling() {
|
|
20
74
|
return {
|
|
21
75
|
enforceEnabled: false,
|
|
22
76
|
trackUsage: () => Promise.resolve(Result.Ok(undefined)),
|
|
23
77
|
checkCredits: () => Promise.resolve(Result.Ok({ allowed: true })),
|
|
78
|
+
customerSummary: () => Promise.resolve(Result.Ok({ enabled: false })),
|
|
79
|
+
createCheckout: () => Promise.resolve(Result.Err("billing is not enabled in this environment")),
|
|
80
|
+
setAutoRefill: () => Promise.resolve(Result.Err("billing is not enabled in this environment")),
|
|
24
81
|
};
|
|
25
82
|
}
|
|
26
83
|
const AUTUMN_API_BASE = "https://api.useautumn.com/v1";
|
|
84
|
+
function parseBalancesJson(json) {
|
|
85
|
+
const balance = json.balance;
|
|
86
|
+
const remaining = balance !== undefined && balance !== null && typeof balance.remaining === "number" ? balance.remaining : undefined;
|
|
87
|
+
const breakdown = balance !== undefined && balance !== null && Array.isArray(balance.breakdown)
|
|
88
|
+
? balance.breakdown
|
|
89
|
+
: [];
|
|
90
|
+
const resetOf = (e) => {
|
|
91
|
+
const reset = e.reset;
|
|
92
|
+
return reset !== undefined && reset !== null ? reset : undefined;
|
|
93
|
+
};
|
|
94
|
+
const intervalOf = (e) => {
|
|
95
|
+
if (typeof e.interval === "string")
|
|
96
|
+
return e.interval;
|
|
97
|
+
const reset = resetOf(e);
|
|
98
|
+
if (reset !== undefined && typeof reset.interval === "string")
|
|
99
|
+
return reset.interval;
|
|
100
|
+
return "one_off";
|
|
101
|
+
};
|
|
102
|
+
const isPurchased = (e) => {
|
|
103
|
+
if (e.plan_id === CREDITS_PLAN_ID)
|
|
104
|
+
return true;
|
|
105
|
+
const interval = intervalOf(e);
|
|
106
|
+
return interval === "one_off" || interval === "lifetime";
|
|
107
|
+
};
|
|
108
|
+
let grantRemaining = 0;
|
|
109
|
+
let purchasedRemaining = 0;
|
|
110
|
+
let grantResetsAt;
|
|
111
|
+
for (const e of breakdown) {
|
|
112
|
+
const rem = typeof e.remaining === "number" ? e.remaining : 0;
|
|
113
|
+
if (isPurchased(e)) {
|
|
114
|
+
purchasedRemaining += rem;
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
grantRemaining += rem;
|
|
118
|
+
const reset = resetOf(e);
|
|
119
|
+
if (reset !== undefined &&
|
|
120
|
+
typeof reset.resets_at === "number" &&
|
|
121
|
+
(grantResetsAt === undefined || reset.resets_at < grantResetsAt)) {
|
|
122
|
+
grantResetsAt = reset.resets_at;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
const plan = breakdown.some((e) => e.plan_id === PLUS_PLAN_ID) ? "plus" : "free";
|
|
126
|
+
return {
|
|
127
|
+
...(remaining !== undefined ? { remaining } : {}),
|
|
128
|
+
plan,
|
|
129
|
+
grantRemaining,
|
|
130
|
+
...(grantResetsAt !== undefined ? { grantResetsAt } : {}),
|
|
131
|
+
purchasedRemaining,
|
|
132
|
+
hasBreakdown: breakdown.length > 0,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
function parseAutoRefillJson(json) {
|
|
136
|
+
const controls = json.billing_controls;
|
|
137
|
+
const topups = controls !== undefined && controls !== null && Array.isArray(controls.auto_topups) ? controls.auto_topups : [];
|
|
138
|
+
const mine = topups.find((t) => t.feature_id === AI_CREDITS_FEATURE_ID);
|
|
139
|
+
if (mine === undefined || typeof mine.quantity !== "number" || mine.quantity <= 0) {
|
|
140
|
+
return AUTO_REFILL_DEFAULTS;
|
|
141
|
+
}
|
|
142
|
+
const reloadUsd = (mine.quantity / CREDITS_PER_TOPUP_UNIT) * USD_PER_TOPUP_UNIT;
|
|
143
|
+
const purchaseLimit = mine.purchase_limit;
|
|
144
|
+
const limit = purchaseLimit !== undefined && purchaseLimit !== null && typeof purchaseLimit.limit === "number"
|
|
145
|
+
? purchaseLimit.limit
|
|
146
|
+
: undefined;
|
|
147
|
+
return {
|
|
148
|
+
enabled: mine.enabled === true,
|
|
149
|
+
threshold: typeof mine.threshold === "number" ? mine.threshold : AUTO_REFILL_DEFAULTS.threshold,
|
|
150
|
+
reloadUsd,
|
|
151
|
+
capUsd: limit !== undefined ? limit * reloadUsd : AUTO_REFILL_DEFAULTS.capUsd,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
function hasSavedCard(json) {
|
|
155
|
+
const pm = json.payment_method;
|
|
156
|
+
return pm !== undefined && pm !== null;
|
|
157
|
+
}
|
|
27
158
|
export function defaultBilling(opts) {
|
|
28
159
|
const secretKey = opts.secretKey;
|
|
29
160
|
if (secretKey === undefined || secretKey === "" || opts.track !== "on") {
|
|
@@ -58,13 +189,20 @@ export function defaultBilling(opts) {
|
|
|
58
189
|
}
|
|
59
190
|
return post(path, body);
|
|
60
191
|
}
|
|
192
|
+
const getOrCreate = (userId, customerData, expand) => post("/customers.get_or_create", {
|
|
193
|
+
customer_id: userId,
|
|
194
|
+
...(customerData?.name !== undefined && customerData.name !== "" ? { name: customerData.name } : {}),
|
|
195
|
+
...(customerData?.email !== undefined && customerData.email !== "" ? { email: customerData.email } : {}),
|
|
196
|
+
...(expand !== undefined ? { expand } : {}),
|
|
197
|
+
});
|
|
198
|
+
const checkBalances = (userId) => post("/balances.check", { customer_id: userId, feature_id: AI_CREDITS_FEATURE_ID });
|
|
61
199
|
return {
|
|
62
200
|
enforceEnabled: opts.enforce === "on",
|
|
63
201
|
async trackUsage({ userId, costCents, promptId, model, mode }) {
|
|
64
202
|
const r = await postWithCustomerRetry("/balances.track", {
|
|
65
203
|
customer_id: userId,
|
|
66
204
|
feature_id: AI_CREDITS_FEATURE_ID,
|
|
67
|
-
value: costCents,
|
|
205
|
+
value: costCents * DISPLAY_CREDITS_PER_CENT,
|
|
68
206
|
idempotency_key: promptId,
|
|
69
207
|
properties: {
|
|
70
208
|
...(model !== undefined && model !== "" ? { model } : {}),
|
|
@@ -93,7 +231,130 @@ export function defaultBilling(opts) {
|
|
|
93
231
|
}
|
|
94
232
|
const balance = json.balance;
|
|
95
233
|
const remaining = balance !== undefined && balance !== null && typeof balance.remaining === "number" ? balance.remaining : undefined;
|
|
96
|
-
return Result.Ok({ allowed: json.allowed === true, ...(remaining !== undefined ? {
|
|
234
|
+
return Result.Ok({ allowed: json.allowed === true, ...(remaining !== undefined ? { remainingCredits: remaining } : {}) });
|
|
235
|
+
},
|
|
236
|
+
async customerSummary({ userId, customerData }) {
|
|
237
|
+
const rCustomer = await getOrCreate(userId, customerData, ["payment_method", "billing_controls.auto_topups.purchase_limit"]);
|
|
238
|
+
if (rCustomer.isErr()) {
|
|
239
|
+
return Result.Err(rCustomer);
|
|
240
|
+
}
|
|
241
|
+
if (rCustomer.Ok().status >= 400) {
|
|
242
|
+
return Result.Err(`autumn get_or_create failed: ${rCustomer.Ok().status} ${JSON.stringify(rCustomer.Ok().json)}`);
|
|
243
|
+
}
|
|
244
|
+
const rCheck = await checkBalances(userId);
|
|
245
|
+
if (rCheck.isErr()) {
|
|
246
|
+
return Result.Err(rCheck);
|
|
247
|
+
}
|
|
248
|
+
if (rCheck.Ok().status >= 400) {
|
|
249
|
+
return Result.Err(`autumn balances failed: ${rCheck.Ok().status} ${JSON.stringify(rCheck.Ok().json)}`);
|
|
250
|
+
}
|
|
251
|
+
const parsed = parseBalancesJson(rCheck.Ok().json);
|
|
252
|
+
return Result.Ok({
|
|
253
|
+
enabled: true,
|
|
254
|
+
plan: parsed.plan,
|
|
255
|
+
...(parsed.remaining !== undefined ? { remaining: parsed.remaining } : {}),
|
|
256
|
+
...(parsed.hasBreakdown ? { grantRemaining: parsed.grantRemaining, purchasedRemaining: parsed.purchasedRemaining } : {}),
|
|
257
|
+
grantIncluded: parsed.plan === "plus" ? PLUS_INCLUDED_CREDITS : FREE_INCLUDED_CREDITS,
|
|
258
|
+
...(parsed.grantResetsAt !== undefined ? { grantResetsAt: parsed.grantResetsAt } : {}),
|
|
259
|
+
autoRefill: parseAutoRefillJson(rCustomer.Ok().json),
|
|
260
|
+
});
|
|
261
|
+
},
|
|
262
|
+
async createCheckout({ userId, kind, units, successUrl, customerData }) {
|
|
263
|
+
if (isAllowedSuccessUrl(successUrl) === false) {
|
|
264
|
+
return Result.Err(`successUrl not allowed: ${successUrl}`);
|
|
265
|
+
}
|
|
266
|
+
const rCustomer = await getOrCreate(userId, customerData);
|
|
267
|
+
if (rCustomer.isErr()) {
|
|
268
|
+
return Result.Err(rCustomer);
|
|
269
|
+
}
|
|
270
|
+
let body;
|
|
271
|
+
if (kind === "subscribe-plus") {
|
|
272
|
+
body = { customer_id: userId, plan_id: PLUS_PLAN_ID, success_url: successUrl };
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
const rCheck = await checkBalances(userId);
|
|
276
|
+
if (rCheck.isErr()) {
|
|
277
|
+
return Result.Err(rCheck);
|
|
278
|
+
}
|
|
279
|
+
if (rCheck.Ok().status >= 400) {
|
|
280
|
+
return Result.Err(`autumn balances failed: ${rCheck.Ok().status} ${JSON.stringify(rCheck.Ok().json)}`);
|
|
281
|
+
}
|
|
282
|
+
if (parseBalancesJson(rCheck.Ok().json).plan !== "plus") {
|
|
283
|
+
return Result.Ok({ status: "membership-required" });
|
|
284
|
+
}
|
|
285
|
+
const nUnits = Math.min(Math.max(Math.floor(units ?? 1), 1), MAX_TOPUP_UNITS);
|
|
286
|
+
body = {
|
|
287
|
+
customer_id: userId,
|
|
288
|
+
plan_id: CREDITS_PLAN_ID,
|
|
289
|
+
feature_quantities: [{ feature_id: AI_CREDITS_FEATURE_ID, quantity: nUnits * CREDITS_PER_TOPUP_UNIT }],
|
|
290
|
+
success_url: successUrl,
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
const r = await post("/billing.attach", body);
|
|
294
|
+
if (r.isErr()) {
|
|
295
|
+
return Result.Err(r);
|
|
296
|
+
}
|
|
297
|
+
const { status, json } = r.Ok();
|
|
298
|
+
if (status >= 400) {
|
|
299
|
+
return Result.Err(`autumn attach failed: ${status} ${JSON.stringify(json)}`);
|
|
300
|
+
}
|
|
301
|
+
const url = typeof json.checkout_url === "string"
|
|
302
|
+
? json.checkout_url
|
|
303
|
+
: typeof json.payment_url === "string"
|
|
304
|
+
? json.payment_url
|
|
305
|
+
: undefined;
|
|
306
|
+
if (url === undefined || url === "") {
|
|
307
|
+
return Result.Err(`autumn attach returned no checkout url: ${JSON.stringify(json)}`);
|
|
308
|
+
}
|
|
309
|
+
return Result.Ok({ status: "ok", checkoutUrl: url });
|
|
310
|
+
},
|
|
311
|
+
async setAutoRefill({ userId, autoRefill, customerData }) {
|
|
312
|
+
const rWire = parseAutoRefillConfig(autoRefill);
|
|
313
|
+
if (rWire.isErr()) {
|
|
314
|
+
return Result.Err(rWire);
|
|
315
|
+
}
|
|
316
|
+
const rCustomer = await getOrCreate(userId, customerData, ["payment_method"]);
|
|
317
|
+
if (rCustomer.isErr()) {
|
|
318
|
+
return Result.Err(rCustomer);
|
|
319
|
+
}
|
|
320
|
+
if (rCustomer.Ok().status >= 400) {
|
|
321
|
+
return Result.Err(`autumn get_or_create failed: ${rCustomer.Ok().status} ${JSON.stringify(rCustomer.Ok().json)}`);
|
|
322
|
+
}
|
|
323
|
+
const rCheck = await checkBalances(userId);
|
|
324
|
+
if (rCheck.isErr()) {
|
|
325
|
+
return Result.Err(rCheck);
|
|
326
|
+
}
|
|
327
|
+
if (rCheck.Ok().status >= 400) {
|
|
328
|
+
return Result.Err(`autumn balances failed: ${rCheck.Ok().status} ${JSON.stringify(rCheck.Ok().json)}`);
|
|
329
|
+
}
|
|
330
|
+
if (parseBalancesJson(rCheck.Ok().json).plan !== "plus") {
|
|
331
|
+
return Result.Ok({ status: "membership-required" });
|
|
332
|
+
}
|
|
333
|
+
if (autoRefill.enabled === true && hasSavedCard(rCustomer.Ok().json) === false) {
|
|
334
|
+
return Result.Ok({ status: "no-saved-card" });
|
|
335
|
+
}
|
|
336
|
+
const wire = rWire.Ok();
|
|
337
|
+
const r = await post("/customers.update", {
|
|
338
|
+
customer_id: userId,
|
|
339
|
+
billing_controls: {
|
|
340
|
+
auto_topups: [
|
|
341
|
+
{
|
|
342
|
+
feature_id: AI_CREDITS_FEATURE_ID,
|
|
343
|
+
enabled: wire.enabled,
|
|
344
|
+
threshold: wire.threshold,
|
|
345
|
+
quantity: wire.quantityCredits,
|
|
346
|
+
purchase_limit: { interval: "month", limit: wire.limit },
|
|
347
|
+
},
|
|
348
|
+
],
|
|
349
|
+
},
|
|
350
|
+
});
|
|
351
|
+
if (r.isErr()) {
|
|
352
|
+
return Result.Err(r);
|
|
353
|
+
}
|
|
354
|
+
if (r.Ok().status >= 400) {
|
|
355
|
+
return Result.Err(`autumn customers.update failed: ${r.Ok().status} ${JSON.stringify(r.Ok().json)}`);
|
|
356
|
+
}
|
|
357
|
+
return Result.Ok({ status: "ok", autoRefill });
|
|
97
358
|
},
|
|
98
359
|
};
|
|
99
360
|
}
|
package/billing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.js","sourceRoot":"","sources":["../jsr/billing.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"billing.js","sourceRoot":"","sources":["../jsr/billing.ts"],"names":[],"mappings":"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"}
|
package/cf-serve.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { LLMRequest } from "@vibes.diy/call-ai-v2";
|
|
|
5
5
|
import { AppContext } from "@adviser/cement";
|
|
6
6
|
import { SuperThis } from "@vibes.diy/identity";
|
|
7
7
|
import { CfCacheIf, type VibesApiSQLCtx } from "./types.js";
|
|
8
|
-
import { type AccessDescriptor, type UserContext, type EvtViewerGrantsChanged, CFEnv, type EvtRequestGrant } from "@vibes.diy/api-types";
|
|
8
|
+
import { type AccessDescriptor, type UserContext, type EvtViewerGrantsChanged, CFEnv, type EvtRequestGrant, type EvtSocialEdge } from "@vibes.diy/api-types";
|
|
9
9
|
import { VibesSqlite } from "@vibes.diy/api-sql";
|
|
10
10
|
import type { QuickJSWASMModule } from "@cf-wasm/quickjs";
|
|
11
11
|
export interface CFInjectMutable {
|
|
@@ -48,6 +48,9 @@ export declare function localBroadcastCallbacks(connections: Set<WSSendProvider>
|
|
|
48
48
|
notifyRequestGrantChanged: (evt: EvtRequestGrant, senderConnId: string) => Promise<void>;
|
|
49
49
|
registerRequestGrantSubscription: (_subscriptionKey: string) => Promise<void>;
|
|
50
50
|
deregisterRequestGrantSubscription: (_subscriptionKey: string) => Promise<void>;
|
|
51
|
+
notifySocialEdgeChanged: (evt: EvtSocialEdge, senderConnId: string) => Promise<void>;
|
|
52
|
+
registerSocialSubscription: (_subscriptionKey: string) => Promise<void>;
|
|
53
|
+
deregisterSocialSubscription: (_subscriptionKey: string) => Promise<void>;
|
|
51
54
|
notifyViewerGrantsChanged: (evt: EvtViewerGrantsChanged, _senderConnId: string) => Promise<void>;
|
|
52
55
|
registerViewerGrantsSubscription: (_subscriptionKey: string) => Promise<void>;
|
|
53
56
|
deregisterViewerGrantsSubscription: (_subscriptionKey: string) => Promise<void>;
|
package/cf-serve.js
CHANGED
|
@@ -136,6 +136,29 @@ export function localBroadcastCallbacks(connections, env) {
|
|
|
136
136
|
},
|
|
137
137
|
deregisterRequestGrantSubscription: async (_subscriptionKey) => {
|
|
138
138
|
},
|
|
139
|
+
notifySocialEdgeChanged: async (evt, senderConnId) => {
|
|
140
|
+
const keys = [`social/${evt.edge.followerHandle}`, `social/${evt.edge.followeeHandle}`];
|
|
141
|
+
if (shouldLog) {
|
|
142
|
+
console.info("[Sessions] notifySocialEdgeChanged keys:", keys.join(","), "conn:", senderConnId.slice(0, 8));
|
|
143
|
+
}
|
|
144
|
+
for (const conn of connections) {
|
|
145
|
+
if (keys.some((key) => conn.subscribedSocialKeys.has(key)) === false)
|
|
146
|
+
continue;
|
|
147
|
+
if (conn.connId === senderConnId)
|
|
148
|
+
continue;
|
|
149
|
+
exception2Result(() => conn.ws.send(conn.ende.uint8ify({
|
|
150
|
+
tid: crypto.randomUUID(),
|
|
151
|
+
src: "vibes.diy.api",
|
|
152
|
+
dst: "vibes.diy.client",
|
|
153
|
+
ttl: 10,
|
|
154
|
+
payload: evt,
|
|
155
|
+
})));
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
registerSocialSubscription: async (_subscriptionKey) => {
|
|
159
|
+
},
|
|
160
|
+
deregisterSocialSubscription: async (_subscriptionKey) => {
|
|
161
|
+
},
|
|
139
162
|
notifyViewerGrantsChanged: async (evt, _senderConnId) => {
|
|
140
163
|
const key = `${evt.ownerHandle}/${evt.appSlug}`;
|
|
141
164
|
if (shouldLog) {
|