ai-sandbox-daytona: SDK functions that the adapter does not use — log stream, session stdin, PTY kill, native fs/git, network policy
メンテナーはふだん 1 日以内に返信
@jherr がすでに取り組んでいます。
2026年8月21日 から。
評価
この issue はまだ評価されていません。
説明
Versions: @tanstack/ai-sandbox-daytona 0.2.1, @daytona/sdk v0.191.0.
1. The spawn pump polls the full log; the SDK has a stream
The spawn pump calls getSessionCommandLogs every 400 ms and cuts the new bytes on the client (packages/ai-sandbox-daytona/src/handle.ts). The endpoint has no cursor, so each poll downloads the full log again. Transfer thus grows with the square of the log size. The same SDK method has a WebSocket form: getSessionCommandLogs(sessionId, commandId, onStdout, onStderr) (sdk-typescript/src/Process.ts, v0.191.0). This form follows the log on the server and splits stdout and stderr.
2. writableStdin: false, but session stdin exists
The capability comment says that no host-to-process stdin stream exists. The SDK has one: process.sendSessionCommandInput(sessionId, commandId, data) (v0.191.0). The execute request has a suppressInputEcho flag that keeps the input out of the output log. This can replace the prompt-file redirection for stdin-fed harnesses.
3. killableProcesses: false — correct for plain sessions; a PTY lifts it
The flag is correct for plain session commands. No kill API exists for a plain session command, and the delete-session behavior for a live command is not documented.
PTY sessions are different. process.createPty() returns a PtyHandle with kill(). The endpoint documentation says that PTY deletion terminates the process. A harness under a PTY makes kill() measurable, per the "measured, not asserted" rule in docs/sandbox/providers.md. That unlocks the follow journal strategy.
One effect: a PTY merges stdout and stderr into one stream. The journal carries the structured output, so the loss is small. This adds new data to the "out of scope" note in #1081. That note stays accurate for non-PTY sessions.
4. fs and git are shell re-implementations of native SDK APIs
fs.write puts the full file, as base64, into the command body. This adds 33 percent size and buffers the file through the exec pipeline. fs.read returns the content through the combined output buffer. The SDK has a native sandbox.fs with upload, download, and list. It is binary-safe and has none of these limits.
A native sandbox.git also exists. The header of packages/ai-sandbox/src/git-exec.ts says: "Providers WITH native git (Daytona, Cloudflare) may supply their own implementation instead." Native git.clone takes a path argument, not a shell string. This removes the /workspace remap gap of #1081 item 4 at its source.
5. Create parameters that the config cannot reach
DaytonaSandboxConfig has apiKey, apiUrl, target, snapshot, language, and workdir. These create parameters are in v0.191.0 and are not used:
networkBlockAll/networkAllowList/domainAllowList— egress control. A map fromdefineSandboxPolicynetwork rules turnsnetworkPolicytotrue. No other bundled provider reports this capability today.autoStopInterval/autoDeleteInterval/ephemeral— lifecycle control.ephemeral: truefitsreuse: 'none'runs.autoStopIntervalis half of the fix in #1083.name— the core passes a deterministicinput.idtocreate(), and the adapter discards it. Daytona accepts aname. With a name, an application can find the sandbox again from run context. The comment inprovider.createasks for this.
- 主要言語
- TypeScript
- スター
- 3.1k
- フォーク
- 340
- 平均マージ
- 2日 10時間
- マージ済み PR(30日)
- 174
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
TanStack/ai のほかの issue
-
StreamProcessor ignores the stream's message ids and files agent-loop calls on the wrong assistant message対応中かも @tombeckenham が今日担当しました。 オープンwaiting-on: maintainer
メンテナーはふだん 1 日以内に返信
-
StreamProcessor drops TEXT_MESSAGE_CHUNK events without a warning対応中かも @AlemTuzlak が今日担当しました。 オープンwaiting-on: maintainer
メンテナーはふだん 1 日以内に返信
-
feat(ai): add a timeout option to chat(), matching the media activities対応中かも @AlemTuzlak が 1 日前に担当しました。 オープンwaiting-on: maintainer
メンテナーはふだん 1 日以内に返信
-
Does a hosted provider package have to carry a key?対応中かも @AlemTuzlak が 2 日前に担当しました。 オープンwaiting-on: author
TanStack/ai#1506 · コメント 1 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
Client tools never execute against spec-compliant AG-UI servers (plain `success` RUN_FINISHED)対応中かも @jherr が 4 日前に担当しました。 オープンwaiting-on: maintainer
TanStack/ai#1464 · リアクション 1 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
rohitg00/agentmemory#1428 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
boxlite-ai/boxlite#1729 ·
メンテナーはふだん 1 日以内に返信
-
detectors enhancement good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
SM260845/readme-gen#1 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
angular/angularfire#3774 ·
メンテナーはふだん 2 日以内に返信