@kingsoftcloud/ksadk-web 0.3.2 → 0.3.4

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 (185) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/README.md +77 -4
  3. package/RELEASE_PROVENANCE.json +2 -2
  4. package/dist-ksadk/assets/{ArtifactsPanel-DSU1sWD_.js → ArtifactsPanel-10GPXIJ6.js} +1 -1
  5. package/dist-ksadk/assets/{CodeBlock-DOH6MVcn.js → CodeBlock-BXk1l-G1.js} +1 -1
  6. package/dist-ksadk/assets/{MathMessageMarkdown-BL8my1R2.js → MathMessageMarkdown-D9uB55Oh.js} +1 -1
  7. package/dist-ksadk/assets/{MermaidBlock-Dz4IP-Tx.js → MermaidBlock--OEYoXIJ.js} +6 -6
  8. package/dist-ksadk/assets/{NativeTerminalPanel-DUrK0JpZ.js → NativeTerminalPanel-DrEe1syq.js} +1 -1
  9. package/dist-ksadk/assets/{abnfDiagram-VCTEODGH-g20pFzNV.js → abnfDiagram-VCTEODGH-eeTFJLvo.js} +1 -1
  10. package/dist-ksadk/assets/{arc-C4FzinUA.js → arc-S3ZNbIAd.js} +1 -1
  11. package/dist-ksadk/assets/architecture-7GRP2DOG-Dk9nRQ6-.js +1 -0
  12. package/dist-ksadk/assets/{architectureDiagram-5GKGNRK7-DpIqL5h4.js → architectureDiagram-5GKGNRK7-CRjgEJDX.js} +1 -1
  13. package/dist-ksadk/assets/{blockDiagram-NRAW4CY4-BjkljTNz.js → blockDiagram-NRAW4CY4-C7bsBoNH.js} +1 -1
  14. package/dist-ksadk/assets/{c4Diagram-UCG6FXSJ-Dk_ieq2X.js → c4Diagram-UCG6FXSJ-BX3c33Ob.js} +1 -1
  15. package/dist-ksadk/assets/channel-s354Yo6o.js +1 -0
  16. package/dist-ksadk/assets/chunk-2Q5K7J3B-CDpPpKR5.js +1 -0
  17. package/dist-ksadk/assets/{chunk-5VM5RSS4-BVHAchFb.js → chunk-5VM5RSS4-bZ7ws-8m.js} +1 -1
  18. package/dist-ksadk/assets/{chunk-F27PBJKO-C-ipQzuS.js → chunk-F27PBJKO-D2r0pvhY.js} +1 -1
  19. package/dist-ksadk/assets/{chunk-G27WJ6UU-C2EyJbIK.js → chunk-G27WJ6UU-CZwF3oUP.js} +1 -1
  20. package/dist-ksadk/assets/{chunk-JWPE2WC7-vYvVJb_M.js → chunk-JWPE2WC7-DigFYCML.js} +1 -1
  21. package/dist-ksadk/assets/{chunk-LCL6LL3I-BcI6ysPT.js → chunk-LCL6LL3I-CnorGV5q.js} +1 -1
  22. package/dist-ksadk/assets/{chunk-POPQ4Y6H-C030x_Z1.js → chunk-POPQ4Y6H-CexntQA-.js} +1 -1
  23. package/dist-ksadk/assets/{chunk-RHFEMEQ7-yyGpsz4n.js → chunk-RHFEMEQ7-CHTC7UxA.js} +1 -1
  24. package/dist-ksadk/assets/{chunk-SVP7TREG-BLTlmMU7.js → chunk-SVP7TREG-BC1EWt_-.js} +1 -1
  25. package/dist-ksadk/assets/{chunk-XXDRQBXY-C_32ArgP.js → chunk-XXDRQBXY-BTG24xN0.js} +1 -1
  26. package/dist-ksadk/assets/classDiagram-DTDB5LWJ-Dd0nucl9.js +1 -0
  27. package/dist-ksadk/assets/classDiagram-v2-JRS7N3AN-Dd0nucl9.js +1 -0
  28. package/dist-ksadk/assets/{cose-bilkent-JH36ORCC-9YQYwdl0.js → cose-bilkent-JH36ORCC-CkonRdAS.js} +1 -1
  29. package/dist-ksadk/assets/cynefin-OW5HDTMX-BBlT4uMf.js +1 -0
  30. package/dist-ksadk/assets/{cynefinDiagram-5FMLGOSQ-ErLF5N13.js → cynefinDiagram-5FMLGOSQ-DEOCBe15.js} +1 -1
  31. package/dist-ksadk/assets/{dagre-3AP2YEHR-DFiQF-6f.js → dagre-3AP2YEHR-DBThPuLa.js} +1 -1
  32. package/dist-ksadk/assets/{dagre-BuhGnRI1.js → dagre-ClTPrTht.js} +1 -1
  33. package/dist-ksadk/assets/{diagram-S7CK7UJ4-Bt1v8-GC.js → diagram-S7CK7UJ4-DsZHrnpJ.js} +1 -1
  34. package/dist-ksadk/assets/{diagram-UQ7AKVKN-DSCxJdBK.js → diagram-UQ7AKVKN-BJR4nhVr.js} +1 -1
  35. package/dist-ksadk/assets/{diagram-VSXAHHWV-DHfYwp_9.js → diagram-VSXAHHWV-xzcERX0a.js} +1 -1
  36. package/dist-ksadk/assets/{diagram-VX7I27RA-DdzD-4Le.js → diagram-VX7I27RA-tn2xM1xu.js} +1 -1
  37. package/dist-ksadk/assets/{diagram-Z3DM3KII-Du-nAJ9F.js → diagram-Z3DM3KII-BZPGBkw5.js} +1 -1
  38. package/dist-ksadk/assets/{dist-ClxGviKw.js → dist-4zN1_tq5.js} +1 -1
  39. package/dist-ksadk/assets/{dist-BE7bu-DL.js → dist-8VWI-2bZ.js} +1 -1
  40. package/dist-ksadk/assets/{dist-BX8z72IC.js → dist-B-46q3Hk.js} +1 -1
  41. package/dist-ksadk/assets/{dist-BjU6y-A2.js → dist-B0gdk4rl.js} +1 -1
  42. package/dist-ksadk/assets/{dist-C_wsv-Qd.js → dist-B1oWRmrH.js} +1 -1
  43. package/dist-ksadk/assets/{dist-ngtN0DJB.js → dist-BI1qQH4n.js} +1 -1
  44. package/dist-ksadk/assets/{dist-dydu68Fl.js → dist-BJLUwH6W.js} +1 -1
  45. package/dist-ksadk/assets/{dist-Dq9gLD7L.js → dist-Bbwqa8TG.js} +1 -1
  46. package/dist-ksadk/assets/{dist-CttYUqzS.js → dist-Btyo4vX4.js} +1 -1
  47. package/dist-ksadk/assets/{dist-CXYYBw3_.js → dist-C71CsujO.js} +1 -1
  48. package/dist-ksadk/assets/{dist-dDdADKFA.js → dist-CXpH_Rdd.js} +1 -1
  49. package/dist-ksadk/assets/{dist-CSh_DE14.js → dist-Cq4OL6nO.js} +1 -1
  50. package/dist-ksadk/assets/{dist-8hqcx0sU.js → dist-D1V3f1B4.js} +1 -1
  51. package/dist-ksadk/assets/{dist-BVDffZ0U.js → dist-DJmCPRVB.js} +1 -1
  52. package/dist-ksadk/assets/{dist-DnfXs8Vn.js → dist-DQAB0qn_.js} +1 -1
  53. package/dist-ksadk/assets/{dist-DNp6rLRA.js → dist-DUwKa_l6.js} +1 -1
  54. package/dist-ksadk/assets/{dist-B7seoj3d.js → dist-DdRBIceA.js} +1 -1
  55. package/dist-ksadk/assets/{dist-BytlxIDT.js → dist-DfGFrb0v.js} +1 -1
  56. package/dist-ksadk/assets/{dist-Bf2M8m3N.js → dist-DjhwGUgZ.js} +1 -1
  57. package/dist-ksadk/assets/{dist-W-TIVntx.js → dist-DyqV4fL4.js} +1 -1
  58. package/dist-ksadk/assets/{dist-DUX-id_F.js → dist-M67Hwu0n.js} +1 -1
  59. package/dist-ksadk/assets/{dist-DmldrHd_.js → dist-u8tVH5Ak.js} +1 -1
  60. package/dist-ksadk/assets/{ebnfDiagram-PWID7BFC-Da9C9NO1.js → ebnfDiagram-PWID7BFC-DVfMsLge.js} +1 -1
  61. package/dist-ksadk/assets/{erDiagram-SSCWMZ5O-EAGqqR79.js → erDiagram-SSCWMZ5O-CWEZSYaw.js} +1 -1
  62. package/dist-ksadk/assets/eventmodeling-NTZA5JFV-Dr5okd8V.js +1 -0
  63. package/dist-ksadk/assets/flowDiagram-A5DVABFB-VEO-cVcO.js +1 -0
  64. package/dist-ksadk/assets/{ganttDiagram-EL5Y4UJY-DqJsKb59.js → ganttDiagram-EL5Y4UJY-TWIxoyYL.js} +1 -1
  65. package/dist-ksadk/assets/gitGraph-4MIJSDKK-CKiKY9Cf.js +1 -0
  66. package/dist-ksadk/assets/{gitGraphDiagram-WWUBYQGX-B6g4dtDi.js → gitGraphDiagram-WWUBYQGX-DDh2hd2S.js} +1 -1
  67. package/dist-ksadk/assets/index-B2k_urY8.js +241 -0
  68. package/dist-ksadk/assets/index-ILPt6IWF.css +2 -0
  69. package/dist-ksadk/assets/info-A6RAGUB7-ubA4Nm_p.js +1 -0
  70. package/dist-ksadk/assets/{infoDiagram-RXCK75RN-Djm_nbd5.js → infoDiagram-RXCK75RN-CgoyWiDR.js} +1 -1
  71. package/dist-ksadk/assets/{ishikawaDiagram-5VMMS53U-DWya9SG2.js → ishikawaDiagram-5VMMS53U-CyRIu_om.js} +1 -1
  72. package/dist-ksadk/assets/{journeyDiagram-EYS64GPL-DutxhSNI.js → journeyDiagram-EYS64GPL-DN5JXHzN.js} +1 -1
  73. package/dist-ksadk/assets/{kanban-definition-3QL26DDD-DJdOF8Fm.js → kanban-definition-3QL26DDD-CNP3ui66.js} +1 -1
  74. package/dist-ksadk/assets/{katex-vFWytM5c.js → katex-DWEzQy1d.js} +1 -1
  75. package/dist-ksadk/assets/{linear-BHjG8b-J.js → linear-C-qHp7d2.js} +1 -1
  76. package/dist-ksadk/assets/{mermaid-parser.core-KGSy4jWT.js → mermaid-parser.core-Cl-K943T.js} +2 -2
  77. package/dist-ksadk/assets/{mindmap-definition-FBJOCRG2-9-HC88D4.js → mindmap-definition-FBJOCRG2-D5DB5mYm.js} +1 -1
  78. package/dist-ksadk/assets/packet-AYTQ26CC-C7R3NUlK.js +1 -0
  79. package/dist-ksadk/assets/{pegDiagram-XKGWAZYB-DrEZd4fD.js → pegDiagram-XKGWAZYB-BQVc9ia_.js} +1 -1
  80. package/dist-ksadk/assets/pie-WAS4IAKB-BIT6qjr3.js +1 -0
  81. package/dist-ksadk/assets/{pieDiagram-E7YTZNPT-DpjqOFFp.js → pieDiagram-E7YTZNPT-B6UCAvtY.js} +1 -1
  82. package/dist-ksadk/assets/{quadrantDiagram-AXDQQJYC-BiNhgOXX.js → quadrantDiagram-AXDQQJYC-mIr2d3eb.js} +1 -1
  83. package/dist-ksadk/assets/radar-RG4KPBEZ-l5noef9X.js +1 -0
  84. package/dist-ksadk/assets/railroad-74A4TZTK-Baea6ZvM.js +1 -0
  85. package/dist-ksadk/assets/railroad-abnf-HS5TGJTU-OKn8zZnU.js +1 -0
  86. package/dist-ksadk/assets/railroad-ebnf-LZEXJU2U-DdKAKC4l.js +1 -0
  87. package/dist-ksadk/assets/railroad-peg-WCYAUIDC-Bds8udlG.js +1 -0
  88. package/dist-ksadk/assets/{railroadDiagram-O6MQD6OU-_Y3Ojg6G.js → railroadDiagram-O6MQD6OU-Dt3FFDmK.js} +1 -1
  89. package/dist-ksadk/assets/{requirementDiagram-EFPCY7ZU-DeCFdg9K.js → requirementDiagram-EFPCY7ZU-Cz_vQtgF.js} +1 -1
  90. package/dist-ksadk/assets/{sankeyDiagram-P5KCCOFB-CPH75rhw.js → sankeyDiagram-P5KCCOFB-wlO1TsH5.js} +1 -1
  91. package/dist-ksadk/assets/{sequenceDiagram-WJ2MYXX4-OEpQQdr4.js → sequenceDiagram-WJ2MYXX4-CHRbElYq.js} +1 -1
  92. package/dist-ksadk/assets/{sizeCapture-X5ZJPWSS-heUErzhI.js → sizeCapture-X5ZJPWSS-DXX54iyO.js} +1 -1
  93. package/dist-ksadk/assets/{stateDiagram-HBIQ2CUA-DvA3jSMB.js → stateDiagram-HBIQ2CUA-Dp_lw9II.js} +1 -1
  94. package/dist-ksadk/assets/stateDiagram-v2-4QOOHH4V-5b-8o2iS.js +1 -0
  95. package/dist-ksadk/assets/{swimlanes-XN3QIQJK-CR-dfN_t.js → swimlanes-XN3QIQJK-D8O5UlLG.js} +1 -1
  96. package/dist-ksadk/assets/swimlanesDiagram-VK2B7HYN-uf6WPRA4.js +8 -0
  97. package/dist-ksadk/assets/{timeline-definition-24CTP7MA-DAVJf1TX.js → timeline-definition-24CTP7MA-8mfKcxvG.js} +1 -1
  98. package/dist-ksadk/assets/treeView-Q6P3EWNA-CK5CSrSO.js +1 -0
  99. package/dist-ksadk/assets/treemap-WGGIJYW6-Ch2BKgAM.js +1 -0
  100. package/dist-ksadk/assets/{vennDiagram-4TSXK5OY-DwM8eDkh.js → vennDiagram-4TSXK5OY-EnNl0DE7.js} +1 -1
  101. package/dist-ksadk/assets/wardley-WFR3VGLG-YW3Q0ml_.js +1 -0
  102. package/dist-ksadk/assets/{wardleyDiagram-VM6X3IG4-DZL-Zz2t.js → wardleyDiagram-VM6X3IG4-DBu5fbYr.js} +1 -1
  103. package/dist-ksadk/assets/{xychartDiagram-S5SC5T6Z-Dy6Yh_hu.js → xychartDiagram-S5SC5T6Z-BSVXs4IY.js} +1 -1
  104. package/dist-ksadk/index.html +2 -2
  105. package/dist-lib/App.d.ts.map +1 -1
  106. package/dist-lib/{ArtifactsPanel-DDCKcvaL.js → ArtifactsPanel-D36BykpN.js} +1 -1
  107. package/dist-lib/{CodeBlock-BS9DcS5a.js → CodeBlock-BlEkUJ8C.js} +1 -1
  108. package/dist-lib/{MathMessageMarkdown-CpCcJFjZ.js → MathMessageMarkdown-CcnPvEgd.js} +2 -2
  109. package/dist-lib/{NativeTerminalPanel-CDqCdIly.js → NativeTerminalPanel-Dix1UX_z.js} +1 -1
  110. package/dist-lib/{WorkspacePanelContainer-DzbAkIfx.js → WorkspacePanelContainer-Cr1BwR1P.js} +1391 -1609
  111. package/dist-lib/components/chat/A2UIActivityMessage.d.ts.map +1 -1
  112. package/dist-lib/components/chat/ChatMessageList.d.ts +9 -0
  113. package/dist-lib/components/chat/ChatMessageList.d.ts.map +1 -1
  114. package/dist-lib/components/chat/ProcessingBlocksView.d.ts.map +1 -1
  115. package/dist-lib/components.js +4 -4
  116. package/dist-lib/conversation.js +28 -0
  117. package/dist-lib/core/conversation/client.d.ts +26 -0
  118. package/dist-lib/core/conversation/client.d.ts.map +1 -0
  119. package/dist-lib/core/conversation/contracts.d.ts +20 -0
  120. package/dist-lib/core/conversation/contracts.d.ts.map +1 -0
  121. package/dist-lib/core/conversation/errors.d.ts +12 -0
  122. package/dist-lib/core/conversation/errors.d.ts.map +1 -0
  123. package/dist-lib/core/conversation/hosted.d.ts +25 -0
  124. package/dist-lib/core/conversation/hosted.d.ts.map +1 -0
  125. package/dist-lib/core/conversation/index.d.ts +8 -0
  126. package/dist-lib/core/conversation/index.d.ts.map +1 -0
  127. package/dist-lib/core/conversation/presentation.d.ts +16 -0
  128. package/dist-lib/core/conversation/presentation.d.ts.map +1 -0
  129. package/dist-lib/core/conversation/reducer.d.ts +19 -0
  130. package/dist-lib/core/conversation/reducer.d.ts.map +1 -0
  131. package/dist-lib/core/conversation/renderer-registry.d.ts +20 -0
  132. package/dist-lib/core/conversation/renderer-registry.d.ts.map +1 -0
  133. package/dist-lib/core/conversation/types.d.ts +176 -0
  134. package/dist-lib/core/conversation/types.d.ts.map +1 -0
  135. package/dist-lib/core/run/blocks.d.ts +7 -0
  136. package/dist-lib/core/run/blocks.d.ts.map +1 -1
  137. package/dist-lib/core/run/dispatcher.d.ts.map +1 -1
  138. package/dist-lib/core/run/engine.d.ts +3 -0
  139. package/dist-lib/core/run/engine.d.ts.map +1 -1
  140. package/dist-lib/core/run/types.d.ts +8 -0
  141. package/dist-lib/core/run/types.d.ts.map +1 -1
  142. package/dist-lib/core/stream/kernel-events.d.ts.map +1 -1
  143. package/dist-lib/hooks/useRunAgent.d.ts.map +1 -1
  144. package/dist-lib/hooks/useSessionLifecycle.d.ts.map +1 -1
  145. package/dist-lib/persisted-session-history-C0N8TrMb.js +2033 -0
  146. package/dist-lib/public/conversation.d.ts +13 -0
  147. package/dist-lib/public/conversation.d.ts.map +1 -0
  148. package/dist-lib/public/runtime.d.ts +2 -0
  149. package/dist-lib/public/runtime.d.ts.map +1 -1
  150. package/dist-lib/public/types.d.ts +1 -0
  151. package/dist-lib/public/types.d.ts.map +1 -1
  152. package/dist-lib/runtime.js +1362 -2197
  153. package/dist-lib/styles.css +1 -1
  154. package/dist-lib/tool-display-C4tPXce0.js +0 -0
  155. package/dist-lib/utils/persisted-session-history.d.ts +27 -0
  156. package/dist-lib/utils/persisted-session-history.d.ts.map +1 -0
  157. package/dist-lib/utils/recovered-run.d.ts.map +1 -1
  158. package/dist-lib/utils/session-event-history.d.ts.map +1 -1
  159. package/dist-lib/utils/session-events.d.ts.map +1 -1
  160. package/package.json +14 -3
  161. package/schemas/release-provenance.schema.json +34 -0
  162. package/dist-ksadk/assets/architecture-7GRP2DOG-DjKratdf.js +0 -1
  163. package/dist-ksadk/assets/channel-4cQHKtx1.js +0 -1
  164. package/dist-ksadk/assets/chunk-2Q5K7J3B-DmgWkESh.js +0 -1
  165. package/dist-ksadk/assets/classDiagram-DTDB5LWJ-DLFd9Xi0.js +0 -1
  166. package/dist-ksadk/assets/classDiagram-v2-JRS7N3AN-DLFd9Xi0.js +0 -1
  167. package/dist-ksadk/assets/cynefin-OW5HDTMX-DjEM48Qp.js +0 -1
  168. package/dist-ksadk/assets/eventmodeling-NTZA5JFV-CMgMaJrC.js +0 -1
  169. package/dist-ksadk/assets/flowDiagram-A5DVABFB-BBKL0x3P.js +0 -1
  170. package/dist-ksadk/assets/gitGraph-4MIJSDKK-Dw63mrhw.js +0 -1
  171. package/dist-ksadk/assets/index-8ipRcQ-M.js +0 -240
  172. package/dist-ksadk/assets/index-ByFCqjlh.css +0 -2
  173. package/dist-ksadk/assets/info-A6RAGUB7-B6iAblII.js +0 -1
  174. package/dist-ksadk/assets/packet-AYTQ26CC-BOYAipuq.js +0 -1
  175. package/dist-ksadk/assets/pie-WAS4IAKB-Ctq0Kbku.js +0 -1
  176. package/dist-ksadk/assets/radar-RG4KPBEZ-DN0-ul_0.js +0 -1
  177. package/dist-ksadk/assets/railroad-74A4TZTK-C6cC_to0.js +0 -1
  178. package/dist-ksadk/assets/railroad-abnf-HS5TGJTU-BimjIuRc.js +0 -1
  179. package/dist-ksadk/assets/railroad-ebnf-LZEXJU2U-CvY65ABq.js +0 -1
  180. package/dist-ksadk/assets/railroad-peg-WCYAUIDC-D72Iq_Tv.js +0 -1
  181. package/dist-ksadk/assets/stateDiagram-v2-4QOOHH4V-BgQY03nz.js +0 -1
  182. package/dist-ksadk/assets/swimlanesDiagram-VK2B7HYN-DLVw3q5Q.js +0 -8
  183. package/dist-ksadk/assets/treeView-Q6P3EWNA-BMpO0wsB.js +0 -1
  184. package/dist-ksadk/assets/treemap-WGGIJYW6-Et0aqzU3.js +0 -1
  185. package/dist-ksadk/assets/wardley-WFR3VGLG-CbY0mhpl.js +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,82 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.4 - 2026-08-31
4
+
5
+ - Normalize the real RuntimeEvent/v2 wire shape before presentation: consume
6
+ `item.updated.update` as a named content part, retain stable
7
+ `run_id / scope_id / item_id / part_id` identity, apply append versus
8
+ replace semantics, handle atomic `item.snapshot_replaced`, and settle failed
9
+ tool items instead of leaving them visibly running.
10
+ - Give each canonical run exactly one transcript owner. Live canonical items
11
+ replace the same run's legacy replay projection, while reconnect rebuilds the
12
+ complete durable item timeline. Distinct reasoning items, repeated calls to
13
+ the same tool, commentary messages, and the final answer no longer collapse
14
+ into one row or render twice.
15
+ - Rebuild refreshed sessions from the complete persisted RuntimeEvent/v2 log
16
+ instead of rendering every cumulative `ListSessionMessages` snapshot as a
17
+ separate answer. Canonical runs retain item identity across reload, while
18
+ historical runtimes without canonical events continue to use the projected
19
+ message API as a compatibility fallback.
20
+ - Repair the legacy runtime shape that streamed an answer through the
21
+ reasoning channel and repeated it as a terminal snapshot. When no text
22
+ delta was received and the exact terminal answer is mirrored only at the
23
+ tail of the final thinking block, the renderer removes that run-local mirror
24
+ before presenting the authoritative answer; unrelated or repeated text is
25
+ never deduplicated by content.
26
+ - Keep a conversation turn active until an explicit run-level terminal status
27
+ arrives. Completed user messages, tools, approvals, usage reports, and
28
+ provider notifications no longer unlock the composer or trigger duplicate
29
+ submissions while the agent is still running.
30
+ - Make active reasoning visibly animated with a motion-safe text shimmer,
31
+ matching WeWork's low-noise thinking treatment across both canonical and
32
+ legacy rows while preserving the compact, collapsible completed state.
33
+ - Follow new output only while the reader remains near the bottom. Replayed
34
+ snapshots and terminal layout changes preserve an intentionally scrolled-up
35
+ viewport instead of pulling it back to the latest token.
36
+ - Publish a dedicated interactive GitHub Pages demo that exercises the shared
37
+ reasoning, tool, approval tray, token-by-token Markdown, feedback, and
38
+ composer components entirely in the browser. It is explicitly labelled as
39
+ local sample data instead of attempting to connect to a nonexistent Agent
40
+ backend.
41
+
42
+ ## 0.3.3 - 2026-08-28
43
+
44
+ ### Headless conversation surface
45
+
46
+ - Add the Node/SSR-safe `@kingsoftcloud/ksadk-web/conversation` entrypoint with
47
+ strict ConversationSurface/Input/Item v1 decoders, input preflight, bounded
48
+ HTTP/SSE reconnect, passive renderer data, and the shared identity reducer.
49
+ - Route the bundled Hosted UI through the same conversation client and reducer
50
+ when a valid Surface is advertised. A Surface HTTP 404 keeps the existing
51
+ Responses / AG-UI / legacy path; malformed surfaces and server failures do
52
+ not silently bypass the declared contract.
53
+ - Preserve different item identities even when their text is equal, ignore
54
+ replayed `(itemId, sourceEventId)` pairs, keep terminal items monotonic, and
55
+ retain additive unknown item kinds for replay/audit without rendering a
56
+ repeated transcript card; newer schemas on known kinds safely downgrade to
57
+ one passive fallback card.
58
+ - Preserve the canonical item timeline for renderers: a separate native tool
59
+ result enriches its original `callId` tool card rather than rendering a
60
+ duplicate card, while reasoning, tools and answers keep their original
61
+ interleaving. Add an immutable exact `kind + payloadSchemaRef` trusted
62
+ renderer catalog; providers cannot supply executable UI code in event
63
+ payloads or claim a future schema version.
64
+ - Keep `output` and `reasoning` summaries as a compatibility view beside the
65
+ canonical timeline, so Studio can adopt the shared reducer without a second
66
+ text aggregation implementation during the 0.8.3 transition.
67
+ - Keep canonical approvals without a durable `revision` read-only. Consumers
68
+ must not guess a revision or submit them through the revision-CAS Interaction
69
+ API until the server supplies an authoritative value.
70
+ - Make attachment upload and model selection first-class canonical inputs in
71
+ Hosted UI. Unsupported inputs and oversized files fail before upload or turn
72
+ submission instead of silently degrading to legacy `RunAgent` behavior.
73
+ - Prove the headless entrypoint from a minimal independent consumer across two
74
+ turns, cursor reconnect, text/tool/approval/unknown-item rendering, and
75
+ revision-CAS approval submission.
76
+ - Add a repeatable release preflight that runs unit, Node contract, lint, all
77
+ production builds, canonical Conversation browser E2E, provenance checks,
78
+ npm packing, and a clean tarball-install public API smoke test.
79
+
3
80
  ## 0.3.2 - 2026-08-21
4
81
 
5
82
  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.4",
5
+ "source_commit": "5a23f235b31600fb44f4f939de3e60d0e76056df",
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-B2k_urY8.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};