@drawcall/market 0.1.75 → 0.1.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/dist/agent.d.ts +2 -2
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +15 -3
- package/dist/agent.js.map +1 -1
- package/dist/asset-implementation.d.ts +7 -0
- package/dist/asset-implementation.d.ts.map +1 -1
- package/dist/asset-implementation.js +1 -0
- package/dist/asset-implementation.js.map +1 -1
- package/dist/cli.js +8 -21
- package/dist/cli.js.map +1 -1
- package/dist/commands/agent.d.ts +2 -42
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +8 -382
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/generate.d.ts +2 -0
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +3 -0
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/reference-images.d.ts +6 -0
- package/dist/commands/reference-images.d.ts.map +1 -0
- package/dist/commands/reference-images.js +28 -0
- package/dist/commands/reference-images.js.map +1 -0
- package/dist/contract.d.ts +4 -46
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +2 -8
- package/dist/contract.js.map +1 -1
- package/dist/generate.d.ts +2 -0
- package/dist/generate.d.ts.map +1 -1
- package/dist/generate.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/output.js +6 -6
- package/dist/output.js.map +1 -1
- package/dist/schemas.d.ts +3 -46
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +20 -46
- package/dist/schemas.js.map +1 -1
- package/dist/skill.d.ts +1 -1
- package/dist/skill.d.ts.map +1 -1
- package/dist/skill.js +2 -0
- package/dist/skill.js.map +1 -1
- package/package.json +1 -1
- package/skills/market/SKILL.md +2 -0
- package/src/agent.ts +17 -4
- package/src/asset-implementation.ts +8 -0
- package/src/cli.ts +19 -33
- package/src/commands/agent.ts +11 -474
- package/src/commands/generate.ts +5 -0
- package/src/commands/reference-images.ts +25 -0
- package/src/contract.ts +3 -9
- package/src/generate.ts +2 -0
- package/src/index.ts +0 -7
- package/src/output.ts +5 -5
- package/src/schemas.ts +24 -53
- package/src/skill.ts +2 -0
package/dist/commands/agent.js
CHANGED
|
@@ -1,381 +1,21 @@
|
|
|
1
|
-
import { randomUUID } from 'node:crypto';
|
|
2
|
-
import { link, mkdir, open, readFile, rm } from 'node:fs/promises';
|
|
3
|
-
import { basename, dirname, extname, join } from 'node:path';
|
|
4
|
-
import { ORPCError } from '@orpc/client';
|
|
5
1
|
import ora from 'ora';
|
|
6
2
|
import { getCliClient } from '../cli-client.js';
|
|
7
|
-
import { agentAndWait
|
|
3
|
+
import { agentAndWait } from '../agent.js';
|
|
4
|
+
import { loadReferenceImages } from './reference-images.js';
|
|
8
5
|
import { assetVersionRef } from '../output.js';
|
|
9
6
|
export async function agentCommand(goal, opts) {
|
|
10
|
-
validateDeferredOptions(opts);
|
|
11
7
|
const { client } = await getCliClient({ baseUrl: opts.baseUrl, requireAuth: true });
|
|
12
|
-
const
|
|
8
|
+
const referenceImages = await loadReferenceImages(opts.referenceImages ?? []);
|
|
13
9
|
const spinner = ora({
|
|
14
10
|
text: `Working on "${goal}"`,
|
|
15
11
|
isEnabled: Boolean(process.stderr.isTTY),
|
|
16
12
|
isSilent: !process.stderr.isTTY,
|
|
17
13
|
}).start();
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
printResult(result, opts.json ?? false);
|
|
24
|
-
}
|
|
25
|
-
catch (err) {
|
|
26
|
-
spinner.stop();
|
|
27
|
-
throw err;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
export async function waitAgentCommand(runFile, opts) {
|
|
31
|
-
const { client } = await getCliClient({ baseUrl: opts.baseUrl, requireAuth: true });
|
|
32
|
-
const handle = await readRunHandle(runFile);
|
|
33
|
-
await ensureDeferredStarted(client, handle);
|
|
34
|
-
const { runId } = handle;
|
|
35
|
-
const interrupt = interruptSignal();
|
|
36
|
-
const spinner = ora({
|
|
37
|
-
text: `Waiting for Market agent run ${runId}`,
|
|
38
|
-
isEnabled: Boolean(process.stderr.isTTY),
|
|
39
|
-
isSilent: !process.stderr.isTTY,
|
|
40
|
-
}).start();
|
|
41
|
-
let settled = false;
|
|
42
|
-
try {
|
|
43
|
-
const result = opts.approvalFile
|
|
44
|
-
? await resumeExistingAgent(client, runId, opts.approvalFile, interrupt.signal, writeAgentDiagnostic)
|
|
45
|
-
: await waitForExistingAgent(client, runId, interrupt.signal, writeAgentDiagnostic);
|
|
46
|
-
settled = true;
|
|
47
|
-
spinner.stop();
|
|
48
|
-
printResult(result, opts.json ?? false);
|
|
49
|
-
}
|
|
50
|
-
catch (error) {
|
|
51
|
-
spinner.stop();
|
|
52
|
-
throw error;
|
|
53
|
-
}
|
|
54
|
-
finally {
|
|
55
|
-
interrupt.dispose();
|
|
56
|
-
if (!settled && opts.approvalFile) {
|
|
57
|
-
await client.asset.agent.cancel({ runId }).catch(() => undefined);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
function validateDeferredOptions(opts) {
|
|
62
|
-
if (opts.deferGeneration && !opts.approvalFile) {
|
|
63
|
-
throw new Error('--defer-generation requires --approval-file <path>');
|
|
64
|
-
}
|
|
65
|
-
if (opts.deferGeneration && !opts.runFile) {
|
|
66
|
-
throw new Error('--defer-generation requires --run-file <path>');
|
|
67
|
-
}
|
|
68
|
-
if (opts.approvalFile && !opts.deferGeneration) {
|
|
69
|
-
throw new Error('--approval-file requires --defer-generation');
|
|
70
|
-
}
|
|
71
|
-
if (opts.runFile && !opts.deferGeneration) {
|
|
72
|
-
throw new Error('--run-file requires --defer-generation');
|
|
73
|
-
}
|
|
74
|
-
if (opts.deferGeneration && opts.images?.length) {
|
|
75
|
-
throw new Error('--image is not supported with --defer-generation');
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
function requiredRunFile(opts) {
|
|
79
|
-
if (!opts.runFile)
|
|
80
|
-
throw new Error('Run file is required');
|
|
81
|
-
return opts.runFile;
|
|
82
|
-
}
|
|
83
|
-
function requiredApprovalFile(opts) {
|
|
84
|
-
if (!opts.approvalFile)
|
|
85
|
-
throw new Error('Approval file is required');
|
|
86
|
-
return opts.approvalFile;
|
|
87
|
-
}
|
|
88
|
-
export async function runDeferredAgent(client, input, approvalFile, runFile, emitDiagnostic = writeAgentDiagnostic) {
|
|
89
|
-
const interrupt = interruptSignal();
|
|
90
|
-
const watch = new AbortController();
|
|
91
|
-
const stopWatch = () => watch.abort(interrupt.signal.reason);
|
|
92
|
-
interrupt.signal.addEventListener('abort', stopWatch, { once: true });
|
|
93
|
-
const runId = randomUUID();
|
|
94
|
-
const handle = { version: 1, runId, input };
|
|
95
|
-
let runReachable = false;
|
|
96
|
-
let settled = false;
|
|
97
|
-
try {
|
|
98
|
-
// Persist the client-selected idempotency key and restart input before the
|
|
99
|
-
// RPC. A lost start response is recoverable without creating a second run.
|
|
100
|
-
await persistRunHandle(runFile, handle);
|
|
101
|
-
emitDiagnostic(runHandleDiagnosticLine(runId, runFile));
|
|
102
|
-
await ensureDeferredStarted(client, handle);
|
|
103
|
-
runReachable = true;
|
|
104
|
-
const outcome = await resumeExistingAgent(client, runId, approvalFile, watch.signal, emitDiagnostic);
|
|
105
|
-
settled = true;
|
|
106
|
-
return outcome;
|
|
107
|
-
}
|
|
108
|
-
finally {
|
|
109
|
-
watch.abort();
|
|
110
|
-
interrupt.dispose();
|
|
111
|
-
if (!settled && runReachable) {
|
|
112
|
-
try {
|
|
113
|
-
await client.asset.agent.cancel({ runId });
|
|
114
|
-
}
|
|
115
|
-
catch {
|
|
116
|
-
// Best-effort cleanup must not replace the actionable local error that
|
|
117
|
-
// brought us here. Before approval, the server run remains safely gated
|
|
118
|
-
// even if this request is lost.
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
export function runHandleDiagnosticLine(runId, runFile) {
|
|
124
|
-
return JSON.stringify({ event: 'market.agent.run.persisted', runId, runFile });
|
|
125
|
-
}
|
|
126
|
-
function writeAgentDiagnostic(line) {
|
|
127
|
-
process.stderr.write(`${line}\n`);
|
|
128
|
-
}
|
|
129
|
-
export function waitForExistingAgent(client, runId, signal = new AbortController().signal, emitDiagnostic = ignoreDiagnostic) {
|
|
130
|
-
return waitForResult(client, runId, signal, emitDiagnostic);
|
|
131
|
-
}
|
|
132
|
-
export async function resumeExistingAgent(client, runId, approvalFile, signal = new AbortController().signal, emitDiagnostic = ignoreDiagnostic) {
|
|
133
|
-
const operation = new AbortController();
|
|
134
|
-
const abortOperation = () => operation.abort(signal.reason);
|
|
135
|
-
if (signal.aborted)
|
|
136
|
-
abortOperation();
|
|
137
|
-
else
|
|
138
|
-
signal.addEventListener('abort', abortOperation, { once: true });
|
|
139
|
-
try {
|
|
140
|
-
const result = waitForResult(client, runId, operation.signal, emitDiagnostic).then((value) => ({ kind: 'result', value }), (error) => ({ kind: 'error', error }));
|
|
141
|
-
const decision = waitForApprovalFile(approvalFile, operation.signal).then((value) => ({ kind: 'decision', value }), (error) => ({ kind: 'error', error }));
|
|
142
|
-
const first = await Promise.race([result, decision]);
|
|
143
|
-
if (first.kind === 'error')
|
|
144
|
-
throw first.error;
|
|
145
|
-
if (first.kind === 'result')
|
|
146
|
-
return first.value;
|
|
147
|
-
if (operation.signal.aborted)
|
|
148
|
-
throw abortReason(operation.signal);
|
|
149
|
-
const controlRequest = first.value === 'approve'
|
|
150
|
-
? client.asset.agent.approve({ runId })
|
|
151
|
-
: client.asset.agent.cancel({ runId });
|
|
152
|
-
const control = await raceAbort(controlRequest, operation.signal);
|
|
153
|
-
if (!control.accepted && control.state !== 'generation-started') {
|
|
154
|
-
if (isSettledControlState(control.state))
|
|
155
|
-
return unwrapResult(await result);
|
|
156
|
-
throw new AgentError(`Agent ${first.value} rejected: ${control.state}`);
|
|
157
|
-
}
|
|
158
|
-
if (first.value === 'cancel' && control.accepted) {
|
|
159
|
-
// Observe the durable terminal status before returning the cancellation
|
|
160
|
-
// error so callers receive generationStarted evidence for handle cleanup.
|
|
161
|
-
return unwrapResult(await result);
|
|
162
|
-
}
|
|
163
|
-
return unwrapResult(await result);
|
|
164
|
-
}
|
|
165
|
-
finally {
|
|
166
|
-
operation.abort();
|
|
167
|
-
signal.removeEventListener('abort', abortOperation);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
function unwrapResult(outcome) {
|
|
171
|
-
if (outcome.kind === 'error')
|
|
172
|
-
throw outcome.error;
|
|
173
|
-
return outcome.value;
|
|
174
|
-
}
|
|
175
|
-
function isSettledControlState(state) {
|
|
176
|
-
return state === 'completed' || state === 'failed' || state === 'cancelled';
|
|
177
|
-
}
|
|
178
|
-
async function waitForResult(client, runId, signal, emitDiagnostic) {
|
|
179
|
-
for (;;) {
|
|
180
|
-
if (signal.aborted)
|
|
181
|
-
throw abortReason(signal);
|
|
182
|
-
const status = await raceAbort(client.asset.agent.status({ runId }), signal);
|
|
183
|
-
const result = settledResult(runId, status, emitDiagnostic);
|
|
184
|
-
if (result)
|
|
185
|
-
return result;
|
|
186
|
-
if (status.status === 'running' &&
|
|
187
|
-
(status.generation === 'deferred' || status.generation === 'awaiting-approval')) {
|
|
188
|
-
await abortableDelay(250, signal);
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
function raceAbort(promise, signal) {
|
|
193
|
-
if (signal.aborted)
|
|
194
|
-
return Promise.reject(abortReason(signal));
|
|
195
|
-
return new Promise((resolve, reject) => {
|
|
196
|
-
signal.addEventListener('abort', aborted, { once: true });
|
|
197
|
-
promise.then(completed, failed);
|
|
198
|
-
function completed(value) {
|
|
199
|
-
signal.removeEventListener('abort', aborted);
|
|
200
|
-
resolve(value);
|
|
201
|
-
}
|
|
202
|
-
function failed(error) {
|
|
203
|
-
signal.removeEventListener('abort', aborted);
|
|
204
|
-
reject(error);
|
|
205
|
-
}
|
|
206
|
-
function aborted() {
|
|
207
|
-
reject(abortReason(signal));
|
|
208
|
-
}
|
|
209
|
-
});
|
|
210
|
-
}
|
|
211
|
-
function settledResult(runId, status, emitDiagnostic) {
|
|
212
|
-
if (status.status === 'running')
|
|
213
|
-
return undefined;
|
|
214
|
-
emitDiagnostic(agentTerminalDiagnosticLine(runId, status));
|
|
215
|
-
if (status.status === 'completed')
|
|
216
|
-
return status.result;
|
|
217
|
-
if (status.status === 'failed')
|
|
218
|
-
throw new AgentError(status.error);
|
|
219
|
-
throw new AgentError('Agent run cancelled');
|
|
220
|
-
}
|
|
221
|
-
export function agentTerminalDiagnosticLine(runId, status) {
|
|
222
|
-
return JSON.stringify({
|
|
223
|
-
event: 'market.agent.run.terminal',
|
|
224
|
-
runId,
|
|
225
|
-
status: status.status,
|
|
226
|
-
generationStarted: status.generationStarted ?? null,
|
|
227
|
-
});
|
|
228
|
-
}
|
|
229
|
-
function ignoreDiagnostic() { }
|
|
230
|
-
async function waitForApprovalFile(path, signal) {
|
|
231
|
-
for (;;) {
|
|
232
|
-
if (signal.aborted)
|
|
233
|
-
throw abortReason(signal);
|
|
234
|
-
try {
|
|
235
|
-
const value = (await readFile(path, 'utf8')).trim();
|
|
236
|
-
if (value === 'approve' || value === 'cancel')
|
|
237
|
-
return value;
|
|
238
|
-
if (value) {
|
|
239
|
-
throw new Error(`Approval file must contain exactly "approve" or "cancel": ${path}`);
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
catch (error) {
|
|
243
|
-
if (!isMissingFile(error))
|
|
244
|
-
throw error;
|
|
245
|
-
}
|
|
246
|
-
await abortableDelay(100, signal);
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
function interruptSignal() {
|
|
250
|
-
const controller = new AbortController();
|
|
251
|
-
const onSigint = () => controller.abort(new AgentError('Interrupted by SIGINT'));
|
|
252
|
-
const onSigterm = () => controller.abort(new AgentError('Interrupted by SIGTERM'));
|
|
253
|
-
process.once('SIGINT', onSigint);
|
|
254
|
-
process.once('SIGTERM', onSigterm);
|
|
255
|
-
return {
|
|
256
|
-
signal: controller.signal,
|
|
257
|
-
dispose() {
|
|
258
|
-
process.off('SIGINT', onSigint);
|
|
259
|
-
process.off('SIGTERM', onSigterm);
|
|
260
|
-
},
|
|
261
|
-
};
|
|
262
|
-
}
|
|
263
|
-
function abortableDelay(ms, signal) {
|
|
264
|
-
if (signal.aborted)
|
|
265
|
-
return Promise.reject(abortReason(signal));
|
|
266
|
-
return new Promise((resolve, reject) => {
|
|
267
|
-
const timeout = setTimeout(done, ms);
|
|
268
|
-
signal.addEventListener('abort', aborted, { once: true });
|
|
269
|
-
function done() {
|
|
270
|
-
signal.removeEventListener('abort', aborted);
|
|
271
|
-
resolve();
|
|
272
|
-
}
|
|
273
|
-
function aborted() {
|
|
274
|
-
clearTimeout(timeout);
|
|
275
|
-
reject(abortReason(signal));
|
|
276
|
-
}
|
|
277
|
-
});
|
|
278
|
-
}
|
|
279
|
-
function abortReason(signal) {
|
|
280
|
-
return signal.reason instanceof Error ? signal.reason : new AgentError('Agent command aborted');
|
|
281
|
-
}
|
|
282
|
-
function isMissingFile(error) {
|
|
283
|
-
return hasErrorCode(error, 'ENOENT');
|
|
284
|
-
}
|
|
285
|
-
function hasErrorCode(error, code) {
|
|
286
|
-
return error instanceof Error && 'code' in error && error.code === code;
|
|
287
|
-
}
|
|
288
|
-
async function persistRunHandle(path, handle) {
|
|
289
|
-
const directory = dirname(path);
|
|
290
|
-
await mkdir(directory, { recursive: true });
|
|
291
|
-
const temporary = join(directory, `.${basename(path)}.${process.pid}.${randomUUID()}.tmp`);
|
|
292
|
-
let file;
|
|
293
|
-
try {
|
|
294
|
-
file = await open(temporary, 'wx', 0o600);
|
|
295
|
-
await file.writeFile(`${JSON.stringify(handle)}\n`, 'utf8');
|
|
296
|
-
await file.sync();
|
|
297
|
-
await file.close();
|
|
298
|
-
file = undefined;
|
|
299
|
-
// A same-directory hard link is an atomic create-if-absent. Refusing to
|
|
300
|
-
// replace a previous handle prevents a new run from orphaning an older one.
|
|
301
|
-
try {
|
|
302
|
-
await link(temporary, path);
|
|
303
|
-
}
|
|
304
|
-
catch (error) {
|
|
305
|
-
if (hasErrorCode(error, 'EEXIST')) {
|
|
306
|
-
throw new Error(`Run file already exists; recover or remove it first: ${path}`, {
|
|
307
|
-
cause: error,
|
|
308
|
-
});
|
|
309
|
-
}
|
|
310
|
-
throw error;
|
|
311
|
-
}
|
|
312
|
-
await rm(temporary);
|
|
313
|
-
const directoryHandle = await open(directory, 'r');
|
|
314
|
-
try {
|
|
315
|
-
await directoryHandle.sync();
|
|
316
|
-
}
|
|
317
|
-
finally {
|
|
318
|
-
await directoryHandle.close();
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
finally {
|
|
322
|
-
await file?.close().catch(() => undefined);
|
|
323
|
-
await rm(temporary, { force: true }).catch(() => undefined);
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
async function readRunHandle(path) {
|
|
327
|
-
let value;
|
|
328
|
-
try {
|
|
329
|
-
value = JSON.parse(await readFile(path, 'utf8'));
|
|
330
|
-
}
|
|
331
|
-
catch (error) {
|
|
332
|
-
throw new Error(`Run file does not contain a valid Market run handle: ${path}`, {
|
|
333
|
-
cause: error,
|
|
334
|
-
});
|
|
335
|
-
}
|
|
336
|
-
if (!isDeferredRunHandle(value)) {
|
|
337
|
-
throw new Error(`Run file does not contain a valid Market run handle: ${path}`);
|
|
338
|
-
}
|
|
339
|
-
return value;
|
|
340
|
-
}
|
|
341
|
-
function isDeferredRunHandle(value) {
|
|
342
|
-
if (!value || typeof value !== 'object')
|
|
343
|
-
return false;
|
|
344
|
-
const record = value;
|
|
345
|
-
const input = record.input;
|
|
346
|
-
return (record.version === 1 &&
|
|
347
|
-
typeof record.runId === 'string' &&
|
|
348
|
-
/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(record.runId) &&
|
|
349
|
-
Boolean(input) &&
|
|
350
|
-
typeof input === 'object' &&
|
|
351
|
-
typeof input.goal === 'string' &&
|
|
352
|
-
Object.keys(input).length === 1);
|
|
353
|
-
}
|
|
354
|
-
async function ensureDeferredStarted(client, handle) {
|
|
355
|
-
try {
|
|
356
|
-
const started = await client.asset.agent.startDeferred({
|
|
357
|
-
...handle.input,
|
|
358
|
-
runId: handle.runId,
|
|
359
|
-
});
|
|
360
|
-
if (started.runId !== handle.runId) {
|
|
361
|
-
throw new Error('Market returned a different deferred run ID');
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
catch (startError) {
|
|
365
|
-
if (isAuthoritativeStartRejection(startError))
|
|
366
|
-
throw startError;
|
|
367
|
-
// The start response may be lost after the Durable Object committed. A
|
|
368
|
-
// successful owner-checked status proves that this exact run is reachable.
|
|
369
|
-
try {
|
|
370
|
-
await client.asset.agent.status({ runId: handle.runId });
|
|
371
|
-
}
|
|
372
|
-
catch {
|
|
373
|
-
throw startError;
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
function isAuthoritativeStartRejection(error) {
|
|
378
|
-
return error instanceof ORPCError && error.status >= 400 && error.status < 500;
|
|
14
|
+
const result = await agentAndWait(client, {
|
|
15
|
+
goal,
|
|
16
|
+
referenceImages: referenceImages.length ? referenceImages : undefined,
|
|
17
|
+
}).finally(() => spinner.stop());
|
|
18
|
+
printResult(result, opts.json ?? false);
|
|
379
19
|
}
|
|
380
20
|
function printResult(result, asJson) {
|
|
381
21
|
if (asJson) {
|
|
@@ -398,18 +38,4 @@ function printResult(result, asJson) {
|
|
|
398
38
|
console.log(`Notes: ${notes}`);
|
|
399
39
|
}
|
|
400
40
|
}
|
|
401
|
-
async function toDataUrl(path) {
|
|
402
|
-
const data = await readFile(path);
|
|
403
|
-
return `data:${mimeFor(path)};base64,${data.toString('base64')}`;
|
|
404
|
-
}
|
|
405
|
-
function mimeFor(path) {
|
|
406
|
-
const ext = extname(path).toLowerCase();
|
|
407
|
-
if (ext === '.jpg' || ext === '.jpeg')
|
|
408
|
-
return 'image/jpeg';
|
|
409
|
-
if (ext === '.webp')
|
|
410
|
-
return 'image/webp';
|
|
411
|
-
if (ext === '.gif')
|
|
412
|
-
return 'image/gif';
|
|
413
|
-
return 'image/png';
|
|
414
|
-
}
|
|
415
41
|
//# sourceMappingURL=agent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAU9C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,IAAyB;IACxE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;IACnF,MAAM,eAAe,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,CAAA;IAE7E,MAAM,OAAO,GAAG,GAAG,CAAC;QAClB,IAAI,EAAE,eAAe,IAAI,GAAG;QAC5B,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QACxC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;KAChC,CAAC,CAAC,KAAK,EAAE,CAAA;IAEV,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE;QACxC,IAAI;QACJ,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;KACtE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IAChC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAA;AACzC,CAAC;AAED,SAAS,WAAW,CAAC,MAAmB,EAAE,MAAe;IACvD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;QACnC,OAAM;IACR,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;IAChC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;IACzC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;QACjF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YACnD,OAAO,CAAC,GAAG,CAAC,KAAK,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,CAAA;QACvE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,2BAA2B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACvF,CAAC;IACD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAA;IAChC,CAAC;AACH,CAAC"}
|
|
@@ -4,6 +4,8 @@ import type { MarketClient } from '../client.js';
|
|
|
4
4
|
import type { AssetAccess, AssetType } from '../schemas.js';
|
|
5
5
|
export interface GenerateCommandOptions {
|
|
6
6
|
type: AssetType;
|
|
7
|
+
/** `--reference-image` values: file paths or http(s) URLs. */
|
|
8
|
+
referenceImages?: string[];
|
|
7
9
|
cwd?: string;
|
|
8
10
|
baseUrl?: string;
|
|
9
11
|
access?: AssetAccess;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAY,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAA;AAEnC,OAAO,EAAqD,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACpG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAY,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAA;AAEnC,OAAO,EAAqD,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACpG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAKhD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAE3D,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,SAAS,CAAA;IACf,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAkCf;AAED,UAAU,cAAc;IACtB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,GAAG,CAAA;CACb;AAID,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,cAAc,GAAG;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAC7C,OAAO,CAAC,MAAM,CAAC,CAQjB;AA8BD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAM9C"}
|
|
@@ -4,7 +4,9 @@ import { GenerateError, startGeneration, waitForGeneration } from '../generate.j
|
|
|
4
4
|
import { resolve } from '../resolve.js';
|
|
5
5
|
import { install as runInstall } from '../install.js';
|
|
6
6
|
import { generatedInstallResult, generationStartedResult } from '../output.js';
|
|
7
|
+
import { loadReferenceImages } from './reference-images.js';
|
|
7
8
|
export async function generateCommand(description, opts) {
|
|
9
|
+
const referenceImages = await loadReferenceImages(opts.referenceImages ?? []);
|
|
8
10
|
const { client, baseUrl, authToken } = await getCliClient({
|
|
9
11
|
baseUrl: opts.baseUrl,
|
|
10
12
|
requireAuth: true,
|
|
@@ -14,6 +16,7 @@ export async function generateCommand(description, opts) {
|
|
|
14
16
|
const started = await startGeneration(client, {
|
|
15
17
|
description,
|
|
16
18
|
type: opts.type,
|
|
19
|
+
referenceImages: referenceImages.length ? referenceImages : undefined,
|
|
17
20
|
access: opts.access,
|
|
18
21
|
});
|
|
19
22
|
// Fast providers finish inline; slow, job-based ones return a job to poll.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,GAAiB,MAAM,KAAK,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAoB,MAAM,gBAAgB,CAAA;AAEpG,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve repeatable `--reference-image` values into what the Market API takes: an http(s) URL
|
|
3
|
+
* passes through untouched (the provider fetches it), a local file becomes a data URI.
|
|
4
|
+
*/
|
|
5
|
+
export declare function loadReferenceImages(refs: string[]): Promise<string[]>;
|
|
6
|
+
//# sourceMappingURL=reference-images.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference-images.d.ts","sourceRoot":"","sources":["../../src/commands/reference-images.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAErE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { extname } from 'node:path';
|
|
3
|
+
/**
|
|
4
|
+
* Resolve repeatable `--reference-image` values into what the Market API takes: an http(s) URL
|
|
5
|
+
* passes through untouched (the provider fetches it), a local file becomes a data URI.
|
|
6
|
+
*/
|
|
7
|
+
export function loadReferenceImages(refs) {
|
|
8
|
+
return Promise.all(refs.map(loadReferenceImage));
|
|
9
|
+
}
|
|
10
|
+
async function loadReferenceImage(ref) {
|
|
11
|
+
if (ref.startsWith('http://') || ref.startsWith('https://'))
|
|
12
|
+
return ref;
|
|
13
|
+
const data = await readFile(ref);
|
|
14
|
+
return `data:${mimeFor(ref)};base64,${data.toString('base64')}`;
|
|
15
|
+
}
|
|
16
|
+
function mimeFor(path) {
|
|
17
|
+
const ext = extname(path).toLowerCase();
|
|
18
|
+
if (ext === '.png')
|
|
19
|
+
return 'image/png';
|
|
20
|
+
if (ext === '.jpg' || ext === '.jpeg')
|
|
21
|
+
return 'image/jpeg';
|
|
22
|
+
if (ext === '.webp')
|
|
23
|
+
return 'image/webp';
|
|
24
|
+
if (ext === '.gif')
|
|
25
|
+
return 'image/gif';
|
|
26
|
+
throw new Error(`Unsupported reference image type "${ext}": ${path}`);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=reference-images.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference-images.js","sourceRoot":"","sources":["../../src/commands/reference-images.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAc;IAChD,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAA;AAClD,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,GAAW;IAC3C,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,GAAG,CAAA;IACvE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAA;IAChC,OAAO,QAAQ,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAA;AACjE,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;IACvC,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,WAAW,CAAA;IACtC,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO;QAAE,OAAO,YAAY,CAAA;IAC1D,IAAI,GAAG,KAAK,OAAO;QAAE,OAAO,YAAY,CAAA;IACxC,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,WAAW,CAAA;IACtC,MAAM,IAAI,KAAK,CAAC,qCAAqC,GAAG,MAAM,IAAI,EAAE,CAAC,CAAA;AACvE,CAAC"}
|
package/dist/contract.d.ts
CHANGED
|
@@ -77,6 +77,8 @@ export interface AssetInstallMetadata {
|
|
|
77
77
|
installMessage?: string;
|
|
78
78
|
/** Omitted by Market APIs released before capability discovery. */
|
|
79
79
|
canGenerate?: boolean;
|
|
80
|
+
/** Whether `generate` takes reference images for this type. */
|
|
81
|
+
acceptsReferenceImages?: boolean;
|
|
80
82
|
saveOnInstall: boolean;
|
|
81
83
|
readAssetDependenciesFromPackageJson: boolean;
|
|
82
84
|
omitUnchangedInstalledFilesOnUpload: boolean;
|
|
@@ -167,6 +169,7 @@ export declare const contract: {
|
|
|
167
169
|
environment: "environment";
|
|
168
170
|
flipbook: "flipbook";
|
|
169
171
|
}>>;
|
|
172
|
+
referenceImages: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
170
173
|
access: z.ZodOptional<z.ZodEnum<{
|
|
171
174
|
public: "public";
|
|
172
175
|
private: "private";
|
|
@@ -195,13 +198,7 @@ export declare const contract: {
|
|
|
195
198
|
agent: {
|
|
196
199
|
start: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
|
|
197
200
|
goal: z.ZodString;
|
|
198
|
-
|
|
199
|
-
}, z.core.$strict>, z.ZodObject<{
|
|
200
|
-
runId: z.ZodString;
|
|
201
|
-
}, z.core.$strip>, Record<never, never>, Record<never, never>>;
|
|
202
|
-
startDeferred: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
|
|
203
|
-
goal: z.ZodString;
|
|
204
|
-
runId: z.ZodString;
|
|
201
|
+
referenceImages: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
205
202
|
}, z.core.$strict>, z.ZodObject<{
|
|
206
203
|
runId: z.ZodString;
|
|
207
204
|
}, z.core.$strip>, Record<never, never>, Record<never, never>>;
|
|
@@ -209,12 +206,6 @@ export declare const contract: {
|
|
|
209
206
|
runId: z.ZodString;
|
|
210
207
|
}, z.core.$strip>, z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
211
208
|
status: z.ZodLiteral<"running">;
|
|
212
|
-
generation: z.ZodOptional<z.ZodEnum<{
|
|
213
|
-
deferred: "deferred";
|
|
214
|
-
"awaiting-approval": "awaiting-approval";
|
|
215
|
-
approved: "approved";
|
|
216
|
-
"generation-started": "generation-started";
|
|
217
|
-
}>>;
|
|
218
209
|
}, z.core.$strip>, z.ZodObject<{
|
|
219
210
|
status: z.ZodLiteral<"completed">;
|
|
220
211
|
result: z.ZodObject<{
|
|
@@ -229,43 +220,10 @@ export declare const contract: {
|
|
|
229
220
|
}>;
|
|
230
221
|
}, z.core.$strip>>;
|
|
231
222
|
}, z.core.$strip>;
|
|
232
|
-
generationStarted: z.ZodOptional<z.ZodBoolean>;
|
|
233
223
|
}, z.core.$strip>, z.ZodObject<{
|
|
234
224
|
status: z.ZodLiteral<"failed">;
|
|
235
225
|
error: z.ZodString;
|
|
236
|
-
generationStarted: z.ZodOptional<z.ZodBoolean>;
|
|
237
|
-
}, z.core.$strip>, z.ZodObject<{
|
|
238
|
-
status: z.ZodLiteral<"cancelled">;
|
|
239
|
-
generationStarted: z.ZodOptional<z.ZodBoolean>;
|
|
240
226
|
}, z.core.$strip>], "status">, Record<never, never>, Record<never, never>>;
|
|
241
|
-
approve: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
|
|
242
|
-
runId: z.ZodString;
|
|
243
|
-
}, z.core.$strip>, z.ZodObject<{
|
|
244
|
-
accepted: z.ZodBoolean;
|
|
245
|
-
state: z.ZodEnum<{
|
|
246
|
-
completed: "completed";
|
|
247
|
-
failed: "failed";
|
|
248
|
-
deferred: "deferred";
|
|
249
|
-
"awaiting-approval": "awaiting-approval";
|
|
250
|
-
approved: "approved";
|
|
251
|
-
"generation-started": "generation-started";
|
|
252
|
-
cancelled: "cancelled";
|
|
253
|
-
}>;
|
|
254
|
-
}, z.core.$strip>, Record<never, never>, Record<never, never>>;
|
|
255
|
-
cancel: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
|
|
256
|
-
runId: z.ZodString;
|
|
257
|
-
}, z.core.$strip>, z.ZodObject<{
|
|
258
|
-
accepted: z.ZodBoolean;
|
|
259
|
-
state: z.ZodEnum<{
|
|
260
|
-
completed: "completed";
|
|
261
|
-
failed: "failed";
|
|
262
|
-
deferred: "deferred";
|
|
263
|
-
"awaiting-approval": "awaiting-approval";
|
|
264
|
-
approved: "approved";
|
|
265
|
-
"generation-started": "generation-started";
|
|
266
|
-
cancelled: "cancelled";
|
|
267
|
-
}>;
|
|
268
|
-
}, z.core.$strip>, Record<never, never>, Record<never, never>>;
|
|
269
227
|
};
|
|
270
228
|
};
|
|
271
229
|
user: {
|
package/dist/contract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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"}
|