@martini-film/cli 0.1.0 → 0.2.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/README.md +41 -16
- package/dist/api.js +11 -14
- package/dist/api.js.map +1 -1
- package/dist/approve.js +83 -0
- package/dist/approve.js.map +1 -0
- package/dist/args.js +3 -7
- package/dist/args.js.map +1 -1
- package/dist/cli.js +124 -48
- package/dist/cli.js.map +1 -1
- package/dist/commands/assets.js +100 -27
- package/dist/commands/assets.js.map +1 -1
- package/dist/commands/context.js +42 -8
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/files.js +23 -15
- package/dist/commands/files.js.map +1 -1
- package/dist/commands/login.js +145 -27
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/tools.js +71 -10
- package/dist/commands/tools.js.map +1 -1
- package/dist/config.js +5 -19
- package/dist/config.js.map +1 -1
- package/dist/generated/manifest.json +10118 -792
- package/dist/help.js +188 -17
- package/dist/help.js.map +1 -1
- package/dist/host.js +0 -6
- package/dist/host.js.map +1 -1
- package/dist/manifest.js +4 -9
- package/dist/manifest.js.map +1 -1
- package/dist/output.js +107 -19
- package/dist/output.js.map +1 -1
- package/dist/schema.js +70 -29
- package/dist/schema.js.map +1 -1
- package/dist/wait.js +62 -23
- package/dist/wait.js.map +1 -1
- package/package.json +1 -1
package/dist/schema.js
CHANGED
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* From a tool's JSON Schema to command flags, and from parsed flags back to the
|
|
3
|
-
* arguments object the tool expects. Scalars become `--kebab-case` flags,
|
|
4
|
-
* arrays repeat the flag (or take a JSON list), objects take JSON. `--json
|
|
5
|
-
* '{...}'` and `--json @file.json` merge a whole arguments object, so a plan a
|
|
6
|
-
* script computed is submitted without retyping it flag by flag.
|
|
7
|
-
*/
|
|
8
1
|
import { readFileSync } from 'node:fs';
|
|
9
2
|
export class ArgumentError extends Error {
|
|
10
3
|
constructor(message) {
|
|
@@ -18,6 +11,20 @@ export function kebab(property) {
|
|
|
18
11
|
.replace(/_/g, '-')
|
|
19
12
|
.toLowerCase();
|
|
20
13
|
}
|
|
14
|
+
function withoutNull(schema) {
|
|
15
|
+
const variants = schema.anyOf ?? schema.oneOf;
|
|
16
|
+
if (!variants) {
|
|
17
|
+
const nullable = Array.isArray(schema.type) && schema.type.includes('null');
|
|
18
|
+
return { schema, nullable };
|
|
19
|
+
}
|
|
20
|
+
const nonNull = variants.filter(variant => variant.type !== 'null' && variant.const !== null);
|
|
21
|
+
const nullable = nonNull.length < variants.length;
|
|
22
|
+
if (nullable && nonNull.length === 1) {
|
|
23
|
+
const { anyOf: _anyOf, oneOf: _oneOf, ...rest } = schema;
|
|
24
|
+
return { schema: { ...rest, ...nonNull[0] }, nullable };
|
|
25
|
+
}
|
|
26
|
+
return { schema, nullable };
|
|
27
|
+
}
|
|
21
28
|
function schemaKind(schema) {
|
|
22
29
|
if (!schema)
|
|
23
30
|
return 'json';
|
|
@@ -51,22 +58,34 @@ function schemaKind(schema) {
|
|
|
51
58
|
export function flagSpecs(tool) {
|
|
52
59
|
const properties = tool.inputSchema.properties ?? {};
|
|
53
60
|
const required = new Set(tool.inputSchema.required ?? []);
|
|
54
|
-
return Object.entries(properties).map(([property,
|
|
61
|
+
return Object.entries(properties).map(([property, raw]) => {
|
|
62
|
+
const { schema, nullable } = withoutNull(raw);
|
|
55
63
|
const kind = schemaKind(schema);
|
|
56
64
|
const spec = {
|
|
57
65
|
property,
|
|
58
66
|
flag: kebab(property),
|
|
59
67
|
kind,
|
|
60
68
|
required: required.has(property),
|
|
61
|
-
description: schema.description ?? '',
|
|
69
|
+
description: raw.description ?? schema.description ?? '',
|
|
62
70
|
};
|
|
63
71
|
if (schema.enum)
|
|
64
72
|
spec.enum = schema.enum;
|
|
65
|
-
if (kind === 'array')
|
|
73
|
+
if (kind === 'array') {
|
|
66
74
|
spec.items = schemaKind(schema.items);
|
|
75
|
+
if (schema.items?.enum)
|
|
76
|
+
spec.itemEnum = schema.items.enum;
|
|
77
|
+
}
|
|
78
|
+
if (nullable)
|
|
79
|
+
spec.nullable = true;
|
|
80
|
+
if (kind === 'json' && admitsString(schema))
|
|
81
|
+
spec.acceptsString = true;
|
|
67
82
|
return spec;
|
|
68
83
|
});
|
|
69
84
|
}
|
|
85
|
+
function admitsString(schema) {
|
|
86
|
+
const variants = schema.anyOf ?? schema.oneOf ?? [];
|
|
87
|
+
return variants.some(variant => variant.type === 'string' || typeof variant.const === 'string');
|
|
88
|
+
}
|
|
70
89
|
function readJsonArgument(raw, what) {
|
|
71
90
|
const text = raw.startsWith('@') ? readFileSync(raw === '@-' ? 0 : raw.slice(1), 'utf8') : raw;
|
|
72
91
|
try {
|
|
@@ -104,27 +123,34 @@ function coerceScalar(raw, kind, what) {
|
|
|
104
123
|
return readJsonArgument(raw, what);
|
|
105
124
|
}
|
|
106
125
|
}
|
|
107
|
-
|
|
126
|
+
const CONTEXT_HINTS = {
|
|
127
|
+
projectId: '--project <id> or MARTINI_PROJECT_ID',
|
|
128
|
+
canvasId: '--canvas <id> or MARTINI_CANVAS_ID',
|
|
129
|
+
runId: '--run <id> or MARTINI_RUN_ID',
|
|
130
|
+
};
|
|
108
131
|
export function buildArguments(tool, flags, options = {}) {
|
|
109
132
|
const specs = flagSpecs(tool);
|
|
110
133
|
const byFlag = new Map(specs.map(spec => [spec.flag, spec]));
|
|
111
134
|
const args = {};
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
const
|
|
115
|
-
|
|
135
|
+
const mergeFlags = byFlag.has('json') ? ['args'] : ['args', 'json'];
|
|
136
|
+
for (const mergeFlag of mergeFlags) {
|
|
137
|
+
const value = flags.get(mergeFlag);
|
|
138
|
+
if (value === undefined || value === true)
|
|
139
|
+
continue;
|
|
140
|
+
const raw = Array.isArray(value) ? value[value.length - 1] : value;
|
|
141
|
+
const merged = readJsonArgument(raw, `--${mergeFlag}`);
|
|
116
142
|
if (!merged || typeof merged !== 'object' || Array.isArray(merged)) {
|
|
117
|
-
throw new ArgumentError(
|
|
143
|
+
throw new ArgumentError(`--${mergeFlag} must be an object of tool arguments.`);
|
|
118
144
|
}
|
|
119
145
|
Object.assign(args, merged);
|
|
120
146
|
}
|
|
121
147
|
for (const [flag, value] of flags) {
|
|
122
|
-
if (flag
|
|
148
|
+
if (mergeFlags.includes(flag) || options.ignore?.has(flag))
|
|
123
149
|
continue;
|
|
124
150
|
const spec = byFlag.get(flag);
|
|
125
151
|
if (!spec) {
|
|
126
152
|
const known = specs.map(s => `--${s.flag}`).join(', ');
|
|
127
|
-
throw new ArgumentError(`Unknown flag --${flag} for ${tool.name}. Flags: ${known || '(none)'}.`);
|
|
153
|
+
throw new ArgumentError(`Unknown flag --${flag} for ${tool.name}. Flags: ${known || '(none)'}. If the server's tool surface is newer than this build (martini tools says), pass the argument with --json '{"…": …}' or update: npx @martini-film/cli@latest.`);
|
|
128
154
|
}
|
|
129
155
|
const what = `--${spec.flag}`;
|
|
130
156
|
if (value === true) {
|
|
@@ -142,28 +168,43 @@ export function buildArguments(tool, flags, options = {}) {
|
|
|
142
168
|
: values.map(raw => coerceScalar(raw, spec.items === 'json' ? 'string' : (spec.items ?? 'string'), what));
|
|
143
169
|
continue;
|
|
144
170
|
}
|
|
145
|
-
|
|
171
|
+
const last = values[values.length - 1];
|
|
172
|
+
if (spec.nullable && last === 'null') {
|
|
173
|
+
args[spec.property] = null;
|
|
174
|
+
}
|
|
175
|
+
else if (spec.acceptsString && !last.startsWith('@') && !/^[[{"]/.test(last.trim())) {
|
|
176
|
+
args[spec.property] = last;
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
args[spec.property] = coerceScalar(last, spec.kind, what);
|
|
180
|
+
}
|
|
146
181
|
}
|
|
147
|
-
// Context (the run's project, the configured canvas) fills what the caller
|
|
148
|
-
// left out, before required-ness is judged — a sandbox never types --project-id.
|
|
149
182
|
const filled = options.context ? applyContextDefaults(tool, args, options.context) : args;
|
|
150
183
|
for (const spec of specs) {
|
|
151
184
|
if (spec.required && filled[spec.property] === undefined) {
|
|
152
|
-
|
|
185
|
+
const context = CONTEXT_HINTS[spec.property];
|
|
186
|
+
throw new ArgumentError(context
|
|
187
|
+
? `--${spec.flag} is required for ${tool.name}. Set it once instead: ${context}, or a .martini/config.json (a run sandbox has one).`
|
|
188
|
+
: `--${spec.flag} is required for ${tool.name}.`);
|
|
153
189
|
}
|
|
154
190
|
}
|
|
155
191
|
return filled;
|
|
156
192
|
}
|
|
157
|
-
|
|
193
|
+
const CONTEXT_ALTERNATIVES = [
|
|
194
|
+
{ tool: 'get_board_overview', context: 'projectId', typed: ['projectQuery', 'exactProjectName'] },
|
|
195
|
+
{ tool: 'run_workflow', context: 'canvasId', typed: ['workflowId'] },
|
|
196
|
+
];
|
|
158
197
|
export function applyContextDefaults(tool, args, context) {
|
|
159
198
|
const properties = tool.inputSchema.properties ?? {};
|
|
160
199
|
const filled = { ...args };
|
|
161
|
-
|
|
162
|
-
filled
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
200
|
+
for (const key of ['projectId', 'canvasId', 'runId']) {
|
|
201
|
+
if (!(key in properties) || filled[key] !== undefined || !context[key])
|
|
202
|
+
continue;
|
|
203
|
+
const replaced = CONTEXT_ALTERNATIVES.some(rule => rule.tool === tool.name && rule.context === key && rule.typed.some(typed => filled[typed] !== undefined));
|
|
204
|
+
if (replaced)
|
|
205
|
+
continue;
|
|
206
|
+
filled[key] = context[key];
|
|
207
|
+
}
|
|
167
208
|
return filled;
|
|
168
209
|
}
|
|
169
210
|
//# sourceMappingURL=schema.js.map
|
package/dist/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/wait.js
CHANGED
|
@@ -1,29 +1,65 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Blocking on asynchronous work so the model spends one step, not a polling
|
|
3
|
-
* loop (docs/plans/agent-cli.md, decision 5). Assets and jobs poll with a
|
|
4
|
-
* jittered backoff; runs use get_run's server-side waitSeconds. On timeout the
|
|
5
|
-
* caller gets the ids still pending, so `martini wait` can resume.
|
|
6
|
-
*/
|
|
7
1
|
import { CliApiError } from './api.js';
|
|
8
2
|
export const DEFAULT_WAIT_TIMEOUT_MS = 50_000;
|
|
9
3
|
const TERMINAL_ASSET_STATUSES = new Set(['completed', 'failed', 'cancelled']);
|
|
10
4
|
const TERMINAL_RUN_STATUSES = new Set(['completed', 'failed', 'cancelled', 'needs_revision']);
|
|
5
|
+
export function assetsOutcome(assets) {
|
|
6
|
+
const statuses = assets.map(asset => asset.status);
|
|
7
|
+
const status = statuses.includes('failed') ? 'failed' : statuses.includes('cancelled') ? 'cancelled' : 'completed';
|
|
8
|
+
return { kind: 'asset', status, assets };
|
|
9
|
+
}
|
|
10
|
+
function handleRecord(kind, record) {
|
|
11
|
+
const value = record && typeof record === 'object' && !Array.isArray(record) ? record : {};
|
|
12
|
+
const wrapped = kind === 'render' ? undefined : value[kind];
|
|
13
|
+
return wrapped && typeof wrapped === 'object' && !Array.isArray(wrapped)
|
|
14
|
+
? wrapped
|
|
15
|
+
: value;
|
|
16
|
+
}
|
|
17
|
+
export function handleOutcome(kind, record) {
|
|
18
|
+
const value = handleRecord(kind, record);
|
|
19
|
+
const status = statusOf(value) ?? 'unknown';
|
|
20
|
+
switch (kind) {
|
|
21
|
+
case 'job':
|
|
22
|
+
return { kind, status, job: value };
|
|
23
|
+
case 'run':
|
|
24
|
+
return { kind, status, run: value };
|
|
25
|
+
case 'render':
|
|
26
|
+
return { kind, status, delivery: value };
|
|
27
|
+
}
|
|
28
|
+
}
|
|
11
29
|
export class WaitTimeoutError extends CliApiError {
|
|
30
|
+
kind;
|
|
12
31
|
pending;
|
|
13
|
-
|
|
32
|
+
settled;
|
|
33
|
+
constructor(kind, pending, options = {}) {
|
|
14
34
|
super(`Timed out waiting for ${pending.length} ${kind}${pending.length === 1 ? '' : 's'}: ${pending.join(', ')}`, {
|
|
15
35
|
code: 'TIMEOUT',
|
|
16
36
|
status: 0,
|
|
17
37
|
});
|
|
38
|
+
this.kind = kind;
|
|
18
39
|
this.pending = pending;
|
|
40
|
+
this.settled = options.settled ?? [];
|
|
41
|
+
}
|
|
42
|
+
resumeCommand() {
|
|
43
|
+
switch (this.kind) {
|
|
44
|
+
case 'asset':
|
|
45
|
+
return `martini wait ${this.pending.join(' ')} --timeout <seconds>`;
|
|
46
|
+
case 'job':
|
|
47
|
+
return `martini wait --job ${this.pending[0]} --timeout <seconds>`;
|
|
48
|
+
case 'run':
|
|
49
|
+
return `martini wait --run ${this.pending[0]} --timeout <seconds>`;
|
|
50
|
+
case 'render':
|
|
51
|
+
return `martini wait --render ${this.pending[0]} --timeout <seconds>`;
|
|
52
|
+
}
|
|
19
53
|
}
|
|
20
54
|
}
|
|
21
55
|
function backoff(attempt) {
|
|
22
56
|
const base = Math.min(1000 * 1.5 ** attempt, 8000);
|
|
23
57
|
return Math.round(base * (0.8 + Math.random() * 0.4));
|
|
24
58
|
}
|
|
59
|
+
function pause(attempt, started, timeoutMs, now) {
|
|
60
|
+
return Math.max(0, Math.min(backoff(attempt), timeoutMs - (now() - started)));
|
|
61
|
+
}
|
|
25
62
|
const defaultSleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
26
|
-
/** Poll get_asset for each id until every one is terminal. Returns the final asset records. */
|
|
27
63
|
export async function waitForAssets(client, projectId, assetIds, options = {}) {
|
|
28
64
|
const timeoutMs = options.timeoutMs ?? DEFAULT_WAIT_TIMEOUT_MS;
|
|
29
65
|
const now = options.now ?? Date.now;
|
|
@@ -44,12 +80,11 @@ export async function waitForAssets(client, projectId, assetIds, options = {}) {
|
|
|
44
80
|
if (pending.length === 0)
|
|
45
81
|
return assetIds.map(id => settled.get(id));
|
|
46
82
|
if (now() - started >= timeoutMs)
|
|
47
|
-
throw new WaitTimeoutError('asset', pending);
|
|
48
|
-
await sleep(
|
|
83
|
+
throw new WaitTimeoutError('asset', pending, { settled: [...settled.values()] });
|
|
84
|
+
await sleep(pause(attempt, started, timeoutMs, now));
|
|
49
85
|
attempt += 1;
|
|
50
86
|
}
|
|
51
87
|
}
|
|
52
|
-
/** Poll get_jobs for one job until it is terminal. */
|
|
53
88
|
export async function waitForJob(client, jobId, options = {}) {
|
|
54
89
|
const timeoutMs = options.timeoutMs ?? DEFAULT_WAIT_TIMEOUT_MS;
|
|
55
90
|
const now = options.now ?? Date.now;
|
|
@@ -63,30 +98,33 @@ export async function waitForJob(client, jobId, options = {}) {
|
|
|
63
98
|
return result;
|
|
64
99
|
if (now() - started >= timeoutMs)
|
|
65
100
|
throw new WaitTimeoutError('job', [jobId]);
|
|
66
|
-
await sleep(
|
|
101
|
+
await sleep(pause(attempt, started, timeoutMs, now));
|
|
67
102
|
attempt += 1;
|
|
68
103
|
}
|
|
69
104
|
}
|
|
70
|
-
/** get_run long-polls on the server (waitSeconds); loop until terminal or the client timeout. */
|
|
71
105
|
export async function waitForRun(client, runId, options = {}) {
|
|
72
106
|
const timeoutMs = options.timeoutMs ?? DEFAULT_WAIT_TIMEOUT_MS;
|
|
73
107
|
const now = options.now ?? Date.now;
|
|
108
|
+
const sleep = options.sleep ?? defaultSleep;
|
|
74
109
|
const started = now();
|
|
110
|
+
let attempt = 0;
|
|
75
111
|
for (;;) {
|
|
76
112
|
const remaining = timeoutMs - (now() - started);
|
|
77
113
|
if (remaining <= 0)
|
|
78
114
|
throw new WaitTimeoutError('run', [runId]);
|
|
79
|
-
const waitSeconds = Math.
|
|
115
|
+
const waitSeconds = Math.min(30, Math.floor(remaining / 1000));
|
|
80
116
|
const result = await client.callTool('get_run', { runId, view: 'status', waitSeconds });
|
|
81
117
|
const status = statusOf(result);
|
|
82
118
|
if (status && TERMINAL_RUN_STATUSES.has(status))
|
|
83
119
|
return result;
|
|
84
|
-
if (
|
|
120
|
+
if (waitSeconds === 0)
|
|
121
|
+
await sleep(pause(attempt, started, timeoutMs, now));
|
|
122
|
+
else if (options.sleep && now() - started < timeoutMs)
|
|
85
123
|
await options.sleep(0);
|
|
124
|
+
attempt += 1;
|
|
86
125
|
}
|
|
87
126
|
}
|
|
88
|
-
|
|
89
|
-
export async function waitForDelivery(client, projectId, ids, options = {}) {
|
|
127
|
+
export async function waitForDelivery(client, ids, options = {}) {
|
|
90
128
|
const timeoutMs = options.timeoutMs ?? DEFAULT_WAIT_TIMEOUT_MS;
|
|
91
129
|
const now = options.now ?? Date.now;
|
|
92
130
|
const sleep = options.sleep ?? defaultSleep;
|
|
@@ -94,17 +132,16 @@ export async function waitForDelivery(client, projectId, ids, options = {}) {
|
|
|
94
132
|
let attempt = 0;
|
|
95
133
|
const label = ids.renderId ?? ids.exportId ?? 'delivery';
|
|
96
134
|
for (;;) {
|
|
97
|
-
const result = await client.callTool('get_timeline_delivery_status', {
|
|
135
|
+
const result = await client.callTool('get_timeline_delivery_status', { jobId: label });
|
|
98
136
|
const status = statusOf(result);
|
|
99
137
|
if (status && TERMINAL_ASSET_STATUSES.has(status))
|
|
100
138
|
return result;
|
|
101
139
|
if (now() - started >= timeoutMs)
|
|
102
140
|
throw new WaitTimeoutError('render', [label]);
|
|
103
|
-
await sleep(
|
|
141
|
+
await sleep(pause(attempt, started, timeoutMs, now));
|
|
104
142
|
attempt += 1;
|
|
105
143
|
}
|
|
106
144
|
}
|
|
107
|
-
/** The status of a tool result, wherever the tool put it: top level, or under job / run / render / asset. */
|
|
108
145
|
export function statusOf(result) {
|
|
109
146
|
if (!result)
|
|
110
147
|
return null;
|
|
@@ -118,15 +155,17 @@ export function statusOf(result) {
|
|
|
118
155
|
}
|
|
119
156
|
return null;
|
|
120
157
|
}
|
|
121
|
-
/** Asset ids a generation tool's result names, so --wait knows what to wait for. */
|
|
122
158
|
export function producedAssetIds(result) {
|
|
123
159
|
if (!result || typeof result !== 'object')
|
|
124
160
|
return [];
|
|
125
161
|
const record = result;
|
|
126
162
|
const ids = [];
|
|
127
163
|
const pushId = (value) => {
|
|
128
|
-
if (typeof value
|
|
129
|
-
|
|
164
|
+
if (typeof value !== 'string' || value.length === 0)
|
|
165
|
+
return;
|
|
166
|
+
if (/^(bin|annotation)-/.test(value))
|
|
167
|
+
return;
|
|
168
|
+
ids.push(value.replace(/^asset-/, ''));
|
|
130
169
|
};
|
|
131
170
|
pushId(record.assetId);
|
|
132
171
|
pushId(record.nodeId);
|
package/dist/wait.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wait.js","sourceRoot":"","sources":["../src/wait.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wait.js","sourceRoot":"","sources":["../src/wait.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@martini-film/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "The Martini command-line interface for agents and scripts: every MCP tool as a command, plus upload, download, wait, files, probe, and login",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|