arc402-cli 1.4.50 → 1.6.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 (291) hide show
  1. package/dist/commands/agreements.d.ts.map +1 -1
  2. package/dist/commands/agreements.js +19 -0
  3. package/dist/commands/agreements.js.map +1 -1
  4. package/dist/commands/arena-v2.d.ts.map +1 -1
  5. package/dist/commands/arena-v2.js +129 -4
  6. package/dist/commands/arena-v2.js.map +1 -1
  7. package/dist/commands/auth.d.ts +11 -0
  8. package/dist/commands/auth.d.ts.map +1 -0
  9. package/dist/commands/auth.js +188 -0
  10. package/dist/commands/auth.js.map +1 -0
  11. package/dist/commands/chat.d.ts +3 -0
  12. package/dist/commands/chat.d.ts.map +1 -0
  13. package/dist/commands/chat.js +752 -0
  14. package/dist/commands/chat.js.map +1 -0
  15. package/dist/commands/compute.d.ts.map +1 -1
  16. package/dist/commands/compute.js +84 -10
  17. package/dist/commands/compute.js.map +1 -1
  18. package/dist/commands/daemon.d.ts.map +1 -1
  19. package/dist/commands/daemon.js +44 -5
  20. package/dist/commands/daemon.js.map +1 -1
  21. package/dist/commands/discover.d.ts.map +1 -1
  22. package/dist/commands/discover.js +20 -0
  23. package/dist/commands/discover.js.map +1 -1
  24. package/dist/commands/hermes-init.d.ts +1 -1
  25. package/dist/commands/hermes-init.js +9 -9
  26. package/dist/commands/hermes-init.js.map +1 -1
  27. package/dist/commands/hire.d.ts.map +1 -1
  28. package/dist/commands/hire.js +20 -0
  29. package/dist/commands/hire.js.map +1 -1
  30. package/dist/commands/index.d.ts +3 -0
  31. package/dist/commands/index.d.ts.map +1 -0
  32. package/dist/commands/index.js +74 -0
  33. package/dist/commands/index.js.map +1 -0
  34. package/dist/commands/lifecycle.d.ts +3 -0
  35. package/dist/commands/lifecycle.d.ts.map +1 -0
  36. package/dist/commands/lifecycle.js +58 -0
  37. package/dist/commands/lifecycle.js.map +1 -0
  38. package/dist/commands/security.d.ts +3 -0
  39. package/dist/commands/security.d.ts.map +1 -0
  40. package/dist/commands/security.js +44 -0
  41. package/dist/commands/security.js.map +1 -0
  42. package/dist/commands/status.d.ts +18 -0
  43. package/dist/commands/status.d.ts.map +1 -0
  44. package/dist/commands/status.js +179 -0
  45. package/dist/commands/status.js.map +1 -0
  46. package/dist/commands/subscription.d.ts +3 -0
  47. package/dist/commands/subscription.d.ts.map +1 -0
  48. package/dist/commands/subscription.js +465 -0
  49. package/dist/commands/subscription.js.map +1 -0
  50. package/dist/commands/workroom.d.ts.map +1 -1
  51. package/dist/commands/workroom.js +13 -0
  52. package/dist/commands/workroom.js.map +1 -1
  53. package/dist/commerce-client.d.ts +77 -0
  54. package/dist/commerce-client.d.ts.map +1 -0
  55. package/dist/commerce-client.js +224 -0
  56. package/dist/commerce-client.js.map +1 -0
  57. package/dist/commerce-index.d.ts +39 -0
  58. package/dist/commerce-index.d.ts.map +1 -0
  59. package/dist/commerce-index.js +294 -0
  60. package/dist/commerce-index.js.map +1 -0
  61. package/dist/config.d.ts +6 -0
  62. package/dist/config.d.ts.map +1 -1
  63. package/dist/config.js.map +1 -1
  64. package/dist/daemon/config.d.ts +1 -0
  65. package/dist/daemon/config.d.ts.map +1 -1
  66. package/dist/daemon/config.js +7 -3
  67. package/dist/daemon/config.js.map +1 -1
  68. package/dist/daemon/index.d.ts.map +1 -1
  69. package/dist/daemon/index.js +18 -4
  70. package/dist/daemon/index.js.map +1 -1
  71. package/dist/daemon-client.d.ts +46 -0
  72. package/dist/daemon-client.d.ts.map +1 -0
  73. package/dist/daemon-client.js +80 -0
  74. package/dist/daemon-client.js.map +1 -0
  75. package/dist/index.js +40 -34
  76. package/dist/index.js.map +1 -1
  77. package/dist/program.d.ts.map +1 -1
  78. package/dist/program.js +14 -0
  79. package/dist/program.js.map +1 -1
  80. package/dist/tui/App.d.ts.map +1 -1
  81. package/dist/tui/App.js +61 -58
  82. package/dist/tui/App.js.map +1 -1
  83. package/dist/tui/InputLine.d.ts +4 -2
  84. package/dist/tui/InputLine.d.ts.map +1 -1
  85. package/dist/tui/InputLine.js +79 -60
  86. package/dist/tui/InputLine.js.map +1 -1
  87. package/dist/tui/KernelPayloadRenderer.d.ts +12 -0
  88. package/dist/tui/KernelPayloadRenderer.d.ts.map +1 -0
  89. package/dist/tui/KernelPayloadRenderer.js +41 -0
  90. package/dist/tui/KernelPayloadRenderer.js.map +1 -0
  91. package/dist/tui/Viewport.d.ts +15 -5
  92. package/dist/tui/Viewport.d.ts.map +1 -1
  93. package/dist/tui/Viewport.js +18 -24
  94. package/dist/tui/Viewport.js.map +1 -1
  95. package/dist/tui/command-catalog.d.ts +11 -0
  96. package/dist/tui/command-catalog.d.ts.map +1 -0
  97. package/dist/tui/command-catalog.js +119 -0
  98. package/dist/tui/command-catalog.js.map +1 -0
  99. package/dist/tui/command-renderers.d.ts +33 -0
  100. package/dist/tui/command-renderers.d.ts.map +1 -0
  101. package/dist/tui/command-renderers.js +215 -0
  102. package/dist/tui/command-renderers.js.map +1 -0
  103. package/dist/tui/commerce-format.d.ts +3 -0
  104. package/dist/tui/commerce-format.d.ts.map +1 -0
  105. package/dist/tui/commerce-format.js +19 -0
  106. package/dist/tui/commerce-format.js.map +1 -0
  107. package/dist/tui/components/commerce/AgentPicker.d.ts +7 -0
  108. package/dist/tui/components/commerce/AgentPicker.d.ts.map +1 -0
  109. package/dist/tui/components/commerce/AgentPicker.js +33 -0
  110. package/dist/tui/components/commerce/AgentPicker.js.map +1 -0
  111. package/dist/tui/components/commerce/AgreementList.d.ts +18 -0
  112. package/dist/tui/components/commerce/AgreementList.d.ts.map +1 -0
  113. package/dist/tui/components/commerce/AgreementList.js +25 -0
  114. package/dist/tui/components/commerce/AgreementList.js.map +1 -0
  115. package/dist/tui/components/commerce/ComputeCard.d.ts +14 -0
  116. package/dist/tui/components/commerce/ComputeCard.d.ts.map +1 -0
  117. package/dist/tui/components/commerce/ComputeCard.js +9 -0
  118. package/dist/tui/components/commerce/ComputeCard.js.map +1 -0
  119. package/dist/tui/components/commerce/DiscoverList.d.ts +20 -0
  120. package/dist/tui/components/commerce/DiscoverList.d.ts.map +1 -0
  121. package/dist/tui/components/commerce/DiscoverList.js +22 -0
  122. package/dist/tui/components/commerce/DiscoverList.js.map +1 -0
  123. package/dist/tui/components/commerce/HireCard.d.ts +14 -0
  124. package/dist/tui/components/commerce/HireCard.d.ts.map +1 -0
  125. package/dist/tui/components/commerce/HireCard.js +11 -0
  126. package/dist/tui/components/commerce/HireCard.js.map +1 -0
  127. package/dist/tui/components/commerce/ProfileCard.d.ts +19 -0
  128. package/dist/tui/components/commerce/ProfileCard.d.ts.map +1 -0
  129. package/dist/tui/components/commerce/ProfileCard.js +10 -0
  130. package/dist/tui/components/commerce/ProfileCard.js.map +1 -0
  131. package/dist/tui/components/commerce/RoundsList.d.ts +18 -0
  132. package/dist/tui/components/commerce/RoundsList.d.ts.map +1 -0
  133. package/dist/tui/components/commerce/RoundsList.js +9 -0
  134. package/dist/tui/components/commerce/RoundsList.js.map +1 -0
  135. package/dist/tui/components/commerce/SquadCard.d.ts +25 -0
  136. package/dist/tui/components/commerce/SquadCard.d.ts.map +1 -0
  137. package/dist/tui/components/commerce/SquadCard.js +10 -0
  138. package/dist/tui/components/commerce/SquadCard.js.map +1 -0
  139. package/dist/tui/components/commerce/StatusCard.d.ts +21 -0
  140. package/dist/tui/components/commerce/StatusCard.d.ts.map +1 -0
  141. package/dist/tui/components/commerce/StatusCard.js +10 -0
  142. package/dist/tui/components/commerce/StatusCard.js.map +1 -0
  143. package/dist/tui/components/commerce/SubscribeCard.d.ts +13 -0
  144. package/dist/tui/components/commerce/SubscribeCard.d.ts.map +1 -0
  145. package/dist/tui/components/commerce/SubscribeCard.js +10 -0
  146. package/dist/tui/components/commerce/SubscribeCard.js.map +1 -0
  147. package/dist/tui/components/commerce/WorkroomCard.d.ts +18 -0
  148. package/dist/tui/components/commerce/WorkroomCard.d.ts.map +1 -0
  149. package/dist/tui/components/commerce/WorkroomCard.js +10 -0
  150. package/dist/tui/components/commerce/WorkroomCard.js.map +1 -0
  151. package/dist/tui/components/commerce/common.d.ts +53 -0
  152. package/dist/tui/components/commerce/common.d.ts.map +1 -0
  153. package/dist/tui/components/commerce/common.js +71 -0
  154. package/dist/tui/components/commerce/common.js.map +1 -0
  155. package/dist/tui/components/commerce/index.d.ts +11 -0
  156. package/dist/tui/components/commerce/index.d.ts.map +1 -0
  157. package/dist/tui/components/commerce/index.js +27 -0
  158. package/dist/tui/components/commerce/index.js.map +1 -0
  159. package/dist/tui/hire-interactive.d.ts +13 -0
  160. package/dist/tui/hire-interactive.d.ts.map +1 -0
  161. package/dist/tui/hire-interactive.js +157 -0
  162. package/dist/tui/hire-interactive.js.map +1 -0
  163. package/dist/tui/kernel-payload.d.ts +45 -0
  164. package/dist/tui/kernel-payload.d.ts.map +1 -0
  165. package/dist/tui/kernel-payload.js +8 -0
  166. package/dist/tui/kernel-payload.js.map +1 -0
  167. package/dist/tui/kernel.d.ts +6 -0
  168. package/dist/tui/kernel.d.ts.map +1 -0
  169. package/dist/tui/kernel.js +791 -0
  170. package/dist/tui/kernel.js.map +1 -0
  171. package/dist/tui/render-inline.d.ts +9 -0
  172. package/dist/tui/render-inline.d.ts.map +1 -0
  173. package/dist/tui/render-inline.js +32 -0
  174. package/dist/tui/render-inline.js.map +1 -0
  175. package/dist/tui/useChat.d.ts.map +1 -1
  176. package/dist/tui/useChat.js +2 -2
  177. package/dist/tui/useChat.js.map +1 -1
  178. package/dist/tui/useCommand.d.ts +2 -2
  179. package/dist/tui/useCommand.d.ts.map +1 -1
  180. package/dist/tui/useCommand.js +57 -19
  181. package/dist/tui/useCommand.js.map +1 -1
  182. package/dist/tui/useDaemonEvents.d.ts +4 -0
  183. package/dist/tui/useDaemonEvents.d.ts.map +1 -0
  184. package/dist/tui/useDaemonEvents.js +69 -0
  185. package/dist/tui/useDaemonEvents.js.map +1 -0
  186. package/dist/tui/useTerminalSize.d.ts +11 -0
  187. package/dist/tui/useTerminalSize.d.ts.map +1 -0
  188. package/dist/tui/useTerminalSize.js +32 -0
  189. package/dist/tui/useTerminalSize.js.map +1 -0
  190. package/dist/tui-esm/App.js +136 -0
  191. package/dist/tui-esm/App.js.map +1 -0
  192. package/dist/tui-esm/Footer.js +13 -0
  193. package/dist/tui-esm/Footer.js.map +1 -0
  194. package/dist/tui-esm/Header.js +19 -0
  195. package/dist/tui-esm/Header.js.map +1 -0
  196. package/dist/tui-esm/InputLine.js +121 -0
  197. package/dist/tui-esm/InputLine.js.map +1 -0
  198. package/dist/tui-esm/Viewport.js +39 -0
  199. package/dist/tui-esm/Viewport.js.map +1 -0
  200. package/dist/tui-esm/WalletConnectPairing.js +61 -0
  201. package/dist/tui-esm/WalletConnectPairing.js.map +1 -0
  202. package/dist/tui-esm/command-catalog.js +20 -0
  203. package/dist/tui-esm/command-catalog.js.map +1 -0
  204. package/dist/tui-esm/command-renderers.js +180 -0
  205. package/dist/tui-esm/command-renderers.js.map +1 -0
  206. package/dist/tui-esm/commerce-format.js +19 -0
  207. package/dist/tui-esm/commerce-format.js.map +1 -0
  208. package/dist/tui-esm/components/Button.js +21 -0
  209. package/dist/tui-esm/components/Button.js.map +1 -0
  210. package/dist/tui-esm/components/CeremonyView.js +10 -0
  211. package/dist/tui-esm/components/CeremonyView.js.map +1 -0
  212. package/dist/tui-esm/components/CompletionDropdown.js +23 -0
  213. package/dist/tui-esm/components/CompletionDropdown.js.map +1 -0
  214. package/dist/tui-esm/components/ConfirmPrompt.js +10 -0
  215. package/dist/tui-esm/components/ConfirmPrompt.js.map +1 -0
  216. package/dist/tui-esm/components/CustomTextInput.js +99 -0
  217. package/dist/tui-esm/components/CustomTextInput.js.map +1 -0
  218. package/dist/tui-esm/components/InteractiveTable.js +61 -0
  219. package/dist/tui-esm/components/InteractiveTable.js.map +1 -0
  220. package/dist/tui-esm/components/StepSpinner.js +32 -0
  221. package/dist/tui-esm/components/StepSpinner.js.map +1 -0
  222. package/dist/tui-esm/components/Toast.js +29 -0
  223. package/dist/tui-esm/components/Toast.js.map +1 -0
  224. package/dist/tui-esm/components/commerce/AgreementList.js +25 -0
  225. package/dist/tui-esm/components/commerce/AgreementList.js.map +1 -0
  226. package/dist/tui-esm/components/commerce/ComputeCard.js +9 -0
  227. package/dist/tui-esm/components/commerce/ComputeCard.js.map +1 -0
  228. package/dist/tui-esm/components/commerce/DiscoverList.js +14 -0
  229. package/dist/tui-esm/components/commerce/DiscoverList.js.map +1 -0
  230. package/dist/tui-esm/components/commerce/HireCard.js +11 -0
  231. package/dist/tui-esm/components/commerce/HireCard.js.map +1 -0
  232. package/dist/tui-esm/components/commerce/RoundsList.js +9 -0
  233. package/dist/tui-esm/components/commerce/RoundsList.js.map +1 -0
  234. package/dist/tui-esm/components/commerce/SquadCard.js +10 -0
  235. package/dist/tui-esm/components/commerce/SquadCard.js.map +1 -0
  236. package/dist/tui-esm/components/commerce/StatusCard.js +10 -0
  237. package/dist/tui-esm/components/commerce/StatusCard.js.map +1 -0
  238. package/dist/tui-esm/components/commerce/SubscribeCard.js +10 -0
  239. package/dist/tui-esm/components/commerce/SubscribeCard.js.map +1 -0
  240. package/dist/tui-esm/components/commerce/WorkroomCard.js +10 -0
  241. package/dist/tui-esm/components/commerce/WorkroomCard.js.map +1 -0
  242. package/dist/tui-esm/components/commerce/common.js +71 -0
  243. package/dist/tui-esm/components/commerce/common.js.map +1 -0
  244. package/dist/tui-esm/components/commerce/index.js +27 -0
  245. package/dist/tui-esm/components/commerce/index.js.map +1 -0
  246. package/dist/tui-esm/index.js +55 -0
  247. package/dist/tui-esm/index.js.map +1 -0
  248. package/dist/tui-esm/kernel.js +734 -0
  249. package/dist/tui-esm/kernel.js.map +1 -0
  250. package/dist/tui-esm/render-inline.js +32 -0
  251. package/dist/tui-esm/render-inline.js.map +1 -0
  252. package/dist/tui-esm/useChat.js +91 -0
  253. package/dist/tui-esm/useChat.js.map +1 -0
  254. package/dist/tui-esm/useCommand.js +142 -0
  255. package/dist/tui-esm/useCommand.js.map +1 -0
  256. package/dist/tui-esm/useNotifications.js +17 -0
  257. package/dist/tui-esm/useNotifications.js.map +1 -0
  258. package/dist/tui-esm/useScroll.js +46 -0
  259. package/dist/tui-esm/useScroll.js.map +1 -0
  260. package/dist/tui-esm/useTerminalSize.js +32 -0
  261. package/dist/tui-esm/useTerminalSize.js.map +1 -0
  262. package/dist/ui/banner.d.ts.map +1 -1
  263. package/dist/ui/banner.js +46 -2
  264. package/dist/ui/banner.js.map +1 -1
  265. package/hermes/DELIVERY-SPEC.md +219 -0
  266. package/hermes/HERMES-INTEGRATION-SPEC.md +338 -0
  267. package/hermes/plugins/arc402_hermes/__init__.py +5 -0
  268. package/hermes/plugins/arc402_hermes/plugin.py +489 -0
  269. package/hermes/plugins/arc402_hermes/py.typed +0 -0
  270. package/hermes/plugins/arc402_hermes.egg-info/PKG-INFO +24 -0
  271. package/hermes/plugins/arc402_hermes.egg-info/SOURCES.txt +10 -0
  272. package/hermes/plugins/arc402_hermes.egg-info/dependency_links.txt +1 -0
  273. package/hermes/plugins/arc402_hermes.egg-info/entry_points.txt +2 -0
  274. package/hermes/plugins/arc402_hermes.egg-info/requires.txt +5 -0
  275. package/hermes/plugins/arc402_hermes.egg-info/top_level.txt +1 -0
  276. package/hermes/plugins/arc402_plugin.py +489 -0
  277. package/hermes/plugins/dist/arc402_hermes-1.0.0-py3-none-any.whl +0 -0
  278. package/hermes/plugins/dist/arc402_hermes-1.0.0.tar.gz +0 -0
  279. package/hermes/plugins/pyproject.toml +47 -0
  280. package/hermes/skills/arc402-agent/SKILL.md +559 -0
  281. package/hermes/workroom/README.md +174 -0
  282. package/hermes/workroom/hermes-daemon.toml +21 -0
  283. package/hermes/workroom/hermes-worker/IDENTITY.md +44 -0
  284. package/hermes/workroom/hermes-worker/SOUL.md +45 -0
  285. package/hermes/workroom/hermes-worker/config.json +32 -0
  286. package/hermes/workroom/hermes-worker/datasets/.gitkeep +0 -0
  287. package/hermes/workroom/hermes-worker/knowledge/.gitkeep +0 -0
  288. package/hermes/workroom/hermes-worker/memory/learnings.md +9 -0
  289. package/hermes/workroom/hermes-worker/skills/.gitkeep +0 -0
  290. package/package.json +9 -3
  291. package/README.md +0 -288
@@ -1,14 +1,24 @@
1
+ import type { KernelPayload } from "./kernel-payload";
2
+ export type ViewportEntry = string | KernelPayload;
1
3
  interface ViewportProps {
2
- lines: string[];
4
+ lines: ViewportEntry[];
3
5
  scrollOffset: number;
4
6
  isAutoScroll: boolean;
7
+ /** Exact number of rows available for content, computed by App from measured layout. */
8
+ viewportHeight: number;
5
9
  }
6
10
  /**
7
11
  * Scrollable output area that fills remaining terminal space.
8
- * Renders a window slice of the buffer, not terminal scroll.
9
- * scrollOffset=0 means pinned to bottom (auto-scroll).
10
- * Positive scrollOffset means scrolled up by that many lines.
12
+ * Renders strings as Text lines and KernelPayloads as Phase 2 Ink components.
13
+ *
14
+ * NOTE: KernelPayload entries are treated as single logical blocks that always
15
+ * render fully — they are not sliced by the scroll window. Only string lines
16
+ * participate in the scroll window calculation. This keeps the Phase 2
17
+ * components rendering correctly while maintaining scroll for text output.
18
+ *
19
+ * For the viewport height calculation, each payload counts as 1 "slot" in
20
+ * the buffer but renders as a full component block.
11
21
  */
12
- export declare function Viewport({ lines, scrollOffset, isAutoScroll }: ViewportProps): import("react/jsx-runtime").JSX.Element;
22
+ export declare function Viewport({ lines, scrollOffset, isAutoScroll, viewportHeight }: ViewportProps): import("react/jsx-runtime").JSX.Element;
13
23
  export {};
14
24
  //# sourceMappingURL=Viewport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Viewport.d.ts","sourceRoot":"","sources":["../../src/tui/Viewport.tsx"],"names":[],"mappings":"AAGA,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,aAAa,2CAsD5E"}
1
+ {"version":3,"file":"Viewport.d.ts","sourceRoot":"","sources":["../../src/tui/Viewport.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGtD,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,aAAa,CAAC;AAEnD,UAAU,aAAa;IACrB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,wFAAwF;IACxF,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,aAAa,2CA2C5F"}
@@ -3,46 +3,40 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Viewport = Viewport;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const ink_1 = require("ink");
6
+ const KernelPayloadRenderer_1 = require("./KernelPayloadRenderer");
6
7
  /**
7
8
  * Scrollable output area that fills remaining terminal space.
8
- * Renders a window slice of the buffer, not terminal scroll.
9
- * scrollOffset=0 means pinned to bottom (auto-scroll).
10
- * Positive scrollOffset means scrolled up by that many lines.
9
+ * Renders strings as Text lines and KernelPayloads as Phase 2 Ink components.
10
+ *
11
+ * NOTE: KernelPayload entries are treated as single logical blocks that always
12
+ * render fully — they are not sliced by the scroll window. Only string lines
13
+ * participate in the scroll window calculation. This keeps the Phase 2
14
+ * components rendering correctly while maintaining scroll for text output.
15
+ *
16
+ * For the viewport height calculation, each payload counts as 1 "slot" in
17
+ * the buffer but renders as a full component block.
11
18
  */
12
- function Viewport({ lines, scrollOffset, isAutoScroll }) {
13
- const { stdout } = (0, ink_1.useStdout)();
14
- const termRows = stdout?.rows ?? 24;
15
- // We'll compute the viewport height: total rows minus fixed areas
16
- // Header is approximately bannerLines + separator (~14-16 rows)
17
- // Footer is 1 row
18
- // We'll use a reasonable estimate here; the parent App can pass exact height
19
- const HEADER_ROWS = 15; // approximate
20
- const FOOTER_ROWS = 1;
21
- const viewportHeight = Math.max(1, termRows - HEADER_ROWS - FOOTER_ROWS);
22
- // Compute the window slice
23
- // scrollOffset=0 → show last viewportHeight lines
24
- // scrollOffset=N → show lines ending viewportHeight+N from end
19
+ function Viewport({ lines, scrollOffset, isAutoScroll, viewportHeight }) {
25
20
  const totalLines = lines.length;
26
21
  let endIdx;
27
22
  let startIdx;
28
23
  if (scrollOffset === 0) {
29
- // Auto-scroll: pinned to bottom
30
24
  endIdx = totalLines;
31
25
  startIdx = Math.max(0, endIdx - viewportHeight);
32
26
  }
33
27
  else {
34
- // Scrolled up: scrollOffset lines from bottom
35
28
  endIdx = Math.max(0, totalLines - scrollOffset);
36
29
  startIdx = Math.max(0, endIdx - viewportHeight);
37
30
  }
38
- const visibleLines = lines.slice(startIdx, endIdx);
39
- // Pad with empty lines if fewer than viewportHeight
40
- const padCount = Math.max(0, viewportHeight - visibleLines.length);
41
- const paddedLines = [
31
+ const visibleEntries = lines.slice(startIdx, endIdx);
32
+ // Pad with empty strings if fewer than viewportHeight string entries
33
+ const stringCount = visibleEntries.filter((e) => typeof e === "string").length;
34
+ const padCount = Math.max(0, viewportHeight - stringCount - (visibleEntries.length - stringCount));
35
+ const paddedEntries = [
42
36
  ...Array(padCount).fill(""),
43
- ...visibleLines,
37
+ ...visibleEntries,
44
38
  ];
45
39
  const canScrollDown = scrollOffset > 0;
46
- return ((0, jsx_runtime_1.jsxs)(ink_1.Box, { flexDirection: "column", flexGrow: 1, children: [(0, jsx_runtime_1.jsx)(ink_1.Box, { flexDirection: "column", flexGrow: 1, children: paddedLines.map((line, i) => ((0, jsx_runtime_1.jsx)(ink_1.Text, { children: line }, i))) }), canScrollDown && !isAutoScroll && ((0, jsx_runtime_1.jsx)(ink_1.Box, { justifyContent: "flex-end", children: (0, jsx_runtime_1.jsx)(ink_1.Text, { dimColor: true, children: "\u2193 more" }) }))] }));
40
+ return ((0, jsx_runtime_1.jsxs)(ink_1.Box, { flexDirection: "column", flexGrow: 1, children: [(0, jsx_runtime_1.jsx)(ink_1.Box, { flexDirection: "column", flexGrow: 1, children: paddedEntries.map((entry, i) => typeof entry === "string" ? ((0, jsx_runtime_1.jsx)(ink_1.Text, { children: entry }, i)) : ((0, jsx_runtime_1.jsx)(KernelPayloadRenderer_1.KernelPayloadRenderer, { payload: entry }, i))) }), canScrollDown && !isAutoScroll && ((0, jsx_runtime_1.jsx)(ink_1.Box, { justifyContent: "flex-end", children: (0, jsx_runtime_1.jsx)(ink_1.Text, { dimColor: true, children: "\u2193 more" }) }))] }));
47
41
  }
48
42
  //# sourceMappingURL=Viewport.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Viewport.js","sourceRoot":"","sources":["../../src/tui/Viewport.tsx"],"names":[],"mappings":";;AAeA,4BAsDC;;AApED,6BAA2C;AAQ3C;;;;;GAKG;AACH,SAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAiB;IAC3E,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,eAAS,GAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;IAEpC,kEAAkE;IAClE,gEAAgE;IAChE,kBAAkB;IAClB,6EAA6E;IAC7E,MAAM,WAAW,GAAG,EAAE,CAAC,CAAC,cAAc;IACtC,MAAM,WAAW,GAAG,CAAC,CAAC;IACtB,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC,CAAC;IAEzE,2BAA2B;IAC3B,kDAAkD;IAClD,+DAA+D;IAC/D,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;IAChC,IAAI,MAAc,CAAC;IACnB,IAAI,QAAgB,CAAC;IAErB,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;QACvB,gCAAgC;QAChC,MAAM,GAAG,UAAU,CAAC;QACpB,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,8CAA8C;QAC9C,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC,CAAC;QAChD,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAEnD,oDAAoD;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG;QAClB,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,GAAG,YAAY;KAChB,CAAC;IAEF,MAAM,aAAa,GAAG,YAAY,GAAG,CAAC,CAAC;IAEvC,OAAO,CACL,wBAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,aACrC,uBAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,YACpC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAC5B,uBAAC,UAAI,cAAU,IAAI,IAAR,CAAC,CAAe,CAC5B,CAAC,GACE,EACL,aAAa,IAAI,CAAC,YAAY,IAAI,CACjC,uBAAC,SAAG,IAAC,cAAc,EAAC,UAAU,YAC5B,uBAAC,UAAI,IAAC,QAAQ,kCAAc,GACxB,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Viewport.js","sourceRoot":"","sources":["../../src/tui/Viewport.tsx"],"names":[],"mappings":";;AA2BA,4BA2CC;;AArED,6BAAgC;AAEhC,mEAAgE;AAYhE;;;;;;;;;;;GAWG;AACH,SAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAiB;IAC3F,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;IAChC,IAAI,MAAc,CAAC;IACnB,IAAI,QAAgB,CAAC;IAErB,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,GAAG,UAAU,CAAC;QACpB,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC,CAAC;QAChD,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAErD,qEAAqE;IACrE,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,WAAW,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IACnG,MAAM,aAAa,GAAoB;QACrC,GAAG,KAAK,CAAS,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,GAAG,cAAc;KAClB,CAAC;IAEF,MAAM,aAAa,GAAG,YAAY,GAAG,CAAC,CAAC;IAEvC,OAAO,CACL,wBAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,aACrC,uBAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,YACpC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAC9B,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC1B,uBAAC,UAAI,cAAU,KAAK,IAAT,CAAC,CAAgB,CAC7B,CAAC,CAAC,CAAC,CACF,uBAAC,6CAAqB,IAAS,OAAO,EAAE,KAAK,IAAjB,CAAC,CAAoB,CAClD,CACF,GACG,EACL,aAAa,IAAI,CAAC,YAAY,IAAI,CACjC,uBAAC,SAAG,IAAC,cAAc,EAAC,UAAU,YAC5B,uBAAC,UAAI,IAAC,QAAQ,kCAAc,GACxB,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ export declare const BUILTIN_CMDS: readonly ["help", "exit", "quit", "clear"];
2
+ export declare const TUI_TOP_LEVEL_COMMANDS: readonly ["status", "discover", "agreements", "workroom", "subscription", "subscribe", "arena", "hire", "accept", "deliver", "verify", "cancel", "dispute", "negotiate", "trust", "compute", "wallet", "agent", "endpoint", "daemon", "setup", "doctor", "migrate", "chat", "feed", "watch", "job", "plan", "x402"];
3
+ export declare const TUI_SUBCOMMANDS: Record<string, string[]>;
4
+ export declare const TUI_HELP_SECTIONS: {
5
+ label: string;
6
+ commands: {
7
+ cmd: string;
8
+ desc: string;
9
+ }[];
10
+ }[];
11
+ //# sourceMappingURL=command-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-catalog.d.ts","sourceRoot":"","sources":["../../src/tui/command-catalog.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,4CAA6C,CAAC;AAGvE,eAAO,MAAM,sBAAsB,qTAmCzB,CAAC;AAGX,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAepD,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;GA2D7B,CAAC"}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TUI_HELP_SECTIONS = exports.TUI_SUBCOMMANDS = exports.TUI_TOP_LEVEL_COMMANDS = exports.BUILTIN_CMDS = void 0;
4
+ exports.BUILTIN_CMDS = ["help", "exit", "quit", "clear"];
5
+ // Full TUI command surface — kernel-handled routes + legacy CLI adapter routes
6
+ exports.TUI_TOP_LEVEL_COMMANDS = [
7
+ // Kernel-extracted (Phase 2 Ink components)
8
+ "status",
9
+ "discover",
10
+ "agreements",
11
+ "workroom",
12
+ "subscription",
13
+ "subscribe",
14
+ "arena",
15
+ // Commerce write paths (legacy CLI adapter)
16
+ "hire",
17
+ "accept",
18
+ "deliver",
19
+ "verify",
20
+ "cancel",
21
+ "dispute",
22
+ "negotiate",
23
+ "trust",
24
+ // Compute
25
+ "compute",
26
+ // Wallet + identity
27
+ "wallet",
28
+ "agent",
29
+ "endpoint",
30
+ // Operator
31
+ "daemon",
32
+ "setup",
33
+ "doctor",
34
+ "migrate",
35
+ "chat",
36
+ "feed",
37
+ "watch",
38
+ "job",
39
+ "plan",
40
+ "x402",
41
+ ];
42
+ // Subcommands for Tab completion
43
+ exports.TUI_SUBCOMMANDS = {
44
+ // Kernel routes
45
+ workroom: ["status", "start", "stop", "init", "logs", "worker", "policy-hash", "install-service"],
46
+ subscription: ["status", "list", "cancel", "topup"],
47
+ arena: ["rounds", "squad", "profile", "standings", "stats", "status", "inbox", "discover", "trending", "briefing", "newsletter"],
48
+ squad: ["list", "create", "join", "info", "contribute"],
49
+ // Legacy routes
50
+ compute: ["offer", "discover", "hire", "status", "end", "sessions"],
51
+ wallet: ["deploy", "status", "authorize-machine-key", "set-guardian", "freeze", "unfreeze", "set-spend-limits"],
52
+ agent: ["register", "update", "status", "info"],
53
+ endpoint: ["setup", "status", "doctor", "claim", "update"],
54
+ daemon: ["init", "start", "stop", "restart", "logs", "status", "config"],
55
+ negotiate: ["start", "status", "accept", "reject"],
56
+ job: ["files", "fetch", "manifest"],
57
+ plan: ["create", "list"],
58
+ };
59
+ exports.TUI_HELP_SECTIONS = [
60
+ {
61
+ label: "Status + Discovery",
62
+ commands: [
63
+ { cmd: "status", desc: "Wallet · daemon · workroom overview" },
64
+ { cmd: "discover", desc: "Find agents by capability, trust, price" },
65
+ { cmd: "agreements", desc: "List active/past agreements" },
66
+ { cmd: "workroom status", desc: "Workroom container + job queue" },
67
+ ],
68
+ },
69
+ {
70
+ label: "Commerce",
71
+ commands: [
72
+ { cmd: "hire <endpoint>", desc: "Propose a ServiceAgreement" },
73
+ { cmd: "accept <id>", desc: "Accept an agreement as provider" },
74
+ { cmd: "deliver <id>", desc: "Commit deliverable on-chain" },
75
+ { cmd: "verify <id>", desc: "Release escrow after delivery" },
76
+ { cmd: "cancel <id>", desc: "Cancel and refund escrow" },
77
+ { cmd: "negotiate <endpoint>", desc: "Pre-hire negotiation session" },
78
+ ],
79
+ },
80
+ {
81
+ label: "Subscriptions",
82
+ commands: [
83
+ { cmd: "subscribe <endpoint>", desc: "Inspect + stage subscription" },
84
+ { cmd: "subscription status <id>", desc: "Check subscription state" },
85
+ { cmd: "subscription list", desc: "List active subscriptions" },
86
+ { cmd: "plan create", desc: "Publish a subscription plan" },
87
+ ],
88
+ },
89
+ {
90
+ label: "Compute",
91
+ commands: [
92
+ { cmd: "compute hire <provider>", desc: "Rent GPU session" },
93
+ { cmd: "compute status <id>", desc: "Session metrics + cost" },
94
+ { cmd: "compute end <id>", desc: "End session + settle" },
95
+ { cmd: "compute discover", desc: "Find GPU providers" },
96
+ ],
97
+ },
98
+ {
99
+ label: "Arena",
100
+ commands: [
101
+ { cmd: "arena rounds", desc: "Active prediction rounds" },
102
+ { cmd: "arena squad list", desc: "Research squads" },
103
+ { cmd: "arena standings", desc: "Leaderboard" },
104
+ { cmd: "arena stats", desc: "Protocol stats" },
105
+ ],
106
+ },
107
+ {
108
+ label: "Operator",
109
+ commands: [
110
+ { cmd: "daemon start", desc: "Start local node" },
111
+ { cmd: "chat", desc: "Commerce REPL (harness-agnostic)" },
112
+ { cmd: "workroom start", desc: "Start workroom container" },
113
+ { cmd: "watch", desc: "Live event stream from daemon" },
114
+ { cmd: "doctor", desc: "System health check" },
115
+ { cmd: "setup", desc: "Guided first-run setup" },
116
+ ],
117
+ },
118
+ ];
119
+ //# sourceMappingURL=command-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-catalog.js","sourceRoot":"","sources":["../../src/tui/command-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { ProfileCardProps } from "./components/commerce/ProfileCard";
2
+ import type { AgreementListProps } from "./components/commerce/AgreementList";
3
+ import type { ComputeCardProps } from "./components/commerce/ComputeCard";
4
+ import type { DiscoverListProps } from "./components/commerce/DiscoverList";
5
+ import type { HireCardProps } from "./components/commerce/HireCard";
6
+ import type { RoundsListProps } from "./components/commerce/RoundsList";
7
+ import type { SquadCardProps } from "./components/commerce/SquadCard";
8
+ import type { StatusCardProps } from "./components/commerce/StatusCard";
9
+ import type { SubscribeCardProps } from "./components/commerce/SubscribeCard";
10
+ import type { WorkroomCardProps } from "./components/commerce/WorkroomCard";
11
+ export declare function printStatusCard(props: StatusCardProps): Promise<void>;
12
+ export declare function printDiscoverList(props: DiscoverListProps): Promise<void>;
13
+ export declare function printHireCard(props: HireCardProps): Promise<void>;
14
+ export declare function printAgreementList(props: AgreementListProps): Promise<void>;
15
+ export declare function printComputeCard(props: ComputeCardProps): Promise<void>;
16
+ export declare function printSubscribeCard(props: SubscribeCardProps): Promise<void>;
17
+ export declare function printRoundsList(props: RoundsListProps): Promise<void>;
18
+ export declare function printSquadCard(props: SquadCardProps): Promise<void>;
19
+ export interface StandingsEntry {
20
+ rank: number;
21
+ agent: string;
22
+ wins: number;
23
+ losses: number;
24
+ netUsdc: string;
25
+ }
26
+ export interface StandingsProps {
27
+ entries: StandingsEntry[];
28
+ title?: string;
29
+ }
30
+ export declare function printProfileCard(props: ProfileCardProps): Promise<void>;
31
+ export declare function printStandings(props: StandingsProps): Promise<void>;
32
+ export declare function printWorkroomCard(props: WorkroomCardProps): Promise<void>;
33
+ //# sourceMappingURL=command-renderers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-renderers.d.ts","sourceRoot":"","sources":["../../src/tui/command-renderers.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAgC5E,wBAAsB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B3E;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB/E;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAcvE;AAED,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBjF;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAc7E;AAED,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAcjF;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB3E;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBzE;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB7E;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAUzE;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAY/E"}
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.printStatusCard = printStatusCard;
4
+ exports.printDiscoverList = printDiscoverList;
5
+ exports.printHireCard = printHireCard;
6
+ exports.printAgreementList = printAgreementList;
7
+ exports.printComputeCard = printComputeCard;
8
+ exports.printSubscribeCard = printSubscribeCard;
9
+ exports.printRoundsList = printRoundsList;
10
+ exports.printSquadCard = printSquadCard;
11
+ exports.printProfileCard = printProfileCard;
12
+ exports.printStandings = printStandings;
13
+ exports.printWorkroomCard = printWorkroomCard;
14
+ const commerce_format_1 = require("./commerce-format");
15
+ const render_inline_1 = require("./render-inline");
16
+ function emit(lines) {
17
+ for (const line of lines)
18
+ (0, render_inline_1.writeTuiLine)(line);
19
+ }
20
+ function separator() {
21
+ return "─".repeat(60);
22
+ }
23
+ function badge(label) {
24
+ return label ? ` ${label}` : "";
25
+ }
26
+ function detail(label, value) {
27
+ return ` ${label.padEnd(14)} ${value}`;
28
+ }
29
+ function bullet(value) {
30
+ return ` • ${value}`;
31
+ }
32
+ function listItem(title, meta, detailLine, status) {
33
+ return [
34
+ `${title}${badge(status)}`,
35
+ ...(meta ? [meta] : []),
36
+ ...(detailLine ? [detailLine] : []),
37
+ ];
38
+ }
39
+ async function printStatusCard(props) {
40
+ emit([
41
+ "◈ Wallet Status",
42
+ `${props.wallet}${badge(props.status?.label)}`,
43
+ props.network,
44
+ separator(),
45
+ detail("balance", props.balance ?? "n/a"),
46
+ detail("endpoint", props.endpoint ?? "n/a"),
47
+ ...(typeof props.trustScore === "number"
48
+ ? [detail("trust", (0, commerce_format_1.formatPercent)(Math.min(100, Math.max(0, props.trustScore / 5)), 1))]
49
+ : []),
50
+ ...(props.agreements
51
+ ? [
52
+ "",
53
+ "agreements",
54
+ detail("active", String(props.agreements.active)),
55
+ detail("verify", String(props.agreements.pendingVerification)),
56
+ detail("disputed", String(props.agreements.disputed)),
57
+ ]
58
+ : []),
59
+ ...(props.workroom
60
+ ? [
61
+ "",
62
+ "workroom",
63
+ detail("status", props.workroom.status),
64
+ detail("jobs", String(props.workroom.activeJobs ?? 0)),
65
+ detail("harness", props.workroom.harness ?? "n/a"),
66
+ ]
67
+ : []),
68
+ ]);
69
+ }
70
+ async function printDiscoverList(props) {
71
+ emit([
72
+ "◈ Discover",
73
+ `${props.title ?? "Discover Results"}${badge(props.status?.label)}`,
74
+ ...(props.summary ? [props.summary] : []),
75
+ separator(),
76
+ ...props.agents.flatMap((agent) => listItem(`#${agent.rank} ${agent.name}`, `${agent.wallet} · trust ${agent.trustScore}${agent.priceLabel ? ` · ${agent.priceLabel}` : ""}`, `${agent.serviceType}${agent.capabilitySummary ? ` · ${agent.capabilitySummary}` : ""}${typeof agent.compositeScore === "number" ? ` · score ${(0, commerce_format_1.formatPercent)(agent.compositeScore * 100, 1)}` : ""}`, agent.endpointStatus).map((line) => ` ${line}`)),
77
+ `${props.agents.length} ranked result${props.agents.length === 1 ? "" : "s"}`,
78
+ ]);
79
+ }
80
+ async function printHireCard(props) {
81
+ emit([
82
+ "◈ Hire",
83
+ `${props.providerName ? `${props.providerName} · ${props.providerAddress}` : props.providerAddress}${badge(props.status?.label)}`,
84
+ props.capability,
85
+ separator(),
86
+ detail("price", props.price),
87
+ detail("deadline", props.deadline ?? "open"),
88
+ detail("agreement", props.agreementId ?? "pending"),
89
+ detail("tx", props.txHash ?? "not submitted"),
90
+ ...((props.notes ?? []).length > 0
91
+ ? ["", "operator notes", ...(props.notes ?? []).map(bullet)]
92
+ : []),
93
+ ]);
94
+ }
95
+ async function printAgreementList(props) {
96
+ emit([
97
+ "◈ Agreements",
98
+ `${props.roleLabel ?? "Recent Agreements"}${badge(props.status?.label)}`,
99
+ ...(props.totalEscrowLabel ? [props.totalEscrowLabel] : []),
100
+ separator(),
101
+ ...(props.agreements.length > 0
102
+ ? props.agreements.flatMap((agreement) => listItem(`#${agreement.id} ${agreement.counterparty}`, `${agreement.serviceType}${agreement.price ? ` · ${agreement.price}` : ""}`, agreement.verifyWindowMinutes !== undefined
103
+ ? `verify window ${(0, commerce_format_1.formatCountdown)(agreement.verifyWindowMinutes)}`
104
+ : agreement.deadlineMinutes !== undefined
105
+ ? `deadline ${(0, commerce_format_1.formatCountdown)(agreement.deadlineMinutes)}`
106
+ : undefined, agreement.status).map((line) => ` ${line}`))
107
+ : [" No agreements found."]),
108
+ ]);
109
+ }
110
+ async function printComputeCard(props) {
111
+ emit([
112
+ "◈ Compute Session",
113
+ `${props.sessionId}${badge(props.status?.label)}`,
114
+ `${props.provider} · ${props.gpuSpec}`,
115
+ separator(),
116
+ detail("rate", props.rateLabel),
117
+ detail("consumed", props.consumedLabel ?? "n/a"),
118
+ detail("cost", props.costLabel ?? "n/a"),
119
+ detail("remaining", props.remainingLabel ?? "n/a"),
120
+ ...(props.utilizationPercent !== undefined
121
+ ? [detail("utilization", (0, commerce_format_1.formatPercent)(props.utilizationPercent, 2))]
122
+ : []),
123
+ ]);
124
+ }
125
+ async function printSubscribeCard(props) {
126
+ emit([
127
+ "◈ Subscription",
128
+ `${props.provider}${badge(props.status?.label)}`,
129
+ props.planId,
130
+ separator(),
131
+ detail("rate", props.rateLabel),
132
+ detail("months", String(props.months ?? 1)),
133
+ detail("renewal", props.nextRenewalLabel ?? "immediate access"),
134
+ detail("payments", props.paymentOptions?.length ? props.paymentOptions.join(", ") : "subscription"),
135
+ ...((props.accessSummary ?? []).length > 0
136
+ ? ["", "access", ...(props.accessSummary ?? []).map(bullet)]
137
+ : []),
138
+ ]);
139
+ }
140
+ async function printRoundsList(props) {
141
+ emit([
142
+ "◈ Arena",
143
+ `${props.title ?? "Arena Rounds"}${badge(props.status?.label)}`,
144
+ separator(),
145
+ ...(props.rounds.length > 0
146
+ ? props.rounds.flatMap((round) => listItem(`#${round.id} ${round.question}`, `${round.category ?? "uncategorized"} · ${round.timingLabel}`, `YES ${round.yesLabel} · NO ${round.noLabel}`, round.resolved ? (round.outcomeLabel ?? "resolved") : "open").map((line) => ` ${line}`))
147
+ : [" No arena rounds found."]),
148
+ "Built for round boards and live resolution views.",
149
+ ]);
150
+ }
151
+ async function printSquadCard(props) {
152
+ emit([
153
+ "◈ Squad",
154
+ `${props.name}${badge(props.status?.label ?? props.statusLabel)}`,
155
+ props.id,
156
+ separator(),
157
+ detail("domain", props.domainTag),
158
+ detail("members", String(props.memberCount)),
159
+ detail("invite", props.inviteOnly ? "yes" : "no"),
160
+ detail("creator", props.creator ?? "n/a"),
161
+ ...((props.members ?? []).length > 0
162
+ ? ["", "members", ...(props.members ?? []).map((member) => bullet(`${member.agent}${member.role ? ` · ${member.role}` : ""}${member.trustScore !== undefined ? ` · trust ${member.trustScore}` : ""}`))]
163
+ : []),
164
+ ...((props.briefings ?? []).length > 0
165
+ ? ["", "briefings", ...(props.briefings ?? []).map((briefing) => bullet(`${briefing.preview}${briefing.publishedLabel ? ` · ${briefing.publishedLabel}` : ""}${briefing.tags?.length ? ` · ${briefing.tags.join(", ")}` : ""}`))]
166
+ : []),
167
+ ]);
168
+ }
169
+ async function printProfileCard(props) {
170
+ emit([
171
+ "◈ Agent Profile",
172
+ `${props.name ?? props.address}${badge(props.status?.label ?? (props.isActive ? "active" : "inactive"))}`,
173
+ props.endpoint ?? "",
174
+ separator(),
175
+ detail("address", `${props.address.slice(0, 6)}…${props.address.slice(-4)}`),
176
+ ...(props.serviceType ? [detail("service", props.serviceType)] : []),
177
+ ...(typeof props.trustScore === "number" ? [detail("trust", String(props.trustScore))] : []),
178
+ ...(typeof props.totalAgreements === "number"
179
+ ? [detail("agreements", `${props.totalAgreements} completed · ${props.disputes ?? 0} disputes`)]
180
+ : []),
181
+ ...(props.capabilities?.length
182
+ ? [
183
+ "",
184
+ "capabilities",
185
+ ...props.capabilities.map((c, i) => ` ${i === (props.capabilities?.length ?? 0) - 1 ? "└─" : "├─"} ${c}`),
186
+ ]
187
+ : []),
188
+ ...(props.latestStatus ? [detail("latest", props.latestStatus)] : []),
189
+ ]);
190
+ }
191
+ async function printStandings(props) {
192
+ emit([
193
+ "◈ Arena Standings",
194
+ props.title ?? "Global Leaderboard",
195
+ separator(),
196
+ ...props.entries.flatMap((e) => [
197
+ ` #${String(e.rank).padStart(2)} ${e.agent.padEnd(30)} ${String(e.wins).padStart(3)}W ${String(e.losses).padStart(3)}L ${e.netUsdc} USDC`,
198
+ ]),
199
+ `${props.entries.length} agents`,
200
+ ]);
201
+ }
202
+ async function printWorkroomCard(props) {
203
+ emit([
204
+ "◈ Workroom",
205
+ `${props.runtime ?? "Governed execution environment"}${badge(props.status?.label ?? props.statusLabel)}`,
206
+ separator(),
207
+ detail("harness", props.harness ?? "n/a"),
208
+ detail("queue", String(props.queueDepth ?? props.activeJobs?.length ?? 0)),
209
+ detail("policy", props.policyHash ?? "n/a"),
210
+ ...((props.activeJobs ?? []).length > 0
211
+ ? ["", "jobs", ...(props.activeJobs ?? []).map((job) => bullet(`${job.id} · ${job.status}${job.harness ? ` · ${job.harness}` : ""}${job.task ? ` · ${job.task}` : ""}`))]
212
+ : []),
213
+ ]);
214
+ }
215
+ //# sourceMappingURL=command-renderers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-renderers.js","sourceRoot":"","sources":["../../src/tui/command-renderers.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function formatPercent(value: number, digits?: number): string;
2
+ export declare function formatCountdown(minutes?: number): string;
3
+ //# sourceMappingURL=commerce-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commerce-format.d.ts","sourceRoot":"","sources":["../../src/tui/commerce-format.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,MAAM,CAG/D;AAED,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAMxD"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatPercent = formatPercent;
4
+ exports.formatCountdown = formatCountdown;
5
+ function formatPercent(value, digits = 0) {
6
+ if (!Number.isFinite(value))
7
+ return "0%";
8
+ return `${value.toFixed(digits)}%`;
9
+ }
10
+ function formatCountdown(minutes) {
11
+ if (minutes === undefined || minutes === null || !Number.isFinite(minutes))
12
+ return "n/a";
13
+ if (minutes < 60)
14
+ return `${Math.max(0, Math.round(minutes))}m`;
15
+ const hours = Math.floor(minutes / 60);
16
+ const mins = Math.round(minutes % 60);
17
+ return `${hours}h ${mins}m`;
18
+ }
19
+ //# sourceMappingURL=commerce-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commerce-format.js","sourceRoot":"","sources":["../../src/tui/commerce-format.ts"],"names":[],"mappings":";;AAAA,sCAGC;AAED,0CAMC;AAXD,SAAgB,aAAa,CAAC,KAAa,EAAE,MAAM,GAAG,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;AACrC,CAAC;AAED,SAAgB,eAAe,CAAC,OAAgB;IAC9C,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACzF,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC;IAChE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACtC,OAAO,GAAG,KAAK,KAAK,IAAI,GAAG,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { DiscoverAgent } from "./DiscoverList";
2
+ export interface AgentPickerProps {
3
+ agents: DiscoverAgent[];
4
+ onSelect: (agent: DiscoverAgent | null) => void;
5
+ }
6
+ export declare function AgentPicker({ agents, onSelect }: AgentPickerProps): import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=AgentPicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentPicker.d.ts","sourceRoot":"","sources":["../../../../src/tui/components/commerce/AgentPicker.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,KAAK,IAAI,CAAC;CACjD;AAED,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,gBAAgB,2CAkCjE"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AgentPicker = AgentPicker;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const ink_1 = require("ink");
7
+ function AgentPicker({ agents, onSelect }) {
8
+ const [selectedIndex, setSelectedIndex] = (0, react_1.useState)(0);
9
+ (0, ink_1.useInput)((input, key) => {
10
+ if (key.upArrow) {
11
+ setSelectedIndex((i) => Math.max(0, i - 1));
12
+ }
13
+ else if (key.downArrow) {
14
+ setSelectedIndex((i) => Math.min(agents.length - 1, i + 1));
15
+ }
16
+ else if (key.return) {
17
+ onSelect(agents[selectedIndex] ?? null);
18
+ }
19
+ else if (key.escape || input === "q") {
20
+ onSelect(null);
21
+ }
22
+ });
23
+ return ((0, jsx_runtime_1.jsxs)(ink_1.Text, { children: [agents.map((agent, i) => {
24
+ const isLast = i === agents.length - 1;
25
+ const border = isLast ? "└─" : "├─";
26
+ const isSelected = i === selectedIndex;
27
+ const statusBadge = agent.endpointStatus === "online" ? "◉" : agent.endpointStatus === "offline" ? "⊘" : "○";
28
+ const price = agent.priceLabel ?? "?";
29
+ const line = ` #${agent.rank} ${border} ${agent.name.padEnd(20)} trust ${String(agent.trustScore).padStart(4)} ${price.padEnd(12)} ${statusBadge}`;
30
+ return ((0, jsx_runtime_1.jsxs)(ink_1.Text, { color: isSelected ? "cyan" : undefined, bold: isSelected, children: [isSelected ? "▶ " : " ", line.trimStart(), "\n"] }, agent.wallet));
31
+ }), "\n", (0, jsx_runtime_1.jsx)(ink_1.Text, { dimColor: true, children: "\u2191\u2193 select \u00B7 Enter pick \u00B7 Esc cancel" })] }));
32
+ }
33
+ //# sourceMappingURL=AgentPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentPicker.js","sourceRoot":"","sources":["../../../../src/tui/components/commerce/AgentPicker.tsx"],"names":[],"mappings":";;AASA,kCAkCC;;AA3CD,iCAAmD;AACnD,6BAAqC;AAQrC,SAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAoB;IAChE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAC,CAAC,CAAC,CAAC;IAEtD,IAAA,cAAQ,EAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YACzB,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9D,CAAC;aAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACtB,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YACvC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,wBAAC,UAAI,eACF,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;gBACvB,MAAM,MAAM,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;gBACvC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;gBACpC,MAAM,UAAU,GAAG,CAAC,KAAK,aAAa,CAAC;gBACvC,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC7G,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC;gBACtC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC;gBACvJ,OAAO,CACL,wBAAC,UAAI,IAAoB,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,aAC9E,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,KADxC,KAAK,CAAC,MAAM,CAEhB,CACR,CAAC;YACJ,CAAC,CAAC,EACD,IAAI,EACL,uBAAC,UAAI,IAAC,QAAQ,8EAA2C,IACpD,CACR,CAAC;AACJ,CAAC"}