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

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 +297 -2
  3. package/dist/block-reply-r8u-DNmZ.d.cts +181 -0
  4. package/dist/block-reply-z8El20nD.d.ts +181 -0
  5. package/dist/blocks-2ABWECKG.js +1 -0
  6. package/dist/blocks-7453YTYJ.cjs +1 -0
  7. package/dist/chunk-3KV7TDDR.cjs +3 -0
  8. package/dist/chunk-4BWV3SEL.cjs +1 -0
  9. package/dist/chunk-5Q3INHKA.js +1 -0
  10. package/dist/chunk-5TBO732O.js +1 -0
  11. package/dist/chunk-6OZSKCPT.cjs +1 -0
  12. package/dist/chunk-A3YOSFLE.cjs +1 -0
  13. package/dist/chunk-BRUQ75G3.cjs +1 -0
  14. package/dist/chunk-C3VS33WJ.js +1 -0
  15. package/dist/chunk-D2EGPBCX.cjs +1 -0
  16. package/dist/chunk-D4Q46KWA.js +1 -0
  17. package/dist/chunk-FBADWFRR.cjs +1 -0
  18. package/dist/chunk-FQSWQLRW.js +1 -0
  19. package/dist/chunk-GT6PI4CT.cjs +1 -0
  20. package/dist/chunk-II26UWZM.cjs +1 -0
  21. package/dist/chunk-IPI4O4LP.js +1 -0
  22. package/dist/chunk-JFMVVGGB.js +1 -0
  23. package/dist/chunk-K73VV7KA.js +1 -0
  24. package/dist/chunk-L4PFFRDE.js +3 -0
  25. package/dist/chunk-LLPGVQUT.cjs +1 -0
  26. package/dist/chunk-M63QOANE.js +1 -0
  27. package/dist/chunk-MEKDQDSV.js +1 -0
  28. package/dist/chunk-OEPKPDLD.js +1 -0
  29. package/dist/chunk-OWT55N6J.js +3 -0
  30. package/dist/chunk-PFR2J5BV.js +1 -0
  31. package/dist/chunk-Q7BULGQG.cjs +1 -0
  32. package/dist/chunk-QFBAOEPD.js +1 -0
  33. package/dist/chunk-QS3MKZOY.cjs +3 -0
  34. package/dist/chunk-RZ3AGK3U.cjs +1 -0
  35. package/dist/chunk-RZZDQWC2.js +1 -0
  36. package/dist/chunk-S73WZWDP.js +1 -0
  37. package/dist/chunk-T5XF2R74.js +1 -0
  38. package/dist/chunk-TCFCSGQ3.js +1 -0
  39. package/dist/chunk-TODYQ3SG.cjs +1 -0
  40. package/dist/chunk-TVSQHTK2.cjs +1 -0
  41. package/dist/chunk-VGGJGRNK.cjs +1 -0
  42. package/dist/chunk-XSHOLIC7.cjs +1 -0
  43. package/dist/chunk-XTKUDSDK.cjs +1 -0
  44. package/dist/chunk-XWDB2LS3.cjs +1 -0
  45. package/dist/cli.js +3 -0
  46. package/dist/confirmation-view-5BZ2PP7J.cjs +1 -0
  47. package/dist/confirmation-view-Z5JHY2F5.js +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-2SCPYZ3X.js +1 -0
  57. package/dist/flows-panel-HQYJMOP4.cjs +1 -0
  58. package/dist/form-extras-RNMBCYV7.cjs +1 -0
  59. package/dist/form-extras-X3B3JCMH.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-WC9f-h_q.d.cts +151 -0
  77. package/dist/i18n-WC9f-h_q.d.ts +151 -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-5NUOCOGY.js +23 -0
  91. package/dist/markdown-CG7NXI7X.cjs +23 -0
  92. package/dist/message-actions-ORBVYGNE.cjs +1 -0
  93. package/dist/message-actions-XNBBFHGW.js +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 +421 -0
  114. package/dist/react/index.d.ts +421 -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-6EBUMANX.js +3 -0
  119. package/dist/recovery-panel-EQIIV7TT.cjs +3 -0
  120. package/dist/reply-controls-HUYHUO3W.js +1 -0
  121. package/dist/reply-controls-LGY2RKRJ.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-BlgVvshf.d.ts +19 -0
  133. package/dist/step-name-CB3d3kkP.d.cts +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 +811 -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 +2394 -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 +186 -0
  157. package/etc/react.api.md +2977 -0
  158. package/etc/skin-antd.api.md +2998 -0
  159. package/etc/skin-default.api.md +61 -0
  160. package/etc/testing.api.md +3043 -0
  161. package/package.json +169 -4
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var t={"chat.block.required":"{label} (required)","chat.block.requiredMissing":"Fill in the required fields to submit.","chat.block.answerMissing":"Answer the question to submit.","chat.block.empty":"\u2014","chat.block.tierLow":"Low risk","chat.block.tierSensitive":"Sensitive","chat.block.undoCompareAndSet":"Undo restores the previous values","chat.block.undoArchiveCreated":"Undo archives what was created","chat.block.undoInverse":"Undo runs a reverse step","chat.block.status":"Status: {status}","chat.block.outcomeDone":"Done","chat.block.outcomeFailed":"Failed","chat.block.retryable":"It can be tried again","chat.block.notRetryable":"It cannot be tried again","chat.block.state.proposed":"Proposed","chat.block.state.awaiting-confirmation":"Waiting for confirmation","chat.block.state.running":"Running","chat.block.state.undoing":"Undoing","chat.block.state.completed":"Completed","chat.block.state.submitted":"Submitted","chat.block.state.undone":"Undone","chat.block.state.needs-attention":"Needs attention","chat.block.state.cancelled":"Cancelled","chat.block.run":"Run","chat.block.runMissing":"Fill in the required fields to run.","chat.block.favourite":"Favourite: {title}","chat.block.flowLoading":"Loading request\u2026","chat.block.flowsLoading":"Loading saved requests\u2026","chat.block.flowsEmpty":"No saved requests here yet.","chat.block.answered":"Answered","chat.block.answeredWith":"Answered: {answer}"},e= exports.b ={"chat.block.required":"{label}\uFF08\u5FC5\u586B\uFF09","chat.block.requiredMissing":"\u8BF7\u586B\u5199\u5FC5\u586B\u9879\u540E\u518D\u63D0\u4EA4\u3002","chat.block.answerMissing":"\u8BF7\u5148\u56DE\u7B54\u95EE\u9898\u518D\u63D0\u4EA4\u3002","chat.block.empty":"\u2014","chat.block.tierLow":"\u4F4E\u98CE\u9669","chat.block.tierSensitive":"\u654F\u611F","chat.block.undoCompareAndSet":"\u64A4\u9500\u4F1A\u6062\u590D\u539F\u6765\u7684\u503C","chat.block.undoArchiveCreated":"\u64A4\u9500\u4F1A\u5F52\u6863\u5DF2\u521B\u5EFA\u7684\u5185\u5BB9","chat.block.undoInverse":"\u64A4\u9500\u4F1A\u6267\u884C\u53CD\u5411\u6B65\u9AA4","chat.block.status":"\u72B6\u6001\uFF1A{status}","chat.block.outcomeDone":"\u5DF2\u5B8C\u6210","chat.block.outcomeFailed":"\u5931\u8D25","chat.block.retryable":"\u53EF\u4EE5\u91CD\u8BD5","chat.block.notRetryable":"\u65E0\u6CD5\u91CD\u8BD5","chat.block.state.proposed":"\u5DF2\u63D0\u8BAE","chat.block.state.awaiting-confirmation":"\u7B49\u5F85\u786E\u8BA4","chat.block.state.running":"\u8FD0\u884C\u4E2D","chat.block.state.undoing":"\u6B63\u5728\u64A4\u9500","chat.block.state.completed":"\u5DF2\u5B8C\u6210","chat.block.state.submitted":"\u5DF2\u63D0\u4EA4","chat.block.state.undone":"\u5DF2\u64A4\u9500","chat.block.state.needs-attention":"\u9700\u8981\u5904\u7406","chat.block.state.cancelled":"\u5DF2\u53D6\u6D88","chat.block.run":"\u8FD0\u884C","chat.block.runMissing":"\u8BF7\u5148\u586B\u5199\u5FC5\u586B\u5B57\u6BB5\u518D\u8FD0\u884C\u3002","chat.block.favourite":"\u6536\u85CF\uFF1A{title}","chat.block.flowLoading":"\u6B63\u5728\u52A0\u8F7D\u8BF7\u6C42\u2026\u2026","chat.block.flowsLoading":"\u6B63\u5728\u52A0\u8F7D\u5DF2\u4FDD\u5B58\u7684\u8BF7\u6C42\u2026\u2026","chat.block.flowsEmpty":"\u8FD9\u91CC\u8FD8\u6CA1\u6709\u5DF2\u4FDD\u5B58\u7684\u8BF7\u6C42\u3002","chat.block.answered":"\u5DF2\u56DE\u7B54","chat.block.answeredWith":"\u5DF2\u56DE\u7B54\uFF1A{answer}"};exports.a = t; exports.b = e;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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; }function r(n){let e=_optionalChain([n, 'optionalAccess', _ => _.revision]);return typeof e=="number"&&Number.isSafeInteger(e)?e:0}exports.a = r;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunkA3YOSFLEcjs = require('./chunk-A3YOSFLE.cjs');var _react = require('react');var _jsxruntime = require('react/jsx-runtime');function h({disabled:o,blocked:e,reason:a,label:d,onPress:r}){let{format:b,primitives:u}=_chunkA3YOSFLEcjs.y.call(void 0, ),l=u.button,i=_react.useId.call(void 0, ),n=e&&!o;return _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, l,{disabled:o,"aria-disabled":n||void 0,"aria-describedby":n?i:void 0,onPress:r,children:_nullishCoalesce(d, () => (b("chat.submit")))}),n?_jsxruntime.jsx.call(void 0, "span",{id:i,"data-reason":"submit",children:a}):null]})}exports.a = h;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _react = require('react');var _jsxruntime = require('react/jsx-runtime');function d({value:t,t:r}){return t==null||t===""?r("chat.block.empty"):Array.isArray(t)?t.length?_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:t.map((n,o)=>_jsxruntime.jsxs.call(void 0, _react.Fragment,{children:[o?", ":null,_jsxruntime.jsx.call(void 0, d,{value:n,t:r})]},o))}):r("chat.block.empty"):typeof t=="object"?_jsxruntime.jsx.call(void 0, "dl",{children:Object.entries(t).map(([n,o])=>_jsxruntime.jsxs.call(void 0, "div",{children:[_jsxruntime.jsx.call(void 0, "dt",{children:n}),_jsxruntime.jsx.call(void 0, "dd",{children:_jsxruntime.jsx.call(void 0, d,{value:o,t:r})})]},n))}):String(t)}exports.a = d;
package/dist/cli.js ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ var a={code:"retryable",id:"conformance-load"},i=async()=>{try{return await import("./run-XBABOEXK.js")}catch{throw{...a}}};async function r(t){return(await i()).runConformance(t)}var e=process.argv[2];if(!e)throw new Error("Provide a test base URL");var n=await r({baseUrl:e,profile:process.argv.includes("--app-host")?"app-host":"admin-host",request:async(t,s)=>{let o=await fetch(e+t,s);return{status:o.status,body:await o.json()}}});process.stdout.write(JSON.stringify(n)+`
3
+ `);n.passed||(process.exitCode=1);
@@ -0,0 +1 @@
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 _chunkA3YOSFLEcjs = require('./chunk-A3YOSFLE.cjs');require('./chunk-FBADWFRR.cjs');var _chunkQS3MKZOYcjs = require('./chunk-QS3MKZOY.cjs');require('./chunk-RZ3AGK3U.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 V={"chat.confirmation.heading":"Review these changes","chat.confirmation.apply":"Apply these changes","chat.confirmation.schedule":"Schedule these changes","chat.confirmation.applyCount":"{count, plural, =0 {Apply these changes} one {Apply # change} other {Apply # changes}}","chat.confirmation.scheduleCount":"{count, plural, =0 {Schedule these changes} one {Schedule # change} other {Schedule # changes}}","chat.confirmation.unavailable":"This plan can't be confirmed in this app. Ask the site administrator to update it.","chat.confirmation.expired":"This confirmation has expired. Ask for the plan again to review it.","chat.confirmation.used":"This confirmation was already used. Check the plan's status below before doing anything else.","chat.confirmation.changed":"This plan changed. Review it again before you confirm.","chat.confirmation.mismatch":"This confirmation belongs to a different plan. Open the current plan and review it.","chat.confirmation.irreversible":"This change cannot be undone.","chat.confirmation.before":"Before","chat.confirmation.after":"After","chat.confirmation.refresh":"Refresh","chat.confirmation.verifications":"{count, plural, one {# verification is needed} other {# verifications are needed}}.","chat.confirmation.expires":"Valid until {time}","chat.confirmation.showAll":"Show all {count} items"},z={"chat.confirmation.heading":"\u8BF7\u6838\u5BF9\u4EE5\u4E0B\u4FEE\u6539","chat.confirmation.apply":"\u5E94\u7528\u8FD9\u4E9B\u4FEE\u6539","chat.confirmation.schedule":"\u5B89\u6392\u6267\u884C\u8FD9\u4E9B\u4FEE\u6539","chat.confirmation.applyCount":"{count, plural, =0 {\u5E94\u7528\u8FD9\u4E9B\u4FEE\u6539} other {\u5E94\u7528 # \u9879\u4FEE\u6539}}","chat.confirmation.scheduleCount":"{count, plural, =0 {\u5B89\u6392\u6267\u884C\u8FD9\u4E9B\u4FEE\u6539} other {\u5B89\u6392\u6267\u884C # \u9879\u4FEE\u6539}}","chat.confirmation.unavailable":"\u6B64\u5E94\u7528\u65E0\u6CD5\u786E\u8BA4\u8FD9\u4E2A\u8BA1\u5212\u3002\u8BF7\u8054\u7CFB\u7F51\u7AD9\u7BA1\u7406\u5458\u66F4\u65B0\u5E94\u7528\u3002","chat.confirmation.expired":"\u6B64\u786E\u8BA4\u5DF2\u8FC7\u671F\u3002\u8BF7\u91CD\u65B0\u83B7\u53D6\u8BA1\u5212\u540E\u518D\u6838\u5BF9\u3002","chat.confirmation.used":"\u6B64\u786E\u8BA4\u5DF2\u7ECF\u4F7F\u7528\u8FC7\u3002\u8BF7\u5148\u68C0\u67E5\u4E0B\u65B9\u7684\u8BA1\u5212\u72B6\u6001\uFF0C\u518D\u8FDB\u884C\u5176\u4ED6\u64CD\u4F5C\u3002","chat.confirmation.changed":"\u8BA1\u5212\u5DF2\u6709\u53D8\u5316\u3002\u8BF7\u91CD\u65B0\u6838\u5BF9\u540E\u518D\u786E\u8BA4\u3002","chat.confirmation.mismatch":"\u6B64\u786E\u8BA4\u5C5E\u4E8E\u53E6\u4E00\u4E2A\u8BA1\u5212\u3002\u8BF7\u6253\u5F00\u5F53\u524D\u8BA1\u5212\u5E76\u91CD\u65B0\u6838\u5BF9\u3002","chat.confirmation.irreversible":"\u6B64\u4FEE\u6539\u65E0\u6CD5\u64A4\u9500\u3002","chat.confirmation.before":"\u4FEE\u6539\u524D","chat.confirmation.after":"\u4FEE\u6539\u540E","chat.confirmation.refresh":"\u5237\u65B0","chat.confirmation.verifications":"\u9700\u8981\u5B8C\u6210 {count} \u6B21\u9A8C\u8BC1\u3002","chat.confirmation.expires":"\u6709\u6548\u671F\u81F3 {time}","chat.confirmation.showAll":"\u663E\u793A\u5168\u90E8 {count} \u9879"};var _jsxruntime = require('react/jsx-runtime');_chunkA3YOSFLEcjs.q.call(void 0, V,z);var v=10,j={expired:"chat.confirmation.expired",used:"chat.confirmation.used",stale:"chat.confirmation.changed",mismatch:"chat.confirmation.mismatch"};function nn({record:e,planId:l,entry:m,onConfirm:D,refusal:s,override:d,replaced:A}){let{format:i,primitives:O,locale:R,client:S}=_chunkA3YOSFLEcjs.y.call(void 0, ),p=_chunkA3YOSFLEcjs.G.call(void 0, ()=>Promise.all([S.refresh(),S.readPlan()])),U=O.button,a=_react.useId.call(void 0, ),[k,_]=_react.useState.call(void 0, !1),T=_react.useRef.call(void 0, null),u=_optionalChain([e, 'optionalAccess', _2 => _2.token]),h=_optionalChain([_chunkA3YOSFLEcjs.g.call(void 0, ), 'optionalAccess', _3 => _3.owner, 'call', _4 => _4()]),[g,q]=_react.useState.call(void 0, {token:u,owner:h}),[$,E]=_react.useState.call(void 0, !1);(g.token!==u||g.owner!==h)&&(q({token:u,owner:h}),E(g.owner===h));let f=_chunkA3YOSFLEcjs.g.call(void 0, ),b=_react.useRef.call(void 0, void 0),L=_react.useRef.call(void 0, l);L.current=l,_react.useLayoutEffect.call(void 0, ()=>{let t=b.current;!t||t.element.isConnected||!f||(b.current=void 0,_chunkA3YOSFLEcjs.j.call(void 0, f,T.current,{owner:t.key,stillCurrent:()=>f.owner()===t.key&&L.current===t.planId,removed:t.element}))});let G=_jsxruntime.jsx.call(void 0, "h3",{id:`${a}-heading`,ref:T,tabIndex:-1,children:i("chat.confirmation.heading")}),M=(t,y)=>_jsxruntime.jsxs.call(void 0, "section",{"data-confirmation":"","aria-labelledby":`${a}-heading`,"aria-describedby":y,onFocus:X=>{b.current={element:X.target,planId:l,key:_nullishCoalesce(_optionalChain([f, 'optionalAccess', _5 => _5.owner, 'call', _6 => _6()]), () => (""))}},children:[G,t]}),J=t=>_jsxruntime.jsx.call(void 0, "p",{role:"status",children:t});if(!e)return M(_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, "p",{children:i("chat.confirmation.unavailable")}),J($?i("chat.confirmation.changed"):null)]}));let Q=k||e.items.length<=v?e.items:e.items.slice(0,v),c=A||$&&!s?"chat.confirmation.changed":s?_nullishCoalesce(j[s], () => ("chat.problem.refused")):void 0,W=!c&&_optionalChain([m, 'optionalAccess', _7 => _7.reasonKey])==="chat.confirmation.expired";return M(_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, "p",{id:`${a}-summary`,children:e.heading}),_jsxruntime.jsx.call(void 0, "ol",{id:`${a}-items`,children:Q.map((t,y)=>_jsxruntime.jsxs.call(void 0, "li",{children:[_jsxruntime.jsx.call(void 0, "p",{children:t.label}),_jsxruntime.jsxs.call(void 0, "dl",{children:[t.before!==void 0?_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, "dt",{children:i("chat.confirmation.before")}),_jsxruntime.jsx.call(void 0, "dd",{children:t.before})]}):null,t.after!==void 0?_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, "dt",{children:i("chat.confirmation.after")}),_jsxruntime.jsx.call(void 0, "dd",{children:t.after})]}):null]}),t.note?_jsxruntime.jsx.call(void 0, "p",{children:t.note}):null]},y))}),e.items.length>v?_jsxruntime.jsx.call(void 0, "button",{type:"button","aria-expanded":k,"aria-controls":`${a}-items`,onClick:()=>_(t=>!t),children:i("chat.confirmation.showAll",{count:e.items.length})}):null,_jsxruntime.jsx.call(void 0, "p",{id:`${a}-dates`,children:e.schedule?`${e.schedule.startText} \u2013 ${e.schedule.endText}`:""}),e.irreversible?_jsxruntime.jsx.call(void 0, "p",{children:_jsxruntime.jsx.call(void 0, "strong",{children:i("chat.confirmation.irreversible")})}):null,_jsxruntime.jsx.call(void 0, "p",{children:e.undo}),e.verificationCount>0?_jsxruntime.jsx.call(void 0, "p",{children:i("chat.confirmation.verifications",{count:e.verificationCount})}):null,_jsxruntime.jsx.call(void 0, "p",{children:_jsxruntime.jsx.call(void 0, "time",{"data-expires":"",dateTime:e.expiresAt,children:i("chat.confirmation.expires",{time:new Date(e.expiresAt).toLocaleString(_chunkQS3MKZOYcjs.b.call(void 0, _nullishCoalesce(R, () => ("en")),_chunkA3YOSFLEcjs.s.call(void 0, R).catalogue==="zh"))})})}),m?_jsxruntime.jsx.call(void 0, _chunkA3YOSFLEcjs.F,{action:m,label:e.actionLabel,onPress:()=>{E(!1),D()}}):null,_jsxruntime.jsx.call(void 0, "p",{role:"status",children:c&&s&&!A&&d?_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[d.text,d.action]}):c?_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[i(c),c!=="chat.confirmation.expired"&&c!=="chat.problem.refused"?_jsxruntime.jsx.call(void 0, U,{onPress:p.press,"aria-busy":p.busy||void 0,"aria-disabled":p.busy||void 0,children:i("chat.confirmation.refresh")}):null]}):W?_jsxruntime.jsx.call(void 0, "span",{className:"wp-sr",children:i("chat.confirmation.expired")}):null})]}),`${a}-summary ${a}-dates`)}exports.default = nn;
@@ -0,0 +1 @@
1
+ import{F as P,G as H,g as x,j as I,q as K,s as N,y as B}from"./chunk-IPI4O4LP.js";import"./chunk-FQSWQLRW.js";import{b as F}from"./chunk-OWT55N6J.js";import"./chunk-QFBAOEPD.js";import"./chunk-RZZDQWC2.js";import"./chunk-M63QOANE.js";import"./chunk-L4PFFRDE.js";import"./chunk-T5XF2R74.js";import"./chunk-K73VV7KA.js";import"./chunk-5TBO732O.js";import{useId as Y,useLayoutEffect as Z,useRef as w,useState as C}from"react";var V={"chat.confirmation.heading":"Review these changes","chat.confirmation.apply":"Apply these changes","chat.confirmation.schedule":"Schedule these changes","chat.confirmation.applyCount":"{count, plural, =0 {Apply these changes} one {Apply # change} other {Apply # changes}}","chat.confirmation.scheduleCount":"{count, plural, =0 {Schedule these changes} one {Schedule # change} other {Schedule # changes}}","chat.confirmation.unavailable":"This plan can't be confirmed in this app. Ask the site administrator to update it.","chat.confirmation.expired":"This confirmation has expired. Ask for the plan again to review it.","chat.confirmation.used":"This confirmation was already used. Check the plan's status below before doing anything else.","chat.confirmation.changed":"This plan changed. Review it again before you confirm.","chat.confirmation.mismatch":"This confirmation belongs to a different plan. Open the current plan and review it.","chat.confirmation.irreversible":"This change cannot be undone.","chat.confirmation.before":"Before","chat.confirmation.after":"After","chat.confirmation.refresh":"Refresh","chat.confirmation.verifications":"{count, plural, one {# verification is needed} other {# verifications are needed}}.","chat.confirmation.expires":"Valid until {time}","chat.confirmation.showAll":"Show all {count} items"},z={"chat.confirmation.heading":"\u8BF7\u6838\u5BF9\u4EE5\u4E0B\u4FEE\u6539","chat.confirmation.apply":"\u5E94\u7528\u8FD9\u4E9B\u4FEE\u6539","chat.confirmation.schedule":"\u5B89\u6392\u6267\u884C\u8FD9\u4E9B\u4FEE\u6539","chat.confirmation.applyCount":"{count, plural, =0 {\u5E94\u7528\u8FD9\u4E9B\u4FEE\u6539} other {\u5E94\u7528 # \u9879\u4FEE\u6539}}","chat.confirmation.scheduleCount":"{count, plural, =0 {\u5B89\u6392\u6267\u884C\u8FD9\u4E9B\u4FEE\u6539} other {\u5B89\u6392\u6267\u884C # \u9879\u4FEE\u6539}}","chat.confirmation.unavailable":"\u6B64\u5E94\u7528\u65E0\u6CD5\u786E\u8BA4\u8FD9\u4E2A\u8BA1\u5212\u3002\u8BF7\u8054\u7CFB\u7F51\u7AD9\u7BA1\u7406\u5458\u66F4\u65B0\u5E94\u7528\u3002","chat.confirmation.expired":"\u6B64\u786E\u8BA4\u5DF2\u8FC7\u671F\u3002\u8BF7\u91CD\u65B0\u83B7\u53D6\u8BA1\u5212\u540E\u518D\u6838\u5BF9\u3002","chat.confirmation.used":"\u6B64\u786E\u8BA4\u5DF2\u7ECF\u4F7F\u7528\u8FC7\u3002\u8BF7\u5148\u68C0\u67E5\u4E0B\u65B9\u7684\u8BA1\u5212\u72B6\u6001\uFF0C\u518D\u8FDB\u884C\u5176\u4ED6\u64CD\u4F5C\u3002","chat.confirmation.changed":"\u8BA1\u5212\u5DF2\u6709\u53D8\u5316\u3002\u8BF7\u91CD\u65B0\u6838\u5BF9\u540E\u518D\u786E\u8BA4\u3002","chat.confirmation.mismatch":"\u6B64\u786E\u8BA4\u5C5E\u4E8E\u53E6\u4E00\u4E2A\u8BA1\u5212\u3002\u8BF7\u6253\u5F00\u5F53\u524D\u8BA1\u5212\u5E76\u91CD\u65B0\u6838\u5BF9\u3002","chat.confirmation.irreversible":"\u6B64\u4FEE\u6539\u65E0\u6CD5\u64A4\u9500\u3002","chat.confirmation.before":"\u4FEE\u6539\u524D","chat.confirmation.after":"\u4FEE\u6539\u540E","chat.confirmation.refresh":"\u5237\u65B0","chat.confirmation.verifications":"\u9700\u8981\u5B8C\u6210 {count} \u6B21\u9A8C\u8BC1\u3002","chat.confirmation.expires":"\u6709\u6548\u671F\u81F3 {time}","chat.confirmation.showAll":"\u663E\u793A\u5168\u90E8 {count} \u9879"};import{Fragment as r,jsx as n,jsxs as o}from"react/jsx-runtime";K(V,z);var v=10,j={expired:"chat.confirmation.expired",used:"chat.confirmation.used",stale:"chat.confirmation.changed",mismatch:"chat.confirmation.mismatch"};function nn({record:e,planId:l,entry:m,onConfirm:D,refusal:s,override:d,replaced:A}){let{format:i,primitives:O,locale:R,client:S}=B(),p=H(()=>Promise.all([S.refresh(),S.readPlan()])),U=O.button,a=Y(),[k,_]=C(!1),T=w(null),u=e?.token,h=x()?.owner(),[g,q]=C({token:u,owner:h}),[$,E]=C(!1);(g.token!==u||g.owner!==h)&&(q({token:u,owner:h}),E(g.owner===h));let f=x(),b=w(void 0),L=w(l);L.current=l,Z(()=>{let t=b.current;!t||t.element.isConnected||!f||(b.current=void 0,I(f,T.current,{owner:t.key,stillCurrent:()=>f.owner()===t.key&&L.current===t.planId,removed:t.element}))});let G=n("h3",{id:`${a}-heading`,ref:T,tabIndex:-1,children:i("chat.confirmation.heading")}),M=(t,y)=>o("section",{"data-confirmation":"","aria-labelledby":`${a}-heading`,"aria-describedby":y,onFocus:X=>{b.current={element:X.target,planId:l,key:f?.owner()??""}},children:[G,t]}),J=t=>n("p",{role:"status",children:t});if(!e)return M(o(r,{children:[n("p",{children:i("chat.confirmation.unavailable")}),J($?i("chat.confirmation.changed"):null)]}));let Q=k||e.items.length<=v?e.items:e.items.slice(0,v),c=A||$&&!s?"chat.confirmation.changed":s?j[s]??"chat.problem.refused":void 0,W=!c&&m?.reasonKey==="chat.confirmation.expired";return M(o(r,{children:[n("p",{id:`${a}-summary`,children:e.heading}),n("ol",{id:`${a}-items`,children:Q.map((t,y)=>o("li",{children:[n("p",{children:t.label}),o("dl",{children:[t.before!==void 0?o(r,{children:[n("dt",{children:i("chat.confirmation.before")}),n("dd",{children:t.before})]}):null,t.after!==void 0?o(r,{children:[n("dt",{children:i("chat.confirmation.after")}),n("dd",{children:t.after})]}):null]}),t.note?n("p",{children:t.note}):null]},y))}),e.items.length>v?n("button",{type:"button","aria-expanded":k,"aria-controls":`${a}-items`,onClick:()=>_(t=>!t),children:i("chat.confirmation.showAll",{count:e.items.length})}):null,n("p",{id:`${a}-dates`,children:e.schedule?`${e.schedule.startText} \u2013 ${e.schedule.endText}`:""}),e.irreversible?n("p",{children:n("strong",{children:i("chat.confirmation.irreversible")})}):null,n("p",{children:e.undo}),e.verificationCount>0?n("p",{children:i("chat.confirmation.verifications",{count:e.verificationCount})}):null,n("p",{children:n("time",{"data-expires":"",dateTime:e.expiresAt,children:i("chat.confirmation.expires",{time:new Date(e.expiresAt).toLocaleString(F(R??"en",N(R).catalogue==="zh"))})})}),m?n(P,{action:m,label:e.actionLabel,onPress:()=>{E(!1),D()}}):null,n("p",{role:"status",children:c&&s&&!A&&d?o(r,{children:[d.text,d.action]}):c?o(r,{children:[i(c),c!=="chat.confirmation.expired"&&c!=="chat.problem.refused"?n(U,{onPress:p.press,"aria-busy":p.busy||void 0,"aria-disabled":p.busy||void 0,children:i("chat.confirmation.refresh")}):null]}):W?n("span",{className:"wp-sr",children:i("chat.confirmation.expired")}):null})]}),`${a}-summary ${a}-dates`)}export{nn as default};
@@ -0,0 +1 @@
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 _chunkQ7BULGQGcjs = require('./chunk-Q7BULGQG.cjs');require('./chunk-II26UWZM.cjs');async function j(o){let u=[],w=[],h=(await o("/__conformance/session",{method:"POST"})).body,d={"Content-Type":"application/json",Cookie:`waypoint=${h.session}`,"X-CSRF-Token":h.csrf},t=(e,s)=>o(e,{method:"POST",headers:d,body:JSON.stringify({protocol:"1.1",...s})}),l=e=>o(`/conversations/${encodeURIComponent(e)}`,{headers:d}),y=async(e,s)=>{w.push(e);try{await s()||u.push(e)}catch (e2){u.push(e)}},b={key:"form-fixture-a",resource:"items",label:"Item",route:"/items/new",state:"pending"},v={mode:"form-fill",title:"Form fixture",subject:b,clientCreationId:"form-create-a"},a;try{a=(await t("/conversations",v)).body}catch (e3){return{passed:!1,failures:["form create"],scenarios:["form create"]}}await y("form creation replay",async()=>(await t("/conversations",v)).body.id===a.id),await y("form mode survives refetch",async()=>{let e=(await l(a.id)).body;return e.mode==="form-fill"&&_optionalChain([e, 'access', _2 => _2.subject, 'optionalAccess', _3 => _3.key])===b.key}),await y("form subject filtering",async()=>{await t("/conversations",{...v,subject:{...b,key:"form-fixture-b"},clientCreationId:"form-create-b"});let e=await o(`/conversations?subject=${b.key}`,{headers:d}),s=e.body;return e.status===200&&s.some(n=>n.id===a.id)&&s.every(n=>_optionalChain([n, 'access', _4 => _4.subject, 'optionalAccess', _5 => _5.key])===b.key)});let g={kind:"form-fill",clientReplyId:"form-fill-a",request:{requestId:"form-request-a",text:"Draft",references:["https://example.test/reference"],attachments:["private-image"],fields:[{name:"title",label:"Title",tier:"low",value:""}]}},I=async e=>{let s=await t(`/conversations/${e}/replies`,g),n=await t(`/conversations/${e}/replies`,g),c=(await l(e)).body.messages.flatMap(i=>i.blocks).filter(i=>i.type==="form.fill"),p=c[0];return s.status===200&&s.body.id===n.body.id&&c.length===1&&_optionalChain([p, 'optionalAccess', _6 => _6.body, 'access', _7 => _7.requestId])===g.request.requestId&&Object.keys(p.body.values).join()==="title"&&["valid","invalid"].includes(p.body.values.title.validation.status)&&Array.isArray(p.body.values.title.validation.messages)};return await y("form values and validation replay",()=>I(a.id)),await y("form rejects non-low input",async()=>(await t(`/conversations/${a.id}/replies`,{...g,clientReplyId:"forbidden",request:{...g.request,fields:[{name:"secret",tier:"sensitive",label:"Secret",value:""}]}})).status>=400),await y("form child inherits mode and values",async()=>{let e=(await t("/conversations",{...v,clientCreationId:"form-child-a",parentConversationId:a.id,field:"title"})).body;return e.parentConversationId===a.id&&e.mode==="form-fill"&&_optionalChain([e, 'access', _8 => _8.subject, 'optionalAccess', _9 => _9.key])===b.key&&await I(e.id)}),await y("form rejects wrong-subject child",async()=>(await t("/conversations",{...v,clientCreationId:"form-child-wrong",parentConversationId:a.id,field:"title",subject:{...b,key:"another"}})).status>=400),await y("form refuses general replies",async()=>{let e=await t("/conversations",{title:"Ordinary fixture"});if(e.status<200||e.status>=300)return!1;let s={kind:"message",clientReplyId:"general-reply",clientMessageId:"general-message",content:"An ordinary message"},n=await t(`/conversations/${e.body.id}/messages`,s),r=await t(`/conversations/${a.id}/messages`,{...s,clientReplyId:"form-general-reply",clientMessageId:"form-general-message"});return n.status>=200&&n.status<300&&r.status>=400&&_optionalChain([r, 'access', _10 => _10.body, 'optionalAccess', _11 => _11.code])==="refused"}),{passed:u.length===0,failures:u,scenarios:w}}async function O(o){let u=[],w=[],h=(await o("/__conformance/session",{method:"POST"})).body,d={"Content-Type":"application/json",Cookie:`waypoint=${h.session}`,"X-CSRF-Token":h.csrf},t=(l,y)=>o(l,{method:"POST",headers:d,body:JSON.stringify({protocol:"1.0",...y})});for(let l of["run","refuse"]){w.push(`plan ${l}`);try{await t("/__conformance/script",{planScenario:l});let v=`/conversations/${(await t("/conversations",{title:"Plan"})).body.id}/replies`,a=async i=>(await o(`/plans/${i}`,{headers:d})).body,g=await a("plan-a");if(g.plan.kind!=="immediate"||g.plan.stage!=="draft")throw new Error("Missing draft");let I=await o("/items/a",{headers:d});await t(v,{kind:"plan.values",clientReplyId:"values-a",planId:"plan-a",steps:[{stepId:"step-a",...I.body}]});let e=await a("plan-a"),s=e.plan;if(s.stage!=="final"||!s.digest)throw new Error("Missing final");let n=_optionalChain([e, 'access', _12 => _12.confirmation, 'optionalAccess', _13 => _13.token]);if(!n)throw new Error("Missing confirmation record");let r=(i,m)=>t(v,{kind:"confirm",clientReplyId:i,planId:"plan-a",digest:s.digest,...m});for(let[i,m]of[["no-token",{}],["wrong-token",{confirmationToken:`${n}x`}]])if((await r(i,m)).status!==409)throw new Error("Confirmation without its token accepted");if((await r("confirm-a",{confirmationToken:n})).status!==200)throw new Error("Confirmation refused");if((await r("confirm-b",{confirmationToken:n})).status!==409)throw new Error("Confirmation token used twice");let c=_chunkQ7BULGQGcjs.j.call(void 0, {read:a,heartbeat:async i=>{await t(`/plans/${i}/heartbeat`,{})},request:async(i,m)=>{if((await o(i.path,{method:i.method,headers:{...d,...m.headers},body:i.body})).status>=400)throw new Error("Step refused")}});await c.run("plan-a",s.digest);let p=await a("plan-a");if(l==="run"&&p.state!=="completed")throw new Error("Not completed");if(l==="refuse"&&(p.state==="undoing"||p.undoPlanId!==void 0))throw new Error("Undo requested automatically");if(l==="run"){await t("/plans/plan-a/stop",{}),await c.run("undo-a",(await a("undo-a")).plan.digest);let i=await o("/items/a",{headers:d});if(JSON.stringify(i.body).includes("After"))throw new Error("Not restored")}c.dispose()}catch (e4){u.push(`plan ${l}`)}}return{passed:u.length===0,failures:u,scenarios:w}}var _={kind:"action",clientReplyId:"card-answer-a",blockId:"card-answer-choice",actionId:"accept"};function T(o){return o===void 0?!0:typeof o!="object"||o===null||Array.isArray(o)?!1:Object.entries(_).every(([u,w])=>o[u]===w)}async function U(o){let u=[],w=[],R=await o.request("/__conformance/session",{method:"POST"});if(R.status!==200)return{passed:!1,failures:["test session unavailable"],scenarios:[]};let h=R.body,d={"Content-Type":"application/json",Cookie:`waypoint=${h.session}`,"X-CSRF-Token":h.csrf},t=(e,s)=>o.request(e,{method:"POST",headers:d,body:JSON.stringify({protocol:"1.0",...s})}),l=async(e,s)=>{w.push(e);try{await s()||u.push(e)}catch (e5){u.push(e)}};await l("negotiation",async()=>{let e=await t("/negotiate",{supported:_chunkQ7BULGQGcjs.a});return e.status===200&&_chunkQ7BULGQGcjs.a.some(s=>s===e.body.protocol)&&Array.isArray(e.body.capabilities)});let b=(await t("/negotiate",{supported:_chunkQ7BULGQGcjs.a})).body;if(b.protocol==="1.1"&&_optionalChain([b, 'access', _14 => _14.capabilities, 'optionalAccess', _15 => _15.includes, 'call', _16 => _16("form-fill")])){let e=await j(o.request);u.push(...e.failures),w.push(...e.scenarios)}let a=(await t("/conversations",{title:"Fixture"})).body.id;await l("optimistic replay",async()=>{let e={clientMessageId:"replay-a",content:"Request"},s=await t(`/conversations/${a}/messages`,e),n=await t(`/conversations/${a}/messages`,e);return s.body.id===n.body.id}),await l("closed failures",async()=>{for(let e of["in-doubt","replaced","retryable","refused","closed","full","declined","unavailable"]){await t("/__conformance/script",{turns:[{problem:{id:"failure-a",code:e}}]});let s=await t(`/conversations/${a}/messages`,{clientMessageId:`failure-${e}`,content:"Request"});if(s.status<400||s.body.code!==e)return!1}return!0}),await l("blocks and fallback",async()=>{let e=["markdown","card","details","list","table","form","choice","buttons","diff","plan","route-link","notice","example/future"],s=e.map(c=>({type:c,id:c,fallback:"Readable",body:F(c)}));await t("/__conformance/script",{turns:[{blocks:s}]}),await t(`/conversations/${a}/messages`,{clientMessageId:"blocks-a",content:"Request"});let r=(await o.request(`/conversations/${a}`,{headers:d})).body;return e.every(c=>r.messages.some(p=>p.blocks.some(i=>i.type===c&&i.fallback==="Readable")))}),await l("drop then refetch",async()=>(await t("/__conformance/script",{turns:[{content:"Authoritative after drop"}]}),await t(`/conversations/${a}/messages`,{clientMessageId:"drop-a",content:"Request"}),await o.request(`/conversations/${a}/stream`,{headers:d}),(await o.request(`/conversations/${a}`,{headers:d})).body.messages.some(s=>s.content==="Authoritative after drop"))),await l("one answer per card",async()=>{await t("/__conformance/script",{turns:[{blocks:[{type:"card",id:"card-answer",fallback:"Answer",body:{title:"Question",blocks:[{type:"buttons",id:"card-answer-choice",fallback:"Answer",body:{actions:[{id:"accept",label:"Accept"},{id:"decline",label:"Decline"}]}}]}}]}]}),await t(`/conversations/${a}/messages`,{clientMessageId:"card-answer",content:"Request"});let e=(f,P)=>t(`/conversations/${a}/replies`,{kind:"action",clientReplyId:f,blockId:"card-answer-choice",actionId:P}),s=f=>f.status===409&&f.body.code==="refused",n=await e("card-answer-a","accept"),r=await e("card-answer-a","accept"),c=await e("card-answer-a","decline"),p=await e("card-answer-b","decline"),m=(await o.request(`/conversations/${a}`,{headers:d})).body.messages.flatMap(f=>f.blocks).find(f=>f.id==="card-answer");return n.status>=200&&n.status<300&&r.status===n.status&&JSON.stringify(r.body)===JSON.stringify(n.body)&&(s(c)||c.status===422)&&s(p)&&_optionalChain([m, 'optionalAccess', _17 => _17.answered])===!0&&T(m.answer)}),await l("agreement binding",async()=>{let e=await t("/negotiate",{supported:_chunkQ7BULGQGcjs.a,offer:{capabilities:["plans"]}}),s=e.body;if(e.status===200&&s.agreementId===void 0)return!0;if(e.status!==200||typeof s.agreementId!="string")return!1;let n={...d,"Waypoint-Agreement":"conformance-unknown"},r=await o.request(`/conversations/${a}`,{headers:n}),c=await o.request(`/conversations/${a}/messages`,{method:"POST",headers:n,body:JSON.stringify({protocol:"1.0",clientMessageId:"binding-a",content:"Request"})}),p=await o.request(`/conversations/${a}`,{headers:d}),i=await o.request(`/conversations/${a}`,{headers:{...d,"Waypoint-Agreement":s.agreementId}});return r.status===409&&r.body.code==="agreement-expired"&&c.status===409&&c.body.code==="agreement-expired"&&!p.body.messages.some(m=>m.clientMessageId==="binding-a")&&i.status===200}),await l("agreement keeps its answer",async()=>{let e=await t("/negotiate",{supported:["1.0"],offer:{capabilities:["plans"]}}),s=await t("/negotiate",{supported:_chunkQ7BULGQGcjs.a,offer:{capabilities:["plans"]}}),n=e.body,r=s.body;if(!n.agreementId||!r.agreementId||n.protocol===r.protocol)return!0;let c=await o.request(`/conversations/${a}`,{headers:{...d,"Waypoint-Agreement":n.agreementId}});return c.status===200&&c.body.protocol===n.protocol});let g=await t("/negotiate",{supported:_chunkQ7BULGQGcjs.a,offer:{capabilities:["reply-stop"]}});_optionalChain([g, 'access', _18 => _18.body, 'access', _19 => _19.capabilities, 'optionalAccess', _20 => _20.includes, 'call', _21 => _21("reply-stop")])&&await l("reply stop",async()=>{await t("/__conformance/script",{turns:[{chunks:["Partial answer"],interval:0,ending:"held"}]}),await t(`/conversations/${a}/messages`,{clientMessageId:"stop-a",content:"Request"});let e=C=>C?{...d,"Waypoint-Agreement":C}:d,s=g.body.agreementId,n=async(C=s)=>(await o.request(`/conversations/${a}`,{headers:e(C)})).body.messages.at(-1),r=await n();for(let C=0;_optionalChain([r, 'optionalAccess', _22 => _22.content])!=="Partial answer"&&C<100;C++)r=await n();if(!s||_optionalChain([r, 'optionalAccess', _23 => _23.role])!=="assistant"||r.status!=="writing")return!1;let c=_nullishCoalesce(r.versionIndex, () => (1)),p=await t(`/conversations/${a}/replies`,{kind:"stop",clientReplyId:"stop-a-other-version",messageId:r.id,versionIndex:c+1}),i=await n(),m={kind:"stop",clientReplyId:"stop-a-reply",messageId:r.id,versionIndex:c},f=await t(`/conversations/${a}/replies`,m),P=await t(`/conversations/${a}/replies`,m),x=await t(`/conversations/${a}/replies`,{kind:"stop",clientReplyId:"stop-a-reply-2",messageId:r.id}),$=await n(),A=(await t("/negotiate",{supported:_chunkQ7BULGQGcjs.a,offer:{capabilities:["plans"]}})).body.agreementId,q=A?await n(A):void 0;return p.status<500&&_optionalChain([i, 'optionalAccess', _24 => _24.status])==="writing"&&(!q||q.status==="failed"&&q.content==="Partial answer")&&f.status>=200&&f.status<300&&P.status===f.status&&JSON.stringify(P.body)===JSON.stringify(f.body)&&x.status>=200&&x.status<300&&_optionalChain([$, 'optionalAccess', _25 => _25.id])===r.id&&$.status==="stopped"&&$.content==="Partial answer"});let I=await O(o.request);return u.push(...I.failures),w.push(...I.scenarios),{passed:u.length===0,failures:u,scenarios:w}}function F(o){return_nullishCoalesce({markdown:{text:"Readable"},card:{title:"Card",blocks:[]},details:{summary:"Details",blocks:[]},list:{items:[]},table:{columns:[],rows:[]},form:{fields:[]},choice:{mode:"single",options:[]},buttons:{actions:[]},diff:{before:"Before",after:"After"},plan:{planId:"plan-a"},"route-link":{label:"View",route:"/items/a"},notice:{text:"Ready"}}[o], () => ({}))}exports.runConformance = U; exports.runFormFillConformance = j; exports.runPlanConformance = O;
@@ -0,0 +1,10 @@
1
+ import { H as HttpRequest, C as ConformanceResult, a as ConformanceConfig } from './index-B5idIFTx.cjs';
2
+ import './generated-C9tbjwK0.cjs';
3
+
4
+ declare function runFormFillConformance(request: HttpRequest): Promise<ConformanceResult>;
5
+
6
+ declare function runPlanConformance(request: HttpRequest): Promise<ConformanceResult>;
7
+
8
+ declare function runConformance(config: ConformanceConfig): Promise<ConformanceResult>;
9
+
10
+ export { runConformance, runFormFillConformance, runPlanConformance };
@@ -0,0 +1,10 @@
1
+ import { H as HttpRequest, C as ConformanceResult, a as ConformanceConfig } from './index-DPzoKXCK.js';
2
+ import './generated-C9tbjwK0.js';
3
+
4
+ declare function runFormFillConformance(request: HttpRequest): Promise<ConformanceResult>;
5
+
6
+ declare function runPlanConformance(request: HttpRequest): Promise<ConformanceResult>;
7
+
8
+ declare function runConformance(config: ConformanceConfig): Promise<ConformanceResult>;
9
+
10
+ export { runConformance, runFormFillConformance, runPlanConformance };
@@ -0,0 +1 @@
1
+ import{a as k,j as S}from"./chunk-T5XF2R74.js";import"./chunk-5TBO732O.js";async function j(o){let u=[],w=[],h=(await o("/__conformance/session",{method:"POST"})).body,d={"Content-Type":"application/json",Cookie:`waypoint=${h.session}`,"X-CSRF-Token":h.csrf},t=(e,s)=>o(e,{method:"POST",headers:d,body:JSON.stringify({protocol:"1.1",...s})}),l=e=>o(`/conversations/${encodeURIComponent(e)}`,{headers:d}),y=async(e,s)=>{w.push(e);try{await s()||u.push(e)}catch{u.push(e)}},b={key:"form-fixture-a",resource:"items",label:"Item",route:"/items/new",state:"pending"},v={mode:"form-fill",title:"Form fixture",subject:b,clientCreationId:"form-create-a"},a;try{a=(await t("/conversations",v)).body}catch{return{passed:!1,failures:["form create"],scenarios:["form create"]}}await y("form creation replay",async()=>(await t("/conversations",v)).body.id===a.id),await y("form mode survives refetch",async()=>{let e=(await l(a.id)).body;return e.mode==="form-fill"&&e.subject?.key===b.key}),await y("form subject filtering",async()=>{await t("/conversations",{...v,subject:{...b,key:"form-fixture-b"},clientCreationId:"form-create-b"});let e=await o(`/conversations?subject=${b.key}`,{headers:d}),s=e.body;return e.status===200&&s.some(n=>n.id===a.id)&&s.every(n=>n.subject?.key===b.key)});let g={kind:"form-fill",clientReplyId:"form-fill-a",request:{requestId:"form-request-a",text:"Draft",references:["https://example.test/reference"],attachments:["private-image"],fields:[{name:"title",label:"Title",tier:"low",value:""}]}},I=async e=>{let s=await t(`/conversations/${e}/replies`,g),n=await t(`/conversations/${e}/replies`,g),c=(await l(e)).body.messages.flatMap(i=>i.blocks).filter(i=>i.type==="form.fill"),p=c[0];return s.status===200&&s.body.id===n.body.id&&c.length===1&&p?.body.requestId===g.request.requestId&&Object.keys(p.body.values).join()==="title"&&["valid","invalid"].includes(p.body.values.title.validation.status)&&Array.isArray(p.body.values.title.validation.messages)};return await y("form values and validation replay",()=>I(a.id)),await y("form rejects non-low input",async()=>(await t(`/conversations/${a.id}/replies`,{...g,clientReplyId:"forbidden",request:{...g.request,fields:[{name:"secret",tier:"sensitive",label:"Secret",value:""}]}})).status>=400),await y("form child inherits mode and values",async()=>{let e=(await t("/conversations",{...v,clientCreationId:"form-child-a",parentConversationId:a.id,field:"title"})).body;return e.parentConversationId===a.id&&e.mode==="form-fill"&&e.subject?.key===b.key&&await I(e.id)}),await y("form rejects wrong-subject child",async()=>(await t("/conversations",{...v,clientCreationId:"form-child-wrong",parentConversationId:a.id,field:"title",subject:{...b,key:"another"}})).status>=400),await y("form refuses general replies",async()=>{let e=await t("/conversations",{title:"Ordinary fixture"});if(e.status<200||e.status>=300)return!1;let s={kind:"message",clientReplyId:"general-reply",clientMessageId:"general-message",content:"An ordinary message"},n=await t(`/conversations/${e.body.id}/messages`,s),r=await t(`/conversations/${a.id}/messages`,{...s,clientReplyId:"form-general-reply",clientMessageId:"form-general-message"});return n.status>=200&&n.status<300&&r.status>=400&&r.body?.code==="refused"}),{passed:u.length===0,failures:u,scenarios:w}}async function O(o){let u=[],w=[],h=(await o("/__conformance/session",{method:"POST"})).body,d={"Content-Type":"application/json",Cookie:`waypoint=${h.session}`,"X-CSRF-Token":h.csrf},t=(l,y)=>o(l,{method:"POST",headers:d,body:JSON.stringify({protocol:"1.0",...y})});for(let l of["run","refuse"]){w.push(`plan ${l}`);try{await t("/__conformance/script",{planScenario:l});let v=`/conversations/${(await t("/conversations",{title:"Plan"})).body.id}/replies`,a=async i=>(await o(`/plans/${i}`,{headers:d})).body,g=await a("plan-a");if(g.plan.kind!=="immediate"||g.plan.stage!=="draft")throw new Error("Missing draft");let I=await o("/items/a",{headers:d});await t(v,{kind:"plan.values",clientReplyId:"values-a",planId:"plan-a",steps:[{stepId:"step-a",...I.body}]});let e=await a("plan-a"),s=e.plan;if(s.stage!=="final"||!s.digest)throw new Error("Missing final");let n=e.confirmation?.token;if(!n)throw new Error("Missing confirmation record");let r=(i,m)=>t(v,{kind:"confirm",clientReplyId:i,planId:"plan-a",digest:s.digest,...m});for(let[i,m]of[["no-token",{}],["wrong-token",{confirmationToken:`${n}x`}]])if((await r(i,m)).status!==409)throw new Error("Confirmation without its token accepted");if((await r("confirm-a",{confirmationToken:n})).status!==200)throw new Error("Confirmation refused");if((await r("confirm-b",{confirmationToken:n})).status!==409)throw new Error("Confirmation token used twice");let c=S({read:a,heartbeat:async i=>{await t(`/plans/${i}/heartbeat`,{})},request:async(i,m)=>{if((await o(i.path,{method:i.method,headers:{...d,...m.headers},body:i.body})).status>=400)throw new Error("Step refused")}});await c.run("plan-a",s.digest);let p=await a("plan-a");if(l==="run"&&p.state!=="completed")throw new Error("Not completed");if(l==="refuse"&&(p.state==="undoing"||p.undoPlanId!==void 0))throw new Error("Undo requested automatically");if(l==="run"){await t("/plans/plan-a/stop",{}),await c.run("undo-a",(await a("undo-a")).plan.digest);let i=await o("/items/a",{headers:d});if(JSON.stringify(i.body).includes("After"))throw new Error("Not restored")}c.dispose()}catch{u.push(`plan ${l}`)}}return{passed:u.length===0,failures:u,scenarios:w}}var _={kind:"action",clientReplyId:"card-answer-a",blockId:"card-answer-choice",actionId:"accept"};function T(o){return o===void 0?!0:typeof o!="object"||o===null||Array.isArray(o)?!1:Object.entries(_).every(([u,w])=>o[u]===w)}async function U(o){let u=[],w=[],R=await o.request("/__conformance/session",{method:"POST"});if(R.status!==200)return{passed:!1,failures:["test session unavailable"],scenarios:[]};let h=R.body,d={"Content-Type":"application/json",Cookie:`waypoint=${h.session}`,"X-CSRF-Token":h.csrf},t=(e,s)=>o.request(e,{method:"POST",headers:d,body:JSON.stringify({protocol:"1.0",...s})}),l=async(e,s)=>{w.push(e);try{await s()||u.push(e)}catch{u.push(e)}};await l("negotiation",async()=>{let e=await t("/negotiate",{supported:k});return e.status===200&&k.some(s=>s===e.body.protocol)&&Array.isArray(e.body.capabilities)});let b=(await t("/negotiate",{supported:k})).body;if(b.protocol==="1.1"&&b.capabilities?.includes("form-fill")){let e=await j(o.request);u.push(...e.failures),w.push(...e.scenarios)}let a=(await t("/conversations",{title:"Fixture"})).body.id;await l("optimistic replay",async()=>{let e={clientMessageId:"replay-a",content:"Request"},s=await t(`/conversations/${a}/messages`,e),n=await t(`/conversations/${a}/messages`,e);return s.body.id===n.body.id}),await l("closed failures",async()=>{for(let e of["in-doubt","replaced","retryable","refused","closed","full","declined","unavailable"]){await t("/__conformance/script",{turns:[{problem:{id:"failure-a",code:e}}]});let s=await t(`/conversations/${a}/messages`,{clientMessageId:`failure-${e}`,content:"Request"});if(s.status<400||s.body.code!==e)return!1}return!0}),await l("blocks and fallback",async()=>{let e=["markdown","card","details","list","table","form","choice","buttons","diff","plan","route-link","notice","example/future"],s=e.map(c=>({type:c,id:c,fallback:"Readable",body:F(c)}));await t("/__conformance/script",{turns:[{blocks:s}]}),await t(`/conversations/${a}/messages`,{clientMessageId:"blocks-a",content:"Request"});let r=(await o.request(`/conversations/${a}`,{headers:d})).body;return e.every(c=>r.messages.some(p=>p.blocks.some(i=>i.type===c&&i.fallback==="Readable")))}),await l("drop then refetch",async()=>(await t("/__conformance/script",{turns:[{content:"Authoritative after drop"}]}),await t(`/conversations/${a}/messages`,{clientMessageId:"drop-a",content:"Request"}),await o.request(`/conversations/${a}/stream`,{headers:d}),(await o.request(`/conversations/${a}`,{headers:d})).body.messages.some(s=>s.content==="Authoritative after drop"))),await l("one answer per card",async()=>{await t("/__conformance/script",{turns:[{blocks:[{type:"card",id:"card-answer",fallback:"Answer",body:{title:"Question",blocks:[{type:"buttons",id:"card-answer-choice",fallback:"Answer",body:{actions:[{id:"accept",label:"Accept"},{id:"decline",label:"Decline"}]}}]}}]}]}),await t(`/conversations/${a}/messages`,{clientMessageId:"card-answer",content:"Request"});let e=(f,P)=>t(`/conversations/${a}/replies`,{kind:"action",clientReplyId:f,blockId:"card-answer-choice",actionId:P}),s=f=>f.status===409&&f.body.code==="refused",n=await e("card-answer-a","accept"),r=await e("card-answer-a","accept"),c=await e("card-answer-a","decline"),p=await e("card-answer-b","decline"),m=(await o.request(`/conversations/${a}`,{headers:d})).body.messages.flatMap(f=>f.blocks).find(f=>f.id==="card-answer");return n.status>=200&&n.status<300&&r.status===n.status&&JSON.stringify(r.body)===JSON.stringify(n.body)&&(s(c)||c.status===422)&&s(p)&&m?.answered===!0&&T(m.answer)}),await l("agreement binding",async()=>{let e=await t("/negotiate",{supported:k,offer:{capabilities:["plans"]}}),s=e.body;if(e.status===200&&s.agreementId===void 0)return!0;if(e.status!==200||typeof s.agreementId!="string")return!1;let n={...d,"Waypoint-Agreement":"conformance-unknown"},r=await o.request(`/conversations/${a}`,{headers:n}),c=await o.request(`/conversations/${a}/messages`,{method:"POST",headers:n,body:JSON.stringify({protocol:"1.0",clientMessageId:"binding-a",content:"Request"})}),p=await o.request(`/conversations/${a}`,{headers:d}),i=await o.request(`/conversations/${a}`,{headers:{...d,"Waypoint-Agreement":s.agreementId}});return r.status===409&&r.body.code==="agreement-expired"&&c.status===409&&c.body.code==="agreement-expired"&&!p.body.messages.some(m=>m.clientMessageId==="binding-a")&&i.status===200}),await l("agreement keeps its answer",async()=>{let e=await t("/negotiate",{supported:["1.0"],offer:{capabilities:["plans"]}}),s=await t("/negotiate",{supported:k,offer:{capabilities:["plans"]}}),n=e.body,r=s.body;if(!n.agreementId||!r.agreementId||n.protocol===r.protocol)return!0;let c=await o.request(`/conversations/${a}`,{headers:{...d,"Waypoint-Agreement":n.agreementId}});return c.status===200&&c.body.protocol===n.protocol});let g=await t("/negotiate",{supported:k,offer:{capabilities:["reply-stop"]}});g.body.capabilities?.includes("reply-stop")&&await l("reply stop",async()=>{await t("/__conformance/script",{turns:[{chunks:["Partial answer"],interval:0,ending:"held"}]}),await t(`/conversations/${a}/messages`,{clientMessageId:"stop-a",content:"Request"});let e=C=>C?{...d,"Waypoint-Agreement":C}:d,s=g.body.agreementId,n=async(C=s)=>(await o.request(`/conversations/${a}`,{headers:e(C)})).body.messages.at(-1),r=await n();for(let C=0;r?.content!=="Partial answer"&&C<100;C++)r=await n();if(!s||r?.role!=="assistant"||r.status!=="writing")return!1;let c=r.versionIndex??1,p=await t(`/conversations/${a}/replies`,{kind:"stop",clientReplyId:"stop-a-other-version",messageId:r.id,versionIndex:c+1}),i=await n(),m={kind:"stop",clientReplyId:"stop-a-reply",messageId:r.id,versionIndex:c},f=await t(`/conversations/${a}/replies`,m),P=await t(`/conversations/${a}/replies`,m),x=await t(`/conversations/${a}/replies`,{kind:"stop",clientReplyId:"stop-a-reply-2",messageId:r.id}),$=await n(),A=(await t("/negotiate",{supported:k,offer:{capabilities:["plans"]}})).body.agreementId,q=A?await n(A):void 0;return p.status<500&&i?.status==="writing"&&(!q||q.status==="failed"&&q.content==="Partial answer")&&f.status>=200&&f.status<300&&P.status===f.status&&JSON.stringify(P.body)===JSON.stringify(f.body)&&x.status>=200&&x.status<300&&$?.id===r.id&&$.status==="stopped"&&$.content==="Partial answer"});let I=await O(o.request);return u.push(...I.failures),w.push(...I.scenarios),{passed:u.length===0,failures:u,scenarios:w}}function F(o){return{markdown:{text:"Readable"},card:{title:"Card",blocks:[]},details:{summary:"Details",blocks:[]},list:{items:[]},table:{columns:[],rows:[]},form:{fields:[]},choice:{mode:"single",options:[]},buttons:{actions:[]},diff:{before:"Before",after:"After"},plan:{planId:"plan-a"},"route-link":{label:"View",route:"/items/a"},notice:{text:"Ready"}}[o]??{}}export{U as runConformance,j as runFormFillConformance,O as runPlanConformance};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-II26UWZM.cjs');var _jsyaml = require('js-yaml');function s(n){return _jsyaml.load.call(void 0, n,{schema:_jsyaml.JSON_SCHEMA,listener:(o,r)=>{if(o==="close"&&r.anchor)throw new Error("Flow aliases are not supported")}})}exports.loadFrontmatter = s;
@@ -0,0 +1,3 @@
1
+ declare function loadFrontmatter(source: string): unknown;
2
+
3
+ export { loadFrontmatter };
@@ -0,0 +1,3 @@
1
+ declare function loadFrontmatter(source: string): unknown;
2
+
3
+ export { loadFrontmatter };
@@ -0,0 +1 @@
1
+ import"./chunk-5TBO732O.js";import{load as t,JSON_SCHEMA as e}from"js-yaml";function s(n){return t(n,{schema:e,listener:(o,r)=>{if(o==="close"&&r.anchor)throw new Error("Flow aliases are not supported")}})}export{s as loadFrontmatter};
@@ -0,0 +1 @@
1
+ import{a as _}from"./chunk-D4Q46KWA.js";import{a as V,b as W}from"./chunk-PFR2J5BV.js";import{H as L,e as D,h as N,k as O,l as B,q as T,y as q}from"./chunk-IPI4O4LP.js";import"./chunk-FQSWQLRW.js";import"./chunk-OWT55N6J.js";import{e as G}from"./chunk-QFBAOEPD.js";import"./chunk-RZZDQWC2.js";import{a as H}from"./chunk-M63QOANE.js";import"./chunk-L4PFFRDE.js";import"./chunk-T5XF2R74.js";import"./chunk-K73VV7KA.js";import"./chunk-5TBO732O.js";import{useEffect as j,useRef as v,useState as h}from"react";import{jsx as t,jsxs as M}from"react/jsx-runtime";T(V,W);function oe({id:c,labelledBy:m,flows:a,all:r,list:l,onRetryList:k,onRunFlow:p}){let{client:s,format:b,primitives:S}=q(),y=S.button,e=v(null),[o,i]=h(void 0),[u,E]=h(new Set),[g,F]=h(void 0),R=v(!1),d=(n,P)=>{u.has(n)||(E(f=>new Set(f).add(n)),F(f=>f?.id===n?f:void 0),s.setFavourite(n,P).then(()=>F(f=>f?.id===n?void 0:f),()=>F({id:n,value:P})).finally(()=>E(f=>{let A=new Set(f);return A.delete(n),A})))},w=v(r);j(()=>{w.current!==r&&(w.current=r,!o&&R.current&&(R.current=!1,s.prepareFlow()))},[r,o,s]);let x=v(0),z=D(()=>{let n=e.current?.querySelectorAll("li")??[];return[n[x.current]?.querySelector("button"),n[x.current-1]?.querySelector("button"),e.current]}),C=v(void 0),J=D(()=>[[...e.current?.querySelectorAll("li[data-flow]")??[]].find(n=>n.getAttribute("data-flow")===C.current)?.querySelector("button"),e.current]),K=!a?.length;return M("div",{ref:e,id:c,role:"tabpanel","aria-labelledby":m,tabIndex:K?0:-1,onFocus:n=>{if(n.target.closest(H)||n.target.closest("[data-favourite-failure]"))return;let P=n.target.closest("li");x.current=P?[...P.parentElement?.children??[]].indexOf(P):0,z(n)},children:[g?t("div",{"data-favourite-failure":"",children:t(L,{retrying:u.has(g.id),onFocus:n=>{C.current=g.id,J(n)},onRetry:()=>d(g.id,g.value)})}):null,a?.length?t("ul",{children:a.map(n=>M("li",{"data-flow":n.id,children:[t(y,{onPress:()=>{if(!s.canPrepareFlow())return p(n.id);R.current=!0,i(n)},children:n.title}),t(y,{label:b("chat.block.favourite",{title:n.title}),"aria-pressed":n.favourite===!0,"aria-busy":u.has(n.id)||void 0,onPress:()=>d(n.id,!n.favourite),children:t("span",{"aria-hidden":"true",children:n.favourite?"\u2605":"\u2606"})})]},n.id))}):l==="failed"||l==="retrying"?t(L,{retrying:l==="retrying",onRetry:k}):t("p",{children:b(l==="loading"&&!a?"chat.block.flowsLoading":"chat.block.flowsEmpty")}),o?t(Q,{flow:o,prepare:()=>s.prepareFlow(o.id),onRun:n=>{p(o.id,n),i(void 0)},onCancel:()=>{i(void 0),s.prepareFlow()},panel:()=>e.current},o.id):null]})}function Q({flow:c,prepare:m,onRun:a,onCancel:r,panel:l}){let{format:k,primitives:p}=q(),s=B("flow-parameters",void 0,l),b=v(r);b.current=r;let S=N(!0,G().conversationId,r),[y,e]=h(void 0),[o,i]=h(),[u,E]=h(0),g=v(a);g.current=a;let F=v(null),R=D(()=>[F.current?.querySelector("input,button"),F.current]);return j(()=>{let d=!0;return m().then(w=>{if(d){if(!w)return i("failed");i(void 0),w.parameters.length?e(w):g.current({})}},w=>{d&&(w?.id==="flow-prepare"?b.current():i("failed"))}),()=>{d=!1}},[u]),S?null:t(O,{as:p.drawer,open:!0,label:c.title,onClose:r,closeLabel:k("chat.close"),...s,children:t("div",{ref:F,onFocus:R,tabIndex:-1,children:o?t(L,{retrying:o==="retrying",onRetry:()=>{i("retrying"),E(d=>d+1)}}):y?t(X,{parameters:y.parameters,onRun:d=>a(d),onCancel:r}):t("p",{role:"status",children:k("chat.block.flowLoading")})})})}var U=(c,m)=>c.type==="boolean"?!0:m!==void 0&&m!=="";function X({parameters:c,onRun:m,onCancel:a}){let{format:r,primitives:l}=q(),k=l.checkbox,[p,s]=h(()=>Object.fromEntries(c.map(e=>[e.name,e.default??(e.type==="boolean"?!1:void 0)]))),b=c.some(e=>e.required&&!U(e,p[e.name])),S=()=>{b||m(p)},y=(e,o)=>s(i=>({...i,[e]:o}));return M("form",{className:"wp-flow-form",onSubmit:e=>{e.preventDefault(),S()},children:[c.map(e=>{let o=e.required?r("chat.block.required",{label:e.label}):e.label,i=p[e.name];return e.type==="boolean"?t(k,{label:o,checked:i===!0,onChange:u=>y(e.name,u)},e.name):t(l.input,{label:o,type:e.type==="number"?"number":"text",required:e.required,value:i===void 0?"":String(i),onChange:u=>y(e.name,e.type==="number"?u.trim()===""||!Number.isFinite(Number(u))?void 0:Number(u):u===""?void 0:u)},e.name)}),M("div",{className:"wp-actions",children:[t(_,{disabled:!1,blocked:b,reason:r("chat.block.runMissing"),label:r("chat.block.run"),onPress:S}),t(l.button,{onPress:a,children:r("chat.cancel")})]})]})}export{Q as FlowDrawer,oe as FlowPanel};
@@ -0,0 +1 @@
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 _chunkXTKUDSDKcjs = require('./chunk-XTKUDSDK.cjs');var _chunkVGGJGRNKcjs = require('./chunk-VGGJGRNK.cjs');var _chunkA3YOSFLEcjs = require('./chunk-A3YOSFLE.cjs');require('./chunk-FBADWFRR.cjs');require('./chunk-QS3MKZOY.cjs');var _chunkRZ3AGK3Ucjs = require('./chunk-RZ3AGK3U.cjs');require('./chunk-4BWV3SEL.cjs');var _chunkGT6PI4CTcjs = 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 _jsxruntime = require('react/jsx-runtime');_chunkA3YOSFLEcjs.q.call(void 0, _chunkVGGJGRNKcjs.a,_chunkVGGJGRNKcjs.b);function oe({id:c,labelledBy:m,flows:a,all:r,list:l,onRetryList:k,onRunFlow:p}){let{client:s,format:b,primitives:S}=_chunkA3YOSFLEcjs.y.call(void 0, ),y=S.button,e=_react.useRef.call(void 0, null),[o,i]=_react.useState.call(void 0, void 0),[u,E]=_react.useState.call(void 0, new Set),[g,F]=_react.useState.call(void 0, void 0),R=_react.useRef.call(void 0, !1),d=(n,P)=>{u.has(n)||(E(f=>new Set(f).add(n)),F(f=>_optionalChain([f, 'optionalAccess', _2 => _2.id])===n?f:void 0),s.setFavourite(n,P).then(()=>F(f=>_optionalChain([f, 'optionalAccess', _3 => _3.id])===n?void 0:f),()=>F({id:n,value:P})).finally(()=>E(f=>{let A=new Set(f);return A.delete(n),A})))},w=_react.useRef.call(void 0, r);_react.useEffect.call(void 0, ()=>{w.current!==r&&(w.current=r,!o&&R.current&&(R.current=!1,s.prepareFlow()))},[r,o,s]);let x=_react.useRef.call(void 0, 0),z=_chunkA3YOSFLEcjs.e.call(void 0, ()=>{let n=_nullishCoalesce(_optionalChain([e, 'access', _4 => _4.current, 'optionalAccess', _5 => _5.querySelectorAll, 'call', _6 => _6("li")]), () => ([]));return[_optionalChain([n, 'access', _7 => _7[x.current], 'optionalAccess', _8 => _8.querySelector, 'call', _9 => _9("button")]),_optionalChain([n, 'access', _10 => _10[x.current-1], 'optionalAccess', _11 => _11.querySelector, 'call', _12 => _12("button")]),e.current]}),C=_react.useRef.call(void 0, void 0),J=_chunkA3YOSFLEcjs.e.call(void 0, ()=>[_optionalChain([[..._nullishCoalesce(_optionalChain([e, 'access', _13 => _13.current, 'optionalAccess', _14 => _14.querySelectorAll, 'call', _15 => _15("li[data-flow]")]), () => ([]))], 'access', _16 => _16.find, 'call', _17 => _17(n=>n.getAttribute("data-flow")===C.current), 'optionalAccess', _18 => _18.querySelector, 'call', _19 => _19("button")]),e.current]),K=!_optionalChain([a, 'optionalAccess', _20 => _20.length]);return _jsxruntime.jsxs.call(void 0, "div",{ref:e,id:c,role:"tabpanel","aria-labelledby":m,tabIndex:K?0:-1,onFocus:n=>{if(n.target.closest(_chunkGT6PI4CTcjs.a)||n.target.closest("[data-favourite-failure]"))return;let P=n.target.closest("li");x.current=P?[..._nullishCoalesce(_optionalChain([P, 'access', _21 => _21.parentElement, 'optionalAccess', _22 => _22.children]), () => ([]))].indexOf(P):0,z(n)},children:[g?_jsxruntime.jsx.call(void 0, "div",{"data-favourite-failure":"",children:_jsxruntime.jsx.call(void 0, _chunkA3YOSFLEcjs.H,{retrying:u.has(g.id),onFocus:n=>{C.current=g.id,J(n)},onRetry:()=>d(g.id,g.value)})}):null,_optionalChain([a, 'optionalAccess', _23 => _23.length])?_jsxruntime.jsx.call(void 0, "ul",{children:a.map(n=>_jsxruntime.jsxs.call(void 0, "li",{"data-flow":n.id,children:[_jsxruntime.jsx.call(void 0, y,{onPress:()=>{if(!s.canPrepareFlow())return p(n.id);R.current=!0,i(n)},children:n.title}),_jsxruntime.jsx.call(void 0, y,{label:b("chat.block.favourite",{title:n.title}),"aria-pressed":n.favourite===!0,"aria-busy":u.has(n.id)||void 0,onPress:()=>d(n.id,!n.favourite),children:_jsxruntime.jsx.call(void 0, "span",{"aria-hidden":"true",children:n.favourite?"\u2605":"\u2606"})})]},n.id))}):l==="failed"||l==="retrying"?_jsxruntime.jsx.call(void 0, _chunkA3YOSFLEcjs.H,{retrying:l==="retrying",onRetry:k}):_jsxruntime.jsx.call(void 0, "p",{children:b(l==="loading"&&!a?"chat.block.flowsLoading":"chat.block.flowsEmpty")}),o?_jsxruntime.jsx.call(void 0, Q,{flow:o,prepare:()=>s.prepareFlow(o.id),onRun:n=>{p(o.id,n),i(void 0)},onCancel:()=>{i(void 0),s.prepareFlow()},panel:()=>e.current},o.id):null]})}function Q({flow:c,prepare:m,onRun:a,onCancel:r,panel:l}){let{format:k,primitives:p}=_chunkA3YOSFLEcjs.y.call(void 0, ),s=_chunkA3YOSFLEcjs.l.call(void 0, "flow-parameters",void 0,l),b=_react.useRef.call(void 0, r);b.current=r;let S=_chunkA3YOSFLEcjs.h.call(void 0, !0,_chunkRZ3AGK3Ucjs.e.call(void 0, ).conversationId,r),[y,e]=_react.useState.call(void 0, void 0),[o,i]=_react.useState.call(void 0, ),[u,E]=_react.useState.call(void 0, 0),g=_react.useRef.call(void 0, a);g.current=a;let F=_react.useRef.call(void 0, null),R=_chunkA3YOSFLEcjs.e.call(void 0, ()=>[_optionalChain([F, 'access', _24 => _24.current, 'optionalAccess', _25 => _25.querySelector, 'call', _26 => _26("input,button")]),F.current]);return _react.useEffect.call(void 0, ()=>{let d=!0;return m().then(w=>{if(d){if(!w)return i("failed");i(void 0),w.parameters.length?e(w):g.current({})}},w=>{d&&(_optionalChain([w, 'optionalAccess', _27 => _27.id])==="flow-prepare"?b.current():i("failed"))}),()=>{d=!1}},[u]),S?null:_jsxruntime.jsx.call(void 0, _chunkA3YOSFLEcjs.k,{as:p.drawer,open:!0,label:c.title,onClose:r,closeLabel:k("chat.close"),...s,children:_jsxruntime.jsx.call(void 0, "div",{ref:F,onFocus:R,tabIndex:-1,children:o?_jsxruntime.jsx.call(void 0, _chunkA3YOSFLEcjs.H,{retrying:o==="retrying",onRetry:()=>{i("retrying"),E(d=>d+1)}}):y?_jsxruntime.jsx.call(void 0, X,{parameters:y.parameters,onRun:d=>a(d),onCancel:r}):_jsxruntime.jsx.call(void 0, "p",{role:"status",children:k("chat.block.flowLoading")})})})}var U=(c,m)=>c.type==="boolean"?!0:m!==void 0&&m!=="";function X({parameters:c,onRun:m,onCancel:a}){let{format:r,primitives:l}=_chunkA3YOSFLEcjs.y.call(void 0, ),k=l.checkbox,[p,s]=_react.useState.call(void 0, ()=>Object.fromEntries(c.map(e=>[e.name,_nullishCoalesce(e.default, () => ((e.type==="boolean"?!1:void 0)))]))),b=c.some(e=>e.required&&!U(e,p[e.name])),S=()=>{b||m(p)},y=(e,o)=>s(i=>({...i,[e]:o}));return _jsxruntime.jsxs.call(void 0, "form",{className:"wp-flow-form",onSubmit:e=>{e.preventDefault(),S()},children:[c.map(e=>{let o=e.required?r("chat.block.required",{label:e.label}):e.label,i=p[e.name];return e.type==="boolean"?_jsxruntime.jsx.call(void 0, k,{label:o,checked:i===!0,onChange:u=>y(e.name,u)},e.name):_jsxruntime.jsx.call(void 0, l.input,{label:o,type:e.type==="number"?"number":"text",required:e.required,value:i===void 0?"":String(i),onChange:u=>y(e.name,e.type==="number"?u.trim()===""||!Number.isFinite(Number(u))?void 0:Number(u):u===""?void 0:u)},e.name)}),_jsxruntime.jsxs.call(void 0, "div",{className:"wp-actions",children:[_jsxruntime.jsx.call(void 0, _chunkXTKUDSDKcjs.a,{disabled:!1,blocked:b,reason:r("chat.block.runMissing"),label:r("chat.block.run"),onPress:S}),_jsxruntime.jsx.call(void 0, l.button,{onPress:a,children:r("chat.cancel")})]})]})}exports.FlowDrawer = Q; exports.FlowPanel = oe;
@@ -0,0 +1 @@
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 _chunkXWDB2LS3cjs = require('./chunk-XWDB2LS3.cjs');var _chunkVGGJGRNKcjs = require('./chunk-VGGJGRNK.cjs');var _chunkA3YOSFLEcjs = require('./chunk-A3YOSFLE.cjs');require('./chunk-FBADWFRR.cjs');require('./chunk-QS3MKZOY.cjs');require('./chunk-RZ3AGK3U.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 be={"form.generating":"Generating draft\u2026","form.ready":"Draft ready{choice, plural, =0 {} one {, # field needs your choice} other {, # fields need your choice}}{invalid, plural, =0 {} one {, # field needs attention} other {, # fields need attention}}","form.attention":"{count, plural, one {# field needs attention} other {# fields need attention}}","form.reverted":"Fill reverted.","form.revert":"Revert this fill ({fields})","form.revertWait":"Wait for the draft to finish.","form.suggested":"Suggested value for {field}","form.replaceIt":"Replace","form.keepMine":"Keep mine","form.attach":"Attach images","form.remove":"Remove {name}","form.uploading":"{count, plural, one {Uploading # image\u2026} other {Uploading # images\u2026}}","form.attached":"{count, plural, one {# image attached} other {# images attached}}","form.attachFailed":"{name} could not be attached.","form.removeFailed":"{name} could not be removed.","form.onlyImages":"Only images can be attached.","form.busy":"Wait for the current upload to finish.","form.unusable":"The draft could not be used."},ye={"form.generating":"\u6B63\u5728\u751F\u6210\u8349\u7A3F\u2026\u2026","form.ready":"\u8349\u7A3F\u5DF2\u5C31\u7EEA{choice, plural, =0 {} other {\uFF0C# \u4E2A\u5B57\u6BB5\u9700\u8981\u4F60\u9009\u62E9}}{invalid, plural, =0 {} other {\uFF0C# \u4E2A\u5B57\u6BB5\u9700\u8981\u5904\u7406}}","form.attention":"{count} \u4E2A\u5B57\u6BB5\u9700\u8981\u5904\u7406","form.reverted":"\u5DF2\u64A4\u9500\u672C\u6B21\u586B\u5145\u3002","form.revert":"\u64A4\u9500\u672C\u6B21\u586B\u5145\uFF08{fields}\uFF09","form.revertWait":"\u8BF7\u7B49\u5F85\u8349\u7A3F\u5B8C\u6210\u3002","form.suggested":"{field}\u7684\u5EFA\u8BAE\u503C","form.replaceIt":"\u66FF\u6362","form.keepMine":"\u4FDD\u7559\u6211\u7684","form.attach":"\u9644\u52A0\u56FE\u7247","form.remove":"\u79FB\u9664{name}","form.uploading":"\u6B63\u5728\u4E0A\u4F20 {count} \u5F20\u56FE\u7247\u2026\u2026","form.attached":"\u5DF2\u9644\u52A0 {count} \u5F20\u56FE\u7247","form.attachFailed":"\u65E0\u6CD5\u9644\u52A0{name}\u3002","form.removeFailed":"\u65E0\u6CD5\u79FB\u9664{name}\u3002","form.onlyImages":"\u53EA\u80FD\u9644\u52A0\u56FE\u7247\u3002","form.busy":"\u8BF7\u7B49\u5F85\u5F53\u524D\u4E0A\u4F20\u5B8C\u6210\u3002","form.unusable":"\u65E0\u6CD5\u4F7F\u7528\u6B64\u8349\u7A3F\u3002"};var _jsxruntime = require('react/jsx-runtime');_chunkA3YOSFLEcjs.q.call(void 0, be,ye);_chunkA3YOSFLEcjs.q.call(void 0, _chunkVGGJGRNKcjs.a,_chunkVGGJGRNKcjs.b);var xe=100,Se=new WeakMap;function Re(e){let n=Se.get(e);return n||(n=new Map,Se.set(e,n)),n}function ce(e){for(let[n,t]of e){if(e.size<=xe)break;t.inFlight===0&&e.delete(n)}}var Ce=e=>Object.values(e.fields).filter(n=>_optionalChain([n, 'access', _2 => _2.validation, 'optionalAccess', _3 => _3.status])==="invalid"||n.localInvalid).length;function $e({name:e,draft:n,session:t,t:c,primitives:l,onReplace:A}){let m=l.button,a=n.replacement,u=a.validation.status==="invalid",d=_react.useId.call(void 0, );return _jsxruntime.jsxs.call(void 0, "div",{role:"group","aria-labelledby":d,"data-suggestion":"",children:[_jsxruntime.jsx.call(void 0, "p",{id:d,children:c("form.suggested",{field:n.label})}),_jsxruntime.jsx.call(void 0, "div",{children:_jsxruntime.jsx.call(void 0, _chunkXWDB2LS3cjs.a,{value:a.value,t:c})}),a.validation.messages.length?_jsxruntime.jsxs.call(void 0, "div",{className:u?"wp-invalid":void 0,children:[u?_jsxruntime.jsx.call(void 0, "strong",{children:c("form.invalid")}):null,a.validation.messages.map((r,s)=>_jsxruntime.jsx.call(void 0, "p",{children:r},s))]}):null,_jsxruntime.jsxs.call(void 0, "div",{className:"wp-actions",children:[_jsxruntime.jsx.call(void 0, m,{onPress:()=>{t.replace(e,a.revision)&&A()},children:c("form.replaceIt")}),_jsxruntime.jsx.call(void 0, m,{onPress:()=>t.cancelReplacement(e),children:c("form.keepMine")})]})]})}function Ge({text:e}){return _jsxruntime.jsx.call(void 0, "span",{role:"status",className:"wp-sr-only",children:e})}var Ue=(e,n)=>{let t=Ce(e);return t?n("form.attention",{count:t}):""};function Fe({B:e,reason:n,onPress:t,children:c}){let l=_react.useId.call(void 0, );return _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, e,{"aria-disabled":n?!0:void 0,"aria-describedby":n?l:void 0,onPress:n?void 0:t,children:c}),n?_jsxruntime.jsx.call(void 0, "span",{id:l,children:n}):null]})}var Te=(e,n)=>{let t=n;for(let c=2;e.some(l=>l.name===t);c++)t=`${n} (${c})`;return t};async function ke(e,n){let{t,attachments:c}=e;if(!n.length)return;let l=n.filter(r=>r.type.startsWith("image/")),A=l.length<n.length?t("form.onlyImages"):"",m=(...r)=>e.say([...r,A].filter(Boolean).join(" "));if(!l.length)return m();if(!c)return m(t("form.imagesHere"));if(!e.claim())return m(t("form.busy"));let a=e.scope();m(t("form.uploading",{count:l.length}));let u=[],d=[];for(let r of l)try{let s=await c.upload(r);u.push({reference:s,name:r.name||"image"})}catch (e2){d.push(r.name||"image")}if(a!==e.scope()){await Promise.allSettled(u.map(r=>c.remove(r.reference)));return}e.setFiles(r=>{let s=[...r];for(let C of u)s.some(h=>h.reference===C.reference)||s.push({...C,name:Te(s,C.name)});return s}),e.release(),m(u.length?t("form.attached",{count:u.length}):"",...d.map(r=>t("form.attachFailed",{name:r})))}function je({control:e}){let{session:n,t,primitives:c,attachments:l,files:A,accepted:m,sent:a}=e,u=c.button,d=_react.useSyncExternalStore.call(void 0, n.subscribe,n.getSnapshot,n.getSnapshot),r=_react.useId.call(void 0, ),s=e.removalBlocked(),C=_react.useRef.call(void 0, null),h=_react.useRef.call(void 0, null),O=_react.useRef.call(void 0, null),w=_react.useRef.call(void 0, null),H=_react.useRef.call(void 0, void 0);_react.useLayoutEffect.call(void 0, ()=>{m&&m!==H.current&&e.say(t("form.generating")),H.current=m},[m,e,t]);let _=_react.useRef.call(void 0, d.pending);_react.useLayoutEffect.call(void 0, ()=>{let o=_.current&&!d.pending;if(_.current=d.pending,!o||!a)return;let p=_optionalChain([d, 'access', _4 => _4.fills, 'optionalAccess', _5 => _5.some, 'call', _6 => _6(M=>M.id===a)]),j=Object.values(d.fields).filter(M=>_optionalChain([M, 'access', _7 => _7.replacement, 'optionalAccess', _8 => _8.fill])===a).length;(p||j)&&e.say(t("form.ready",{choice:j,invalid:Ce(d)}))},[d,a,e,t]);let K=_react.useRef.call(void 0, 0),T=o=>{let p=_nullishCoalesce(_optionalChain([o, 'optionalAccess', _9 => _9.querySelectorAll, 'call', _10 => _10("button")]), () => ([]));return[p[K.current],p[K.current-1]]},L=o=>{K.current=[...o.currentTarget.querySelectorAll("button")].indexOf(o.target)},D=_chunkA3YOSFLEcjs.e.call(void 0, ()=>[...T(O.current),_optionalChain([h, 'access', _11 => _11.current, 'optionalAccess', _12 => _12.querySelector, 'call', _13 => _13("button")])]),ee=_chunkA3YOSFLEcjs.e.call(void 0, ()=>[...T(w.current),e.messageField()]),z=_chunkA3YOSFLEcjs.e.call(void 0, ()=>[e.messageField()]),te=o=>o.map(p=>_nullishCoalesce(_optionalChain([d, 'access', _14 => _14.fields, 'access', _15 => _15[p], 'optionalAccess', _16 => _16.label]), () => (p))).join(", "),ne=o=>{if(!l)return;if(e.removalBlocked())return e.say(t("form.revertWait"));if(!e.claim())return e.say(t("form.busy"));let p=e.scope();l.remove(o.reference).then(()=>{p===e.scope()&&(e.setFiles(j=>j.filter(M=>M.reference!==o.reference)),e.release())},()=>{p===e.scope()&&(e.release(),e.say(t("form.removeFailed",{name:o.name})))})};return _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, "p",{role:"status",className:"wp-form-status",children:e.status}),_jsxruntime.jsx.call(void 0, "div",{onFocus:z,children:e.unusable&&e.unusable===a?_jsxruntime.jsxs.call(void 0, "p",{role:"alert",children:[t("form.unusable")," ",_jsxruntime.jsx.call(void 0, Fe,{B:u,reason:e.blocked,onPress:e.generate,children:t("chat.retry")})]}):null}),_jsxruntime.jsx.call(void 0, "div",{ref:w,onFocus:o=>{L(o),ee(o)},children:(_nullishCoalesce(d.fills, () => ([]))).map(o=>_jsxruntime.jsx.call(void 0, Fe,{B:u,reason:d.pending?t("form.revertWait"):void 0,onPress:()=>{n.revert(o.id)&&e.say(t("form.reverted"))},children:t("form.revert",{fields:te(o.fields)})},o.id))}),l?_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, "input",{ref:C,type:"file",accept:"image/*",multiple:!0,hidden:!0,onChange:o=>{let p=[..._nullishCoalesce(o.target.files, () => ([]))];o.target.value="",ke(e,p)}}),_jsxruntime.jsx.call(void 0, "div",{ref:h,children:_jsxruntime.jsx.call(void 0, u,{onPress:()=>_optionalChain([C, 'access', _17 => _17.current, 'optionalAccess', _18 => _18.click, 'call', _19 => _19()]),children:t("form.attach")})}),s&&A.length?_jsxruntime.jsx.call(void 0, "span",{id:r,className:"wp-sr-only",children:t("form.revertWait")}):null,_jsxruntime.jsx.call(void 0, "ul",{ref:O,onFocus:o=>{L(o),D(o)},className:"wp-attachments",children:A.map(o=>_jsxruntime.jsxs.call(void 0, "li",{children:[_jsxruntime.jsx.call(void 0, "span",{children:o.name}),_jsxruntime.jsx.call(void 0, u,{"aria-disabled":s||void 0,"aria-describedby":s?r:void 0,onPress:()=>ne(o),children:t("form.remove",{name:o.name})})]},o.reference))})]}):null]})}function _e({session:e,open:n,field:t,source:c,attachments:l,text:A,references:m,scope:a,upload:u,messageField:d}){let{client:r,format:s,primitives:C}=_chunkA3YOSFLEcjs.y.call(void 0, ),h=_react.useSyncExternalStore.call(void 0, r.subscribe,r.getSnapshot,r.getSnapshot),O=_react.useSyncExternalStore.call(void 0, e.subscribe,e.getSnapshot,e.getSnapshot),{pending:w}=O,[H,_]=_react.useState.call(void 0, []),[K,T]=_react.useState.call(void 0, !1),[L,D]=_react.useState.call(void 0, !1),[ee,z]=_react.useState.call(void 0, !1),[te,ne]=_react.useState.call(void 0, ""),[o,p]=_react.useState.call(void 0, void 0),[j,M]=_react.useState.call(void 0, void 0),[Pe,le]=_react.useState.call(void 0, void 0),$=_react.useRef.call(void 0, !1),G=_react.useRef.call(void 0, !1),b=Re(r),J=_react.useRef.call(void 0, void 0),y=_react.useRef.call(void 0, void 0),Ae=_react.useRef.call(void 0, 0),Be=_react.useId.call(void 0, ),re=_react.useId.call(void 0, ),we=()=>`${h.conversationId}:${Be}:${++Ae.current}`,ue=C.button;_react.useEffect.call(void 0, ()=>($.current=!1,G.current=!1,T(!1),D(!1),()=>{y.current=void 0}),[n,e,t]),_react.useEffect.call(void 0, ()=>{if(_optionalChain([h, 'access', _20 => _20.conversation, 'optionalAccess', _21 => _21.mode])==="form-fill"){for(let g of h.conversation.messages)for(let I of g.blocks)if(I.type==="form.fill"){let q=_optionalChain([I, 'access', _22 => _22.body, 'optionalAccess', _23 => _23.requestId]);!e.receive(I.body)&&q===_optionalChain([y, 'access', _24 => _24.current, 'optionalAccess', _25 => _25.request, 'access', _26 => _26.requestId])&&e.getSnapshot().pending&&(e.failRequest(q),y.current=void 0,le(q))}}},[h.conversation,e]);let oe=async(g=!1)=>{if($.current||G.current||!n||e.getSnapshot().pending&&!g||g&&(!_optionalChain([y, 'access', _27 => _27.current, 'optionalAccess', _28 => _28.failed])||y.current.conversationId!==r.getSnapshot().conversationId))return;$.current=!0,D(!0),z(!1),le(void 0);let I=a.current,q,E;try{await r.ready;let S=r.getSnapshot();if(g&&_optionalChain([y, 'access', _29 => _29.current, 'optionalAccess', _30 => _30.conversationId])!==S.conversationId)return;let me=k=>k.field===t&&k.conversationId===S.conversationId,ie=t?_nullishCoalesce([...b.values()].find(me), () => ((J.current&&me(J.current)?J.current:void 0))):void 0,V=_nullishCoalesce(_optionalChain([S, 'access', _31 => _31.conversation, 'optionalAccess', _32 => _32.subject]), () => (_optionalChain([ie, 'optionalAccess', _33 => _33.subject])));if(S.protocol!=="1.1"||!S.capabilities.includes("form-fill")||(S.conversation?S.conversation.mode!=="form-fill":!ie)||!V)throw new Error("Form unavailable");if(I!==a.current)return;if(g&&(E=_optionalChain([y, 'access', _34 => _34.current, 'optionalAccess', _35 => _35.creationAttempt]),E&&(E.inFlight++,ce(b))),t&&!g){if(!c)throw new Error("Subthreads unavailable");let k=_nullishCoalesce(_nullishCoalesce(_optionalChain([S, 'access', _36 => _36.conversation, 'optionalAccess', _37 => _37.parentConversationId]), () => (_optionalChain([ie, 'optionalAccess', _38 => _38.parent]))), () => (S.conversationId)),W=JSON.stringify([k,t]);q=W,b.has(W)||b.set(W,{id:we(),parent:k,field:t,subject:V,inFlight:0});let f=b.get(W);if(E=f,f.inFlight++,ce(b),!f.conversationId){let Q=await c.create({protocol:S.protocol,title:t,mode:"form-fill",subject:V,parentConversationId:k,field:t,clientCreationId:f.id});if(Q.mode!=="form-fill"||Q.parentConversationId!==k||_optionalChain([Q, 'access', _39 => _39.subject, 'optionalAccess', _40 => _40.key])!==V.key)throw new Error("Invalid child");f.conversationId=Q.id}if(I!==a.current||r.getSnapshot().conversationId!==S.conversationId)return;J.current=f;let N=r.getSnapshot(),R=N.conversationId===f.conversationId&&_optionalChain([N, 'access', _41 => _41.conversation, 'optionalAccess', _42 => _42.id])===f.conversationId&&N.status==="open"&&!N.conversationUnavailable&&_optionalChain([N, 'access', _43 => _43.problem, 'optionalAccess', _44 => _44.id])!=="conversation-read"?{kind:"loaded",conversationId:f.conversationId,conversation:N.conversation}:await r.switchConversation(f.conversationId);if(I!==a.current||r.getSnapshot().conversationId!==f.conversationId)return;if(_optionalChain([R, 'optionalAccess', _45 => _45.kind])==="missing"&&R.conversationId===f.conversationId&&b.get(W)===f&&b.delete(W),_optionalChain([R, 'optionalAccess', _46 => _46.kind])!=="loaded"||R.conversationId!==f.conversationId||R.conversation.id!==f.conversationId||R.conversation.mode!=="form-fill"||_optionalChain([R, 'access', _47 => _47.conversation, 'access', _48 => _48.subject, 'optionalAccess', _49 => _49.key])!==f.subject.key)throw new Error("Child unavailable")}if(I!==a.current)return;let Me={text:A,field:_nullishCoalesce(t, () => (_optionalChain([r, 'access', _50 => _50.getSnapshot, 'call', _51 => _51(), 'access', _52 => _52.conversation, 'optionalAccess', _53 => _53.field]))),references:m.split(/\r?\n/).filter(Boolean),attachments:H.map(k=>k.reference)};g||(y.current={request:e.begin(Me),conversationId:r.getSnapshot().conversationId,creationKey:q,creationAttempt:E});let x=y.current,X=x.request;x.failed=!1,p(X.requestId);let Ee=await r.reply({kind:"form-fill",clientReplyId:X.requestId,request:X});if(I!==a.current)return;if(!Ee)throw x.failed=!0,new Error("Form send failed");M(X.requestId),x.creationKey&&b.get(x.creationKey)===x.creationAttempt&&b.delete(x.creationKey)}catch (e3){I===a.current&&z(!0)}finally{E&&(E.inFlight--,ce(b)),I===a.current&&($.current=!1,D(!1))}},F=Object.values(O.fields).some(g=>g.localInvalid)?s("form.fixFirst"):K?s("form.busy"):void 0,fe={session:e,t:s,primitives:C,attachments:l,files:H,setFiles:_,removalBlocked:()=>$.current||e.getSnapshot().pending,claim:()=>G.current?!1:(G.current=!0,T(!0),!0),release:()=>{G.current=!1,T(!1)},scope:()=>a.current,accepted:w?j:void 0,sent:o,generate:()=>{F||oe()},say:ne,status:te,unusable:Pe,blocked:F,messageField:d};return u.current=g=>{ke(fe,g)},_react.useEffect.call(void 0, ()=>()=>u.current=void 0,[u]),_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, je,{control:fe}),w&&_jsxruntime.jsx.call(void 0, "p",{children:s("form.closeHint")}),ee&&_jsxruntime.jsx.call(void 0, "p",{role:"alert",children:s("chat.failure")}),w&&_optionalChain([y, 'access', _54 => _54.current, 'optionalAccess', _55 => _55.failed])&&_jsxruntime.jsx.call(void 0, ue,{disabled:L||y.current.conversationId!==h.conversationId,"aria-disabled":F?!0:void 0,"aria-describedby":F?re:void 0,onPress:()=>{F||oe(!0)},children:s("chat.retry")}),_jsxruntime.jsx.call(void 0, ue,{disabled:L||w||!h.capabilities.includes("form-fill"),"aria-disabled":F?!0:void 0,"aria-describedby":F?re:void 0,onPress:()=>{F||oe()},children:s("form.generate")}),F?_jsxruntime.jsx.call(void 0, "span",{id:re,children:F}):null]})}exports.FieldsStatus = Ge; exports.PopupBody = _e; exports.Suggestion = $e; exports.Value = _chunkXWDB2LS3cjs.a; exports.attentionText = Ue;
@@ -0,0 +1 @@
1
+ import{a as ve}from"./chunk-MEKDQDSV.js";import{a as pe,b as ge}from"./chunk-PFR2J5BV.js";import{e as Y,q as ae,y as he}from"./chunk-IPI4O4LP.js";import"./chunk-FQSWQLRW.js";import"./chunk-OWT55N6J.js";import"./chunk-QFBAOEPD.js";import"./chunk-RZZDQWC2.js";import"./chunk-M63QOANE.js";import"./chunk-L4PFFRDE.js";import"./chunk-T5XF2R74.js";import"./chunk-K73VV7KA.js";import"./chunk-5TBO732O.js";import{useEffect as se,useId as U,useLayoutEffect as Ie,useRef as v,useState as B,useSyncExternalStore as de}from"react";var be={"form.generating":"Generating draft\u2026","form.ready":"Draft ready{choice, plural, =0 {} one {, # field needs your choice} other {, # fields need your choice}}{invalid, plural, =0 {} one {, # field needs attention} other {, # fields need attention}}","form.attention":"{count, plural, one {# field needs attention} other {# fields need attention}}","form.reverted":"Fill reverted.","form.revert":"Revert this fill ({fields})","form.revertWait":"Wait for the draft to finish.","form.suggested":"Suggested value for {field}","form.replaceIt":"Replace","form.keepMine":"Keep mine","form.attach":"Attach images","form.remove":"Remove {name}","form.uploading":"{count, plural, one {Uploading # image\u2026} other {Uploading # images\u2026}}","form.attached":"{count, plural, one {# image attached} other {# images attached}}","form.attachFailed":"{name} could not be attached.","form.removeFailed":"{name} could not be removed.","form.onlyImages":"Only images can be attached.","form.busy":"Wait for the current upload to finish.","form.unusable":"The draft could not be used."},ye={"form.generating":"\u6B63\u5728\u751F\u6210\u8349\u7A3F\u2026\u2026","form.ready":"\u8349\u7A3F\u5DF2\u5C31\u7EEA{choice, plural, =0 {} other {\uFF0C# \u4E2A\u5B57\u6BB5\u9700\u8981\u4F60\u9009\u62E9}}{invalid, plural, =0 {} other {\uFF0C# \u4E2A\u5B57\u6BB5\u9700\u8981\u5904\u7406}}","form.attention":"{count} \u4E2A\u5B57\u6BB5\u9700\u8981\u5904\u7406","form.reverted":"\u5DF2\u64A4\u9500\u672C\u6B21\u586B\u5145\u3002","form.revert":"\u64A4\u9500\u672C\u6B21\u586B\u5145\uFF08{fields}\uFF09","form.revertWait":"\u8BF7\u7B49\u5F85\u8349\u7A3F\u5B8C\u6210\u3002","form.suggested":"{field}\u7684\u5EFA\u8BAE\u503C","form.replaceIt":"\u66FF\u6362","form.keepMine":"\u4FDD\u7559\u6211\u7684","form.attach":"\u9644\u52A0\u56FE\u7247","form.remove":"\u79FB\u9664{name}","form.uploading":"\u6B63\u5728\u4E0A\u4F20 {count} \u5F20\u56FE\u7247\u2026\u2026","form.attached":"\u5DF2\u9644\u52A0 {count} \u5F20\u56FE\u7247","form.attachFailed":"\u65E0\u6CD5\u9644\u52A0{name}\u3002","form.removeFailed":"\u65E0\u6CD5\u79FB\u9664{name}\u3002","form.onlyImages":"\u53EA\u80FD\u9644\u52A0\u56FE\u7247\u3002","form.busy":"\u8BF7\u7B49\u5F85\u5F53\u524D\u4E0A\u4F20\u5B8C\u6210\u3002","form.unusable":"\u65E0\u6CD5\u4F7F\u7528\u6B64\u8349\u7A3F\u3002"};import{Fragment as Z,jsx as i,jsxs as P}from"react/jsx-runtime";ae(be,ye);ae(pe,ge);var xe=100,Se=new WeakMap;function Re(e){let n=Se.get(e);return n||(n=new Map,Se.set(e,n)),n}function ce(e){for(let[n,t]of e){if(e.size<=xe)break;t.inFlight===0&&e.delete(n)}}var Ce=e=>Object.values(e.fields).filter(n=>n.validation?.status==="invalid"||n.localInvalid).length;function $e({name:e,draft:n,session:t,t:c,primitives:l,onReplace:A}){let m=l.button,a=n.replacement,u=a.validation.status==="invalid",d=U();return P("div",{role:"group","aria-labelledby":d,"data-suggestion":"",children:[i("p",{id:d,children:c("form.suggested",{field:n.label})}),i("div",{children:i(ve,{value:a.value,t:c})}),a.validation.messages.length?P("div",{className:u?"wp-invalid":void 0,children:[u?i("strong",{children:c("form.invalid")}):null,a.validation.messages.map((r,s)=>i("p",{children:r},s))]}):null,P("div",{className:"wp-actions",children:[i(m,{onPress:()=>{t.replace(e,a.revision)&&A()},children:c("form.replaceIt")}),i(m,{onPress:()=>t.cancelReplacement(e),children:c("form.keepMine")})]})]})}function Ge({text:e}){return i("span",{role:"status",className:"wp-sr-only",children:e})}var Ue=(e,n)=>{let t=Ce(e);return t?n("form.attention",{count:t}):""};function Fe({B:e,reason:n,onPress:t,children:c}){let l=U();return P(Z,{children:[i(e,{"aria-disabled":n?!0:void 0,"aria-describedby":n?l:void 0,onPress:n?void 0:t,children:c}),n?i("span",{id:l,children:n}):null]})}var Te=(e,n)=>{let t=n;for(let c=2;e.some(l=>l.name===t);c++)t=`${n} (${c})`;return t};async function ke(e,n){let{t,attachments:c}=e;if(!n.length)return;let l=n.filter(r=>r.type.startsWith("image/")),A=l.length<n.length?t("form.onlyImages"):"",m=(...r)=>e.say([...r,A].filter(Boolean).join(" "));if(!l.length)return m();if(!c)return m(t("form.imagesHere"));if(!e.claim())return m(t("form.busy"));let a=e.scope();m(t("form.uploading",{count:l.length}));let u=[],d=[];for(let r of l)try{let s=await c.upload(r);u.push({reference:s,name:r.name||"image"})}catch{d.push(r.name||"image")}if(a!==e.scope()){await Promise.allSettled(u.map(r=>c.remove(r.reference)));return}e.setFiles(r=>{let s=[...r];for(let C of u)s.some(h=>h.reference===C.reference)||s.push({...C,name:Te(s,C.name)});return s}),e.release(),m(u.length?t("form.attached",{count:u.length}):"",...d.map(r=>t("form.attachFailed",{name:r})))}function je({control:e}){let{session:n,t,primitives:c,attachments:l,files:A,accepted:m,sent:a}=e,u=c.button,d=de(n.subscribe,n.getSnapshot,n.getSnapshot),r=U(),s=e.removalBlocked(),C=v(null),h=v(null),O=v(null),w=v(null),H=v(void 0);Ie(()=>{m&&m!==H.current&&e.say(t("form.generating")),H.current=m},[m,e,t]);let _=v(d.pending);Ie(()=>{let o=_.current&&!d.pending;if(_.current=d.pending,!o||!a)return;let p=d.fills?.some(M=>M.id===a),j=Object.values(d.fields).filter(M=>M.replacement?.fill===a).length;(p||j)&&e.say(t("form.ready",{choice:j,invalid:Ce(d)}))},[d,a,e,t]);let K=v(0),T=o=>{let p=o?.querySelectorAll("button")??[];return[p[K.current],p[K.current-1]]},L=o=>{K.current=[...o.currentTarget.querySelectorAll("button")].indexOf(o.target)},D=Y(()=>[...T(O.current),h.current?.querySelector("button")]),ee=Y(()=>[...T(w.current),e.messageField()]),z=Y(()=>[e.messageField()]),te=o=>o.map(p=>d.fields[p]?.label??p).join(", "),ne=o=>{if(!l)return;if(e.removalBlocked())return e.say(t("form.revertWait"));if(!e.claim())return e.say(t("form.busy"));let p=e.scope();l.remove(o.reference).then(()=>{p===e.scope()&&(e.setFiles(j=>j.filter(M=>M.reference!==o.reference)),e.release())},()=>{p===e.scope()&&(e.release(),e.say(t("form.removeFailed",{name:o.name})))})};return P(Z,{children:[i("p",{role:"status",className:"wp-form-status",children:e.status}),i("div",{onFocus:z,children:e.unusable&&e.unusable===a?P("p",{role:"alert",children:[t("form.unusable")," ",i(Fe,{B:u,reason:e.blocked,onPress:e.generate,children:t("chat.retry")})]}):null}),i("div",{ref:w,onFocus:o=>{L(o),ee(o)},children:(d.fills??[]).map(o=>i(Fe,{B:u,reason:d.pending?t("form.revertWait"):void 0,onPress:()=>{n.revert(o.id)&&e.say(t("form.reverted"))},children:t("form.revert",{fields:te(o.fields)})},o.id))}),l?P(Z,{children:[i("input",{ref:C,type:"file",accept:"image/*",multiple:!0,hidden:!0,onChange:o=>{let p=[...o.target.files??[]];o.target.value="",ke(e,p)}}),i("div",{ref:h,children:i(u,{onPress:()=>C.current?.click(),children:t("form.attach")})}),s&&A.length?i("span",{id:r,className:"wp-sr-only",children:t("form.revertWait")}):null,i("ul",{ref:O,onFocus:o=>{L(o),D(o)},className:"wp-attachments",children:A.map(o=>P("li",{children:[i("span",{children:o.name}),i(u,{"aria-disabled":s||void 0,"aria-describedby":s?r:void 0,onPress:()=>ne(o),children:t("form.remove",{name:o.name})})]},o.reference))})]}):null]})}function _e({session:e,open:n,field:t,source:c,attachments:l,text:A,references:m,scope:a,upload:u,messageField:d}){let{client:r,format:s,primitives:C}=he(),h=de(r.subscribe,r.getSnapshot,r.getSnapshot),O=de(e.subscribe,e.getSnapshot,e.getSnapshot),{pending:w}=O,[H,_]=B([]),[K,T]=B(!1),[L,D]=B(!1),[ee,z]=B(!1),[te,ne]=B(""),[o,p]=B(void 0),[j,M]=B(void 0),[Pe,le]=B(void 0),$=v(!1),G=v(!1),b=Re(r),J=v(void 0),y=v(void 0),Ae=v(0),Be=U(),re=U(),we=()=>`${h.conversationId}:${Be}:${++Ae.current}`,ue=C.button;se(()=>($.current=!1,G.current=!1,T(!1),D(!1),()=>{y.current=void 0}),[n,e,t]),se(()=>{if(h.conversation?.mode==="form-fill"){for(let g of h.conversation.messages)for(let I of g.blocks)if(I.type==="form.fill"){let q=I.body?.requestId;!e.receive(I.body)&&q===y.current?.request.requestId&&e.getSnapshot().pending&&(e.failRequest(q),y.current=void 0,le(q))}}},[h.conversation,e]);let oe=async(g=!1)=>{if($.current||G.current||!n||e.getSnapshot().pending&&!g||g&&(!y.current?.failed||y.current.conversationId!==r.getSnapshot().conversationId))return;$.current=!0,D(!0),z(!1),le(void 0);let I=a.current,q,E;try{await r.ready;let S=r.getSnapshot();if(g&&y.current?.conversationId!==S.conversationId)return;let me=k=>k.field===t&&k.conversationId===S.conversationId,ie=t?[...b.values()].find(me)??(J.current&&me(J.current)?J.current:void 0):void 0,V=S.conversation?.subject??ie?.subject;if(S.protocol!=="1.1"||!S.capabilities.includes("form-fill")||(S.conversation?S.conversation.mode!=="form-fill":!ie)||!V)throw new Error("Form unavailable");if(I!==a.current)return;if(g&&(E=y.current?.creationAttempt,E&&(E.inFlight++,ce(b))),t&&!g){if(!c)throw new Error("Subthreads unavailable");let k=S.conversation?.parentConversationId??ie?.parent??S.conversationId,W=JSON.stringify([k,t]);q=W,b.has(W)||b.set(W,{id:we(),parent:k,field:t,subject:V,inFlight:0});let f=b.get(W);if(E=f,f.inFlight++,ce(b),!f.conversationId){let Q=await c.create({protocol:S.protocol,title:t,mode:"form-fill",subject:V,parentConversationId:k,field:t,clientCreationId:f.id});if(Q.mode!=="form-fill"||Q.parentConversationId!==k||Q.subject?.key!==V.key)throw new Error("Invalid child");f.conversationId=Q.id}if(I!==a.current||r.getSnapshot().conversationId!==S.conversationId)return;J.current=f;let N=r.getSnapshot(),R=N.conversationId===f.conversationId&&N.conversation?.id===f.conversationId&&N.status==="open"&&!N.conversationUnavailable&&N.problem?.id!=="conversation-read"?{kind:"loaded",conversationId:f.conversationId,conversation:N.conversation}:await r.switchConversation(f.conversationId);if(I!==a.current||r.getSnapshot().conversationId!==f.conversationId)return;if(R?.kind==="missing"&&R.conversationId===f.conversationId&&b.get(W)===f&&b.delete(W),R?.kind!=="loaded"||R.conversationId!==f.conversationId||R.conversation.id!==f.conversationId||R.conversation.mode!=="form-fill"||R.conversation.subject?.key!==f.subject.key)throw new Error("Child unavailable")}if(I!==a.current)return;let Me={text:A,field:t??r.getSnapshot().conversation?.field,references:m.split(/\r?\n/).filter(Boolean),attachments:H.map(k=>k.reference)};g||(y.current={request:e.begin(Me),conversationId:r.getSnapshot().conversationId,creationKey:q,creationAttempt:E});let x=y.current,X=x.request;x.failed=!1,p(X.requestId);let Ee=await r.reply({kind:"form-fill",clientReplyId:X.requestId,request:X});if(I!==a.current)return;if(!Ee)throw x.failed=!0,new Error("Form send failed");M(X.requestId),x.creationKey&&b.get(x.creationKey)===x.creationAttempt&&b.delete(x.creationKey)}catch{I===a.current&&z(!0)}finally{E&&(E.inFlight--,ce(b)),I===a.current&&($.current=!1,D(!1))}},F=Object.values(O.fields).some(g=>g.localInvalid)?s("form.fixFirst"):K?s("form.busy"):void 0,fe={session:e,t:s,primitives:C,attachments:l,files:H,setFiles:_,removalBlocked:()=>$.current||e.getSnapshot().pending,claim:()=>G.current?!1:(G.current=!0,T(!0),!0),release:()=>{G.current=!1,T(!1)},scope:()=>a.current,accepted:w?j:void 0,sent:o,generate:()=>{F||oe()},say:ne,status:te,unusable:Pe,blocked:F,messageField:d};return u.current=g=>{ke(fe,g)},se(()=>()=>u.current=void 0,[u]),P(Z,{children:[i(je,{control:fe}),w&&i("p",{children:s("form.closeHint")}),ee&&i("p",{role:"alert",children:s("chat.failure")}),w&&y.current?.failed&&i(ue,{disabled:L||y.current.conversationId!==h.conversationId,"aria-disabled":F?!0:void 0,"aria-describedby":F?re:void 0,onPress:()=>{F||oe(!0)},children:s("chat.retry")}),i(ue,{disabled:L||w||!h.capabilities.includes("form-fill"),"aria-disabled":F?!0:void 0,"aria-describedby":F?re:void 0,onPress:()=>{F||oe()},children:s("form.generate")}),F?i("span",{id:re,children:F}):null]})}export{Ge as FieldsStatus,_e as PopupBody,$e as Suggestion,ve as Value,Ue as attentionText};