@hraness/slopcamera 3.8.0 → 3.8.1
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 +286 -298
- package/apps/desktop/application/html-overlay-integrity.ts +27 -4
- package/apps/desktop/application/operation.ts +1 -1
- package/apps/desktop/application/operations/spatial-render.ts +1 -1
- package/apps/desktop/cli/commands.ts +1 -1
- package/apps/desktop/dist/cli/main.js +244 -244
- package/dist/cli.js +1 -1
- package/dist/{index-k9bjw80z.js → index-6jrxaser.js} +1 -1
- package/dist/index.js +1 -1
- package/docs/README.md +4 -1
- package/package.json +2 -2
- package/skills/slopcamera/references/install.md +2 -2
- package/src/version.ts +1 -1
|
@@ -24,6 +24,9 @@ import {
|
|
|
24
24
|
} from "./html-overlay-browser-runtime";
|
|
25
25
|
|
|
26
26
|
const Sha256Schema = z.string().regex(/^[a-f0-9]{64}$/u);
|
|
27
|
+
const ExecutionContractVersionSchema = z.union([z.literal(1), z.literal(2)]);
|
|
28
|
+
export type HtmlOverlayExecutionContractVersion = z.infer<typeof ExecutionContractVersionSchema>;
|
|
29
|
+
|
|
27
30
|
const IntegrityLeafSchema = z.strictObject({
|
|
28
31
|
key: z.string().min(1).max(512),
|
|
29
32
|
sha256: Sha256Schema,
|
|
@@ -44,7 +47,7 @@ export const HtmlOverlayExecutionIntegritySchema = z.strictObject({
|
|
|
44
47
|
}),
|
|
45
48
|
rootSha256: Sha256Schema,
|
|
46
49
|
runtimeSha256: Sha256Schema,
|
|
47
|
-
schemaVersion:
|
|
50
|
+
schemaVersion: ExecutionContractVersionSchema,
|
|
48
51
|
});
|
|
49
52
|
export type HtmlOverlayExecutionIntegrity = Readonly<
|
|
50
53
|
z.infer<typeof HtmlOverlayExecutionIntegritySchema>
|
|
@@ -185,7 +188,7 @@ function legacyHtmlOverlayRendererContract(profileInput?: HtmlOverlayExecutionPr
|
|
|
185
188
|
}
|
|
186
189
|
|
|
187
190
|
/** Fetch opt-in grants only the exact declared private paths and changes execution identity. */
|
|
188
|
-
|
|
191
|
+
function historicalHtmlOverlayRendererContract(
|
|
189
192
|
profileInput?: HtmlOverlayExecutionProfile,
|
|
190
193
|
resourcesInput: readonly HtmlOverlayDeclaredResource[] = [],
|
|
191
194
|
) {
|
|
@@ -204,6 +207,25 @@ export function htmlOverlayRendererContract(
|
|
|
204
207
|
});
|
|
205
208
|
}
|
|
206
209
|
|
|
210
|
+
/** Historical receipts select v1 explicitly; all new execution binds clone prevention. */
|
|
211
|
+
export function htmlOverlayRendererContract(
|
|
212
|
+
profileInput?: HtmlOverlayExecutionProfile,
|
|
213
|
+
resourcesInput: readonly HtmlOverlayDeclaredResource[] = [],
|
|
214
|
+
version: HtmlOverlayExecutionContractVersion = 2,
|
|
215
|
+
) {
|
|
216
|
+
const contract = historicalHtmlOverlayRendererContract(profileInput, resourcesInput);
|
|
217
|
+
if (ExecutionContractVersionSchema.parse(version) === 1) return contract;
|
|
218
|
+
return Object.freeze({
|
|
219
|
+
...contract,
|
|
220
|
+
launch: Object.freeze({
|
|
221
|
+
...contract.launch,
|
|
222
|
+
args: Object.freeze(contract.launch.args.map(argument => argument.startsWith("--disable-features=")
|
|
223
|
+
? `${argument},PaintHolding,MacAppCodeSignClone` : argument)),
|
|
224
|
+
}),
|
|
225
|
+
schemaVersion: 4,
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
|
|
207
229
|
export function assertHtmlOverlayExecutionProfileLibraries(
|
|
208
230
|
libraries: readonly string[], profile?: HtmlOverlayExecutionProfile,
|
|
209
231
|
): void {
|
|
@@ -258,6 +280,7 @@ export function createHtmlOverlayExecutionBundle(
|
|
|
258
280
|
authoringInput: HtmlOverlayAuthoringInput,
|
|
259
281
|
browserRuntimeInput: HtmlOverlayBrowserRuntimeBinding,
|
|
260
282
|
executionProfile?: HtmlOverlayExecutionProfile,
|
|
283
|
+
contractVersion: HtmlOverlayExecutionContractVersion = 2,
|
|
261
284
|
): HtmlOverlayExecutionBundle {
|
|
262
285
|
const authoring = HtmlOverlayAuthoringInputSchema.parse(authoringInput);
|
|
263
286
|
assertHtmlOverlayExecutionProfileLibraries(authoring.libraries, executionProfile);
|
|
@@ -290,7 +313,7 @@ export function createHtmlOverlayExecutionBundle(
|
|
|
290
313
|
},
|
|
291
314
|
},
|
|
292
315
|
{ key: "browser-runtime", value: browserRuntime },
|
|
293
|
-
{ key: "renderer-contract", value: htmlOverlayRendererContract(executionProfile, authoring.resources) },
|
|
316
|
+
{ key: "renderer-contract", value: htmlOverlayRendererContract(executionProfile, authoring.resources, contractVersion) },
|
|
294
317
|
{
|
|
295
318
|
key: "document",
|
|
296
319
|
value: {
|
|
@@ -326,7 +349,7 @@ export function createHtmlOverlayExecutionBundle(
|
|
|
326
349
|
leaves,
|
|
327
350
|
rootSha256: merkleRoot(leaves),
|
|
328
351
|
runtimeSha256,
|
|
329
|
-
schemaVersion:
|
|
352
|
+
schemaVersion: contractVersion,
|
|
330
353
|
});
|
|
331
354
|
return Object.freeze({
|
|
332
355
|
importMap,
|
|
@@ -4,7 +4,7 @@ import type { z } from "zod";
|
|
|
4
4
|
|
|
5
5
|
import type { ApplicationContext } from "./context";
|
|
6
6
|
|
|
7
|
-
export const SLOPCAMERA_APPLICATION_TOOL_VERSION = "slopcamera-3.8.
|
|
7
|
+
export const SLOPCAMERA_APPLICATION_TOOL_VERSION = "slopcamera-3.8.1" as const;
|
|
8
8
|
|
|
9
9
|
export const OPERATION_KINDS = [
|
|
10
10
|
"scene.audit",
|
|
@@ -381,7 +381,7 @@ export async function recoverSpatialRenderOutput(application: ApplicationContext
|
|
|
381
381
|
mode: plan.request.mode, frameRate: plan.request.selection.kind === "video" ? plan.request.selection.frameRate : { numerator: 1, denominator: 1 }, preparedAssets: batch.preparedAssets });
|
|
382
382
|
equal(batch.metadata, expectedBatch.metadata, "Spatial batch metadata differs from the exact scene samples.");
|
|
383
383
|
equal(batch.metadataSha256, expectedBatch.metadataSha256, "Spatial batch metadata digest is invalid.");
|
|
384
|
-
const execution = createHtmlOverlayExecutionBundle(expectedBatch.authoring, input.browserRuntime, plan.request.executionProfile);
|
|
384
|
+
const execution = createHtmlOverlayExecutionBundle(expectedBatch.authoring, input.browserRuntime, plan.request.executionProfile, batch.executionIntegrity.schemaVersion);
|
|
385
385
|
assertHtmlOverlayGpuEvidenceProfile(plan.request.executionProfile, batch.gpuEvidence);
|
|
386
386
|
equal(batch.gpuEvidence, receipt.runtime.gpuEvidence, "Spatial batch hardware identity differs from its completion receipt.");
|
|
387
387
|
equal(batch.executionIntegrity, execution.integrity, "Spatial batch execution integrity differs from its exact authored runtime.");
|
|
@@ -365,7 +365,7 @@ import {
|
|
|
365
365
|
workflowRunStore,
|
|
366
366
|
} from "./workflow-runs";
|
|
367
367
|
|
|
368
|
-
export const SLOPCAMERA_VERSION = "3.8.
|
|
368
|
+
export const SLOPCAMERA_VERSION = "3.8.1";
|
|
369
369
|
|
|
370
370
|
// Legacy direct renders predate per-target output contracts. Keep them
|
|
371
371
|
// bounded generously enough for long-form production while preventing one
|