@beacon-build/sdk 2.18.0 → 3.0.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/CHANGELOG.md +21 -0
- package/dist/clients/billing-requests.types.d.ts +48 -0
- package/dist/clients/billing-requests.types.d.ts.map +1 -0
- package/dist/clients/billing-requests.types.js +2 -0
- package/dist/clients/billing-requests.types.js.map +1 -0
- package/dist/clients/billing-seat-fees.types.d.ts +105 -0
- package/dist/clients/billing-seat-fees.types.d.ts.map +1 -0
- package/dist/clients/billing-seat-fees.types.js +2 -0
- package/dist/clients/billing-seat-fees.types.js.map +1 -0
- package/dist/clients/billing.client.d.ts +121 -0
- package/dist/clients/billing.client.d.ts.map +1 -0
- package/dist/clients/billing.client.js +116 -0
- package/dist/clients/billing.client.js.map +1 -0
- package/dist/clients/capture.client.d.ts +5 -1
- package/dist/clients/capture.client.d.ts.map +1 -1
- package/dist/clients/capture.client.js.map +1 -1
- package/dist/factory/user-sdk.d.ts +11 -0
- package/dist/factory/user-sdk.d.ts.map +1 -1
- package/dist/factory/user-sdk.js +16 -0
- package/dist/factory/user-sdk.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/manifest.negative-list.d.ts.map +1 -1
- package/dist/manifest.negative-list.js +10 -0
- package/dist/manifest.negative-list.js.map +1 -1
- package/dist/manifest.public-entries.d.ts +1 -1
- package/dist/manifest.public-entries.d.ts.map +1 -1
- package/dist/manifest.public-entries.js +3 -1
- package/dist/manifest.public-entries.js.map +1 -1
- package/dist/transport/errors.d.ts +7 -1
- package/dist/transport/errors.d.ts.map +1 -1
- package/dist/transport/errors.js +6 -1
- package/dist/transport/errors.js.map +1 -1
- package/dist/transport/http-client.d.ts +12 -2
- package/dist/transport/http-client.d.ts.map +1 -1
- package/dist/transport/http-client.js +23 -9
- package/dist/transport/http-client.js.map +1 -1
- package/dist/transport/request-origin.d.ts +44 -0
- package/dist/transport/request-origin.d.ts.map +1 -0
- package/dist/transport/request-origin.js +99 -0
- package/dist/transport/request-origin.js.map +1 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# @beacon-build/sdk Changelog
|
|
2
2
|
|
|
3
|
+
## 3.0.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- b32af03: F564 seat fees & gating (FS64-B): seat tiers from the role history (highest role held in the month), fee-bearing periods (trial free, pro-rata start/reactivation month, deploy-backfill start), company/personal seat fees with forecast and cost-centre allocation, invoice positions (first, monthly, reactivation; credits carried), write-once seat snapshots with the billing-tier-snapshot / billing-start-snapshot workers, GET /api/v1/billing/seat-fees and /billing/entities (scoped) + SDK, company-wide contributor gating on every org-role write path with ceiling degradation, onboarding Solo/Community choice, readable gating errors in the org administration. The SDK reads apiCode also from the nested { error: { code } } envelope. `@beacon-build/ops`'s `clean-completed-jobs.mjs` gains the new `billing-tier-snapshot`/`billing-start-snapshot` queue names to its known-queues cleanup list.
|
|
8
|
+
- 14ea748: FS64 billing read side and model spend. C907: billable windows (activation periods ∩ metering start ∩ inactive cut) shared by seat fees, the new GET /api/v1/billing/requests read API (+ SDK `billing.getBillableRequests`) and a fail-closed monthly request compaction (`billing_request_months`, 35-day minute detail, 10-year aggregate). F567: Cost Cockpit with two tabs — "Platform-Gebühr" (default; tier/segment, billable requests human vs agents, seat fee to date + forecast, collar band, seat table, read-only price table editable by vendors, requests drilldown person → agent → project, org-admin link) and "Modell-Spend (BYOK)" with spend-vs-budget; seat-fee read carries the period price version and the company-fee forecast. F706: payment method per turn (`api_key | oauth_quota | unknown`) and quota account on messages, ledger and rollup; reconcile never treats OAuth-quota turns as unpriced; BYOK payment split, quota cards and quota settings (`quota.config`), GET /api/v1/usage/quota; budget DM notifier, user/org budgets and weekly periods.
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- 23d25e1: F709: add the new public asset read route and asset content route to the API<->SDK negative list — both are browser byte streams with no SDK method, verified by the INV-3 drift test.
|
|
13
|
+
- Updated dependencies [27eb246]
|
|
14
|
+
- Updated dependencies [55a8d7d]
|
|
15
|
+
- Updated dependencies [b32af03]
|
|
16
|
+
- Updated dependencies [e952551]
|
|
17
|
+
- Updated dependencies [9514f22]
|
|
18
|
+
- Updated dependencies [14ea748]
|
|
19
|
+
- Updated dependencies [02227ba]
|
|
20
|
+
- Updated dependencies [23d25e1]
|
|
21
|
+
- Updated dependencies [b1cb09c]
|
|
22
|
+
- @beacon-build/core@3.0.0
|
|
23
|
+
|
|
3
24
|
## 2.18.0
|
|
4
25
|
|
|
5
26
|
### Minor Changes
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* C907 AC-6 — wire types of `GET /api/v1/billing/requests`: billable requests of one billing
|
|
3
|
+
* entity × UTC month, final (reconciled) vs. provisional, per person / agent / project / cost
|
|
4
|
+
* centre, plus the coverage gap (`unattributed`).
|
|
5
|
+
*/
|
|
6
|
+
import type { SeatFeesQuery } from './billing-seat-fees.types.js';
|
|
7
|
+
/** Same addressing as the seat-fee read (C907 D7 default without billingOrgId / userId). */
|
|
8
|
+
export type BillableRequestsQuery = SeatFeesQuery;
|
|
9
|
+
export interface ProjectRequestsDto {
|
|
10
|
+
project: string;
|
|
11
|
+
requests: number;
|
|
12
|
+
}
|
|
13
|
+
export interface BillableRequestsPersonDto {
|
|
14
|
+
userId: string;
|
|
15
|
+
billableFinal: number;
|
|
16
|
+
billableProvisional: number;
|
|
17
|
+
human: number;
|
|
18
|
+
agents: Array<{
|
|
19
|
+
agentId: string;
|
|
20
|
+
name: string;
|
|
21
|
+
requests: number;
|
|
22
|
+
byProject: ProjectRequestsDto[];
|
|
23
|
+
}>;
|
|
24
|
+
byProject: ProjectRequestsDto[];
|
|
25
|
+
byCostCenter: Array<{
|
|
26
|
+
orgId: string;
|
|
27
|
+
requests: number;
|
|
28
|
+
}>;
|
|
29
|
+
}
|
|
30
|
+
export interface BillableRequestsDto {
|
|
31
|
+
period: string;
|
|
32
|
+
billingEntity: {
|
|
33
|
+
type: 'org' | 'user';
|
|
34
|
+
id: string;
|
|
35
|
+
};
|
|
36
|
+
isFinal: boolean;
|
|
37
|
+
reconciledThrough: string | null;
|
|
38
|
+
persons: BillableRequestsPersonDto[];
|
|
39
|
+
unattributed: {
|
|
40
|
+
requests: number;
|
|
41
|
+
};
|
|
42
|
+
totals: {
|
|
43
|
+
billableFinal: number;
|
|
44
|
+
billableProvisional: number;
|
|
45
|
+
unattributed: number;
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=billing-requests.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing-requests.types.d.ts","sourceRoot":"","sources":["../../src/clients/billing-requests.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAEjE,4FAA4F;AAC5F,MAAM,MAAM,qBAAqB,GAAG,aAAa,CAAA;AAEjD,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,yBAAyB;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,CAAA;IACrB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,KAAK,CAAC;QACV,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,MAAM,CAAA;QAChB,SAAS,EAAE,kBAAkB,EAAE,CAAA;KAClC,CAAC,CAAA;IACF,SAAS,EAAE,kBAAkB,EAAE,CAAA;IAC/B,YAAY,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC3D;AAED,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE;QAAE,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;IACnD,OAAO,EAAE,OAAO,CAAA;IAChB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,OAAO,EAAE,yBAAyB,EAAE,CAAA;IACpC,YAAY,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;IAClC,MAAM,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAA;CACvF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing-requests.types.js","sourceRoot":"","sources":["../../src/clients/billing-requests.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* F564 Scope 8 — wire types of `GET /api/v1/billing/seat-fees` and `GET /api/v1/billing/entities`
|
|
3
|
+
* (canonical field names, amounts as 2-digit decimal strings, ISO instants).
|
|
4
|
+
*/
|
|
5
|
+
import type { BillingStatusValue, InactiveReasonValue } from './billing.client.js';
|
|
6
|
+
export type LadderRoleDto = 'viewer' | 'reviewer' | 'contributor';
|
|
7
|
+
export type BillingTierDto = 'viewer' | 'community' | 'solo' | 'org_contributor' | 'org_reviewer';
|
|
8
|
+
export interface InvoiceDto {
|
|
9
|
+
invoiceDate: string | null;
|
|
10
|
+
isFirstInvoice: boolean;
|
|
11
|
+
isReactivationInvoice: boolean;
|
|
12
|
+
hasPositions: boolean;
|
|
13
|
+
advanceFloorChf: string | null;
|
|
14
|
+
trueUpChf: string | null;
|
|
15
|
+
creditBroughtForwardChf: string;
|
|
16
|
+
amountDueChf: string;
|
|
17
|
+
creditCarriedChf: string;
|
|
18
|
+
}
|
|
19
|
+
export interface SeatFeePersonDto {
|
|
20
|
+
userId: string;
|
|
21
|
+
name: string;
|
|
22
|
+
tier: BillingTierDto;
|
|
23
|
+
highestRoleSource: Array<{
|
|
24
|
+
orgId: string;
|
|
25
|
+
role: LadderRoleDto;
|
|
26
|
+
}>;
|
|
27
|
+
departmentRoles: Array<{
|
|
28
|
+
orgId: string;
|
|
29
|
+
orgName: string | null;
|
|
30
|
+
role: LadderRoleDto;
|
|
31
|
+
heldUntil: string | null;
|
|
32
|
+
}>;
|
|
33
|
+
requests: number;
|
|
34
|
+
feeChf: string;
|
|
35
|
+
forecastFeeChf: string | null;
|
|
36
|
+
byCostCenter: Array<{
|
|
37
|
+
orgId: string;
|
|
38
|
+
requests: number;
|
|
39
|
+
feeShareChf: string;
|
|
40
|
+
}>;
|
|
41
|
+
}
|
|
42
|
+
export interface SeatFeesDto {
|
|
43
|
+
period: string;
|
|
44
|
+
isFinal: boolean;
|
|
45
|
+
billingEntity: {
|
|
46
|
+
type: 'org' | 'user';
|
|
47
|
+
id: string;
|
|
48
|
+
name: string;
|
|
49
|
+
billingStatus: BillingStatusValue;
|
|
50
|
+
inactiveReason: InactiveReasonValue | null;
|
|
51
|
+
trialEndsAt: string | null;
|
|
52
|
+
billingStartsAt: string | null;
|
|
53
|
+
reactivatedAt: string | null;
|
|
54
|
+
proRataDays: number | null;
|
|
55
|
+
proRataFactor: string | null;
|
|
56
|
+
firstInvoiceChf: string | null;
|
|
57
|
+
cancelEffectiveAt: string | null;
|
|
58
|
+
};
|
|
59
|
+
orgFee: {
|
|
60
|
+
sum: string;
|
|
61
|
+
total: string;
|
|
62
|
+
floorApplied: boolean;
|
|
63
|
+
/** Company fee at month end — running month only, else `null`. */
|
|
64
|
+
forecastTotal: string | null;
|
|
65
|
+
} | null;
|
|
66
|
+
/** The price version in effect for this period (collar formula / band). */
|
|
67
|
+
pricing: {
|
|
68
|
+
version: number;
|
|
69
|
+
unitPriceChf: string;
|
|
70
|
+
tiers: Array<{
|
|
71
|
+
tier: BillingTierDto;
|
|
72
|
+
floorChf: string;
|
|
73
|
+
capChf: string;
|
|
74
|
+
}>;
|
|
75
|
+
};
|
|
76
|
+
invoice: InvoiceDto | null;
|
|
77
|
+
reactivationInvoice: InvoiceDto | null;
|
|
78
|
+
persons: SeatFeePersonDto[];
|
|
79
|
+
}
|
|
80
|
+
export interface SeatFeesQuery {
|
|
81
|
+
period: string;
|
|
82
|
+
billingOrgId?: string;
|
|
83
|
+
userId?: string;
|
|
84
|
+
costCenterOrgId?: string;
|
|
85
|
+
}
|
|
86
|
+
export interface BillingEntityRowDto {
|
|
87
|
+
id: string;
|
|
88
|
+
type: 'org' | 'user';
|
|
89
|
+
name: string;
|
|
90
|
+
segment: string | null;
|
|
91
|
+
billingStatus: BillingStatusValue;
|
|
92
|
+
inactiveReason: InactiveReasonValue | null;
|
|
93
|
+
trialEndsAt: string | null;
|
|
94
|
+
billingStartsAt: string | null;
|
|
95
|
+
firstInvoiceChf: string | null;
|
|
96
|
+
cancelEffectiveAt: string | null;
|
|
97
|
+
persons: number;
|
|
98
|
+
requests: number;
|
|
99
|
+
feeSoFarChf: string | null;
|
|
100
|
+
feeError: {
|
|
101
|
+
code: string;
|
|
102
|
+
message: string;
|
|
103
|
+
} | null;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=billing-seat-fees.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing-seat-fees.types.d.ts","sourceRoot":"","sources":["../../src/clients/billing-seat-fees.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing-seat-fees.types.js","sourceRoot":"","sources":["../../src/clients/billing-seat-fees.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* billing.client.ts — FS64: typed SDK client for pricing (F564) and the subscription lifecycle
|
|
3
|
+
* (F705). `pricing()` is PUBLIC (no token needed) — beacon-web reads the same values as the
|
|
4
|
+
* cockpit (one source, no drift). Billing errors surface as typed subclasses of SdkError.
|
|
5
|
+
*/
|
|
6
|
+
import type { HttpClient } from '../transport/http-client.js';
|
|
7
|
+
import { SdkError } from '../transport/errors.js';
|
|
8
|
+
import type { BillingEntityRowDto, SeatFeesDto, SeatFeesQuery } from './billing-seat-fees.types.js';
|
|
9
|
+
import type { BillableRequestsDto, BillableRequestsQuery } from './billing-requests.types.js';
|
|
10
|
+
export type BillingStatusValue = 'trialing' | 'active' | 'cancelling' | 'past_due' | 'inactive';
|
|
11
|
+
export type InactiveReasonValue = 'cancelled' | 'payment_overdue' | 'payment_required';
|
|
12
|
+
export interface PricingTierDto {
|
|
13
|
+
tier: 'community' | 'solo' | 'org_contributor' | 'org_reviewer' | 'viewer';
|
|
14
|
+
segment: 'individual' | 'org' | 'any';
|
|
15
|
+
floorChf: string;
|
|
16
|
+
capChf: string;
|
|
17
|
+
condition: 'osi_public_repo' | 'requires_active_contributor' | null;
|
|
18
|
+
}
|
|
19
|
+
export interface PricingDto {
|
|
20
|
+
version: number;
|
|
21
|
+
effectiveFrom: string;
|
|
22
|
+
unitPriceChf: string;
|
|
23
|
+
trialDays: number;
|
|
24
|
+
tiers: PricingTierDto[];
|
|
25
|
+
}
|
|
26
|
+
export interface PricingVersionDto extends PricingDto {
|
|
27
|
+
id: string;
|
|
28
|
+
createdAt: string;
|
|
29
|
+
createdBy: string;
|
|
30
|
+
isEffective: boolean;
|
|
31
|
+
isPending: boolean;
|
|
32
|
+
}
|
|
33
|
+
export interface PricingInputDto {
|
|
34
|
+
unitPriceChf: string;
|
|
35
|
+
trialDays: number;
|
|
36
|
+
tiers: Array<{
|
|
37
|
+
tier: 'community' | 'solo' | 'org_contributor' | 'org_reviewer';
|
|
38
|
+
floorChf: string;
|
|
39
|
+
capChf: string;
|
|
40
|
+
}>;
|
|
41
|
+
}
|
|
42
|
+
export interface BillingStatusDto {
|
|
43
|
+
status: BillingStatusValue;
|
|
44
|
+
inactiveReason: InactiveReasonValue | null;
|
|
45
|
+
subscribedAt: string | null;
|
|
46
|
+
trialEndsAt: string | null;
|
|
47
|
+
billingStartsAt: string | null;
|
|
48
|
+
cancelledAt: string | null;
|
|
49
|
+
cancelEffectiveAt: string | null;
|
|
50
|
+
reactivatedAt: string | null;
|
|
51
|
+
pastDueAt: string | null;
|
|
52
|
+
}
|
|
53
|
+
export interface CompanyBillingStatusDto {
|
|
54
|
+
rootOrgId: string;
|
|
55
|
+
rootOrgName: string;
|
|
56
|
+
status: BillingStatusValue;
|
|
57
|
+
inactiveReason: InactiveReasonValue | null;
|
|
58
|
+
trialEndsAt: string | null;
|
|
59
|
+
billingStartsAt: string | null;
|
|
60
|
+
cancelEffectiveAt: string | null;
|
|
61
|
+
}
|
|
62
|
+
export interface UserBillingStatusDto {
|
|
63
|
+
personal: (BillingStatusDto & {
|
|
64
|
+
segment: 'solo' | 'community' | null;
|
|
65
|
+
}) | null;
|
|
66
|
+
companies: CompanyBillingStatusDto[];
|
|
67
|
+
}
|
|
68
|
+
/** 403/409 BILLING_ENTITY_INACTIVE — writes to a resource of an inactive entity. */
|
|
69
|
+
export declare class BillingEntityInactiveError extends SdkError {
|
|
70
|
+
readonly entity: 'company' | 'personal';
|
|
71
|
+
readonly rootOrgId: string | null;
|
|
72
|
+
readonly inactiveReason: InactiveReasonValue | null;
|
|
73
|
+
constructor(e: SdkError);
|
|
74
|
+
}
|
|
75
|
+
export declare class PersonalSubscriptionRequiredError extends SdkError {
|
|
76
|
+
}
|
|
77
|
+
export declare class ProjectOwnerRequiredError extends SdkError {
|
|
78
|
+
}
|
|
79
|
+
export declare class PaymentOverdueError extends SdkError {
|
|
80
|
+
}
|
|
81
|
+
export declare class PaymentRequiredError extends SdkError {
|
|
82
|
+
}
|
|
83
|
+
/** Maps a raw SdkError to its typed billing subclass (unchanged when not a billing code). */
|
|
84
|
+
export declare function toTypedBillingError(err: unknown): unknown;
|
|
85
|
+
export declare class BillingClient {
|
|
86
|
+
private http;
|
|
87
|
+
constructor(http: HttpClient);
|
|
88
|
+
/** GET /pricing — the currently effective price version (public, F564 AC-3). */
|
|
89
|
+
pricing(): Promise<PricingDto>;
|
|
90
|
+
/** GET /pricing/versions — history + pending version (vendor-only). */
|
|
91
|
+
pricingVersions(): Promise<PricingVersionDto[]>;
|
|
92
|
+
/** PUT /pricing — new version effective next UTC month (vendor-only). */
|
|
93
|
+
updatePricing(input: PricingInputDto): Promise<{
|
|
94
|
+
version: number;
|
|
95
|
+
effectiveFrom: string;
|
|
96
|
+
}>;
|
|
97
|
+
/** GET /users/me/billing/status — personal subscription + companies (banner source). */
|
|
98
|
+
myStatus(): Promise<UserBillingStatusDto>;
|
|
99
|
+
/** POST /users/me/billing/subscribe — take out the personal subscription. */
|
|
100
|
+
subscribe(input: {
|
|
101
|
+
segment: 'solo' | 'community';
|
|
102
|
+
repoUrl?: string | null;
|
|
103
|
+
}): Promise<BillingStatusDto & {
|
|
104
|
+
segment: 'solo' | 'community';
|
|
105
|
+
}>;
|
|
106
|
+
cancelPersonal(): Promise<BillingStatusDto>;
|
|
107
|
+
revokePersonalCancellation(): Promise<BillingStatusDto>;
|
|
108
|
+
reactivatePersonal(): Promise<BillingStatusDto>;
|
|
109
|
+
/** Company (root org) subscription — root-org admin for writes, any member for status. */
|
|
110
|
+
orgStatus(orgId: string): Promise<BillingStatusDto>;
|
|
111
|
+
cancelOrg(orgId: string): Promise<BillingStatusDto>;
|
|
112
|
+
revokeOrgCancellation(orgId: string): Promise<BillingStatusDto>;
|
|
113
|
+
reactivateOrg(orgId: string): Promise<BillingStatusDto>;
|
|
114
|
+
/** GET /billing/seat-fees — seat fees of one entity × month, scoped by the caller (F564). */
|
|
115
|
+
seatFees(query: SeatFeesQuery): Promise<SeatFeesDto>;
|
|
116
|
+
/** GET /billing/requests — billable requests of one entity × month, scoped (C907 AC-6). */
|
|
117
|
+
getBillableRequests(query: BillableRequestsQuery): Promise<BillableRequestsDto>;
|
|
118
|
+
/** GET /billing/entities — every billing entity with status and fees so far (vendor-only). */
|
|
119
|
+
entities(period?: string): Promise<BillingEntityRowDto[]>;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=billing.client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing.client.d.ts","sourceRoot":"","sources":["../../src/clients/billing.client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { SdkError } from '../transport/errors.js';
|
|
2
|
+
/** 403/409 BILLING_ENTITY_INACTIVE — writes to a resource of an inactive entity. */
|
|
3
|
+
export class BillingEntityInactiveError extends SdkError {
|
|
4
|
+
entity;
|
|
5
|
+
rootOrgId;
|
|
6
|
+
inactiveReason;
|
|
7
|
+
constructor(e) {
|
|
8
|
+
super(e.code, e.message, e.status, e.apiCode, e.details);
|
|
9
|
+
this.name = 'BillingEntityInactiveError';
|
|
10
|
+
this.entity = e.details?.entity ?? 'company';
|
|
11
|
+
this.rootOrgId = e.details?.rootOrgId ?? null;
|
|
12
|
+
this.inactiveReason = e.details?.inactiveReason ?? null;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export class PersonalSubscriptionRequiredError extends SdkError {
|
|
16
|
+
}
|
|
17
|
+
export class ProjectOwnerRequiredError extends SdkError {
|
|
18
|
+
}
|
|
19
|
+
export class PaymentOverdueError extends SdkError {
|
|
20
|
+
}
|
|
21
|
+
export class PaymentRequiredError extends SdkError {
|
|
22
|
+
}
|
|
23
|
+
const TYPED = {
|
|
24
|
+
BILLING_ENTITY_INACTIVE: (e) => new BillingEntityInactiveError(e),
|
|
25
|
+
PERSONAL_SUBSCRIPTION_REQUIRED: (e) => new PersonalSubscriptionRequiredError(e.code, e.message, e.status, e.apiCode, e.details),
|
|
26
|
+
PROJECT_OWNER_REQUIRED: (e) => new ProjectOwnerRequiredError(e.code, e.message, e.status, e.apiCode, e.details),
|
|
27
|
+
PAYMENT_OVERDUE: (e) => new PaymentOverdueError(e.code, e.message, e.status, e.apiCode, e.details),
|
|
28
|
+
PAYMENT_REQUIRED: (e) => new PaymentRequiredError(e.code, e.message, e.status, e.apiCode, e.details),
|
|
29
|
+
};
|
|
30
|
+
/** Maps a raw SdkError to its typed billing subclass (unchanged when not a billing code). */
|
|
31
|
+
export function toTypedBillingError(err) {
|
|
32
|
+
if (err instanceof SdkError && err.apiCode && TYPED[err.apiCode])
|
|
33
|
+
return TYPED[err.apiCode](err);
|
|
34
|
+
return err;
|
|
35
|
+
}
|
|
36
|
+
async function typed(p) {
|
|
37
|
+
try {
|
|
38
|
+
return await p;
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
throw toTypedBillingError(err);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/** Query string of the billing read endpoints (seat fees, requests). */
|
|
45
|
+
function readQuery(query) {
|
|
46
|
+
const params = new URLSearchParams({ period: query.period });
|
|
47
|
+
if (query.billingOrgId)
|
|
48
|
+
params.set('billingOrgId', query.billingOrgId);
|
|
49
|
+
if (query.userId)
|
|
50
|
+
params.set('userId', query.userId);
|
|
51
|
+
if (query.costCenterOrgId)
|
|
52
|
+
params.set('costCenterOrgId', query.costCenterOrgId);
|
|
53
|
+
return params.toString();
|
|
54
|
+
}
|
|
55
|
+
export class BillingClient {
|
|
56
|
+
http;
|
|
57
|
+
constructor(http) {
|
|
58
|
+
this.http = http;
|
|
59
|
+
}
|
|
60
|
+
/** GET /pricing — the currently effective price version (public, F564 AC-3). */
|
|
61
|
+
pricing() {
|
|
62
|
+
return this.http.get('/pricing');
|
|
63
|
+
}
|
|
64
|
+
/** GET /pricing/versions — history + pending version (vendor-only). */
|
|
65
|
+
pricingVersions() {
|
|
66
|
+
return this.http.get('/pricing/versions');
|
|
67
|
+
}
|
|
68
|
+
/** PUT /pricing — new version effective next UTC month (vendor-only). */
|
|
69
|
+
updatePricing(input) {
|
|
70
|
+
return this.http.put('/pricing', input);
|
|
71
|
+
}
|
|
72
|
+
/** GET /users/me/billing/status — personal subscription + companies (banner source). */
|
|
73
|
+
myStatus() {
|
|
74
|
+
return typed(this.http.get('/users/me/billing/status'));
|
|
75
|
+
}
|
|
76
|
+
/** POST /users/me/billing/subscribe — take out the personal subscription. */
|
|
77
|
+
subscribe(input) {
|
|
78
|
+
return typed(this.http.post('/users/me/billing/subscribe', input));
|
|
79
|
+
}
|
|
80
|
+
cancelPersonal() {
|
|
81
|
+
return typed(this.http.post('/users/me/billing/cancel', {}));
|
|
82
|
+
}
|
|
83
|
+
revokePersonalCancellation() {
|
|
84
|
+
return typed(this.http.post('/users/me/billing/cancel/revoke', {}));
|
|
85
|
+
}
|
|
86
|
+
reactivatePersonal() {
|
|
87
|
+
return typed(this.http.post('/users/me/billing/reactivate', {}));
|
|
88
|
+
}
|
|
89
|
+
/** Company (root org) subscription — root-org admin for writes, any member for status. */
|
|
90
|
+
orgStatus(orgId) {
|
|
91
|
+
return typed(this.http.get(`/organizations/${encodeURIComponent(orgId)}/billing/status`));
|
|
92
|
+
}
|
|
93
|
+
cancelOrg(orgId) {
|
|
94
|
+
return typed(this.http.post(`/organizations/${encodeURIComponent(orgId)}/billing/cancel`, {}));
|
|
95
|
+
}
|
|
96
|
+
revokeOrgCancellation(orgId) {
|
|
97
|
+
return typed(this.http.post(`/organizations/${encodeURIComponent(orgId)}/billing/cancel/revoke`, {}));
|
|
98
|
+
}
|
|
99
|
+
reactivateOrg(orgId) {
|
|
100
|
+
return typed(this.http.post(`/organizations/${encodeURIComponent(orgId)}/billing/reactivate`, {}));
|
|
101
|
+
}
|
|
102
|
+
/** GET /billing/seat-fees — seat fees of one entity × month, scoped by the caller (F564). */
|
|
103
|
+
seatFees(query) {
|
|
104
|
+
return typed(this.http.get(`/billing/seat-fees?${readQuery(query)}`));
|
|
105
|
+
}
|
|
106
|
+
/** GET /billing/requests — billable requests of one entity × month, scoped (C907 AC-6). */
|
|
107
|
+
getBillableRequests(query) {
|
|
108
|
+
return typed(this.http.get(`/billing/requests?${readQuery(query)}`));
|
|
109
|
+
}
|
|
110
|
+
/** GET /billing/entities — every billing entity with status and fees so far (vendor-only). */
|
|
111
|
+
entities(period) {
|
|
112
|
+
const qs = period ? `?period=${encodeURIComponent(period)}` : '';
|
|
113
|
+
return typed(this.http.get(`/billing/entities${qs}`));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=billing.client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing.client.js","sourceRoot":"","sources":["../../src/clients/billing.client.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* Retry: on 503/network failure the caller retains the batch and retries on the
|
|
14
14
|
* next flush cycle (max 3 attempts, then log.warn + discard).
|
|
15
15
|
*/
|
|
16
|
-
import type { SessionClient } from '@beacon-build/core';
|
|
16
|
+
import type { PaymentMethod, SessionClient } from '@beacon-build/core';
|
|
17
17
|
export interface CapturedToolUse {
|
|
18
18
|
id: string;
|
|
19
19
|
name: string;
|
|
@@ -52,6 +52,10 @@ export interface CapturedEntry {
|
|
|
52
52
|
isSidechain: boolean;
|
|
53
53
|
subagentSessionId?: string | null;
|
|
54
54
|
agentType?: string | null;
|
|
55
|
+
/** F706: how this turn was paid (missing ⇒ server stores 'unknown'). */
|
|
56
|
+
paymentMethod?: PaymentMethod;
|
|
57
|
+
/** F706: `<provider>:user:<userId>` — only meaningful for `oauth_quota`. */
|
|
58
|
+
quotaAccount?: string | null;
|
|
55
59
|
toolUses: CapturedToolUse[];
|
|
56
60
|
}
|
|
57
61
|
export interface CaptureJob {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture.client.d.ts","sourceRoot":"","sources":["../../src/clients/capture.client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"capture.client.d.ts","sourceRoot":"","sources":["../../src/clients/capture.client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAOtE,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,6FAA6F;IAC7F,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;AAED,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAA;IACrC,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,WAAW,EAAE,OAAO,CAAA;IACpB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,wEAAwE;IACxE,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,QAAQ,EAAE,eAAe,EAAE,CAAA;CAC9B;AAED,MAAM,WAAW,UAAU;IACvB,iBAAiB,EAAE,MAAM,CAAA;IACzB,MAAM,EAAE,aAAa,CAAA;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAAA;IAC7B,OAAO,EAAE,aAAa,EAAE,CAAA;CAC3B;AAED,qBAAa,aAAa;IAYlB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAX5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAQlC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgC;gBAGxC,OAAO,EAAE,MAAM,EAChC,SAAS,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAS1E,MAAM,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAoB/D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture.client.js","sourceRoot":"","sources":["../../src/clients/capture.client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"capture.client.js","sourceRoot":"","sources":["../../src/clients/capture.client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAiEH,MAAM,OAAO,aAAa;IAYD;IAXJ,SAAS,CAAQ;IAClC,2FAA2F;IAC3F,4FAA4F;IAC5F,yEAAyE;IACzE,yFAAyF;IACzF,+EAA+E;IAC/E,yFAAyF;IACzF,qBAAqB;IACJ,YAAY,CAAgC;IAE7D,YACqB,OAAe,EAChC,SAA4E;QAD3D,YAAO,GAAP,OAAO,CAAQ;QAGhC,IAAI,CAAC,SAAS,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,qCAAqC,CAAA;QACnF,IAAI,CAAC,YAAY;YACb,OAAO,SAAS,KAAK,UAAU;gBAC3B,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,SAAS,EAAE,CAAC,IAAI,EAAE;gBACvC,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAe;QACxB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE;YACpC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,MAAM,IAAI,CAAC,YAAY,EAAE,EAAE;aACvD;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;SAC5B,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACV,wEAAwE;YACxE,0EAA0E;YAC1E,uEAAuE;YACvE,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAA;QAC7E,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAqC,CAAA;QACrF,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;IAClE,CAAC;CACJ"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ProjectsClient } from '../clients/projects.client.js';
|
|
2
2
|
import { OnboardingClient } from '../clients/onboarding.client.js';
|
|
3
|
+
import { BillingClient } from '../clients/billing.client.js';
|
|
3
4
|
export interface UserSdkConfig {
|
|
4
5
|
/** Base URL for the beacon API (e.g. 'https://api.beacon.build') */
|
|
5
6
|
baseUrl: string;
|
|
@@ -12,6 +13,8 @@ export interface UserSdk {
|
|
|
12
13
|
projects: ProjectsClient;
|
|
13
14
|
/** Onboarding client for guided wizard draft CRUD (F640) */
|
|
14
15
|
onboarding: OnboardingClient;
|
|
16
|
+
/** FS64: pricing (F564) + subscription lifecycle (F705) */
|
|
17
|
+
billing: BillingClient;
|
|
15
18
|
}
|
|
16
19
|
/**
|
|
17
20
|
* createUserClient — creates an SDK instance authenticated with a user JWT.
|
|
@@ -19,4 +22,12 @@ export interface UserSdk {
|
|
|
19
22
|
* the caller must be a human user (F639).
|
|
20
23
|
*/
|
|
21
24
|
export declare function createUserClient(config: UserSdkConfig): UserSdk;
|
|
25
|
+
/**
|
|
26
|
+
* FS64/F564 AC-3 — unauthenticated pricing read (`GET /api/v1/pricing`, authMode 'public') so
|
|
27
|
+
* beacon-web shows exactly the values the cockpit reads. No token: the route is mounted before
|
|
28
|
+
* the auth guard.
|
|
29
|
+
*/
|
|
30
|
+
export declare function createPublicPricingClient(config: {
|
|
31
|
+
baseUrl: string;
|
|
32
|
+
}): Pick<BillingClient, 'pricing'>;
|
|
22
33
|
//# sourceMappingURL=user-sdk.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-sdk.d.ts","sourceRoot":"","sources":["../../src/factory/user-sdk.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;
|
|
1
|
+
{"version":3,"file":"user-sdk.d.ts","sourceRoot":"","sources":["../../src/factory/user-sdk.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAE5D,MAAM,WAAW,aAAa;IAC1B,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAA;IACf,iDAAiD;IACjD,SAAS,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;IACpD,cAAc,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,CAAA;CAC9D;AAED,MAAM,WAAW,OAAO;IACpB,sDAAsD;IACtD,QAAQ,EAAE,cAAc,CAAA;IACxB,4DAA4D;IAC5D,UAAU,EAAE,gBAAgB,CAAA;IAC5B,2DAA2D;IAC3D,OAAO,EAAE,aAAa,CAAA;CACzB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAgB/D;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAC9C,OAAO,EAAE,MAAM,CAAA;CAClB,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAQjC"}
|
package/dist/factory/user-sdk.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { HttpClient } from '../transport/http-client.js';
|
|
2
2
|
import { ProjectsClient } from '../clients/projects.client.js';
|
|
3
3
|
import { OnboardingClient } from '../clients/onboarding.client.js';
|
|
4
|
+
import { BillingClient } from '../clients/billing.client.js';
|
|
4
5
|
/**
|
|
5
6
|
* createUserClient — creates an SDK instance authenticated with a user JWT.
|
|
6
7
|
* Used for user-scoped operations such as atomic project provisioning where
|
|
@@ -18,6 +19,21 @@ export function createUserClient(config) {
|
|
|
18
19
|
return {
|
|
19
20
|
projects: new ProjectsClient(v1Http),
|
|
20
21
|
onboarding: new OnboardingClient(v1Http),
|
|
22
|
+
billing: new BillingClient(v1Http),
|
|
21
23
|
};
|
|
22
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* FS64/F564 AC-3 — unauthenticated pricing read (`GET /api/v1/pricing`, authMode 'public') so
|
|
27
|
+
* beacon-web shows exactly the values the cockpit reads. No token: the route is mounted before
|
|
28
|
+
* the auth guard.
|
|
29
|
+
*/
|
|
30
|
+
export function createPublicPricingClient(config) {
|
|
31
|
+
const http = new HttpClient({
|
|
32
|
+
baseUrl: config.baseUrl,
|
|
33
|
+
basePath: '/api/v1',
|
|
34
|
+
getToken: () => '',
|
|
35
|
+
});
|
|
36
|
+
const client = new BillingClient(http);
|
|
37
|
+
return { pricing: () => client.pricing() };
|
|
38
|
+
}
|
|
23
39
|
//# sourceMappingURL=user-sdk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-sdk.js","sourceRoot":"","sources":["../../src/factory/user-sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;
|
|
1
|
+
{"version":3,"file":"user-sdk.js","sourceRoot":"","sources":["../../src/factory/user-sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAmB5D;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAqB;IAClD,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAA;IAC9B,MAAM,QAAQ,GACV,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAA;IACrD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC;QAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ,EAAE,SAAS;QACnB,QAAQ;QACR,cAAc,EAAE,MAAM,CAAC,cAAc;KACxC,CAAC,CAAA;IAEF,OAAO;QACH,QAAQ,EAAE,IAAI,cAAc,CAAC,MAAM,CAAC;QACpC,UAAU,EAAE,IAAI,gBAAgB,CAAC,MAAM,CAAC;QACxC,OAAO,EAAE,IAAI,aAAa,CAAC,MAAM,CAAC;KACrC,CAAA;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAEzC;IACG,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC;QACxB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE;KACrB,CAAC,CAAA;IACF,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAA;IACtC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAA;AAC9C,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -16,13 +16,14 @@
|
|
|
16
16
|
*/
|
|
17
17
|
export { createAgentClient, type AgentSdk, type AgentSdkConfig } from './factory/agent-sdk.js';
|
|
18
18
|
export { createTenantAgentClient, createTenantAgentTokenProvider, type TenantCredential, type TenantAgentSdkConfig, type TenantAgentTokenProvider, } from './factory/tenant-agent-sdk.js';
|
|
19
|
-
export { createUserClient, type UserSdk, type UserSdkConfig } from './factory/user-sdk.js';
|
|
19
|
+
export { createPublicPricingClient, createUserClient, type UserSdk, type UserSdkConfig, } from './factory/user-sdk.js';
|
|
20
20
|
export { createAuthClient, type AuthClient, type LoginResult, type RegisterResult, type RefreshResult, type MeResult, type InviteDetails, } from './clients/auth.client.js';
|
|
21
21
|
export { RealtimeSdkClient, type RealtimeSdkClientConfig } from './realtime/realtime.client.js';
|
|
22
22
|
export * from './index.auth-and-capture.js';
|
|
23
23
|
export { computePermissions, type Permissions, type RoleRow } from './permissions.js';
|
|
24
24
|
export { SdkError, type SdkErrorCode, statusToSdkCode, apiCodeToSdkCode, } from './transport/errors.js';
|
|
25
|
-
export { HttpClient, type HttpClientConfig } from './transport/http-client.js';
|
|
25
|
+
export { HttpClient, type HttpClientConfig, type HttpRequestOptions, } from './transport/http-client.js';
|
|
26
|
+
export { runWithBackgroundOrigin, requestOriginHeaders, withBackgroundRefetchOrigin, installBackgroundRefetchOrigin, } from './transport/request-origin.js';
|
|
26
27
|
export { SseClient, type SseStreamHandler, type SseStreamResult } from './transport/sse-client.js';
|
|
27
28
|
export { MultipartClient, type MultipartClientConfig } from './transport/multipart-client.js';
|
|
28
29
|
export { BinaryClient, type BinaryClientConfig, type BinaryDownloadResult, } from './transport/binary-client.js';
|
|
@@ -30,6 +31,9 @@ export { AgentCapabilityClient, type CapabilityCandidateDto, } from './clients/a
|
|
|
30
31
|
export { AgentControllerClient, type AgentControllerEntryDto, type AgentControllerRevokeResult, type AgentControllerPrincipalIdentity, type MainAgentValidityDto, } from './clients/agent/agent-controller.client.js';
|
|
31
32
|
export { SystemOneClient, type SystemOneClassifyRequest, type SystemOneClassifyResult, type SystemOneClassifyOk, type SystemOneClassifySkipped, type SystemOneQuestion, type SystemOneNoulQuestion, type SystemOneChoiceQuestion, type SystemOneScoreQuestion, type SystemOneAnswer, type SystemOneNoulAnswer, type SystemOneChoiceAnswer, type SystemOneScoreAnswer, type SystemOneUsage, } from './clients/agent/system-one.client.js';
|
|
32
33
|
export { ProjectsClient, type OwnerProvisionDto, type ProjectProvisionDetailsDto, type MainAgentProvisionDetailsDto, type ProvisionProjectRequestDto, type ProvisionedProjectDto, } from './clients/projects.client.js';
|
|
34
|
+
export { BillingClient, BillingEntityInactiveError, PaymentOverdueError, PaymentRequiredError, PersonalSubscriptionRequiredError, ProjectOwnerRequiredError, toTypedBillingError, type BillingStatusDto, type BillingStatusValue, type CompanyBillingStatusDto, type InactiveReasonValue, type PricingDto, type PricingInputDto, type PricingTierDto, type PricingVersionDto, type UserBillingStatusDto, } from './clients/billing.client.js';
|
|
35
|
+
export type { BillingEntityRowDto, BillingTierDto, InvoiceDto, LadderRoleDto, SeatFeePersonDto, SeatFeesDto, SeatFeesQuery, } from './clients/billing-seat-fees.types.js';
|
|
36
|
+
export type { BillableRequestsDto, BillableRequestsPersonDto, BillableRequestsQuery, ProjectRequestsDto, } from './clients/billing-requests.types.js';
|
|
33
37
|
export { OnboardingClient, type OnboardingDraftDto, type SaveOnboardingDraftDto, } from './clients/onboarding.client.js';
|
|
34
38
|
export { SDK_MANIFEST, SDK_NEGATIVE_LIST, type ManifestEntry, type ManifestNegativeEntry, type SdkAuthMode, } from './manifest.js';
|
|
35
39
|
export { TaskConfigClient } from './clients/shared/task-config.client.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,iBAAiB,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAE9F,OAAO,EACH,uBAAuB,EACvB,8BAA8B,EAC9B,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,GAChC,MAAM,+BAA+B,CAAA;AACtC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
export { createAgentClient } from './factory/agent-sdk.js';
|
|
19
19
|
// B987: Agent SDK authenticated with a tenant credential (owner-minted token or tenant API key).
|
|
20
20
|
export { createTenantAgentClient, createTenantAgentTokenProvider, } from './factory/tenant-agent-sdk.js';
|
|
21
|
-
export { createUserClient } from './factory/user-sdk.js';
|
|
21
|
+
export { createPublicPricingClient, createUserClient, } from './factory/user-sdk.js';
|
|
22
22
|
// ── Auth client ────────────────────────────────────────────────────────────────
|
|
23
23
|
export { createAuthClient, } from './clients/auth.client.js';
|
|
24
24
|
// ── Realtime (implemented in F141) ────────────────────────────────────────────
|
|
@@ -32,7 +32,9 @@ export { computePermissions } from './permissions.js';
|
|
|
32
32
|
// ── Errors ────────────────────────────────────────────────────────────────────
|
|
33
33
|
export { SdkError, statusToSdkCode, apiCodeToSdkCode, } from './transport/errors.js';
|
|
34
34
|
// ── Transport (for advanced consumers, incl. @beacon-build/sdk-internal) ─────
|
|
35
|
-
export { HttpClient } from './transport/http-client.js';
|
|
35
|
+
export { HttpClient, } from './transport/http-client.js';
|
|
36
|
+
// C907/AC-8: background (never-billed) request-origin marking — see request-origin.ts.
|
|
37
|
+
export { runWithBackgroundOrigin, requestOriginHeaders, withBackgroundRefetchOrigin, installBackgroundRefetchOrigin, } from './transport/request-origin.js';
|
|
36
38
|
export { SseClient } from './transport/sse-client.js';
|
|
37
39
|
export { MultipartClient } from './transport/multipart-client.js';
|
|
38
40
|
// C434: needed by task-attachment-http.ts (packages/infrastructure) to fetch attachment bytes through the Ops-keyed path, same as AdminTasksClient.downloadAttachment.
|
|
@@ -45,6 +47,8 @@ export { AgentControllerClient, } from './clients/agent/agent-controller.client.
|
|
|
45
47
|
export { SystemOneClient, } from './clients/agent/system-one.client.js';
|
|
46
48
|
// F639: Atomic project provisioning
|
|
47
49
|
export { ProjectsClient, } from './clients/projects.client.js';
|
|
50
|
+
// FS64: pricing (F564) + subscription lifecycle (F705) client and typed billing errors
|
|
51
|
+
export { BillingClient, BillingEntityInactiveError, PaymentOverdueError, PaymentRequiredError, PersonalSubscriptionRequiredError, ProjectOwnerRequiredError, toTypedBillingError, } from './clients/billing.client.js';
|
|
48
52
|
// F640: Onboarding draft client
|
|
49
53
|
export { OnboardingClient, } from './clients/onboarding.client.js';
|
|
50
54
|
// ── Manifest (for drift testing) ──────────────────────────────────────────────
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,kFAAkF;AAClF,OAAO,EAAE,iBAAiB,EAAsC,MAAM,wBAAwB,CAAA;AAC9F,iGAAiG;AACjG,OAAO,EACH,uBAAuB,EACvB,8BAA8B,GAIjC,MAAM,+BAA+B,CAAA;AACtC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,kFAAkF;AAClF,OAAO,EAAE,iBAAiB,EAAsC,MAAM,wBAAwB,CAAA;AAC9F,iGAAiG;AACjG,OAAO,EACH,uBAAuB,EACvB,8BAA8B,GAIjC,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACH,yBAAyB,EACzB,gBAAgB,GAGnB,MAAM,uBAAuB,CAAA;AAE9B,kFAAkF;AAClF,OAAO,EACH,gBAAgB,GAOnB,MAAM,0BAA0B,CAAA;AAEjC,iFAAiF;AACjF,OAAO,EAAE,iBAAiB,EAAgC,MAAM,+BAA+B,CAAA;AAE/F,iFAAiF;AACjF,uFAAuF;AACvF,yEAAyE;AACzE,cAAc,6BAA6B,CAAA;AAE3C,iFAAiF;AACjF,OAAO,EAAE,kBAAkB,EAAkC,MAAM,kBAAkB,CAAA;AAErF,iFAAiF;AACjF,OAAO,EACH,QAAQ,EAER,eAAe,EACf,gBAAgB,GACnB,MAAM,uBAAuB,CAAA;AAE9B,gFAAgF;AAChF,OAAO,EACH,UAAU,GAGb,MAAM,4BAA4B,CAAA;AACnC,uFAAuF;AACvF,OAAO,EACH,uBAAuB,EACvB,oBAAoB,EACpB,2BAA2B,EAC3B,8BAA8B,GACjC,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,SAAS,EAA+C,MAAM,2BAA2B,CAAA;AAClG,OAAO,EAAE,eAAe,EAA8B,MAAM,iCAAiC,CAAA;AAC7F,uKAAuK;AACvK,OAAO,EACH,YAAY,GAGf,MAAM,8BAA8B,CAAA;AAErC,iFAAiF;AACjF,OAAO,EACH,qBAAqB,GAExB,MAAM,sCAAsC,CAAA;AAC7C,8DAA8D;AAC9D,OAAO,EACH,qBAAqB,GAKxB,MAAM,4CAA4C,CAAA;AACnD,qDAAqD;AACrD,OAAO,EACH,eAAe,GAclB,MAAM,sCAAsC,CAAA;AAE7C,oCAAoC;AACpC,OAAO,EACH,cAAc,GAMjB,MAAM,8BAA8B,CAAA;AAErC,uFAAuF;AACvF,OAAO,EACH,aAAa,EACb,0BAA0B,EAC1B,mBAAmB,EACnB,oBAAoB,EACpB,iCAAiC,EACjC,yBAAyB,EACzB,mBAAmB,GAUtB,MAAM,6BAA6B,CAAA;AAgBpC,gCAAgC;AAChC,OAAO,EACH,gBAAgB,GAGnB,MAAM,gCAAgC,CAAA;AAEvC,iFAAiF;AACjF,OAAO,EACH,YAAY,EACZ,iBAAiB,GAIpB,MAAM,eAAe,CAAA;AAEtB,wFAAwF;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.negative-list.d.ts","sourceRoot":"","sources":["../src/manifest.negative-list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAEhE,eAAO,MAAM,iBAAiB,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"manifest.negative-list.d.ts","sourceRoot":"","sources":["../src/manifest.negative-list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAEhE,eAAO,MAAM,iBAAiB,EAAE,qBAAqB,EAqPpD,CAAA"}
|
|
@@ -243,5 +243,15 @@ export const SDK_NEGATIVE_LIST = [
|
|
|
243
243
|
path: '/api/v1/ops/identity/federated-tokens',
|
|
244
244
|
reason: 'F496 ops-guarded federated-token mint — consumed by agent/service callers via raw fetch (cross-project trust primitive), no admin-UI/SDK use case',
|
|
245
245
|
},
|
|
246
|
+
{
|
|
247
|
+
method: 'GET',
|
|
248
|
+
path: '/api/v1/files/public/{key}{.+}',
|
|
249
|
+
reason: 'F709 public read route — a byte stream loaded directly by the browser (<img src>) from the URL toAssetUrl/toAvatarUrl produce; no SDK method needed',
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
method: 'GET',
|
|
253
|
+
path: '/api/v1/assets/{id}/content',
|
|
254
|
+
reason: 'F709 private content route — a byte stream opened directly by the browser (inline view / ?download=1) from the URL toAssetUrl produces; no SDK method needed',
|
|
255
|
+
},
|
|
246
256
|
];
|
|
247
257
|
//# sourceMappingURL=manifest.negative-list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.negative-list.js","sourceRoot":"","sources":["../src/manifest.negative-list.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manifest.negative-list.js","sourceRoot":"","sources":["../src/manifest.negative-list.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* F603's package split — the `authMode: 'admin'` entries formerly alongside these moved to
|
|
4
4
|
* `@beacon-build/sdk-internal`).
|
|
5
5
|
*
|
|
6
|
-
* Covers: /api/auth/* (authMode 'public'
|
|
6
|
+
* Covers: /api/auth/* and the public pricing read GET /api/v1/pricing (F564) — authMode 'public'.
|
|
7
7
|
*/
|
|
8
8
|
import type { ManifestEntry } from './manifest.types.js';
|
|
9
9
|
export declare const MANIFEST_PUBLIC_ENTRIES: ManifestEntry[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.public-entries.d.ts","sourceRoot":"","sources":["../src/manifest.public-entries.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAExD,eAAO,MAAM,uBAAuB,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"manifest.public-entries.d.ts","sourceRoot":"","sources":["../src/manifest.public-entries.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAExD,eAAO,MAAM,uBAAuB,EAAE,aAAa,EAkClD,CAAA"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* F603's package split — the `authMode: 'admin'` entries formerly alongside these moved to
|
|
4
4
|
* `@beacon-build/sdk-internal`).
|
|
5
5
|
*
|
|
6
|
-
* Covers: /api/auth/* (authMode 'public'
|
|
6
|
+
* Covers: /api/auth/* and the public pricing read GET /api/v1/pricing (F564) — authMode 'public'.
|
|
7
7
|
*/
|
|
8
8
|
export const MANIFEST_PUBLIC_ENTRIES = [
|
|
9
9
|
// ── Auth ──────────────────────────────────────────────────────────────────
|
|
@@ -37,5 +37,7 @@ export const MANIFEST_PUBLIC_ENTRIES = [
|
|
|
37
37
|
sdkPath: 'auth.redeemMagicLink',
|
|
38
38
|
authMode: 'public',
|
|
39
39
|
},
|
|
40
|
+
// ── Pricing (F564 AC-3: public, identical to the authenticated read) ─────────
|
|
41
|
+
{ method: 'GET', path: '/api/v1/pricing', sdkPath: 'billing.pricing', authMode: 'public' },
|
|
40
42
|
];
|
|
41
43
|
//# sourceMappingURL=manifest.public-entries.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.public-entries.js","sourceRoot":"","sources":["../src/manifest.public-entries.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,CAAC,MAAM,uBAAuB,GAAoB;IACpD,6EAA6E;IAC7E,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACtF,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAC5F,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAC1F,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACxF,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAC/E;QACI,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,0BAA0B;QAChC,OAAO,EAAE,2BAA2B;QACpC,QAAQ,EAAE,QAAQ;KACrB;IACD;QACI,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,kCAAkC;QACxC,OAAO,EAAE,2BAA2B;QACpC,QAAQ,EAAE,QAAQ;KACrB;IACD,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAC1F;QACI,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,uBAAuB;QAChC,QAAQ,EAAE,QAAQ;KACrB;IACD;QACI,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,6BAA6B;QACnC,OAAO,EAAE,sBAAsB;QAC/B,QAAQ,EAAE,QAAQ;KACrB;
|
|
1
|
+
{"version":3,"file":"manifest.public-entries.js","sourceRoot":"","sources":["../src/manifest.public-entries.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,CAAC,MAAM,uBAAuB,GAAoB;IACpD,6EAA6E;IAC7E,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACtF,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAC5F,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAC1F,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACxF,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAC/E;QACI,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,0BAA0B;QAChC,OAAO,EAAE,2BAA2B;QACpC,QAAQ,EAAE,QAAQ;KACrB;IACD;QACI,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,kCAAkC;QACxC,OAAO,EAAE,2BAA2B;QACpC,QAAQ,EAAE,QAAQ;KACrB;IACD,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAC1F;QACI,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,uBAAuB;QAChC,QAAQ,EAAE,QAAQ;KACrB;IACD;QACI,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,6BAA6B;QACnC,OAAO,EAAE,sBAAsB;QAC/B,QAAQ,EAAE,QAAQ;KACrB;IACD,gFAAgF;IAChF,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,EAAE;CAC7F,CAAA"}
|
|
@@ -43,6 +43,9 @@ export declare class SdkError extends Error {
|
|
|
43
43
|
* without pattern-matching on error prose (B300).
|
|
44
44
|
*/
|
|
45
45
|
readonly apiCode?: string | undefined;
|
|
46
|
+
/** Structured `details` from the error body (`body.details` or `body.error.details`),
|
|
47
|
+
* e.g. F705's BILLING_ENTITY_INACTIVE `{ entity, rootOrgId?, inactiveReason }`. */
|
|
48
|
+
readonly details?: Record<string, unknown> | undefined;
|
|
46
49
|
constructor(code: SdkErrorCode, message: string, status?: number | undefined,
|
|
47
50
|
/**
|
|
48
51
|
* The VERBATIM `code` from the API response body, when it sent one.
|
|
@@ -53,7 +56,10 @@ export declare class SdkError extends Error {
|
|
|
53
56
|
* keeps the API's own word intact, so a caller can distinguish two different 409s
|
|
54
57
|
* without pattern-matching on error prose (B300).
|
|
55
58
|
*/
|
|
56
|
-
apiCode?: string | undefined
|
|
59
|
+
apiCode?: string | undefined,
|
|
60
|
+
/** Structured `details` from the error body (`body.details` or `body.error.details`),
|
|
61
|
+
* e.g. F705's BILLING_ENTITY_INACTIVE `{ entity, rootOrgId?, inactiveReason }`. */
|
|
62
|
+
details?: Record<string, unknown> | undefined);
|
|
57
63
|
}
|
|
58
64
|
export declare function statusToSdkCode(status: number): SdkErrorCode;
|
|
59
65
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/transport/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,YAAY;AACpB,uFAAuF;AACrF,cAAc;AAChB,wFAAwF;GACtF,WAAW;AACb,gFAAgF;GAC9E,WAAW;AACb;+FAC+F;GAC7F,UAAU;AACZ,4FAA4F;GAC1F,YAAY;AACd;;gGAEgG;GAC9F,oBAAoB;AACtB,4EAA4E;GAC1E,cAAc;AAChB;wFACwF;GACtF,cAAc;AAChB;yFACyF;GACvF,qBAAqB;AACvB;sEACsE;GACpE,eAAe,CAAA;AAErB,qBAAa,QAAS,SAAQ,KAAK;aAEX,IAAI,EAAE,YAAY;aAElB,MAAM,CAAC,EAAE,MAAM;IAC/B;;;;;;;;OAQG;aACa,OAAO,CAAC,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/transport/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,YAAY;AACpB,uFAAuF;AACrF,cAAc;AAChB,wFAAwF;GACtF,WAAW;AACb,gFAAgF;GAC9E,WAAW;AACb;+FAC+F;GAC7F,UAAU;AACZ,4FAA4F;GAC1F,YAAY;AACd;;gGAEgG;GAC9F,oBAAoB;AACtB,4EAA4E;GAC1E,cAAc;AAChB;wFACwF;GACtF,cAAc;AAChB;yFACyF;GACvF,qBAAqB;AACvB;sEACsE;GACpE,eAAe,CAAA;AAErB,qBAAa,QAAS,SAAQ,KAAK;aAEX,IAAI,EAAE,YAAY;aAElB,MAAM,CAAC,EAAE,MAAM;IAC/B;;;;;;;;OAQG;aACa,OAAO,CAAC,EAAE,MAAM;IAChC;wFACoF;aACpE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAfjC,IAAI,EAAE,YAAY,EAClC,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,MAAM,YAAA;IAC/B;;;;;;;;OAQG;IACa,OAAO,CAAC,EAAE,MAAM,YAAA;IAChC;wFACoF;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAKxD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAoB5D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CAmB9E"}
|
package/dist/transport/errors.js
CHANGED
|
@@ -2,6 +2,7 @@ export class SdkError extends Error {
|
|
|
2
2
|
code;
|
|
3
3
|
status;
|
|
4
4
|
apiCode;
|
|
5
|
+
details;
|
|
5
6
|
constructor(code, message, status,
|
|
6
7
|
/**
|
|
7
8
|
* The VERBATIM `code` from the API response body, when it sent one.
|
|
@@ -12,11 +13,15 @@ export class SdkError extends Error {
|
|
|
12
13
|
* keeps the API's own word intact, so a caller can distinguish two different 409s
|
|
13
14
|
* without pattern-matching on error prose (B300).
|
|
14
15
|
*/
|
|
15
|
-
apiCode
|
|
16
|
+
apiCode,
|
|
17
|
+
/** Structured `details` from the error body (`body.details` or `body.error.details`),
|
|
18
|
+
* e.g. F705's BILLING_ENTITY_INACTIVE `{ entity, rootOrgId?, inactiveReason }`. */
|
|
19
|
+
details) {
|
|
16
20
|
super(message);
|
|
17
21
|
this.code = code;
|
|
18
22
|
this.status = status;
|
|
19
23
|
this.apiCode = apiCode;
|
|
24
|
+
this.details = details;
|
|
20
25
|
this.name = 'SdkError';
|
|
21
26
|
}
|
|
22
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/transport/errors.ts"],"names":[],"mappings":"AAiCA,MAAM,OAAO,QAAS,SAAQ,KAAK;IAEX;IAEA;IAUA;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/transport/errors.ts"],"names":[],"mappings":"AAiCA,MAAM,OAAO,QAAS,SAAQ,KAAK;IAEX;IAEA;IAUA;IAGA;IAhBpB,YACoB,IAAkB,EAClC,OAAe,EACC,MAAe;IAC/B;;;;;;;;OAQG;IACa,OAAgB;IAChC;wFACoF;IACpE,OAAiC;QAEjD,KAAK,CAAC,OAAO,CAAC,CAAA;QAjBE,SAAI,GAAJ,IAAI,CAAc;QAElB,WAAM,GAAN,MAAM,CAAS;QAUf,YAAO,GAAP,OAAO,CAAS;QAGhB,YAAO,GAAP,OAAO,CAA0B;QAGjD,IAAI,CAAC,IAAI,GAAG,UAAU,CAAA;IAC1B,CAAC;CACJ;AAED,MAAM,UAAU,eAAe,CAAC,MAAc;IAC1C,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,GAAG;YACJ,OAAO,cAAc,CAAA;QACzB,KAAK,GAAG;YACJ,OAAO,WAAW,CAAA;QACtB,KAAK,GAAG;YACJ,OAAO,WAAW,CAAA;QACtB,KAAK,GAAG;YACJ,OAAO,UAAU,CAAA;QACrB,KAAK,GAAG;YACJ,iFAAiF;YACjF,OAAO,oBAAoB,CAAA;QAC/B,KAAK,GAAG;YACJ,OAAO,cAAc,CAAA;QACzB,KAAK,GAAG;YACJ,OAAO,qBAAqB,CAAA;QAChC;YACI,OAAO,cAAc,CAAA;IAC7B,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,MAAc;IAC5D,QAAQ,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;QAC5B,KAAK,YAAY;YACb,OAAO,YAAY,CAAA;QACvB,KAAK,oBAAoB;YACrB,OAAO,oBAAoB,CAAA;QAC/B,KAAK,WAAW;YACZ,OAAO,WAAW,CAAA;QACtB,KAAK,UAAU;YACX,OAAO,UAAU,CAAA;QACrB,KAAK,cAAc;YACf,OAAO,cAAc,CAAA;QACzB,KAAK,WAAW;YACZ,OAAO,WAAW,CAAA;QACtB,KAAK,cAAc;YACf,OAAO,cAAc,CAAA;QACzB;YACI,OAAO,eAAe,CAAC,MAAM,CAAC,CAAA;IACtC,CAAC;AACL,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BillingOrigin } from '@beacon-build/core';
|
|
1
2
|
export interface HttpClientConfig {
|
|
2
3
|
baseUrl: string;
|
|
3
4
|
/** Base path prefix appended before each request path (e.g. '/api/v1') */
|
|
@@ -14,6 +15,15 @@ export interface HttpClientConfig {
|
|
|
14
15
|
/** Optional fetch implementation (test seam / custom transport). Defaults to global fetch. */
|
|
15
16
|
fetch?: typeof fetch;
|
|
16
17
|
}
|
|
18
|
+
/** Per-request options for the read methods (`get`/`getEnvelope`). */
|
|
19
|
+
export interface HttpRequestOptions {
|
|
20
|
+
/**
|
|
21
|
+
* C907/AC-8: `'background'` marks an automatically repeated call (a poll) — sent as
|
|
22
|
+
* `X-Beacon-Request-Origin: background`, counted but never billed. Omitted: the ambient
|
|
23
|
+
* `runWithBackgroundOrigin` scope decides (see `request-origin.ts`), else interactive.
|
|
24
|
+
*/
|
|
25
|
+
origin?: BillingOrigin;
|
|
26
|
+
}
|
|
17
27
|
/**
|
|
18
28
|
* HttpClient — JSON HTTP wrapper for User-JWT and Agent-JWT authenticated requests.
|
|
19
29
|
* C213: a single transparent retry on 401 when onUnauthorized yields a fresh token
|
|
@@ -32,12 +42,12 @@ export declare class HttpClient {
|
|
|
32
42
|
* unless a caller genuinely needs the status; see `postWithStatus`.
|
|
33
43
|
*/
|
|
34
44
|
private requestFull;
|
|
35
|
-
get<T>(path: string): Promise<T>;
|
|
45
|
+
get<T>(path: string, opts?: HttpRequestOptions): Promise<T>;
|
|
36
46
|
/**
|
|
37
47
|
* GET without unwrapping the `{ data }` envelope — returns the full body so
|
|
38
48
|
* callers can read `meta` (e.g. pagination total). F291.
|
|
39
49
|
*/
|
|
40
|
-
getEnvelope<T>(path: string): Promise<T>;
|
|
50
|
+
getEnvelope<T>(path: string, opts?: HttpRequestOptions): Promise<T>;
|
|
41
51
|
post<T>(path: string, body?: unknown): Promise<T>;
|
|
42
52
|
/**
|
|
43
53
|
* POST without unwrapping the `{ data }` envelope — mirrors `getEnvelope` exactly
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/transport/http-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/transport/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAIvD,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACxC;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,CAAA;IAC3D,8FAA8F;IAC9F,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;CACvB;AAED,sEAAsE;AACtE,MAAM,WAAW,kBAAkB;IAC/B;;;;OAIG;IACH,MAAM,CAAC,EAAE,aAAa,CAAA;CACzB;AAED;;;;;GAKG;AACH,qBAAa,UAAU;IACP,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;YAE9B,OAAO;IASrB;;;;;;OAMG;YACW,WAAW;IA+GzB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,kBAAuB,GAAG,OAAO,CAAC,CAAC,CAAC;IAI/D;;;OAGG;IACH,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,kBAAuB,GAAG,OAAO,CAAC,CAAC,CAAC;IAIvE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAOjD;;;;;OAKG;IACH,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAQzD;;;OAGG;IACH,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAOrF,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAOjD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAOhD,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAGtC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { SdkError, apiCodeToSdkCode, statusToSdkCode } from './errors.js';
|
|
2
|
+
import { requestOriginHeaders } from './request-origin.js';
|
|
2
3
|
/**
|
|
3
4
|
* HttpClient — JSON HTTP wrapper for User-JWT and Agent-JWT authenticated requests.
|
|
4
5
|
* C213: a single transparent retry on 401 when onUnauthorized yields a fresh token
|
|
@@ -22,6 +23,9 @@ export class HttpClient {
|
|
|
22
23
|
* unless a caller genuinely needs the status; see `postWithStatus`.
|
|
23
24
|
*/
|
|
24
25
|
async requestFull(path, init = {}, opts = {}) {
|
|
26
|
+
// C907/AC-8: resolved BEFORE the first `await` — the ambient background scope is
|
|
27
|
+
// synchronous-only (see request-origin.ts).
|
|
28
|
+
const originHeaders = requestOriginHeaders(opts.origin);
|
|
25
29
|
const unwrap = opts.unwrap ?? true;
|
|
26
30
|
let token;
|
|
27
31
|
try {
|
|
@@ -39,6 +43,7 @@ export class HttpClient {
|
|
|
39
43
|
const headers = {
|
|
40
44
|
'Content-Type': 'application/json',
|
|
41
45
|
Authorization: `Bearer ${bearer}`,
|
|
46
|
+
...originHeaders,
|
|
42
47
|
...(init.headers ?? {}),
|
|
43
48
|
};
|
|
44
49
|
try {
|
|
@@ -81,24 +86,33 @@ export class HttpClient {
|
|
|
81
86
|
// (transport/ops-api-client.ts) — was computed via body.code above but never
|
|
82
87
|
// threaded into the SdkError itself, so JWT-path callers could not read it.
|
|
83
88
|
let apiCode;
|
|
89
|
+
let details;
|
|
84
90
|
try {
|
|
85
91
|
const body = await res.json();
|
|
86
|
-
// Prefer body.code for precise error classification (e.g. 422 VALIDATION vs INVALID_TRANSITION)
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
92
|
+
// Prefer body.code for precise error classification (e.g. 422 VALIDATION vs INVALID_TRANSITION);
|
|
93
|
+
// the API's global error envelope nests it as body.error.code (F564: e.g. the
|
|
94
|
+
// contributor-gating 409s thrown from the org-member write path).
|
|
95
|
+
const bodyCode = typeof body?.code === 'string'
|
|
96
|
+
? body.code
|
|
97
|
+
: typeof body?.error?.code === 'string'
|
|
98
|
+
? body.error.code
|
|
99
|
+
: undefined;
|
|
100
|
+
if (bodyCode) {
|
|
101
|
+
apiCode = bodyCode;
|
|
102
|
+
code = apiCodeToSdkCode(bodyCode, res.status);
|
|
90
103
|
}
|
|
91
104
|
if (body?.error?.message)
|
|
92
105
|
message = body.error.message;
|
|
93
106
|
else if (typeof body?.error === 'string')
|
|
94
107
|
message = body.error;
|
|
108
|
+
details = body?.details ?? body?.error?.details;
|
|
95
109
|
}
|
|
96
110
|
catch (_err) {
|
|
97
111
|
// Deliberately swallowed: an unparsable error body (e.g. non-JSON) must not
|
|
98
112
|
// block throwing the SdkError below — it falls back to the status-derived
|
|
99
113
|
// `code`/`message` computed above the try block.
|
|
100
114
|
}
|
|
101
|
-
throw new SdkError(code, message, res.status, apiCode);
|
|
115
|
+
throw new SdkError(code, message, res.status, apiCode, details);
|
|
102
116
|
}
|
|
103
117
|
// 204 No Content
|
|
104
118
|
if (res.status === 204)
|
|
@@ -108,15 +122,15 @@ export class HttpClient {
|
|
|
108
122
|
const data = (!unwrap ? body : body?.data !== undefined ? body.data : body);
|
|
109
123
|
return { data, status: res.status };
|
|
110
124
|
}
|
|
111
|
-
get(path) {
|
|
112
|
-
return this.request(path);
|
|
125
|
+
get(path, opts = {}) {
|
|
126
|
+
return this.request(path, {}, { origin: opts.origin });
|
|
113
127
|
}
|
|
114
128
|
/**
|
|
115
129
|
* GET without unwrapping the `{ data }` envelope — returns the full body so
|
|
116
130
|
* callers can read `meta` (e.g. pagination total). F291.
|
|
117
131
|
*/
|
|
118
|
-
getEnvelope(path) {
|
|
119
|
-
return this.request(path, {}, { unwrap: false });
|
|
132
|
+
getEnvelope(path, opts = {}) {
|
|
133
|
+
return this.request(path, {}, { unwrap: false, origin: opts.origin });
|
|
120
134
|
}
|
|
121
135
|
post(path, body) {
|
|
122
136
|
return this.request(path, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/transport/http-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/transport/http-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { BillingOrigin } from '@beacon-build/core';
|
|
2
|
+
/** Run `fn` with every transport request it starts synchronously marked `background`. */
|
|
3
|
+
export declare function runWithBackgroundOrigin<T>(fn: () => T): T;
|
|
4
|
+
/**
|
|
5
|
+
* The origin header(s) a transport attaches to the request it is about to send: an explicit
|
|
6
|
+
* per-request `origin` wins, otherwise the ambient `runWithBackgroundOrigin` scope decides.
|
|
7
|
+
* Returns `{}` for `interactive` — the header is simply omitted (the server default).
|
|
8
|
+
*/
|
|
9
|
+
export declare function requestOriginHeaders(origin?: BillingOrigin): Record<string, string>;
|
|
10
|
+
/** The slice of react-query's `Query.state` the refetch decision reads. */
|
|
11
|
+
interface QueryStateLike {
|
|
12
|
+
dataUpdatedAt: number;
|
|
13
|
+
fetchMeta?: unknown;
|
|
14
|
+
}
|
|
15
|
+
/** The slice of react-query's defaulted query options the wrapper reads. */
|
|
16
|
+
interface PollingQueryOptionsLike {
|
|
17
|
+
queryFn?: unknown;
|
|
18
|
+
refetchInterval?: unknown;
|
|
19
|
+
queryHash?: string;
|
|
20
|
+
}
|
|
21
|
+
/** The slice of react-query's `QueryClient` `installBackgroundRefetchOrigin` needs. */
|
|
22
|
+
interface QueryClientLike {
|
|
23
|
+
defaultQueryOptions: (options: never) => object;
|
|
24
|
+
getQueryCache(): {
|
|
25
|
+
get(queryHash: string): {
|
|
26
|
+
state: QueryStateLike;
|
|
27
|
+
} | undefined;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Wrap a polling query's `queryFn` so its background refetches run inside
|
|
32
|
+
* `runWithBackgroundOrigin`. Non-polling queries (no positive/function `refetchInterval`) and
|
|
33
|
+
* non-function `queryFn`s (e.g. `skipToken`) are returned unchanged.
|
|
34
|
+
*/
|
|
35
|
+
export declare function withBackgroundRefetchOrigin<O extends PollingQueryOptionsLike>(options: O, getQueryState: (queryHash: string) => QueryStateLike | undefined): O;
|
|
36
|
+
/**
|
|
37
|
+
* C907/AC-8: make every polling query of `client` send its background refetches with
|
|
38
|
+
* `X-Beacon-Request-Origin: background`. Hooks into `QueryClient.defaultQueryOptions` — the one
|
|
39
|
+
* chokepoint every `useQuery`/`useInfiniteQuery` observer and `fetchQuery` resolves its options
|
|
40
|
+
* through — so no individual `refetchInterval` call site needs to know about billing.
|
|
41
|
+
*/
|
|
42
|
+
export declare function installBackgroundRefetchOrigin<C extends QueryClientLike>(client: C): C;
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=request-origin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-origin.d.ts","sourceRoot":"","sources":["../../src/transport/request-origin.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAKvD,yFAAyF;AACzF,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAOzD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAGnF;AAED,2EAA2E;AAC3E,UAAU,cAAc;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,4EAA4E;AAC5E,UAAU,uBAAuB;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,uFAAuF;AACvF,UAAU,eAAe;IACrB,mBAAmB,EAAE,CAAC,OAAO,EAAE,KAAK,KAAK,MAAM,CAAA;IAC/C,aAAa,IAAI;QAAE,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG;YAAE,KAAK,EAAE,cAAc,CAAA;SAAE,GAAG,SAAS,CAAA;KAAE,CAAA;CACrF;AA6BD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,uBAAuB,EACzE,OAAO,EAAE,CAAC,EACV,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,GACjE,CAAC,CAiBH;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAAC,CAAC,SAAS,eAAe,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAStF"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* C907/AC-8 — client-side billing-origin marking.
|
|
3
|
+
*
|
|
4
|
+
* An automatically repeated call (a poll, a react-query `refetchInterval` refetch) sends
|
|
5
|
+
* `X-Beacon-Request-Origin: background` (the header contract lives in `@beacon-build/core`'s
|
|
6
|
+
* `metrics/request-origin.ts`) so the API counts it but never bills it. A client can only ever
|
|
7
|
+
* mark itself LESS billable — absent/unknown values are `interactive` server-side.
|
|
8
|
+
*
|
|
9
|
+
* Two ways to mark a request:
|
|
10
|
+
* 1. Explicitly, per request — `HttpClient.get(path, { origin: 'background' })`.
|
|
11
|
+
* 2. Ambiently — `runWithBackgroundOrigin(fn)`: every transport request STARTED synchronously
|
|
12
|
+
* inside `fn` (before its first `await`) is marked. Browsers have no async context
|
|
13
|
+
* propagation, so transports read the scope via `requestOriginHeaders()` as the FIRST
|
|
14
|
+
* thing they do, before any `await`. A request started after an `await` inside `fn` falls
|
|
15
|
+
* back to `interactive` — the conservative direction (counted billable), never the reverse.
|
|
16
|
+
*
|
|
17
|
+
* `installBackgroundRefetchOrigin` wires (2) into a react-query `QueryClient` for every polling
|
|
18
|
+
* query, without a dependency on react-query itself (structural types only).
|
|
19
|
+
*/
|
|
20
|
+
// From the pure `/ide` subpath (not `core/browser`): the beacon-ide portal bundles the SDK and
|
|
21
|
+
// only `core/ide` alongside it — see packages/core/src/exports/ide.ts.
|
|
22
|
+
import { BACKGROUND_REQUEST_ORIGIN_HEADERS } from '@beacon-build/core/ide';
|
|
23
|
+
/** Nesting depth of active `runWithBackgroundOrigin` scopes (synchronous only — see header). */
|
|
24
|
+
let backgroundScopeDepth = 0;
|
|
25
|
+
/** Run `fn` with every transport request it starts synchronously marked `background`. */
|
|
26
|
+
export function runWithBackgroundOrigin(fn) {
|
|
27
|
+
backgroundScopeDepth++;
|
|
28
|
+
try {
|
|
29
|
+
return fn();
|
|
30
|
+
}
|
|
31
|
+
finally {
|
|
32
|
+
backgroundScopeDepth--;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* The origin header(s) a transport attaches to the request it is about to send: an explicit
|
|
37
|
+
* per-request `origin` wins, otherwise the ambient `runWithBackgroundOrigin` scope decides.
|
|
38
|
+
* Returns `{}` for `interactive` — the header is simply omitted (the server default).
|
|
39
|
+
*/
|
|
40
|
+
export function requestOriginHeaders(origin) {
|
|
41
|
+
const resolved = origin ?? (backgroundScopeDepth > 0 ? 'background' : 'interactive');
|
|
42
|
+
return resolved === 'background' ? { ...BACKGROUND_REQUEST_ORIGIN_HEADERS } : {};
|
|
43
|
+
}
|
|
44
|
+
/** Already-wrapped queryFns — `defaultQueryOptions` re-runs on already-defaulted options. */
|
|
45
|
+
const wrappedQueryFns = new WeakSet();
|
|
46
|
+
function isPollingQuery(refetchInterval) {
|
|
47
|
+
// A function interval decides per tick (e.g. visibility-gated) — still a polling query.
|
|
48
|
+
return (typeof refetchInterval === 'function' ||
|
|
49
|
+
(typeof refetchInterval === 'number' && refetchInterval > 0));
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Background = a RE-fetch of data the query already holds. The initial load (no data yet) is the
|
|
53
|
+
* user opening the view — interactive. An infinite query's `fetchNextPage`/`fetchPreviousPage`
|
|
54
|
+
* (`fetchMeta.fetchMore`) is a user scroll/click — interactive too.
|
|
55
|
+
*
|
|
56
|
+
* Deliberate trade-off: react-query does not tell a `queryFn` WHY it runs, so interval ticks,
|
|
57
|
+
* window-focus/reconnect refetches, invalidations and a manual `refetch()` of an already-loaded
|
|
58
|
+
* POLLING query are indistinguishable here — all are treated as background. The user action
|
|
59
|
+
* that triggers an invalidation (a mutation) is itself a separate, interactive request.
|
|
60
|
+
*/
|
|
61
|
+
function isBackgroundRefetch(state) {
|
|
62
|
+
if (!state || state.dataUpdatedAt <= 0)
|
|
63
|
+
return false;
|
|
64
|
+
const fetchMeta = state.fetchMeta;
|
|
65
|
+
return !fetchMeta?.fetchMore;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Wrap a polling query's `queryFn` so its background refetches run inside
|
|
69
|
+
* `runWithBackgroundOrigin`. Non-polling queries (no positive/function `refetchInterval`) and
|
|
70
|
+
* non-function `queryFn`s (e.g. `skipToken`) are returned unchanged.
|
|
71
|
+
*/
|
|
72
|
+
export function withBackgroundRefetchOrigin(options, getQueryState) {
|
|
73
|
+
const { queryFn, refetchInterval, queryHash } = options;
|
|
74
|
+
if (typeof queryFn !== 'function' ||
|
|
75
|
+
wrappedQueryFns.has(queryFn) ||
|
|
76
|
+
!queryHash ||
|
|
77
|
+
!isPollingQuery(refetchInterval)) {
|
|
78
|
+
return options;
|
|
79
|
+
}
|
|
80
|
+
const run = queryFn;
|
|
81
|
+
const wrapped = (...args) => isBackgroundRefetch(getQueryState(queryHash))
|
|
82
|
+
? runWithBackgroundOrigin(() => run(...args))
|
|
83
|
+
: run(...args);
|
|
84
|
+
wrappedQueryFns.add(wrapped);
|
|
85
|
+
return { ...options, queryFn: wrapped };
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* C907/AC-8: make every polling query of `client` send its background refetches with
|
|
89
|
+
* `X-Beacon-Request-Origin: background`. Hooks into `QueryClient.defaultQueryOptions` — the one
|
|
90
|
+
* chokepoint every `useQuery`/`useInfiniteQuery` observer and `fetchQuery` resolves its options
|
|
91
|
+
* through — so no individual `refetchInterval` call site needs to know about billing.
|
|
92
|
+
*/
|
|
93
|
+
export function installBackgroundRefetchOrigin(client) {
|
|
94
|
+
const base = client.defaultQueryOptions.bind(client);
|
|
95
|
+
const getQueryState = (queryHash) => client.getQueryCache().get(queryHash)?.state;
|
|
96
|
+
client.defaultQueryOptions = ((options) => withBackgroundRefetchOrigin(base(options), getQueryState));
|
|
97
|
+
return client;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=request-origin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-origin.js","sourceRoot":"","sources":["../../src/transport/request-origin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,+FAA+F;AAC/F,uEAAuE;AACvE,OAAO,EAAE,iCAAiC,EAAE,MAAM,wBAAwB,CAAA;AAG1E,gGAAgG;AAChG,IAAI,oBAAoB,GAAG,CAAC,CAAA;AAE5B,yFAAyF;AACzF,MAAM,UAAU,uBAAuB,CAAI,EAAW;IAClD,oBAAoB,EAAE,CAAA;IACtB,IAAI,CAAC;QACD,OAAO,EAAE,EAAE,CAAA;IACf,CAAC;YAAS,CAAC;QACP,oBAAoB,EAAE,CAAA;IAC1B,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAsB;IACvD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAA;IACpF,OAAO,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,iCAAiC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;AACpF,CAAC;AAqBD,6FAA6F;AAC7F,MAAM,eAAe,GAAG,IAAI,OAAO,EAAU,CAAA;AAE7C,SAAS,cAAc,CAAC,eAAwB;IAC5C,wFAAwF;IACxF,OAAO,CACH,OAAO,eAAe,KAAK,UAAU;QACrC,CAAC,OAAO,eAAe,KAAK,QAAQ,IAAI,eAAe,GAAG,CAAC,CAAC,CAC/D,CAAA;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,mBAAmB,CAAC,KAAiC;IAC1D,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IACpD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAuD,CAAA;IAC/E,OAAO,CAAC,SAAS,EAAE,SAAS,CAAA;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CACvC,OAAU,EACV,aAAgE;IAEhE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,OAAO,CAAA;IACvD,IACI,OAAO,OAAO,KAAK,UAAU;QAC7B,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;QAC5B,CAAC,SAAS;QACV,CAAC,cAAc,CAAC,eAAe,CAAC,EAClC,CAAC;QACC,OAAO,OAAO,CAAA;IAClB,CAAC;IACD,MAAM,GAAG,GAAG,OAA0C,CAAA;IACtD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAe,EAAW,EAAE,CAC5C,mBAAmB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;IACtB,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC5B,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;AAC3C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAA4B,MAAS;IAC/E,MAAM,IAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAiC,CAAA;IACpF,MAAM,aAAa,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,CAAA;IACzF,MAAM,CAAC,mBAAmB,GAAG,CAAC,CAAC,OAAgB,EAAE,EAAE,CAC/C,2BAA2B,CACvB,IAAI,CAAC,OAAO,CAA4B,EACxC,aAAa,CAChB,CAA6B,CAAA;IAClC,OAAO,MAAM,CAAA;AACjB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@beacon-build/sdk",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"@types/react": "^19.2.0",
|
|
27
27
|
"@types/react-dom": "^19.2.0",
|
|
28
28
|
"event-source-polyfill": "^1.0.31",
|
|
29
|
-
"@beacon-build/core": "
|
|
29
|
+
"@beacon-build/core": "3.0.0"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@testing-library/react": "^16.3.2",
|