@kingsoftcloud/ksadk-web 0.3.2 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +77 -4
  3. package/RELEASE_PROVENANCE.json +2 -2
  4. package/dist-ksadk/assets/{ArtifactsPanel-DSU1sWD_.js → ArtifactsPanel-CytJCLMc.js} +1 -1
  5. package/dist-ksadk/assets/{CodeBlock-DOH6MVcn.js → CodeBlock-D6tEbvd9.js} +1 -1
  6. package/dist-ksadk/assets/{MathMessageMarkdown-BL8my1R2.js → MathMessageMarkdown-BBnihmbC.js} +1 -1
  7. package/dist-ksadk/assets/{MermaidBlock-Dz4IP-Tx.js → MermaidBlock-CI9NjqQx.js} +6 -6
  8. package/dist-ksadk/assets/{NativeTerminalPanel-DUrK0JpZ.js → NativeTerminalPanel-Czpx2MSS.js} +1 -1
  9. package/dist-ksadk/assets/{abnfDiagram-VCTEODGH-g20pFzNV.js → abnfDiagram-VCTEODGH-CNsXewmF.js} +1 -1
  10. package/dist-ksadk/assets/{arc-C4FzinUA.js → arc-x-74isv6.js} +1 -1
  11. package/dist-ksadk/assets/architecture-7GRP2DOG-C3S9W0aD.js +1 -0
  12. package/dist-ksadk/assets/{architectureDiagram-5GKGNRK7-DpIqL5h4.js → architectureDiagram-5GKGNRK7-tZ3w1B6m.js} +1 -1
  13. package/dist-ksadk/assets/{blockDiagram-NRAW4CY4-BjkljTNz.js → blockDiagram-NRAW4CY4-BEhGFh0b.js} +1 -1
  14. package/dist-ksadk/assets/{c4Diagram-UCG6FXSJ-Dk_ieq2X.js → c4Diagram-UCG6FXSJ-zrSgZM44.js} +1 -1
  15. package/dist-ksadk/assets/channel-CdffTTpb.js +1 -0
  16. package/dist-ksadk/assets/chunk-2Q5K7J3B-B6k89qGR.js +1 -0
  17. package/dist-ksadk/assets/{chunk-5VM5RSS4-BVHAchFb.js → chunk-5VM5RSS4-VZAcej21.js} +1 -1
  18. package/dist-ksadk/assets/{chunk-F27PBJKO-C-ipQzuS.js → chunk-F27PBJKO-DNUQP5bs.js} +1 -1
  19. package/dist-ksadk/assets/{chunk-G27WJ6UU-C2EyJbIK.js → chunk-G27WJ6UU-BVuLv5Os.js} +1 -1
  20. package/dist-ksadk/assets/{chunk-JWPE2WC7-vYvVJb_M.js → chunk-JWPE2WC7-CEttzwEN.js} +1 -1
  21. package/dist-ksadk/assets/{chunk-LCL6LL3I-BcI6ysPT.js → chunk-LCL6LL3I-BT3bzrVf.js} +1 -1
  22. package/dist-ksadk/assets/{chunk-POPQ4Y6H-C030x_Z1.js → chunk-POPQ4Y6H-BvutC1JH.js} +1 -1
  23. package/dist-ksadk/assets/{chunk-RHFEMEQ7-yyGpsz4n.js → chunk-RHFEMEQ7-BIXm03MG.js} +1 -1
  24. package/dist-ksadk/assets/{chunk-SVP7TREG-BLTlmMU7.js → chunk-SVP7TREG--LDO57tP.js} +1 -1
  25. package/dist-ksadk/assets/{chunk-XXDRQBXY-C_32ArgP.js → chunk-XXDRQBXY-WtVtVhpq.js} +1 -1
  26. package/dist-ksadk/assets/classDiagram-DTDB5LWJ-C0BU8Yr9.js +1 -0
  27. package/dist-ksadk/assets/classDiagram-v2-JRS7N3AN-C0BU8Yr9.js +1 -0
  28. package/dist-ksadk/assets/{cose-bilkent-JH36ORCC-9YQYwdl0.js → cose-bilkent-JH36ORCC-CnqJMsPI.js} +1 -1
  29. package/dist-ksadk/assets/cynefin-OW5HDTMX-BckONr__.js +1 -0
  30. package/dist-ksadk/assets/{cynefinDiagram-5FMLGOSQ-ErLF5N13.js → cynefinDiagram-5FMLGOSQ-Ci9qjtA_.js} +1 -1
  31. package/dist-ksadk/assets/{dagre-3AP2YEHR-DFiQF-6f.js → dagre-3AP2YEHR-Ll3LkcYP.js} +1 -1
  32. package/dist-ksadk/assets/{dagre-BuhGnRI1.js → dagre-CKrj2THw.js} +1 -1
  33. package/dist-ksadk/assets/{diagram-S7CK7UJ4-Bt1v8-GC.js → diagram-S7CK7UJ4-BQ1slPEx.js} +1 -1
  34. package/dist-ksadk/assets/{diagram-UQ7AKVKN-DSCxJdBK.js → diagram-UQ7AKVKN-BXz7DvIg.js} +1 -1
  35. package/dist-ksadk/assets/{diagram-VSXAHHWV-DHfYwp_9.js → diagram-VSXAHHWV-DOno97OL.js} +1 -1
  36. package/dist-ksadk/assets/{diagram-VX7I27RA-DdzD-4Le.js → diagram-VX7I27RA-CU2kHvv3.js} +1 -1
  37. package/dist-ksadk/assets/{diagram-Z3DM3KII-Du-nAJ9F.js → diagram-Z3DM3KII-mhpvOavV.js} +1 -1
  38. package/dist-ksadk/assets/{dist-dydu68Fl.js → dist-2cbEIexW.js} +1 -1
  39. package/dist-ksadk/assets/{dist-ClxGviKw.js → dist-4j-rswH6.js} +1 -1
  40. package/dist-ksadk/assets/{dist-B7seoj3d.js → dist-B-VEMnGR.js} +1 -1
  41. package/dist-ksadk/assets/{dist-BjU6y-A2.js → dist-B6XMlZpc.js} +1 -1
  42. package/dist-ksadk/assets/{dist-BytlxIDT.js → dist-BQCggVji.js} +1 -1
  43. package/dist-ksadk/assets/{dist-W-TIVntx.js → dist-BZiMQVbN.js} +1 -1
  44. package/dist-ksadk/assets/{dist-CXYYBw3_.js → dist-BvMDy0Xp.js} +1 -1
  45. package/dist-ksadk/assets/{dist-CSh_DE14.js → dist-BxjBfG2w.js} +1 -1
  46. package/dist-ksadk/assets/{dist-CttYUqzS.js → dist-Byl0QKIY.js} +1 -1
  47. package/dist-ksadk/assets/{dist-DnfXs8Vn.js → dist-C-Q0Ulfg.js} +1 -1
  48. package/dist-ksadk/assets/{dist-dDdADKFA.js → dist-C-V2Wj4x.js} +1 -1
  49. package/dist-ksadk/assets/{dist-DUX-id_F.js → dist-CPZHorum.js} +1 -1
  50. package/dist-ksadk/assets/{dist-BE7bu-DL.js → dist-CTeZLI0m.js} +1 -1
  51. package/dist-ksadk/assets/{dist-ngtN0DJB.js → dist-CUFAKgYs.js} +1 -1
  52. package/dist-ksadk/assets/{dist-BX8z72IC.js → dist-CaTDm1g0.js} +1 -1
  53. package/dist-ksadk/assets/{dist-DmldrHd_.js → dist-CoCI5ZIy.js} +1 -1
  54. package/dist-ksadk/assets/{dist-Dq9gLD7L.js → dist-DGFsOxe9.js} +1 -1
  55. package/dist-ksadk/assets/{dist-C_wsv-Qd.js → dist-DeO3Qj-D.js} +1 -1
  56. package/dist-ksadk/assets/{dist-DNp6rLRA.js → dist-DgSf2VGQ.js} +1 -1
  57. package/dist-ksadk/assets/{dist-Bf2M8m3N.js → dist-DwwtGqH9.js} +1 -1
  58. package/dist-ksadk/assets/{dist-BVDffZ0U.js → dist-hRISJdRx.js} +1 -1
  59. package/dist-ksadk/assets/{dist-8hqcx0sU.js → dist-oPMjOYRU.js} +1 -1
  60. package/dist-ksadk/assets/{ebnfDiagram-PWID7BFC-Da9C9NO1.js → ebnfDiagram-PWID7BFC-DAH8tjOy.js} +1 -1
  61. package/dist-ksadk/assets/{erDiagram-SSCWMZ5O-EAGqqR79.js → erDiagram-SSCWMZ5O-JvDkJGJ3.js} +1 -1
  62. package/dist-ksadk/assets/eventmodeling-NTZA5JFV-vjy4Z61x.js +1 -0
  63. package/dist-ksadk/assets/flowDiagram-A5DVABFB-CvJ64Qzs.js +1 -0
  64. package/dist-ksadk/assets/{ganttDiagram-EL5Y4UJY-DqJsKb59.js → ganttDiagram-EL5Y4UJY-B-SEC706.js} +1 -1
  65. package/dist-ksadk/assets/gitGraph-4MIJSDKK-CX3KwgqY.js +1 -0
  66. package/dist-ksadk/assets/{gitGraphDiagram-WWUBYQGX-B6g4dtDi.js → gitGraphDiagram-WWUBYQGX-D7OJf_No.js} +1 -1
  67. package/dist-ksadk/assets/{index-8ipRcQ-M.js → index-BkDx9KsG.js} +65 -64
  68. package/dist-ksadk/assets/{index-ByFCqjlh.css → index-DW7rZ4ml.css} +1 -1
  69. package/dist-ksadk/assets/info-A6RAGUB7-CYHIOuL5.js +1 -0
  70. package/dist-ksadk/assets/{infoDiagram-RXCK75RN-Djm_nbd5.js → infoDiagram-RXCK75RN-CTIHOSud.js} +1 -1
  71. package/dist-ksadk/assets/{ishikawaDiagram-5VMMS53U-DWya9SG2.js → ishikawaDiagram-5VMMS53U-HMO7FchJ.js} +1 -1
  72. package/dist-ksadk/assets/{journeyDiagram-EYS64GPL-DutxhSNI.js → journeyDiagram-EYS64GPL-DeFbDr5t.js} +1 -1
  73. package/dist-ksadk/assets/{kanban-definition-3QL26DDD-DJdOF8Fm.js → kanban-definition-3QL26DDD-D3OeNqXY.js} +1 -1
  74. package/dist-ksadk/assets/{katex-vFWytM5c.js → katex-DCJHF0vD.js} +1 -1
  75. package/dist-ksadk/assets/{linear-BHjG8b-J.js → linear-D3-vxS4W.js} +1 -1
  76. package/dist-ksadk/assets/{mermaid-parser.core-KGSy4jWT.js → mermaid-parser.core-C-Sc5_7E.js} +2 -2
  77. package/dist-ksadk/assets/{mindmap-definition-FBJOCRG2-9-HC88D4.js → mindmap-definition-FBJOCRG2-D-XtspHN.js} +1 -1
  78. package/dist-ksadk/assets/packet-AYTQ26CC-Ctg2wH4o.js +1 -0
  79. package/dist-ksadk/assets/{pegDiagram-XKGWAZYB-DrEZd4fD.js → pegDiagram-XKGWAZYB-BYbAq9Nb.js} +1 -1
  80. package/dist-ksadk/assets/pie-WAS4IAKB-CU6GnSzI.js +1 -0
  81. package/dist-ksadk/assets/{pieDiagram-E7YTZNPT-DpjqOFFp.js → pieDiagram-E7YTZNPT-DQ2yX4VQ.js} +1 -1
  82. package/dist-ksadk/assets/{quadrantDiagram-AXDQQJYC-BiNhgOXX.js → quadrantDiagram-AXDQQJYC-rvRPUN0j.js} +1 -1
  83. package/dist-ksadk/assets/radar-RG4KPBEZ-Bhe0us4A.js +1 -0
  84. package/dist-ksadk/assets/railroad-74A4TZTK-DEgiNGfx.js +1 -0
  85. package/dist-ksadk/assets/railroad-abnf-HS5TGJTU-GK7ct0QX.js +1 -0
  86. package/dist-ksadk/assets/railroad-ebnf-LZEXJU2U-BzlcTUmk.js +1 -0
  87. package/dist-ksadk/assets/railroad-peg-WCYAUIDC-7ESM96BW.js +1 -0
  88. package/dist-ksadk/assets/{railroadDiagram-O6MQD6OU-_Y3Ojg6G.js → railroadDiagram-O6MQD6OU-2OVn6qwA.js} +1 -1
  89. package/dist-ksadk/assets/{requirementDiagram-EFPCY7ZU-DeCFdg9K.js → requirementDiagram-EFPCY7ZU-ChWVLAKz.js} +1 -1
  90. package/dist-ksadk/assets/{sankeyDiagram-P5KCCOFB-CPH75rhw.js → sankeyDiagram-P5KCCOFB-Cb5gXi_j.js} +1 -1
  91. package/dist-ksadk/assets/{sequenceDiagram-WJ2MYXX4-OEpQQdr4.js → sequenceDiagram-WJ2MYXX4-D7g_-PUM.js} +1 -1
  92. package/dist-ksadk/assets/{sizeCapture-X5ZJPWSS-heUErzhI.js → sizeCapture-X5ZJPWSS-D__whCj3.js} +1 -1
  93. package/dist-ksadk/assets/{stateDiagram-HBIQ2CUA-DvA3jSMB.js → stateDiagram-HBIQ2CUA-CpKIc0dl.js} +1 -1
  94. package/dist-ksadk/assets/stateDiagram-v2-4QOOHH4V-D7ulg6TV.js +1 -0
  95. package/dist-ksadk/assets/{swimlanes-XN3QIQJK-CR-dfN_t.js → swimlanes-XN3QIQJK-CFJohC2b.js} +1 -1
  96. package/dist-ksadk/assets/swimlanesDiagram-VK2B7HYN-A-oZaquE.js +8 -0
  97. package/dist-ksadk/assets/{timeline-definition-24CTP7MA-DAVJf1TX.js → timeline-definition-24CTP7MA-Dg4AY0KC.js} +1 -1
  98. package/dist-ksadk/assets/treeView-Q6P3EWNA-D6u1mSx1.js +1 -0
  99. package/dist-ksadk/assets/treemap-WGGIJYW6-CM87Vav0.js +1 -0
  100. package/dist-ksadk/assets/{vennDiagram-4TSXK5OY-DwM8eDkh.js → vennDiagram-4TSXK5OY-A6cRoCBU.js} +1 -1
  101. package/dist-ksadk/assets/wardley-WFR3VGLG-BPoQUTzr.js +1 -0
  102. package/dist-ksadk/assets/{wardleyDiagram-VM6X3IG4-DZL-Zz2t.js → wardleyDiagram-VM6X3IG4-BVD1hMYl.js} +1 -1
  103. package/dist-ksadk/assets/{xychartDiagram-S5SC5T6Z-Dy6Yh_hu.js → xychartDiagram-S5SC5T6Z-BlBLXETg.js} +1 -1
  104. package/dist-ksadk/index.html +2 -2
  105. package/dist-lib/{ArtifactsPanel-DDCKcvaL.js → ArtifactsPanel-D2EtX4X_.js} +1 -1
  106. package/dist-lib/{CodeBlock-BS9DcS5a.js → CodeBlock-CPaeJbtf.js} +1 -1
  107. package/dist-lib/{MathMessageMarkdown-CpCcJFjZ.js → MathMessageMarkdown-Bpp4hI6Q.js} +2 -2
  108. package/dist-lib/{NativeTerminalPanel-CDqCdIly.js → NativeTerminalPanel-CJXzKV0z.js} +1 -1
  109. package/dist-lib/{WorkspacePanelContainer-DzbAkIfx.js → WorkspacePanelContainer-DbD-6xqx.js} +8 -7
  110. package/dist-lib/client-1WQCunUo.js +616 -0
  111. package/dist-lib/components/chat/A2UIActivityMessage.d.ts.map +1 -1
  112. package/dist-lib/components.js +2 -2
  113. package/dist-lib/conversation.js +28 -0
  114. package/dist-lib/core/conversation/client.d.ts +26 -0
  115. package/dist-lib/core/conversation/client.d.ts.map +1 -0
  116. package/dist-lib/core/conversation/contracts.d.ts +20 -0
  117. package/dist-lib/core/conversation/contracts.d.ts.map +1 -0
  118. package/dist-lib/core/conversation/errors.d.ts +12 -0
  119. package/dist-lib/core/conversation/errors.d.ts.map +1 -0
  120. package/dist-lib/core/conversation/hosted.d.ts +23 -0
  121. package/dist-lib/core/conversation/hosted.d.ts.map +1 -0
  122. package/dist-lib/core/conversation/index.d.ts +8 -0
  123. package/dist-lib/core/conversation/index.d.ts.map +1 -0
  124. package/dist-lib/core/conversation/presentation.d.ts +8 -0
  125. package/dist-lib/core/conversation/presentation.d.ts.map +1 -0
  126. package/dist-lib/core/conversation/reducer.d.ts +19 -0
  127. package/dist-lib/core/conversation/reducer.d.ts.map +1 -0
  128. package/dist-lib/core/conversation/renderer-registry.d.ts +20 -0
  129. package/dist-lib/core/conversation/renderer-registry.d.ts.map +1 -0
  130. package/dist-lib/core/conversation/types.d.ts +176 -0
  131. package/dist-lib/core/conversation/types.d.ts.map +1 -0
  132. package/dist-lib/core/run/dispatcher.d.ts.map +1 -1
  133. package/dist-lib/core/run/engine.d.ts +3 -0
  134. package/dist-lib/core/run/engine.d.ts.map +1 -1
  135. package/dist-lib/core/run/types.d.ts +7 -0
  136. package/dist-lib/core/run/types.d.ts.map +1 -1
  137. package/dist-lib/hooks/useRunAgent.d.ts.map +1 -1
  138. package/dist-lib/public/conversation.d.ts +10 -0
  139. package/dist-lib/public/conversation.d.ts.map +1 -0
  140. package/dist-lib/public/runtime.d.ts +2 -0
  141. package/dist-lib/public/runtime.d.ts.map +1 -1
  142. package/dist-lib/public/types.d.ts +1 -0
  143. package/dist-lib/public/types.d.ts.map +1 -1
  144. package/dist-lib/runtime.js +1467 -1128
  145. package/dist-lib/styles.css +1 -1
  146. package/package.json +11 -2
  147. package/schemas/release-provenance.schema.json +34 -0
  148. package/dist-ksadk/assets/architecture-7GRP2DOG-DjKratdf.js +0 -1
  149. package/dist-ksadk/assets/channel-4cQHKtx1.js +0 -1
  150. package/dist-ksadk/assets/chunk-2Q5K7J3B-DmgWkESh.js +0 -1
  151. package/dist-ksadk/assets/classDiagram-DTDB5LWJ-DLFd9Xi0.js +0 -1
  152. package/dist-ksadk/assets/classDiagram-v2-JRS7N3AN-DLFd9Xi0.js +0 -1
  153. package/dist-ksadk/assets/cynefin-OW5HDTMX-DjEM48Qp.js +0 -1
  154. package/dist-ksadk/assets/eventmodeling-NTZA5JFV-CMgMaJrC.js +0 -1
  155. package/dist-ksadk/assets/flowDiagram-A5DVABFB-BBKL0x3P.js +0 -1
  156. package/dist-ksadk/assets/gitGraph-4MIJSDKK-Dw63mrhw.js +0 -1
  157. package/dist-ksadk/assets/info-A6RAGUB7-B6iAblII.js +0 -1
  158. package/dist-ksadk/assets/packet-AYTQ26CC-BOYAipuq.js +0 -1
  159. package/dist-ksadk/assets/pie-WAS4IAKB-Ctq0Kbku.js +0 -1
  160. package/dist-ksadk/assets/radar-RG4KPBEZ-DN0-ul_0.js +0 -1
  161. package/dist-ksadk/assets/railroad-74A4TZTK-C6cC_to0.js +0 -1
  162. package/dist-ksadk/assets/railroad-abnf-HS5TGJTU-BimjIuRc.js +0 -1
  163. package/dist-ksadk/assets/railroad-ebnf-LZEXJU2U-CvY65ABq.js +0 -1
  164. package/dist-ksadk/assets/railroad-peg-WCYAUIDC-D72Iq_Tv.js +0 -1
  165. package/dist-ksadk/assets/stateDiagram-v2-4QOOHH4V-BgQY03nz.js +0 -1
  166. package/dist-ksadk/assets/swimlanesDiagram-VK2B7HYN-DLVw3q5Q.js +0 -8
  167. package/dist-ksadk/assets/treeView-Q6P3EWNA-BMpO0wsB.js +0 -1
  168. package/dist-ksadk/assets/treemap-WGGIJYW6-Et0aqzU3.js +0 -1
  169. package/dist-ksadk/assets/wardley-WFR3VGLG-CbY0mhpl.js +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,43 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.3 - 2026-08-28
4
+
5
+ ### Headless conversation surface
6
+
7
+ - Add the Node/SSR-safe `@kingsoftcloud/ksadk-web/conversation` entrypoint with
8
+ strict ConversationSurface/Input/Item v1 decoders, input preflight, bounded
9
+ HTTP/SSE reconnect, passive renderer data, and the shared identity reducer.
10
+ - Route the bundled Hosted UI through the same conversation client and reducer
11
+ when a valid Surface is advertised. A Surface HTTP 404 keeps the existing
12
+ Responses / AG-UI / legacy path; malformed surfaces and server failures do
13
+ not silently bypass the declared contract.
14
+ - Preserve different item identities even when their text is equal, ignore
15
+ replayed `(itemId, sourceEventId)` pairs, keep terminal items monotonic, and
16
+ retain additive unknown item kinds for replay/audit without rendering a
17
+ repeated transcript card; newer schemas on known kinds safely downgrade to
18
+ one passive fallback card.
19
+ - Preserve the canonical item timeline for renderers: a separate native tool
20
+ result enriches its original `callId` tool card rather than rendering a
21
+ duplicate card, while reasoning, tools and answers keep their original
22
+ interleaving. Add an immutable exact `kind + payloadSchemaRef` trusted
23
+ renderer catalog; providers cannot supply executable UI code in event
24
+ payloads or claim a future schema version.
25
+ - Keep `output` and `reasoning` summaries as a compatibility view beside the
26
+ canonical timeline, so Studio can adopt the shared reducer without a second
27
+ text aggregation implementation during the 0.8.3 transition.
28
+ - Keep canonical approvals without a durable `revision` read-only. Consumers
29
+ must not guess a revision or submit them through the revision-CAS Interaction
30
+ API until the server supplies an authoritative value.
31
+ - Make attachment upload and model selection first-class canonical inputs in
32
+ Hosted UI. Unsupported inputs and oversized files fail before upload or turn
33
+ submission instead of silently degrading to legacy `RunAgent` behavior.
34
+ - Prove the headless entrypoint from a minimal independent consumer across two
35
+ turns, cursor reconnect, text/tool/approval/unknown-item rendering, and
36
+ revision-CAS approval submission.
37
+ - Add a repeatable release preflight that runs unit, Node contract, lint, all
38
+ production builds, canonical Conversation browser E2E, provenance checks,
39
+ npm packing, and a clean tarball-install public API smoke test.
40
+
3
41
  ## 0.3.2 - 2026-08-21
4
42
 
5
43
  Release candidate for the durable Interaction/v1 web experience. This is the
package/README.md CHANGED
@@ -43,6 +43,7 @@ package entrypoints under `dist-lib`.
43
43
  The npm package exposes these stable entrypoints:
44
44
 
45
45
  - `@kingsoftcloud/ksadk-web/components`
46
+ - `@kingsoftcloud/ksadk-web/conversation` (headless, Node/SSR-safe)
46
47
  - `@kingsoftcloud/ksadk-web/runtime`
47
48
  - `@kingsoftcloud/ksadk-web/capabilities`
48
49
  - `@kingsoftcloud/ksadk-web/styles`
@@ -51,6 +52,57 @@ The npm package exposes these stable entrypoints:
51
52
  Hosted UI should import the shared shell from the package and keep private
52
53
  auth, routing, feature flags, Docker, nginx, and Helm logic in its own repo.
53
54
 
55
+ ### Headless conversation client
56
+
57
+ `@kingsoftcloud/ksadk-web/conversation` provides strict
58
+ `ConversationSurface/Input/Item` decoders, the identity reducer, passive
59
+ renderer data, and a small HTTP/SSE reference client. It has no React or DOM
60
+ runtime dependency and can be imported by Node/SSR applications.
61
+
62
+ ```ts
63
+ import {
64
+ HttpConversationClient,
65
+ buildConversationInput,
66
+ } from '@kingsoftcloud/ksadk-web/conversation'
67
+
68
+ const client = new HttpConversationClient()
69
+ const bootstrap = await client.getSurface('agent-id', 'session-id')
70
+ const result = await client.streamTurn({
71
+ bootstrap,
72
+ input: buildConversationInput({
73
+ inputId: 'input-id',
74
+ sessionId: 'session-id',
75
+ idempotencyKey: 'turn-id',
76
+ parts: [{ kind: 'text', text: 'Hello' }],
77
+ }),
78
+ onUpdate(snapshot) {
79
+ // Render snapshot.presentation. It is already reduced by canonical item
80
+ // identity and is safe to replace after a reconnect or replay.
81
+ renderConversation(snapshot.presentation)
82
+ },
83
+ })
84
+ ```
85
+
86
+ The client submits a turn once and only reconnects through the canonical Run
87
+ event endpoint. `onUpdate` and the final result use the same reducer: equal text
88
+ from different item identities is retained, replayed `(itemId, sourceEventId)`
89
+ pairs are idempotent, and a terminal item never regresses. It does not accept
90
+ tokens, cookies, credential modes, or provider-specific request fields;
91
+ applications keep authentication at their same-origin server boundary or in
92
+ an injected transport.
93
+
94
+ The bundled Hosted UI uses this same client and reducer when the server returns
95
+ a valid `ConversationSurface`. HTTP 404 is the compatibility signal for the
96
+ existing Responses / AG-UI / legacy path. A declared but invalid or unavailable
97
+ surface fails closed, and unknown item kinds or schema versions render as
98
+ passive fallback cards rather than provider-specific UI.
99
+
100
+ Approval and structured-input items are actionable only when their canonical
101
+ payload carries the server's durable, non-negative `revision`. Without that
102
+ value the shared Hosted UI intentionally renders the item read-only: it never
103
+ guesses revision `0` or bypasses the Interaction API's revision-CAS contract.
104
+ Likewise, unknown payloads and unsafe artifact URIs remain passive content.
105
+
54
106
  ## Release Contract
55
107
 
56
108
  Consumers should record the resolved KSADK Web package version and lockfile
@@ -89,12 +141,33 @@ Before creating a release or dispatching the workflow, verify the payload:
89
141
 
90
142
  ```bash
91
143
  npm ci
92
- npm test
93
- node --test tests/*.test.mjs
94
- npm run build:all
95
- npm pack --dry-run --access public
144
+ npx playwright install chromium
145
+ npm run release:preflight
96
146
  ```
97
147
 
148
+ The preflight is intentionally stricter than a development build: it requires
149
+ a clean worktree, checks the frozen Git source recorded in
150
+ `RELEASE_PROVENANCE.json`, rejects content changes under an already tagged
151
+ version, runs the canonical Conversation browser flow, creates the real npm
152
+ tarball, installs it into a disposable consumer, and imports the public
153
+ `@kingsoftcloud/ksadk-web/conversation` API. During development only, use
154
+ `npm run release:preflight -- --allow-unreleased --allow-dirty` to rehearse the
155
+ same tests without claiming the current commit is a releasable source.
156
+
157
+ After the next version is set and all code is committed, freeze its provenance
158
+ from that clean commit before the final attestation commit:
159
+
160
+ ```bash
161
+ npm run release:provenance -- generate
162
+ git add RELEASE_PROVENANCE.json
163
+ git commit -m "chore(release): attest ksadk-web source"
164
+ npm run release:preflight
165
+ ```
166
+
167
+ The generator refuses dirty worktrees and versions whose `vX.Y.Z` tag already
168
+ exists. Never edit `source_commit` by hand or regenerate provenance for an
169
+ already published version.
170
+
98
171
  The publish workflow checks whether `package.json`'s exact version is already
99
172
  present on npm. Existing versions are skipped because npm packages are
100
173
  immutable; publish a new patch version for any package-content change.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schema_version": 1,
3
3
  "package": "@kingsoftcloud/ksadk-web",
4
- "version": "0.3.2",
5
- "source_commit": "2136448e038b4d8c475fa20e4722252b1ddb2ebc",
4
+ "version": "0.3.3",
5
+ "source_commit": "37eb8dd6ae8c44ea4622d39f8c7ae9b13916a793",
6
6
  "interaction_contract_digest": "47e1003e03d97abeba232cc3e03a14b9cbcf78b1109870ccd2ce371f073b6211"
7
7
  }
@@ -1 +1 @@
1
- import{St as e,Tt as t,bt as n,gt as r,lt as i,n as a,t as o,ut as s,xt as c}from"./index-8ipRcQ-M.js";var l=t(e(),1),u=n();function d(){let e=c(e=>e.visible),t=c(e=>e.content),n=c(e=>e.type),d=c(e=>e.hide),f=(0,l.useRef)(null);if(a(f),!e||!t)return null;let p=o(t);return(0,u.jsxs)(`aside`,{className:i(`flex h-full flex-shrink-0 flex-col border-l border-slate-200/30 bg-white dark:border-slate-800/40 dark:bg-slate-950`,`w-[min(42rem,50vw)]`),children:[(0,u.jsxs)(`div`,{className:`flex h-14 flex-shrink-0 items-center justify-between border-b border-slate-200/30 px-4 dark:border-slate-800/40`,children:[(0,u.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,u.jsx)(`span`,{className:`text-sm font-semibold text-slate-900 dark:text-slate-100`,children:`Artifact`}),(0,u.jsx)(`span`,{className:`rounded-md bg-slate-100 px-1.5 py-0.5 font-mono text-[11px] text-slate-500 dark:bg-slate-900 dark:text-slate-400`,children:n})]}),(0,u.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,u.jsxs)(`button`,{type:`button`,onClick:()=>{let e=new Blob([t],{type:`text/html;charset=utf-8`}),r=URL.createObjectURL(e),i=document.createElement(`a`);i.href=r,i.download=`artifact.${n===`svg`?`svg`:`html`}`,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r)},className:`inline-flex items-center gap-1.5 rounded-lg px-2.5 py-1.5 text-xs font-medium text-slate-600 transition hover:bg-slate-100 dark:text-slate-300 dark:hover:bg-slate-900`,title:`Download`,children:[(0,u.jsx)(r,{className:`h-3.5 w-3.5`}),`Download`]}),(0,u.jsx)(`button`,{type:`button`,onClick:d,className:`rounded-lg p-1.5 text-slate-500 transition hover:bg-slate-100 hover:text-slate-900 dark:text-slate-400 dark:hover:bg-slate-900 dark:hover:text-slate-100`,"aria-label":`Close Artifact`,title:`Close`,children:(0,u.jsx)(s,{className:`h-4 w-4`})})]})]}),(0,u.jsx)(`div`,{className:`min-h-0 flex-1`,children:(0,u.jsx)(`iframe`,{ref:f,srcDoc:p,sandbox:`allow-scripts allow-downloads`,title:`Artifact Preview`,className:`h-full w-full border-0 bg-white`})})]})}export{d as ArtifactsPanel};
1
+ import{St as e,Tt as t,bt as n,gt as r,lt as i,n as a,t as o,ut as s,xt as c}from"./index-BkDx9KsG.js";var l=t(e(),1),u=n();function d(){let e=c(e=>e.visible),t=c(e=>e.content),n=c(e=>e.type),d=c(e=>e.hide),f=(0,l.useRef)(null);if(a(f),!e||!t)return null;let p=o(t);return(0,u.jsxs)(`aside`,{className:i(`flex h-full flex-shrink-0 flex-col border-l border-slate-200/30 bg-white dark:border-slate-800/40 dark:bg-slate-950`,`w-[min(42rem,50vw)]`),children:[(0,u.jsxs)(`div`,{className:`flex h-14 flex-shrink-0 items-center justify-between border-b border-slate-200/30 px-4 dark:border-slate-800/40`,children:[(0,u.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,u.jsx)(`span`,{className:`text-sm font-semibold text-slate-900 dark:text-slate-100`,children:`Artifact`}),(0,u.jsx)(`span`,{className:`rounded-md bg-slate-100 px-1.5 py-0.5 font-mono text-[11px] text-slate-500 dark:bg-slate-900 dark:text-slate-400`,children:n})]}),(0,u.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,u.jsxs)(`button`,{type:`button`,onClick:()=>{let e=new Blob([t],{type:`text/html;charset=utf-8`}),r=URL.createObjectURL(e),i=document.createElement(`a`);i.href=r,i.download=`artifact.${n===`svg`?`svg`:`html`}`,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r)},className:`inline-flex items-center gap-1.5 rounded-lg px-2.5 py-1.5 text-xs font-medium text-slate-600 transition hover:bg-slate-100 dark:text-slate-300 dark:hover:bg-slate-900`,title:`Download`,children:[(0,u.jsx)(r,{className:`h-3.5 w-3.5`}),`Download`]}),(0,u.jsx)(`button`,{type:`button`,onClick:d,className:`rounded-lg p-1.5 text-slate-500 transition hover:bg-slate-100 hover:text-slate-900 dark:text-slate-400 dark:hover:bg-slate-900 dark:hover:text-slate-100`,"aria-label":`Close Artifact`,title:`Close`,children:(0,u.jsx)(s,{className:`h-4 w-4`})})]})]}),(0,u.jsx)(`div`,{className:`min-h-0 flex-1`,children:(0,u.jsx)(`iframe`,{ref:f,srcDoc:p,sandbox:`allow-scripts allow-downloads`,title:`Artifact Preview`,className:`h-full w-full border-0 bg-white`})})]})}export{d as ArtifactsPanel};