@a-company/atelier 0.37.0 → 0.38.0

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.
Files changed (45) hide show
  1. package/dist/{chunk-JPZ4F4PW.js → chunk-3ARBOSWY.js} +64 -5
  2. package/dist/chunk-3ARBOSWY.js.map +1 -0
  3. package/dist/cli.js +11469 -413
  4. package/dist/cli.js.map +1 -1
  5. package/dist/{dist-M67UZGFQ.js → dist-3YQK6PI6.js} +2 -2
  6. package/dist/index.cjs +3193 -227
  7. package/dist/index.cjs.map +1 -1
  8. package/dist/index.d.cts +701 -8
  9. package/dist/index.d.ts +701 -8
  10. package/dist/index.js +7237 -72
  11. package/dist/index.js.map +1 -1
  12. package/dist/mcp.js +2898 -507
  13. package/dist/mcp.js.map +1 -1
  14. package/package.json +6 -6
  15. package/src/web/inline-app.ts +55 -4
  16. package/src/web/timeline-state-types.ts +28 -0
  17. package/src/web/timeline-view.test.ts +99 -0
  18. package/src/web/timeline-view.ts +339 -0
  19. package/src/web/workspace-app.ts +3146 -0
  20. package/templates/workspace/.claude/agents/atelier-iris.md +75 -0
  21. package/templates/workspace/.claude/agents/atelier-lux.md +67 -0
  22. package/templates/workspace/.claude/agents/atelier-quill.md +61 -0
  23. package/templates/workspace/.gitignore +30 -0
  24. package/templates/workspace/.paradigm/personas/_shared/cascade-merge.md +172 -0
  25. package/templates/workspace/CLAUDE.md +93 -0
  26. package/templates/workspace/README.md +75 -0
  27. package/templates/workspace/SETUP.md +127 -0
  28. package/templates/workspace/_brand/.atelier-brand.yaml +34 -0
  29. package/templates/workspace/_brand/DESIGN.md +56 -0
  30. package/templates/workspace/_brand/SCRIPT.md +41 -0
  31. package/templates/workspace/_brand/STORYBOARD.md +33 -0
  32. package/templates/workspace/_packs/README.md +54 -0
  33. package/templates/workspace/projects/README.md +49 -0
  34. package/templates/workspace/workspace.atelier +22 -0
  35. package/university/index.yaml +1 -1
  36. package/dist/chunk-5QQESXI6.js +0 -4432
  37. package/dist/chunk-5QQESXI6.js.map +0 -1
  38. package/dist/chunk-JPZ4F4PW.js.map +0 -1
  39. package/dist/cli.cjs +0 -6313
  40. package/dist/cli.cjs.map +0 -1
  41. package/dist/cli.d.cts +0 -1
  42. package/dist/cli.d.ts +0 -1
  43. package/dist/mcp.cjs +0 -5462
  44. package/dist/mcp.cjs.map +0 -1
  45. /package/dist/{dist-M67UZGFQ.js.map → dist-3YQK6PI6.js.map} +0 -0
@@ -0,0 +1,127 @@
1
+ # Workspace setup runbook
2
+
3
+ > **For the agent team.** When the creator asks to "get set up" (or "run the
4
+ > setup checklist", "am I ready to render", "check my environment"), work
5
+ > through this file top to bottom. For each item: run the **Check**, judge it
6
+ > against **Pass**, and if it fails, walk the creator through the **Fix** — then
7
+ > re-run the Check to confirm. Do NOT skip steps silently. End with the
8
+ > **Report** at the bottom: a ✓/✗/– line per item plus the single next action.
9
+ >
10
+ > Run the checks with the `Bash` tool. Surface command output verbatim when an
11
+ > item fails — don't paraphrase errors. Detect the OS first (`uname`) so you
12
+ > give the right install command (the Fixes below show macOS/Homebrew; on Linux
13
+ > use the distro package manager, on Windows use winget/scoop or the installer
14
+ > links).
15
+
16
+ ---
17
+
18
+ ## Required — the creator cannot render without these
19
+
20
+ ### 1. Claude Code
21
+ - **Check:** You're running inside it, so this passes by definition.
22
+ - **Pass:** This session exists.
23
+ - **Fix:** n/a.
24
+
25
+ ### 2. Node.js 22+
26
+ - **Check:** `node --version`
27
+ - **Pass:** major version ≥ 22. (Everything below runs through `npx`, which needs
28
+ Node — so check this first.)
29
+ - **Fix:** Install Node 22 LTS from <https://nodejs.org> (or `nvm install 22 && nvm use 22`).
30
+ Re-run the Check.
31
+
32
+ ### 3. Hyperframes + the render toolchain ← the important one
33
+ Hyperframes is the render engine (Iris drives it via `npx hyperframes preview` /
34
+ `render`). There is **no manual install** — `npx` auto-fetches the published
35
+ `hyperframes` package on first run. It ships its own dependency checker; use it
36
+ as the authoritative check for the whole render toolchain:
37
+
38
+ - **Check:** `npx --yes hyperframes doctor`
39
+ - **Pass:** read the `✓ / ✗` lines it prints. You want `✓` on **FFmpeg**,
40
+ **FFprobe**, and **Chrome** (the three render-critical deps), plus Node and
41
+ adequate Disk/Memory.
42
+ > ⚠️ **`doctor` exits 0 even when a check fails.** Do NOT trust the exit code —
43
+ > judge by the `✗` markers in the output. Surface any `✗` line verbatim.
44
+ - **Fix**, per failing line:
45
+ - **FFmpeg / FFprobe ✗** → macOS `brew install ffmpeg` (ships both); Debian/Ubuntu
46
+ `sudo apt install ffmpeg`; Windows `winget install Gyan.FFmpeg`. Required for the
47
+ render → `.mp4`/`.mov`/`.webm` mux and all audio. Re-run `doctor`.
48
+ - **Chrome ✗** → `npx --yes hyperframes browser install` (Hyperframes renders by
49
+ driving headless Chrome). Re-run `doctor`.
50
+ - **Low Memory / Disk ⚠** → renders may fail or run slowly; have the creator free
51
+ resources. Not a hard blocker.
52
+ - **`npx hyperframes` errors entirely** → confirm step 2 passed and the first run
53
+ can reach the npm registry (a corporate proxy may need `npm config set proxy`).
54
+
55
+ ---
56
+
57
+ ## Optional — enhances the workflow, not required to render
58
+
59
+ ### 5. Whisper (transcription)
60
+ - **Check:** `whisper-cli --help 2>/dev/null || whisper-cpp --help 2>/dev/null || echo MISSING`
61
+ - **Pass:** either binary responds. (Only needed if the creator will drop raw
62
+ recordings into `projects/<name>/media/` for auto-transcription.)
63
+ - **Fix:** macOS `brew install whisper-cpp`; otherwise build whisper.cpp from
64
+ <https://github.com/ggerganov/whisper.cpp>. Safe to skip until the first recording.
65
+
66
+ ### 6. Paradigm learning loop (cross-session memory)
67
+ - **Check:** `ls ~/.paradigm/notebooks/quill ~/.paradigm/notebooks/lux ~/.paradigm/notebooks/iris 2>/dev/null || echo MISSING`
68
+ - **Pass:** all three notebook dirs exist → the team accumulates learning across
69
+ sessions. If MISSING, the agents still work fully from their workspace shims;
70
+ they just don't persist learning between sessions.
71
+ - **Fix:** Install the Paradigm plugin and the Atelier personas (Quill / Lux /
72
+ Iris) into `~/.paradigm/`. This is optional — only set it up if the creator
73
+ wants the agents to get smarter over time. Don't block setup on it.
74
+
75
+ ---
76
+
77
+ ## Workspace verification — is THIS workspace intact?
78
+
79
+ ### 7. Scaffold integrity
80
+ - **Check:** confirm these exist (use `Glob`/`ls`):
81
+ `workspace.atelier`, `_brand/`, `_packs/`, `projects/`,
82
+ `.claude/agents/atelier-quill.md`, `atelier-lux.md`, `atelier-iris.md`,
83
+ `.paradigm/personas/_shared/cascade-merge.md`, `CLAUDE.md`.
84
+ - **Pass:** all present.
85
+ - **Fix:** re-run `atelier workspace` in this folder — it's idempotent and
86
+ refreshes scaffold files without touching authored brand artifacts.
87
+
88
+ ### 8. Brand artifacts authored (not placeholders)
89
+ - **Check:** read `_brand/DESIGN.md`, `_brand/SCRIPT.md`, `_brand/STORYBOARD.md`
90
+ and `_brand/.atelier-brand.yaml`; look for remaining `TODO` markers or template
91
+ placeholder text.
92
+ - **Pass:** the brand reflects the creator's real palette / typography / voice.
93
+ - **Fix:** offer to have **@atelier-quill** (voice + design) and **@atelier-lux**
94
+ (visual patterns) interview the creator and fill these in. Placeholders are not
95
+ a hard failure — flag them and move on.
96
+
97
+ ### 9. Fonts staged (if the brand uses custom fonts)
98
+ - **Check:** if `_brand/.atelier-brand.yaml` names non-system fonts, confirm the
99
+ files exist under `_assets/fonts/<family>/`.
100
+ - **Pass:** every named custom font is present locally.
101
+ - **Fix:** stage the font files into `_assets/fonts/<family>/`. This is the
102
+ font-staging pattern — Hyperframes' render step does NOT reliably load web-CDN
103
+ fonts, so brand fonts must be local or renders fall back to a generic sans.
104
+
105
+ ---
106
+
107
+ ## Report
108
+
109
+ Summarize like this, then state the single next action:
110
+
111
+ ```
112
+ Atelier setup check
113
+ ✓ Node.js 22+ v22.x
114
+ ✓ Hyperframes 0.6.x (npx)
115
+ ✓ ffmpeg present
116
+ – Whisper not installed (optional — needed for transcription)
117
+ – Paradigm learning loop not installed (optional)
118
+ ✓ Workspace scaffold intact
119
+ ⚠ Brand artifacts still has TODO placeholders
120
+ ✓ Fonts n/a (system fonts only)
121
+
122
+ Next: your brand still has placeholders — want @atelier-quill to draft your
123
+ voice + @atelier-lux your visual patterns? Or jump straight to a first project.
124
+ ```
125
+
126
+ Use ✓ pass, ✗ required-and-failing (must fix before render), ⚠ works-but-attention,
127
+ – optional-and-absent.
@@ -0,0 +1,34 @@
1
+ # {{WORKSPACE_NAME}} — structured brand overlay
2
+ #
3
+ # Agents read this for fields the markdown doesn't structure cleanly.
4
+ # DESIGN.md / SCRIPT.md / STORYBOARD.md are the source of truth for prose;
5
+ # this overlay captures the things agents query as data (palette, fonts,
6
+ # whitelists, etc).
7
+ #
8
+ # Cascade: project-tier `projects/<name>/.atelier-overlay.yaml` extends this
9
+ # per `.paradigm/personas/_shared/cascade-merge.md` (lists extend, scalars
10
+ # override, maps override-at-key).
11
+
12
+ name: "{{WORKSPACE_NAME}}"
13
+
14
+ voice:
15
+ register: TODO # one short phrase, e.g. clinical-editorial
16
+ tone: TODO # e.g. confident-not-cocky
17
+ exemplars: [] # quill mirrors these tonally
18
+ do: [] # tonal moves to make
19
+ dont: [] # tonal moves to never make
20
+
21
+ visual:
22
+ primary_palette: [paper, ink, accent]
23
+ typography:
24
+ display: Inter
25
+ body: Inter
26
+ treatment:
27
+ photos: TODO # e.g. high-key, generous negative space
28
+ motion: TODO # e.g. gentle ease-out, never bounce
29
+ aspect: 9:16 # default canvas aspect (1080:1920); override per project
30
+
31
+ techniques_whitelist:
32
+ - TODO
33
+ techniques_blacklist:
34
+ - TODO
@@ -0,0 +1,56 @@
1
+ # {{WORKSPACE_NAME}} — Brand Design
2
+
3
+ > **Workspace-tier brand design.** This file describes the durable visual + tonal
4
+ > brand identity for **every** project under this workspace. Project-tier
5
+ > `projects/<name>/DESIGN.md` overrides + extends per the cascade rules
6
+ > (`.paradigm/personas/_shared/cascade-merge.md`).
7
+
8
+ ## Audience
9
+
10
+ <!-- Who is this brand FOR? Specifics, not generics. Replace this placeholder. -->
11
+ TODO — who watches / reads / interacts with this brand?
12
+
13
+ ## Voice register
14
+
15
+ <!-- The tonal posture. One short paragraph. Examples: "clinical-editorial,
16
+ confident-not-cocky" / "warm-conversational, never preachy" / etc. -->
17
+ TODO — describe the voice register.
18
+
19
+ ## Visual register
20
+
21
+ <!-- The visual posture. One short paragraph. Examples: "editorial generosity,
22
+ restrained palette, type-led" / "kinetic-bold with primary-color blocks" -->
23
+ TODO — describe the visual register.
24
+
25
+ ## Palette
26
+
27
+ <!-- Brand colors with semantic roles. Hex values. Lux reads these to make
28
+ palette decisions; Iris emits these as `--brand-palette-<role>` CSS vars
29
+ in every Hyperframes scaffold. -->
30
+ - `paper` — `#FFFFFF` — primary background
31
+ - `ink` — `#000000` — primary foreground / text
32
+ - `accent` — `#FF6B35` — single accent color used sparingly
33
+
34
+ ## Typography
35
+
36
+ <!-- Brand fonts with usage. Lux reads these for typography staging; Iris emits
37
+ these as `--brand-font-<usage>` CSS vars. Use Hyperframes-compatible
38
+ fonts when possible (see https://hyperframes.mintlify.app/docs/fonts). -->
39
+ - `display` — Inter — large headlines, hero copy
40
+ - `body` — Inter — captions, body text, secondary copy
41
+
42
+ ## Constraints
43
+
44
+ <!-- Hard rules. Lux and Iris MUST respect these. Examples:
45
+ - never use stock photography
46
+ - aspect is portrait 9:16 unless explicitly requested otherwise
47
+ - no exclamation marks in any on-screen copy -->
48
+ - TODO — list the brand hard rules.
49
+
50
+ ## Success criteria
51
+
52
+ <!-- How do we know a finished video is "on brand"? Specific signals creator
53
+ uses to evaluate output. Examples:
54
+ - viewer can identify the brand from the first 1.5s without a logo
55
+ - palette restraint never exceeds 3 hues per frame -->
56
+ - TODO — list signals of brand-correct output.
@@ -0,0 +1,41 @@
1
+ # {{WORKSPACE_NAME}} — Brand Voice
2
+
3
+ > **Workspace-tier voice exemplars + do/don't.** Quill reads this as the
4
+ > default voice for every project. Project-tier `projects/<name>/SCRIPT.md`
5
+ > overrides + extends per the cascade rules.
6
+
7
+ ## Voice exemplars
8
+
9
+ <!-- Real phrases that exemplify the brand voice. Quill mirrors these tonally
10
+ when drafting. Concrete > abstract. Three to five is enough.
11
+ Replace these placeholders with actual brand-voice samples. -->
12
+ - TODO — exemplar 1 (real phrase the brand would say)
13
+ - TODO — exemplar 2
14
+ - TODO — exemplar 3
15
+
16
+ ## Do
17
+
18
+ <!-- Tonal moves the brand SHOULD make. -->
19
+ - TODO — e.g. "lead with the metric, not the brag"
20
+ - TODO — e.g. "end on the actionable beat, not the inspirational one"
21
+
22
+ ## Don't
23
+
24
+ <!-- Tonal moves the brand should NEVER make. -->
25
+ - TODO — e.g. "no exclamation marks"
26
+ - TODO — e.g. "no hype adjectives (amazing, incredible, game-changing)"
27
+
28
+ ## Default structure
29
+
30
+ <!-- The brand's default short-form structure. Quill uses this unless overridden.
31
+ Default is hook → story → proof → CTA — replace if the brand prefers
32
+ a different shape. -->
33
+ - hook
34
+ - story
35
+ - proof
36
+ - CTA
37
+
38
+ ## Sign-off
39
+
40
+ <!-- The brand's canonical closing beat / tagline / sign-off. Optional. -->
41
+ TODO — closing beat if the brand has one (otherwise delete this section).
@@ -0,0 +1,33 @@
1
+ # {{WORKSPACE_NAME}} — Brand Storyboard Patterns
2
+
3
+ > **Workspace-tier visual patterns.** Lux reads this for recurring storyboard
4
+ > primitives the brand favors. Project-tier `projects/<name>/STORYBOARD.md`
5
+ > overrides + extends per the cascade rules.
6
+
7
+ ## Signature transitions
8
+
9
+ <!-- Named transitions the brand uses. Lux selects from this whitelist when
10
+ deciding scene-to-scene transitions. Each entry: name + when-to-use. -->
11
+ - TODO — e.g. "hard-cut: between distinct beats"
12
+ - TODO — e.g. "fade-under-vo: when voiceover continues across visual change"
13
+
14
+ ## Recurring frames
15
+
16
+ <!-- Named frames the brand uses across episodes (intro shells, outro shells,
17
+ hero compositions). Lux references these by name in project storyboards
18
+ instead of redescribing each time. -->
19
+ - TODO — e.g. "swiss-grid-3up: 3-column comparison hero"
20
+ - TODO — e.g. "ken-burns-restrained: photographic still with gentle zoom"
21
+
22
+ ## Technique whitelist
23
+
24
+ <!-- Visual techniques the brand allows. Lux picks from this list. -->
25
+ - TODO — e.g. swiss-grid
26
+ - TODO — e.g. ken-burns-restrained
27
+ - TODO — e.g. fade-under-vo
28
+
29
+ ## Technique blacklist
30
+
31
+ <!-- Visual techniques the brand never uses (overrides any whitelist). -->
32
+ - TODO — e.g. glitch
33
+ - TODO — e.g. kinetic-typography-heavy
@@ -0,0 +1,54 @@
1
+ # Asset Packs
2
+
3
+ Asset packs are **folders + sidecars**. Each subdirectory here is a pack.
4
+ Anywhere else on disk works too — register external folders via:
5
+
6
+ ```sh
7
+ atelier pack register ~/Dropbox/Shared/CompanyBrand
8
+ ```
9
+
10
+ (`atelier pack register` ships in a later release. For now, register by
11
+ editing `workspace.atelier`'s `packs.external` list.)
12
+
13
+ ## Pack structure
14
+
15
+ ```
16
+ _packs/<pack-name>/
17
+ ├── .atelier-pack.yaml # required — sidecar describes what/when/how
18
+ ├── logos/ # category folders (yours to name)
19
+ ├── photos/
20
+ ├── transitions/
21
+ └── ...
22
+ ```
23
+
24
+ ## Sidecar shape
25
+
26
+ See `.paradigm/personas/lux/skills/walk-asset-packs.md` for the canonical
27
+ schema. Quick reference:
28
+
29
+ ```yaml
30
+ name: swiss-grid
31
+ owner: you
32
+ vibe: editorial, clinical, generous whitespace
33
+ categories:
34
+ logos:
35
+ when: full-screen reveals, watermarks
36
+ when_not: inline with body copy
37
+ treatment: monochrome on photos; full color on solid paper
38
+ restrictions:
39
+ - never combine logos/ with grids/ in same frame
40
+ ```
41
+
42
+ ## Who reads packs
43
+
44
+ - **Lux** (Cinematographer) walks `_packs/*/` to resolve asset slots when
45
+ storyboarding. Cites pack-relative paths or category descriptors in
46
+ STORYBOARD.md.
47
+ - **Iris** (Composer) symlinks the cited pack assets into
48
+ `projects/<name>/assets/` at scaffold time.
49
+
50
+ ## What NOT to put here
51
+
52
+ - Bytes you want to share publicly — packs are local-first (`TD-2026-05-26-271`)
53
+ - Generated outputs — those live in `projects/<name>/out/`
54
+ - Per-project raw recordings — those live in `projects/<name>/media/`
@@ -0,0 +1,49 @@
1
+ # Projects
2
+
3
+ Each subdirectory here is one **output series** — typically one video or a
4
+ small batch of related variants (teaser-15s / trailer-30s / full-spot-60s
5
+ sharing the same beat).
6
+
7
+ ## Project structure
8
+
9
+ ```
10
+ projects/<name>/
11
+ ├── DESIGN.md # project overrides to workspace _brand/DESIGN.md
12
+ ├── SCRIPT.md # this project's actual script
13
+ ├── STORYBOARD.md # this project's shot list
14
+ ├── .atelier-overlay.yaml # optional — structured overrides to brand .yaml
15
+ ├── media/ # raw recordings for this project
16
+ ├── transcripts/ # auto-generated from media/
17
+ ├── _packs/ # optional — project-only packs (rare)
18
+ └── (Iris emits these as needed)
19
+ ├── index.html # Hyperframes composition
20
+ ├── assets/ # symlinks into media/ + _packs/
21
+ └── out/ # final renders
22
+ ```
23
+
24
+ ## Creating a project
25
+
26
+ Ask Quill in a Claude Code session:
27
+
28
+ > @atelier-quill draft a 15s teaser for `<project-name>`
29
+
30
+ Quill will scaffold `projects/<name>/` with starter DESIGN.md / SCRIPT.md /
31
+ STORYBOARD.md that inherit the workspace `_brand/` voice + visual register
32
+ via the cascade rules.
33
+
34
+ ## Cascade rules (TL;DR)
35
+
36
+ When agents work in `projects/<name>/`, the **effective brand** they read is
37
+ `_brand/<file>` (workspace) overlaid with `projects/<name>/<file>`:
38
+
39
+ - **Strings** → project overrides workspace
40
+ - **Lists** → project extends workspace (additive)
41
+ - **Map bindings** → project overrides at the key, leaves siblings intact
42
+
43
+ Full rules: `.paradigm/personas/_shared/cascade-merge.md`.
44
+
45
+ ## What NOT to put here
46
+
47
+ - Brand-level rules (those go in `_brand/` — agents will prompt promotion when
48
+ they see something repeat across projects)
49
+ - Pack bytes (those go in `_packs/<pack-name>/` or external pack folders)
@@ -0,0 +1,22 @@
1
+ # Atelier v2 workspace manifest.
2
+ # Created by `atelier workspace`. Edit fields freely.
3
+ #
4
+ # A workspace is a brand container. It holds:
5
+ # - _brand/ brand artifacts (DESIGN/SCRIPT/STORYBOARD + .atelier-brand.yaml)
6
+ # inherited by every project
7
+ # - _packs/ asset packs (folders with .atelier-pack.yaml sidecars)
8
+ # visible to every project
9
+ # - projects/ output series (each a self-contained brief + Hyperframes scaffold)
10
+ #
11
+ # Agents (Quill / Lux / Iris) read the workspace from cwd. There is no
12
+ # `.atelier/active.yaml` in v2 — explicit project arg or cwd determines scope.
13
+
14
+ version: 2.0.0
15
+ name: "{{WORKSPACE_NAME}}"
16
+ created: "{{ISO_DATE}}"
17
+
18
+ # External pack pointers — register folders anywhere on disk so agents can
19
+ # resolve them under `_packs/<pack>/`. Add via `atelier pack register <dir>`.
20
+ # (`atelier pack register` ships in a later release; for now edit by hand.)
21
+ packs:
22
+ external: []
@@ -1,5 +1,5 @@
1
1
  version: '1.0'
2
- generatedAt: '2026-05-22T18:49:49.832Z'
2
+ generatedAt: '2026-05-28T18:57:39.967Z'
3
3
  totalContent: 53
4
4
  entries:
5
5
  - id: N-atel-001-first-render