@promptframe/cli 0.0.0 → 0.1.2

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 CHANGED
@@ -1,6 +1,36 @@
1
1
  # @promptframe/cli
2
2
 
3
- Command line tools for PromptFrame component authoring.
3
+ PromptFrame component authoring CLI.
4
4
 
5
- This `0.0.0` release is a placeholder that reserves the package name and trusted publishing route. The first functional release will start at `0.1.0`.
5
+ Use it to inspect the public component standard, check component folders, validate manifests, package source archives, upload components, check build status, rebuild evidence indexes, and rerun layout/security probes.
6
6
 
7
+ ```bash
8
+ npm install -D @promptframe/cli
9
+ npx promptframe validate .
10
+ npx promptframe package . --out ./component.zip
11
+ npx promptframe upload ./component.zip --endpoint https://your-promptframe.example/api-proxy
12
+ npx promptframe status <buildId> --endpoint https://your-promptframe.example/api-proxy
13
+ ```
14
+
15
+ Endpoint resolution is explicit and public-safe:
16
+
17
+ 1. `--endpoint`
18
+ 2. `PROMPTFRAME_API_BASE`
19
+ 3. `REMOTION_MEDIA_API_BASE`
20
+ 4. local config written by `promptframe configure --endpoint <url>`
21
+
22
+ The CLI embeds no production, Tailscale, local Docker, or private PromptFrame endpoint default. Upload success only means the platform accepted the source package for trust-pipeline admission; use `status`, `reindex`, and `probe` to inspect build readiness, evidence/search readiness, and layout/security diagnostics.
23
+
24
+ Local and remote commands support stable JSON output:
25
+
26
+ ```bash
27
+ npx promptframe standard --json
28
+ npx promptframe doctor . --json
29
+ npx promptframe validate . --json
30
+ npx promptframe upload ./component.zip --endpoint "$PROMPTFRAME_API_BASE" --json
31
+ npx promptframe status <buildId> --json
32
+ npx promptframe reindex <buildId> --provider-kind cloud_embedding --json
33
+ npx promptframe probe <buildId> --level standard --json
34
+ ```
35
+
36
+ Every JSON response includes a stable `diagnostic.code`, for example `standard.completed`, `doctor.completed`, `validate.completed`, `upload.completed`, `status.completed`, `reindex.completed`, or `probe.completed`. `validate --json` also reports `checkedRuleIds` for the public policy checks it ran. JSON failures include `failureReason` and `retryable`. Missing endpoint failures exit with code `2` and use `<command>.endpoint.missing`.
package/dist/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  #!/usr/bin/env node
2
+ export {};
2
3
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,4 +1,599 @@
1
1
  #!/usr/bin/env node
2
- "use strict";
3
- console.log('@promptframe/cli 0.0.0 placeholder. Functional commands will ship in 0.1.0.');
2
+ import { createHash } from 'node:crypto';
3
+ import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync, } from 'node:fs';
4
+ import os from 'node:os';
5
+ import { basename, dirname, join, relative, resolve } from 'node:path';
6
+ import { COMPONENT_MANIFEST_SCHEMA_VERSION, COMPONENT_REF_VERSION, COMPONENT_STANDARD_VERSION, PROMPTFRAME_CONTRACTS_VERSION, parseComponentManifest, } from '@promptframe/contracts';
7
+ const command = process.argv[2] ?? 'help';
8
+ const args = process.argv.slice(3);
9
+ const REQUIRED_COMPONENT_FILES = [
10
+ 'package.json',
11
+ 'manifest.json',
12
+ 'src/Component.tsx',
13
+ 'src/schema.ts',
14
+ 'src/preview-props.json',
15
+ ];
16
+ const VALIDATE_CHECKED_RULE_IDS = [
17
+ 'manifest.identity.version',
18
+ 'manifest.component_type.supported',
19
+ 'evidence.schema_source_hash_present',
20
+ 'package.no_parent_imports',
21
+ ];
22
+ class PromptFrameCliError extends Error {
23
+ code;
24
+ exitCode;
25
+ constructor(message, code, exitCode = 1) {
26
+ super(message);
27
+ this.code = code;
28
+ this.exitCode = exitCode;
29
+ }
30
+ }
31
+ async function run(name, argv) {
32
+ switch (name) {
33
+ case 'standard':
34
+ standard();
35
+ break;
36
+ case 'doctor':
37
+ doctor(argv);
38
+ break;
39
+ case 'validate':
40
+ validate(argv);
41
+ break;
42
+ case 'package':
43
+ packageComponent(argv);
44
+ break;
45
+ case 'upload':
46
+ case 'status':
47
+ case 'reindex':
48
+ case 'probe':
49
+ await remoteCommand(name, argv);
50
+ break;
51
+ case 'configure':
52
+ configure(argv);
53
+ break;
54
+ case 'help':
55
+ case '--help':
56
+ case '-h':
57
+ help();
58
+ break;
59
+ default:
60
+ fail(`Unknown command: ${name}`, 'cli.command.unknown');
61
+ }
62
+ }
63
+ function standard() {
64
+ printJson({
65
+ command: 'standard',
66
+ contractsVersion: PROMPTFRAME_CONTRACTS_VERSION,
67
+ manifestSchemaVersion: COMPONENT_MANIFEST_SCHEMA_VERSION,
68
+ componentStandardVersion: COMPONENT_STANDARD_VERSION,
69
+ componentRefVersion: COMPONENT_REF_VERSION,
70
+ supportedComponentTypes: ['scene_template', 'contained_widget', 'overlay', 'transition_effect'],
71
+ diagnostic: diagnostic('standard.completed', 'info', 'Public PromptFrame component standard fetched.'),
72
+ });
73
+ }
74
+ function doctor(argv) {
75
+ const dir = resolve(firstPositionalArg(argv) ?? '.');
76
+ assertRequiredFiles(dir);
77
+ const output = {
78
+ command: 'doctor',
79
+ dir,
80
+ requiredFiles: REQUIRED_COMPONENT_FILES,
81
+ diagnostic: diagnostic('doctor.completed', 'info', 'Component directory contains required authoring files.'),
82
+ };
83
+ if (hasFlag(argv, '--json')) {
84
+ printJson(output);
85
+ return;
86
+ }
87
+ console.log(`doctor passed: ${dir}`);
88
+ }
89
+ function validate(argv) {
90
+ const dir = resolve(firstPositionalArg(argv) ?? '.');
91
+ const manifest = validateComponentDirectory(dir);
92
+ const output = {
93
+ command: 'validate',
94
+ dir,
95
+ manifest: {
96
+ id: manifest.id,
97
+ name: manifest.name,
98
+ displayName: manifest.displayName,
99
+ version: manifest.version,
100
+ componentType: manifest.componentType ?? manifest.layer,
101
+ },
102
+ checkedRuleIds: VALIDATE_CHECKED_RULE_IDS,
103
+ diagnostic: diagnostic('validate.completed', 'info', 'Component manifest and public source boundaries validated.'),
104
+ };
105
+ if (hasFlag(argv, '--json')) {
106
+ printJson(output);
107
+ return;
108
+ }
109
+ console.log(`validate passed: ${dir}`);
110
+ }
111
+ function packageComponent(argv) {
112
+ const artifact = packageDirectory(argv[0] ?? '.', valueAfter(argv, '--out'));
113
+ printJson({
114
+ command: 'package',
115
+ diagnostic: diagnostic('package.completed', 'info', 'Component source archive created.'),
116
+ out: artifact.out,
117
+ sizeBytes: artifact.sizeBytes,
118
+ sha256: artifact.sha256,
119
+ });
120
+ }
121
+ function validateComponentDirectory(dir) {
122
+ assertRequiredFiles(dir);
123
+ const manifestPath = join(dir, 'manifest.json');
124
+ const manifest = JSON.parse(readFileSync(manifestPath, 'utf8'));
125
+ const parsed = parseComponentManifest(normalizeLegacyManifest(manifest));
126
+ checkImportBoundary(dir);
127
+ return parsed;
128
+ }
129
+ function packageDirectory(componentDir, outArg) {
130
+ const dir = resolve(componentDir);
131
+ const manifest = validateComponentDirectory(dir);
132
+ const out = resolve(outArg ?? join(dir, '.component-packages', `${manifest.name}.zip`));
133
+ const files = collectPackageFiles(dir);
134
+ mkdirSync(dirname(out), { recursive: true });
135
+ writeFileSync(out, buildStoredZip(files));
136
+ const sizeBytes = statSync(out).size;
137
+ const sha256 = `sha256:${createHash('sha256').update(readFileSync(out)).digest('hex')}`;
138
+ return { out, sizeBytes, sha256 };
139
+ }
140
+ async function remoteCommand(name, argv) {
141
+ switch (name) {
142
+ case 'upload':
143
+ await uploadComponent(argv);
144
+ break;
145
+ case 'status':
146
+ await showStatus(argv);
147
+ break;
148
+ case 'reindex':
149
+ await reindexEvidence(argv);
150
+ break;
151
+ case 'probe':
152
+ await runProbe(argv);
153
+ break;
154
+ }
155
+ }
156
+ async function uploadComponent(argv) {
157
+ const target = resolve(argv[0] ?? '.');
158
+ const endpoint = resolveEndpoint('upload', argv);
159
+ const artifact = target.endsWith('.zip')
160
+ ? packageArtifactFromZip(target)
161
+ : packageDirectory(target, valueAfter(argv, '--out'));
162
+ const file = readFileSync(artifact.out);
163
+ const form = new FormData();
164
+ form.set('file', new Blob([new Uint8Array(file)], { type: 'application/zip' }), basename(artifact.out));
165
+ const payload = await fetchJson(`${endpoint}/components/marketplace/upload`, {
166
+ method: 'POST',
167
+ body: form,
168
+ headers: buildContextHeaders(argv),
169
+ }, 'upload.http.failed');
170
+ const output = {
171
+ ...payload,
172
+ command: 'upload',
173
+ endpoint,
174
+ jobId: getBuildId(payload),
175
+ package: artifact,
176
+ diagnostic: diagnostic('upload.completed', 'info', 'Component upload accepted by platform.'),
177
+ };
178
+ if (hasFlag(argv, '--json')) {
179
+ printJson(output);
180
+ return;
181
+ }
182
+ console.log('Upload accepted by PromptFrame platform.');
183
+ console.log(`Build: ${output.jobId ?? 'unknown'}`);
184
+ console.log(`Status: ${stringValue(payload.status) ?? stringValue(asRecord(payload.build)?.status) ?? 'queued'}`);
185
+ printStatusUrl(endpoint, payload);
186
+ }
187
+ async function showStatus(argv) {
188
+ const buildId = requiredArg(argv[0], 'status requires a build id', 'status.build_id.missing');
189
+ const endpoint = resolveEndpoint('status', argv);
190
+ const payload = await fetchJson(`${endpoint}/components/marketplace/builds/${encodeURIComponent(buildId)}`, {
191
+ headers: buildContextHeaders(argv),
192
+ }, 'status.http.failed');
193
+ const output = {
194
+ ...payload,
195
+ command: 'status',
196
+ endpoint,
197
+ diagnostic: diagnostic('status.completed', 'info', 'Component build status fetched.'),
198
+ };
199
+ if (hasFlag(argv, '--json')) {
200
+ printJson(output);
201
+ return;
202
+ }
203
+ printBuildSummary(output);
204
+ }
205
+ async function reindexEvidence(argv) {
206
+ const buildId = requiredArg(argv[0], 'reindex requires a build id', 'reindex.build_id.missing');
207
+ const endpoint = resolveEndpoint('reindex', argv);
208
+ const body = compactRecord({
209
+ providerKind: valueAfter(argv, '--provider-kind'),
210
+ providerName: valueAfter(argv, '--provider-name'),
211
+ });
212
+ const payload = await fetchJson(`${endpoint}/components/marketplace/builds/${encodeURIComponent(buildId)}/evidence/reindex`, {
213
+ method: 'POST',
214
+ headers: {
215
+ 'content-type': 'application/json',
216
+ ...buildContextHeaders(argv),
217
+ },
218
+ body: JSON.stringify(body),
219
+ }, 'reindex.http.failed');
220
+ const output = {
221
+ ...payload,
222
+ command: 'reindex',
223
+ endpoint,
224
+ diagnostic: diagnostic('reindex.completed', 'info', 'Component evidence reindex requested.'),
225
+ };
226
+ if (hasFlag(argv, '--json')) {
227
+ printJson(output);
228
+ return;
229
+ }
230
+ console.log('Evidence reindex completed.');
231
+ console.log(`Evidence items: ${arrayValue(payload.evidence).length}`);
232
+ console.log(`Providers: ${arrayValue(payload.providers).length}`);
233
+ }
234
+ async function runProbe(argv) {
235
+ const buildId = requiredArg(argv[0], 'probe requires a build id', 'probe.build_id.missing');
236
+ const endpoint = resolveEndpoint('probe', argv);
237
+ const level = valueAfter(argv, '--level') ?? 'quick';
238
+ const payload = await fetchJson(`${endpoint}/components/marketplace/builds/${encodeURIComponent(buildId)}/probes/run`, {
239
+ method: 'POST',
240
+ headers: {
241
+ 'content-type': 'application/json',
242
+ ...buildContextHeaders(argv),
243
+ },
244
+ body: JSON.stringify({ level }),
245
+ }, 'probe.http.failed');
246
+ const output = {
247
+ ...payload,
248
+ command: 'probe',
249
+ endpoint,
250
+ diagnostic: diagnostic('probe.completed', 'info', 'Component layout/security probe rerun requested.'),
251
+ };
252
+ if (hasFlag(argv, '--json')) {
253
+ printJson(output);
254
+ return;
255
+ }
256
+ const probe = asRecord(payload.probe);
257
+ console.log(`Probe: ${stringValue(probe?.level) ?? level} -> ${stringValue(probe?.status) ?? 'unknown'}`);
258
+ for (const item of arrayValue(probe?.diagnostics)) {
259
+ const diagnosticItem = asRecord(item);
260
+ console.log(`${stringValue(diagnosticItem?.severity)?.toUpperCase() ?? 'INFO'} ${stringValue(diagnosticItem?.code) ?? 'unknown'}: ${stringValue(diagnosticItem?.message) ?? ''}`);
261
+ }
262
+ }
263
+ function configure(argv) {
264
+ const current = readConfig(argv);
265
+ const next = compactRecord({
266
+ ...current,
267
+ endpoint: valueAfter(argv, '--endpoint') ? normalizeEndpoint(requiredValue(argv, '--endpoint')) : current.endpoint,
268
+ tenantId: valueAfter(argv, '--tenant-id') ?? current.tenantId,
269
+ userId: valueAfter(argv, '--user-id') ?? current.userId,
270
+ projectId: valueAfter(argv, '--project-id') ?? current.projectId,
271
+ sessionId: valueAfter(argv, '--session-id') ?? current.sessionId,
272
+ });
273
+ if (hasFlag(argv, '--show')) {
274
+ printJson({ configPath: resolveConfigPath(argv), config: redactConfig(next) });
275
+ return;
276
+ }
277
+ const changed = ['--endpoint', '--tenant-id', '--user-id', '--project-id', '--session-id']
278
+ .some((flag) => valueAfter(argv, flag) !== undefined);
279
+ if (!changed) {
280
+ printJson({ configPath: resolveConfigPath(argv), config: redactConfig(next) });
281
+ return;
282
+ }
283
+ writeConfig(argv, next);
284
+ printJson({
285
+ command: 'configure',
286
+ configPath: resolveConfigPath(argv),
287
+ config: redactConfig(next),
288
+ diagnostic: diagnostic('configure.completed', 'info', 'Local PromptFrame CLI config written.'),
289
+ });
290
+ }
291
+ function resolveEndpoint(commandName, argv) {
292
+ const config = readConfig(argv);
293
+ const endpoint = valueAfter(argv, '--endpoint')
294
+ ?? process.env.PROMPTFRAME_API_BASE
295
+ ?? process.env.REMOTION_MEDIA_API_BASE
296
+ ?? stringValue(config.endpoint);
297
+ if (!endpoint) {
298
+ fail(`${commandName} requires --endpoint, PROMPTFRAME_API_BASE, REMOTION_MEDIA_API_BASE, or local config. No default production endpoint is embedded in the public CLI.`, `${commandName}.endpoint.missing`, 2);
299
+ }
300
+ return normalizeEndpoint(endpoint);
301
+ }
302
+ function buildContextHeaders(argv) {
303
+ const config = readConfig(argv);
304
+ return compactRecord({
305
+ 'x-tenant-id': valueAfter(argv, '--tenant-id') ?? stringValue(config.tenantId),
306
+ 'x-user-id': valueAfter(argv, '--user-id') ?? stringValue(config.userId),
307
+ 'x-project-id': valueAfter(argv, '--project-id') ?? stringValue(config.projectId),
308
+ 'x-session-id': valueAfter(argv, '--session-id') ?? stringValue(config.sessionId),
309
+ });
310
+ }
311
+ function readConfig(argv) {
312
+ const path = resolveConfigPath(argv);
313
+ if (!existsSync(path))
314
+ return {};
315
+ try {
316
+ return JSON.parse(readFileSync(path, 'utf8'));
317
+ }
318
+ catch {
319
+ return {};
320
+ }
321
+ }
322
+ function writeConfig(argv, config) {
323
+ const path = resolveConfigPath(argv);
324
+ mkdirSync(dirname(path), { recursive: true });
325
+ writeFileSync(path, `${JSON.stringify(config, null, 2)}\n`, 'utf8');
326
+ }
327
+ function resolveConfigPath(argv) {
328
+ return resolve(valueAfter(argv, '--config') ?? process.env.PROMPTFRAME_CONFIG ?? join(os.homedir(), '.promptframe', 'component-authoring.json'));
329
+ }
330
+ async function fetchJson(url, init, code) {
331
+ const response = await fetch(url, init);
332
+ const payload = await response.json().catch(() => ({}));
333
+ if (!response.ok || payload.success === false) {
334
+ fail(stringValue(payload.error) ?? `${url} failed: HTTP ${response.status}`, code);
335
+ }
336
+ return payload;
337
+ }
338
+ function assertRequiredFiles(dir) {
339
+ const missing = REQUIRED_COMPONENT_FILES.filter((file) => !existsSync(join(dir, file)));
340
+ if (missing.length > 0) {
341
+ fail(`Missing required files: ${missing.join(', ')}`, 'doctor.required_files.missing');
342
+ }
343
+ }
344
+ function checkImportBoundary(dir) {
345
+ const component = readIfExists(join(dir, 'src/Component.tsx'));
346
+ const schema = readIfExists(join(dir, 'src/schema.ts'));
347
+ const joined = `${component}\n${schema}`;
348
+ if (/\bfrom\s+['"]\.\.\//.test(joined) || /\bimport\s*\(\s*['"]\.\.\//.test(joined)) {
349
+ fail('Component source imports from outside the component directory.', 'package.no_parent_imports');
350
+ }
351
+ }
352
+ function normalizeLegacyManifest(input) {
353
+ if (typeof input.componentType === 'string')
354
+ return input;
355
+ if (input.layer === 'scene_template' || input.category === 'scene_template') {
356
+ return { ...input, componentType: 'scene_template' };
357
+ }
358
+ return input;
359
+ }
360
+ function packageArtifactFromZip(path) {
361
+ const file = readFileSync(path);
362
+ return {
363
+ out: path,
364
+ sizeBytes: file.byteLength,
365
+ sha256: `sha256:${createHash('sha256').update(file).digest('hex')}`,
366
+ };
367
+ }
368
+ function collectPackageFiles(root) {
369
+ const files = [];
370
+ function walk(dir) {
371
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
372
+ if (['node_modules', 'dist', '.git', '.component-packages', '.promptframe'].includes(entry.name))
373
+ continue;
374
+ const full = join(dir, entry.name);
375
+ if (entry.isDirectory()) {
376
+ walk(full);
377
+ }
378
+ else if (entry.isFile()) {
379
+ files.push({
380
+ name: relative(root, full).replace(/\\/g, '/'),
381
+ data: readFileSync(full),
382
+ });
383
+ }
384
+ }
385
+ }
386
+ walk(root);
387
+ return files.sort((a, b) => a.name.localeCompare(b.name));
388
+ }
389
+ function buildStoredZip(files) {
390
+ const localParts = [];
391
+ const centralParts = [];
392
+ let offset = 0;
393
+ for (const file of files) {
394
+ const name = Buffer.from(file.name);
395
+ const data = Buffer.from(file.data);
396
+ const crc = crc32(data);
397
+ const local = Buffer.alloc(30 + name.length);
398
+ local.writeUInt32LE(0x04034b50, 0);
399
+ local.writeUInt16LE(20, 4);
400
+ local.writeUInt16LE(0, 6);
401
+ local.writeUInt16LE(0, 8);
402
+ local.writeUInt16LE(0, 10);
403
+ local.writeUInt16LE(0, 12);
404
+ local.writeUInt32LE(crc, 14);
405
+ local.writeUInt32LE(data.length, 18);
406
+ local.writeUInt32LE(data.length, 22);
407
+ local.writeUInt16LE(name.length, 26);
408
+ local.writeUInt16LE(0, 28);
409
+ name.copy(local, 30);
410
+ localParts.push(local, data);
411
+ const central = Buffer.alloc(46 + name.length);
412
+ central.writeUInt32LE(0x02014b50, 0);
413
+ central.writeUInt16LE(20, 4);
414
+ central.writeUInt16LE(20, 6);
415
+ central.writeUInt16LE(0, 8);
416
+ central.writeUInt16LE(0, 10);
417
+ central.writeUInt16LE(0, 12);
418
+ central.writeUInt16LE(0, 14);
419
+ central.writeUInt32LE(crc, 16);
420
+ central.writeUInt32LE(data.length, 20);
421
+ central.writeUInt32LE(data.length, 24);
422
+ central.writeUInt16LE(name.length, 28);
423
+ central.writeUInt16LE(0, 30);
424
+ central.writeUInt16LE(0, 32);
425
+ central.writeUInt16LE(0, 34);
426
+ central.writeUInt16LE(0, 36);
427
+ central.writeUInt32LE(0, 38);
428
+ central.writeUInt32LE(offset, 42);
429
+ name.copy(central, 46);
430
+ centralParts.push(central);
431
+ offset += local.length + data.length;
432
+ }
433
+ const centralOffset = offset;
434
+ const central = Buffer.concat(centralParts);
435
+ const end = Buffer.alloc(22);
436
+ end.writeUInt32LE(0x06054b50, 0);
437
+ end.writeUInt16LE(0, 4);
438
+ end.writeUInt16LE(0, 6);
439
+ end.writeUInt16LE(files.length, 8);
440
+ end.writeUInt16LE(files.length, 10);
441
+ end.writeUInt32LE(central.length, 12);
442
+ end.writeUInt32LE(centralOffset, 16);
443
+ end.writeUInt16LE(0, 20);
444
+ return Buffer.concat([...localParts, central, end]);
445
+ }
446
+ function crc32(buffer) {
447
+ let crc = 0xffffffff;
448
+ for (const byte of buffer) {
449
+ crc = CRC_TABLE[(crc ^ byte) & 0xff] ^ (crc >>> 8);
450
+ }
451
+ return (crc ^ 0xffffffff) >>> 0;
452
+ }
453
+ const CRC_TABLE = Array.from({ length: 256 }, (_, index) => {
454
+ let c = index;
455
+ for (let k = 0; k < 8; k += 1) {
456
+ c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1;
457
+ }
458
+ return c >>> 0;
459
+ });
460
+ function requiredArg(value, message, code) {
461
+ if (!value)
462
+ fail(message, code, 2);
463
+ return value;
464
+ }
465
+ function requiredValue(argv, flag) {
466
+ const value = valueAfter(argv, flag);
467
+ if (!value)
468
+ fail(`${flag} requires a value`, `cli${flag.replaceAll('-', '.')}.missing`, 2);
469
+ return value;
470
+ }
471
+ function valueAfter(argv, flag) {
472
+ const inline = argv.find((arg) => arg.startsWith(`${flag}=`));
473
+ if (inline)
474
+ return inline.slice(flag.length + 1);
475
+ const index = argv.indexOf(flag);
476
+ if (index < 0)
477
+ return undefined;
478
+ const next = argv[index + 1];
479
+ return next && !next.startsWith('--') ? next : undefined;
480
+ }
481
+ function firstPositionalArg(argv) {
482
+ return argv.find((arg) => !arg.startsWith('--'));
483
+ }
484
+ function hasFlag(argv, flag) {
485
+ return argv.includes(flag);
486
+ }
487
+ function readIfExists(path) {
488
+ return existsSync(path) ? readFileSync(path, 'utf8') : '';
489
+ }
490
+ function normalizeEndpoint(endpoint) {
491
+ return endpoint.replace(/\/+$/, '');
492
+ }
493
+ function redactConfig(config) {
494
+ return compactRecord({
495
+ endpoint: config.endpoint,
496
+ tenantId: config.tenantId,
497
+ userId: config.userId,
498
+ projectId: config.projectId,
499
+ sessionId: config.sessionId,
500
+ });
501
+ }
502
+ function diagnostic(code, severity, message) {
503
+ return { code, severity, message };
504
+ }
505
+ function compactRecord(input) {
506
+ const output = {};
507
+ for (const [key, value] of Object.entries(input)) {
508
+ if (typeof value === 'string' && value.length > 0)
509
+ output[key] = value;
510
+ }
511
+ return output;
512
+ }
513
+ function getBuildId(payload) {
514
+ return stringValue(payload.jobId)
515
+ ?? stringValue(payload.buildId)
516
+ ?? stringValue(asRecord(payload.build)?.buildId)
517
+ ?? stringValue(asRecord(payload.build)?.id);
518
+ }
519
+ function printBuildSummary(payload) {
520
+ const build = asRecord(payload.build);
521
+ if (!build) {
522
+ printJson(payload);
523
+ return;
524
+ }
525
+ console.log(`Build: ${stringValue(build.buildId) ?? stringValue(build.id) ?? 'unknown'}`);
526
+ console.log(`Status: ${stringValue(build.status) ?? 'unknown'}`);
527
+ printStatusUrl(stringValue(payload.endpoint) ?? '', build);
528
+ for (const item of arrayValue(build.diagnostics)) {
529
+ const diagnosticItem = asRecord(item);
530
+ console.log(`${stringValue(diagnosticItem?.severity)?.toUpperCase() ?? 'INFO'} ${stringValue(diagnosticItem?.code) ?? 'unknown'}: ${stringValue(diagnosticItem?.message) ?? ''}`);
531
+ }
532
+ }
533
+ function printStatusUrl(endpoint, payload) {
534
+ const statusUrl = stringValue(payload.statusUrl) ?? stringValue(asRecord(payload.build)?.statusUrl);
535
+ if (!statusUrl)
536
+ return;
537
+ if (/^https?:\/\//i.test(statusUrl)) {
538
+ console.log(`Status URL: ${statusUrl}`);
539
+ return;
540
+ }
541
+ console.log(`Status URL: ${endpoint}${statusUrl.startsWith('/') ? statusUrl : `/${statusUrl}`}`);
542
+ }
543
+ function asRecord(value) {
544
+ return value && typeof value === 'object' && !Array.isArray(value) ? value : undefined;
545
+ }
546
+ function arrayValue(value) {
547
+ return Array.isArray(value) ? value : [];
548
+ }
549
+ function stringValue(value) {
550
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
551
+ }
552
+ function printJson(value) {
553
+ console.log(JSON.stringify(value, null, 2));
554
+ }
555
+ function fail(message, code, exitCode = 1) {
556
+ throw new PromptFrameCliError(message, code, exitCode);
557
+ }
558
+ function help() {
559
+ console.log(`PromptFrame CLI
560
+
561
+ Commands:
562
+ standard Print current public component standard versions
563
+ doctor <dir> Check required component files
564
+ validate <dir> Validate manifest and basic source boundaries
565
+ package <dir> --out <zip> Validate and package a component source zip
566
+ upload <dir|zip> Upload component source package to PromptFrame
567
+ status <buildId> Fetch component build status
568
+ reindex <buildId> Rebuild component search/evidence indexes
569
+ probe <buildId> --level <level> Rerun component layout/security probe
570
+ configure --endpoint <url> Write local CLI endpoint/context config
571
+
572
+ Endpoint resolution:
573
+ --endpoint, PROMPTFRAME_API_BASE, REMOTION_MEDIA_API_BASE, then local config.
574
+ The public CLI embeds no production/private endpoint defaults.
575
+ `);
576
+ }
577
+ try {
578
+ await run(command, args);
579
+ }
580
+ catch (error) {
581
+ if (error instanceof PromptFrameCliError) {
582
+ if (hasFlag(args, '--json')) {
583
+ console.error(JSON.stringify({
584
+ success: false,
585
+ command,
586
+ diagnostic: diagnostic(error.code, 'error', error.message),
587
+ failureReason: error.message,
588
+ retryable: false,
589
+ }, null, 2));
590
+ }
591
+ else {
592
+ console.error(`${error.code}: ${error.message}`);
593
+ }
594
+ process.exit(error.exitCode);
595
+ }
596
+ console.error(error instanceof Error ? error.message : String(error));
597
+ process.exit(1);
598
+ }
4
599
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAEA,OAAO,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@promptframe/cli",
3
- "version": "0.0.0",
3
+ "version": "0.1.2",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "files": [
@@ -36,13 +36,17 @@
36
36
  },
37
37
  "homepage": "https://github.com/ty-teams/promptframe-component-authoring#readme",
38
38
  "scripts": {
39
- "build": "tsc",
40
- "lint": "tsc --noEmit",
41
- "test": "node -e \"console.log('placeholder test: @promptframe/cli')\"",
39
+ "build": "pnpm --filter @promptframe/contracts build && tsc",
40
+ "lint": "pnpm --filter @promptframe/contracts build && tsc --noEmit",
41
+ "test": "pnpm build && node --test test/*.test.mjs",
42
+ "pack:dry-run": "pnpm build && npm pack --dry-run --json",
42
43
  "clean": "rm -rf dist"
43
44
  },
44
- "dependencies": {},
45
+ "dependencies": {
46
+ "@promptframe/contracts": "^0.1.0"
47
+ },
45
48
  "devDependencies": {
49
+ "@types/node": "^24.12.4",
46
50
  "typescript": "~5.7.0"
47
51
  }
48
52
  }