@robota-sdk/agent-transport 3.0.0-beta.65 → 3.0.0-beta.66

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 (143) hide show
  1. package/README.md +97 -0
  2. package/dist/node/chunk-Bmb41Sf3.cjs +1 -0
  3. package/dist/node/headless/index.cjs +1 -1
  4. package/dist/node/headless/index.d.ts +2 -2
  5. package/dist/node/headless/index.js +1 -1
  6. package/dist/node/headless-B8yWkXW_.js +15 -0
  7. package/dist/node/headless-B8yWkXW_.js.map +1 -0
  8. package/dist/node/headless-Dp3kQVmo.cjs +14 -0
  9. package/dist/node/http/index.cjs +1 -1
  10. package/dist/node/http/index.d.ts +1 -1
  11. package/dist/node/http/index.js +1 -1
  12. package/dist/node/{http-DwO1AHG-.js → http-Br10Ps8m.js} +1 -1
  13. package/dist/node/http-Br10Ps8m.js.map +1 -0
  14. package/dist/node/http-Da6Kw4oy.cjs +1 -0
  15. package/dist/node/{index-B_rcr14p.d.ts → index-C5KNEBO9.d.ts} +2 -2
  16. package/dist/node/{index-B_rcr14p.d.ts.map → index-C5KNEBO9.d.ts.map} +1 -1
  17. package/dist/node/{index-Y0zHb1Bz.d.ts → index-C7DvsmEg.d.ts} +2 -2
  18. package/dist/node/{index-Y0zHb1Bz.d.ts.map → index-C7DvsmEg.d.ts.map} +1 -1
  19. package/dist/node/index-C9LWCL4l.d.ts.map +1 -1
  20. package/dist/node/{index-k3TUjA-T.d.ts → index-CP7kaYMg.d.ts} +17 -2
  21. package/dist/node/index-CP7kaYMg.d.ts.map +1 -0
  22. package/dist/node/index-CQsMNXAh.d.ts +67 -0
  23. package/dist/node/index-CQsMNXAh.d.ts.map +1 -0
  24. package/dist/node/{index-nBlMTFkZ.d.ts → index-DOA2KIYt.d.ts} +2 -2
  25. package/dist/node/{index-nBlMTFkZ.d.ts.map → index-DOA2KIYt.d.ts.map} +1 -1
  26. package/dist/node/{index-D34WUfFH.d.ts → index-Gby9H4q2.d.ts} +17 -2
  27. package/dist/node/index-Gby9H4q2.d.ts.map +1 -0
  28. package/dist/node/{index-CvXLpjJO.d.ts → index-X2Zg8FEY.d.ts} +2 -2
  29. package/dist/node/{index-CEs25wVk.d.ts.map → index-X2Zg8FEY.d.ts.map} +1 -1
  30. package/dist/node/index-rGmGTQ9o.d.ts +67 -0
  31. package/dist/node/index-rGmGTQ9o.d.ts.map +1 -0
  32. package/dist/node/{index-CEs25wVk.d.ts → index-yvGShbDx.d.ts} +2 -2
  33. package/dist/node/{index-CvXLpjJO.d.ts.map → index-yvGShbDx.d.ts.map} +1 -1
  34. package/dist/node/index.cjs +1 -1
  35. package/dist/node/index.d.ts +28 -6
  36. package/dist/node/index.d.ts.map +1 -0
  37. package/dist/node/index.js +2 -1
  38. package/dist/node/index.js.map +1 -0
  39. package/dist/node/mcp/index.cjs +1 -1
  40. package/dist/node/mcp/index.d.ts +1 -1
  41. package/dist/node/mcp/index.js +1 -1
  42. package/dist/node/{mcp-BXBwF6Wu.js → mcp-BAujHOMr.js} +1 -1
  43. package/dist/node/mcp-BAujHOMr.js.map +1 -0
  44. package/dist/node/mcp-Bl8jUfev.cjs +1 -0
  45. package/dist/node/tui/index.cjs +1 -1
  46. package/dist/node/tui/index.d.ts +2 -2
  47. package/dist/node/tui/index.js +1 -1
  48. package/dist/node/tui-B8G3yHrL.cjs +24 -0
  49. package/dist/node/tui-DUIfVw3G.js +25 -0
  50. package/dist/node/tui-DUIfVw3G.js.map +1 -0
  51. package/dist/node/ws/index.cjs +1 -1
  52. package/dist/node/ws/index.d.ts +1 -1
  53. package/dist/node/ws/index.js +1 -1
  54. package/dist/node/{ws-B-oRccFl.js → ws-BWel8nzl.js} +1 -1
  55. package/dist/node/ws-BWel8nzl.js.map +1 -0
  56. package/dist/node/ws-tCjj2gPu.cjs +1 -0
  57. package/package.json +19 -18
  58. package/src/headless/cli-input.ts +50 -0
  59. package/src/headless/headless-runner.ts +2 -1
  60. package/src/headless/headless-stream-json.ts +1 -0
  61. package/src/headless/headless-transport.ts +3 -2
  62. package/src/headless/index.ts +2 -0
  63. package/src/headless/print-terminal.ts +57 -0
  64. package/src/http/http-transport.ts +3 -3
  65. package/src/http/routes.ts +2 -1
  66. package/src/index.ts +2 -1
  67. package/src/mcp/mcp-server.ts +1 -0
  68. package/src/mcp/mcp-transport.ts +3 -2
  69. package/src/transport-registry.ts +100 -0
  70. package/src/tui/App.tsx +52 -34
  71. package/src/tui/BackgroundTaskPanel.tsx +4 -2
  72. package/src/tui/CjkTextInput.tsx +3 -2
  73. package/src/tui/ConfirmPrompt.tsx +2 -1
  74. package/src/tui/ExecutionWorkspaceDetailPane.tsx +7 -5
  75. package/src/tui/ExecutionWorkspaceSwitcher.tsx +8 -6
  76. package/src/tui/InputArea.tsx +20 -19
  77. package/src/tui/InteractivePrompt.tsx +5 -3
  78. package/src/tui/ListPicker.tsx +2 -1
  79. package/src/tui/MenuSelect.tsx +2 -1
  80. package/src/tui/MessageList.tsx +8 -6
  81. package/src/tui/PermissionPrompt.tsx +5 -3
  82. package/src/tui/PluginTUI.tsx +5 -3
  83. package/src/tui/SessionPicker.tsx +4 -2
  84. package/src/tui/SessionStatusBar.tsx +7 -3
  85. package/src/tui/SlashAutocomplete.tsx +4 -3
  86. package/src/tui/StatusBar.tsx +5 -3
  87. package/src/tui/StreamingIndicator.tsx +4 -2
  88. package/src/tui/TextPrompt.tsx +2 -1
  89. package/src/tui/ToolCommandOutput.tsx +4 -2
  90. package/src/tui/ToolDiffBlock.tsx +4 -2
  91. package/src/tui/TransportTUI.tsx +3 -2
  92. package/src/tui/UpdateNotice.tsx +1 -1
  93. package/src/tui/UsageSummaryEntry.tsx +3 -2
  94. package/src/tui/WaveText.tsx +1 -1
  95. package/src/tui/__tests__/fixtures/provider-setup-prompt-driver.tsx +7 -4
  96. package/src/tui/background-task-row-format.ts +2 -1
  97. package/src/tui/command-interaction-registry.ts +66 -0
  98. package/src/tui/command-interaction.ts +9 -35
  99. package/src/tui/create-default-tui-cli-adapter.ts +42 -0
  100. package/src/tui/flows/input-area-flow.ts +3 -2
  101. package/src/tui/hooks/command-effect-handler.ts +4 -3
  102. package/src/tui/hooks/side-effects-types.ts +1 -1
  103. package/src/tui/hooks/use-interactive-session-init.ts +4 -2
  104. package/src/tui/hooks/useAutocomplete.ts +1 -0
  105. package/src/tui/hooks/useInteractiveSession.ts +22 -19
  106. package/src/tui/hooks/usePermissionQueue.ts +2 -1
  107. package/src/tui/hooks/usePluginCallbacks.ts +1 -0
  108. package/src/tui/hooks/usePluginScreenData.ts +2 -1
  109. package/src/tui/hooks/useSideEffects.ts +8 -6
  110. package/src/tui/hooks/useSlashRouting.ts +4 -3
  111. package/src/tui/hooks/useStatusLineSettings.ts +4 -2
  112. package/src/tui/index.ts +3 -1
  113. package/src/tui/interactions/CommandConfirm.tsx +2 -1
  114. package/src/tui/interactions/CommandPicker.tsx +2 -1
  115. package/src/tui/render-markdown.ts +2 -1
  116. package/src/tui/render.tsx +12 -28
  117. package/src/tui/tui-cli-adapter-context.tsx +1 -0
  118. package/src/tui/tui-cli-adapter.ts +1 -1
  119. package/src/tui/tui-transport.ts +5 -4
  120. package/src/tui/utils/edit-diff.ts +1 -0
  121. package/src/tui/utils/tool-call-extractor.ts +1 -0
  122. package/src/ws/ws-background-messages.ts +1 -1
  123. package/src/ws/ws-handler.ts +6 -5
  124. package/src/ws/ws-transport-configurable.ts +6 -3
  125. package/src/ws/ws-transport.ts +3 -2
  126. package/dist/node/headless-CWEpJXFK.js +0 -7
  127. package/dist/node/headless-CWEpJXFK.js.map +0 -1
  128. package/dist/node/headless-DJ5pnxM6.cjs +0 -6
  129. package/dist/node/http-CuQE6V6t.cjs +0 -1
  130. package/dist/node/http-DwO1AHG-.js.map +0 -1
  131. package/dist/node/index-CSgNoyPK.d.ts +0 -85
  132. package/dist/node/index-CSgNoyPK.d.ts.map +0 -1
  133. package/dist/node/index-D34WUfFH.d.ts.map +0 -1
  134. package/dist/node/index-_dNm-2J3.d.ts +0 -85
  135. package/dist/node/index-_dNm-2J3.d.ts.map +0 -1
  136. package/dist/node/index-k3TUjA-T.d.ts.map +0 -1
  137. package/dist/node/mcp-BXBwF6Wu.js.map +0 -1
  138. package/dist/node/mcp-BiJsIywJ.cjs +0 -1
  139. package/dist/node/tui-BIpIcT7-.cjs +0 -24
  140. package/dist/node/tui-DBLn1T15.js +0 -25
  141. package/dist/node/tui-DBLn1T15.js.map +0 -1
  142. package/dist/node/ws-B-oRccFl.js.map +0 -1
  143. package/dist/node/ws-XRTSFZOK.cjs +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index-CvXLpjJO.d.ts","names":[],"sources":["../../src/ws/ws-protocol.ts","../../src/ws/ws-handler.ts","../../src/ws/ws-transport.ts","../../src/ws/ws-transport-configurable.ts"],"mappings":";;;;;KAgBY,wBAAA;;KAGA,cAAA;EACN,IAAA;EAAgB,MAAA;AAAA;EAChB,IAAA;EAAiB,IAAA;EAAc,IAAA;AAAA;EAC/B,IAAA;AAAA;EACA,IAAA;AAAA;EACA,IAAA;AAAA;EACA,IAAA;AAAA;EACA,IAAA;AAAA;EACA,IAAA;AAAA;EACA,IAAA;AAAA;EACA,IAAA;EAA8B,MAAA,GAAS,yBAAA;AAAA;EACvC,IAAA;EAA6B,MAAA;AAAA;EAC7B,IAAA;AAAA;EACA,IAAA;EAAkC,OAAA;AAAA;EAClC,IAAA;EAAmC,OAAA;AAAA;EACnC,IAAA;EAAgC,MAAA;EAAgB,MAAA;AAAA;EAChD,IAAA;EAA+B,MAAA;AAAA;EAC/B,IAAA;EAA8B,MAAA;EAAgB,KAAA,EAAO,oBAAA;AAAA;EACrD,IAAA;EAAkC,MAAA;EAAgB,MAAA,GAAS,wBAAA;AAAA;AAAwB;AAAA,KAG7E,cAAA;EACN,IAAA;EAAoB,KAAA;AAAA;EACpB,IAAA;EAAsB,OAAA;AAAA;EACtB,IAAA;EAAoB,KAAA,EAAO,UAAA;AAAA;EAC3B,IAAA;EAAkB,KAAA,EAAO,UAAA;AAAA;EACzB,IAAA;EAAkB,UAAA;AAAA;EAClB,IAAA;EAAkB,MAAA,EAAQ,gBAAA;AAAA;EAC1B,IAAA;EAAqB,MAAA,EAAQ,gBAAA;AAAA;EAC7B,IAAA;EAAe,OAAA;AAAA;EAEf,IAAA;EACA,IAAA;EACA,OAAA;EACA,OAAA;EACA,IAAA,GAAO,cAAA;AAAA;EAEP,IAAA;EAAkB,QAAA,EAAU,UAAA,CAAW,kBAAA;AAAA;EACvC,IAAA;EAAiB,KAAA,EAAO,UAAA,CAAW,kBAAA;AAAA;EACnC,IAAA;EAAmB,SAAA;AAAA;EACnB,IAAA;EAAiB,OAAA;AAAA;EACjB,IAAA;EAAmC,QAAA,EAAU,2BAAA;AAAA;EAC7C,IAAA;EAA+B,KAAA,EAAO,oBAAA;AAAA;EACtC,IAAA;EAAoC,KAAA,EAAO,wBAAA;AAAA;EAC3C,IAAA;EAA0B,KAAA,EAAO,oBAAA;AAAA;EACjC,IAAA;EAAyB,MAAA;EAAgB,IAAA,EAAM,oBAAA;AAAA;EAC/C,IAAA;EAA+B,MAAA,EAAQ,wBAAA;AAAA;EACvC,IAAA;EAA8B,OAAA;EAAiB,KAAA,EAAO,wBAAA;AAAA;EACtD,IAAA;EAA6B,MAAA;EAAgB,IAAA,EAAM,sBAAA;AAAA;EAEnD,IAAA;EACA,MAAA,EAAQ,wBAAA;EACR,MAAA;EACA,OAAA;EACA,OAAA;AAAA;EAEA,IAAA;EAAwB,OAAA;AAAA;;;UCnDb,iBAAA;;EAEf,OAAA,EAAS,mBAAA;EDUgD;ECRzD,IAAA,GAAO,OAAA,EAAS,cAAc;AAAA;;;;;;;;;;;;;;;;;;;iBAqBhB,eAAA,CAAgB,OAAA,EAAS,iBAAiB;EACxD,SAAA,GAAY,IAAA;EACZ,OAAA;AAAA;;;UCvCe,mBAAA;EFOL;EELV,IAAA,GAAO,OAAA,EAAS,cAAc;AAAA;AAAA,iBAGhB,iBAAA,CACd,OAAA,EAAS,mBAAA,GACR,iBAAA,CAAkB,mBAAA;EAAyB,SAAA,IAAa,IAAA;AAAA;;;UCH1C,kBAAA;EACf,IAAA;EACA,UAAU;AAAA;AAAA,cAGC,WAAA,YAAuB,sBAAA,CAAuB,mBAAA;EAAA,SAChD,IAAA;EAAA,SACA,cAAA;EAAA,SACA,aAAA;;;;;;;;;;;;UASD,OAAA;EAAA,QACA,MAAA;EAAA,iBACS,IAAA;EAAA,iBACA,UAAA;cAEL,MAAA,GAAQ,kBAAA;EAKpB,MAAA,CAAO,OAAA,EAAS,mBAAA;EAIV,KAAA,CAAA,GAAS,OAAA;EAMT,IAAA,CAAA,GAAQ,OAAA;EAKd,eAAA,CAAgB,OAAA,EAAS,MAAA,SAAe,eAAA;EAAA,QAQhC,aAAA;EAAA,QAYA,OAAA;AAAA"}
1
+ {"version":3,"file":"index-yvGShbDx.d.ts","names":[],"sources":["../../src/ws/ws-protocol.ts","../../src/ws/ws-handler.ts","../../src/ws/ws-transport.ts","../../src/ws/ws-transport-configurable.ts"],"mappings":";;;;;KAgBY,wBAAA;;KAGA,cAAA;EACN,IAAA;EAAgB,MAAA;AAAA;EAChB,IAAA;EAAiB,IAAA;EAAc,IAAA;AAAA;EAC/B,IAAA;AAAA;EACA,IAAA;AAAA;EACA,IAAA;AAAA;EACA,IAAA;AAAA;EACA,IAAA;AAAA;EACA,IAAA;AAAA;EACA,IAAA;AAAA;EACA,IAAA;EAA8B,MAAA,GAAS,yBAAA;AAAA;EACvC,IAAA;EAA6B,MAAA;AAAA;EAC7B,IAAA;AAAA;EACA,IAAA;EAAkC,OAAA;AAAA;EAClC,IAAA;EAAmC,OAAA;AAAA;EACnC,IAAA;EAAgC,MAAA;EAAgB,MAAA;AAAA;EAChD,IAAA;EAA+B,MAAA;AAAA;EAC/B,IAAA;EAA8B,MAAA;EAAgB,KAAA,EAAO,oBAAA;AAAA;EACrD,IAAA;EAAkC,MAAA;EAAgB,MAAA,GAAS,wBAAA;AAAA;AAAwB;AAAA,KAG7E,cAAA;EACN,IAAA;EAAoB,KAAA;AAAA;EACpB,IAAA;EAAsB,OAAA;AAAA;EACtB,IAAA;EAAoB,KAAA,EAAO,UAAA;AAAA;EAC3B,IAAA;EAAkB,KAAA,EAAO,UAAA;AAAA;EACzB,IAAA;EAAkB,UAAA;AAAA;EAClB,IAAA;EAAkB,MAAA,EAAQ,gBAAA;AAAA;EAC1B,IAAA;EAAqB,MAAA,EAAQ,gBAAA;AAAA;EAC7B,IAAA;EAAe,OAAA;AAAA;EAEf,IAAA;EACA,IAAA;EACA,OAAA;EACA,OAAA;EACA,IAAA,GAAO,cAAA;AAAA;EAEP,IAAA;EAAkB,QAAA,EAAU,UAAA,CAAW,kBAAA;AAAA;EACvC,IAAA;EAAiB,KAAA,EAAO,UAAA,CAAW,kBAAA;AAAA;EACnC,IAAA;EAAmB,SAAA;AAAA;EACnB,IAAA;EAAiB,OAAA;AAAA;EACjB,IAAA;EAAmC,QAAA,EAAU,2BAAA;AAAA;EAC7C,IAAA;EAA+B,KAAA,EAAO,oBAAA;AAAA;EACtC,IAAA;EAAoC,KAAA,EAAO,wBAAA;AAAA;EAC3C,IAAA;EAA0B,KAAA,EAAO,oBAAA;AAAA;EACjC,IAAA;EAAyB,MAAA;EAAgB,IAAA,EAAM,oBAAA;AAAA;EAC/C,IAAA;EAA+B,MAAA,EAAQ,wBAAA;AAAA;EACvC,IAAA;EAA8B,OAAA;EAAiB,KAAA,EAAO,wBAAA;AAAA;EACtD,IAAA;EAA6B,MAAA;EAAgB,IAAA,EAAM,sBAAA;AAAA;EAEnD,IAAA;EACA,MAAA,EAAQ,wBAAA;EACR,MAAA;EACA,OAAA;EACA,OAAA;AAAA;EAEA,IAAA;EAAwB,OAAA;AAAA;;;UClDb,iBAAA;;EAEf,OAAA,EAAS,mBAAA;EDSgD;ECPzD,IAAA,GAAO,OAAA,EAAS,cAAc;AAAA;;;;;;;;;;;;;;;;;;;iBAqBhB,eAAA,CAAgB,OAAA,EAAS,iBAAiB;EACxD,SAAA,GAAY,IAAA;EACZ,OAAA;AAAA;;;UCvCe,mBAAA;EFML;EEJV,IAAA,GAAO,OAAA,EAAS,cAAc;AAAA;AAAA,iBAGhB,iBAAA,CACd,OAAA,EAAS,mBAAA,GACR,iBAAA,CAAkB,mBAAA;EAAyB,SAAA,IAAa,IAAA;AAAA;;;UCD1C,kBAAA;EACf,IAAA;EACA,UAAU;AAAA;AAAA,cAGC,WAAA,YAAuB,sBAAA,CAAuB,mBAAA;EAAA,SAChD,IAAA;EAAA,SACA,cAAA;EAAA,SACA,aAAA;;;;;;;;;;;;UASD,OAAA;EAAA,QACA,MAAA;EAAA,iBACS,IAAA;EAAA,iBACA,UAAA;cAEL,MAAA,GAAQ,kBAAA;EAKpB,MAAA,CAAO,OAAA,EAAS,mBAAA;EAIV,KAAA,CAAA,GAAS,OAAA;EAMT,IAAA,CAAA,GAAQ,OAAA;EAKd,eAAA,CAAgB,OAAA,EAAS,MAAA,SAAe,eAAA;EAAA,QAQhC,aAAA;EAAA,QAYA,OAAA;AAAA"}
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./tui-BIpIcT7-.cjs`),t=require(`./headless-DJ5pnxM6.cjs`),n=require(`./http-CuQE6V6t.cjs`),r=require(`./ws-XRTSFZOK.cjs`),i=require(`./mcp-BiJsIywJ.cjs`);exports.TuiTransport=e.t,exports.WsTransport=r.t,exports.createAgentMcpServer=i.n,exports.createAgentRoutes=n.n,exports.createHeadlessRunner=t.n,exports.createHeadlessTransport=t.t,exports.createHttpTransport=n.t,exports.createMcpTransport=i.t,exports.createWsHandler=r.r,exports.createWsTransport=r.n;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-Bmb41Sf3.cjs`);const e=require(`./headless-Dp3kQVmo.cjs`),t=require(`./http-Da6Kw4oy.cjs`),n=require(`./ws-tCjj2gPu.cjs`),r=require(`./mcp-Bl8jUfev.cjs`),i=require(`./tui-B8G3yHrL.cjs`);let a=require(`@robota-sdk/agent-framework`);var o=class{entries=new Map;settingsPath;constructor(e){this.settingsPath=e}register(e){this.entries.set(e.name,e)}getAll(){let e=this.readTransportSettings();return Array.from(this.entries.values()).map(t=>({transport:t,config:this.resolveConfig(t,e[t.name])}))}getEnabled(){return this.getAll().filter(e=>e.config.enabled).map(e=>e.transport)}async setEnabled(e,t){let n=(0,a.readSettings)(this.settingsPath),r=n.transports??{};r[e]={...r[e]??{},enabled:t},n.transports=r,(0,a.writeSettings)(this.settingsPath,n)}async setOptions(e,t){let n=(0,a.readSettings)(this.settingsPath),r=n.transports??{};r[e]={...r[e]??{},options:t},n.transports=r,(0,a.writeSettings)(this.settingsPath,n)}async startAll(e){let t=this.getEnabled();for(let n of t)n.attach(e),await n.start()}async stopAll(){for(let e of this.entries.values())await e.stop()}resolveConfig(e,t){return{enabled:t?.enabled??e.defaultEnabled,options:t?.options??{}}}readTransportSettings(){let e=(0,a.readSettings)(this.settingsPath).transports;return!e||typeof e!=`object`||Array.isArray(e)?{}:e}};function s(){let e=new o((0,a.getUserSettingsPath)());return e.register(new n.t),e}exports.PrintTerminal=e.i,exports.TransportRegistry=o,exports.TuiTransport=i.n,exports.WsTransport=n.t,exports.createAgentMcpServer=r.n,exports.createAgentRoutes=t.n,exports.createDefaultTransportRegistry=s,exports.createDefaultTuiCliAdapter=i.t,exports.createHeadlessRunner=e.n,exports.createHeadlessTransport=e.t,exports.createHttpTransport=t.t,exports.createMcpTransport=r.t,exports.createWsHandler=n.r,exports.createWsTransport=n.n,exports.promptInput=e.r;
@@ -1,6 +1,28 @@
1
- import { a as createHeadlessRunner, i as TOutputFormat, n as createHeadlessTransport, r as IHeadlessRunnerOptions, t as IHeadlessTransportOptions } from "./index-D34WUfFH.js";
2
- import { a as createAgentRoutes, i as TSessionFactory, n as createHttpTransport, r as IAgentRoutesOptions, t as IHttpTransportOptions } from "./index-nBlMTFkZ.js";
3
- import { a as ITuiPickerInteraction, c as TOnMissingArgsAction, i as ITuiConfirmInteraction, l as ITuiCliAdapter, n as IRenderOptions, o as ITuiPickerItem, r as ITuiCommandInteraction, s as TAnyTuiCommandInteraction, t as TuiTransport } from "./index-CSgNoyPK.js";
4
- import { a as IWsTransportConfig, c as createWsTransport, d as TClientMessage, f as TServerMessage, i as TExecutionWorkspaceStatus, l as IWsHandlerOptions, n as IExecutionWorkspaceSnapshot, o as WsTransport, r as TExecutionAttention, s as IWsTransportOptions, t as IExecutionWorkspaceEntry, u as createWsHandler } from "./index-CvXLpjJO.js";
5
- import { i as createAgentMcpServer, n as createMcpTransport, r as IAgentMcpOptions, t as IMcpTransportOptions } from "./index-B_rcr14p.js";
6
- export { type IAgentMcpOptions, type IAgentRoutesOptions, type IExecutionWorkspaceEntry, type IExecutionWorkspaceSnapshot, type IHeadlessRunnerOptions, type IHeadlessTransportOptions, type IHttpTransportOptions, type IMcpTransportOptions, type IRenderOptions, type ITuiCliAdapter, type ITuiCommandInteraction, type ITuiConfirmInteraction, type ITuiPickerInteraction, type ITuiPickerItem, type IWsHandlerOptions, type IWsTransportConfig, type IWsTransportOptions, type TAnyTuiCommandInteraction, type TClientMessage, type TExecutionAttention, type TExecutionWorkspaceStatus, type TOnMissingArgsAction, type TOutputFormat, type TServerMessage, type TSessionFactory, TuiTransport, WsTransport, createAgentMcpServer, createAgentRoutes, createHeadlessRunner, createHeadlessTransport, createHttpTransport, createMcpTransport, createWsHandler, createWsTransport };
1
+ import { a as createHeadlessRunner, i as TOutputFormat, n as createHeadlessTransport, o as promptInput, r as IHeadlessRunnerOptions, s as PrintTerminal, t as IHeadlessTransportOptions } from "./index-Gby9H4q2.js";
2
+ import { a as createAgentRoutes, i as TSessionFactory, n as createHttpTransport, r as IAgentRoutesOptions, t as IHttpTransportOptions } from "./index-DOA2KIYt.js";
3
+ import { a as IWsTransportConfig, c as createWsTransport, d as TClientMessage, f as TServerMessage, i as TExecutionWorkspaceStatus, l as IWsHandlerOptions, n as IExecutionWorkspaceSnapshot, o as WsTransport, r as TExecutionAttention, s as IWsTransportOptions, t as IExecutionWorkspaceEntry, u as createWsHandler } from "./index-yvGShbDx.js";
4
+ import { i as createAgentMcpServer, n as createMcpTransport, r as IAgentMcpOptions, t as IMcpTransportOptions } from "./index-C7DvsmEg.js";
5
+ import { a as TAnyTuiCommandInteraction, c as createDefaultTuiCliAdapter, d as ITuiCliAdapter, i as ITuiPickerItem, l as TuiTransport, n as ITuiConfirmInteraction, o as TOnMissingArgsAction, r as ITuiPickerInteraction, s as IDefaultTuiCliAdapterOptions, t as ITuiCommandInteraction, u as ITuiRenderOptions } from "./index-CQsMNXAh.js";
6
+ import { TUniversalValue } from "@robota-sdk/agent-core";
7
+ import { IInteractiveSession } from "@robota-sdk/agent-framework";
8
+ import { IConfigurableTransport, ITransportEntry } from "@robota-sdk/agent-interface-transport";
9
+
10
+ //#region src/transport-registry.d.ts
11
+ declare class TransportRegistry {
12
+ private readonly entries;
13
+ private readonly settingsPath;
14
+ constructor(settingsPath: string);
15
+ register(transport: IConfigurableTransport<IInteractiveSession>): void;
16
+ getAll(): ITransportEntry<IInteractiveSession>[];
17
+ getEnabled(): IConfigurableTransport<IInteractiveSession>[];
18
+ setEnabled(name: string, enabled: boolean): Promise<void>;
19
+ setOptions(name: string, options: Record<string, TUniversalValue>): Promise<void>;
20
+ startAll(session: IInteractiveSession): Promise<void>;
21
+ stopAll(): Promise<void>;
22
+ private resolveConfig;
23
+ private readTransportSettings;
24
+ }
25
+ declare function createDefaultTransportRegistry(): TransportRegistry;
26
+ //#endregion
27
+ export { type IAgentMcpOptions, type IAgentRoutesOptions, type IDefaultTuiCliAdapterOptions, type IExecutionWorkspaceEntry, type IExecutionWorkspaceSnapshot, type IHeadlessRunnerOptions, type IHeadlessTransportOptions, type IHttpTransportOptions, type IMcpTransportOptions, type ITuiCliAdapter, type ITuiCommandInteraction, type ITuiConfirmInteraction, type ITuiPickerInteraction, type ITuiPickerItem, type ITuiRenderOptions, type IWsHandlerOptions, type IWsTransportConfig, type IWsTransportOptions, PrintTerminal, type TAnyTuiCommandInteraction, type TClientMessage, type TExecutionAttention, type TExecutionWorkspaceStatus, type TOnMissingArgsAction, type TOutputFormat, type TServerMessage, type TSessionFactory, TransportRegistry, TuiTransport, WsTransport, createAgentMcpServer, createAgentRoutes, createDefaultTransportRegistry, createDefaultTuiCliAdapter, createHeadlessRunner, createHeadlessTransport, createHttpTransport, createMcpTransport, createWsHandler, createWsTransport, promptInput };
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/transport-registry.ts"],"mappings":";;;;;;;;;;cAoBa,iBAAA;EAAA,iBACM,OAAA;EAAA,iBACA,YAAA;cAEL,YAAA;EAIZ,QAAA,CAAS,SAAA,EAAW,sBAAA,CAAuB,mBAAA;EAI3C,MAAA,CAAA,GAAU,eAAA,CAAgB,mBAAA;EAQ1B,UAAA,CAAA,GAAc,sBAAA,CAAuB,mBAAA;EAM/B,UAAA,CAAW,IAAA,UAAc,OAAA,YAAmB,OAAA;EAS5C,UAAA,CAAW,IAAA,UAAc,OAAA,EAAS,MAAA,SAAe,eAAA,IAAmB,OAAA;EASpE,QAAA,CAAS,OAAA,EAAS,mBAAA,GAAsB,OAAA;EAQxC,OAAA,CAAA,GAAW,OAAA;EAAA,QAMT,aAAA;EAAA,QASA,qBAAA;AAAA;AAAA,iBAQM,8BAAA,CAAA,GAAkC,iBAAiB"}
@@ -1 +1,2 @@
1
- import{t as e}from"./tui-DBLn1T15.js";import{n as t,t as n}from"./headless-CWEpJXFK.js";import{n as r,t as i}from"./http-DwO1AHG-.js";import{n as a,r as o,t as s}from"./ws-B-oRccFl.js";import{n as c,t as l}from"./mcp-BXBwF6Wu.js";export{e as TuiTransport,s as WsTransport,c as createAgentMcpServer,r as createAgentRoutes,t as createHeadlessRunner,n as createHeadlessTransport,i as createHttpTransport,l as createMcpTransport,o as createWsHandler,a as createWsTransport};
1
+ import{i as e,n as t,r as n,t as r}from"./headless-B8yWkXW_.js";import{n as i,t as a}from"./http-Br10Ps8m.js";import{n as o,r as s,t as c}from"./ws-BWel8nzl.js";import{n as l,t as u}from"./mcp-BAujHOMr.js";import{n as d,t as f}from"./tui-DUIfVw3G.js";import{getUserSettingsPath as p,readSettings as m,writeSettings as h}from"@robota-sdk/agent-framework";var g=class{entries=new Map;settingsPath;constructor(e){this.settingsPath=e}register(e){this.entries.set(e.name,e)}getAll(){let e=this.readTransportSettings();return Array.from(this.entries.values()).map(t=>({transport:t,config:this.resolveConfig(t,e[t.name])}))}getEnabled(){return this.getAll().filter(e=>e.config.enabled).map(e=>e.transport)}async setEnabled(e,t){let n=m(this.settingsPath),r=n.transports??{};r[e]={...r[e]??{},enabled:t},n.transports=r,h(this.settingsPath,n)}async setOptions(e,t){let n=m(this.settingsPath),r=n.transports??{};r[e]={...r[e]??{},options:t},n.transports=r,h(this.settingsPath,n)}async startAll(e){let t=this.getEnabled();for(let n of t)n.attach(e),await n.start()}async stopAll(){for(let e of this.entries.values())await e.stop()}resolveConfig(e,t){return{enabled:t?.enabled??e.defaultEnabled,options:t?.options??{}}}readTransportSettings(){let e=m(this.settingsPath).transports;return!e||typeof e!=`object`||Array.isArray(e)?{}:e}};function _(){let e=new g(p());return e.register(new c),e}export{e as PrintTerminal,g as TransportRegistry,d as TuiTransport,c as WsTransport,l as createAgentMcpServer,i as createAgentRoutes,_ as createDefaultTransportRegistry,f as createDefaultTuiCliAdapter,t as createHeadlessRunner,r as createHeadlessTransport,a as createHttpTransport,u as createMcpTransport,s as createWsHandler,o as createWsTransport,n as promptInput};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/transport-registry.ts"],"sourcesContent":["/**\n * TransportRegistry — manages IConfigurableTransport instances with settings-backed enable/disable.\n *\n * Settings file shape (under `transports` key in settings.json):\n * { \"ws\": { \"enabled\": true, \"options\": { \"port\": 7070 } } }\n */\n\nimport { getUserSettingsPath } from '@robota-sdk/agent-framework';\nimport { readSettings, writeSettings, type TSettingsData } from '@robota-sdk/agent-framework';\n\nimport { WsTransport } from './ws/index.js';\n\nimport type { TUniversalValue } from '@robota-sdk/agent-core';\nimport type { IInteractiveSession } from '@robota-sdk/agent-framework';\nimport type {\n IConfigurableTransport,\n ITransportConfig,\n ITransportEntry,\n} from '@robota-sdk/agent-interface-transport';\n\nexport class TransportRegistry {\n private readonly entries = new Map<string, IConfigurableTransport<IInteractiveSession>>();\n private readonly settingsPath: string;\n\n constructor(settingsPath: string) {\n this.settingsPath = settingsPath;\n }\n\n register(transport: IConfigurableTransport<IInteractiveSession>): void {\n this.entries.set(transport.name, transport);\n }\n\n getAll(): ITransportEntry<IInteractiveSession>[] {\n const saved = this.readTransportSettings();\n return Array.from(this.entries.values()).map((transport) => ({\n transport,\n config: this.resolveConfig(transport, saved[transport.name]),\n }));\n }\n\n getEnabled(): IConfigurableTransport<IInteractiveSession>[] {\n return this.getAll()\n .filter((e) => e.config.enabled)\n .map((e) => e.transport);\n }\n\n async setEnabled(name: string, enabled: boolean): Promise<void> {\n const settings = readSettings(this.settingsPath);\n const transports = (settings.transports ?? {}) as TSettingsData;\n const entry = (transports[name] ?? {}) as TSettingsData;\n transports[name] = { ...entry, enabled } as TSettingsData;\n settings.transports = transports;\n writeSettings(this.settingsPath, settings);\n }\n\n async setOptions(name: string, options: Record<string, TUniversalValue>): Promise<void> {\n const settings = readSettings(this.settingsPath);\n const transports = (settings.transports ?? {}) as TSettingsData;\n const entry = (transports[name] ?? {}) as TSettingsData;\n transports[name] = { ...entry, options: options as TSettingsData } as TSettingsData;\n settings.transports = transports;\n writeSettings(this.settingsPath, settings);\n }\n\n async startAll(session: IInteractiveSession): Promise<void> {\n const enabled = this.getEnabled();\n for (const transport of enabled) {\n transport.attach(session);\n await transport.start();\n }\n }\n\n async stopAll(): Promise<void> {\n for (const transport of this.entries.values()) {\n await transport.stop();\n }\n }\n\n private resolveConfig(\n transport: IConfigurableTransport<IInteractiveSession>,\n saved?: TSettingsData,\n ): ITransportConfig {\n const enabled = (saved?.enabled as boolean | undefined) ?? transport.defaultEnabled;\n const options = (saved?.options as Record<string, TUniversalValue> | undefined) ?? {};\n return { enabled, options };\n }\n\n private readTransportSettings(): Record<string, TSettingsData> {\n const settings = readSettings(this.settingsPath);\n const raw = settings.transports;\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) return {};\n return raw as Record<string, TSettingsData>;\n }\n}\n\nexport function createDefaultTransportRegistry(): TransportRegistry {\n const registry = new TransportRegistry(getUserSettingsPath());\n registry.register(new WsTransport());\n return registry;\n}\n"],"mappings":"kWAoBA,IAAa,EAAb,KAA+B,CAC7B,QAA2B,IAAI,IAC/B,aAEA,YAAY,EAAsB,CAChC,KAAK,aAAe,CACtB,CAEA,SAAS,EAA8D,CACrE,KAAK,QAAQ,IAAI,EAAU,KAAM,CAAS,CAC5C,CAEA,QAAiD,CAC/C,IAAM,EAAQ,KAAK,sBAAsB,EACzC,OAAO,MAAM,KAAK,KAAK,QAAQ,OAAO,CAAC,EAAE,IAAK,IAAe,CAC3D,YACA,OAAQ,KAAK,cAAc,EAAW,EAAM,EAAU,KAAK,CAC7D,EAAE,CACJ,CAEA,YAA4D,CAC1D,OAAO,KAAK,OAAO,EAChB,OAAQ,GAAM,EAAE,OAAO,OAAO,EAC9B,IAAK,GAAM,EAAE,SAAS,CAC3B,CAEA,MAAM,WAAW,EAAc,EAAiC,CAC9D,IAAM,EAAW,EAAa,KAAK,YAAY,EACzC,EAAc,EAAS,YAAc,CAAC,EAE5C,EAAW,GAAQ,CAAE,GADN,EAAW,IAAS,CAAC,EACL,SAAQ,EACvC,EAAS,WAAa,EACtB,EAAc,KAAK,aAAc,CAAQ,CAC3C,CAEA,MAAM,WAAW,EAAc,EAAyD,CACtF,IAAM,EAAW,EAAa,KAAK,YAAY,EACzC,EAAc,EAAS,YAAc,CAAC,EAE5C,EAAW,GAAQ,CAAE,GADN,EAAW,IAAS,CAAC,EACI,SAAyB,EACjE,EAAS,WAAa,EACtB,EAAc,KAAK,aAAc,CAAQ,CAC3C,CAEA,MAAM,SAAS,EAA6C,CAC1D,IAAM,EAAU,KAAK,WAAW,EAChC,IAAK,IAAM,KAAa,EACtB,EAAU,OAAO,CAAO,EACxB,MAAM,EAAU,MAAM,CAE1B,CAEA,MAAM,SAAyB,CAC7B,IAAK,IAAM,KAAa,KAAK,QAAQ,OAAO,EAC1C,MAAM,EAAU,KAAK,CAEzB,CAEA,cACE,EACA,EACkB,CAGlB,MAAO,CAAE,QAFQ,GAAO,SAAmC,EAAU,eAEnD,QADD,GAAO,SAA2D,CAAC,CAC1D,CAC5B,CAEA,uBAA+D,CAE7D,IAAM,EADW,EAAa,KAAK,YAChB,EAAE,WAErB,MADI,CAAC,GAAO,OAAO,GAAQ,UAAY,MAAM,QAAQ,CAAG,EAAU,CAAC,EAC5D,CACT,CACF,EAEA,SAAgB,GAAoD,CAClE,IAAM,EAAW,IAAI,EAAkB,EAAoB,CAAC,EAE5D,OADA,EAAS,SAAS,IAAI,CAAa,EAC5B,CACT"}
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../mcp-BiJsIywJ.cjs`);exports.createAgentMcpServer=e.n,exports.createMcpTransport=e.t;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../mcp-Bl8jUfev.cjs`);exports.createAgentMcpServer=e.n,exports.createMcpTransport=e.t;
@@ -1,2 +1,2 @@
1
- import { i as createAgentMcpServer, n as createMcpTransport, r as IAgentMcpOptions, t as IMcpTransportOptions } from "../index-B_rcr14p.js";
1
+ import { i as createAgentMcpServer, n as createMcpTransport, r as IAgentMcpOptions, t as IMcpTransportOptions } from "../index-C7DvsmEg.js";
2
2
  export { type IAgentMcpOptions, type IMcpTransportOptions, createAgentMcpServer, createMcpTransport };
@@ -1 +1 @@
1
- import{n as e,t}from"../mcp-BXBwF6Wu.js";export{e as createAgentMcpServer,t as createMcpTransport};
1
+ import{n as e,t}from"../mcp-BAujHOMr.js";export{e as createAgentMcpServer,t as createMcpTransport};
@@ -1,2 +1,2 @@
1
1
  import{Server as e}from"@modelcontextprotocol/sdk/server/index.js";import{CallToolRequestSchema as t,ListToolsRequestSchema as n}from"@modelcontextprotocol/sdk/types.js";function r(r){let{name:a,version:o,session:s,exposeCommands:c=!0}=r,l=new e({name:a,version:o},{capabilities:{tools:{}}}),u=[{name:`submit`,description:`Submit a prompt to the AI agent and wait for the response`,inputSchema:{type:`object`,properties:{prompt:{type:`string`,description:`The prompt to send to the agent`}},required:[`prompt`]}}];if(c)for(let e of s.listCommands())u.push({name:`command_${e.name}`,description:e.description,inputSchema:{type:`object`,properties:{args:{type:`string`,description:`Command arguments`}}}});return l.setRequestHandler(n,async()=>({tools:u})),l.setRequestHandler(t,async e=>{let{name:t,arguments:n}=e.params;if(t===`submit`){let e=n?.prompt;return e?{content:[{type:`text`,text:(await i(s,e)).response}]}:{content:[{type:`text`,text:`Error: prompt is required`}],isError:!0}}if(t.startsWith(`command_`)){let e=t.slice(8),r=n?.args??``,i=await s.executeCommand(e,r);return{content:[{type:`text`,text:i?.message??`Unknown command: ${e}`}],isError:!i}}return{content:[{type:`text`,text:`Unknown tool: ${t}`}],isError:!0}}),l}function i(e,t){return new Promise((n,r)=>{let i=e=>{s(),n(e)},a=e=>{s(),n(e)},o=e=>{s(),r(e)},s=()=>{e.off(`complete`,i),e.off(`interrupted`,a),e.off(`error`,o)};e.on(`complete`,i),e.on(`interrupted`,a),e.on(`error`,o),e.submit(t).catch(e=>{s(),r(e instanceof Error?e:Error(String(e)))})})}function a(e){let t=null,n=null;return{name:`mcp`,attach(e){t=e},async start(){if(!t)throw Error(`No session attached. Call attach() first.`);n=r({...e,session:t})},async stop(){n&&=(await n.close(),null)},getServer(){if(!n)throw Error(`Transport not started. Call start() first.`);return n}}}export{r as n,a as t};
2
- //# sourceMappingURL=mcp-BXBwF6Wu.js.map
2
+ //# sourceMappingURL=mcp-BAujHOMr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-BAujHOMr.js","names":[],"sources":["../../src/mcp/mcp-server.ts","../../src/mcp/mcp-transport.ts"],"sourcesContent":["/**\n * MCP transport adapter — exposes IInteractiveSession as an MCP server.\n *\n * Uses the low-level MCP Server class to avoid TypeScript depth issues\n * with McpServer.registerTool() generics. Registers tools/list and\n * tools/call handlers directly.\n */\n\nimport { Server } from '@modelcontextprotocol/sdk/server/index.js';\nimport { ListToolsRequestSchema, CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js';\n\nimport type { IInteractiveSession, IExecutionResult } from '@robota-sdk/agent-framework';\n\nexport interface IAgentMcpOptions {\n /** Name for the MCP server. */\n name: string;\n /** Version string. */\n version: string;\n /** IInteractiveSession to expose. */\n session: IInteractiveSession;\n /** If true, register each system command as a separate MCP tool. Default: true. */\n exposeCommands?: boolean;\n}\n\n/**\n * Create an MCP server that exposes IInteractiveSession over Model Context Protocol.\n *\n * Usage:\n * ```typescript\n * const server = createAgentMcpServer({\n * name: 'robota-agent',\n * version: '1.0.0',\n * session: interactiveSession,\n * });\n *\n * import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\n * await server.connect(new StdioServerTransport());\n * ```\n */\nexport function createAgentMcpServer(options: IAgentMcpOptions): Server {\n const { name, version, session, exposeCommands = true } = options;\n\n const server = new Server({ name, version }, { capabilities: { tools: {} } });\n\n // Build tool definitions\n const tools: Array<{\n name: string;\n description: string;\n inputSchema: Record<string, unknown>;\n }> = [\n {\n name: 'submit',\n description: 'Submit a prompt to the AI agent and wait for the response',\n inputSchema: {\n type: 'object',\n properties: {\n prompt: { type: 'string', description: 'The prompt to send to the agent' },\n },\n required: ['prompt'],\n },\n },\n ];\n\n if (exposeCommands) {\n for (const cmd of session.listCommands()) {\n tools.push({\n name: `command_${cmd.name}`,\n description: cmd.description,\n inputSchema: {\n type: 'object',\n properties: {\n args: { type: 'string', description: 'Command arguments' },\n },\n },\n });\n }\n }\n\n // tools/list handler\n server.setRequestHandler(ListToolsRequestSchema, async () => ({\n tools,\n }));\n\n // tools/call handler\n server.setRequestHandler(CallToolRequestSchema, async (request) => {\n const { name: toolName, arguments: toolArgs } = request.params;\n\n if (toolName === 'submit') {\n const prompt = (toolArgs as Record<string, string>)?.prompt;\n if (!prompt) {\n return {\n content: [{ type: 'text', text: 'Error: prompt is required' }],\n isError: true,\n };\n }\n const result = await waitForCompletion(session, prompt);\n return {\n content: [{ type: 'text', text: result.response }],\n };\n }\n\n // System commands: command_<name>\n if (toolName.startsWith('command_')) {\n const cmdName = toolName.slice('command_'.length);\n const args = (toolArgs as Record<string, string>)?.args ?? '';\n const result = await session.executeCommand(cmdName, args);\n return {\n content: [\n {\n type: 'text',\n text: result?.message ?? `Unknown command: ${cmdName}`,\n },\n ],\n isError: !result,\n };\n }\n\n return {\n content: [{ type: 'text', text: `Unknown tool: ${toolName}` }],\n isError: true,\n };\n });\n\n return server;\n}\n\n/**\n * Submit a prompt and wait for the complete/interrupted/error event.\n */\nfunction waitForCompletion(\n session: IInteractiveSession,\n prompt: string,\n): Promise<IExecutionResult> {\n return new Promise((resolve, reject) => {\n const onComplete = (result: IExecutionResult): void => {\n cleanup();\n resolve(result);\n };\n const onInterrupted = (result: IExecutionResult): void => {\n cleanup();\n resolve(result);\n };\n const onError = (error: Error): void => {\n cleanup();\n reject(error);\n };\n\n const cleanup = (): void => {\n session.off('complete', onComplete);\n session.off('interrupted', onInterrupted);\n session.off('error', onError);\n };\n\n session.on('complete', onComplete);\n session.on('interrupted', onInterrupted);\n session.on('error', onError);\n\n session.submit(prompt).catch((err) => {\n cleanup();\n reject(err instanceof Error ? err : new Error(String(err)));\n });\n });\n}\n","/**\n * ITransportAdapter implementation for MCP transport.\n *\n * Wraps createAgentMcpServer into the unified ITransportAdapter interface\n * while exposing the underlying MCP Server via getServer().\n */\n\nimport { createAgentMcpServer } from './mcp-server.js';\n\nimport type { Server } from '@modelcontextprotocol/sdk/server/index.js';\nimport type { IInteractiveSession } from '@robota-sdk/agent-framework';\nimport type { ITransportAdapter } from '@robota-sdk/agent-interface-transport';\n\nexport interface IMcpTransportOptions {\n /** Name for the MCP server. */\n name: string;\n /** Version string. */\n version: string;\n /** If true, register each system command as a separate MCP tool. Default: true. */\n exposeCommands?: boolean;\n}\n\nexport function createMcpTransport(\n options: IMcpTransportOptions,\n): ITransportAdapter<IInteractiveSession> & { getServer(): Server } {\n let session: IInteractiveSession | null = null;\n let server: Server | null = null;\n\n return {\n name: 'mcp',\n attach(s: IInteractiveSession) {\n session = s;\n },\n async start() {\n if (!session) throw new Error('No session attached. Call attach() first.');\n server = createAgentMcpServer({ ...options, session });\n },\n async stop() {\n if (server) {\n await server.close();\n server = null;\n }\n },\n getServer() {\n if (!server) throw new Error('Transport not started. Call start() first.');\n return server;\n },\n };\n}\n"],"mappings":"0KAuCA,SAAgB,EAAqB,EAAmC,CACtE,GAAM,CAAE,OAAM,UAAS,UAAS,iBAAiB,IAAS,EAEpD,EAAS,IAAI,EAAO,CAAE,OAAM,SAAQ,EAAG,CAAE,aAAc,CAAE,MAAO,CAAC,CAAE,CAAE,CAAC,EAGtE,EAID,CACH,CACE,KAAM,SACN,YAAa,4DACb,YAAa,CACX,KAAM,SACN,WAAY,CACV,OAAQ,CAAE,KAAM,SAAU,YAAa,iCAAkC,CAC3E,EACA,SAAU,CAAC,QAAQ,CACrB,CACF,CACF,EAEA,GAAI,EACF,IAAK,IAAM,KAAO,EAAQ,aAAa,EACrC,EAAM,KAAK,CACT,KAAM,WAAW,EAAI,OACrB,YAAa,EAAI,YACjB,YAAa,CACX,KAAM,SACN,WAAY,CACV,KAAM,CAAE,KAAM,SAAU,YAAa,mBAAoB,CAC3D,CACF,CACF,CAAC,EAiDL,OA5CA,EAAO,kBAAkB,EAAwB,UAAa,CAC5D,OACF,EAAE,EAGF,EAAO,kBAAkB,EAAuB,KAAO,IAAY,CACjE,GAAM,CAAE,KAAM,EAAU,UAAW,GAAa,EAAQ,OAExD,GAAI,IAAa,SAAU,CACzB,IAAM,EAAU,GAAqC,OAQrD,OAPK,EAOE,CACL,QAAS,CAAC,CAAE,KAAM,OAAQ,MAAM,MAFb,EAAkB,EAAS,CAAM,GAEb,QAAS,CAAC,CACnD,EARS,CACL,QAAS,CAAC,CAAE,KAAM,OAAQ,KAAM,2BAA4B,CAAC,EAC7D,QAAS,EACX,CAMJ,CAGA,GAAI,EAAS,WAAW,UAAU,EAAG,CACnC,IAAM,EAAU,EAAS,MAAM,CAAiB,EAC1C,EAAQ,GAAqC,MAAQ,GACrD,EAAS,MAAM,EAAQ,eAAe,EAAS,CAAI,EACzD,MAAO,CACL,QAAS,CACP,CACE,KAAM,OACN,KAAM,GAAQ,SAAW,oBAAoB,GAC/C,CACF,EACA,QAAS,CAAC,CACZ,CACF,CAEA,MAAO,CACL,QAAS,CAAC,CAAE,KAAM,OAAQ,KAAM,iBAAiB,GAAW,CAAC,EAC7D,QAAS,EACX,CACF,CAAC,EAEM,CACT,CAKA,SAAS,EACP,EACA,EAC2B,CAC3B,OAAO,IAAI,SAAS,EAAS,IAAW,CACtC,IAAM,EAAc,GAAmC,CACrD,EAAQ,EACR,EAAQ,CAAM,CAChB,EACM,EAAiB,GAAmC,CACxD,EAAQ,EACR,EAAQ,CAAM,CAChB,EACM,EAAW,GAAuB,CACtC,EAAQ,EACR,EAAO,CAAK,CACd,EAEM,MAAsB,CAC1B,EAAQ,IAAI,WAAY,CAAU,EAClC,EAAQ,IAAI,cAAe,CAAa,EACxC,EAAQ,IAAI,QAAS,CAAO,CAC9B,EAEA,EAAQ,GAAG,WAAY,CAAU,EACjC,EAAQ,GAAG,cAAe,CAAa,EACvC,EAAQ,GAAG,QAAS,CAAO,EAE3B,EAAQ,OAAO,CAAM,EAAE,MAAO,GAAQ,CACpC,EAAQ,EACR,EAAO,aAAe,MAAQ,EAAU,MAAM,OAAO,CAAG,CAAC,CAAC,CAC5D,CAAC,CACH,CAAC,CACH,CC5IA,SAAgB,EACd,EACkE,CAClE,IAAI,EAAsC,KACtC,EAAwB,KAE5B,MAAO,CACL,KAAM,MACN,OAAO,EAAwB,CAC7B,EAAU,CACZ,EACA,MAAM,OAAQ,CACZ,GAAI,CAAC,EAAS,MAAU,MAAM,2CAA2C,EACzE,EAAS,EAAqB,CAAE,GAAG,EAAS,SAAQ,CAAC,CACvD,EACA,MAAM,MAAO,CACX,AAEE,KADA,MAAM,EAAO,MAAM,EACV,KAEb,EACA,WAAY,CACV,GAAI,CAAC,EAAQ,MAAU,MAAM,4CAA4C,EACzE,OAAO,CACT,CACF,CACF"}
@@ -0,0 +1 @@
1
+ require(`./chunk-Bmb41Sf3.cjs`);let e=require(`@modelcontextprotocol/sdk/server/index.js`),t=require(`@modelcontextprotocol/sdk/types.js`);function n(n){let{name:i,version:a,session:o,exposeCommands:s=!0}=n,c=new e.Server({name:i,version:a},{capabilities:{tools:{}}}),l=[{name:`submit`,description:`Submit a prompt to the AI agent and wait for the response`,inputSchema:{type:`object`,properties:{prompt:{type:`string`,description:`The prompt to send to the agent`}},required:[`prompt`]}}];if(s)for(let e of o.listCommands())l.push({name:`command_${e.name}`,description:e.description,inputSchema:{type:`object`,properties:{args:{type:`string`,description:`Command arguments`}}}});return c.setRequestHandler(t.ListToolsRequestSchema,async()=>({tools:l})),c.setRequestHandler(t.CallToolRequestSchema,async e=>{let{name:t,arguments:n}=e.params;if(t===`submit`){let e=n?.prompt;return e?{content:[{type:`text`,text:(await r(o,e)).response}]}:{content:[{type:`text`,text:`Error: prompt is required`}],isError:!0}}if(t.startsWith(`command_`)){let e=t.slice(8),r=n?.args??``,i=await o.executeCommand(e,r);return{content:[{type:`text`,text:i?.message??`Unknown command: ${e}`}],isError:!i}}return{content:[{type:`text`,text:`Unknown tool: ${t}`}],isError:!0}}),c}function r(e,t){return new Promise((n,r)=>{let i=e=>{s(),n(e)},a=e=>{s(),n(e)},o=e=>{s(),r(e)},s=()=>{e.off(`complete`,i),e.off(`interrupted`,a),e.off(`error`,o)};e.on(`complete`,i),e.on(`interrupted`,a),e.on(`error`,o),e.submit(t).catch(e=>{s(),r(e instanceof Error?e:Error(String(e)))})})}function i(e){let t=null,r=null;return{name:`mcp`,attach(e){t=e},async start(){if(!t)throw Error(`No session attached. Call attach() first.`);r=n({...e,session:t})},async stop(){r&&=(await r.close(),null)},getServer(){if(!r)throw Error(`Transport not started. Call start() first.`);return r}}}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return i}});
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../tui-BIpIcT7-.cjs`);exports.TuiTransport=e.t;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../tui-B8G3yHrL.cjs`);exports.TuiTransport=e.n,exports.createDefaultTuiCliAdapter=e.t;
@@ -1,2 +1,2 @@
1
- import { a as ITuiPickerInteraction, c as TOnMissingArgsAction, i as ITuiConfirmInteraction, l as ITuiCliAdapter, n as IRenderOptions, o as ITuiPickerItem, r as ITuiCommandInteraction, s as TAnyTuiCommandInteraction, t as TuiTransport } from "../index-CSgNoyPK.js";
2
- export { type IRenderOptions, type ITuiCliAdapter, type ITuiCommandInteraction, type ITuiConfirmInteraction, type ITuiPickerInteraction, type ITuiPickerItem, type TAnyTuiCommandInteraction, type TOnMissingArgsAction, TuiTransport };
1
+ import { a as TAnyTuiCommandInteraction, c as createDefaultTuiCliAdapter, d as ITuiCliAdapter, i as ITuiPickerItem, l as TuiTransport, n as ITuiConfirmInteraction, o as TOnMissingArgsAction, r as ITuiPickerInteraction, s as IDefaultTuiCliAdapterOptions, t as ITuiCommandInteraction, u as ITuiRenderOptions } from "../index-CQsMNXAh.js";
2
+ export { type IDefaultTuiCliAdapterOptions, type ITuiCliAdapter, type ITuiCommandInteraction, type ITuiConfirmInteraction, type ITuiPickerInteraction, type ITuiPickerItem, type ITuiRenderOptions, type TAnyTuiCommandInteraction, type TOnMissingArgsAction, TuiTransport, createDefaultTuiCliAdapter };
@@ -1 +1 @@
1
- import{t as e}from"../tui-DBLn1T15.js";export{e as TuiTransport};
1
+ import{n as e,t}from"../tui-DUIfVw3G.js";export{e as TuiTransport,t as createDefaultTuiCliAdapter};
@@ -0,0 +1,24 @@
1
+ const e=require(`./chunk-Bmb41Sf3.cjs`);let t=require(`ink`),n=require(`react`),r=e.t(n,1);n=e.t(n);let i=require(`@robota-sdk/agent-core`),a=require(`@robota-sdk/agent-framework`),o=require(`react/jsx-runtime`),s=require(`chalk`);s=e.t(s);let c=require(`string-width`);c=e.t(c,1);let l=require(`@robota-sdk/agent-interface-tui`),u=require(`marked`),d=require(`marked-terminal`);d=e.t(d,1);const f=[`active`,`queued`,`running`,`waiting_permission`,`sleeping`],p=/\s+/g;function m(e){return(e?.entries??[]).filter(e=>e.kind===`background_task`&&e.visibility===`default`)}function h(e){return m(e).filter(e=>f.includes(e.status)).length}function g(e,t={}){let n=e.id===t.selectedEntryId,r={id:e.id,radio:n?`●`:`○`,title:v(e),subtitle:y(e),statusLabel:b(e.status),preview:S(e.preview??e.currentAction),color:x(e),isSelected:n};return{...r,accessibleText:C(r)}}function _(e){let t=e.text.trim().replace(p,` `);return t?t.length>160?`${t.slice(0,160)}...`:t:e.kind}function v(e){return e.kind===`main_thread`?e.title:e.kind===`background_group`?`${e.title} group`:e.taskKind===`agent`?`${e.title} agent`:e.taskKind===`process`?e.title||`Process`:e.taskKind===`scheduled`?e.title||`Scheduled`:e.title}function y(e){return e.kind===`main_thread`?e.subtitle:[e.taskKind,e.subtitle,e.attention===`none`?void 0:e.attention].filter(e=>typeof e==`string`&&e.length>0).join(` · `)||void 0}function b(e){return e.replace(/_/g,` `)}function x(e){return e.attention===`failed`||e.status===`failed`?`red`:e.attention===`permission`||e.status===`waiting_permission`?`yellow`:e.status===`completed`?`green`:e.status===`cancelled`?`yellow`:f.includes(e.status)?`cyan`:`white`}function S(e){return e?.trim().replace(p,` `)||void 0}function C(e){return[e.radio,e.title,e.statusLabel,e.subtitle,e.preview].filter(e=>typeof e==`string`&&e.length>0).join(` · `)}function w(e,t={}){let n=g(e),r=T(e)?`□`:`■`,i=[n.statusLabel,n.subtitle].filter(e=>typeof e==`string`&&e.length>0);return{connector:t.isLast===!1?`├`:`└`,marker:r,color:n.color,label:n.title,segments:i,preview:n.preview,accessibleText:[`${t.isLast===!1?`├`:`└`} ${r} ${n.title}`,...i,n.preview].filter(e=>typeof e==`string`&&e.length>0).join(` · `)}}function T(e){return e.status===`active`||e.status===`queued`||e.status===`running`||e.status===`waiting_permission`||e.status===`sleeping`}function E({entries:e}){return e.length===0?null:(0,o.jsxs)(t.Box,{flexDirection:`column`,marginBottom:1,children:[(0,o.jsx)(t.Text,{color:`cyan`,bold:!0,children:`Background work`}),e.map((n,r)=>{let i=w(n,{isLast:r===e.length-1});return(0,o.jsxs)(t.Text,{children:[`${i.connector} `,(0,o.jsx)(t.Text,{color:i.color,children:i.marker}),` ${i.label}`,i.segments.map((e,n)=>(0,o.jsx)(t.Text,{dimColor:!0,children:` · ${e}`},`${e}-${n}`)),i.preview?(0,o.jsx)(t.Text,{dimColor:!0,children:` · ${i.preview}`}):null]},n.id)})]})}function D(){return{selectedIndex:0,scrollOffset:0,resolved:!1}}function O(e){if(e.escape===!0)return`cancel`;if(e.upArrow===!0)return`previous`;if(e.downArrow===!0)return`next`;if(e.return===!0)return`select`}function k(e){if(e.escape===!0)return`cancel`;if(e.leftArrow===!0||e.upArrow===!0)return`previous`;if(e.rightArrow===!0||e.downArrow===!0)return`next`;if(e.return===!0)return`select`}function A(e,t,n){if(e.resolved)return{state:e,effect:{type:`none`}};if(t===`cancel`)return{state:{...e,resolved:!0},effect:{type:`cancel`}};if(n.enabled===!1||n.itemCount===0)return{state:e,effect:{type:`none`}};if(t===`select`){let t=P(e.selectedIndex,n.itemCount);return{state:{...e,selectedIndex:t,resolved:!0},effect:{type:`select`,index:t}}}let r=M(e.selectedIndex,t,n),i=N(r,e.scrollOffset,n);return{state:{...e,selectedIndex:r,scrollOffset:i},effect:{type:`none`}}}function j(e,t){if(t.itemCount===0)return{...e,selectedIndex:0,scrollOffset:0};let n=P(e.selectedIndex,t.itemCount),r=N(n,e.scrollOffset,t);return n===e.selectedIndex&&r===e.scrollOffset?e:{...e,selectedIndex:n,scrollOffset:r}}function M(e,t,n){return t===`previous`?n.wrap===!0&&e===0?n.itemCount-1:Math.max(0,e-1):n.wrap===!0&&e===n.itemCount-1?0:Math.min(n.itemCount-1,e+1)}function N(e,t,n){let r=n.maxVisible??n.itemCount;return r<=0?0:e<t?e:e>=t+r?e-r+1:Math.max(0,t)}function P(e,t){return Math.min(Math.max(e,0),t-1)}function F(e,t,n){let r=k({...t,escape:!1});if(r!==void 0)return r;if(n===2&&e===`y`)return{type:`shortcut`,index:0};if(n===2&&e===`n`)return{type:`shortcut`,index:1}}function I(e,t,n){return e.resolved?{state:e,effect:{type:`none`}}:typeof t==`string`?A(e,t,{itemCount:n}):{state:{...e,selectedIndex:t.index,resolved:!0},effect:{type:`select`,index:t.index}}}function ee({message:e,options:r=[`Yes`,`No`],onSelect:i}){let[a,s]=(0,n.useState)(()=>D()),c=(0,n.useRef)(a),l=(0,n.useCallback)(e=>{let t=I(c.current,e,r.length);c.current=t.state,s(t.state),t.effect.type===`select`&&i(t.effect.index)},[i,r.length]);return(0,t.useInput)((e,t)=>{let n=F(e,t,r.length);n!==void 0&&l(n)}),(0,o.jsxs)(t.Box,{flexDirection:`column`,borderStyle:`round`,borderColor:`yellow`,paddingX:1,children:[(0,o.jsx)(t.Text,{color:`yellow`,children:e}),(0,o.jsx)(t.Box,{marginTop:1,children:r.map((e,n)=>(0,o.jsx)(t.Box,{marginRight:2,children:(0,o.jsxs)(t.Text,{color:n===a.selectedIndex?`cyan`:void 0,bold:n===a.selectedIndex,children:[n===a.selectedIndex?`> `:` `,e]})},e))}),(0,o.jsx)(t.Text,{dimColor:!0,children:` arrow keys to select, Enter to confirm`})]})}function L({entry:e,page:n,loading:r,error:i}){let a=g(e,{selectedEntryId:e.id}),s=n?.records.slice(-12)??[];return(0,o.jsxs)(t.Box,{flexDirection:`column`,marginBottom:1,children:[(0,o.jsx)(t.Text,{color:`cyan`,bold:!0,children:`Viewing ${a.title}`}),(0,o.jsxs)(t.Text,{dimColor:!0,children:[a.statusLabel,a.subtitle?` · ${a.subtitle}`:``,a.preview?` · ${a.preview}`:``]}),r?(0,o.jsx)(t.Text,{dimColor:!0,children:`Loading workspace detail...`}):null,i?(0,o.jsx)(t.Text,{color:`red`,children:i}):null,!r&&!i&&s.length===0?(0,o.jsx)(t.Text,{dimColor:!0,children:`No detail yet`}):null,!r&&!i&&s.map(e=>(0,o.jsx)(t.Text,{color:te(e.kind),children:_(e)},e.id)),n?.nextCursor?(0,o.jsx)(t.Text,{dimColor:!0,children:`... more detail available`}):null]})}function te(e){if(e===`error`)return`red`;if(e===`result`)return`green`;if(e===`process_output`)return`white`;if(e===`group_summary`)return`cyan`}function ne({snapshot:e,selectedEntryId:n,onSelect:r,onClose:i}){let{normalized:a,visibleEntries:s,applyAction:c}=R({entries:[...e?.entries??[]],selectedEntryId:n,onSelect:r,onClose:i});return(0,t.useInput)((e,t)=>{let n=O(t);n!==void 0&&c(n)}),(0,o.jsxs)(t.Box,{flexDirection:`column`,borderStyle:`round`,borderColor:`cyan`,paddingX:1,children:[(0,o.jsx)(t.Text,{color:`cyan`,bold:!0,children:`Execution workspace`}),(0,o.jsx)(t.Box,{flexDirection:`column`,marginTop:1,children:s.length===0?(0,o.jsx)(t.Text,{dimColor:!0,children:`No workspace entries`}):s.map((e,t)=>(0,o.jsx)(V,{entry:e,isFocused:a.scrollOffset+t===a.selectedIndex,selectedEntryId:n},e.id))}),(0,o.jsx)(t.Text,{dimColor:!0,children:`Ctrl+B Close ↑↓ Navigate Enter Switch Esc Close`})]})}function R({entries:e,selectedEntryId:t,onSelect:r,onClose:i}){let[a,o]=(0,n.useState)(()=>D()),s=(0,n.useRef)(a);(0,n.useEffect)(()=>{let n=B({selectedIndex:Math.max(0,e.findIndex(e=>e.id===t)),itemCount:e.length});s.current=n,o(n)},[e.length,t]);let c=B({selectedIndex:a.selectedIndex,scrollOffset:a.scrollOffset,itemCount:e.length});return c!==a&&(s.current=c),{normalized:c,visibleEntries:e.slice(c.scrollOffset,c.scrollOffset+8),applyAction:z({entries:e,stateRef:s,setState:o,onSelect:r,onClose:i})}}function z({entries:e,stateRef:t,setState:n,onSelect:r,onClose:i}){return a=>{let o=A(t.current,a,{itemCount:e.length,maxVisible:8}),s=o.effect.type===`select`||o.effect.type===`cancel`?{...o.state,resolved:!1}:o.state;if(t.current=s,n(s),o.effect.type===`cancel`)i();else if(o.effect.type===`select`){let t=e[o.effect.index];t&&r(t.id)}}}function B(e){return j({selectedIndex:e.selectedIndex,scrollOffset:e.scrollOffset??0,resolved:!1},{itemCount:e.itemCount,maxVisible:8})}function V({entry:e,isFocused:n,selectedEntryId:r}){let i=g(e,{selectedEntryId:r});return(0,o.jsxs)(t.Text,{children:[(0,o.jsx)(t.Text,{color:n?`cyan`:void 0,bold:n,children:n?`> `:` `}),(0,o.jsx)(t.Text,{color:i.color,children:i.radio}),(0,o.jsx)(t.Text,{color:n?`cyan`:void 0,bold:n,children:` ${i.title}`}),(0,o.jsx)(t.Text,{dimColor:!0,children:` · ${i.statusLabel}`}),i.subtitle?(0,o.jsx)(t.Text,{dimColor:!0,children:` · ${i.subtitle}`}):null,i.preview?(0,o.jsx)(t.Text,{dimColor:!0,children:` · ${i.preview}`}):null]})}function re(e){return`Change model to ${(0,i.getModelName)(e)}? This will exit the current session so the next session uses it.`}function ie(e){return`Model changed to ${(0,i.getModelName)(e)}. Exiting so the next session uses it.`}function H(e){let t=e.applyModelChange;if(!t){e.addEntry((0,i.messageToHistoryEntry)((0,i.createSystemMessage)(`Model change unavailable: no adapter provided.`)));return}let n=e.providerOverride===void 0?void 0:{providerOverride:e.providerOverride};try{t(e.cwd,e.modelId,n),e.addEntry((0,i.messageToHistoryEntry)((0,i.createSystemMessage)(ie(e.modelId)))),e.requestShutdown(`other`,`Model change applied`)}catch(t){e.addEntry((0,i.messageToHistoryEntry)((0,i.createSystemMessage)(`Failed: ${t instanceof Error?t.message:String(t)}`)))}}function ae(e){e((0,i.messageToHistoryEntry)((0,i.createSystemMessage)(`Model change cancelled.`)))}function U(e,t){let n=null;return{schedule(){n||=setTimeout(()=>{n=null,e()},t)},flush(){n&&=(clearTimeout(n),null)}}}var oe=class{history=[];streamingText=``;activeTools=[];isThinking=!1;isAborting=!1;pendingPrompt=null;contextState={percentage:0,usedTokens:0,maxTokens:0};executionWorkspaceSnapshot=null;selectedExecutionEntryId;onChange=null;streamBuf=``;debouncedStreamNotify=U(()=>this.notify(),300);notify(){this.onChange?.()}onTextDelta=e=>{this.streamBuf+=e,this.streamingText=this.streamBuf,this.debouncedStreamNotify.schedule()};onToolStart=e=>{this.activeTools=[...this.activeTools,e],this.notify()};onToolEnd=e=>{let t=this.activeTools.findLastIndex(t=>t.toolName===e.toolName&&t.isRunning);if(t!==-1){let n=[...this.activeTools];n[t]=e,this.activeTools=n}this.notify()};onThinking=e=>{this.isThinking=e,e?(this.debouncedStreamNotify.flush(),this.streamBuf=``,this.streamingText=``,this.activeTools=[]):this.isAborting=!1,this.notify()};onComplete=e=>{this.debouncedStreamNotify.flush(),this.streamBuf=``,this.streamingText=``,this.activeTools=[],this.contextState={percentage:e.contextState.usedPercentage,usedTokens:e.contextState.usedTokens,maxTokens:e.contextState.maxTokens},this.notify()};onInterrupted=()=>{this.debouncedStreamNotify.flush(),this.streamBuf=``,this.streamingText=``,this.activeTools=[],this.notify()};onError=()=>{this.debouncedStreamNotify.flush(),this.streamBuf=``,this.streamingText=``,this.activeTools=[],this.notify()};onContextUpdate=e=>{this.setContextState({percentage:e.usedPercentage,usedTokens:e.usedTokens,maxTokens:e.maxTokens})};syncHistory(e){e.length!==0&&(this.history=e.length>100?e.slice(-100):[...e],this.notify())}addEntry(e){let t=[...this.history,e];this.history=t.length>100?t.slice(-100):t,this.notify()}clearHistory(){this.history=[],this.debouncedStreamNotify.flush(),this.streamBuf=``,this.streamingText=``,this.activeTools=[],this.notify()}setPendingPrompt(e){this.pendingPrompt=e,this.notify()}setAborting(e){this.isAborting=e,this.notify()}setContextState(e){this.contextState=e,this.notify()}syncExecutionWorkspaceSnapshot(e){let t=this.selectedExecutionEntryId,n=t!==void 0&&e.entries.some(e=>e.id===t)?t:e.selectedEntryId??e.entries[0]?.id;this.executionWorkspaceSnapshot={...e,...n?{selectedEntryId:n}:{}},this.selectedExecutionEntryId=n,this.notify()}selectExecutionWorkspaceEntry(e){this.executionWorkspaceSnapshot?.entries.some(t=>t.id===e)&&(this.selectedExecutionEntryId=e,this.executionWorkspaceSnapshot={...this.executionWorkspaceSnapshot,selectedEntryId:e},this.notify())}},se=class{queue=[];enqueueInteraction(e){this.queue.push({type:`interaction`,interaction:e})}enqueueEffects(e){e.length!==0&&this.queue.push({type:`effects`,effects:[...e]})}drain(){return this.queue.shift()}clear(){this.queue.length=0}};function ce(e,t){let n=new a.InteractiveSession({cwd:e.cwd,provider:e.provider,permissionMode:e.permissionMode,maxTurns:e.maxTurns,permissionHandler:t,sessionStore:e.sessionStore,resumeSessionId:e.resumeSessionId,forkSession:e.forkSession,sessionName:e.sessionName,backgroundTaskRunners:e.backgroundTaskRunners,subagentRunnerFactory:e.subagentRunnerFactory,commandModules:e.commandModules,commandHostAdapters:e.commandHostAdapters,shellExec:e.shellExec,language:e.language,agentName:e.agentName}),r=new a.CommandRegistry;for(let t of e.commandModules??[])r.addModule(t);return e.reloadPluginCommandSource?.(r),{interactiveSession:n,registry:r,manager:new oe,commandEffectQueue:new se}}function le(){let[e,t]=(0,r.useState)(null),n=(0,r.useRef)([]),i=(0,r.useRef)(!1),a=(0,r.useCallback)(()=>{if(i.current)return;let e=n.current[0];if(!e){t(null);return}i.current=!0,t({toolName:e.toolName,toolArgs:e.toolArgs,resolve:r=>{n.current.shift(),i.current=!1,t(null),e.resolve(r),setTimeout(()=>a(),0)}})},[]);return{permissionHandler:(0,r.useCallback)((e,t)=>new Promise(r=>{n.current.push({toolName:e,toolArgs:t,resolve:r}),a()}),[a]),permissionRequest:e}}function ue(e,t,n,a,o){return(0,r.useCallback)(async r=>{if(!r.startsWith(`/`)){await e.submit(r),n.setPendingPrompt(e.getPendingPrompt());return}let s=r.slice(1).split(/\s+/),c=s[0]?.toLowerCase()??``,l=s.slice(1).join(` `),u=await e.executeCommand(c,l);if(u){if(u.effects?.some(e=>e.type===`session-execution-started`)){n.setPendingPrompt(e.getPendingPrompt());return}de(u,e,t,n,a,o);return}n.addEntry((0,i.messageToHistoryEntry)((0,i.createSystemMessage)(`Unknown command "/${c}". Type /help for help.`)))},[e,t,n,a,o])}function de(e,t,n,r,a,o){let s=W(e.effects,n,r,o);if(r.addEntry((0,i.messageToHistoryEntry)((0,i.createSystemMessage)(e.message))),e.interaction!==void 0&&a.enqueueInteraction(e.interaction),s.length>0&&a.enqueueEffects(s),t.isInitialized){let e=t.getContextState();r.setContextState({percentage:e.usedPercentage,usedTokens:e.usedTokens,maxTokens:e.maxTokens})}}function W(e,t,n,r){if(e===void 0||e.length===0)return[];let i=[];for(let a of e){if(a.type===`conversation-history-cleared`){n.clearHistory();continue}if(a.type===`plugin-registry-reload-requested`){r?.(t);continue}i.push(a)}return i}function fe(e,t){t.syncHistory(e.getFullHistory())}function pe(e,t){t.syncHistory(e.getFullHistory())}function G(e,t){try{t.syncExecutionWorkspaceSnapshot(e.getExecutionWorkspaceSnapshot({selectedEntryId:t.selectedExecutionEntryId}))}catch{}}function me(e){let[,t]=(0,r.useState)(0),[n,a]=(0,r.useState)(!1),{permissionHandler:o,permissionRequest:s}=le(),[c]=(0,r.useState)(()=>ce(e,o)),{interactiveSession:l,registry:u,manager:d,commandEffectQueue:f}=c;if(d.onChange=()=>t(e=>e+1),d.history.length===0){let e=l.getFullHistory();e.length>0&&d.syncHistory(e)}(0,r.useEffect)(()=>{if(!e.transportRegistry)return;let t=e.transportRegistry;return t.startAll(l).catch(()=>void 0),()=>{t.stopAll().catch(()=>void 0)}},[l,e.transportRegistry]),(0,r.useEffect)(()=>{let e=()=>fe(l,d),t=()=>pe(l,d),n=e=>d.syncExecutionWorkspaceSnapshot(e.snapshot);l.on(`text_delta`,d.onTextDelta),l.on(`tool_start`,d.onToolStart),l.on(`tool_end`,d.onToolEnd),l.on(`thinking`,d.onThinking),l.on(`complete`,d.onComplete),l.on(`interrupted`,d.onInterrupted),l.on(`error`,d.onError),l.on(`context_update`,d.onContextUpdate),l.on(`compact`,e),l.on(`skill_activation`,t),l.on(`execution_workspace_event`,n);let r=setInterval(()=>{try{let e=l.getContextState();d.setContextState({percentage:e.usedPercentage,usedTokens:e.usedTokens,maxTokens:e.maxTokens});let t=l.getFullHistory();t.length>0&&d.syncHistory(t),G(l,d),clearInterval(r)}catch{}},200);return()=>{clearInterval(r),l.off(`text_delta`,d.onTextDelta),l.off(`tool_start`,d.onToolStart),l.off(`tool_end`,d.onToolEnd),l.off(`thinking`,d.onThinking),l.off(`complete`,d.onComplete),l.off(`interrupted`,d.onInterrupted),l.off(`error`,d.onError),l.off(`context_update`,d.onContextUpdate),l.off(`compact`,e),l.off(`skill_activation`,t),l.off(`execution_workspace_event`,n)}},[l,d]),(0,r.useEffect)(()=>{d.syncHistory(l.getFullHistory()),G(l,d),d.isThinking||d.setPendingPrompt(l.getPendingPrompt())},[d.isThinking,l,d]);let p=ue(l,u,d,f,e.reloadPluginCommandSource),m=(0,r.useCallback)(()=>{d.setAborting(!0),l.abort()},[l,d]),h=(0,r.useCallback)(()=>{l.cancelQueue(),d.setPendingPrompt(null)},[l,d]),g=(0,r.useCallback)(async(e=`prompt_input_exit`)=>{n||(a(!0),d.addEntry((0,i.messageToHistoryEntry)((0,i.createSystemMessage)(`Shutting down...`))),await l.shutdown({reason:e,message:`CLI shutdown`}))},[l,d,n]),_=(0,r.useCallback)(e=>d.selectExecutionWorkspaceEntry(e),[d]),v=(0,r.useCallback)(e=>l.readExecutionWorkspaceDetail(e),[l]);return{interactiveSession:l,registry:u,commandEffectQueue:f,history:d.history,addEntry:e=>d.addEntry(e),streamingText:d.streamingText,activeTools:d.activeTools,isThinking:d.isThinking,isAborting:d.isAborting,isShuttingDown:n,pendingPrompt:d.pendingPrompt,executionWorkspaceSnapshot:d.executionWorkspaceSnapshot,selectedExecutionEntryId:d.selectedExecutionEntryId,permissionRequest:s,contextState:d.contextState,handleSubmit:p,handleAbort:m,handleCancelQueue:h,handleShutdown:g,selectExecutionWorkspaceEntry:_,readExecutionWorkspaceDetail:v}}function K(){return{listInstalled:async()=>[],listAvailablePlugins:async()=>[],install:async()=>void 0,uninstall:async()=>void 0,enable:async()=>void 0,disable:async()=>void 0,marketplaceAdd:async()=>``,marketplaceRemove:async()=>void 0,marketplaceUpdate:async()=>void 0,marketplaceList:async()=>[],reloadPlugins:async()=>({loadedPluginCount:0})}}function he(e){return(0,r.useMemo)(()=>K(),[])}function q(e,t){for(let n of e){if(n.type===`model-change-requested`)return t.requestModelChange(n.modelId),!0;if(n.type===`language-change-requested`)return J(n.language,t),!0;if(n.type===`settings-reset-requested`)return ge(t),!0;if(n.type===`session-exit-requested`)return t.requestShutdown(n.reason??`prompt_input_exit`,n.message??`User requested exit`),!0;if(n.type===`session-restart-requested`)return t.requestShutdown(n.reason,n.message),!0;if(n.type===`plugin-tui-requested`)return t.openPluginTUI(),!0;if(n.type===`settings-tui-requested`)return t.openTransportTUI(),!0;if(n.type===`agent-switcher-requested`)return t.openAgentSwitcher(),!0;if(n.type===`session-picker-requested`)return t.openSessionPicker(),!0;if(n.type===`session-renamed`)return t.renameSession(n.name),!0;if(n.type===`statusline-settings-patch`&&(0,a.isStatusLineCommandSettingsPatch)(n.patch))return t.applyStatusLinePatch(n.patch)}return!1}function J(e,t){let n=t.cliAdapter.getUserSettingsPath(),r=t.cliAdapter.readSettings(n);r.language=e,t.cliAdapter.writeSettings(n,r),t.addEntry((0,i.messageToHistoryEntry)((0,i.createSystemMessage)(`Language set to "${e}". Restarting...`))),t.requestShutdown(`other`,`Language change restart`)}function ge(e){let t=e.cliAdapter.getUserSettingsPath();e.cliAdapter.deleteSettings(t)?e.addEntry((0,i.messageToHistoryEntry)((0,i.createSystemMessage)(`Deleted ${t}. Exiting...`))):e.addEntry((0,i.messageToHistoryEntry)((0,i.createSystemMessage)(`No user settings found.`))),e.requestShutdown(`other`,`Reset settings restart`)}const Y=(0,n.createContext)(null),_e=Y.Provider;function X(){let e=(0,n.useContext)(Y);if(!e)throw Error(`TuiCliAdapterContext not provided`);return e}function ve({cwd:e,providerOverride:n,interactiveSession:a,commandEffectQueue:o,addEntry:s,baseHandleSubmit:c,setSessionName:l,setStatusLineSettings:u,showSessionPickerOnStart:d,openAgentSwitcher:f}){let{exit:p}=(0,t.useApp)(),m=X(),[h,g]=(0,r.useState)(null),_=(0,r.useRef)(null),[v,y]=(0,r.useState)(null),b=(0,r.useRef)(null),[x,S]=(0,r.useState)(!1),[C,w]=(0,r.useState)(d??!1),[T,E]=(0,r.useState)(!1),D=(0,r.useCallback)((e,t)=>{s((0,i.messageToHistoryEntry)((0,i.createSystemMessage)(`Shutting down...`))),setTimeout(()=>{a.shutdown({reason:e,message:t}).finally(()=>p())},500)},[a,s,p]),O=(0,r.useCallback)(e=>q(e,{addEntry:s,requestShutdown:D,requestModelChange:e=>{_.current=e,g(e)},openPluginTUI:()=>S(!0),openSessionPicker:()=>w(!0),openTransportTUI:()=>E(!0),openAgentSwitcher:()=>f?.(),renameSession:e=>{a.setName(e),l(e)},applyStatusLinePatch:e=>(u(m.applyStatusLineSettings(m.getUserSettingsPath(),e)),!0),cliAdapter:m}),[s,m,a,D,l,u]),k=(0,r.useCallback)(e=>{if(e.message.length>0&&s((0,i.messageToHistoryEntry)((0,i.createSystemMessage)(e.message))),e.interaction!==void 0){b.current=e.interaction,y(e.interaction.prompt);return}b.current=null,y(null),e.effects!==void 0&&e.effects.length>0&&O(e.effects)},[s,O]),A=(0,r.useCallback)(()=>{let e=o.drain();if(e===void 0)return!1;if(e.type===`interaction`){let{interaction:t}=e;return b.current=t,y(t.prompt),!0}return O(e.effects)},[O,o]);return{handleSubmit:(0,r.useCallback)(async e=>{await c(e),A()},[c,A]),pendingModelId:h,pendingInteractionPrompt:v,showPluginTUI:x,showSessionPicker:C,showTransportTUI:T,setPendingModelId:g,setShowPluginTUI:S,setShowSessionPicker:w,setShowTransportTUI:E,handleModelConfirm:(0,r.useCallback)(t=>{let r=_.current;g(null),_.current=null,t===0&&r?H({cwd:e,modelId:r,providerOverride:n,addEntry:s,requestShutdown:D,applyModelChange:(e,t,n)=>(m.applyActiveModelChange(e,t,n),{applied:!0})}):ae(s)},[e,n,s,m,D]),handleInteractionSubmit:(0,r.useCallback)(async e=>{let t=b.current;if(t===null){y(null);return}try{k(await t.submit(e))}catch(e){b.current=null,y(null),s((0,i.messageToHistoryEntry)((0,i.createSystemMessage)(`Failed: ${e instanceof Error?e.message:String(e)}`)))}},[s,k]),handleInteractionCancel:(0,r.useCallback)(()=>{let e=b.current;if(b.current=null,y(null),e?.cancel===void 0){s((0,i.messageToHistoryEntry)((0,i.createSystemMessage)(`Command interaction cancelled.`)));return}Promise.resolve(e.cancel()).then(e=>k(e)).catch(e=>{s((0,i.messageToHistoryEntry)((0,i.createSystemMessage)(`Failed: ${e instanceof Error?e.message:String(e)}`)))})},[s,k])}}function ye(e){let t={...a.DEFAULT_STATUS_LINE_COMMAND_SETTINGS},n=e.statusline;return be(n)?{enabled:typeof n.enabled==`boolean`?n.enabled:t.enabled,gitBranch:typeof n.gitBranch==`boolean`?n.gitBranch:t.gitBranch}:t}function be(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Date)}function xe(){let e=X();return(0,r.useState)(()=>ye(e.readSettings(e.getUserSettingsPath())))}const Se=`[200~`,Z=`[201~`;function Ce(e){return{value:e,cursor:e.length,isPasting:!1,pasteBuffer:``}}function we(e,t,n){return t===e.value?e:{...e,value:t,cursor:n==null?t.length:Math.min(n,t.length)}}function Te(e,t,n,r){let i=Ee(e,t,r);if(i!==void 0)return i;let a=De(e,t,n,r);if(a!==void 0)return a;let o=Oe(e,n,r);return o===void 0?Re(e,t):o}function Q(e,t,n){let r=t.replace(/\r\n?/g,`
2
+ `);return r.length===0?{state:e,effect:{type:`none`}}:r.includes(`
3
+ `)&&n.canPaste?{state:e,effect:{type:`paste`,text:r,cursor:e.cursor}}:Re(e,r)}function Ee(e,t,n){if(t===Se||t.startsWith(Se))return Ne(e,t);if(e.isPasting)return Pe(e,t,n)}function De(e,t,n,r){if(n.ctrl===!0&&t===`c`||n.tab===!0)return{state:e,effect:{type:`none`}};if(n.return===!0)return{state:e,effect:{type:`submit`,value:e.value}};if(t.length>1&&(t.includes(`
4
+ `)||t.includes(`\r`))&&r.canPaste)return{state:e,effect:{type:`paste`,text:t.replace(/\r\n?/g,`
5
+ `),cursor:e.cursor}}}function Oe(e,t,n){if(t.upArrow===!0||t.downArrow===!0)return n.enableVerticalNavigation===!1?{state:e,effect:{type:`none`}}:Fe(e,t.upArrow===!0?`up`:`down`,n.availableWidth);if(t.leftArrow===!0)return Ie(e,`left`);if(t.rightArrow===!0)return Ie(e,`right`);if(t.backspace===!0||t.delete===!0)return Le(e)}function ke(e){if(!e||e.length===0)return``;let t=``;for(let n of e){let e=n.charCodeAt(0);e>31&&e!==127&&(t+=n)}return t}function Ae(e,t,n){return{value:e.slice(0,t)+n+e.slice(t),cursor:t+n.length}}function je(e,t,n){let r=0;for(let i=0;i<t&&i<e.length;i++){let t=(0,c.default)(e[i]),a=r%n;a+t>n&&(r+=n-a),r+=t}return r}function Me(e,t,n){let r=0;for(let i=0;i<e.length;i++){if(r>=t)return i;let a=(0,c.default)(e[i]),o=r%n;o+a>n&&(r+=n-o),r+=a}return e.length}function Ne(e,t){return{state:{...e,isPasting:!0,pasteBuffer:t.slice(5)},effect:{type:`none`}}}function Pe(e,t,n){if(t!==Z&&!t.includes(Z))return{state:{...e,pasteBuffer:e.pasteBuffer+t},effect:{type:`none`}};let r=t.split(Z)[0]??``;return Q({...e,isPasting:!1,pasteBuffer:``},e.pasteBuffer+r,n)}function Fe(e,t,n){if(!n||n<=0)return{state:e,effect:{type:`none`}};let r=[...e.value],i=je(r,e.cursor,n),a=t===`up`?i-n:i+n;if(a<0)return{state:e,effect:{type:`none`}};let o=Me(r,a,n);return o===e.cursor?{state:e,effect:{type:`none`}}:{state:{...e,cursor:o},effect:{type:`render`}}}function Ie(e,t){return t===`left`&&e.cursor>0?{state:{...e,cursor:e.cursor-1},effect:{type:`render`}}:t===`right`&&e.cursor<e.value.length?{state:{...e,cursor:e.cursor+1},effect:{type:`render`}}:{state:e,effect:{type:`none`}}}function Le(e){if(e.cursor===0)return{state:e,effect:{type:`none`}};let t=e.value.slice(0,e.cursor-1)+e.value.slice(e.cursor);return{state:{...e,value:t,cursor:e.cursor-1},effect:{type:`change`,value:t}}}function Re(e,t){let n=ke(t);if(n.length===0)return{state:e,effect:{type:`none`}};let r=Ae(e.value,e.cursor,n);return{state:{...e,value:r.value,cursor:r.cursor},effect:{type:`change`,value:r.value}}}function ze({value:e,onChange:r,onSubmit:i,onPaste:a,placeholder:s=``,focus:c=!0,showCursor:l=!0,availableWidth:u,cursorHint:d=null,enableVerticalNavigation:f=!0}){let p=(0,n.useRef)(Ce(e)),[,m]=(0,n.useState)(0);return p.current=we(p.current,e,d),Be({stateRef:p,onChange:r,onSubmit:i,onPaste:a,availableWidth:u,focus:c,enableVerticalNavigation:f,forceRender:m}),(0,o.jsx)(t.Text,{children:We(p.current.value,p.current.cursor,s,l&&c)})}function Be(e){(0,t.usePaste)(t=>{He(e,()=>Q(e.stateRef.current,t,Ve(e)))},{isActive:e.focus}),(0,t.useInput)((t,n)=>{He(e,()=>Te(e.stateRef.current,t,n,Ve(e)))},{isActive:e.focus})}function Ve(e){return{availableWidth:e.availableWidth,canPaste:e.onPaste!==void 0,enableVerticalNavigation:e.enableVerticalNavigation}}function He(e,t){try{let n=t();e.stateRef.current=n.state,Ue(n.effect,e.onChange,e.onSubmit,e.onPaste,e.forceRender)}catch{}}function Ue(e,t,n,r,i){e.type===`change`?t(e.value):e.type===`submit`?n?.(e.value):e.type===`paste`?r?.(e.text,e.cursor):e.type===`render`&&i(e=>e+1)}function We(e,t,n,r){if(!r)return e.length>0?e:n?s.default.gray(n):``;if(e.length===0)return n.length>0?s.default.inverse(n[0])+s.default.gray(n.slice(1)):s.default.inverse(` `);let i=[...e],a=``;for(let e=0;e<i.length;e++){let n=i[e]??``;a+=e===t?s.default.inverse(n):n}return t>=i.length&&(a+=s.default.inverse(` `)),a}function Ge(){return[{label:`plan`,value:`plan`,description:`Plan only, no execution`},{label:`default`,value:`default`,description:`Ask before risky actions`},{label:`acceptEdits`,value:`acceptEdits`,description:`Auto-approve file edits`},{label:`bypassPermissions`,value:`bypassPermissions`,description:`Skip all permission checks`}]}function Ke(){return[{label:`ko Korean`,value:`ko`,description:`한국어`},{label:`en English`,value:`en`,description:`English`},{label:`ja Japanese`,value:`ja`,description:`日本語`},{label:`zh Chinese`,value:`zh`,description:`中文`}]}function qe(){return[{label:`current`,value:`current`,description:`Show current provider`},{label:`list`,value:`list`,description:`List available providers`},{label:`use`,value:`use`,description:`Switch to a provider`},{label:`add`,value:`add`,description:`Add a new provider`},{label:`test`,value:`test`,description:`Test provider connection`}]}const Je={agent:void 0,background:void 0,clear:{onMissingArgs:`confirm`,message:`Clear conversation history?`},compact:void 0,context:void 0,cost:void 0,exit:{onMissingArgs:`confirm`,message:`Exit the session?`},help:void 0,language:{onMissingArgs:`picker`,getItems:Ke},memory:void 0,mode:{onMissingArgs:`picker`,getItems:Ge},model:void 0,permissions:void 0,plugin:void 0,provider:{onMissingArgs:`picker`,getItems:qe},rename:void 0,reset:void 0,resume:void 0,rewind:void 0,settings:void 0,skills:void 0,statusline:void 0,"user-local":void 0,"validate-session":void 0};function Ye(e){return Je[e]}function Xe(e){if(!e.startsWith(`/`))return{isSlash:!1,parentCommand:``,filter:``};let t=e.slice(1),n=t.indexOf(` `);return n===-1?{isSlash:!0,parentCommand:``,filter:t}:{isSlash:!0,parentCommand:t.slice(0,n),filter:t.slice(n+1)}}function Ze(e,t){let[n,i]=(0,r.useState)(0),[a,o]=(0,r.useState)(!1),s=r.default.useRef(e);s.current!==e&&(s.current=e,a&&o(!1));let c=Xe(e),l=c.isSlash&&c.parentCommand.length>0,u=(0,r.useMemo)(()=>{if(!t||!c.isSlash||a)return[];if(l){let e=t.getSubcommands(c.parentCommand);if(e.length===0)return[];if(!c.filter)return e;let n=c.filter.toLowerCase();return e.filter(e=>e.name.toLowerCase().startsWith(n))}return t.getCommands(c.filter)},[t,c.isSlash,c.parentCommand,c.filter,a,l]),d=c.isSlash&&u.length>0&&!a;return n>=u.length&&u.length>0&&i(u.length-1),{showPopup:d,filteredCommands:u,selectedIndex:n,setSelectedIndex:i,isSubcommandMode:l,setShowPopup:e=>{o(typeof e==`function`?t=>!e(!t):!e)}}}function Qe(e){if(e.upArrow===!0)return`previous`;if(e.downArrow===!0)return`next`;if(e.escape===!0)return`close`;if(e.tab===!0)return`complete`}function $e(e){if(e.backspace===!0||e.delete===!0)return`cancelQueue`}function et(e){if(e.upArrow===!0)return`previous`;if(e.downArrow===!0)return`next`}function tt(){return{selectedIndex:null,draft:``}}function nt(e,t,n,r){if(t.length===0)return{value:e,cursorHint:e.length,state:n};if(r===`previous`){let r=n.selectedIndex===null?t.length-1:Math.max(0,n.selectedIndex-1),i=t[r]??e;return{value:i,cursorHint:i.length,state:{selectedIndex:r,draft:n.selectedIndex===null?e:n.draft}}}if(n.selectedIndex===null)return{value:e,cursorHint:e.length,state:n};if(n.selectedIndex<t.length-1){let r=n.selectedIndex+1,i=t[r]??e;return{value:i,cursorHint:i.length,state:{...n,selectedIndex:r}}}return{value:n.draft,cursorHint:n.draft.length,state:tt()}}function rt(e,t){let n=t.trim();return n.length===0||e[e.length-1]===n?[...e]:[...e,n]}function it(e){let t=[];for(let n of e){if(n.category!==`chat`||n.type!==`user`)continue;let e=n.data;typeof e?.content==`string`&&(t=rt(t,e.content))}return t}function at(e,t,n){return t===0?0:n===`previous`?e>0?e-1:t-1:e<t-1?e+1:0}function ot(e,t){let n=Xe(e);return n.parentCommand?{type:`insert`,value:`/${n.parentCommand} ${t.name} `}:t.subcommands&&t.subcommands.length>0?{type:`insert`,value:`/${t.name} `,selectedIndex:0}:{type:`insert`,value:`/${t.name} `}}function st(e,t,n){let r=Xe(e);return r.parentCommand?{type:`submit`,value:`/${r.parentCommand} ${t.name}`}:n?.onMissingArgs?{type:`open-interaction`,commandName:t.name}:t.subcommands&&t.subcommands.length>0?{type:`insert`,value:`/${t.name} `,selectedIndex:0}:{type:`submit`,value:`/${t.name}`}}function ct(e,t,n,r){let i=r.split(`
6
+ `).length,a=`[Pasted text #${n} +${i} lines]`;return{value:e.slice(0,t)+a+e.slice(t),cursorHint:t+a.length,label:a,lineCount:i}}function lt(e){return e.trim().length>0}function ut({commandName:e,interaction:n,onConfirm:r,onCancel:i}){return(0,t.useInput)((e,t)=>{t.return||e===`y`||e===`Y`?r():(t.escape||e===`n`||e===`N`)&&i()}),(0,o.jsxs)(t.Box,{paddingX:1,children:[(0,o.jsxs)(t.Text,{bold:!0,color:`yellow`,children:[`/`,e,`:`,` `]}),(0,o.jsxs)(t.Text,{children:[n.message,` `]}),(0,o.jsx)(t.Text,{dimColor:!0,children:`[y/n]`})]})}function dt(){let{stdout:e}=(0,t.useStdout)();return Math.max(40,(e.columns??80)-4)}function ft({commandName:e,interaction:r,onSelect:i,onCancel:a}){let s=r.getItems(),[c,l]=(0,n.useState)(0),u=dt();(0,t.useInput)((e,t)=>{if(t.upArrow)l(e=>e>0?e-1:s.length-1);else if(t.downArrow)l(e=>e<s.length-1?e+1:0);else if(t.return){let e=s[c];e&&i(e)}else (t.escape||e===`q`)&&a()});let d=s.length<=8||c<8?0:Math.min(c-8+1,s.length-8),f=s.slice(d,d+8);return(0,o.jsxs)(t.Box,{flexDirection:`column`,borderStyle:`round`,borderColor:`cyan`,paddingX:1,children:[(0,o.jsxs)(t.Text,{bold:!0,color:`cyan`,children:[`/`,e]}),f.map((e,n)=>{let r=d+n===c;return(0,o.jsx)(t.Box,{width:u,children:(0,o.jsxs)(t.Text,{color:r?`cyan`:void 0,dimColor:!r,wrap:`truncate-end`,children:[r?`▸ `:` `,e.label,e.description==null?``:` ${e.description}`]})},e.value)}),(0,o.jsx)(t.Text,{dimColor:!0,children:`↑↓ navigate · Enter select · Esc cancel`})]})}function pt(){let{stdout:e}=(0,t.useStdout)(),r=()=>Math.max(40,(e.columns??80)-4),[i,a]=(0,n.useState)(r);return(0,n.useEffect)(()=>{let t=()=>a(r());return e.on(`resize`,t),()=>{e.off(`resize`,t)}},[e]),i}function mt(e,t){return e.length>t?`${e.slice(0,t-1)}…`:e.padEnd(t)}function ht(e){let{cmd:n,isSelected:r,showSlash:i,rowWidth:a,nameColWidth:s}=e,c=r?`▸ `:` `,l=r?`cyan`:void 0,u=!r,d=mt(n.name,s);return(0,o.jsx)(t.Box,{width:a,children:(0,o.jsx)(t.Text,{color:l,dimColor:u,wrap:`truncate-end`,children:i?`${c}/${d} ${n.description??``}`:`${c}${d} ${n.description??``}`})})}function gt({commands:e,selectedIndex:n,visible:r,isSubcommandMode:i}){let a=pt();if(!r||e.length===0)return null;let s=_t(n,e.length),c=e.slice(s,s+8),l=Math.min(20,Math.max(...c.map(e=>e.name.length)));return(0,o.jsx)(t.Box,{flexDirection:`column`,borderStyle:`round`,borderColor:`gray`,paddingX:1,children:c.map((e,t)=>(0,o.jsx)(ht,{cmd:e,isSelected:s+t===n,showSlash:!i,rowWidth:a,nameColWidth:l},e.name))})}function _t(e,t){if(t<=8||e<8)return 0;let n=t-8;return Math.min(e-8+1,n)}const vt=/\[Pasted text #(\d+)(?: \+\d+ lines)?\]/g;function yt(e,t){return e.replace(vt,(e,n)=>t.get(Number(n))??``)}const bt=[`#666666`,`#888888`,`#aaaaaa`,`#888888`];function xt({text:e}){let[r,i]=(0,n.useState)(0);return(0,n.useEffect)(()=>{let e=setInterval(()=>{i(e=>e+1)},400);return()=>clearInterval(e)},[]),(0,o.jsx)(t.Text,{children:[...e].map((e,n)=>(0,o.jsx)(t.Text,{color:bt[(r+Math.floor(n/4))%bt.length],children:e},n))})}function St({onSubmit:e,onCancelQueue:r,isDisabled:i,isAborting:a,pendingPrompt:s,registry:c,sessionName:u,history:d}){let[f,p]=(0,n.useState)(``),[m,h]=(0,n.useState)(null),[g,_]=(0,n.useState)(null),[v,y]=(0,n.useState)(tt),[b,x]=(0,n.useState)([]),S=(0,n.useMemo)(()=>it(d??[]),[d]),C=(0,n.useMemo)(()=>b.reduce((e,t)=>rt(e,t),S),[S,b]),w=(0,n.useRef)(new Map),{columns:T}=(0,t.useWindowSize)(),E=T>0?T:80,D=Math.max(1,E-5),O=(0,n.useRef)(0),{showPopup:k,filteredCommands:A,selectedIndex:j,setSelectedIndex:M,isSubcommandMode:N,setShowPopup:P}=Ze(f,c),F=(0,n.useCallback)((e,t)=>{O.current+=1;let n=O.current;w.current.set(n,e),p(r=>{let i=ct(r,t,n,e);return h(i.cursorHint),i.value})},[]),I=(0,n.useCallback)(()=>{y(tt())},[]),ee=(0,n.useCallback)(e=>{x(t=>rt(t,e))},[]),L=(0,n.useCallback)(t=>{ee(t),I(),e(t)},[e,ee,I]),te=(0,n.useCallback)(e=>{let t=ot(f,e);t.type===`insert`&&(p(t.value),t.selectedIndex!==void 0&&M(t.selectedIndex))},[f,M]),ne=(0,n.useCallback)(e=>{let t=Ye(e.name),n=st(f,e,t);if(n.type===`insert`){p(n.value),n.selectedIndex!==void 0&&M(n.selectedIndex);return}if(n.type===`open-interaction`&&t?.onMissingArgs){P(!1),_({commandName:n.commandName,interaction:t});return}n.type===`submit`&&(p(``),L(n.value))},[f,L,M,P]),R=(0,n.useCallback)(e=>{if(!lt(e))return;if(k&&A[j]){ne(A[j]);return}let t=yt(e.trim(),w.current);p(``),w.current.clear(),O.current=0,L(t)},[k,A,j,ne,L]);(0,t.useInput)((e,t)=>{if(!k)return;let n=Qe(t);if(n===`previous`||n===`next`)M(e=>at(e,A.length,n));else if(n===`close`)P(!1);else if(n===`complete`){let e=A[j];e&&te(e)}},{isActive:k&&!i}),(0,t.useInput)((e,t)=>{let n=et(t);if(!n)return;let r=nt(f,C,v,n);p(r.value),h(r.cursorHint),y(r.state)},{isActive:!k&&!i&&!s}),(0,t.useInput)((e,t)=>{$e(t)===`cancelQueue`&&s&&r?.()},{isActive:!!s});let z=a?`yellow`:s?`cyan`:i?`gray`:`green`,B=Math.max(1,E-2),V=(()=>{if(u){let e=` "${u}" `,t=Math.max(0,B-e.length-2);return{left:`┌`+`─`.repeat(t),label:e,right:`─`.repeat(2)+`┐`}}return{left:`┌`+`─`.repeat(B),label:``,right:`┐`}})(),re=(0,n.useCallback)(e=>{g&&(_(null),L(`/${g.commandName} ${e.value}`))},[g,L]),ie=(0,n.useCallback)(()=>{g&&(_(null),L(`/${g.commandName}`))},[g,L]),H=(0,n.useCallback)(()=>{_(null)},[]);return(0,o.jsxs)(t.Box,{flexDirection:`column`,children:[g&&(0,l.isPickerInteraction)(g.interaction)&&(0,o.jsx)(ft,{commandName:g.commandName,interaction:g.interaction,onSelect:re,onCancel:H}),g&&(0,l.isConfirmInteraction)(g.interaction)&&(0,o.jsx)(ut,{commandName:g.commandName,interaction:g.interaction,onConfirm:ie,onCancel:H}),!g&&k&&(0,o.jsx)(gt,{commands:A,selectedIndex:j,visible:k,isSubcommandMode:N}),(0,o.jsxs)(t.Text,{color:z,children:[V.left,V.label?(0,o.jsx)(t.Text,{backgroundColor:z,color:`black`,bold:!0,children:V.label}):null,V.right]}),(0,o.jsx)(t.Box,{borderStyle:`single`,borderTop:!1,borderColor:z,paddingLeft:1,children:a?(0,o.jsx)(t.Text,{color:`yellow`,children:` Interrupting...`}):s?(0,o.jsxs)(t.Text,{color:`cyan`,children:[` `,`Queued:`,` `,s.length>50?s.slice(0,47)+`...`:s,` `,(0,o.jsx)(t.Text,{dimColor:!0,children:`(Backspace to cancel)`})]}):i?(0,o.jsx)(xt,{text:` Waiting for response... (ESC to interrupt)`}):(0,o.jsxs)(t.Box,{children:[(0,o.jsx)(t.Text,{color:`green`,bold:!0,children:`> `}),(0,o.jsx)(ze,{value:f,onChange:e=>{p(e),I(),h(null)},onSubmit:R,onPaste:F,placeholder:`Type a message or /help`,availableWidth:D,cursorHint:m,enableVerticalNavigation:!1})]})})]})}function Ct({items:e,renderItem:r,onSelect:i,onCancel:a,maxVisible:s=3}){let[c,l]=(0,n.useState)(()=>D()),u=(0,n.useRef)(c),d=(0,n.useCallback)(t=>{let n=A(u.current,t,{itemCount:e.length,maxVisible:s});if(u.current=n.state,l(n.state),n.effect.type===`cancel`)a();else if(n.effect.type===`select`){let t=e[n.effect.index];t!==void 0&&i(t)}},[e,s,a,i]);if((0,t.useInput)((e,t)=>{let n=O(t);n!==void 0&&d(n)}),e.length===0)return(0,o.jsx)(t.Box,{});let f=j(c,{itemCount:e.length,maxVisible:s});f!==c&&(u.current=f);let{selectedIndex:p,scrollOffset:m}=f,h=e.slice(m,m+s),g=m+s<e.length;return(0,o.jsxs)(t.Box,{flexDirection:`column`,children:[m>0&&(0,o.jsxs)(t.Text,{dimColor:!0,children:[` ↑ `,m,` more above`]}),h.map((e,n)=>(0,o.jsx)(t.Box,{marginBottom:1,children:r(e,m+n===p)},m+n)),g&&(0,o.jsxs)(t.Text,{dimColor:!0,children:[` ↓ `,e.length-m-s,` more below`]})]})}function wt(){return{value:``,resolved:!1}}function Tt(e,t){if(t.escape===!0)return{type:`cancel`};if(t.return===!0)return{type:`submit`};if(t.backspace===!0||t.delete===!0)return{type:`delete`};if(e&&t.ctrl!==!0&&t.meta!==!0)return{type:`insert`,value:e}}function Et(e,t,n){return e.resolved?{state:e,effect:{type:`none`}}:t.type===`cancel`?{state:{...e,resolved:!0},effect:{type:`cancel`}}:t.type===`delete`?{state:{...e,value:e.value.slice(0,-1),error:void 0},effect:{type:`none`}}:t.type===`insert`?{state:{...e,value:e.value+t.value,error:void 0},effect:{type:`none`}}:Dt(e,n)}function Dt(e,t){let n=e.value.trim();if(!n&&!t.allowEmpty){let r=t.validate?.(n);return{state:r?{...e,error:r}:e,effect:{type:`none`}}}let r=t.validate?.(n);return r===void 0?{state:{...e,resolved:!0},effect:{type:`submit`,value:n}}:{state:{...e,error:r},effect:{type:`none`}}}function Ot({title:e,description:r,placeholder:i,onSubmit:a,onCancel:s,validate:c,allowEmpty:l=!1,masked:u=!1}){let[d,f]=(0,n.useState)(()=>wt()),p=(0,n.useRef)(d),m=(0,n.useCallback)(e=>{let t=Et(p.current,e,{allowEmpty:l,validate:c});p.current=t.state,f(t.state),t.effect.type===`cancel`?s():t.effect.type===`submit`&&a(t.effect.value)},[l,c,s,a]);return(0,t.useInput)((e,t)=>{let n=Tt(e,t);n!==void 0&&m(n)}),(0,o.jsxs)(t.Box,{flexDirection:`column`,borderStyle:`round`,borderColor:`yellow`,paddingX:1,children:[(0,o.jsx)(t.Text,{color:`yellow`,bold:!0,children:e}),(0,o.jsx)(kt,{description:r}),(0,o.jsxs)(t.Box,{marginTop:1,children:[(0,o.jsx)(t.Text,{color:`cyan`,children:`> `}),d.value?(0,o.jsx)(t.Text,{children:u?`*`.repeat(d.value.length):d.value}):i?(0,o.jsx)(t.Text,{dimColor:!0,children:i}):null,(0,o.jsx)(t.Text,{color:`cyan`,children:`█`})]}),d.error&&(0,o.jsx)(t.Text,{color:`red`,children:d.error}),(0,o.jsx)(t.Text,{dimColor:!0,children:` Enter Submit Esc Cancel`})]})}function kt({description:e}){return e===void 0||e.length===0?null:(0,o.jsx)(t.Text,{dimColor:!0,children:e})}function At({prompt:e,onSubmit:n,onCancel:r}){return e.kind===`text`?(0,o.jsx)(Ot,{title:e.title,description:e.description,placeholder:e.placeholder,allowEmpty:e.allowEmpty,masked:e.masked,validate:e.validate,onSubmit:n,onCancel:r},`text:${e.title}`):(0,o.jsxs)(t.Box,{flexDirection:`column`,children:[(0,o.jsx)(t.Text,{bold:!0,children:e.title}),e.description!==void 0&&e.description.length>0&&(0,o.jsx)(t.Text,{dimColor:!0,children:e.description}),(0,o.jsx)(Ct,{items:[...e.options],maxVisible:e.maxVisible,renderItem:(e,n)=>(0,o.jsxs)(t.Text,{color:n?`cyan`:void 0,children:[n?`> `:` `,e.label]}),onSelect:e=>n(e.value),onCancel:r})]})}const jt=new Set([`Bash`,`BackgroundProcess`]);function Mt(e){if(!jt.has(e.toolName)||!e.toolResultData)return;let t=Nt(e.toolResultData),n=Bt(t,`exitCode`),r=Vt(t,`success`),i=Lt(It(Pt(e.toolResultData,t))),a=i.slice(0,4),o=Math.max(0,i.length-a.length),s=e.result===`error`||r===!1||n!==void 0&&n!==0;return{status:s?`error`:`success`,statusLabel:Ft(s,n),previewLines:a,omittedLineCount:o,transcriptHint:o>0?`... +${o} lines (full output in session transcript)`:void 0}}function Nt(e){try{return JSON.parse(e)}catch{return e}}function Pt(e,t){if(!$(t))return e;let n=zt(t,`output`);if(n!==void 0)return n;let r=zt(t,`stdout`),i=zt(t,`stderr`),a=zt(t,`error`),o=[];return r&&o.push(r),i&&o.push(Rt(i,`[stderr] `)),!r&&!i&&a&&o.push(a),o.join(`
7
+ `)}function Ft(e,t){return t!==void 0&&t!==0?`exit ${t}`:e?`error`:`ok`}function It(e){return e?e.replace(/\r\n/g,`
8
+ `).split(`
9
+ `):[]}function Lt(e){let t=e.length;for(;t>0&&e[t-1].trim().length===0;)--t;return e.slice(0,t)}function Rt(e,t){return It(e).map(e=>`${t}${e}`).join(`
10
+ `)}function $(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Date)}function zt(e,t){if(!$(e))return;let n=e[t];return typeof n==`string`?n:void 0}function Bt(e,t){if(!$(e))return;let n=e[t];return typeof n==`number`&&Number.isFinite(n)?n:void 0}function Vt(e,t){if(!$(e))return;let n=e[t];return typeof n==`boolean`?n:void 0}const Ht=`\x1B[0m`,Ut=` `,Wt=d.default;function Gt(e){return e===void 0?process.env.NO_COLOR||process.env.FORCE_COLOR===`0`?!1:process.env.FORCE_COLOR?!0:!!process.stdout.isTTY:e}function Kt(e){return e?.trim().toLowerCase()===`diff`}function qt(e,t,n){let r=`${Ut}${e}`.padEnd(t);return n?e.startsWith(`+`)?`${r}${Ht}`:e.startsWith(`-`)?`${r}${Ht}`:r.trimEnd():r.trimEnd()}function Jt(e,t,n){if(e.startsWith(`+`)||e.startsWith(`-`))return qt(e,n,t);let r=`${Ut}${e}`;return t?e.startsWith(`@@`)?`${r}${Ht}`:e.startsWith(`diff `)||e.startsWith(`index `)?`${r}${Ht}`:r:r}function Yt(e,t){let n=e.reduce((e,t)=>Math.max(e,4+t.length),0);return t===void 0?n:Math.max(n,t)}function Xt(e,t,n){let r=e.split(`
11
+ `),i=Yt(r,n);return`${r.map(e=>Jt(e,t,i)).join(`
12
+ `)}\n\n`}function Zt(e,t){let n=new Wt(void 0,{ignoreIllegals:!0}),r=n.code.bind(n);return n.code=(n,i,a)=>Kt(i)?Xt(n,e,t):r(n,i,a),n}function Qt(e,t={}){let n=u.marked.parse(e,{renderer:Zt(Gt(t.color),t.codeBlockWidth)});return typeof n==`string`?n.trimEnd():e}function $t({tool:e}){let n=Mt(e);if(!n||n.statusLabel===`ok`&&n.previewLines.length===0&&!n.transcriptHint)return null;let r=n.status===`error`?`red`:`white`;return(0,o.jsxs)(t.Box,{flexDirection:`column`,marginLeft:4,children:[n.statusLabel!==`ok`&&(0,o.jsx)(t.Text,{color:r,dimColor:!0,children:n.statusLabel}),n.previewLines.map((e,n)=>(0,o.jsx)(t.Text,{color:r,dimColor:!0,children:e},`${e}-${n}`)),n.transcriptHint&&(0,o.jsx)(t.Text,{dimColor:!0,children:n.transcriptHint})]})}function en(e){let t=e.lines.length>12?nn(e.lines):e.lines,n=Math.max(...t.map(e=>e.lineNumber),0).toString().length,r=t.map(e=>tn(e,n)),i=e.lines.length>12;return{file:e.file,markdown:["```diff",...r,"```"].join(`
13
+ `),truncated:i,remainingLineCount:i?e.lines.length-t.length:0}}function tn(e,t){if(e.type===`hunk`)return e.text;let n=e.lineNumber.toString().padStart(t,` `);return e.type===`remove`?`- ${n} | ${e.text}`:e.type===`add`?`+ ${n} | ${e.text}`:` ${n} | ${e.text}`}function nn(e){let t=rn(e),n=[];for(let e of t){if(n.length===0&&e.length>10)return e.slice(0,10);if(n.length+e.length>10)break;n.push(...e)}return n.length>0?n:e.slice(0,10)}function rn(e){let t=[],n=[];for(let r of e){if(r.type===`hunk`&&n.length>0){t.push(n),n=[r];continue}n.push(r)}return n.length>0&&t.push(n),t}function an({file:e,lines:n}){let r=en({file:e,lines:n});return(0,o.jsxs)(t.Box,{flexDirection:`column`,marginLeft:4,children:[r.file&&(0,o.jsxs)(t.Text,{color:`white`,dimColor:!0,children:[`│ `,r.file]}),(0,o.jsx)(t.Text,{children:Qt(r.markdown)}),r.truncated&&(0,o.jsxs)(t.Text,{color:`white`,dimColor:!0,children:[`│ ... and `,r.remainingLineCount,` more lines`]})]})}function on({entry:e}){let n=e.data;if(!n)return(0,o.jsx)(o.Fragment,{});let r=n.promptTokens===void 0?`?`:sn(n.promptTokens),a=n.completionTokens===void 0?`?`:sn(n.completionTokens),s=sn(n.totalTokens),c=`${Math.round(n.contextUsedPercentage)}% (${(0,i.formatTokenCount)(n.contextUsedTokens)}/${(0,i.formatTokenCount)(n.contextMaxTokens)})`,l=n.costStatus===`unknown`?`cost unknown`:`cost ${n.costStatus}`;return(0,o.jsx)(t.Box,{flexDirection:`column`,marginBottom:1,children:(0,o.jsxs)(t.Box,{children:[(0,o.jsxs)(t.Text,{color:`white`,bold:!0,children:[`Usage:`,` `]}),(0,o.jsxs)(t.Text,{dimColor:!0,children:[n.kind,` `,s,` tokens (in `,r,` / out `,a,`) · Context `,c,` ·`,` `,l]})]})})}function sn(e){return e<1e3?e.toLocaleString():(0,i.formatTokenCount)(e)}function cn(e){return Mt(e)?.status===`error`?`✗`:e.isRunning?`⟳`:e.result===`error`?`✗`:e.result===`denied`?`⊘`:`✓`}function ln(e){return Mt(e)?.status===`error`||e.result===`error`?`red`:e.isRunning||e.result===`denied`?`yellow`:`green`}function un(e){return`${cn(e)} ${e.toolName}${e.firstArg?`(${e.firstArg})`:``}`}function dn({role:e}){switch(e){case`user`:return(0,o.jsxs)(t.Text,{color:`green`,bold:!0,children:[`You:`,` `]});case`assistant`:return(0,o.jsxs)(t.Text,{color:`cyan`,bold:!0,children:[`Robota:`,` `]});case`system`:return(0,o.jsxs)(t.Text,{color:`yellow`,bold:!0,children:[`System:`,` `]});case`tool`:return(0,o.jsxs)(t.Text,{color:`white`,bold:!0,children:[`Tool:`,` `]})}}function fn({message:e}){if(!(0,i.isToolMessage)(e))return(0,o.jsx)(o.Fragment,{});let n=e.name,r=e.content,a=null;try{let e=JSON.parse(r);Array.isArray(e)&&e.length>0&&typeof e[0].line==`string`&&(a=e)}catch{}if(a)return(0,o.jsxs)(t.Box,{flexDirection:`column`,marginBottom:1,children:[(0,o.jsxs)(t.Box,{children:[(0,o.jsxs)(t.Text,{color:`white`,bold:!0,children:[`Tool:`,` `]}),n&&(0,o.jsxs)(t.Text,{color:`white`,dimColor:!0,children:[`[`,n,`]`]})]}),(0,o.jsx)(t.Text,{children:` `}),a.map((e,n)=>(0,o.jsxs)(t.Box,{flexDirection:`column`,children:[(0,o.jsxs)(t.Text,{color:`green`,children:[` `,`✓`,` `,e.line]}),e.diffLines&&e.diffLines.length>0&&(0,o.jsx)(an,{file:e.diffFile,lines:e.diffLines})]},n))]});let s=r.split(`
14
+ `).filter(e=>e.trim());return(0,o.jsxs)(t.Box,{flexDirection:`column`,marginBottom:1,children:[(0,o.jsxs)(t.Box,{children:[(0,o.jsxs)(t.Text,{color:`white`,bold:!0,children:[`Tool:`,` `]}),n&&(0,o.jsxs)(t.Text,{color:`white`,dimColor:!0,children:[`[`,n,`]`]})]}),(0,o.jsx)(t.Text,{children:` `}),s.map((e,n)=>(0,o.jsxs)(t.Text,{color:`green`,children:[` `,`✓`,` `,e]},n))]})}const pn=n.default.memo(function({message:e}){if((0,i.isToolMessage)(e))return(0,o.jsx)(fn,{message:e});let n=e.content??``,r=e.state===`interrupted`;return(0,o.jsxs)(t.Box,{flexDirection:`column`,marginBottom:1,children:[(0,o.jsx)(t.Box,{children:(0,o.jsx)(dn,{role:e.role})}),(0,o.jsx)(t.Text,{children:` `}),(0,o.jsx)(t.Box,{marginLeft:2,children:(0,o.jsx)(t.Text,{wrap:`wrap`,children:(0,i.isAssistantMessage)(e)?Qt(n+(r?`
15
+
16
+ _(interrupted)_`:``)):n})})]})});function mn({entry:e}){let n=e.data,r=n?.tools,i=n?.summary?.split(`
17
+ `)??[];return r&&r.length>0?(0,o.jsxs)(t.Box,{flexDirection:`column`,marginBottom:1,children:[(0,o.jsx)(t.Box,{children:(0,o.jsxs)(t.Text,{color:`white`,bold:!0,children:[`Tool:`,` `]})}),(0,o.jsx)(t.Text,{children:` `}),r.map((e,n)=>(0,o.jsxs)(t.Box,{flexDirection:`column`,children:[(0,o.jsxs)(t.Text,{color:ln(e),children:[` `,un(e)]}),(0,o.jsx)($t,{tool:e}),e.diffLines&&e.diffLines.length>0&&(0,o.jsx)(an,{file:e.diffFile,lines:e.diffLines})]},n))]}):(0,o.jsxs)(t.Box,{flexDirection:`column`,marginBottom:1,children:[(0,o.jsx)(t.Box,{children:(0,o.jsxs)(t.Text,{color:`white`,bold:!0,children:[`Tool:`,` `]})}),(0,o.jsx)(t.Text,{children:` `}),i.map((e,n)=>(0,o.jsxs)(t.Text,{color:`green`,children:[` `,e]},n))]})}function hn({entry:e}){let n=e.data,r=typeof n?.message==`string`?n.message:typeof n?.content==`string`?n.content:e.type;return(0,o.jsxs)(t.Box,{flexDirection:`column`,marginBottom:1,children:[(0,o.jsx)(t.Box,{children:(0,o.jsxs)(t.Text,{color:`yellow`,bold:!0,children:[`System:`,` `]})}),(0,o.jsx)(t.Text,{children:` `}),(0,o.jsx)(t.Box,{marginLeft:2,children:(0,o.jsx)(t.Text,{wrap:`wrap`,children:r})})]})}function gn({entry:e}){if(e.category===`chat`){let t=e.data;return(0,o.jsx)(pn,{message:t})}return e.type===`tool-summary`?(0,o.jsx)(mn,{entry:e}):e.type===`usage-summary`?(0,o.jsx)(on,{entry:e}):e.type===`tool-start`||e.type===`tool-end`?(0,o.jsx)(o.Fragment,{}):(0,o.jsx)(hn,{entry:e})}function _n({history:e}){return(0,o.jsx)(t.Box,{flexDirection:`column`,children:e.map(e=>(0,o.jsx)(gn,{entry:e},e.id))})}const vn=[`Allow`,`Allow always (this session)`,`Deny`];function yn(e,t){let n=k({...t,escape:!1});if(n!==void 0)return n;if(e===`y`||e===`1`)return{type:`shortcut`,index:0};if(e===`a`||e===`2`)return{type:`shortcut`,index:1};if(e===`n`||e===`d`||e===`3`)return{type:`shortcut`,index:2}}function bn(e,t){if(e.resolved)return{state:e,effect:{type:`none`}};if(typeof t!=`string`)return Sn(e,t.index);let n=A(e,t,{itemCount:vn.length});return n.effect.type===`select`?{state:n.state,effect:{type:`resolve`,decision:xn(n.effect.index)}}:{state:n.state,effect:{type:`none`}}}function xn(e){return e===0?!0:e===1?`allow-session`:!1}function Sn(e,t){return{state:{...e,selectedIndex:t,resolved:!0},effect:{type:`resolve`,decision:xn(t)}}}function Cn(e){let t=Object.entries(e);return t.length===0?`(no arguments)`:t.map(([e,t])=>`${e}: ${typeof t==`string`?t:JSON.stringify(t)}`).join(`, `)}function wn({request:e}){let[r,i]=n.default.useState(()=>D()),a=n.default.useRef(r),s=n.default.useRef(e);if(s.current!==e){s.current=e;let t=D();a.current=t,i(t)}let c=n.default.useCallback(t=>{let n=bn(a.current,t);a.current=n.state,i(n.state),n.effect.type===`resolve`&&e.resolve(n.effect.decision)},[e]);return(0,t.useInput)((e,t)=>{let n=yn(e,t);n!==void 0&&c(n)}),(0,o.jsxs)(t.Box,{flexDirection:`column`,borderStyle:`round`,borderColor:`yellow`,paddingX:1,children:[(0,o.jsx)(t.Text,{color:`yellow`,bold:!0,children:`[Permission Required]`}),(0,o.jsxs)(t.Text,{children:[`Tool:`,` `,(0,o.jsx)(t.Text,{color:`cyan`,bold:!0,children:e.toolName})]}),(0,o.jsxs)(t.Text,{dimColor:!0,children:[` `,Cn(e.toolArgs)]}),(0,o.jsx)(t.Box,{marginTop:1,children:vn.map((e,n)=>(0,o.jsx)(t.Box,{marginRight:2,children:(0,o.jsxs)(t.Text,{color:n===r.selectedIndex?`cyan`:void 0,bold:n===r.selectedIndex,children:[n===r.selectedIndex?`> `:` `,e]})},e))}),(0,o.jsx)(t.Text,{dimColor:!0,children:` left/right to select, Enter to confirm`})]})}function Tn(e,t,n,i,a){let[o,s]=(0,r.useState)([]),[c,l]=(0,r.useState)(!1),[u,d]=(0,r.useState)();return(0,r.useEffect)(()=>{if(s([]),d(void 0),e===`marketplace-list`)l(!0),n.marketplaceList().then(e=>{let t=[{label:`Add Marketplace`,value:`__add__`}],n=e.map(e=>({label:e.name,value:e.name,hint:e.type}));s([...t,...n]),l(!1)}).catch(e=>{d(e instanceof Error?e.message:String(e)),l(!1)});else if(e===`marketplace-browse`){let e=t??``;l(!0),n.listAvailablePlugins(e).then(e=>{s(e.map(e=>({label:e.name,value:e.name,hint:e.installed?`installed`:e.description}))),l(!1)}).catch(e=>{d(e instanceof Error?e.message:String(e)),l(!1)})}else e===`installed-list`&&(l(!0),n.listInstalled().then(e=>{s(e.map(e=>({label:e.name,value:e.name,hint:e.description}))),l(!1)}).catch(e=>{d(e instanceof Error?e.message:String(e)),l(!1)}))},[a,e,t,n,i]),{items:o,loading:c,error:u}}function En({title:e,items:r,onSelect:i,onBack:a,loading:s,error:c}){let[l,u]=(0,n.useState)(()=>D()),d=(0,n.useRef)(l),f=!s&&!c,p=(0,n.useCallback)(e=>{let t=A(d.current,e,{itemCount:r.length,enabled:f});if(d.current=t.state,u(t.state),t.effect.type===`cancel`)a();else if(t.effect.type===`select`){let e=r[t.effect.index];e!==void 0&&i(e.value)}},[f,r,a,i]);(0,t.useInput)((e,t)=>{let n=O(t);n!==void 0&&p(n)});let m=j(l,{itemCount:r.length});m!==l&&(d.current=m);let h=m.selectedIndex;return(0,o.jsxs)(t.Box,{flexDirection:`column`,borderStyle:`round`,borderColor:`yellow`,paddingX:1,children:[(0,o.jsx)(t.Text,{color:`yellow`,bold:!0,children:e}),s&&(0,o.jsx)(t.Box,{marginTop:1,children:(0,o.jsx)(t.Text,{dimColor:!0,children:`Loading...`})}),c&&(0,o.jsxs)(t.Box,{marginTop:1,flexDirection:`column`,children:[(0,o.jsx)(t.Text,{color:`red`,children:c}),(0,o.jsx)(t.Text,{dimColor:!0,children:`Press Esc to go back`})]}),!s&&!c&&(0,o.jsx)(t.Box,{flexDirection:`column`,marginTop:1,children:r.map((e,n)=>(0,o.jsxs)(t.Box,{children:[(0,o.jsxs)(t.Text,{color:n===h?`cyan`:void 0,bold:n===h,children:[n===h?`> `:` `,e.label]}),e.hint&&(0,o.jsxs)(t.Text,{dimColor:!0,children:[` `,e.hint]})]},e.value))}),(0,o.jsx)(t.Text,{dimColor:!0,children:s||c?``:` ↑↓ Navigate Enter Select Esc Back`})]})}function Dn(e,t){e===`marketplace`?t.push({screen:`marketplace-list`}):e===`installed`&&t.push({screen:`installed-list`})}function On(e,t){e===`__add__`?t.push({screen:`marketplace-add`}):t.push({screen:`marketplace-action`,context:{marketplace:e}})}function kn(e,t,n,r){e===`browse`?r.push({screen:`marketplace-browse`,context:{marketplace:t}}):e===`update`?n.marketplaceUpdate(t).then(()=>{r.notify(`Updated marketplace "${t}".`),r.pop()}).catch(e=>{r.notify(`Error: ${e instanceof Error?e.message:String(e)}`)}):e===`remove`&&r.setConfirm({message:`Remove marketplace "${t}" and all its plugins?`,onConfirm:()=>{r.setConfirm(void 0),n.marketplaceRemove(t).then(()=>{r.notify(`Removed marketplace "${t}".`),r.popN(2)}).catch(e=>{r.notify(`Error: ${e instanceof Error?e.message:String(e)}`)})},onCancel:()=>r.setConfirm(void 0)})}function An(e,t,n,r){let i=`${e}@${t}`;n.find(t=>t.value===e)?.hint===`installed`?r.push({screen:`installed-action`,context:{pluginId:i}}):r.push({screen:`marketplace-install-scope`,context:{marketplace:t,pluginId:i}})}function jn(e,t,n,r){let i=e;n.install(t,i).then(()=>{r.notify(`Installed plugin "${t}" (${i} scope).`),r.popN(2)}).catch(e=>{r.notify(`Error: ${e instanceof Error?e.message:String(e)}`)})}function Mn(e,t,n){n.setConfirm({message:`Uninstall plugin "${e}"?`,onConfirm:()=>{n.setConfirm(void 0),t.uninstall(e).then(()=>{n.notify(`Uninstalled plugin "${e}".`),n.refresh()}).catch(e=>{n.notify(`Error: ${e instanceof Error?e.message:String(e)}`)})},onCancel:()=>n.setConfirm(void 0)})}function Nn(e,t,n,r){e===`uninstall`&&r.setConfirm({message:`Uninstall plugin "${t}"?`,onConfirm:()=>{r.setConfirm(void 0),n.uninstall(t).then(()=>{r.notify(`Uninstalled plugin "${t}".`),r.popN(2)}).catch(e=>{r.notify(`Error: ${e instanceof Error?e.message:String(e)}`)})},onCancel:()=>r.setConfirm(void 0)})}function Pn({callbacks:e,onClose:t,addMessage:r}){let[i,a]=(0,n.useState)([{screen:`main`}]),[s,c]=(0,n.useState)(),[l,u]=(0,n.useState)(0),d=i[i.length-1]??{screen:`main`},f=(0,n.useCallback)(e=>{a(t=>[...t,e])},[]),p=(0,n.useCallback)(()=>{a(e=>e.length<=1?(t(),e):e.slice(0,-1))},[t]),m=(0,n.useCallback)(e=>{a(n=>{let r=n.slice(0,Math.max(1,n.length-e));return r.length===0?(t(),n):r})},[t]),h=(0,n.useCallback)(e=>{r?.({role:`system`,content:e})},[r]),g=(0,n.useCallback)(()=>{u(e=>e+1)},[]),_=(0,n.useCallback)(e=>c(e),[c]),v={push:(0,n.useCallback)(e=>f({screen:e.screen,context:e.context}),[f]),pop:p,popN:m,notify:h,setConfirm:_,refresh:g},{items:y,loading:b,error:x}=Tn(d.screen,d.context?.marketplace,e,l,i.length),S=(0,n.useCallback)(t=>{let n=d.screen,r=d.context;n===`main`?Dn(t,v):n===`marketplace-list`?On(t,v):n===`marketplace-action`?kn(t,r?.marketplace??``,e,v):n===`marketplace-browse`?An(t,r?.marketplace??``,y,v):n===`marketplace-install-scope`?jn(t,r?.pluginId??``,e,v):n===`installed-list`?Mn(t,e,v):n===`installed-action`&&Nn(t,r?.pluginId??``,e,v)},[d,y,e,f,p,m,h,c,g]),C=(0,n.useCallback)(t=>{d.screen===`marketplace-add`&&e.marketplaceAdd(t).then(e=>{h(`Added marketplace "${e}" from ${t}.`),p()}).catch(e=>{h(`Error: ${e instanceof Error?e.message:String(e)}`),p()})},[d.screen,e,h,p]);if(s)return(0,o.jsx)(ee,{message:s.message,onSelect:e=>{e===0?s.onConfirm():s.onCancel()}});let w=d.screen;return w===`marketplace-add`?(0,o.jsx)(Ot,{title:`Add Marketplace Source`,placeholder:`owner/repo or git URL`,onSubmit:C,onCancel:p,validate:e=>e.includes(`/`)?void 0:`Must be owner/repo or a git URL`}):w===`marketplace-action`?(0,o.jsx)(En,{title:`Marketplace: ${d.context?.marketplace??``}`,items:[{label:`Browse plugins`,value:`browse`},{label:`Update`,value:`update`},{label:`Remove`,value:`remove`}],onSelect:S,onBack:p},i.length):w===`marketplace-install-scope`?(0,o.jsx)(En,{title:`Install scope for "${d.context?.pluginId??``}"`,items:[{label:`User scope`,value:`user`},{label:`Project scope`,value:`project`}],onSelect:S,onBack:p},i.length):w===`installed-action`?(0,o.jsx)(En,{title:`Plugin: ${d.context?.pluginId??``}`,items:[{label:`Uninstall`,value:`uninstall`}],onSelect:S,onBack:p},i.length):(0,o.jsx)(En,{title:{main:`Plugin Management`,"marketplace-list":`Marketplace`,"marketplace-browse":`Browse: ${d.context?.marketplace??``}`,"installed-list":`Installed Plugins`}[w]??`Plugin Management`,items:{main:[{label:`Marketplace`,value:`marketplace`},{label:`Installed Plugins`,value:`installed`}]}[w]??y,onSelect:S,onBack:p,loading:b,error:x},`${w}-${i.length}-${l}`)}function Fn({sessions:e,onSelect:n,onCancel:r}){return(0,o.jsxs)(t.Box,{flexDirection:`column`,paddingX:1,marginBottom:1,children:[(0,o.jsx)(t.Text,{bold:!0,color:`cyan`,children:`Select a session to resume (ESC to cancel):`}),(0,o.jsx)(Ct,{items:[...e],renderItem:(e,n)=>{let r=e.preview?e.preview.slice(0,60)+(e.preview.length>60?`...`:``):``;return(0,o.jsxs)(t.Text,{children:[n?`> `:` `,(0,o.jsx)(t.Text,{bold:!0,children:e.name??e.id.slice(0,8)}),` `,(0,o.jsx)(t.Text,{dimColor:!0,children:new Date(e.updatedAt).toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}),` `,(0,o.jsxs)(t.Text,{dimColor:!0,children:[`msgs: `,e.messageCount]}),r?(0,o.jsxs)(o.Fragment,{children:[`
18
+ `,(0,o.jsx)(t.Text,{color:`gray`,children:r})]}):null]})},onSelect:e=>n(e.id),onCancel:r})]})}function In(e){let t=Ln(e),n=e.hasPendingPrompt&&t.kind!==`queued`?[`queued`]:[],r=[t.label,...n].join(` · `);return{...t,segments:n,text:r}}function Ln(e){return e.activeToolCount>0?{kind:`tools`,label:`Tools x${e.activeToolCount}`,color:`cyan`}:e.isThinking?{kind:`thinking`,label:`Thinking`,color:`yellow`}:e.activeBackgroundTaskCount>0?{kind:`background`,label:`Background x${e.activeBackgroundTaskCount}`,color:`cyan`}:e.hasPendingPrompt?{kind:`queued`,label:`Queued`,color:`yellow`}:{kind:`idle`,label:`Idle`,color:`gray`}}function Rn(e){return e>=90?`red`:e>=70?`yellow`:`green`}function zn({isThinking:e,activeToolCount:n,activeBackgroundTaskCount:r,hasPendingPrompt:i}){let a=In({isThinking:e,activeToolCount:n,activeBackgroundTaskCount:r,hasPendingPrompt:i});return(0,o.jsx)(t.Text,{color:a.color,bold:a.kind!==`idle`,children:a.text})}function Bn({percentage:e,usedTokens:n,maxTokens:r}){return(0,o.jsxs)(t.Text,{color:Rn(e),children:[`Context: `,Math.round(e),`% (`,(0,i.formatTokenCount)(n),`/`,(0,i.formatTokenCount)(r),`)`]})}function Vn({permissionMode:e}){return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.Text,{color:`cyan`,bold:!0,children:`Mode:`}),` `,(0,o.jsx)(t.Text,{children:e})]})}function Hn(e){return e!==`default`}function Un({modelName:e,providerDisplayName:n}){return n===void 0?(0,o.jsx)(t.Text,{dimColor:!0,children:e}):(0,o.jsxs)(t.Text,{dimColor:!0,children:[n,` `,e]})}function Wn(e){let n=e.showGitBranch&&e.gitBranch!==void 0&&e.gitBranch.length>0,r=Hn(e.permissionMode);return(0,o.jsxs)(t.Text,{children:[(0,o.jsx)(zn,{isThinking:e.isThinking,activeToolCount:e.activeToolCount,activeBackgroundTaskCount:e.activeBackgroundTaskCount,hasPendingPrompt:e.hasPendingPrompt}),r&&(0,o.jsxs)(o.Fragment,{children:[` | `,(0,o.jsx)(Vn,{permissionMode:e.permissionMode})]}),e.sessionName&&(0,o.jsxs)(o.Fragment,{children:[` | `,(0,o.jsx)(t.Text,{color:`magenta`,children:e.sessionName})]}),n&&(0,o.jsxs)(o.Fragment,{children:[` | `,(0,o.jsxs)(t.Text,{dimColor:!0,children:[`git: `,e.gitBranch]})]}),` | `,(0,o.jsx)(Un,{modelName:e.modelName,providerDisplayName:e.providerDisplayName}),` | `,(0,o.jsx)(Bn,{percentage:e.contextPercentage,usedTokens:e.contextUsedTokens,maxTokens:e.contextMaxTokens})]})}function Gn({permissionMode:e,modelName:n,providerDisplayName:r,sessionId:i,isThinking:a,activeToolCount:s=0,activeBackgroundTaskCount:c=0,hasPendingPrompt:l=!1,contextPercentage:u,contextUsedTokens:d,contextMaxTokens:f,sessionName:p,gitBranch:m,showGitBranch:h=!0,activeAgentLabel:g}){return(0,o.jsxs)(t.Box,{borderStyle:`single`,borderColor:`gray`,paddingLeft:1,paddingRight:1,justifyContent:`space-between`,children:[(0,o.jsx)(Wn,{permissionMode:e,modelName:n,providerDisplayName:r,isThinking:a,activeToolCount:s,activeBackgroundTaskCount:c,hasPendingPrompt:l,contextPercentage:u,contextUsedTokens:d,contextMaxTokens:f,sessionName:p,gitBranch:m,showGitBranch:h}),g!==void 0&&(0,o.jsxs)(t.Text,{color:`yellow`,bold:!0,children:[`[`,g,`]`]})]})}function Kn({cwd:e,permissionMode:t,modelId:r,providerType:i,sessionId:a,isThinking:s,activeToolCount:c,activeBackgroundTaskCount:l,hasPendingPrompt:u,contextState:d,sessionName:f,settings:p,activeAgentLabel:m,gitRefreshToken:h}){let g=X(),_=(0,n.useMemo)(()=>g.getGitBranch(e),[g,e,h]),v=(0,n.useMemo)(()=>i===void 0?void 0:g.getProviderDisplayName(i),[g,i]);return p.enabled?(0,o.jsx)(Gn,{permissionMode:t,modelName:r??``,providerDisplayName:v,sessionId:a,isThinking:s,activeToolCount:c,activeBackgroundTaskCount:l,hasPendingPrompt:u,contextPercentage:d.percentage,contextUsedTokens:d.usedTokens,contextMaxTokens:d.maxTokens,sessionName:f,gitBranch:_,showGitBranch:p.gitBranch,activeAgentLabel:m}):null}function qn(e){return e.isRunning?{color:`yellow`,icon:`⟳`,strikethrough:!1}:e.result===`error`?{color:`red`,icon:`✗`,strikethrough:!0}:e.result===`denied`?{color:`yellowBright`,icon:`⊘`,strikethrough:!0}:{color:`green`,icon:`✓`,strikethrough:!1}}function Jn(e){return e?(0,o.jsx)(t.Box,{marginBottom:1,children:(0,o.jsx)(t.Text,{color:`yellow`,children:`Thinking...`})}):(0,o.jsx)(o.Fragment,{})}function Yn(e){return(0,o.jsxs)(t.Box,{flexDirection:`column`,marginBottom:1,children:[(0,o.jsx)(t.Text,{color:`white`,bold:!0,children:`Tools:`}),(0,o.jsx)(t.Text,{children:` `}),e.map((e,n)=>{let{color:r,icon:i,strikethrough:a}=qn(e);return(0,o.jsxs)(t.Box,{flexDirection:`column`,children:[(0,o.jsxs)(t.Text,{color:r,strikethrough:a,children:[` `,i,` `,e.toolName,`(`,e.firstArg,`)`]}),e.diffLines&&e.diffLines.length>0&&(0,o.jsx)(an,{file:e.diffFile,lines:e.diffLines})]},`${e.toolName}-${n}`)})]})}function Xn({text:e,activeTools:n,isThinking:r=!1}){let i=n.length>0,a=e.length>0;return!i&&!a?Jn(r):(0,o.jsxs)(t.Box,{flexDirection:`column`,children:[i&&Yn(n),a&&(0,o.jsxs)(t.Box,{flexDirection:`column`,marginBottom:1,children:[(0,o.jsx)(t.Text,{color:`cyan`,bold:!0,children:`Robota:`}),(0,o.jsx)(t.Text,{children:` `}),(0,o.jsx)(t.Box,{marginLeft:2,children:(0,o.jsx)(t.Text,{wrap:`wrap`,children:Qt(e)})})]})]})}function Zn({entry:e,selected:n}){let r=e.config.enabled,i=r?`●`:`○`,a=r?`[enabled] `:`[disabled]`,s=e.config.options?.port,c=typeof s==`number`?`port: ${s}`:``;return(0,o.jsx)(t.Box,{children:(0,o.jsx)(t.Text,{color:n?`cyan`:void 0,bold:n,children:`${i} ${e.transport.name.padEnd(18)} ${a} ${c}`})})}function Qn(e,r,i,a,o,s,c,l){(0,t.useInput)((0,n.useCallback)((t,n)=>{if(!i){if(n.upArrow){o(e=>Math.max(0,e-1));return}if(n.downArrow){o(t=>Math.min(e.length-1,t+1));return}if(n.escape||n.return){c();return}if(t===` `){let t=e[r];if(!t)return;s(!0),a.setEnabled(t.transport.name,!t.config.enabled).then(()=>{l(),s(!1)}).catch(()=>s(!1))}}},[i,e,r,a,c,l,o,s]))}function $n({registry:e,onClose:r}){let[i,a]=(0,n.useState)(()=>e.getAll()),[s,c]=(0,n.useState)(0),[l,u]=(0,n.useState)(!1);return Qn(i,s,l,e,c,u,r,(0,n.useCallback)(()=>{a(e.getAll())},[e])),(0,o.jsxs)(t.Box,{flexDirection:`column`,paddingX:2,paddingY:1,children:[(0,o.jsx)(t.Text,{bold:!0,children:`Settings › Transports`}),(0,o.jsx)(t.Box,{marginTop:1,flexDirection:`column`,children:i.map((e,t)=>(0,o.jsx)(Zn,{entry:e,selected:t===s},e.transport.name))}),(0,o.jsx)(t.Box,{marginTop:1,children:(0,o.jsx)(t.Text,{dimColor:!0,children:`↑↓ select space toggle enter/esc close`})}),l&&(0,o.jsx)(t.Box,{marginTop:1,children:(0,o.jsx)(t.Text,{color:`yellow`,children:`Saving…`})})]})}function er({message:e}){return(0,o.jsx)(t.Box,{paddingX:1,marginBottom:1,children:(0,o.jsx)(t.Text,{color:`yellow`,children:e})})}function tr(e){let[t,r]=(0,n.useState)(e.resumeSessionId),[i,a]=(0,n.useState)(e.showSessionPickerOnStart??!1);return(0,o.jsx)(_e,{value:e.cliAdapter,children:(0,o.jsx)(nr,{...e,showSessionPickerOnStart:i,resumeSessionId:t,onSessionSwitch:e=>{a(!1),r(e)}},t??`__new__`)})}function nr(e){let r=e.cwd,{interactiveSession:s,registry:c,commandEffectQueue:l,history:u,addEntry:d,streamingText:f,activeTools:p,isThinking:g,isAborting:_,isShuttingDown:v,pendingPrompt:y,executionWorkspaceSnapshot:b,selectedExecutionEntryId:x,selectExecutionWorkspaceEntry:S,readExecutionWorkspaceDetail:C,permissionRequest:w,contextState:T,handleSubmit:D,handleAbort:O,handleCancelQueue:k,handleShutdown:A}=me({cwd:r,provider:e.provider,permissionMode:e.permissionMode,maxTurns:e.maxTurns,sessionStore:e.sessionStore,resumeSessionId:e.resumeSessionId,forkSession:e.forkSession,sessionName:e.sessionName,backgroundTaskRunners:e.backgroundTaskRunners,subagentRunnerFactory:e.subagentRunnerFactory,commandModules:e.commandModules,commandHostAdapters:e.commandHostAdapters,shellExec:e.shellExec,transportRegistry:e.transportRegistry,language:e.language,reloadPluginCommandSource:e.reloadPluginCommandSource,agentName:e.agentName}),j=he(r),M=e.commandHostAdapters?.plugin??j,{exit:N}=(0,t.useApp)(),[P,F]=(0,n.useState)(e.sessionName),[I,te]=(0,n.useState)(),[R,z]=(0,n.useState)(!1),[B,V]=(0,n.useState)(null),[ie,H]=(0,n.useState)(),[ae,U]=(0,n.useState)(!1),[oe,se]=xe(),[ce,le]=(0,n.useState)(0),ue=(0,n.useMemo)(()=>m(b),[b]),de=h(b),W=(0,n.useMemo)(()=>b?.entries.find(e=>e.id===x),[b,x]),{handleSubmit:fe,pendingModelId:pe,pendingInteractionPrompt:G,showPluginTUI:K,showSessionPicker:q,showTransportTUI:J,setShowPluginTUI:ge,setShowSessionPicker:Y,setShowTransportTUI:_e,handleModelConfirm:X,handleInteractionSubmit:ye,handleInteractionCancel:be}=ve({cwd:r,providerOverride:e.providerOverride,interactiveSession:s,commandEffectQueue:l,addEntry:d,baseHandleSubmit:D,setSessionName:F,setStatusLineSettings:se,showSessionPickerOnStart:e.showSessionPickerOnStart,openAgentSwitcher:()=>z(!0)}),Se=!W||W.kind===`main_thread`||W.controls.includes(`send`),Z=W&&W.kind!==`main_thread`?W.title:void 0,Ce=(0,n.useMemo)(()=>b?.entries.find(e=>e.kind===`main_thread`)?.id,[b]),we=(0,n.useCallback)(async e=>{W&&W.kind!==`main_thread`&&W.controls.includes(`send`)?await s.sendAgentJob(W.sourceId,e):await fe(e)},[W,fe,s]),Te=(0,n.useCallback)(async e=>{le(e=>e+1),await we(e)},[we]),Q=(0,n.useRef)(!1);(0,n.useEffect)(()=>{Q.current&&!g&&le(e=>e+1),Q.current=g},[g]),(0,n.useEffect)(()=>{let e=s?.getName?.();e&&!P&&F(e)},[s,P]),(0,n.useEffect)(()=>{let t=!0;return e.startupUpdateNotice?.then(e=>{t&&e!==void 0&&te(e)}).catch(()=>{}),()=>{t=!1}},[e.startupUpdateNotice]),(0,n.useEffect)(()=>{let e=P?`Robota — ${P}`:`Robota`;process.stdout.write(`\x1b]0;${e}\x07`)},[P]),(0,t.useInput)((e,t)=>{!t.escape||!g||w||K||J||q||R||O()}),(0,t.useInput)((e,t)=>{!t.ctrl||e!==`b`||w||K||q||v||z(e=>!e)}),(0,t.useInput)((e,t)=>{!t.escape||g||w||K||J||q||R||W&&W.kind!==`main_thread`&&Ce!==void 0&&S(Ce)}),(0,t.useInput)((e,t)=>{!t.ctrl||e!==`c`||v||A(`prompt_input_exit`).finally(()=>N())}),(0,n.useEffect)(()=>{let e=()=>{v||A(`other`).finally(()=>N())};return process.once(`SIGINT`,e),process.once(`SIGTERM`,e),()=>{process.off(`SIGINT`,e),process.off(`SIGTERM`,e)}},[A,N,v]),(0,n.useEffect)(()=>{if(!W||W.kind===`main_thread`){V(null),H(void 0),U(!1);return}let e=!0;return U(!0),H(void 0),C(W.id).then(t=>{e&&(V(t),U(!1))}).catch(t=>{e&&(H(t.message),U(!1))}),()=>{e=!1}},[b,C,W]);let Ee=e.permissionMode??`default`,De=``;try{let e=s.getSession();Ee=e.getPermissionMode(),De=e.getSessionId()}catch{}return(0,o.jsxs)(t.Box,{flexDirection:`column`,children:[(0,o.jsxs)(t.Box,{flexDirection:`column`,paddingX:1,marginBottom:1,children:[(0,o.jsx)(t.Text,{color:`cyan`,bold:!0,children:`
19
+ ____ ___ ____ ___ _____ _
20
+ | _ \\ / _ \\| __ ) / _ \\_ _|/ \\
21
+ | |_) | | | | _ \\| | | || | / _ \\
22
+ | _ <| |_| | |_) | |_| || |/ ___ \\
23
+ |_| \\_\\\\___/|____/ \\___/ |_/_/ \\_\\
24
+ `}),(0,o.jsxs)(t.Text,{dimColor:!0,children:[` v`,e.version??`0.0.0`]})]}),I&&(0,o.jsx)(er,{message:I}),(0,o.jsxs)(t.Box,{flexDirection:`column`,paddingX:1,flexGrow:1,children:[W&&W.kind!==`main_thread`?(0,o.jsx)(L,{entry:W,page:B,loading:ae,error:ie}):(0,o.jsx)(_n,{history:u}),v&&(0,o.jsx)(t.Box,{marginBottom:1,children:(0,o.jsx)(t.Text,{color:`yellow`,children:`Shutting down...`})}),(g||p.length>0)&&(0,o.jsx)(t.Box,{flexDirection:`column`,marginBottom:1,children:(0,o.jsx)(Xn,{text:f,activeTools:p,isThinking:g})}),(0,o.jsx)(E,{entries:ue})]}),R&&(0,o.jsx)(ne,{snapshot:b,selectedEntryId:x,onSelect:S,onClose:()=>z(!1)}),w&&(0,o.jsx)(wn,{request:w}),pe&&(0,o.jsx)(ee,{message:re(pe),onSelect:X}),G&&(0,o.jsx)(At,{prompt:G,onSubmit:ye,onCancel:be}),K&&(0,o.jsx)(Pn,{callbacks:M,onClose:()=>ge(!1),addMessage:e=>d((0,i.messageToHistoryEntry)((0,i.createSystemMessage)(e.content)))}),J&&e.transportRegistry&&(0,o.jsx)($n,{registry:e.transportRegistry,onClose:()=>_e(!1)}),q&&(0,o.jsx)(Fn,{sessions:(0,a.listResumableSessionSummaries)(e.sessionStore,e.cwd),onSelect:t=>{Y(!1),e.onSessionSwitch(t)},onCancel:()=>{Y(!1),d((0,i.messageToHistoryEntry)((0,i.createSystemMessage)(`Session resume cancelled.`)))}}),(0,o.jsx)(Kn,{cwd:r,permissionMode:Ee,modelId:e.modelId,providerType:e.providerType,sessionId:De,isThinking:g,activeToolCount:p.length,activeBackgroundTaskCount:de,hasPendingPrompt:y!==null,contextState:T,sessionName:P,settings:oe,activeAgentLabel:Z,gitRefreshToken:ce}),(0,o.jsx)(St,{onSubmit:Te,onCancelQueue:k,isDisabled:!!w||K||J||q||R||v||G!==null||g&&!!y||!Se,isAborting:_,pendingPrompt:y,registry:c,sessionName:P,history:u}),(0,o.jsx)(t.Text,{children:` `})]})}async function rr(e){process.on(`unhandledRejection`,e=>{process.stderr.write(`\n[UNHANDLED REJECTION] ${e}\n`),e instanceof Error&&process.stderr.write(`${e.stack}\n`)});let{runtime:n,...r}=e;await(0,t.render)((0,o.jsx)(tr,{...n,...r}),{exitOnCtrlC:!1}).waitUntilExit()}var ir=class{name=`tui`;defaultEnabled=!0;optionsSchema={};options;constructor(e){this.options=e}attach(e){}async start(){await rr(this.options)}async stop(){}validateOptions(e){return!0}};function ar({providerDefinitions:e,reloadPluginCommandSource:t}){return{getUserSettingsPath:()=>(0,a.getUserSettingsPath)(),readSettings:e=>(0,a.readSettings)(e),writeSettings:(e,t)=>(0,a.writeSettings)(e,t),deleteSettings:e=>(0,a.deleteSettings)(e),applyStatusLineSettings:(e,t)=>(0,a.applyStatusLineSettings)(e,t),reloadPluginCommandSource:e=>{t(e)},applyActiveModelChange:(e,t,n)=>((0,a.applyActiveModelChange)(e,t,n),{applied:!0}),getGitBranch:e=>(0,a.resolveGitBranch)(e),getProviderDisplayName:t=>(0,i.findProviderDefinition)(e,t)?.displayName??t}}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return ir}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return ar}});
@@ -0,0 +1,25 @@
1
+ import{Box as e,Text as t,render as n,useApp as r,useInput as i,usePaste as a,useStdout as o,useWindowSize as s}from"ink";import c,{createContext as l,useCallback as u,useContext as d,useEffect as f,useMemo as p,useRef as m,useState as h}from"react";import{createSystemMessage as g,findProviderDefinition as _,formatTokenCount as v,getModelName as y,isAssistantMessage as b,isToolMessage as x,messageToHistoryEntry as S}from"@robota-sdk/agent-core";import{CommandRegistry as C,DEFAULT_STATUS_LINE_COMMAND_SETTINGS as w,InteractiveSession as T,applyActiveModelChange as E,applyStatusLineSettings as D,deleteSettings as O,getUserSettingsPath as k,isStatusLineCommandSettingsPatch as A,listResumableSessionSummaries as j,readSettings as M,resolveGitBranch as N,writeSettings as P}from"@robota-sdk/agent-framework";import{Fragment as F,jsx as I,jsxs as L}from"react/jsx-runtime";import R from"chalk";import z from"string-width";import{isConfirmInteraction as B,isPickerInteraction as ee}from"@robota-sdk/agent-interface-tui";import{marked as V}from"marked";import te from"marked-terminal";const H=[`active`,`queued`,`running`,`waiting_permission`,`sleeping`],U=/\s+/g;function W(e){return(e?.entries??[]).filter(e=>e.kind===`background_task`&&e.visibility===`default`)}function ne(e){return W(e).filter(e=>H.includes(e.status)).length}function G(e,t={}){let n=e.id===t.selectedEntryId,r={id:e.id,radio:n?`●`:`○`,title:ie(e),subtitle:K(e),statusLabel:q(e.status),preview:ae(e.preview??e.currentAction),color:J(e),isSelected:n};return{...r,accessibleText:oe(r)}}function re(e){let t=e.text.trim().replace(U,` `);return t?t.length>160?`${t.slice(0,160)}...`:t:e.kind}function ie(e){return e.kind===`main_thread`?e.title:e.kind===`background_group`?`${e.title} group`:e.taskKind===`agent`?`${e.title} agent`:e.taskKind===`process`?e.title||`Process`:e.taskKind===`scheduled`?e.title||`Scheduled`:e.title}function K(e){return e.kind===`main_thread`?e.subtitle:[e.taskKind,e.subtitle,e.attention===`none`?void 0:e.attention].filter(e=>typeof e==`string`&&e.length>0).join(` · `)||void 0}function q(e){return e.replace(/_/g,` `)}function J(e){return e.attention===`failed`||e.status===`failed`?`red`:e.attention===`permission`||e.status===`waiting_permission`?`yellow`:e.status===`completed`?`green`:e.status===`cancelled`?`yellow`:H.includes(e.status)?`cyan`:`white`}function ae(e){return e?.trim().replace(U,` `)||void 0}function oe(e){return[e.radio,e.title,e.statusLabel,e.subtitle,e.preview].filter(e=>typeof e==`string`&&e.length>0).join(` · `)}function se(e,t={}){let n=G(e),r=ce(e)?`□`:`■`,i=[n.statusLabel,n.subtitle].filter(e=>typeof e==`string`&&e.length>0);return{connector:t.isLast===!1?`├`:`└`,marker:r,color:n.color,label:n.title,segments:i,preview:n.preview,accessibleText:[`${t.isLast===!1?`├`:`└`} ${r} ${n.title}`,...i,n.preview].filter(e=>typeof e==`string`&&e.length>0).join(` · `)}}function ce(e){return e.status===`active`||e.status===`queued`||e.status===`running`||e.status===`waiting_permission`||e.status===`sleeping`}function le({entries:n}){return n.length===0?null:L(e,{flexDirection:`column`,marginBottom:1,children:[I(t,{color:`cyan`,bold:!0,children:`Background work`}),n.map((e,r)=>{let i=se(e,{isLast:r===n.length-1});return L(t,{children:[`${i.connector} `,I(t,{color:i.color,children:i.marker}),` ${i.label}`,i.segments.map((e,n)=>I(t,{dimColor:!0,children:` · ${e}`},`${e}-${n}`)),i.preview?I(t,{dimColor:!0,children:` · ${i.preview}`}):null]},e.id)})]})}function Y(){return{selectedIndex:0,scrollOffset:0,resolved:!1}}function ue(e){if(e.escape===!0)return`cancel`;if(e.upArrow===!0)return`previous`;if(e.downArrow===!0)return`next`;if(e.return===!0)return`select`}function X(e){if(e.escape===!0)return`cancel`;if(e.leftArrow===!0||e.upArrow===!0)return`previous`;if(e.rightArrow===!0||e.downArrow===!0)return`next`;if(e.return===!0)return`select`}function Z(e,t,n){if(e.resolved)return{state:e,effect:{type:`none`}};if(t===`cancel`)return{state:{...e,resolved:!0},effect:{type:`cancel`}};if(n.enabled===!1||n.itemCount===0)return{state:e,effect:{type:`none`}};if(t===`select`){let t=$(e.selectedIndex,n.itemCount);return{state:{...e,selectedIndex:t,resolved:!0},effect:{type:`select`,index:t}}}let r=fe(e.selectedIndex,t,n),i=Q(r,e.scrollOffset,n);return{state:{...e,selectedIndex:r,scrollOffset:i},effect:{type:`none`}}}function de(e,t){if(t.itemCount===0)return{...e,selectedIndex:0,scrollOffset:0};let n=$(e.selectedIndex,t.itemCount),r=Q(n,e.scrollOffset,t);return n===e.selectedIndex&&r===e.scrollOffset?e:{...e,selectedIndex:n,scrollOffset:r}}function fe(e,t,n){return t===`previous`?n.wrap===!0&&e===0?n.itemCount-1:Math.max(0,e-1):n.wrap===!0&&e===n.itemCount-1?0:Math.min(n.itemCount-1,e+1)}function Q(e,t,n){let r=n.maxVisible??n.itemCount;return r<=0?0:e<t?e:e>=t+r?e-r+1:Math.max(0,t)}function $(e,t){return Math.min(Math.max(e,0),t-1)}function pe(e,t,n){let r=X({...t,escape:!1});if(r!==void 0)return r;if(n===2&&e===`y`)return{type:`shortcut`,index:0};if(n===2&&e===`n`)return{type:`shortcut`,index:1}}function me(e,t,n){return e.resolved?{state:e,effect:{type:`none`}}:typeof t==`string`?Z(e,t,{itemCount:n}):{state:{...e,selectedIndex:t.index,resolved:!0},effect:{type:`select`,index:t.index}}}function he({message:n,options:r=[`Yes`,`No`],onSelect:a}){let[o,s]=h(()=>Y()),c=m(o),l=u(e=>{let t=me(c.current,e,r.length);c.current=t.state,s(t.state),t.effect.type===`select`&&a(t.effect.index)},[a,r.length]);return i((e,t)=>{let n=pe(e,t,r.length);n!==void 0&&l(n)}),L(e,{flexDirection:`column`,borderStyle:`round`,borderColor:`yellow`,paddingX:1,children:[I(t,{color:`yellow`,children:n}),I(e,{marginTop:1,children:r.map((n,r)=>I(e,{marginRight:2,children:L(t,{color:r===o.selectedIndex?`cyan`:void 0,bold:r===o.selectedIndex,children:[r===o.selectedIndex?`> `:` `,n]})},n))}),I(t,{dimColor:!0,children:` arrow keys to select, Enter to confirm`})]})}function ge({entry:n,page:r,loading:i,error:a}){let o=G(n,{selectedEntryId:n.id}),s=r?.records.slice(-12)??[];return L(e,{flexDirection:`column`,marginBottom:1,children:[I(t,{color:`cyan`,bold:!0,children:`Viewing ${o.title}`}),L(t,{dimColor:!0,children:[o.statusLabel,o.subtitle?` · ${o.subtitle}`:``,o.preview?` · ${o.preview}`:``]}),i?I(t,{dimColor:!0,children:`Loading workspace detail...`}):null,a?I(t,{color:`red`,children:a}):null,!i&&!a&&s.length===0?I(t,{dimColor:!0,children:`No detail yet`}):null,!i&&!a&&s.map(e=>I(t,{color:_e(e.kind),children:re(e)},e.id)),r?.nextCursor?I(t,{dimColor:!0,children:`... more detail available`}):null]})}function _e(e){if(e===`error`)return`red`;if(e===`result`)return`green`;if(e===`process_output`)return`white`;if(e===`group_summary`)return`cyan`}function ve({snapshot:n,selectedEntryId:r,onSelect:a,onClose:o}){let{normalized:s,visibleEntries:c,applyAction:l}=ye({entries:[...n?.entries??[]],selectedEntryId:r,onSelect:a,onClose:o});return i((e,t)=>{let n=ue(t);n!==void 0&&l(n)}),L(e,{flexDirection:`column`,borderStyle:`round`,borderColor:`cyan`,paddingX:1,children:[I(t,{color:`cyan`,bold:!0,children:`Execution workspace`}),I(e,{flexDirection:`column`,marginTop:1,children:c.length===0?I(t,{dimColor:!0,children:`No workspace entries`}):c.map((e,t)=>I(Se,{entry:e,isFocused:s.scrollOffset+t===s.selectedIndex,selectedEntryId:r},e.id))}),I(t,{dimColor:!0,children:`Ctrl+B Close ↑↓ Navigate Enter Switch Esc Close`})]})}function ye({entries:e,selectedEntryId:t,onSelect:n,onClose:r}){let[i,a]=h(()=>Y()),o=m(i);f(()=>{let n=xe({selectedIndex:Math.max(0,e.findIndex(e=>e.id===t)),itemCount:e.length});o.current=n,a(n)},[e.length,t]);let s=xe({selectedIndex:i.selectedIndex,scrollOffset:i.scrollOffset,itemCount:e.length});return s!==i&&(o.current=s),{normalized:s,visibleEntries:e.slice(s.scrollOffset,s.scrollOffset+8),applyAction:be({entries:e,stateRef:o,setState:a,onSelect:n,onClose:r})}}function be({entries:e,stateRef:t,setState:n,onSelect:r,onClose:i}){return a=>{let o=Z(t.current,a,{itemCount:e.length,maxVisible:8}),s=o.effect.type===`select`||o.effect.type===`cancel`?{...o.state,resolved:!1}:o.state;if(t.current=s,n(s),o.effect.type===`cancel`)i();else if(o.effect.type===`select`){let t=e[o.effect.index];t&&r(t.id)}}}function xe(e){return de({selectedIndex:e.selectedIndex,scrollOffset:e.scrollOffset??0,resolved:!1},{itemCount:e.itemCount,maxVisible:8})}function Se({entry:e,isFocused:n,selectedEntryId:r}){let i=G(e,{selectedEntryId:r});return L(t,{children:[I(t,{color:n?`cyan`:void 0,bold:n,children:n?`> `:` `}),I(t,{color:i.color,children:i.radio}),I(t,{color:n?`cyan`:void 0,bold:n,children:` ${i.title}`}),I(t,{dimColor:!0,children:` · ${i.statusLabel}`}),i.subtitle?I(t,{dimColor:!0,children:` · ${i.subtitle}`}):null,i.preview?I(t,{dimColor:!0,children:` · ${i.preview}`}):null]})}function Ce(e){return`Change model to ${y(e)}? This will exit the current session so the next session uses it.`}function we(e){return`Model changed to ${y(e)}. Exiting so the next session uses it.`}function Te(e){let t=e.applyModelChange;if(!t){e.addEntry(S(g(`Model change unavailable: no adapter provided.`)));return}let n=e.providerOverride===void 0?void 0:{providerOverride:e.providerOverride};try{t(e.cwd,e.modelId,n),e.addEntry(S(g(we(e.modelId)))),e.requestShutdown(`other`,`Model change applied`)}catch(t){e.addEntry(S(g(`Failed: ${t instanceof Error?t.message:String(t)}`)))}}function Ee(e){e(S(g(`Model change cancelled.`)))}function De(e,t){let n=null;return{schedule(){n||=setTimeout(()=>{n=null,e()},t)},flush(){n&&=(clearTimeout(n),null)}}}var Oe=class{history=[];streamingText=``;activeTools=[];isThinking=!1;isAborting=!1;pendingPrompt=null;contextState={percentage:0,usedTokens:0,maxTokens:0};executionWorkspaceSnapshot=null;selectedExecutionEntryId;onChange=null;streamBuf=``;debouncedStreamNotify=De(()=>this.notify(),300);notify(){this.onChange?.()}onTextDelta=e=>{this.streamBuf+=e,this.streamingText=this.streamBuf,this.debouncedStreamNotify.schedule()};onToolStart=e=>{this.activeTools=[...this.activeTools,e],this.notify()};onToolEnd=e=>{let t=this.activeTools.findLastIndex(t=>t.toolName===e.toolName&&t.isRunning);if(t!==-1){let n=[...this.activeTools];n[t]=e,this.activeTools=n}this.notify()};onThinking=e=>{this.isThinking=e,e?(this.debouncedStreamNotify.flush(),this.streamBuf=``,this.streamingText=``,this.activeTools=[]):this.isAborting=!1,this.notify()};onComplete=e=>{this.debouncedStreamNotify.flush(),this.streamBuf=``,this.streamingText=``,this.activeTools=[],this.contextState={percentage:e.contextState.usedPercentage,usedTokens:e.contextState.usedTokens,maxTokens:e.contextState.maxTokens},this.notify()};onInterrupted=()=>{this.debouncedStreamNotify.flush(),this.streamBuf=``,this.streamingText=``,this.activeTools=[],this.notify()};onError=()=>{this.debouncedStreamNotify.flush(),this.streamBuf=``,this.streamingText=``,this.activeTools=[],this.notify()};onContextUpdate=e=>{this.setContextState({percentage:e.usedPercentage,usedTokens:e.usedTokens,maxTokens:e.maxTokens})};syncHistory(e){e.length!==0&&(this.history=e.length>100?e.slice(-100):[...e],this.notify())}addEntry(e){let t=[...this.history,e];this.history=t.length>100?t.slice(-100):t,this.notify()}clearHistory(){this.history=[],this.debouncedStreamNotify.flush(),this.streamBuf=``,this.streamingText=``,this.activeTools=[],this.notify()}setPendingPrompt(e){this.pendingPrompt=e,this.notify()}setAborting(e){this.isAborting=e,this.notify()}setContextState(e){this.contextState=e,this.notify()}syncExecutionWorkspaceSnapshot(e){let t=this.selectedExecutionEntryId,n=t!==void 0&&e.entries.some(e=>e.id===t)?t:e.selectedEntryId??e.entries[0]?.id;this.executionWorkspaceSnapshot={...e,...n?{selectedEntryId:n}:{}},this.selectedExecutionEntryId=n,this.notify()}selectExecutionWorkspaceEntry(e){this.executionWorkspaceSnapshot?.entries.some(t=>t.id===e)&&(this.selectedExecutionEntryId=e,this.executionWorkspaceSnapshot={...this.executionWorkspaceSnapshot,selectedEntryId:e},this.notify())}},ke=class{queue=[];enqueueInteraction(e){this.queue.push({type:`interaction`,interaction:e})}enqueueEffects(e){e.length!==0&&this.queue.push({type:`effects`,effects:[...e]})}drain(){return this.queue.shift()}clear(){this.queue.length=0}};function Ae(e,t){let n=new T({cwd:e.cwd,provider:e.provider,permissionMode:e.permissionMode,maxTurns:e.maxTurns,permissionHandler:t,sessionStore:e.sessionStore,resumeSessionId:e.resumeSessionId,forkSession:e.forkSession,sessionName:e.sessionName,backgroundTaskRunners:e.backgroundTaskRunners,subagentRunnerFactory:e.subagentRunnerFactory,commandModules:e.commandModules,commandHostAdapters:e.commandHostAdapters,shellExec:e.shellExec,language:e.language,agentName:e.agentName}),r=new C;for(let t of e.commandModules??[])r.addModule(t);return e.reloadPluginCommandSource?.(r),{interactiveSession:n,registry:r,manager:new Oe,commandEffectQueue:new ke}}function je(){let[e,t]=h(null),n=m([]),r=m(!1),i=u(()=>{if(r.current)return;let e=n.current[0];if(!e){t(null);return}r.current=!0,t({toolName:e.toolName,toolArgs:e.toolArgs,resolve:a=>{n.current.shift(),r.current=!1,t(null),e.resolve(a),setTimeout(()=>i(),0)}})},[]);return{permissionHandler:u((e,t)=>new Promise(r=>{n.current.push({toolName:e,toolArgs:t,resolve:r}),i()}),[i]),permissionRequest:e}}function Me(e,t,n,r,i){return u(async a=>{if(!a.startsWith(`/`)){await e.submit(a),n.setPendingPrompt(e.getPendingPrompt());return}let o=a.slice(1).split(/\s+/),s=o[0]?.toLowerCase()??``,c=o.slice(1).join(` `),l=await e.executeCommand(s,c);if(l){if(l.effects?.some(e=>e.type===`session-execution-started`)){n.setPendingPrompt(e.getPendingPrompt());return}Ne(l,e,t,n,r,i);return}n.addEntry(S(g(`Unknown command "/${s}". Type /help for help.`)))},[e,t,n,r,i])}function Ne(e,t,n,r,i,a){let o=Pe(e.effects,n,r,a);if(r.addEntry(S(g(e.message))),e.interaction!==void 0&&i.enqueueInteraction(e.interaction),o.length>0&&i.enqueueEffects(o),t.isInitialized){let e=t.getContextState();r.setContextState({percentage:e.usedPercentage,usedTokens:e.usedTokens,maxTokens:e.maxTokens})}}function Pe(e,t,n,r){if(e===void 0||e.length===0)return[];let i=[];for(let a of e){if(a.type===`conversation-history-cleared`){n.clearHistory();continue}if(a.type===`plugin-registry-reload-requested`){r?.(t);continue}i.push(a)}return i}function Fe(e,t){t.syncHistory(e.getFullHistory())}function Ie(e,t){t.syncHistory(e.getFullHistory())}function Le(e,t){try{t.syncExecutionWorkspaceSnapshot(e.getExecutionWorkspaceSnapshot({selectedEntryId:t.selectedExecutionEntryId}))}catch{}}function Re(e){let[,t]=h(0),[n,r]=h(!1),{permissionHandler:i,permissionRequest:a}=je(),[o]=h(()=>Ae(e,i)),{interactiveSession:s,registry:c,manager:l,commandEffectQueue:d}=o;if(l.onChange=()=>t(e=>e+1),l.history.length===0){let e=s.getFullHistory();e.length>0&&l.syncHistory(e)}f(()=>{if(!e.transportRegistry)return;let t=e.transportRegistry;return t.startAll(s).catch(()=>void 0),()=>{t.stopAll().catch(()=>void 0)}},[s,e.transportRegistry]),f(()=>{let e=()=>Fe(s,l),t=()=>Ie(s,l),n=e=>l.syncExecutionWorkspaceSnapshot(e.snapshot);s.on(`text_delta`,l.onTextDelta),s.on(`tool_start`,l.onToolStart),s.on(`tool_end`,l.onToolEnd),s.on(`thinking`,l.onThinking),s.on(`complete`,l.onComplete),s.on(`interrupted`,l.onInterrupted),s.on(`error`,l.onError),s.on(`context_update`,l.onContextUpdate),s.on(`compact`,e),s.on(`skill_activation`,t),s.on(`execution_workspace_event`,n);let r=setInterval(()=>{try{let e=s.getContextState();l.setContextState({percentage:e.usedPercentage,usedTokens:e.usedTokens,maxTokens:e.maxTokens});let t=s.getFullHistory();t.length>0&&l.syncHistory(t),Le(s,l),clearInterval(r)}catch{}},200);return()=>{clearInterval(r),s.off(`text_delta`,l.onTextDelta),s.off(`tool_start`,l.onToolStart),s.off(`tool_end`,l.onToolEnd),s.off(`thinking`,l.onThinking),s.off(`complete`,l.onComplete),s.off(`interrupted`,l.onInterrupted),s.off(`error`,l.onError),s.off(`context_update`,l.onContextUpdate),s.off(`compact`,e),s.off(`skill_activation`,t),s.off(`execution_workspace_event`,n)}},[s,l]),f(()=>{l.syncHistory(s.getFullHistory()),Le(s,l),l.isThinking||l.setPendingPrompt(s.getPendingPrompt())},[l.isThinking,s,l]);let p=Me(s,c,l,d,e.reloadPluginCommandSource),m=u(()=>{l.setAborting(!0),s.abort()},[s,l]),_=u(()=>{s.cancelQueue(),l.setPendingPrompt(null)},[s,l]),v=u(async(e=`prompt_input_exit`)=>{n||(r(!0),l.addEntry(S(g(`Shutting down...`))),await s.shutdown({reason:e,message:`CLI shutdown`}))},[s,l,n]),y=u(e=>l.selectExecutionWorkspaceEntry(e),[l]),b=u(e=>s.readExecutionWorkspaceDetail(e),[s]);return{interactiveSession:s,registry:c,commandEffectQueue:d,history:l.history,addEntry:e=>l.addEntry(e),streamingText:l.streamingText,activeTools:l.activeTools,isThinking:l.isThinking,isAborting:l.isAborting,isShuttingDown:n,pendingPrompt:l.pendingPrompt,executionWorkspaceSnapshot:l.executionWorkspaceSnapshot,selectedExecutionEntryId:l.selectedExecutionEntryId,permissionRequest:a,contextState:l.contextState,handleSubmit:p,handleAbort:m,handleCancelQueue:_,handleShutdown:v,selectExecutionWorkspaceEntry:y,readExecutionWorkspaceDetail:b}}function ze(){return{listInstalled:async()=>[],listAvailablePlugins:async()=>[],install:async()=>void 0,uninstall:async()=>void 0,enable:async()=>void 0,disable:async()=>void 0,marketplaceAdd:async()=>``,marketplaceRemove:async()=>void 0,marketplaceUpdate:async()=>void 0,marketplaceList:async()=>[],reloadPlugins:async()=>({loadedPluginCount:0})}}function Be(e){return p(()=>ze(),[])}function Ve(e,t){for(let n of e){if(n.type===`model-change-requested`)return t.requestModelChange(n.modelId),!0;if(n.type===`language-change-requested`)return He(n.language,t),!0;if(n.type===`settings-reset-requested`)return Ue(t),!0;if(n.type===`session-exit-requested`)return t.requestShutdown(n.reason??`prompt_input_exit`,n.message??`User requested exit`),!0;if(n.type===`session-restart-requested`)return t.requestShutdown(n.reason,n.message),!0;if(n.type===`plugin-tui-requested`)return t.openPluginTUI(),!0;if(n.type===`settings-tui-requested`)return t.openTransportTUI(),!0;if(n.type===`agent-switcher-requested`)return t.openAgentSwitcher(),!0;if(n.type===`session-picker-requested`)return t.openSessionPicker(),!0;if(n.type===`session-renamed`)return t.renameSession(n.name),!0;if(n.type===`statusline-settings-patch`&&A(n.patch))return t.applyStatusLinePatch(n.patch)}return!1}function He(e,t){let n=t.cliAdapter.getUserSettingsPath(),r=t.cliAdapter.readSettings(n);r.language=e,t.cliAdapter.writeSettings(n,r),t.addEntry(S(g(`Language set to "${e}". Restarting...`))),t.requestShutdown(`other`,`Language change restart`)}function Ue(e){let t=e.cliAdapter.getUserSettingsPath();e.cliAdapter.deleteSettings(t)?e.addEntry(S(g(`Deleted ${t}. Exiting...`))):e.addEntry(S(g(`No user settings found.`))),e.requestShutdown(`other`,`Reset settings restart`)}const We=l(null),Ge=We.Provider;function Ke(){let e=d(We);if(!e)throw Error(`TuiCliAdapterContext not provided`);return e}function qe({cwd:e,providerOverride:t,interactiveSession:n,commandEffectQueue:i,addEntry:a,baseHandleSubmit:o,setSessionName:s,setStatusLineSettings:c,showSessionPickerOnStart:l,openAgentSwitcher:d}){let{exit:f}=r(),p=Ke(),[_,v]=h(null),y=m(null),[b,x]=h(null),C=m(null),[w,T]=h(!1),[E,D]=h(l??!1),[O,k]=h(!1),A=u((e,t)=>{a(S(g(`Shutting down...`))),setTimeout(()=>{n.shutdown({reason:e,message:t}).finally(()=>f())},500)},[n,a,f]),j=u(e=>Ve(e,{addEntry:a,requestShutdown:A,requestModelChange:e=>{y.current=e,v(e)},openPluginTUI:()=>T(!0),openSessionPicker:()=>D(!0),openTransportTUI:()=>k(!0),openAgentSwitcher:()=>d?.(),renameSession:e=>{n.setName(e),s(e)},applyStatusLinePatch:e=>(c(p.applyStatusLineSettings(p.getUserSettingsPath(),e)),!0),cliAdapter:p}),[a,p,n,A,s,c]),M=u(e=>{if(e.message.length>0&&a(S(g(e.message))),e.interaction!==void 0){C.current=e.interaction,x(e.interaction.prompt);return}C.current=null,x(null),e.effects!==void 0&&e.effects.length>0&&j(e.effects)},[a,j]),N=u(()=>{let e=i.drain();if(e===void 0)return!1;if(e.type===`interaction`){let{interaction:t}=e;return C.current=t,x(t.prompt),!0}return j(e.effects)},[j,i]);return{handleSubmit:u(async e=>{await o(e),N()},[o,N]),pendingModelId:_,pendingInteractionPrompt:b,showPluginTUI:w,showSessionPicker:E,showTransportTUI:O,setPendingModelId:v,setShowPluginTUI:T,setShowSessionPicker:D,setShowTransportTUI:k,handleModelConfirm:u(n=>{let r=y.current;v(null),y.current=null,n===0&&r?Te({cwd:e,modelId:r,providerOverride:t,addEntry:a,requestShutdown:A,applyModelChange:(e,t,n)=>(p.applyActiveModelChange(e,t,n),{applied:!0})}):Ee(a)},[e,t,a,p,A]),handleInteractionSubmit:u(async e=>{let t=C.current;if(t===null){x(null);return}try{M(await t.submit(e))}catch(e){C.current=null,x(null),a(S(g(`Failed: ${e instanceof Error?e.message:String(e)}`)))}},[a,M]),handleInteractionCancel:u(()=>{let e=C.current;if(C.current=null,x(null),e?.cancel===void 0){a(S(g(`Command interaction cancelled.`)));return}Promise.resolve(e.cancel()).then(e=>M(e)).catch(e=>{a(S(g(`Failed: ${e instanceof Error?e.message:String(e)}`)))})},[a,M])}}function Je(e){let t={...w},n=e.statusline;return Ye(n)?{enabled:typeof n.enabled==`boolean`?n.enabled:t.enabled,gitBranch:typeof n.gitBranch==`boolean`?n.gitBranch:t.gitBranch}:t}function Ye(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Date)}function Xe(){let e=Ke();return h(()=>Je(e.readSettings(e.getUserSettingsPath())))}const Ze=`[200~`,Qe=`[201~`;function $e(e){return{value:e,cursor:e.length,isPasting:!1,pasteBuffer:``}}function et(e,t,n){return t===e.value?e:{...e,value:t,cursor:n==null?t.length:Math.min(n,t.length)}}function tt(e,t,n,r){let i=rt(e,t,r);if(i!==void 0)return i;let a=it(e,t,n,r);if(a!==void 0)return a;let o=at(e,n,r);return o===void 0?ht(e,t):o}function nt(e,t,n){let r=t.replace(/\r\n?/g,`
2
+ `);return r.length===0?{state:e,effect:{type:`none`}}:r.includes(`
3
+ `)&&n.canPaste?{state:e,effect:{type:`paste`,text:r,cursor:e.cursor}}:ht(e,r)}function rt(e,t,n){if(t===Ze||t.startsWith(Ze))return ut(e,t);if(e.isPasting)return dt(e,t,n)}function it(e,t,n,r){if(n.ctrl===!0&&t===`c`||n.tab===!0)return{state:e,effect:{type:`none`}};if(n.return===!0)return{state:e,effect:{type:`submit`,value:e.value}};if(t.length>1&&(t.includes(`
4
+ `)||t.includes(`\r`))&&r.canPaste)return{state:e,effect:{type:`paste`,text:t.replace(/\r\n?/g,`
5
+ `),cursor:e.cursor}}}function at(e,t,n){if(t.upArrow===!0||t.downArrow===!0)return n.enableVerticalNavigation===!1?{state:e,effect:{type:`none`}}:ft(e,t.upArrow===!0?`up`:`down`,n.availableWidth);if(t.leftArrow===!0)return pt(e,`left`);if(t.rightArrow===!0)return pt(e,`right`);if(t.backspace===!0||t.delete===!0)return mt(e)}function ot(e){if(!e||e.length===0)return``;let t=``;for(let n of e){let e=n.charCodeAt(0);e>31&&e!==127&&(t+=n)}return t}function st(e,t,n){return{value:e.slice(0,t)+n+e.slice(t),cursor:t+n.length}}function ct(e,t,n){let r=0;for(let i=0;i<t&&i<e.length;i++){let t=z(e[i]),a=r%n;a+t>n&&(r+=n-a),r+=t}return r}function lt(e,t,n){let r=0;for(let i=0;i<e.length;i++){if(r>=t)return i;let a=z(e[i]),o=r%n;o+a>n&&(r+=n-o),r+=a}return e.length}function ut(e,t){return{state:{...e,isPasting:!0,pasteBuffer:t.slice(5)},effect:{type:`none`}}}function dt(e,t,n){if(t!==Qe&&!t.includes(Qe))return{state:{...e,pasteBuffer:e.pasteBuffer+t},effect:{type:`none`}};let r=t.split(Qe)[0]??``;return nt({...e,isPasting:!1,pasteBuffer:``},e.pasteBuffer+r,n)}function ft(e,t,n){if(!n||n<=0)return{state:e,effect:{type:`none`}};let r=[...e.value],i=ct(r,e.cursor,n),a=t===`up`?i-n:i+n;if(a<0)return{state:e,effect:{type:`none`}};let o=lt(r,a,n);return o===e.cursor?{state:e,effect:{type:`none`}}:{state:{...e,cursor:o},effect:{type:`render`}}}function pt(e,t){return t===`left`&&e.cursor>0?{state:{...e,cursor:e.cursor-1},effect:{type:`render`}}:t===`right`&&e.cursor<e.value.length?{state:{...e,cursor:e.cursor+1},effect:{type:`render`}}:{state:e,effect:{type:`none`}}}function mt(e){if(e.cursor===0)return{state:e,effect:{type:`none`}};let t=e.value.slice(0,e.cursor-1)+e.value.slice(e.cursor);return{state:{...e,value:t,cursor:e.cursor-1},effect:{type:`change`,value:t}}}function ht(e,t){let n=ot(t);if(n.length===0)return{state:e,effect:{type:`none`}};let r=st(e.value,e.cursor,n);return{state:{...e,value:r.value,cursor:r.cursor},effect:{type:`change`,value:r.value}}}function gt({value:e,onChange:n,onSubmit:r,onPaste:i,placeholder:a=``,focus:o=!0,showCursor:s=!0,availableWidth:c,cursorHint:l=null,enableVerticalNavigation:u=!0}){let d=m($e(e)),[,f]=h(0);return d.current=et(d.current,e,l),_t({stateRef:d,onChange:n,onSubmit:r,onPaste:i,availableWidth:c,focus:o,enableVerticalNavigation:u,forceRender:f}),I(t,{children:xt(d.current.value,d.current.cursor,a,s&&o)})}function _t(e){a(t=>{yt(e,()=>nt(e.stateRef.current,t,vt(e)))},{isActive:e.focus}),i((t,n)=>{yt(e,()=>tt(e.stateRef.current,t,n,vt(e)))},{isActive:e.focus})}function vt(e){return{availableWidth:e.availableWidth,canPaste:e.onPaste!==void 0,enableVerticalNavigation:e.enableVerticalNavigation}}function yt(e,t){try{let n=t();e.stateRef.current=n.state,bt(n.effect,e.onChange,e.onSubmit,e.onPaste,e.forceRender)}catch{}}function bt(e,t,n,r,i){e.type===`change`?t(e.value):e.type===`submit`?n?.(e.value):e.type===`paste`?r?.(e.text,e.cursor):e.type===`render`&&i(e=>e+1)}function xt(e,t,n,r){if(!r)return e.length>0?e:n?R.gray(n):``;if(e.length===0)return n.length>0?R.inverse(n[0])+R.gray(n.slice(1)):R.inverse(` `);let i=[...e],a=``;for(let e=0;e<i.length;e++){let n=i[e]??``;a+=e===t?R.inverse(n):n}return t>=i.length&&(a+=R.inverse(` `)),a}function St(){return[{label:`plan`,value:`plan`,description:`Plan only, no execution`},{label:`default`,value:`default`,description:`Ask before risky actions`},{label:`acceptEdits`,value:`acceptEdits`,description:`Auto-approve file edits`},{label:`bypassPermissions`,value:`bypassPermissions`,description:`Skip all permission checks`}]}function Ct(){return[{label:`ko Korean`,value:`ko`,description:`한국어`},{label:`en English`,value:`en`,description:`English`},{label:`ja Japanese`,value:`ja`,description:`日本語`},{label:`zh Chinese`,value:`zh`,description:`中文`}]}function wt(){return[{label:`current`,value:`current`,description:`Show current provider`},{label:`list`,value:`list`,description:`List available providers`},{label:`use`,value:`use`,description:`Switch to a provider`},{label:`add`,value:`add`,description:`Add a new provider`},{label:`test`,value:`test`,description:`Test provider connection`}]}const Tt={agent:void 0,background:void 0,clear:{onMissingArgs:`confirm`,message:`Clear conversation history?`},compact:void 0,context:void 0,cost:void 0,exit:{onMissingArgs:`confirm`,message:`Exit the session?`},help:void 0,language:{onMissingArgs:`picker`,getItems:Ct},memory:void 0,mode:{onMissingArgs:`picker`,getItems:St},model:void 0,permissions:void 0,plugin:void 0,provider:{onMissingArgs:`picker`,getItems:wt},rename:void 0,reset:void 0,resume:void 0,rewind:void 0,settings:void 0,skills:void 0,statusline:void 0,"user-local":void 0,"validate-session":void 0};function Et(e){return Tt[e]}function Dt(e){if(!e.startsWith(`/`))return{isSlash:!1,parentCommand:``,filter:``};let t=e.slice(1),n=t.indexOf(` `);return n===-1?{isSlash:!0,parentCommand:``,filter:t}:{isSlash:!0,parentCommand:t.slice(0,n),filter:t.slice(n+1)}}function Ot(e,t){let[n,r]=h(0),[i,a]=h(!1),o=c.useRef(e);o.current!==e&&(o.current=e,i&&a(!1));let s=Dt(e),l=s.isSlash&&s.parentCommand.length>0,u=p(()=>{if(!t||!s.isSlash||i)return[];if(l){let e=t.getSubcommands(s.parentCommand);if(e.length===0)return[];if(!s.filter)return e;let n=s.filter.toLowerCase();return e.filter(e=>e.name.toLowerCase().startsWith(n))}return t.getCommands(s.filter)},[t,s.isSlash,s.parentCommand,s.filter,i,l]),d=s.isSlash&&u.length>0&&!i;return n>=u.length&&u.length>0&&r(u.length-1),{showPopup:d,filteredCommands:u,selectedIndex:n,setSelectedIndex:r,isSubcommandMode:l,setShowPopup:e=>{a(typeof e==`function`?t=>!e(!t):!e)}}}function kt(e){if(e.upArrow===!0)return`previous`;if(e.downArrow===!0)return`next`;if(e.escape===!0)return`close`;if(e.tab===!0)return`complete`}function At(e){if(e.backspace===!0||e.delete===!0)return`cancelQueue`}function jt(e){if(e.upArrow===!0)return`previous`;if(e.downArrow===!0)return`next`}function Mt(){return{selectedIndex:null,draft:``}}function Nt(e,t,n,r){if(t.length===0)return{value:e,cursorHint:e.length,state:n};if(r===`previous`){let r=n.selectedIndex===null?t.length-1:Math.max(0,n.selectedIndex-1),i=t[r]??e;return{value:i,cursorHint:i.length,state:{selectedIndex:r,draft:n.selectedIndex===null?e:n.draft}}}if(n.selectedIndex===null)return{value:e,cursorHint:e.length,state:n};if(n.selectedIndex<t.length-1){let r=n.selectedIndex+1,i=t[r]??e;return{value:i,cursorHint:i.length,state:{...n,selectedIndex:r}}}return{value:n.draft,cursorHint:n.draft.length,state:Mt()}}function Pt(e,t){let n=t.trim();return n.length===0||e[e.length-1]===n?[...e]:[...e,n]}function Ft(e){let t=[];for(let n of e){if(n.category!==`chat`||n.type!==`user`)continue;let e=n.data;typeof e?.content==`string`&&(t=Pt(t,e.content))}return t}function It(e,t,n){return t===0?0:n===`previous`?e>0?e-1:t-1:e<t-1?e+1:0}function Lt(e,t){let n=Dt(e);return n.parentCommand?{type:`insert`,value:`/${n.parentCommand} ${t.name} `}:t.subcommands&&t.subcommands.length>0?{type:`insert`,value:`/${t.name} `,selectedIndex:0}:{type:`insert`,value:`/${t.name} `}}function Rt(e,t,n){let r=Dt(e);return r.parentCommand?{type:`submit`,value:`/${r.parentCommand} ${t.name}`}:n?.onMissingArgs?{type:`open-interaction`,commandName:t.name}:t.subcommands&&t.subcommands.length>0?{type:`insert`,value:`/${t.name} `,selectedIndex:0}:{type:`submit`,value:`/${t.name}`}}function zt(e,t,n,r){let i=r.split(`
6
+ `).length,a=`[Pasted text #${n} +${i} lines]`;return{value:e.slice(0,t)+a+e.slice(t),cursorHint:t+a.length,label:a,lineCount:i}}function Bt(e){return e.trim().length>0}function Vt({commandName:n,interaction:r,onConfirm:a,onCancel:o}){return i((e,t)=>{t.return||e===`y`||e===`Y`?a():(t.escape||e===`n`||e===`N`)&&o()}),L(e,{paddingX:1,children:[L(t,{bold:!0,color:`yellow`,children:[`/`,n,`:`,` `]}),L(t,{children:[r.message,` `]}),I(t,{dimColor:!0,children:`[y/n]`})]})}function Ht(){let{stdout:e}=o();return Math.max(40,(e.columns??80)-4)}function Ut({commandName:n,interaction:r,onSelect:a,onCancel:o}){let s=r.getItems(),[c,l]=h(0),u=Ht();i((e,t)=>{if(t.upArrow)l(e=>e>0?e-1:s.length-1);else if(t.downArrow)l(e=>e<s.length-1?e+1:0);else if(t.return){let e=s[c];e&&a(e)}else (t.escape||e===`q`)&&o()});let d=s.length<=8||c<8?0:Math.min(c-8+1,s.length-8),f=s.slice(d,d+8);return L(e,{flexDirection:`column`,borderStyle:`round`,borderColor:`cyan`,paddingX:1,children:[L(t,{bold:!0,color:`cyan`,children:[`/`,n]}),f.map((n,r)=>{let i=d+r===c;return I(e,{width:u,children:L(t,{color:i?`cyan`:void 0,dimColor:!i,wrap:`truncate-end`,children:[i?`▸ `:` `,n.label,n.description==null?``:` ${n.description}`]})},n.value)}),I(t,{dimColor:!0,children:`↑↓ navigate · Enter select · Esc cancel`})]})}function Wt(){let{stdout:e}=o(),t=()=>Math.max(40,(e.columns??80)-4),[n,r]=h(t);return f(()=>{let n=()=>r(t());return e.on(`resize`,n),()=>{e.off(`resize`,n)}},[e]),n}function Gt(e,t){return e.length>t?`${e.slice(0,t-1)}…`:e.padEnd(t)}function Kt(n){let{cmd:r,isSelected:i,showSlash:a,rowWidth:o,nameColWidth:s}=n,c=i?`▸ `:` `,l=i?`cyan`:void 0,u=!i,d=Gt(r.name,s);return I(e,{width:o,children:I(t,{color:l,dimColor:u,wrap:`truncate-end`,children:a?`${c}/${d} ${r.description??``}`:`${c}${d} ${r.description??``}`})})}function qt({commands:t,selectedIndex:n,visible:r,isSubcommandMode:i}){let a=Wt();if(!r||t.length===0)return null;let o=Jt(n,t.length),s=t.slice(o,o+8),c=Math.min(20,Math.max(...s.map(e=>e.name.length)));return I(e,{flexDirection:`column`,borderStyle:`round`,borderColor:`gray`,paddingX:1,children:s.map((e,t)=>I(Kt,{cmd:e,isSelected:o+t===n,showSlash:!i,rowWidth:a,nameColWidth:c},e.name))})}function Jt(e,t){if(t<=8||e<8)return 0;let n=t-8;return Math.min(e-8+1,n)}const Yt=/\[Pasted text #(\d+)(?: \+\d+ lines)?\]/g;function Xt(e,t){return e.replace(Yt,(e,n)=>t.get(Number(n))??``)}const Zt=[`#666666`,`#888888`,`#aaaaaa`,`#888888`];function Qt({text:e}){let[n,r]=h(0);return f(()=>{let e=setInterval(()=>{r(e=>e+1)},400);return()=>clearInterval(e)},[]),I(t,{children:[...e].map((e,r)=>I(t,{color:Zt[(n+Math.floor(r/4))%Zt.length],children:e},r))})}function $t({onSubmit:n,onCancelQueue:r,isDisabled:a,isAborting:o,pendingPrompt:c,registry:l,sessionName:d,history:f}){let[g,_]=h(``),[v,y]=h(null),[b,x]=h(null),[S,C]=h(Mt),[w,T]=h([]),E=p(()=>Ft(f??[]),[f]),D=p(()=>w.reduce((e,t)=>Pt(e,t),E),[E,w]),O=m(new Map),{columns:k}=s(),A=k>0?k:80,j=Math.max(1,A-5),M=m(0),{showPopup:N,filteredCommands:P,selectedIndex:F,setSelectedIndex:R,isSubcommandMode:z,setShowPopup:V}=Ot(g,l),te=u((e,t)=>{M.current+=1;let n=M.current;O.current.set(n,e),_(r=>{let i=zt(r,t,n,e);return y(i.cursorHint),i.value})},[]),H=u(()=>{C(Mt())},[]),U=u(e=>{T(t=>Pt(t,e))},[]),W=u(e=>{U(e),H(),n(e)},[n,U,H]),ne=u(e=>{let t=Lt(g,e);t.type===`insert`&&(_(t.value),t.selectedIndex!==void 0&&R(t.selectedIndex))},[g,R]),G=u(e=>{let t=Et(e.name),n=Rt(g,e,t);if(n.type===`insert`){_(n.value),n.selectedIndex!==void 0&&R(n.selectedIndex);return}if(n.type===`open-interaction`&&t?.onMissingArgs){V(!1),x({commandName:n.commandName,interaction:t});return}n.type===`submit`&&(_(``),W(n.value))},[g,W,R,V]),re=u(e=>{if(!Bt(e))return;if(N&&P[F]){G(P[F]);return}let t=Xt(e.trim(),O.current);_(``),O.current.clear(),M.current=0,W(t)},[N,P,F,G,W]);i((e,t)=>{if(!N)return;let n=kt(t);if(n===`previous`||n===`next`)R(e=>It(e,P.length,n));else if(n===`close`)V(!1);else if(n===`complete`){let e=P[F];e&&ne(e)}},{isActive:N&&!a}),i((e,t)=>{let n=jt(t);if(!n)return;let r=Nt(g,D,S,n);_(r.value),y(r.cursorHint),C(r.state)},{isActive:!N&&!a&&!c}),i((e,t)=>{At(t)===`cancelQueue`&&c&&r?.()},{isActive:!!c});let ie=o?`yellow`:c?`cyan`:a?`gray`:`green`,K=Math.max(1,A-2),q=(()=>{if(d){let e=` "${d}" `,t=Math.max(0,K-e.length-2);return{left:`┌`+`─`.repeat(t),label:e,right:`─`.repeat(2)+`┐`}}return{left:`┌`+`─`.repeat(K),label:``,right:`┐`}})(),J=u(e=>{b&&(x(null),W(`/${b.commandName} ${e.value}`))},[b,W]),ae=u(()=>{b&&(x(null),W(`/${b.commandName}`))},[b,W]),oe=u(()=>{x(null)},[]);return L(e,{flexDirection:`column`,children:[b&&ee(b.interaction)&&I(Ut,{commandName:b.commandName,interaction:b.interaction,onSelect:J,onCancel:oe}),b&&B(b.interaction)&&I(Vt,{commandName:b.commandName,interaction:b.interaction,onConfirm:ae,onCancel:oe}),!b&&N&&I(qt,{commands:P,selectedIndex:F,visible:N,isSubcommandMode:z}),L(t,{color:ie,children:[q.left,q.label?I(t,{backgroundColor:ie,color:`black`,bold:!0,children:q.label}):null,q.right]}),I(e,{borderStyle:`single`,borderTop:!1,borderColor:ie,paddingLeft:1,children:o?I(t,{color:`yellow`,children:` Interrupting...`}):c?L(t,{color:`cyan`,children:[` `,`Queued:`,` `,c.length>50?c.slice(0,47)+`...`:c,` `,I(t,{dimColor:!0,children:`(Backspace to cancel)`})]}):a?I(Qt,{text:` Waiting for response... (ESC to interrupt)`}):L(e,{children:[I(t,{color:`green`,bold:!0,children:`> `}),I(gt,{value:g,onChange:e=>{_(e),H(),y(null)},onSubmit:re,onPaste:te,placeholder:`Type a message or /help`,availableWidth:j,cursorHint:v,enableVerticalNavigation:!1})]})})]})}function en({items:n,renderItem:r,onSelect:a,onCancel:o,maxVisible:s=3}){let[c,l]=h(()=>Y()),d=m(c),f=u(e=>{let t=Z(d.current,e,{itemCount:n.length,maxVisible:s});if(d.current=t.state,l(t.state),t.effect.type===`cancel`)o();else if(t.effect.type===`select`){let e=n[t.effect.index];e!==void 0&&a(e)}},[n,s,o,a]);if(i((e,t)=>{let n=ue(t);n!==void 0&&f(n)}),n.length===0)return I(e,{});let p=de(c,{itemCount:n.length,maxVisible:s});p!==c&&(d.current=p);let{selectedIndex:g,scrollOffset:_}=p,v=n.slice(_,_+s),y=_+s<n.length;return L(e,{flexDirection:`column`,children:[_>0&&L(t,{dimColor:!0,children:[` ↑ `,_,` more above`]}),v.map((t,n)=>I(e,{marginBottom:1,children:r(t,_+n===g)},_+n)),y&&L(t,{dimColor:!0,children:[` ↓ `,n.length-_-s,` more below`]})]})}function tn(){return{value:``,resolved:!1}}function nn(e,t){if(t.escape===!0)return{type:`cancel`};if(t.return===!0)return{type:`submit`};if(t.backspace===!0||t.delete===!0)return{type:`delete`};if(e&&t.ctrl!==!0&&t.meta!==!0)return{type:`insert`,value:e}}function rn(e,t,n){return e.resolved?{state:e,effect:{type:`none`}}:t.type===`cancel`?{state:{...e,resolved:!0},effect:{type:`cancel`}}:t.type===`delete`?{state:{...e,value:e.value.slice(0,-1),error:void 0},effect:{type:`none`}}:t.type===`insert`?{state:{...e,value:e.value+t.value,error:void 0},effect:{type:`none`}}:an(e,n)}function an(e,t){let n=e.value.trim();if(!n&&!t.allowEmpty){let r=t.validate?.(n);return{state:r?{...e,error:r}:e,effect:{type:`none`}}}let r=t.validate?.(n);return r===void 0?{state:{...e,resolved:!0},effect:{type:`submit`,value:n}}:{state:{...e,error:r},effect:{type:`none`}}}function on({title:n,description:r,placeholder:a,onSubmit:o,onCancel:s,validate:c,allowEmpty:l=!1,masked:d=!1}){let[f,p]=h(()=>tn()),g=m(f),_=u(e=>{let t=rn(g.current,e,{allowEmpty:l,validate:c});g.current=t.state,p(t.state),t.effect.type===`cancel`?s():t.effect.type===`submit`&&o(t.effect.value)},[l,c,s,o]);return i((e,t)=>{let n=nn(e,t);n!==void 0&&_(n)}),L(e,{flexDirection:`column`,borderStyle:`round`,borderColor:`yellow`,paddingX:1,children:[I(t,{color:`yellow`,bold:!0,children:n}),I(sn,{description:r}),L(e,{marginTop:1,children:[I(t,{color:`cyan`,children:`> `}),f.value?I(t,{children:d?`*`.repeat(f.value.length):f.value}):a?I(t,{dimColor:!0,children:a}):null,I(t,{color:`cyan`,children:`█`})]}),f.error&&I(t,{color:`red`,children:f.error}),I(t,{dimColor:!0,children:` Enter Submit Esc Cancel`})]})}function sn({description:e}){return e===void 0||e.length===0?null:I(t,{dimColor:!0,children:e})}function cn({prompt:n,onSubmit:r,onCancel:i}){return n.kind===`text`?I(on,{title:n.title,description:n.description,placeholder:n.placeholder,allowEmpty:n.allowEmpty,masked:n.masked,validate:n.validate,onSubmit:r,onCancel:i},`text:${n.title}`):L(e,{flexDirection:`column`,children:[I(t,{bold:!0,children:n.title}),n.description!==void 0&&n.description.length>0&&I(t,{dimColor:!0,children:n.description}),I(en,{items:[...n.options],maxVisible:n.maxVisible,renderItem:(e,n)=>L(t,{color:n?`cyan`:void 0,children:[n?`> `:` `,e.label]}),onSelect:e=>r(e.value),onCancel:i})]})}const ln=new Set([`Bash`,`BackgroundProcess`]);function un(e){if(!ln.has(e.toolName)||!e.toolResultData)return;let t=dn(e.toolResultData),n=yn(t,`exitCode`),r=bn(t,`success`),i=hn(mn(fn(e.toolResultData,t))),a=i.slice(0,4),o=Math.max(0,i.length-a.length),s=e.result===`error`||r===!1||n!==void 0&&n!==0;return{status:s?`error`:`success`,statusLabel:pn(s,n),previewLines:a,omittedLineCount:o,transcriptHint:o>0?`... +${o} lines (full output in session transcript)`:void 0}}function dn(e){try{return JSON.parse(e)}catch{return e}}function fn(e,t){if(!_n(t))return e;let n=vn(t,`output`);if(n!==void 0)return n;let r=vn(t,`stdout`),i=vn(t,`stderr`),a=vn(t,`error`),o=[];return r&&o.push(r),i&&o.push(gn(i,`[stderr] `)),!r&&!i&&a&&o.push(a),o.join(`
7
+ `)}function pn(e,t){return t!==void 0&&t!==0?`exit ${t}`:e?`error`:`ok`}function mn(e){return e?e.replace(/\r\n/g,`
8
+ `).split(`
9
+ `):[]}function hn(e){let t=e.length;for(;t>0&&e[t-1].trim().length===0;)--t;return e.slice(0,t)}function gn(e,t){return mn(e).map(e=>`${t}${e}`).join(`
10
+ `)}function _n(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Date)}function vn(e,t){if(!_n(e))return;let n=e[t];return typeof n==`string`?n:void 0}function yn(e,t){if(!_n(e))return;let n=e[t];return typeof n==`number`&&Number.isFinite(n)?n:void 0}function bn(e,t){if(!_n(e))return;let n=e[t];return typeof n==`boolean`?n:void 0}const xn=`\x1B[0m`,Sn=` `,Cn=te;function wn(e){return e===void 0?process.env.NO_COLOR||process.env.FORCE_COLOR===`0`?!1:process.env.FORCE_COLOR?!0:!!process.stdout.isTTY:e}function Tn(e){return e?.trim().toLowerCase()===`diff`}function En(e,t,n){let r=`${Sn}${e}`.padEnd(t);return n?e.startsWith(`+`)?`${r}${xn}`:e.startsWith(`-`)?`${r}${xn}`:r.trimEnd():r.trimEnd()}function Dn(e,t,n){if(e.startsWith(`+`)||e.startsWith(`-`))return En(e,n,t);let r=`${Sn}${e}`;return t?e.startsWith(`@@`)?`${r}${xn}`:e.startsWith(`diff `)||e.startsWith(`index `)?`${r}${xn}`:r:r}function On(e,t){let n=e.reduce((e,t)=>Math.max(e,4+t.length),0);return t===void 0?n:Math.max(n,t)}function kn(e,t,n){let r=e.split(`
11
+ `),i=On(r,n);return`${r.map(e=>Dn(e,t,i)).join(`
12
+ `)}\n\n`}function An(e,t){let n=new Cn(void 0,{ignoreIllegals:!0}),r=n.code.bind(n);return n.code=(n,i,a)=>Tn(i)?kn(n,e,t):r(n,i,a),n}function jn(e,t={}){let n=V.parse(e,{renderer:An(wn(t.color),t.codeBlockWidth)});return typeof n==`string`?n.trimEnd():e}function Mn({tool:n}){let r=un(n);if(!r||r.statusLabel===`ok`&&r.previewLines.length===0&&!r.transcriptHint)return null;let i=r.status===`error`?`red`:`white`;return L(e,{flexDirection:`column`,marginLeft:4,children:[r.statusLabel!==`ok`&&I(t,{color:i,dimColor:!0,children:r.statusLabel}),r.previewLines.map((e,n)=>I(t,{color:i,dimColor:!0,children:e},`${e}-${n}`)),r.transcriptHint&&I(t,{dimColor:!0,children:r.transcriptHint})]})}function Nn(e){let t=e.lines.length>12?Fn(e.lines):e.lines,n=Math.max(...t.map(e=>e.lineNumber),0).toString().length,r=t.map(e=>Pn(e,n)),i=e.lines.length>12;return{file:e.file,markdown:["```diff",...r,"```"].join(`
13
+ `),truncated:i,remainingLineCount:i?e.lines.length-t.length:0}}function Pn(e,t){if(e.type===`hunk`)return e.text;let n=e.lineNumber.toString().padStart(t,` `);return e.type===`remove`?`- ${n} | ${e.text}`:e.type===`add`?`+ ${n} | ${e.text}`:` ${n} | ${e.text}`}function Fn(e){let t=In(e),n=[];for(let e of t){if(n.length===0&&e.length>10)return e.slice(0,10);if(n.length+e.length>10)break;n.push(...e)}return n.length>0?n:e.slice(0,10)}function In(e){let t=[],n=[];for(let r of e){if(r.type===`hunk`&&n.length>0){t.push(n),n=[r];continue}n.push(r)}return n.length>0&&t.push(n),t}function Ln({file:n,lines:r}){let i=Nn({file:n,lines:r});return L(e,{flexDirection:`column`,marginLeft:4,children:[i.file&&L(t,{color:`white`,dimColor:!0,children:[`│ `,i.file]}),I(t,{children:jn(i.markdown)}),i.truncated&&L(t,{color:`white`,dimColor:!0,children:[`│ ... and `,i.remainingLineCount,` more lines`]})]})}function Rn({entry:n}){let r=n.data;if(!r)return I(F,{});let i=r.promptTokens===void 0?`?`:zn(r.promptTokens),a=r.completionTokens===void 0?`?`:zn(r.completionTokens),o=zn(r.totalTokens),s=`${Math.round(r.contextUsedPercentage)}% (${v(r.contextUsedTokens)}/${v(r.contextMaxTokens)})`,c=r.costStatus===`unknown`?`cost unknown`:`cost ${r.costStatus}`;return I(e,{flexDirection:`column`,marginBottom:1,children:L(e,{children:[L(t,{color:`white`,bold:!0,children:[`Usage:`,` `]}),L(t,{dimColor:!0,children:[r.kind,` `,o,` tokens (in `,i,` / out `,a,`) · Context `,s,` ·`,` `,c]})]})})}function zn(e){return e<1e3?e.toLocaleString():v(e)}function Bn(e){return un(e)?.status===`error`?`✗`:e.isRunning?`⟳`:e.result===`error`?`✗`:e.result===`denied`?`⊘`:`✓`}function Vn(e){return un(e)?.status===`error`||e.result===`error`?`red`:e.isRunning||e.result===`denied`?`yellow`:`green`}function Hn(e){return`${Bn(e)} ${e.toolName}${e.firstArg?`(${e.firstArg})`:``}`}function Un({role:e}){switch(e){case`user`:return L(t,{color:`green`,bold:!0,children:[`You:`,` `]});case`assistant`:return L(t,{color:`cyan`,bold:!0,children:[`Robota:`,` `]});case`system`:return L(t,{color:`yellow`,bold:!0,children:[`System:`,` `]});case`tool`:return L(t,{color:`white`,bold:!0,children:[`Tool:`,` `]})}}function Wn({message:n}){if(!x(n))return I(F,{});let r=n.name,i=n.content,a=null;try{let e=JSON.parse(i);Array.isArray(e)&&e.length>0&&typeof e[0].line==`string`&&(a=e)}catch{}if(a)return L(e,{flexDirection:`column`,marginBottom:1,children:[L(e,{children:[L(t,{color:`white`,bold:!0,children:[`Tool:`,` `]}),r&&L(t,{color:`white`,dimColor:!0,children:[`[`,r,`]`]})]}),I(t,{children:` `}),a.map((n,r)=>L(e,{flexDirection:`column`,children:[L(t,{color:`green`,children:[` `,`✓`,` `,n.line]}),n.diffLines&&n.diffLines.length>0&&I(Ln,{file:n.diffFile,lines:n.diffLines})]},r))]});let o=i.split(`
14
+ `).filter(e=>e.trim());return L(e,{flexDirection:`column`,marginBottom:1,children:[L(e,{children:[L(t,{color:`white`,bold:!0,children:[`Tool:`,` `]}),r&&L(t,{color:`white`,dimColor:!0,children:[`[`,r,`]`]})]}),I(t,{children:` `}),o.map((e,n)=>L(t,{color:`green`,children:[` `,`✓`,` `,e]},n))]})}const Gn=c.memo(function({message:n}){if(x(n))return I(Wn,{message:n});let r=n.content??``,i=n.state===`interrupted`;return L(e,{flexDirection:`column`,marginBottom:1,children:[I(e,{children:I(Un,{role:n.role})}),I(t,{children:` `}),I(e,{marginLeft:2,children:I(t,{wrap:`wrap`,children:b(n)?jn(r+(i?`
15
+
16
+ _(interrupted)_`:``)):r})})]})});function Kn({entry:n}){let r=n.data,i=r?.tools,a=r?.summary?.split(`
17
+ `)??[];return i&&i.length>0?L(e,{flexDirection:`column`,marginBottom:1,children:[I(e,{children:L(t,{color:`white`,bold:!0,children:[`Tool:`,` `]})}),I(t,{children:` `}),i.map((n,r)=>L(e,{flexDirection:`column`,children:[L(t,{color:Vn(n),children:[` `,Hn(n)]}),I(Mn,{tool:n}),n.diffLines&&n.diffLines.length>0&&I(Ln,{file:n.diffFile,lines:n.diffLines})]},r))]}):L(e,{flexDirection:`column`,marginBottom:1,children:[I(e,{children:L(t,{color:`white`,bold:!0,children:[`Tool:`,` `]})}),I(t,{children:` `}),a.map((e,n)=>L(t,{color:`green`,children:[` `,e]},n))]})}function qn({entry:n}){let r=n.data,i=typeof r?.message==`string`?r.message:typeof r?.content==`string`?r.content:n.type;return L(e,{flexDirection:`column`,marginBottom:1,children:[I(e,{children:L(t,{color:`yellow`,bold:!0,children:[`System:`,` `]})}),I(t,{children:` `}),I(e,{marginLeft:2,children:I(t,{wrap:`wrap`,children:i})})]})}function Jn({entry:e}){if(e.category===`chat`){let t=e.data;return I(Gn,{message:t})}return e.type===`tool-summary`?I(Kn,{entry:e}):e.type===`usage-summary`?I(Rn,{entry:e}):e.type===`tool-start`||e.type===`tool-end`?I(F,{}):I(qn,{entry:e})}function Yn({history:t}){return I(e,{flexDirection:`column`,children:t.map(e=>I(Jn,{entry:e},e.id))})}const Xn=[`Allow`,`Allow always (this session)`,`Deny`];function Zn(e,t){let n=X({...t,escape:!1});if(n!==void 0)return n;if(e===`y`||e===`1`)return{type:`shortcut`,index:0};if(e===`a`||e===`2`)return{type:`shortcut`,index:1};if(e===`n`||e===`d`||e===`3`)return{type:`shortcut`,index:2}}function Qn(e,t){if(e.resolved)return{state:e,effect:{type:`none`}};if(typeof t!=`string`)return er(e,t.index);let n=Z(e,t,{itemCount:Xn.length});return n.effect.type===`select`?{state:n.state,effect:{type:`resolve`,decision:$n(n.effect.index)}}:{state:n.state,effect:{type:`none`}}}function $n(e){return e===0?!0:e===1?`allow-session`:!1}function er(e,t){return{state:{...e,selectedIndex:t,resolved:!0},effect:{type:`resolve`,decision:$n(t)}}}function tr(e){let t=Object.entries(e);return t.length===0?`(no arguments)`:t.map(([e,t])=>`${e}: ${typeof t==`string`?t:JSON.stringify(t)}`).join(`, `)}function nr({request:n}){let[r,a]=c.useState(()=>Y()),o=c.useRef(r),s=c.useRef(n);if(s.current!==n){s.current=n;let e=Y();o.current=e,a(e)}let l=c.useCallback(e=>{let t=Qn(o.current,e);o.current=t.state,a(t.state),t.effect.type===`resolve`&&n.resolve(t.effect.decision)},[n]);return i((e,t)=>{let n=Zn(e,t);n!==void 0&&l(n)}),L(e,{flexDirection:`column`,borderStyle:`round`,borderColor:`yellow`,paddingX:1,children:[I(t,{color:`yellow`,bold:!0,children:`[Permission Required]`}),L(t,{children:[`Tool:`,` `,I(t,{color:`cyan`,bold:!0,children:n.toolName})]}),L(t,{dimColor:!0,children:[` `,tr(n.toolArgs)]}),I(e,{marginTop:1,children:Xn.map((n,i)=>I(e,{marginRight:2,children:L(t,{color:i===r.selectedIndex?`cyan`:void 0,bold:i===r.selectedIndex,children:[i===r.selectedIndex?`> `:` `,n]})},n))}),I(t,{dimColor:!0,children:` left/right to select, Enter to confirm`})]})}function rr(e,t,n,r,i){let[a,o]=h([]),[s,c]=h(!1),[l,u]=h();return f(()=>{if(o([]),u(void 0),e===`marketplace-list`)c(!0),n.marketplaceList().then(e=>{let t=[{label:`Add Marketplace`,value:`__add__`}],n=e.map(e=>({label:e.name,value:e.name,hint:e.type}));o([...t,...n]),c(!1)}).catch(e=>{u(e instanceof Error?e.message:String(e)),c(!1)});else if(e===`marketplace-browse`){let e=t??``;c(!0),n.listAvailablePlugins(e).then(e=>{o(e.map(e=>({label:e.name,value:e.name,hint:e.installed?`installed`:e.description}))),c(!1)}).catch(e=>{u(e instanceof Error?e.message:String(e)),c(!1)})}else e===`installed-list`&&(c(!0),n.listInstalled().then(e=>{o(e.map(e=>({label:e.name,value:e.name,hint:e.description}))),c(!1)}).catch(e=>{u(e instanceof Error?e.message:String(e)),c(!1)}))},[i,e,t,n,r]),{items:a,loading:s,error:l}}function ir({title:n,items:r,onSelect:a,onBack:o,loading:s,error:c}){let[l,d]=h(()=>Y()),f=m(l),p=!s&&!c,g=u(e=>{let t=Z(f.current,e,{itemCount:r.length,enabled:p});if(f.current=t.state,d(t.state),t.effect.type===`cancel`)o();else if(t.effect.type===`select`){let e=r[t.effect.index];e!==void 0&&a(e.value)}},[p,r,o,a]);i((e,t)=>{let n=ue(t);n!==void 0&&g(n)});let _=de(l,{itemCount:r.length});_!==l&&(f.current=_);let v=_.selectedIndex;return L(e,{flexDirection:`column`,borderStyle:`round`,borderColor:`yellow`,paddingX:1,children:[I(t,{color:`yellow`,bold:!0,children:n}),s&&I(e,{marginTop:1,children:I(t,{dimColor:!0,children:`Loading...`})}),c&&L(e,{marginTop:1,flexDirection:`column`,children:[I(t,{color:`red`,children:c}),I(t,{dimColor:!0,children:`Press Esc to go back`})]}),!s&&!c&&I(e,{flexDirection:`column`,marginTop:1,children:r.map((n,r)=>L(e,{children:[L(t,{color:r===v?`cyan`:void 0,bold:r===v,children:[r===v?`> `:` `,n.label]}),n.hint&&L(t,{dimColor:!0,children:[` `,n.hint]})]},n.value))}),I(t,{dimColor:!0,children:s||c?``:` ↑↓ Navigate Enter Select Esc Back`})]})}function ar(e,t){e===`marketplace`?t.push({screen:`marketplace-list`}):e===`installed`&&t.push({screen:`installed-list`})}function or(e,t){e===`__add__`?t.push({screen:`marketplace-add`}):t.push({screen:`marketplace-action`,context:{marketplace:e}})}function sr(e,t,n,r){e===`browse`?r.push({screen:`marketplace-browse`,context:{marketplace:t}}):e===`update`?n.marketplaceUpdate(t).then(()=>{r.notify(`Updated marketplace "${t}".`),r.pop()}).catch(e=>{r.notify(`Error: ${e instanceof Error?e.message:String(e)}`)}):e===`remove`&&r.setConfirm({message:`Remove marketplace "${t}" and all its plugins?`,onConfirm:()=>{r.setConfirm(void 0),n.marketplaceRemove(t).then(()=>{r.notify(`Removed marketplace "${t}".`),r.popN(2)}).catch(e=>{r.notify(`Error: ${e instanceof Error?e.message:String(e)}`)})},onCancel:()=>r.setConfirm(void 0)})}function cr(e,t,n,r){let i=`${e}@${t}`;n.find(t=>t.value===e)?.hint===`installed`?r.push({screen:`installed-action`,context:{pluginId:i}}):r.push({screen:`marketplace-install-scope`,context:{marketplace:t,pluginId:i}})}function lr(e,t,n,r){let i=e;n.install(t,i).then(()=>{r.notify(`Installed plugin "${t}" (${i} scope).`),r.popN(2)}).catch(e=>{r.notify(`Error: ${e instanceof Error?e.message:String(e)}`)})}function ur(e,t,n){n.setConfirm({message:`Uninstall plugin "${e}"?`,onConfirm:()=>{n.setConfirm(void 0),t.uninstall(e).then(()=>{n.notify(`Uninstalled plugin "${e}".`),n.refresh()}).catch(e=>{n.notify(`Error: ${e instanceof Error?e.message:String(e)}`)})},onCancel:()=>n.setConfirm(void 0)})}function dr(e,t,n,r){e===`uninstall`&&r.setConfirm({message:`Uninstall plugin "${t}"?`,onConfirm:()=>{r.setConfirm(void 0),n.uninstall(t).then(()=>{r.notify(`Uninstalled plugin "${t}".`),r.popN(2)}).catch(e=>{r.notify(`Error: ${e instanceof Error?e.message:String(e)}`)})},onCancel:()=>r.setConfirm(void 0)})}function fr({callbacks:e,onClose:t,addMessage:n}){let[r,i]=h([{screen:`main`}]),[a,o]=h(),[s,c]=h(0),l=r[r.length-1]??{screen:`main`},d=u(e=>{i(t=>[...t,e])},[]),f=u(()=>{i(e=>e.length<=1?(t(),e):e.slice(0,-1))},[t]),p=u(e=>{i(n=>{let r=n.slice(0,Math.max(1,n.length-e));return r.length===0?(t(),n):r})},[t]),m=u(e=>{n?.({role:`system`,content:e})},[n]),g=u(()=>{c(e=>e+1)},[]),_=u(e=>o(e),[o]),v={push:u(e=>d({screen:e.screen,context:e.context}),[d]),pop:f,popN:p,notify:m,setConfirm:_,refresh:g},{items:y,loading:b,error:x}=rr(l.screen,l.context?.marketplace,e,s,r.length),S=u(t=>{let n=l.screen,r=l.context;n===`main`?ar(t,v):n===`marketplace-list`?or(t,v):n===`marketplace-action`?sr(t,r?.marketplace??``,e,v):n===`marketplace-browse`?cr(t,r?.marketplace??``,y,v):n===`marketplace-install-scope`?lr(t,r?.pluginId??``,e,v):n===`installed-list`?ur(t,e,v):n===`installed-action`&&dr(t,r?.pluginId??``,e,v)},[l,y,e,d,f,p,m,o,g]),C=u(t=>{l.screen===`marketplace-add`&&e.marketplaceAdd(t).then(e=>{m(`Added marketplace "${e}" from ${t}.`),f()}).catch(e=>{m(`Error: ${e instanceof Error?e.message:String(e)}`),f()})},[l.screen,e,m,f]);if(a)return I(he,{message:a.message,onSelect:e=>{e===0?a.onConfirm():a.onCancel()}});let w=l.screen;return w===`marketplace-add`?I(on,{title:`Add Marketplace Source`,placeholder:`owner/repo or git URL`,onSubmit:C,onCancel:f,validate:e=>e.includes(`/`)?void 0:`Must be owner/repo or a git URL`}):w===`marketplace-action`?I(ir,{title:`Marketplace: ${l.context?.marketplace??``}`,items:[{label:`Browse plugins`,value:`browse`},{label:`Update`,value:`update`},{label:`Remove`,value:`remove`}],onSelect:S,onBack:f},r.length):w===`marketplace-install-scope`?I(ir,{title:`Install scope for "${l.context?.pluginId??``}"`,items:[{label:`User scope`,value:`user`},{label:`Project scope`,value:`project`}],onSelect:S,onBack:f},r.length):w===`installed-action`?I(ir,{title:`Plugin: ${l.context?.pluginId??``}`,items:[{label:`Uninstall`,value:`uninstall`}],onSelect:S,onBack:f},r.length):I(ir,{title:{main:`Plugin Management`,"marketplace-list":`Marketplace`,"marketplace-browse":`Browse: ${l.context?.marketplace??``}`,"installed-list":`Installed Plugins`}[w]??`Plugin Management`,items:{main:[{label:`Marketplace`,value:`marketplace`},{label:`Installed Plugins`,value:`installed`}]}[w]??y,onSelect:S,onBack:f,loading:b,error:x},`${w}-${r.length}-${s}`)}function pr({sessions:n,onSelect:r,onCancel:i}){return L(e,{flexDirection:`column`,paddingX:1,marginBottom:1,children:[I(t,{bold:!0,color:`cyan`,children:`Select a session to resume (ESC to cancel):`}),I(en,{items:[...n],renderItem:(e,n)=>{let r=e.preview?e.preview.slice(0,60)+(e.preview.length>60?`...`:``):``;return L(t,{children:[n?`> `:` `,I(t,{bold:!0,children:e.name??e.id.slice(0,8)}),` `,I(t,{dimColor:!0,children:new Date(e.updatedAt).toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}),` `,L(t,{dimColor:!0,children:[`msgs: `,e.messageCount]}),r?L(F,{children:[`
18
+ `,I(t,{color:`gray`,children:r})]}):null]})},onSelect:e=>r(e.id),onCancel:i})]})}function mr(e){let t=hr(e),n=e.hasPendingPrompt&&t.kind!==`queued`?[`queued`]:[],r=[t.label,...n].join(` · `);return{...t,segments:n,text:r}}function hr(e){return e.activeToolCount>0?{kind:`tools`,label:`Tools x${e.activeToolCount}`,color:`cyan`}:e.isThinking?{kind:`thinking`,label:`Thinking`,color:`yellow`}:e.activeBackgroundTaskCount>0?{kind:`background`,label:`Background x${e.activeBackgroundTaskCount}`,color:`cyan`}:e.hasPendingPrompt?{kind:`queued`,label:`Queued`,color:`yellow`}:{kind:`idle`,label:`Idle`,color:`gray`}}function gr(e){return e>=90?`red`:e>=70?`yellow`:`green`}function _r({isThinking:e,activeToolCount:n,activeBackgroundTaskCount:r,hasPendingPrompt:i}){let a=mr({isThinking:e,activeToolCount:n,activeBackgroundTaskCount:r,hasPendingPrompt:i});return I(t,{color:a.color,bold:a.kind!==`idle`,children:a.text})}function vr({percentage:e,usedTokens:n,maxTokens:r}){return L(t,{color:gr(e),children:[`Context: `,Math.round(e),`% (`,v(n),`/`,v(r),`)`]})}function yr({permissionMode:e}){return L(F,{children:[I(t,{color:`cyan`,bold:!0,children:`Mode:`}),` `,I(t,{children:e})]})}function br(e){return e!==`default`}function xr({modelName:e,providerDisplayName:n}){return n===void 0?I(t,{dimColor:!0,children:e}):L(t,{dimColor:!0,children:[n,` `,e]})}function Sr(e){let n=e.showGitBranch&&e.gitBranch!==void 0&&e.gitBranch.length>0,r=br(e.permissionMode);return L(t,{children:[I(_r,{isThinking:e.isThinking,activeToolCount:e.activeToolCount,activeBackgroundTaskCount:e.activeBackgroundTaskCount,hasPendingPrompt:e.hasPendingPrompt}),r&&L(F,{children:[` | `,I(yr,{permissionMode:e.permissionMode})]}),e.sessionName&&L(F,{children:[` | `,I(t,{color:`magenta`,children:e.sessionName})]}),n&&L(F,{children:[` | `,L(t,{dimColor:!0,children:[`git: `,e.gitBranch]})]}),` | `,I(xr,{modelName:e.modelName,providerDisplayName:e.providerDisplayName}),` | `,I(vr,{percentage:e.contextPercentage,usedTokens:e.contextUsedTokens,maxTokens:e.contextMaxTokens})]})}function Cr({permissionMode:n,modelName:r,providerDisplayName:i,sessionId:a,isThinking:o,activeToolCount:s=0,activeBackgroundTaskCount:c=0,hasPendingPrompt:l=!1,contextPercentage:u,contextUsedTokens:d,contextMaxTokens:f,sessionName:p,gitBranch:m,showGitBranch:h=!0,activeAgentLabel:g}){return L(e,{borderStyle:`single`,borderColor:`gray`,paddingLeft:1,paddingRight:1,justifyContent:`space-between`,children:[I(Sr,{permissionMode:n,modelName:r,providerDisplayName:i,isThinking:o,activeToolCount:s,activeBackgroundTaskCount:c,hasPendingPrompt:l,contextPercentage:u,contextUsedTokens:d,contextMaxTokens:f,sessionName:p,gitBranch:m,showGitBranch:h}),g!==void 0&&L(t,{color:`yellow`,bold:!0,children:[`[`,g,`]`]})]})}function wr({cwd:e,permissionMode:t,modelId:n,providerType:r,sessionId:i,isThinking:a,activeToolCount:o,activeBackgroundTaskCount:s,hasPendingPrompt:c,contextState:l,sessionName:u,settings:d,activeAgentLabel:f,gitRefreshToken:m}){let h=Ke(),g=p(()=>h.getGitBranch(e),[h,e,m]),_=p(()=>r===void 0?void 0:h.getProviderDisplayName(r),[h,r]);return d.enabled?I(Cr,{permissionMode:t,modelName:n??``,providerDisplayName:_,sessionId:i,isThinking:a,activeToolCount:o,activeBackgroundTaskCount:s,hasPendingPrompt:c,contextPercentage:l.percentage,contextUsedTokens:l.usedTokens,contextMaxTokens:l.maxTokens,sessionName:u,gitBranch:g,showGitBranch:d.gitBranch,activeAgentLabel:f}):null}function Tr(e){return e.isRunning?{color:`yellow`,icon:`⟳`,strikethrough:!1}:e.result===`error`?{color:`red`,icon:`✗`,strikethrough:!0}:e.result===`denied`?{color:`yellowBright`,icon:`⊘`,strikethrough:!0}:{color:`green`,icon:`✓`,strikethrough:!1}}function Er(n){return n?I(e,{marginBottom:1,children:I(t,{color:`yellow`,children:`Thinking...`})}):I(F,{})}function Dr(n){return L(e,{flexDirection:`column`,marginBottom:1,children:[I(t,{color:`white`,bold:!0,children:`Tools:`}),I(t,{children:` `}),n.map((n,r)=>{let{color:i,icon:a,strikethrough:o}=Tr(n);return L(e,{flexDirection:`column`,children:[L(t,{color:i,strikethrough:o,children:[` `,a,` `,n.toolName,`(`,n.firstArg,`)`]}),n.diffLines&&n.diffLines.length>0&&I(Ln,{file:n.diffFile,lines:n.diffLines})]},`${n.toolName}-${r}`)})]})}function Or({text:n,activeTools:r,isThinking:i=!1}){let a=r.length>0,o=n.length>0;return!a&&!o?Er(i):L(e,{flexDirection:`column`,children:[a&&Dr(r),o&&L(e,{flexDirection:`column`,marginBottom:1,children:[I(t,{color:`cyan`,bold:!0,children:`Robota:`}),I(t,{children:` `}),I(e,{marginLeft:2,children:I(t,{wrap:`wrap`,children:jn(n)})})]})]})}function kr({entry:n,selected:r}){let i=n.config.enabled,a=i?`●`:`○`,o=i?`[enabled] `:`[disabled]`,s=n.config.options?.port,c=typeof s==`number`?`port: ${s}`:``;return I(e,{children:I(t,{color:r?`cyan`:void 0,bold:r,children:`${a} ${n.transport.name.padEnd(18)} ${o} ${c}`})})}function Ar(e,t,n,r,a,o,s,c){i(u((i,l)=>{if(!n){if(l.upArrow){a(e=>Math.max(0,e-1));return}if(l.downArrow){a(t=>Math.min(e.length-1,t+1));return}if(l.escape||l.return){s();return}if(i===` `){let n=e[t];if(!n)return;o(!0),r.setEnabled(n.transport.name,!n.config.enabled).then(()=>{c(),o(!1)}).catch(()=>o(!1))}}},[n,e,t,r,s,c,a,o]))}function jr({registry:n,onClose:r}){let[i,a]=h(()=>n.getAll()),[o,s]=h(0),[c,l]=h(!1);return Ar(i,o,c,n,s,l,r,u(()=>{a(n.getAll())},[n])),L(e,{flexDirection:`column`,paddingX:2,paddingY:1,children:[I(t,{bold:!0,children:`Settings › Transports`}),I(e,{marginTop:1,flexDirection:`column`,children:i.map((e,t)=>I(kr,{entry:e,selected:t===o},e.transport.name))}),I(e,{marginTop:1,children:I(t,{dimColor:!0,children:`↑↓ select space toggle enter/esc close`})}),c&&I(e,{marginTop:1,children:I(t,{color:`yellow`,children:`Saving…`})})]})}function Mr({message:n}){return I(e,{paddingX:1,marginBottom:1,children:I(t,{color:`yellow`,children:n})})}function Nr(e){let[t,n]=h(e.resumeSessionId),[r,i]=h(e.showSessionPickerOnStart??!1);return I(Ge,{value:e.cliAdapter,children:I(Pr,{...e,showSessionPickerOnStart:r,resumeSessionId:t,onSessionSwitch:e=>{i(!1),n(e)}},t??`__new__`)})}function Pr(n){let a=n.cwd,{interactiveSession:o,registry:s,commandEffectQueue:c,history:l,addEntry:d,streamingText:_,activeTools:v,isThinking:y,isAborting:b,isShuttingDown:x,pendingPrompt:C,executionWorkspaceSnapshot:w,selectedExecutionEntryId:T,selectExecutionWorkspaceEntry:E,readExecutionWorkspaceDetail:D,permissionRequest:O,contextState:k,handleSubmit:A,handleAbort:M,handleCancelQueue:N,handleShutdown:P}=Re({cwd:a,provider:n.provider,permissionMode:n.permissionMode,maxTurns:n.maxTurns,sessionStore:n.sessionStore,resumeSessionId:n.resumeSessionId,forkSession:n.forkSession,sessionName:n.sessionName,backgroundTaskRunners:n.backgroundTaskRunners,subagentRunnerFactory:n.subagentRunnerFactory,commandModules:n.commandModules,commandHostAdapters:n.commandHostAdapters,shellExec:n.shellExec,transportRegistry:n.transportRegistry,language:n.language,reloadPluginCommandSource:n.reloadPluginCommandSource,agentName:n.agentName}),F=Be(a),R=n.commandHostAdapters?.plugin??F,{exit:z}=r(),[B,ee]=h(n.sessionName),[V,te]=h(),[H,U]=h(!1),[G,re]=h(null),[ie,K]=h(),[q,J]=h(!1),[ae,oe]=Xe(),[se,ce]=h(0),Y=p(()=>W(w),[w]),ue=ne(w),X=p(()=>w?.entries.find(e=>e.id===T),[w,T]),{handleSubmit:Z,pendingModelId:de,pendingInteractionPrompt:fe,showPluginTUI:Q,showSessionPicker:$,showTransportTUI:pe,setShowPluginTUI:me,setShowSessionPicker:_e,setShowTransportTUI:ye,handleModelConfirm:be,handleInteractionSubmit:xe,handleInteractionCancel:Se}=qe({cwd:a,providerOverride:n.providerOverride,interactiveSession:o,commandEffectQueue:c,addEntry:d,baseHandleSubmit:A,setSessionName:ee,setStatusLineSettings:oe,showSessionPickerOnStart:n.showSessionPickerOnStart,openAgentSwitcher:()=>U(!0)}),we=!X||X.kind===`main_thread`||X.controls.includes(`send`),Te=X&&X.kind!==`main_thread`?X.title:void 0,Ee=p(()=>w?.entries.find(e=>e.kind===`main_thread`)?.id,[w]),De=u(async e=>{X&&X.kind!==`main_thread`&&X.controls.includes(`send`)?await o.sendAgentJob(X.sourceId,e):await Z(e)},[X,Z,o]),Oe=u(async e=>{ce(e=>e+1),await De(e)},[De]),ke=m(!1);f(()=>{ke.current&&!y&&ce(e=>e+1),ke.current=y},[y]),f(()=>{let e=o?.getName?.();e&&!B&&ee(e)},[o,B]),f(()=>{let e=!0;return n.startupUpdateNotice?.then(t=>{e&&t!==void 0&&te(t)}).catch(()=>{}),()=>{e=!1}},[n.startupUpdateNotice]),f(()=>{let e=B?`Robota — ${B}`:`Robota`;process.stdout.write(`\x1b]0;${e}\x07`)},[B]),i((e,t)=>{!t.escape||!y||O||Q||pe||$||H||M()}),i((e,t)=>{!t.ctrl||e!==`b`||O||Q||$||x||U(e=>!e)}),i((e,t)=>{!t.escape||y||O||Q||pe||$||H||X&&X.kind!==`main_thread`&&Ee!==void 0&&E(Ee)}),i((e,t)=>{!t.ctrl||e!==`c`||x||P(`prompt_input_exit`).finally(()=>z())}),f(()=>{let e=()=>{x||P(`other`).finally(()=>z())};return process.once(`SIGINT`,e),process.once(`SIGTERM`,e),()=>{process.off(`SIGINT`,e),process.off(`SIGTERM`,e)}},[P,z,x]),f(()=>{if(!X||X.kind===`main_thread`){re(null),K(void 0),J(!1);return}let e=!0;return J(!0),K(void 0),D(X.id).then(t=>{e&&(re(t),J(!1))}).catch(t=>{e&&(K(t.message),J(!1))}),()=>{e=!1}},[w,D,X]);let Ae=n.permissionMode??`default`,je=``;try{let e=o.getSession();Ae=e.getPermissionMode(),je=e.getSessionId()}catch{}return L(e,{flexDirection:`column`,children:[L(e,{flexDirection:`column`,paddingX:1,marginBottom:1,children:[I(t,{color:`cyan`,bold:!0,children:`
19
+ ____ ___ ____ ___ _____ _
20
+ | _ \\ / _ \\| __ ) / _ \\_ _|/ \\
21
+ | |_) | | | | _ \\| | | || | / _ \\
22
+ | _ <| |_| | |_) | |_| || |/ ___ \\
23
+ |_| \\_\\\\___/|____/ \\___/ |_/_/ \\_\\
24
+ `}),L(t,{dimColor:!0,children:[` v`,n.version??`0.0.0`]})]}),V&&I(Mr,{message:V}),L(e,{flexDirection:`column`,paddingX:1,flexGrow:1,children:[X&&X.kind!==`main_thread`?I(ge,{entry:X,page:G,loading:q,error:ie}):I(Yn,{history:l}),x&&I(e,{marginBottom:1,children:I(t,{color:`yellow`,children:`Shutting down...`})}),(y||v.length>0)&&I(e,{flexDirection:`column`,marginBottom:1,children:I(Or,{text:_,activeTools:v,isThinking:y})}),I(le,{entries:Y})]}),H&&I(ve,{snapshot:w,selectedEntryId:T,onSelect:E,onClose:()=>U(!1)}),O&&I(nr,{request:O}),de&&I(he,{message:Ce(de),onSelect:be}),fe&&I(cn,{prompt:fe,onSubmit:xe,onCancel:Se}),Q&&I(fr,{callbacks:R,onClose:()=>me(!1),addMessage:e=>d(S(g(e.content)))}),pe&&n.transportRegistry&&I(jr,{registry:n.transportRegistry,onClose:()=>ye(!1)}),$&&I(pr,{sessions:j(n.sessionStore,n.cwd),onSelect:e=>{_e(!1),n.onSessionSwitch(e)},onCancel:()=>{_e(!1),d(S(g(`Session resume cancelled.`)))}}),I(wr,{cwd:a,permissionMode:Ae,modelId:n.modelId,providerType:n.providerType,sessionId:je,isThinking:y,activeToolCount:v.length,activeBackgroundTaskCount:ue,hasPendingPrompt:C!==null,contextState:k,sessionName:B,settings:ae,activeAgentLabel:Te,gitRefreshToken:se}),I($t,{onSubmit:Oe,onCancelQueue:N,isDisabled:!!O||Q||pe||$||H||x||fe!==null||y&&!!C||!we,isAborting:b,pendingPrompt:C,registry:s,sessionName:B,history:l}),I(t,{children:` `})]})}async function Fr(e){process.on(`unhandledRejection`,e=>{process.stderr.write(`\n[UNHANDLED REJECTION] ${e}\n`),e instanceof Error&&process.stderr.write(`${e.stack}\n`)});let{runtime:t,...r}=e;await n(I(Nr,{...t,...r}),{exitOnCtrlC:!1}).waitUntilExit()}var Ir=class{name=`tui`;defaultEnabled=!0;optionsSchema={};options;constructor(e){this.options=e}attach(e){}async start(){await Fr(this.options)}async stop(){}validateOptions(e){return!0}};function Lr({providerDefinitions:e,reloadPluginCommandSource:t}){return{getUserSettingsPath:()=>k(),readSettings:e=>M(e),writeSettings:(e,t)=>P(e,t),deleteSettings:e=>O(e),applyStatusLineSettings:(e,t)=>D(e,t),reloadPluginCommandSource:e=>{t(e)},applyActiveModelChange:(e,t,n)=>(E(e,t,n),{applied:!0}),getGitBranch:e=>N(e),getProviderDisplayName:t=>_(e,t)?.displayName??t}}export{Ir as n,Lr as t};
25
+ //# sourceMappingURL=tui-DUIfVw3G.js.map