@substrat-run/control-plane-api 0.135.0 → 0.137.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.
Files changed (72) hide show
  1. package/dist/aggregate-reads.d.ts.map +1 -1
  2. package/dist/aggregate-reads.js +4 -1
  3. package/dist/aggregate-reads.js.map +1 -1
  4. package/dist/aggregate-source.d.ts +17 -1
  5. package/dist/aggregate-source.d.ts.map +1 -1
  6. package/dist/aggregate-source.js +16 -10
  7. package/dist/aggregate-source.js.map +1 -1
  8. package/dist/api.d.ts.map +1 -1
  9. package/dist/api.js +1030 -68
  10. package/dist/api.js.map +1 -1
  11. package/dist/cf-observability.d.ts +21 -0
  12. package/dist/cf-observability.d.ts.map +1 -1
  13. package/dist/cf-observability.js +150 -45
  14. package/dist/cf-observability.js.map +1 -1
  15. package/dist/connect-url.d.ts +2 -2
  16. package/dist/connect-url.d.ts.map +1 -1
  17. package/dist/connect-url.js +7 -1
  18. package/dist/connect-url.js.map +1 -1
  19. package/dist/connection-relay.d.ts +4 -2
  20. package/dist/connection-relay.d.ts.map +1 -1
  21. package/dist/connection-relay.js +10 -1
  22. package/dist/connection-relay.js.map +1 -1
  23. package/dist/deploy.d.ts +3 -0
  24. package/dist/deploy.d.ts.map +1 -1
  25. package/dist/deploy.js +3 -4
  26. package/dist/deploy.js.map +1 -1
  27. package/dist/failure-attribution.js +1 -1
  28. package/dist/failure-attribution.js.map +1 -1
  29. package/dist/field-coverage-tally.d.ts +58 -0
  30. package/dist/field-coverage-tally.d.ts.map +1 -0
  31. package/dist/field-coverage-tally.js +234 -0
  32. package/dist/field-coverage-tally.js.map +1 -0
  33. package/dist/index.d.ts +8 -5
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +7 -3
  36. package/dist/index.js.map +1 -1
  37. package/dist/observability.d.ts +20 -1
  38. package/dist/observability.d.ts.map +1 -1
  39. package/dist/observability.js +11 -1
  40. package/dist/observability.js.map +1 -1
  41. package/dist/platform-drain.d.ts +24 -2
  42. package/dist/platform-drain.d.ts.map +1 -1
  43. package/dist/platform-drain.js +36 -3
  44. package/dist/platform-drain.js.map +1 -1
  45. package/dist/platform-entry.d.ts +62 -6
  46. package/dist/platform-entry.d.ts.map +1 -1
  47. package/dist/platform-entry.generated.d.ts +8 -1
  48. package/dist/platform-entry.generated.d.ts.map +1 -1
  49. package/dist/platform-entry.generated.js +10 -3
  50. package/dist/platform-entry.generated.js.map +1 -1
  51. package/dist/platform-entry.js +151 -9
  52. package/dist/platform-entry.js.map +1 -1
  53. package/dist/provider-error.d.ts +9 -0
  54. package/dist/provider-error.d.ts.map +1 -0
  55. package/dist/provider-error.js +9 -0
  56. package/dist/provider-error.js.map +1 -0
  57. package/dist/reconcile.d.ts +10 -3
  58. package/dist/reconcile.d.ts.map +1 -1
  59. package/dist/reconcile.js +7 -2
  60. package/dist/reconcile.js.map +1 -1
  61. package/dist/service-family.d.ts +19 -0
  62. package/dist/service-family.d.ts.map +1 -0
  63. package/dist/service-family.js +27 -0
  64. package/dist/service-family.js.map +1 -0
  65. package/dist/tenant-request-query.d.ts.map +1 -1
  66. package/dist/tenant-request-query.js +3 -1
  67. package/dist/tenant-request-query.js.map +1 -1
  68. package/dist/vertical-client.d.ts +191 -40
  69. package/dist/vertical-client.d.ts.map +1 -1
  70. package/dist/vertical-client.js +351 -171
  71. package/dist/vertical-client.js.map +1 -1
  72. package/package.json +7 -7
@@ -1,5 +1,6 @@
1
- import { signConnectState } from '@substrat-run/kernel';
1
+ import { isPrimaryScope, signConnectState } from '@substrat-run/kernel';
2
2
  import { connectUrlRelayRequest, instant, } from '@substrat-run/contracts';
3
+ import { PREVIEW_CONNECTIONS_REFUSAL } from './connection-relay.js';
3
4
  /**
4
5
  * The connect-url relay (connections.md §3.5.3) — the OAuth half of §3.5.2's credential
5
6
  * relay. This module is `/internal/connections/connect-url`'s logic, kept out of the
@@ -100,6 +101,11 @@ export async function relayConnectUrl(host, actor, body, options) {
100
101
  if (!rec?.vertical) {
101
102
  throw new ConnectUrlRelayError('scope has no vertical bound', 404);
102
103
  }
104
+ // #2005: no URL is minted for a preview or a fork — the round would end in a write to the
105
+ // tenant's connection, which the store refuses for such a scope anyway (connection-relay.ts).
106
+ if (!isPrimaryScope(rec)) {
107
+ throw new ConnectUrlRelayError(PREVIEW_CONNECTIONS_REFUSAL, 403);
108
+ }
103
109
  if (input.returnUrl) {
104
110
  await assertReturnUrlBelongsToScope(host, actor, {
105
111
  tenantId: input.tenantId,
@@ -1 +1 @@
1
- {"version":3,"file":"connect-url.js","sourceRoot":"","sources":["../src/connect-url.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect-url.js","sourceRoot":"","sources":["../src/connect-url.ts"],"names":[],"mappings":"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"}
@@ -31,7 +31,7 @@ export declare class ConnectionRelayError extends Error {
31
31
  * 500 (what an unrecognised throw collapses to) sent an operator looking for a bug
32
32
  * in the credential or the relay, when the plane knew at boot that it had no key.
33
33
  */
34
- readonly status: 400 | 404 | 409 | 422 | 503;
34
+ readonly status: 400 | 403 | 404 | 409 | 422 | 503;
35
35
  /** The provider's own answer, when the refusal came from a pre-flight probe (#605). */
36
36
  readonly probe?: ConnectionProbe | undefined;
37
37
  constructor(message: string,
@@ -41,7 +41,7 @@ export declare class ConnectionRelayError extends Error {
41
41
  * 500 (what an unrecognised throw collapses to) sent an operator looking for a bug
42
42
  * in the credential or the relay, when the plane knew at boot that it had no key.
43
43
  */
44
- status: 400 | 404 | 409 | 422 | 503,
44
+ status: 400 | 403 | 404 | 409 | 422 | 503,
45
45
  /** The provider's own answer, when the refusal came from a pre-flight probe (#605). */
46
46
  probe?: ConnectionProbe | undefined);
47
47
  }
@@ -59,6 +59,8 @@ export declare class ConnectionRelayError extends Error {
59
59
  * things are broken. Unverifiable is stored, and reported as unverified.
60
60
  */
61
61
  export type ConnectionCandidateProbe = (provider: string, secret: Record<string, string>) => Promise<ConnectionProbe | undefined>;
62
+ /** What a preview or a fork is told when it asks to change a connection (#2005). */
63
+ export declare const PREVIEW_CONNECTIONS_REFUSAL = "previews and forks cannot change a tenant's connections: this scope is a preview or a fork";
62
64
  export declare function relayConnectionUpsert(host: ScopeHost, actor: PlatformActorId, body: unknown, options?: {
63
65
  probeCandidate?: ConnectionCandidateProbe;
64
66
  }): Promise<ConnectionRelayResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"connection-relay.d.ts","sourceRoot":"","sources":["../src/connection-relay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAG3C;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;IAC5C,uFAAuF;IACvF,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe;IAVlC,YACE,OAAO,EAAE,MAAM;IACf;;;;;OAKG;IACM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;IAC5C,uFAAuF;IAC9E,KAAK,CAAC,EAAE,eAAe,YAAA,EAIjC;CACF;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,wBAAwB,GAAG,CACrC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC3B,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;AAE1C,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,OAAO,EACb,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,wBAAwB,CAAA;CAAO,GAC1D,OAAO,CAAC,qBAAqB,CAAC,CA6GhC"}
1
+ {"version":3,"file":"connection-relay.d.ts","sourceRoot":"","sources":["../src/connection-relay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAG3C;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;IAClD,uFAAuF;IACvF,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe;IAVlC,YACE,OAAO,EAAE,MAAM;IACf;;;;;OAKG;IACM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;IAClD,uFAAuF;IAC9E,KAAK,CAAC,EAAE,eAAe,YAAA,EAIjC;CACF;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,wBAAwB,GAAG,CACrC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC3B,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;AAE1C,oFAAoF;AACpF,eAAO,MAAM,2BAA2B,+FACsD,CAAC;AAE/F,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,OAAO,EACb,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,wBAAwB,CAAA;CAAO,GAC1D,OAAO,CAAC,qBAAqB,CAAC,CAoHhC"}
@@ -1,4 +1,4 @@
1
- import { ulid } from '@substrat-run/kernel';
1
+ import { isPrimaryScope, ulid } from '@substrat-run/kernel';
2
2
  import { connectionId, connectionRelayRequest, } from '@substrat-run/contracts';
3
3
  /**
4
4
  * The connection relay (connections.md §3.5.2) — the credential half of #574's routed
@@ -43,6 +43,8 @@ export class ConnectionRelayError extends Error {
43
43
  this.name = 'ConnectionRelayError';
44
44
  }
45
45
  }
46
+ /** What a preview or a fork is told when it asks to change a connection (#2005). */
47
+ export const PREVIEW_CONNECTIONS_REFUSAL = "previews and forks cannot change a tenant's connections: this scope is a preview or a fork";
46
48
  export async function relayConnectionUpsert(host, actor, body, options = {}) {
47
49
  const parsed = connectionRelayRequest.safeParse(body);
48
50
  if (!parsed.success) {
@@ -66,6 +68,13 @@ export async function relayConnectionUpsert(host, actor, body, options = {}) {
66
68
  if (!rec?.vertical) {
67
69
  throw new ConnectionRelayError('scope has no vertical bound', 404);
68
70
  }
71
+ // #2005: a connection is the TENANT's, keyed on (tenant, vertical, provider), so a preview
72
+ // or a fork shares it with the install. Refused before the probe and the store, on every
73
+ // path in — this relay, the dashboard's door, and a consent round's callback, which lands
74
+ // here and so is judged against the scope's record at write time, however old the round.
75
+ if (!isPrimaryScope(rec)) {
76
+ throw new ConnectionRelayError(PREVIEW_CONNECTIONS_REFUSAL, 403);
77
+ }
69
78
  const vertical = rec.vertical;
70
79
  // Ask the provider before touching the store (#605). Deliberately here, ahead of every
71
80
  // write below: a refused rotation must leave the live credential exactly as it was.
@@ -1 +1 @@
1
- {"version":3,"file":"connection-relay.js","sourceRoot":"","sources":["../src/connection-relay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection-relay.js","sourceRoot":"","sources":["../src/connection-relay.ts"],"names":[],"mappings":"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"}
package/dist/deploy.d.ts CHANGED
@@ -57,6 +57,9 @@ export interface VerticalBundle {
57
57
  * as `env.AI`. Travels with the version, so who holds the capability is a property of
58
58
  * the code that shipped rather than of the fleet's config. */
59
59
  usesModels?: boolean;
60
+ /** Carry the platform's scope sweeper (#1902) — the decision the push made and the
61
+ * version records (`platformSweeper`), never re-made by an upload. */
62
+ supplySweeper?: boolean;
60
63
  /** The version REGISTRY id this bundle deploys (#1242) — injected as the
61
64
  * `SUBSTRAT_VERSION_ID` plain-text binding so the running scope host can stamp the
62
65
  * signals `version` dimension (#1231) on the records it writes. Optional: a caller
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"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"}
package/dist/deploy.js CHANGED
@@ -1,4 +1,4 @@
1
- import { ADMISSIBLE_BINDING_TYPES, PLATFORM_BINDING_PREFIX, substratError } from '@substrat-run/contracts';
1
+ import { ADMISSIBLE_BINDING_TYPES, PLATFORM_BINDING_PREFIX, substratError, verticalScriptStem } from '@substrat-run/contracts';
2
2
  /**
3
3
  * The deploy seam (self-serve-deploy.md). A `substrat push` uploads a *built* worker
4
4
  * bundle; this layer forwards it to the platform's runtime (a Workers-for-Platforms
@@ -131,8 +131,7 @@ export function assertSandboxContract(m) {
131
131
  * platform slug is unaffected (`callout-<id>`), so this is backward-compatible.
132
132
  */
133
133
  export function deploymentRefFor(slug, versionId) {
134
- const safe = slug.toLowerCase().replace(/[^a-z0-9_-]+/g, '-').replace(/^-+|-+$/g, '');
135
- return `${safe}-${versionId.toLowerCase()}`;
134
+ return `${verticalScriptStem(slug)}-${versionId.toLowerCase()}`;
136
135
  }
137
136
  /**
138
137
  * The vertical's ONE stable serving script (#286, supersedes orchestration.md §5.3's
@@ -148,7 +147,7 @@ export function deploymentRefFor(slug, versionId) {
148
147
  * serving scripts (K-30, `<slug>-eu`) hang off this same name when eu/us open.
149
148
  */
150
149
  export function stableDeploymentRefFor(slug) {
151
- return slug.toLowerCase().replace(/[^a-z0-9_-]+/g, '-').replace(/^-+|-+$/g, '');
150
+ return verticalScriptStem(slug);
152
151
  }
153
152
  /** Serving-script migration tags are `v1`, `v2`, … — bumped only when a version adds
154
153
  * NEW DO classes to an existing serving script (`old_tag`/`new_tag` upload metadata). */
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@
19
19
  * old to send one has already spelled out in its message.
20
20
  */
21
21
  import { errorCodeOf, permissionKey, } from '@substrat-run/contracts';
22
- import { providerErrorStatus } from '@substrat-run/kernel';
22
+ import { providerErrorStatus } from './provider-error.js';
23
23
  import { ControlPlaneError } from '@substrat-run/control-plane-client';
24
24
  /**
25
25
  * The permission key a refusal names, when the structured field did not survive the hop.
@@ -1 +1 @@
1
- {"version":3,"file":"failure-attribution.js","sourceRoot":"","sources":["../src/failure-attribution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EACL,WAAW,EACX,aAAa,GAGd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE;;;;;;;GAOG;AACH,MAAM,qBAAqB,GAAG,+CAA+C,CAAC;AAE9E,iFAAiF;AACjF,SAAS,YAAY,CAAC,KAAc,EAAE,OAAe;IACnD,MAAM,GAAG,GAAI,KAAyC,EAAE,UAAU,CAAC;IACnE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC;IAChF,MAAM,GAAG,GAAI,KAA0D,EAAE,UAAU,EAAE,UAAU,CAAC;IAChG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC;IAChF,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzD,OAAO,OAAO,KAAK,SAAS,IAAI,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5F,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,IAAI,GAAqB,WAAW,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;IAE1D,IAAI,KAAK,YAAY,iBAAiB,IAAK,KAAmC,EAAE,IAAI,KAAK,mBAAmB,EAAE,CAAC;QAC7G,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;IAChF,CAAC;IACD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;IAChF,CAAC;IACD,IAAI,mBAAmB,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;QAC7C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC9D,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC7D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA+B,EAAE,QAAgB;IACnF,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;QACvB,KAAK,UAAU;YACb,OAAO,CACL,uDAAuD,QAAQ,2BAA2B;gBAC1F,qFAAqF;gBACrF,0BAA0B,CAC3B,CAAC;QACJ,KAAK,UAAU;YACb,OAAO,kBAAkB,QAAQ,qEAAqE,CAAC;QACzG,KAAK,SAAS;YACZ,OAAO,oFAAoF,CAAC;IAChG,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"failure-attribution.js","sourceRoot":"","sources":["../src/failure-attribution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EACL,WAAW,EACX,aAAa,GAGd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE;;;;;;;GAOG;AACH,MAAM,qBAAqB,GAAG,+CAA+C,CAAC;AAE9E,iFAAiF;AACjF,SAAS,YAAY,CAAC,KAAc,EAAE,OAAe;IACnD,MAAM,GAAG,GAAI,KAAyC,EAAE,UAAU,CAAC;IACnE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC;IAChF,MAAM,GAAG,GAAI,KAA0D,EAAE,UAAU,EAAE,UAAU,CAAC;IAChG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC;IAChF,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzD,OAAO,OAAO,KAAK,SAAS,IAAI,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5F,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,IAAI,GAAqB,WAAW,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;IAE1D,IAAI,KAAK,YAAY,iBAAiB,IAAK,KAAmC,EAAE,IAAI,KAAK,mBAAmB,EAAE,CAAC;QAC7G,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;IAChF,CAAC;IACD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;IAChF,CAAC;IACD,IAAI,mBAAmB,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;QAC7C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC9D,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC7D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA+B,EAAE,QAAgB;IACnF,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;QACvB,KAAK,UAAU;YACb,OAAO,CACL,uDAAuD,QAAQ,2BAA2B;gBAC1F,qFAAqF;gBACrF,0BAA0B,CAC3B,CAAC;QACJ,KAAK,UAAU;YACb,OAAO,kBAAkB,QAAQ,qEAAqE,CAAC;QACzG,KAAK,SAAS;YACZ,OAAO,oFAAoF,CAAC;IAChG,CAAC;AACH,CAAC"}
@@ -0,0 +1,58 @@
1
+ /** How often one declared field was carried, across the responses counted. */
2
+ export interface FieldCoverageCount {
3
+ field: string;
4
+ /** Carried with a value. */
5
+ present: number;
6
+ /** Carried as `null`. */
7
+ empty: number;
8
+ /** Not carried. */
9
+ absent: number;
10
+ }
11
+ /** One operation's counts. `responses` is how many reports were counted for it. */
12
+ export interface OperationFieldCoverage {
13
+ operation: string;
14
+ responses: number;
15
+ /** In first-seen order, which for a well-behaved vertical is declaration order. */
16
+ fields: FieldCoverageCount[];
17
+ }
18
+ export interface FieldCoverageTally {
19
+ /** The tenant the caller asked about — echoed, so a view never has to take it from a line. */
20
+ tenantId: string;
21
+ /** By operation name. */
22
+ operations: OperationFieldCoverage[];
23
+ /**
24
+ * This tenant's lines, from this app's scripts, whose report was refused (malformed, over a
25
+ * cap, or naming an undeclared field). Lines of other tenants or other scripts are not in
26
+ * it. A view shows it so a refused report reads as refused, not as "never returned".
27
+ */
28
+ refused: number;
29
+ }
30
+ /** What the tally is for. Every field is the CALLER's resolution, never a line's. */
31
+ export interface FieldCoverageScope {
32
+ /** The tenant, forced from the principal the way every tenant read forces it. */
33
+ tenantId: string;
34
+ /** The app's vertical slug, as the router resolves it onto its line (`vertical`). */
35
+ vertical: string;
36
+ /** The app's script family stems. Empty names no script, so nothing counts. */
37
+ services: readonly string[];
38
+ /**
39
+ * The declared output field names per operation, when the caller has the manifest. A report
40
+ * on an operation not in this map, or naming a field outside its list, is refused.
41
+ */
42
+ declared?: Readonly<Record<string, readonly string[]>>;
43
+ }
44
+ /**
45
+ * How many distinct operations one tally keeps. Past it, a report on a new operation is
46
+ * refused: a vertical cannot grow the answer without bound by inventing names.
47
+ */
48
+ export declare const FIELD_COVERAGE_OPERATIONS_MAX = 1000;
49
+ /**
50
+ * Tally the field coverage in `events` — raw Workers Logs events (`{ source, $metadata }`), as
51
+ * the telemetry query returns them — for one tenant and one app, counting only the reports
52
+ * whose dispatch id `routerEvents` (the router's own request lines) vouches for.
53
+ *
54
+ * The query that fetched them should already filter on both; this checks them again, because
55
+ * the tally is the thing a view trusts, and a query is one forgotten parameter from fleet-wide.
56
+ */
57
+ export declare function tallyFieldCoverage(events: Iterable<unknown>, routerEvents: Iterable<unknown>, scope: FieldCoverageScope): FieldCoverageTally;
58
+ //# sourceMappingURL=field-coverage-tally.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-coverage-tally.d.ts","sourceRoot":"","sources":["../src/field-coverage-tally.ts"],"names":[],"mappings":"AAuDA,8EAA8E;AAC9E,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,mFAAmF;AACnF,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,mFAAmF;IACnF,MAAM,EAAE,kBAAkB,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,8FAA8F;IAC9F,QAAQ,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,UAAU,EAAE,sBAAsB,EAAE,CAAC;IACrC;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qFAAqF;AACrF,MAAM,WAAW,kBAAkB;IACjC,iFAAiF;IACjF,QAAQ,EAAE,MAAM,CAAC;IACjB,qFAAqF;IACrF,QAAQ,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;CACxD;AAgCD;;;GAGG;AACH,eAAO,MAAM,6BAA6B,OAAO,CAAC;AAyBlD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,EACzB,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,EAC/B,KAAK,EAAE,kBAAkB,GACxB,kBAAkB,CAqGpB"}
@@ -0,0 +1,234 @@
1
+ /**
2
+ * The one sanctioned reading of `outputFields` (#1923 part c): per-(operation, field) counts for
3
+ * ONE tenant, from the stamped invocation lines its app's scripts wrote, joined to the router's
4
+ * own line for each request.
5
+ *
6
+ * ## Why the reading needs rules at all
7
+ *
8
+ * The report on a line is written by the vertical's own code, like `operation` and
9
+ * `problemCode` on the router's header. A vertical can mislabel its own responses, and it can
10
+ * `console.log` a line that looks exactly like the platform's, naming any tenant id it likes.
11
+ * So nothing on a line is taken as given except what the reader resolved itself:
12
+ *
13
+ * - **The tenant is the caller's, never the line's.** `tenantId` is required, and there is no
14
+ * "every tenant" spelling.
15
+ * - **The tenant and app a report counts for are the ROUTER's.** A report counts only when
16
+ * its `fieldCoverageId` — the dispatch id the router armed the walk with — matches the
17
+ * router's own line for that request, and that line names this tenant and this app. Router
18
+ * lines are read from the router's scripts only (`ROUTER_SCRIPT_NAMES`, by
19
+ * `$metadata.service`, which the log platform stamps). A vertical cannot log under those
20
+ * names: a slug that would deploy under any platform script name is refused at
21
+ * registration and at deploy (`platformScriptCollision`), from the same list. Workers Logs
22
+ * carry no field that tells a dispatch-namespace script from a top-level worker that this
23
+ * reader could check instead, so the reserved names are the whole of that guarantee. A vertical serving tenants A and
24
+ * B that writes a report naming B during A's request has only A's id to give it, which joins
25
+ * to A; an invented id joins to nothing. Each id counts once.
26
+ * - **The script is the app's.** A vertical line counts only if one of the app's own script
27
+ * families wrote it, which keeps one app's lines out of another's tally before the join.
28
+ * - **Silence about other tenants.** A line that does not join is dropped without trace —
29
+ * not counted as refused — since a count of someone else's lines is a fact about them.
30
+ *
31
+ * What remains is the accepted residual: a vertical can mislabel the report of a response it
32
+ * actually served for that tenant, the same way it can mislabel `operation`.
33
+ * - **Names are bounded, and declared when the caller can say so.** A report is refused whole
34
+ * when it is not three string arrays, names a field twice, names more than the declared
35
+ * half's cap, or names a field longer than an operation name may be. Given the operation's
36
+ * declared output (`declared`), a report naming anything outside it is refused too, so a
37
+ * vertical cannot grow the tally with names its own declaration never had.
38
+ *
39
+ * ## Why aggregate only
40
+ *
41
+ * One report is a fact about one response, and the line it rides also carries a path that
42
+ * can name a record (`/customers/{id}`): "this customer's `phone` is null". The question field
43
+ * coverage asks is "is this field ever returned", and a count answers it without holding a
44
+ * fact about any one record. So the tally keeps counts per (operation, field) and the number
45
+ * of responses behind them, and nothing per request: no path, scope, time, invocation id or
46
+ * value. It does not pass any of those through, so a view built on it cannot either.
47
+ *
48
+ * Every count is per response serialisation, never per row: a paged read of 200 rows is one
49
+ * response (#1331).
50
+ */
51
+ import { DECLARED_OUTPUT_FIELDS_MAX, FIELD_COVERAGE_ID_FIELD, INVOCATION_RECORD_FIELD_MAX, ROUTER_SCRIPT_NAMES } from '@substrat-run/contracts';
52
+ import { ownsInvocation } from './cf-observability.js';
53
+ import { serviceFamilyMatcher } from './service-family.js';
54
+ /** A dispatch id: the ULID the router mints for a sampled request. */
55
+ const DISPATCH_ID = /^[0-9A-HJKMNP-TV-Z]{26}$/;
56
+ /** The service a raw event was logged by, as the log platform stamped it. */
57
+ function serviceOf(event) {
58
+ const metadata = event['$metadata'];
59
+ return metadata && typeof metadata === 'object' ? metadata['service'] : undefined;
60
+ }
61
+ /**
62
+ * The dispatch ids the router minted for THIS tenant's requests to THIS app, from the
63
+ * router's own request lines (`router: 'request'`). Anything not logged by a router service is
64
+ * ignored, whatever it says.
65
+ */
66
+ function dispatchIdsFor(routerEvents, scope) {
67
+ const ids = new Set();
68
+ for (const event of routerEvents) {
69
+ if (event === null || typeof event !== 'object')
70
+ continue;
71
+ const service = serviceOf(event);
72
+ if (typeof service !== 'string' || !ROUTER_SCRIPT_NAMES.includes(service))
73
+ continue;
74
+ const source = event['source'];
75
+ if (source === null || typeof source !== 'object')
76
+ continue;
77
+ const line = source;
78
+ if (line['router'] !== 'request' || line['tenantId'] !== scope.tenantId || line['vertical'] !== scope.vertical)
79
+ continue;
80
+ const id = line[FIELD_COVERAGE_ID_FIELD];
81
+ if (typeof id === 'string' && DISPATCH_ID.test(id))
82
+ ids.add(id);
83
+ }
84
+ return ids;
85
+ }
86
+ /**
87
+ * How many distinct operations one tally keeps. Past it, a report on a new operation is
88
+ * refused: a vertical cannot grow the answer without bound by inventing names.
89
+ */
90
+ export const FIELD_COVERAGE_OPERATIONS_MAX = 1000;
91
+ /** The report's buckets — the writer's own shape, so a renamed bucket is a compile error here. */
92
+ const BUCKETS = ['present', 'empty', 'absent'];
93
+ /** A report's three name lists, or `undefined` when it is not a well-formed one. */
94
+ function namesOf(report, allowed) {
95
+ if (report === null || typeof report !== 'object' || Array.isArray(report))
96
+ return undefined;
97
+ const seen = new Set();
98
+ const out = { present: [], empty: [], absent: [] };
99
+ for (const bucket of BUCKETS) {
100
+ const list = report[bucket];
101
+ if (!Array.isArray(list))
102
+ return undefined;
103
+ for (const name of list) {
104
+ if (typeof name !== 'string' || name.length === 0 || name.length > INVOCATION_RECORD_FIELD_MAX)
105
+ return undefined;
106
+ if (seen.has(name))
107
+ return undefined;
108
+ if (allowed && !allowed.has(name))
109
+ return undefined;
110
+ seen.add(name);
111
+ out[bucket].push(name);
112
+ }
113
+ }
114
+ if (seen.size === 0 || seen.size > DECLARED_OUTPUT_FIELDS_MAX)
115
+ return undefined;
116
+ return out;
117
+ }
118
+ /**
119
+ * Tally the field coverage in `events` — raw Workers Logs events (`{ source, $metadata }`), as
120
+ * the telemetry query returns them — for one tenant and one app, counting only the reports
121
+ * whose dispatch id `routerEvents` (the router's own request lines) vouches for.
122
+ *
123
+ * The query that fetched them should already filter on both; this checks them again, because
124
+ * the tally is the thing a view trusts, and a query is one forgotten parameter from fleet-wide.
125
+ */
126
+ export function tallyFieldCoverage(events, routerEvents, scope) {
127
+ if (typeof scope.tenantId !== 'string' || scope.tenantId.length === 0) {
128
+ throw new TypeError('a field-coverage tally is for one tenant, and names it');
129
+ }
130
+ if (typeof scope.vertical !== 'string' || scope.vertical.length === 0) {
131
+ throw new TypeError('a field-coverage tally is for one app, and names it');
132
+ }
133
+ const ownService = serviceFamilyMatcher(scope.services);
134
+ // #1923: an app whose own scripts would be named like the router's has no provenance to
135
+ // join to — its lines and the router's are one set. Registration and deploy refuse such a
136
+ // slug; a registry entry that predates the rule is refused here rather than trusted.
137
+ const shadowed = ROUTER_SCRIPT_NAMES.find((name) => ownService(name));
138
+ if (shadowed) {
139
+ throw new TypeError(`a field-coverage tally cannot trust router lines for an app whose scripts are named like '${shadowed}'`);
140
+ }
141
+ const dispatched = dispatchIdsFor(routerEvents, scope);
142
+ const counted = new Set();
143
+ const operations = new Map();
144
+ // Each operation's declared names as a set, built the first time a report needs it.
145
+ const declaredSets = new Map();
146
+ let refused = 0;
147
+ for (const event of events) {
148
+ if (event === null || typeof event !== 'object')
149
+ continue;
150
+ // The same isolation predicate the tenant log reads use: a stamped line naming this tenant.
151
+ if (!ownsInvocation(event, { tenantId: scope.tenantId }))
152
+ continue;
153
+ const line = event.source;
154
+ if (!ownService(serviceOf(event)))
155
+ continue;
156
+ // A line with no report was not walked (unarmed, failed, or nothing declared): no data.
157
+ if (!('outputFields' in line))
158
+ continue;
159
+ // The provenance: the router minted this id for this tenant's request to this app. A line
160
+ // that does not join is not this tenant's as far as anything trusted says, and is dropped
161
+ // as silently as a line naming another tenant.
162
+ const id = line[FIELD_COVERAGE_ID_FIELD];
163
+ if (typeof id !== 'string' || !dispatched.has(id))
164
+ continue;
165
+ // From here the line is this tenant's, from this app: a bad report is the app's own fault,
166
+ // and is counted as refused rather than ignored. So is a second report on one dispatch id:
167
+ // one request is one response, and the first report on it is the one that counts.
168
+ if (counted.has(id)) {
169
+ refused++;
170
+ continue;
171
+ }
172
+ counted.add(id);
173
+ const operation = line['operation'];
174
+ // An async line (`kind`) has no response to report on, whatever it says.
175
+ if (line['kind'] !== undefined || typeof operation !== 'string' || operation.length === 0 || operation.length > INVOCATION_RECORD_FIELD_MAX) {
176
+ refused++;
177
+ continue;
178
+ }
179
+ let allowed;
180
+ if (scope.declared) {
181
+ if (!Object.hasOwn(scope.declared, operation)) {
182
+ refused++;
183
+ continue;
184
+ }
185
+ allowed = declaredSets.get(operation);
186
+ if (!allowed)
187
+ declaredSets.set(operation, (allowed = new Set(scope.declared[operation])));
188
+ }
189
+ const names = namesOf(line['outputFields'], allowed);
190
+ if (!names) {
191
+ refused++;
192
+ continue;
193
+ }
194
+ let entry = operations.get(operation);
195
+ if (!entry) {
196
+ if (operations.size >= FIELD_COVERAGE_OPERATIONS_MAX) {
197
+ refused++;
198
+ continue;
199
+ }
200
+ entry = { responses: 0, fields: new Map() };
201
+ }
202
+ // The field cap holds per operation across reports too, so a vertical naming a different
203
+ // field each time cannot grow one operation past what one declaration could hold.
204
+ let fresh = 0;
205
+ for (const bucket of BUCKETS)
206
+ for (const field of names[bucket])
207
+ if (!entry.fields.has(field))
208
+ fresh++;
209
+ if (entry.fields.size + fresh > DECLARED_OUTPUT_FIELDS_MAX) {
210
+ refused++;
211
+ continue;
212
+ }
213
+ operations.set(operation, entry);
214
+ entry.responses++;
215
+ for (const bucket of BUCKETS) {
216
+ for (const field of names[bucket]) {
217
+ let count = entry.fields.get(field);
218
+ if (!count) {
219
+ count = { field, present: 0, empty: 0, absent: 0 };
220
+ entry.fields.set(field, count);
221
+ }
222
+ count[bucket]++;
223
+ }
224
+ }
225
+ }
226
+ return {
227
+ tenantId: scope.tenantId,
228
+ operations: [...operations]
229
+ .sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))
230
+ .map(([operation, e]) => ({ operation, responses: e.responses, fields: [...e.fields.values()] })),
231
+ refused,
232
+ };
233
+ }
234
+ //# sourceMappingURL=field-coverage-tally.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-coverage-tally.js","sourceRoot":"","sources":["../src/field-coverage-tally.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { createControlPlaneApi, tenantCredentialPin, CLI_MIN_VERSION_HEADER, CLI_LATEST_VERSION_HEADER, } from './api.js';
2
2
  export type { ControlPlaneApiOptions, ConnectionInspector } from './api.js';
3
3
  export { DEV_ACTOR_HEADER, SERVICE_TOKEN_HEADER, TENANT_HEADER, UNSAFE_devPlatformActorAuth, sessionPlatformAuth, staffAllowlist, serviceTokenAuth, firstPlatformActorAuth, firstBuilderAuth, confinedTenant, } from './auth.js';
4
- export { relayConnectionUpsert, ConnectionRelayError } from './connection-relay.js';
4
+ export { relayConnectionUpsert, ConnectionRelayError, PREVIEW_CONNECTIONS_REFUSAL } from './connection-relay.js';
5
5
  export { relayConnectUrl, ConnectUrlRelayError } from './connect-url.js';
6
6
  export type { ConnectFlowSpec, ConnectUrlRelayOptions } from './connect-url.js';
7
7
  export { reconcileConnectionGrants, type ConnectionGrantReconcileDeps, type ConnectionGrantReconcileReport, } from './connection-grants.js';
@@ -15,27 +15,30 @@ export { hostedCrossVerticalReach } from './cross-vertical.js';
15
15
  export { retireAllPreviewClients, retireClientsOfReapedScope, tenantIssuers, wirePreviewAuth } from './preview-auth.js';
16
16
  export type { PreviewAuthDeps, WirePreviewAuthInput } from './preview-auth.js';
17
17
  export type { ScopeDeployment, ScopeDeploymentVia } from './scope-deployment.js';
18
- export { drainScopePlatformRequests, MAX_PLATFORM_REQUEST_ATTEMPTS, provisionSiblingScope, provisionSiblingHandler, archiveScopeHandler, peerInvokeHandler, provisionTenantHandler, setEntitlementsHandler, modelUsageHandler, sweepRunsHandler, connectorDispatchHandler, type ConnectorDispatchDeps, type ManagedTenantDeps, type PlatformDrainOptions, type ArchiveScopeDeps, type PlatformRequestHandler, type PlatformRequestContext, type PlatformRequestOutcome, type PlatformDrainReport, type PeerInvokeDeps, type ProvisionSiblingDeps, type ProvisionSiblingInput, type ProvisionSiblingResult, } from './platform-drain.js';
18
+ export { drainScopePlatformRequests, MAX_PLATFORM_REQUEST_ATTEMPTS, provisionSiblingScope, provisionSiblingHandler, archiveScopeHandler, peerInvokeHandler, provisionTenantHandler, setEntitlementsHandler, modelUsageHandler, sweepRunsHandler, connectorDispatchHandler, type ConnectorDispatchDeps, type ManagedTenantDeps, type PlatformDrainOptions, type ArchiveScopeDeps, type PlatformRequestHandler, type PlatformDrainContext, type PlatformRequestContext, type PlatformRequestOutcome, type PlatformDrainReport, type PeerInvokeDeps, type ProvisionSiblingDeps, type ProvisionSiblingInput, type ProvisionSiblingResult, } from './platform-drain.js';
19
19
  export { reconcilePayloadFor, reconcileThenReassert } from './reconcile.js';
20
20
  export type { ReconcilePayload, ReconcileGatherAdmin } from './reconcile.js';
21
21
  export { attributeFailure, terminalFailureNote } from './failure-attribution.js';
22
+ export { isTerminalDispatchFailure, isTerminalProviderError, providerErrorStatus, RETRYABLE_CLIENT_STATUSES, } from './provider-error.js';
22
23
  export type { VerticalClientOptions, ProvisionInstanceInput, ProvisionedInstance, ConfigureInstanceInput, } from './vertical-client.js';
23
24
  export { assertSandboxContract, deployManifest, deploymentRefFor, stableDeploymentRefFor, nextMigrationTag, DeployUploadError, upstreamStatusOf, } from './deploy.js';
24
25
  export type { DeployVerticalFn, FetchVerticalAssetFn, FetchVerticalModulesFn, RecoverAssetContentFn, VerticalBundle, DeclaredBinding, DeployManifest, } from './deploy.js';
25
26
  export { createWfpUploader, createWfpModulesFetcher, createWfpBindingsPatcher } from './wfp.js';
26
- export { withPlatformEntry, platformEntrySkipReason, PLATFORM_ENTRY_MODULE } from './platform-entry.js';
27
+ export { withPlatformEntry, platformEntrySkipReason, platformSweeperDecision, PLATFORM_ENTRY_MODULE, PLATFORM_SWEEPER_MODULE, } from './platform-entry.js';
27
28
  export type { WfpUploaderOptions, PatchScriptBindingsFn, ScriptBindingSpec, D1BindingSpec, R2BindingSpec, } from './wfp.js';
28
29
  export { blobStoreBindings, collectBlobStoreHandles, collectTenantStoreHandles, tenantStoreBindings, } from './tenant-stores.js';
29
30
  export { createCustomHostnameProvisioner, mapCfStatus, extractRecords, reconcilePendingHostnames, isCustomHostname, validateBindableHostname, } from './custom-hostnames.js';
30
31
  export type { CustomHostnameProvisioner, CustomHostnameProvisionerOptions, CustomHostnameIssuance, ReconcileHostnamesResult, } from './custom-hostnames.js';
31
- export type { ObservabilityReader, ServiceMetricsRow, RecentLogEvent, TenantMetricsBucket, ConnectorCallsBucket, RequestFacetKey, RequestWhere, TenantRequestScope, RequestLevelCounts, RequestVolume, RequestVolumeBucket, RequestFacets, RequestFacetValue, RequestRecord, LogPattern, LogPatterns, LogPatternLevel, } from './observability.js';
32
- export { TENANT_SERIES_SCOPE_CAP, TENANT_METRICS_LIMIT, REQUEST_FACET_KEYS, REQUEST_FACET_TOP, LOG_PATTERN_TOP, } from './observability.js';
32
+ export type { ObservabilityReader, ServiceMetricsRow, RecentLogEvent, TenantMetricsBucket, ConnectorCallsBucket, RequestFacetKey, RequestWhere, TenantRequestScope, RequestLevelCounts, RequestVolume, RequestVolumeBucket, RequestFacets, RequestFacetValue, RequestRecord, InvocationKind, LogPattern, LogPatterns, LogPatternLevel, } from './observability.js';
33
+ export { TENANT_SERIES_SCOPE_CAP, TENANT_METRICS_LIMIT, REQUEST_FACET_KEYS, REQUEST_FACET_TOP, LOG_PATTERN_TOP, INVOCATION_KINDS, invocationKindOf, } from './observability.js';
33
34
  export { STORAGE_PAGE_DEFAULT, STORAGE_PAGE_MAX, STORAGE_READ_CONCURRENCY, readStoragePage, } from './storage-meter.js';
34
35
  export type { StoragePageInput, StorageScope } from './storage-meter.js';
35
36
  export type { PlatformRuntime } from './platform-runtime.js';
36
37
  export { createCfDoNamespaceReader, namespacesForScript } from './do-namespaces.js';
37
38
  export type { DoNamespaceReader, DoNamespaceRecord, CfDoNamespaceOptions } from './do-namespaces.js';
38
39
  export { createCfObservabilityReader } from './cf-observability.js';
40
+ export { tallyFieldCoverage, FIELD_COVERAGE_OPERATIONS_MAX } from './field-coverage-tally.js';
41
+ export type { FieldCoverageTally, FieldCoverageScope, OperationFieldCoverage, FieldCoverageCount } from './field-coverage-tally.js';
39
42
  export { cachedSource, memoryCubeStore, grainFor, blockMsFor, CLOSE_LAG_MS } from './aggregate-source.js';
40
43
  export type { AggregateSource, Cube, CubeQuery, CubeStore, StoredBlock, RequestCubeRow, PatternCubeRow } from './aggregate-source.js';
41
44
  export { aggregateReads } from './aggregate-reads.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}