@promptframe/cli 0.1.68 → 0.1.70

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
@@ -8,7 +8,7 @@ PromptFrame component authoring CLI.
8
8
 
9
9
  Use it to inspect the public component standard, check component folders, validate manifests, inspect the local preview envelope, package source archives, upload components, check build status, rebuild evidence indexes, and rerun layout/security probes.
10
10
 
11
- Current source baseline is `@promptframe/cli@0.1.68`, `@promptframe/contracts@0.1.36`, `@promptframe/component-kit@0.1.30`, and `create-promptframe-component@0.1.58`. The published CLI consumes the contracts AST-aware public security policy evaluator, reports `securityPolicyDigest` / `securityEvaluatorMode` in JSON output, rejects red-team browser capability vectors such as Image/Audio beacons, Worker/SharedWorker, `window.open`, `postMessage`, dynamic script/iframe creation, browser fingerprinting, storage/cookie access, and dangerous HTML, reports `publicResources` for component-level public assets, keeps native `<img>` / `<video>` source checks case-sensitive so Remotion `<Img>` / `<Video>` remain valid, validates preview props against statically declared `propsSchema` fields and requires readable public prop descriptions, enforces strict Slot-first layout/source diagnostics, supports endpoint discovery, project list/current diagnostics, self-service CI token create/list/revoke, single-component and workspace GitHub workflow setup with `promptframe-workflow-version: 2`, `setup-ci --upgrade` stale-template repair, dynamic workspace matrix discovery, `RUNNER_LABELS` and pnpm 10 workflow support, pnpm workspace root lockfile evidence without component symlinks, `promptframe-workspace.json` validation, workspace root `check .` / `upload .` auto-detection, explicit `workspace:*` shared-package diagnostics, workspace upload source metadata headers, packages sanitized lockfile evidence for platform admission, release notes forwarding to upload, stderr NDJSON upload progress for `--json`, human-readable token kind/expiry summaries for `login`, `whoami`, and authenticated `upload`, server version auto-bump notes, and supports `status --fail-on-build-failed` for CI build-status gating.
11
+ Current source baseline is `@promptframe/cli@0.1.70`, `@promptframe/contracts@0.1.38`, `@promptframe/component-kit@0.1.32`, and `create-promptframe-component@0.1.60`. The published CLI consumes the contracts AST-aware public security policy evaluator, reports `securityPolicyDigest` / `securityEvaluatorMode` in JSON output, rejects red-team browser capability vectors such as Image/Audio beacons, Worker/SharedWorker, `window.open`, `postMessage`, dynamic script/iframe creation, browser fingerprinting, storage/cookie access, and dangerous HTML, reports `publicResources` for component-level public assets, keeps native `<img>` / `<video>` source checks case-sensitive so Remotion `<Img>` / `<Video>` remain valid, validates preview props against statically declared `propsSchema` fields and requires readable public prop descriptions, enforces strict Slot-first layout/source diagnostics, supports endpoint discovery, project list/current diagnostics, self-service CI token create/list/revoke, single-component and workspace GitHub workflow setup with `promptframe-workflow-version: 2`, `setup-ci --upgrade` stale-template repair, dynamic workspace matrix discovery, `RUNNER_LABELS` and pnpm 10 workflow support, pnpm workspace root lockfile evidence without component symlinks, `promptframe-workspace.json` validation, workspace root `check .` / `upload .` auto-detection, explicit `workspace:*` shared-package diagnostics, workspace upload source metadata headers, packages sanitized lockfile evidence for platform admission, release notes forwarding to upload, stderr NDJSON upload progress for `--json`, human-readable token kind/expiry summaries for `login`, `whoami`, and authenticated `upload`, server version auto-bump notes, and supports `status --fail-on-build-failed` for CI build-status gating.
12
12
 
13
13
  ```bash
14
14
  npm install -D @promptframe/cli
@@ -100,11 +100,11 @@ The upload-to-publish lifecycle has multiple gates. `upload` returning success m
100
100
  promptframe dev . --studio-origin https://studio.example
101
101
  ```
102
102
 
103
- 入口监听一个 loopback 地址,端口 `0` 由系统选择一个实际端口,也可用 `--port` 指定。成功监听后输出实际 URL、连接 ID、精确 Studio Origin 和十分钟连接凭据。凭据只用于本机显式连接,不是平台登录或上传 Token;不要提交或放进组件代码。远程浏览器、SSH/WSL 和 HTTPS 到本机的访问仍需真实桥接及浏览器许可,不能根据命令启动推断可达。
103
+ 入口监听一个 loopback 地址,默认从24000—24999选择工作区稳定端口;`--port 0` 由系统分配端口,也可用 `--port` 显式指定。成功监听后输出实际 URL、稳定连接 ID、精确 Studio Origin 和本次进程新生成的连接凭据。凭据只用于本机显式连接,不是平台登录或上传 Token;不要提交或放进组件代码。远程浏览器、SSH/WSL 和 HTTPS 到本机的访问仍需真实桥接及浏览器许可,不能根据命令启动推断可达。
104
104
 
105
105
  `/__promptframe/registry` 和 `events` 以精确 Host/Origin/Authorization 返回模块的当前捕获版本、checking/checked/failed、固定诊断及明确的 lastChecked。精确版本的 bundle 接口一次返回 Component/schema/index ESM、共享 chunk 和已捕获 public 资源;输出不附原包锁或连接凭据。原始 Vite 文件、`/@fs`、默认 HTML/HMR、子配置和 npm 脚本入口关闭。
106
106
 
107
- 每个模块先捕获自身文件、实际 workspace pnpm 锁和声明,再运行普通 CLI validate、固定 Vite 闭合图构建和当前内容重捕获。漏通知、快速保存或旧构建晚回不能授权旧字节覆盖新版;失败保留明确标记的 lastChecked。检查状态是构建/规则事实,Player 必须在隔离执行后另报实际加载版本。根服务本身尚未提供 Studio 消费端或 Player 加载 ACK,也不代替平台正式 upload/admission。
107
+ 每个模块先捕获自身文件、实际 workspace pnpm 锁和声明,再运行普通 CLI validate、固定 Vite 闭合图构建和当前内容重捕获。漏通知、快速保存或旧构建晚回不能授权旧字节覆盖新版;失败保留明确标记的 lastChecked。检查状态是构建/规则事实,Player 必须在隔离执行后另报实际加载版本。Studio 开发连接面板消费该连接;只有 Player 回报的实际加载版本能证明画面已更新,根服务 checked 状态不代替此回报或平台正式 upload/admission。
108
108
 
109
109
  构建采用 Vite 8.0.10 和自动 JSX,支持捕获内的 JS/TS/JSON 静态图与 `.module.css`。CSS Modules 的类名按捕获版本和文件路径隔离,样式随实际组件挂载和卸载;默认脚手架的 `propsSchema`、命名 index 与 manifest 指定的组件导出会对齐 Player 原有入口。样式只支持本模块类选择器和纯布局、颜色表达式,不解析 CSS import、URL、composition、全局选择器或独立动画时钟;资源仍使用原公共资源 helper。React/ReactDOM/Remotion、zod 及 PromptFrame 公共 runtime 作为明确列出的共享 external,由消费端按兼容合同提供;不从作者 `node_modules` 偷读依赖。其它 npm/本机 alias、父目录源码、普通全局 CSS、`import.meta` 和非字面动态 import 尚不支持,返回确定诊断。锁文件捕获证明实际输入,不冒依赖安装或解析完整性;正式各模块独立包仍走原检查和上传。
110
110
 
@@ -237,3 +237,5 @@ promptframe resource clear .
237
237
  平台素材使用同一选择命令的 `--asset-ref` 和原作品 `--session-id`,不得与 `--file` 同用。项目来自正常 `promptframe init` 写入的无凭据上下文。需要先沿正常 `promptframe login --endpoint <平台API> --with-assets` 授予 `asset.read`;旧组件上传凭据不会自动扩大权限。开发服务复用现有 CLI 凭据,逐次请求当前用户、项目与作品范围内的短时只读表示,核字节 SHA 后向浏览器提供本机地址。凭据、签名 URL 和私有文件路径不会发送给组件。断网、撤权、文件变化或选择过期时,预览明确提示不可用并标明正在展示包内示例;恢复条件后刷新。
238
238
 
239
239
  市场预览的素材选择读取访问者当前作品中的就绪素材,不改变组件包或上传新素材。正式使用时将合法素材引用冻结在 Spec,渲染入口沿原授权、素材存储和预下载合同准备本地表示;签名 URL 不保存到 Spec。
240
+
241
+ 工作区 dev 与 package 共用模块目录及子目录的 `.gitignore` 选择语义,不隐式读取工作区祖先的 ignore 规则;新增且未提交的合法源码仍会捕获。忽略的出图不读入快照或使已检查模块失效,必要入口、原始锁文件和 public 资源被误排时明确报错。dev 保留原始锁和工作区声明,正式源码包继续生成原锁证据;两者不是同一种字节格式。
@@ -0,0 +1,23 @@
1
+ export declare class ComponentFileSelectionError extends Error {
2
+ readonly code: string;
3
+ readonly description: string;
4
+ constructor(code: string, description?: string);
5
+ }
6
+ /** Package and dev share module-local and nested ignore semantics. Ancestor
7
+ * workspace ignores are not implicitly imported into an individual module. */
8
+ export declare function selectComponentSourceFiles(root: string, requiredPaths: ReadonlySet<string>, options?: {
9
+ maximumFiles?: number;
10
+ maximumEntries?: number;
11
+ maximumDepth?: number;
12
+ rejectSpecialFiles?: boolean;
13
+ }): {
14
+ paths: string[];
15
+ ignoreInputs: Array<{
16
+ path: string;
17
+ sha256: string;
18
+ }>;
19
+ };
20
+ /** Deleted paths use the same rules without reopening the deleted source.
21
+ * Changes to active ignore controls still invalidate the selected snapshot. */
22
+ export declare function isComponentSourcePathIgnored(root: string, name: string): boolean;
23
+ //# sourceMappingURL=component-file-selection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-file-selection.d.ts","sourceRoot":"","sources":["../src/component-file-selection.ts"],"names":[],"mappings":"AAOA,qBAAa,2BAA4B,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAE,QAAQ,CAAC,WAAW,EAAE,MAAM;gBAA1C,IAAI,EAAE,MAAM,EAAW,WAAW,GAAE,MAAa;CACvE;AA2CD;8EAC8E;AAC9E,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,GAAE;IACpG,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAChG,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CA0BlF;AAED;+EAC+E;AAC/E,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAYhF"}
@@ -0,0 +1,132 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { closeSync, constants, existsSync, fstatSync, lstatSync, openSync, readSync, readdirSync, realpathSync } from 'node:fs';
3
+ import { dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';
4
+ import ignore from 'ignore';
5
+ const excluded = new Set(['node_modules', 'dist', '.git', '.component-packages', '.promptframe']);
6
+ export class ComponentFileSelectionError extends Error {
7
+ code;
8
+ description;
9
+ constructor(code, description = code) {
10
+ super(code);
11
+ this.code = code;
12
+ this.description = description;
13
+ }
14
+ }
15
+ function readIgnore(root, directory) {
16
+ const file = join(directory, '.gitignore');
17
+ if (!existsSync(file))
18
+ return undefined;
19
+ const checkDirectory = () => {
20
+ const local = relative(realpathSync(root), realpathSync(directory));
21
+ if (local === '..' || local.startsWith('..' + sep) || isAbsolute(local))
22
+ throw new ComponentFileSelectionError('development.capture.outside_root');
23
+ for (let current = directory;; current = dirname(current)) {
24
+ const entry = lstatSync(current);
25
+ if (entry.isSymbolicLink() || !entry.isDirectory())
26
+ throw new ComponentFileSelectionError('development.capture.symlink');
27
+ if (current === root)
28
+ break;
29
+ if (current === dirname(current))
30
+ throw new ComponentFileSelectionError('development.capture.outside_root');
31
+ }
32
+ };
33
+ checkDirectory();
34
+ if (!lstatSync(file).isFile())
35
+ throw new ComponentFileSelectionError('package.gitignore.invalid', '.gitignore must be an ordinary package-local file.');
36
+ const descriptor = openSync(file, constants.O_RDONLY | (constants.O_NOFOLLOW ?? 0) | (constants.O_NONBLOCK ?? 0));
37
+ try {
38
+ const before = fstatSync(descriptor, { bigint: true });
39
+ if (!before.isFile() || before.size > 1024n * 1024n)
40
+ throw new ComponentFileSelectionError('package.gitignore.invalid');
41
+ const bytes = Buffer.alloc(Number(before.size) + 1);
42
+ let used = 0;
43
+ while (used < bytes.length) {
44
+ const count = readSync(descriptor, bytes, used, bytes.length - used, null);
45
+ if (!count)
46
+ break;
47
+ used += count;
48
+ }
49
+ const after = fstatSync(descriptor, { bigint: true }), current = lstatSync(file, { bigint: true });
50
+ checkDirectory();
51
+ if (used !== Number(before.size) || ['dev', 'ino', 'size', 'mtimeNs', 'ctimeNs'].some(key => {
52
+ const field = key;
53
+ return before[field] !== after[field] || after[field] !== current[field];
54
+ }))
55
+ throw new ComponentFileSelectionError('development.capture.changed_during_read');
56
+ return { rule: { root: directory, matcher: ignore({ ignorecase: false }).add(bytes.subarray(0, used).toString('utf8')) }, bytes: bytes.subarray(0, used) };
57
+ }
58
+ finally {
59
+ closeSync(descriptor);
60
+ }
61
+ }
62
+ function isIgnored(file, directory, rules) {
63
+ let ignored = false;
64
+ for (const rule of rules) {
65
+ const result = rule.matcher.test(relative(rule.root, file).replace(/\\/g, '/') + (directory ? '/' : ''));
66
+ if (result.ignored)
67
+ ignored = true;
68
+ else if (result.unignored)
69
+ ignored = false;
70
+ }
71
+ return ignored;
72
+ }
73
+ /** Package and dev share module-local and nested ignore semantics. Ancestor
74
+ * workspace ignores are not implicitly imported into an individual module. */
75
+ export function selectComponentSourceFiles(root, requiredPaths, options = {}) {
76
+ const paths = [], ignoreInputs = [];
77
+ let entries = 0;
78
+ const walk = (directory, inherited, depth) => {
79
+ if (depth > (options.maximumDepth ?? Infinity))
80
+ throw new ComponentFileSelectionError('development.capture.directory_limit');
81
+ const local = readIgnore(root, directory), rules = local ? [...inherited, local.rule] : inherited;
82
+ if (local)
83
+ ignoreInputs.push({ path: relative(root, join(directory, '.gitignore')).replace(/\\/g, '/'),
84
+ sha256: 'sha256:' + createHash('sha256').update(local.bytes).digest('hex') });
85
+ for (const entry of readdirSync(directory, { withFileTypes: true })) {
86
+ if (++entries > (options.maximumEntries ?? Infinity))
87
+ throw new ComponentFileSelectionError('development.capture.directory_limit');
88
+ if (excluded.has(entry.name))
89
+ continue;
90
+ const full = join(directory, entry.name), name = relative(root, full).replace(/\\/g, '/');
91
+ if (isIgnored(full, entry.isDirectory(), rules)) {
92
+ if ([...requiredPaths].some(path => path === name || entry.isDirectory() && path.startsWith(name + '/'))
93
+ || name === 'public' || name.startsWith('public/'))
94
+ throw new ComponentFileSelectionError('package.required_file.ignored', `.gitignore excludes required component content: ${name}. Remove that rule or explicitly include the required source/resource.`);
95
+ continue;
96
+ }
97
+ if (entry.isDirectory())
98
+ walk(full, rules, depth + 1);
99
+ else if (entry.isFile())
100
+ paths.push(name);
101
+ else if (options.rejectSpecialFiles)
102
+ throw new ComponentFileSelectionError(entry.isSymbolicLink() ? 'development.capture.symlink' : 'development.capture.not_file');
103
+ if (paths.length > (options.maximumFiles ?? Infinity))
104
+ throw new ComponentFileSelectionError('development.contents.file_count');
105
+ }
106
+ };
107
+ walk(root, [], 0);
108
+ return { paths: paths.sort(), ignoreInputs };
109
+ }
110
+ /** Deleted paths use the same rules without reopening the deleted source.
111
+ * Changes to active ignore controls still invalidate the selected snapshot. */
112
+ export function isComponentSourcePathIgnored(root, name) {
113
+ if (!name || name.startsWith('/') || name.includes('\\') || name.split('/').some(part => !part || part === '.' || part === '..'))
114
+ return false;
115
+ const parts = name.split('/'), rules = [];
116
+ let directory = root;
117
+ for (let index = 0; index < parts.length; index++) {
118
+ if (excluded.has(parts[index]))
119
+ return true;
120
+ const local = readIgnore(root, directory);
121
+ if (local)
122
+ rules.push(local.rule);
123
+ const full = resolve(directory, parts[index]);
124
+ if (index === parts.length - 1 && parts[index] === '.gitignore')
125
+ return false;
126
+ if (isIgnored(full, index < parts.length - 1, rules))
127
+ return true;
128
+ directory = full;
129
+ }
130
+ return false;
131
+ }
132
+ //# sourceMappingURL=component-file-selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-file-selection.js","sourceRoot":"","sources":["../src/component-file-selection.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"development-workspace.d.ts","sourceRoot":"","sources":["../src/development-workspace.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAKjE,MAAM,WAAW,0BAA0B;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAExE;gFACgF;AAChF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,0BAA0B,GAAG,mBAAmB,CAuD9G;AAED;6EAC6E;AAC7E,wBAAsB,yBAAyB,CAAC,OAAO,EAAE;IACvD,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,0BAA0B,EAAE,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IACnF,IAAI,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAC,MAAM,CAAC;IAAC,YAAY,CAAC,EAAC,OAAO,CAAC;IACvF,aAAa,CAAC,EAAC,MAAM,CAAC;IAAC,WAAW,CAAC,EAAC,MAAM,CAAC;CAC5C;;;;;;;;;;;gBA+LwC,MAAM;gBAAQ,OAAO;;;IAuB7D"}
1
+ {"version":3,"file":"development-workspace.d.ts","sourceRoot":"","sources":["../src/development-workspace.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAMjE,MAAM,WAAW,0BAA0B;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAExE;gFACgF;AAChF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,0BAA0B,GAAG,mBAAmB,CAkD9G;AAED;6EAC6E;AAC7E,wBAAsB,yBAAyB,CAAC,OAAO,EAAE;IACvD,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,0BAA0B,EAAE,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IACnF,IAAI,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAC,MAAM,CAAC;IAAC,YAAY,CAAC,EAAC,OAAO,CAAC;IACvF,aAAa,CAAC,EAAC,MAAM,CAAC;IAAC,WAAW,CAAC,EAAC,MAAM,CAAC;CAC5C;;;;;;;;;;;gBAyMwC,MAAM;gBAAQ,OAAO;;;IAuB7D"}
@@ -1,5 +1,5 @@
1
- import { randomBytes, timingSafeEqual } from 'node:crypto';
2
- import { existsSync, lstatSync, opendirSync, realpathSync } from 'node:fs';
1
+ import { createHash, randomBytes, timingSafeEqual } from 'node:crypto';
2
+ import { existsSync, lstatSync, realpathSync } from 'node:fs';
3
3
  import { createServer as createHttpServer } from 'node:http';
4
4
  import { dirname, join, posix, relative, resolve, sep } from 'node:path';
5
5
  import { createServer as createViteServer } from 'vite';
@@ -7,7 +7,8 @@ import { buildDevelopmentContents } from './development-build.js';
7
7
  import { DevelopmentModuleCoordinator } from './development-coordinator.js';
8
8
  import { captureDevelopmentFiles } from './development-files.js';
9
9
  import { DevelopmentContents } from './development-revisions.js';
10
- const excluded = new Set(['node_modules', 'dist', '.git', '.component-packages', '.promptframe']);
10
+ import { PROMPTFRAME_PUBLIC_STANDARD_POLICY } from '@promptframe/contracts';
11
+ import { isComponentSourcePathIgnored, selectComponentSourceFiles } from './component-file-selection.js';
11
12
  const limits = { maximumFiles: 2048, maximumBytes: 16 * 1024 * 1024 };
12
13
  const lockfiles = ['package-lock.json', 'npm-shrinkwrap.json', 'pnpm-lock.yaml', 'yarn.lock', 'bun.lock', 'bun.lockb'];
13
14
  /** One capture includes the module and its real shared pnpm lock bytes. Source
@@ -23,37 +24,20 @@ export function captureDevelopmentModule(root, module) {
23
24
  if (lstatSync(path).isSymbolicLink())
24
25
  throw new Error('development.capture.symlink');
25
26
  }
26
- const names = [];
27
- let entries = 0;
28
- const walk = (directory, prefix, depth) => {
29
- if (depth > 32)
30
- throw new Error('development.capture.directory_limit');
31
- const handle = opendirSync(directory);
32
- try {
33
- for (let entry = handle.readSync(); entry; entry = handle.readSync()) {
34
- if (++entries > 8192)
35
- throw new Error('development.capture.directory_limit');
36
- if (excluded.has(entry.name))
37
- continue;
38
- const path = join(directory, entry.name), name = prefix + entry.name;
39
- if (entry.isSymbolicLink())
40
- throw new Error('development.capture.symlink');
41
- if (entry.isDirectory())
42
- walk(path, name + '/', depth + 1);
43
- else if (entry.isFile()) {
44
- names.push(name);
45
- if (names.length > limits.maximumFiles)
46
- throw new Error('development.contents.file_count');
47
- }
48
- else
49
- throw new Error('development.capture.not_file');
50
- }
51
- }
52
- finally {
53
- handle.closeSync();
54
- }
55
- };
56
- walk(directory, '', 0);
27
+ const manifestBytes = Buffer.from(captureDevelopmentFiles(directory, ['manifest.json'], limits).readFiles()[0].bytes);
28
+ const manifestInput = JSON.parse(manifestBytes.toString('utf8'));
29
+ const required = new Set(PROMPTFRAME_PUBLIC_STANDARD_POLICY.requiredFiles);
30
+ for (const value of [manifestInput.entry?.sourcePath, manifestInput.entry?.propsSchemaPath])
31
+ if (typeof value === 'string')
32
+ required.add(value);
33
+ for (const name of lockfiles)
34
+ if (existsSync(join(directory, name)))
35
+ required.add(name);
36
+ const selection = selectComponentSourceFiles(directory, required, { maximumFiles: limits.maximumFiles,
37
+ maximumEntries: 8192, maximumDepth: 32, rejectSpecialFiles: true });
38
+ // Ignore controls are raw source inputs even if an ignore rule excludes its
39
+ // own file. Their observed bytes must still match the captured selection.
40
+ const names = [...new Set([...selection.paths, ...selection.ignoreInputs.map(file => file.path)])];
57
41
  const sharedLock = !lockfiles.some(name => names.includes(name))
58
42
  && existsSync(join(base, 'pnpm-workspace.yaml')) && existsSync(join(base, 'pnpm-lock.yaml'));
59
43
  const prefix = module.path + '/';
@@ -62,6 +46,10 @@ export function captureDevelopmentModule(root, module) {
62
46
  paths.push('pnpm-workspace.yaml', 'pnpm-lock.yaml');
63
47
  paths.push('promptframe-workspace.json');
64
48
  const captured = captureDevelopmentFiles(base, paths, limits);
49
+ const capturedFiles = new Map(captured.readFiles().map(file => [file.path, file.bytes]));
50
+ if (!manifestBytes.equals(Buffer.from(capturedFiles.get(prefix + 'manifest.json'))) || selection.ignoreInputs.some(file => 'sha256:' + createHash('sha256').update(capturedFiles.get(prefix + file.path)).digest('hex') !== file.sha256)) {
51
+ throw new Error('development.capture.changed_during_read');
52
+ }
65
53
  const normalized = new DevelopmentContents(captured.readFiles().map(file => ({
66
54
  path: file.path.startsWith(prefix) ? file.path.slice(prefix.length)
67
55
  : file.path === 'promptframe-workspace.json' ? 'promptframe-workspace.captured.json' : file.path,
@@ -304,9 +292,25 @@ export async function startDevelopmentWorkspace(options) {
304
292
  const changed = (_event, path) => {
305
293
  const local = relative(root, resolve(path)).split(sep).join('/');
306
294
  for (const [id, module] of modules) {
307
- if (local === module.path || local.startsWith(module.path + '/') || local === 'pnpm-lock.yaml'
308
- || local === 'package.json' || local === 'pnpm-workspace.yaml' || local === 'promptframe-workspace.json')
295
+ if (local === module.path || local === 'pnpm-lock.yaml' || local === 'package.json'
296
+ || local === 'pnpm-workspace.yaml' || local === 'promptframe-workspace.json') {
309
297
  enqueue(id);
298
+ continue;
299
+ }
300
+ if (!local.startsWith(module.path + '/'))
301
+ continue;
302
+ const name = local.slice(module.path.length + 1);
303
+ // Public resources and required/lock controls must produce an explicit
304
+ // failure when newly ignored. Ordinary ignored outputs do not invalidate
305
+ // an already checked module or enter the build queue.
306
+ if (!name.startsWith('public/') && name !== 'public' && !lockfiles.includes(name)) {
307
+ try {
308
+ if (isComponentSourcePathIgnored(resolve(root, module.path), name))
309
+ continue;
310
+ }
311
+ catch { /* A changed/invalid rule is recaptured and reported by the checker. */ }
312
+ }
313
+ enqueue(id);
310
314
  }
311
315
  };
312
316
  vite.watcher.on('all', changed);
@@ -1 +1 @@
1
- {"version":3,"file":"development-workspace.js","sourceRoot":"","sources":["../src/development-workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"development-workspace.js","sourceRoot":"","sources":["../src/development-workspace.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -8,7 +8,10 @@ import { basename, dirname, extname, join, relative, resolve } from 'node:path';
8
8
  import { inflateRawSync } from 'node:zlib';
9
9
  import { cliBearerToken, readCliConfiguration } from './configuration.js';
10
10
  import ignore from 'ignore';
11
- import { COMPONENT_MANIFEST_SCHEMA_VERSION, COMPONENT_PUBLIC_RESOURCES_CONTRACT_VERSION, COMPONENT_REF_VERSION, COMPONENT_STANDARD_SOURCE_HASH, COMPONENT_STANDARD_VERSION, PROMPTFRAME_AUTHORING_STANDARD_RELEASE, PROMPTFRAME_PUBLIC_RESOURCE_LIMITS, PROMPTFRAME_PUBLIC_RESOURCE_POLICY, PROMPTFRAME_PUBLIC_SECURITY_POLICY, PROMPTFRAME_PUBLIC_SECURITY_POLICY_DIGEST, PROMPTFRAME_PUBLIC_STANDARD_POLICY, PROMPTFRAME_LAYOUT_POLICY_RULE_IDS, PROMPTFRAME_CONTRACTS_VERSION, PROMPTFRAME_PUBLIC_DEPENDENCY_POLICY, detectPromptFrameUnknownCustomStyleProps, evaluatePromptFrameLayoutPolicy, evaluatePromptFrameDependencyPolicy, collectPromptFrameResourceReferences, authoringUploadTargetSchema, parseComponentManifest, } from '@promptframe/contracts';
11
+ import { ComponentFileSelectionError, selectComponentSourceFiles } from './component-file-selection.js';
12
+ import { COMPONENT_MANIFEST_SCHEMA_VERSION, COMPONENT_PUBLIC_RESOURCES_CONTRACT_VERSION, COMPONENT_REF_VERSION, COMPONENT_STANDARD_SOURCE_HASH, COMPONENT_STANDARD_VERSION, PROMPTFRAME_AUTHORING_STANDARD_RELEASE, PROMPTFRAME_PUBLIC_RESOURCE_LIMITS, PROMPTFRAME_PUBLIC_RESOURCE_POLICY, PROMPTFRAME_PUBLIC_SECURITY_POLICY, PROMPTFRAME_PUBLIC_SECURITY_POLICY_DIGEST, PROMPTFRAME_PUBLIC_STANDARD_POLICY, PROMPTFRAME_LAYOUT_POLICY_RULE_IDS, PROMPTFRAME_CONTRACTS_VERSION, PROMPTFRAME_PUBLIC_DEPENDENCY_POLICY, detectPromptFrameUnknownCustomStyleProps, collectPromptFrameResourceReferences, authoringUploadTargetSchema, parseComponentManifest, selectComponentPreviewDurationFrames, } from '@promptframe/contracts';
13
+ import { evaluatePromptFrameLayoutPolicy } from '@promptframe/contracts/layout-evaluator';
14
+ import { evaluatePromptFrameDependencyPolicy } from '@promptframe/contracts/dependency-evaluator';
12
15
  import { evaluatePromptFrameSecurityPolicySource, } from '@promptframe/contracts/security-evaluator';
13
16
  import { evaluatePromptFrameSchemaSource, } from '@promptframe/contracts/schema-evaluator';
14
17
  import { applyPackageChanges, buildFreshnessDecision, computePackageChanges, computePackageFreshnessDiagnostics, computeScaffoldFreshnessDiagnostics, resolveLocalPreviewScript, } from './lifecycle.js';
@@ -443,7 +446,7 @@ function preview(argv) {
443
446
  const input = resolveComponentInput(argv);
444
447
  const dir = input.dir;
445
448
  const manifest = validateComponentDirectory(dir);
446
- const previewEnvelope = readPreviewProps(dir);
449
+ const previewEnvelope = playbackPreviewProps(dir, manifest);
447
450
  const previewScript = resolveLocalPreviewScript(readPackageManifest(join(dir, 'package.json')));
448
451
  const localPreviewReport = hasFlag(argv, '--write-local-report')
449
452
  ? writeLocalPreviewReport({
@@ -505,7 +508,7 @@ async function dev(argv) {
505
508
  const manifest = validateComponentDirectory(dir);
506
509
  assertAuthoringPackageFreshness(dir, target);
507
510
  const freshness = await resolveSoftRemoteStandardFreshness(argv, target, 'dev');
508
- const previewEnvelope = readPreviewProps(dir);
511
+ const previewEnvelope = playbackPreviewProps(dir, manifest);
509
512
  const publicResources = evaluateDirectoryPublicResources(dir);
510
513
  assertPublicResourcesAccepted(publicResources);
511
514
  const devPublicResources = writeDevPublicResourceArtifacts(dir, publicResources);
@@ -669,7 +672,10 @@ function packageComponent(argv) {
669
672
  }
670
673
  function validateComponentDirectory(dir, options = {}) {
671
674
  assertRequiredFiles(dir, options);
672
- assertDependencyPolicyAccepted(evaluateDirectoryDependencyPolicy(dir));
675
+ const dependencyPolicy = evaluateDirectoryDependencyPolicy(dir);
676
+ const installErrors = dependencyPolicy.diagnostics.filter(row => row.severity === 'error' && row.code.startsWith('dependency.install.'));
677
+ if (installErrors.length)
678
+ assertDependencyPolicyAccepted({ ...dependencyPolicy, diagnostics: installErrors });
673
679
  const manifestPath = join(dir, 'manifest.json');
674
680
  const manifest = JSON.parse(readFileSync(manifestPath, 'utf8'));
675
681
  const parsed = parseComponentManifest(normalizeLegacyManifest(manifest));
@@ -678,6 +684,7 @@ function validateComponentDirectory(dir, options = {}) {
678
684
  validateSourceSafety(dir, options);
679
685
  validateSecurityPolicy(dir, options);
680
686
  checkImportBoundary(dir);
687
+ assertDependencyPolicyAccepted(dependencyPolicy);
681
688
  return parsed;
682
689
  }
683
690
  function manifestSummary(manifest) {
@@ -718,9 +725,13 @@ function readScaffoldMetadata(dir) {
718
725
  }
719
726
  }
720
727
  function evaluateDirectoryDependencyPolicy(dir) {
728
+ const manifest = parseComponentManifest(normalizeLegacyManifest(JSON.parse(readFileSync(join(dir, 'manifest.json'), 'utf8'))));
721
729
  return evaluatePromptFrameDependencyPolicy({
722
730
  packageJson: readPackageManifest(join(dir, 'package.json')),
723
731
  lockfilePresent: hasPackageManagerLockfile(dir),
732
+ runtimeEntryPaths: [manifest.entry.sourcePath, manifest.entry.propsSchemaPath, 'src/index.ts'],
733
+ files: collectPackageFiles(dir).map(file => ({ path: file.name,
734
+ sourceText: /\.[cm]?[jt]sx?$/i.test(file.name) ? file.data.toString('utf8') : '' })),
724
735
  });
725
736
  }
726
737
  function hasPackageManagerLockfile(dir) {
@@ -729,7 +740,7 @@ function hasPackageManagerLockfile(dir) {
729
740
  function assertDependencyPolicyAccepted(receipt) {
730
741
  if (receipt.status !== 'reject')
731
742
  return;
732
- const first = receipt.diagnostics[0];
743
+ const first = receipt.diagnostics.find(row => row.severity === 'error') ?? receipt.diagnostics[0];
733
744
  fail(first?.message ?? 'PromptFrame dependency policy rejected this component package.', first?.code ?? 'dependency.policy.rejected');
734
745
  }
735
746
  function packageDirectory(componentDir, outArg) {
@@ -3376,7 +3387,8 @@ function validatePreviewProps(dir, manifest) {
3376
3387
  function assertPreviewDurationMatchesManifest(preview, manifest) {
3377
3388
  const durationFrames = Number(preview.durationFrames);
3378
3389
  const { min, max } = manifest.designedDurationRange;
3379
- if (durationFrames >= min && durationFrames <= max)
3390
+ const cap = Number(preview.fps) * 30;
3391
+ if (durationFrames >= Math.min(min, cap) && durationFrames <= Math.min(max, cap))
3380
3392
  return;
3381
3393
  fail(`src/preview-props.json durationFrames (${durationFrames}) must be within manifest.designedDurationRange (${min}-${max}).`, 'component_standard.preview.duration_frames.designed_range');
3382
3394
  }
@@ -3388,6 +3400,12 @@ function readPreviewProps(dir) {
3388
3400
  }
3389
3401
  return preview;
3390
3402
  }
3403
+ function playbackPreviewProps(dir, manifest) {
3404
+ const preview = readPreviewProps(dir);
3405
+ return { ...preview, durationFrames: selectComponentPreviewDurationFrames({
3406
+ fps: Number(preview.fps), durationFrames: Number(preview.durationFrames), designedDurationRange: manifest.designedDurationRange,
3407
+ }) };
3408
+ }
3391
3409
  function assertPreviewPropsMatchStaticSchema(manifest, preview, schemaFacts) {
3392
3410
  const previewProps = asRecord(preview.props) ?? {};
3393
3411
  const previewPropNames = Object.keys(previewProps);
@@ -3796,6 +3814,7 @@ import { StrictMode } from 'react';
3796
3814
  import { createRoot } from 'react-dom/client';
3797
3815
  import Component from './Component';
3798
3816
  import previewEnvelope from './preview-props.json';
3817
+ import manifest from '../manifest.json';
3799
3818
  import { promptFrameDevPublicResources } from './promptframe-dev-public-resources.generated';
3800
3819
  import { propsSchema, type ComponentProps } from './schema';
3801
3820
 
@@ -3825,7 +3844,8 @@ if (!root) {
3825
3844
  createRoot(root).render(
3826
3845
  <StrictMode>
3827
3846
  <PromptFramePreviewApp<ComponentProps>
3828
- previewEnvelope={preview}
3847
+ previewEnvelope={{ ...preview, props: propsSchema.parse(preview.props ?? {}) }}
3848
+ designedDurationRange={manifest.designedDurationRange}
3829
3849
  initialProps={initialProps}
3830
3850
  propsSchema={propsSchema}
3831
3851
  publicResources={promptFrameDevPublicResources}
@@ -4036,51 +4056,18 @@ function collectPackageFiles(root) {
4036
4056
  manifest.entry.sourcePath,
4037
4057
  manifest.entry.propsSchemaPath,
4038
4058
  ]);
4039
- function walk(dir, inherited) {
4040
- const rules = [...inherited];
4041
- const ignorePath = join(dir, '.gitignore');
4042
- if (existsSync(ignorePath)) {
4043
- if (!lstatSync(ignorePath).isFile()) {
4044
- fail('.gitignore must be an ordinary file inside the component directory.', 'package.gitignore.invalid');
4045
- }
4046
- rules.push({ root: dir, matcher: ignore({ ignorecase: false }).add(readFileSync(ignorePath, 'utf8')) });
4047
- }
4048
- for (const entry of readdirSync(dir, { withFileTypes: true })) {
4049
- if (['node_modules', 'dist', '.git', '.component-packages', '.promptframe'].includes(entry.name))
4050
- continue;
4051
- const full = join(dir, entry.name);
4052
- const name = relative(root, full).replace(/\\/g, '/');
4053
- let ignored = false;
4054
- for (const rule of rules) {
4055
- const result = rule.matcher.test(`${relative(rule.root, full).replace(/\\/g, '/')}${entry.isDirectory() ? '/' : ''}`);
4056
- if (result.ignored)
4057
- ignored = true;
4058
- else if (result.unignored)
4059
- ignored = false;
4060
- }
4061
- if (ignored) {
4062
- const containsRequiredPath = [...requiredPaths].some((requiredPath) => requiredPath === name || (entry.isDirectory() && requiredPath.startsWith(`${name}/`)));
4063
- if (containsRequiredPath || name === 'public' || name.startsWith('public/')) {
4064
- fail(`.gitignore excludes required component content: ${name}. Remove that rule or explicitly include the required source/resource.`, 'package.required_file.ignored');
4065
- }
4059
+ try {
4060
+ for (const name of selectComponentSourceFiles(root, requiredPaths).paths) {
4061
+ if (basename(name) === LOCKFILE_EVIDENCE_FILE_NAME || isPackageManagerLockfile(basename(name)))
4066
4062
  continue;
4067
- }
4068
- if (entry.isDirectory()) {
4069
- walk(full, rules);
4070
- }
4071
- else if (entry.isFile()) {
4072
- if (entry.name === LOCKFILE_EVIDENCE_FILE_NAME)
4073
- continue;
4074
- if (isPackageManagerLockfile(entry.name))
4075
- continue;
4076
- files.push({
4077
- name,
4078
- data: readFileSync(full),
4079
- });
4080
- }
4063
+ files.push({ name, data: readFileSync(join(root, name)) });
4081
4064
  }
4082
4065
  }
4083
- walk(root, []);
4066
+ catch (error) {
4067
+ if (error instanceof ComponentFileSelectionError)
4068
+ fail(error.description, error.code);
4069
+ throw error;
4070
+ }
4084
4071
  const evidence = buildLockfileEvidenceFile(root);
4085
4072
  if (evidence)
4086
4073
  files.push(evidence);