@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.
- package/README.md +10 -10
- package/dist/node/headless/index.cjs +1 -1
- package/dist/node/{headless-CT2ibQnr.cjs → headless-OnpVk4-k.cjs} +7 -7
- package/dist/node/index.cjs +1 -1
- package/dist/node/index.d.ts +1 -6
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +1 -1
- package/dist/node/index.js.map +1 -1
- package/package.json +7 -75
- package/src/index.ts +1 -5
- package/src/transport-registry.ts +0 -9
- package/dist/node/http/index.cjs +0 -1
- package/dist/node/http/index.d.ts +0 -2
- package/dist/node/http/index.js +0 -1
- package/dist/node/http-2Jiuflc1.js +0 -2
- package/dist/node/http-2Jiuflc1.js.map +0 -1
- package/dist/node/http-CBAvefLw.cjs +0 -1
- package/dist/node/index-BNccqSpv.d.ts +0 -86
- package/dist/node/index-BNccqSpv.d.ts.map +0 -1
- package/dist/node/index-BUhHIf7X.d.ts +0 -86
- package/dist/node/index-BUhHIf7X.d.ts.map +0 -1
- package/dist/node/index-BnAGE-u9.d.ts +0 -33
- package/dist/node/index-BnAGE-u9.d.ts.map +0 -1
- package/dist/node/index-BrQ4gGw0.d.ts +0 -213
- package/dist/node/index-BrQ4gGw0.d.ts.map +0 -1
- package/dist/node/index-CoeBF21y.d.ts +0 -213
- package/dist/node/index-CoeBF21y.d.ts.map +0 -1
- package/dist/node/index-DHt-2VQ-.d.ts +0 -46
- package/dist/node/index-DHt-2VQ-.d.ts.map +0 -1
- package/dist/node/index-DMwKN5Le.d.ts +0 -33
- package/dist/node/index-DMwKN5Le.d.ts.map +0 -1
- package/dist/node/index-c0M42fsA.d.ts +0 -46
- package/dist/node/index-c0M42fsA.d.ts.map +0 -1
- package/dist/node/mcp/index.cjs +0 -1
- package/dist/node/mcp/index.d.ts +0 -2
- package/dist/node/mcp/index.js +0 -1
- package/dist/node/mcp-BOglBJNy.cjs +0 -1
- package/dist/node/mcp-D3BBVK7C.js +0 -2
- package/dist/node/mcp-D3BBVK7C.js.map +0 -1
- package/dist/node/rolldown-runtime-CMqjfN_6.cjs +0 -1
- package/dist/node/tui/index.cjs +0 -1
- package/dist/node/tui/index.d.ts +0 -2
- package/dist/node/tui/index.js +0 -1
- package/dist/node/tui-CcH5EsQh.js +0 -25
- package/dist/node/tui-CcH5EsQh.js.map +0 -1
- package/dist/node/tui-DznRbcku.cjs +0 -24
- package/dist/node/ws/index.cjs +0 -1
- package/dist/node/ws/index.d.ts +0 -2
- package/dist/node/ws/index.js +0 -1
- package/dist/node/ws-Dc2RUwVs.js +0 -2
- package/dist/node/ws-Dc2RUwVs.js.map +0 -1
- package/dist/node/ws-QNMQn5kg.cjs +0 -1
- package/src/http/__tests__/http-transport.test.ts +0 -55
- package/src/http/__tests__/routes.test.ts +0 -168
- package/src/http/http-transport.ts +0 -41
- package/src/http/index.ts +0 -4
- package/src/http/routes.ts +0 -152
- package/src/mcp/__tests__/mcp-server.test.ts +0 -66
- package/src/mcp/__tests__/mcp-transport.test.ts +0 -46
- package/src/mcp/index.ts +0 -4
- package/src/mcp/mcp-server.ts +0 -163
- package/src/mcp/mcp-transport.ts +0 -48
- package/src/tui/App.tsx +0 -491
- package/src/tui/BackgroundTaskPanel.tsx +0 -36
- package/src/tui/CjkTextInput.tsx +0 -199
- package/src/tui/ConfirmPrompt.tsx +0 -70
- package/src/tui/ContextWarningBanner.tsx +0 -34
- package/src/tui/ExecutionWorkspaceDetailPane.tsx +0 -64
- package/src/tui/ExecutionWorkspaceSwitcher.tsx +0 -187
- package/src/tui/InputArea.tsx +0 -310
- package/src/tui/InteractivePrompt.tsx +0 -59
- package/src/tui/ListPicker.tsx +0 -95
- package/src/tui/MenuSelect.tsx +0 -104
- package/src/tui/MessageList.tsx +0 -284
- package/src/tui/PermissionPrompt.tsx +0 -86
- package/src/tui/PluginTUI.tsx +0 -258
- package/src/tui/SessionPicker.tsx +0 -68
- package/src/tui/SessionStatusBar.tsx +0 -73
- package/src/tui/SlashAutocomplete.tsx +0 -110
- package/src/tui/StatusBar.tsx +0 -236
- package/src/tui/StreamingIndicator.tsx +0 -93
- package/src/tui/TextPrompt.tsx +0 -81
- package/src/tui/ToolCommandOutput.tsx +0 -39
- package/src/tui/ToolDiffBlock.tsx +0 -32
- package/src/tui/TransportTUI.tsx +0 -117
- package/src/tui/TuiInteractionChannel.ts +0 -495
- package/src/tui/UpdateNotice.tsx +0 -14
- package/src/tui/UsageSummaryEntry.tsx +0 -39
- package/src/tui/WaveText.tsx +0 -44
- package/src/tui/__tests__/InteractivePrompt.test.tsx +0 -82
- package/src/tui/__tests__/ListPicker.test.tsx +0 -159
- package/src/tui/__tests__/MenuSelect.test.tsx +0 -103
- package/src/tui/__tests__/PluginTUI.test.tsx +0 -167
- package/src/tui/__tests__/SlashAutocomplete.test.tsx +0 -140
- package/src/tui/__tests__/TextPrompt.test.tsx +0 -98
- package/src/tui/__tests__/TuiInteractionChannel.display-contract.test.ts +0 -239
- package/src/tui/__tests__/TuiInteractionChannel.lifecycle.test.ts +0 -297
- package/src/tui/__tests__/TuiInteractionChannel.requestAction.test.ts +0 -124
- package/src/tui/__tests__/UpdateNotice.test.tsx +0 -15
- package/src/tui/__tests__/abort-after-permission.test.tsx +0 -169
- package/src/tui/__tests__/abort-streaming-e2e.test.tsx +0 -183
- package/src/tui/__tests__/background-task-panel.test.tsx +0 -53
- package/src/tui/__tests__/background-task-row-format.test.ts +0 -59
- package/src/tui/__tests__/channel-factory-integration.test.ts +0 -138
- package/src/tui/__tests__/cjk-text-input-flow.test.ts +0 -109
- package/src/tui/__tests__/cjk-text-input.test.ts +0 -191
- package/src/tui/__tests__/command-effect-handler.test.ts +0 -127
- package/src/tui/__tests__/command-output-summary.test.ts +0 -95
- package/src/tui/__tests__/compact-event-bridge.test.ts +0 -20
- package/src/tui/__tests__/confirm-permission-flow.test.ts +0 -130
- package/src/tui/__tests__/confirm-prompt.test.tsx +0 -87
- package/src/tui/__tests__/execution-workspace-switcher.test.tsx +0 -110
- package/src/tui/__tests__/execution-workspace-view-model.test.ts +0 -93
- package/src/tui/__tests__/fixtures/provider-setup-prompt-driver.tsx +0 -125
- package/src/tui/__tests__/input-area-flow.test.ts +0 -164
- package/src/tui/__tests__/message-list-rendering.test.tsx +0 -353
- package/src/tui/__tests__/prompt-queue.test.tsx +0 -255
- package/src/tui/__tests__/provider-setup-pty-e2e.test.ts +0 -233
- package/src/tui/__tests__/pty/pty-driver.ts +0 -135
- package/src/tui/__tests__/pty/tui-pty.ptytest.ts +0 -61
- package/src/tui/__tests__/render-channel-options.test.ts +0 -32
- package/src/tui/__tests__/render-markdown.test.ts +0 -72
- package/src/tui/__tests__/selection-flow.test.ts +0 -61
- package/src/tui/__tests__/session-init-poller.test.ts +0 -102
- package/src/tui/__tests__/session-naming.test.ts +0 -64
- package/src/tui/__tests__/session-switch-channel.test.tsx +0 -307
- package/src/tui/__tests__/slash-routing-effects.test.ts +0 -228
- package/src/tui/__tests__/status-activity.test.ts +0 -71
- package/src/tui/__tests__/status-bar.test.tsx +0 -177
- package/src/tui/__tests__/streaming-indicator.test.tsx +0 -137
- package/src/tui/__tests__/text-prompt-flow.test.ts +0 -77
- package/src/tui/__tests__/tui-channel-init-failure.test.ts +0 -57
- package/src/tui/__tests__/tui-state-manager.test.ts +0 -401
- package/src/tui/background-task-row-format.ts +0 -53
- package/src/tui/command-interaction.ts +0 -9
- package/src/tui/command-output-summary.ts +0 -122
- package/src/tui/create-default-tui-cli-adapter.ts +0 -41
- package/src/tui/execution-workspace-view-model.ts +0 -123
- package/src/tui/flows/cjk-text-input-flow.ts +0 -285
- package/src/tui/flows/confirm-prompt-flow.ts +0 -45
- package/src/tui/flows/input-area-flow.ts +0 -189
- package/src/tui/flows/permission-prompt-flow.ts +0 -85
- package/src/tui/flows/selection-flow.ts +0 -126
- package/src/tui/flows/session-init-poller.ts +0 -77
- package/src/tui/flows/text-prompt-flow.ts +0 -98
- package/src/tui/hooks/command-effect-handler.ts +0 -97
- package/src/tui/hooks/command-effect-queue.ts +0 -39
- package/src/tui/hooks/side-effects-types.ts +0 -35
- package/src/tui/hooks/useAutocomplete.ts +0 -87
- package/src/tui/hooks/usePluginCallbacks.ts +0 -31
- package/src/tui/hooks/usePluginScreenData.ts +0 -85
- package/src/tui/hooks/useSideEffects.ts +0 -175
- package/src/tui/hooks/useSlashRouting.ts +0 -118
- package/src/tui/hooks/useStatusLineSettings.ts +0 -37
- package/src/tui/hooks/useTuiChannel.ts +0 -95
- package/src/tui/index.ts +0 -14
- package/src/tui/interactions/CommandConfirm.tsx +0 -36
- package/src/tui/interactions/CommandPicker.tsx +0 -77
- package/src/tui/interactions/__tests__/CommandConfirm.test.tsx +0 -124
- package/src/tui/interactions/__tests__/CommandPicker.test.tsx +0 -138
- package/src/tui/plugin-tui-handlers.ts +0 -163
- package/src/tui/render-markdown.ts +0 -130
- package/src/tui/render.tsx +0 -129
- package/src/tui/session-naming.ts +0 -33
- package/src/tui/status-activity.ts +0 -63
- package/src/tui/tui-cli-adapter-context.tsx +0 -13
- package/src/tui/tui-cli-adapter.ts +0 -25
- package/src/tui/tui-state-manager.ts +0 -226
- package/src/tui/tui-transport.ts +0 -35
- package/src/tui/types.ts +0 -15
- package/src/tui/utils/__tests__/edit-diff.test.ts +0 -426
- package/src/tui/utils/__tests__/paste-detection.test.ts +0 -116
- package/src/tui/utils/__tests__/paste-labels.test.ts +0 -46
- package/src/tui/utils/__tests__/tool-call-extractor.test.ts +0 -227
- package/src/tui/utils/__tests__/tool-diff-summary.test.ts +0 -104
- package/src/tui/utils/edit-diff.ts +0 -153
- package/src/tui/utils/paste-labels.ts +0 -9
- package/src/tui/utils/tool-call-extractor.ts +0 -92
- package/src/tui/utils/tool-diff-summary.ts +0 -75
- package/src/ws/__tests__/ws-handler.test.ts +0 -409
- package/src/ws/__tests__/ws-transport.test.ts +0 -53
- package/src/ws/index.ts +0 -13
- package/src/ws/ws-background-messages.ts +0 -170
- package/src/ws/ws-handler.ts +0 -280
- package/src/ws/ws-protocol.ts +0 -78
- package/src/ws/ws-transport-configurable.ts +0 -128
- 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
|
|
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
|
|
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
|
|
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
|
|
59
|
-
import type { ITuiCliAdapter } from '@robota-sdk/agent-transport
|
|
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
|
|
74
|
-
import type { TServerMessage } from '@robota-sdk/agent-transport
|
|
75
|
-
import { createHttpTransport } from '@robota-sdk/agent-transport
|
|
76
|
-
import { createMcpTransport } from '@robota-sdk/agent-transport
|
|
77
|
-
import { TuiTransport } from '@robota-sdk/agent-transport
|
|
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-
|
|
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
|
-
|
|
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(
|
|
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
|
|
10
|
-
`)}function
|
|
11
|
-
`)}function
|
|
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),
|
|
15
|
-
`),n(+!i.result.success);return}i.kind!==`session-execution`&&e.submit(t)})})}function
|
|
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}});
|
package/dist/node/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./headless-
|
|
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;
|
package/dist/node/index.d.ts
CHANGED
|
@@ -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
|
|
21
|
+
export { HeadlessInteractionChannel, type IHeadlessInteractionChannelOptions, type IHeadlessRunnerOptions, type IHeadlessTransportOptions, PrintTerminal, type TOutputFormat, TransportRegistry, createHeadlessRunner, createHeadlessTransport, promptInput };
|
|
27
22
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/node/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/transport-registry.ts"],"mappings":"
|
|
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"}
|
package/dist/node/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e,i as t,n,r,t as i}from"./headless-mRYilLfC.js";import{
|
|
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
|
package/dist/node/index.js.map
CHANGED
|
@@ -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 {
|
|
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.
|
|
4
|
-
"description": "
|
|
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
|
-
"@
|
|
111
|
-
"
|
|
112
|
-
"
|
|
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.
|
|
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
|
|
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
|
-
}
|
package/dist/node/http/index.cjs
DELETED
|
@@ -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 };
|
package/dist/node/http/index.js
DELETED
|
@@ -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"}
|