@openlimiter/core 1.3.5 → 2.0.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.
Files changed (82) hide show
  1. package/dist/acquire/cadence.d.ts +5 -3
  2. package/dist/acquire/cadence.d.ts.map +1 -1
  3. package/dist/acquire/cadence.js +14 -9
  4. package/dist/acquire/cadence.js.map +1 -1
  5. package/dist/acquire/coordination.d.ts.map +1 -1
  6. package/dist/acquire/coordination.js +3 -4
  7. package/dist/acquire/coordination.js.map +1 -1
  8. package/dist/acquire/credentials.d.ts +5 -2
  9. package/dist/acquire/credentials.d.ts.map +1 -1
  10. package/dist/acquire/credentials.js +45 -11
  11. package/dist/acquire/credentials.js.map +1 -1
  12. package/dist/acquire/cursor.d.ts +8 -0
  13. package/dist/acquire/cursor.d.ts.map +1 -0
  14. package/dist/acquire/cursor.js +60 -0
  15. package/dist/acquire/cursor.js.map +1 -0
  16. package/dist/acquire/identity.d.ts +16 -2
  17. package/dist/acquire/identity.d.ts.map +1 -1
  18. package/dist/acquire/identity.js +64 -1
  19. package/dist/acquire/identity.js.map +1 -1
  20. package/dist/acquire/index.d.ts +1 -0
  21. package/dist/acquire/index.d.ts.map +1 -1
  22. package/dist/acquire/index.js +1 -0
  23. package/dist/acquire/index.js.map +1 -1
  24. package/dist/acquire/providers.d.ts +1 -0
  25. package/dist/acquire/providers.d.ts.map +1 -1
  26. package/dist/acquire/providers.js +10 -1
  27. package/dist/acquire/providers.js.map +1 -1
  28. package/dist/acquire/runner.d.ts +7 -14
  29. package/dist/acquire/runner.d.ts.map +1 -1
  30. package/dist/acquire/runner.js +151 -9
  31. package/dist/acquire/runner.js.map +1 -1
  32. package/dist/acquire/transport.d.ts +7 -1
  33. package/dist/acquire/transport.d.ts.map +1 -1
  34. package/dist/acquire/transport.js +30 -4
  35. package/dist/acquire/transport.js.map +1 -1
  36. package/dist/activity/contract.d.ts +108 -0
  37. package/dist/activity/contract.d.ts.map +1 -0
  38. package/dist/activity/contract.js +281 -0
  39. package/dist/activity/contract.js.map +1 -0
  40. package/dist/activity/spool.d.ts +20 -0
  41. package/dist/activity/spool.d.ts.map +1 -0
  42. package/dist/activity/spool.js +305 -0
  43. package/dist/activity/spool.js.map +1 -0
  44. package/dist/cache.d.ts +41 -2
  45. package/dist/cache.d.ts.map +1 -1
  46. package/dist/cache.js +134 -4
  47. package/dist/cache.js.map +1 -1
  48. package/dist/collection.d.ts.map +1 -1
  49. package/dist/collection.js +6 -0
  50. package/dist/collection.js.map +1 -1
  51. package/dist/connection-state.d.ts +15 -0
  52. package/dist/connection-state.d.ts.map +1 -1
  53. package/dist/connection-state.js +18 -0
  54. package/dist/connection-state.js.map +1 -1
  55. package/dist/contracts/notify.d.ts +47 -0
  56. package/dist/contracts/notify.d.ts.map +1 -0
  57. package/dist/contracts/notify.js +83 -0
  58. package/dist/contracts/notify.js.map +1 -0
  59. package/dist/contracts/surfaces.d.ts +61 -0
  60. package/dist/contracts/surfaces.d.ts.map +1 -0
  61. package/dist/contracts/surfaces.js +73 -0
  62. package/dist/contracts/surfaces.js.map +1 -0
  63. package/dist/contracts/wire.d.ts +108 -0
  64. package/dist/contracts/wire.d.ts.map +1 -0
  65. package/dist/contracts/wire.js +202 -0
  66. package/dist/contracts/wire.js.map +1 -0
  67. package/dist/data-rules.d.ts +30 -0
  68. package/dist/data-rules.d.ts.map +1 -0
  69. package/dist/data-rules.js +57 -0
  70. package/dist/data-rules.js.map +1 -0
  71. package/dist/index.d.ts +5 -0
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +5 -0
  74. package/dist/index.js.map +1 -1
  75. package/dist/normalizer.d.ts.map +1 -1
  76. package/dist/normalizer.js +42 -7
  77. package/dist/normalizer.js.map +1 -1
  78. package/dist/types.d.ts +44 -10
  79. package/dist/types.d.ts.map +1 -1
  80. package/dist/types.js +7 -0
  81. package/dist/types.js.map +1 -1
  82. package/package.json +16 -1
@@ -0,0 +1,108 @@
1
+ import { type ConnectorVerification, type Snapshot, type SnapshotAvailability, type SnapshotCurrency, type SnapshotKind, type SnapshotPrecision, type SnapshotSource, type VerificationEvidence } from "../types.js";
2
+ export declare const WIRE_SCHEMA_VERSION_V3: 3;
3
+ export interface WireVerificationEvidence {
4
+ readonly provider_version: string;
5
+ readonly account_shape: string;
6
+ readonly os: string;
7
+ readonly date: string;
8
+ }
9
+ /** The v2 allowlist, plus seven optional v3 metadata fields. */
10
+ export interface WireSampleV3 {
11
+ readonly account_id: string;
12
+ readonly provider: string;
13
+ readonly window_id: string;
14
+ readonly observed_at: string;
15
+ readonly stale: boolean;
16
+ readonly meter?: string;
17
+ readonly code?: string;
18
+ readonly usage_percent?: number | null;
19
+ readonly percent?: number | null;
20
+ readonly reset_at?: string | null;
21
+ readonly resets_at?: string | null;
22
+ readonly amount?: number | null;
23
+ readonly currency?: SnapshotCurrency | null;
24
+ readonly source_period?: readonly [string, string];
25
+ readonly source?: SnapshotSource;
26
+ readonly precision?: SnapshotPrecision;
27
+ readonly verification?: ConnectorVerification;
28
+ readonly verification_evidence?: WireVerificationEvidence;
29
+ readonly kind?: SnapshotKind;
30
+ readonly availability?: SnapshotAvailability;
31
+ readonly retry_at?: string;
32
+ }
33
+ export interface WireForecastInput {
34
+ readonly first_observed_at: string;
35
+ readonly last_observed_at: string;
36
+ readonly sample_count: number;
37
+ readonly burn_usd_per_day: number;
38
+ }
39
+ /** API spend remains the v2 shape. */
40
+ export interface WireApiSpendSample {
41
+ readonly source_id: string;
42
+ readonly account_id: string;
43
+ readonly provider: string;
44
+ readonly key_label: string;
45
+ readonly month: string;
46
+ readonly spend_usd: number;
47
+ readonly budget_usd: number | null;
48
+ readonly source_period: readonly [string, string];
49
+ readonly currency_source: string;
50
+ readonly raw_unit_scale: number;
51
+ readonly forecast_date: string | null;
52
+ readonly forecast_input: WireForecastInput | null;
53
+ readonly period_complete: boolean;
54
+ }
55
+ export interface WireEnvelopeV3 {
56
+ readonly event_id: string;
57
+ readonly device_id: string;
58
+ readonly previous_sequence: number;
59
+ readonly sequence: number;
60
+ readonly observed_at: string;
61
+ readonly client_version: string;
62
+ readonly schema_version: typeof WIRE_SCHEMA_VERSION_V3;
63
+ readonly usage_samples: readonly WireSampleV3[];
64
+ readonly api_spend_samples: readonly WireApiSpendSample[];
65
+ }
66
+ declare const LOCAL_KEYS: {
67
+ readonly account_id: "accountId";
68
+ readonly provider: "provider";
69
+ readonly window_id: "windowId";
70
+ readonly observed_at: "observedAt";
71
+ readonly stale: "stale";
72
+ readonly meter: "meter";
73
+ readonly code: "code";
74
+ readonly usage_percent: "usagePercent";
75
+ readonly percent: "percent";
76
+ readonly reset_at: "resetAt";
77
+ readonly resets_at: "resetsAt";
78
+ readonly amount: "amount";
79
+ readonly currency: "currency";
80
+ readonly source_period: "sourcePeriod";
81
+ readonly source: "source";
82
+ readonly precision: "precision";
83
+ readonly verification: "verification";
84
+ readonly verification_evidence: "verificationEvidence";
85
+ readonly kind: "kind";
86
+ readonly availability: "availability";
87
+ readonly retry_at: "retryAt";
88
+ };
89
+ /**
90
+ * A lossless camelCase projection, not a fabricated Snapshot. The wire does
91
+ * not carry expiresAt, window duration, or the other connector labels.
92
+ */
93
+ export type LocalWireSample = {
94
+ readonly [K in keyof WireSampleV3 as (typeof LOCAL_KEYS)[K]]: K extends "verification_evidence" ? VerificationEvidence : WireSampleV3[K];
95
+ };
96
+ /** No version lives on a sample. The containing envelope declares 2 or 3. */
97
+ export declare function readWireSample(value: unknown): LocalWireSample;
98
+ /**
99
+ * Snapshot inputs use the established unnamed account and meter window rules.
100
+ * staleness is evaluated at conversion time (or an explicit test clock).
101
+ * LocalWireSample inputs preserve the received wire projection exactly.
102
+ */
103
+ export declare function toWireSampleV3(snapshot: Snapshot, now?: string): WireSampleV3;
104
+ export declare function toWireSampleV3(snapshot: LocalWireSample): WireSampleV3;
105
+ /** Negotiation is opt in. Existing emitters continue to send v2. */
106
+ export declare function chooseWireVersion(serverAccepted: readonly number[]): 2 | 3;
107
+ export {};
108
+ //# sourceMappingURL=wire.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../src/contracts/wire.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,202 @@
1
+ import { CONNECTOR_VERIFICATIONS, SNAPSHOT_KINDS } from "../types.js";
2
+ export const WIRE_SCHEMA_VERSION_V3 = 3;
3
+ const LOCAL_KEYS = {
4
+ account_id: "accountId", provider: "provider", window_id: "windowId",
5
+ observed_at: "observedAt", stale: "stale", meter: "meter", code: "code",
6
+ usage_percent: "usagePercent", percent: "percent", reset_at: "resetAt",
7
+ resets_at: "resetsAt", amount: "amount", currency: "currency",
8
+ source_period: "sourcePeriod", source: "source", precision: "precision",
9
+ verification: "verification", verification_evidence: "verificationEvidence",
10
+ kind: "kind", availability: "availability", retry_at: "retryAt"
11
+ };
12
+ const SOURCES = ["native_payload", "documented_api", "internal_payload", "authenticated_page", "manual_entry"];
13
+ const PRECISIONS = ["exact", "estimated", "manual"];
14
+ const CURRENCIES = ["USD", "CNY"];
15
+ const AVAILABILITIES = {
16
+ network_failure: true, missing_credentials: true, expired_credentials: true,
17
+ access_denied: true, missing_subscription: true, unlimited: true,
18
+ quota_unavailable: true, rate_limited: true, schema_drift: true
19
+ };
20
+ const WIRE_AVAILABILITIES = Object.keys(AVAILABILITIES);
21
+ function fail(field, reason) {
22
+ throw new TypeError(`Invalid wire sample: ${field} ${reason}`);
23
+ }
24
+ function record(value, field) {
25
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
26
+ fail(field, "must be an object");
27
+ }
28
+ return value;
29
+ }
30
+ function closed(row, keys, field) {
31
+ for (const key of Object.keys(row)) {
32
+ if (!keys.includes(key))
33
+ fail(`${field}.${key}`, "is an unknown key");
34
+ if (row[key] === undefined)
35
+ fail(`${field}.${key}`, "must not be undefined; omit it instead");
36
+ }
37
+ }
38
+ function instant(value, field) {
39
+ if (typeof value !== "string" || !Number.isFinite(Date.parse(value)) ||
40
+ new Date(value).toISOString() !== value)
41
+ fail(field, "must be a canonical ISO instant");
42
+ }
43
+ function numeric(value, field, max, exclusive = false) {
44
+ if (typeof value !== "number" || !Number.isFinite(value) || value < 0 ||
45
+ (exclusive ? value >= max : value > max))
46
+ fail(field, `must be a finite number from 0 to ${max}${exclusive ? " (exclusive)" : ""}`);
47
+ }
48
+ function member(value, values, field) {
49
+ if (typeof value !== "string" || !values.includes(value))
50
+ fail(field, `must be one of ${values.join(", ")}`);
51
+ }
52
+ function validateSample(value) {
53
+ const row = record(value, "sample");
54
+ closed(row, Object.keys(LOCAL_KEYS), "sample");
55
+ for (const key of ["account_id", "provider", "window_id"]) {
56
+ if (typeof row[key] !== "string" || row[key].length === 0)
57
+ fail(key, "must be a nonempty string");
58
+ }
59
+ if (!/^[a-z0-9][a-z0-9-]{0,63}$/u.test(row["account_id"]))
60
+ fail("account_id", "must be a valid account alias");
61
+ instant(row["observed_at"], "observed_at");
62
+ if (typeof row["stale"] !== "boolean")
63
+ fail("stale", "must be a boolean");
64
+ for (const key of ["meter", "code"]) {
65
+ if (row[key] !== undefined && (typeof row[key] !== "string" || row[key].length === 0))
66
+ fail(key, "must be a nonempty string");
67
+ }
68
+ if (row["meter"] === undefined && row["code"] === undefined)
69
+ fail("meter/code", "requires a meter identifier");
70
+ for (const [left, right] of [["meter", "code"], ["usage_percent", "percent"], ["reset_at", "resets_at"]]) {
71
+ if (row[left] !== undefined && row[right] !== undefined && row[left] !== row[right])
72
+ fail(`${left}/${right}`, "aliases must agree");
73
+ }
74
+ for (const key of ["reset_at", "resets_at"]) {
75
+ if (row[key] !== undefined && row[key] !== null)
76
+ instant(row[key], key);
77
+ }
78
+ for (const key of ["usage_percent", "percent"]) {
79
+ if (row[key] !== undefined && row[key] !== null)
80
+ numeric(row[key], key, 100_000);
81
+ }
82
+ if (row["amount"] !== undefined && row["amount"] !== null)
83
+ numeric(row["amount"], "amount", 1e14, true);
84
+ if (row["currency"] !== undefined && row["currency"] !== null)
85
+ member(row["currency"], CURRENCIES, "currency");
86
+ if ((row["amount"] != null) !== (row["currency"] != null))
87
+ fail("amount/currency", "must be supplied together");
88
+ if (row["source_period"] !== undefined) {
89
+ const period = row["source_period"];
90
+ if (!Array.isArray(period) || period.length !== 2)
91
+ fail("source_period", "must contain two ISO instants");
92
+ instant(period[0], "source_period[0]");
93
+ instant(period[1], "source_period[1]");
94
+ if (Date.parse(period[0]) > Date.parse(period[1]))
95
+ fail("source_period", "must be ordered");
96
+ }
97
+ for (const [key, values] of [
98
+ ["source", SOURCES], ["precision", PRECISIONS],
99
+ ["verification", CONNECTOR_VERIFICATIONS], ["kind", SNAPSHOT_KINDS],
100
+ ["availability", WIRE_AVAILABILITIES]
101
+ ]) {
102
+ if (row[key] !== undefined)
103
+ member(row[key], values, key);
104
+ }
105
+ if (row["verification_evidence"] !== undefined) {
106
+ if (row["verification"] !== "VERIFIED_LIVE")
107
+ fail("verification_evidence", "requires VERIFIED_LIVE");
108
+ const evidence = record(row["verification_evidence"], "verification_evidence");
109
+ closed(evidence, ["provider_version", "account_shape", "os", "date"], "verification_evidence");
110
+ for (const key of ["provider_version", "account_shape", "os"]) {
111
+ if (typeof evidence[key] !== "string")
112
+ fail(`verification_evidence.${key}`, "must be a string");
113
+ }
114
+ instant(evidence["date"], "verification_evidence.date");
115
+ }
116
+ if (row["availability"] !== undefined && (typeof row["usage_percent"] === "number" || typeof row["percent"] === "number")) {
117
+ fail("availability", "cannot accompany a numeric percent");
118
+ }
119
+ if (row["availability"] === undefined && row["usage_percent"] == null && row["percent"] == null && row["amount"] == null) {
120
+ fail("sample", "requires a numeric percent, an amount, or availability");
121
+ }
122
+ if (row["retry_at"] !== undefined) {
123
+ if (row["availability"] !== "rate_limited")
124
+ fail("retry_at", "requires rate_limited availability");
125
+ instant(row["retry_at"], "retry_at");
126
+ }
127
+ return row;
128
+ }
129
+ /** No version lives on a sample. The containing envelope declares 2 or 3. */
130
+ export function readWireSample(value) {
131
+ const wire = validateSample(value);
132
+ const local = {};
133
+ for (const key of Object.keys(wire)) {
134
+ local[LOCAL_KEYS[key]] = wire[key];
135
+ }
136
+ if (wire.verification_evidence !== undefined) {
137
+ const evidence = wire.verification_evidence;
138
+ local["verificationEvidence"] = {
139
+ providerVersion: evidence.provider_version, accountShape: evidence.account_shape,
140
+ os: evidence.os, date: evidence.date
141
+ };
142
+ }
143
+ return local;
144
+ }
145
+ export function toWireSampleV3(snapshot, now = new Date().toISOString()) {
146
+ let wire;
147
+ if ("value" in snapshot) {
148
+ instant(snapshot.expiresAt, "expiresAt");
149
+ instant(now, "now");
150
+ if (snapshot.unit !== "PERCENT" && snapshot.availability === undefined && snapshot.usedAmount === undefined) {
151
+ fail("unit", "has no v2 usage representation; use an explicit amount projection");
152
+ }
153
+ wire = {
154
+ account_id: snapshot.accountId ?? "default", provider: snapshot.provider,
155
+ meter: snapshot.meter, window_id: snapshot.meter,
156
+ observed_at: snapshot.observedAt, reset_at: snapshot.resetAt,
157
+ stale: Date.parse(snapshot.expiresAt) <= Date.parse(now),
158
+ source: snapshot.source, precision: snapshot.precision,
159
+ verification: snapshot.labels.verification
160
+ };
161
+ if (snapshot.availability === undefined && snapshot.unit === "PERCENT")
162
+ wire["usage_percent"] = snapshot.value;
163
+ if (snapshot.usedAmount !== undefined)
164
+ wire["amount"] = snapshot.usedAmount;
165
+ if (snapshot.currency !== undefined)
166
+ wire["currency"] = snapshot.currency;
167
+ if (snapshot.kind !== undefined)
168
+ wire["kind"] = snapshot.kind;
169
+ if (snapshot.availability !== undefined)
170
+ wire["availability"] = snapshot.availability;
171
+ if (snapshot.retryAt !== undefined)
172
+ wire["retry_at"] = snapshot.retryAt;
173
+ if (snapshot.labels.verificationEvidence !== undefined) {
174
+ const evidence = snapshot.labels.verificationEvidence;
175
+ wire["verification_evidence"] = {
176
+ provider_version: evidence.providerVersion, account_shape: evidence.accountShape,
177
+ os: evidence.os, date: evidence.date
178
+ };
179
+ }
180
+ }
181
+ else {
182
+ wire = {};
183
+ for (const key of Object.keys(LOCAL_KEYS)) {
184
+ const value = snapshot[LOCAL_KEYS[key]];
185
+ if (value !== undefined)
186
+ wire[key] = value;
187
+ }
188
+ if (snapshot.verificationEvidence !== undefined) {
189
+ const evidence = snapshot.verificationEvidence;
190
+ wire["verification_evidence"] = {
191
+ provider_version: evidence.providerVersion, account_shape: evidence.accountShape,
192
+ os: evidence.os, date: evidence.date
193
+ };
194
+ }
195
+ }
196
+ return validateSample(wire);
197
+ }
198
+ /** Negotiation is opt in. Existing emitters continue to send v2. */
199
+ export function chooseWireVersion(serverAccepted) {
200
+ return serverAccepted.includes(WIRE_SCHEMA_VERSION_V3) ? WIRE_SCHEMA_VERSION_V3 : 2;
201
+ }
202
+ //# sourceMappingURL=wire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire.js","sourceRoot":"","sources":["../../src/contracts/wire.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { Snapshot } from "./types.js";
2
+ export declare const RETENTION_MILLISECONDS: number;
3
+ /** Rust twin: data_rules::freshness_policy. Poll jitter plus bounded request latency. */
4
+ export declare function freshnessPolicy(input: {
5
+ sourceClass: string;
6
+ observedAt: string;
7
+ now: string;
8
+ provider?: string;
9
+ writer?: string;
10
+ }): {
11
+ ttlSeconds: number;
12
+ expiresAt: string;
13
+ availability: string;
14
+ };
15
+ export declare function retainSnapshots(rows: readonly Snapshot[], now: number): Snapshot[];
16
+ export type FixKind = "reconnect" | "open_app" | "sign_in" | "switch_on" | "unsupported";
17
+ export interface ConnectionFlag {
18
+ provider: Snapshot["provider"];
19
+ accountId?: string;
20
+ reason: string;
21
+ fixKind: FixKind;
22
+ }
23
+ export declare function fixKind(reason: string): FixKind;
24
+ export declare function displayReason(row: Snapshot, now: string): string | null;
25
+ /** Active identities come from credentials or connections, never observation age. */
26
+ export declare function projectSnapshots(rows: readonly Snapshot[], now: string, active?: ReadonlyMap<string, ReadonlySet<string>>): {
27
+ snapshots: Snapshot[];
28
+ flags: ConnectionFlag[];
29
+ };
30
+ //# sourceMappingURL=data-rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-rules.d.ts","sourceRoot":"","sources":["../src/data-rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,eAAO,MAAM,sBAAsB,QAAiB,CAAC;AAErD,yFAAyF;AACzF,wBAAgB,eAAe,CAAC,KAAK,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE;;;;EAWlI;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,CAElF;AAED,MAAM,MAAM,OAAO,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,aAAa,CAAC;AACzF,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAM/C;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMvE;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG;IAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;IAAC,KAAK,EAAE,cAAc,EAAE,CAAA;CAAE,CAa9K"}
@@ -0,0 +1,57 @@
1
+ export const RETENTION_MILLISECONDS = 7 * 86_400_000;
2
+ /** Rust twin: data_rules::freshness_policy. Poll jitter plus bounded request latency. */
3
+ export function freshnessPolicy(input) {
4
+ const desktopIntervals = { CLAUDE: 900, GEMINI_CLI: 900, ANTIGRAVITY: 600, CODEX: 300, CURSOR: 300, GROK: 300, KIMI: 300, OPENROUTER: 300, OPENCODE: 300 };
5
+ const interval = input.sourceClass === "native_payload" ? 60
6
+ : input.writer === "desktop" ? desktopIntervals[input.provider ?? ""] ?? 900 : 900;
7
+ const ttlSeconds = interval * 1.2 + 60;
8
+ const observed = Date.parse(input.observedAt);
9
+ const now = Date.parse(input.now);
10
+ const deadline = observed + ttlSeconds * 1000;
11
+ const expiresAt = Number.isFinite(deadline) ? new Date(deadline).toISOString() : input.observedAt;
12
+ return { ttlSeconds, expiresAt, availability: !Number.isFinite(now) || !Number.isFinite(observed) || now < observed
13
+ ? "unavailable" : now < deadline ? "fresh" : "stale" };
14
+ }
15
+ export function retainSnapshots(rows, now) {
16
+ return rows.filter(row => Date.parse(row.observedAt) >= now - RETENTION_MILLISECONDS);
17
+ }
18
+ export function fixKind(reason) {
19
+ if (reason === "disabled")
20
+ return "switch_on";
21
+ if (reason === "missing_credentials")
22
+ return "sign_in";
23
+ if (["expired_credentials", "stale", "rate_limited", "network_failure", "not_measured"].includes(reason))
24
+ return "open_app";
25
+ if (["quota_unavailable", "unlimited", "placeholder", "schema_drift"].includes(reason))
26
+ return "unsupported";
27
+ return "reconnect";
28
+ }
29
+ export function displayReason(row, now) {
30
+ if (row.availability !== undefined)
31
+ return row.availability;
32
+ if (row.window.kind === "unknown" || row.kind === "runtime_info" || row.meter === "ACQUISITION")
33
+ return "placeholder";
34
+ if (!Number.isFinite(row.value) || row.value < 0 || (row.unit === "PERCENT" && row.value > 100))
35
+ return "quota_unavailable";
36
+ if (freshnessPolicy({ ...row, sourceClass: row.source, now }).availability !== "fresh")
37
+ return "stale";
38
+ return null;
39
+ }
40
+ /** Active identities come from credentials or connections, never observation age. */
41
+ export function projectSnapshots(rows, now, active) {
42
+ const snapshots = [];
43
+ const flags = new Map();
44
+ for (const row of rows) {
45
+ const accounts = active?.get(row.provider);
46
+ const reason = row.availability ?? (accounts !== undefined && (!row.accountId || !accounts.has(row.accountId))
47
+ ? "account_not_connected" : displayReason(row, now));
48
+ if (reason === null)
49
+ snapshots.push({ ...row, expiresAt: freshnessPolicy({ ...row, sourceClass: row.source, now }).expiresAt });
50
+ else
51
+ flags.set([row.provider, row.accountId, reason].join(":"), {
52
+ provider: row.provider, ...(row.accountId ? { accountId: row.accountId } : {}), reason, fixKind: fixKind(reason)
53
+ });
54
+ }
55
+ return { snapshots, flags: [...flags.values()] };
56
+ }
57
+ //# sourceMappingURL=data-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-rules.js","sourceRoot":"","sources":["../src/data-rules.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -8,9 +8,14 @@ export * from "./failures.js";
8
8
  export * from "./forecast.js";
9
9
  export * from "./format.js";
10
10
  export * from "./freshness.js";
11
+ export * from "./data-rules.js";
11
12
  export * from "./merge.js";
12
13
  export * from "./normalizer.js";
13
14
  export * from "./policy.js";
14
15
  export * from "./schedule.js";
15
16
  export * from "./types.js";
17
+ export * from "./contracts/wire.js";
18
+ export * from "./activity/contract.js";
19
+ export * from "./contracts/notify.js";
20
+ export * from "./contracts/surfaces.js";
16
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC"}
package/dist/index.js CHANGED
@@ -8,9 +8,14 @@ export * from "./failures.js";
8
8
  export * from "./forecast.js";
9
9
  export * from "./format.js";
10
10
  export * from "./freshness.js";
11
+ export * from "./data-rules.js";
11
12
  export * from "./merge.js";
12
13
  export * from "./normalizer.js";
13
14
  export * from "./policy.js";
14
15
  export * from "./schedule.js";
15
16
  export * from "./types.js";
17
+ export * from "./contracts/wire.js";
18
+ export * from "./activity/contract.js";
19
+ export * from "./contracts/notify.js";
20
+ export * from "./contracts/surfaces.js";
16
21
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"normalizer.d.ts","sourceRoot":"","sources":["../src/normalizer.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,QAAQ,EAWd,MAAM,YAAY,CAAC;AAmHpB,kDAAkD;AAClD,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAmD1C,wBAAgB,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAgD7D;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAK1E;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,sEAAsE;IACtE,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAClC,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,SAAS,QAAQ,EAAE,GAC7B,eAAe,CAgBjB;AAUD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEpD"}
1
+ {"version":3,"file":"normalizer.d.ts","sourceRoot":"","sources":["../src/normalizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAWL,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,QAAQ,EAad,MAAM,YAAY,CAAC;AA6IpB,kDAAkD;AAClD,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAmD1C,wBAAgB,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI,CA0D7D;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAK1E;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,sEAAsE;IACtE,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAClC,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,SAAS,QAAQ,EAAE,GAC7B,eAAe,CAgBjB;AAUD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEpD"}
@@ -1,4 +1,5 @@
1
- import { ACCOUNT_ID_PATTERN, MAX_SNAPSHOT_AMOUNT, PROVIDER_CODES, SNAPSHOT_OBSERVED_VIA, SNAPSHOT_SOURCE_KINDS, SNAPSHOT_WRITERS, UNKNOWN_PROVENANCE } from "./types.js";
1
+ import { ACCOUNT_ID_PATTERN, CONNECTOR_VERIFICATIONS, MAX_SNAPSHOT_AMOUNT, PROVIDER_CODES, SNAPSHOT_KINDS, SNAPSHOT_OBSERVED_VIA, SNAPSHOT_SOURCE_KINDS, SNAPSHOT_WRITERS, UNKNOWN_PROVENANCE } from "./types.js";
2
+ import { SNAPSHOT_AVAILABILITIES } from "./connection-state.js";
2
3
  const units = new Set(["PERCENT", "CREDITS", "TOKENS", "REQUESTS"]);
3
4
  const sources = new Set([
4
5
  "native_payload",
@@ -8,7 +9,10 @@ const sources = new Set([
8
9
  "manual_entry"
9
10
  ]);
10
11
  const precisions = new Set(["exact", "estimated", "manual"]);
11
- const currencies = new Set(["USD"]);
12
+ const currencies = new Set(["USD", "CNY"]);
13
+ const verifications = new Set(CONNECTOR_VERIFICATIONS);
14
+ const kinds = new Set(SNAPSHOT_KINDS);
15
+ const availabilities = new Set(SNAPSHOT_AVAILABILITIES);
12
16
  const providerCodes = new Set(PROVIDER_CODES);
13
17
  const sourceKinds = new Set(SNAPSHOT_SOURCE_KINDS);
14
18
  const observedVia = new Set(SNAPSHOT_OBSERVED_VIA);
@@ -43,7 +47,17 @@ function normalizeWindow(value) {
43
47
  return { kind, durationSeconds: duration };
44
48
  }
45
49
  function normalizeLabels(value) {
46
- if (!isRecord(value) || value["verification"] !== "UNVERIFIED")
50
+ if (!isRecord(value))
51
+ return null;
52
+ const verification = value["verification"];
53
+ if (typeof verification !== "string" || !verifications.has(verification))
54
+ return null;
55
+ const evidence = value["verificationEvidence"];
56
+ if (evidence !== undefined && (verification !== "VERIFIED_LIVE" || !isRecord(evidence) ||
57
+ typeof evidence["providerVersion"] !== "string" || !evidence["providerVersion"].trim() ||
58
+ typeof evidence["accountShape"] !== "string" || !evidence["accountShape"].trim() ||
59
+ typeof evidence["os"] !== "string" || !evidence["os"].trim() ||
60
+ !isIsoInstant(evidence["date"])))
47
61
  return null;
48
62
  const credentialOrigin = value["credentialOrigin"];
49
63
  const dataInterfaceStatus = value["dataInterfaceStatus"];
@@ -61,11 +75,23 @@ function normalizeLabels(value) {
61
75
  return null;
62
76
  if (automationRisk !== "low" && automationRisk !== "high")
63
77
  return null;
64
- return {
78
+ const base = {
65
79
  credentialOrigin,
66
80
  dataInterfaceStatus,
67
- automationRisk,
68
- verification: "UNVERIFIED"
81
+ automationRisk
82
+ };
83
+ if (verification === "UNVERIFIED" || verification === "VERIFIED_FIXTURES") {
84
+ return { ...base, verification };
85
+ }
86
+ return {
87
+ ...base,
88
+ verification,
89
+ ...(evidence === undefined ? {} : { verificationEvidence: {
90
+ providerVersion: evidence["providerVersion"],
91
+ accountShape: evidence["accountShape"],
92
+ os: evidence["os"],
93
+ date: evidence["date"]
94
+ } })
69
95
  };
70
96
  }
71
97
  /**
@@ -168,6 +194,12 @@ function readWriter(value) {
168
194
  return value;
169
195
  }
170
196
  export function normalizeMeter(raw) {
197
+ if (raw.kind !== undefined && (typeof raw.kind !== "string" || !kinds.has(raw.kind)))
198
+ return null;
199
+ if (raw.availability !== undefined && (typeof raw.availability !== "string" || !availabilities.has(raw.availability)))
200
+ return null;
201
+ if (raw.retryAt !== undefined && (raw.availability !== "rate_limited" || !isIsoInstant(raw.retryAt)))
202
+ return null;
171
203
  if (typeof raw.provider !== "string" || !providerCodes.has(raw.provider))
172
204
  return null;
173
205
  if (typeof raw.meter !== "string" || !safeMeter.test(raw.meter))
@@ -222,7 +254,10 @@ export function normalizeMeter(raw) {
222
254
  ? {}
223
255
  : { accountLabel }),
224
256
  ...(provenance === null ? {} : { provenance }),
225
- ...(writer === null ? {} : { writer })
257
+ ...(writer === null ? {} : { writer }),
258
+ ...(raw.kind === undefined ? {} : { kind: raw.kind }),
259
+ ...(raw.availability === undefined ? {} : { availability: raw.availability }),
260
+ ...(raw.retryAt === undefined ? {} : { retryAt: raw.retryAt })
226
261
  };
227
262
  }
228
263
  export function normalizeMeters(rawMeters) {
@@ -1 +1 @@
1
- {"version":3,"file":"normalizer.js","sourceRoot":"","sources":["../src/normalizer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"normalizer.js","sourceRoot":"","sources":["../src/normalizer.ts"],"names":[],"mappings":"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"}