@appsolutely-io/waypoint 0.0.0-stage → 0.1.1-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +260 -2
  3. package/dist/block-reply-DN4RiLL0.d.cts +169 -0
  4. package/dist/block-reply-Dtof9ild.d.ts +169 -0
  5. package/dist/blocks-25YOJ5SS.cjs +1 -0
  6. package/dist/blocks-UJ7GUJHD.js +1 -0
  7. package/dist/chunk-3KV7TDDR.cjs +3 -0
  8. package/dist/chunk-4BWV3SEL.cjs +1 -0
  9. package/dist/chunk-4ZGW4HM4.cjs +1 -0
  10. package/dist/chunk-5TBO732O.js +1 -0
  11. package/dist/chunk-6OZSKCPT.cjs +1 -0
  12. package/dist/chunk-C3VS33WJ.js +1 -0
  13. package/dist/chunk-D2EGPBCX.cjs +1 -0
  14. package/dist/chunk-FBADWFRR.cjs +1 -0
  15. package/dist/chunk-FQSWQLRW.js +1 -0
  16. package/dist/chunk-GT6PI4CT.cjs +1 -0
  17. package/dist/chunk-II26UWZM.cjs +1 -0
  18. package/dist/chunk-JFMVVGGB.js +1 -0
  19. package/dist/chunk-K73VV7KA.js +1 -0
  20. package/dist/chunk-L4PFFRDE.js +3 -0
  21. package/dist/chunk-LLPGVQUT.cjs +1 -0
  22. package/dist/chunk-M3UENQ6L.cjs +1 -0
  23. package/dist/chunk-M63QOANE.js +1 -0
  24. package/dist/chunk-MEKDQDSV.js +1 -0
  25. package/dist/chunk-OEPKPDLD.js +1 -0
  26. package/dist/chunk-OWT55N6J.js +3 -0
  27. package/dist/chunk-PFR2J5BV.js +1 -0
  28. package/dist/chunk-Q6BD2YL3.cjs +1 -0
  29. package/dist/chunk-Q7BULGQG.cjs +1 -0
  30. package/dist/chunk-QS3MKZOY.cjs +3 -0
  31. package/dist/chunk-RHBDQGD4.js +1 -0
  32. package/dist/chunk-RZZDQWC2.js +1 -0
  33. package/dist/chunk-S73WZWDP.js +1 -0
  34. package/dist/chunk-SD2KAIVE.js +1 -0
  35. package/dist/chunk-T5XF2R74.js +1 -0
  36. package/dist/chunk-TCFCSGQ3.js +1 -0
  37. package/dist/chunk-TGL3DR2K.js +1 -0
  38. package/dist/chunk-TODYQ3SG.cjs +1 -0
  39. package/dist/chunk-TVSQHTK2.cjs +1 -0
  40. package/dist/chunk-UYR3UEIW.cjs +1 -0
  41. package/dist/chunk-VGGJGRNK.cjs +1 -0
  42. package/dist/chunk-W6Y7H56X.js +1 -0
  43. package/dist/chunk-XSHOLIC7.cjs +1 -0
  44. package/dist/chunk-XWDB2LS3.cjs +1 -0
  45. package/dist/cli.js +3 -0
  46. package/dist/confirmation-view-CICNJJIO.js +1 -0
  47. package/dist/confirmation-view-OMWHUYVC.cjs +1 -0
  48. package/dist/conformance.cjs +1 -0
  49. package/dist/conformance.d.cts +10 -0
  50. package/dist/conformance.d.ts +10 -0
  51. package/dist/conformance.js +1 -0
  52. package/dist/flow-parser.cjs +1 -0
  53. package/dist/flow-parser.d.cts +3 -0
  54. package/dist/flow-parser.d.ts +3 -0
  55. package/dist/flow-parser.js +1 -0
  56. package/dist/flows-panel-AIULKYOS.cjs +1 -0
  57. package/dist/flows-panel-YEJ36RTY.js +1 -0
  58. package/dist/form-extras-QYE32TUY.cjs +1 -0
  59. package/dist/form-extras-SBBOMJS2.js +1 -0
  60. package/dist/form-fill-C32AHxSr.d.cts +653 -0
  61. package/dist/form-fill-Dp3ut1_Y.d.ts +653 -0
  62. package/dist/form-session.cjs +1 -0
  63. package/dist/form-session.d.cts +7 -0
  64. package/dist/form-session.d.ts +7 -0
  65. package/dist/form-session.js +1 -0
  66. package/dist/frame-decoder.cjs +3 -0
  67. package/dist/frame-decoder.d.cts +5 -0
  68. package/dist/frame-decoder.d.ts +5 -0
  69. package/dist/frame-decoder.js +3 -0
  70. package/dist/generated-C9tbjwK0.d.cts +797 -0
  71. package/dist/generated-C9tbjwK0.d.ts +797 -0
  72. package/dist/hooks/index.cjs +1 -0
  73. package/dist/hooks/index.d.cts +48 -0
  74. package/dist/hooks/index.d.ts +48 -0
  75. package/dist/hooks/index.js +1 -0
  76. package/dist/i18n-DPNfYTMG.d.cts +148 -0
  77. package/dist/i18n-DPNfYTMG.d.ts +148 -0
  78. package/dist/index-B5idIFTx.d.cts +34 -0
  79. package/dist/index-DPzoKXCK.d.ts +34 -0
  80. package/dist/index.cjs +3 -0
  81. package/dist/index.d.cts +38 -0
  82. package/dist/index.d.ts +38 -0
  83. package/dist/index.js +3 -0
  84. package/dist/intent-BQPPows1.d.cts +154 -0
  85. package/dist/intent-BuvqEU3Q.d.ts +154 -0
  86. package/dist/intent.cjs +1 -0
  87. package/dist/intent.d.cts +2 -0
  88. package/dist/intent.d.ts +2 -0
  89. package/dist/intent.js +1 -0
  90. package/dist/markdown-BSRKJFFE.cjs +17 -0
  91. package/dist/markdown-ETLB66BK.js +17 -0
  92. package/dist/message-actions-3HGE6VTS.js +1 -0
  93. package/dist/message-actions-F6SPLTT7.cjs +1 -0
  94. package/dist/messages/en/index.cjs +1 -0
  95. package/dist/messages/en/index.d.cts +3 -0
  96. package/dist/messages/en/index.d.ts +3 -0
  97. package/dist/messages/en/index.js +1 -0
  98. package/dist/messages/index.cjs +1 -0
  99. package/dist/messages/index.d.cts +14 -0
  100. package/dist/messages/index.d.ts +14 -0
  101. package/dist/messages/index.js +1 -0
  102. package/dist/messages/zh-Hans/index.cjs +1 -0
  103. package/dist/messages/zh-Hans/index.d.cts +3 -0
  104. package/dist/messages/zh-Hans/index.d.ts +3 -0
  105. package/dist/messages/zh-Hans/index.js +1 -0
  106. package/dist/on-demand.cjs +1 -0
  107. package/dist/on-demand.d.cts +56 -0
  108. package/dist/on-demand.d.ts +56 -0
  109. package/dist/on-demand.js +1 -0
  110. package/dist/problem-messages-THONMXFZ.cjs +1 -0
  111. package/dist/problem-messages-Z5QGO6RE.js +1 -0
  112. package/dist/react/index.cjs +1 -0
  113. package/dist/react/index.d.cts +419 -0
  114. package/dist/react/index.d.ts +419 -0
  115. package/dist/react/index.js +1 -0
  116. package/dist/reads-Bk84x_rt.d.ts +38 -0
  117. package/dist/reads-DlpCt8dE.d.cts +38 -0
  118. package/dist/recovery-panel-OWY2CWOH.cjs +3 -0
  119. package/dist/recovery-panel-VOKVDDZD.js +3 -0
  120. package/dist/reply-controls-5CWIAKIG.js +1 -0
  121. package/dist/reply-controls-CPWB4VBK.cjs +1 -0
  122. package/dist/run-XBABOEXK.js +1 -0
  123. package/dist/schema.json +2900 -0
  124. package/dist/skin-antd/index.cjs +1 -0
  125. package/dist/skin-antd/index.d.cts +30 -0
  126. package/dist/skin-antd/index.d.ts +30 -0
  127. package/dist/skin-antd/index.js +1 -0
  128. package/dist/skin-default/index.cjs +1 -0
  129. package/dist/skin-default/index.d.cts +42 -0
  130. package/dist/skin-default/index.d.ts +42 -0
  131. package/dist/skin-default/index.js +1 -0
  132. package/dist/step-name-3hQ6CCGr.d.cts +19 -0
  133. package/dist/step-name-BdkYnb5g.d.ts +19 -0
  134. package/dist/storage-commit.cjs +1 -0
  135. package/dist/storage-commit.d.cts +17 -0
  136. package/dist/storage-commit.d.ts +17 -0
  137. package/dist/storage-commit.js +1 -0
  138. package/dist/stream-reads.cjs +1 -0
  139. package/dist/stream-reads.d.cts +22 -0
  140. package/dist/stream-reads.d.ts +22 -0
  141. package/dist/stream-reads.js +1 -0
  142. package/dist/styles.css +796 -0
  143. package/dist/testing/index.cjs +1 -0
  144. package/dist/testing/index.d.cts +57 -0
  145. package/dist/testing/index.d.ts +57 -0
  146. package/dist/testing/index.js +1 -0
  147. package/docs/examples/message-versions.tsx +74 -0
  148. package/docs/form-fill-protocol.md +83 -0
  149. package/docs/message-versions.md +64 -0
  150. package/docs/plan-protocol.md +83 -0
  151. package/docs/reply-protocol.md +75 -0
  152. package/etc/hooks.api.md +2385 -0
  153. package/etc/index.api.md +2159 -0
  154. package/etc/messages-en.api.md +13 -0
  155. package/etc/messages-zh-Hans.api.md +13 -0
  156. package/etc/messages.api.md +183 -0
  157. package/etc/react.api.md +2968 -0
  158. package/etc/skin-antd.api.md +2989 -0
  159. package/etc/skin-default.api.md +61 -0
  160. package/etc/testing.api.md +3034 -0
  161. package/package.json +168 -4
@@ -0,0 +1,419 @@
1
+ import * as react from 'react';
2
+ import { ReactNode, Ref, ComponentType } from 'react';
3
+ import { a3 as Message, P as Problem, q as ConfirmationRecord, as as Step, ac as PlanRecord, B as Block, ag as Reply, s as Conversation } from '../generated-C9tbjwK0.js';
4
+ export { b as BlockButtons, c as BlockCard, d as BlockChoice, e as BlockDetails, f as BlockDiff, g as BlockForm, h as BlockFormFill, i as BlockList, j as BlockMarkdown, k as BlockNotice, l as BlockPlan, m as BlockRouteLink, n as BlockTable, C as CanonicalRequest, o as CardAnswer, p as ConfirmationItem, r as ConfirmationSchedule, t as CreateConversation, D as DecisionVersions, E as ExecutionAcceptance, u as ExtensionBlock, v as FinalHistory, a as Flow, w as FlowParameter, x as FormFillField, y as FormFillRequest, z as FormFillValue, A as FormSubject, G as FormValidation, F as Frame, H as FrameBlock, I as FrameMessageEnd, J as FrameMessageStart, K as FramePlanDraft, L as FramePlanFinal, N as FramePlanStep, O as FramePlanningRead, Q as FrameProblem, S as FrameStale, U as FrameTextDelta, V as FrameToolCall, W as ImmediateDraft, X as ImmediatePlan, Y as IntentCause, Z as IntentKind, _ as IntentRequest, $ as IntentTarget, a0 as IntentWinner, a1 as KeptFact, a2 as LeaveAcknowledgment, M as ManifestEntry, a4 as Negotiated, a5 as Negotiation, a6 as NegotiationOfferWire, a7 as Outcome, a8 as PatchFlow, a9 as Plan, aa as PlanCommand, ab as PlanIntentReply, ad as PlanState, R as ReadTemplate, ae as RecoveryPhase, af as RecoveryView, ah as ReplyAction, ai as ReplyConfirm, aj as ReplyDecline, ak as ReplyForm, al as ReplyFormFill, am as ReplyMessage, an as ReplyPlanValues, ao as ReplyStop, ap as ReplyToolResult, aq as RunFlow, ar as Source, at as TimedPlan, T as ToolCall, au as WaypointProtocol, av as WinnerKind } from '../generated-C9tbjwK0.js';
5
+ import { W as WaypointClient, i as Capability, m as ConversationSummary, l as ConversationSource, d as ConversationReadResult, r as FlowSummary, s as FlowTab, R as ReplyInput, a as FormSession, w as FormSnapshot } from '../form-fill-Dp3ut1_Y.js';
6
+ export { A as AttachmentPort, B as BuiltinFlowTab, h as CAPABILITIES, C as ClientConfig, b as ClientSnapshot, j as ComposerContribution, k as ConversationReadError, D as DEFAULT_FLOW_TABS, n as FORM_SESSION_UNAVAILABLE, o as FeedbackInput, p as FeedbackPort, q as FlowSource, t as FormDraft, u as FormField, v as FormMaterial, F as FormSessionConfig, K as KeepChangesReview, x as KeepChangesReviewResult, y as KeepDisabledReason, M as MaybePromise, z as MessageVersionInput, E as MessageVersionPort, N as NegotiationOffer, P as PendingSend, G as PlanReadRefused, H as PlanRunner, I as PlatformPorts, f as ReadPorts, J as ReaderRequestContext, e as ReplyDelivery, L as ReplyOutcome, g as ReplyState, O as RestoredMessage, Q as RunnerPorts, S as StepContext, T as StoragePort, U as ToolStep, V as TransportEvent, X as TransportPort, c as WaypointEvent, Y as asProblem, Z as canTransition, _ as confirmationOf, $ as createMemoryStorage, a0 as createPlanRunner, a1 as createWaypointClient, a2 as flowTabId, a3 as loadFormSession, a4 as readProblem, a5 as replyRow, a6 as versionWalk } from '../form-fill-Dp3ut1_Y.js';
7
+ import { ResolvedTheme, Theme } from '../skin-default/index.js';
8
+ export { RequiredThemeToken, ThemeToken, darkTheme, lightTheme, themeProperties } from '../skin-default/index.js';
9
+ import { d as FormatMessage } from '../i18n-DPNfYTMG.js';
10
+ export { B as BlockCatalogue, a as BlockMessageKey, C as ConfirmationCatalogue, b as ConfirmationMessageKey, F as FormCatalogue, c as FormMessageKey, M as MessageKey, e as MessageValues, P as ProblemCatalogue, f as ProblemMessageKey, R as RecoveryCatalogue, g as RecoveryMessageKey, h as ReplyCatalogue, i as ReplyMessageKey, k as addMessages, l as catalogueFor, m as createFormatter, j as english, s as simplifiedChinese } from '../i18n-DPNfYTMG.js';
11
+ import { j as BlockSummary, P as PlanView, A as ActionEntry, S as StepStatus, a as ActionId, K as KeepSheet } from '../block-reply-Dtof9ild.js';
12
+ export { B as BlockAnswer, b as BlockReply, c as KeepSheetView, d as PlanViewAlert, e as PlanViewInput, f as PlanViewStatus, T as Tone, V as ViewMessage, g as cardReplyId, k as keepSheet, n as noticeMessages, p as planView, u as useBlockReply, h as usePlanView, i as useWaypointSnapshot } from '../block-reply-Dtof9ild.js';
13
+ import { P as PlanLabels } from '../step-name-BdkYnb5g.js';
14
+ export { s as stepName } from '../step-name-BdkYnb5g.js';
15
+ export { I as IntentAlert, b as IntentFailure, c as IntentNotice, d as IntentOverlay, a as ScopeSignal } from '../intent-BuvqEU3Q.js';
16
+
17
+ interface MarkdownImagePolicy {
18
+ origin?: string;
19
+ allow?: (url: string) => boolean;
20
+ }
21
+
22
+ type PartName = "bubble" | "composer" | "transcript" | "replyRow" | "stepRow" | "planNode" | "widgetFrame" | "confirmBar" | "confirmation" | "topBar" | "rail" | "flowTabs" | "quotaStrip" | "failedSendControls" | "emptyState" | "messageActions" | "extraPanels" | "actionBar" | "stepUpPrompt" | "fieldAdornment" | "recoveryPanel" | "stepStatusRow" | "recoveryActions";
23
+ /** A message as a bubble or its actions see it. */
24
+ interface PartMessage {
25
+ id: string;
26
+ role: Message["role"];
27
+ status?: Message["status"];
28
+ versionIndex?: number;
29
+ versionCount?: number;
30
+ }
31
+ /** A message still being sent, or not sent. */
32
+ interface PartPending {
33
+ id: string;
34
+ content: string;
35
+ failure: {
36
+ code: Problem["code"];
37
+ } | null;
38
+ }
39
+ /** A plan step as its row sees it. */
40
+ type PartStep = Pick<Step, "id" | "operation" | "resource" | "view" | "tier" | "undo" | "stepUp">;
41
+ /**
42
+ * The data each part is given, by part name: a copy, field by field, never
43
+ * the host's or the client's own objects. A part with `undefined` is given
44
+ * none; it draws from its children and props alone.
45
+ */
46
+ interface PartDataMap {
47
+ bubble: {
48
+ message: PartMessage & {
49
+ content: string;
50
+ blocks: BlockSummary[];
51
+ };
52
+ } | {
53
+ pending: PartPending;
54
+ };
55
+ widgetFrame: {
56
+ block: BlockSummary;
57
+ };
58
+ messageActions: {
59
+ message: PartMessage;
60
+ };
61
+ composer: {
62
+ sending: boolean;
63
+ };
64
+ failedSendControls: {
65
+ pending: PartPending;
66
+ };
67
+ confirmBar: {
68
+ view: PlanView;
69
+ actions: ActionEntry[];
70
+ };
71
+ confirmation: {
72
+ confirmation: ConfirmationRecord;
73
+ };
74
+ planNode: {
75
+ view: PlanView;
76
+ };
77
+ stepRow: {
78
+ step: PartStep;
79
+ };
80
+ stepUpPrompt: {
81
+ stepUpCount: number;
82
+ };
83
+ recoveryPanel: {
84
+ view: PlanView;
85
+ };
86
+ stepStatusRow: {
87
+ step: StepStatus;
88
+ };
89
+ recoveryActions: {
90
+ actions: ActionEntry[];
91
+ };
92
+ }
93
+ /** Each part's data, `undefined` for a part that is given none. */
94
+ type PartData = {
95
+ [N in PartName]: N extends keyof PartDataMap ? PartDataMap[N] : undefined;
96
+ };
97
+ interface PartProps<N extends PartName = PartName> {
98
+ children?: ReactNode;
99
+ value?: string;
100
+ onChange?: (value: string) => void;
101
+ onPress?: () => void;
102
+ disabled?: boolean;
103
+ /** A guarded part stays focusable and uses describedBy for its reason. */
104
+ "aria-disabled"?: boolean;
105
+ label?: string;
106
+ inputRef?: Ref<HTMLTextAreaElement>;
107
+ onKeyDown?: React.KeyboardEventHandler<HTMLTextAreaElement>;
108
+ /** Ids of the text that describes the field (the composer's hints). */
109
+ describedBy?: string;
110
+ /** The part's own data (see `PartData`); absent while there is none. */
111
+ data?: PartData[N];
112
+ }
113
+ interface InputProps {
114
+ value: string;
115
+ onChange(value: string): void;
116
+ label: string;
117
+ type?: string;
118
+ disabled?: boolean;
119
+ invalid?: boolean;
120
+ describedBy?: string;
121
+ /** Exposed as `aria-required`; the label carries the visible marker. */
122
+ required?: boolean;
123
+ }
124
+ interface CheckboxProps {
125
+ checked: boolean;
126
+ onChange(checked: boolean): void;
127
+ label: string;
128
+ disabled?: boolean;
129
+ invalid?: boolean;
130
+ describedBy?: string;
131
+ }
132
+ interface ButtonProps {
133
+ children?: ReactNode;
134
+ onPress?(): void;
135
+ disabled?: boolean;
136
+ label?: string;
137
+ role?: "tab";
138
+ tabIndex?: number;
139
+ "aria-selected"?: boolean;
140
+ "aria-disabled"?: boolean;
141
+ "aria-describedby"?: string;
142
+ "aria-busy"?: boolean;
143
+ "aria-current"?: "page";
144
+ /** A toggle's state. */
145
+ "aria-pressed"?: boolean;
146
+ id?: string;
147
+ "data-action"?: string;
148
+ /** A disclosure's state and the region it controls. */
149
+ "aria-expanded"?: boolean;
150
+ "aria-controls"?: string;
151
+ }
152
+ interface DrawerProps {
153
+ children?: ReactNode;
154
+ open: boolean;
155
+ label: string;
156
+ onClose(): void;
157
+ /** The close button's name, from the chat's formatter. */
158
+ closeLabel?: string;
159
+ /**
160
+ * Called once the open drawer's element exists; the chat decides there
161
+ * whether focus may move into it. A skin never moves focus itself.
162
+ */
163
+ focusInto?(element: HTMLElement): void;
164
+ /**
165
+ * Called as the drawer closes or unmounts, with its element. The skin
166
+ * must unmount the dialog on close rather than keep it connected and
167
+ * hidden, so the guarded removal handoff can restore focus.
168
+ */
169
+ restoreFocus?(element: HTMLElement): void;
170
+ }
171
+ interface PrimitiveComponents {
172
+ button: ComponentType<ButtonProps>;
173
+ textarea: ComponentType<PartProps>;
174
+ input: ComponentType<InputProps>;
175
+ datePicker: ComponentType<InputProps>;
176
+ drawer: ComponentType<DrawerProps>;
177
+ /** A labelled checkbox (a boolean form field); the native one if absent. */
178
+ checkbox?: ComponentType<CheckboxProps>;
179
+ }
180
+ interface WidgetProps {
181
+ block: Block;
182
+ onReply: (reply: Pick<Reply, "kind"> & Record<string, unknown>) => void;
183
+ disabled: boolean;
184
+ }
185
+ interface WidgetRegistration {
186
+ type: string;
187
+ render: ComponentType<WidgetProps>;
188
+ }
189
+ interface WaypointProviderProps {
190
+ client: WaypointClient;
191
+ /** Display names for the plan steps' resources and fields. */
192
+ planLabels?: PlanLabels;
193
+ children?: ReactNode;
194
+ parts?: {
195
+ [N in PartName]?: ComponentType<PartProps<N>>;
196
+ };
197
+ primitives?: Partial<PrimitiveComponents>;
198
+ widgets?: readonly WidgetRegistration[];
199
+ renderers?: {
200
+ markdown?: ComponentType<{
201
+ text: string;
202
+ }>;
203
+ };
204
+ /**
205
+ * Plain text for a message's excerpt (the outline, announcements) when a
206
+ * replaced renderer, bubble or transcript means the chat cannot tell what
207
+ * the message visibly shows. Without it those surfaces name no content.
208
+ */
209
+ messageExcerpt?: (message: Message) => string | undefined;
210
+ markdownImages?: MarkdownImagePolicy;
211
+ extraUrlSchemes?: readonly string[];
212
+ flowTabLabel?: (labelKey: string) => string;
213
+ /**
214
+ * A host's words for a problem. `context.answeredElsewhere`: a card
215
+ * answer was refused because the read after it shows the card answered
216
+ * elsewhere (another tab, an earlier page).
217
+ */
218
+ problemText?: (problem: Problem, context?: {
219
+ answeredElsewhere: boolean;
220
+ }) => {
221
+ text: string;
222
+ action?: ReactNode;
223
+ };
224
+ format?: FormatMessage;
225
+ locale?: string;
226
+ dir?: "ltr" | "rtl";
227
+ /**
228
+ * Waypoint's tokens over the scheme's base tokens, in place of a host
229
+ * theme's tokens. It is tokens, not a scheme: without `colorScheme`, the
230
+ * scheme is still the host theme's or the system's, so a theme picked
231
+ * for one scheme should come with that `colorScheme`. Its colours are
232
+ * the host's to check, so under any `theme` prop (whatever its value)
233
+ * the user's bubble keeps the surface, with an accent start edge, rather
234
+ * than the accent-tinted fill.
235
+ */
236
+ theme?: Partial<Theme>;
237
+ /**
238
+ * The chat's scheme. Without it: the host theme's scheme (a skin's
239
+ * `useThemeTokens`), else the system's (`prefers-color-scheme`, followed
240
+ * live), else light.
241
+ */
242
+ colorScheme?: "light" | "dark";
243
+ wrapper?: ComponentType<{
244
+ children?: ReactNode;
245
+ colorScheme: "light" | "dark";
246
+ tokens: Theme;
247
+ /**
248
+ * Where the tokens came from: the host's own theme (a skin's
249
+ * `useThemeTokens`), or waypoint's, when a `theme` prop is given
250
+ * (whatever its value) or the skin reads none.
251
+ */
252
+ tokenSource?: "host" | "waypoint";
253
+ }>;
254
+ /**
255
+ * A skin's hook reading the host's own theme. Its tokens are used unless
256
+ * a `theme` prop is given; its scheme is used unless `colorScheme` is,
257
+ * also under a `theme` prop. It must be present or absent for the
258
+ * provider's whole life.
259
+ */
260
+ useThemeTokens?: ThemeTokensHook;
261
+ }
262
+ /** A skin's hook reading the host's own theme as waypoint tokens. */
263
+ type ThemeTokensHook = () => {
264
+ tokens: Partial<ResolvedTheme>;
265
+ scheme: "light" | "dark";
266
+ } | undefined;
267
+ declare function WaypointProvider(props: WaypointProviderProps): react.JSX.Element;
268
+ declare function useWaypointClient(): WaypointClient;
269
+ declare function useConversation(client?: WaypointClient): {
270
+ conversationId: string;
271
+ conversation: Conversation | null;
272
+ refresh: () => Promise<ConversationReadResult>;
273
+ editMessage: (messageId: string, content: string) => Promise<void>;
274
+ regenerate: (messageId: string) => Promise<void>;
275
+ selectVersion: (messageId: string, index: number) => Promise<void>;
276
+ switchConversation: (id: string) => Promise<ConversationReadResult>;
277
+ };
278
+ declare function useComposer(client?: WaypointClient): {
279
+ draft: string;
280
+ sending: boolean;
281
+ hints: readonly string[];
282
+ setDraft: (value: string) => Promise<void>;
283
+ send: () => Promise<void>;
284
+ retry: (id: string) => Promise<void>;
285
+ withdraw: (id: string) => Promise<void>;
286
+ dismiss: (id: string) => Promise<void>;
287
+ };
288
+ declare function usePlan(client?: WaypointClient): {
289
+ plan: PlanRecord | null;
290
+ setPlan: (plan: PlanRecord) => void;
291
+ reply: (reply: ReplyInput) => Promise<boolean>;
292
+ view: PlanView | null;
293
+ };
294
+ declare function useFlows(client?: WaypointClient): {
295
+ flows: Partial<Record<string, FlowSummary[]>>;
296
+ tab: string;
297
+ load: () => Promise<void>;
298
+ select: (tab: FlowTab) => void;
299
+ setFavourite: (id: string, favourite: boolean) => Promise<void>;
300
+ run: (id: string, values: Record<string, unknown>) => Promise<string | void>;
301
+ };
302
+ type Slots = {
303
+ [N in PartName]?: (props: PartProps<N>) => ReactNode;
304
+ };
305
+ declare const partNames: readonly PartName[];
306
+ /** The recovery panel of a protected plan (loaded on first use). */
307
+ declare function RecoveryPanel(props: {
308
+ view: PlanView;
309
+ onPress(id: ActionId | "retry"): void;
310
+ slots?: Slots;
311
+ sheet?: KeepSheet | null;
312
+ hide?: readonly ActionId[];
313
+ }): react.JSX.Element;
314
+ declare function defaultProblemText(problem: Problem, format: FormatMessage): {
315
+ text: string;
316
+ action?: ReactNode;
317
+ };
318
+ declare const standardWidgets: readonly WidgetRegistration[];
319
+ declare function Widget(props: WidgetProps): react.JSX.Element;
320
+ /** The steps of a plan record (rendered by the blocks chunk). */
321
+ declare function PlanDiagram(props: PlanDiagramProps): react.JSX.Element;
322
+ interface PlanDiagramProps {
323
+ record: PlanRecord;
324
+ slots?: Slots;
325
+ /** The plan's view; each step's node is given it. */
326
+ view?: PlanView | null;
327
+ /**
328
+ * The host's confirmation beside the steps already lists each change;
329
+ * the steps then leave their before and after values out.
330
+ */
331
+ changesShown?: boolean;
332
+ }
333
+ interface WaypointChatProps extends Partial<Omit<WaypointProviderProps, "children">> {
334
+ slots?: Slots;
335
+ features?: readonly Capability[];
336
+ layout?: "panel" | "page" | "floating" | "sheet";
337
+ shortcuts?: {
338
+ focusComposer?: string | false;
339
+ send?: string | false;
340
+ /**
341
+ * @deprecated Ignored: a shortcut never moves focus from outside the
342
+ * chat, so there is no page-wide shortcut.
343
+ */
344
+ global?: boolean;
345
+ };
346
+ conversations?: readonly ConversationSummary[];
347
+ conversationSource?: ConversationSource;
348
+ quota?: ReactNode;
349
+ onStop?: () => void;
350
+ suggestions?: readonly string[];
351
+ }
352
+ declare function WaypointChat(props: WaypointChatProps): react.JSX.Element;
353
+ declare function ConfirmSheet({ title, body, busy, onProceed, onCancel, }: {
354
+ title: string;
355
+ body: string;
356
+ busy?: boolean;
357
+ onProceed(): void;
358
+ onCancel(): void;
359
+ }): react.JSX.Element | null;
360
+
361
+ declare function isSafeUrl(url: string | null | undefined, extraSchemes?: readonly string[]): boolean;
362
+
363
+ interface FieldAdornmentProps {
364
+ children: ReactNode;
365
+ label: string;
366
+ onRegenerate(): void;
367
+ disabled?: boolean;
368
+ /**
369
+ * Why the action is unavailable now. The stock control stays focusable
370
+ * and is described by this text, and a press does nothing. A replacement
371
+ * `fieldAdornment` part then gets no `onPress`, and `aria-disabled` and
372
+ * `describedBy`; it keeps the control focusable and described only if it
373
+ * passes both on to its control.
374
+ */
375
+ reason?: string;
376
+ slots?: Slots;
377
+ /** The field's wrapper element, as it mounts and unmounts. */
378
+ wrapper?: (element: HTMLDivElement | null) => void;
379
+ }
380
+ declare function FieldAdornment({ children, label, onRegenerate, disabled, reason, slots, wrapper, }: FieldAdornmentProps): react.JSX.Element;
381
+
382
+ interface PrivateAttachmentPort {
383
+ upload(file: File): Promise<string>;
384
+ remove(reference: string): Promise<void>;
385
+ }
386
+ declare function useFormFill(session: FormSession): FormSnapshot;
387
+ interface FormFillFieldsProps {
388
+ session: FormSession;
389
+ onRegenerate(field: string): void;
390
+ slots?: Slots;
391
+ renderField?: (props: {
392
+ name: string;
393
+ label: string;
394
+ value: unknown;
395
+ onChange(value: unknown): void;
396
+ invalid: boolean;
397
+ describedBy: string;
398
+ }) => ReactNode;
399
+ }
400
+ declare function FormFillFields({ session, onRegenerate, slots, renderField, }: FormFillFieldsProps): react.JSX.Element;
401
+ interface FormFillPopupProps {
402
+ session: FormSession;
403
+ open: boolean;
404
+ onClose(): void;
405
+ field?: string;
406
+ source?: ConversationSource;
407
+ attachments?: PrivateAttachmentPort;
408
+ }
409
+ declare function FormFillPopup({ session, open, onClose, field, source, attachments, }: FormFillPopupProps): react.JSX.Element;
410
+
411
+ interface ConversationRailProps {
412
+ conversations: readonly ConversationSummary[];
413
+ source?: ConversationSource;
414
+ /** Called in the press of a choice, before its switch starts. */
415
+ onChoose?(): void;
416
+ }
417
+ declare function ConversationRail({ conversations, source, onChoose, }: ConversationRailProps): react.JSX.Element;
418
+
419
+ export { ActionEntry, ActionId, Block, BlockSummary, type ButtonProps, Capability, type CheckboxProps, ConfirmSheet, ConfirmationRecord, Conversation, ConversationRail, type ConversationRailProps, ConversationReadResult, ConversationSource, ConversationSummary, type DrawerProps, FieldAdornment, type FieldAdornmentProps, FlowSummary, FlowTab, FormFillFields, type FormFillFieldsProps, FormFillPopup, type FormFillPopupProps, FormSession, FormSnapshot, FormatMessage, type InputProps, KeepSheet, type MarkdownImagePolicy, Message, type PartData, type PartDataMap, type PartMessage, type PartName, type PartPending, type PartProps, type PartStep, PlanDiagram, type PlanDiagramProps, PlanLabels, PlanRecord, PlanView, type PrimitiveComponents, type PrivateAttachmentPort, Problem, RecoveryPanel, Reply, ReplyInput, ResolvedTheme, type Slots, Step, StepStatus, Theme, type ThemeTokensHook, WaypointChat, type WaypointChatProps, WaypointClient, WaypointProvider, type WaypointProviderProps, Widget, type WidgetProps, type WidgetRegistration, defaultProblemText, isSafeUrl, partNames, standardWidgets, useComposer, useConversation, useFlows, useFormFill, usePlan, useWaypointClient };
@@ -0,0 +1 @@
1
+ import{a as V,b as A,c as D,d as N}from"../chunk-W6Y7H56X.js";import{A as x,B as c,C as u,D as d,E as C,I as h,K as k,L as S,M as w,N as T,O as v,P as M,o as R,p as W,q as b,r as B,s as I,t as K,w as P,z as g}from"../chunk-TGL3DR2K.js";import{a as r}from"../chunk-FQSWQLRW.js";import{a as o}from"../chunk-C3VS33WJ.js";import"../chunk-OWT55N6J.js";import{a as s,b as m,c as n,e as i,f as l,g as y,h as f}from"../chunk-RHBDQGD4.js";import{a as t,b as a,c as p}from"../chunk-RZZDQWC2.js";import"../chunk-M63QOANE.js";import"../chunk-L4PFFRDE.js";import{b as e}from"../chunk-T5XF2R74.js";import"../chunk-K73VV7KA.js";import"../chunk-5TBO732O.js";export{e as CAPABILITIES,M as ConfirmSheet,R as ConversationRail,V as FieldAdornment,D as FormFillFields,N as FormFillPopup,T as PlanDiagram,h as RecoveryPanel,v as WaypointChat,P as WaypointProvider,w as Widget,b as addMessages,y as cardReplyId,I as catalogueFor,K as createFormatter,a as darkTheme,k as defaultProblemText,W as english,r as isSafeUrl,n as keepSheet,t as lightTheme,s as noticeMessages,C as partNames,m as planView,B as simplifiedChinese,S as standardWidgets,o as stepName,p as themeProperties,f as useBlockReply,c as useComposer,x as useConversation,d as useFlows,A as useFormFill,u as usePlan,l as usePlanView,g as useWaypointClient,i as useWaypointSnapshot};
@@ -0,0 +1,38 @@
1
+ import { R as ReadTemplate, T as ToolCall, M as ManifestEntry } from './generated-C9tbjwK0.js';
2
+
3
+ type ReadResult = {
4
+ kind: "refused";
5
+ reason: string;
6
+ } | {
7
+ kind: "result";
8
+ callId: string;
9
+ result: unknown;
10
+ };
11
+
12
+ /**
13
+ * Loads the read handlers' code ahead of a read. Rejects with
14
+ * `STREAM_READS_UNAVAILABLE` when it cannot be loaded.
15
+ */
16
+ declare function loadReadHandlers(): Promise<void>;
17
+ /**
18
+ * Answers a tool read from the manifest. Its code is loaded on first use;
19
+ * if loading fails the promise rejects with `STREAM_READS_UNAVAILABLE`.
20
+ */
21
+ declare function handleToolRead(call: ToolCall, manifest: readonly ManifestEntry[], request: (call: ToolCall) => Promise<unknown>): Promise<ReadResult>;
22
+ /**
23
+ * Answers a planning read against its template. Its code is loaded on first
24
+ * use; if loading fails the promise rejects with `STREAM_READS_UNAVAILABLE`.
25
+ */
26
+ declare function handlePlanningRead(call: ReadTemplate, template: ReadTemplate, request: (call: ReadTemplate) => Promise<{
27
+ rows: Record<string, unknown>;
28
+ versions: Record<string, string>;
29
+ }>): Promise<{
30
+ kind: "refused";
31
+ reason: string;
32
+ } | {
33
+ kind: "plan.values";
34
+ rows: Record<string, Record<string, unknown>>;
35
+ versions: Record<string, string>;
36
+ }>;
37
+
38
+ export { type ReadResult as R, handleToolRead as a, handlePlanningRead as h, loadReadHandlers as l };
@@ -0,0 +1,38 @@
1
+ import { R as ReadTemplate, T as ToolCall, M as ManifestEntry } from './generated-C9tbjwK0.cjs';
2
+
3
+ type ReadResult = {
4
+ kind: "refused";
5
+ reason: string;
6
+ } | {
7
+ kind: "result";
8
+ callId: string;
9
+ result: unknown;
10
+ };
11
+
12
+ /**
13
+ * Loads the read handlers' code ahead of a read. Rejects with
14
+ * `STREAM_READS_UNAVAILABLE` when it cannot be loaded.
15
+ */
16
+ declare function loadReadHandlers(): Promise<void>;
17
+ /**
18
+ * Answers a tool read from the manifest. Its code is loaded on first use;
19
+ * if loading fails the promise rejects with `STREAM_READS_UNAVAILABLE`.
20
+ */
21
+ declare function handleToolRead(call: ToolCall, manifest: readonly ManifestEntry[], request: (call: ToolCall) => Promise<unknown>): Promise<ReadResult>;
22
+ /**
23
+ * Answers a planning read against its template. Its code is loaded on first
24
+ * use; if loading fails the promise rejects with `STREAM_READS_UNAVAILABLE`.
25
+ */
26
+ declare function handlePlanningRead(call: ReadTemplate, template: ReadTemplate, request: (call: ReadTemplate) => Promise<{
27
+ rows: Record<string, unknown>;
28
+ versions: Record<string, string>;
29
+ }>): Promise<{
30
+ kind: "refused";
31
+ reason: string;
32
+ } | {
33
+ kind: "plan.values";
34
+ rows: Record<string, Record<string, unknown>>;
35
+ versions: Record<string, string>;
36
+ }>;
37
+
38
+ export { type ReadResult as R, handleToolRead as a, handlePlanningRead as h, loadReadHandlers as l };
@@ -0,0 +1,3 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkVGGJGRNKcjs = require('./chunk-VGGJGRNK.cjs');var _chunkUYR3UEIWcjs = require('./chunk-UYR3UEIW.cjs');require('./chunk-FBADWFRR.cjs');var _chunkTODYQ3SGcjs = require('./chunk-TODYQ3SG.cjs');require('./chunk-QS3MKZOY.cjs');require('./chunk-M3UENQ6L.cjs');require('./chunk-4BWV3SEL.cjs');require('./chunk-GT6PI4CT.cjs');require('./chunk-3KV7TDDR.cjs');require('./chunk-Q7BULGQG.cjs');require('./chunk-XSHOLIC7.cjs');require('./chunk-II26UWZM.cjs');var _react = require('react');var ce={"chat.recovery.heading":"Review the plan's status","chat.recovery.updateToControl":"Update the app to control this plan. Its recorded status is shown here.","chat.recovery.stopping":"Stopping further steps\u2026","chat.recovery.cancelling":"Cancelling\u2026","chat.recovery.leavePending":"Saving your choice to leave changes as they are\u2026","chat.recovery.currentRunning":"The plan is running now. Stop it before reviewing another action.","chat.recovery.currentStopped":"The plan is stopped. Recorded results may include changes already made.","chat.recovery.cancelledNoChanges":"Cancelled; nothing was changed.","chat.recovery.leftKnown":"Left as is. Existing changes are kept; no further steps will run from this plan.","chat.recovery.leftUnconfirmed":"Left as is; {count, plural, one {# step could not be confirmed} other {# steps could not be confirmed}}.","chat.recovery.keptKnown":"Current results kept; no further steps will run from this plan.","chat.recovery.done":"Done","chat.recovery.notDone":"Not done","chat.recovery.unknown":"Could not be confirmed","chat.recovery.stopped":"Stopped. Some changes may already have been made.","chat.recovery.capabilityMissing":"This site does not support this recovery action.","chat.recovery.intentPendingReason":"Wait for this request to be resolved before confirming another action.","chat.recovery.refreshConversation":"Refresh conversation","chat.recovery.hostGuidance":"Contact the site administrator if this problem continues.","chat.recovery.checkIntentStatus":"Check request status","chat.recovery.checkSavedChoice":"Check saved choice","chat.recovery.checkKeepStatus":"Check Keep status","chat.recovery.keepChanges":"Keep these changes","chat.recovery.leave":"Leave as is","chat.recovery.confirmKeepForwardOnly":"Keep the current results and close this plan? Remaining planned steps will not run. This plan has no Undo choice to end, and site values will not change.","chat.recovery.confirmEndRetention":"Keep the current results and close this plan's retained record? No planned steps or Undo choices remain. Site values will not change.","chat.recovery.keepReasonActive":"A confirmed action is still in progress or paused. Review that action first.","chat.recovery.keepReasonUnknown":"Some results could not be confirmed. Check their status first.","chat.recovery.keepReasonUnavailable":"This action is unavailable in the current account or conversation. Review the available status or contact the host.","chat.recovery.keepReasonChanged":"The reviewed results changed. Read the current results before choosing again.","chat.recovery.keepReasonPreview":"A different review is open. Resolve that review before choosing again.","chat.recovery.keepReasonNoSource":'There is no current result that can be closed with "Keep these changes".',"chat.recovery.alreadyKept":"The current results are already kept.","chat.recovery.stopNotSent":"Stop was not sent. A step already sent may still finish.","chat.recovery.stopNotSentElsewhere":"Stop was not sent. The plan may still be running in another window or device.","chat.recovery.stopUnconfirmed":"Stop could not be confirmed. Reconnect to check the steps.","chat.recovery.cancelNotSent":"Cancellation was not sent. Check the current status before choosing again.","chat.recovery.cancelUnconfirmed":"Cancellation could not be confirmed. Check the request status.","chat.recovery.reviewCancelNotSent":"Review cancellation was not sent. Check the current status before choosing again.","chat.recovery.reviewCancelUnconfirmed":"Review cancellation could not be confirmed. Check the request status.","chat.recovery.leaveNotSent":"Your choice was not saved. Check the current status before choosing again.","chat.recovery.leaveUnconfirmed":"Your choice could not be confirmed. Check the request status.","chat.recovery.keepNotSent":'Your "Keep these changes" choice could not be sent. Check any earlier pending choice before trying again.',"chat.recovery.keepUnconfirmed":'We could not confirm whether "Keep these changes" was saved. Check its status before choosing again.',"chat.recovery.requestAlreadyStopped":"The run you asked to stop was stopped.","chat.recovery.requestTargetStopped":"The targeted run is stopped.","chat.recovery.requestedIntentApplied":"Your earlier request was applied to its original target.","chat.recovery.requestedIntentNotApplied":"Your earlier request was not applied to its original target.","chat.recovery.intentSuperseded":"A newer independent decision is now current. This request cannot change it.","chat.recovery.intentTargetChanged":"A newer run or decision is current. This request did not change it.","chat.recovery.alreadyClosedByWinner":"This plan was already stopped or closed. Your request changed nothing.","chat.recovery.alreadyStoppedNeedsDecision":"This plan was already stopped. A decision about the recorded changes is still needed.","chat.recovery.cancelStarted":"This plan had already started. Further steps were stopped; some changes may have been made.","chat.recovery.stoppedNoChanges":"Stopped before execution. Nothing was changed.","chat.recovery.initialTargetSettled":"The original action had already finished. Its results are kept; no changes were undone.","chat.recovery.initialTargetStopped":"The original action is already stopped. Its step results are kept; no changes were undone.","chat.recovery.reviewTargetSettled":"This review had already been confirmed and finished. Its recorded results are kept.","chat.recovery.reviewTargetStopped":"This review had already been confirmed. Its execution is stopped; the recorded step results are kept.","chat.recovery.planClosedKept":'Your "Keep these changes" choice was saved and this plan was closed. Site values were not changed.',"chat.recovery.keptForwardClosed":"The remaining planned steps will not run.","chat.recovery.keptAlready":"These changes were already kept for this plan; this request did not change them.","chat.recovery.leaveCompletedByKeep":'Your choice to leave the current results was saved; "Keep these changes" then closed the remaining choice.',"chat.recovery.leaveCoveredByKeep":'Your choice to leave the current results is covered by "Keep these changes".',"chat.recovery.leaveNeedsReview":"Your choice to leave was not saved because the results changed. Review the updated step results.","chat.recovery.leaveSafetyNeedsReview":"The run and any remaining scheduled actions were stopped. Your choice to leave was not saved because results changed. Review the updated steps.","chat.recovery.laterReceiptAfterKeep":`A step's status was confirmed after "Keep these changes" was saved. Review the updated results.`,"chat.recovery.undoSelected":"Undo selected steps","chat.recovery.continue":"Continue","chat.recovery.statusProposal":"Proposed plan","chat.recovery.statusCompleted":"Completed","chat.recovery.stepsNotKnownYet":"Step results are not known yet.","chat.recovery.stepsUnknown":"{count, plural, one {# step could not be confirmed} other {# steps could not be confirmed}}. Check its status before choosing what to do.","chat.recovery.stepsNotDone":"{count, plural, one {# step was not done} other {# steps were not done}}. Review the results.","chat.recovery.laterReportAfterKeep":'After "Keep these changes" was saved, a step was reported differently. The saved results have not changed; review the newer report below.',"chat.recovery.reportedDifferently":"Reported differently later","chat.recovery.notAvailableYet":"This action is not available in this version of the app. You can leave the changes as they are, or ask for a new plan.","chat.recovery.actionLoading":"Getting this action ready\u2026","chat.recovery.retryAfterSeconds":"{seconds, plural, one {You can try again in # second.} other {You can try again in # seconds.}}","chat.recovery.keepPending":'Saving "Keep these changes"\u2026',"chat.recovery.keepRemainingSteps":"{count, plural, one {# planned step will not run.} other {# planned steps will not run.}}","chat.recovery.signInRequired":"Sign in again, then try this request again.","chat.recovery.requestRefused":"The site refused this request. Contact the site administrator if this continues.","chat.recovery.acknowledgmentAhead":"This choice was based on newer results than the site has. Refresh and choose again.","chat.recovery.cancelCoveredByLeaveSafety":"The plan had already been stopped by a choice to leave, so cancellation was not needed.","chat.recovery.cancelCoveredByStopNoChanges":"The plan had already stopped before it ran. Nothing was changed.","chat.recovery.cancelDefeatedByStop":"The plan had already been stopped, so cancellation was not needed.","chat.recovery.choiceReplacedByStop":"The earlier choice was applied; the plan was then stopped.","chat.recovery.initialTargetClosed":"The original action is already closed. Its results are kept.","chat.recovery.keepDefeatedByWinner":'"Keep these changes" was not saved because another decision was recorded first. Read the current results and choose again.',"chat.recovery.leaveDefeatedByWinner":"The choice to leave changes as they are was not saved because another decision was recorded first.","chat.recovery.leaveNoDecision":"There is no current result to leave as it is.","chat.recovery.leaveSafetyAlreadyStopped":"The plan was already stopped. A decision about the recorded changes is still needed.","chat.recovery.reopenedEvidence":"A newer step status reopened this decision. Review the updated results.","chat.recovery.winnerStopUser":"A stop was requested for this plan.","chat.recovery.winnerStopConnection":"This plan stopped because the connection was lost.","chat.recovery.winnerStopRenewal":"This plan stopped because permission to continue could not be renewed.","chat.recovery.winnerStopStep":"This plan stopped after a step failed.","chat.recovery.winnerStopStepUp":"This plan stopped because the required verification was not completed.","chat.recovery.winnerStopIdentity":"This plan stopped because its execution identity could no longer be verified.","chat.recovery.winnerStopAttribution":"This plan stopped because a step's recorded result could not be confirmed.","chat.recovery.winnerStopChanged":"This plan stopped because its reviewed steps changed.","chat.recovery.winnerStopAdapter":"This plan stopped because required execution details could not be received.","chat.recovery.winnerCancel":"Cancelling this plan was requested.","chat.recovery.winnerLeave":"A choice to leave the changes as they are was recorded.","chat.recovery.winnerKeep":'"Keep these changes" was recorded for this plan.',"chat.recovery.stepStatusChanged":"Step status updated.","chat.recovery.stepNotKnownYet":"Not known yet"},se={"chat.recovery.heading":"\u68C0\u67E5\u8BA1\u5212\u72B6\u6001","chat.recovery.updateToControl":"\u8BF7\u66F4\u65B0\u5E94\u7528\u540E\u518D\u64CD\u4F5C\u6B64\u8BA1\u5212\u3002\u6B64\u5904\u4ECD\u663E\u793A\u5DF2\u8BB0\u5F55\u7684\u72B6\u6001\u3002","chat.recovery.stopping":"\u6B63\u5728\u505C\u6B62\u540E\u7EED\u6B65\u9AA4\u2026","chat.recovery.cancelling":"\u6B63\u5728\u53D6\u6D88\u2026","chat.recovery.leavePending":"\u6B63\u5728\u4FDD\u5B58\u4FDD\u6301\u73B0\u72B6\u7684\u9009\u62E9\u2026","chat.recovery.currentRunning":"\u6B64\u8BA1\u5212\u76EE\u524D\u6B63\u5728\u6267\u884C\u3002\u8BF7\u5148\u505C\u6B62\u6267\u884C\uFF0C\u518D\u5BA1\u9605\u5176\u4ED6\u64CD\u4F5C\u3002","chat.recovery.currentStopped":"\u6B64\u8BA1\u5212\u5DF2\u505C\u6B62\u3002\u5DF2\u8BB0\u5F55\u7684\u7ED3\u679C\u53EF\u80FD\u5305\u542B\u5DF2\u7ECF\u751F\u6548\u7684\u4FEE\u6539\u3002","chat.recovery.cancelledNoChanges":"\u5DF2\u53D6\u6D88\uFF0C\u672A\u505A\u4EFB\u4F55\u4FEE\u6539\u3002","chat.recovery.leftKnown":"\u5DF2\u4FDD\u6301\u73B0\u72B6\u3002\u73B0\u6709\u4FEE\u6539\u5C06\u4E88\u4EE5\u4FDD\u7559\uFF1B\u6B64\u8BA1\u5212\u4E0D\u4F1A\u518D\u6267\u884C\u540E\u7EED\u6B65\u9AA4\u3002","chat.recovery.leftUnconfirmed":"\u5DF2\u4FDD\u6301\u73B0\u72B6\uFF1B\u6709 {count} \u4E2A\u6B65\u9AA4\u7684\u72B6\u6001\u65E0\u6CD5\u786E\u8BA4\u3002","chat.recovery.keptKnown":"\u5DF2\u4FDD\u7559\u5F53\u524D\u7ED3\u679C\uFF1B\u6B64\u8BA1\u5212\u4E0D\u4F1A\u518D\u6267\u884C\u540E\u7EED\u6B65\u9AA4\u3002","chat.recovery.done":"\u5DF2\u5B8C\u6210","chat.recovery.notDone":"\u672A\u5B8C\u6210","chat.recovery.unknown":"\u65E0\u6CD5\u786E\u8BA4","chat.recovery.stopped":"\u5DF2\u505C\u6B62\u3002\u90E8\u5206\u4FEE\u6539\u53EF\u80FD\u5DF2\u7ECF\u751F\u6548\u3002","chat.recovery.capabilityMissing":"\u6B64\u7AD9\u70B9\u4E0D\u652F\u6301\u6B64\u6062\u590D\u64CD\u4F5C\u3002","chat.recovery.intentPendingReason":"\u8BF7\u7B49\u5F85\u6B64\u8BF7\u6C42\u5904\u7406\u5B8C\u6210\u540E\uFF0C\u518D\u786E\u8BA4\u5176\u4ED6\u64CD\u4F5C\u3002","chat.recovery.refreshConversation":"\u5237\u65B0\u5BF9\u8BDD","chat.recovery.hostGuidance":"\u5982\u679C\u6B64\u95EE\u9898\u6301\u7EED\u51FA\u73B0\uFF0C\u8BF7\u8054\u7CFB\u7AD9\u70B9\u7BA1\u7406\u5458\u3002","chat.recovery.checkIntentStatus":"\u68C0\u67E5\u8BF7\u6C42\u72B6\u6001","chat.recovery.checkSavedChoice":"\u68C0\u67E5\u9009\u62E9\u662F\u5426\u5DF2\u4FDD\u5B58","chat.recovery.checkKeepStatus":"\u68C0\u67E5\u4FDD\u7559\u51B3\u5B9A\u72B6\u6001","chat.recovery.keepChanges":"\u4FDD\u7559\u8FD9\u4E9B\u4FEE\u6539","chat.recovery.leave":"\u4FDD\u6301\u73B0\u72B6","chat.recovery.confirmKeepForwardOnly":"\u662F\u5426\u4FDD\u7559\u5F53\u524D\u7ED3\u679C\u5E76\u5173\u95ED\u6B64\u8BA1\u5212\uFF1F\u5269\u4F59\u8BA1\u5212\u6B65\u9AA4\u5C06\u4E0D\u518D\u6267\u884C\u3002\u6B64\u8BA1\u5212\u6CA1\u6709\u53EF\u7ED3\u675F\u7684\u64A4\u9500\u9009\u9879\uFF0C\u7AD9\u70B9\u4E2D\u7684\u503C\u4E5F\u4E0D\u4F1A\u66F4\u6539\u3002","chat.recovery.confirmEndRetention":"\u662F\u5426\u4FDD\u7559\u5F53\u524D\u7ED3\u679C\u5E76\u7ED3\u675F\u6B64\u8BA1\u5212\u8BB0\u5F55\u7684\u4FDD\u7559\uFF1F\u6CA1\u6709\u5269\u4F59\u8BA1\u5212\u6B65\u9AA4\u6216\u64A4\u9500\u9009\u9879\u3002\u7AD9\u70B9\u4E2D\u7684\u503C\u4E0D\u4F1A\u66F4\u6539\u3002","chat.recovery.keepReasonActive":"\u5DF2\u786E\u8BA4\u7684\u52A8\u4F5C\u4ECD\u5728\u6267\u884C\u6216\u6682\u505C\u4E2D\u3002\u8BF7\u5148\u67E5\u770B\u8BE5\u52A8\u4F5C\u3002","chat.recovery.keepReasonUnknown":"\u90E8\u5206\u7ED3\u679C\u65E0\u6CD5\u786E\u8BA4\u3002\u8BF7\u5148\u68C0\u67E5\u5176\u72B6\u6001\u3002","chat.recovery.keepReasonUnavailable":"\u6B64\u64CD\u4F5C\u5728\u5F53\u524D\u8D26\u6237\u6216\u5BF9\u8BDD\u4E2D\u4E0D\u53EF\u7528\u3002\u8BF7\u67E5\u770B\u53EF\u8BBF\u95EE\u7684\u72B6\u6001\u6216\u8054\u7CFB\u670D\u52A1\u63D0\u4F9B\u65B9\u3002","chat.recovery.keepReasonChanged":"\u5148\u524D\u5BA1\u9605\u7684\u7ED3\u679C\u5DF2\u53D8\u66F4\u3002\u8BF7\u5148\u67E5\u770B\u5F53\u524D\u7ED3\u679C\uFF0C\u518D\u4F5C\u9009\u62E9\u3002","chat.recovery.keepReasonPreview":"\u53E6\u4E00\u4E2A\u5BA1\u9605\u4ECD\u5904\u4E8E\u6253\u5F00\u72B6\u6001\u3002\u8BF7\u5148\u5904\u7406\u8BE5\u5BA1\u9605\uFF0C\u518D\u4F5C\u9009\u62E9\u3002","chat.recovery.keepReasonNoSource":"\u5F53\u524D\u6CA1\u6709\u53EF\u901A\u8FC7\u201C\u4FDD\u7559\u8FD9\u4E9B\u4FEE\u6539\u201D\u51B3\u5B9A\u5173\u95ED\u7684\u7ED3\u679C\u3002","chat.recovery.alreadyKept":"\u5F53\u524D\u7ED3\u679C\u5DF2\u4FDD\u7559\u3002","chat.recovery.stopNotSent":"\u505C\u6B62\u8BF7\u6C42\u672A\u80FD\u53D1\u9001\u3002\u5DF2\u53D1\u9001\u7684\u6B65\u9AA4\u4ECD\u53EF\u80FD\u5B8C\u6210\u3002","chat.recovery.stopNotSentElsewhere":"\u505C\u6B62\u8BF7\u6C42\u672A\u80FD\u53D1\u9001\u3002\u6B64\u8BA1\u5212\u53EF\u80FD\u4ECD\u5728\u53E6\u4E00\u4E2A\u7A97\u53E3\u6216\u8BBE\u5907\u4E2D\u6267\u884C\u3002","chat.recovery.stopUnconfirmed":"\u65E0\u6CD5\u786E\u8BA4\u662F\u5426\u5DF2\u505C\u6B62\u3002\u8BF7\u91CD\u65B0\u8FDE\u63A5\u540E\u68C0\u67E5\u5404\u6B65\u9AA4\u3002","chat.recovery.cancelNotSent":"\u53D6\u6D88\u8BF7\u6C42\u672A\u80FD\u53D1\u9001\u3002\u8BF7\u5148\u68C0\u67E5\u5F53\u524D\u72B6\u6001\uFF0C\u518D\u91CD\u65B0\u9009\u62E9\u3002","chat.recovery.cancelUnconfirmed":"\u65E0\u6CD5\u786E\u8BA4\u662F\u5426\u5DF2\u53D6\u6D88\u3002\u8BF7\u68C0\u67E5\u8BF7\u6C42\u72B6\u6001\u3002","chat.recovery.reviewCancelNotSent":"\u53D6\u6D88\u5BA1\u9605\u7684\u8BF7\u6C42\u672A\u80FD\u53D1\u9001\u3002\u8BF7\u5148\u68C0\u67E5\u5F53\u524D\u72B6\u6001\uFF0C\u518D\u91CD\u65B0\u9009\u62E9\u3002","chat.recovery.reviewCancelUnconfirmed":"\u65E0\u6CD5\u786E\u8BA4\u662F\u5426\u5DF2\u53D6\u6D88\u5BA1\u9605\u3002\u8BF7\u68C0\u67E5\u8BF7\u6C42\u72B6\u6001\u3002","chat.recovery.leaveNotSent":"\u60A8\u7684\u9009\u62E9\u672A\u80FD\u4FDD\u5B58\u3002\u8BF7\u5148\u68C0\u67E5\u5F53\u524D\u72B6\u6001\uFF0C\u518D\u91CD\u65B0\u9009\u62E9\u3002","chat.recovery.leaveUnconfirmed":"\u65E0\u6CD5\u786E\u8BA4\u60A8\u7684\u9009\u62E9\u662F\u5426\u5DF2\u4FDD\u5B58\u3002\u8BF7\u68C0\u67E5\u8BF7\u6C42\u72B6\u6001\u3002","chat.recovery.keepNotSent":"\u60A8\u7684\u201C\u4FDD\u7559\u8FD9\u4E9B\u4FEE\u6539\u201D\u9009\u62E9\u672A\u80FD\u53D1\u9001\u3002\u8BF7\u5148\u68C0\u67E5\u6B64\u524D\u5F85\u786E\u8BA4\u7684\u9009\u62E9\uFF0C\u518D\u91CD\u8BD5\u3002","chat.recovery.keepUnconfirmed":"\u65E0\u6CD5\u786E\u8BA4\u662F\u5426\u5DF2\u4FDD\u5B58\u201C\u4FDD\u7559\u8FD9\u4E9B\u4FEE\u6539\u201D\u3002\u8BF7\u5148\u68C0\u67E5\u72B6\u6001\uFF0C\u518D\u4F5C\u9009\u62E9\u3002","chat.recovery.requestAlreadyStopped":"\u60A8\u8981\u6C42\u505C\u6B62\u7684\u5BF9\u5E94\u6267\u884C\u5DF2\u505C\u6B62\u3002","chat.recovery.requestTargetStopped":"\u5BF9\u5E94\u6267\u884C\u5DF2\u505C\u6B62\u3002","chat.recovery.requestedIntentApplied":"\u60A8\u7684\u5148\u524D\u8BF7\u6C42\u5DF2\u5BF9\u539F\u5B9A\u76EE\u6807\u751F\u6548\u3002","chat.recovery.requestedIntentNotApplied":"\u60A8\u7684\u5148\u524D\u8BF7\u6C42\u672A\u5BF9\u539F\u5B9A\u76EE\u6807\u751F\u6548\u3002","chat.recovery.intentSuperseded":"\u5F53\u524D\u5DF2\u6709\u65B0\u7684\u72EC\u7ACB\u51B3\u5B9A\u3002\u6B64\u8BF7\u6C42\u4E0D\u80FD\u66F4\u6539\u8BE5\u51B3\u5B9A\u3002","chat.recovery.intentTargetChanged":"\u5F53\u524D\u5DF2\u6709\u65B0\u7684\u6267\u884C\u6216\u51B3\u5B9A\u3002\u6B64\u8BF7\u6C42\u672A\u6539\u53D8\u8BE5\u72B6\u6001\u3002","chat.recovery.alreadyClosedByWinner":"\u6B64\u8BA1\u5212\u5DF2\u7ECF\u505C\u6B62\u6216\u5173\u95ED\u3002\u60A8\u7684\u8BF7\u6C42\u672A\u6539\u53D8\u5F53\u524D\u72B6\u6001\u3002","chat.recovery.alreadyStoppedNeedsDecision":"\u6B64\u8BA1\u5212\u5DF2\u7ECF\u505C\u6B62\u3002\u4ECD\u9700\u5BF9\u5DF2\u8BB0\u5F55\u7684\u4FEE\u6539\u4F5C\u51FA\u51B3\u5B9A\u3002","chat.recovery.cancelStarted":"\u6B64\u8BA1\u5212\u5DF2\u7ECF\u5F00\u59CB\u6267\u884C\u3002\u540E\u7EED\u6B65\u9AA4\u5DF2\u505C\u6B62\uFF1B\u90E8\u5206\u4FEE\u6539\u53EF\u80FD\u5DF2\u7ECF\u751F\u6548\u3002","chat.recovery.stoppedNoChanges":"\u5DF2\u5728\u6267\u884C\u524D\u505C\u6B62\u3002\u672A\u505A\u4EFB\u4F55\u4FEE\u6539\u3002","chat.recovery.initialTargetSettled":"\u539F\u64CD\u4F5C\u5DF2\u5B8C\u6210\u3002\u5176\u7ED3\u679C\u5C06\u4E88\u4EE5\u4FDD\u7559\uFF1B\u672A\u64A4\u9500\u4EFB\u4F55\u4FEE\u6539\u3002","chat.recovery.initialTargetStopped":"\u539F\u64CD\u4F5C\u5DF2\u505C\u6B62\u3002\u5404\u6B65\u9AA4\u7684\u7ED3\u679C\u5C06\u4E88\u4EE5\u4FDD\u7559\uFF1B\u672A\u64A4\u9500\u4EFB\u4F55\u4FEE\u6539\u3002","chat.recovery.reviewTargetSettled":"\u6B64\u6B21\u5BA1\u9605\u5DF2\u786E\u8BA4\u5E76\u6267\u884C\u7ED3\u675F\u3002\u5DF2\u8BB0\u5F55\u7684\u7ED3\u679C\u5C06\u4E88\u4EE5\u4FDD\u7559\u3002","chat.recovery.reviewTargetStopped":"\u6B64\u6B21\u5BA1\u9605\u5DF2\u786E\u8BA4\u3002\u5BF9\u5E94\u6267\u884C\u5DF2\u505C\u6B62\uFF1B\u5DF2\u8BB0\u5F55\u7684\u5404\u6B65\u9AA4\u7ED3\u679C\u5C06\u4E88\u4EE5\u4FDD\u7559\u3002","chat.recovery.planClosedKept":"\u60A8\u7684\u201C\u4FDD\u7559\u8FD9\u4E9B\u4FEE\u6539\u201D\u9009\u62E9\u5DF2\u4FDD\u5B58\uFF0C\u8BA1\u5212\u5DF2\u5173\u95ED\u3002\u7AD9\u70B9\u4E2D\u7684\u503C\u672A\u88AB\u66F4\u6539\u3002","chat.recovery.keptForwardClosed":"\u5269\u4F59\u8BA1\u5212\u6B65\u9AA4\u5C06\u4E0D\u518D\u6267\u884C\u3002","chat.recovery.keptAlready":"\u6B64\u8BA1\u5212\u7684\u4FEE\u6539\u6B64\u524D\u5DF2\u88AB\u4FDD\u7559\uFF1B\u672C\u6B21\u8BF7\u6C42\u672A\u4F5C\u66F4\u6539\u3002","chat.recovery.leaveCompletedByKeep":"\u60A8\u4FDD\u6301\u5F53\u524D\u7ED3\u679C\u7684\u9009\u62E9\u5DF2\u4FDD\u5B58\uFF1B\u968F\u540E\u201C\u4FDD\u7559\u8FD9\u4E9B\u4FEE\u6539\u201D\u51B3\u5B9A\u7ED3\u675F\u4E86\u5269\u4F59\u9009\u9879\u3002","chat.recovery.leaveCoveredByKeep":"\u60A8\u4FDD\u6301\u5F53\u524D\u7ED3\u679C\u7684\u9009\u62E9\u5DF2\u5305\u542B\u5728\u201C\u4FDD\u7559\u8FD9\u4E9B\u4FEE\u6539\u201D\u51B3\u5B9A\u4E2D\u3002","chat.recovery.leaveNeedsReview":"\u7531\u4E8E\u7ED3\u679C\u5DF2\u53D8\u66F4\uFF0C\u4FDD\u6301\u73B0\u72B6\u7684\u9009\u62E9\u672A\u80FD\u4FDD\u5B58\u3002\u8BF7\u67E5\u770B\u66F4\u65B0\u540E\u7684\u5404\u6B65\u9AA4\u7ED3\u679C\u3002","chat.recovery.leaveSafetyNeedsReview":"\u5F53\u524D\u6267\u884C\u53CA\u5269\u4F59\u5B9A\u65F6\u52A8\u4F5C\uFF08\u5982\u6709\uFF09\u5DF2\u505C\u6B62\u3002\u7531\u4E8E\u7ED3\u679C\u5DF2\u53D8\u66F4\uFF0C\u4FDD\u6301\u73B0\u72B6\u7684\u9009\u62E9\u672A\u80FD\u4FDD\u5B58\u3002\u8BF7\u67E5\u770B\u66F4\u65B0\u540E\u7684\u5404\u6B65\u9AA4\u3002","chat.recovery.laterReceiptAfterKeep":"\u4FDD\u5B58\u201C\u4FDD\u7559\u8FD9\u4E9B\u4FEE\u6539\u201D\u51B3\u5B9A\u540E\uFF0C\u4E00\u4E2A\u6B65\u9AA4\u7684\u72B6\u6001\u5F97\u5230\u4E86\u786E\u8BA4\u3002\u8BF7\u67E5\u770B\u66F4\u65B0\u540E\u7684\u7ED3\u679C\u3002","chat.recovery.undoSelected":"\u64A4\u9500\u6240\u9009\u6B65\u9AA4","chat.recovery.continue":"\u7EE7\u7EED","chat.recovery.statusProposal":"\u62DF\u8BAE\u8BA1\u5212","chat.recovery.statusCompleted":"\u5DF2\u5B8C\u6210","chat.recovery.stepsNotKnownYet":"\u5404\u6B65\u9AA4\u7684\u7ED3\u679C\u6682\u672A\u83B7\u77E5\u3002","chat.recovery.stepsUnknown":"\u6709 {count} \u4E2A\u6B65\u9AA4\u7684\u72B6\u6001\u65E0\u6CD5\u786E\u8BA4\u3002\u8BF7\u5148\u68C0\u67E5\u72B6\u6001\uFF0C\u518D\u51B3\u5B9A\u4E0B\u4E00\u6B65\u3002","chat.recovery.stepsNotDone":"\u6709 {count} \u4E2A\u6B65\u9AA4\u672A\u5B8C\u6210\u3002\u8BF7\u67E5\u770B\u7ED3\u679C\u3002","chat.recovery.laterReportAfterKeep":"\u4FDD\u5B58\u201C\u4FDD\u7559\u8FD9\u4E9B\u4FEE\u6539\u201D\u540E\uFF0C\u6709\u6B65\u9AA4\u51FA\u73B0\u4E86\u4E0D\u540C\u7684\u72B6\u6001\u62A5\u544A\u3002\u5DF2\u4FDD\u5B58\u7684\u7ED3\u679C\u6CA1\u6709\u6539\u53D8\uFF1B\u8BF7\u67E5\u770B\u4E0B\u65B9\u7684\u65B0\u62A5\u544A\u3002","chat.recovery.reportedDifferently":"\u4E4B\u540E\u7684\u62A5\u544A\u4E0E\u6B64\u4E0D\u540C","chat.recovery.notAvailableYet":"\u6B64\u7248\u672C\u7684\u5E94\u7528\u6682\u4E0D\u652F\u6301\u6B64\u64CD\u4F5C\u3002\u60A8\u53EF\u4EE5\u4FDD\u6301\u73B0\u72B6\uFF0C\u6216\u63D0\u51FA\u65B0\u8BA1\u5212\u3002","chat.recovery.actionLoading":"\u6B63\u5728\u51C6\u5907\u6B64\u64CD\u4F5C\u2026","chat.recovery.retryAfterSeconds":"{seconds} \u79D2\u540E\u53EF\u4EE5\u91CD\u8BD5\u3002","chat.recovery.keepPending":"\u6B63\u5728\u4FDD\u5B58\u201C\u4FDD\u7559\u8FD9\u4E9B\u4FEE\u6539\u201D\u2026","chat.recovery.keepRemainingSteps":"\u5C06\u6709 {count} \u4E2A\u8BA1\u5212\u6B65\u9AA4\u4E0D\u518D\u6267\u884C\u3002","chat.recovery.signInRequired":"\u8BF7\u91CD\u65B0\u767B\u5F55\uFF0C\u7136\u540E\u518D\u8BD5\u4E00\u6B21\u6B64\u8BF7\u6C42\u3002","chat.recovery.requestRefused":"\u7AD9\u70B9\u62D2\u7EDD\u4E86\u6B64\u8BF7\u6C42\u3002\u5982\u679C\u6B64\u95EE\u9898\u6301\u7EED\u51FA\u73B0\uFF0C\u8BF7\u8054\u7CFB\u7AD9\u70B9\u7BA1\u7406\u5458\u3002","chat.recovery.acknowledgmentAhead":"\u6B64\u9009\u62E9\u6240\u4F9D\u636E\u7684\u7ED3\u679C\u6BD4\u7AD9\u70B9\u8BB0\u5F55\u7684\u66F4\u65B0\u3002\u8BF7\u5237\u65B0\u540E\u91CD\u65B0\u9009\u62E9\u3002","chat.recovery.cancelCoveredByLeaveSafety":"\u6B64\u8BA1\u5212\u5DF2\u56E0\u4FDD\u6301\u73B0\u72B6\u7684\u9009\u62E9\u800C\u505C\u6B62\uFF0C\u65E0\u9700\u518D\u53D6\u6D88\u3002","chat.recovery.cancelCoveredByStopNoChanges":"\u6B64\u8BA1\u5212\u5DF2\u5728\u6267\u884C\u524D\u505C\u6B62\uFF0C\u672A\u505A\u4EFB\u4F55\u4FEE\u6539\u3002","chat.recovery.cancelDefeatedByStop":"\u6B64\u8BA1\u5212\u5DF2\u7ECF\u505C\u6B62\uFF0C\u65E0\u9700\u518D\u53D6\u6D88\u3002","chat.recovery.choiceReplacedByStop":"\u5148\u524D\u7684\u9009\u62E9\u5DF2\u751F\u6548\uFF0C\u968F\u540E\u8BA1\u5212\u5DF2\u505C\u6B62\u3002","chat.recovery.initialTargetClosed":"\u539F\u64CD\u4F5C\u5DF2\u5173\u95ED\uFF0C\u5176\u7ED3\u679C\u5C06\u4E88\u4EE5\u4FDD\u7559\u3002","chat.recovery.keepDefeatedByWinner":"\u7531\u4E8E\u5DF2\u5148\u8BB0\u5F55\u4E86\u5176\u4ED6\u51B3\u5B9A\uFF0C\u201C\u4FDD\u7559\u8FD9\u4E9B\u4FEE\u6539\u201D\u672A\u80FD\u4FDD\u5B58\u3002\u8BF7\u67E5\u770B\u5F53\u524D\u7ED3\u679C\uFF0C\u518D\u4F5C\u9009\u62E9\u3002","chat.recovery.leaveDefeatedByWinner":"\u7531\u4E8E\u5DF2\u5148\u8BB0\u5F55\u4E86\u5176\u4ED6\u51B3\u5B9A\uFF0C\u4FDD\u6301\u73B0\u72B6\u7684\u9009\u62E9\u672A\u80FD\u4FDD\u5B58\u3002","chat.recovery.leaveNoDecision":"\u5F53\u524D\u6CA1\u6709\u53EF\u4EE5\u4FDD\u6301\u73B0\u72B6\u7684\u7ED3\u679C\u3002","chat.recovery.leaveSafetyAlreadyStopped":"\u6B64\u8BA1\u5212\u5DF2\u7ECF\u505C\u6B62\u3002\u4ECD\u9700\u5BF9\u5DF2\u8BB0\u5F55\u7684\u4FEE\u6539\u4F5C\u51FA\u51B3\u5B9A\u3002","chat.recovery.reopenedEvidence":"\u6709\u6B65\u9AA4\u7684\u65B0\u72B6\u6001\u4F7F\u6B64\u51B3\u5B9A\u91CD\u65B0\u6253\u5F00\u3002\u8BF7\u67E5\u770B\u66F4\u65B0\u540E\u7684\u7ED3\u679C\u3002","chat.recovery.winnerStopUser":"\u5DF2\u6709\u4EBA\u8981\u6C42\u505C\u6B62\u6B64\u8BA1\u5212\u3002","chat.recovery.winnerStopConnection":"\u6B64\u8BA1\u5212\u56E0\u8FDE\u63A5\u4E2D\u65AD\u800C\u505C\u6B62\u3002","chat.recovery.winnerStopRenewal":"\u6B64\u8BA1\u5212\u56E0\u65E0\u6CD5\u7EED\u671F\u6267\u884C\u6743\u9650\u800C\u505C\u6B62\u3002","chat.recovery.winnerStopStep":"\u6B64\u8BA1\u5212\u5728\u4E00\u4E2A\u6B65\u9AA4\u5931\u8D25\u540E\u505C\u6B62\u3002","chat.recovery.winnerStopStepUp":"\u6B64\u8BA1\u5212\u56E0\u672A\u5B8C\u6210\u6240\u9700\u9A8C\u8BC1\u800C\u505C\u6B62\u3002","chat.recovery.winnerStopIdentity":"\u6B64\u8BA1\u5212\u56E0\u65E0\u6CD5\u7EE7\u7EED\u9A8C\u8BC1\u6267\u884C\u8EAB\u4EFD\u800C\u505C\u6B62\u3002","chat.recovery.winnerStopAttribution":"\u6B64\u8BA1\u5212\u56E0\u65E0\u6CD5\u786E\u8BA4\u4E00\u4E2A\u6B65\u9AA4\u7684\u8BB0\u5F55\u7ED3\u679C\u800C\u505C\u6B62\u3002","chat.recovery.winnerStopChanged":"\u6B64\u8BA1\u5212\u56E0\u5DF2\u5BA1\u9605\u7684\u6B65\u9AA4\u53D1\u751F\u53D8\u66F4\u800C\u505C\u6B62\u3002","chat.recovery.winnerStopAdapter":"\u6B64\u8BA1\u5212\u56E0\u672A\u80FD\u63A5\u6536\u6240\u9700\u7684\u6267\u884C\u4FE1\u606F\u800C\u505C\u6B62\u3002","chat.recovery.winnerCancel":"\u5DF2\u6709\u4EBA\u8981\u6C42\u53D6\u6D88\u6B64\u8BA1\u5212\u3002","chat.recovery.winnerLeave":"\u5DF2\u8BB0\u5F55\u4FDD\u6301\u73B0\u72B6\u7684\u9009\u62E9\u3002","chat.recovery.winnerKeep":"\u5DF2\u4E3A\u6B64\u8BA1\u5212\u8BB0\u5F55\u201C\u4FDD\u7559\u8FD9\u4E9B\u4FEE\u6539\u201D\u3002","chat.recovery.stepStatusChanged":"\u6B65\u9AA4\u72B6\u6001\u5DF2\u66F4\u65B0\u3002","chat.recovery.stepNotKnownYet":"\u6682\u672A\u83B7\u77E5"};var _jsxruntime = require('react/jsx-runtime');_chunkUYR3UEIWcjs.q.call(void 0, ce,se);_chunkUYR3UEIWcjs.q.call(void 0, _chunkVGGJGRNKcjs.a,_chunkVGGJGRNKcjs.b);var p=(t,y)=>t(y.key,y.values),ue={stop:["stop"],decline:["cancel-initial","cancel-review"],leave:["leave"],keep:["keep"]},ge={stop:"chat.recovery.stopping","cancel-initial":"chat.recovery.cancelling","cancel-review":"chat.recovery.cancelling",leave:"chat.recovery.leavePending",keep:"chat.recovery.keepPending"},T=t=>_optionalChain([t, 'access', _2 => _2.intent, 'optionalAccess', _3 => _3.status])==="sending"?ge[t.intent.kind]:void 0,fe=(t,y)=>[p(y,t.status.label),...T(t)?[y(T(t))]:[],...t.steps.map(i=>`${i.stepId}:${i.truth}`),...t.lines.map(i=>p(y,i)),...t.notice.map(i=>p(y,i))].join(`
2
+ `);function we({view:t,onPress:y,slots:i,sheet:u,hide:ie=[]}){let{format:n,primitives:x,planLabels:he}=_chunkUYR3UEIWcjs.y.call(void 0, ),M=x.button,de=x.drawer,le=_chunkUYR3UEIWcjs.l.call(void 0, "keep-sheet"),pe=_chunkUYR3UEIWcjs.h.call(void 0, !!u,_optionalChain([_chunkUYR3UEIWcjs.g.call(void 0, ), 'optionalAccess', _4 => _4.owner, 'call', _5 => _5()]),()=>_optionalChain([u, 'optionalAccess', _6 => _6.onCancel, 'call', _7 => _7()])),q=_react.useRef.call(void 0, null),K=_react.useRef.call(void 0, null),h=_chunkUYR3UEIWcjs.g.call(void 0, ),d=_react.useRef.call(void 0, void 0),C=_react.useRef.call(void 0, void 0),W=_react.useRef.call(void 0, void 0),$=_react.useRef.call(void 0, void 0),P=_react.useRef.call(void 0, void 0),O=_react.useRef.call(void 0, void 0),[N,V]=_react.useState.call(void 0, null),G=_react.useId.call(void 0, ),S=t.status,r=t.alert;_react.useEffect.call(void 0, ()=>{let e=`${_optionalChain([h, 'optionalAccess', _8 => _8.owner, 'call', _9 => _9()])}|${t.planId}`;O.current!==e&&(O.current=e,P.current=void 0);let c=fe(t,n),g=P.current;if(P.current=c,g===c)return;if(g===void 0){let s=T(t);s&&V(b=>({serial:(_nullishCoalesce(_optionalChain([b, 'optionalAccess', _10 => _10.serial]), () => (0)))+1,text:n(s)}));return}let l=[],k=new Set(g.split(`
3
+ `));t.steps.some(s=>!k.has(`${s.stepId}:${s.truth}`))&&l.push(n("chat.recovery.stepStatusChanged"));let a=p(n,S.label);k.has(a)||l.push(a);let f=T(t);f&&!k.has(n(f))&&n(f)!==a&&l.push(n(f));for(let s of[...t.lines,...t.notice]){let b=p(n,s);k.has(b)||l.push(b)}l.length&&V(s=>({serial:(_nullishCoalesce(_optionalChain([s, 'optionalAccess', _11 => _11.serial]), () => (0)))+1,text:l.join(" ")}))}),_react.useEffect.call(void 0, ()=>()=>{_chunkUYR3UEIWcjs.d.call(void 0, _optionalChain([d, 'access', _12 => _12.current, 'optionalAccess', _13 => _13.origin])),_chunkUYR3UEIWcjs.d.call(void 0, _optionalChain([C, 'access', _14 => _14.current, 'optionalAccess', _15 => _15.origin])),d.current=void 0,C.current=void 0},[t.planId]);let m=_optionalChain([t, 'access', _16 => _16.intent, 'optionalAccess', _17 => _17.kind]);_react.useEffect.call(void 0, ()=>{!m&&!r&&(_chunkUYR3UEIWcjs.d.call(void 0, _optionalChain([d, 'access', _18 => _18.current, 'optionalAccess', _19 => _19.origin])),d.current=void 0)},[m,r]),_react.useEffect.call(void 0, ()=>{if(!r)return;let e=_optionalChain([K, 'access', _20 => _20.current, 'optionalAccess', _21 => _21.ownerDocument]);if(!e||!h)return;if(r.restoreFocus){if($.current===r.serial)return;$.current=r.serial;let a=C.current;if(C.current=void 0,!a)return;let f=_chunkUYR3UEIWcjs.a.call(void 0, e),s=!a.target.isConnected&&(!f||f===e.body)?a.target:null;if(!_chunkUYR3UEIWcjs.b.call(void 0, K.current,f)&&!s)return _chunkUYR3UEIWcjs.d.call(void 0, a.origin);let b=_chunkUYR3UEIWcjs.c.call(void 0, a.previous)&&_chunkUYR3UEIWcjs.b.call(void 0, h.root(),a.previous)?a.previous:q.current,J=a.origin.owner;_chunkUYR3UEIWcjs.j.call(void 0, h,b,{origin:a.origin,owner:J,stillCurrent:()=>h.owner()===J,removed:s,fallback:q.current});return}if(W.current===r.serial)return;W.current=r.serial;let c=d.current;if(!c||!m||!c.kinds.includes(m))return;d.current=void 0;let g=_chunkUYR3UEIWcjs.a.call(void 0, e);if(_chunkUYR3UEIWcjs.i.call(void 0, g))return _chunkUYR3UEIWcjs.d.call(void 0, c.origin);let l=_optionalChain([K, 'access', _22 => _22.current, 'optionalAccess', _23 => _23.querySelector, 'call', _24 => _24(r.action==="checkStatus"?'[data-action="status"]':r.action==="retry"||r.action==="wait"?'[data-action="retry"]':"[data-guidance]")]),k=c.origin.owner;l&&_chunkUYR3UEIWcjs.j.call(void 0, h,l,{origin:c.origin,owner:k,stillCurrent:()=>h.owner()===k,keep:!0})&&(_chunkUYR3UEIWcjs.d.call(void 0, _optionalChain([C, 'access', _25 => _25.current, 'optionalAccess', _26 => _26.origin])),C.current={origin:c.origin,target:l,previous:g})},[r,h,m]);let H=e=>{let c=_optionalChain([h, 'optionalAccess', _27 => _27.originFor, 'call', _28 => _28(`intent:${t.planId}:${e}`)]),g=_nullishCoalesce(ue[e], () => ((m?[m]:[])));_chunkUYR3UEIWcjs.d.call(void 0, _optionalChain([d, 'access', _29 => _29.current, 'optionalAccess', _30 => _30.origin])),d.current=c?{origin:c,kinds:g}:void 0,y(e)},_=T(t),j=t.actions.filter(e=>!ie.includes(e.id)),z=null;if(r&&!r.restoreFocus){let e=r.action==="signIn"?n("chat.recovery.signInRequired"):r.action==="hostGuidance"?n("chat.recovery.hostGuidance"):null;z=_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[r.message?_jsxruntime.jsx.call(void 0, "span",{children:p(n,r.message)}):null,e?_jsxruntime.jsx.call(void 0, "span",{tabIndex:-1,"data-guidance":"",children:e}):null,r.action==="retry"||r.action==="wait"?_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, M,{"data-action":"retry","aria-disabled":r.retryAvailable?void 0:!0,"aria-describedby":r.retryReasonKey?G:void 0,onPress:r.retryAvailable?()=>H("retry"):void 0,children:n("chat.retry")}),r.retryReasonKey?_jsxruntime.jsx.call(void 0, "span",{id:G,children:n(r.retryReasonKey,r.retryValues)}):null]}):null]})}return _jsxruntime.jsx.call(void 0, _chunkUYR3UEIWcjs.J,{name:"recoveryPanel",slots:i,data:{view:t},children:_jsxruntime.jsxs.call(void 0, "section",{ref:K,"aria-labelledby":`${t.planId}-recovery`,"data-status":S.dataStatus,"data-wire-state":S.wireState,"data-attention":String(S.attention),"data-tone":S.tone,"data-result":S.result,"data-intent-kind":_optionalChain([t, 'access', _31 => _31.intent, 'optionalAccess', _32 => _32.kind]),"data-intent-status":_optionalChain([t, 'access', _33 => _33.intent, 'optionalAccess', _34 => _34.status]),children:[_jsxruntime.jsx.call(void 0, "h3",{id:`${t.planId}-recovery`,ref:q,tabIndex:-1,children:p(n,S.label)}),_jsxruntime.jsx.call(void 0, "p",{role:"status","aria-live":"polite",children:N?_jsxruntime.jsx.call(void 0, "span",{"data-announcement":N.serial,children:N.text},N.serial):null}),_?_jsxruntime.jsx.call(void 0, "p",{"data-intent-line":"",children:n(_)}):null,t.lines.map(e=>_jsxruntime.jsx.call(void 0, "p",{"data-line":e.key,children:p(n,e)},e.key)),t.steps.length?_jsxruntime.jsx.call(void 0, "ol",{children:t.steps.map(e=>_jsxruntime.jsx.call(void 0, _chunkUYR3UEIWcjs.J,{name:"stepStatusRow",slots:i,data:{step:e},children:_jsxruntime.jsxs.call(void 0, "li",{"data-status":e.truth,"data-late":e.lateReport,children:[_chunkTODYQ3SGcjs.a.call(void 0, n,he,e),": ",n(e.textKey),e.lateReport?_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[" (",n("chat.recovery.reportedDifferently"),")"]}):null]})},e.stepId))}):null,t.notice.length?_jsxruntime.jsx.call(void 0, "div",{"data-notice":"",children:t.notice.map(e=>_jsxruntime.jsx.call(void 0, "p",{children:p(n,e)},e.key))}):null,_jsxruntime.jsx.call(void 0, "div",{role:"alert",children:z}),_jsxruntime.jsx.call(void 0, _chunkUYR3UEIWcjs.J,{name:"recoveryActions",slots:i,data:{actions:j},children:j.map(e=>_jsxruntime.jsx.call(void 0, _chunkUYR3UEIWcjs.F,{action:e,onPress:H},e.id))}),u&&!pe?_jsxruntime.jsxs.call(void 0, _chunkUYR3UEIWcjs.k,{as:de,open:!0,label:n("chat.recovery.keepChanges"),onClose:u.onCancel,closeLabel:n("chat.close"),...le,children:[u.messages.map(e=>_jsxruntime.jsx.call(void 0, "p",{children:p(n,e)},e.key)),_jsxruntime.jsx.call(void 0, _chunkUYR3UEIWcjs.F,{action:{id:"keep",labelKey:"chat.recovery.keepChanges",...u.proceed},onPress:()=>{let e=_optionalChain([h, 'optionalAccess', _35 => _35.originFor, 'call', _36 => _36(`intent:${t.planId}:keep`)]);_chunkUYR3UEIWcjs.d.call(void 0, _optionalChain([d, 'access', _37 => _37.current, 'optionalAccess', _38 => _38.origin])),d.current=e?{origin:e,kinds:["keep"]}:void 0,u.onProceed()}}),_jsxruntime.jsx.call(void 0, M,{onPress:u.onCancel,children:n("chat.cancel")})]}):null]})})}exports.default = we;