@promptframe/cli 0.1.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
@@ -2,4 +2,35 @@
2
2
 
3
3
  PromptFrame component authoring CLI.
4
4
 
5
- Use it to inspect the current public standard, check component folders, validate manifests, package source archives and call platform upload/status/reindex/probe endpoints.
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
+
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.js CHANGED
@@ -1,11 +1,24 @@
1
1
  #!/usr/bin/env node
2
2
  import { createHash } from 'node:crypto';
3
- import { existsSync, readFileSync, statSync } from 'node:fs';
4
- import { join, resolve } from 'node:path';
5
- import { spawnSync } from 'node:child_process';
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
6
  import { COMPONENT_MANIFEST_SCHEMA_VERSION, COMPONENT_REF_VERSION, COMPONENT_STANDARD_VERSION, PROMPTFRAME_CONTRACTS_VERSION, parseComponentManifest, } from '@promptframe/contracts';
7
7
  const command = process.argv[2] ?? 'help';
8
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
+ ];
9
22
  class PromptFrameCliError extends Error {
10
23
  code;
11
24
  exitCode;
@@ -15,34 +28,28 @@ class PromptFrameCliError extends Error {
15
28
  this.exitCode = exitCode;
16
29
  }
17
30
  }
18
- try {
19
- switch (command) {
31
+ async function run(name, argv) {
32
+ switch (name) {
20
33
  case 'standard':
21
- printJson({
22
- contractsVersion: PROMPTFRAME_CONTRACTS_VERSION,
23
- manifestSchemaVersion: COMPONENT_MANIFEST_SCHEMA_VERSION,
24
- componentStandardVersion: COMPONENT_STANDARD_VERSION,
25
- componentRefVersion: COMPONENT_REF_VERSION,
26
- supportedComponentTypes: ['scene_template', 'contained_widget', 'overlay', 'transition_effect'],
27
- });
34
+ standard();
28
35
  break;
29
36
  case 'doctor':
30
- doctor(args[0] ?? '.');
37
+ doctor(argv);
31
38
  break;
32
39
  case 'validate':
33
- validate(args[0] ?? '.');
40
+ validate(argv);
34
41
  break;
35
42
  case 'package':
36
- packageComponent(args);
43
+ packageComponent(argv);
37
44
  break;
38
45
  case 'upload':
39
46
  case 'status':
40
47
  case 'reindex':
41
48
  case 'probe':
42
- remoteCommand(command, args);
49
+ await remoteCommand(name, argv);
43
50
  break;
44
51
  case 'configure':
45
- configure(args);
52
+ configure(argv);
46
53
  break;
47
54
  case 'help':
48
55
  case '--help':
@@ -50,76 +57,290 @@ try {
50
57
  help();
51
58
  break;
52
59
  default:
53
- fail(`Unknown command: ${command}`, 'cli.command.unknown');
60
+ fail(`Unknown command: ${name}`, 'cli.command.unknown');
54
61
  }
55
62
  }
56
- catch (error) {
57
- if (error instanceof PromptFrameCliError) {
58
- console.error(`${error.code}: ${error.message}`);
59
- process.exit(error.exitCode);
60
- }
61
- console.error(error instanceof Error ? error.message : String(error));
62
- process.exit(1);
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
+ });
63
73
  }
64
- function doctor(componentDir) {
65
- const dir = resolve(componentDir);
66
- const required = [
67
- 'package.json',
68
- 'manifest.json',
69
- 'src/Component.tsx',
70
- 'src/schema.ts',
71
- 'src/preview-props.json',
72
- ];
73
- const missing = required.filter((file) => !existsSync(join(dir, file)));
74
- if (missing.length > 0) {
75
- fail(`Missing required files: ${missing.join(', ')}`, 'doctor.required_files.missing');
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;
76
86
  }
77
87
  console.log(`doctor passed: ${dir}`);
78
88
  }
79
- function validate(componentDir) {
80
- doctor(componentDir);
81
- const dir = resolve(componentDir);
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);
82
123
  const manifestPath = join(dir, 'manifest.json');
83
124
  const manifest = JSON.parse(readFileSync(manifestPath, 'utf8'));
84
- parseComponentManifest(normalizeLegacyManifest(manifest));
125
+ const parsed = parseComponentManifest(normalizeLegacyManifest(manifest));
85
126
  checkImportBoundary(dir);
86
- console.log(`validate passed: ${dir}`);
127
+ return parsed;
87
128
  }
88
- function packageComponent(argv) {
89
- const componentDir = argv[0] ?? '.';
90
- validate(componentDir);
129
+ function packageDirectory(componentDir, outArg) {
91
130
  const dir = resolve(componentDir);
92
- const out = valueAfter(argv, '--out') ?? `${dir.replace(/[\\/]$/, '')}.tgz`;
93
- const result = spawnSync('tar', ['-czf', out, '-C', dir, '.'], { encoding: 'utf8' });
94
- if (result.status !== 0) {
95
- fail(result.stderr || 'tar failed while packaging component', 'package.tar.failed');
96
- }
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));
97
136
  const sizeBytes = statSync(out).size;
98
- const sha256 = createHash('sha256').update(readFileSync(out)).digest('hex');
99
- printJson({ out, sizeBytes, sha256: `sha256:${sha256}` });
137
+ const sha256 = `sha256:${createHash('sha256').update(readFileSync(out)).digest('hex')}`;
138
+ return { out, sizeBytes, sha256 };
100
139
  }
101
- function remoteCommand(name, argv) {
102
- const endpoint = valueAfter(argv, '--endpoint') ?? process.env.PROMPTFRAME_API_BASE ?? process.env.REMOTION_MEDIA_API_BASE;
103
- if (!endpoint) {
104
- fail(`${name} requires --endpoint, PROMPTFRAME_API_BASE, or REMOTION_MEDIA_API_BASE. No default production endpoint is embedded in the public CLI.`, `${name}.endpoint.missing`, 2);
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;
105
154
  }
106
- printJson({
107
- command: name,
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',
108
196
  endpoint,
109
- status: 'not_implemented_first_slice',
110
- diagnostic: `${name}.transport.pending`,
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'),
111
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
+ }
112
262
  }
113
263
  function configure(argv) {
114
- const endpoint = valueAfter(argv, '--endpoint');
115
- if (!endpoint)
116
- fail('configure requires --endpoint <url>', 'configure.endpoint.missing', 2);
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);
117
284
  printJson({
118
- status: 'not_persisted_first_slice',
119
- endpoint,
120
- diagnostic: 'configure.storage.pending',
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),
121
309
  });
122
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
+ }
123
344
  function checkImportBoundary(dir) {
124
345
  const component = readIfExists(join(dir, 'src/Component.tsx'));
125
346
  const schema = readIfExists(join(dir, 'src/schema.ts'));
@@ -136,15 +357,198 @@ function normalizeLegacyManifest(input) {
136
357
  }
137
358
  return input;
138
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
+ }
139
471
  function valueAfter(argv, flag) {
472
+ const inline = argv.find((arg) => arg.startsWith(`${flag}=`));
473
+ if (inline)
474
+ return inline.slice(flag.length + 1);
140
475
  const index = argv.indexOf(flag);
141
476
  if (index < 0)
142
477
  return undefined;
143
- return argv[index + 1];
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);
144
486
  }
145
487
  function readIfExists(path) {
146
488
  return existsSync(path) ? readFileSync(path, 'utf8') : '';
147
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
+ }
148
552
  function printJson(value) {
149
553
  console.log(JSON.stringify(value, null, 2));
150
554
  }
@@ -155,11 +559,41 @@ function help() {
155
559
  console.log(`PromptFrame CLI
156
560
 
157
561
  Commands:
158
- standard Print current public component standard versions
159
- doctor <dir> Check required component files
160
- validate <dir> Validate manifest and basic source boundaries
161
- package <dir> --out <tgz> Validate and package a component directory
162
- upload/status/reindex/probe Endpoint-backed commands; require --endpoint or env
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.
163
575
  `);
164
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
+ }
165
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,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EACL,iCAAiC,EACjC,qBAAqB,EACrB,0BAA0B,EAC1B,6BAA6B,EAC7B,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;AAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,MAAM,mBAAoB,SAAQ,KAAK;IACQ;IAA8B;IAA3E,YAAY,OAAe,EAAkB,IAAY,EAAkB,WAAW,CAAC;QACrF,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,SAAI,GAAJ,IAAI,CAAQ;QAAkB,aAAQ,GAAR,QAAQ,CAAI;IAEvF,CAAC;CACF;AAED,IAAI,CAAC;IACH,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,UAAU;YACb,SAAS,CAAC;gBACR,gBAAgB,EAAE,6BAA6B;gBAC/C,qBAAqB,EAAE,iCAAiC;gBACxD,wBAAwB,EAAE,0BAA0B;gBACpD,mBAAmB,EAAE,qBAAqB;gBAC1C,uBAAuB,EAAE,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,SAAS,EAAE,mBAAmB,CAAC;aAChG,CAAC,CAAC;YACH,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;YACvB,MAAM;QACR,KAAK,UAAU;YACb,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;YACzB,MAAM;QACR,KAAK,SAAS;YACZ,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACvB,MAAM;QACR,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,OAAO;YACV,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC7B,MAAM;QACR,KAAK,WAAW;YACd,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB,MAAM;QACR,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI;YACP,IAAI,EAAE,CAAC;YACP,MAAM;QACR;YACE,IAAI,CAAC,oBAAoB,OAAO,EAAE,EAAE,qBAAqB,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,IAAI,KAAK,YAAY,mBAAmB,EAAE,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,MAAM,CAAC,YAAoB;IAClC,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG;QACf,cAAc;QACd,eAAe;QACf,mBAAmB;QACnB,eAAe;QACf,wBAAwB;KACzB,CAAC;IACF,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACxE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,2BAA2B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,+BAA+B,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,QAAQ,CAAC,YAAoB;IACpC,MAAM,CAAC,YAAY,CAAC,CAAC;IACrB,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAClC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAChE,sBAAsB,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1D,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAc;IACtC,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IACpC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACvB,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC;IAC5E,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACrF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,sCAAsC,EAAE,oBAAoB,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;IACrC,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5E,SAAS,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,MAAM,EAAE,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,IAAc;IACjD,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;IAC3H,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,IAAI,CACF,GAAG,IAAI,uIAAuI,EAC9I,GAAG,IAAI,mBAAmB,EAC1B,CAAC,CACF,CAAC;IACJ,CAAC;IACD,SAAS,CAAC;QACR,OAAO,EAAE,IAAI;QACb,QAAQ;QACR,MAAM,EAAE,6BAA6B;QACrC,UAAU,EAAE,GAAG,IAAI,oBAAoB;KACxC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ;QAAE,IAAI,CAAC,qCAAqC,EAAE,4BAA4B,EAAE,CAAC,CAAC,CAAC;IAC5F,SAAS,CAAC;QACR,MAAM,EAAE,2BAA2B;QACnC,QAAQ;QACR,UAAU,EAAE,2BAA2B;KACxC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAW;IACtC,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,GAAG,SAAS,KAAK,MAAM,EAAE,CAAC;IACzC,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,4BAA4B,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACpF,IAAI,CAAC,gEAAgE,EAAE,2BAA2B,CAAC,CAAC;IACtG,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,KAA8B;IAC7D,IAAI,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC1D,IAAI,KAAK,CAAC,KAAK,KAAK,gBAAgB,IAAI,KAAK,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;QAC5E,OAAO,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC;IACvD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,IAAc,EAAE,IAAY;IAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAChC,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5D,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,IAAI,CAAC,OAAe,EAAE,IAAY,EAAE,QAAQ,GAAG,CAAC;IACvD,MAAM,IAAI,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,IAAI;IACX,OAAO,CAAC,GAAG,CAAC;;;;;;;;CAQb,CAAC,CAAC;AACH,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.1.0",
3
+ "version": "0.1.2",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "files": [
@@ -36,9 +36,10 @@
36
36
  },
37
37
  "homepage": "https://github.com/ty-teams/promptframe-component-authoring#readme",
38
38
  "scripts": {
39
- "build": "tsc",
39
+ "build": "pnpm --filter @promptframe/contracts build && tsc",
40
40
  "lint": "pnpm --filter @promptframe/contracts build && tsc --noEmit",
41
- "test": "node -e \"console.log('placeholder test: @promptframe/cli')\"",
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
45
  "dependencies": {