@jovie/cli 26.9.16 → 26.10.1

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.
@@ -0,0 +1,92 @@
1
+ import { JovieInputError, JovieRequestError, normalizeBaseUrl, parseRetryAfterSeconds, readResponseBody, } from './client.js';
2
+ /** Internal worker credentials are supplied ephemerally, never saved or flags. */
3
+ export async function invokeFleetAction(id, input, options) {
4
+ const token = options.workerToken;
5
+ if (!token ||
6
+ !/^jwf\.[a-f0-9-]{36}\.[a-z][a-z0-9-]{2,63}\.[A-Za-z0-9_-]{43}$/.test(token))
7
+ throw new JovieInputError('A scoped JOVIE_WORKER_TOKEN is required for fleet commands.');
8
+ if (!/^[a-f0-9-]{36}$/.test(input.profile) ||
9
+ token.split('.')[1] !== input.profile)
10
+ throw new JovieInputError('Worker profile does not match the credential.');
11
+ if (input.key.length < 8 || input.key.length > 128)
12
+ throw new JovieInputError('Supply a stable --idempotency-key (8–128 characters). Reuse it only when retrying this invocation.');
13
+ let value;
14
+ try {
15
+ value = JSON.parse(input.value);
16
+ }
17
+ catch {
18
+ throw new JovieInputError('--input must be a JSON object.');
19
+ }
20
+ if (!value || typeof value !== 'object' || Array.isArray(value))
21
+ throw new JovieInputError('--input must be a JSON object.');
22
+ const origin = normalizeBaseUrl(options.baseUrl), url = new URL(origin);
23
+ if (url.protocol !== 'https:' &&
24
+ !['127.0.0.1', 'localhost', '[::1]'].includes(url.hostname))
25
+ throw new JovieInputError('Worker credentials require HTTPS (HTTP only on loopback).');
26
+ const timeout = AbortSignal.timeout(options.timeoutMs ?? 30_000);
27
+ const signal = options.signal
28
+ ? AbortSignal.any([options.signal, timeout])
29
+ : timeout;
30
+ let response;
31
+ try {
32
+ response = await (options.fetchImpl ?? globalThis.fetch)(`${origin}/api/v1/actions/${id}/invoke`, {
33
+ method: 'POST',
34
+ redirect: 'error',
35
+ headers: {
36
+ Authorization: `Bearer ${token}`,
37
+ 'Content-Type': 'application/json',
38
+ },
39
+ body: JSON.stringify({
40
+ schemaVersion: 1,
41
+ idempotencyKey: input.key,
42
+ context: {
43
+ profileId: input.profile,
44
+ channel: input.channel,
45
+ clientVersion: input.version,
46
+ },
47
+ input: value,
48
+ }),
49
+ signal,
50
+ });
51
+ }
52
+ catch {
53
+ throw new JovieRequestError('Fleet transport unavailable. Retry with the same idempotency key.', origin, undefined, undefined, undefined, 'TEMPORARILY_UNAVAILABLE');
54
+ }
55
+ let payload;
56
+ try {
57
+ payload = JSON.parse(await readResponseBody(response, signal));
58
+ }
59
+ catch {
60
+ throw new JovieRequestError('Invalid fleet response.', origin, response.status);
61
+ }
62
+ // Canonical results, including authorization denials, survive all adapters.
63
+ if (payload &&
64
+ typeof payload === 'object' &&
65
+ 'status' in payload &&
66
+ 'receipt' in payload)
67
+ return payload;
68
+ // These are emitted before a canonical invocation exists. Never forward
69
+ // arbitrary server codes, messages or bodies into agent diagnostics.
70
+ const error = payload && typeof payload === 'object' && 'error' in payload
71
+ ? payload.error
72
+ : undefined;
73
+ const knownError = error &&
74
+ typeof error === 'object' &&
75
+ 'code' in error &&
76
+ typeof error.code === 'string' &&
77
+ [
78
+ 'FEATURE_DISABLED',
79
+ 'VALIDATION_FAILED',
80
+ 'RATE_LIMITED',
81
+ 'TEMPORARILY_UNAVAILABLE',
82
+ ].includes(error.code)
83
+ ? {
84
+ code: error.code,
85
+ retryable: 'retryable' in error && typeof error.retryable === 'boolean'
86
+ ? error.retryable
87
+ : undefined,
88
+ }
89
+ : undefined;
90
+ throw new JovieRequestError(`Fleet request returned HTTP ${response.status}.`, origin, response.status, undefined, parseRetryAfterSeconds(response.headers.get('retry-after')), knownError?.code ?? 'TEMPORARILY_UNAVAILABLE', knownError?.retryable);
91
+ }
92
+ //# sourceMappingURL=fleet-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fleet-client.js","sourceRoot":"","sources":["../src/fleet-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,342 @@
1
+ export declare const FLEET_COMMANDS: readonly [{
2
+ readonly id: "fleet.register";
3
+ readonly path: readonly ["fleet", "register"];
4
+ readonly tool: "fleet_register";
5
+ readonly summary: "Invoke canonical fleet.register with a scoped worker identity.";
6
+ readonly readOnly: false;
7
+ readonly inputSchema: {
8
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
9
+ readonly type: "object";
10
+ readonly properties: {
11
+ readonly workerId: {
12
+ readonly type: "string";
13
+ readonly pattern: "^[a-z][a-z0-9-]{2,63}$";
14
+ };
15
+ readonly runtimeClass: {
16
+ readonly type: "string";
17
+ readonly minLength: 1;
18
+ readonly maxLength: 100;
19
+ };
20
+ readonly capabilities: {
21
+ readonly maxItems: 32;
22
+ readonly type: "array";
23
+ readonly items: {
24
+ readonly type: "string";
25
+ readonly minLength: 1;
26
+ readonly maxLength: 100;
27
+ };
28
+ };
29
+ readonly tools: {
30
+ readonly maxItems: 32;
31
+ readonly type: "array";
32
+ readonly items: {
33
+ readonly type: "string";
34
+ readonly minLength: 1;
35
+ readonly maxLength: 100;
36
+ };
37
+ };
38
+ readonly connectors: {
39
+ readonly maxItems: 32;
40
+ readonly type: "array";
41
+ readonly items: {
42
+ readonly type: "string";
43
+ readonly minLength: 1;
44
+ readonly maxLength: 100;
45
+ };
46
+ };
47
+ readonly availability: {
48
+ readonly type: "string";
49
+ readonly enum: readonly ["available", "busy", "offline"];
50
+ };
51
+ readonly specialization: {
52
+ readonly type: "string";
53
+ readonly minLength: 1;
54
+ readonly maxLength: 100;
55
+ };
56
+ };
57
+ readonly required: readonly ["workerId", "runtimeClass", "capabilities", "tools", "connectors", "availability"];
58
+ readonly additionalProperties: false;
59
+ };
60
+ }, {
61
+ readonly id: "fleet.status";
62
+ readonly path: readonly ["fleet", "status"];
63
+ readonly tool: "fleet_status";
64
+ readonly summary: "Invoke canonical fleet.status with a scoped worker identity.";
65
+ readonly readOnly: true;
66
+ readonly inputSchema: {
67
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
68
+ readonly type: "object";
69
+ readonly properties: {
70
+ readonly requestsAfter: {
71
+ readonly type: "string";
72
+ readonly format: "uuid";
73
+ readonly pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$";
74
+ };
75
+ readonly historyAfter: {
76
+ readonly type: "integer";
77
+ readonly minimum: 0;
78
+ readonly maximum: 9007199254740991;
79
+ };
80
+ readonly historyLimit: {
81
+ readonly type: "integer";
82
+ readonly minimum: 1;
83
+ readonly maximum: 100;
84
+ };
85
+ };
86
+ readonly additionalProperties: false;
87
+ };
88
+ }, {
89
+ readonly id: "work.next";
90
+ readonly path: readonly ["work", "next"];
91
+ readonly tool: "work_next";
92
+ readonly summary: "Invoke canonical work.next with a scoped worker identity.";
93
+ readonly readOnly: false;
94
+ readonly inputSchema: {
95
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
96
+ readonly type: "object";
97
+ readonly properties: {};
98
+ readonly additionalProperties: false;
99
+ };
100
+ }, {
101
+ readonly id: "work.claim";
102
+ readonly path: readonly ["work", "claim"];
103
+ readonly tool: "work_claim";
104
+ readonly summary: "Invoke canonical work.claim with a scoped worker identity.";
105
+ readonly readOnly: false;
106
+ readonly inputSchema: {
107
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
108
+ readonly type: "object";
109
+ readonly properties: {
110
+ readonly leaseId: {
111
+ readonly type: "string";
112
+ readonly format: "uuid";
113
+ readonly pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$";
114
+ };
115
+ };
116
+ readonly required: readonly ["leaseId"];
117
+ readonly additionalProperties: false;
118
+ };
119
+ }, {
120
+ readonly id: "work.report";
121
+ readonly path: readonly ["work", "report"];
122
+ readonly tool: "work_report";
123
+ readonly summary: "Invoke canonical work.report with a scoped worker identity.";
124
+ readonly readOnly: false;
125
+ readonly inputSchema: {
126
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
127
+ readonly type: "object";
128
+ readonly properties: {
129
+ readonly leaseId: {
130
+ readonly type: "string";
131
+ readonly format: "uuid";
132
+ readonly pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$";
133
+ };
134
+ readonly outcome: {
135
+ readonly type: "string";
136
+ readonly enum: readonly ["completed", "failed", "blocked"];
137
+ };
138
+ readonly summary: {
139
+ readonly type: "string";
140
+ readonly minLength: 1;
141
+ readonly maxLength: 2000;
142
+ };
143
+ readonly evidence: {
144
+ readonly minItems: 1;
145
+ readonly maxItems: 10;
146
+ readonly type: "array";
147
+ readonly items: {
148
+ readonly type: "object";
149
+ readonly properties: {
150
+ readonly ref: {
151
+ readonly type: "string";
152
+ readonly minLength: 1;
153
+ readonly maxLength: 500;
154
+ };
155
+ readonly summary: {
156
+ readonly type: "string";
157
+ readonly minLength: 1;
158
+ readonly maxLength: 1000;
159
+ };
160
+ };
161
+ readonly required: readonly ["ref", "summary"];
162
+ readonly additionalProperties: false;
163
+ };
164
+ };
165
+ };
166
+ readonly required: readonly ["leaseId", "outcome", "summary", "evidence"];
167
+ readonly additionalProperties: false;
168
+ };
169
+ }, {
170
+ readonly id: "defect.report";
171
+ readonly path: readonly ["defect", "report"];
172
+ readonly tool: "defect_report";
173
+ readonly summary: "Invoke canonical defect.report with a scoped worker identity.";
174
+ readonly readOnly: false;
175
+ readonly inputSchema: {
176
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
177
+ readonly type: "object";
178
+ readonly properties: {
179
+ readonly leaseId: {
180
+ readonly type: "string";
181
+ readonly format: "uuid";
182
+ readonly pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$";
183
+ };
184
+ readonly title: {
185
+ readonly type: "string";
186
+ readonly minLength: 1;
187
+ readonly maxLength: 200;
188
+ };
189
+ readonly command: {
190
+ readonly type: "string";
191
+ readonly minLength: 1;
192
+ readonly maxLength: 100;
193
+ };
194
+ readonly apiCode: {
195
+ readonly type: "string";
196
+ readonly minLength: 1;
197
+ readonly maxLength: 100;
198
+ };
199
+ readonly details: {
200
+ readonly type: "string";
201
+ readonly minLength: 1;
202
+ readonly maxLength: 4000;
203
+ };
204
+ readonly evidence: {
205
+ readonly minItems: 1;
206
+ readonly maxItems: 10;
207
+ readonly type: "array";
208
+ readonly items: {
209
+ readonly type: "object";
210
+ readonly properties: {
211
+ readonly ref: {
212
+ readonly type: "string";
213
+ readonly minLength: 1;
214
+ readonly maxLength: 500;
215
+ };
216
+ readonly summary: {
217
+ readonly type: "string";
218
+ readonly minLength: 1;
219
+ readonly maxLength: 1000;
220
+ };
221
+ };
222
+ readonly required: readonly ["ref", "summary"];
223
+ readonly additionalProperties: false;
224
+ };
225
+ };
226
+ };
227
+ readonly required: readonly ["leaseId", "title", "command", "apiCode", "details", "evidence"];
228
+ readonly additionalProperties: false;
229
+ };
230
+ }, {
231
+ readonly id: "fleet.directory";
232
+ readonly path: readonly ["fleet", "directory"];
233
+ readonly tool: "fleet_directory";
234
+ readonly summary: "Invoke canonical fleet.directory with a scoped worker identity.";
235
+ readonly readOnly: true;
236
+ readonly inputSchema: {
237
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
238
+ readonly type: "object";
239
+ readonly properties: {};
240
+ readonly additionalProperties: false;
241
+ };
242
+ }, {
243
+ readonly id: "work.request";
244
+ readonly path: readonly ["work", "request"];
245
+ readonly tool: "work_request";
246
+ readonly summary: "Invoke canonical work.request with a scoped worker identity.";
247
+ readonly readOnly: false;
248
+ readonly inputSchema: {
249
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
250
+ readonly type: "object";
251
+ readonly properties: {
252
+ readonly requestId: {
253
+ readonly type: "string";
254
+ readonly format: "uuid";
255
+ readonly pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$";
256
+ };
257
+ readonly kind: {
258
+ readonly type: "string";
259
+ readonly enum: readonly ["help", "dogfood", "research"];
260
+ };
261
+ readonly proposal: {
262
+ readonly type: "object";
263
+ readonly properties: {
264
+ readonly issueId: {
265
+ readonly type: "string";
266
+ readonly pattern: "^JOV-[1-9][0-9]*$";
267
+ };
268
+ readonly title: {
269
+ readonly type: "string";
270
+ readonly minLength: 1;
271
+ readonly maxLength: 200;
272
+ };
273
+ readonly acceptanceCriteria: {
274
+ readonly minItems: 1;
275
+ readonly maxItems: 10;
276
+ readonly type: "array";
277
+ readonly items: {
278
+ readonly type: "string";
279
+ readonly minLength: 1;
280
+ readonly maxLength: 500;
281
+ };
282
+ };
283
+ readonly existingWorkRefs: {
284
+ readonly maxItems: 10;
285
+ readonly type: "array";
286
+ readonly items: {
287
+ readonly type: "string";
288
+ readonly minLength: 1;
289
+ readonly maxLength: 500;
290
+ };
291
+ };
292
+ readonly command: {
293
+ readonly type: "string";
294
+ readonly enum: readonly ["artist.get", "artist.llms", "api.openapi", "docs.llms"];
295
+ };
296
+ readonly argument: {
297
+ readonly type: "string";
298
+ readonly minLength: 1;
299
+ readonly maxLength: 100;
300
+ };
301
+ readonly requiredTools: {
302
+ readonly maxItems: 32;
303
+ readonly type: "array";
304
+ readonly items: {
305
+ readonly type: "string";
306
+ readonly minLength: 1;
307
+ readonly maxLength: 100;
308
+ };
309
+ };
310
+ readonly requiredConnectors: {
311
+ readonly maxItems: 32;
312
+ readonly type: "array";
313
+ readonly items: {
314
+ readonly type: "string";
315
+ readonly minLength: 1;
316
+ readonly maxLength: 100;
317
+ };
318
+ };
319
+ readonly targetWorkerId: {
320
+ readonly type: "string";
321
+ readonly pattern: "^[a-z][a-z0-9-]{2,63}$";
322
+ };
323
+ readonly maxDurationSeconds: {
324
+ readonly type: "integer";
325
+ readonly minimum: 30;
326
+ readonly maximum: 3600;
327
+ };
328
+ readonly notAfter: {
329
+ readonly type: "string";
330
+ readonly format: "date-time";
331
+ readonly pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$";
332
+ };
333
+ };
334
+ readonly required: readonly ["issueId", "title", "acceptanceCriteria", "existingWorkRefs", "command", "requiredTools", "requiredConnectors", "maxDurationSeconds", "notAfter"];
335
+ readonly additionalProperties: false;
336
+ };
337
+ };
338
+ readonly required: readonly ["requestId", "kind", "proposal"];
339
+ readonly additionalProperties: false;
340
+ };
341
+ }];
342
+ //# sourceMappingURL=fleet-contract.generated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fleet-contract.generated.d.ts","sourceRoot":"","sources":["../src/fleet-contract.generated.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2XjB,CAAC"}