wtt-connect 0.2.33 → 0.2.35
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/package.json +1 -1
- package/src/main.js +34 -3
- package/src/runner.js +2 -1
- package/src/wtt-api.js +0 -11
package/package.json
CHANGED
package/src/main.js
CHANGED
|
@@ -133,7 +133,7 @@ Commands:
|
|
|
133
133
|
opendesign-upload --dir <path>
|
|
134
134
|
Alias for upload-artifact
|
|
135
135
|
preview-port --port <port> [--topic-id <id>]
|
|
136
|
-
Create a Cloud Sandbox port preview URL
|
|
136
|
+
Create a Cloud Sandbox port preview URL through sandbox outbox
|
|
137
137
|
help Show this help
|
|
138
138
|
`);
|
|
139
139
|
}
|
|
@@ -143,10 +143,10 @@ async function previewPort(config, argv) {
|
|
|
143
143
|
if (!Number.isInteger(port) || port < 1 || port > 65535) {
|
|
144
144
|
throw new Error('preview-port requires --port <1-65535>');
|
|
145
145
|
}
|
|
146
|
-
const
|
|
147
|
-
const preview = await api.createSandboxPreviewUrl(port, {
|
|
146
|
+
const preview = await createSandboxPreviewFromOutbox(config, port, {
|
|
148
147
|
name: String(argv.previewName || argv.title || '').trim(),
|
|
149
148
|
token: String(argv.previewToken || '').trim(),
|
|
149
|
+
timeoutMs: Number(argv.timeout || 15000),
|
|
150
150
|
});
|
|
151
151
|
const url = preview.preview_url || preview.url;
|
|
152
152
|
if (!url) throw new Error('Cloud Sandbox preview API returned no URL');
|
|
@@ -169,6 +169,37 @@ async function previewPort(config, argv) {
|
|
|
169
169
|
console.log(JSON.stringify({ ok: true, port, url, preview_url: url, markdown, published }, null, 2));
|
|
170
170
|
}
|
|
171
171
|
|
|
172
|
+
async function createSandboxPreviewFromOutbox(config, port, { name = '', token = '', timeoutMs = 15000 } = {}) {
|
|
173
|
+
if (!config.cloudSandbox && !process.env.WTT_SANDBOX_OUTBOX_URL) {
|
|
174
|
+
throw new Error('preview-port is only available inside a WTT Cloud Sandbox');
|
|
175
|
+
}
|
|
176
|
+
const base = String(process.env.WTT_SANDBOX_OUTBOX_URL || 'http://wtt.preview').replace(/\/+$/, '');
|
|
177
|
+
const response = await fetch(`${base}/preview-port`, {
|
|
178
|
+
method: 'POST',
|
|
179
|
+
headers: { 'content-type': 'application/json' },
|
|
180
|
+
body: JSON.stringify({
|
|
181
|
+
agent_id: config.agentId,
|
|
182
|
+
port,
|
|
183
|
+
...(name ? { name } : {}),
|
|
184
|
+
...(token ? { token } : {}),
|
|
185
|
+
}),
|
|
186
|
+
signal: AbortSignal.timeout(Math.max(1000, Math.min(Number(timeoutMs || 15000), 60000))),
|
|
187
|
+
});
|
|
188
|
+
const text = await response.text();
|
|
189
|
+
let data = {};
|
|
190
|
+
if (text) {
|
|
191
|
+
try {
|
|
192
|
+
data = JSON.parse(text);
|
|
193
|
+
} catch {
|
|
194
|
+
data = { detail: text };
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
if (!response.ok) {
|
|
198
|
+
throw new Error(`Cloud Sandbox outbox preview failed: ${data.detail || data.error || response.statusText || response.status}`);
|
|
199
|
+
}
|
|
200
|
+
return data;
|
|
201
|
+
}
|
|
202
|
+
|
|
172
203
|
async function uploadFile(config, argv) {
|
|
173
204
|
const topicId = String(argv.topicId || argv.sourceId || '').trim();
|
|
174
205
|
if (!topicId) throw new Error('upload-file requires --topic-id <topic_id>');
|
package/src/runner.js
CHANGED
|
@@ -937,7 +937,8 @@ function renderCloudSandboxStorageInstruction(config, topicId = '') {
|
|
|
937
937
|
'- Do not install large dependencies, clone large repositories, download datasets, or write bulky generated files into the workspace unless the user explicitly asks for local temporary storage.',
|
|
938
938
|
'- Keep only source edits, small manifests, notes, and temporary scratch files in the workspace.',
|
|
939
939
|
'- If a generated user-facing file is stored in R2/persistent output storage and should appear in WTT chat, still publish it with `wtt-connect upload-file` or a WTT artifact marker.',
|
|
940
|
-
`- If you start a web server in the sandbox and the user should preview it, expose that port with: wtt-
|
|
940
|
+
`- If you start a web server in the sandbox and the user should preview it, expose that port with: wtt-preview-port <port>. This command calls the Cloudflare Sandbox outbound Worker directly and prints a public preview URL; include that URL in your reply.`,
|
|
941
|
+
`- Only if you need WTT to publish the preview card automatically, use: wtt-connect preview-port --port <port>${topicId ? ` --topic-id ${topicId}` : ' --topic-id <topic_id>'}. This is a convenience wrapper around the same sandbox outbound Worker, not a backend preview API.`,
|
|
941
942
|
);
|
|
942
943
|
return lines.join('\n');
|
|
943
944
|
}
|
package/src/wtt-api.js
CHANGED
|
@@ -103,15 +103,4 @@ export class WTTApi {
|
|
|
103
103
|
});
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
-
async createSandboxPreviewUrl(port, { name = '', token = '' } = {}) {
|
|
107
|
-
if (!this.config.agentId) throw new Error('WTT_AGENT_ID is required');
|
|
108
|
-
return this.request('POST', `/cloud-agents/${encodeURIComponent(this.config.agentId)}/preview`, {
|
|
109
|
-
headers: this.agentHeaders(),
|
|
110
|
-
json: {
|
|
111
|
-
port,
|
|
112
|
-
...(name ? { name } : {}),
|
|
113
|
-
...(token ? { token } : {}),
|
|
114
|
-
},
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
106
|
}
|