@superbuilders/primer-tives 0.0.2 → 0.0.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,KAAK,EAAY,MAAM,iCAAiC,CAAA;AACtE,OAAO,KAAK,EAIX,WAAW,EAMX,MAAM,mCAAmC,CAAA;AAG1C,UAAU,YAAY;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAClE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACjE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACjE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAClE;AAiCD,QAAA,MAAM,cAAc,iCAAiC,CAAA;AACrD,QAAA,MAAM,YAAY,oBAAoB,CAAA;AAEtC,UAAU,MAAM,CAAC,IAAI,SAAS,KAAK,GAAG,KAAK;IAC1C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,aAAa,EAAE,SAAS,IAAI,EAAE,CAAA;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAA;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAA;CAC9B;AAED,UAAU,MAAM,CAAC,IAAI,SAAS,KAAK,GAAG,KAAK;IAC1C,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;CACpD;AA+CD,iBAAS,MAAM,CAAC,KAAK,CAAC,IAAI,SAAS,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAmb5E;AAED,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,CAAA;AAC/C,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,KAAK,EAAY,MAAM,iCAAiC,CAAA;AACtE,OAAO,KAAK,EAIX,WAAW,EAMX,MAAM,mCAAmC,CAAA;AAG1C,UAAU,YAAY;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAClE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACjE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACjE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAClE;AAkCD,QAAA,MAAM,cAAc,iCAAiC,CAAA;AACrD,QAAA,MAAM,YAAY,oBAAoB,CAAA;AAEtC,UAAU,MAAM,CAAC,IAAI,SAAS,KAAK,GAAG,KAAK;IAC1C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,aAAa,EAAE,SAAS,IAAI,EAAE,CAAA;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAA;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAA;CAC9B;AAED,UAAU,MAAM,CAAC,IAAI,SAAS,KAAK,GAAG,KAAK;IAC1C,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;CACpD;AA+CD,iBAAS,MAAM,CAAC,KAAK,CAAC,IAAI,SAAS,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAoc5E;AAED,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,CAAA;AAC/C,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,CAAA"}
package/dist/client.js CHANGED
@@ -268,6 +268,9 @@ function create(config) {
268
268
  }
269
269
  return execute({ kind: "interaction", submission: { type: "choice", selectedKeys } }, "interaction");
270
270
  },
271
+ timeout: function timeout() {
272
+ return execute({ kind: "timeout" }, "timeout");
273
+ },
271
274
  toJSON: poisonToJSON
272
275
  };
273
276
  }
@@ -280,6 +283,9 @@ function create(config) {
280
283
  submitText: function submitText(value) {
281
284
  return execute({ kind: "interaction", submission: { type: "text-entry", value } }, "interaction");
282
285
  },
286
+ timeout: function timeout() {
287
+ return execute({ kind: "timeout" }, "timeout");
288
+ },
283
289
  toJSON: poisonToJSON
284
290
  };
285
291
  }
@@ -307,6 +313,9 @@ function create(config) {
307
313
  submitText: function submitText(value) {
308
314
  return execute({ kind: "interaction", submission: { type: "extended-text", values: [value] } }, "interaction");
309
315
  },
316
+ timeout: function timeout() {
317
+ return execute({ kind: "timeout" }, "timeout");
318
+ },
310
319
  toJSON: poisonToJSON
311
320
  };
312
321
  }
@@ -328,6 +337,9 @@ function create(config) {
328
337
  }
329
338
  return execute({ kind: "interaction", submission: { type: "extended-text", values } }, "interaction");
330
339
  },
340
+ timeout: function timeout() {
341
+ return execute({ kind: "timeout" }, "timeout");
342
+ },
331
343
  toJSON: poisonToJSON
332
344
  };
333
345
  }
@@ -338,6 +350,10 @@ function create(config) {
338
350
  const submission = { type: "portable-custom", pciId, value };
339
351
  return execute({ kind: "interaction", submission }, "interaction");
340
352
  }
353
+ function timeout() {
354
+ log?.debug("pci timeout", { pciId });
355
+ return execute({ kind: "timeout" }, "timeout");
356
+ }
341
357
  return {
342
358
  phase: "interaction",
343
359
  kind: "portable-custom",
@@ -346,6 +362,7 @@ function create(config) {
346
362
  pciId,
347
363
  properties,
348
364
  submit,
365
+ timeout,
349
366
  toJSON: poisonToJSON
350
367
  };
351
368
  }
@@ -380,4 +397,4 @@ export {
380
397
  ADVANCE_PATH
381
398
  };
382
399
 
383
- //# debugId=B2799CD48726B75C64756E2164756E21
400
+ //# debugId=85D227CDC0814FAC64756E2164756E21
@@ -3,9 +3,9 @@
3
3
  "sources": ["../src/errors.ts", "../src/client.ts"],
4
4
  "sourcesContent": [
5
5
  "import * as errors from \"@superbuilders/errors\"\n\nconst ErrNetwork = errors.new(\"network\")\nconst ErrJsonParse = errors.new(\"json parse\")\nconst ErrUnsupportedPci = errors.new(\"unsupported pci\")\nconst ErrInvalidPublishableKey = errors.new(\"invalid publishable key\")\nconst ErrBadRequest = errors.new(\"bad request\")\nconst ErrServerError = errors.new(\"server error\")\nconst ErrTimeout = errors.new(\"timeout\")\nconst ErrForbidden = errors.new(\"forbidden\")\nconst ErrNotFound = errors.new(\"not found\")\nconst ErrConflict = errors.new(\"conflict\")\nconst ErrRateLimited = errors.new(\"rate limited\")\nconst ErrServiceUnavailable = errors.new(\"service unavailable\")\nconst ErrNotSerializable = errors.new(\n\t\"PrimerState is live in-memory state and must not be serialized or stored\"\n)\nconst ErrInvalidSubmission = errors.new(\"invalid submission\")\nconst ErrMalformedPublishableKey = errors.new(\"malformed publishable key\")\n\nexport {\n\tErrBadRequest,\n\tErrConflict,\n\tErrForbidden,\n\tErrInvalidPublishableKey,\n\tErrInvalidSubmission,\n\tErrMalformedPublishableKey,\n\tErrJsonParse,\n\tErrNetwork,\n\tErrNotFound,\n\tErrNotSerializable,\n\tErrRateLimited,\n\tErrServerError,\n\tErrServiceUnavailable,\n\tErrTimeout,\n\tErrUnsupportedPci\n}\n",
6
- "import * as errors from \"@superbuilders/errors\"\nimport {\n\tErrBadRequest,\n\tErrConflict,\n\tErrForbidden,\n\tErrInvalidPublishableKey,\n\tErrJsonParse,\n\tErrMalformedPublishableKey,\n\tErrNetwork,\n\tErrNotFound,\n\tErrNotSerializable,\n\tErrRateLimited,\n\tErrServerError,\n\tErrServiceUnavailable,\n\tErrTimeout,\n\tErrUnsupportedPci,\n\tErrInvalidSubmission\n} from \"@superbuilders/primer-tives/errors\"\nimport type { PciId, PciValue } from \"@superbuilders/primer-tives/pci\"\nimport type {\n\tErroredState,\n\tPciInteraction,\n\tPciInteractionState,\n\tPrimerState,\n\tRendererChoice,\n\tRendererCorrectAnswer,\n\tRendererInteraction,\n\tRendererStimulus,\n\tRendererSubmission\n} from \"@superbuilders/primer-tives/types\"\nimport type { ContentInline } from \"@superbuilders/primer-tives/content\"\n\ninterface PrimerLogger {\n\tdebug(message: string, attributes?: Record<string, unknown>): void\n\tinfo(message: string, attributes?: Record<string, unknown>): void\n\twarn(message: string, attributes?: Record<string, unknown>): void\n\terror(message: string, attributes?: Record<string, unknown>): void\n}\n\ntype WireIntent<Pcis extends PciId = PciId> =\n\t| { kind: \"observation\" }\n\t| { kind: \"interaction\"; submission: RendererSubmission<Pcis> }\n\ntype WireResult<Pcis extends PciId = PciId> =\n\t| {\n\t\t\toutcome: \"advanced\"\n\t\t\tstimulus: RendererStimulus | null\n\t\t\tinteraction: RendererInteraction<Pcis> | null\n\t }\n\t| {\n\t\t\toutcome: \"submitted\"\n\t\t\tstimulus: RendererStimulus | null\n\t\t\tinteraction: RendererInteraction<Pcis>\n\t\t\tsubmission: RendererSubmission<Pcis>\n\t\t\tisCorrect: boolean\n\t\t\tfeedbackContent: ContentInline[]\n\t\t\tcorrectAnswer: RendererCorrectAnswer | null\n\t }\n\t| { outcome: \"completed\" }\n\ninterface WireRequestBody<Pcis extends PciId = PciId> {\n\tstudentId: string\n\tsupportedPcis: readonly PciId[]\n\tintent: WireIntent<Pcis>\n}\n\ntype TransportResult<Pcis extends PciId = PciId> =\n\t| { ok: true; data: WireResult<Pcis> }\n\t| { ok: false; error: Error }\n\nconst DEFAULT_ORIGIN = \"https://sb-primer.vercel.app\"\nconst ADVANCE_PATH = \"/api/v0/advance\"\n\ninterface Config<Pcis extends PciId = PciId> {\n\treadonly publishableKey: string\n\treadonly supportedPcis: readonly Pcis[]\n\treadonly origin?: string\n\treadonly fetch?: typeof globalThis.fetch\n\treadonly abort?: AbortController\n\treadonly logger?: PrimerLogger\n}\n\ninterface Client<Pcis extends PciId = PciId> {\n\tstart(studentId: string): Promise<PrimerState<Pcis>>\n}\n\nfunction poisonToJSON(): never {\n\t// biome-ignore lint/plugin: intentional toJSON trap — logging here would spam on every accidental serialize attempt\n\tthrow ErrNotSerializable\n}\n\nfunction httpSentinel(status: number): Error {\n\tif (status === 400) {\n\t\treturn ErrBadRequest\n\t}\n\tif (status === 401) {\n\t\treturn ErrInvalidPublishableKey\n\t}\n\tif (status === 403) {\n\t\treturn ErrForbidden\n\t}\n\tif (status === 404) {\n\t\treturn ErrNotFound\n\t}\n\tif (status === 409) {\n\t\treturn ErrConflict\n\t}\n\tif (status === 422) {\n\t\treturn ErrUnsupportedPci\n\t}\n\tif (status === 429) {\n\t\treturn ErrRateLimited\n\t}\n\tif (status === 502 || status === 503 || status === 504) {\n\t\treturn ErrServiceUnavailable\n\t}\n\treturn ErrServerError\n}\n\nfunction isAbortError(err: unknown): boolean {\n\tif (err instanceof DOMException && err.name === \"AbortError\") {\n\t\treturn true\n\t}\n\tif (err instanceof DOMException && err.name === \"TimeoutError\") {\n\t\treturn true\n\t}\n\treturn false\n}\n\nconst PK_PREFIX = \"pk_\"\n\nfunction create<const Pcis extends PciId>(config: Config<Pcis>): Client<Pcis> {\n\tconst configFetch = config.fetch\n\tconst fetchFn = configFetch ? configFetch : globalThis.fetch\n\tconst log = config.logger\n\n\tif (!config.publishableKey.startsWith(PK_PREFIX)) {\n\t\tlog?.error(\"malformed publishable key\", { prefix: PK_PREFIX })\n\t\t// biome-ignore lint/plugin: client SDK — log is optional config.logger, not slog\n\t\tthrow errors.wrap(ErrMalformedPublishableKey, `key must start with '${PK_PREFIX}'`)\n\t}\n\n\tfunction transportSignal(): AbortSignal | undefined {\n\t\tif (config.abort) {\n\t\t\treturn config.abort.signal\n\t\t}\n\t\treturn undefined\n\t}\n\n\tasync function transport(body: WireRequestBody<Pcis>): Promise<TransportResult<Pcis>> {\n\t\tlog?.debug(\"transport request\", {\n\t\t\tstudentId: body.studentId,\n\t\t\tintentKind: body.intent.kind\n\t\t})\n\n\t\tconst url = config.origin ? `${config.origin}${ADVANCE_PATH}` : ADVANCE_PATH\n\t\tconst fetchResult = await fetchFn(url, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\"X-Primer-Publishable-Key\": config.publishableKey\n\t\t\t},\n\t\t\tbody: JSON.stringify(body),\n\t\t\tsignal: transportSignal()\n\t\t}).then(\n\t\t\tfunction ok(r: Response) {\n\t\t\t\treturn { ok: true, response: r } as const\n\t\t\t},\n\t\t\tfunction fail(err: Error) {\n\t\t\t\treturn { ok: false, error: err } as const\n\t\t\t}\n\t\t)\n\n\t\tif (!fetchResult.ok) {\n\t\t\tif (isAbortError(fetchResult.error)) {\n\t\t\t\tlog?.error(\"transport timeout\", {\n\t\t\t\t\tstudentId: body.studentId,\n\t\t\t\t\tintentKind: body.intent.kind\n\t\t\t\t})\n\t\t\t\treturn { ok: false, error: errors.wrap(ErrTimeout, fetchResult.error.message) }\n\t\t\t}\n\t\t\tlog?.error(\"transport network error\", {\n\t\t\t\tstudentId: body.studentId,\n\t\t\t\terror: fetchResult.error\n\t\t\t})\n\t\t\treturn { ok: false, error: errors.wrap(ErrNetwork, fetchResult.error.message) }\n\t\t}\n\n\t\tconst res = fetchResult.response\n\n\t\tif (!res.ok) {\n\t\t\tconst text = await res.text().catch(function fallback() {\n\t\t\t\treturn \"\"\n\t\t\t})\n\t\t\tconst sentinel = httpSentinel(res.status)\n\t\t\tlog?.error(\"transport http error\", {\n\t\t\t\tstudentId: body.studentId,\n\t\t\t\tstatus: res.status\n\t\t\t})\n\t\t\treturn { ok: false, error: errors.wrap(sentinel, text) }\n\t\t}\n\n\t\tconst jsonResult = await res.json().then(\n\t\t\tfunction ok(data: WireResult<Pcis>) {\n\t\t\t\treturn { ok: true, data } as const\n\t\t\t},\n\t\t\tfunction fail(err: Error) {\n\t\t\t\treturn { ok: false, error: err } as const\n\t\t\t}\n\t\t)\n\n\t\tif (!jsonResult.ok) {\n\t\t\tlog?.error(\"transport json parse failed\", {\n\t\t\t\tstudentId: body.studentId,\n\t\t\t\terror: jsonResult.error\n\t\t\t})\n\t\t\treturn { ok: false, error: errors.wrap(ErrJsonParse, jsonResult.error.message) }\n\t\t}\n\n\t\tlog?.debug(\"transport success\", {\n\t\t\tstudentId: body.studentId,\n\t\t\tintentKind: body.intent.kind\n\t\t})\n\n\t\treturn { ok: true, data: jsonResult.data }\n\t}\n\n\tfunction makeSession(studentId: string) {\n\t\tfunction resolve(result: WireResult<Pcis>): PrimerState<Pcis> {\n\t\t\tswitch (result.outcome) {\n\t\t\t\tcase \"advanced\":\n\t\t\t\t\treturn fromAdvanced(result.stimulus, result.interaction)\n\t\t\t\tcase \"submitted\":\n\t\t\t\t\treturn feedbackState(\n\t\t\t\t\t\tresult.stimulus,\n\t\t\t\t\t\tresult.interaction,\n\t\t\t\t\t\tresult.submission,\n\t\t\t\t\t\tresult.isCorrect,\n\t\t\t\t\t\tresult.feedbackContent,\n\t\t\t\t\t\tresult.correctAnswer\n\t\t\t\t\t)\n\t\t\t\tcase \"completed\":\n\t\t\t\t\treturn { phase: \"completed\", toJSON: poisonToJSON }\n\t\t\t}\n\t\t}\n\n\t\tfunction errored(\n\t\t\terror: Error,\n\t\t\tfailedPhase: \"observation\" | \"interaction\",\n\t\t\tintent: WireIntent<Pcis>\n\t\t): ErroredState<Pcis> {\n\t\t\treturn {\n\t\t\t\tphase: \"errored\",\n\t\t\t\terror,\n\t\t\t\tfailedPhase,\n\t\t\t\tretry: function retry() {\n\t\t\t\t\tlog?.debug(\"retrying from errored state\", { failedPhase })\n\t\t\t\t\treturn execute(intent, failedPhase)\n\t\t\t\t},\n\t\t\t\ttoJSON: poisonToJSON\n\t\t\t}\n\t\t}\n\n\t\tasync function execute(\n\t\t\tintent: WireIntent<Pcis>,\n\t\t\tphase: \"observation\" | \"interaction\"\n\t\t): Promise<PrimerState<Pcis>> {\n\t\t\tconst body: WireRequestBody<Pcis> = {\n\t\t\t\tstudentId,\n\t\t\t\tsupportedPcis: config.supportedPcis,\n\t\t\t\tintent\n\t\t\t}\n\n\t\t\tconst result = await transport(body)\n\t\t\tif (!result.ok) {\n\t\t\t\treturn errored(result.error, phase, intent)\n\t\t\t}\n\n\t\t\treturn resolve(result.data)\n\t\t}\n\n\t\tfunction isPciSupported(pciId: string): boolean {\n\t\t\tfor (const id of config.supportedPcis) {\n\t\t\t\tif (id === pciId) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false\n\t\t}\n\n\t\tfunction fromAdvanced(\n\t\t\tstimulus: RendererStimulus | null,\n\t\t\tinteraction: RendererInteraction<Pcis> | null\n\t\t): PrimerState<Pcis> {\n\t\t\tif (interaction === null) {\n\t\t\t\treturn observationState(stimulus)\n\t\t\t}\n\t\t\tif (interaction.type === \"portable-custom\") {\n\t\t\t\tif (!isPciSupported(interaction.pciId)) {\n\t\t\t\t\tlog?.error(\"unsupported pci in frame\", { pciId: interaction.pciId })\n\t\t\t\t\treturn {\n\t\t\t\t\t\tphase: \"fatal\",\n\t\t\t\t\t\terror: errors.wrap(ErrUnsupportedPci, `pci '${interaction.pciId}'`),\n\t\t\t\t\t\ttoJSON: poisonToJSON\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn pendingInteractionState(stimulus, interaction)\n\t\t}\n\n\t\tfunction observationState(stimulus: RendererStimulus | null): PrimerState<Pcis> {\n\t\t\treturn {\n\t\t\t\tphase: \"observation\",\n\t\t\t\tstimulus,\n\t\t\t\tadvance: function advance() {\n\t\t\t\t\treturn execute({ kind: \"observation\" }, \"observation\")\n\t\t\t\t},\n\t\t\t\ttoJSON: poisonToJSON\n\t\t\t}\n\t\t}\n\n\t\tfunction pendingInteractionState(\n\t\t\tstimulus: RendererStimulus | null,\n\t\t\tinteraction: RendererInteraction<Pcis>\n\t\t): PrimerState<Pcis> {\n\t\t\tswitch (interaction.type) {\n\t\t\t\tcase \"choice\":\n\t\t\t\t\treturn choiceState(\n\t\t\t\t\t\tstimulus,\n\t\t\t\t\t\tinteraction,\n\t\t\t\t\t\tinteraction.options,\n\t\t\t\t\t\tinteraction.maxChoices,\n\t\t\t\t\t\tinteraction.minChoices\n\t\t\t\t\t)\n\t\t\t\tcase \"text-entry\":\n\t\t\t\t\treturn textEntryState(stimulus, interaction)\n\t\t\t\tcase \"extended-text\":\n\t\t\t\t\treturn extendedTextState(stimulus, interaction)\n\t\t\t\tcase \"portable-custom\":\n\t\t\t\t\treturn pciInteractionState(stimulus, interaction)\n\t\t\t}\n\t\t}\n\n\t\tfunction findUnknownKey(selectedKeys: string[], options: RendererChoice[]): string | null {\n\t\t\tconst optionIds = new Set(\n\t\t\t\toptions.map(function getId(o) {\n\t\t\t\t\treturn o.identifier\n\t\t\t\t})\n\t\t\t)\n\t\t\tfor (const key of selectedKeys) {\n\t\t\t\tif (!optionIds.has(key)) {\n\t\t\t\t\treturn key\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null\n\t\t}\n\n\t\tfunction validateChoiceSubmission(\n\t\t\tselectedKeys: string[],\n\t\t\toptions: RendererChoice[],\n\t\t\tmaxChoices: number,\n\t\t\tminChoices: number\n\t\t): Error | null {\n\t\t\tif (selectedKeys.length < minChoices) {\n\t\t\t\tlog?.error(\"choice submit below minChoices\", { selectedKeys, minChoices })\n\t\t\t\treturn errors.wrap(ErrInvalidSubmission, `need at least ${minChoices} selections`)\n\t\t\t}\n\t\t\tif (selectedKeys.length > maxChoices) {\n\t\t\t\tlog?.error(\"choice submit above maxChoices\", { selectedKeys, maxChoices })\n\t\t\t\treturn errors.wrap(ErrInvalidSubmission, `at most ${maxChoices} selections`)\n\t\t\t}\n\t\t\tconst uniqueKeys = new Set(selectedKeys)\n\t\t\tif (uniqueKeys.size !== selectedKeys.length) {\n\t\t\t\tlog?.error(\"choice submit has duplicates\", { selectedKeys })\n\t\t\t\treturn errors.wrap(ErrInvalidSubmission, \"duplicate selections\")\n\t\t\t}\n\t\t\tconst unknownKey = findUnknownKey(selectedKeys, options)\n\t\t\tif (unknownKey) {\n\t\t\t\tlog?.error(\"choice submit has unknown key\", { key: unknownKey })\n\t\t\t\treturn errors.wrap(ErrInvalidSubmission, `unknown option '${unknownKey}'`)\n\t\t\t}\n\t\t\treturn null\n\t\t}\n\n\t\tfunction choiceState(\n\t\t\tstimulus: RendererStimulus | null,\n\t\t\tinteraction: Extract<RendererInteraction<Pcis>, { type: \"choice\" }>,\n\t\t\toptions: RendererChoice[],\n\t\t\tmaxChoices: number,\n\t\t\tminChoices: number\n\t\t): PrimerState<Pcis> {\n\t\t\treturn {\n\t\t\t\tphase: \"interaction\",\n\t\t\t\tkind: \"choice\",\n\t\t\t\tstimulus,\n\t\t\t\tinteraction,\n\t\t\t\toptions,\n\t\t\t\tmaxChoices,\n\t\t\t\tminChoices,\n\t\t\t\tsubmitChoice: function submitChoice(selectedKeys: string[]) {\n\t\t\t\t\tconst validationError = validateChoiceSubmission(\n\t\t\t\t\t\tselectedKeys,\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\tmaxChoices,\n\t\t\t\t\t\tminChoices\n\t\t\t\t\t)\n\t\t\t\t\tif (validationError) {\n\t\t\t\t\t\treturn Promise.resolve(\n\t\t\t\t\t\t\terrored(validationError, \"interaction\", {\n\t\t\t\t\t\t\t\tkind: \"interaction\",\n\t\t\t\t\t\t\t\tsubmission: { type: \"choice\", selectedKeys }\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\treturn execute(\n\t\t\t\t\t\t{ kind: \"interaction\", submission: { type: \"choice\", selectedKeys } },\n\t\t\t\t\t\t\"interaction\"\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\ttoJSON: poisonToJSON\n\t\t\t}\n\t\t}\n\n\t\tfunction textEntryState(\n\t\t\tstimulus: RendererStimulus | null,\n\t\t\tinteraction: Extract<RendererInteraction<Pcis>, { type: \"text-entry\" }>\n\t\t): PrimerState<Pcis> {\n\t\t\treturn {\n\t\t\t\tphase: \"interaction\",\n\t\t\t\tkind: \"text-entry\",\n\t\t\t\tstimulus,\n\t\t\t\tinteraction,\n\t\t\t\tsubmitText: function submitText(value: string) {\n\t\t\t\t\treturn execute(\n\t\t\t\t\t\t{ kind: \"interaction\", submission: { type: \"text-entry\", value } },\n\t\t\t\t\t\t\"interaction\"\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\ttoJSON: poisonToJSON\n\t\t\t}\n\t\t}\n\n\t\tfunction validateExtendedTextSubmission(\n\t\t\tvalues: string[],\n\t\t\tminStrings: number,\n\t\t\tmaxStrings: number\n\t\t): Error | null {\n\t\t\tif (values.length < minStrings) {\n\t\t\t\tlog?.error(\"extended-text submit below minStrings\", { count: values.length, minStrings })\n\t\t\t\treturn errors.wrap(ErrInvalidSubmission, `need at least ${minStrings} values`)\n\t\t\t}\n\t\t\tif (values.length > maxStrings) {\n\t\t\t\tlog?.error(\"extended-text submit above maxStrings\", { count: values.length, maxStrings })\n\t\t\t\treturn errors.wrap(ErrInvalidSubmission, `at most ${maxStrings} values`)\n\t\t\t}\n\t\t\treturn null\n\t\t}\n\n\t\tfunction extendedTextState(\n\t\t\tstimulus: RendererStimulus | null,\n\t\t\tinteraction: RendererInteraction<Pcis> & { type: \"extended-text\" }\n\t\t): PrimerState<Pcis> {\n\t\t\tconst maxStrings = interaction.maxStrings\n\t\t\tconst minStrings = interaction.minStrings\n\t\t\tif (maxStrings === 1) {\n\t\t\t\treturn {\n\t\t\t\t\tphase: \"interaction\",\n\t\t\t\t\tkind: \"extended-text\",\n\t\t\t\t\tcardinality: \"single\",\n\t\t\t\t\tstimulus,\n\t\t\t\t\tinteraction,\n\t\t\t\t\tsubmitText: function submitText(value: string) {\n\t\t\t\t\t\treturn execute(\n\t\t\t\t\t\t\t{ kind: \"interaction\", submission: { type: \"extended-text\", values: [value] } },\n\t\t\t\t\t\t\t\"interaction\"\n\t\t\t\t\t\t)\n\t\t\t\t\t},\n\t\t\t\t\ttoJSON: poisonToJSON\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tphase: \"interaction\",\n\t\t\t\tkind: \"extended-text\",\n\t\t\t\tcardinality: \"multiple\",\n\t\t\t\tstimulus,\n\t\t\t\tinteraction,\n\t\t\t\tmaxStrings,\n\t\t\t\tminStrings,\n\t\t\t\tsubmitTexts: function submitTexts(values: string[]) {\n\t\t\t\t\tconst validationError = validateExtendedTextSubmission(values, minStrings, maxStrings)\n\t\t\t\t\tif (validationError) {\n\t\t\t\t\t\treturn Promise.resolve(\n\t\t\t\t\t\t\terrored(validationError, \"interaction\", {\n\t\t\t\t\t\t\t\tkind: \"interaction\",\n\t\t\t\t\t\t\t\tsubmission: { type: \"extended-text\", values }\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\treturn execute(\n\t\t\t\t\t\t{ kind: \"interaction\", submission: { type: \"extended-text\", values } },\n\t\t\t\t\t\t\"interaction\"\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\ttoJSON: poisonToJSON\n\t\t\t}\n\t\t}\n\n\t\t// Safe cast: TS cannot verify mapped-union construction from generic Pcis.\n\t\t// The input `interaction: PciInteraction<Pcis>` guarantees pciId↔properties\n\t\t// correlation; destructuring loses TS tracking but runtime is correct.\n\t\tfunction pciInteractionState(\n\t\t\tstimulus: RendererStimulus | null,\n\t\t\tinteraction: PciInteraction<Pcis>\n\t\t): PciInteractionState<Pcis> {\n\t\t\tconst { pciId, properties } = interaction\n\t\t\tfunction submit(value: PciValue<typeof pciId>): Promise<PrimerState<Pcis>> {\n\t\t\t\tlog?.debug(\"pci submit\", { pciId })\n\t\t\t\tconst submission = { type: \"portable-custom\" as const, pciId, value }\n\t\t\t\treturn execute({ kind: \"interaction\", submission }, \"interaction\")\n\t\t\t}\n\t\t\t// biome-ignore lint/plugin: TS cannot verify mapped-union construction from generic Pcis — pciId↔properties correlation preserved by input\n\t\t\treturn {\n\t\t\t\tphase: \"interaction\",\n\t\t\t\tkind: \"portable-custom\",\n\t\t\t\tstimulus,\n\t\t\t\tinteraction,\n\t\t\t\tpciId,\n\t\t\t\tproperties,\n\t\t\t\tsubmit,\n\t\t\t\ttoJSON: poisonToJSON\n\t\t\t} as PciInteractionState<Pcis>\n\t\t}\n\n\t\tfunction feedbackState(\n\t\t\tstimulus: RendererStimulus | null,\n\t\t\tinteraction: RendererInteraction<Pcis>,\n\t\t\tsubmission: RendererSubmission<Pcis>,\n\t\t\tisCorrect: boolean,\n\t\t\tfeedbackContent: ContentInline[],\n\t\t\tcorrectAnswer: RendererCorrectAnswer | null\n\t\t): PrimerState<Pcis> {\n\t\t\treturn {\n\t\t\t\tphase: \"feedback\",\n\t\t\t\tstimulus,\n\t\t\t\tinteraction,\n\t\t\t\tsubmission,\n\t\t\t\tisCorrect,\n\t\t\t\tfeedbackContent,\n\t\t\t\tcorrectAnswer,\n\t\t\t\tadvance: function advance() {\n\t\t\t\t\treturn execute({ kind: \"observation\" }, \"observation\")\n\t\t\t\t},\n\t\t\t\ttoJSON: poisonToJSON\n\t\t\t}\n\t\t}\n\n\t\treturn { execute }\n\t}\n\n\treturn {\n\t\tasync start(studentId: string): Promise<PrimerState<Pcis>> {\n\t\t\tlog?.debug(\"start\", { studentId })\n\t\t\tconst s = makeSession(studentId)\n\t\t\treturn s.execute({ kind: \"observation\" }, \"observation\")\n\t\t}\n\t}\n}\n\nexport { ADVANCE_PATH, DEFAULT_ORIGIN, create }\nexport type { Client, Config, PrimerLogger }\n"
6
+ "import * as errors from \"@superbuilders/errors\"\nimport {\n\tErrBadRequest,\n\tErrConflict,\n\tErrForbidden,\n\tErrInvalidPublishableKey,\n\tErrJsonParse,\n\tErrMalformedPublishableKey,\n\tErrNetwork,\n\tErrNotFound,\n\tErrNotSerializable,\n\tErrRateLimited,\n\tErrServerError,\n\tErrServiceUnavailable,\n\tErrTimeout,\n\tErrUnsupportedPci,\n\tErrInvalidSubmission\n} from \"@superbuilders/primer-tives/errors\"\nimport type { PciId, PciValue } from \"@superbuilders/primer-tives/pci\"\nimport type {\n\tErroredState,\n\tPciInteraction,\n\tPciInteractionState,\n\tPrimerState,\n\tRendererChoice,\n\tRendererCorrectAnswer,\n\tRendererInteraction,\n\tRendererStimulus,\n\tRendererSubmission\n} from \"@superbuilders/primer-tives/types\"\nimport type { ContentInline } from \"@superbuilders/primer-tives/content\"\n\ninterface PrimerLogger {\n\tdebug(message: string, attributes?: Record<string, unknown>): void\n\tinfo(message: string, attributes?: Record<string, unknown>): void\n\twarn(message: string, attributes?: Record<string, unknown>): void\n\terror(message: string, attributes?: Record<string, unknown>): void\n}\n\ntype WireIntent<Pcis extends PciId = PciId> =\n\t| { kind: \"observation\" }\n\t| { kind: \"interaction\"; submission: RendererSubmission<Pcis> }\n\t| { kind: \"timeout\" }\n\ntype WireResult<Pcis extends PciId = PciId> =\n\t| {\n\t\t\toutcome: \"advanced\"\n\t\t\tstimulus: RendererStimulus | null\n\t\t\tinteraction: RendererInteraction<Pcis> | null\n\t }\n\t| {\n\t\t\toutcome: \"submitted\"\n\t\t\tstimulus: RendererStimulus | null\n\t\t\tinteraction: RendererInteraction<Pcis>\n\t\t\tsubmission: RendererSubmission<Pcis>\n\t\t\tisCorrect: boolean\n\t\t\tfeedbackContent: ContentInline[]\n\t\t\tcorrectAnswer: RendererCorrectAnswer | null\n\t }\n\t| { outcome: \"completed\" }\n\ninterface WireRequestBody<Pcis extends PciId = PciId> {\n\tstudentId: string\n\tsupportedPcis: readonly PciId[]\n\tintent: WireIntent<Pcis>\n}\n\ntype TransportResult<Pcis extends PciId = PciId> =\n\t| { ok: true; data: WireResult<Pcis> }\n\t| { ok: false; error: Error }\n\nconst DEFAULT_ORIGIN = \"https://sb-primer.vercel.app\"\nconst ADVANCE_PATH = \"/api/v0/advance\"\n\ninterface Config<Pcis extends PciId = PciId> {\n\treadonly publishableKey: string\n\treadonly supportedPcis: readonly Pcis[]\n\treadonly origin?: string\n\treadonly fetch?: typeof globalThis.fetch\n\treadonly abort?: AbortController\n\treadonly logger?: PrimerLogger\n}\n\ninterface Client<Pcis extends PciId = PciId> {\n\tstart(studentId: string): Promise<PrimerState<Pcis>>\n}\n\nfunction poisonToJSON(): never {\n\t// biome-ignore lint/plugin: intentional toJSON trap — logging here would spam on every accidental serialize attempt\n\tthrow ErrNotSerializable\n}\n\nfunction httpSentinel(status: number): Error {\n\tif (status === 400) {\n\t\treturn ErrBadRequest\n\t}\n\tif (status === 401) {\n\t\treturn ErrInvalidPublishableKey\n\t}\n\tif (status === 403) {\n\t\treturn ErrForbidden\n\t}\n\tif (status === 404) {\n\t\treturn ErrNotFound\n\t}\n\tif (status === 409) {\n\t\treturn ErrConflict\n\t}\n\tif (status === 422) {\n\t\treturn ErrUnsupportedPci\n\t}\n\tif (status === 429) {\n\t\treturn ErrRateLimited\n\t}\n\tif (status === 502 || status === 503 || status === 504) {\n\t\treturn ErrServiceUnavailable\n\t}\n\treturn ErrServerError\n}\n\nfunction isAbortError(err: unknown): boolean {\n\tif (err instanceof DOMException && err.name === \"AbortError\") {\n\t\treturn true\n\t}\n\tif (err instanceof DOMException && err.name === \"TimeoutError\") {\n\t\treturn true\n\t}\n\treturn false\n}\n\nconst PK_PREFIX = \"pk_\"\n\nfunction create<const Pcis extends PciId>(config: Config<Pcis>): Client<Pcis> {\n\tconst configFetch = config.fetch\n\tconst fetchFn = configFetch ? configFetch : globalThis.fetch\n\tconst log = config.logger\n\n\tif (!config.publishableKey.startsWith(PK_PREFIX)) {\n\t\tlog?.error(\"malformed publishable key\", { prefix: PK_PREFIX })\n\t\t// biome-ignore lint/plugin: client SDK — log is optional config.logger, not slog\n\t\tthrow errors.wrap(ErrMalformedPublishableKey, `key must start with '${PK_PREFIX}'`)\n\t}\n\n\tfunction transportSignal(): AbortSignal | undefined {\n\t\tif (config.abort) {\n\t\t\treturn config.abort.signal\n\t\t}\n\t\treturn undefined\n\t}\n\n\tasync function transport(body: WireRequestBody<Pcis>): Promise<TransportResult<Pcis>> {\n\t\tlog?.debug(\"transport request\", {\n\t\t\tstudentId: body.studentId,\n\t\t\tintentKind: body.intent.kind\n\t\t})\n\n\t\tconst url = config.origin ? `${config.origin}${ADVANCE_PATH}` : ADVANCE_PATH\n\t\tconst fetchResult = await fetchFn(url, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\"X-Primer-Publishable-Key\": config.publishableKey\n\t\t\t},\n\t\t\tbody: JSON.stringify(body),\n\t\t\tsignal: transportSignal()\n\t\t}).then(\n\t\t\tfunction ok(r: Response) {\n\t\t\t\treturn { ok: true, response: r } as const\n\t\t\t},\n\t\t\tfunction fail(err: Error) {\n\t\t\t\treturn { ok: false, error: err } as const\n\t\t\t}\n\t\t)\n\n\t\tif (!fetchResult.ok) {\n\t\t\tif (isAbortError(fetchResult.error)) {\n\t\t\t\tlog?.error(\"transport timeout\", {\n\t\t\t\t\tstudentId: body.studentId,\n\t\t\t\t\tintentKind: body.intent.kind\n\t\t\t\t})\n\t\t\t\treturn { ok: false, error: errors.wrap(ErrTimeout, fetchResult.error.message) }\n\t\t\t}\n\t\t\tlog?.error(\"transport network error\", {\n\t\t\t\tstudentId: body.studentId,\n\t\t\t\terror: fetchResult.error\n\t\t\t})\n\t\t\treturn { ok: false, error: errors.wrap(ErrNetwork, fetchResult.error.message) }\n\t\t}\n\n\t\tconst res = fetchResult.response\n\n\t\tif (!res.ok) {\n\t\t\tconst text = await res.text().catch(function fallback() {\n\t\t\t\treturn \"\"\n\t\t\t})\n\t\t\tconst sentinel = httpSentinel(res.status)\n\t\t\tlog?.error(\"transport http error\", {\n\t\t\t\tstudentId: body.studentId,\n\t\t\t\tstatus: res.status\n\t\t\t})\n\t\t\treturn { ok: false, error: errors.wrap(sentinel, text) }\n\t\t}\n\n\t\tconst jsonResult = await res.json().then(\n\t\t\tfunction ok(data: WireResult<Pcis>) {\n\t\t\t\treturn { ok: true, data } as const\n\t\t\t},\n\t\t\tfunction fail(err: Error) {\n\t\t\t\treturn { ok: false, error: err } as const\n\t\t\t}\n\t\t)\n\n\t\tif (!jsonResult.ok) {\n\t\t\tlog?.error(\"transport json parse failed\", {\n\t\t\t\tstudentId: body.studentId,\n\t\t\t\terror: jsonResult.error\n\t\t\t})\n\t\t\treturn { ok: false, error: errors.wrap(ErrJsonParse, jsonResult.error.message) }\n\t\t}\n\n\t\tlog?.debug(\"transport success\", {\n\t\t\tstudentId: body.studentId,\n\t\t\tintentKind: body.intent.kind\n\t\t})\n\n\t\treturn { ok: true, data: jsonResult.data }\n\t}\n\n\tfunction makeSession(studentId: string) {\n\t\tfunction resolve(result: WireResult<Pcis>): PrimerState<Pcis> {\n\t\t\tswitch (result.outcome) {\n\t\t\t\tcase \"advanced\":\n\t\t\t\t\treturn fromAdvanced(result.stimulus, result.interaction)\n\t\t\t\tcase \"submitted\":\n\t\t\t\t\treturn feedbackState(\n\t\t\t\t\t\tresult.stimulus,\n\t\t\t\t\t\tresult.interaction,\n\t\t\t\t\t\tresult.submission,\n\t\t\t\t\t\tresult.isCorrect,\n\t\t\t\t\t\tresult.feedbackContent,\n\t\t\t\t\t\tresult.correctAnswer\n\t\t\t\t\t)\n\t\t\t\tcase \"completed\":\n\t\t\t\t\treturn { phase: \"completed\", toJSON: poisonToJSON }\n\t\t\t}\n\t\t}\n\n\t\tfunction errored(\n\t\t\terror: Error,\n\t\t\tfailedPhase: \"observation\" | \"interaction\" | \"timeout\",\n\t\t\tintent: WireIntent<Pcis>\n\t\t): ErroredState<Pcis> {\n\t\t\treturn {\n\t\t\t\tphase: \"errored\",\n\t\t\t\terror,\n\t\t\t\tfailedPhase,\n\t\t\t\tretry: function retry() {\n\t\t\t\t\tlog?.debug(\"retrying from errored state\", { failedPhase })\n\t\t\t\t\treturn execute(intent, failedPhase)\n\t\t\t\t},\n\t\t\t\ttoJSON: poisonToJSON\n\t\t\t}\n\t\t}\n\n\t\tasync function execute(\n\t\t\tintent: WireIntent<Pcis>,\n\t\t\tphase: \"observation\" | \"interaction\" | \"timeout\"\n\t\t): Promise<PrimerState<Pcis>> {\n\t\t\tconst body: WireRequestBody<Pcis> = {\n\t\t\t\tstudentId,\n\t\t\t\tsupportedPcis: config.supportedPcis,\n\t\t\t\tintent\n\t\t\t}\n\n\t\t\tconst result = await transport(body)\n\t\t\tif (!result.ok) {\n\t\t\t\treturn errored(result.error, phase, intent)\n\t\t\t}\n\n\t\t\treturn resolve(result.data)\n\t\t}\n\n\t\tfunction isPciSupported(pciId: string): boolean {\n\t\t\tfor (const id of config.supportedPcis) {\n\t\t\t\tif (id === pciId) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false\n\t\t}\n\n\t\tfunction fromAdvanced(\n\t\t\tstimulus: RendererStimulus | null,\n\t\t\tinteraction: RendererInteraction<Pcis> | null\n\t\t): PrimerState<Pcis> {\n\t\t\tif (interaction === null) {\n\t\t\t\treturn observationState(stimulus)\n\t\t\t}\n\t\t\tif (interaction.type === \"portable-custom\") {\n\t\t\t\tif (!isPciSupported(interaction.pciId)) {\n\t\t\t\t\tlog?.error(\"unsupported pci in frame\", { pciId: interaction.pciId })\n\t\t\t\t\treturn {\n\t\t\t\t\t\tphase: \"fatal\",\n\t\t\t\t\t\terror: errors.wrap(ErrUnsupportedPci, `pci '${interaction.pciId}'`),\n\t\t\t\t\t\ttoJSON: poisonToJSON\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn pendingInteractionState(stimulus, interaction)\n\t\t}\n\n\t\tfunction observationState(stimulus: RendererStimulus | null): PrimerState<Pcis> {\n\t\t\treturn {\n\t\t\t\tphase: \"observation\",\n\t\t\t\tstimulus,\n\t\t\t\tadvance: function advance() {\n\t\t\t\t\treturn execute({ kind: \"observation\" }, \"observation\")\n\t\t\t\t},\n\t\t\t\ttoJSON: poisonToJSON\n\t\t\t}\n\t\t}\n\n\t\tfunction pendingInteractionState(\n\t\t\tstimulus: RendererStimulus | null,\n\t\t\tinteraction: RendererInteraction<Pcis>\n\t\t): PrimerState<Pcis> {\n\t\t\tswitch (interaction.type) {\n\t\t\t\tcase \"choice\":\n\t\t\t\t\treturn choiceState(\n\t\t\t\t\t\tstimulus,\n\t\t\t\t\t\tinteraction,\n\t\t\t\t\t\tinteraction.options,\n\t\t\t\t\t\tinteraction.maxChoices,\n\t\t\t\t\t\tinteraction.minChoices\n\t\t\t\t\t)\n\t\t\t\tcase \"text-entry\":\n\t\t\t\t\treturn textEntryState(stimulus, interaction)\n\t\t\t\tcase \"extended-text\":\n\t\t\t\t\treturn extendedTextState(stimulus, interaction)\n\t\t\t\tcase \"portable-custom\":\n\t\t\t\t\treturn pciInteractionState(stimulus, interaction)\n\t\t\t}\n\t\t}\n\n\t\tfunction findUnknownKey(selectedKeys: string[], options: RendererChoice[]): string | null {\n\t\t\tconst optionIds = new Set(\n\t\t\t\toptions.map(function getId(o) {\n\t\t\t\t\treturn o.identifier\n\t\t\t\t})\n\t\t\t)\n\t\t\tfor (const key of selectedKeys) {\n\t\t\t\tif (!optionIds.has(key)) {\n\t\t\t\t\treturn key\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null\n\t\t}\n\n\t\tfunction validateChoiceSubmission(\n\t\t\tselectedKeys: string[],\n\t\t\toptions: RendererChoice[],\n\t\t\tmaxChoices: number,\n\t\t\tminChoices: number\n\t\t): Error | null {\n\t\t\tif (selectedKeys.length < minChoices) {\n\t\t\t\tlog?.error(\"choice submit below minChoices\", { selectedKeys, minChoices })\n\t\t\t\treturn errors.wrap(ErrInvalidSubmission, `need at least ${minChoices} selections`)\n\t\t\t}\n\t\t\tif (selectedKeys.length > maxChoices) {\n\t\t\t\tlog?.error(\"choice submit above maxChoices\", { selectedKeys, maxChoices })\n\t\t\t\treturn errors.wrap(ErrInvalidSubmission, `at most ${maxChoices} selections`)\n\t\t\t}\n\t\t\tconst uniqueKeys = new Set(selectedKeys)\n\t\t\tif (uniqueKeys.size !== selectedKeys.length) {\n\t\t\t\tlog?.error(\"choice submit has duplicates\", { selectedKeys })\n\t\t\t\treturn errors.wrap(ErrInvalidSubmission, \"duplicate selections\")\n\t\t\t}\n\t\t\tconst unknownKey = findUnknownKey(selectedKeys, options)\n\t\t\tif (unknownKey) {\n\t\t\t\tlog?.error(\"choice submit has unknown key\", { key: unknownKey })\n\t\t\t\treturn errors.wrap(ErrInvalidSubmission, `unknown option '${unknownKey}'`)\n\t\t\t}\n\t\t\treturn null\n\t\t}\n\n\t\tfunction choiceState(\n\t\t\tstimulus: RendererStimulus | null,\n\t\t\tinteraction: Extract<RendererInteraction<Pcis>, { type: \"choice\" }>,\n\t\t\toptions: RendererChoice[],\n\t\t\tmaxChoices: number,\n\t\t\tminChoices: number\n\t\t): PrimerState<Pcis> {\n\t\t\treturn {\n\t\t\t\tphase: \"interaction\",\n\t\t\t\tkind: \"choice\",\n\t\t\t\tstimulus,\n\t\t\t\tinteraction,\n\t\t\t\toptions,\n\t\t\t\tmaxChoices,\n\t\t\t\tminChoices,\n\t\t\t\tsubmitChoice: function submitChoice(selectedKeys: string[]) {\n\t\t\t\t\tconst validationError = validateChoiceSubmission(\n\t\t\t\t\t\tselectedKeys,\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\tmaxChoices,\n\t\t\t\t\t\tminChoices\n\t\t\t\t\t)\n\t\t\t\t\tif (validationError) {\n\t\t\t\t\t\treturn Promise.resolve(\n\t\t\t\t\t\t\terrored(validationError, \"interaction\", {\n\t\t\t\t\t\t\t\tkind: \"interaction\",\n\t\t\t\t\t\t\t\tsubmission: { type: \"choice\", selectedKeys }\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\treturn execute(\n\t\t\t\t\t\t{ kind: \"interaction\", submission: { type: \"choice\", selectedKeys } },\n\t\t\t\t\t\t\"interaction\"\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\ttimeout: function timeout() {\n\t\t\t\t\treturn execute({ kind: \"timeout\" }, \"timeout\")\n\t\t\t\t},\n\t\t\t\ttoJSON: poisonToJSON\n\t\t\t}\n\t\t}\n\n\t\tfunction textEntryState(\n\t\t\tstimulus: RendererStimulus | null,\n\t\t\tinteraction: Extract<RendererInteraction<Pcis>, { type: \"text-entry\" }>\n\t\t): PrimerState<Pcis> {\n\t\t\treturn {\n\t\t\t\tphase: \"interaction\",\n\t\t\t\tkind: \"text-entry\",\n\t\t\t\tstimulus,\n\t\t\t\tinteraction,\n\t\t\t\tsubmitText: function submitText(value: string) {\n\t\t\t\t\treturn execute(\n\t\t\t\t\t\t{ kind: \"interaction\", submission: { type: \"text-entry\", value } },\n\t\t\t\t\t\t\"interaction\"\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\ttimeout: function timeout() {\n\t\t\t\t\treturn execute({ kind: \"timeout\" }, \"timeout\")\n\t\t\t\t},\n\t\t\t\ttoJSON: poisonToJSON\n\t\t\t}\n\t\t}\n\n\t\tfunction validateExtendedTextSubmission(\n\t\t\tvalues: string[],\n\t\t\tminStrings: number,\n\t\t\tmaxStrings: number\n\t\t): Error | null {\n\t\t\tif (values.length < minStrings) {\n\t\t\t\tlog?.error(\"extended-text submit below minStrings\", { count: values.length, minStrings })\n\t\t\t\treturn errors.wrap(ErrInvalidSubmission, `need at least ${minStrings} values`)\n\t\t\t}\n\t\t\tif (values.length > maxStrings) {\n\t\t\t\tlog?.error(\"extended-text submit above maxStrings\", { count: values.length, maxStrings })\n\t\t\t\treturn errors.wrap(ErrInvalidSubmission, `at most ${maxStrings} values`)\n\t\t\t}\n\t\t\treturn null\n\t\t}\n\n\t\tfunction extendedTextState(\n\t\t\tstimulus: RendererStimulus | null,\n\t\t\tinteraction: RendererInteraction<Pcis> & { type: \"extended-text\" }\n\t\t): PrimerState<Pcis> {\n\t\t\tconst maxStrings = interaction.maxStrings\n\t\t\tconst minStrings = interaction.minStrings\n\t\t\tif (maxStrings === 1) {\n\t\t\t\treturn {\n\t\t\t\t\tphase: \"interaction\",\n\t\t\t\t\tkind: \"extended-text\",\n\t\t\t\t\tcardinality: \"single\",\n\t\t\t\t\tstimulus,\n\t\t\t\t\tinteraction,\n\t\t\t\t\tsubmitText: function submitText(value: string) {\n\t\t\t\t\t\treturn execute(\n\t\t\t\t\t\t\t{ kind: \"interaction\", submission: { type: \"extended-text\", values: [value] } },\n\t\t\t\t\t\t\t\"interaction\"\n\t\t\t\t\t\t)\n\t\t\t\t\t},\n\t\t\t\t\ttimeout: function timeout() {\n\t\t\t\t\t\treturn execute({ kind: \"timeout\" }, \"timeout\")\n\t\t\t\t\t},\n\t\t\t\t\ttoJSON: poisonToJSON\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tphase: \"interaction\",\n\t\t\t\tkind: \"extended-text\",\n\t\t\t\tcardinality: \"multiple\",\n\t\t\t\tstimulus,\n\t\t\t\tinteraction,\n\t\t\t\tmaxStrings,\n\t\t\t\tminStrings,\n\t\t\t\tsubmitTexts: function submitTexts(values: string[]) {\n\t\t\t\t\tconst validationError = validateExtendedTextSubmission(values, minStrings, maxStrings)\n\t\t\t\t\tif (validationError) {\n\t\t\t\t\t\treturn Promise.resolve(\n\t\t\t\t\t\t\terrored(validationError, \"interaction\", {\n\t\t\t\t\t\t\t\tkind: \"interaction\",\n\t\t\t\t\t\t\t\tsubmission: { type: \"extended-text\", values }\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\treturn execute(\n\t\t\t\t\t\t{ kind: \"interaction\", submission: { type: \"extended-text\", values } },\n\t\t\t\t\t\t\"interaction\"\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\ttimeout: function timeout() {\n\t\t\t\t\treturn execute({ kind: \"timeout\" }, \"timeout\")\n\t\t\t\t},\n\t\t\t\ttoJSON: poisonToJSON\n\t\t\t}\n\t\t}\n\n\t\t// Safe cast: TS cannot verify mapped-union construction from generic Pcis.\n\t\t// The input `interaction: PciInteraction<Pcis>` guarantees pciId↔properties\n\t\t// correlation; destructuring loses TS tracking but runtime is correct.\n\t\tfunction pciInteractionState(\n\t\t\tstimulus: RendererStimulus | null,\n\t\t\tinteraction: PciInteraction<Pcis>\n\t\t): PciInteractionState<Pcis> {\n\t\t\tconst { pciId, properties } = interaction\n\t\t\tfunction submit(value: PciValue<typeof pciId>): Promise<PrimerState<Pcis>> {\n\t\t\t\tlog?.debug(\"pci submit\", { pciId })\n\t\t\t\tconst submission = { type: \"portable-custom\" as const, pciId, value }\n\t\t\t\treturn execute({ kind: \"interaction\", submission }, \"interaction\")\n\t\t\t}\n\t\t\tfunction timeout(): Promise<PrimerState<Pcis>> {\n\t\t\t\tlog?.debug(\"pci timeout\", { pciId })\n\t\t\t\treturn execute({ kind: \"timeout\" }, \"timeout\")\n\t\t\t}\n\t\t\t// biome-ignore lint/plugin: TS cannot verify mapped-union construction from generic Pcis — pciId↔properties correlation preserved by input\n\t\t\treturn {\n\t\t\t\tphase: \"interaction\",\n\t\t\t\tkind: \"portable-custom\",\n\t\t\t\tstimulus,\n\t\t\t\tinteraction,\n\t\t\t\tpciId,\n\t\t\t\tproperties,\n\t\t\t\tsubmit,\n\t\t\t\ttimeout,\n\t\t\t\ttoJSON: poisonToJSON\n\t\t\t} as PciInteractionState<Pcis>\n\t\t}\n\n\t\tfunction feedbackState(\n\t\t\tstimulus: RendererStimulus | null,\n\t\t\tinteraction: RendererInteraction<Pcis>,\n\t\t\tsubmission: RendererSubmission<Pcis>,\n\t\t\tisCorrect: boolean,\n\t\t\tfeedbackContent: ContentInline[],\n\t\t\tcorrectAnswer: RendererCorrectAnswer | null\n\t\t): PrimerState<Pcis> {\n\t\t\treturn {\n\t\t\t\tphase: \"feedback\",\n\t\t\t\tstimulus,\n\t\t\t\tinteraction,\n\t\t\t\tsubmission,\n\t\t\t\tisCorrect,\n\t\t\t\tfeedbackContent,\n\t\t\t\tcorrectAnswer,\n\t\t\t\tadvance: function advance() {\n\t\t\t\t\treturn execute({ kind: \"observation\" }, \"observation\")\n\t\t\t\t},\n\t\t\t\ttoJSON: poisonToJSON\n\t\t\t}\n\t\t}\n\n\t\treturn { execute }\n\t}\n\n\treturn {\n\t\tasync start(studentId: string): Promise<PrimerState<Pcis>> {\n\t\t\tlog?.debug(\"start\", { studentId })\n\t\t\tconst s = makeSession(studentId)\n\t\t\treturn s.execute({ kind: \"observation\" }, \"observation\")\n\t\t}\n\t}\n}\n\nexport { ADVANCE_PATH, DEFAULT_ORIGIN, create }\nexport type { Client, Config, PrimerLogger }\n"
7
7
  ],
8
- "mappings": "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",
9
- "debugId": "B2799CD48726B75C64756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "85D227CDC0814FAC64756E2164756E21",
10
10
  "names": []
11
11
  }
package/dist/types.d.ts CHANGED
@@ -110,6 +110,7 @@ interface ChoiceState<Pcis extends PciId = PciId> extends NonSerializable {
110
110
  readonly maxChoices: number;
111
111
  readonly minChoices: number;
112
112
  submitChoice(selectedKeys: string[]): Promise<PrimerState<Pcis>>;
113
+ timeout(): Promise<PrimerState<Pcis>>;
113
114
  }
114
115
  interface TextEntryState<Pcis extends PciId = PciId> extends NonSerializable {
115
116
  readonly phase: "interaction";
@@ -119,6 +120,7 @@ interface TextEntryState<Pcis extends PciId = PciId> extends NonSerializable {
119
120
  type: "text-entry";
120
121
  }>;
121
122
  submitText(value: string): Promise<PrimerState<Pcis>>;
123
+ timeout(): Promise<PrimerState<Pcis>>;
122
124
  }
123
125
  interface ExtendedTextSingleState<Pcis extends PciId = PciId> extends NonSerializable {
124
126
  readonly phase: "interaction";
@@ -129,6 +131,7 @@ interface ExtendedTextSingleState<Pcis extends PciId = PciId> extends NonSeriali
129
131
  type: "extended-text";
130
132
  }>;
131
133
  submitText(value: string): Promise<PrimerState<Pcis>>;
134
+ timeout(): Promise<PrimerState<Pcis>>;
132
135
  }
133
136
  interface ExtendedTextMultipleState<Pcis extends PciId = PciId> extends NonSerializable {
134
137
  readonly phase: "interaction";
@@ -141,6 +144,7 @@ interface ExtendedTextMultipleState<Pcis extends PciId = PciId> extends NonSeria
141
144
  readonly maxStrings: number;
142
145
  readonly minStrings: number;
143
146
  submitTexts(values: string[]): Promise<PrimerState<Pcis>>;
147
+ timeout(): Promise<PrimerState<Pcis>>;
144
148
  }
145
149
  type ExtendedTextState<Pcis extends PciId = PciId> = ExtendedTextSingleState<Pcis> | ExtendedTextMultipleState<Pcis>;
146
150
  type PciInteractionState<Pcis extends PciId = PciId> = {
@@ -152,6 +156,7 @@ type PciInteractionState<Pcis extends PciId = PciId> = {
152
156
  readonly pciId: K;
153
157
  readonly properties: PciProps<K>;
154
158
  submit(value: PciValue<K>): Promise<PrimerState<Pcis>>;
159
+ timeout(): Promise<PrimerState<Pcis>>;
155
160
  };
156
161
  }[Pcis];
157
162
  type InteractionState<Pcis extends PciId = PciId> = ChoiceState<Pcis> | TextEntryState<Pcis> | ExtendedTextState<Pcis> | PciInteractionState<Pcis>;
@@ -171,7 +176,7 @@ interface CompletedState extends NonSerializable {
171
176
  interface ErroredState<Pcis extends PciId = PciId> extends NonSerializable {
172
177
  readonly phase: "errored";
173
178
  readonly error: Error;
174
- readonly failedPhase: "observation" | "interaction";
179
+ readonly failedPhase: "observation" | "interaction" | "timeout";
175
180
  retry(): Promise<PrimerState<Pcis>>;
176
181
  }
177
182
  interface FatalState extends NonSerializable {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@superbuilders/primer-tives",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./client": {