@hraness/slopcamera 3.3.3 → 3.3.4

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hraness/slopcamera",
3
- "version": "3.3.3",
3
+ "version": "3.3.4",
4
4
  "description": "A local visual studio for coding agents: author scenes, combine generated and recorded media, and export images, diagrams, animation, and video from retained sources.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -186,6 +186,7 @@
186
186
  "NOTICE.md",
187
187
  "src/**/*.ts",
188
188
  "!src/**/*.test.ts",
189
+ "!src/hosted/**",
189
190
  "!src/spatial-scene/test-fixture.ts",
190
191
  "src/assets/fonts/nebula-sans",
191
192
  "schema",
@@ -201,13 +202,13 @@
201
202
  "build:desktop": "bun run build:desktop:cli",
202
203
  "build:desktop:cli": "bun -e 'await (await import(\"node:fs/promises\")).rm(\"./apps/desktop/dist/cli\", { recursive: true, force: true })' && bun build --target=bun --minify --sourcemap=none --packages external --external @hraness/slopcamera/cli apps/desktop/cli/main.ts --outdir apps/desktop/dist/cli",
203
204
  "build:web": "bun run --cwd apps/web build",
204
- "typecheck": "bun run typecheck:sdk && bun run typecheck:desktop",
205
+ "typecheck": "bun run typecheck:sdk && bun run typecheck:desktop && bun run typecheck:api",
205
206
  "typecheck:sdk": "tsc --noEmit -p tsconfig.json",
206
207
  "typecheck:desktop": "tsc --noEmit -p apps/desktop/tsconfig.json",
207
- "lint": "bun run lint:sdk && bun run lint:desktop",
208
+ "lint": "bun run lint:sdk && bun run lint:desktop && bun run lint:api",
208
209
  "lint:sdk": "eslint src packages/scene scripts",
209
210
  "lint:desktop": "eslint apps/desktop/contracts apps/desktop/core apps/desktop/application apps/desktop/code apps/desktop/workflows apps/desktop/html-overlay apps/desktop/cli apps/desktop/qualification apps/desktop/analysis apps/desktop/studio",
210
- "test": "bun run test:sdk && bun run test:desktop && bun run --cwd apps/web test",
211
+ "test": "bun run test:sdk && bun run test:desktop && bun run test:api && bun run --cwd apps/web test",
211
212
  "test:sdk": "bun test ./src ./packages/scene",
212
213
  "test:desktop": "bun test ./apps/desktop/contracts ./apps/desktop/core ./apps/desktop/application ./apps/desktop/code ./apps/desktop/workflows ./apps/desktop/html-overlay ./apps/desktop/cli ./apps/desktop/analysis ./apps/desktop/studio",
213
214
  "build:desktop:analysis:macos": "bun run ./apps/desktop/analysis/build.ts",
@@ -232,15 +233,20 @@
232
233
  "test:package": "bun run ./scripts/package-smoke.ts",
233
234
  "check:sdk": "bun run typecheck:sdk && bun run lint:sdk && bun run build:sdk && bun run test:sdk && bun run check:release-workflows && bun run check:schema && bun run check:skill",
234
235
  "check:desktop": "bun run check:effect && bun run typecheck:desktop && bun run lint:desktop && bun run test:desktop && bun run build:desktop",
235
- "check:web": "bun run --cwd apps/web check",
236
+ "check:web": "bun apps/web/scripts/verify-example-sources.ts && bun run --cwd apps/web check",
236
237
  "kb:refresh": "bunx --bun github:hraness/kb#v0.15.2 refresh --root kb",
237
238
  "kb:check:lane": "bunx --bun github:hraness/kb#v0.15.2 check --root kb --no-catalog",
238
239
  "kb:check": "bunx --bun github:hraness/kb#v0.15.2 check --root kb && bunx --bun github:hraness/kb#v0.15.2 agents check --root kb --repo .",
239
240
  "kb:catalog": "bunx --bun github:hraness/kb#v0.15.2 catalog --root kb",
240
241
  "check:cost-surfaces": "bun ./scripts/check-cost-surfaces.mjs",
241
- "check": "bun run check:cost-surfaces && bun run check:standalone && bun run check:sdk && bun run check:desktop && bun run check:web && bun run check:standalone && bun run test:package",
242
+ "check": "bun run check:cost-surfaces && bun run check:standalone && bun run check:sdk && bun run check:desktop && bun run check:api && bun run check:web && bun run check:standalone && bun run test:package",
242
243
  "prepack": "bun run check",
243
- "check:effect": "bun run ./scripts/check-effect-policy.ts && bun test ./scripts/check-effect-architecture.test.ts"
244
+ "check:effect": "bun run ./scripts/check-effect-policy.ts && bun test ./scripts/check-effect-architecture.test.ts",
245
+ "typecheck:api": "tsc --noEmit -p apps/api/tsconfig.json",
246
+ "typecheck:objects": "tsc --noEmit -p apps/objects/tsconfig.json",
247
+ "lint:api": "eslint apps/api/src api apps/objects/src",
248
+ "test:api": "bun test ./apps/api/src",
249
+ "check:api": "bun run typecheck:api && bun run typecheck:objects && bun run lint:api && bun run test:api"
244
250
  },
245
251
  "dependencies": {
246
252
  "@ai-sdk/gateway-v4": "npm:@ai-sdk/gateway@^4.0.27",
@@ -3,11 +3,11 @@
3
3
  These commands require current source. Check the installed `slopcamera help direct` and [installation reference](install.md) before preparing a paid session.
4
4
 
5
5
 
6
- Use `slopcamera direct --help` for the installed command contract and read the [complete directing guide](https://github.com/hraness/slopcamera/blob/main/docs/directing-video.md) for recipe examples. Start with `slopcamera direct init recipe.json --json`, edit the stable `direct_<id>` and ordered shots, then run `slopcamera direct plan recipe.json --json`. Planning reads live Gateway capabilities, per-second pricing, and image transport requirements without a paid generation. Use [gateway-media.md](gateway-media.md) for model discovery and process-local credentials. Gateway reads `AI_GATEWAY_API_KEY` before `VERCEL_OIDC_TOKEN`.
6
+ Use `slopcamera direct --help` for the installed command contract and read the [complete directing guide](https://github.com/hraness/slopcamera/blob/main/docs/directing-video.md) for recipe examples. Start with `slopcamera direct init recipe.json --json`, edit the stable `direct_<id>` and ordered shots, then run `slopcamera direct plan recipe.json --json`. Planning reads live Gateway capabilities, per-second pricing, and image transport requirements without a paid generation. Resolution stays the catalog value; Alibaba Wan dispatch maps it with the shot's aspect ratio to the provider's explicit pixel size (`720p` at `16:9` becomes `1280x720`). Use [gateway-media.md](gateway-media.md) for model discovery and process-local credentials. Gateway reads `AI_GATEWAY_API_KEY` before `VERCEL_OIDC_TOKEN`.
7
7
 
8
- To use a rendered scene frame, pass the exact returned PNG path to `slopcamera direct anchor --input <image> --json`. Set a shot's `firstFrame` to `{kind: "image", source: <complete returned reference>}`. The import is local; generation uploads only the exact references acknowledged by `--allow-cloud-upload` on that invocation. A later shot can instead set `firstFrame` to `{kind: "shot-end", shotId: "<earlier-shot-id>"}` to use its currently accepted predecessor's final decoded frame. Optional `lastFrame` needs a first frame and live model support. Retain authored prompts for every shot and inspect motion, geometry, lighting, and identity at each join. Endpoint conditioning doesn't carry a provider neural checkpoint or complete 3D world state.
8
+ To use rendered or generated media, pass the exact returned path to `slopcamera direct anchor --input <media> --json`. It imports one PNG, JPEG, or WebP image, or one self-contained MP4/QuickTime clip, and returns the hash-bound source reference with measured facts. Set a shot's `firstFrame` to `{kind: "image", source: <complete returned reference>}` for a starting image. Alternatively, list up to eight complete returned references — images and video, ordered and distinct — in a shot's `references` array for reference-to-video, video-editing, motion-control, or extend-video operations that the live catalog confirms; `references` cannot combine with `firstFrame`/`lastFrame`. Alibaba Wan reference models bind references to prompt positions — name `character1`, `character2`, and so on in reference order. The import is local; generation uploads only the exact references acknowledged by `--allow-cloud-upload` on that invocation. A later shot can instead set `firstFrame` to `{kind: "shot-end", shotId: "<earlier-shot-id>"}` to use its currently accepted predecessor's final decoded frame. Optional `lastFrame` needs a first frame and live model support. Retain authored prompts for every shot and inspect motion, geometry, lighting, and identity at each join. Endpoint conditioning doesn't carry a provider neural checkpoint or complete 3D world state.
9
9
 
10
- For a shot whose planned `inputTransport` is `url`, configure an existing private Vercel Blob store and include `--allow-reference-hosting` alongside `--allow-cloud-upload`. H3 Max currently needs this path for image conditioning. Blob prefers `VERCEL_OIDC_TOKEN` with `BLOB_STORE_ID`, then falls back to `BLOB_READ_WRITE_TOKEN`; a Gateway API key alone cannot authorize Blob. The adapter copies at most two exact retained PNG, JPEG, or WebP images of 30 MiB each, verifies bytes and private access, then grants the model signed GET access that expires 15 minutes after issuance. It doesn't publish public URLs or retain credentials and signed URLs. GET access doesn't imply support for every provider download method. Budget for Blob storage, operations, and transfer separately from the Gateway estimate.
10
+ For a shot whose planned `inputTransport` is `url`, configure an existing private Vercel Blob store and include `--allow-reference-hosting` alongside `--allow-cloud-upload`. H3 Max currently needs this path for image conditioning; Seedance 2.5 uses it for references including video. Blob prefers `VERCEL_OIDC_TOKEN` with `BLOB_STORE_ID`, then falls back to `BLOB_READ_WRITE_TOKEN`; a Gateway API key alone cannot authorize Blob. The adapter copies at most eight exact retained objects — PNG, JPEG, or WebP images of 30 MiB each, or MP4/QuickTime video of 256 MiB each — verifies bytes and private access, then grants the model signed GET access that expires 15 minutes after issuance. It doesn't publish public URLs or retain credentials and signed URLs. GET access doesn't imply support for every provider download method. Budget for Blob storage, operations, and transfer separately from the Gateway estimate.
11
11
 
12
12
  Create the retained budget once with `slopcamera direct start recipe.json --budget-usd <authorized-USD> --json`. Generate one deliberate take with `slopcamera direct generate <direct-id> --shot <shot-id> --attempt <take-id> --allow-paid-generation --json`; include the upload and hosting flags required by its references and planned transport. Inspect the actual output, then record `slopcamera direct review <direct-id> --attempt <take-id> --decision accepted|rejected --note <review> --json`. Acceptance requires a completed video with its retained endpoint. A successful provider response can still fail local timestamp or color admission; retain those paid bytes for inspection and explicit conversion. Supported opaque 8-bit YUV with missing color tags uses the retained `untagged-8bit-yuv-assume-bt709-v1` policy: missing transfer, primaries, and matrix mean BT.709; missing range means limited range. Receipts preserve the observed tags and assumptions. Endpoint images become sRGB; conflicting tags, HDR, 10-bit formats, and video with alpha are rejected without tone mapping. Admitted RGB formats are opaque `rgb24`, `bgr24`, and `gbrp`. A rejected output and its budget reservation remain retained; another generation needs a new take ID and explicit paid invocation.
13
13
 
@@ -1,6 +1,6 @@
1
1
  # Make an educational film
2
2
 
3
- Use current-source `studio init lesson --template manim-lesson` for Manim visuals, or combine existing diagrams and spatial scenes when they better express the subject. Read [native studio](native-studio.md) for retained jobs and [video projects](video-projects.md) for composition.
3
+ Use `studio init lesson --template manim-lesson` for Manim visuals, or combine existing diagrams and spatial scenes when they better express the subject. Read [native studio](native-studio.md) for retained jobs and [video projects](video-projects.md) for composition.
4
4
 
5
5
  Preserve supplied mathematical facts, units and labels. Separate an explanatory illustration from a measured simulation or formal proof. Use tested lesson helpers for layout, axes, typography, equations and camera framing; inspect the actual rendered notation and endpoints rather than trusting syntactically valid code.
6
6
 
@@ -14,7 +14,7 @@ command -v slopcamera
14
14
 
15
15
  A restricted shell can omit package-manager paths. Check known host installation paths before declaring a tool unavailable. If Bun is genuinely absent, follow its official [installation guide](https://bun.sh/docs/installation) within the user’s authorized setup scope. Do not switch package managers or pipe an unreviewed installer into a shell.
16
16
 
17
- Slopcamera installs from its verified release archive: `bun add --global https://github.com/hraness/slopcamera/releases/download/v3.3.2/hraness-slopcamera-3.3.2.tgz`, then `slopcamera doctor --json`. Building from source is the contributor path. Historical Atet archives do not install the renamed CLI; never substitute `slopcamera` into an old archive URL.
17
+ Slopcamera installs from its verified release archive: `bun add --global https://github.com/hraness/slopcamera/releases/download/v3.3.3/hraness-slopcamera-3.3.3.tgz`, then `slopcamera doctor --json`. Building from source is the contributor path. Historical Atet archives do not install the renamed CLI; never substitute `slopcamera` into an old archive URL.
18
18
 
19
19
  Use an existing compatible source build when available. Otherwise follow the [complete source-install guide](https://github.com/hraness/slopcamera/blob/main/docs/how-to/use-current-source.md): clone into a new directory, record its exact commit, install locked dependencies without lifecycle scripts, build the SDK and source CLI, then define the shell command against that checkout. A clone or skill installation alone does not install the executable. Do not alter an existing active checkout to satisfy this path.
20
20
 
@@ -15,7 +15,7 @@ For custom local authoring, use `slopcamera code init workflow.ts`, inspect the
15
15
 
16
16
  Discover exact local inputs with `slopcamera operations list|show`. No host accepts arbitrary new operation registration or caller-selected shell/argv. The fixed `slopcamera.studio.run` is an explicit exception for previously retained native source: its bundle/job input remains typed, while executable paths and trusted-current-user authority belong to the host invocation. The checked `examples/studio/native-workflow.ts` uses `defineWorkflow` and `StudioRunInputSchema` from the local entrypoint.
17
17
 
18
- `media.ingest` needs an existing ordinary project. There is no public generic arbitrary-file SDK project-create operation. Follow [video projects](video-projects.md) for the supported recording, native, and directing entry paths, or [music videos](music-video.md) for the current-source `html render` CLI that creates a project from an authored scene and optional soundtrack. Never synthesize their receipts or depend on private constructors.
18
+ `media.ingest` needs an existing ordinary project. There is no public generic arbitrary-file SDK project-create operation. Follow [video projects](video-projects.md) for the supported recording, native, and directing entry paths, or [music videos](music-video.md) for the `html render` CLI that creates a project from an authored scene and optional soundtrack. Never synthesize their receipts or depend on private constructors.
19
19
 
20
20
  ## Inspect, approve and resume exact work
21
21
 
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const SLOPCAMERA_VERSION = "3.3.3" as const
1
+ export const SLOPCAMERA_VERSION = "3.3.4" as const