@getuserfeedback/protocol 3.1.1 → 3.1.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.
package/dist/index.d.ts CHANGED
@@ -9,8 +9,9 @@ export { ErrorCategory, ErrorCategorySchema, ErrorEventSchema, ProtocolError, }
9
9
  export { type ClaimPendingFlowAssignmentsRequest, type ClaimPendingFlowAssignmentsResponse, claimPendingFlowAssignmentsRequestSchema, claimPendingFlowAssignmentsResponseSchema, type FlowAssignmentExternalIdIdentityTypeValue, type FlowAssignmentIdentityTypeValue, type FlowAssignmentRecipientRequest, type FlowAssignmentRecord, type FlowAssignmentStatus, type FlowAssignmentTargetingContext, flowAssignmentRecipientRequestSchema, flowAssignmentRecordSchema, flowAssignmentStatusSchema, flowAssignmentTargetingContextSchema, type ListPendingFlowAssignmentsResponse, listPendingFlowAssignmentsResponseSchema, nullableUpdateFlowAssignmentLifecycleResponseSchema, type ReleaseFlowAssignmentClaimRequest, type ReleaseFlowAssignmentClaimResponse, releaseFlowAssignmentClaimRequestSchema, releaseFlowAssignmentClaimResponseSchema, type UpdateFlowAssignmentLifecycleRequest, type UpdateFlowAssignmentLifecycleResponse, updateFlowAssignmentLifecycleRequestSchema, updateFlowAssignmentLifecycleResponseSchema, } from "./flow-assignments.js";
10
10
  export { type FlowDisplaySyncRequest, type FlowDisplaySyncResponse, flowDisplaySyncRequestSchema, flowDisplaySyncResponseSchema, type RuntimeDisplayAttentionPolicy, type RuntimeDisplayBroadcastOpportunity, type RuntimeDisplayBroadcasts, type RuntimeDisplayEligibility, type RuntimeDisplayTrigger, resolveFlowDisplayAttentionPolicyConfig, runtimeDisplayAttentionPolicySchema, runtimeDisplayBroadcastOpportunitySchema, runtimeDisplayBroadcastsSchema, runtimeDisplayEligibilitySchema, runtimeDisplayTriggerSchema, } from "./flow-display.js";
11
11
  export { buildIdentityTypeGuidanceMessage, getIdentityTypeSuggestion, IDENTITY_TYPE_VALUES, type IdentityTypeValue, isIdentityTypeValue, type StandardIdentityTypeValue, } from "./identity-type.js";
12
- export { type CaptureInstanceFeedbackRequest, type CaptureInstanceFeedbackResponse, captureInstanceFeedbackRequestSchema, captureInstanceFeedbackResponseSchema, type InstanceFeedbackDataType, type InstanceFeedbackValence, instanceFeedbackDataTypeSchema, instanceFeedbackValenceSchema, } from "./instance-feedback.js";
12
+ export { type CaptureInstanceFeedbackRequest, type CaptureInstanceFeedbackResponse, captureInstanceFeedbackRequestSchema, captureInstanceFeedbackResponseSchema, type InstanceFeedbackDataType, type InstanceFeedbackMineFeedback, type InstanceFeedbackValence, instanceFeedbackDataTypeSchema, instanceFeedbackMineFeedbackSchema, instanceFeedbackValenceSchema, type ListInstanceFeedbackMineRequest, type ListInstanceFeedbackMineResponse, listInstanceFeedbackMineRequestSchema, listInstanceFeedbackMineResponseSchema, } from "./instance-feedback.js";
13
13
  export { type PreviewConnectionPairRequest, type PreviewConnectionPairResponse, previewConnectionPairRequestSchema, previewConnectionPairResponseSchema, } from "./preview-connection.js";
14
+ export { PREVIEW_FLOW_TRANSPORT_SOURCE, type PreviewFlowOpenCommand, type PreviewFlowOpenRequest, type PreviewFlowOpenResult, previewFlowOpenCommandSchema, previewFlowOpenRequestSchema, previewFlowOpenResultSchema, } from "./preview-flow-transport.js";
14
15
  export { PREVIEW_PAIRING_TRANSPORT_SOURCE, type PreviewPairingHostAck, type PreviewPairingHostRequest, type PreviewPairingHostResult, previewPairingHostAckSchema, previewPairingHostRequestSchema, previewPairingHostResultSchema, } from "./preview-pairing-transport.js";
15
16
  export { isPublicGrantScope, type PublicGrantScope, publicGrantScopeIdSchema, } from "./public-grant-scope.js";
16
17
  export { type RuntimeEndpoints, resolveApiBaseUrl, resolveCoreUrl, resolveRealtimeUrl, resolveTrpcBaseUrl, runtimeEndpointsSchema, } from "./runtime-endpoints.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,2BAA2B,EAC3B,wBAAwB,EACxB,0BAA0B,EAC1B,kBAAkB,EAClB,2BAA2B,EAC3B,sBAAsB,EACtB,0BAA0B,EAC1B,qBAAqB,EACrB,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,EACzB,mBAAmB,EACnB,2BAA2B,GAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,KAAK,qBAAqB,EAC1B,uCAAuC,EACvC,uCAAuC,EACvC,2BAA2B,EAC3B,2BAA2B,EAC3B,+BAA+B,GAC/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACN,KAAK,UAAU,EACf,gBAAgB,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,yBAAyB,GACzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACN,KAAK,kBAAkB,EACvB,wBAAwB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,sCAAsC,EAAE,MAAM,eAAe,CAAC;AACvE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EACN,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,KAAK,kCAAkC,EACvC,KAAK,mCAAmC,EACxC,wCAAwC,EACxC,yCAAyC,EACzC,KAAK,yCAAyC,EAC9C,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,EACnC,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,EACnC,oCAAoC,EACpC,0BAA0B,EAC1B,0BAA0B,EAC1B,oCAAoC,EACpC,KAAK,kCAAkC,EACvC,wCAAwC,EACxC,mDAAmD,EACnD,KAAK,iCAAiC,EACtC,KAAK,kCAAkC,EACvC,uCAAuC,EACvC,wCAAwC,EACxC,KAAK,oCAAoC,EACzC,KAAK,qCAAqC,EAC1C,0CAA0C,EAC1C,2CAA2C,GAC3C,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACN,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,4BAA4B,EAC5B,6BAA6B,EAC7B,KAAK,6BAA6B,EAClC,KAAK,kCAAkC,EACvC,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,uCAAuC,EACvC,mCAAmC,EACnC,wCAAwC,EACxC,8BAA8B,EAC9B,+BAA+B,EAC/B,2BAA2B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,gCAAgC,EAChC,yBAAyB,EACzB,oBAAoB,EACpB,KAAK,iBAAiB,EACtB,mBAAmB,EACnB,KAAK,yBAAyB,GAC9B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,KAAK,8BAA8B,EACnC,KAAK,+BAA+B,EACpC,oCAAoC,EACpC,qCAAqC,EACrC,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,8BAA8B,EAC9B,6BAA6B,GAC7B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,KAAK,4BAA4B,EACjC,KAAK,6BAA6B,EAClC,kCAAkC,EAClC,mCAAmC,GACnC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,gCAAgC,EAChC,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,2BAA2B,EAC3B,+BAA+B,EAC/B,8BAA8B,GAC9B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACN,kBAAkB,EAClB,KAAK,gBAAgB,EACrB,wBAAwB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,KAAK,gBAAgB,EACrB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,YAAY,EACZ,OAAO,EACP,UAAU,EACV,SAAS,EACT,KAAK,KAAK,EACV,KAAK,SAAS,EACd,aAAa,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,KAAK,mBAAmB,EACxB,yBAAyB,GACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,KAAK,qBAAqB,EAC1B,2BAA2B,EAC3B,KAAK,sBAAsB,EAC3B,4BAA4B,GAC5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,kCAAkC,EAClC,+BAA+B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,EAC/B,4BAA4B,EAC5B,+BAA+B,EAC/B,mCAAmC,EACnC,gCAAgC,GAChC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,KAAK,oBAAoB,EACzB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,0BAA0B,EAC1B,6BAA6B,GAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,6BAA6B,EAC7B,4BAA4B,EAC5B,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,KAAK,gBAAgB,EACrB,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,KAAK,2BAA2B,EAChC,iCAAiC,EACjC,KAAK,mBAAmB,EACxB,2BAA2B,EAC3B,KAAK,WAAW,EAChB,KAAK,wBAAwB,EAC7B,yBAAyB,EACzB,iBAAiB,EACjB,8BAA8B,EAC9B,KAAK,oBAAoB,EACzB,0BAA0B,GAC1B,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -8,8 +8,9 @@ export { ErrorCategory, ErrorCategorySchema, ErrorEventSchema, ProtocolError, }
8
8
  export { claimPendingFlowAssignmentsRequestSchema, claimPendingFlowAssignmentsResponseSchema, flowAssignmentRecipientRequestSchema, flowAssignmentRecordSchema, flowAssignmentStatusSchema, flowAssignmentTargetingContextSchema, listPendingFlowAssignmentsResponseSchema, nullableUpdateFlowAssignmentLifecycleResponseSchema, releaseFlowAssignmentClaimRequestSchema, releaseFlowAssignmentClaimResponseSchema, updateFlowAssignmentLifecycleRequestSchema, updateFlowAssignmentLifecycleResponseSchema, } from "./flow-assignments.js";
9
9
  export { flowDisplaySyncRequestSchema, flowDisplaySyncResponseSchema, resolveFlowDisplayAttentionPolicyConfig, runtimeDisplayAttentionPolicySchema, runtimeDisplayBroadcastOpportunitySchema, runtimeDisplayBroadcastsSchema, runtimeDisplayEligibilitySchema, runtimeDisplayTriggerSchema, } from "./flow-display.js";
10
10
  export { buildIdentityTypeGuidanceMessage, getIdentityTypeSuggestion, IDENTITY_TYPE_VALUES, isIdentityTypeValue, } from "./identity-type.js";
11
- export { captureInstanceFeedbackRequestSchema, captureInstanceFeedbackResponseSchema, instanceFeedbackDataTypeSchema, instanceFeedbackValenceSchema, } from "./instance-feedback.js";
11
+ export { captureInstanceFeedbackRequestSchema, captureInstanceFeedbackResponseSchema, instanceFeedbackDataTypeSchema, instanceFeedbackMineFeedbackSchema, instanceFeedbackValenceSchema, listInstanceFeedbackMineRequestSchema, listInstanceFeedbackMineResponseSchema, } from "./instance-feedback.js";
12
12
  export { previewConnectionPairRequestSchema, previewConnectionPairResponseSchema, } from "./preview-connection.js";
13
+ export { PREVIEW_FLOW_TRANSPORT_SOURCE, previewFlowOpenCommandSchema, previewFlowOpenRequestSchema, previewFlowOpenResultSchema, } from "./preview-flow-transport.js";
13
14
  export { PREVIEW_PAIRING_TRANSPORT_SOURCE, previewPairingHostAckSchema, previewPairingHostRequestSchema, previewPairingHostResultSchema, } from "./preview-pairing-transport.js";
14
15
  export { isPublicGrantScope, publicGrantScopeIdSchema, } from "./public-grant-scope.js";
15
16
  export { resolveApiBaseUrl, resolveCoreUrl, resolveRealtimeUrl, resolveTrpcBaseUrl, runtimeEndpointsSchema, } from "./runtime-endpoints.js";
@@ -33,8 +33,55 @@ export declare const captureInstanceFeedbackResponseSchema: z.ZodMiniObject<{
33
33
  evaluationId: z.ZodMiniString<string>;
34
34
  status: z.ZodMiniLiteral<"accepted">;
35
35
  }, z.core.$strip>;
36
+ export declare const listInstanceFeedbackMineRequestSchema: z.ZodMiniObject<{
37
+ targets: z.ZodMiniArray<z.ZodMiniObject<{
38
+ name: z.ZodMiniOptional<z.ZodMiniString<string>>;
39
+ targetBindingToken: z.ZodMiniString<string>;
40
+ }, z.core.$strip>>;
41
+ }, z.core.$strip>;
42
+ export declare const instanceFeedbackMineFeedbackSchema: z.ZodMiniObject<{
43
+ capturedAt: z.ZodMiniString<string>;
44
+ dataType: z.ZodMiniEnum<{
45
+ boolean: "boolean";
46
+ categorical: "categorical";
47
+ numeric: "numeric";
48
+ }>;
49
+ evaluationId: z.ZodMiniString<string>;
50
+ label: z.ZodMiniNullable<z.ZodMiniString<string>>;
51
+ name: z.ZodMiniString<string>;
52
+ scoreValue: z.ZodMiniNullable<z.ZodMiniNumber<number>>;
53
+ valence: z.ZodMiniEnum<{
54
+ positive: "positive";
55
+ negative: "negative";
56
+ neutral: "neutral";
57
+ }>;
58
+ }, z.core.$strip>;
59
+ export declare const listInstanceFeedbackMineResponseSchema: z.ZodMiniObject<{
60
+ items: z.ZodMiniArray<z.ZodMiniObject<{
61
+ feedback: z.ZodMiniNullable<z.ZodMiniObject<{
62
+ capturedAt: z.ZodMiniString<string>;
63
+ dataType: z.ZodMiniEnum<{
64
+ boolean: "boolean";
65
+ categorical: "categorical";
66
+ numeric: "numeric";
67
+ }>;
68
+ evaluationId: z.ZodMiniString<string>;
69
+ label: z.ZodMiniNullable<z.ZodMiniString<string>>;
70
+ name: z.ZodMiniString<string>;
71
+ scoreValue: z.ZodMiniNullable<z.ZodMiniNumber<number>>;
72
+ valence: z.ZodMiniEnum<{
73
+ positive: "positive";
74
+ negative: "negative";
75
+ neutral: "neutral";
76
+ }>;
77
+ }, z.core.$strip>>;
78
+ }, z.core.$strip>>;
79
+ }, z.core.$strip>;
36
80
  export type InstanceFeedbackDataType = z.output<typeof instanceFeedbackDataTypeSchema>;
37
81
  export type InstanceFeedbackValence = z.output<typeof instanceFeedbackValenceSchema>;
38
82
  export type CaptureInstanceFeedbackRequest = z.output<typeof captureInstanceFeedbackRequestSchema>;
39
83
  export type CaptureInstanceFeedbackResponse = z.output<typeof captureInstanceFeedbackResponseSchema>;
84
+ export type ListInstanceFeedbackMineRequest = z.output<typeof listInstanceFeedbackMineRequestSchema>;
85
+ export type InstanceFeedbackMineFeedback = z.output<typeof instanceFeedbackMineFeedbackSchema>;
86
+ export type ListInstanceFeedbackMineResponse = z.output<typeof listInstanceFeedbackMineResponseSchema>;
40
87
  //# sourceMappingURL=instance-feedback.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"instance-feedback.d.ts","sourceRoot":"","sources":["../src/instance-feedback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAyB9B,eAAO,MAAM,8BAA8B;;;;EAIzC,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;EAIxC,CAAC;AAEH,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;iBA0B/C,CAAC;AAEH,eAAO,MAAM,qCAAqC;;;;iBAIhD,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAC9C,OAAO,8BAA8B,CACrC,CAAC;AACF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAC7C,OAAO,6BAA6B,CACpC,CAAC;AACF,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CACpD,OAAO,oCAAoC,CAC3C,CAAC;AACF,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CACrD,OAAO,qCAAqC,CAC5C,CAAC"}
1
+ {"version":3,"file":"instance-feedback.d.ts","sourceRoot":"","sources":["../src/instance-feedback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAsC9B,eAAO,MAAM,8BAA8B;;;;EAIzC,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;EAIxC,CAAC;AAEH,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;iBAgB/C,CAAC;AAEH,eAAO,MAAM,qCAAqC;;;;iBAIhD,CAAC;AAEH,eAAO,MAAM,qCAAqC;;;;;iBAShD,CAAC;AAEH,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;iBAQ7C,CAAC;AAEH,eAAO,MAAM,sCAAsC;;;;;;;;;;;;;;;;;;;;iBAMjD,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAC9C,OAAO,8BAA8B,CACrC,CAAC;AACF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAC7C,OAAO,6BAA6B,CACpC,CAAC;AACF,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CACpD,OAAO,oCAAoC,CAC3C,CAAC;AACF,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CACrD,OAAO,qCAAqC,CAC5C,CAAC;AACF,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CACrD,OAAO,qCAAqC,CAC5C,CAAC;AACF,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAClD,OAAO,kCAAkC,CACzC,CAAC;AACF,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CACtD,OAAO,sCAAsC,CAC7C,CAAC"}
@@ -12,9 +12,18 @@ const isCanonicalUtcTimestamp = (value) => {
12
12
  const date = new Date(value);
13
13
  return !Number.isNaN(date.getTime()) && date.toISOString() === value;
14
14
  };
15
+ const canonicalUtcTimestampSchema = z.string().check(z.trim(), z.minLength(1), z.refine(isCanonicalUtcTimestamp, {
16
+ message: "capturedAt must be a canonical UTC timestamp.",
17
+ }));
15
18
  const finiteNumberSchema = z.number().check(z.refine(Number.isFinite, {
16
19
  message: "Expected a finite number.",
17
20
  }));
21
+ const targetBindingTokenSchema = z
22
+ .string()
23
+ .check(z.trim(), z.minLength(1), z.maxLength(maxTargetBindingTokenLength));
24
+ const feedbackNameSchema = z
25
+ .string()
26
+ .check(z.trim(), z.minLength(1), z.maxLength(255));
18
27
  export const instanceFeedbackDataTypeSchema = z.enum([
19
28
  "boolean",
20
29
  "categorical",
@@ -26,16 +35,12 @@ export const instanceFeedbackValenceSchema = z.enum([
26
35
  "neutral",
27
36
  ]);
28
37
  export const captureInstanceFeedbackRequestSchema = z.object({
29
- targetBindingToken: z
30
- .string()
31
- .check(z.trim(), z.minLength(1), z.maxLength(maxTargetBindingTokenLength)),
32
- capturedAt: z.string().check(z.trim(), z.minLength(1), z.refine(isCanonicalUtcTimestamp, {
33
- message: "capturedAt must be a canonical UTC timestamp.",
34
- })),
38
+ targetBindingToken: targetBindingTokenSchema,
39
+ capturedAt: canonicalUtcTimestampSchema,
35
40
  comment: z.optional(z.nullable(z.string().check(z.maxLength(maxCaptureRequestCommentLength)))),
36
41
  dataType: instanceFeedbackDataTypeSchema,
37
42
  label: z.optional(z.nullable(z.string().check(z.maxLength(255)))),
38
- name: z.optional(z.string().check(z.trim(), z.minLength(1), z.maxLength(255))),
43
+ name: z.optional(feedbackNameSchema),
39
44
  reasonCategories: z.optional(z
40
45
  .array(z.string().check(z.trim(), z.minLength(1), z.maxLength(128)))
41
46
  .check(z.maxLength(maxReasonCategoryCount))),
@@ -47,3 +52,25 @@ export const captureInstanceFeedbackResponseSchema = z.object({
47
52
  evaluationId: z.string().check(z.trim(), z.minLength(1)),
48
53
  status: z.literal("accepted"),
49
54
  });
55
+ export const listInstanceFeedbackMineRequestSchema = z.object({
56
+ targets: z
57
+ .array(z.object({
58
+ name: z.optional(feedbackNameSchema),
59
+ targetBindingToken: targetBindingTokenSchema,
60
+ }))
61
+ .check(z.minLength(1), z.maxLength(50)),
62
+ });
63
+ export const instanceFeedbackMineFeedbackSchema = z.object({
64
+ capturedAt: canonicalUtcTimestampSchema,
65
+ dataType: instanceFeedbackDataTypeSchema,
66
+ evaluationId: z.string().check(z.trim(), z.minLength(1)),
67
+ label: z.nullable(z.string()),
68
+ name: feedbackNameSchema,
69
+ scoreValue: z.nullable(finiteNumberSchema),
70
+ valence: instanceFeedbackValenceSchema,
71
+ });
72
+ export const listInstanceFeedbackMineResponseSchema = z.object({
73
+ items: z.array(z.object({
74
+ feedback: z.nullable(instanceFeedbackMineFeedbackSchema),
75
+ })),
76
+ });
@@ -0,0 +1,61 @@
1
+ import * as z from "zod/mini";
2
+ export declare const PREVIEW_FLOW_TRANSPORT_SOURCE = "getuserfeedback.preview";
3
+ export declare const previewFlowOpenCommandSchema: z.ZodMiniObject<{
4
+ kind: z.ZodMiniLiteral<"open">;
5
+ flow: z.ZodMiniObject<{
6
+ definition: z.ZodMiniUnknown;
7
+ theme: z.ZodMiniOptional<z.ZodMiniObject<{
8
+ css: z.ZodMiniOptional<z.ZodMiniString<string>>;
9
+ themeRuntimeArtifactId: z.ZodMiniOptional<z.ZodMiniString<string>>;
10
+ themeVersionId: z.ZodMiniOptional<z.ZodMiniString<string>>;
11
+ }, z.core.$strict>>;
12
+ }, z.core.$strict>;
13
+ flowHandleId: z.ZodMiniOptional<z.ZodMiniString<string>>;
14
+ metadata: z.ZodMiniOptional<z.ZodMiniObject<{
15
+ tags: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>>;
16
+ }, z.core.$strict>>;
17
+ hideCloseButton: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
18
+ }, z.core.$strict>;
19
+ export declare const previewFlowOpenRequestSchema: z.ZodMiniObject<{
20
+ source: z.ZodMiniLiteral<"getuserfeedback.preview">;
21
+ type: z.ZodMiniLiteral<"preview.flow.open.request">;
22
+ requestId: z.ZodMiniString<string>;
23
+ command: z.ZodMiniObject<{
24
+ kind: z.ZodMiniLiteral<"open">;
25
+ flow: z.ZodMiniObject<{
26
+ definition: z.ZodMiniUnknown;
27
+ theme: z.ZodMiniOptional<z.ZodMiniObject<{
28
+ css: z.ZodMiniOptional<z.ZodMiniString<string>>;
29
+ themeRuntimeArtifactId: z.ZodMiniOptional<z.ZodMiniString<string>>;
30
+ themeVersionId: z.ZodMiniOptional<z.ZodMiniString<string>>;
31
+ }, z.core.$strict>>;
32
+ }, z.core.$strict>;
33
+ flowHandleId: z.ZodMiniOptional<z.ZodMiniString<string>>;
34
+ metadata: z.ZodMiniOptional<z.ZodMiniObject<{
35
+ tags: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>>;
36
+ }, z.core.$strict>>;
37
+ hideCloseButton: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
38
+ }, z.core.$strict>;
39
+ }, z.core.$strict>;
40
+ export declare const previewFlowOpenResultSchema: z.ZodMiniDiscriminatedUnion<[z.ZodMiniObject<{
41
+ source: z.ZodMiniLiteral<"getuserfeedback.preview">;
42
+ type: z.ZodMiniLiteral<"preview.flow.open.result">;
43
+ requestId: z.ZodMiniString<string>;
44
+ ok: z.ZodMiniLiteral<true>;
45
+ result: z.ZodMiniObject<{
46
+ flowHandleId: z.ZodMiniString<string>;
47
+ }, z.core.$strict>;
48
+ }, z.core.$strict>, z.ZodMiniObject<{
49
+ source: z.ZodMiniLiteral<"getuserfeedback.preview">;
50
+ type: z.ZodMiniLiteral<"preview.flow.open.result">;
51
+ requestId: z.ZodMiniString<string>;
52
+ ok: z.ZodMiniLiteral<false>;
53
+ error: z.ZodMiniObject<{
54
+ code: z.ZodMiniOptional<z.ZodMiniString<string>>;
55
+ message: z.ZodMiniString<string>;
56
+ }, z.core.$strict>;
57
+ }, z.core.$strict>], "ok">;
58
+ export type PreviewFlowOpenCommand = z.output<typeof previewFlowOpenCommandSchema>;
59
+ export type PreviewFlowOpenRequest = z.output<typeof previewFlowOpenRequestSchema>;
60
+ export type PreviewFlowOpenResult = z.output<typeof previewFlowOpenResultSchema>;
61
+ //# sourceMappingURL=preview-flow-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-flow-transport.d.ts","sourceRoot":"","sources":["../src/preview-flow-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAI9B,eAAO,MAAM,6BAA6B,4BAAmC,CAAC;AA8B9E,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;kBAMvC,CAAC;AAEH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;kBAKvC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;0BAoBtC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAC5C,OAAO,4BAA4B,CACnC,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAC5C,OAAO,4BAA4B,CACnC,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAC3C,OAAO,2BAA2B,CAClC,CAAC"}
@@ -0,0 +1,59 @@
1
+ import * as z from "zod/mini";
2
+ import { PREVIEW_PAIRING_TRANSPORT_SOURCE } from "./preview-pairing-transport.js";
3
+ import { responseMetadataInputSchema } from "./response-metadata.js";
4
+ export const PREVIEW_FLOW_TRANSPORT_SOURCE = PREVIEW_PAIRING_TRANSPORT_SOURCE;
5
+ const requestIdSchema = z.string().check(z.trim(), z.minLength(1));
6
+ const flowHandleIdSchema = z.string().check(z.trim(), z.minLength(1));
7
+ const inlineFlowThemeSchema = z.strictObject({
8
+ css: z.optional(z.string()),
9
+ themeRuntimeArtifactId: z.optional(z.string().check(z.trim(), z.minLength(1))),
10
+ themeVersionId: z.optional(z.string().check(z.trim(), z.minLength(1))),
11
+ });
12
+ const inlineFlowSchema = z.strictObject({
13
+ definition: z.unknown().check(z.check((ctx) => {
14
+ if (ctx.value !== undefined) {
15
+ return;
16
+ }
17
+ ctx.issues.push({
18
+ code: "custom",
19
+ input: ctx.value,
20
+ message: "Inline flow definition is required.",
21
+ continue: false,
22
+ });
23
+ })),
24
+ theme: z.optional(inlineFlowThemeSchema),
25
+ });
26
+ export const previewFlowOpenCommandSchema = z.strictObject({
27
+ kind: z.literal("open"),
28
+ flow: inlineFlowSchema,
29
+ flowHandleId: z.optional(flowHandleIdSchema),
30
+ metadata: z.optional(responseMetadataInputSchema),
31
+ hideCloseButton: z.optional(z.boolean()),
32
+ });
33
+ export const previewFlowOpenRequestSchema = z.strictObject({
34
+ source: z.literal(PREVIEW_FLOW_TRANSPORT_SOURCE),
35
+ type: z.literal("preview.flow.open.request"),
36
+ requestId: requestIdSchema,
37
+ command: previewFlowOpenCommandSchema,
38
+ });
39
+ export const previewFlowOpenResultSchema = z.discriminatedUnion("ok", [
40
+ z.strictObject({
41
+ source: z.literal(PREVIEW_FLOW_TRANSPORT_SOURCE),
42
+ type: z.literal("preview.flow.open.result"),
43
+ requestId: requestIdSchema,
44
+ ok: z.literal(true),
45
+ result: z.strictObject({
46
+ flowHandleId: flowHandleIdSchema,
47
+ }),
48
+ }),
49
+ z.strictObject({
50
+ source: z.literal(PREVIEW_FLOW_TRANSPORT_SOURCE),
51
+ type: z.literal("preview.flow.open.result"),
52
+ requestId: requestIdSchema,
53
+ ok: z.literal(false),
54
+ error: z.strictObject({
55
+ code: z.optional(z.string().check(z.trim(), z.minLength(1))),
56
+ message: z.string().check(z.trim(), z.minLength(1)),
57
+ }),
58
+ }),
59
+ ]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getuserfeedback/protocol",
3
- "version": "3.1.1",
3
+ "version": "3.1.3",
4
4
  "description": "getuserfeedback widget protocol — host surface and (later) wire protocol",
5
5
  "keywords": [
6
6
  "getuserfeedback",
package/src/index.ts CHANGED
@@ -109,9 +109,15 @@ export {
109
109
  captureInstanceFeedbackRequestSchema,
110
110
  captureInstanceFeedbackResponseSchema,
111
111
  type InstanceFeedbackDataType,
112
+ type InstanceFeedbackMineFeedback,
112
113
  type InstanceFeedbackValence,
113
114
  instanceFeedbackDataTypeSchema,
115
+ instanceFeedbackMineFeedbackSchema,
114
116
  instanceFeedbackValenceSchema,
117
+ type ListInstanceFeedbackMineRequest,
118
+ type ListInstanceFeedbackMineResponse,
119
+ listInstanceFeedbackMineRequestSchema,
120
+ listInstanceFeedbackMineResponseSchema,
115
121
  } from "./instance-feedback.js";
116
122
  export {
117
123
  type PreviewConnectionPairRequest,
@@ -119,6 +125,15 @@ export {
119
125
  previewConnectionPairRequestSchema,
120
126
  previewConnectionPairResponseSchema,
121
127
  } from "./preview-connection.js";
128
+ export {
129
+ PREVIEW_FLOW_TRANSPORT_SOURCE,
130
+ type PreviewFlowOpenCommand,
131
+ type PreviewFlowOpenRequest,
132
+ type PreviewFlowOpenResult,
133
+ previewFlowOpenCommandSchema,
134
+ previewFlowOpenRequestSchema,
135
+ previewFlowOpenResultSchema,
136
+ } from "./preview-flow-transport.js";
122
137
  export {
123
138
  PREVIEW_PAIRING_TRANSPORT_SOURCE,
124
139
  type PreviewPairingHostAck,
@@ -1,6 +1,10 @@
1
1
  import { describe, expect, it } from "bun:test";
2
2
 
3
- import { captureInstanceFeedbackRequestSchema } from "./instance-feedback";
3
+ import {
4
+ captureInstanceFeedbackRequestSchema,
5
+ listInstanceFeedbackMineRequestSchema,
6
+ listInstanceFeedbackMineResponseSchema,
7
+ } from "./instance-feedback";
4
8
 
5
9
  const validCaptureRequest = {
6
10
  capturedAt: "2026-07-01T12:00:00.000Z",
@@ -84,3 +88,63 @@ describe("captureInstanceFeedbackRequestSchema", () => {
84
88
  ).toBe(false);
85
89
  });
86
90
  });
91
+
92
+ describe("listInstanceFeedbackMineRequestSchema", () => {
93
+ it("accepts target binding token batches", () => {
94
+ expect(
95
+ listInstanceFeedbackMineRequestSchema.safeParse({
96
+ targets: [
97
+ { targetBindingToken: "binding-token" },
98
+ { name: "quality_rating", targetBindingToken: "binding-token-2" },
99
+ ],
100
+ }).success,
101
+ ).toBe(true);
102
+ });
103
+
104
+ it("requires at least one target", () => {
105
+ expect(
106
+ listInstanceFeedbackMineRequestSchema.safeParse({ targets: [] }).success,
107
+ ).toBe(false);
108
+ });
109
+
110
+ it("caps target batches", () => {
111
+ expect(
112
+ listInstanceFeedbackMineRequestSchema.safeParse({
113
+ targets: Array.from({ length: 51 }, (_, index) => ({
114
+ targetBindingToken: `binding-token-${index}`,
115
+ })),
116
+ }).success,
117
+ ).toBe(false);
118
+ });
119
+
120
+ it("caps target binding tokens before verification", () => {
121
+ expect(
122
+ listInstanceFeedbackMineRequestSchema.safeParse({
123
+ targets: [{ targetBindingToken: "x".repeat(4097) }],
124
+ }).success,
125
+ ).toBe(false);
126
+ });
127
+ });
128
+
129
+ describe("listInstanceFeedbackMineResponseSchema", () => {
130
+ it("accepts nullable feedback entries aligned with requested targets", () => {
131
+ expect(
132
+ listInstanceFeedbackMineResponseSchema.safeParse({
133
+ items: [
134
+ {
135
+ feedback: {
136
+ capturedAt: "2026-07-01T12:00:00.000Z",
137
+ dataType: "boolean",
138
+ evaluationId: "eval_1",
139
+ label: null,
140
+ name: "user_feedback",
141
+ scoreValue: 1,
142
+ valence: "positive",
143
+ },
144
+ },
145
+ { feedback: null },
146
+ ],
147
+ }).success,
148
+ ).toBe(true);
149
+ });
150
+ });
@@ -17,11 +17,24 @@ const isCanonicalUtcTimestamp = (value: string) => {
17
17
  const date = new Date(value);
18
18
  return !Number.isNaN(date.getTime()) && date.toISOString() === value;
19
19
  };
20
+ const canonicalUtcTimestampSchema = z.string().check(
21
+ z.trim(),
22
+ z.minLength(1),
23
+ z.refine(isCanonicalUtcTimestamp, {
24
+ message: "capturedAt must be a canonical UTC timestamp.",
25
+ }),
26
+ );
20
27
  const finiteNumberSchema = z.number().check(
21
28
  z.refine(Number.isFinite, {
22
29
  message: "Expected a finite number.",
23
30
  }),
24
31
  );
32
+ const targetBindingTokenSchema = z
33
+ .string()
34
+ .check(z.trim(), z.minLength(1), z.maxLength(maxTargetBindingTokenLength));
35
+ const feedbackNameSchema = z
36
+ .string()
37
+ .check(z.trim(), z.minLength(1), z.maxLength(255));
25
38
 
26
39
  export const instanceFeedbackDataTypeSchema = z.enum([
27
40
  "boolean",
@@ -36,24 +49,14 @@ export const instanceFeedbackValenceSchema = z.enum([
36
49
  ]);
37
50
 
38
51
  export const captureInstanceFeedbackRequestSchema = z.object({
39
- targetBindingToken: z
40
- .string()
41
- .check(z.trim(), z.minLength(1), z.maxLength(maxTargetBindingTokenLength)),
42
- capturedAt: z.string().check(
43
- z.trim(),
44
- z.minLength(1),
45
- z.refine(isCanonicalUtcTimestamp, {
46
- message: "capturedAt must be a canonical UTC timestamp.",
47
- }),
48
- ),
52
+ targetBindingToken: targetBindingTokenSchema,
53
+ capturedAt: canonicalUtcTimestampSchema,
49
54
  comment: z.optional(
50
55
  z.nullable(z.string().check(z.maxLength(maxCaptureRequestCommentLength))),
51
56
  ),
52
57
  dataType: instanceFeedbackDataTypeSchema,
53
58
  label: z.optional(z.nullable(z.string().check(z.maxLength(255)))),
54
- name: z.optional(
55
- z.string().check(z.trim(), z.minLength(1), z.maxLength(255)),
56
- ),
59
+ name: z.optional(feedbackNameSchema),
57
60
  reasonCategories: z.optional(
58
61
  z
59
62
  .array(z.string().check(z.trim(), z.minLength(1), z.maxLength(128)))
@@ -69,6 +72,35 @@ export const captureInstanceFeedbackResponseSchema = z.object({
69
72
  status: z.literal("accepted"),
70
73
  });
71
74
 
75
+ export const listInstanceFeedbackMineRequestSchema = z.object({
76
+ targets: z
77
+ .array(
78
+ z.object({
79
+ name: z.optional(feedbackNameSchema),
80
+ targetBindingToken: targetBindingTokenSchema,
81
+ }),
82
+ )
83
+ .check(z.minLength(1), z.maxLength(50)),
84
+ });
85
+
86
+ export const instanceFeedbackMineFeedbackSchema = z.object({
87
+ capturedAt: canonicalUtcTimestampSchema,
88
+ dataType: instanceFeedbackDataTypeSchema,
89
+ evaluationId: z.string().check(z.trim(), z.minLength(1)),
90
+ label: z.nullable(z.string()),
91
+ name: feedbackNameSchema,
92
+ scoreValue: z.nullable(finiteNumberSchema),
93
+ valence: instanceFeedbackValenceSchema,
94
+ });
95
+
96
+ export const listInstanceFeedbackMineResponseSchema = z.object({
97
+ items: z.array(
98
+ z.object({
99
+ feedback: z.nullable(instanceFeedbackMineFeedbackSchema),
100
+ }),
101
+ ),
102
+ });
103
+
72
104
  export type InstanceFeedbackDataType = z.output<
73
105
  typeof instanceFeedbackDataTypeSchema
74
106
  >;
@@ -81,3 +113,12 @@ export type CaptureInstanceFeedbackRequest = z.output<
81
113
  export type CaptureInstanceFeedbackResponse = z.output<
82
114
  typeof captureInstanceFeedbackResponseSchema
83
115
  >;
116
+ export type ListInstanceFeedbackMineRequest = z.output<
117
+ typeof listInstanceFeedbackMineRequestSchema
118
+ >;
119
+ export type InstanceFeedbackMineFeedback = z.output<
120
+ typeof instanceFeedbackMineFeedbackSchema
121
+ >;
122
+ export type ListInstanceFeedbackMineResponse = z.output<
123
+ typeof listInstanceFeedbackMineResponseSchema
124
+ >;
@@ -0,0 +1,95 @@
1
+ import { describe, expect, it } from "bun:test";
2
+ import {
3
+ PREVIEW_FLOW_TRANSPORT_SOURCE,
4
+ previewFlowOpenRequestSchema,
5
+ previewFlowOpenResultSchema,
6
+ } from "./preview-flow-transport";
7
+
8
+ describe("preview flow transport protocol", () => {
9
+ it("parses inline flow open requests", () => {
10
+ expect(
11
+ previewFlowOpenRequestSchema.parse({
12
+ source: PREVIEW_FLOW_TRANSPORT_SOURCE,
13
+ type: "preview.flow.open.request",
14
+ requestId: "req_123",
15
+ command: {
16
+ kind: "open",
17
+ flow: {
18
+ definition: {
19
+ blocks: [],
20
+ config: {},
21
+ presenter: null,
22
+ },
23
+ },
24
+ flowHandleId: "handle_123",
25
+ hideCloseButton: true,
26
+ },
27
+ }),
28
+ ).toMatchObject({
29
+ requestId: "req_123",
30
+ command: {
31
+ kind: "open",
32
+ flowHandleId: "handle_123",
33
+ flow: {
34
+ definition: {
35
+ blocks: [],
36
+ },
37
+ },
38
+ },
39
+ });
40
+ });
41
+
42
+ it("rejects undefined inline definitions", () => {
43
+ expect(() =>
44
+ previewFlowOpenRequestSchema.parse({
45
+ source: PREVIEW_FLOW_TRANSPORT_SOURCE,
46
+ type: "preview.flow.open.request",
47
+ requestId: "req_123",
48
+ command: {
49
+ kind: "open",
50
+ flow: {
51
+ definition: undefined,
52
+ },
53
+ },
54
+ }),
55
+ ).toThrow();
56
+ });
57
+
58
+ it("parses success and failure results", () => {
59
+ expect(
60
+ previewFlowOpenResultSchema.parse({
61
+ source: PREVIEW_FLOW_TRANSPORT_SOURCE,
62
+ type: "preview.flow.open.result",
63
+ requestId: "req_123",
64
+ ok: true,
65
+ result: {
66
+ flowHandleId: "handle_123",
67
+ },
68
+ }),
69
+ ).toEqual({
70
+ source: PREVIEW_FLOW_TRANSPORT_SOURCE,
71
+ type: "preview.flow.open.result",
72
+ requestId: "req_123",
73
+ ok: true,
74
+ result: {
75
+ flowHandleId: "handle_123",
76
+ },
77
+ });
78
+
79
+ expect(
80
+ previewFlowOpenResultSchema.parse({
81
+ source: PREVIEW_FLOW_TRANSPORT_SOURCE,
82
+ type: "preview.flow.open.result",
83
+ requestId: "req_123",
84
+ ok: false,
85
+ error: {
86
+ code: "DISPATCH_FAILED",
87
+ message: "Preview dispatch failed",
88
+ },
89
+ }),
90
+ ).toMatchObject({
91
+ ok: false,
92
+ error: { code: "DISPATCH_FAILED" },
93
+ });
94
+ });
95
+ });
@@ -0,0 +1,80 @@
1
+ import * as z from "zod/mini";
2
+ import { PREVIEW_PAIRING_TRANSPORT_SOURCE } from "./preview-pairing-transport.js";
3
+ import { responseMetadataInputSchema } from "./response-metadata.js";
4
+
5
+ export const PREVIEW_FLOW_TRANSPORT_SOURCE = PREVIEW_PAIRING_TRANSPORT_SOURCE;
6
+
7
+ const requestIdSchema = z.string().check(z.trim(), z.minLength(1));
8
+ const flowHandleIdSchema = z.string().check(z.trim(), z.minLength(1));
9
+
10
+ const inlineFlowThemeSchema = z.strictObject({
11
+ css: z.optional(z.string()),
12
+ themeRuntimeArtifactId: z.optional(
13
+ z.string().check(z.trim(), z.minLength(1)),
14
+ ),
15
+ themeVersionId: z.optional(z.string().check(z.trim(), z.minLength(1))),
16
+ });
17
+
18
+ const inlineFlowSchema = z.strictObject({
19
+ definition: z.unknown().check(
20
+ z.check((ctx) => {
21
+ if (ctx.value !== undefined) {
22
+ return;
23
+ }
24
+ ctx.issues.push({
25
+ code: "custom",
26
+ input: ctx.value,
27
+ message: "Inline flow definition is required.",
28
+ continue: false,
29
+ });
30
+ }),
31
+ ),
32
+ theme: z.optional(inlineFlowThemeSchema),
33
+ });
34
+
35
+ export const previewFlowOpenCommandSchema = z.strictObject({
36
+ kind: z.literal("open"),
37
+ flow: inlineFlowSchema,
38
+ flowHandleId: z.optional(flowHandleIdSchema),
39
+ metadata: z.optional(responseMetadataInputSchema),
40
+ hideCloseButton: z.optional(z.boolean()),
41
+ });
42
+
43
+ export const previewFlowOpenRequestSchema = z.strictObject({
44
+ source: z.literal(PREVIEW_FLOW_TRANSPORT_SOURCE),
45
+ type: z.literal("preview.flow.open.request"),
46
+ requestId: requestIdSchema,
47
+ command: previewFlowOpenCommandSchema,
48
+ });
49
+
50
+ export const previewFlowOpenResultSchema = z.discriminatedUnion("ok", [
51
+ z.strictObject({
52
+ source: z.literal(PREVIEW_FLOW_TRANSPORT_SOURCE),
53
+ type: z.literal("preview.flow.open.result"),
54
+ requestId: requestIdSchema,
55
+ ok: z.literal(true),
56
+ result: z.strictObject({
57
+ flowHandleId: flowHandleIdSchema,
58
+ }),
59
+ }),
60
+ z.strictObject({
61
+ source: z.literal(PREVIEW_FLOW_TRANSPORT_SOURCE),
62
+ type: z.literal("preview.flow.open.result"),
63
+ requestId: requestIdSchema,
64
+ ok: z.literal(false),
65
+ error: z.strictObject({
66
+ code: z.optional(z.string().check(z.trim(), z.minLength(1))),
67
+ message: z.string().check(z.trim(), z.minLength(1)),
68
+ }),
69
+ }),
70
+ ]);
71
+
72
+ export type PreviewFlowOpenCommand = z.output<
73
+ typeof previewFlowOpenCommandSchema
74
+ >;
75
+ export type PreviewFlowOpenRequest = z.output<
76
+ typeof previewFlowOpenRequestSchema
77
+ >;
78
+ export type PreviewFlowOpenResult = z.output<
79
+ typeof previewFlowOpenResultSchema
80
+ >;