@aiwayds/dsh-opentui 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) hide show
  1. package/dist-host/index.js +1171 -307
  2. package/dist-host/node_modules/.modules.yaml +4 -4
  3. package/dist-host/node_modules/.pnpm/lock.yaml +20 -20
  4. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/cjs/development/web.cjs +826 -0
  5. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/cjs/development/web.cjs.map +7 -0
  6. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/cjs/production/web.cjs +1 -0
  7. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/esm/development/web.mjs +803 -0
  8. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/esm/development/web.mjs.map +7 -0
  9. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/esm/production/web.mjs +1 -0
  10. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/abort-signal.d.ts +3 -0
  11. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/abort-signal.d.ts.map +1 -0
  12. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/blob.d.ts +3 -0
  13. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/blob.d.ts.map +1 -0
  14. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/custom-event.d.ts +3 -0
  15. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/custom-event.d.ts.map +1 -0
  16. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/dom-exception.d.ts +3 -0
  17. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/dom-exception.d.ts.map +1 -0
  18. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/event.d.ts +3 -0
  19. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/event.d.ts.map +1 -0
  20. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/file.d.ts +3 -0
  21. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/file.d.ts.map +1 -0
  22. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/form-data.d.ts +3 -0
  23. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/form-data.d.ts.map +1 -0
  24. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/headers.d.ts +3 -0
  25. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/headers.d.ts.map +1 -0
  26. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/image-data.d.ts +3 -0
  27. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/image-data.d.ts.map +1 -0
  28. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/index.d.ts +15 -0
  29. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/index.d.ts.map +1 -0
  30. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/readable-stream.d.ts +3 -0
  31. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/readable-stream.d.ts.map +1 -0
  32. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/request.d.ts +3 -0
  33. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/request.d.ts.map +1 -0
  34. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/response.d.ts +3 -0
  35. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/response.d.ts.map +1 -0
  36. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/url-search-params.d.ts +3 -0
  37. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/url-search-params.d.ts.map +1 -0
  38. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/url.d.ts +3 -0
  39. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/dist/types/web/url.d.ts.map +1 -0
  40. package/dist-host/node_modules/.pnpm/{seroval-plugins@1.6.12_seroval@1.6.12 → seroval-plugins@1.5.6_seroval@1.5.6}/node_modules/seroval-plugins/package.json +21 -29
  41. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/web/abort-signal.ts +131 -0
  42. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/web/blob.ts +41 -0
  43. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/web/custom-event.ts +66 -0
  44. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/web/dom-exception.ts +57 -0
  45. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/web/event.ts +62 -0
  46. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/web/file.ts +50 -0
  47. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/web/form-data.ts +105 -0
  48. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/web/headers.ts +49 -0
  49. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/web/image-data.ts +74 -0
  50. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/web/index.ts +14 -0
  51. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/web/readable-stream.ts +148 -0
  52. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/web/request.ts +82 -0
  53. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/web/response.ts +65 -0
  54. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/web/url-search-params.ts +40 -0
  55. package/dist-host/node_modules/.pnpm/seroval-plugins@1.5.6_seroval@1.5.6/node_modules/seroval-plugins/web/url.ts +37 -0
  56. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/cjs/development/index.cjs +4232 -0
  57. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/cjs/development/index.cjs.map +7 -0
  58. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/cjs/production/index.cjs +3 -0
  59. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/esm/development/index.mjs +4209 -0
  60. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/esm/development/index.mjs.map +7 -0
  61. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/esm/production/index.mjs +3 -0
  62. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/Serializer.d.ts +28 -0
  63. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/Serializer.d.ts.map +1 -0
  64. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/base-primitives.d.ts +28 -0
  65. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/base-primitives.d.ts.map +1 -0
  66. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/compat.d.ts +15 -0
  67. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/compat.d.ts.map +1 -0
  68. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/constants.d.ts +105 -0
  69. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/constants.d.ts.map +1 -0
  70. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/constructors.d.ts +50 -0
  71. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/constructors.d.ts.map +1 -0
  72. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/context/async-parser.d.ts +20 -0
  73. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/context/async-parser.d.ts.map +1 -0
  74. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/context/deserializer.d.ts +52 -0
  75. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/context/deserializer.d.ts.map +1 -0
  76. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/context/parser.d.ts +62 -0
  77. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/context/parser.d.ts.map +1 -0
  78. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/context/serializer.d.ts +103 -0
  79. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/context/serializer.d.ts.map +1 -0
  80. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/context/sync-parser.d.ts +61 -0
  81. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/context/sync-parser.d.ts.map +1 -0
  82. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/cross/index.d.ts +24 -0
  83. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/cross/index.d.ts.map +1 -0
  84. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/errors.d.ts +47 -0
  85. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/errors.d.ts.map +1 -0
  86. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/function-string.d.ts +3 -0
  87. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/function-string.d.ts.map +1 -0
  88. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/keys.d.ts +4 -0
  89. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/keys.d.ts.map +1 -0
  90. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/literals.d.ts +10 -0
  91. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/literals.d.ts.map +1 -0
  92. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/node.d.ts +8 -0
  93. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/node.d.ts.map +1 -0
  94. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/opaque-reference.d.ts +9 -0
  95. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/opaque-reference.d.ts.map +1 -0
  96. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/plugin.d.ts +52 -0
  97. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/plugin.d.ts.map +1 -0
  98. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/reference.d.ts +6 -0
  99. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/reference.d.ts.map +1 -0
  100. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/sequence.d.ts +11 -0
  101. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/sequence.d.ts.map +1 -0
  102. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/special-reference.d.ts +16 -0
  103. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/special-reference.d.ts.map +1 -0
  104. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/stream.d.ts +17 -0
  105. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/stream.d.ts.map +1 -0
  106. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/string.d.ts +4 -0
  107. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/string.d.ts.map +1 -0
  108. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/symbols.d.ts +14 -0
  109. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/symbols.d.ts.map +1 -0
  110. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/tree/index.d.ts +21 -0
  111. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/tree/index.d.ts.map +1 -0
  112. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/types.d.ts +233 -0
  113. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/types.d.ts.map +1 -0
  114. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/utils/error.d.ts +6 -0
  115. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/utils/error.d.ts.map +1 -0
  116. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/utils/get-identifier.d.ts +2 -0
  117. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/utils/get-identifier.d.ts.map +1 -0
  118. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/utils/get-object-flag.d.ts +3 -0
  119. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/utils/get-object-flag.d.ts.map +1 -0
  120. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/utils/is-valid-identifier.d.ts +2 -0
  121. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/utils/is-valid-identifier.d.ts.map +1 -0
  122. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/utils/promise-to-result.d.ts +2 -0
  123. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/utils/promise-to-result.d.ts.map +1 -0
  124. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/utils/typed-array.d.ts +6 -0
  125. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/utils/typed-array.d.ts.map +1 -0
  126. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/utils/valid-properties.d.ts +3 -0
  127. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/core/utils/valid-properties.d.ts.map +1 -0
  128. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/index.d.ts +18 -0
  129. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/dist/types/index.d.ts.map +1 -0
  130. package/dist-host/node_modules/.pnpm/{seroval@1.6.12 → seroval@1.5.6}/node_modules/seroval/package.json +24 -26
  131. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/Serializer.ts +119 -0
  132. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/base-primitives.ts +537 -0
  133. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/compat.ts +23 -0
  134. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/constants.ts +202 -0
  135. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/constructors.ts +265 -0
  136. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/context/async-parser.ts +666 -0
  137. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/context/deserializer.ts +832 -0
  138. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/context/parser.ts +335 -0
  139. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/context/serializer.ts +1524 -0
  140. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/context/sync-parser.ts +943 -0
  141. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/cross/index.ts +190 -0
  142. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/errors.ts +196 -0
  143. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/function-string.ts +31 -0
  144. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/keys.ts +17 -0
  145. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/literals.ts +43 -0
  146. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/node.ts +40 -0
  147. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/opaque-reference.ts +9 -0
  148. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/plugin.ts +105 -0
  149. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/reference.ts +66 -0
  150. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/sequence.ts +59 -0
  151. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/special-reference.ts +42 -0
  152. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/stream.ts +71 -0
  153. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/string.ts +86 -0
  154. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/symbols.ts +20 -0
  155. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/tree/index.ts +134 -0
  156. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/types.ts +377 -0
  157. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/utils/error.ts +73 -0
  158. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/utils/get-identifier.ts +18 -0
  159. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/utils/get-object-flag.ts +14 -0
  160. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/utils/is-valid-identifier.ts +12 -0
  161. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/utils/promise-to-result.ts +9 -0
  162. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/utils/typed-array.ts +56 -0
  163. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/core/utils/valid-properties.ts +34 -0
  164. package/dist-host/node_modules/.pnpm/seroval@1.5.6/node_modules/seroval/src/index.ts +36 -0
  165. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/README.md +1 -1
  166. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/dist/dev.cjs +23 -60
  167. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/dist/dev.js +23 -60
  168. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/dist/server.cjs +20 -34
  169. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/dist/server.js +20 -34
  170. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/dist/solid.cjs +23 -60
  171. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/dist/solid.js +23 -60
  172. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/h/jsx-runtime/types/jsx.d.ts +5 -4
  173. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/html/types/lit.d.ts +7 -4
  174. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/package.json +4 -4
  175. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/store/dist/dev.cjs +3 -30
  176. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/store/dist/dev.js +3 -30
  177. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/store/dist/server.cjs +0 -7
  178. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/store/dist/server.js +0 -7
  179. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/store/dist/store.cjs +3 -28
  180. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/store/dist/store.js +3 -28
  181. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/store/types/index.d.ts +1 -1
  182. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/store/types/server.d.ts +3 -3
  183. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/store/types/store.d.ts +1 -2
  184. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/types/jsx.d.ts +5 -4
  185. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/types/reactive/signal.d.ts +2 -6
  186. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/types/server/rendering.d.ts +0 -2
  187. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/universal/dist/dev.cjs +2 -2
  188. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/universal/dist/dev.js +2 -2
  189. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/universal/dist/universal.cjs +2 -2
  190. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/universal/dist/universal.js +2 -2
  191. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/web/dist/dev.cjs +19 -24
  192. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/web/dist/dev.js +19 -24
  193. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/web/dist/server.cjs +11 -59
  194. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/web/dist/server.js +12 -56
  195. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/web/dist/web.cjs +19 -24
  196. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/web/dist/web.js +19 -24
  197. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/web/types/client.d.ts +3 -3
  198. package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/web/types/server.d.ts +4 -14
  199. package/dist-host/node_modules/.pnpm-workspace-state-v1.json +1 -1
  200. package/dist-host/package.json +1 -1
  201. package/dist-host/pnpm-lock.yaml +20 -20
  202. package/package.json +1 -1
  203. package/scripts/install-profile.mjs +2 -2
  204. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/dev/index-BD3WIX1W.d.cts +0 -47
  205. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/dev/index-Col4D1Sf.d.ts +0 -46
  206. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/dev/index.cjs +0 -8
  207. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/dev/index.d.cts +0 -2
  208. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/dev/index.d.ts +0 -2
  209. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/dev/index.js +0 -2
  210. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/dev/rolldown-runtime-D7D4PA-g.js +0 -13
  211. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/dev/web-CDQeyEaf.js +0 -671
  212. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/dev/web-CnMWzq6_.cjs +0 -771
  213. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/dev/web.cjs +0 -16
  214. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/dev/web.d.cts +0 -2
  215. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/dev/web.d.ts +0 -2
  216. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/dev/web.js +0 -2
  217. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/index-BD3WIX1W.d.cts +0 -47
  218. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/index-Col4D1Sf.d.ts +0 -46
  219. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/index.cjs +0 -8
  220. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/index.d.cts +0 -2
  221. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/index.d.ts +0 -2
  222. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/index.js +0 -2
  223. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/rolldown-runtime-D7D4PA-g.js +0 -13
  224. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/web-CDQeyEaf.js +0 -671
  225. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/web-CnMWzq6_.cjs +0 -771
  226. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/web.cjs +0 -16
  227. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/web.d.cts +0 -2
  228. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/web.d.ts +0 -2
  229. package/dist-host/node_modules/.pnpm/seroval-plugins@1.6.12_seroval@1.6.12/node_modules/seroval-plugins/dist/web.js +0 -2
  230. package/dist-host/node_modules/.pnpm/seroval@1.6.12/node_modules/seroval/dist/dev/index.cjs +0 -3183
  231. package/dist-host/node_modules/.pnpm/seroval@1.6.12/node_modules/seroval/dist/dev/index.d.cts +0 -786
  232. package/dist-host/node_modules/.pnpm/seroval@1.6.12/node_modules/seroval/dist/dev/index.d.ts +0 -786
  233. package/dist-host/node_modules/.pnpm/seroval@1.6.12/node_modules/seroval/dist/dev/index.js +0 -3145
  234. package/dist-host/node_modules/.pnpm/seroval@1.6.12/node_modules/seroval/dist/index.cjs +0 -3176
  235. package/dist-host/node_modules/.pnpm/seroval@1.6.12/node_modules/seroval/dist/index.d.cts +0 -786
  236. package/dist-host/node_modules/.pnpm/seroval@1.6.12/node_modules/seroval/dist/index.d.ts +0 -786
  237. package/dist-host/node_modules/.pnpm/seroval@1.6.12/node_modules/seroval/dist/index.js +0 -3138
  238. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/LICENSE +0 -0
  239. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/README.md +0 -0
  240. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/components.d.ts +0 -0
  241. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/components.js +0 -0
  242. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/index.bun.js +0 -0
  243. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/index.bun.js.map +0 -0
  244. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/index.d.ts +0 -0
  245. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/index.js +0 -0
  246. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/index.js.map +0 -0
  247. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/jsx-dev-runtime.d.ts +0 -0
  248. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/jsx-dev-runtime.js +0 -0
  249. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/jsx-dev-runtime.js.map +0 -0
  250. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/jsx-runtime.d.ts +0 -0
  251. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/jsx-runtime.js +0 -0
  252. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/jsx-runtime.js.map +0 -0
  253. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/package.json +0 -0
  254. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/scripts/preload.js +0 -0
  255. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/scripts/preload.js.map +0 -0
  256. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/scripts/preload.node.js +0 -0
  257. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/scripts/runtime-plugin-support-configure.d.ts +0 -0
  258. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/scripts/runtime-plugin-support-configure.js +0 -0
  259. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/scripts/runtime-plugin-support-configure.js.map +0 -0
  260. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/scripts/runtime-plugin-support-configure.node.js +0 -0
  261. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/scripts/runtime-plugin-support.d.ts +0 -0
  262. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/scripts/runtime-plugin-support.js +0 -0
  263. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/scripts/runtime-plugin-support.js.map +0 -0
  264. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/scripts/runtime-plugin-support.node.js +0 -0
  265. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/scripts/solid-plugin.d.ts +0 -0
  266. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/scripts/solid-plugin.js +0 -0
  267. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/scripts/solid-plugin.js.map +0 -0
  268. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/scripts/solid-plugin.node.js +0 -0
  269. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/scripts/solid-transform.d.ts +0 -0
  270. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/scripts/solid-transform.js +0 -0
  271. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/scripts/solid-transform.js.map +0 -0
  272. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/src/elements/catalogue.d.ts +0 -0
  273. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/src/elements/extras.d.ts +0 -0
  274. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/src/elements/hooks.d.ts +0 -0
  275. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/src/elements/index.d.ts +0 -0
  276. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/src/elements/slot.d.ts +0 -0
  277. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/src/plugins/slot.d.ts +0 -0
  278. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/src/reconciler.d.ts +0 -0
  279. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/src/renderer/index.d.ts +0 -0
  280. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/src/renderer/universal.d.ts +0 -0
  281. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/src/scrollback.d.ts +0 -0
  282. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/src/testing/bun-test-node.d.ts +0 -0
  283. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/src/time-to-first-draw.d.ts +0 -0
  284. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/src/types/elements.d.ts +0 -0
  285. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/src/utils/id-counter.d.ts +0 -0
  286. /package/dist-host/node_modules/.pnpm/{@opentui+solid@0.7.0_solid-js@1.9.17_typescript@5.9.3_web-tree-sitter@0.25.10 → @opentui+solid@0.7.0_solid-js@1.9.12_typescript@5.9.3_web-tree-sitter@0.25.10}/node_modules/@opentui/solid/src/utils/log.d.ts +0 -0
  287. /package/dist-host/node_modules/.pnpm/{babel-preset-solid@1.9.12_@babel+core@7.29.7_solid-js@1.9.17 → babel-preset-solid@1.9.12_@babel+core@7.29.7_solid-js@1.9.12}/node_modules/babel-preset-solid/LICENSE +0 -0
  288. /package/dist-host/node_modules/.pnpm/{babel-preset-solid@1.9.12_@babel+core@7.29.7_solid-js@1.9.17 → babel-preset-solid@1.9.12_@babel+core@7.29.7_solid-js@1.9.12}/node_modules/babel-preset-solid/README.md +0 -0
  289. /package/dist-host/node_modules/.pnpm/{babel-preset-solid@1.9.12_@babel+core@7.29.7_solid-js@1.9.17 → babel-preset-solid@1.9.12_@babel+core@7.29.7_solid-js@1.9.12}/node_modules/babel-preset-solid/index.js +0 -0
  290. /package/dist-host/node_modules/.pnpm/{babel-preset-solid@1.9.12_@babel+core@7.29.7_solid-js@1.9.17 → babel-preset-solid@1.9.12_@babel+core@7.29.7_solid-js@1.9.12}/node_modules/babel-preset-solid/package.json +0 -0
  291. /package/dist-host/node_modules/.pnpm/{seroval-plugins@1.6.12_seroval@1.6.12 → seroval-plugins@1.5.6_seroval@1.5.6}/node_modules/seroval-plugins/LICENSE +0 -0
  292. /package/dist-host/node_modules/.pnpm/{seroval-plugins@1.6.12_seroval@1.6.12 → seroval-plugins@1.5.6_seroval@1.5.6}/node_modules/seroval-plugins/README.md +0 -0
  293. /package/dist-host/node_modules/.pnpm/{seroval@1.6.12 → seroval@1.5.6}/node_modules/seroval/LICENSE +0 -0
  294. /package/dist-host/node_modules/.pnpm/{seroval@1.6.12 → seroval@1.5.6}/node_modules/seroval/README.md +0 -0
  295. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/LICENSE +0 -0
  296. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/h/dist/h.cjs +0 -0
  297. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/h/dist/h.js +0 -0
  298. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/h/jsx-dev-runtime/package.json +0 -0
  299. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/h/jsx-runtime/dist/jsx.cjs +0 -0
  300. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/h/jsx-runtime/dist/jsx.js +0 -0
  301. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/h/jsx-runtime/package.json +0 -0
  302. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/h/jsx-runtime/types/index.d.ts +0 -0
  303. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/h/package.json +0 -0
  304. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/h/types/hyperscript.d.ts +0 -0
  305. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/h/types/index.d.ts +0 -0
  306. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/html/dist/html.cjs +0 -0
  307. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/html/dist/html.js +0 -0
  308. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/html/package.json +0 -0
  309. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/html/types/index.d.ts +0 -0
  310. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/jsx-runtime.d.ts +0 -0
  311. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/store/package.json +0 -0
  312. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/store/types/modifiers.d.ts +0 -0
  313. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/store/types/mutable.d.ts +0 -0
  314. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/types/index.d.ts +0 -0
  315. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/types/reactive/array.d.ts +0 -0
  316. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/types/reactive/observable.d.ts +0 -0
  317. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/types/reactive/scheduler.d.ts +0 -0
  318. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/types/render/Suspense.d.ts +0 -0
  319. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/types/render/component.d.ts +0 -0
  320. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/types/render/flow.d.ts +0 -0
  321. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/types/render/hydration.d.ts +0 -0
  322. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/types/render/index.d.ts +0 -0
  323. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/types/server/index.d.ts +0 -0
  324. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/types/server/reactive.d.ts +0 -0
  325. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/universal/package.json +0 -0
  326. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/universal/types/index.d.ts +0 -0
  327. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/universal/types/universal.d.ts +0 -0
  328. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/web/package.json +0 -0
  329. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/web/storage/dist/storage.cjs +0 -0
  330. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/web/storage/dist/storage.js +0 -0
  331. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/web/storage/package.json +0 -0
  332. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/web/storage/types/index.d.ts +0 -0
  333. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/web/types/core.d.ts +0 -0
  334. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/web/types/index.d.ts +0 -0
  335. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/web/types/jsx.d.ts +0 -0
  336. /package/dist-host/node_modules/.pnpm/{solid-js@1.9.17 → solid-js@1.9.12}/node_modules/solid-js/web/types/server-mock.d.ts +0 -0
@@ -1,5 +1,5 @@
1
1
  // src/host-entry.tsx
2
- import { createComponent as _$createComponent3 } from "@opentui/solid";
2
+ import { createComponent as _$createComponent7 } from "@opentui/solid";
3
3
  import { render } from "@opentui/solid";
4
4
 
5
5
  // ../runtime/src/engine.ts
@@ -84,14 +84,37 @@ var dict = {
84
84
  "agent.approve.hint": { "zh-CN": "y 允许 · n 拒绝", en: "y approve · n decline" },
85
85
  "agent.error": { "zh-CN": "出错", en: "error" },
86
86
  "cmd.help.lines": {
87
- "zh-CN": "/help 命令列表 · /model 切换模型 · /usage 用量 · /clear 清空 · /quit 退出",
88
- en: "/help · /model [provider/id] · /usage · /clear · /quit"
87
+ "zh-CN": "/help 命令列表 · /model 切换模型 · /login /logout 凭据 · /usage 用量 · /clear 清空 · /quit 退出",
88
+ en: "/help · /model [provider/id] · /login · /logout · /usage · /clear · /quit"
89
89
  },
90
90
  "cmd.model.current": { "zh-CN": "当前模型", en: "current model" },
91
91
  "cmd.model.available": { "zh-CN": "可用模型", en: "available" },
92
92
  "cmd.model.set": { "zh-CN": "已切换", en: "switched to" },
93
+ "cmd.model.next": { "zh-CN": "(下一条消息生效)", en: "(next message)" },
94
+ "picker.sessions.title": { "zh-CN": "会话(回车恢复 · esc 取消)", en: "sessions (enter resume · esc cancel)" },
95
+ "picker.effort.title": { "zh-CN": "{model} 思考档位", en: "{model} reasoning effort" },
96
+ "cmd.new.done": { "zh-CN": "已开新会话", en: "new session started" },
97
+ "cmd.sessions.empty": { "zh-CN": "没有可恢复的会话", en: "no stored sessions" },
98
+ "cmd.sessions.resumed": { "zh-CN": "已挂载会话(下条消息生效)", en: "session attached (applies to next message)" },
99
+ "ask.title": { "zh-CN": "模型提问", en: "model asks" },
93
100
  "cmd.usage.summary": { "zh-CN": "累计", en: "total" },
94
- "cmd.cleared": { "zh-CN": "会话已清空", en: "session cleared" }
101
+ "cmd.cleared": { "zh-CN": "会话已清空", en: "session cleared" },
102
+ "cmd.login.saved": { "zh-CN": "凭据 {ref} 已保存", en: "credential {ref} saved" },
103
+ "cmd.login.usage": {
104
+ "zh-CN": "用法:/login REF KEY(裸 /login 查看凭据状态)",
105
+ en: "usage: /login REF KEY (bare /login shows credential status)"
106
+ },
107
+ "cmd.logout.done": { "zh-CN": "凭据 {ref} 已移除", en: "credential {ref} removed" },
108
+ "cmd.logout.usage": {
109
+ "zh-CN": "用法:/logout REF(裸 /logout 查看凭据状态)",
110
+ en: "usage: /logout REF (bare /logout shows credential status)"
111
+ },
112
+ "cmd.cred.status": { "zh-CN": "{ref}:{status}", en: "{ref}: {status}" },
113
+ "cmd.cred.configured": { "zh-CN": "已配置", en: "configured" },
114
+ "cmd.cred.missing": { "zh-CN": "未配置", en: "missing" },
115
+ "picker.model.title": { "zh-CN": "选择模型", en: "select model" },
116
+ "panel.tools.title": { "zh-CN": "工具", en: "tools" },
117
+ "panel.think.title": { "zh-CN": "思考", en: "thinking" }
95
118
  };
96
119
  function createI18n(locale = "zh-CN") {
97
120
  const fmt = (s, vars) => vars ? s.replace(/\{(\w+)\}/g, (_, k) => String(vars[k] ?? `{${k}}`)) : s;
@@ -105,16 +128,16 @@ function createI18n(locale = "zh-CN") {
105
128
  }
106
129
 
107
130
  // src/ShellHost.tsx
108
- import { memo as _$memo } from "@opentui/solid";
109
- import { createComponent as _$createComponent2 } from "@opentui/solid";
110
- import { setProp as _$setProp2 } from "@opentui/solid";
111
- import { effect as _$effect2 } from "@opentui/solid";
112
- import { insert as _$insert2 } from "@opentui/solid";
113
- import { createTextNode as _$createTextNode2 } from "@opentui/solid";
114
- import { insertNode as _$insertNode2 } from "@opentui/solid";
115
- import { createElement as _$createElement2 } from "@opentui/solid";
116
- import { For as For2, createMemo, createSignal, onCleanup, onMount } from "solid-js";
117
- import { createTextAttributes, SyntaxStyle } from "@opentui/core";
131
+ import { createTextNode as _$createTextNode5 } from "@opentui/solid";
132
+ import { effect as _$effect6 } from "@opentui/solid";
133
+ import { insertNode as _$insertNode6 } from "@opentui/solid";
134
+ import { memo as _$memo4 } from "@opentui/solid";
135
+ import { insert as _$insert6 } from "@opentui/solid";
136
+ import { createComponent as _$createComponent6 } from "@opentui/solid";
137
+ import { setProp as _$setProp6 } from "@opentui/solid";
138
+ import { createElement as _$createElement6 } from "@opentui/solid";
139
+ import { For as For6, createMemo, createSignal, onCleanup, onMount } from "solid-js";
140
+ import { SyntaxStyle } from "@opentui/core";
118
141
  import { useKeyboard, useRenderer } from "@opentui/solid";
119
142
  // ../kit/src/theme.ts
120
143
  var defaultTheme = {
@@ -211,28 +234,18 @@ function StatusBar(props) {
211
234
  return _el$3;
212
235
  })();
213
236
  }
214
- // src/ShellHost.tsx
237
+ // ../kit/src/shell-parts.tsx
238
+ import { memo as _$memo } from "@opentui/solid";
239
+ import { createComponent as _$createComponent2 } from "@opentui/solid";
240
+ import { setProp as _$setProp2 } from "@opentui/solid";
241
+ import { effect as _$effect2 } from "@opentui/solid";
242
+ import { insert as _$insert2 } from "@opentui/solid";
243
+ import { createTextNode as _$createTextNode2 } from "@opentui/solid";
244
+ import { insertNode as _$insertNode2 } from "@opentui/solid";
245
+ import { createElement as _$createElement2 } from "@opentui/solid";
246
+ import { For as For2 } from "solid-js";
247
+ import { createTextAttributes } from "@opentui/core";
215
248
  var MAX_VISIBLE_ITEMS = 120;
216
- var THEME_ORDER = ["catppuccin-mocha", "default"];
217
- var COMMANDS = [{
218
- name: "/help",
219
- desc: "show available commands"
220
- }, {
221
- name: "/clear",
222
- desc: "clear the transcript"
223
- }, {
224
- name: "/usage",
225
- desc: "show token usage summary"
226
- }, {
227
- name: "/theme",
228
- desc: "cycle theme"
229
- }, {
230
- name: "/model",
231
- desc: "show or switch model (/model provider/id)"
232
- }, {
233
- name: "/quit",
234
- desc: "exit the shell"
235
- }];
236
249
  var footerHints = [{
237
250
  key: "enter",
238
251
  label: "send"
@@ -283,57 +296,52 @@ function renderAssistant(text, theme) {
283
296
  }
284
297
  return out;
285
298
  }
286
- function ShellHost(props) {
287
- const t = props.deps.t;
288
- const store = props.deps.store;
289
- const [input, setInput] = createSignal("");
290
- const [cursor, setCursor] = createSignal(0);
291
- const [history, setHistory] = createSignal([]);
292
- const [historyIdx, setHistoryIdx] = createSignal(0);
293
- const [items, setItems] = createSignal([]);
294
- const [busy, setBusy] = createSignal(false);
295
- const [spin, setSpin] = createSignal(0);
296
- const [approval, setApproval] = createSignal(null);
297
- const [usage, setUsage] = createSignal({
298
- prompt: 0,
299
- completion: 0,
300
- turns: 0
301
- });
302
- const [label, setLabel] = createSignal(props.deps.session.label);
303
- const [snapshot, setSnapshot] = createSignal(store.snapshot);
304
- const initialTheme = process.env.DSH_OPENTUI_THEME ?? props.deps.themeName ?? "catppuccin-mocha";
305
- const [themeName, setThemeName] = createSignal(themes[initialTheme] ? initialTheme : "catppuccin-mocha");
306
- const theme = () => getTheme(themeName());
307
- const [menuOpen, setMenuOpen] = createSignal(true);
308
- const [menuSel, setMenuSel] = createSignal(0);
309
- let approveResolve = null;
310
- onMount(() => {
311
- onCleanup(store.subscribe(() => setSnapshot(store.snapshot)));
312
- const t2 = setInterval(() => setSpin((s) => (s + 1) % 4), 150);
313
- onCleanup(() => clearInterval(t2));
314
- });
315
- const spinner = () => ["⠋", "⠙", "⠹", "⠸"][spin()];
316
- const filteredCommands = createMemo(() => {
317
- const m = /^\/(\S*)/.exec(input());
318
- if (!m)
319
- return [];
320
- return COMMANDS.filter((c) => c.name.slice(1).startsWith(m[1]));
321
- });
322
- const clampedSel = createMemo(() => {
323
- const n = filteredCommands().length;
324
- return n === 0 ? 0 : Math.min(menuSel(), n - 1);
325
- });
326
- const menuVisible = createMemo(() => !busy() && menuOpen() && filteredCommands().length > 0);
327
- const rendererCtx = useRenderer();
328
- let mdStyle;
329
- try {
330
- mdStyle = SyntaxStyle.create(rendererCtx);
331
- } catch {
332
- mdStyle = undefined;
299
+ function itemsToLines(items, theme, t, spinnerFrame, _mdStyle) {
300
+ const out = [];
301
+ for (const it of items) {
302
+ if (it.kind === "user") {
303
+ out.push({
304
+ text: `❯ ${it.text}`,
305
+ fg: theme.tokens.userMark ?? theme.tokens.accent
306
+ });
307
+ } else if (it.kind === "assistant") {
308
+ out.push(...renderAssistant(it.text, theme));
309
+ if (it.final)
310
+ out.push({
311
+ text: ""
312
+ });
313
+ } else if (it.kind === "thinking") {
314
+ out.push({
315
+ text: `${spinnerFrame} ${t("agent.thinking")} (${it.chars}) ${it.tail.slice(-120)}`,
316
+ fg: theme.tokens.dim
317
+ });
318
+ } else if (it.kind === "tool") {
319
+ out.push({
320
+ text: ` ⚒ ${it.name} ${it.args.slice(0, 90)}`,
321
+ fg: theme.tokens.toolOk ?? theme.tokens.warn
322
+ });
323
+ out.push({
324
+ text: ` ⎿ ${it.ok ? t("agent.tool.ok") : t("agent.tool.fail")}: ${it.brief.slice(0, 110)}`,
325
+ fg: it.ok ? theme.tokens.dim : theme.tokens.toolFail ?? theme.tokens.danger
326
+ });
327
+ } else if (it.kind === "error") {
328
+ out.push({
329
+ text: `✗ ${t("agent.error")}: ${it.text}`,
330
+ fg: theme.tokens.danger
331
+ });
332
+ } else {
333
+ out.push({
334
+ text: `· ${it.text}`,
335
+ fg: theme.tokens.dim
336
+ });
337
+ }
333
338
  }
334
- const visibleItems = createMemo(() => items().slice(-MAX_VISIBLE_ITEMS));
339
+ return out;
340
+ }
341
+ function Transcript(props) {
342
+ const visibleItems = () => props.items.slice(-(props.maxItems ?? MAX_VISIBLE_ITEMS));
335
343
  const itemNode = (it) => {
336
- const th = theme();
344
+ const th = props.theme;
337
345
  if (it.kind === "user") {
338
346
  return (() => {
339
347
  var _el$ = _$createElement2("text"), _el$2 = _$createTextNode2(`❯ `);
@@ -355,9 +363,16 @@ function ShellHost(props) {
355
363
  flexDirection: "column"
356
364
  });
357
365
  _$setProp2(_el$4, "streaming", false);
358
- _$setProp2(_el$4, "syntaxStyle", mdStyle);
359
366
  _$insertNode2(_el$5, _$createTextNode2(` `));
360
- _$effect2((_$p) => _$setProp2(_el$4, "content", it.text, _$p));
367
+ _$effect2((_p$) => {
368
+ var _v$ = it.text, _v$2 = props.mdStyle;
369
+ _v$ !== _p$.e && (_p$.e = _$setProp2(_el$4, "content", _v$, _p$.e));
370
+ _v$2 !== _p$.t && (_p$.t = _$setProp2(_el$4, "syntaxStyle", _v$2, _p$.t));
371
+ return _p$;
372
+ }, {
373
+ e: undefined,
374
+ t: undefined
375
+ });
361
376
  return _el$3;
362
377
  })();
363
378
  }
@@ -385,7 +400,7 @@ function ShellHost(props) {
385
400
  if (it.kind === "thinking") {
386
401
  return (() => {
387
402
  var _el$9 = _$createElement2("text");
388
- _$insert2(_el$9, () => `${spinner()} ${t("agent.thinking")} (${it.chars}) ${it.tail.slice(-120)}`);
403
+ _$insert2(_el$9, () => `${props.spinnerFrame} ${props.t("agent.thinking")} (${it.chars}) ${it.tail.slice(-120)}`);
389
404
  _$effect2((_$p) => _$setProp2(_el$9, "style", {
390
405
  fg: th.tokens.dim
391
406
  }, _$p));
@@ -401,46 +416,674 @@ function ShellHost(props) {
401
416
  flexDirection: "column"
402
417
  });
403
418
  _$insert2(_el$1, () => ` ⚒ ${it.name} ${it.args.slice(0, 90)}`);
404
- _$insert2(_el$10, () => ` ⎿ ${it.ok ? t("agent.tool.ok") : t("agent.tool.fail")}: ${it.brief.slice(0, 110)}`);
419
+ _$insert2(_el$10, () => ` ⎿ ${it.ok ? props.t("agent.tool.ok") : props.t("agent.tool.fail")}: ${it.brief.slice(0, 110)}`);
405
420
  _$effect2((_p$) => {
406
- var _v$ = {
421
+ var _v$3 = {
407
422
  fg: th.tokens.toolOk ?? th.tokens.warn
408
- }, _v$2 = {
423
+ }, _v$4 = {
409
424
  fg: it.ok ? th.tokens.dim : th.tokens.toolFail ?? th.tokens.danger
410
425
  };
411
- _v$ !== _p$.e && (_p$.e = _$setProp2(_el$1, "style", _v$, _p$.e));
412
- _v$2 !== _p$.t && (_p$.t = _$setProp2(_el$10, "style", _v$2, _p$.t));
426
+ _v$3 !== _p$.e && (_p$.e = _$setProp2(_el$1, "style", _v$3, _p$.e));
427
+ _v$4 !== _p$.t && (_p$.t = _$setProp2(_el$10, "style", _v$4, _p$.t));
413
428
  return _p$;
414
429
  }, {
415
430
  e: undefined,
416
431
  t: undefined
417
432
  });
418
- return _el$0;
419
- })();
420
- }
421
- if (it.kind === "error") {
422
- return (() => {
423
- var _el$11 = _$createElement2("text"), _el$12 = _$createTextNode2(`✗ `), _el$13 = _$createTextNode2(`: `);
424
- _$insertNode2(_el$11, _el$12);
425
- _$insertNode2(_el$11, _el$13);
426
- _$insert2(_el$11, () => t("agent.error"), _el$13);
427
- _$insert2(_el$11, () => it.text, null);
428
- _$effect2((_$p) => _$setProp2(_el$11, "style", {
429
- fg: th.tokens.danger
430
- }, _$p));
431
- return _el$11;
432
- })();
433
+ return _el$0;
434
+ })();
435
+ }
436
+ if (it.kind === "error") {
437
+ return (() => {
438
+ var _el$11 = _$createElement2("text"), _el$12 = _$createTextNode2(`✗ `), _el$13 = _$createTextNode2(`: `);
439
+ _$insertNode2(_el$11, _el$12);
440
+ _$insertNode2(_el$11, _el$13);
441
+ _$insert2(_el$11, () => props.t("agent.error"), _el$13);
442
+ _$insert2(_el$11, () => it.text, null);
443
+ _$effect2((_$p) => _$setProp2(_el$11, "style", {
444
+ fg: th.tokens.danger
445
+ }, _$p));
446
+ return _el$11;
447
+ })();
448
+ }
449
+ return (() => {
450
+ var _el$14 = _$createElement2("text"), _el$15 = _$createTextNode2(`· `);
451
+ _$insertNode2(_el$14, _el$15);
452
+ _$insert2(_el$14, () => it.text, null);
453
+ _$effect2((_$p) => _$setProp2(_el$14, "style", {
454
+ fg: th.tokens.dim
455
+ }, _$p));
456
+ return _el$14;
457
+ })();
458
+ };
459
+ return (() => {
460
+ var _el$16 = _$createElement2("box");
461
+ _$setProp2(_el$16, "style", {
462
+ flexDirection: "column",
463
+ flexGrow: 1,
464
+ padding: 1
465
+ });
466
+ _$insert2(_el$16, _$createComponent2(For2, {
467
+ get each() {
468
+ return visibleItems();
469
+ },
470
+ get fallback() {
471
+ return (() => {
472
+ var _el$17 = _$createElement2("text");
473
+ _$insert2(_el$17, () => props.t("shell.transcript.empty"));
474
+ _$effect2((_$p) => _$setProp2(_el$17, "style", {
475
+ fg: props.theme.tokens.dim
476
+ }, _$p));
477
+ return _el$17;
478
+ })();
479
+ },
480
+ children: (it) => itemNode(it)
481
+ }));
482
+ return _el$16;
483
+ })();
484
+ }
485
+ function TranscriptWindow(props) {
486
+ const offset = () => props.offset ?? 0;
487
+ if (offset() === 0) {
488
+ return _$createComponent2(Transcript, {
489
+ get items() {
490
+ return props.items;
491
+ },
492
+ get theme() {
493
+ return props.theme;
494
+ },
495
+ get t() {
496
+ return props.t;
497
+ },
498
+ get spinnerFrame() {
499
+ return props.spinnerFrame;
500
+ },
501
+ get maxItems() {
502
+ return props.maxItems;
503
+ },
504
+ get mdStyle() {
505
+ return props.mdStyle;
506
+ }
507
+ });
508
+ }
509
+ const windowLines = () => {
510
+ const visible = props.items.slice(-(props.maxItems ?? MAX_VISIBLE_ITEMS));
511
+ const all = itemsToLines(visible, props.theme, props.t, props.spinnerFrame, props.mdStyle);
512
+ const rows = props.viewportRows ?? 30;
513
+ const start = Math.max(0, all.length - rows - offset());
514
+ const end = Math.max(1, all.length - offset());
515
+ return all.slice(start, end);
516
+ };
517
+ return (() => {
518
+ var _el$18 = _$createElement2("box"), _el$19 = _$createElement2("text");
519
+ _$insertNode2(_el$18, _el$19);
520
+ _$setProp2(_el$18, "style", {
521
+ flexDirection: "column",
522
+ flexGrow: 1,
523
+ padding: 1
524
+ });
525
+ _$insert2(_el$18, _$createComponent2(For2, {
526
+ get each() {
527
+ return windowLines();
528
+ },
529
+ children: (l) => (() => {
530
+ var _el$20 = _$createElement2("text");
531
+ _$insert2(_el$20, () => l.text || " ");
532
+ _$effect2((_$p) => _$setProp2(_el$20, "style", l.fg ? {
533
+ fg: l.fg
534
+ } : {}, _$p));
535
+ return _el$20;
536
+ })()
537
+ }), _el$19);
538
+ _$insert2(_el$19, () => `↑ scrolled ${offset()} rows (PgDn = bottom)`);
539
+ _$effect2((_$p) => _$setProp2(_el$19, "style", {
540
+ fg: props.theme.tokens.dim
541
+ }, _$p));
542
+ return _el$18;
543
+ })();
544
+ }
545
+ function InputLine(props) {
546
+ const inputChunks = () => {
547
+ const s = props.value;
548
+ const c = Math.min(props.cursor, s.length);
549
+ return {
550
+ before: s.slice(0, c),
551
+ at: c < s.length ? s.charAt(c) : " ",
552
+ after: c < s.length ? s.slice(c + 1) : ""
553
+ };
554
+ };
555
+ return (() => {
556
+ var _el$21 = _$createElement2("box"), _el$22 = _$createElement2("text");
557
+ _$insertNode2(_el$21, _el$22);
558
+ _$insert2(_el$22, (() => {
559
+ var _c$ = _$memo(() => !!props.busy);
560
+ return () => _c$() ? `${props.spinnerFrame} ` : "❯ ";
561
+ })());
562
+ _$insert2(_el$21, (() => {
563
+ var _c$2 = _$memo(() => !!props.busy);
564
+ return () => _c$2() ? (() => {
565
+ var _el$23 = _$createElement2("text");
566
+ _$insert2(_el$23, () => props.busyLabel);
567
+ _$effect2((_$p) => _$setProp2(_el$23, "style", {
568
+ fg: props.theme.tokens.dim
569
+ }, _$p));
570
+ return _el$23;
571
+ })() : _$memo(() => props.value === "")() ? [(() => {
572
+ var _el$24 = _$createElement2("text");
573
+ _$insertNode2(_el$24, _$createTextNode2(` `));
574
+ _$effect2((_$p) => _$setProp2(_el$24, "style", {
575
+ fg: props.theme.tokens.accent,
576
+ attributes: createTextAttributes({
577
+ inverse: true
578
+ })
579
+ }, _$p));
580
+ return _el$24;
581
+ })(), (() => {
582
+ var _el$26 = _$createElement2("text");
583
+ _$insert2(_el$26, () => props.placeholder);
584
+ _$effect2((_$p) => _$setProp2(_el$26, "style", {
585
+ fg: props.theme.tokens.dim
586
+ }, _$p));
587
+ return _el$26;
588
+ })()] : [(() => {
589
+ var _el$27 = _$createElement2("text");
590
+ _$insert2(_el$27, () => inputChunks().before);
591
+ _$effect2((_$p) => _$setProp2(_el$27, "style", {
592
+ fg: props.theme.tokens.text
593
+ }, _$p));
594
+ return _el$27;
595
+ })(), (() => {
596
+ var _el$28 = _$createElement2("text");
597
+ _$insert2(_el$28, () => inputChunks().at);
598
+ _$effect2((_$p) => _$setProp2(_el$28, "style", {
599
+ fg: props.theme.tokens.text,
600
+ attributes: createTextAttributes({
601
+ inverse: true
602
+ })
603
+ }, _$p));
604
+ return _el$28;
605
+ })(), (() => {
606
+ var _el$29 = _$createElement2("text");
607
+ _$insert2(_el$29, () => inputChunks().after);
608
+ _$effect2((_$p) => _$setProp2(_el$29, "style", {
609
+ fg: props.theme.tokens.text
610
+ }, _$p));
611
+ return _el$29;
612
+ })()];
613
+ })(), null);
614
+ _$effect2((_p$) => {
615
+ var _v$5 = {
616
+ border: true,
617
+ borderColor: props.theme.tokens.border,
618
+ flexDirection: "row"
619
+ }, _v$6 = {
620
+ fg: props.theme.tokens.accent
621
+ };
622
+ _v$5 !== _p$.e && (_p$.e = _$setProp2(_el$21, "style", _v$5, _p$.e));
623
+ _v$6 !== _p$.t && (_p$.t = _$setProp2(_el$22, "style", _v$6, _p$.t));
624
+ return _p$;
625
+ }, {
626
+ e: undefined,
627
+ t: undefined
628
+ });
629
+ return _el$21;
630
+ })();
631
+ }
632
+ function FooterHints(props) {
633
+ return (() => {
634
+ var _el$30 = _$createElement2("box");
635
+ _$setProp2(_el$30, "style", {
636
+ flexDirection: "row",
637
+ paddingLeft: 2,
638
+ paddingRight: 2
639
+ });
640
+ _$insert2(_el$30, _$createComponent2(For2, {
641
+ each: footerHints,
642
+ children: (h, i) => (() => {
643
+ var _el$31 = _$createElement2("text"), _el$32 = _$createTextNode2(` `);
644
+ _$insertNode2(_el$31, _el$32);
645
+ _$insert2(_el$31, () => i() > 0 ? " · " : "", _el$32);
646
+ _$insert2(_el$31, () => h.key, _el$32);
647
+ _$insert2(_el$31, () => h.label, null);
648
+ _$effect2((_$p) => _$setProp2(_el$31, "style", {
649
+ fg: props.theme.tokens.dim
650
+ }, _$p));
651
+ return _el$31;
652
+ })()
653
+ }));
654
+ return _el$30;
655
+ })();
656
+ }
657
+ // ../kit/src/overlays.tsx
658
+ import { createTextNode as _$createTextNode3 } from "@opentui/solid";
659
+ import { setProp as _$setProp3 } from "@opentui/solid";
660
+ import { effect as _$effect3 } from "@opentui/solid";
661
+ import { insertNode as _$insertNode3 } from "@opentui/solid";
662
+ import { memo as _$memo2 } from "@opentui/solid";
663
+ import { createComponent as _$createComponent3 } from "@opentui/solid";
664
+ import { insert as _$insert3 } from "@opentui/solid";
665
+ import { createElement as _$createElement3 } from "@opentui/solid";
666
+ import { For as For3 } from "solid-js";
667
+ function Picker(props) {
668
+ const maxRows = () => props.maxRows ?? 12;
669
+ const visible = () => props.items.slice(0, maxRows());
670
+ const hiddenCount = () => props.items.length - visible().length;
671
+ const rowStyle = (sel) => {
672
+ if (!sel)
673
+ return {
674
+ fg: props.theme.tokens.dim
675
+ };
676
+ return {
677
+ fg: props.theme.tokens.text,
678
+ ...props.theme.tokens.selection ? {
679
+ bg: props.theme.tokens.selection
680
+ } : {}
681
+ };
682
+ };
683
+ const needsHeader = (idx) => {
684
+ const it = visible()[idx];
685
+ if (!it || it.group === undefined)
686
+ return false;
687
+ const prev = idx > 0 ? visible()[idx - 1] : undefined;
688
+ return prev?.group !== it.group;
689
+ };
690
+ return (() => {
691
+ var _el$ = _$createElement3("box"), _el$2 = _$createElement3("text");
692
+ _$insertNode3(_el$, _el$2);
693
+ _$insert3(_el$2, () => props.title);
694
+ _$insert3(_el$, _$createComponent3(For3, {
695
+ get each() {
696
+ return visible();
697
+ },
698
+ children: (it, i) => [_$memo2(() => _$memo2(() => !!needsHeader(i()))() ? (() => {
699
+ var _el$4 = _$createElement3("text");
700
+ _$insert3(_el$4, () => it.group);
701
+ _$effect3((_$p) => _$setProp3(_el$4, "style", {
702
+ fg: props.theme.tokens.dim
703
+ }, _$p));
704
+ return _el$4;
705
+ })() : null), (() => {
706
+ var _el$3 = _$createElement3("text");
707
+ _$insert3(_el$3, () => i() === props.selected ? "› " : " ", null);
708
+ _$insert3(_el$3, () => it.label, null);
709
+ _$insert3(_el$3, (() => {
710
+ var _c$2 = _$memo2(() => !!it.detail);
711
+ return () => _c$2() ? (() => {
712
+ var _el$5 = _$createElement3("span");
713
+ _$insert3(_el$5, () => ` ${it.detail}`);
714
+ _$effect3((_$p) => _$setProp3(_el$5, "style", {
715
+ fg: props.theme.tokens.dim
716
+ }, _$p));
717
+ return _el$5;
718
+ })() : null;
719
+ })(), null);
720
+ _$effect3((_$p) => _$setProp3(_el$3, "style", rowStyle(i() === props.selected), _$p));
721
+ return _el$3;
722
+ })()]
723
+ }), null);
724
+ _$insert3(_el$, (() => {
725
+ var _c$ = _$memo2(() => hiddenCount() > 0);
726
+ return () => _c$() ? (() => {
727
+ var _el$6 = _$createElement3("text");
728
+ _$insert3(_el$6, () => `… ${hiddenCount()} more`);
729
+ _$effect3((_$p) => _$setProp3(_el$6, "style", {
730
+ fg: props.theme.tokens.dim
731
+ }, _$p));
732
+ return _el$6;
733
+ })() : null;
734
+ })(), null);
735
+ _$effect3((_p$) => {
736
+ var _v$ = {
737
+ border: true,
738
+ borderColor: props.theme.tokens.border,
739
+ flexDirection: "column",
740
+ padding: 1
741
+ }, _v$2 = {
742
+ fg: props.theme.tokens.accent
743
+ };
744
+ _v$ !== _p$.e && (_p$.e = _$setProp3(_el$, "style", _v$, _p$.e));
745
+ _v$2 !== _p$.t && (_p$.t = _$setProp3(_el$2, "style", _v$2, _p$.t));
746
+ return _p$;
747
+ }, {
748
+ e: undefined,
749
+ t: undefined
750
+ });
751
+ return _el$;
752
+ })();
753
+ }
754
+ function ApprovalCard(props) {
755
+ const th = () => props.theme;
756
+ return (() => {
757
+ var _el$0 = _$createElement3("box"), _el$1 = _$createElement3("text"), _el$10 = _$createTextNode3(`⚠ `), _el$11 = _$createElement3("text"), _el$12 = _$createElement3("text");
758
+ _$insertNode3(_el$0, _el$1);
759
+ _$insertNode3(_el$0, _el$11);
760
+ _$insertNode3(_el$0, _el$12);
761
+ _$insertNode3(_el$1, _el$10);
762
+ _$insert3(_el$1, () => props.toolName, null);
763
+ _$insert3(_el$11, () => props.args.slice(0, 200));
764
+ _$insert3(_el$12, () => props.hint);
765
+ _$effect3((_p$) => {
766
+ var _v$5 = {
767
+ border: true,
768
+ borderColor: th().tokens.approvalBorder ?? th().tokens.warn,
769
+ flexDirection: "column",
770
+ padding: 1
771
+ }, _v$6 = {
772
+ fg: th().tokens.warn
773
+ }, _v$7 = {
774
+ fg: th().tokens.dim
775
+ };
776
+ _v$5 !== _p$.e && (_p$.e = _$setProp3(_el$0, "style", _v$5, _p$.e));
777
+ _v$6 !== _p$.t && (_p$.t = _$setProp3(_el$1, "style", _v$6, _p$.t));
778
+ _v$7 !== _p$.a && (_p$.a = _$setProp3(_el$12, "style", _v$7, _p$.a));
779
+ return _p$;
780
+ }, {
781
+ e: undefined,
782
+ t: undefined,
783
+ a: undefined
784
+ });
785
+ return _el$0;
786
+ })();
787
+ }
788
+ // ../kit/src/panels.tsx
789
+ import { createTextNode as _$createTextNode4 } from "@opentui/solid";
790
+ import { memo as _$memo3 } from "@opentui/solid";
791
+ import { createComponent as _$createComponent4 } from "@opentui/solid";
792
+ import { effect as _$effect4 } from "@opentui/solid";
793
+ import { insertNode as _$insertNode4 } from "@opentui/solid";
794
+ import { insert as _$insert4 } from "@opentui/solid";
795
+ import { setProp as _$setProp4 } from "@opentui/solid";
796
+ import { createElement as _$createElement4 } from "@opentui/solid";
797
+ import { For as For4 } from "solid-js";
798
+ var TOOL_MAX_ROWS = 14;
799
+ var TOOL_OUTPUT_TAIL = 6;
800
+ var THINK_TAIL = 10;
801
+ function dockHeader(theme, title, closeHint) {
802
+ return (() => {
803
+ var _el$ = _$createElement4("box"), _el$2 = _$createElement4("text"), _el$3 = _$createElement4("box"), _el$4 = _$createElement4("text");
804
+ _$insertNode4(_el$, _el$2);
805
+ _$insertNode4(_el$, _el$3);
806
+ _$insertNode4(_el$, _el$4);
807
+ _$setProp4(_el$, "style", {
808
+ flexDirection: "row"
809
+ });
810
+ _$insert4(_el$2, title);
811
+ _$setProp4(_el$3, "style", {
812
+ flexGrow: 1
813
+ });
814
+ _$insert4(_el$4, closeHint);
815
+ _$effect4((_p$) => {
816
+ var _v$ = {
817
+ fg: theme.tokens.accent
818
+ }, _v$2 = {
819
+ fg: theme.tokens.dim
820
+ };
821
+ _v$ !== _p$.e && (_p$.e = _$setProp4(_el$2, "style", _v$, _p$.e));
822
+ _v$2 !== _p$.t && (_p$.t = _$setProp4(_el$4, "style", _v$2, _p$.t));
823
+ return _p$;
824
+ }, {
825
+ e: undefined,
826
+ t: undefined
827
+ });
828
+ return _el$;
829
+ })();
830
+ }
831
+ function ToolPanel(props) {
832
+ const rows = () => {
833
+ const th = props.theme;
834
+ const out = [];
835
+ for (let i = 0;i < props.entries.length && out.length < TOOL_MAX_ROWS; i++) {
836
+ const e = props.entries[i];
837
+ if (!e)
838
+ continue;
839
+ const fg = e.ok ? th.tokens.toolOk ?? th.tokens.ok : th.tokens.toolFail ?? th.tokens.danger;
840
+ out.push({
841
+ text: `⚒ ${e.name} ${e.ok ? "ok" : "fail"}`,
842
+ fg
843
+ });
844
+ if (i === props.expandedIndex) {
845
+ for (const line of e.output.split(`
846
+ `).slice(-TOOL_OUTPUT_TAIL)) {
847
+ if (out.length >= TOOL_MAX_ROWS)
848
+ break;
849
+ out.push({
850
+ text: ` ${line}`,
851
+ fg: th.tokens.dim
852
+ });
853
+ }
854
+ }
855
+ }
856
+ return out;
857
+ };
858
+ return (() => {
859
+ var _el$5 = _$createElement4("box");
860
+ _$insert4(_el$5, () => dockHeader(props.theme, ` Tools (${props.entries.length})`, "ctrl+o close"), null);
861
+ _$insert4(_el$5, _$createComponent4(For4, {
862
+ get each() {
863
+ return rows();
864
+ },
865
+ children: (r) => (() => {
866
+ var _el$6 = _$createElement4("text");
867
+ _$insert4(_el$6, () => r.text);
868
+ _$effect4((_$p) => _$setProp4(_el$6, "style", {
869
+ fg: r.fg
870
+ }, _$p));
871
+ return _el$6;
872
+ })()
873
+ }), null);
874
+ _$effect4((_$p) => _$setProp4(_el$5, "style", {
875
+ border: true,
876
+ borderColor: props.theme.tokens.border,
877
+ flexDirection: "column",
878
+ padding: 1
879
+ }, _$p));
880
+ return _el$5;
881
+ })();
882
+ }
883
+ function ThinkPanel(props) {
884
+ const lines = () => props.text.split(`
885
+ `);
886
+ const tail = () => lines().slice(-THINK_TAIL);
887
+ const truncated = () => lines().length > tail().length;
888
+ return (() => {
889
+ var _el$7 = _$createElement4("box");
890
+ _$insert4(_el$7, () => dockHeader(props.theme, " Thinking ", "ctrl+t close"), null);
891
+ _$insert4(_el$7, (() => {
892
+ var _c$ = _$memo3(() => !!truncated());
893
+ return () => _c$() ? (() => {
894
+ var _el$8 = _$createElement4("text");
895
+ _$insertNode4(_el$8, _$createTextNode4(`…`));
896
+ _$effect4((_$p) => _$setProp4(_el$8, "style", {
897
+ fg: props.theme.tokens.dim
898
+ }, _$p));
899
+ return _el$8;
900
+ })() : null;
901
+ })(), null);
902
+ _$insert4(_el$7, _$createComponent4(For4, {
903
+ get each() {
904
+ return tail();
905
+ },
906
+ children: (l) => (() => {
907
+ var _el$0 = _$createElement4("text");
908
+ _$insert4(_el$0, l);
909
+ _$effect4((_$p) => _$setProp4(_el$0, "style", {
910
+ fg: props.theme.tokens.dim
911
+ }, _$p));
912
+ return _el$0;
913
+ })()
914
+ }), null);
915
+ _$effect4((_$p) => _$setProp4(_el$7, "style", {
916
+ border: true,
917
+ borderColor: props.theme.tokens.border,
918
+ flexDirection: "column",
919
+ padding: 1
920
+ }, _$p));
921
+ return _el$7;
922
+ })();
923
+ }
924
+ // ../kit/src/table.tsx
925
+ import { effect as _$effect5 } from "@opentui/solid";
926
+ import { insertNode as _$insertNode5 } from "@opentui/solid";
927
+ import { createComponent as _$createComponent5 } from "@opentui/solid";
928
+ import { insert as _$insert5 } from "@opentui/solid";
929
+ import { setProp as _$setProp5 } from "@opentui/solid";
930
+ import { createElement as _$createElement5 } from "@opentui/solid";
931
+ import { For as For5 } from "solid-js";
932
+ // src/ShellHost.tsx
933
+ var MAX_VISIBLE_ITEMS2 = 120;
934
+ var THEME_ORDER = ["catppuccin-mocha", "default"];
935
+ var CRED_REFS = ["ZAI_CODING_CN_API_KEY", "DEEPSEEK_API_KEY", "MINIMAX_CN_API_KEY"];
936
+ var COMMANDS = [{
937
+ name: "/help",
938
+ desc: "show available commands"
939
+ }, {
940
+ name: "/clear",
941
+ desc: "clear the transcript"
942
+ }, {
943
+ name: "/usage",
944
+ desc: "show token usage summary"
945
+ }, {
946
+ name: "/new",
947
+ desc: "start a fresh session"
948
+ }, {
949
+ name: "/sessions",
950
+ desc: "list and resume stored sessions"
951
+ }, {
952
+ name: "/theme",
953
+ desc: "cycle theme"
954
+ }, {
955
+ name: "/model",
956
+ desc: "pick or switch model (/model provider/id)"
957
+ }, {
958
+ name: "/login",
959
+ desc: "set an api key (/login REF KEY)"
960
+ }, {
961
+ name: "/logout",
962
+ desc: "remove an api key (/logout REF)"
963
+ }, {
964
+ name: "/quit",
965
+ desc: "exit the shell"
966
+ }];
967
+ var errText = (e) => String(e instanceof Error ? e.message : e).slice(0, 300);
968
+ function ShellHost(props) {
969
+ const t = props.deps.t;
970
+ const store = props.deps.store;
971
+ const [input, setInput] = createSignal("");
972
+ const [cursor, setCursor] = createSignal(0);
973
+ const [history, setHistory] = createSignal([]);
974
+ const [historyIdx, setHistoryIdx] = createSignal(0);
975
+ const [items, setItems] = createSignal([]);
976
+ const [busy, setBusy] = createSignal(false);
977
+ const [spin, setSpin] = createSignal(0);
978
+ const [approval, setApproval] = createSignal(null);
979
+ const [usage, setUsage] = createSignal({
980
+ prompt: 0,
981
+ completion: 0,
982
+ turns: 0
983
+ });
984
+ const [label, setLabel] = createSignal(props.deps.session.label);
985
+ const [snapshot, setSnapshot] = createSignal(store.snapshot);
986
+ const [showThink, setShowThink] = createSignal(false);
987
+ const [showTool, setShowTool] = createSignal(false);
988
+ const [toolExpanded, setToolExpanded] = createSignal(-1);
989
+ const [picker, setPicker] = createSignal(null);
990
+ const [pickerSel, setPickerSel] = createSignal(0);
991
+ const [sessionItems, setSessionItems] = createSignal([]);
992
+ const [scrollOffset, setScrollOffset] = createSignal(0);
993
+ const [ask, setAsk] = createSignal(null);
994
+ let reasoningBuf = "";
995
+ const [lastReasoning, setLastReasoning] = createSignal("");
996
+ const initialTheme = process.env.DSH_OPENTUI_THEME ?? props.deps.themeName ?? "catppuccin-mocha";
997
+ const [themeName, setThemeName] = createSignal(themes[initialTheme] ? initialTheme : "catppuccin-mocha");
998
+ const theme = () => getTheme(themeName());
999
+ const [menuOpen, setMenuOpen] = createSignal(true);
1000
+ const [menuSel, setMenuSel] = createSignal(0);
1001
+ let approveResolve = null;
1002
+ onMount(() => {
1003
+ onCleanup(store.subscribe(() => setSnapshot(store.snapshot)));
1004
+ const t2 = setInterval(() => setSpin((s) => (s + 1) % 4), 150);
1005
+ onCleanup(() => clearInterval(t2));
1006
+ props.deps.session.registerAskProvider(async (questions) => {
1007
+ const answer = await new Promise((resolve) => {
1008
+ setAsk({
1009
+ questions,
1010
+ resolve
1011
+ });
1012
+ });
1013
+ if (answer === "declined")
1014
+ throw new Error("declined");
1015
+ return answer;
1016
+ });
1017
+ });
1018
+ const spinner = () => ["⠋", "⠙", "⠹", "⠸"][spin()];
1019
+ const filteredCommands = createMemo(() => {
1020
+ const m = /^\/(\S*)/.exec(input());
1021
+ if (!m)
1022
+ return [];
1023
+ return COMMANDS.filter((c) => c.name.slice(1).startsWith(m[1]));
1024
+ });
1025
+ const clampedSel = createMemo(() => {
1026
+ const n = filteredCommands().length;
1027
+ return n === 0 ? 0 : Math.min(menuSel(), n - 1);
1028
+ });
1029
+ const menuVisible = createMemo(() => !busy() && menuOpen() && filteredCommands().length > 0);
1030
+ const modelItems = createMemo(() => {
1031
+ const out = [];
1032
+ for (const p of props.deps.session.listProviders()) {
1033
+ for (const m of p.models) {
1034
+ const id = `${p.provider}/${m}`;
1035
+ out.push({
1036
+ id,
1037
+ group: p.provider,
1038
+ label: m,
1039
+ detail: label() === id ? "current" : undefined
1040
+ });
1041
+ }
433
1042
  }
434
- return (() => {
435
- var _el$14 = _$createElement2("text"), _el$15 = _$createTextNode2(`· `);
436
- _$insertNode2(_el$14, _el$15);
437
- _$insert2(_el$14, () => it.text, null);
438
- _$effect2((_$p) => _$setProp2(_el$14, "style", {
439
- fg: th.tokens.dim
440
- }, _$p));
441
- return _el$14;
442
- })();
443
- };
1043
+ return out;
1044
+ });
1045
+ const EFFORTS = ["keep", "low", "medium", "high", "xhigh", "max"];
1046
+ const pickerData = createMemo(() => {
1047
+ const p = picker();
1048
+ if (!p)
1049
+ return {
1050
+ title: "",
1051
+ items: []
1052
+ };
1053
+ if (p.kind === "model")
1054
+ return {
1055
+ title: t("picker.model.title"),
1056
+ items: modelItems()
1057
+ };
1058
+ if (p.kind === "sessions")
1059
+ return {
1060
+ title: t("picker.sessions.title"),
1061
+ items: sessionItems()
1062
+ };
1063
+ return {
1064
+ title: t("picker.effort.title", {
1065
+ model: p.model
1066
+ }),
1067
+ items: EFFORTS.map((e) => ({
1068
+ id: e,
1069
+ label: e
1070
+ }))
1071
+ };
1072
+ });
1073
+ const toolEntries = createMemo(() => items().filter((it) => it.kind === "tool").map((it) => ({
1074
+ name: it.name,
1075
+ args: it.args,
1076
+ ok: it.ok,
1077
+ output: it.brief
1078
+ })));
1079
+ const rendererCtx = useRenderer();
1080
+ let mdStyle;
1081
+ try {
1082
+ mdStyle = SyntaxStyle.create(rendererCtx);
1083
+ } catch {
1084
+ mdStyle = undefined;
1085
+ }
1086
+ const visibleItems = createMemo(() => items().slice(-MAX_VISIBLE_ITEMS2));
444
1087
  let lastBump = 0;
445
1088
  let streaming = {};
446
1089
  const bumpSoon = () => {
@@ -489,16 +1132,26 @@ function ShellHost(props) {
489
1132
  setInput(text);
490
1133
  setCursor(text.length);
491
1134
  };
492
- const inputChunks = () => {
493
- const s = input();
494
- const c = Math.min(cursor(), s.length);
495
- return {
496
- before: s.slice(0, c),
497
- at: c < s.length ? s.charAt(c) : " ",
498
- after: c < s.length ? s.slice(c + 1) : ""
499
- };
1135
+ const pushCredStatus = async () => {
1136
+ for (const ref of CRED_REFS) {
1137
+ try {
1138
+ const st = await props.deps.session.credentialStatus(ref);
1139
+ push({
1140
+ kind: "system",
1141
+ text: t("cmd.cred.status", {
1142
+ ref,
1143
+ status: st.configured ? t("cmd.cred.configured") : t("cmd.cred.missing")
1144
+ })
1145
+ });
1146
+ } catch (e) {
1147
+ push({
1148
+ kind: "error",
1149
+ text: `${ref}: ${errText(e)}`
1150
+ });
1151
+ }
1152
+ }
500
1153
  };
501
- function runCommand(text) {
1154
+ async function runCommand(text) {
502
1155
  const parts = text.slice(1).trim().split(/\s+/);
503
1156
  const cmd = parts[0];
504
1157
  const arg = parts.slice(1).join(" ");
@@ -521,6 +1174,32 @@ function ShellHost(props) {
521
1174
  kind: "system",
522
1175
  text: `${t("cmd.usage.summary")}: ${u.turns} turns · prompt ${u.prompt} · completion ${u.completion} tokens`
523
1176
  });
1177
+ } else if (cmd === "new") {
1178
+ props.deps.session.newSession();
1179
+ setItems([]);
1180
+ setScrollOffset(0);
1181
+ push({
1182
+ kind: "system",
1183
+ text: t("cmd.new.done")
1184
+ });
1185
+ } else if (cmd === "sessions") {
1186
+ const list = await props.deps.session.listSessions();
1187
+ if (!list.length) {
1188
+ push({
1189
+ kind: "system",
1190
+ text: t("cmd.sessions.empty")
1191
+ });
1192
+ } else {
1193
+ setSessionItems(list.map((x) => ({
1194
+ id: x.id,
1195
+ label: x.title || x.id.slice(0, 8),
1196
+ detail: x.updatedAt ? String(x.updatedAt).slice(0, 19) : undefined
1197
+ })));
1198
+ setPickerSel(0);
1199
+ setPicker({
1200
+ kind: "sessions"
1201
+ });
1202
+ }
524
1203
  } else if (cmd === "theme") {
525
1204
  const i = THEME_ORDER.indexOf(themeName());
526
1205
  const next = THEME_ORDER[(i + 1) % THEME_ORDER.length];
@@ -531,20 +1210,9 @@ function ShellHost(props) {
531
1210
  });
532
1211
  } else if (cmd === "model") {
533
1212
  if (!arg) {
534
- push({
535
- kind: "system",
536
- text: `model: ${props.deps.session.label}`
537
- });
538
- const catalog = props.deps.session.listProviders();
539
- for (const p of catalog) {
540
- push({
541
- kind: "system",
542
- text: ` ${p.provider}: ${p.models.slice(0, 8).join(", ")}${p.models.length > 8 ? ` …(+${p.models.length - 8})` : ""}`
543
- });
544
- }
545
- push({
546
- kind: "system",
547
- text: "switch: /model provider/model-id (applies to the next message)"
1213
+ setPickerSel(0);
1214
+ setPicker({
1215
+ kind: "model"
548
1216
  });
549
1217
  } else {
550
1218
  const [provider, model] = arg.split("/");
@@ -558,9 +1226,57 @@ function ShellHost(props) {
558
1226
  setLabel(props.deps.session.label);
559
1227
  push({
560
1228
  kind: "system",
561
- text: `model → ${provider}/${model} (next message)`
1229
+ text: `${t("cmd.model.set")} ${provider}/${model} ${t("cmd.model.next")}`
1230
+ });
1231
+ }
1232
+ }
1233
+ } else if (cmd === "login") {
1234
+ if (parts.length === 3) {
1235
+ try {
1236
+ await props.deps.session.login(parts[1], parts[2]);
1237
+ push({
1238
+ kind: "system",
1239
+ text: t("cmd.login.saved", {
1240
+ ref: parts[1]
1241
+ })
1242
+ });
1243
+ } catch (e) {
1244
+ push({
1245
+ kind: "error",
1246
+ text: errText(e)
1247
+ });
1248
+ }
1249
+ } else if (parts.length === 1) {
1250
+ await pushCredStatus();
1251
+ } else {
1252
+ push({
1253
+ kind: "error",
1254
+ text: t("cmd.login.usage")
1255
+ });
1256
+ }
1257
+ } else if (cmd === "logout") {
1258
+ if (parts.length === 2) {
1259
+ try {
1260
+ await props.deps.session.logout(parts[1]);
1261
+ push({
1262
+ kind: "system",
1263
+ text: t("cmd.logout.done", {
1264
+ ref: parts[1]
1265
+ })
1266
+ });
1267
+ } catch (e) {
1268
+ push({
1269
+ kind: "error",
1270
+ text: errText(e)
562
1271
  });
563
1272
  }
1273
+ } else if (parts.length === 1) {
1274
+ await pushCredStatus();
1275
+ } else {
1276
+ push({
1277
+ kind: "error",
1278
+ text: t("cmd.logout.usage")
1279
+ });
564
1280
  }
565
1281
  } else {
566
1282
  push({
@@ -572,6 +1288,7 @@ function ShellHost(props) {
572
1288
  async function send(text) {
573
1289
  if (busy())
574
1290
  return;
1291
+ setScrollOffset(0);
575
1292
  push({
576
1293
  kind: "user",
577
1294
  text
@@ -580,6 +1297,8 @@ function ShellHost(props) {
580
1297
  let thinkingItem = null;
581
1298
  let replyItem = null;
582
1299
  streaming = {};
1300
+ reasoningBuf = "";
1301
+ setLastReasoning("");
583
1302
  try {
584
1303
  await props.deps.session.turn(text, {
585
1304
  onThinkingDelta: (s) => {
@@ -595,6 +1314,8 @@ function ShellHost(props) {
595
1314
  thinkingItem.tail = (thinkingItem.tail + s).split(`
596
1315
  `).slice(-2).join(" ");
597
1316
  thinkingItem.chars += s.length;
1317
+ reasoningBuf += s;
1318
+ setLastReasoning(reasoningBuf);
598
1319
  bumpSoon();
599
1320
  },
600
1321
  onContentDelta: (s) => {
@@ -656,7 +1377,7 @@ function ShellHost(props) {
656
1377
  } catch (e) {
657
1378
  push({
658
1379
  kind: "error",
659
- text: String(e instanceof Error ? e.message : e).slice(0, 300)
1380
+ text: errText(e)
660
1381
  });
661
1382
  } finally {
662
1383
  setApproval(null);
@@ -674,6 +1395,26 @@ function ShellHost(props) {
674
1395
  }
675
1396
  if (key.sequence === "\x03" || (key.name === "c" || key.name === "C") && key.ctrl)
676
1397
  process.exit(0);
1398
+ const pendingAsk = ask();
1399
+ if (pendingAsk) {
1400
+ const q0 = pendingAsk.questions[0];
1401
+ const opts = q0?.options ?? [];
1402
+ if (key.name === "up" || key.name === "down") {
1403
+ if (opts.length > 0)
1404
+ setPickerSel((v) => key.name === "up" ? (v - 1 + opts.length) % opts.length : (v + 1) % opts.length);
1405
+ } else if (key.name === "return") {
1406
+ const sel = opts[Math.min(pickerSel(), Math.max(0, opts.length - 1))];
1407
+ setAsk(null);
1408
+ pendingAsk.resolve(sel ? [{
1409
+ questionId: q0.id,
1410
+ selected: sel
1411
+ }] : "declined");
1412
+ } else if (key.name === "escape") {
1413
+ setAsk(null);
1414
+ pendingAsk.resolve("declined");
1415
+ }
1416
+ return;
1417
+ }
677
1418
  const ap = approval();
678
1419
  if (ap) {
679
1420
  if (key.sequence === "y" || key.name === "return") {
@@ -687,6 +1428,67 @@ function ShellHost(props) {
687
1428
  }
688
1429
  return;
689
1430
  }
1431
+ const pk = picker();
1432
+ if (pk) {
1433
+ const n = pickerData().items.length;
1434
+ if (key.name === "up" || key.name === "down") {
1435
+ if (n > 0)
1436
+ setPickerSel((s) => key.name === "up" ? (s - 1 + n) % n : (s + 1) % n);
1437
+ } else if (key.name === "return") {
1438
+ const item = n > 0 ? pickerData().items[Math.min(pickerSel(), n - 1)] : undefined;
1439
+ setPicker(null);
1440
+ setPickerSel(0);
1441
+ if (item && pk.kind === "model") {
1442
+ const [provider, model] = item.id.split("/");
1443
+ if (provider && model)
1444
+ setPicker({
1445
+ kind: "effort",
1446
+ provider,
1447
+ model
1448
+ });
1449
+ } else if (item && pk.kind === "effort") {
1450
+ const effort = item.id === "keep" ? undefined : item.id;
1451
+ props.deps.session.switchModel(pk.provider, pk.model, effort);
1452
+ setLabel(props.deps.session.label);
1453
+ push({
1454
+ kind: "system",
1455
+ text: `${t("cmd.model.set")} ${pk.provider}/${pk.model}${effort ? ` (${effort})` : ""} ${t("cmd.model.next")}`
1456
+ });
1457
+ } else if (item && pk.kind === "sessions") {
1458
+ props.deps.session.resumeSession(item.id);
1459
+ push({
1460
+ kind: "system",
1461
+ text: `${t("cmd.sessions.resumed")}: ${item.label}`
1462
+ });
1463
+ }
1464
+ } else if (key.name === "escape") {
1465
+ setPicker(null);
1466
+ setPickerSel(0);
1467
+ }
1468
+ return;
1469
+ }
1470
+ if (key.ctrl && key.name === "t") {
1471
+ setShowThink((v) => !v);
1472
+ return;
1473
+ }
1474
+ if (key.ctrl && key.name === "o") {
1475
+ setShowTool((v) => !v);
1476
+ return;
1477
+ }
1478
+ if (key.ctrl && key.name === "p") {
1479
+ const n = toolEntries().length;
1480
+ if (n > 0)
1481
+ setToolExpanded((v) => v + 1 >= n ? -1 : v + 1);
1482
+ return;
1483
+ }
1484
+ if (key.name === "pageup") {
1485
+ setScrollOffset((o) => o + 10);
1486
+ return;
1487
+ }
1488
+ if (key.name === "pagedown") {
1489
+ setScrollOffset((o) => Math.max(0, o - 10));
1490
+ return;
1491
+ }
690
1492
  if (busy())
691
1493
  return;
692
1494
  if (menuVisible() && (key.name === "up" || key.name === "down")) {
@@ -800,181 +1602,177 @@ function ShellHost(props) {
800
1602
  const widgets = () => snapshot().filter((d) => d.kind === "widget");
801
1603
  const th = () => theme();
802
1604
  return (() => {
803
- var _el$16 = _$createElement2("box"), _el$17 = _$createElement2("box"), _el$18 = _$createElement2("box"), _el$19 = _$createElement2("text"), _el$20 = _$createElement2("box");
804
- _$insertNode2(_el$16, _el$17);
805
- _$insertNode2(_el$16, _el$18);
806
- _$insertNode2(_el$16, _el$20);
807
- _$setProp2(_el$16, "style", {
1605
+ var _el$ = _$createElement6("box"), _el$2 = _$createElement6("box");
1606
+ _$insertNode6(_el$, _el$2);
1607
+ _$setProp6(_el$, "style", {
808
1608
  flexDirection: "column",
809
1609
  flexGrow: 1
810
1610
  });
811
- _$setProp2(_el$17, "style", {
1611
+ _$setProp6(_el$2, "style", {
812
1612
  flexDirection: "column",
813
1613
  flexGrow: 1,
814
1614
  padding: 1
815
1615
  });
816
- _$insert2(_el$17, _$createComponent2(For2, {
817
- get each() {
1616
+ _$insert6(_el$2, _$createComponent6(TranscriptWindow, {
1617
+ get items() {
818
1618
  return visibleItems();
819
1619
  },
820
- get fallback() {
821
- return (() => {
822
- var _el$21 = _$createElement2("text");
823
- _$insert2(_el$21, () => t("shell.transcript.empty"));
824
- _$effect2((_$p) => _$setProp2(_el$21, "style", {
825
- fg: th().tokens.dim
826
- }, _$p));
827
- return _el$21;
828
- })();
1620
+ get theme() {
1621
+ return theme();
829
1622
  },
830
- children: (it) => itemNode(it)
1623
+ t,
1624
+ get spinnerFrame() {
1625
+ return spinner();
1626
+ },
1627
+ mdStyle,
1628
+ get offset() {
1629
+ return scrollOffset();
1630
+ },
1631
+ viewportRows: 24
831
1632
  }));
832
- _$insert2(_el$16, _$createComponent2(For2, {
1633
+ _$insert6(_el$, (() => {
1634
+ var _c$ = _$memo4(() => !!showTool());
1635
+ return () => _c$() ? _$createComponent6(ToolPanel, {
1636
+ get entries() {
1637
+ return toolEntries();
1638
+ },
1639
+ get theme() {
1640
+ return th();
1641
+ },
1642
+ get expandedIndex() {
1643
+ return toolExpanded();
1644
+ }
1645
+ }) : null;
1646
+ })(), null);
1647
+ _$insert6(_el$, (() => {
1648
+ var _c$2 = _$memo4(() => !!showThink());
1649
+ return () => _c$2() ? _$createComponent6(ThinkPanel, {
1650
+ get text() {
1651
+ return lastReasoning();
1652
+ },
1653
+ get theme() {
1654
+ return th();
1655
+ }
1656
+ }) : null;
1657
+ })(), null);
1658
+ _$insert6(_el$, _$createComponent6(For6, {
833
1659
  get each() {
834
- return _$memo(() => !!approval())() ? [approval()] : [];
1660
+ return _$memo4(() => !!approval())() ? [approval()] : [];
835
1661
  },
836
- children: (ap) => (() => {
837
- var _el$22 = _$createElement2("box"), _el$23 = _$createElement2("text"), _el$24 = _$createTextNode2(`⚠ `), _el$25 = _$createTextNode2(`: `), _el$26 = _$createElement2("text"), _el$27 = _$createElement2("text");
838
- _$insertNode2(_el$22, _el$23);
839
- _$insertNode2(_el$22, _el$26);
840
- _$insertNode2(_el$22, _el$27);
841
- _$insertNode2(_el$23, _el$24);
842
- _$insertNode2(_el$23, _el$25);
843
- _$insert2(_el$23, () => t("agent.approve.title"), _el$25);
844
- _$insert2(_el$23, () => ap.name, null);
845
- _$insert2(_el$26, () => ap.args.slice(0, 200));
846
- _$insert2(_el$27, () => t("agent.approve.hint"));
847
- _$effect2((_p$) => {
848
- var _v$5 = {
849
- border: true,
850
- borderColor: th().tokens.approvalBorder ?? th().tokens.warn,
851
- flexDirection: "column",
852
- padding: 1
853
- }, _v$6 = {
854
- fg: th().tokens.warn
855
- }, _v$7 = {
856
- fg: th().tokens.dim
857
- };
858
- _v$5 !== _p$.e && (_p$.e = _$setProp2(_el$22, "style", _v$5, _p$.e));
859
- _v$6 !== _p$.t && (_p$.t = _$setProp2(_el$23, "style", _v$6, _p$.t));
860
- _v$7 !== _p$.a && (_p$.a = _$setProp2(_el$27, "style", _v$7, _p$.a));
861
- return _p$;
862
- }, {
863
- e: undefined,
864
- t: undefined,
865
- a: undefined
866
- });
867
- return _el$22;
868
- })()
869
- }), _el$18);
870
- _$insert2(_el$16, _$createComponent2(For2, {
1662
+ children: (ap) => _$createComponent6(ApprovalCard, {
1663
+ get toolName() {
1664
+ return ap.name;
1665
+ },
1666
+ get args() {
1667
+ return ap.args;
1668
+ },
1669
+ get hint() {
1670
+ return t("agent.approve.hint");
1671
+ },
1672
+ get theme() {
1673
+ return th();
1674
+ }
1675
+ })
1676
+ }), null);
1677
+ _$insert6(_el$, (() => {
1678
+ var _c$3 = _$memo4(() => !!ask());
1679
+ return () => _c$3() ? _$createComponent6(Picker, {
1680
+ get title() {
1681
+ return `${t("ask.title")}: ${ask().questions[0]?.prompt ?? ""}`.slice(0, 70);
1682
+ },
1683
+ get items() {
1684
+ return (ask().questions[0]?.options ?? []).map((o) => ({
1685
+ id: o,
1686
+ label: o
1687
+ }));
1688
+ },
1689
+ get selected() {
1690
+ return pickerSel();
1691
+ },
1692
+ get theme() {
1693
+ return th();
1694
+ },
1695
+ maxRows: 8
1696
+ }) : null;
1697
+ })(), null);
1698
+ _$insert6(_el$, (() => {
1699
+ var _c$4 = _$memo4(() => !!picker());
1700
+ return () => _c$4() ? _$createComponent6(Picker, {
1701
+ get title() {
1702
+ return pickerData().title;
1703
+ },
1704
+ get items() {
1705
+ return pickerData().items;
1706
+ },
1707
+ get selected() {
1708
+ return pickerSel();
1709
+ },
1710
+ get theme() {
1711
+ return th();
1712
+ },
1713
+ maxRows: 8
1714
+ }) : null;
1715
+ })(), null);
1716
+ _$insert6(_el$, _$createComponent6(For6, {
871
1717
  get each() {
872
1718
  return menuVisible() ? [0] : [];
873
1719
  },
874
1720
  children: () => (() => {
875
- var _el$28 = _$createElement2("box");
876
- _$insert2(_el$28, _$createComponent2(For2, {
1721
+ var _el$3 = _$createElement6("box");
1722
+ _$insert6(_el$3, _$createComponent6(For6, {
877
1723
  get each() {
878
1724
  return filteredCommands();
879
1725
  },
880
1726
  children: (c, i) => (() => {
881
- var _el$29 = _$createElement2("text"), _el$30 = _$createTextNode2(` `);
882
- _$insertNode2(_el$29, _el$30);
883
- _$insert2(_el$29, () => i() === clampedSel() ? "› " : " ", _el$30);
884
- _$insert2(_el$29, () => c.name, _el$30);
885
- _$insert2(_el$29, () => c.desc, null);
886
- _$effect2((_$p) => _$setProp2(_el$29, "style", {
1727
+ var _el$4 = _$createElement6("text"), _el$5 = _$createTextNode5(` `);
1728
+ _$insertNode6(_el$4, _el$5);
1729
+ _$insert6(_el$4, () => i() === clampedSel() ? "› " : " ", _el$5);
1730
+ _$insert6(_el$4, () => c.name, _el$5);
1731
+ _$insert6(_el$4, () => c.desc, null);
1732
+ _$effect6((_$p) => _$setProp6(_el$4, "style", {
887
1733
  fg: i() === clampedSel() ? th().tokens.accent : undefined
888
1734
  }, _$p));
889
- return _el$29;
1735
+ return _el$4;
890
1736
  })()
891
1737
  }));
892
- _$effect2((_$p) => _$setProp2(_el$28, "style", {
1738
+ _$effect6((_$p) => _$setProp6(_el$3, "style", {
893
1739
  border: true,
894
1740
  borderColor: th().tokens.border,
895
1741
  flexDirection: "column",
896
1742
  padding: 0
897
1743
  }, _$p));
898
- return _el$28;
899
- })()
900
- }), _el$18);
901
- _$insertNode2(_el$18, _el$19);
902
- _$insert2(_el$19, (() => {
903
- var _c$ = _$memo(() => !!busy());
904
- return () => _c$() ? `${spinner()} ` : "❯ ";
905
- })());
906
- _$insert2(_el$18, (() => {
907
- var _c$2 = _$memo(() => !!busy());
908
- return () => _c$2() ? (() => {
909
- var _el$31 = _$createElement2("text");
910
- _$insert2(_el$31, () => t("shell.input.busy"));
911
- _$effect2((_$p) => _$setProp2(_el$31, "style", {
912
- fg: th().tokens.dim
913
- }, _$p));
914
- return _el$31;
915
- })() : _$memo(() => input() === "")() ? [(() => {
916
- var _el$32 = _$createElement2("text");
917
- _$insertNode2(_el$32, _$createTextNode2(` `));
918
- _$effect2((_$p) => _$setProp2(_el$32, "style", {
919
- fg: th().tokens.accent,
920
- attributes: createTextAttributes({
921
- inverse: true
922
- })
923
- }, _$p));
924
- return _el$32;
925
- })(), (() => {
926
- var _el$34 = _$createElement2("text");
927
- _$insert2(_el$34, () => t("shell.input.placeholder"));
928
- _$effect2((_$p) => _$setProp2(_el$34, "style", {
929
- fg: th().tokens.dim
930
- }, _$p));
931
- return _el$34;
932
- })()] : [(() => {
933
- var _el$35 = _$createElement2("text");
934
- _$insert2(_el$35, () => inputChunks().before);
935
- _$effect2((_$p) => _$setProp2(_el$35, "style", {
936
- fg: th().tokens.text
937
- }, _$p));
938
- return _el$35;
939
- })(), (() => {
940
- var _el$36 = _$createElement2("text");
941
- _$insert2(_el$36, () => inputChunks().at);
942
- _$effect2((_$p) => _$setProp2(_el$36, "style", {
943
- fg: th().tokens.text,
944
- attributes: createTextAttributes({
945
- inverse: true
946
- })
947
- }, _$p));
948
- return _el$36;
949
- })(), (() => {
950
- var _el$37 = _$createElement2("text");
951
- _$insert2(_el$37, () => inputChunks().after);
952
- _$effect2((_$p) => _$setProp2(_el$37, "style", {
953
- fg: th().tokens.text
954
- }, _$p));
955
- return _el$37;
956
- })()];
957
- })(), null);
958
- _$setProp2(_el$20, "style", {
959
- flexDirection: "row",
960
- paddingLeft: 2,
961
- paddingRight: 2
962
- });
963
- _$insert2(_el$20, _$createComponent2(For2, {
964
- each: footerHints,
965
- children: (h, i) => (() => {
966
- var _el$38 = _$createElement2("text"), _el$39 = _$createTextNode2(` `);
967
- _$insertNode2(_el$38, _el$39);
968
- _$insert2(_el$38, () => i() > 0 ? " · " : "", _el$39);
969
- _$insert2(_el$38, () => h.key, _el$39);
970
- _$insert2(_el$38, () => h.label, null);
971
- _$effect2((_$p) => _$setProp2(_el$38, "style", {
972
- fg: th().tokens.dim
973
- }, _$p));
974
- return _el$38;
1744
+ return _el$3;
975
1745
  })()
976
- }));
977
- _$insert2(_el$16, _$createComponent2(StatusBar, {
1746
+ }), null);
1747
+ _$insert6(_el$, _$createComponent6(InputLine, {
1748
+ get value() {
1749
+ return input();
1750
+ },
1751
+ get cursor() {
1752
+ return cursor();
1753
+ },
1754
+ get busy() {
1755
+ return busy();
1756
+ },
1757
+ get spinnerFrame() {
1758
+ return spinner();
1759
+ },
1760
+ get placeholder() {
1761
+ return t("shell.input.placeholder");
1762
+ },
1763
+ get busyLabel() {
1764
+ return t("shell.input.busy");
1765
+ },
1766
+ get theme() {
1767
+ return th();
1768
+ }
1769
+ }), null);
1770
+ _$insert6(_el$, _$createComponent6(FooterHints, {
1771
+ get theme() {
1772
+ return th();
1773
+ }
1774
+ }), null);
1775
+ _$insert6(_el$, _$createComponent6(StatusBar, {
978
1776
  get widgets() {
979
1777
  return [{
980
1778
  kind: "widget",
@@ -997,22 +1795,7 @@ function ShellHost(props) {
997
1795
  }, ...widgets()];
998
1796
  }
999
1797
  }), null);
1000
- _$effect2((_p$) => {
1001
- var _v$3 = {
1002
- border: true,
1003
- borderColor: th().tokens.border,
1004
- flexDirection: "row"
1005
- }, _v$4 = {
1006
- fg: th().tokens.accent
1007
- };
1008
- _v$3 !== _p$.e && (_p$.e = _$setProp2(_el$18, "style", _v$3, _p$.e));
1009
- _v$4 !== _p$.t && (_p$.t = _$setProp2(_el$19, "style", _v$4, _p$.t));
1010
- return _p$;
1011
- }, {
1012
- e: undefined,
1013
- t: undefined
1014
- });
1015
- return _el$16;
1798
+ return _el$;
1016
1799
  })();
1017
1800
  }
1018
1801
 
@@ -1031,6 +1814,7 @@ class HostSession {
1031
1814
  #running = false;
1032
1815
  #toolCalls = new Map;
1033
1816
  #override;
1817
+ #resumeId;
1034
1818
  usage = { prompt: 0, completion: 0 };
1035
1819
  constructor(ctx) {
1036
1820
  this.#ctx = ctx;
@@ -1048,20 +1832,100 @@ class HostSession {
1048
1832
  return [];
1049
1833
  }
1050
1834
  }
1051
- switchModel(provider, model) {
1052
- this.#override = { provider, model };
1835
+ switchModel(provider, model, reasoningEffort) {
1836
+ this.#override = { provider, model, ...reasoningEffort ? { reasoningEffort } : {} };
1837
+ try {
1838
+ this.#handle?.dispose?.();
1839
+ } catch {}
1840
+ this.#handle = undefined;
1841
+ this.#sessionId = undefined;
1842
+ this.#agentId = undefined;
1843
+ this.label = `${provider}/${model}${reasoningEffort ? ` (${reasoningEffort})` : ""}`;
1844
+ }
1845
+ newSession() {
1053
1846
  try {
1054
1847
  this.#handle?.dispose?.();
1055
1848
  } catch {}
1056
1849
  this.#handle = undefined;
1057
1850
  this.#sessionId = undefined;
1058
1851
  this.#agentId = undefined;
1059
- this.label = `${provider}/${model}`;
1852
+ }
1853
+ resumeSession(id) {
1854
+ this.newSession();
1855
+ this.#resumeId = id;
1856
+ }
1857
+ async listSessions(limit = 12) {
1858
+ const persistence = this.#ctx.get?.("sessionPersistence");
1859
+ if (!persistence?.list)
1860
+ return [];
1861
+ try {
1862
+ const headers = await persistence.list();
1863
+ return headers.map((h) => ({
1864
+ id: String(h?.id ?? ""),
1865
+ title: String(h?.title ?? h?.firstPrompt ?? h?.name ?? "").slice(0, 40),
1866
+ updatedAt: h?.updatedAt ?? h?.lastEventAt ?? h?.mtime
1867
+ })).filter((s) => s.id).sort((a, b) => String(b.updatedAt ?? "").localeCompare(String(a.updatedAt ?? ""))).slice(0, limit);
1868
+ } catch {
1869
+ return [];
1870
+ }
1871
+ }
1872
+ registerAskProvider(onAsk) {
1873
+ this.#ctx.on("user-questions/request", async (request, next) => {
1874
+ const asking = request?.agent?.session?.id;
1875
+ if (this.#sessionId !== undefined && asking !== undefined && String(asking) !== this.#sessionId)
1876
+ return next();
1877
+ const questions = request?.questions ?? [];
1878
+ if (!questions.length)
1879
+ return next();
1880
+ const simplified = questions.map((q) => ({
1881
+ id: String(q?.id ?? ""),
1882
+ prompt: String(q?.prompt ?? q?.question ?? q?.header ?? ""),
1883
+ options: (q?.options ?? []).map((o) => String(o?.label ?? o?.value ?? o))
1884
+ }));
1885
+ let picks;
1886
+ try {
1887
+ picks = await onAsk(simplified);
1888
+ } catch {
1889
+ return { answers: simplified.map((q) => ({ id: q.id, selected: [], custom: "declined" })) };
1890
+ }
1891
+ return {
1892
+ answers: simplified.map((q) => {
1893
+ const pick = picks.find((p) => p.questionId === q.id);
1894
+ return pick ? { id: q.id, selected: [pick.selected] } : { id: q.id, selected: [], custom: "declined" };
1895
+ })
1896
+ };
1897
+ });
1898
+ }
1899
+ #credentials() {
1900
+ try {
1901
+ return this.#ctx.get?.("credentials");
1902
+ } catch {
1903
+ return;
1904
+ }
1905
+ }
1906
+ async credentialStatus(ref) {
1907
+ const c = this.#credentials();
1908
+ if (c?.describe)
1909
+ return c.describe(ref);
1910
+ return { configured: false };
1911
+ }
1912
+ async login(ref, apiKey) {
1913
+ const c = this.#credentials();
1914
+ if (!c?.set)
1915
+ throw new Error("credentials service unavailable in this host");
1916
+ await c.set(ref, apiKey);
1917
+ }
1918
+ async logout(ref) {
1919
+ const c = this.#credentials();
1920
+ if (!c?.unset)
1921
+ throw new Error("credentials service unavailable in this host");
1922
+ await c.unset(ref);
1060
1923
  }
1061
1924
  async turn(userText, cb, _signal) {
1062
1925
  this.#cb = cb;
1063
1926
  if (!this.#handle) {
1064
- this.#sessionId = randomUUID();
1927
+ this.#sessionId = this.#resumeId ?? randomUUID();
1928
+ this.#resumeId = undefined;
1065
1929
  const sel = this.#override ?? this.#ctx.get?.("agentDefaultModel")?.currentSelection?.();
1066
1930
  const agentOptions = sel ? { provider: sel.provider, model: sel.model, ...sel.reasoningEffort ? { reasoningEffort: sel.reasoningEffort } : {} } : {};
1067
1931
  if (sel)
@@ -1186,7 +2050,7 @@ function apply(ctx, config) {
1186
2050
  mountEngine({}).then(({
1187
2051
  renderer
1188
2052
  }) => {
1189
- render(() => _$createComponent3(ShellHost, {
2053
+ render(() => _$createComponent7(ShellHost, {
1190
2054
  get deps() {
1191
2055
  return {
1192
2056
  store,