@robota-sdk/agent-transport 3.0.0-beta.75 → 3.0.0-beta.76

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 (187) hide show
  1. package/README.md +10 -10
  2. package/dist/node/headless/index.cjs +1 -1
  3. package/dist/node/{headless-CT2ibQnr.cjs → headless-OnpVk4-k.cjs} +7 -7
  4. package/dist/node/index.cjs +1 -1
  5. package/dist/node/index.d.ts +1 -6
  6. package/dist/node/index.d.ts.map +1 -1
  7. package/dist/node/index.js +1 -1
  8. package/dist/node/index.js.map +1 -1
  9. package/package.json +7 -75
  10. package/src/index.ts +1 -5
  11. package/src/transport-registry.ts +0 -9
  12. package/dist/node/http/index.cjs +0 -1
  13. package/dist/node/http/index.d.ts +0 -2
  14. package/dist/node/http/index.js +0 -1
  15. package/dist/node/http-2Jiuflc1.js +0 -2
  16. package/dist/node/http-2Jiuflc1.js.map +0 -1
  17. package/dist/node/http-CBAvefLw.cjs +0 -1
  18. package/dist/node/index-BNccqSpv.d.ts +0 -86
  19. package/dist/node/index-BNccqSpv.d.ts.map +0 -1
  20. package/dist/node/index-BUhHIf7X.d.ts +0 -86
  21. package/dist/node/index-BUhHIf7X.d.ts.map +0 -1
  22. package/dist/node/index-BnAGE-u9.d.ts +0 -33
  23. package/dist/node/index-BnAGE-u9.d.ts.map +0 -1
  24. package/dist/node/index-BrQ4gGw0.d.ts +0 -213
  25. package/dist/node/index-BrQ4gGw0.d.ts.map +0 -1
  26. package/dist/node/index-CoeBF21y.d.ts +0 -213
  27. package/dist/node/index-CoeBF21y.d.ts.map +0 -1
  28. package/dist/node/index-DHt-2VQ-.d.ts +0 -46
  29. package/dist/node/index-DHt-2VQ-.d.ts.map +0 -1
  30. package/dist/node/index-DMwKN5Le.d.ts +0 -33
  31. package/dist/node/index-DMwKN5Le.d.ts.map +0 -1
  32. package/dist/node/index-c0M42fsA.d.ts +0 -46
  33. package/dist/node/index-c0M42fsA.d.ts.map +0 -1
  34. package/dist/node/mcp/index.cjs +0 -1
  35. package/dist/node/mcp/index.d.ts +0 -2
  36. package/dist/node/mcp/index.js +0 -1
  37. package/dist/node/mcp-BOglBJNy.cjs +0 -1
  38. package/dist/node/mcp-D3BBVK7C.js +0 -2
  39. package/dist/node/mcp-D3BBVK7C.js.map +0 -1
  40. package/dist/node/rolldown-runtime-CMqjfN_6.cjs +0 -1
  41. package/dist/node/tui/index.cjs +0 -1
  42. package/dist/node/tui/index.d.ts +0 -2
  43. package/dist/node/tui/index.js +0 -1
  44. package/dist/node/tui-CcH5EsQh.js +0 -25
  45. package/dist/node/tui-CcH5EsQh.js.map +0 -1
  46. package/dist/node/tui-DznRbcku.cjs +0 -24
  47. package/dist/node/ws/index.cjs +0 -1
  48. package/dist/node/ws/index.d.ts +0 -2
  49. package/dist/node/ws/index.js +0 -1
  50. package/dist/node/ws-Dc2RUwVs.js +0 -2
  51. package/dist/node/ws-Dc2RUwVs.js.map +0 -1
  52. package/dist/node/ws-QNMQn5kg.cjs +0 -1
  53. package/src/http/__tests__/http-transport.test.ts +0 -55
  54. package/src/http/__tests__/routes.test.ts +0 -168
  55. package/src/http/http-transport.ts +0 -41
  56. package/src/http/index.ts +0 -4
  57. package/src/http/routes.ts +0 -152
  58. package/src/mcp/__tests__/mcp-server.test.ts +0 -66
  59. package/src/mcp/__tests__/mcp-transport.test.ts +0 -46
  60. package/src/mcp/index.ts +0 -4
  61. package/src/mcp/mcp-server.ts +0 -163
  62. package/src/mcp/mcp-transport.ts +0 -48
  63. package/src/tui/App.tsx +0 -491
  64. package/src/tui/BackgroundTaskPanel.tsx +0 -36
  65. package/src/tui/CjkTextInput.tsx +0 -199
  66. package/src/tui/ConfirmPrompt.tsx +0 -70
  67. package/src/tui/ContextWarningBanner.tsx +0 -34
  68. package/src/tui/ExecutionWorkspaceDetailPane.tsx +0 -64
  69. package/src/tui/ExecutionWorkspaceSwitcher.tsx +0 -187
  70. package/src/tui/InputArea.tsx +0 -310
  71. package/src/tui/InteractivePrompt.tsx +0 -59
  72. package/src/tui/ListPicker.tsx +0 -95
  73. package/src/tui/MenuSelect.tsx +0 -104
  74. package/src/tui/MessageList.tsx +0 -284
  75. package/src/tui/PermissionPrompt.tsx +0 -86
  76. package/src/tui/PluginTUI.tsx +0 -258
  77. package/src/tui/SessionPicker.tsx +0 -68
  78. package/src/tui/SessionStatusBar.tsx +0 -73
  79. package/src/tui/SlashAutocomplete.tsx +0 -110
  80. package/src/tui/StatusBar.tsx +0 -236
  81. package/src/tui/StreamingIndicator.tsx +0 -93
  82. package/src/tui/TextPrompt.tsx +0 -81
  83. package/src/tui/ToolCommandOutput.tsx +0 -39
  84. package/src/tui/ToolDiffBlock.tsx +0 -32
  85. package/src/tui/TransportTUI.tsx +0 -117
  86. package/src/tui/TuiInteractionChannel.ts +0 -495
  87. package/src/tui/UpdateNotice.tsx +0 -14
  88. package/src/tui/UsageSummaryEntry.tsx +0 -39
  89. package/src/tui/WaveText.tsx +0 -44
  90. package/src/tui/__tests__/InteractivePrompt.test.tsx +0 -82
  91. package/src/tui/__tests__/ListPicker.test.tsx +0 -159
  92. package/src/tui/__tests__/MenuSelect.test.tsx +0 -103
  93. package/src/tui/__tests__/PluginTUI.test.tsx +0 -167
  94. package/src/tui/__tests__/SlashAutocomplete.test.tsx +0 -140
  95. package/src/tui/__tests__/TextPrompt.test.tsx +0 -98
  96. package/src/tui/__tests__/TuiInteractionChannel.display-contract.test.ts +0 -239
  97. package/src/tui/__tests__/TuiInteractionChannel.lifecycle.test.ts +0 -297
  98. package/src/tui/__tests__/TuiInteractionChannel.requestAction.test.ts +0 -124
  99. package/src/tui/__tests__/UpdateNotice.test.tsx +0 -15
  100. package/src/tui/__tests__/abort-after-permission.test.tsx +0 -169
  101. package/src/tui/__tests__/abort-streaming-e2e.test.tsx +0 -183
  102. package/src/tui/__tests__/background-task-panel.test.tsx +0 -53
  103. package/src/tui/__tests__/background-task-row-format.test.ts +0 -59
  104. package/src/tui/__tests__/channel-factory-integration.test.ts +0 -138
  105. package/src/tui/__tests__/cjk-text-input-flow.test.ts +0 -109
  106. package/src/tui/__tests__/cjk-text-input.test.ts +0 -191
  107. package/src/tui/__tests__/command-effect-handler.test.ts +0 -127
  108. package/src/tui/__tests__/command-output-summary.test.ts +0 -95
  109. package/src/tui/__tests__/compact-event-bridge.test.ts +0 -20
  110. package/src/tui/__tests__/confirm-permission-flow.test.ts +0 -130
  111. package/src/tui/__tests__/confirm-prompt.test.tsx +0 -87
  112. package/src/tui/__tests__/execution-workspace-switcher.test.tsx +0 -110
  113. package/src/tui/__tests__/execution-workspace-view-model.test.ts +0 -93
  114. package/src/tui/__tests__/fixtures/provider-setup-prompt-driver.tsx +0 -125
  115. package/src/tui/__tests__/input-area-flow.test.ts +0 -164
  116. package/src/tui/__tests__/message-list-rendering.test.tsx +0 -353
  117. package/src/tui/__tests__/prompt-queue.test.tsx +0 -255
  118. package/src/tui/__tests__/provider-setup-pty-e2e.test.ts +0 -233
  119. package/src/tui/__tests__/pty/pty-driver.ts +0 -135
  120. package/src/tui/__tests__/pty/tui-pty.ptytest.ts +0 -61
  121. package/src/tui/__tests__/render-channel-options.test.ts +0 -32
  122. package/src/tui/__tests__/render-markdown.test.ts +0 -72
  123. package/src/tui/__tests__/selection-flow.test.ts +0 -61
  124. package/src/tui/__tests__/session-init-poller.test.ts +0 -102
  125. package/src/tui/__tests__/session-naming.test.ts +0 -64
  126. package/src/tui/__tests__/session-switch-channel.test.tsx +0 -307
  127. package/src/tui/__tests__/slash-routing-effects.test.ts +0 -228
  128. package/src/tui/__tests__/status-activity.test.ts +0 -71
  129. package/src/tui/__tests__/status-bar.test.tsx +0 -177
  130. package/src/tui/__tests__/streaming-indicator.test.tsx +0 -137
  131. package/src/tui/__tests__/text-prompt-flow.test.ts +0 -77
  132. package/src/tui/__tests__/tui-channel-init-failure.test.ts +0 -57
  133. package/src/tui/__tests__/tui-state-manager.test.ts +0 -401
  134. package/src/tui/background-task-row-format.ts +0 -53
  135. package/src/tui/command-interaction.ts +0 -9
  136. package/src/tui/command-output-summary.ts +0 -122
  137. package/src/tui/create-default-tui-cli-adapter.ts +0 -41
  138. package/src/tui/execution-workspace-view-model.ts +0 -123
  139. package/src/tui/flows/cjk-text-input-flow.ts +0 -285
  140. package/src/tui/flows/confirm-prompt-flow.ts +0 -45
  141. package/src/tui/flows/input-area-flow.ts +0 -189
  142. package/src/tui/flows/permission-prompt-flow.ts +0 -85
  143. package/src/tui/flows/selection-flow.ts +0 -126
  144. package/src/tui/flows/session-init-poller.ts +0 -77
  145. package/src/tui/flows/text-prompt-flow.ts +0 -98
  146. package/src/tui/hooks/command-effect-handler.ts +0 -97
  147. package/src/tui/hooks/command-effect-queue.ts +0 -39
  148. package/src/tui/hooks/side-effects-types.ts +0 -35
  149. package/src/tui/hooks/useAutocomplete.ts +0 -87
  150. package/src/tui/hooks/usePluginCallbacks.ts +0 -31
  151. package/src/tui/hooks/usePluginScreenData.ts +0 -85
  152. package/src/tui/hooks/useSideEffects.ts +0 -175
  153. package/src/tui/hooks/useSlashRouting.ts +0 -118
  154. package/src/tui/hooks/useStatusLineSettings.ts +0 -37
  155. package/src/tui/hooks/useTuiChannel.ts +0 -95
  156. package/src/tui/index.ts +0 -14
  157. package/src/tui/interactions/CommandConfirm.tsx +0 -36
  158. package/src/tui/interactions/CommandPicker.tsx +0 -77
  159. package/src/tui/interactions/__tests__/CommandConfirm.test.tsx +0 -124
  160. package/src/tui/interactions/__tests__/CommandPicker.test.tsx +0 -138
  161. package/src/tui/plugin-tui-handlers.ts +0 -163
  162. package/src/tui/render-markdown.ts +0 -130
  163. package/src/tui/render.tsx +0 -129
  164. package/src/tui/session-naming.ts +0 -33
  165. package/src/tui/status-activity.ts +0 -63
  166. package/src/tui/tui-cli-adapter-context.tsx +0 -13
  167. package/src/tui/tui-cli-adapter.ts +0 -25
  168. package/src/tui/tui-state-manager.ts +0 -226
  169. package/src/tui/tui-transport.ts +0 -35
  170. package/src/tui/types.ts +0 -15
  171. package/src/tui/utils/__tests__/edit-diff.test.ts +0 -426
  172. package/src/tui/utils/__tests__/paste-detection.test.ts +0 -116
  173. package/src/tui/utils/__tests__/paste-labels.test.ts +0 -46
  174. package/src/tui/utils/__tests__/tool-call-extractor.test.ts +0 -227
  175. package/src/tui/utils/__tests__/tool-diff-summary.test.ts +0 -104
  176. package/src/tui/utils/edit-diff.ts +0 -153
  177. package/src/tui/utils/paste-labels.ts +0 -9
  178. package/src/tui/utils/tool-call-extractor.ts +0 -92
  179. package/src/tui/utils/tool-diff-summary.ts +0 -75
  180. package/src/ws/__tests__/ws-handler.test.ts +0 -409
  181. package/src/ws/__tests__/ws-transport.test.ts +0 -53
  182. package/src/ws/index.ts +0 -13
  183. package/src/ws/ws-background-messages.ts +0 -170
  184. package/src/ws/ws-handler.ts +0 -280
  185. package/src/ws/ws-protocol.ts +0 -78
  186. package/src/ws/ws-transport-configurable.ts +0 -128
  187. package/src/ws/ws-transport.ts +0 -42
package/README.md CHANGED
@@ -31,7 +31,7 @@ const transport = createHeadlessTransport({ format: 'text' });
31
31
  ### WebSocket
32
32
 
33
33
  ```typescript
34
- import { WsTransport } from '@robota-sdk/agent-transport/ws';
34
+ import { WsTransport } from '@robota-sdk/agent-transport-ws';
35
35
 
36
36
  const transport = new WsTransport({ port: 3001 });
37
37
  ```
@@ -39,7 +39,7 @@ const transport = new WsTransport({ port: 3001 });
39
39
  ### HTTP
40
40
 
41
41
  ```typescript
42
- import { createHttpTransport } from '@robota-sdk/agent-transport/http';
42
+ import { createHttpTransport } from '@robota-sdk/agent-transport-http';
43
43
 
44
44
  const transport = createHttpTransport({ port: 8080 });
45
45
  ```
@@ -47,7 +47,7 @@ const transport = createHttpTransport({ port: 8080 });
47
47
  ### MCP
48
48
 
49
49
  ```typescript
50
- import { createMcpTransport } from '@robota-sdk/agent-transport/mcp';
50
+ import { createMcpTransport } from '@robota-sdk/agent-transport-mcp';
51
51
 
52
52
  const transport = createMcpTransport({ name: 'my-agent' });
53
53
  ```
@@ -55,8 +55,8 @@ const transport = createMcpTransport({ name: 'my-agent' });
55
55
  ### TUI (Ink/React)
56
56
 
57
57
  ```typescript
58
- import { TuiTransport } from '@robota-sdk/agent-transport/tui';
59
- import type { ITuiCliAdapter } from '@robota-sdk/agent-transport/tui';
58
+ import { TuiTransport } from '@robota-sdk/agent-transport-tui';
59
+ import type { ITuiCliAdapter } from '@robota-sdk/agent-transport-tui';
60
60
 
61
61
  const transport = new TuiTransport(adapter);
62
62
  ```
@@ -70,11 +70,11 @@ Import only what you need to keep bundles small:
70
70
 
71
71
  ```typescript
72
72
  import { createHeadlessTransport } from '@robota-sdk/agent-transport/headless';
73
- import { WsTransport } from '@robota-sdk/agent-transport/ws';
74
- import type { TServerMessage } from '@robota-sdk/agent-transport/ws';
75
- import { createHttpTransport } from '@robota-sdk/agent-transport/http';
76
- import { createMcpTransport } from '@robota-sdk/agent-transport/mcp';
77
- import { TuiTransport } from '@robota-sdk/agent-transport/tui';
73
+ import { WsTransport } from '@robota-sdk/agent-transport-ws';
74
+ import type { TServerMessage } from '@robota-sdk/agent-transport-ws';
75
+ import { createHttpTransport } from '@robota-sdk/agent-transport-http';
76
+ import { createMcpTransport } from '@robota-sdk/agent-transport-mcp';
77
+ import { TuiTransport } from '@robota-sdk/agent-transport-tui';
78
78
  ```
79
79
 
80
80
  Root import re-exports all transports:
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../headless-CT2ibQnr.cjs");exports.HeadlessInteractionChannel=e.t,exports.PrintTerminal=e.a,exports.createHeadlessRunner=e.r,exports.createHeadlessTransport=e.n,exports.promptInput=e.i;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../headless-OnpVk4-k.cjs");exports.HeadlessInteractionChannel=e.t,exports.PrintTerminal=e.a,exports.createHeadlessRunner=e.r,exports.createHeadlessTransport=e.n,exports.promptInput=e.i;
@@ -1,15 +1,15 @@
1
- const e=require("./rolldown-runtime-CMqjfN_6.cjs");let t=require("node:readline");t=e.t(t,1);let n=require("node:crypto"),r=require("node:child_process"),i=require("@robota-sdk/agent-framework");var a=class{write(e){process.stdout.write(e)}writeLine(e){process.stdout.write(e+`
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require("node:readline");c=s(c,1);let l=require("node:crypto"),u=require("node:child_process"),d=require("@robota-sdk/agent-framework");var f=class{write(e){process.stdout.write(e)}writeLine(e){process.stdout.write(e+`
2
2
  `)}writeMarkdown(e){process.stdout.write(e)}writeError(e){process.stderr.write(e+`
3
- `)}prompt(e){return new Promise(n=>{let r=t.createInterface({input:process.stdin,output:process.stdout,terminal:!1,historySize:0});r.question(e,e=>{r.close(),n(e)})})}async select(e,t=0){for(let n=0;n<e.length;n++){let r=n===t?`>`:` `;process.stdout.write(` ${r} ${n+1}) ${e[n]}\n`)}let n=(await this.prompt(` Choose [1-${e.length}] (default: ${e[t]}): `)).trim().toLowerCase();if(n===``)return t;let r=parseInt(n,10);return!isNaN(r)&&r>=1&&r<=e.length?r-1:t}spinner(e){return{stop(){},update(){}}}};const o=(e,t=!1)=>new Promise((n,r)=>{process.stdout.write(e);let i=``,a=process.stdin,o=a.isRaw;if(!a.isTTY){r(Error(`Cannot prompt for input: stdin is not a TTY.
3
+ `)}prompt(e){return new Promise(t=>{let n=c.createInterface({input:process.stdin,output:process.stdout,terminal:!1,historySize:0});n.question(e,e=>{n.close(),t(e)})})}async select(e,t=0){for(let n=0;n<e.length;n++){let r=n===t?`>`:` `;process.stdout.write(` ${r} ${n+1}) ${e[n]}\n`)}let n=(await this.prompt(` Choose [1-${e.length}] (default: ${e[t]}): `)).trim().toLowerCase();if(n===``)return t;let r=parseInt(n,10);return!isNaN(r)&&r>=1&&r<=e.length?r-1:t}spinner(e){return{stop(){},update(){}}}};const p=(e,t=!1)=>new Promise((n,r)=>{process.stdout.write(e);let i=``,a=process.stdin,o=a.isRaw;if(!a.isTTY){r(Error(`Cannot prompt for input: stdin is not a TTY.
4
4
  Set your API key via environment variable instead:
5
5
  ANTHROPIC_API_KEY=<key> robota
6
6
  OPENAI_API_KEY=<key> robota`));return}a.setRawMode(!0),a.resume(),a.setEncoding(`utf8`);let s=e=>{for(let r of e)if(r===`\r`||r===`
7
7
  `){a.removeListener(`data`,s),a.setRawMode(o??!1),a.pause(),process.stdout.write(`
8
8
  `),n(i.trim());return}else r===``||r===`\b`?i.length>0&&(i=i.slice(0,-1),process.stdout.write(`\b \b`)):r===``?(a.removeListener(`data`,s),a.setRawMode(o??!1),a.pause(),process.stdout.write(`
9
- `),process.exit(0)):r.charCodeAt(0)>=32&&(i+=r,process.stdout.write(t?`*`:r))};a.on(`data`,s)});function s(e){let t=e.trimStart();if(!t.startsWith(`/`))return null;let[n=``,...r]=t.slice(1).split(/\s+/);return n.length===0?null:{name:n,args:r.join(` `)}}async function c(e,t){let n=s(t);if(!n)return{kind:`not-slash`};let r=await e.executeCommand(n.name,n.args);return r?r.effects?.some(e=>e.type===`session-execution-started`)?{kind:`session-execution`}:{kind:`command-result`,result:r}:{kind:`command-result`,result:{message:`Unknown command "/${n.name}".`,success:!1}}}function l(e,t,r){let i=JSON.stringify({type:`stream_event`,event:r,session_id:t(e),uuid:(0,n.randomUUID)()});process.stdout.write(i+`
10
- `)}function u(e,t,n,r){let i=n=>l(e,t,n),a=e=>i({type:`content_block_delta`,delta:{type:`text_delta`,text:e}}),o=e=>i({type:`background_task_event`,background_task_event:e}),s=e=>i({type:`background_job_group_event`,background_job_group_event:e}),c=()=>d(e,{onTextDelta:a,onBackgroundTaskEvent:o,onBackgroundJobGroupEvent:s,onComplete:u,onInterrupted:f,onError:p}),u=i=>{c(),n(t(e),i.response,`success`),r(0)},f=i=>{c(),n(t(e),i.response,`success`),r(0)},p=i=>{c(),n(t(e),``,`error`,i),r(1)};return e.on(`text_delta`,a),e.on(`background_task_event`,o),e.on(`background_job_group_event`,s),e.on(`complete`,u),e.on(`interrupted`,f),e.on(`error`,p),c}function d(e,t){e.off(`text_delta`,t.onTextDelta),e.off(`background_task_event`,t.onBackgroundTaskEvent),e.off(`background_job_group_event`,t.onBackgroundJobGroupEvent),e.off(`complete`,t.onComplete),e.off(`interrupted`,t.onInterrupted),e.off(`error`,t.onError)}function f(e){let{session:t,outputFormat:n}=e;return{run:e=>n===`text`?g(t,e):n===`json`?_(t,e):v(t,e)}}function p(e){let t=e.message.toLowerCase();return t.includes(`api key`)||t.includes(`no provider`)||t.includes(`provider`)?`config_error`:t.includes(`tool`)||t.includes(`execution`)?`tool_error`:`api_error`}function m(e,t,n,r){let i={type:`result`,result:t,session_id:e,subtype:n};n===`error`&&r!==void 0&&(i.error_code=p(r));let a=JSON.stringify(i);process.stdout.write(a+`
11
- `)}function h(e){try{return e.getSession().getSessionId()}catch{return``}}function g(e,t){return new Promise(n=>{let r=()=>{e.off(`complete`,i),e.off(`interrupted`,a),e.off(`error`,o)},i=e=>{r(),process.stdout.write(e.response+`
9
+ `),process.exit(0)):r.charCodeAt(0)>=32&&(i+=r,process.stdout.write(t?`*`:r))};a.on(`data`,s)});function m(e){let t=e.trimStart();if(!t.startsWith(`/`))return null;let[n=``,...r]=t.slice(1).split(/\s+/);return n.length===0?null:{name:n,args:r.join(` `)}}async function h(e,t){let n=m(t);if(!n)return{kind:`not-slash`};let r=await e.executeCommand(n.name,n.args);return r?r.effects?.some(e=>e.type===`session-execution-started`)?{kind:`session-execution`}:{kind:`command-result`,result:r}:{kind:`command-result`,result:{message:`Unknown command "/${n.name}".`,success:!1}}}function g(e,t,n){let r=JSON.stringify({type:`stream_event`,event:n,session_id:t(e),uuid:(0,l.randomUUID)()});process.stdout.write(r+`
10
+ `)}function _(e,t,n,r){let i=n=>g(e,t,n),a=e=>i({type:`content_block_delta`,delta:{type:`text_delta`,text:e}}),o=e=>i({type:`background_task_event`,background_task_event:e}),s=e=>i({type:`background_job_group_event`,background_job_group_event:e}),c=()=>v(e,{onTextDelta:a,onBackgroundTaskEvent:o,onBackgroundJobGroupEvent:s,onComplete:l,onInterrupted:u,onError:d}),l=i=>{c(),n(t(e),i.response,`success`),r(0)},u=i=>{c(),n(t(e),i.response,`success`),r(0)},d=i=>{c(),n(t(e),``,`error`,i),r(1)};return e.on(`text_delta`,a),e.on(`background_task_event`,o),e.on(`background_job_group_event`,s),e.on(`complete`,l),e.on(`interrupted`,u),e.on(`error`,d),c}function v(e,t){e.off(`text_delta`,t.onTextDelta),e.off(`background_task_event`,t.onBackgroundTaskEvent),e.off(`background_job_group_event`,t.onBackgroundJobGroupEvent),e.off(`complete`,t.onComplete),e.off(`interrupted`,t.onInterrupted),e.off(`error`,t.onError)}function y(e){let{session:t,outputFormat:n}=e;return{run:e=>n===`text`?C(t,e):n===`json`?w(t,e):T(t,e)}}function b(e){let t=e.message.toLowerCase();return t.includes(`api key`)||t.includes(`no provider`)||t.includes(`provider`)?`config_error`:t.includes(`tool`)||t.includes(`execution`)?`tool_error`:`api_error`}function x(e,t,n,r){let i={type:`result`,result:t,session_id:e,subtype:n};n===`error`&&r!==void 0&&(i.error_code=b(r));let a=JSON.stringify(i);process.stdout.write(a+`
11
+ `)}function S(e){try{return e.getSession().getSessionId()}catch{return``}}function C(e,t){return new Promise(n=>{let r=()=>{e.off(`complete`,i),e.off(`interrupted`,a),e.off(`error`,o)},i=e=>{r(),process.stdout.write(e.response+`
12
12
  `),n(0)},a=e=>{r(),e.response&&process.stdout.write(e.response+`
13
13
  `),n(0)},o=e=>{r(),process.stderr.write(e.message+`
14
- `),n(1)};e.on(`complete`,i),e.on(`interrupted`,a),e.on(`error`,o),c(e,t).then(i=>{if(i.kind===`command-result`){r(),process.stdout.write(i.result.message+`
15
- `),n(+!i.result.success);return}i.kind!==`session-execution`&&e.submit(t)})})}function _(e,t){return new Promise(n=>{let r=()=>{e.off(`complete`,i),e.off(`interrupted`,a),e.off(`error`,o)},i=t=>{r(),m(h(e),t.response,`success`),n(0)},a=t=>{r(),m(h(e),t.response,`success`),n(0)},o=t=>{r(),m(h(e),``,`error`,t),n(1)};e.on(`complete`,i),e.on(`interrupted`,a),e.on(`error`,o),c(e,t).then(i=>{if(i.kind===`command-result`){r(),m(h(e),i.result.message,i.result.success?`success`:`error`),n(+!i.result.success);return}i.kind!==`session-execution`&&e.submit(t)})})}function v(e,t){return new Promise(n=>{let r=u(e,h,m,n);c(e,t).then(i=>{if(i.kind===`command-result`){r(),m(h(e),i.result.message,i.result.success?`success`:`error`),n(+!i.result.success);return}i.kind!==`session-execution`&&e.submit(t)})})}function y(e){let t=null,n=0;return{name:`headless`,attach(e){t=e},async start(){if(!t)throw Error(`No session attached. Call attach() first.`);n=await f({session:t,outputFormat:e.outputFormat}).run(e.prompt)},async stop(){},getExitCode(){return n}}}var b=class{opts;exitCode=0;constructor(e){this.opts=e}async run(e){let t=this.opts.shellExec??(e=>(0,r.execSync)(e,{timeout:5e3,encoding:`utf-8`,stdio:`pipe`}).trimEnd()),n=new i.InteractiveSession({cwd:this.opts.cwd,provider:this.opts.provider,permissionMode:this.opts.permissionMode??`bypassPermissions`,maxTurns:this.opts.maxTurns,sessionStore:this.opts.sessionStore,resumeSessionId:this.opts.resumeSessionId,forkSession:this.opts.forkSession,sessionName:this.opts.sessionName,bare:this.opts.bare||void 0,allowedTools:this.opts.allowedTools,deniedTools:this.opts.deniedTools,appendSystemPrompt:this.opts.appendSystemPrompt,...this.opts.persona===void 0?{}:{persona:this.opts.persona},...this.opts.systemPrompt?{systemPrompt:this.opts.systemPrompt}:{},backgroundTaskRunners:this.opts.backgroundTaskRunners,subagentRunnerFactory:this.opts.subagentRunnerFactory,commandModules:this.opts.commandModules,commandHostAdapters:this.opts.commandHostAdapters,shellExec:t,agentName:this.opts.agentName,...this.opts.activePresetId===void 0?{}:{activePresetId:this.opts.activePresetId},...this.opts.enableParallelSubagents===void 0?{}:{enableParallelSubagents:this.opts.enableParallelSubagents},...this.opts.selfVerification===void 0?{}:{selfVerification:this.opts.selfVerification}}),a=f({session:n,outputFormat:this.opts.outputFormat});this.exitCode=await a.run(e),await n.shutdown({reason:`prompt_input_exit`,message:`Headless transport complete`})}getExitCode(){return this.exitCode}};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return b}});
14
+ `),n(1)};e.on(`complete`,i),e.on(`interrupted`,a),e.on(`error`,o),h(e,t).then(i=>{if(i.kind===`command-result`){r(),process.stdout.write(i.result.message+`
15
+ `),n(+!i.result.success);return}i.kind!==`session-execution`&&e.submit(t)})})}function w(e,t){return new Promise(n=>{let r=()=>{e.off(`complete`,i),e.off(`interrupted`,a),e.off(`error`,o)},i=t=>{r(),x(S(e),t.response,`success`),n(0)},a=t=>{r(),x(S(e),t.response,`success`),n(0)},o=t=>{r(),x(S(e),``,`error`,t),n(1)};e.on(`complete`,i),e.on(`interrupted`,a),e.on(`error`,o),h(e,t).then(i=>{if(i.kind===`command-result`){r(),x(S(e),i.result.message,i.result.success?`success`:`error`),n(+!i.result.success);return}i.kind!==`session-execution`&&e.submit(t)})})}function T(e,t){return new Promise(n=>{let r=_(e,S,x,n);h(e,t).then(i=>{if(i.kind===`command-result`){r(),x(S(e),i.result.message,i.result.success?`success`:`error`),n(+!i.result.success);return}i.kind!==`session-execution`&&e.submit(t)})})}function E(e){let t=null,n=0;return{name:`headless`,attach(e){t=e},async start(){if(!t)throw Error(`No session attached. Call attach() first.`);n=await y({session:t,outputFormat:e.outputFormat}).run(e.prompt)},async stop(){},getExitCode(){return n}}}var D=class{opts;exitCode=0;constructor(e){this.opts=e}async run(e){let t=this.opts.shellExec??(e=>(0,u.execSync)(e,{timeout:5e3,encoding:`utf-8`,stdio:`pipe`}).trimEnd()),n=new d.InteractiveSession({cwd:this.opts.cwd,provider:this.opts.provider,permissionMode:this.opts.permissionMode??`bypassPermissions`,maxTurns:this.opts.maxTurns,sessionStore:this.opts.sessionStore,resumeSessionId:this.opts.resumeSessionId,forkSession:this.opts.forkSession,sessionName:this.opts.sessionName,bare:this.opts.bare||void 0,allowedTools:this.opts.allowedTools,deniedTools:this.opts.deniedTools,appendSystemPrompt:this.opts.appendSystemPrompt,...this.opts.persona===void 0?{}:{persona:this.opts.persona},...this.opts.systemPrompt?{systemPrompt:this.opts.systemPrompt}:{},backgroundTaskRunners:this.opts.backgroundTaskRunners,subagentRunnerFactory:this.opts.subagentRunnerFactory,commandModules:this.opts.commandModules,commandHostAdapters:this.opts.commandHostAdapters,shellExec:t,agentName:this.opts.agentName,...this.opts.activePresetId===void 0?{}:{activePresetId:this.opts.activePresetId},...this.opts.enableParallelSubagents===void 0?{}:{enableParallelSubagents:this.opts.enableParallelSubagents},...this.opts.selfVerification===void 0?{}:{selfVerification:this.opts.selfVerification}}),r=y({session:n,outputFormat:this.opts.outputFormat});this.exitCode=await r.run(e),await n.shutdown({reason:`prompt_input_exit`,message:`Headless transport complete`})}getExitCode(){return this.exitCode}};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return D}});
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./headless-CT2ibQnr.cjs"),t=require("./http-CBAvefLw.cjs"),n=require("./ws-QNMQn5kg.cjs"),r=require("./mcp-BOglBJNy.cjs"),i=require("./tui-DznRbcku.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.HeadlessInteractionChannel=e.t,exports.PrintTerminal=e.a,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.r,exports.createHeadlessTransport=e.n,exports.createHttpTransport=t.t,exports.createMcpTransport=r.t,exports.createWsHandler=n.r,exports.createWsTransport=n.n,exports.promptInput=e.i,exports.renderApp=i.r;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./headless-OnpVk4-k.cjs");let t=require("@robota-sdk/agent-framework");var n=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,n){let r=(0,t.readSettings)(this.settingsPath),i=r.transports??{};i[e]={...i[e]??{},enabled:n},r.transports=i,(0,t.writeSettings)(this.settingsPath,r)}async setOptions(e,n){let r=(0,t.readSettings)(this.settingsPath),i=r.transports??{};i[e]={...i[e]??{},options:n},r.transports=i,(0,t.writeSettings)(this.settingsPath,r)}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,t.readSettings)(this.settingsPath).transports;return!e||typeof e!=`object`||Array.isArray(e)?{}:e}};exports.HeadlessInteractionChannel=e.t,exports.PrintTerminal=e.a,exports.TransportRegistry=n,exports.createHeadlessRunner=e.r,exports.createHeadlessTransport=e.n,exports.promptInput=e.i;
@@ -1,8 +1,4 @@
1
1
  import { a as IHeadlessRunnerOptions, c as promptInput, i as createHeadlessTransport, l as PrintTerminal, n as IHeadlessInteractionChannelOptions, o as TOutputFormat, r as IHeadlessTransportOptions, s as createHeadlessRunner, t as HeadlessInteractionChannel } from "./index-E8Gx4-lc.js";
2
- import { a as createAgentRoutes, i as TSessionFactory, n as createHttpTransport, r as IAgentRoutesOptions, t as IHttpTransportOptions } from "./index-BnAGE-u9.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-CoeBF21y.js";
4
- import { i as createAgentMcpServer, n as createMcpTransport, r as IAgentMcpOptions, t as IMcpTransportOptions } from "./index-c0M42fsA.js";
5
- import { a as TAnyTuiCommandInteraction, c as createDefaultTuiCliAdapter, d as renderApp, f 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 IRenderOptions } from "./index-BUhHIf7X.js";
6
2
  import { TUniversalValue } from "@robota-sdk/agent-core";
7
3
  import { IConfigurableTransport, IInteractiveSession, ITransportEntry } from "@robota-sdk/agent-interface-transport";
8
4
 
@@ -21,7 +17,6 @@ declare class TransportRegistry {
21
17
  private resolveConfig;
22
18
  private readTransportSettings;
23
19
  }
24
- declare function createDefaultTransportRegistry(): TransportRegistry;
25
20
  //#endregion
26
- export { HeadlessInteractionChannel, type IAgentMcpOptions, type IAgentRoutesOptions, type IDefaultTuiCliAdapterOptions, type IExecutionWorkspaceEntry, type IExecutionWorkspaceSnapshot, type IHeadlessInteractionChannelOptions, 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, 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, renderApp };
21
+ export { HeadlessInteractionChannel, type IHeadlessInteractionChannelOptions, type IHeadlessRunnerOptions, type IHeadlessTransportOptions, PrintTerminal, type TOutputFormat, TransportRegistry, createHeadlessRunner, createHeadlessTransport, promptInput };
27
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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,IAAU,eAAA,CAAgB,mBAAA;EAQ1B,UAAA,IAAc,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,IAAW,OAAA;EAAA,QAMT,aAAA;EAAA,QASA,qBAAA;AAAA;AAAA,iBAQM,8BAAA,IAAkC,iBAAiB"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/transport-registry.ts"],"mappings":";;;;;cAiBa,iBAAA;EAAA,iBACM,OAAA;EAAA,iBACA,YAAA;cAEL,YAAA;EAIZ,QAAA,CAAS,SAAA,EAAW,sBAAA,CAAuB,mBAAA;EAI3C,MAAA,IAAU,eAAA,CAAgB,mBAAA;EAQ1B,UAAA,IAAc,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,IAAW,OAAA;EAAA,QAMT,aAAA;EAAA,QASA,qBAAA;AAAA"}
@@ -1,2 +1,2 @@
1
- import{a as e,i as t,n,r,t as i}from"./headless-mRYilLfC.js";import{n as a,t as o}from"./http-2Jiuflc1.js";import{n as s,r as c,t as l}from"./ws-Dc2RUwVs.js";import{n as u,t as d}from"./mcp-D3BBVK7C.js";import{n as f,r as p,t as m}from"./tui-CcH5EsQh.js";import{getUserSettingsPath as h,readSettings as g,writeSettings as _}from"@robota-sdk/agent-framework";var v=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=g(this.settingsPath),r=n.transports??{};r[e]={...r[e]??{},enabled:t},n.transports=r,_(this.settingsPath,n)}async setOptions(e,t){let n=g(this.settingsPath),r=n.transports??{};r[e]={...r[e]??{},options:t},n.transports=r,_(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=g(this.settingsPath).transports;return!e||typeof e!=`object`||Array.isArray(e)?{}:e}};function y(){let e=new v(h());return e.register(new l),e}export{i as HeadlessInteractionChannel,e as PrintTerminal,v as TransportRegistry,f as TuiTransport,l as WsTransport,u as createAgentMcpServer,a as createAgentRoutes,y as createDefaultTransportRegistry,m as createDefaultTuiCliAdapter,r as createHeadlessRunner,n as createHeadlessTransport,o as createHttpTransport,d as createMcpTransport,c as createWsHandler,s as createWsTransport,t as promptInput,p as renderApp};
1
+ import{a as e,i as t,n,r,t as i}from"./headless-mRYilLfC.js";import{readSettings as a,writeSettings as o}from"@robota-sdk/agent-framework";var s=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=a(this.settingsPath),r=n.transports??{};r[e]={...r[e]??{},enabled:t},n.transports=r,o(this.settingsPath,n)}async setOptions(e,t){let n=a(this.settingsPath),r=n.transports??{};r[e]={...r[e]??{},options:t},n.transports=r,o(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=a(this.settingsPath).transports;return!e||typeof e!=`object`||Array.isArray(e)?{}:e}};export{i as HeadlessInteractionChannel,e as PrintTerminal,s as TransportRegistry,r as createHeadlessRunner,n as createHeadlessTransport,t as promptInput};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +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 {\n IConfigurableTransport,\n IInteractiveSession,\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":"sWAoBA,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,CAAC,CAAC,IAAK,IAAe,CAC3D,YACA,OAAQ,KAAK,cAAc,EAAW,EAAM,EAAU,KAAK,CAC7D,EAAE,CACJ,CAEA,YAA4D,CAC1D,OAAO,KAAK,OAAO,CAAC,CACjB,OAAQ,GAAM,EAAE,OAAO,OAAO,CAAC,CAC/B,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,CAAC,CAAC,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
+ {"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 { readSettings, writeSettings, type TSettingsData } from '@robota-sdk/agent-framework';\n\nimport type { TUniversalValue } from '@robota-sdk/agent-core';\nimport type {\n IConfigurableTransport,\n IInteractiveSession,\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"],"mappings":"2IAiBA,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,CAAC,CAAC,IAAK,IAAe,CAC3D,YACA,OAAQ,KAAK,cAAc,EAAW,EAAM,EAAU,KAAK,CAC7D,EAAE,CACJ,CAEA,YAA4D,CAC1D,OAAO,KAAK,OAAO,CAAC,CACjB,OAAQ,GAAM,EAAE,OAAO,OAAO,CAAC,CAC/B,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,CAAC,CAAC,WAErB,MADI,CAAC,GAAO,OAAO,GAAQ,UAAY,MAAM,QAAQ,CAAG,EAAU,CAAC,EAC5D,CACT,CACF"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@robota-sdk/agent-transport",
3
- "version": "3.0.0-beta.75",
4
- "description": "Consolidated transport package for Robota SDK — headless, HTTP, WebSocket, and MCP adapters",
3
+ "version": "3.0.0-beta.76",
4
+ "description": "Core transport package for Robota SDK — headless adapter, scripted-provider testing fixtures, and the transport registry",
5
5
  "type": "module",
6
6
  "main": "dist/node/index.js",
7
7
  "types": "dist/node/index.d.ts",
@@ -41,54 +41,6 @@
41
41
  "import": "./dist/node/testing/index.js",
42
42
  "require": "./dist/node/testing/index.cjs"
43
43
  }
44
- },
45
- "./http": {
46
- "types": "./dist/node/http/index.d.ts",
47
- "source": "./src/http/index.ts",
48
- "node": {
49
- "import": "./dist/node/http/index.js",
50
- "require": "./dist/node/http/index.cjs"
51
- },
52
- "default": {
53
- "import": "./dist/node/http/index.js",
54
- "require": "./dist/node/http/index.cjs"
55
- }
56
- },
57
- "./ws": {
58
- "types": "./dist/node/ws/index.d.ts",
59
- "source": "./src/ws/index.ts",
60
- "node": {
61
- "import": "./dist/node/ws/index.js",
62
- "require": "./dist/node/ws/index.cjs"
63
- },
64
- "default": {
65
- "import": "./dist/node/ws/index.js",
66
- "require": "./dist/node/ws/index.cjs"
67
- }
68
- },
69
- "./mcp": {
70
- "types": "./dist/node/mcp/index.d.ts",
71
- "source": "./src/mcp/index.ts",
72
- "node": {
73
- "import": "./dist/node/mcp/index.js",
74
- "require": "./dist/node/mcp/index.cjs"
75
- },
76
- "default": {
77
- "import": "./dist/node/mcp/index.js",
78
- "require": "./dist/node/mcp/index.cjs"
79
- }
80
- },
81
- "./tui": {
82
- "types": "./dist/node/tui/index.d.ts",
83
- "source": "./src/tui/index.ts",
84
- "node": {
85
- "import": "./dist/node/tui/index.js",
86
- "require": "./dist/node/tui/index.cjs"
87
- },
88
- "default": {
89
- "import": "./dist/node/tui/index.js",
90
- "require": "./dist/node/tui/index.cjs"
91
- }
92
44
  }
93
45
  },
94
46
  "repository": {
@@ -107,36 +59,17 @@
107
59
  "src"
108
60
  ],
109
61
  "dependencies": {
110
- "@modelcontextprotocol/sdk": "^1.29.0",
111
- "chalk": "^5.6.2",
112
- "hono": "^4.12.25",
113
- "ink": "^7.0.5",
114
- "ink-select-input": "^6.2.0",
115
- "ink-spinner": "^5.0.0",
116
- "ink-text-input": "^6.0.0",
117
- "marked": "^9.1.6",
118
- "marked-terminal": "^7.3.0",
119
- "react": "19.2.4",
120
- "string-width": "^8.2.1",
121
- "ws": "^8.21.0",
122
- "zod": "^3.25.76",
123
- "@robota-sdk/agent-core": "3.0.0-beta.75",
124
- "@robota-sdk/agent-framework": "3.0.0-beta.75",
125
- "@robota-sdk/agent-interface-transport": "3.0.0-beta.75",
126
- "@robota-sdk/agent-interface-tui": "3.0.0-beta.75"
62
+ "@robota-sdk/agent-framework": "3.0.0-beta.76",
63
+ "@robota-sdk/agent-core": "3.0.0-beta.76",
64
+ "@robota-sdk/agent-interface-transport": "3.0.0-beta.76"
127
65
  },
128
66
  "devDependencies": {
129
- "@homebridge/node-pty-prebuilt-multiarch": "^0.13.1",
130
- "@modelcontextprotocol/sdk": "^1.28.0",
131
- "@types/react": "^19.2.17",
132
- "@types/ws": "^8.18.1",
133
- "ink-testing-library": "^4.0.0",
134
67
  "rimraf": "^5.0.10",
135
68
  "tsdown": "^0.22.2",
136
69
  "tsx": "^4.22.4",
137
70
  "typescript": "^5.9.3",
138
71
  "vitest": "^3.2.6",
139
- "@robota-sdk/agent-command": "3.0.0-beta.75"
72
+ "@robota-sdk/agent-command": "3.0.0-beta.76"
140
73
  },
141
74
  "license": "MIT",
142
75
  "publishConfig": {
@@ -149,7 +82,6 @@
149
82
  "typecheck": "tsc --noEmit",
150
83
  "test": "vitest run --passWithNoTests",
151
84
  "test:coverage": "vitest run --coverage --passWithNoTests",
152
- "clean": "rimraf dist",
153
- "test:pty": "vitest run --config vitest.pty.config.ts"
85
+ "clean": "rimraf dist"
154
86
  }
155
87
  }
package/src/index.ts CHANGED
@@ -1,6 +1,2 @@
1
1
  export * from './headless/index.js';
2
- export * from './http/index.js';
3
- export * from './ws/index.js';
4
- export * from './mcp/index.js';
5
- export * from './tui/index.js';
6
- export { TransportRegistry, createDefaultTransportRegistry } from './transport-registry.js';
2
+ export { TransportRegistry } from './transport-registry.js';
@@ -5,11 +5,8 @@
5
5
  * { "ws": { "enabled": true, "options": { "port": 7070 } } }
6
6
  */
7
7
 
8
- import { getUserSettingsPath } from '@robota-sdk/agent-framework';
9
8
  import { readSettings, writeSettings, type TSettingsData } from '@robota-sdk/agent-framework';
10
9
 
11
- import { WsTransport } from './ws/index.js';
12
-
13
10
  import type { TUniversalValue } from '@robota-sdk/agent-core';
14
11
  import type {
15
12
  IConfigurableTransport,
@@ -92,9 +89,3 @@ export class TransportRegistry {
92
89
  return raw as Record<string, TSettingsData>;
93
90
  }
94
91
  }
95
-
96
- export function createDefaultTransportRegistry(): TransportRegistry {
97
- const registry = new TransportRegistry(getUserSettingsPath());
98
- registry.register(new WsTransport());
99
- return registry;
100
- }
@@ -1 +0,0 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../http-CBAvefLw.cjs");exports.createAgentRoutes=e.n,exports.createHttpTransport=e.t;
@@ -1,2 +0,0 @@
1
- import { a as createAgentRoutes, i as TSessionFactory, n as createHttpTransport, r as IAgentRoutesOptions, t as IHttpTransportOptions } from "../index-BnAGE-u9.js";
2
- export { type IAgentRoutesOptions, type IHttpTransportOptions, type TSessionFactory, createAgentRoutes, createHttpTransport };
@@ -1 +0,0 @@
1
- import{n as e,t}from"../http-2Jiuflc1.js";export{e as createAgentRoutes,t as createHttpTransport};
@@ -1,2 +0,0 @@
1
- import{Hono as e}from"hono";import{streamSSE as t}from"hono/streaming";function n(n){let{sessionFactory:r}=n,i=new e;return i.post(`/submit`,async e=>{let n=await r(e),i=await e.req.json();return!i.prompt||typeof i.prompt!=`string`?e.json({error:`prompt is required`},400):t(e,async e=>{let t=[],r=(e,r)=>{n.on(e,r),t.push(()=>n.off(e,r))},a=!1,o=new Promise(t=>{r(`text_delta`,t=>{e.writeSSE({event:`text_delta`,data:JSON.stringify({delta:t})})}),r(`tool_start`,t=>{e.writeSSE({event:`tool_start`,data:JSON.stringify(t)})}),r(`tool_end`,t=>{e.writeSSE({event:`tool_end`,data:JSON.stringify(t)})}),r(`thinking`,n=>{e.writeSSE({event:`thinking`,data:JSON.stringify({isThinking:n})}),!n&&a&&t()}),r(`complete`,t=>{a=!0,e.writeSSE({event:`complete`,data:JSON.stringify(t)})}),r(`interrupted`,t=>{a=!0,e.writeSSE({event:`interrupted`,data:JSON.stringify(t)})}),r(`error`,t=>{a=!0,e.writeSSE({event:`error`,data:JSON.stringify({message:t.message})})})});await n.submit(i.prompt),await o;for(let e of t)e()})}),i.post(`/command`,async e=>{let t=await r(e),n=await e.req.json();if(!n.name||typeof n.name!=`string`)return e.json({error:`name is required`},400);let i=await t.executeCommand(n.name,n.args??``);return i?e.json(i):e.json({error:`Unknown command: ${n.name}`},404)}),i.post(`/abort`,async e=>((await r(e)).abort(),e.json({ok:!0}))),i.post(`/cancel-queue`,async e=>((await r(e)).cancelQueue(),e.json({ok:!0}))),i.get(`/messages`,async e=>{let t=await r(e);return e.json(t.getMessages())}),i.get(`/context`,async e=>{let t=await r(e);return e.json(t.getContextState())}),i.get(`/executing`,async e=>{let t=await r(e);return e.json({executing:t.isExecuting()})}),i.get(`/pending`,async e=>{let t=await r(e);return e.json({pending:t.getPendingPrompt()})}),i}function r(e){let t=null,r=null;return{name:`http`,attach(e){t=e},async start(){if(!t)throw Error(`No session attached. Call attach() first.`);r=n({sessionFactory:()=>t})},async stop(){r=null},getApp(){if(!r)throw Error(`Transport not started. Call start() first.`);return r}}}export{n,r as t};
2
- //# sourceMappingURL=http-2Jiuflc1.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http-2Jiuflc1.js","names":[],"sources":["../../src/http/routes.ts","../../src/http/http-transport.ts"],"sourcesContent":["/**\n * HTTP transport adapter — exposes IInteractiveSession over REST API.\n *\n * Built on Hono for Cloudflare Workers + Node.js + AWS Lambda compatibility.\n * Each endpoint maps 1:1 to an IInteractiveSession API method.\n */\n\nimport { Hono } from 'hono';\nimport { streamSSE } from 'hono/streaming';\n\nimport type { IInteractiveSession } from '@robota-sdk/agent-interface-transport';\nimport type { Context } from 'hono';\n\n/** Callback that resolves an IInteractiveSession from the request context. */\nexport type TSessionFactory = (c: Context) => IInteractiveSession | Promise<IInteractiveSession>;\n\nexport interface IAgentRoutesOptions {\n /** Resolve an IInteractiveSession per request (e.g., by auth token, session ID). */\n sessionFactory: TSessionFactory;\n}\n\n/**\n * Create a Hono router with all agent HTTP endpoints.\n *\n * Usage:\n * ```typescript\n * const routes = createAgentRoutes({ sessionFactory });\n * app.route('/agent', routes); // mount on existing app\n * export default routes; // or use standalone (CF Workers)\n * ```\n */\nexport function createAgentRoutes(options: IAgentRoutesOptions): Hono {\n const { sessionFactory } = options;\n const app = new Hono();\n\n // POST /submit — execute prompt, stream events via SSE\n app.post('/submit', async (c) => {\n const session = await sessionFactory(c);\n const body = await c.req.json<{ prompt: string }>();\n\n if (!body.prompt || typeof body.prompt !== 'string') {\n return c.json({ error: 'prompt is required' }, 400);\n }\n\n return streamSSE(c, async (stream) => {\n const cleanup: Array<() => void> = [];\n\n const subscribe = <T>(event: string, handler: (data: T) => void): void => {\n session.on(event as 'text_delta', handler as () => void);\n cleanup.push(() => session.off(event as 'text_delta', handler as () => void));\n };\n\n let completed = false;\n const done = new Promise<void>((resolve) => {\n subscribe('text_delta', (delta: string) => {\n stream.writeSSE({ event: 'text_delta', data: JSON.stringify({ delta }) });\n });\n\n subscribe('tool_start', (state) => {\n stream.writeSSE({ event: 'tool_start', data: JSON.stringify(state) });\n });\n\n subscribe('tool_end', (state) => {\n stream.writeSSE({ event: 'tool_end', data: JSON.stringify(state) });\n });\n\n subscribe('thinking', (isThinking: boolean) => {\n stream.writeSSE({ event: 'thinking', data: JSON.stringify({ isThinking }) });\n if (!isThinking && completed) {\n resolve();\n }\n });\n\n subscribe('complete', (result) => {\n completed = true;\n stream.writeSSE({ event: 'complete', data: JSON.stringify(result) });\n });\n\n subscribe('interrupted', (result) => {\n completed = true;\n stream.writeSSE({ event: 'interrupted', data: JSON.stringify(result) });\n });\n\n subscribe('error', (error: Error) => {\n completed = true;\n stream.writeSSE({ event: 'error', data: JSON.stringify({ message: error.message }) });\n });\n });\n\n await session.submit(body.prompt);\n await done;\n\n for (const fn of cleanup) fn();\n });\n });\n\n // POST /command — execute system command\n app.post('/command', async (c) => {\n const session = await sessionFactory(c);\n const body = await c.req.json<{ name: string; args?: string }>();\n\n if (!body.name || typeof body.name !== 'string') {\n return c.json({ error: 'name is required' }, 400);\n }\n\n const result = await session.executeCommand(body.name, body.args ?? '');\n if (!result) {\n return c.json({ error: `Unknown command: ${body.name}` }, 404);\n }\n return c.json(result);\n });\n\n // POST /abort — abort current execution\n app.post('/abort', async (c) => {\n const session = await sessionFactory(c);\n session.abort();\n return c.json({ ok: true });\n });\n\n // POST /cancel-queue — cancel queued prompt\n app.post('/cancel-queue', async (c) => {\n const session = await sessionFactory(c);\n session.cancelQueue();\n return c.json({ ok: true });\n });\n\n // GET /messages — get message history\n app.get('/messages', async (c) => {\n const session = await sessionFactory(c);\n return c.json(session.getMessages());\n });\n\n // GET /context — get context window state\n app.get('/context', async (c) => {\n const session = await sessionFactory(c);\n return c.json(session.getContextState());\n });\n\n // GET /executing — check if currently executing\n app.get('/executing', async (c) => {\n const session = await sessionFactory(c);\n return c.json({ executing: session.isExecuting() });\n });\n\n // GET /pending — get pending queued prompt\n app.get('/pending', async (c) => {\n const session = await sessionFactory(c);\n return c.json({ pending: session.getPendingPrompt() });\n });\n\n return app;\n}\n","/**\n * ITransportAdapter implementation for HTTP transport.\n *\n * Wraps createAgentRoutes into the unified ITransportAdapter interface\n * while exposing the underlying Hono app via getApp().\n */\n\nimport { createAgentRoutes } from './routes.js';\n\nimport type { IInteractiveSession, ITransportAdapter } from '@robota-sdk/agent-interface-transport';\nimport type { Hono } from 'hono';\n\nexport interface IHttpTransportOptions {\n /** Optional: base path prefix for routes. */\n basePath?: string;\n}\n\nexport function createHttpTransport(\n options?: IHttpTransportOptions,\n): ITransportAdapter<IInteractiveSession> & { getApp(): Hono } {\n let session: IInteractiveSession | null = null;\n let app: Hono | null = null;\n\n return {\n name: 'http',\n attach(s: IInteractiveSession) {\n session = s;\n },\n async start() {\n if (!session) throw new Error('No session attached. Call attach() first.');\n app = createAgentRoutes({ sessionFactory: () => session! });\n },\n async stop() {\n app = null;\n },\n getApp() {\n if (!app) throw new Error('Transport not started. Call start() first.');\n return app;\n },\n };\n}\n"],"mappings":"uEA+BA,SAAgB,EAAkB,EAAoC,CACpE,GAAM,CAAE,kBAAmB,EACrB,EAAM,IAAI,EAqHhB,OAlHA,EAAI,KAAK,UAAW,KAAO,IAAM,CAC/B,IAAM,EAAU,MAAM,EAAe,CAAC,EAChC,EAAO,MAAM,EAAE,IAAI,KAAyB,EAMlD,MAJI,CAAC,EAAK,QAAU,OAAO,EAAK,QAAW,SAClC,EAAE,KAAK,CAAE,MAAO,oBAAqB,EAAG,GAAG,EAG7C,EAAU,EAAG,KAAO,IAAW,CACpC,IAAM,EAA6B,CAAC,EAE9B,GAAgB,EAAe,IAAqC,CACxE,EAAQ,GAAG,EAAuB,CAAqB,EACvD,EAAQ,SAAW,EAAQ,IAAI,EAAuB,CAAqB,CAAC,CAC9E,EAEI,EAAY,GACV,EAAO,IAAI,QAAe,GAAY,CAC1C,EAAU,aAAe,GAAkB,CACzC,EAAO,SAAS,CAAE,MAAO,aAAc,KAAM,KAAK,UAAU,CAAE,OAAM,CAAC,CAAE,CAAC,CAC1E,CAAC,EAED,EAAU,aAAe,GAAU,CACjC,EAAO,SAAS,CAAE,MAAO,aAAc,KAAM,KAAK,UAAU,CAAK,CAAE,CAAC,CACtE,CAAC,EAED,EAAU,WAAa,GAAU,CAC/B,EAAO,SAAS,CAAE,MAAO,WAAY,KAAM,KAAK,UAAU,CAAK,CAAE,CAAC,CACpE,CAAC,EAED,EAAU,WAAa,GAAwB,CAC7C,EAAO,SAAS,CAAE,MAAO,WAAY,KAAM,KAAK,UAAU,CAAE,YAAW,CAAC,CAAE,CAAC,EACvE,CAAC,GAAc,GACjB,EAAQ,CAEZ,CAAC,EAED,EAAU,WAAa,GAAW,CAChC,EAAY,GACZ,EAAO,SAAS,CAAE,MAAO,WAAY,KAAM,KAAK,UAAU,CAAM,CAAE,CAAC,CACrE,CAAC,EAED,EAAU,cAAgB,GAAW,CACnC,EAAY,GACZ,EAAO,SAAS,CAAE,MAAO,cAAe,KAAM,KAAK,UAAU,CAAM,CAAE,CAAC,CACxE,CAAC,EAED,EAAU,QAAU,GAAiB,CACnC,EAAY,GACZ,EAAO,SAAS,CAAE,MAAO,QAAS,KAAM,KAAK,UAAU,CAAE,QAAS,EAAM,OAAQ,CAAC,CAAE,CAAC,CACtF,CAAC,CACH,CAAC,EAED,MAAM,EAAQ,OAAO,EAAK,MAAM,EAChC,MAAM,EAEN,IAAK,IAAM,KAAM,EAAS,EAAG,CAC/B,CAAC,CACH,CAAC,EAGD,EAAI,KAAK,WAAY,KAAO,IAAM,CAChC,IAAM,EAAU,MAAM,EAAe,CAAC,EAChC,EAAO,MAAM,EAAE,IAAI,KAAsC,EAE/D,GAAI,CAAC,EAAK,MAAQ,OAAO,EAAK,MAAS,SACrC,OAAO,EAAE,KAAK,CAAE,MAAO,kBAAmB,EAAG,GAAG,EAGlD,IAAM,EAAS,MAAM,EAAQ,eAAe,EAAK,KAAM,EAAK,MAAQ,EAAE,EAItE,OAHK,EAGE,EAAE,KAAK,CAAM,EAFX,EAAE,KAAK,CAAE,MAAO,oBAAoB,EAAK,MAAO,EAAG,GAAG,CAGjE,CAAC,EAGD,EAAI,KAAK,SAAU,KAAO,MAExB,MADsB,EAAe,CAAC,EAAA,CAC9B,MAAM,EACP,EAAE,KAAK,CAAE,GAAI,EAAK,CAAC,EAC3B,EAGD,EAAI,KAAK,gBAAiB,KAAO,MAE/B,MADsB,EAAe,CAAC,EAAA,CAC9B,YAAY,EACb,EAAE,KAAK,CAAE,GAAI,EAAK,CAAC,EAC3B,EAGD,EAAI,IAAI,YAAa,KAAO,IAAM,CAChC,IAAM,EAAU,MAAM,EAAe,CAAC,EACtC,OAAO,EAAE,KAAK,EAAQ,YAAY,CAAC,CACrC,CAAC,EAGD,EAAI,IAAI,WAAY,KAAO,IAAM,CAC/B,IAAM,EAAU,MAAM,EAAe,CAAC,EACtC,OAAO,EAAE,KAAK,EAAQ,gBAAgB,CAAC,CACzC,CAAC,EAGD,EAAI,IAAI,aAAc,KAAO,IAAM,CACjC,IAAM,EAAU,MAAM,EAAe,CAAC,EACtC,OAAO,EAAE,KAAK,CAAE,UAAW,EAAQ,YAAY,CAAE,CAAC,CACpD,CAAC,EAGD,EAAI,IAAI,WAAY,KAAO,IAAM,CAC/B,IAAM,EAAU,MAAM,EAAe,CAAC,EACtC,OAAO,EAAE,KAAK,CAAE,QAAS,EAAQ,iBAAiB,CAAE,CAAC,CACvD,CAAC,EAEM,CACT,CCtIA,SAAgB,EACd,EAC6D,CAC7D,IAAI,EAAsC,KACtC,EAAmB,KAEvB,MAAO,CACL,KAAM,OACN,OAAO,EAAwB,CAC7B,EAAU,CACZ,EACA,MAAM,OAAQ,CACZ,GAAI,CAAC,EAAS,MAAU,MAAM,2CAA2C,EACzE,EAAM,EAAkB,CAAE,mBAAsB,CAAS,CAAC,CAC5D,EACA,MAAM,MAAO,CACX,EAAM,IACR,EACA,QAAS,CACP,GAAI,CAAC,EAAK,MAAU,MAAM,4CAA4C,EACtE,OAAO,CACT,CACF,CACF"}
@@ -1 +0,0 @@
1
- let e=require("hono"),t=require("hono/streaming");function n(n){let{sessionFactory:r}=n,i=new e.Hono;return i.post(`/submit`,async e=>{let n=await r(e),i=await e.req.json();return!i.prompt||typeof i.prompt!=`string`?e.json({error:`prompt is required`},400):(0,t.streamSSE)(e,async e=>{let t=[],r=(e,r)=>{n.on(e,r),t.push(()=>n.off(e,r))},a=!1,o=new Promise(t=>{r(`text_delta`,t=>{e.writeSSE({event:`text_delta`,data:JSON.stringify({delta:t})})}),r(`tool_start`,t=>{e.writeSSE({event:`tool_start`,data:JSON.stringify(t)})}),r(`tool_end`,t=>{e.writeSSE({event:`tool_end`,data:JSON.stringify(t)})}),r(`thinking`,n=>{e.writeSSE({event:`thinking`,data:JSON.stringify({isThinking:n})}),!n&&a&&t()}),r(`complete`,t=>{a=!0,e.writeSSE({event:`complete`,data:JSON.stringify(t)})}),r(`interrupted`,t=>{a=!0,e.writeSSE({event:`interrupted`,data:JSON.stringify(t)})}),r(`error`,t=>{a=!0,e.writeSSE({event:`error`,data:JSON.stringify({message:t.message})})})});await n.submit(i.prompt),await o;for(let e of t)e()})}),i.post(`/command`,async e=>{let t=await r(e),n=await e.req.json();if(!n.name||typeof n.name!=`string`)return e.json({error:`name is required`},400);let i=await t.executeCommand(n.name,n.args??``);return i?e.json(i):e.json({error:`Unknown command: ${n.name}`},404)}),i.post(`/abort`,async e=>((await r(e)).abort(),e.json({ok:!0}))),i.post(`/cancel-queue`,async e=>((await r(e)).cancelQueue(),e.json({ok:!0}))),i.get(`/messages`,async e=>{let t=await r(e);return e.json(t.getMessages())}),i.get(`/context`,async e=>{let t=await r(e);return e.json(t.getContextState())}),i.get(`/executing`,async e=>{let t=await r(e);return e.json({executing:t.isExecuting()})}),i.get(`/pending`,async e=>{let t=await r(e);return e.json({pending:t.getPendingPrompt()})}),i}function r(e){let t=null,r=null;return{name:`http`,attach(e){t=e},async start(){if(!t)throw Error(`No session attached. Call attach() first.`);r=n({sessionFactory:()=>t})},async stop(){r=null},getApp(){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 r}});
@@ -1,86 +0,0 @@
1
- import { CommandRegistry, IBackgroundTaskRunner, ICommandHostAdapters, ICommandModule, InteractiveSession, TShellExecFn, TSubagentRunnerFactory } from "@robota-sdk/agent-framework";
2
- import { IAIProvider, IProviderDefinition, TPermissionMode, TUniversalValue } from "@robota-sdk/agent-core";
3
- import { IConfigurableTransport, IExecutionResult, IExecutionWorkspaceSnapshot, IInteractiveSession, IInteractiveSessionStore, IStatusLineCommandSettings, IToolState, ITransportRegistryView, TStatusLineCommandSettingsPatch } from "@robota-sdk/agent-interface-transport";
4
- import { ITuiCommandInteraction, ITuiConfirmInteraction, ITuiPickerInteraction, ITuiPickerItem, TAnyTuiCommandInteraction, TOnMissingArgsAction } from "@robota-sdk/agent-interface-tui";
5
-
6
- //#region src/tui/tui-cli-adapter.d.ts
7
- interface ITuiCliAdapter {
8
- getUserSettingsPath(): string;
9
- readSettings(path: string): Record<string, TUniversalValue>;
10
- writeSettings(path: string, settings: Record<string, TUniversalValue>): void;
11
- deleteSettings(path: string): boolean;
12
- applyStatusLineSettings(path: string, patch: TStatusLineCommandSettingsPatch): IStatusLineCommandSettings;
13
- reloadPluginCommandSource(registry: CommandRegistry): void;
14
- applyActiveModelChange(cwd: string, modelId: string, options?: {
15
- providerOverride?: string;
16
- }): {
17
- applied: boolean;
18
- };
19
- getGitBranch(cwd: string): string | undefined;
20
- getProviderDisplayName(type: string): string;
21
- }
22
- //#endregion
23
- //#region src/tui/render.d.ts
24
- interface IRenderOptions {
25
- cwd: string;
26
- provider: IAIProvider;
27
- providerOverride?: string | undefined;
28
- providerType?: string | undefined;
29
- modelId?: string;
30
- language?: string;
31
- permissionMode?: TPermissionMode;
32
- maxTurns?: number;
33
- allowedTools?: string[];
34
- deniedTools?: string[];
35
- version?: string;
36
- sessionStore?: IInteractiveSessionStore;
37
- resumeSessionId?: string;
38
- showSessionPickerOnStart?: boolean;
39
- forkSession?: boolean;
40
- sessionName?: string;
41
- backgroundTaskRunners?: IBackgroundTaskRunner[];
42
- subagentRunnerFactory?: TSubagentRunnerFactory;
43
- commandModules?: readonly ICommandModule[];
44
- commandHostAdapters?: ICommandHostAdapters;
45
- shellExec?: TShellExecFn;
46
- startupUpdateNotice?: Promise<string | undefined>;
47
- transportRegistry?: ITransportRegistryView<IInteractiveSession>;
48
- cliAdapter: ITuiCliAdapter;
49
- reloadPluginCommandSource?: (registry: CommandRegistry) => void;
50
- agentName?: string;
51
- /** Active preset id selected at startup (PRESET-011 runtime state). Defaults to 'default'. */
52
- activePresetId?: string;
53
- /** Preset persona block composed as a `source: 'persona'` system-prompt section (priority 5). */
54
- persona?: string;
55
- /** Preset execution capability: activate agent runtime + subagent/background dispatch. */
56
- enableParallelSubagents?: boolean;
57
- /** Preset execution capability: run a post-task self-verification step. */
58
- selfVerification?: boolean;
59
- }
60
- declare function renderApp(options: IRenderOptions): Promise<void>;
61
- //#endregion
62
- //#region src/tui/tui-transport.d.ts
63
- declare class TuiTransport implements IConfigurableTransport<IInteractiveSession> {
64
- readonly name = "tui";
65
- readonly defaultEnabled = true;
66
- readonly optionsSchema: {};
67
- private readonly options;
68
- constructor(options: IRenderOptions);
69
- attach(_session: IInteractiveSession): void;
70
- start(): Promise<void>;
71
- stop(): Promise<void>;
72
- validateOptions(_options: Record<string, TUniversalValue>): boolean;
73
- }
74
- //#endregion
75
- //#region src/tui/create-default-tui-cli-adapter.d.ts
76
- interface IDefaultTuiCliAdapterOptions {
77
- providerDefinitions: readonly IProviderDefinition[];
78
- reloadPluginCommandSource: (registry: CommandRegistry) => void;
79
- }
80
- declare function createDefaultTuiCliAdapter({
81
- providerDefinitions,
82
- reloadPluginCommandSource
83
- }: IDefaultTuiCliAdapterOptions): ITuiCliAdapter;
84
- //#endregion
85
- export { TAnyTuiCommandInteraction as a, createDefaultTuiCliAdapter as c, renderApp as d, ITuiCliAdapter as f, ITuiPickerItem as i, TuiTransport as l, ITuiConfirmInteraction as n, TOnMissingArgsAction as o, ITuiPickerInteraction as r, IDefaultTuiCliAdapterOptions as s, ITuiCommandInteraction as t, IRenderOptions as u };
86
- //# sourceMappingURL=index-BNccqSpv.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-BNccqSpv.d.ts","names":[],"sources":["../../src/tui/tui-cli-adapter.ts","../../src/tui/render.tsx","../../src/tui/tui-transport.ts","../../src/tui/create-default-tui-cli-adapter.ts"],"mappings":";;;;;;UAOiB,cAAA;EACf,mBAAA;EACA,YAAA,CAAa,IAAA,WAAe,MAAA,SAAe,eAAA;EAC3C,aAAA,CAAc,IAAA,UAAc,QAAA,EAAU,MAAA,SAAe,eAAA;EACrD,cAAA,CAAe,IAAA;EACf,uBAAA,CACE,IAAA,UACA,KAAA,EAAO,+BAAA,GACN,0BAAA;EACH,yBAAA,CAA0B,QAAA,EAAU,eAAA;EACpC,sBAAA,CACE,GAAA,UACA,OAAA,UACA,OAAA;IAAY,gBAAA;EAAA;IACT,OAAA;EAAA;EACL,YAAA,CAAa,GAAA;EACb,sBAAA,CAAuB,IAAA;AAAA;;;UCIR,cAAA;EACf,GAAA;EACA,QAAA,EAAU,WAAA;EACV,gBAAA;EACA,YAAA;EACA,OAAA;EACA,QAAA;EACA,cAAA,GAAiB,eAAA;EACjB,QAAA;EACA,YAAA;EACA,WAAA;EACA,OAAA;EACA,YAAA,GAAe,wBAAA;EACf,eAAA;EACA,wBAAA;EACA,WAAA;EACA,WAAA;EACA,qBAAA,GAAwB,qBAAA;EACxB,qBAAA,GAAwB,sBAAA;EACxB,cAAA,YAA0B,cAAA;EAC1B,mBAAA,GAAsB,oBAAA;EACtB,SAAA,GAAY,YAAA;EACZ,mBAAA,GAAsB,OAAA;EACtB,iBAAA,GAAoB,sBAAA,CAAuB,mBAAA;EAC3C,UAAA,EAAY,cAAA;EACZ,yBAAA,IAA6B,QAAA,EAAU,eAAA;EACvC,SAAA;EDrCoC;ECuCpC,cAAA;EDtCA;ECwCA,OAAA;EDtCE;ECwCF,uBAAA;EDvCE;ECyCF,gBAAA;AAAA;AAAA,iBAmCoB,SAAA,CAAU,OAAA,EAAS,cAAA,GAAiB,OAAO;;;cCxFpD,YAAA,YAAwB,sBAAA,CAAuB,mBAAA;EAAA,SACjD,IAAA;EAAA,SACA,cAAA;EAAA,SACA,aAAA;EAAA,iBAEQ,OAAA;cAEL,OAAA,EAAS,cAAA;EAIrB,MAAA,CAAO,QAAA,EAAU,mBAAA;EAIX,KAAA,IAAS,OAAA;EAIT,IAAA,IAAQ,OAAA;EAId,eAAA,CAAgB,QAAA,EAAU,MAAA,SAAe,eAAA;AAAA;;;UCjB1B,4BAAA;EACf,mBAAA,WAA8B,mBAAA;EAC9B,yBAAA,GAA4B,QAAA,EAAU,eAAe;AAAA;AAAA,iBAGvC,0BAAA;EACd,mBAAA;EACA;AAAA,GACC,4BAAA,GAA+B,cAAA"}
@@ -1,86 +0,0 @@
1
- import { IAIProvider, IProviderDefinition, TPermissionMode, TUniversalValue } from "@robota-sdk/agent-core";
2
- import { IConfigurableTransport, IExecutionResult, IExecutionWorkspaceSnapshot, IInteractiveSession, IInteractiveSessionStore, IStatusLineCommandSettings, IToolState, ITransportRegistryView, TStatusLineCommandSettingsPatch } from "@robota-sdk/agent-interface-transport";
3
- import { CommandRegistry, IBackgroundTaskRunner, ICommandHostAdapters, ICommandModule, InteractiveSession, TShellExecFn, TSubagentRunnerFactory } from "@robota-sdk/agent-framework";
4
- import { ITuiCommandInteraction, ITuiConfirmInteraction, ITuiPickerInteraction, ITuiPickerItem, TAnyTuiCommandInteraction, TOnMissingArgsAction } from "@robota-sdk/agent-interface-tui";
5
-
6
- //#region src/tui/tui-cli-adapter.d.ts
7
- interface ITuiCliAdapter {
8
- getUserSettingsPath(): string;
9
- readSettings(path: string): Record<string, TUniversalValue>;
10
- writeSettings(path: string, settings: Record<string, TUniversalValue>): void;
11
- deleteSettings(path: string): boolean;
12
- applyStatusLineSettings(path: string, patch: TStatusLineCommandSettingsPatch): IStatusLineCommandSettings;
13
- reloadPluginCommandSource(registry: CommandRegistry): void;
14
- applyActiveModelChange(cwd: string, modelId: string, options?: {
15
- providerOverride?: string;
16
- }): {
17
- applied: boolean;
18
- };
19
- getGitBranch(cwd: string): string | undefined;
20
- getProviderDisplayName(type: string): string;
21
- }
22
- //#endregion
23
- //#region src/tui/render.d.ts
24
- interface IRenderOptions {
25
- cwd: string;
26
- provider: IAIProvider;
27
- providerOverride?: string | undefined;
28
- providerType?: string | undefined;
29
- modelId?: string;
30
- language?: string;
31
- permissionMode?: TPermissionMode;
32
- maxTurns?: number;
33
- allowedTools?: string[];
34
- deniedTools?: string[];
35
- version?: string;
36
- sessionStore?: IInteractiveSessionStore;
37
- resumeSessionId?: string;
38
- showSessionPickerOnStart?: boolean;
39
- forkSession?: boolean;
40
- sessionName?: string;
41
- backgroundTaskRunners?: IBackgroundTaskRunner[];
42
- subagentRunnerFactory?: TSubagentRunnerFactory;
43
- commandModules?: readonly ICommandModule[];
44
- commandHostAdapters?: ICommandHostAdapters;
45
- shellExec?: TShellExecFn;
46
- startupUpdateNotice?: Promise<string | undefined>;
47
- transportRegistry?: ITransportRegistryView<IInteractiveSession>;
48
- cliAdapter: ITuiCliAdapter;
49
- reloadPluginCommandSource?: (registry: CommandRegistry) => void;
50
- agentName?: string;
51
- /** Active preset id selected at startup (PRESET-011 runtime state). Defaults to 'default'. */
52
- activePresetId?: string;
53
- /** Preset persona block composed as a `source: 'persona'` system-prompt section (priority 5). */
54
- persona?: string;
55
- /** Preset execution capability: activate agent runtime + subagent/background dispatch. */
56
- enableParallelSubagents?: boolean;
57
- /** Preset execution capability: run a post-task self-verification step. */
58
- selfVerification?: boolean;
59
- }
60
- declare function renderApp(options: IRenderOptions): Promise<void>;
61
- //#endregion
62
- //#region src/tui/tui-transport.d.ts
63
- declare class TuiTransport implements IConfigurableTransport<IInteractiveSession> {
64
- readonly name = "tui";
65
- readonly defaultEnabled = true;
66
- readonly optionsSchema: {};
67
- private readonly options;
68
- constructor(options: IRenderOptions);
69
- attach(_session: IInteractiveSession): void;
70
- start(): Promise<void>;
71
- stop(): Promise<void>;
72
- validateOptions(_options: Record<string, TUniversalValue>): boolean;
73
- }
74
- //#endregion
75
- //#region src/tui/create-default-tui-cli-adapter.d.ts
76
- interface IDefaultTuiCliAdapterOptions {
77
- providerDefinitions: readonly IProviderDefinition[];
78
- reloadPluginCommandSource: (registry: CommandRegistry) => void;
79
- }
80
- declare function createDefaultTuiCliAdapter({
81
- providerDefinitions,
82
- reloadPluginCommandSource
83
- }: IDefaultTuiCliAdapterOptions): ITuiCliAdapter;
84
- //#endregion
85
- export { TAnyTuiCommandInteraction as a, createDefaultTuiCliAdapter as c, renderApp as d, ITuiCliAdapter as f, ITuiPickerItem as i, TuiTransport as l, ITuiConfirmInteraction as n, TOnMissingArgsAction as o, ITuiPickerInteraction as r, IDefaultTuiCliAdapterOptions as s, ITuiCommandInteraction as t, IRenderOptions as u };
86
- //# sourceMappingURL=index-BUhHIf7X.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-BUhHIf7X.d.ts","names":[],"sources":["../../src/tui/tui-cli-adapter.ts","../../src/tui/render.tsx","../../src/tui/tui-transport.ts","../../src/tui/create-default-tui-cli-adapter.ts"],"mappings":";;;;;;UAOiB,cAAA;EACf,mBAAA;EACA,YAAA,CAAa,IAAA,WAAe,MAAA,SAAe,eAAA;EAC3C,aAAA,CAAc,IAAA,UAAc,QAAA,EAAU,MAAA,SAAe,eAAA;EACrD,cAAA,CAAe,IAAA;EACf,uBAAA,CACE,IAAA,UACA,KAAA,EAAO,+BAAA,GACN,0BAAA;EACH,yBAAA,CAA0B,QAAA,EAAU,eAAA;EACpC,sBAAA,CACE,GAAA,UACA,OAAA,UACA,OAAA;IAAY,gBAAA;EAAA;IACT,OAAA;EAAA;EACL,YAAA,CAAa,GAAA;EACb,sBAAA,CAAuB,IAAA;AAAA;;;UCIR,cAAA;EACf,GAAA;EACA,QAAA,EAAU,WAAA;EACV,gBAAA;EACA,YAAA;EACA,OAAA;EACA,QAAA;EACA,cAAA,GAAiB,eAAA;EACjB,QAAA;EACA,YAAA;EACA,WAAA;EACA,OAAA;EACA,YAAA,GAAe,wBAAA;EACf,eAAA;EACA,wBAAA;EACA,WAAA;EACA,WAAA;EACA,qBAAA,GAAwB,qBAAA;EACxB,qBAAA,GAAwB,sBAAA;EACxB,cAAA,YAA0B,cAAA;EAC1B,mBAAA,GAAsB,oBAAA;EACtB,SAAA,GAAY,YAAA;EACZ,mBAAA,GAAsB,OAAA;EACtB,iBAAA,GAAoB,sBAAA,CAAuB,mBAAA;EAC3C,UAAA,EAAY,cAAA;EACZ,yBAAA,IAA6B,QAAA,EAAU,eAAA;EACvC,SAAA;EDrCoC;ECuCpC,cAAA;EDtCA;ECwCA,OAAA;EDtCE;ECwCF,uBAAA;EDvCE;ECyCF,gBAAA;AAAA;AAAA,iBAmCoB,SAAA,CAAU,OAAA,EAAS,cAAA,GAAiB,OAAO;;;cCxFpD,YAAA,YAAwB,sBAAA,CAAuB,mBAAA;EAAA,SACjD,IAAA;EAAA,SACA,cAAA;EAAA,SACA,aAAA;EAAA,iBAEQ,OAAA;cAEL,OAAA,EAAS,cAAA;EAIrB,MAAA,CAAO,QAAA,EAAU,mBAAA;EAIX,KAAA,IAAS,OAAA;EAIT,IAAA,IAAQ,OAAA;EAId,eAAA,CAAgB,QAAA,EAAU,MAAA,SAAe,eAAA;AAAA;;;UCjB1B,4BAAA;EACf,mBAAA,WAA8B,mBAAA;EAC9B,yBAAA,GAA4B,QAAA,EAAU,eAAe;AAAA;AAAA,iBAGvC,0BAAA;EACd,mBAAA;EACA;AAAA,GACC,4BAAA,GAA+B,cAAA"}
@@ -1,33 +0,0 @@
1
- import { IInteractiveSession, ITransportAdapter } from "@robota-sdk/agent-interface-transport";
2
- import { Context, Hono } from "hono";
3
-
4
- //#region src/http/routes.d.ts
5
- /** Callback that resolves an IInteractiveSession from the request context. */
6
- type TSessionFactory = (c: Context) => IInteractiveSession | Promise<IInteractiveSession>;
7
- interface IAgentRoutesOptions {
8
- /** Resolve an IInteractiveSession per request (e.g., by auth token, session ID). */
9
- sessionFactory: TSessionFactory;
10
- }
11
- /**
12
- * Create a Hono router with all agent HTTP endpoints.
13
- *
14
- * Usage:
15
- * ```typescript
16
- * const routes = createAgentRoutes({ sessionFactory });
17
- * app.route('/agent', routes); // mount on existing app
18
- * export default routes; // or use standalone (CF Workers)
19
- * ```
20
- */
21
- declare function createAgentRoutes(options: IAgentRoutesOptions): Hono;
22
- //#endregion
23
- //#region src/http/http-transport.d.ts
24
- interface IHttpTransportOptions {
25
- /** Optional: base path prefix for routes. */
26
- basePath?: string;
27
- }
28
- declare function createHttpTransport(options?: IHttpTransportOptions): ITransportAdapter<IInteractiveSession> & {
29
- getApp(): Hono;
30
- };
31
- //#endregion
32
- export { createAgentRoutes as a, TSessionFactory as i, createHttpTransport as n, IAgentRoutesOptions as r, IHttpTransportOptions as t };
33
- //# sourceMappingURL=index-BnAGE-u9.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-BnAGE-u9.d.ts","names":[],"sources":["../../src/http/routes.ts","../../src/http/http-transport.ts"],"mappings":";;;;;KAcY,eAAA,IAAmB,CAAA,EAAG,OAAA,KAAY,mBAAA,GAAsB,OAAA,CAAQ,mBAAA;AAAA,UAE3D,mBAAA;EAF0D;EAIzE,cAAA,EAAgB,eAAe;AAAA;;;;;AAJ8D;AAE/F;;;;AAEiC;iBAajB,iBAAA,CAAkB,OAAA,EAAS,mBAAA,GAAsB,IAAI;;;UCnBpD,qBAAA;EDE2D;ECA1E,QAAQ;AAAA;AAAA,iBAGM,mBAAA,CACd,OAAA,GAAU,qBAAA,GACT,iBAAA,CAAkB,mBAAA;EAAyB,MAAA,IAAU,IAAA;AAAA"}