@robota-sdk/agent-transport 3.0.0-beta.79 → 3.0.0-beta.82
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 +84 -26
- package/dist/browser/client.d.ts +2 -0
- package/dist/browser/client.js +1 -0
- package/dist/browser/index.d.ts +520 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +2 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/message-decoders-BB8n-H2X.d.ts +252 -0
- package/dist/browser/message-decoders-BB8n-H2X.d.ts.map +1 -0
- package/dist/browser/message-decoders-CDmDoZPR.js +2 -0
- package/dist/browser/message-decoders-CDmDoZPR.js.map +1 -0
- package/dist/node/index.cjs +1 -1
- package/dist/node/index.d.cts +766 -0
- package/dist/node/index.d.cts.map +1 -0
- package/dist/node/index.d.ts +765 -27
- 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/dist/node/node.cjs +1 -0
- package/dist/node/node.d.cts +216 -0
- package/dist/node/node.d.cts.map +1 -0
- package/dist/node/node.d.ts +216 -0
- package/dist/node/node.d.ts.map +1 -0
- package/dist/node/node.js +2 -0
- package/dist/node/node.js.map +1 -0
- package/package.json +68 -47
- package/src/__tests__/access-token-verifier.test.ts +672 -0
- package/src/__tests__/admission.test.ts +130 -0
- package/src/__tests__/channel-frames.test.ts +214 -0
- package/src/__tests__/driver-attribution-capability.test.ts +83 -0
- package/src/__tests__/file-transfer.test.ts +281 -0
- package/src/__tests__/handoff-chunking.test.ts +215 -0
- package/src/__tests__/handoff-manifest.test.ts +52 -0
- package/src/__tests__/message-decoders.test.ts +249 -0
- package/src/__tests__/outbound-delivery.test.ts +558 -0
- package/src/__tests__/peer-message-ledger.test.ts +200 -0
- package/src/__tests__/personal-usage-report.test.ts +193 -0
- package/src/__tests__/resume-buffer.test.ts +93 -0
- package/src/__tests__/session-event-delivery.test.ts +101 -0
- package/src/__tests__/session-message-handler-e5.test.ts +99 -0
- package/src/__tests__/session-message-handler.test.ts +590 -0
- package/src/__tests__/session-resume-bridge.test.ts +406 -0
- package/src/__tests__/submit-prompt-shape.test.ts +78 -0
- package/src/__tests__/usage-report-carrier.test.ts +98 -0
- package/src/__tests__/ws-broadcast-events.test.ts +84 -0
- package/src/background-messages.ts +169 -0
- package/src/channel-frames.ts +182 -0
- package/src/client.ts +9 -0
- package/src/handoff-chunking.ts +235 -0
- package/src/index.ts +112 -3
- package/src/message-decoders.ts +229 -0
- package/src/message-parser.ts +33 -0
- package/src/node/access-token-verifier.ts +363 -0
- package/src/node/admission.ts +153 -0
- package/src/node/file-transfer.ts +530 -0
- package/src/node/handoff-manifest.ts +77 -0
- package/src/node/index.ts +27 -0
- package/src/outbound-delivery.ts +231 -0
- package/src/peer-message-ledger.ts +193 -0
- package/src/protocol-session.ts +28 -0
- package/src/resume-buffer.ts +123 -0
- package/src/session-events.ts +198 -0
- package/src/session-message-handler.ts +282 -0
- package/src/session-query-messages.ts +42 -0
- package/src/session-resume-bridge.ts +252 -0
- package/src/usage-messages.ts +195 -0
- package/src/wire-messages.ts +165 -0
- package/dist/node/headless/index.cjs +0 -1
- package/dist/node/headless/index.d.ts +0 -2
- package/dist/node/headless/index.js +0 -1
- package/dist/node/headless-DG_MEbf0.js +0 -19
- package/dist/node/headless-DG_MEbf0.js.map +0 -1
- package/dist/node/headless-xq77JBq0.cjs +0 -18
- package/dist/node/index-CrJ2Lhn3.d.ts +0 -96
- package/dist/node/index-CrJ2Lhn3.d.ts.map +0 -1
- package/dist/node/index-JIvzrtaA.d.ts +0 -52
- package/dist/node/index-JIvzrtaA.d.ts.map +0 -1
- package/dist/node/index-JTD_xtEQ.d.ts +0 -96
- package/dist/node/index-JTD_xtEQ.d.ts.map +0 -1
- package/dist/node/index-y_HBOfzO.d.ts +0 -52
- package/dist/node/index-y_HBOfzO.d.ts.map +0 -1
- package/dist/node/programmatic/index.cjs +0 -1
- package/dist/node/programmatic/index.d.ts +0 -2
- package/dist/node/programmatic/index.js +0 -1
- package/dist/node/programmatic-6wLf68qJ.cjs +0 -1
- package/dist/node/programmatic-70dxIXtS.js +0 -2
- package/dist/node/programmatic-70dxIXtS.js.map +0 -1
- package/dist/node/testing/index.cjs +0 -1
- package/dist/node/testing/index.d.ts +0 -2
- package/dist/node/testing/index.js +0 -1
- package/src/__tests__/programmatic/programmatic-ask-user.test.ts +0 -32
- package/src/__tests__/programmatic/programmatic-driver.test.ts +0 -107
- package/src/__tests__/programmatic/programmatic-flows.test.ts +0 -140
- package/src/__tests__/transport-registry.stop-all.test.ts +0 -53
- package/src/headless/HeadlessInteractionChannel.ts +0 -129
- package/src/headless/__tests__/headless-channel-options.test.ts +0 -106
- package/src/headless/__tests__/headless-goal-runner.test.ts +0 -108
- package/src/headless/__tests__/headless-provider-failure.integration.test.ts +0 -143
- package/src/headless/__tests__/headless-runner-initialization.test.ts +0 -45
- package/src/headless/__tests__/headless-runner.test.ts +0 -508
- package/src/headless/__tests__/headless-skill-activation.integration.test.ts +0 -430
- package/src/headless/__tests__/headless-transport.test.ts +0 -267
- package/src/headless/cli-input.ts +0 -50
- package/src/headless/headless-runner.ts +0 -230
- package/src/headless/headless-stream-json.ts +0 -148
- package/src/headless/headless-transport.ts +0 -43
- package/src/headless/index.ts +0 -8
- package/src/headless/print-terminal.ts +0 -57
- package/src/programmatic/ProgrammaticInteractionChannel.ts +0 -82
- package/src/programmatic/createProgrammaticAgent.ts +0 -71
- package/src/programmatic/index.ts +0 -5
- package/src/testing/index.ts +0 -10
- package/src/transport-registry.ts +0 -103
package/README.md
CHANGED
|
@@ -1,6 +1,42 @@
|
|
|
1
1
|
# Agent Transport
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Browser-safe transport protocol and delivery substrate for the Robota SDK. The root exports shared
|
|
4
|
+
wire messages, session bridging, channel codecs, and delivery helpers. Browser decoders are also
|
|
5
|
+
available from `./client`; Node-only admission and handoff integrity helpers are available from
|
|
6
|
+
`./node`.
|
|
7
|
+
|
|
8
|
+
## Handoff offer migration
|
|
9
|
+
|
|
10
|
+
`@robota-sdk/agent-transport/node` no longer exports `buildHandoffManifest`,
|
|
11
|
+
`IBuildManifestInput`, `ISourceRuntimeState`, or `TManifestResult`. Handoff readiness and inventory
|
|
12
|
+
classification belong to `@robota-sdk/agent-interface-session-mobility`. A host composing a handoff
|
|
13
|
+
should check readiness before serializing, then pass the integrity of those exact bytes to the
|
|
14
|
+
mobility offer policy:
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
import {
|
|
18
|
+
assessHandoffReadiness,
|
|
19
|
+
prepareHandoffOffer,
|
|
20
|
+
type IPrepareHandoffOfferInput,
|
|
21
|
+
} from '@robota-sdk/agent-interface-session-mobility';
|
|
22
|
+
import { sealHandoffRecord } from '@robota-sdk/agent-transport/node';
|
|
23
|
+
|
|
24
|
+
function buildOffer(request: Omit<IPrepareHandoffOfferInput, 'integrity'>) {
|
|
25
|
+
const readiness = assessHandoffReadiness(request.runtime);
|
|
26
|
+
if (!readiness.ready) return readiness;
|
|
27
|
+
|
|
28
|
+
const { serialized, integrity } = sealHandoffRecord(request.record);
|
|
29
|
+
const offer = prepareHandoffOffer({ ...request, integrity });
|
|
30
|
+
if (!offer.built) return offer;
|
|
31
|
+
|
|
32
|
+
// Send serialized unchanged: offer.manifest.integrity describes these exact bytes.
|
|
33
|
+
return { manifest: offer.manifest, serialized };
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
For types, use `ISourceRuntimeState`, `IPrepareHandoffOfferInput`, and `THandoffOfferResult` from
|
|
38
|
+
session mobility. `IPrepareHandoffOfferInput` includes the integrity metadata produced by
|
|
39
|
+
`sealHandoffRecord`; the serialized payload remains a separate transport value.
|
|
4
40
|
|
|
5
41
|
## Installation
|
|
6
42
|
|
|
@@ -10,20 +46,30 @@ npm install @robota-sdk/agent-transport
|
|
|
10
46
|
|
|
11
47
|
## Available Transports
|
|
12
48
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
|
|
|
49
|
+
Headless execution belongs to `agent-framework`. HTTP, WebSocket, MCP, and WebRTC ship as standalone
|
|
50
|
+
transport packages.
|
|
51
|
+
|
|
52
|
+
| Transport | Package / Sub-path | Description |
|
|
53
|
+
| --------- | ------------------------------------ | ------------------------------------------------------- |
|
|
54
|
+
| Headless | `@robota-sdk/agent-framework` | Non-interactive text / JSON / stream-JSON output |
|
|
55
|
+
| HTTP | `@robota-sdk/agent-transport-http` | Hono-based REST adapter (Node.js / CF Workers / Lambda) |
|
|
56
|
+
| WebSocket | `@robota-sdk/agent-transport-ws` | Framework-agnostic real-time bidirectional adapter |
|
|
57
|
+
| MCP | `@robota-sdk/agent-transport-mcp` | Model Context Protocol server adapter |
|
|
58
|
+
| WebRTC | `@robota-sdk/agent-transport-webrtc` | Peer-to-peer data-channel adapter |
|
|
59
|
+
|
|
60
|
+
Scripted-provider test fixtures live in `@robota-sdk/agent-core/testing` (the former `./testing`
|
|
61
|
+
pass-through was removed, issue #2052).
|
|
62
|
+
|
|
63
|
+
All session-owning entry points treat `cwd` as provenance, not project trust. Pass a host-issued
|
|
64
|
+
`TWorkspaceProjectAccess` decision through `projectAccess`; omitting it creates a Restricted session
|
|
65
|
+
that does not load project contributions.
|
|
20
66
|
|
|
21
67
|
## Quick Start
|
|
22
68
|
|
|
23
69
|
### Headless
|
|
24
70
|
|
|
25
71
|
```typescript
|
|
26
|
-
import { createHeadlessTransport } from '@robota-sdk/agent-
|
|
72
|
+
import { createHeadlessTransport } from '@robota-sdk/agent-framework';
|
|
27
73
|
|
|
28
74
|
const transport = createHeadlessTransport({ outputFormat: 'text', prompt: 'Hello!' });
|
|
29
75
|
```
|
|
@@ -52,47 +98,59 @@ import { createMcpTransport } from '@robota-sdk/agent-transport-mcp';
|
|
|
52
98
|
const transport = createMcpTransport({ name: 'my-agent', version: '1.0.0' });
|
|
53
99
|
```
|
|
54
100
|
|
|
55
|
-
### TUI (Ink/React)
|
|
101
|
+
### TUI presentation (Ink/React)
|
|
56
102
|
|
|
57
103
|
```typescript
|
|
58
|
-
import {
|
|
59
|
-
import type { IRenderOptions } from '@robota-sdk/agent-
|
|
104
|
+
import { renderApp } from '@robota-sdk/agent-ui-terminal';
|
|
105
|
+
import type { IRenderOptions } from '@robota-sdk/agent-ui-terminal';
|
|
60
106
|
|
|
61
107
|
declare const options: IRenderOptions;
|
|
62
|
-
|
|
108
|
+
await renderApp(options);
|
|
63
109
|
```
|
|
64
110
|
|
|
65
|
-
> React and Ink dependencies are confined to the
|
|
66
|
-
>
|
|
111
|
+
> React and Ink dependencies are confined to the standalone
|
|
112
|
+
> `@robota-sdk/agent-ui-terminal` package. This core package stays React-free.
|
|
67
113
|
|
|
68
114
|
## Sub-path Imports
|
|
69
115
|
|
|
70
116
|
Import only what you need to keep bundles small:
|
|
71
117
|
|
|
72
118
|
```typescript
|
|
73
|
-
import { createHeadlessTransport } from '@robota-sdk/agent-
|
|
119
|
+
import { createHeadlessTransport } from '@robota-sdk/agent-framework';
|
|
74
120
|
import { WsTransport } from '@robota-sdk/agent-transport-ws';
|
|
75
|
-
import type { TServerMessage } from '@robota-sdk/agent-transport
|
|
121
|
+
import type { TServerMessage } from '@robota-sdk/agent-transport';
|
|
76
122
|
import { createHttpTransport } from '@robota-sdk/agent-transport-http';
|
|
77
123
|
import { createMcpTransport } from '@robota-sdk/agent-transport-mcp';
|
|
78
|
-
import {
|
|
124
|
+
import { renderApp } from '@robota-sdk/agent-ui-terminal';
|
|
79
125
|
```
|
|
80
126
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
127
|
+
The framework root owns headless and programmatic surfaces plus `TransportRegistry`. The transport
|
|
128
|
+
root owns transport-neutral wire messages, session bridging, channel codecs, and delivery helpers;
|
|
129
|
+
browser decoders are also available from `@robota-sdk/agent-transport/client`, while Node-only
|
|
130
|
+
admission and handoff integrity helpers live under `@robota-sdk/agent-transport/node`.
|
|
84
131
|
|
|
85
132
|
```typescript
|
|
86
|
-
import { createHeadlessTransport
|
|
133
|
+
import { createHeadlessTransport } from '@robota-sdk/agent-framework';
|
|
87
134
|
```
|
|
88
135
|
|
|
136
|
+
`TransportRegistry` accepts the discriminated base service/runner adapter union. It rejects active
|
|
137
|
+
restart before mutation, rolls partial startup back in reverse order, reports real runner failure
|
|
138
|
+
immediately, and returns a complete ordered aggregate whose pending runners become registry-owned
|
|
139
|
+
`abandoned` records on stop or rollback.
|
|
140
|
+
|
|
89
141
|
## Dependencies
|
|
90
142
|
|
|
91
|
-
- `@robota-sdk/agent-
|
|
143
|
+
- `@robota-sdk/agent-interface-analytics`
|
|
144
|
+
- `@robota-sdk/agent-interface-command`
|
|
145
|
+
- `@robota-sdk/agent-interface-execution`
|
|
146
|
+
- `@robota-sdk/agent-interface-session`
|
|
147
|
+
- `@robota-sdk/agent-interface-session-mobility`
|
|
92
148
|
- `@robota-sdk/agent-interface-transport`
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
149
|
+
|
|
150
|
+
The heavier protocol dependencies (`ws`, `hono`, `@modelcontextprotocol/sdk`,
|
|
151
|
+
`react`, `ink`, and friends) now live in the split transport packages
|
|
152
|
+
(`@robota-sdk/agent-transport-{http,ws,mcp}`) and presentation packages
|
|
153
|
+
(`@robota-sdk/agent-ui-{terminal,web}`).
|
|
96
154
|
|
|
97
155
|
## Links
|
|
98
156
|
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as decodeServerMessage, c as TServerMessage, i as decodeFrame, n as TMessageDecodeResult, o as TClientMessage, r as decodeClientMessage, s as TSeqServerMessage, t as MAX_INBOUND_FRAME_BYTES } from "./message-decoders-BB8n-H2X.js";
|
|
2
|
+
export { MAX_INBOUND_FRAME_BYTES, type TClientMessage, type TMessageDecodeResult, type TSeqServerMessage, type TServerMessage, decodeClientMessage, decodeFrame, decodeServerMessage };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as e,n as t,r as n,t as r}from"./message-decoders-CDmDoZPR.js";export{r as MAX_INBOUND_FRAME_BYTES,t as decodeClientMessage,n as decodeFrame,e as decodeServerMessage};
|