@promptframe/cli 0.0.0 → 0.1.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 +2 -3
- package/dist/index.d.ts +1 -0
- package/dist/index.js +163 -2
- package/dist/index.js.map +1 -1
- package/package.json +6 -3
package/README.md
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
# @promptframe/cli
|
|
2
2
|
|
|
3
|
-
|
|
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`.
|
|
3
|
+
PromptFrame component authoring CLI.
|
|
6
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.
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,4 +1,165 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
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';
|
|
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
|
+
class PromptFrameCliError extends Error {
|
|
10
|
+
code;
|
|
11
|
+
exitCode;
|
|
12
|
+
constructor(message, code, exitCode = 1) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.code = code;
|
|
15
|
+
this.exitCode = exitCode;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
switch (command) {
|
|
20
|
+
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
|
+
});
|
|
28
|
+
break;
|
|
29
|
+
case 'doctor':
|
|
30
|
+
doctor(args[0] ?? '.');
|
|
31
|
+
break;
|
|
32
|
+
case 'validate':
|
|
33
|
+
validate(args[0] ?? '.');
|
|
34
|
+
break;
|
|
35
|
+
case 'package':
|
|
36
|
+
packageComponent(args);
|
|
37
|
+
break;
|
|
38
|
+
case 'upload':
|
|
39
|
+
case 'status':
|
|
40
|
+
case 'reindex':
|
|
41
|
+
case 'probe':
|
|
42
|
+
remoteCommand(command, args);
|
|
43
|
+
break;
|
|
44
|
+
case 'configure':
|
|
45
|
+
configure(args);
|
|
46
|
+
break;
|
|
47
|
+
case 'help':
|
|
48
|
+
case '--help':
|
|
49
|
+
case '-h':
|
|
50
|
+
help();
|
|
51
|
+
break;
|
|
52
|
+
default:
|
|
53
|
+
fail(`Unknown command: ${command}`, 'cli.command.unknown');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
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
|
+
}
|
|
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');
|
|
76
|
+
}
|
|
77
|
+
console.log(`doctor passed: ${dir}`);
|
|
78
|
+
}
|
|
79
|
+
function validate(componentDir) {
|
|
80
|
+
doctor(componentDir);
|
|
81
|
+
const dir = resolve(componentDir);
|
|
82
|
+
const manifestPath = join(dir, 'manifest.json');
|
|
83
|
+
const manifest = JSON.parse(readFileSync(manifestPath, 'utf8'));
|
|
84
|
+
parseComponentManifest(normalizeLegacyManifest(manifest));
|
|
85
|
+
checkImportBoundary(dir);
|
|
86
|
+
console.log(`validate passed: ${dir}`);
|
|
87
|
+
}
|
|
88
|
+
function packageComponent(argv) {
|
|
89
|
+
const componentDir = argv[0] ?? '.';
|
|
90
|
+
validate(componentDir);
|
|
91
|
+
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
|
+
}
|
|
97
|
+
const sizeBytes = statSync(out).size;
|
|
98
|
+
const sha256 = createHash('sha256').update(readFileSync(out)).digest('hex');
|
|
99
|
+
printJson({ out, sizeBytes, sha256: `sha256:${sha256}` });
|
|
100
|
+
}
|
|
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);
|
|
105
|
+
}
|
|
106
|
+
printJson({
|
|
107
|
+
command: name,
|
|
108
|
+
endpoint,
|
|
109
|
+
status: 'not_implemented_first_slice',
|
|
110
|
+
diagnostic: `${name}.transport.pending`,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
function configure(argv) {
|
|
114
|
+
const endpoint = valueAfter(argv, '--endpoint');
|
|
115
|
+
if (!endpoint)
|
|
116
|
+
fail('configure requires --endpoint <url>', 'configure.endpoint.missing', 2);
|
|
117
|
+
printJson({
|
|
118
|
+
status: 'not_persisted_first_slice',
|
|
119
|
+
endpoint,
|
|
120
|
+
diagnostic: 'configure.storage.pending',
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
function checkImportBoundary(dir) {
|
|
124
|
+
const component = readIfExists(join(dir, 'src/Component.tsx'));
|
|
125
|
+
const schema = readIfExists(join(dir, 'src/schema.ts'));
|
|
126
|
+
const joined = `${component}\n${schema}`;
|
|
127
|
+
if (/\bfrom\s+['"]\.\.\//.test(joined) || /\bimport\s*\(\s*['"]\.\.\//.test(joined)) {
|
|
128
|
+
fail('Component source imports from outside the component directory.', 'package.no_parent_imports');
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
function normalizeLegacyManifest(input) {
|
|
132
|
+
if (typeof input.componentType === 'string')
|
|
133
|
+
return input;
|
|
134
|
+
if (input.layer === 'scene_template' || input.category === 'scene_template') {
|
|
135
|
+
return { ...input, componentType: 'scene_template' };
|
|
136
|
+
}
|
|
137
|
+
return input;
|
|
138
|
+
}
|
|
139
|
+
function valueAfter(argv, flag) {
|
|
140
|
+
const index = argv.indexOf(flag);
|
|
141
|
+
if (index < 0)
|
|
142
|
+
return undefined;
|
|
143
|
+
return argv[index + 1];
|
|
144
|
+
}
|
|
145
|
+
function readIfExists(path) {
|
|
146
|
+
return existsSync(path) ? readFileSync(path, 'utf8') : '';
|
|
147
|
+
}
|
|
148
|
+
function printJson(value) {
|
|
149
|
+
console.log(JSON.stringify(value, null, 2));
|
|
150
|
+
}
|
|
151
|
+
function fail(message, code, exitCode = 1) {
|
|
152
|
+
throw new PromptFrameCliError(message, code, exitCode);
|
|
153
|
+
}
|
|
154
|
+
function help() {
|
|
155
|
+
console.log(`PromptFrame CLI
|
|
156
|
+
|
|
157
|
+
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
|
|
163
|
+
`);
|
|
164
|
+
}
|
|
4
165
|
//# 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":"
|
|
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.
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -37,12 +37,15 @@
|
|
|
37
37
|
"homepage": "https://github.com/ty-teams/promptframe-component-authoring#readme",
|
|
38
38
|
"scripts": {
|
|
39
39
|
"build": "tsc",
|
|
40
|
-
"lint": "tsc --noEmit",
|
|
40
|
+
"lint": "pnpm --filter @promptframe/contracts build && tsc --noEmit",
|
|
41
41
|
"test": "node -e \"console.log('placeholder test: @promptframe/cli')\"",
|
|
42
42
|
"clean": "rm -rf dist"
|
|
43
43
|
},
|
|
44
|
-
"dependencies": {
|
|
44
|
+
"dependencies": {
|
|
45
|
+
"@promptframe/contracts": "^0.1.0"
|
|
46
|
+
},
|
|
45
47
|
"devDependencies": {
|
|
48
|
+
"@types/node": "^24.12.4",
|
|
46
49
|
"typescript": "~5.7.0"
|
|
47
50
|
}
|
|
48
51
|
}
|