@promptframe/contracts 0.1.8 → 0.1.11
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 +12 -0
- package/dist/index.d.ts +184 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +194 -0
- package/dist/index.js.map +1 -1
- package/dist/security-policy-evaluator.d.ts +37 -0
- package/dist/security-policy-evaluator.d.ts.map +1 -0
- package/dist/security-policy-evaluator.js +360 -0
- package/dist/security-policy-evaluator.js.map +1 -0
- package/dist/security-policy-fingerprint.d.ts +4 -0
- package/dist/security-policy-fingerprint.d.ts.map +1 -0
- package/dist/security-policy-fingerprint.js +37 -0
- package/dist/security-policy-fingerprint.js.map +1 -0
- package/package.json +6 -4
package/README.md
CHANGED
|
@@ -10,3 +10,15 @@ Key public exports:
|
|
|
10
10
|
- `authoringStandardFreshnessDecisionSchema`: shared shape for local tooling and platform admission to explain whether an authoring package is current, warning-only, upload-blocking, or security-breaking.
|
|
11
11
|
- `authoringUploadTargetSchema`: public upload lanes for `marketplace_authoring` and `project_private_generation`.
|
|
12
12
|
- `componentReusabilityScoreSchema`: shared shape for deterministic component reuse diagnostics emitted by local CLI checks and platform admission.
|
|
13
|
+
- `PROMPTFRAME_PUBLIC_SECURITY_POLICY_DIGEST`: deterministic release-cohort fingerprint for the public security policy.
|
|
14
|
+
- `@promptframe/contracts/security-evaluator`: AST-aware evaluator for JS / TS / TSX source diagnostics.
|
|
15
|
+
|
|
16
|
+
## Public Security Policy
|
|
17
|
+
|
|
18
|
+
`PROMPTFRAME_PUBLIC_SECURITY_POLICY` is the public author-facing rule catalog used by CLI diagnostics. It intentionally describes the behavior an external component author must avoid, not PromptFrame platform internals.
|
|
19
|
+
|
|
20
|
+
High-risk browser/runtime capabilities are rejected locally when they are statically visible, including BroadcastChannel, WebRTC / RTCPeerConnection, Notification, Service Worker, clipboard access, navigator.locks, AudioContext / AudioWorklet, CSS.registerProperty, DOM Observer APIs, Remotion delayRender, and dynamic import. Fps hardcoded timing is warning-first under `runtime.deterministic.fps_hardcoded_timing`; it reports timing literals in Remotion contexts while allowing local validation to proceed.
|
|
21
|
+
|
|
22
|
+
Each public rule exposes a stable `id`, severity, category, action, pattern set, optional AST matcher metadata, human reason, recommendation, optional `repairHint`, and documentation path so local CLI output, GitHub annotations, and platform admission can refer to the same author-facing diagnostic family.
|
|
23
|
+
|
|
24
|
+
The security evaluator subpath parses JS / TS / TSX source with the TypeScript compiler API, so comments, strings, and harmless local identifiers do not trigger the same diagnostics as real browser capability access. Regex patterns remain as compatibility and metadata fallback, not the preferred source-code admission path.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
export { COMPONENT_SECURITY_POLICY_DIGEST_VERSION, canonicalizePromptFramePolicy, createPromptFramePublicSecurityPolicyDigest, } from './security-policy-fingerprint.js';
|
|
2
3
|
export declare const PROMPTFRAME_CONTRACTS_VERSION: "promptframe-contracts.v0.1.0";
|
|
3
4
|
export declare const COMPONENT_MANIFEST_SCHEMA_VERSION: "component-manifest.v0.1.0";
|
|
4
5
|
export declare const COMPONENT_STANDARD_VERSION: "component-standard.v0.1.0";
|
|
@@ -75,6 +76,9 @@ export declare const PROMPTFRAME_PUBLIC_SECURITY_POLICY: {
|
|
|
75
76
|
readonly id: "code.eval";
|
|
76
77
|
readonly label: "Dynamic code execution";
|
|
77
78
|
readonly patterns: readonly ["\\beval\\s*\\("];
|
|
79
|
+
readonly astMatchers: {
|
|
80
|
+
readonly globals: readonly ["eval"];
|
|
81
|
+
};
|
|
78
82
|
readonly action: "reject";
|
|
79
83
|
readonly category: "dynamic_code_execution";
|
|
80
84
|
readonly severity: "high";
|
|
@@ -84,6 +88,9 @@ export declare const PROMPTFRAME_PUBLIC_SECURITY_POLICY: {
|
|
|
84
88
|
readonly id: "code.new_function";
|
|
85
89
|
readonly label: "new Function dynamic execution";
|
|
86
90
|
readonly patterns: readonly ["\\bnew\\s+Function\\s*\\("];
|
|
91
|
+
readonly astMatchers: {
|
|
92
|
+
readonly globals: readonly ["Function"];
|
|
93
|
+
};
|
|
87
94
|
readonly action: "reject";
|
|
88
95
|
readonly category: "dynamic_code_execution";
|
|
89
96
|
readonly severity: "high";
|
|
@@ -93,25 +100,183 @@ export declare const PROMPTFRAME_PUBLIC_SECURITY_POLICY: {
|
|
|
93
100
|
readonly id: "code.string_timer";
|
|
94
101
|
readonly label: "String timer execution";
|
|
95
102
|
readonly patterns: readonly ["\\bset(?:Timeout|Interval)\\s*\\(\\s*['\"`]"];
|
|
103
|
+
readonly astMatchers: {
|
|
104
|
+
readonly stringTimer: true;
|
|
105
|
+
};
|
|
96
106
|
readonly action: "reject";
|
|
97
107
|
readonly category: "dynamic_code_execution";
|
|
98
108
|
readonly severity: "high";
|
|
99
109
|
readonly reason: "String timers are equivalent to dynamic code execution.";
|
|
100
110
|
readonly recommendation: "Do not pass strings to setTimeout or setInterval.";
|
|
111
|
+
}, {
|
|
112
|
+
readonly id: "code.dynamic_import";
|
|
113
|
+
readonly label: "Dynamic import loading";
|
|
114
|
+
readonly patterns: readonly ["\\bimport\\s*\\("];
|
|
115
|
+
readonly astMatchers: {
|
|
116
|
+
readonly dynamicImport: true;
|
|
117
|
+
};
|
|
118
|
+
readonly action: "reject";
|
|
119
|
+
readonly category: "dynamic_code_execution";
|
|
120
|
+
readonly severity: "high";
|
|
121
|
+
readonly reason: "Third-party components cannot dynamically load code at preview or render time.";
|
|
122
|
+
readonly recommendation: "Use static imports that are visible to the authoring build and security checks.";
|
|
123
|
+
readonly docsPath: "/docs/component-authoring/security#code-dynamic-import";
|
|
101
124
|
}, {
|
|
102
125
|
readonly id: "host.fs_process_env";
|
|
103
126
|
readonly label: "Host filesystem, process, or env access";
|
|
104
127
|
readonly patterns: readonly ["\\b(node:fs|fs\\/promises|child_process|process\\.env|Bun\\.|Deno\\.)\\b"];
|
|
128
|
+
readonly astMatchers: {
|
|
129
|
+
readonly globals: readonly ["Bun", "Deno"];
|
|
130
|
+
readonly memberPaths: readonly ["process.env", "Bun", "Deno"];
|
|
131
|
+
};
|
|
105
132
|
readonly action: "reject";
|
|
106
133
|
readonly category: "filesystem_process_env_access";
|
|
107
134
|
readonly severity: "critical";
|
|
108
135
|
readonly reason: "Components must not read host files, spawn processes, or access environment variables.";
|
|
109
136
|
readonly recommendation: "Use only platform-provided props and trusted artifacts.";
|
|
137
|
+
}, {
|
|
138
|
+
readonly id: "browser.broadcast_channel";
|
|
139
|
+
readonly label: "BroadcastChannel cross-context messaging";
|
|
140
|
+
readonly patterns: readonly ["\\bnew\\s+BroadcastChannel\\b|\\bBroadcastChannel\\s*\\("];
|
|
141
|
+
readonly astMatchers: {
|
|
142
|
+
readonly globals: readonly ["BroadcastChannel"];
|
|
143
|
+
readonly memberPaths: readonly ["window.BroadcastChannel", "globalThis.BroadcastChannel"];
|
|
144
|
+
};
|
|
145
|
+
readonly action: "reject";
|
|
146
|
+
readonly category: "browser_capability";
|
|
147
|
+
readonly severity: "high";
|
|
148
|
+
readonly reason: "Third-party components cannot open cross-tab or cross-context messaging channels.";
|
|
149
|
+
readonly recommendation: "Remove BroadcastChannel. Use explicit component props or platform-provided data instead.";
|
|
150
|
+
readonly docsPath: "/docs/component-authoring/security#browser-broadcast-channel";
|
|
151
|
+
}, {
|
|
152
|
+
readonly id: "browser.webrtc";
|
|
153
|
+
readonly label: "WebRTC / RTCPeerConnection access";
|
|
154
|
+
readonly patterns: readonly ["\\bnew\\s+RTCPeerConnection\\b|\\bRTCPeerConnection\\s*\\(|navigator\\.mediaDevices\\.getUserMedia\\s*\\("];
|
|
155
|
+
readonly astMatchers: {
|
|
156
|
+
readonly globals: readonly ["RTCPeerConnection"];
|
|
157
|
+
readonly memberPaths: readonly ["navigator.mediaDevices.getUserMedia"];
|
|
158
|
+
};
|
|
159
|
+
readonly action: "reject";
|
|
160
|
+
readonly category: "browser_capability";
|
|
161
|
+
readonly severity: "high";
|
|
162
|
+
readonly reason: "Third-party components cannot open peer connections or capture local media devices.";
|
|
163
|
+
readonly recommendation: "Remove WebRTC and media device access. Use platform-provided assets or props.";
|
|
164
|
+
readonly docsPath: "/docs/component-authoring/security#browser-webrtc";
|
|
165
|
+
}, {
|
|
166
|
+
readonly id: "browser.notification";
|
|
167
|
+
readonly label: "Notification permission or display";
|
|
168
|
+
readonly patterns: readonly ["\\bnew\\s+Notification\\b|\\bNotification\\s*\\(|Notification\\.requestPermission\\s*\\("];
|
|
169
|
+
readonly astMatchers: {
|
|
170
|
+
readonly globals: readonly ["Notification"];
|
|
171
|
+
readonly memberPaths: readonly ["Notification.requestPermission", "window.Notification", "globalThis.Notification"];
|
|
172
|
+
};
|
|
173
|
+
readonly action: "reject";
|
|
174
|
+
readonly category: "browser_capability";
|
|
175
|
+
readonly severity: "high";
|
|
176
|
+
readonly reason: "Third-party components cannot request browser notification permissions or show notifications.";
|
|
177
|
+
readonly recommendation: "Remove Notification usage and express state inside the rendered component.";
|
|
178
|
+
readonly docsPath: "/docs/component-authoring/security#browser-notification";
|
|
179
|
+
}, {
|
|
180
|
+
readonly id: "browser.service_worker";
|
|
181
|
+
readonly label: "Service Worker registration";
|
|
182
|
+
readonly patterns: readonly ["navigator\\.serviceWorker\\b|\\bServiceWorker(?:Registration|Container)?\\b"];
|
|
183
|
+
readonly astMatchers: {
|
|
184
|
+
readonly memberPaths: readonly ["navigator.serviceWorker"];
|
|
185
|
+
};
|
|
186
|
+
readonly action: "reject";
|
|
187
|
+
readonly category: "browser_capability";
|
|
188
|
+
readonly severity: "high";
|
|
189
|
+
readonly reason: "Third-party components cannot register or control Service Worker lifecycle.";
|
|
190
|
+
readonly recommendation: "Remove Service Worker usage. Component code must stay inside the platform render boundary.";
|
|
191
|
+
readonly docsPath: "/docs/component-authoring/security#browser-service-worker";
|
|
192
|
+
}, {
|
|
193
|
+
readonly id: "browser.clipboard";
|
|
194
|
+
readonly label: "Clipboard access";
|
|
195
|
+
readonly patterns: readonly ["navigator\\.clipboard\\b|document\\.execCommand\\s*\\(\\s*['\"`](?:copy|cut|paste)['\"`]"];
|
|
196
|
+
readonly astMatchers: {
|
|
197
|
+
readonly memberPaths: readonly ["navigator.clipboard", "document.execCommand"];
|
|
198
|
+
};
|
|
199
|
+
readonly action: "reject";
|
|
200
|
+
readonly category: "browser_capability";
|
|
201
|
+
readonly severity: "high";
|
|
202
|
+
readonly reason: "Third-party components cannot read from or write to the user clipboard.";
|
|
203
|
+
readonly recommendation: "Remove clipboard calls and use explicit props or platform actions outside the component.";
|
|
204
|
+
readonly docsPath: "/docs/component-authoring/security#browser-clipboard";
|
|
205
|
+
}, {
|
|
206
|
+
readonly id: "browser.navigator_locks";
|
|
207
|
+
readonly label: "Navigator locks API";
|
|
208
|
+
readonly patterns: readonly ["navigator\\.locks\\b"];
|
|
209
|
+
readonly astMatchers: {
|
|
210
|
+
readonly memberPaths: readonly ["navigator.locks"];
|
|
211
|
+
};
|
|
212
|
+
readonly action: "reject";
|
|
213
|
+
readonly category: "browser_capability";
|
|
214
|
+
readonly severity: "high";
|
|
215
|
+
readonly reason: "Third-party components cannot acquire browser-level execution locks.";
|
|
216
|
+
readonly recommendation: "Remove navigator.locks usage and keep component logic frame-driven and deterministic.";
|
|
217
|
+
readonly docsPath: "/docs/component-authoring/security#browser-navigator-locks";
|
|
218
|
+
}, {
|
|
219
|
+
readonly id: "browser.audio_context";
|
|
220
|
+
readonly label: "AudioContext / AudioWorklet access";
|
|
221
|
+
readonly patterns: readonly ["\\bnew\\s+(?:AudioContext|webkitAudioContext)\\b|\\b(?:AudioContext|webkitAudioContext)\\s*\\(|\\bAudioWorklet\\b|\\.audioWorklet\\b"];
|
|
222
|
+
readonly astMatchers: {
|
|
223
|
+
readonly globals: readonly ["AudioContext", "webkitAudioContext", "AudioWorklet"];
|
|
224
|
+
readonly memberPaths: readonly ["window.AudioContext", "window.webkitAudioContext", "globalThis.AudioContext", "globalThis.webkitAudioContext"];
|
|
225
|
+
};
|
|
226
|
+
readonly action: "reject";
|
|
227
|
+
readonly category: "browser_capability";
|
|
228
|
+
readonly severity: "high";
|
|
229
|
+
readonly reason: "Third-party components cannot create browser audio processing contexts or AudioWorklet code.";
|
|
230
|
+
readonly recommendation: "Use platform-provided audio assets and frame-driven visualizers instead.";
|
|
231
|
+
readonly docsPath: "/docs/component-authoring/security#browser-audio-context";
|
|
232
|
+
}, {
|
|
233
|
+
readonly id: "browser.css_register_property";
|
|
234
|
+
readonly label: "CSS.registerProperty / CSS Houdini access";
|
|
235
|
+
readonly patterns: readonly ["CSS\\.registerProperty\\s*\\("];
|
|
236
|
+
readonly astMatchers: {
|
|
237
|
+
readonly memberPaths: readonly ["CSS.registerProperty"];
|
|
238
|
+
};
|
|
239
|
+
readonly action: "reject";
|
|
240
|
+
readonly category: "browser_capability";
|
|
241
|
+
readonly severity: "high";
|
|
242
|
+
readonly reason: "Third-party components cannot register global CSS Houdini properties.";
|
|
243
|
+
readonly recommendation: "Use component-local style props and ordinary frame-driven React styles.";
|
|
244
|
+
readonly docsPath: "/docs/component-authoring/security#browser-css-register-property";
|
|
245
|
+
}, {
|
|
246
|
+
readonly id: "browser.observer_abuse";
|
|
247
|
+
readonly label: "DOM Observer capability";
|
|
248
|
+
readonly patterns: readonly ["\\bnew\\s+(?:MutationObserver|ResizeObserver|IntersectionObserver)\\b|\\b(?:MutationObserver|ResizeObserver|IntersectionObserver)\\s*\\("];
|
|
249
|
+
readonly astMatchers: {
|
|
250
|
+
readonly globals: readonly ["MutationObserver", "ResizeObserver", "IntersectionObserver"];
|
|
251
|
+
};
|
|
252
|
+
readonly action: "reject";
|
|
253
|
+
readonly category: "browser_capability";
|
|
254
|
+
readonly severity: "high";
|
|
255
|
+
readonly reason: "Third-party components cannot observe host DOM or runtime boundaries.";
|
|
256
|
+
readonly recommendation: "Use explicit props, layout inputs, and deterministic frame data instead of Observer APIs.";
|
|
257
|
+
readonly docsPath: "/docs/component-authoring/security#browser-observer-abuse";
|
|
258
|
+
}, {
|
|
259
|
+
readonly id: "remotion.delay_render";
|
|
260
|
+
readonly label: "Remotion delayRender lifecycle control";
|
|
261
|
+
readonly patterns: readonly ["\\bdelayRender\\s*\\("];
|
|
262
|
+
readonly astMatchers: {
|
|
263
|
+
readonly globals: readonly ["delayRender"];
|
|
264
|
+
};
|
|
265
|
+
readonly action: "reject";
|
|
266
|
+
readonly category: "remotion_lifecycle";
|
|
267
|
+
readonly severity: "high";
|
|
268
|
+
readonly reason: "Third-party components cannot delay platform preview or render lifecycle from component code.";
|
|
269
|
+
readonly recommendation: "Resolve assets before rendering and pass ready data through component props.";
|
|
270
|
+
readonly docsPath: "/docs/component-authoring/security#remotion-delay-render";
|
|
110
271
|
}];
|
|
111
272
|
readonly mediatedApis: readonly [{
|
|
112
273
|
readonly id: "network.raw_fetch";
|
|
113
274
|
readonly label: "Raw network access";
|
|
114
275
|
readonly rawApis: readonly ["fetch", "XMLHttpRequest", "WebSocket", "EventSource", "navigator.sendBeacon"];
|
|
276
|
+
readonly astMatchers: {
|
|
277
|
+
readonly globals: readonly ["fetch", "XMLHttpRequest", "WebSocket", "EventSource"];
|
|
278
|
+
readonly memberPaths: readonly ["navigator.sendBeacon", "window.fetch", "globalThis.fetch"];
|
|
279
|
+
};
|
|
115
280
|
readonly defaultAction: "manual_review";
|
|
116
281
|
readonly category: "network_exfiltration";
|
|
117
282
|
readonly severity: "high";
|
|
@@ -190,8 +355,23 @@ export declare const PROMPTFRAME_PUBLIC_SECURITY_POLICY: {
|
|
|
190
355
|
readonly severity: "medium";
|
|
191
356
|
readonly reason: "Remote assets must go through platform asset management and authorization.";
|
|
192
357
|
readonly recommendation: "Do not hardcode remote URLs in component source.";
|
|
358
|
+
}, {
|
|
359
|
+
readonly id: "runtime.deterministic.fps_hardcoded_timing";
|
|
360
|
+
readonly label: "Hardcoded frame timing";
|
|
361
|
+
readonly patterns: readonly [];
|
|
362
|
+
readonly astMatchers: {
|
|
363
|
+
readonly fpsHardcodedTiming: true;
|
|
364
|
+
};
|
|
365
|
+
readonly action: "warn";
|
|
366
|
+
readonly category: "remotion_lifecycle";
|
|
367
|
+
readonly severity: "medium";
|
|
368
|
+
readonly reason: "Hardcoded frame counts can drift when a component is previewed or rendered at a different fps.";
|
|
369
|
+
readonly recommendation: "Use useVideoConfig().fps with secondsToFrames(seconds, fps), createDurationTimeline(), or timeline.at() from @promptframe/component-kit/timing.";
|
|
370
|
+
readonly repairHint: "Replace hardcoded frame counts with secondsToFrames(seconds, fps) or createDurationTimeline()/timeline.at() from @promptframe/component-kit/timing.";
|
|
371
|
+
readonly docsPath: "/docs/component-authoring/security#runtime-deterministic-fps-hardcoded-timing";
|
|
193
372
|
}];
|
|
194
373
|
};
|
|
374
|
+
export declare const PROMPTFRAME_PUBLIC_SECURITY_POLICY_DIGEST: `component-security-policy-digest.v0.1:${string}`;
|
|
195
375
|
export declare const PROMPTFRAME_PUBLIC_DEPENDENCY_POLICY: {
|
|
196
376
|
readonly policyVersion: "component-dependency-policy.v0.1.0";
|
|
197
377
|
readonly lanes: readonly ["platform_core", "reviewed_visual", "requested_dependency", "native_or_scripted", "unknown_unlocked"];
|
|
@@ -693,7 +873,7 @@ export declare const componentDiagnosticSchema: z.ZodObject<{
|
|
|
693
873
|
repairHint?: string | undefined;
|
|
694
874
|
}>;
|
|
695
875
|
export type ComponentDiagnostic = z.infer<typeof componentDiagnosticSchema>;
|
|
696
|
-
export declare const publicPolicyRuleIdSchema: z.ZodEnum<["manifest.identity.version", "manifest.component_type.supported", "schema.props.explicit", "runtime.deterministic.remotion", "runtime.no_global_scripts", "security.forbidden.browser_apis", "security.no_raw_remote_url_import", "layout.root_fills_parent", "layout.no_fixed_root_canvas", "package.no_parent_imports", "package.no_path_traversal", "evidence.schema_source_hash_present", "component.style.unknown_custom_style_prop"]>;
|
|
876
|
+
export declare const publicPolicyRuleIdSchema: z.ZodEnum<["manifest.identity.version", "manifest.component_type.supported", "schema.props.explicit", "runtime.deterministic.remotion", "runtime.deterministic.fps_hardcoded_timing", "runtime.no_global_scripts", "security.forbidden.browser_apis", "security.no_raw_remote_url_import", "layout.root_fills_parent", "layout.no_fixed_root_canvas", "package.no_parent_imports", "package.no_path_traversal", "evidence.schema_source_hash_present", "component.style.unknown_custom_style_prop"]>;
|
|
697
877
|
export type PublicPolicyRuleId = z.infer<typeof publicPolicyRuleIdSchema>;
|
|
698
878
|
export declare const layoutAdaptivitySchema: z.ZodEnum<["responsive", "scales_down", "reflows", "clips", "fixed"]>;
|
|
699
879
|
export type LayoutAdaptivity = z.infer<typeof layoutAdaptivitySchema>;
|
|
@@ -1302,7 +1482,7 @@ export declare const componentCapabilityCardSchema: z.ZodObject<{
|
|
|
1302
1482
|
repairHint?: string | undefined;
|
|
1303
1483
|
}[] | undefined;
|
|
1304
1484
|
}>;
|
|
1305
|
-
policyRuleIds: z.ZodDefault<z.ZodArray<z.ZodEnum<["manifest.identity.version", "manifest.component_type.supported", "schema.props.explicit", "runtime.deterministic.remotion", "runtime.no_global_scripts", "security.forbidden.browser_apis", "security.no_raw_remote_url_import", "layout.root_fills_parent", "layout.no_fixed_root_canvas", "package.no_parent_imports", "package.no_path_traversal", "evidence.schema_source_hash_present", "component.style.unknown_custom_style_prop"]>, "many">>;
|
|
1485
|
+
policyRuleIds: z.ZodDefault<z.ZodArray<z.ZodEnum<["manifest.identity.version", "manifest.component_type.supported", "schema.props.explicit", "runtime.deterministic.remotion", "runtime.deterministic.fps_hardcoded_timing", "runtime.no_global_scripts", "security.forbidden.browser_apis", "security.no_raw_remote_url_import", "layout.root_fills_parent", "layout.no_fixed_root_canvas", "package.no_parent_imports", "package.no_path_traversal", "evidence.schema_source_hash_present", "component.style.unknown_custom_style_prop"]>, "many">>;
|
|
1306
1486
|
diagnostics: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
1307
1487
|
code: z.ZodString;
|
|
1308
1488
|
severity: z.ZodEnum<["info", "warning", "error"]>;
|
|
@@ -1364,7 +1544,7 @@ export declare const componentCapabilityCardSchema: z.ZodObject<{
|
|
|
1364
1544
|
}[];
|
|
1365
1545
|
lastVerifiedAt?: string | undefined;
|
|
1366
1546
|
};
|
|
1367
|
-
policyRuleIds: ("component.style.unknown_custom_style_prop" | "manifest.identity.version" | "manifest.component_type.supported" | "schema.props.explicit" | "runtime.deterministic.remotion" | "runtime.no_global_scripts" | "security.forbidden.browser_apis" | "security.no_raw_remote_url_import" | "layout.root_fills_parent" | "layout.no_fixed_root_canvas" | "package.no_parent_imports" | "package.no_path_traversal" | "evidence.schema_source_hash_present")[];
|
|
1547
|
+
policyRuleIds: ("runtime.deterministic.fps_hardcoded_timing" | "component.style.unknown_custom_style_prop" | "manifest.identity.version" | "manifest.component_type.supported" | "schema.props.explicit" | "runtime.deterministic.remotion" | "runtime.no_global_scripts" | "security.forbidden.browser_apis" | "security.no_raw_remote_url_import" | "layout.root_fills_parent" | "layout.no_fixed_root_canvas" | "package.no_parent_imports" | "package.no_path_traversal" | "evidence.schema_source_hash_present")[];
|
|
1368
1548
|
}, {
|
|
1369
1549
|
displayName: string;
|
|
1370
1550
|
componentType: "scene_template" | "contained_widget" | "overlay" | "transition_effect";
|
|
@@ -1407,7 +1587,7 @@ export declare const componentCapabilityCardSchema: z.ZodObject<{
|
|
|
1407
1587
|
stage: "build" | "authoring" | "doctor" | "validate" | "package" | "upload" | "manifest" | "schema" | "policy" | "preview" | "probe" | "publish";
|
|
1408
1588
|
repairHint?: string | undefined;
|
|
1409
1589
|
}[] | undefined;
|
|
1410
|
-
policyRuleIds?: ("component.style.unknown_custom_style_prop" | "manifest.identity.version" | "manifest.component_type.supported" | "schema.props.explicit" | "runtime.deterministic.remotion" | "runtime.no_global_scripts" | "security.forbidden.browser_apis" | "security.no_raw_remote_url_import" | "layout.root_fills_parent" | "layout.no_fixed_root_canvas" | "package.no_parent_imports" | "package.no_path_traversal" | "evidence.schema_source_hash_present")[] | undefined;
|
|
1590
|
+
policyRuleIds?: ("runtime.deterministic.fps_hardcoded_timing" | "component.style.unknown_custom_style_prop" | "manifest.identity.version" | "manifest.component_type.supported" | "schema.props.explicit" | "runtime.deterministic.remotion" | "runtime.no_global_scripts" | "security.forbidden.browser_apis" | "security.no_raw_remote_url_import" | "layout.root_fills_parent" | "layout.no_fixed_root_canvas" | "package.no_parent_imports" | "package.no_path_traversal" | "evidence.schema_source_hash_present")[] | undefined;
|
|
1411
1591
|
}>;
|
|
1412
1592
|
export type ComponentCapabilityCard = z.infer<typeof componentCapabilityCardSchema>;
|
|
1413
1593
|
export declare function parseComponentManifest(input: unknown): ComponentManifest;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { createPromptFramePublicSecurityPolicyDigest } from './security-policy-fingerprint.js';
|
|
3
|
+
export { COMPONENT_SECURITY_POLICY_DIGEST_VERSION, canonicalizePromptFramePolicy, createPromptFramePublicSecurityPolicyDigest, } from './security-policy-fingerprint.js';
|
|
2
4
|
export const PROMPTFRAME_CONTRACTS_VERSION = 'promptframe-contracts.v0.1.0';
|
|
3
5
|
export const COMPONENT_MANIFEST_SCHEMA_VERSION = 'component-manifest.v0.1.0';
|
|
4
6
|
export const COMPONENT_STANDARD_VERSION = 'component-standard.v0.1.0';
|
|
@@ -96,6 +98,9 @@ export const PROMPTFRAME_PUBLIC_SECURITY_POLICY = {
|
|
|
96
98
|
id: 'code.eval',
|
|
97
99
|
label: 'Dynamic code execution',
|
|
98
100
|
patterns: ['\\beval\\s*\\('],
|
|
101
|
+
astMatchers: {
|
|
102
|
+
globals: ['eval'],
|
|
103
|
+
},
|
|
99
104
|
action: 'reject',
|
|
100
105
|
category: 'dynamic_code_execution',
|
|
101
106
|
severity: 'high',
|
|
@@ -106,6 +111,9 @@ export const PROMPTFRAME_PUBLIC_SECURITY_POLICY = {
|
|
|
106
111
|
id: 'code.new_function',
|
|
107
112
|
label: 'new Function dynamic execution',
|
|
108
113
|
patterns: ['\\bnew\\s+Function\\s*\\('],
|
|
114
|
+
astMatchers: {
|
|
115
|
+
globals: ['Function'],
|
|
116
|
+
},
|
|
109
117
|
action: 'reject',
|
|
110
118
|
category: 'dynamic_code_execution',
|
|
111
119
|
severity: 'high',
|
|
@@ -116,28 +124,197 @@ export const PROMPTFRAME_PUBLIC_SECURITY_POLICY = {
|
|
|
116
124
|
id: 'code.string_timer',
|
|
117
125
|
label: 'String timer execution',
|
|
118
126
|
patterns: ['\\bset(?:Timeout|Interval)\\s*\\(\\s*[\'"`]'],
|
|
127
|
+
astMatchers: {
|
|
128
|
+
stringTimer: true,
|
|
129
|
+
},
|
|
119
130
|
action: 'reject',
|
|
120
131
|
category: 'dynamic_code_execution',
|
|
121
132
|
severity: 'high',
|
|
122
133
|
reason: 'String timers are equivalent to dynamic code execution.',
|
|
123
134
|
recommendation: 'Do not pass strings to setTimeout or setInterval.',
|
|
124
135
|
},
|
|
136
|
+
{
|
|
137
|
+
id: 'code.dynamic_import',
|
|
138
|
+
label: 'Dynamic import loading',
|
|
139
|
+
patterns: ['\\bimport\\s*\\('],
|
|
140
|
+
astMatchers: {
|
|
141
|
+
dynamicImport: true,
|
|
142
|
+
},
|
|
143
|
+
action: 'reject',
|
|
144
|
+
category: 'dynamic_code_execution',
|
|
145
|
+
severity: 'high',
|
|
146
|
+
reason: 'Third-party components cannot dynamically load code at preview or render time.',
|
|
147
|
+
recommendation: 'Use static imports that are visible to the authoring build and security checks.',
|
|
148
|
+
docsPath: '/docs/component-authoring/security#code-dynamic-import',
|
|
149
|
+
},
|
|
125
150
|
{
|
|
126
151
|
id: 'host.fs_process_env',
|
|
127
152
|
label: 'Host filesystem, process, or env access',
|
|
128
153
|
patterns: ['\\b(node:fs|fs\\/promises|child_process|process\\.env|Bun\\.|Deno\\.)\\b'],
|
|
154
|
+
astMatchers: {
|
|
155
|
+
globals: ['Bun', 'Deno'],
|
|
156
|
+
memberPaths: ['process.env', 'Bun', 'Deno'],
|
|
157
|
+
},
|
|
129
158
|
action: 'reject',
|
|
130
159
|
category: 'filesystem_process_env_access',
|
|
131
160
|
severity: 'critical',
|
|
132
161
|
reason: 'Components must not read host files, spawn processes, or access environment variables.',
|
|
133
162
|
recommendation: 'Use only platform-provided props and trusted artifacts.',
|
|
134
163
|
},
|
|
164
|
+
{
|
|
165
|
+
id: 'browser.broadcast_channel',
|
|
166
|
+
label: 'BroadcastChannel cross-context messaging',
|
|
167
|
+
patterns: ['\\bnew\\s+BroadcastChannel\\b|\\bBroadcastChannel\\s*\\('],
|
|
168
|
+
astMatchers: {
|
|
169
|
+
globals: ['BroadcastChannel'],
|
|
170
|
+
memberPaths: ['window.BroadcastChannel', 'globalThis.BroadcastChannel'],
|
|
171
|
+
},
|
|
172
|
+
action: 'reject',
|
|
173
|
+
category: 'browser_capability',
|
|
174
|
+
severity: 'high',
|
|
175
|
+
reason: 'Third-party components cannot open cross-tab or cross-context messaging channels.',
|
|
176
|
+
recommendation: 'Remove BroadcastChannel. Use explicit component props or platform-provided data instead.',
|
|
177
|
+
docsPath: '/docs/component-authoring/security#browser-broadcast-channel',
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
id: 'browser.webrtc',
|
|
181
|
+
label: 'WebRTC / RTCPeerConnection access',
|
|
182
|
+
patterns: ['\\bnew\\s+RTCPeerConnection\\b|\\bRTCPeerConnection\\s*\\(|navigator\\.mediaDevices\\.getUserMedia\\s*\\('],
|
|
183
|
+
astMatchers: {
|
|
184
|
+
globals: ['RTCPeerConnection'],
|
|
185
|
+
memberPaths: ['navigator.mediaDevices.getUserMedia'],
|
|
186
|
+
},
|
|
187
|
+
action: 'reject',
|
|
188
|
+
category: 'browser_capability',
|
|
189
|
+
severity: 'high',
|
|
190
|
+
reason: 'Third-party components cannot open peer connections or capture local media devices.',
|
|
191
|
+
recommendation: 'Remove WebRTC and media device access. Use platform-provided assets or props.',
|
|
192
|
+
docsPath: '/docs/component-authoring/security#browser-webrtc',
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
id: 'browser.notification',
|
|
196
|
+
label: 'Notification permission or display',
|
|
197
|
+
patterns: ['\\bnew\\s+Notification\\b|\\bNotification\\s*\\(|Notification\\.requestPermission\\s*\\('],
|
|
198
|
+
astMatchers: {
|
|
199
|
+
globals: ['Notification'],
|
|
200
|
+
memberPaths: ['Notification.requestPermission', 'window.Notification', 'globalThis.Notification'],
|
|
201
|
+
},
|
|
202
|
+
action: 'reject',
|
|
203
|
+
category: 'browser_capability',
|
|
204
|
+
severity: 'high',
|
|
205
|
+
reason: 'Third-party components cannot request browser notification permissions or show notifications.',
|
|
206
|
+
recommendation: 'Remove Notification usage and express state inside the rendered component.',
|
|
207
|
+
docsPath: '/docs/component-authoring/security#browser-notification',
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
id: 'browser.service_worker',
|
|
211
|
+
label: 'Service Worker registration',
|
|
212
|
+
patterns: ['navigator\\.serviceWorker\\b|\\bServiceWorker(?:Registration|Container)?\\b'],
|
|
213
|
+
astMatchers: {
|
|
214
|
+
memberPaths: ['navigator.serviceWorker'],
|
|
215
|
+
},
|
|
216
|
+
action: 'reject',
|
|
217
|
+
category: 'browser_capability',
|
|
218
|
+
severity: 'high',
|
|
219
|
+
reason: 'Third-party components cannot register or control Service Worker lifecycle.',
|
|
220
|
+
recommendation: 'Remove Service Worker usage. Component code must stay inside the platform render boundary.',
|
|
221
|
+
docsPath: '/docs/component-authoring/security#browser-service-worker',
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
id: 'browser.clipboard',
|
|
225
|
+
label: 'Clipboard access',
|
|
226
|
+
patterns: ['navigator\\.clipboard\\b|document\\.execCommand\\s*\\(\\s*[\'"`](?:copy|cut|paste)[\'"`]'],
|
|
227
|
+
astMatchers: {
|
|
228
|
+
memberPaths: ['navigator.clipboard', 'document.execCommand'],
|
|
229
|
+
},
|
|
230
|
+
action: 'reject',
|
|
231
|
+
category: 'browser_capability',
|
|
232
|
+
severity: 'high',
|
|
233
|
+
reason: 'Third-party components cannot read from or write to the user clipboard.',
|
|
234
|
+
recommendation: 'Remove clipboard calls and use explicit props or platform actions outside the component.',
|
|
235
|
+
docsPath: '/docs/component-authoring/security#browser-clipboard',
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
id: 'browser.navigator_locks',
|
|
239
|
+
label: 'Navigator locks API',
|
|
240
|
+
patterns: ['navigator\\.locks\\b'],
|
|
241
|
+
astMatchers: {
|
|
242
|
+
memberPaths: ['navigator.locks'],
|
|
243
|
+
},
|
|
244
|
+
action: 'reject',
|
|
245
|
+
category: 'browser_capability',
|
|
246
|
+
severity: 'high',
|
|
247
|
+
reason: 'Third-party components cannot acquire browser-level execution locks.',
|
|
248
|
+
recommendation: 'Remove navigator.locks usage and keep component logic frame-driven and deterministic.',
|
|
249
|
+
docsPath: '/docs/component-authoring/security#browser-navigator-locks',
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
id: 'browser.audio_context',
|
|
253
|
+
label: 'AudioContext / AudioWorklet access',
|
|
254
|
+
patterns: ['\\bnew\\s+(?:AudioContext|webkitAudioContext)\\b|\\b(?:AudioContext|webkitAudioContext)\\s*\\(|\\bAudioWorklet\\b|\\.audioWorklet\\b'],
|
|
255
|
+
astMatchers: {
|
|
256
|
+
globals: ['AudioContext', 'webkitAudioContext', 'AudioWorklet'],
|
|
257
|
+
memberPaths: ['window.AudioContext', 'window.webkitAudioContext', 'globalThis.AudioContext', 'globalThis.webkitAudioContext'],
|
|
258
|
+
},
|
|
259
|
+
action: 'reject',
|
|
260
|
+
category: 'browser_capability',
|
|
261
|
+
severity: 'high',
|
|
262
|
+
reason: 'Third-party components cannot create browser audio processing contexts or AudioWorklet code.',
|
|
263
|
+
recommendation: 'Use platform-provided audio assets and frame-driven visualizers instead.',
|
|
264
|
+
docsPath: '/docs/component-authoring/security#browser-audio-context',
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
id: 'browser.css_register_property',
|
|
268
|
+
label: 'CSS.registerProperty / CSS Houdini access',
|
|
269
|
+
patterns: ['CSS\\.registerProperty\\s*\\('],
|
|
270
|
+
astMatchers: {
|
|
271
|
+
memberPaths: ['CSS.registerProperty'],
|
|
272
|
+
},
|
|
273
|
+
action: 'reject',
|
|
274
|
+
category: 'browser_capability',
|
|
275
|
+
severity: 'high',
|
|
276
|
+
reason: 'Third-party components cannot register global CSS Houdini properties.',
|
|
277
|
+
recommendation: 'Use component-local style props and ordinary frame-driven React styles.',
|
|
278
|
+
docsPath: '/docs/component-authoring/security#browser-css-register-property',
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
id: 'browser.observer_abuse',
|
|
282
|
+
label: 'DOM Observer capability',
|
|
283
|
+
patterns: ['\\bnew\\s+(?:MutationObserver|ResizeObserver|IntersectionObserver)\\b|\\b(?:MutationObserver|ResizeObserver|IntersectionObserver)\\s*\\('],
|
|
284
|
+
astMatchers: {
|
|
285
|
+
globals: ['MutationObserver', 'ResizeObserver', 'IntersectionObserver'],
|
|
286
|
+
},
|
|
287
|
+
action: 'reject',
|
|
288
|
+
category: 'browser_capability',
|
|
289
|
+
severity: 'high',
|
|
290
|
+
reason: 'Third-party components cannot observe host DOM or runtime boundaries.',
|
|
291
|
+
recommendation: 'Use explicit props, layout inputs, and deterministic frame data instead of Observer APIs.',
|
|
292
|
+
docsPath: '/docs/component-authoring/security#browser-observer-abuse',
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
id: 'remotion.delay_render',
|
|
296
|
+
label: 'Remotion delayRender lifecycle control',
|
|
297
|
+
patterns: ['\\bdelayRender\\s*\\('],
|
|
298
|
+
astMatchers: {
|
|
299
|
+
globals: ['delayRender'],
|
|
300
|
+
},
|
|
301
|
+
action: 'reject',
|
|
302
|
+
category: 'remotion_lifecycle',
|
|
303
|
+
severity: 'high',
|
|
304
|
+
reason: 'Third-party components cannot delay platform preview or render lifecycle from component code.',
|
|
305
|
+
recommendation: 'Resolve assets before rendering and pass ready data through component props.',
|
|
306
|
+
docsPath: '/docs/component-authoring/security#remotion-delay-render',
|
|
307
|
+
},
|
|
135
308
|
],
|
|
136
309
|
mediatedApis: [
|
|
137
310
|
{
|
|
138
311
|
id: 'network.raw_fetch',
|
|
139
312
|
label: 'Raw network access',
|
|
140
313
|
rawApis: ['fetch', 'XMLHttpRequest', 'WebSocket', 'EventSource', 'navigator.sendBeacon'],
|
|
314
|
+
astMatchers: {
|
|
315
|
+
globals: ['fetch', 'XMLHttpRequest', 'WebSocket', 'EventSource'],
|
|
316
|
+
memberPaths: ['navigator.sendBeacon', 'window.fetch', 'globalThis.fetch'],
|
|
317
|
+
},
|
|
141
318
|
defaultAction: 'manual_review',
|
|
142
319
|
category: 'network_exfiltration',
|
|
143
320
|
severity: 'high',
|
|
@@ -226,8 +403,24 @@ export const PROMPTFRAME_PUBLIC_SECURITY_POLICY = {
|
|
|
226
403
|
reason: 'Remote assets must go through platform asset management and authorization.',
|
|
227
404
|
recommendation: 'Do not hardcode remote URLs in component source.',
|
|
228
405
|
},
|
|
406
|
+
{
|
|
407
|
+
id: 'runtime.deterministic.fps_hardcoded_timing',
|
|
408
|
+
label: 'Hardcoded frame timing',
|
|
409
|
+
patterns: [],
|
|
410
|
+
astMatchers: {
|
|
411
|
+
fpsHardcodedTiming: true,
|
|
412
|
+
},
|
|
413
|
+
action: 'warn',
|
|
414
|
+
category: 'remotion_lifecycle',
|
|
415
|
+
severity: 'medium',
|
|
416
|
+
reason: 'Hardcoded frame counts can drift when a component is previewed or rendered at a different fps.',
|
|
417
|
+
recommendation: 'Use useVideoConfig().fps with secondsToFrames(seconds, fps), createDurationTimeline(), or timeline.at() from @promptframe/component-kit/timing.',
|
|
418
|
+
repairHint: 'Replace hardcoded frame counts with secondsToFrames(seconds, fps) or createDurationTimeline()/timeline.at() from @promptframe/component-kit/timing.',
|
|
419
|
+
docsPath: '/docs/component-authoring/security#runtime-deterministic-fps-hardcoded-timing',
|
|
420
|
+
},
|
|
229
421
|
],
|
|
230
422
|
};
|
|
423
|
+
export const PROMPTFRAME_PUBLIC_SECURITY_POLICY_DIGEST = createPromptFramePublicSecurityPolicyDigest(PROMPTFRAME_PUBLIC_SECURITY_POLICY);
|
|
231
424
|
export const PROMPTFRAME_PUBLIC_DEPENDENCY_POLICY = {
|
|
232
425
|
policyVersion: COMPONENT_DEPENDENCY_POLICY_VERSION,
|
|
233
426
|
lanes: [
|
|
@@ -752,6 +945,7 @@ export const publicPolicyRuleIdSchema = z.enum([
|
|
|
752
945
|
'manifest.component_type.supported',
|
|
753
946
|
'schema.props.explicit',
|
|
754
947
|
'runtime.deterministic.remotion',
|
|
948
|
+
'runtime.deterministic.fps_hardcoded_timing',
|
|
755
949
|
'runtime.no_global_scripts',
|
|
756
950
|
'security.forbidden.browser_apis',
|
|
757
951
|
'security.no_raw_remote_url_import',
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { COMPONENT_SECURITY_POLICY_VERSION, PROMPTFRAME_PUBLIC_SECURITY_POLICY, PROMPTFRAME_PUBLIC_SECURITY_POLICY_DIGEST } from './index.js';
|
|
2
|
+
export { PROMPTFRAME_PUBLIC_SECURITY_POLICY_DIGEST } from './index.js';
|
|
3
|
+
export type PromptFrameSecurityPolicyAction = 'reject' | 'manual_review' | 'warn';
|
|
4
|
+
export type PromptFrameSecurityPolicyDetectionKind = 'ast' | 'pattern';
|
|
5
|
+
export type PromptFrameSecurityPolicyConfidence = 'high' | 'medium' | 'low';
|
|
6
|
+
export interface PromptFrameSecurityPolicyFinding {
|
|
7
|
+
ruleId: string;
|
|
8
|
+
policyVersion: string;
|
|
9
|
+
policyDigest: string;
|
|
10
|
+
category: string;
|
|
11
|
+
severity: string;
|
|
12
|
+
action: PromptFrameSecurityPolicyAction;
|
|
13
|
+
message: string;
|
|
14
|
+
file: string;
|
|
15
|
+
line?: number;
|
|
16
|
+
column?: number;
|
|
17
|
+
evidence?: string;
|
|
18
|
+
recommendation?: string;
|
|
19
|
+
repairHint?: string;
|
|
20
|
+
detectionKind: PromptFrameSecurityPolicyDetectionKind;
|
|
21
|
+
confidence: PromptFrameSecurityPolicyConfidence;
|
|
22
|
+
trace?: string[];
|
|
23
|
+
}
|
|
24
|
+
export interface EvaluatePromptFrameSecurityPolicySourceInput {
|
|
25
|
+
file: string;
|
|
26
|
+
source: string;
|
|
27
|
+
policy?: typeof PROMPTFRAME_PUBLIC_SECURITY_POLICY;
|
|
28
|
+
mode?: 'ast' | 'pattern_fallback';
|
|
29
|
+
}
|
|
30
|
+
export interface PromptFrameSecurityPolicyEvaluationReceipt {
|
|
31
|
+
policyVersion: typeof COMPONENT_SECURITY_POLICY_VERSION;
|
|
32
|
+
policyDigest: typeof PROMPTFRAME_PUBLIC_SECURITY_POLICY_DIGEST;
|
|
33
|
+
evaluatorMode: 'ast' | 'pattern_fallback';
|
|
34
|
+
findings: PromptFrameSecurityPolicyFinding[];
|
|
35
|
+
}
|
|
36
|
+
export declare function evaluatePromptFrameSecurityPolicySource(input: EvaluatePromptFrameSecurityPolicySourceInput): PromptFrameSecurityPolicyEvaluationReceipt;
|
|
37
|
+
//# sourceMappingURL=security-policy-evaluator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-policy-evaluator.d.ts","sourceRoot":"","sources":["../src/security-policy-evaluator.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iCAAiC,EACjC,kCAAkC,EAClC,yCAAyC,EAC1C,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,yCAAyC,EAAE,MAAM,YAAY,CAAC;AAEvE,MAAM,MAAM,+BAA+B,GAAG,QAAQ,GAAG,eAAe,GAAG,MAAM,CAAC;AAClF,MAAM,MAAM,sCAAsC,GAAG,KAAK,GAAG,SAAS,CAAC;AACvE,MAAM,MAAM,mCAAmC,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE5E,MAAM,WAAW,gCAAgC;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,+BAA+B,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,sCAAsC,CAAC;IACtD,UAAU,EAAE,mCAAmC,CAAC;IAChD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,4CAA4C;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,kCAAkC,CAAC;IACnD,IAAI,CAAC,EAAE,KAAK,GAAG,kBAAkB,CAAC;CACnC;AAED,MAAM,WAAW,0CAA0C;IACzD,aAAa,EAAE,OAAO,iCAAiC,CAAC;IACxD,YAAY,EAAE,OAAO,yCAAyC,CAAC;IAC/D,aAAa,EAAE,KAAK,GAAG,kBAAkB,CAAC;IAC1C,QAAQ,EAAE,gCAAgC,EAAE,CAAC;CAC9C;AAyBD,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,4CAA4C,GAClD,0CAA0C,CAa5C"}
|
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { COMPONENT_SECURITY_POLICY_VERSION, PROMPTFRAME_PUBLIC_SECURITY_POLICY, PROMPTFRAME_PUBLIC_SECURITY_POLICY_DIGEST, } from './index.js';
|
|
3
|
+
export { PROMPTFRAME_PUBLIC_SECURITY_POLICY_DIGEST } from './index.js';
|
|
4
|
+
export function evaluatePromptFrameSecurityPolicySource(input) {
|
|
5
|
+
const policy = input.policy ?? PROMPTFRAME_PUBLIC_SECURITY_POLICY;
|
|
6
|
+
const evaluatorMode = input.mode ?? (isAstScannableSourceFile(input.file) ? 'ast' : 'pattern_fallback');
|
|
7
|
+
const findings = evaluatorMode === 'ast'
|
|
8
|
+
? evaluateAstSource(input.file, input.source, collectPublicSecurityRules(policy))
|
|
9
|
+
: evaluatePatternSource(input.file, input.source, collectPublicSecurityRules(policy));
|
|
10
|
+
return {
|
|
11
|
+
policyVersion: COMPONENT_SECURITY_POLICY_VERSION,
|
|
12
|
+
policyDigest: PROMPTFRAME_PUBLIC_SECURITY_POLICY_DIGEST,
|
|
13
|
+
evaluatorMode,
|
|
14
|
+
findings: dedupeFindings(findings),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function evaluateAstSource(file, source, rules) {
|
|
18
|
+
const sourceFile = ts.createSourceFile(file, source, ts.ScriptTarget.Latest, true, scriptKindForFile(file));
|
|
19
|
+
const localDeclarations = new Set();
|
|
20
|
+
const aliases = new Map();
|
|
21
|
+
const findings = [];
|
|
22
|
+
collectLocalDeclarations(sourceFile, localDeclarations);
|
|
23
|
+
collectAliases(sourceFile, localDeclarations, aliases);
|
|
24
|
+
const visit = (node) => {
|
|
25
|
+
for (const rule of rules) {
|
|
26
|
+
const match = matchAstRule(rule, node, sourceFile, localDeclarations, aliases);
|
|
27
|
+
if (!match)
|
|
28
|
+
continue;
|
|
29
|
+
findings.push(buildFinding({
|
|
30
|
+
file,
|
|
31
|
+
sourceFile,
|
|
32
|
+
node: match.node,
|
|
33
|
+
rule,
|
|
34
|
+
evidence: match.node.getText(sourceFile).slice(0, 160),
|
|
35
|
+
detectionKind: 'ast',
|
|
36
|
+
confidence: match.confidence,
|
|
37
|
+
trace: match.trace,
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
40
|
+
ts.forEachChild(node, visit);
|
|
41
|
+
};
|
|
42
|
+
visit(sourceFile);
|
|
43
|
+
return findings;
|
|
44
|
+
}
|
|
45
|
+
function evaluatePatternSource(file, source, rules) {
|
|
46
|
+
const findings = [];
|
|
47
|
+
const sourceFile = ts.createSourceFile(file, source, ts.ScriptTarget.Latest, true, ts.ScriptKind.Unknown);
|
|
48
|
+
for (const rule of rules) {
|
|
49
|
+
const patterns = rule.patterns ?? rule.rawApis?.map(apiToPattern) ?? [];
|
|
50
|
+
for (const patternSource of patterns) {
|
|
51
|
+
const pattern = new RegExp(patternSource, 'i');
|
|
52
|
+
const match = source.match(pattern);
|
|
53
|
+
if (!match || match.index === undefined)
|
|
54
|
+
continue;
|
|
55
|
+
findings.push(buildFinding({
|
|
56
|
+
file,
|
|
57
|
+
sourceFile,
|
|
58
|
+
position: match.index,
|
|
59
|
+
rule,
|
|
60
|
+
evidence: match[0].slice(0, 160),
|
|
61
|
+
detectionKind: 'pattern',
|
|
62
|
+
confidence: 'medium',
|
|
63
|
+
trace: [`pattern:${patternSource}`],
|
|
64
|
+
}));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return findings;
|
|
68
|
+
}
|
|
69
|
+
function matchAstRule(rule, node, sourceFile, localDeclarations, aliases) {
|
|
70
|
+
const matcher = rule.astMatchers;
|
|
71
|
+
if (!matcher)
|
|
72
|
+
return undefined;
|
|
73
|
+
if (matcher.dynamicImport && ts.isCallExpression(node) && node.expression.kind === ts.SyntaxKind.ImportKeyword) {
|
|
74
|
+
return { node, confidence: 'high', trace: ['dynamicImport'] };
|
|
75
|
+
}
|
|
76
|
+
if (matcher.stringTimer && ts.isCallExpression(node)) {
|
|
77
|
+
const name = expressionName(node.expression, sourceFile);
|
|
78
|
+
if ((name === 'setTimeout' || name === 'setInterval') && isStringLikeExpression(node.arguments[0])) {
|
|
79
|
+
return { node, confidence: 'high', trace: [`stringTimer:${name}`] };
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (matcher.fpsHardcodedTiming) {
|
|
83
|
+
const match = matchFpsHardcodedTiming(node, sourceFile);
|
|
84
|
+
if (match)
|
|
85
|
+
return match;
|
|
86
|
+
}
|
|
87
|
+
const globals = new Set(matcher.globals ?? []);
|
|
88
|
+
if (globals.size > 0 && (ts.isCallExpression(node) || ts.isNewExpression(node))) {
|
|
89
|
+
const name = expressionName(node.expression, sourceFile);
|
|
90
|
+
const resolved = name ? aliases.get(name) ?? name : undefined;
|
|
91
|
+
if (resolved && globals.has(resolved) && !localDeclarations.has(resolved)) {
|
|
92
|
+
return { node, confidence: 'high', trace: [`global:${resolved}`] };
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
const memberPaths = matcher.memberPaths ?? [];
|
|
96
|
+
if (memberPaths.length > 0 && (ts.isCallExpression(node) || ts.isNewExpression(node) || ts.isPropertyAccessExpression(node) || ts.isElementAccessExpression(node))) {
|
|
97
|
+
const expression = ts.isCallExpression(node) || ts.isNewExpression(node) ? node.expression : node;
|
|
98
|
+
const path = memberPath(expression, sourceFile);
|
|
99
|
+
const matchedPath = memberPaths.find((candidate) => path === candidate || path.startsWith(`${candidate}.`));
|
|
100
|
+
if (matchedPath)
|
|
101
|
+
return { node, confidence: 'high', trace: [`member:${matchedPath}`] };
|
|
102
|
+
}
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
function collectLocalDeclarations(sourceFile, localDeclarations) {
|
|
106
|
+
const visit = (node) => {
|
|
107
|
+
if ((ts.isVariableDeclaration(node) || ts.isFunctionDeclaration(node) || ts.isClassDeclaration(node) || ts.isParameter(node))
|
|
108
|
+
&& node.name) {
|
|
109
|
+
collectBindingNames(node.name, localDeclarations);
|
|
110
|
+
}
|
|
111
|
+
ts.forEachChild(node, visit);
|
|
112
|
+
};
|
|
113
|
+
visit(sourceFile);
|
|
114
|
+
}
|
|
115
|
+
function collectAliases(sourceFile, localDeclarations, aliases) {
|
|
116
|
+
const visit = (node) => {
|
|
117
|
+
if (ts.isVariableDeclaration(node) && ts.isIdentifier(node.name) && node.initializer) {
|
|
118
|
+
const initializerName = expressionName(node.initializer, sourceFile);
|
|
119
|
+
if (initializerName && !localDeclarations.has(initializerName))
|
|
120
|
+
aliases.set(node.name.text, initializerName);
|
|
121
|
+
const initializerPath = memberPath(node.initializer, sourceFile);
|
|
122
|
+
if ((initializerPath === 'globalThis' || initializerPath === 'window') && ts.isObjectBindingPattern(node.name)) {
|
|
123
|
+
collectDestructureAliases(node.name, aliases);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (ts.isVariableDeclaration(node) && ts.isObjectBindingPattern(node.name) && node.initializer) {
|
|
127
|
+
const initializerPath = memberPath(node.initializer, sourceFile);
|
|
128
|
+
if (initializerPath === 'globalThis' || initializerPath === 'window') {
|
|
129
|
+
collectDestructureAliases(node.name, aliases);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
ts.forEachChild(node, visit);
|
|
133
|
+
};
|
|
134
|
+
visit(sourceFile);
|
|
135
|
+
}
|
|
136
|
+
function collectDestructureAliases(binding, aliases) {
|
|
137
|
+
for (const element of binding.elements) {
|
|
138
|
+
const propertyName = element.propertyName && ts.isIdentifier(element.propertyName)
|
|
139
|
+
? element.propertyName.text
|
|
140
|
+
: ts.isIdentifier(element.name)
|
|
141
|
+
? element.name.text
|
|
142
|
+
: undefined;
|
|
143
|
+
if (!propertyName || !ts.isIdentifier(element.name))
|
|
144
|
+
continue;
|
|
145
|
+
aliases.set(element.name.text, propertyName);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
function collectBindingNames(name, output) {
|
|
149
|
+
if (ts.isIdentifier(name)) {
|
|
150
|
+
output.add(name.text);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
for (const element of name.elements) {
|
|
154
|
+
if (ts.isBindingElement(element))
|
|
155
|
+
collectBindingNames(element.name, output);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
function expressionName(expression, sourceFile) {
|
|
159
|
+
if (ts.isIdentifier(expression))
|
|
160
|
+
return expression.text;
|
|
161
|
+
const path = memberPath(expression, sourceFile);
|
|
162
|
+
return path.includes('.') ? undefined : path || undefined;
|
|
163
|
+
}
|
|
164
|
+
function memberPath(node, sourceFile) {
|
|
165
|
+
if (ts.isIdentifier(node))
|
|
166
|
+
return node.text;
|
|
167
|
+
if (node.kind === ts.SyntaxKind.ThisKeyword)
|
|
168
|
+
return 'this';
|
|
169
|
+
if (ts.isPropertyAccessExpression(node)) {
|
|
170
|
+
const parent = memberPath(node.expression, sourceFile);
|
|
171
|
+
return parent ? `${parent}.${node.name.text}` : node.name.text;
|
|
172
|
+
}
|
|
173
|
+
if (ts.isElementAccessExpression(node)) {
|
|
174
|
+
const parent = memberPath(node.expression, sourceFile);
|
|
175
|
+
const key = stringLiteralValue(node.argumentExpression);
|
|
176
|
+
return parent && key ? `${parent}.${key}` : '';
|
|
177
|
+
}
|
|
178
|
+
return '';
|
|
179
|
+
}
|
|
180
|
+
function stringLiteralValue(node) {
|
|
181
|
+
if (!node)
|
|
182
|
+
return undefined;
|
|
183
|
+
if (ts.isStringLiteral(node) || ts.isNoSubstitutionTemplateLiteral(node))
|
|
184
|
+
return node.text;
|
|
185
|
+
return undefined;
|
|
186
|
+
}
|
|
187
|
+
function isStringLikeExpression(node) {
|
|
188
|
+
return Boolean(node && (ts.isStringLiteral(node) || ts.isNoSubstitutionTemplateLiteral(node)));
|
|
189
|
+
}
|
|
190
|
+
function buildFinding(input) {
|
|
191
|
+
const position = input.position ?? input.node?.getStart(input.sourceFile) ?? 0;
|
|
192
|
+
const location = input.sourceFile.getLineAndCharacterOfPosition(position);
|
|
193
|
+
return {
|
|
194
|
+
ruleId: input.rule.id,
|
|
195
|
+
policyVersion: COMPONENT_SECURITY_POLICY_VERSION,
|
|
196
|
+
policyDigest: PROMPTFRAME_PUBLIC_SECURITY_POLICY_DIGEST,
|
|
197
|
+
category: input.rule.category ?? 'dynamic_code_execution',
|
|
198
|
+
severity: input.rule.severity ?? 'high',
|
|
199
|
+
action: input.rule.action ?? input.rule.defaultAction ?? 'manual_review',
|
|
200
|
+
message: `${input.rule.label}: ${input.rule.reason}`,
|
|
201
|
+
file: input.file,
|
|
202
|
+
line: location.line + 1,
|
|
203
|
+
column: location.character + 1,
|
|
204
|
+
evidence: input.evidence,
|
|
205
|
+
recommendation: input.rule.recommendation,
|
|
206
|
+
repairHint: input.rule.repairHint ?? input.rule.recommendation,
|
|
207
|
+
detectionKind: input.detectionKind,
|
|
208
|
+
confidence: input.confidence,
|
|
209
|
+
trace: input.trace,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
function matchFpsHardcodedTiming(node, sourceFile) {
|
|
213
|
+
if (ts.isJsxAttribute(node)) {
|
|
214
|
+
const name = jsxAttributeName(node.name);
|
|
215
|
+
if (name && isTimingPropertyName(name) && jsxAttributeHasHardcodedTimingNumber(node)) {
|
|
216
|
+
return { node, confidence: 'medium', trace: [`fpsHardcodedTiming:jsx:${name}`] };
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
if (ts.isPropertyAssignment(node)) {
|
|
220
|
+
const name = propertyNameText(node.name);
|
|
221
|
+
if (name && isTimingPropertyName(name) && expressionHasHardcodedTimingNumber(node.initializer)) {
|
|
222
|
+
return { node, confidence: 'medium', trace: [`fpsHardcodedTiming:property:${name}`] };
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
if (ts.isCallExpression(node)) {
|
|
226
|
+
const name = callExpressionName(node.expression, sourceFile);
|
|
227
|
+
if (name === 'interpolate' && arrayLiteralHasHardcodedTimingNumber(node.arguments[1])) {
|
|
228
|
+
return { node, confidence: 'medium', trace: ['fpsHardcodedTiming:interpolate:inputRange'] };
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
if (ts.isBinaryExpression(node) && isTimingBinaryOperator(node.operatorToken.kind)) {
|
|
232
|
+
if ((isFrameLikeExpression(node.left, sourceFile) && expressionHasHardcodedTimingNumber(node.right))
|
|
233
|
+
|| (isFrameLikeExpression(node.right, sourceFile) && expressionHasHardcodedTimingNumber(node.left))) {
|
|
234
|
+
return { node, confidence: 'medium', trace: [`fpsHardcodedTiming:frameMath:${ts.tokenToString(node.operatorToken.kind) ?? 'operator'}`] };
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
return undefined;
|
|
238
|
+
}
|
|
239
|
+
function isTimingPropertyName(name) {
|
|
240
|
+
return name === 'from'
|
|
241
|
+
|| name === 'durationInFrames'
|
|
242
|
+
|| name === 'durationFrames'
|
|
243
|
+
|| name === 'delayFrames'
|
|
244
|
+
|| name === 'fps';
|
|
245
|
+
}
|
|
246
|
+
function propertyNameText(name) {
|
|
247
|
+
if (ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name))
|
|
248
|
+
return name.text;
|
|
249
|
+
return undefined;
|
|
250
|
+
}
|
|
251
|
+
function jsxAttributeName(name) {
|
|
252
|
+
if (ts.isIdentifier(name))
|
|
253
|
+
return name.text;
|
|
254
|
+
return undefined;
|
|
255
|
+
}
|
|
256
|
+
function jsxAttributeHasHardcodedTimingNumber(node) {
|
|
257
|
+
const initializer = node.initializer;
|
|
258
|
+
if (!initializer)
|
|
259
|
+
return false;
|
|
260
|
+
if (ts.isStringLiteral(initializer))
|
|
261
|
+
return isHardcodedTimingText(initializer.text);
|
|
262
|
+
if (ts.isJsxExpression(initializer) && initializer.expression) {
|
|
263
|
+
return expressionHasHardcodedTimingNumber(initializer.expression);
|
|
264
|
+
}
|
|
265
|
+
return false;
|
|
266
|
+
}
|
|
267
|
+
function arrayLiteralHasHardcodedTimingNumber(node) {
|
|
268
|
+
if (!node || !ts.isArrayLiteralExpression(node))
|
|
269
|
+
return false;
|
|
270
|
+
return node.elements.some((element) => expressionHasHardcodedTimingNumber(element));
|
|
271
|
+
}
|
|
272
|
+
function expressionHasHardcodedTimingNumber(node) {
|
|
273
|
+
if (!node)
|
|
274
|
+
return false;
|
|
275
|
+
if (ts.isNumericLiteral(node))
|
|
276
|
+
return isHardcodedTimingText(node.text);
|
|
277
|
+
if (ts.isPrefixUnaryExpression(node) && node.operator === ts.SyntaxKind.PlusToken) {
|
|
278
|
+
return expressionHasHardcodedTimingNumber(node.operand);
|
|
279
|
+
}
|
|
280
|
+
return false;
|
|
281
|
+
}
|
|
282
|
+
function isHardcodedTimingText(text) {
|
|
283
|
+
const value = Number(text);
|
|
284
|
+
return Number.isInteger(value) && value > 0 && HARDCODED_TIMING_FRAME_COUNTS.has(value);
|
|
285
|
+
}
|
|
286
|
+
function callExpressionName(expression, sourceFile) {
|
|
287
|
+
const path = memberPath(expression, sourceFile);
|
|
288
|
+
if (!path)
|
|
289
|
+
return expressionName(expression, sourceFile);
|
|
290
|
+
const parts = path.split('.');
|
|
291
|
+
return parts[parts.length - 1];
|
|
292
|
+
}
|
|
293
|
+
function isFrameLikeExpression(node, sourceFile) {
|
|
294
|
+
const name = expressionName(node, sourceFile) ?? memberPath(node, sourceFile).split('.').pop();
|
|
295
|
+
return name === 'frame' || name === 'currentFrame';
|
|
296
|
+
}
|
|
297
|
+
function isTimingBinaryOperator(kind) {
|
|
298
|
+
return kind === ts.SyntaxKind.LessThanToken
|
|
299
|
+
|| kind === ts.SyntaxKind.LessThanEqualsToken
|
|
300
|
+
|| kind === ts.SyntaxKind.GreaterThanToken
|
|
301
|
+
|| kind === ts.SyntaxKind.GreaterThanEqualsToken
|
|
302
|
+
|| kind === ts.SyntaxKind.EqualsEqualsToken
|
|
303
|
+
|| kind === ts.SyntaxKind.EqualsEqualsEqualsToken
|
|
304
|
+
|| kind === ts.SyntaxKind.ExclamationEqualsToken
|
|
305
|
+
|| kind === ts.SyntaxKind.ExclamationEqualsEqualsToken
|
|
306
|
+
|| kind === ts.SyntaxKind.PlusToken
|
|
307
|
+
|| kind === ts.SyntaxKind.MinusToken
|
|
308
|
+
|| kind === ts.SyntaxKind.AsteriskToken
|
|
309
|
+
|| kind === ts.SyntaxKind.SlashToken
|
|
310
|
+
|| kind === ts.SyntaxKind.PercentToken;
|
|
311
|
+
}
|
|
312
|
+
const HARDCODED_TIMING_FRAME_COUNTS = new Set([15, 24, 25, 30, 48, 50, 60, 90, 120]);
|
|
313
|
+
function collectPublicSecurityRules(policy) {
|
|
314
|
+
return [
|
|
315
|
+
...policy.forbiddenApis,
|
|
316
|
+
...policy.mediatedApis,
|
|
317
|
+
...policy.warningApis,
|
|
318
|
+
];
|
|
319
|
+
}
|
|
320
|
+
function dedupeFindings(findings) {
|
|
321
|
+
const seen = new Set();
|
|
322
|
+
return findings.filter((finding) => {
|
|
323
|
+
const key = `${finding.ruleId}:${finding.file}:${finding.line ?? ''}:${finding.column ?? ''}:${finding.evidence ?? ''}`;
|
|
324
|
+
if (seen.has(key))
|
|
325
|
+
return false;
|
|
326
|
+
seen.add(key);
|
|
327
|
+
return true;
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
function isAstScannableSourceFile(file) {
|
|
331
|
+
return /\.(tsx?|jsx?|mjs|cjs)$/i.test(file);
|
|
332
|
+
}
|
|
333
|
+
function scriptKindForFile(file) {
|
|
334
|
+
if (/\.tsx$/i.test(file))
|
|
335
|
+
return ts.ScriptKind.TSX;
|
|
336
|
+
if (/\.ts$/i.test(file) || /\.mts$/i.test(file) || /\.cts$/i.test(file))
|
|
337
|
+
return ts.ScriptKind.TS;
|
|
338
|
+
if (/\.jsx$/i.test(file))
|
|
339
|
+
return ts.ScriptKind.JSX;
|
|
340
|
+
if (/\.js$/i.test(file) || /\.mjs$/i.test(file) || /\.cjs$/i.test(file))
|
|
341
|
+
return ts.ScriptKind.JS;
|
|
342
|
+
return ts.ScriptKind.Unknown;
|
|
343
|
+
}
|
|
344
|
+
function apiToPattern(api) {
|
|
345
|
+
const escaped = api.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
346
|
+
if (api === 'fetch')
|
|
347
|
+
return '\\bfetch\\s*\\(';
|
|
348
|
+
if (api === 'XMLHttpRequest')
|
|
349
|
+
return '\\bnew\\s+XMLHttpRequest\\b|\\bXMLHttpRequest\\s*\\(';
|
|
350
|
+
if (api === 'WebSocket')
|
|
351
|
+
return '\\bnew\\s+WebSocket\\b|\\bWebSocket\\s*\\(';
|
|
352
|
+
if (api === 'EventSource')
|
|
353
|
+
return '\\bnew\\s+EventSource\\b|\\bEventSource\\s*\\(';
|
|
354
|
+
if (api === 'navigator.sendBeacon')
|
|
355
|
+
return 'navigator\\.sendBeacon\\s*\\(';
|
|
356
|
+
return api.includes('.')
|
|
357
|
+
? `${escaped}\\s*\\(`
|
|
358
|
+
: `\\b${escaped}\\b`;
|
|
359
|
+
}
|
|
360
|
+
//# sourceMappingURL=security-policy-evaluator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-policy-evaluator.js","sourceRoot":"","sources":["../src/security-policy-evaluator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const COMPONENT_SECURITY_POLICY_DIGEST_VERSION: "component-security-policy-digest.v0.1";
|
|
2
|
+
export declare function canonicalizePromptFramePolicy(value: unknown): string;
|
|
3
|
+
export declare function createPromptFramePublicSecurityPolicyDigest(policy: unknown): `${typeof COMPONENT_SECURITY_POLICY_DIGEST_VERSION}:${string}`;
|
|
4
|
+
//# sourceMappingURL=security-policy-fingerprint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-policy-fingerprint.d.ts","sourceRoot":"","sources":["../src/security-policy-fingerprint.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wCAAwC,EAAG,uCAAgD,CAAC;AAEzG,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAgBpE;AAED,wBAAgB,2CAA2C,CACzD,MAAM,EAAE,OAAO,GACd,GAAG,OAAO,wCAAwC,IAAI,MAAM,EAAE,CAIhE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export const COMPONENT_SECURITY_POLICY_DIGEST_VERSION = 'component-security-policy-digest.v0.1';
|
|
2
|
+
export function canonicalizePromptFramePolicy(value) {
|
|
3
|
+
if (value === null)
|
|
4
|
+
return 'null';
|
|
5
|
+
if (typeof value === 'string')
|
|
6
|
+
return JSON.stringify(value);
|
|
7
|
+
if (typeof value === 'number' || typeof value === 'boolean')
|
|
8
|
+
return JSON.stringify(value);
|
|
9
|
+
if (Array.isArray(value)) {
|
|
10
|
+
return `[${value.map((item) => canonicalizePromptFramePolicy(item)).join(',')}]`;
|
|
11
|
+
}
|
|
12
|
+
if (typeof value === 'object') {
|
|
13
|
+
const record = value;
|
|
14
|
+
const entries = Object.keys(record)
|
|
15
|
+
.filter((key) => record[key] !== undefined)
|
|
16
|
+
.sort()
|
|
17
|
+
.map((key) => `${JSON.stringify(key)}:${canonicalizePromptFramePolicy(record[key])}`);
|
|
18
|
+
return `{${entries.join(',')}}`;
|
|
19
|
+
}
|
|
20
|
+
return JSON.stringify(null);
|
|
21
|
+
}
|
|
22
|
+
export function createPromptFramePublicSecurityPolicyDigest(policy) {
|
|
23
|
+
const canonicalPolicy = canonicalizePromptFramePolicy(policy);
|
|
24
|
+
const hash = fnv1a64(canonicalPolicy);
|
|
25
|
+
return `${COMPONENT_SECURITY_POLICY_DIGEST_VERSION}:${hash}`;
|
|
26
|
+
}
|
|
27
|
+
function fnv1a64(input) {
|
|
28
|
+
let hash = 0xcbf29ce484222325n;
|
|
29
|
+
const prime = 0x100000001b3n;
|
|
30
|
+
const mask = 0xffffffffffffffffn;
|
|
31
|
+
for (let index = 0; index < input.length; index += 1) {
|
|
32
|
+
hash ^= BigInt(input.charCodeAt(index));
|
|
33
|
+
hash = (hash * prime) & mask;
|
|
34
|
+
}
|
|
35
|
+
return hash.toString(16).padStart(16, '0');
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=security-policy-fingerprint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-policy-fingerprint.js","sourceRoot":"","sources":["../src/security-policy-fingerprint.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wCAAwC,GAAG,uCAAgD,CAAC;AAEzG,MAAM,UAAU,6BAA6B,CAAC,KAAc;IAC1D,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC1F,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACnF,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,KAAgC,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;aAChC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;aAC1C,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,6BAA6B,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACxF,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAClC,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,2CAA2C,CACzD,MAAe;IAEf,MAAM,eAAe,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACtC,OAAO,GAAG,wCAAwC,IAAI,IAAI,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,OAAO,CAAC,KAAa;IAC5B,IAAI,IAAI,GAAG,mBAAmB,CAAC;IAC/B,MAAM,KAAK,GAAG,cAAc,CAAC;IAC7B,MAAM,IAAI,GAAG,mBAAmB,CAAC;IACjC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,IAAI,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC;IAC/B,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC7C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@promptframe/contracts",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.11",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -15,6 +15,10 @@
|
|
|
15
15
|
"import": "./dist/index.js",
|
|
16
16
|
"types": "./dist/index.d.ts"
|
|
17
17
|
},
|
|
18
|
+
"./security-evaluator": {
|
|
19
|
+
"import": "./dist/security-policy-evaluator.js",
|
|
20
|
+
"types": "./dist/security-policy-evaluator.d.ts"
|
|
21
|
+
},
|
|
18
22
|
"./package.json": {
|
|
19
23
|
"default": "./package.json"
|
|
20
24
|
}
|
|
@@ -41,9 +45,7 @@
|
|
|
41
45
|
"clean": "rm -rf dist"
|
|
42
46
|
},
|
|
43
47
|
"dependencies": {
|
|
48
|
+
"typescript": "~5.7.0",
|
|
44
49
|
"zod": "^3.24.0"
|
|
45
|
-
},
|
|
46
|
-
"devDependencies": {
|
|
47
|
-
"typescript": "~5.7.0"
|
|
48
50
|
}
|
|
49
51
|
}
|