@kumwe/studio-testkit 0.1.0-alpha.7 → 0.1.0-alpha.8

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 (128) hide show
  1. package/README.md +50 -11
  2. package/corpus-manifest.json +381 -35
  3. package/dist/host-testbed.d.ts +22 -2
  4. package/dist/host-testbed.d.ts.map +1 -1
  5. package/dist/host-testbed.js +230 -35
  6. package/dist/host-testbed.js.map +1 -1
  7. package/dist/index.d.ts +40 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +36 -2
  10. package/dist/index.js.map +1 -1
  11. package/fixtures/host-capabilities.example.json +2 -2
  12. package/fixtures/preview.render.example.json +1 -0
  13. package/fixtures/studio-config.example.json +3 -3
  14. package/invalid/host-capabilities.invalid-protocol-version.json +1 -1
  15. package/invalid/host-sequence.pending-expectation.json +52 -0
  16. package/invalid/host-sequence.preview-render-missing-request-id.json +50 -0
  17. package/invalid/preview-message.activated-unknown-interaction.json +1 -1
  18. package/invalid/preview-message.duplicate-marker.json +24 -0
  19. package/invalid/preview-message.invalid-digest.json +1 -0
  20. package/invalid/preview-message.invalid-marker-grammar.json +19 -0
  21. package/invalid/preview-message.missing-marker-map.json +20 -0
  22. package/invalid/preview-message.missing-render-request-id.json +18 -0
  23. package/invalid/preview-message.unknown-type.json +13 -0
  24. package/invalid/preview-message.viewport-height-too-small.json +13 -0
  25. package/invalid/preview-message.viewport-unsafe-role.json +13 -0
  26. package/package.json +3 -3
  27. package/vectors/host/artifact.dependencies.result.json +2 -2
  28. package/vectors/host/artifact.load.stored.json +2 -2
  29. package/vectors/host/artifact.load.unknown.error.json +2 -2
  30. package/vectors/host/artifact.publish.accepted.json +2 -2
  31. package/vectors/host/artifact.publish.forbidden.error.json +1 -1
  32. package/vectors/host/artifact.publish.stale.error.json +2 -2
  33. package/vectors/host/artifact.save.accepted.json +2 -2
  34. package/vectors/host/artifact.save.forbidden.error.json +1 -1
  35. package/vectors/host/artifact.save.stale.error.json +2 -2
  36. package/vectors/host/artifact.unpublish.stale.error.json +2 -2
  37. package/vectors/host/envelope.malformed-context.error.json +2 -2
  38. package/vectors/host/envelope.protocol-version.error.json +1 -1
  39. package/vectors/host/envelope.stale-generation.error.json +2 -2
  40. package/vectors/host/localization.messages.unknown-locale.error.json +2 -2
  41. package/vectors/host/media.abort-upload.unknown.error.json +1 -1
  42. package/vectors/host/media.authorize-upload.granted.json +1 -1
  43. package/vectors/host/media.authorize-upload.path-filename.error.json +1 -1
  44. package/vectors/host/media.authorize-upload.too-large.error.json +1 -1
  45. package/vectors/host/media.complete-upload.unknown.error.json +1 -1
  46. package/vectors/host/media.get.unknown.json +2 -2
  47. package/vectors/host/media.import-external.private-host.error.json +1 -1
  48. package/vectors/host/media.list.cursor.error.json +2 -2
  49. package/vectors/host/media.list.limit.error.json +2 -2
  50. package/vectors/host/media.upload-status.unknown.error.json +1 -1
  51. package/vectors/host/permission.explain.withheld.json +2 -2
  52. package/vectors/host/permission.refresh.snapshot.json +2 -2
  53. package/vectors/host/recovery.load.absent.json +2 -2
  54. package/vectors/host/telemetry.emit.accepted.json +2 -2
  55. package/vectors/host/telemetry.emit.non-primitive.error.json +2 -2
  56. package/vectors/host-sequence/artifact.publish.changed-intent.sequence.json +75 -0
  57. package/vectors/host-sequence/artifact.publish.idempotent-replay.sequence.json +111 -0
  58. package/vectors/host-sequence/preview.cancel.cross-context.sequence.json +78 -0
  59. package/vectors/host-sequence/preview.render.cancelled.sequence.json +75 -0
  60. package/vectors/host-sequence/recovery.store.canonical-number.sequence.json +72 -0
  61. package/vectors/host-sequence/recovery.store.changed-context.sequence.json +61 -0
  62. package/vectors/host-sequence/recovery.store.rate-limited.sequence.json +93 -0
  63. package/vectors/host-sequence/recovery.store.resource-scope.sequence.json +61 -0
  64. package/vectors/host-sequence/recovery.store.wrong-operation-id.sequence.json +56 -0
  65. package/vectors/preview/canonical-preorder.json +102 -0
  66. package/vectors/preview/empty-draft.json +36 -0
  67. package/vectors/schema-profile/alternative-limit.accepted.json +95 -0
  68. package/vectors/schema-profile/alternative-limit.rejected.json +92 -0
  69. package/vectors/schema-profile/array-composition.accepted.json +35 -0
  70. package/vectors/schema-profile/byte-limit.accepted.json +30 -0
  71. package/vectors/schema-profile/byte-limit.rejected.json +26 -0
  72. package/vectors/schema-profile/closed-object.accepted.json +38 -0
  73. package/vectors/schema-profile/decimal-multiple.accepted.json +54 -0
  74. package/vectors/schema-profile/depth-limit.accepted.json +90 -0
  75. package/vectors/schema-profile/depth-limit.rejected.json +88 -0
  76. package/vectors/schema-profile/description-limit.accepted.json +29 -0
  77. package/vectors/schema-profile/description-limit.rejected.json +25 -0
  78. package/vectors/schema-profile/diagnostic-precedence.rejected.json +26 -0
  79. package/vectors/schema-profile/duplicate-dependent-required.rejected.json +21 -0
  80. package/vectors/schema-profile/duplicate-required.rejected.json +18 -0
  81. package/vectors/schema-profile/empty-combinator.rejected.json +17 -0
  82. package/vectors/schema-profile/empty-enum.rejected.json +17 -0
  83. package/vectors/schema-profile/enum-limit.accepted.json +89 -0
  84. package/vectors/schema-profile/enum-limit.rejected.json +84 -0
  85. package/vectors/schema-profile/examples-limit.accepted.json +35 -0
  86. package/vectors/schema-profile/examples-limit.rejected.json +31 -0
  87. package/vectors/schema-profile/format-keyword.rejected.json +17 -0
  88. package/vectors/schema-profile/forward-reference-path-precedence.rejected.json +20 -0
  89. package/vectors/schema-profile/invalid-pointer.rejected.json +18 -0
  90. package/vectors/schema-profile/json-depth-limit.accepted.json +278 -0
  91. package/vectors/schema-profile/json-depth-limit.rejected.json +276 -0
  92. package/vectors/schema-profile/json-item-limit.accepted.json +686 -0
  93. package/vectors/schema-profile/json-item-limit.rejected.json +682 -0
  94. package/vectors/schema-profile/json-property-limit.accepted.json +1031 -0
  95. package/vectors/schema-profile/json-property-limit.rejected.json +1028 -0
  96. package/vectors/schema-profile/local-reference.accepted.json +28 -0
  97. package/vectors/schema-profile/memoized-diagnostic.accepted.json +31 -0
  98. package/vectors/schema-profile/node-limit.accepted.json +1097 -0
  99. package/vectors/schema-profile/node-limit.rejected.json +1094 -0
  100. package/vectors/schema-profile/non-object-root.rejected.json +9 -0
  101. package/vectors/schema-profile/non-schema-reference.rejected.json +21 -0
  102. package/vectors/schema-profile/object-key-limit.accepted.json +32 -0
  103. package/vectors/schema-profile/object-key-limit.rejected.json +28 -0
  104. package/vectors/schema-profile/open-root.rejected.json +13 -0
  105. package/vectors/schema-profile/percent-encoded-pointer.rejected.json +26 -0
  106. package/vectors/schema-profile/property-name-limit.accepted.json +543 -0
  107. package/vectors/schema-profile/property-name-limit.rejected.json +536 -0
  108. package/vectors/schema-profile/recursive-diagnostic-precedence.rejected.json +30 -0
  109. package/vectors/schema-profile/recursive-reference.rejected.json +24 -0
  110. package/vectors/schema-profile/reference-fanout.accepted.json +662 -0
  111. package/vectors/schema-profile/reference-length-limit.accepted.json +45 -0
  112. package/vectors/schema-profile/reference-length-limit.rejected.json +39 -0
  113. package/vectors/schema-profile/reference-limit.accepted.json +416 -0
  114. package/vectors/schema-profile/reference-limit.rejected.json +415 -0
  115. package/vectors/schema-profile/reference-vs-keyword-precedence.rejected.json +22 -0
  116. package/vectors/schema-profile/reserved-pointer.rejected.json +26 -0
  117. package/vectors/schema-profile/root-diagnostic-precedence.rejected.json +16 -0
  118. package/vectors/schema-profile/root-vs-reference-precedence.rejected.json +19 -0
  119. package/vectors/schema-profile/schema-map-limit.accepted.json +539 -0
  120. package/vectors/schema-profile/schema-map-limit.rejected.json +536 -0
  121. package/vectors/schema-profile/semantic-recursion-precedence.rejected.json +21 -0
  122. package/vectors/schema-profile/semantic-reference-precedence.rejected.json +21 -0
  123. package/vectors/schema-profile/title-limit.accepted.json +29 -0
  124. package/vectors/schema-profile/title-limit.rejected.json +25 -0
  125. package/vectors/schema-profile/unresolved-reference.rejected.json +17 -0
  126. package/vectors/schema-profile/unsafe-dependent-required.rejected.json +24 -0
  127. package/vectors/schema-profile/unsafe-member.rejected.json +17 -0
  128. package/vectors/schema-profile/unsafe-required.rejected.json +17 -0
@@ -1,14 +1,31 @@
1
- import { type HostAdapter, type HostErrorCategory, type HostPortError, type HostPortResult, type HostRequestContext, type MediaAsset, type MediaUploadAcceptedAsset, type PreviewRenderPayload, type PreviewRenderedPayload, type QualifiedName, type ResourceSearchHit, type Revision, type StableId, type StudioArtifact, type StudioWireProtocolVersion, type TelemetryEvent } from '@kumwe/studio-protocol';
1
+ import { type HostAdapter, type HostErrorCategory, type HostPortError, type HostPortResult, type HostRequestContext, type JsonObject, type MediaAsset, type MediaUploadAcceptedAsset, type PreviewRenderPayload, type PreviewRenderedPayload, type QualifiedName, type ResourceSearchHit, type Revision, type StableId, type StudioArtifact, type StudioWireProtocolVersion, type TelemetryEvent } from '@kumwe/studio-protocol';
2
2
  export type TestbedPortName = 'artifact' | 'localization' | 'media' | 'permission' | 'preview' | 'recovery' | 'resource' | 'telemetry';
3
3
  export interface TestbedHostOptions {
4
+ /**
5
+ * Permits the fixture-only `studio.test/operation` wildcard used by broad
6
+ * unit tests. Defaults to false and MUST remain false for conformance replay.
7
+ */
8
+ allowTestOperationId?: boolean;
4
9
  documents?: StudioArtifact[];
10
+ initialClockMilliseconds?: number;
5
11
  mediaAssets?: MediaAsset[];
6
12
  messages?: Record<string, Record<QualifiedName, string>>;
7
13
  permissions?: QualifiedName[];
8
- render?: (payload: PreviewRenderPayload) => PreviewRenderedPayload;
14
+ rateLimits?: TestbedRateLimitPolicy[];
15
+ render?: (payload: PreviewRenderPayload) => PreviewRenderedPayload | Promise<PreviewRenderedPayload>;
9
16
  resources?: ResourceSearchHit[];
17
+ /** Exact live generation to seed before the first portable request. */
18
+ sessionGeneration?: Revision;
19
+ }
20
+ /** A deterministic fixed-window policy used by portable sequence replays. */
21
+ export interface TestbedRateLimitPolicy {
22
+ maximumRequests: number;
23
+ operationId: QualifiedName;
24
+ windowMilliseconds: number;
10
25
  }
11
26
  export interface TestbedControls {
27
+ advanceClock(milliseconds: number): void;
28
+ artifactStatus(id: StableId): StudioArtifact['status'] | undefined;
12
29
  disconnect(): void;
13
30
  failNext(portName: TestbedPortName, operation: string, category: HostErrorCategory): void;
14
31
  /**
@@ -24,7 +41,10 @@ export interface TestbedControls {
24
41
  */
25
42
  importExternalMedia(candidate: string, context: HostRequestContext): Promise<HostPortResult<MediaUploadAcceptedAsset>>;
26
43
  reconnect(): void;
44
+ recoveryEnvelope(resourceContextKey: StableId): JsonObject | undefined;
27
45
  revisionOf(id: StableId): Revision | undefined;
46
+ readonly pendingPreviewRenders: number;
47
+ readonly previewDeliveries: readonly string[];
28
48
  readonly sessionGeneration: Revision;
29
49
  setPermissions(permissions: QualifiedName[]): void;
30
50
  readonly telemetryEvents: readonly TelemetryEvent[];
@@ -1 +1 @@
1
- {"version":3,"file":"host-testbed.d.ts","sourceRoot":"","sources":["../src/host-testbed.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EAGvB,KAAK,UAAU,EACf,KAAK,wBAAwB,EAI7B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC9B,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,eAAe,GACvB,UAAU,GACV,cAAc,GACd,OAAO,GACP,YAAY,GACZ,SAAS,GACT,UAAU,GACV,UAAU,GACV,WAAW,CAAC;AAEhB,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,sBAAsB,CAAC;IACnE,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,IAAI,IAAI,CAAC;IACnB,QAAQ,CAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC1F;;;;;;;;;;OAUG;IACH,mBAAmB,CACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACrD,SAAS,IAAI,IAAI,CAAC;IAClB,UAAU,CAAC,EAAE,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,CAAC;IACrC,cAAc,CAAC,WAAW,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IACnD,QAAQ,CAAC,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;CACrD;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,eAAe,CAAC;IAC1B,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,gCAAgC;IAC/C,gBAAgB,CAAC,EAAE,QAAQ,CAAC;IAC5B,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,eAAe,CAAC,EAAE,yBAAyB,CAAC;IAC5C,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,kBAAkB,CAAC,EAAE,QAAQ,CAAC;IAC9B,iBAAiB,CAAC,EAAE,QAAQ,CAAC;CAC9B;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,SAAgB,KAAK,EAAE,aAAa,CAAC;gBAElB,KAAK,EAAE,aAAa;CAKxC;AAED,wBAAgB,+BAA+B,CAC7C,OAAO,GAAE,gCAAqC,GAC7C,kBAAkB,CAapB;AAeD,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,WAAW,CAue/E"}
1
+ {"version":3,"file":"host-testbed.d.ts","sourceRoot":"","sources":["../src/host-testbed.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { validateExternalUrl } from '@kumwe/studio-core';
1
+ import { canonicalStringify, validateExternalUrl } from '@kumwe/studio-core';
2
2
  import { STUDIO_CONTRACT_VERSION, STUDIO_WIRE_PROTOCOL_VERSION, } from '@kumwe/studio-protocol';
3
3
  export class TestbedHostError extends Error {
4
4
  error;
@@ -33,13 +33,21 @@ const PUBLISH_PERMISSION = 'studio.permission/publish';
33
33
  const UPLOAD_CHUNK_BYTES = 5_242_880;
34
34
  const UPLOAD_MAXIMUM_BYTES = 52_428_800;
35
35
  const GRANT_EXPIRY = '2030-01-01T00:00:00Z';
36
+ const MAXIMUM_RATE_LIMIT_REQUESTS = 1000;
37
+ const MAXIMUM_RATE_LIMIT_WINDOW_MILLISECONDS = 86_400_000;
36
38
  export function createTestbedHost(options = {}) {
37
39
  const artifactStore = new Map();
38
40
  for (const seeded of options.documents ?? []) {
39
41
  const document = cloneValue(seeded);
40
- const revision = `${document.id}-r1`;
41
- document.revision = revision;
42
- artifactStore.set(document.id, { document, revision, serial: 1 });
42
+ if (artifactStore.has(document.id)) {
43
+ throw new TypeError(`Testbed artifact ${document.id} is duplicated.`);
44
+ }
45
+ const revision = document.revision;
46
+ artifactStore.set(document.id, {
47
+ document,
48
+ revision,
49
+ serial: seededRevisionSerial(document.id, revision),
50
+ });
43
51
  }
44
52
  const mediaAssets = cloneValue(options.mediaAssets ?? []);
45
53
  const resources = cloneValue(options.resources ?? []);
@@ -48,16 +56,43 @@ export function createTestbedHost(options = {}) {
48
56
  const telemetryEvents = [];
49
57
  const injectedFailures = [];
50
58
  const renderCallback = options.render ?? defaultRender;
59
+ const idempotencyRecords = new Map();
60
+ const pendingPreviewRenders = new Map();
61
+ const previewDeliveries = [];
62
+ const rateLimitPolicies = new Map();
63
+ const rateLimitWindows = new Map();
64
+ for (const policy of options.rateLimits ?? []) {
65
+ if (!Number.isSafeInteger(policy.maximumRequests) ||
66
+ policy.maximumRequests < 1 ||
67
+ policy.maximumRequests > MAXIMUM_RATE_LIMIT_REQUESTS ||
68
+ !Number.isSafeInteger(policy.windowMilliseconds) ||
69
+ policy.windowMilliseconds < 1 ||
70
+ policy.windowMilliseconds > MAXIMUM_RATE_LIMIT_WINDOW_MILLISECONDS) {
71
+ throw new RangeError('Testbed rate limits require positive safe-integer bounds.');
72
+ }
73
+ if (rateLimitPolicies.has(policy.operationId)) {
74
+ throw new TypeError(`Testbed rate limit ${policy.operationId} is duplicated.`);
75
+ }
76
+ rateLimitPolicies.set(policy.operationId, { ...policy });
77
+ }
51
78
  const uploadGrants = new Map();
52
79
  const acceptedUploads = new Map();
53
80
  let uploadSerial = 0;
54
81
  let permissions = (options.permissions ?? []).slice();
55
- let generationSerial = 1;
82
+ let liveGeneration = options.sessionGeneration ?? 'session-r1';
83
+ if (!isNonEmptyString(liveGeneration) || liveGeneration.length > 200) {
84
+ throw new TypeError('The testbed session generation must be a non-empty bounded revision.');
85
+ }
86
+ let generationSerial = seededRevisionSerial('session', liveGeneration);
56
87
  let connected = true;
57
88
  let correlationSerial = 0;
58
89
  let importSerial = 0;
90
+ let clockMilliseconds = options.initialClockMilliseconds ?? 0;
91
+ if (!Number.isSafeInteger(clockMilliseconds) || clockMilliseconds < 0) {
92
+ throw new RangeError('The testbed logical clock must be a non-negative safe integer.');
93
+ }
59
94
  function currentGeneration() {
60
- return `session-r${generationSerial}`;
95
+ return liveGeneration;
61
96
  }
62
97
  function createError(category, defaultMessage, extras = {}) {
63
98
  correlationSerial += 1;
@@ -68,24 +103,19 @@ export function createTestbedHost(options = {}) {
68
103
  kind: 'host-error',
69
104
  message: { defaultMessage, key: `studio.testbed/${category}` },
70
105
  retryable: extras.retryable ?? (category === 'rate-limited' || category === 'unavailable'),
106
+ ...(extras.retryAfterMilliseconds === undefined
107
+ ? {}
108
+ : { retryAfterMilliseconds: extras.retryAfterMilliseconds }),
71
109
  ...(extras.revision === undefined ? {} : { revision: extras.revision }),
72
110
  };
73
111
  }
74
112
  function fail(category, defaultMessage, extras = {}) {
75
113
  throw new TestbedHostError(createError(category, defaultMessage, extras));
76
114
  }
77
- function guard(portName, operation, context) {
115
+ function guardEnvelope(portName, operation, context) {
78
116
  if (!connected) {
79
117
  fail('unavailable', 'The testbed host is disconnected.');
80
118
  }
81
- const index = injectedFailures.findIndex((entry) => entry.portName === portName && entry.operation === operation);
82
- if (index >= 0) {
83
- const injected = injectedFailures[index];
84
- injectedFailures.splice(index, 1);
85
- if (injected !== undefined) {
86
- fail(injected.category, 'The testbed injected this failure.');
87
- }
88
- }
89
119
  if (!isNonEmptyString(context.requestId) ||
90
120
  !isNonEmptyString(context.operationId) ||
91
121
  !isNonEmptyString(context.resourceContextKey) ||
@@ -98,17 +128,109 @@ export function createTestbedHost(options = {}) {
98
128
  if (context.sessionGeneration !== currentGeneration()) {
99
129
  fail('invalid-request', 'The session generation is no longer valid.');
100
130
  }
131
+ const expectedOperationId = `studio.operation/${portName}.${operation}`;
132
+ if (context.operationId !== expectedOperationId &&
133
+ !(options.allowTestOperationId === true && context.operationId === 'studio.test/operation')) {
134
+ fail('invalid-request', 'The request operation identifier does not match the invoked port.');
135
+ }
101
136
  }
102
- function run(portName, operation, context, body) {
137
+ function applyOperationalGuards(portName, operation, context) {
138
+ const index = injectedFailures.findIndex((entry) => entry.portName === portName && entry.operation === operation);
139
+ if (index >= 0) {
140
+ const injected = injectedFailures[index];
141
+ injectedFailures.splice(index, 1);
142
+ if (injected !== undefined) {
143
+ fail(injected.category, 'The testbed injected this failure.');
144
+ }
145
+ }
146
+ const policy = rateLimitPolicies.get(context.operationId);
147
+ if (policy === undefined) {
148
+ return;
149
+ }
150
+ let rateWindow = rateLimitWindows.get(context.operationId);
151
+ if (rateWindow === undefined ||
152
+ clockMilliseconds >= rateWindow.startedAtMilliseconds + policy.windowMilliseconds) {
153
+ rateWindow = { requestCount: 0, startedAtMilliseconds: clockMilliseconds };
154
+ rateLimitWindows.set(context.operationId, rateWindow);
155
+ }
156
+ if (rateWindow.requestCount >= policy.maximumRequests) {
157
+ fail('rate-limited', 'The operation has reached its deterministic request bound.', {
158
+ retryAfterMilliseconds: rateWindow.startedAtMilliseconds + policy.windowMilliseconds - clockMilliseconds,
159
+ });
160
+ }
161
+ rateWindow.requestCount += 1;
162
+ }
163
+ async function executeBody(body) {
103
164
  try {
104
- guard(portName, operation, context);
105
- return Promise.resolve(body());
165
+ return await body();
106
166
  }
107
167
  catch (error) {
108
168
  if (error instanceof TestbedHostError) {
109
- return Promise.reject(error);
169
+ throw error;
110
170
  }
111
- return Promise.reject(new TestbedHostError(createError('internal', 'The testbed operation failed unexpectedly.')));
171
+ throw new TestbedHostError(createError('internal', 'The testbed operation failed unexpectedly.'));
172
+ }
173
+ }
174
+ function run(portName, operation, context, body) {
175
+ try {
176
+ guardEnvelope(portName, operation, context);
177
+ applyOperationalGuards(portName, operation, context);
178
+ return executeBody(body);
179
+ }
180
+ catch (error) {
181
+ return executeBody(() => {
182
+ throw error;
183
+ });
184
+ }
185
+ }
186
+ function runMutation(portName, operation, argument, context, body) {
187
+ try {
188
+ guardEnvelope(portName, operation, context);
189
+ const idempotencyKey = context.idempotencyKey;
190
+ if (idempotencyKey === undefined) {
191
+ applyOperationalGuards(portName, operation, context);
192
+ return executeBody(body);
193
+ }
194
+ const scope = canonicalStringify({
195
+ idempotencyKey,
196
+ operationId: context.operationId,
197
+ resourceContextKey: context.resourceContextKey,
198
+ sessionGeneration: context.sessionGeneration,
199
+ });
200
+ const fingerprint = canonicalStringify({
201
+ argument,
202
+ context: {
203
+ ...(context.expectedRevision === undefined
204
+ ? {}
205
+ : { expectedRevision: context.expectedRevision }),
206
+ ...(context.locale === undefined ? {} : { locale: context.locale }),
207
+ protocolVersion: context.protocolVersion,
208
+ },
209
+ });
210
+ const prior = idempotencyRecords.get(scope);
211
+ if (prior !== undefined) {
212
+ if (prior.fingerprint !== fingerprint) {
213
+ fail('invalid-request', 'The idempotency key was already accepted for another intent.');
214
+ }
215
+ return prior.promise.then((result) => cloneValue(result));
216
+ }
217
+ applyOperationalGuards(portName, operation, context);
218
+ const accepted = executeBody(body).then((result) => cloneValue(result));
219
+ idempotencyRecords.set(scope, {
220
+ fingerprint,
221
+ promise: accepted,
222
+ });
223
+ void accepted.catch(() => {
224
+ if (idempotencyRecords.get(scope)?.promise === accepted) {
225
+ idempotencyRecords.delete(scope);
226
+ }
227
+ });
228
+ return accepted.then((result) => cloneValue(result));
229
+ }
230
+ catch (error) {
231
+ return executeBody(() => {
232
+ throw error;
233
+ });
112
234
  }
113
235
  }
114
236
  /**
@@ -176,10 +298,10 @@ export function createTestbedHost(options = {}) {
176
298
  });
177
299
  },
178
300
  publish(reference, context) {
179
- return run('artifact', 'publish', context, () => setStatus(reference.id, context, 'published'));
301
+ return runMutation('artifact', 'publish', reference, context, () => setStatus(reference.id, context, 'published'));
180
302
  },
181
303
  save(document, context) {
182
- return run('artifact', 'save', context, () => {
304
+ return runMutation('artifact', 'save', document, context, () => {
183
305
  requireArtifactPermission(SAVE_PERMISSION);
184
306
  const stored = requireStored(document.id);
185
307
  ensureExpectedRevision(stored, context);
@@ -188,7 +310,7 @@ export function createTestbedHost(options = {}) {
188
310
  });
189
311
  },
190
312
  unpublish(reference, context) {
191
- return run('artifact', 'unpublish', context, () => setStatus(reference.id, context, 'draft'));
313
+ return runMutation('artifact', 'unpublish', reference, context, () => setStatus(reference.id, context, 'draft'));
192
314
  },
193
315
  },
194
316
  localization: {
@@ -211,7 +333,7 @@ export function createTestbedHost(options = {}) {
211
333
  },
212
334
  media: {
213
335
  abortUpload(uploadId, context) {
214
- return run('media', 'abort-upload', context, () => {
336
+ return runMutation('media', 'abort-upload', uploadId, context, () => {
215
337
  if (!uploadGrants.delete(uploadId)) {
216
338
  fail('not-found', 'The requested upload is not available.');
217
339
  }
@@ -219,7 +341,7 @@ export function createTestbedHost(options = {}) {
219
341
  });
220
342
  },
221
343
  authorizeUpload(request, context) {
222
- return run('media', 'authorize-upload', context, () => {
344
+ return runMutation('media', 'authorize-upload', request, context, () => {
223
345
  assertUploadRequest(request);
224
346
  uploadSerial += 1;
225
347
  const uploadId = `uploads/testbed-${String(uploadSerial)}`;
@@ -240,7 +362,7 @@ export function createTestbedHost(options = {}) {
240
362
  });
241
363
  },
242
364
  completeUpload(uploadId, context) {
243
- return run('media', 'complete-upload', context, () => {
365
+ return runMutation('media', 'complete-upload', uploadId, context, () => {
244
366
  const pending = uploadGrants.get(uploadId);
245
367
  if (pending === undefined) {
246
368
  fail('not-found', 'The requested upload is not available.');
@@ -287,7 +409,7 @@ export function createTestbedHost(options = {}) {
287
409
  });
288
410
  },
289
411
  importExternal(url, context) {
290
- return run('media', 'import-external', context, () => {
412
+ return runMutation('media', 'import-external', url, context, () => {
291
413
  const verdict = validateExternalUrl(url);
292
414
  if (!verdict.ok) {
293
415
  // The stable reason is disclosed; the candidate never is.
@@ -336,17 +458,48 @@ export function createTestbedHost(options = {}) {
336
458
  },
337
459
  preview: {
338
460
  cancel(draftDigest, context) {
339
- return run('preview', 'cancel', context, () => ({ value: null }));
461
+ return run('preview', 'cancel', context, () => {
462
+ const pending = pendingPreviewRenders.get(previewRenderKey(draftDigest, context));
463
+ pending?.cancel();
464
+ return { value: null };
465
+ });
340
466
  },
341
467
  render(payload, context) {
342
- return run('preview', 'render', context, () => ({
343
- value: cloneValue(renderCallback(cloneValue(payload))),
344
- }));
468
+ return run('preview', 'render', context, async () => {
469
+ const key = previewRenderKey(payload.draftDigest, context);
470
+ if (pendingPreviewRenders.has(key)) {
471
+ fail('invalid-request', 'A render for this draft is already in flight.');
472
+ }
473
+ let cancel = () => undefined;
474
+ const cancellation = new Promise((_resolve, reject) => {
475
+ cancel = () => {
476
+ reject(new TestbedHostError(createError('cancelled', 'The in-flight preview render was cancelled.', {
477
+ retryable: false,
478
+ })));
479
+ };
480
+ });
481
+ pendingPreviewRenders.set(key, { cancel });
482
+ try {
483
+ const rendered = await Promise.race([
484
+ Promise.resolve(renderCallback(cloneValue(payload))),
485
+ cancellation,
486
+ ]);
487
+ if (rendered.draftDigest !== payload.draftDigest ||
488
+ rendered.requestId !== payload.requestId) {
489
+ fail('internal', 'The preview renderer returned a result for a different render attempt.');
490
+ }
491
+ previewDeliveries.push(payload.draftDigest);
492
+ return { value: cloneValue(rendered) };
493
+ }
494
+ finally {
495
+ pendingPreviewRenders.delete(key);
496
+ }
497
+ });
345
498
  },
346
499
  },
347
500
  recovery: {
348
501
  discard(context) {
349
- return run('recovery', 'discard', context, () => {
502
+ return runMutation('recovery', 'discard', null, context, () => {
350
503
  recoveryStore.delete(context.resourceContextKey);
351
504
  return { value: null };
352
505
  });
@@ -359,7 +512,7 @@ export function createTestbedHost(options = {}) {
359
512
  });
360
513
  },
361
514
  store(envelope, context) {
362
- return run('recovery', 'store', context, () => {
515
+ return runMutation('recovery', 'store', envelope, context, () => {
363
516
  recoveryStore.set(context.resourceContextKey, cloneValue(envelope));
364
517
  return { value: null };
365
518
  });
@@ -390,7 +543,7 @@ export function createTestbedHost(options = {}) {
390
543
  },
391
544
  telemetry: {
392
545
  emit(event, context) {
393
- return run('telemetry', 'emit', context, () => {
546
+ return runMutation('telemetry', 'emit', event, context, () => {
394
547
  if (event.attributes !== undefined) {
395
548
  for (const attribute of Object.values(event.attributes)) {
396
549
  if (!isJsonPrimitiveValue(attribute)) {
@@ -405,6 +558,19 @@ export function createTestbedHost(options = {}) {
405
558
  },
406
559
  };
407
560
  const controls = {
561
+ advanceClock(milliseconds) {
562
+ if (!Number.isSafeInteger(milliseconds) || milliseconds < 0) {
563
+ throw new RangeError('Testbed clock advances must be non-negative safe integers.');
564
+ }
565
+ const next = clockMilliseconds + milliseconds;
566
+ if (!Number.isSafeInteger(next)) {
567
+ throw new RangeError('The testbed logical clock cannot exceed the safe-integer bound.');
568
+ }
569
+ clockMilliseconds = next;
570
+ },
571
+ artifactStatus(id) {
572
+ return artifactStore.get(id)?.document.status;
573
+ },
408
574
  disconnect() {
409
575
  connected = false;
410
576
  },
@@ -438,15 +604,26 @@ export function createTestbedHost(options = {}) {
438
604
  reconnect() {
439
605
  connected = true;
440
606
  },
607
+ recoveryEnvelope(resourceContextKey) {
608
+ const envelope = recoveryStore.get(resourceContextKey);
609
+ return envelope === undefined ? undefined : cloneValue(envelope);
610
+ },
441
611
  revisionOf(id) {
442
612
  return artifactStore.get(id)?.revision;
443
613
  },
614
+ get pendingPreviewRenders() {
615
+ return pendingPreviewRenders.size;
616
+ },
617
+ get previewDeliveries() {
618
+ return previewDeliveries.slice();
619
+ },
444
620
  get sessionGeneration() {
445
621
  return currentGeneration();
446
622
  },
447
623
  setPermissions(next) {
448
624
  permissions = next.slice();
449
625
  generationSerial += 1;
626
+ liveGeneration = `session-r${generationSerial}`;
450
627
  },
451
628
  get telemetryEvents() {
452
629
  return cloneValue(telemetryEvents);
@@ -455,7 +632,25 @@ export function createTestbedHost(options = {}) {
455
632
  return { controls, host };
456
633
  }
457
634
  function defaultRender(payload) {
458
- return { diagnostics: [], draftDigest: payload.draftDigest, markers: [] };
635
+ return {
636
+ diagnostics: [],
637
+ draftDigest: payload.draftDigest,
638
+ markerMap: {},
639
+ markers: [],
640
+ requestId: payload.requestId,
641
+ };
642
+ }
643
+ function previewRenderKey(draftDigest, context) {
644
+ return `${context.sessionGeneration}\u0000${context.resourceContextKey}\u0000${draftDigest}`;
645
+ }
646
+ function seededRevisionSerial(id, revision) {
647
+ const prefix = `${id}-r`;
648
+ if (!revision.startsWith(prefix)) {
649
+ return 0;
650
+ }
651
+ const suffix = revision.slice(prefix.length);
652
+ const parsed = Number(suffix);
653
+ return Number.isSafeInteger(parsed) && parsed >= 0 && String(parsed) === suffix ? parsed : 0;
459
654
  }
460
655
  function isNonEmptyString(value) {
461
656
  return typeof value === 'string' && value.length > 0;
@@ -1 +1 @@
1
- {"version":3,"file":"host-testbed.js","sourceRoot":"","sources":["../src/host-testbed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host-testbed.js","sourceRoot":"","sources":["../src/host-testbed.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
+ import { type StudioSchemaProfileErrorCode } from '@kumwe/studio-core';
1
2
  import { type BlockDefinition, type BlockSlotDefinition, type BlockType, type BlueprintDocument, type BlueprintBlockLock, type BlueprintNode, type JsonSchema, type StudioConfiguration, type StudioDiagnostic } from '@kumwe/studio-protocol';
2
- export { createHostRequestContextFixture, createTestbedHost, TestbedHostError, type HostRequestContextFixtureOptions, type TestbedControls, type TestbedHost, type TestbedHostOptions, type TestbedPortName, } from './host-testbed.js';
3
+ export { createHostRequestContextFixture, createTestbedHost, TestbedHostError, type HostRequestContextFixtureOptions, type TestbedControls, type TestbedHost, type TestbedHostOptions, type TestbedPortName, type TestbedRateLimitPolicy, } from './host-testbed.js';
3
4
  export { createHttpHostAdapter, type HttpFetchLike, type HttpHostAdapterOptions, type HttpRequestInit, type HttpResponseLike, type HttpTimeoutHandle, } from './http-host-adapter.js';
4
5
  export interface BlueprintFixtureOptions {
5
6
  blockLocks?: BlueprintBlockLock[];
@@ -19,6 +20,44 @@ export interface StudioConfigurationFixtureOptions {
19
20
  mode?: 'blueprint' | 'content' | 'model';
20
21
  sessionState?: 'editable' | 'read-only';
21
22
  }
23
+ export interface SchemaProfileVectorInstance {
24
+ value: unknown;
25
+ valid: boolean;
26
+ }
27
+ export interface SchemaProfileVectorInput {
28
+ expect: {
29
+ outcome: 'accepted' | 'rejected';
30
+ };
31
+ schema: unknown;
32
+ }
33
+ export interface SchemaProfileVectorInstanceResult {
34
+ diagnostic?: {
35
+ instancePath: string;
36
+ keyword: string;
37
+ };
38
+ value: unknown;
39
+ valid: boolean;
40
+ }
41
+ export type SchemaProfileVectorRunResult = {
42
+ instances: SchemaProfileVectorInstanceResult[];
43
+ outcome: 'accepted';
44
+ } | {
45
+ code: StudioSchemaProfileErrorCode;
46
+ outcome: 'rejected';
47
+ schemaPath: string;
48
+ };
49
+ /**
50
+ * Replay a portable `studio.profile/schema-property` vector against the
51
+ * reference implementation. Only each case's input `value` is read from the
52
+ * accepted expectation; expected verdicts and diagnostics are not consulted.
53
+ * Callers compare this independently produced outcome with the published
54
+ * `expect` member.
55
+ */
56
+ export declare function runSchemaProfileVector(vector: SchemaProfileVectorInput & {
57
+ expect: {
58
+ instances?: SchemaProfileVectorInstance[];
59
+ };
60
+ }): SchemaProfileVectorRunResult;
22
61
  export declare function createBlueprintFixture(options?: BlueprintFixtureOptions): BlueprintDocument;
23
62
  export declare function defineTestBlock(options: TestBlockOptions): BlockDefinition;
24
63
  export declare function createStudioConfigurationFixture(options?: StudioConfigurationFixtureOptions): StudioConfiguration;