@martini-film/cli 0.1.0 → 0.3.0

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/cli.js CHANGED
@@ -1,22 +1,19 @@
1
- /**
2
- * The dispatcher. A command is either one of the compound commands (what no
3
- * single tool does) or any tool from the manifest by its MCP name — the same
4
- * vocabulary agents already know from the MCP, so nothing has to be translated
5
- * (docs/plans/agent-cli.md, decision 18).
6
- */
7
- import { createApiClient } from './api.js';
1
+ import { mkdirSync, writeFileSync } from 'node:fs';
2
+ import { resolve, join } from 'node:path';
3
+ import { CliApiError, createApiClient } from './api.js';
4
+ import { approvalSupport, runWithApproval } from './approve.js';
8
5
  import { flagBoolean, flagString, parseArgs } from './args.js';
9
6
  import { download, upload, wait } from './commands/assets.js';
10
- import { selectedFields, timeoutMs, wantsWait } from './commands/context.js';
7
+ import { assertKnownFlags, compoundBooleanFlags, CONTEXT_FLAG_ALIASES, needsLocalProjection, selectedFields, timeoutMs, wantsWait, } from './commands/context.js';
11
8
  import { files } from './commands/files.js';
12
9
  import { login, logout, whoami } from './commands/login.js';
13
10
  import { init, models, probe, tools, version } from './commands/tools.js';
14
11
  import { resolveConfig } from './config.js';
15
- import { renderHelp, renderToolHelp } from './help.js';
12
+ import { renderCompoundHelp, renderHelp, renderToolHelp } from './help.js';
16
13
  import { findTool, loadManifest } from './manifest.js';
17
- import { EXIT, printBytes, printError, printResult } from './output.js';
18
- import { ArgumentError, buildArguments } from './schema.js';
19
- import { producedAssetIds, waitForAssets, waitForDelivery } from './wait.js';
14
+ import { EXIT, assertRawDestination, printBytes, printError, printResult, printWarning, selectFields, warnNoFieldsMatched, } from './output.js';
15
+ import { ArgumentError, buildArguments, flagSpecs, GLOBAL_FLAG_NAMES } from './schema.js';
16
+ import { assetsOutcome, handleOutcome, producedAssetIds, waitForAssets, waitForDelivery, waitForJob, waitForRun, WaitTimeoutError, } from './wait.js';
20
17
  export const COMPOUND_COMMANDS = [
21
18
  login,
22
19
  logout,
@@ -31,24 +28,12 @@ export const COMPOUND_COMMANDS = [
31
28
  init,
32
29
  version,
33
30
  ];
34
- /** Flags the dispatcher owns; a tool never sees them as arguments. */
35
- export const GLOBAL_FLAG_NAMES = new Set([
36
- 'help',
37
- 'version',
38
- 'fields',
39
- 'out',
40
- 'wait',
41
- 'timeout',
42
- 'quiet',
43
- 'raw',
44
- 'project',
45
- 'canvas',
46
- 'run',
47
- 'api-key',
48
- 'api-url',
49
- 'profile',
31
+ export { GLOBAL_FLAG_NAMES };
32
+ const TOOL_ONLY_GLOBAL_FLAGS = new Set(['approve', 'max-olives', 'out-dir']);
33
+ const GLOBAL_FLAGS_FOR_COMPOUNDS = new Set([
34
+ ...[...GLOBAL_FLAG_NAMES].filter(flag => !TOOL_ONLY_GLOBAL_FLAGS.has(flag)),
35
+ ...CONTEXT_FLAG_ALIASES,
50
36
  ]);
51
- /** Single-item generation and rendering block by default; batches fan out and `martini wait` later (decision 5). */
52
37
  const WAIT_BY_DEFAULT = new Set([
53
38
  'create_node_and_generate',
54
39
  'generate',
@@ -57,7 +42,7 @@ const WAIT_BY_DEFAULT = new Set([
57
42
  'upscale_assets',
58
43
  'render_blender_take',
59
44
  ]);
60
- const RENDER_TOOLS = new Set(['render_timeline']);
45
+ const BOOLEAN_GLOBAL_FLAGS = new Set(['help', 'version', 'wait', 'quiet', 'raw', 'context', 'approve']);
61
46
  export async function main(options) {
62
47
  const env = options.env ?? process.env;
63
48
  const cwd = options.cwd ?? process.cwd();
@@ -66,36 +51,59 @@ export async function main(options) {
66
51
  ...(options.stderr ? { stderr: options.stderr } : {}),
67
52
  ...(options.isTTY !== undefined ? { isTTY: options.isTTY } : {}),
68
53
  };
69
- const parsed = parseArgs(options.argv);
70
54
  const manifest = options.manifest ?? loadManifest();
55
+ const toolFor = (command) => command && !COMPOUND_COMMANDS.some(candidate => candidate.name === command)
56
+ ? findTool(command, manifest)
57
+ : undefined;
58
+ const parsed = parseArgs(options.argv, (flag, command) => {
59
+ if (BOOLEAN_GLOBAL_FLAGS.has(flag))
60
+ return true;
61
+ const compound = COMPOUND_COMMANDS.find(candidate => candidate.name === command);
62
+ if (compound)
63
+ return compoundBooleanFlags(compound).includes(flag);
64
+ const tool = toolFor(command);
65
+ return tool ? flagSpecs(tool).some(spec => spec.flag === flag && spec.kind === 'boolean') : false;
66
+ }, (flag, command) => {
67
+ if (GLOBAL_FLAG_NAMES.has(flag))
68
+ return false;
69
+ const tool = toolFor(command);
70
+ return tool ? flagSpecs(tool).some(spec => spec.flag === flag && spec.kind === 'array') : false;
71
+ });
71
72
  try {
73
+ if (flagBoolean(parsed.flags, 'version') && parsed.command === undefined)
74
+ parsed.command = 'version';
72
75
  if (parsed.command === undefined ||
73
76
  parsed.command === 'help' ||
74
77
  (flagBoolean(parsed.flags, 'help') && !parsed.command)) {
75
78
  printResult(renderHelp(manifest, COMPOUND_COMMANDS), output);
76
79
  return EXIT.ok;
77
80
  }
78
- if (parsed.command === '--version' || (flagBoolean(parsed.flags, 'version') && parsed.command === undefined)) {
79
- parsed.command = 'version';
80
- }
81
81
  const compound = COMPOUND_COMMANDS.find(command => command.name === parsed.command);
82
82
  const tool = compound ? undefined : findTool(parsed.command, manifest);
83
83
  if (!compound && !tool) {
84
84
  throw new ArgumentError(`Unknown command "${parsed.command}". Run martini --help for the list.`);
85
85
  }
86
86
  if (flagBoolean(parsed.flags, 'help')) {
87
- printResult(tool ? renderToolHelp(tool) : `${compound.usage}\n\n${compound.summary}\n`, output);
87
+ printResult(tool ? renderToolHelp(tool) : renderCompoundHelp(compound), output);
88
88
  return EXIT.ok;
89
89
  }
90
+ if (compound)
91
+ assertKnownFlags(compound, parsed.flags, GLOBAL_FLAGS_FOR_COMPOUNDS);
92
+ else if (parsed.positionals.length > 0)
93
+ throw strayPositionalError(tool, parsed.positionals);
90
94
  const config = resolveConfig(parsed.flags, { env, cwd });
91
- const client = (options.createClient ??
92
- (resolved => createApiClient(resolved, { ...(options.fetch ? { fetch: options.fetch } : {}), env })))(config);
95
+ for (const warning of config.warnings)
96
+ printWarning('CONFIG_WARNING', warning, output);
97
+ const clientFor = options.createClient ??
98
+ (resolved => createApiClient(resolved, { ...(options.fetch ? { fetch: options.fetch } : {}), env }));
93
99
  const out = flagString(parsed.flags, 'out');
94
100
  if (out)
95
101
  output.out = out;
102
+ output.inRun = Boolean(config.runId);
96
103
  output.quiet = flagBoolean(parsed.flags, 'quiet') ?? false;
97
104
  const context = {
98
- client,
105
+ client: clientFor(config),
106
+ clientFor,
99
107
  config,
100
108
  manifest,
101
109
  flags: parsed.flags,
@@ -106,58 +114,188 @@ export async function main(options) {
106
114
  now: options.now ?? Date.now,
107
115
  sleep: options.sleep ?? (ms => new Promise(resolve => setTimeout(resolve, ms))),
108
116
  };
117
+ const select = selectedFields(context);
118
+ timeoutMs(context);
109
119
  if (compound) {
110
120
  const result = await compound.run(context);
111
- printResult(result, output);
121
+ const projected = select.length && result && typeof result === 'object' ? selectFields(result, select) : result;
122
+ warnNoFieldsMatched(projected, select, output);
123
+ printResult(projected, output);
112
124
  return EXIT.ok;
113
125
  }
114
- printResult(await runTool(tool, context, parsed.flags), output);
126
+ const result = await runTool(tool, context, parsed.flags);
127
+ warnNoFieldsMatched(result, select, output, knownResultFields(tool));
128
+ printResult(result, output);
115
129
  return EXIT.ok;
116
130
  }
117
131
  catch (error) {
132
+ if (error instanceof CliApiError && error.result !== undefined)
133
+ printResult(error.result, output);
118
134
  return printError(error, output);
119
135
  }
120
136
  }
121
137
  async function runTool(tool, context, flags) {
138
+ const properties = tool.inputSchema.properties ?? {};
139
+ const ignore = new Set(GLOBAL_FLAG_NAMES);
140
+ for (const alias of CONTEXT_FLAG_ALIASES) {
141
+ if (!(alias.replace(/-id$/, 'Id') in properties))
142
+ ignore.add(alias);
143
+ }
144
+ const useContext = flagBoolean(flags, 'context') !== false;
122
145
  const args = buildArguments(tool, flags, {
123
- ignore: GLOBAL_FLAG_NAMES,
124
- context: {
125
- ...(context.config.projectId ? { projectId: context.config.projectId } : {}),
126
- ...(context.config.canvasId ? { canvasId: context.config.canvasId } : {}),
127
- ...(context.config.runId ? { runId: context.config.runId } : {}),
128
- },
146
+ ignore,
147
+ context: useContext
148
+ ? {
149
+ ...(context.config.projectId ? { projectId: context.config.projectId } : {}),
150
+ ...(context.config.canvasId ? { canvasId: context.config.canvasId } : {}),
151
+ ...(context.config.runId ? { runId: context.config.runId } : {}),
152
+ }
153
+ : {},
129
154
  });
155
+ const outDir = flagString(flags, 'out-dir');
156
+ if (outDir) {
157
+ if (flagString(flags, 'out'))
158
+ throw new ArgumentError('Use either --out or --out-dir.');
159
+ if (tool.annotations.readOnlyHint !== true) {
160
+ throw new ArgumentError('--out-dir requires a read-only tool. Run this command without --out-dir.');
161
+ }
162
+ const result = await context.client.callTool(tool.name, args);
163
+ const media = result.media ?? [];
164
+ if (media.length === 0)
165
+ return result;
166
+ const headers = [...(result.text ?? '').matchAll(/^Asset ([A-Za-z0-9_-]+) \((\d+)\/\d+\)/gm)];
167
+ const directory = resolve(context.cwd, outDir);
168
+ const files = media.map((block, index) => {
169
+ const header = headers[index];
170
+ const assetId = header?.[1] ?? (media.length === 1 ? result.assetId : undefined);
171
+ if (!assetId) {
172
+ throw new CliApiError(`Media block ${index}: missing Asset header or single-media result.assetId.`, {
173
+ code: 'INVALID_RESPONSE',
174
+ status: 0,
175
+ tool: tool.name,
176
+ });
177
+ }
178
+ const extensions = {
179
+ 'image/jpeg': 'jpg',
180
+ 'image/png': 'png',
181
+ 'image/webp': 'webp',
182
+ 'audio/mpeg': 'mp3',
183
+ 'audio/wav': 'wav',
184
+ };
185
+ if (!block.mimeType || !Object.hasOwn(extensions, block.mimeType)) {
186
+ throw new CliApiError(`Media block ${index}: missing or unknown mimeType (${block.mimeType ?? 'missing'}).`, {
187
+ code: 'INVALID_RESPONSE',
188
+ status: 0,
189
+ tool: tool.name,
190
+ });
191
+ }
192
+ const ext = extensions[block.mimeType];
193
+ const name = `${header ? `${header[2]}-` : ''}${assetId.replace(/[^A-Za-z0-9_-]/g, '_')}.${ext}`;
194
+ return { path: join(directory, name), bytes: Buffer.from(block.data, 'base64') };
195
+ });
196
+ mkdirSync(directory, { recursive: true });
197
+ files.forEach(({ path, bytes }) => {
198
+ writeFileSync(path, bytes);
199
+ if (!context.output.quiet) {
200
+ ;
201
+ (context.output.stdout ?? (text => process.stdout.write(text)))(`${path}\n`);
202
+ }
203
+ });
204
+ context.output.quiet = true;
205
+ return undefined;
206
+ }
130
207
  if (flagBoolean(flags, 'raw')) {
131
- const raw = await context.client.callToolRaw(tool.name, args);
208
+ assertRawDestination(context.output);
209
+ let raw;
210
+ try {
211
+ raw = await context.client.callToolRaw(tool.name, args);
212
+ }
213
+ catch (error) {
214
+ if (error instanceof CliApiError && error.code === 'NOT_RAW_ELIGIBLE') {
215
+ throw new ArgumentError('This result cannot use --raw --out. Use --out-dir <dir> to write multiple media files.');
216
+ }
217
+ throw error;
218
+ }
132
219
  printBytes(raw.bytes, { ...context.output, contentType: raw.contentType });
133
- // The bytes are the result; nothing else goes to the file or stdout.
134
220
  delete context.output.out;
135
221
  context.output.quiet = true;
136
222
  return raw.meta;
137
223
  }
138
224
  const select = selectedFields(context);
139
- const result = await context.client.callTool(tool.name, args, select.length ? { select } : {});
140
- if (!wantsWait(context, WAIT_BY_DEFAULT.has(tool.name)))
141
- return result;
225
+ const shouldWait = wantsWait(context, WAIT_BY_DEFAULT.has(tool.name));
226
+ const approve = approvalFlags(tool, flags);
227
+ const local = shouldWait || approve !== null || needsLocalProjection(select);
228
+ const result = approve
229
+ ? await runWithApproval(tool, context.client, args, approve.support, approve.maxOlives === undefined ? {} : { maxOlives: approve.maxOlives })
230
+ : await context.client.callTool(tool.name, args, !local && select.length ? { select } : {});
231
+ if (!shouldWait)
232
+ return local ? selectFields(result, select) : result;
142
233
  const projectId = typeof args.projectId === 'string' ? args.projectId : context.config.projectId;
143
- if (!projectId)
144
- return result;
145
- const waitOptions = { timeoutMs: timeoutMs(context), now: context.now, sleep: context.sleep };
146
- if (RENDER_TOOLS.has(tool.name)) {
147
- const renderId = result?.renderId;
148
- if (typeof renderId === 'string') {
149
- const delivery = await waitForDelivery(context.client, projectId, { renderId }, waitOptions);
150
- return { ...result, delivery };
234
+ try {
235
+ return selectFields(await waitForToolResult(result, context, projectId), select);
236
+ }
237
+ catch (error) {
238
+ if (error instanceof CliApiError) {
239
+ const kept = selectFields(result, select);
240
+ const base = kept && typeof kept === 'object' && !Array.isArray(kept) ? kept : { result: kept };
241
+ error.result =
242
+ error instanceof WaitTimeoutError
243
+ ? { ...base, pending: error.pending, ...(error.settled.length ? { settled: error.settled } : {}) }
244
+ : { ...base, waitError: error.code };
151
245
  }
246
+ throw error;
247
+ }
248
+ }
249
+ async function waitForToolResult(result, context, projectId) {
250
+ if (!result || typeof result !== 'object')
251
+ return result;
252
+ const record = result;
253
+ if (record.approvalNeeded === true || record.generated === false)
152
254
  return result;
255
+ const waitOptions = { timeoutMs: timeoutMs(context), now: context.now, sleep: context.sleep };
256
+ if (typeof record.runId === 'string') {
257
+ return { ...record, waited: handleOutcome('run', await waitForRun(context.client, record.runId, waitOptions)) };
258
+ }
259
+ if (typeof record.renderId === 'string' || typeof record.exportId === 'string') {
260
+ const ids = {
261
+ ...(typeof record.renderId === 'string' ? { renderId: record.renderId } : {}),
262
+ ...(typeof record.exportId === 'string' ? { exportId: record.exportId } : {}),
263
+ };
264
+ return { ...record, waited: handleOutcome('render', await waitForDelivery(context.client, ids, waitOptions)) };
265
+ }
266
+ if (typeof record.jobId === 'string') {
267
+ return { ...record, waited: handleOutcome('job', await waitForJob(context.client, record.jobId, waitOptions)) };
153
268
  }
269
+ if (!projectId)
270
+ return result;
154
271
  const ids = producedAssetIds(result);
155
272
  if (ids.length === 0)
156
273
  return result;
157
- const assets = await waitForAssets(context.client, projectId, ids, waitOptions);
158
- return {
159
- ...(typeof result === 'object' && result ? result : { result }),
160
- waited: assets,
161
- };
274
+ return { ...record, waited: assetsOutcome(await waitForAssets(context.client, projectId, ids, waitOptions)) };
275
+ }
276
+ function strayPositionalError(tool, tokens) {
277
+ const list = flagSpecs(tool).find(spec => spec.kind === 'array');
278
+ return new ArgumentError(`Unexpected argument${tokens.length > 1 ? 's' : ''} ${tokens.map(token => JSON.stringify(token)).join(' ')} for ${tool.name}: a tool takes only --flags. Quote a value that contains spaces${list ? `; an array flag takes its values right after it (--${list.flag} a b)` : ''}. Run martini ${tool.name} --help.`);
279
+ }
280
+ function approvalFlags(tool, flags) {
281
+ const approve = flagBoolean(flags, 'approve') === true;
282
+ const rawMax = flagString(flags, 'max-olives');
283
+ if (!approve && rawMax === undefined)
284
+ return null;
285
+ const support = approvalSupport(tool);
286
+ if (!support) {
287
+ throw new ArgumentError(`${tool.name} takes no approval; --approve and --max-olives apply to generate_nodes, upscale_assets, enhance_draft, and the tools with an approval argument (see --help).`);
288
+ }
289
+ if (!approve)
290
+ throw new ArgumentError('--max-olives only applies together with --approve.');
291
+ if (rawMax === undefined)
292
+ return { support };
293
+ const maxOlives = Number(rawMax);
294
+ if (!Number.isFinite(maxOlives) || maxOlives < 0)
295
+ throw new ArgumentError('--max-olives must be a number of olives.');
296
+ return { support, maxOlives };
297
+ }
298
+ function knownResultFields(tool) {
299
+ return Object.keys(tool.outputSchema?.properties ?? {});
162
300
  }
163
301
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}