@promptframe/cli 0.1.71 → 0.1.73
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 +5 -1
- package/dist/development-build.d.ts.map +1 -1
- package/dist/development-build.js +4 -6
- package/dist/development-build.js.map +1 -1
- package/dist/development-owner.d.ts +2 -0
- package/dist/development-owner.d.ts.map +1 -1
- package/dist/development-owner.js +1 -0
- package/dist/development-owner.js.map +1 -1
- package/dist/development-process.d.ts +2 -0
- package/dist/development-process.d.ts.map +1 -1
- package/dist/development-process.js +18 -1
- package/dist/development-process.js.map +1 -1
- package/dist/development-temporary.d.ts +19 -0
- package/dist/development-temporary.d.ts.map +1 -0
- package/dist/development-temporary.js +282 -0
- package/dist/development-temporary.js.map +1 -0
- package/dist/development-validation.d.ts.map +1 -1
- package/dist/development-validation.js +23 -6
- package/dist/development-validation.js.map +1 -1
- package/dist/index.js +41 -2
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
|
-
import {
|
|
3
|
-
import { tmpdir } from 'node:os';
|
|
2
|
+
import { mkdir, writeFile } from 'node:fs/promises';
|
|
4
3
|
import { dirname, join } from 'node:path';
|
|
5
4
|
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { createDevelopmentTemporary } from './development-temporary.js';
|
|
6
6
|
export class DevelopmentValidationError extends Error {
|
|
7
7
|
code;
|
|
8
8
|
diagnosticCode;
|
|
@@ -28,7 +28,7 @@ export async function validateDevelopmentContents(contents, options = {}) {
|
|
|
28
28
|
throw new DevelopmentValidationError('development.validation.excluded_input');
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
const
|
|
31
|
+
const temporary = await createDevelopmentTemporary('check', options.temporaryParent), directory = temporary.directory;
|
|
32
32
|
let hadFailure = false;
|
|
33
33
|
try {
|
|
34
34
|
for (const file of files) {
|
|
@@ -37,7 +37,7 @@ export async function validateDevelopmentContents(contents, options = {}) {
|
|
|
37
37
|
await mkdir(dirname(path), { recursive: true });
|
|
38
38
|
await writeFile(path, file.bytes, { flag: 'wx', mode: 0o400 });
|
|
39
39
|
}
|
|
40
|
-
const result = await runCapturedValidation(directory, timeoutMs, options.signal);
|
|
40
|
+
const result = await runCapturedValidation(directory, timeoutMs, options.signal, temporary);
|
|
41
41
|
const output = JSON.parse(result);
|
|
42
42
|
if (output.command !== 'validate' || output.securityEvaluatorMode !== 'ast'
|
|
43
43
|
|| typeof output.securityPolicyVersion !== 'string' || typeof output.securityPolicyDigest !== 'string'
|
|
@@ -56,7 +56,7 @@ export async function validateDevelopmentContents(contents, options = {}) {
|
|
|
56
56
|
// runCapturedValidation waits for actual child close, also after abort or
|
|
57
57
|
// timeout. Its reader cannot outlive this private input directory.
|
|
58
58
|
try {
|
|
59
|
-
|
|
59
|
+
temporary.release();
|
|
60
60
|
}
|
|
61
61
|
catch (error) {
|
|
62
62
|
if (!hadFailure)
|
|
@@ -65,11 +65,13 @@ export async function validateDevelopmentContents(contents, options = {}) {
|
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
-
function runCapturedValidation(directory, timeoutMs, signal) {
|
|
68
|
+
function runCapturedValidation(directory, timeoutMs, signal, temporary) {
|
|
69
69
|
signal?.throwIfAborted();
|
|
70
|
+
temporary?.beforeSpawn();
|
|
70
71
|
return new Promise((resolve, reject) => {
|
|
71
72
|
const child = spawn(process.execPath, [fileURLToPath(new URL('./index.js', import.meta.url)), 'validate', directory, '--json'], {
|
|
72
73
|
cwd: directory, stdio: ['ignore', 'pipe', 'pipe'],
|
|
74
|
+
detached: Boolean(temporary && process.platform === 'linux'),
|
|
73
75
|
// Validation is local. Neither endpoint/auth configuration nor arbitrary
|
|
74
76
|
// Node preload options from the host belong in this subprocess.
|
|
75
77
|
env: { NO_COLOR: '1', ...(process.platform === 'win32' && process.env.SystemRoot ? { SystemRoot: process.env.SystemRoot } : {}) },
|
|
@@ -101,6 +103,15 @@ function runCapturedValidation(directory, timeoutMs, signal) {
|
|
|
101
103
|
child.once('close', code => {
|
|
102
104
|
clearTimeout(timeout);
|
|
103
105
|
signal?.removeEventListener('abort', abort);
|
|
106
|
+
try {
|
|
107
|
+
temporary?.joined();
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
if (!failed) {
|
|
111
|
+
failed = true;
|
|
112
|
+
firstError = error;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
104
115
|
if (failed)
|
|
105
116
|
return reject(firstError);
|
|
106
117
|
if (code === 0)
|
|
@@ -115,6 +126,12 @@ function runCapturedValidation(directory, timeoutMs, signal) {
|
|
|
115
126
|
catch { /* Unstructured child output is not a diagnostic contract. */ }
|
|
116
127
|
reject(new DevelopmentValidationError('development.validation.rejected', diagnosticCode));
|
|
117
128
|
});
|
|
129
|
+
try {
|
|
130
|
+
temporary?.spawned(child.pid);
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
fail(error);
|
|
134
|
+
}
|
|
118
135
|
if (signal?.aborted)
|
|
119
136
|
abort();
|
|
120
137
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"development-validation.js","sourceRoot":"","sources":["../src/development-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"development-validation.js","sourceRoot":"","sources":["../src/development-validation.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -80,6 +80,42 @@ class PromptFrameCliError extends Error {
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
async function run(name, argv) {
|
|
83
|
+
// Resolve CLI help before a handler can package, contact a platform, or write
|
|
84
|
+
// configuration. Arguments after `--` belong to an explicitly launched tool.
|
|
85
|
+
const ownArgs = argv.slice(0, argv.includes('--') ? argv.indexOf('--') : argv.length);
|
|
86
|
+
const valueOptions = new Set([
|
|
87
|
+
'--allowed-upload-target', '--asset-ref', '--auth-permissions', '--auth-roles',
|
|
88
|
+
'--component-id', '--component-path', '--config', '--cursor', '--description',
|
|
89
|
+
'--display-name', '--endpoint', '--expires-at', '--file', '--host', '--id',
|
|
90
|
+
'--idle-timeout', '--level', '--limit', '--name', '--out', '--page-size',
|
|
91
|
+
'--poll-interval-seconds', '--port', '--project-context', '--project-id',
|
|
92
|
+
'--project-namespace', '--prop', '--provider', '--provider-kind', '--provider-name',
|
|
93
|
+
'--reason', '--release-notes', '--scope', '--session-id', '--status', '--studio-origin', '--target',
|
|
94
|
+
'--tenant-id', '--timeout-seconds', '--token', '--token-id', '--upload-target',
|
|
95
|
+
'--user-id', '--version-notes', '--workspace-component', '--workspace-config',
|
|
96
|
+
]);
|
|
97
|
+
const flagOptions = new Set([
|
|
98
|
+
'--apply', '--check-latest', '--dry-run', '--fail-on-build-failed', '--force',
|
|
99
|
+
'--help', '-h', '--json', '--replace', '--show', '--strict', '--upgrade',
|
|
100
|
+
'--with-assets', '--workspace', '--write-local-report',
|
|
101
|
+
]);
|
|
102
|
+
for (let index = 0; index < ownArgs.length; index++) {
|
|
103
|
+
const argument = ownArgs[index];
|
|
104
|
+
if (!argument.startsWith('-'))
|
|
105
|
+
continue;
|
|
106
|
+
const option = argument.split('=', 1)[0];
|
|
107
|
+
if (!valueOptions.has(option) && !flagOptions.has(option)) {
|
|
108
|
+
fail(`Unknown option: ${option}`, 'cli.option.unknown', 2);
|
|
109
|
+
}
|
|
110
|
+
if (valueOptions.has(option) && !argument.includes('=')
|
|
111
|
+
&& ownArgs[index + 1] && !ownArgs[index + 1].startsWith('--')
|
|
112
|
+
&& ownArgs[index + 1] !== '-h')
|
|
113
|
+
index++;
|
|
114
|
+
}
|
|
115
|
+
if (ownArgs.includes('--help') || ownArgs.includes('-h')) {
|
|
116
|
+
help(name);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
83
119
|
switch (name) {
|
|
84
120
|
case 'standard':
|
|
85
121
|
standard();
|
|
@@ -4401,8 +4437,11 @@ function printJson(value) {
|
|
|
4401
4437
|
function fail(message, code, exitCode = 1, repairHint) {
|
|
4402
4438
|
throw new PromptFrameCliError(message, code, exitCode, repairHint);
|
|
4403
4439
|
}
|
|
4404
|
-
function help() {
|
|
4405
|
-
console.log(`PromptFrame CLI
|
|
4440
|
+
function help(subject) {
|
|
4441
|
+
console.log(`PromptFrame CLI${subject ? ` — ${subject}` : ''}
|
|
4442
|
+
|
|
4443
|
+
Usage: promptframe ${subject ?? '<command>'} [arguments] [options]
|
|
4444
|
+
Use --help or -h before -- for CLI help without executing the command.
|
|
4406
4445
|
|
|
4407
4446
|
Commands:
|
|
4408
4447
|
standard Print current public component standard versions
|