@bitmagic/cli 0.1.65-dev.2 → 0.1.65-dev.20

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 (69) hide show
  1. package/README.md +137 -14
  2. package/assets/skills/trailer-craft.md +180 -0
  3. package/dist/assets/materials.d.ts +9 -0
  4. package/dist/assets/materials.js +10 -2
  5. package/dist/assets/materials.js.map +1 -1
  6. package/dist/cli.d.ts +9 -0
  7. package/dist/cli.js +2 -0
  8. package/dist/cli.js.map +1 -1
  9. package/dist/commands/character.d.ts +18 -0
  10. package/dist/commands/character.js +268 -0
  11. package/dist/commands/character.js.map +1 -0
  12. package/dist/commands/forge.d.ts +15 -0
  13. package/dist/commands/forge.js +143 -38
  14. package/dist/commands/forge.js.map +1 -1
  15. package/dist/commands/generate.d.ts +31 -13
  16. package/dist/commands/generate.js +48 -56
  17. package/dist/commands/generate.js.map +1 -1
  18. package/dist/commands/trailer.js +1 -1
  19. package/dist/commands/trailer.js.map +1 -1
  20. package/dist/editor/animation-preview-page.js +43 -1
  21. package/dist/editor/animation-preview-page.js.map +1 -1
  22. package/dist/editor/asset-detail-panel.d.ts +2 -2
  23. package/dist/editor/asset-detail-panel.js +21 -0
  24. package/dist/editor/asset-detail-panel.js.map +1 -1
  25. package/dist/editor/asset-viewer.js +31 -8
  26. package/dist/editor/asset-viewer.js.map +1 -1
  27. package/dist/editor/shell-page.js +63 -1
  28. package/dist/editor/shell-page.js.map +1 -1
  29. package/dist/forge/edit-target.d.ts +30 -0
  30. package/dist/forge/edit-target.js +88 -0
  31. package/dist/forge/edit-target.js.map +1 -0
  32. package/dist/forge/prune-store.d.ts +46 -0
  33. package/dist/forge/prune-store.js +86 -0
  34. package/dist/forge/prune-store.js.map +1 -0
  35. package/dist/forge/remote-store.d.ts +36 -0
  36. package/dist/forge/remote-store.js +113 -0
  37. package/dist/forge/remote-store.js.map +1 -0
  38. package/dist/forge/run-pipeline.js +5 -1
  39. package/dist/forge/run-pipeline.js.map +1 -1
  40. package/dist/forge/stream.d.ts +5 -1
  41. package/dist/forge/stream.js +4 -0
  42. package/dist/forge/stream.js.map +1 -1
  43. package/dist/generate/character-body.d.ts +79 -0
  44. package/dist/generate/character-body.js +100 -0
  45. package/dist/generate/character-body.js.map +1 -0
  46. package/dist/mobile/asset-hosts.d.ts +7 -9
  47. package/dist/mobile/asset-hosts.js +7 -16
  48. package/dist/mobile/asset-hosts.js.map +1 -1
  49. package/dist/project/character-search.d.ts +30 -0
  50. package/dist/project/character-search.js +82 -0
  51. package/dist/project/character-search.js.map +1 -0
  52. package/dist/scaffold/asset-pipeline-skill-files.d.ts +38 -0
  53. package/dist/scaffold/asset-pipeline-skill-files.js +202 -0
  54. package/dist/scaffold/asset-pipeline-skill-files.js.map +1 -0
  55. package/dist/scaffold/blender-level-skill-files.js +3 -2
  56. package/dist/scaffold/blender-level-skill-files.js.map +1 -1
  57. package/dist/scaffold/project-files.js +16 -12
  58. package/dist/scaffold/project-files.js.map +1 -1
  59. package/dist/scaffold/project.js +4 -1
  60. package/dist/scaffold/project.js.map +1 -1
  61. package/dist/scaffold/skill-files.d.ts +32 -5
  62. package/dist/scaffold/skill-files.js +102 -63
  63. package/dist/scaffold/skill-files.js.map +1 -1
  64. package/dist/telemetry/creator-prompt.d.ts +18 -2
  65. package/dist/telemetry/creator-prompt.js +24 -3
  66. package/dist/telemetry/creator-prompt.js.map +1 -1
  67. package/dist/telemetry/report.js +31 -16
  68. package/dist/telemetry/report.js.map +1 -1
  69. package/package.json +4 -4
@@ -3,7 +3,8 @@ import * as path from 'path';
3
3
  import { CliError } from '../errors.js';
4
4
  import { aliasSourceDir } from './aliases.js';
5
5
  import { renderPackageJson, renderTsconfig, renderIndexHtml, renderViteConfig, renderVitePublishConfig, renderVitePublishStandaloneConfig, renderGitignore, renderBitmagicJson, renderAgentsMd, renderGameDesignMd, renderClaudeMd, renderJudgeSkill, renderThemingSkill, renderGenerateSkill, renderPlanningSkill, renderEngineApiSkill, renderUsageSkill, } from './project-files.js';
6
- import { renderCreatorCollaborationSkill, renderPublishingSkill, renderKiroSteering, renderSkillsReadme, renderTrailerSkill, } from './skill-files.js';
6
+ import { renderCreatorCollaborationSkill, renderPublishingSkill, renderKiroSteering, renderSkillsReadme, renderTrailerSkill, renderTrailerCraftReference, } from './skill-files.js';
7
+ import { renderAssetPipelinesSkill } from './asset-pipeline-skill-files.js';
7
8
  import { renderUnityLevelsSkill, renderUnityLevelsTrapsReference, renderUnityLevelsFbxReference, renderUnityLevelsPhysicsReference, renderUnityLevelsVerificationReference, } from './unity-skill-files.js';
8
9
  import { renderBlenderLevelsSkill, renderBlenderConventionsReference, renderBlenderAuditsReference, renderBlenderPassesReference, renderBlenderEngineHandoffReference, } from './blender-level-skill-files.js';
9
10
  import { ALWAYS_AGENTS, dedupeAgents, skillDirsFor } from './agent-targets.js';
@@ -163,12 +164,14 @@ export function writeProjectFile(root, relativePath, contents) {
163
164
  export const SHIPPED_SKILLS = [
164
165
  ['README.md', renderSkillsReadme],
165
166
  ['generating-assets/SKILL.md', renderGenerateSkill],
167
+ ['choosing-asset-pipelines/SKILL.md', renderAssetPipelinesSkill],
166
168
  ['planning-a-game/SKILL.md', renderPlanningSkill],
167
169
  ['finding-engine-apis/SKILL.md', renderEngineApiSkill],
168
170
  ['checking-usage/SKILL.md', renderUsageSkill],
169
171
  ['judging-quality/SKILL.md', renderJudgeSkill],
170
172
  ['theming-the-hud/SKILL.md', renderThemingSkill],
171
173
  ['making-a-trailer/SKILL.md', renderTrailerSkill],
174
+ ['making-a-trailer/references/trailer-craft.md', renderTrailerCraftReference],
172
175
  ['publishing-a-game/SKILL.md', renderPublishingSkill],
173
176
  ['working-with-the-creator/SKILL.md', renderCreatorCollaborationSkill],
174
177
  ['converting-unity-levels/SKILL.md', renderUnityLevelsSkill],
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/scaffold/project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/scaffold/project.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,14 @@
11
11
  * `project-files.test.ts` enforces the frontmatter (name == directory) and that AGENTS.md names
12
12
  * every shipped skill. The same template-literal rule applies: the markdown is full of backticks,
13
13
  * so every one inside is escaped as \` and the test checks the rendered output.
14
+ *
15
+ * One renderer here breaks the template-literal rule on purpose: `renderTrailerCraftReference`
16
+ * reads `assets/skills/trailer-craft.md`, because that file is the SOURCE OF TRUTH for trailer
17
+ * craft in two places at once — the skill scaffolded into a creator's project, and the monorepo's
18
+ * own `make-trailer` skill, which symlinks to the same file. Craft is the half of trailer guidance
19
+ * that is not about commands, so both readers need all of it and neither owns it; a second copy
20
+ * would drift the moment either was edited, and the drift is silent (both files still look like
21
+ * guidance). A shipped asset is the only shape that lets a symlink do the sharing.
14
22
  */
15
23
  import type { SkillRenderContext } from './project-files.js';
16
24
  /**
@@ -40,13 +48,32 @@ export declare function renderSkillsReadme({ skillsDir, skillDirs }: SkillRender
40
48
  * `<skills dir>/making-a-trailer/SKILL.md` — the whole trailer flow, and the craft that makes a
41
49
  * cut watchable.
42
50
  *
43
- * Two kinds of knowledge live here on purpose. The FLOW (record → make → look → publish) is plain
44
- * command routing an agent could read off \`--help\`. The CRAFT — ordering, pacing, the five variety
45
- * axes, the selection rules the repo's own trailer reviews paid for — is not derivable from any
46
- * command, and without it the agent's "tuning" is random. The tuning table at the end is the part
47
- * the creator actually experiences: a prompt in, a shots.json edit out, one command to see it.
51
+ * Two kinds of knowledge live here on purpose, and they are split across two files. The FLOW
52
+ * (record → make → look → publish) is plain command routing an agent could read off \`--help\`,
53
+ * and it is what SKILL.md carries. The CRAFT — ordering, pacing, the five variety axes, the
54
+ * selection rules earlier trailer reviews paid for — is not derivable from any command, and
55
+ * without it the agent's "tuning" is random; it lives in \`references/trailer-craft.md\`
56
+ * (\`renderTrailerCraftReference\`) because it is longer than the flow and read once per trailer
57
+ * rather than once per command. The tuning table at the end is the part the creator actually
58
+ * experiences: a prompt in, a shots.json edit out, one command to see it.
48
59
  */
49
60
  export declare function renderTrailerSkill(): string;
61
+ /**
62
+ * `<skills dir>/making-a-trailer/references/trailer-craft.md` — the only shipped skill file that is
63
+ * read from disk rather than written as a template literal.
64
+ *
65
+ * It is a shipped asset (`assets/skills/`, listed in package.json's `files`) because two skills
66
+ * need the same bytes: this one, and the monorepo's own `.claude/skills/make-trailer/`, whose copy
67
+ * is a SYMLINK to the asset. Trailer craft is editing knowledge — it says nothing about the CLI, so
68
+ * neither reader owns it and neither can be given an abridgement without going stale against the
69
+ * other. The same reasoning as the repo's `.agents/skills -> ../.claude/skills` link: a link is not
70
+ * a copy, so there is nothing to keep in step and no check to forget to run.
71
+ *
72
+ * Resolved from this module's own location the way `defaultTitleFont` resolves the bundled font:
73
+ * `../../assets/` is the same hop from `src/scaffold/` and from `dist/scaffold/`, so it works run
74
+ * from source and from an installed package alike.
75
+ */
76
+ export declare function renderTrailerCraftReference(): string;
50
77
  /**
51
78
  * `<skills dir>/publishing-a-game/SKILL.md` — the whole ship-it path, and every way it refuses.
52
79
  *
@@ -11,7 +11,17 @@
11
11
  * `project-files.test.ts` enforces the frontmatter (name == directory) and that AGENTS.md names
12
12
  * every shipped skill. The same template-literal rule applies: the markdown is full of backticks,
13
13
  * so every one inside is escaped as \` and the test checks the rendered output.
14
+ *
15
+ * One renderer here breaks the template-literal rule on purpose: `renderTrailerCraftReference`
16
+ * reads `assets/skills/trailer-craft.md`, because that file is the SOURCE OF TRUTH for trailer
17
+ * craft in two places at once — the skill scaffolded into a creator's project, and the monorepo's
18
+ * own `make-trailer` skill, which symlinks to the same file. Craft is the half of trailer guidance
19
+ * that is not about commands, so both readers need all of it and neither owns it; a second copy
20
+ * would drift the moment either was edited, and the drift is silent (both files still look like
21
+ * guidance). A shipped asset is the only shape that lets a symlink do the sharing.
14
22
  */
23
+ import fs from 'node:fs';
24
+ import { fileURLToPath } from 'node:url';
15
25
  import { describeSkillsDir } from './agent-targets.js';
16
26
  /**
17
27
  * `.kiro/steering/bitmagic.md` — Kiro's startup instructions, and the only per-agent extra file
@@ -75,10 +85,10 @@ See \`AGENTS.md\` at the project root for the guidance an agent should read befo
75
85
  ${alsoWritten}
76
86
  ## Which of these are yours
77
87
 
78
- \`planning-a-game/\`, \`finding-engine-apis/\`, \`generating-assets/\`, \`checking-usage/\`,
79
- \`judging-quality/\`, \`theming-the-hud/\`, \`making-a-trailer/\`, \`publishing-a-game/\`,
80
- \`working-with-the-creator/\`, \`converting-unity-levels/\`, \`building-levels-in-blender/\` — and
81
- this README — are shipped by the Bitmagic CLI and **re-rendered by \`bitmagic upgrade\`**. They
88
+ \`planning-a-game/\`, \`finding-engine-apis/\`, \`generating-assets/\`, \`choosing-asset-pipelines/\`,
89
+ \`checking-usage/\`, \`judging-quality/\`, \`theming-the-hud/\`, \`making-a-trailer/\`,
90
+ \`publishing-a-game/\`, \`working-with-the-creator/\`, \`converting-unity-levels/\`,
91
+ \`building-levels-in-blender/\` — and this README — are shipped by the Bitmagic CLI and **re-rendered by \`bitmagic upgrade\`**. They
82
92
  describe what the CLI and the engine can do, so they have to stay current with both; edits to them
83
93
  are lost on the next upgrade.
84
94
 
@@ -87,6 +97,7 @@ are lost on the next upgrade.
87
97
  | \`planning-a-game/\` | starting a game, a genre, or anything touching more than one gameplay feature — scoping the first playable slice and writing \`mechanics-plan.md\` |
88
98
  | \`finding-engine-apis/\` | you need an engine API and do not know its name or signature, or \`bitmagic check\` cannot resolve a symbol |
89
99
  | \`generating-assets/\` | the game needs a skybox, a background, a custom block type, sound, music, image, character, animation or vehicle |
100
+ | \`choosing-asset-pipelines/\` | deciding HOW to make something — which command, skill, file or free built-in fits a level, character, prop, vehicle, weapon, sky, block, image, animation, audio or cutscene need, roughly what it costs in sparks and minutes, and when to ask the creator before an expensive one |
90
101
  | \`checking-usage/\` | asked what sparks were spent on, how much Pro allowance is left, or whether there is enough left to keep generating |
91
102
  | \`judging-quality/\` | a milestone is done and the game deserves an independent quality verdict — \`bitmagic judge\` |
92
103
  | \`theming-the-hud/\` | any ask about the game's LOOK — colors, fonts, rounder/sharper, outlines, glow, glossy, mobile-button styling |
@@ -105,11 +116,14 @@ in \`AGENTS.md\` — both are left alone.
105
116
  * `<skills dir>/making-a-trailer/SKILL.md` — the whole trailer flow, and the craft that makes a
106
117
  * cut watchable.
107
118
  *
108
- * Two kinds of knowledge live here on purpose. The FLOW (record → make → look → publish) is plain
109
- * command routing an agent could read off \`--help\`. The CRAFT — ordering, pacing, the five variety
110
- * axes, the selection rules the repo's own trailer reviews paid for — is not derivable from any
111
- * command, and without it the agent's "tuning" is random. The tuning table at the end is the part
112
- * the creator actually experiences: a prompt in, a shots.json edit out, one command to see it.
119
+ * Two kinds of knowledge live here on purpose, and they are split across two files. The FLOW
120
+ * (record → make → look → publish) is plain command routing an agent could read off \`--help\`,
121
+ * and it is what SKILL.md carries. The CRAFT — ordering, pacing, the five variety axes, the
122
+ * selection rules earlier trailer reviews paid for — is not derivable from any command, and
123
+ * without it the agent's "tuning" is random; it lives in \`references/trailer-craft.md\`
124
+ * (\`renderTrailerCraftReference\`) because it is longer than the flow and read once per trailer
125
+ * rather than once per command. The tuning table at the end is the part the creator actually
126
+ * experiences: a prompt in, a shots.json edit out, one command to see it.
113
127
  */
114
128
  export function renderTrailerSkill() {
115
129
  return `---
@@ -128,19 +142,43 @@ and running one command again.
128
142
 
129
143
  1. **Have \`bitmagic dev\` running** (it is the sink the recorder streams frames to, and the HUD
130
144
  replay for \`--ui\`). ffmpeg and Google Chrome must be installed; the commands say so if not.
131
- 2. **Record.** \`bitmagic trailer record --seconds 60\` opens Chrome on the dev view, waits for the
132
- creator to press Play, starts the recorder for them, stops after 60 s (or when they press F9),
133
- and prints the recording directory. Ask the creator to PLAY WELL — the trailer is only as good
134
- as the footage: overtakes, jumps, kills, close calls, a finish. \`--seconds\` is wall-clock; the
135
- recording counts FRAMES at 60 fps, and the game runs as fast as the machine encodes them — on a
136
- machine capturing at 30 fps, 60 s of play becomes 30 s of footage (the command reports both).
137
- After stop the frames are extracted from the capture; the command waits for that. Aim for
138
- footage of about 3x the trailer length: a 30 s trailer wants
139
- 90 s of footage, so \`--seconds 120\` or two sittings. Two sittings?
140
- \`bitmagic trailer merge <dirA> <dirB> --out <dir>\`.
141
- No human available: author \`trailer/flythrough.json\` (below) and
142
- \`bitmagic trailer record --flythrough trailer/flythrough.json\` records a camera path with
143
- nobody playing — scenery trailers, world reveals.
145
+ 2. **Record — played footage, a fly-through, or both.** Decide this BEFORE you ask anyone to play:
146
+
147
+ \`\`\`
148
+ bitmagic trailer record --seconds 60 # they play
149
+ bitmagic trailer record --flythrough trailer/flythrough.json # nobody plays
150
+ \`\`\`
151
+
152
+ **Played footage** is the bulk of any trailer — it is the only thing that shows what the game
153
+ does. \`record\` opens Chrome on the dev view, waits for the creator to press Play, starts the
154
+ recorder for them, stops after 60 s (or when they press F9), and prints the recording directory.
155
+ Ask them to PLAY WELL — the trailer is only as good as the footage: overtakes, jumps, kills,
156
+ close calls, a finish. \`--seconds\` is wall-clock; the recording counts FRAMES at 60 fps, and the
157
+ game runs as fast as the machine encodes them — on a machine capturing at 30 fps, 60 s of play
158
+ becomes 30 s of footage (the command reports both). After stop the frames are extracted from the
159
+ capture; the command waits for that. Aim for about 3x the trailer length: a 30 s trailer wants
160
+ 90 s of footage, so \`--seconds 120\` or two sittings.
161
+
162
+ **A fly-through needs nobody.** \`--flythrough\` clicks through the menu and Play itself, then
163
+ glides the camera along an authored path WHILE THE GAME RUNS — traffic drives, animations play,
164
+ physics ticks — and stops at the last marker. It is the whole trailer flow with no human in it,
165
+ so reach for it when the creator is not around, when you are working on your own, or when they
166
+ would rather not be filmed playing badly.
167
+
168
+ **Offer it even when there IS gameplay.** A chase camera almost never gives you the two shots
169
+ the craft doc asks for by name — a composed cold open and one calm wide breath before the end —
170
+ and a fly-through costs the creator nothing. Record a short one as well and join the two:
171
+
172
+ \`\`\`
173
+ bitmagic trailer merge <gameplay-dir> <flythrough-dir> --out <dir>
174
+ \`\`\`
175
+
176
+ \`merge\` is how two sittings become one cuttable recording, and it does not care how the
177
+ footage was made — only that the runs share a resolution and post-processing state. So the cut
178
+ can pull an establishing shot from the fly-through and everything else from play.
179
+ Tell the creator the offer in one line ("I can also fly a camera through the level for the
180
+ opening shot — you don't have to do anything"), and write the path yourself from the level you
181
+ built: \`world.json\` has the coordinates.
144
182
  3. **Make.** \`bitmagic trailer make --music-prompt "<style that fits the game>" --title "<name>"\`
145
183
  analyzes the recording, generates a music bed (sparks — say so to the creator; \`--music <file>\`
146
184
  uses their own track, \`--no-music\` skips it), writes a first cut to \`trailer/shots.json\`,
@@ -163,7 +201,7 @@ cut before delivering.
163
201
  | File | What it is |
164
202
  |---|---|
165
203
  | \`trailer/shots.json\` | **The cut.** Committed. Your edits live here; \`make\` re-cuts from it every run. |
166
- | \`trailer/flythrough.json\` | Optional camera path for a no-human recording. |
204
+ | \`trailer/flythrough.json\` | A camera path you author. Committed. Records with nobody playing — the whole trailer, or just the opening shot. |
167
205
  | \`.bitmagic/trailer/recordings/<name>/\` | A recording: \`<name>_%06d.png\` at 60 fps + \`timeline.json\` (events, sounds, HUD). |
168
206
  | \`.bitmagic/trailer/<name>/analysis.json\` | Scored highlight windows: \`startFrame\`, \`endFrame\`, \`score\`, event digests (\`"f3121 explosion i0.9"\`), \`sheet\`. |
169
207
  | \`.bitmagic/trailer/<name>/sheets/\` | Contact sheets, one per window — read these. |
@@ -200,46 +238,26 @@ seconds or \`"last-clip"\` for the end card. \`bitmagic trailer cut\` turns this
200
238
 
201
239
  Positions are world units (\`engine/agent-docs/coordinate-system.md\`); \`timestamp\` is seconds,
202
240
  ascending from 0; \`lookAt\` (or an Euler \`rotation\`) per marker. The camera glides through the
203
- markers and the recording stops at the last one.
204
-
205
- ## Craft — read before touching the cut
206
-
207
- **Order: Genre → Hook → Anchors → Content.** The first 1–2 shots must say what kind of game this
208
- is. The hook — the thing only this game has — lands inside the first third. The middle holds the
209
- anchors people expect from the genre; breadth (levels, modes) comes last.
210
-
211
- **Skeleton first, footage last.** Cold open → introduction → escalation → climax → one breath →
212
- end card. Reserve the end card (2–3 s, one card) before anything else, then find the ONE clip
213
- that proves each beat — not "fifteen great clips", which drifts toward sameness.
214
-
215
- **Pacing.** Shots run 1.5–3 s for arcade action, with a few longer holds where one continuous
216
- action is the payoff. Vary lengths (2, 3, 4, 6 beats); do not cut on every beat — let a musical
217
- hit land on an in-clip impact sometimes. Build to a peak, then a calmer wider shot, then build
218
- again. 30–45 s total. More cutting is not better editing: if one take shows the whole stunt,
219
- keep the take.
220
-
221
- **Variety, five axes** — audit the labels in shots.json top to bottom, repetition shows in text
222
- before you ever re-watch: content (different actions, escalate rather than repeat), composition
223
- (camera distance and framing), energy (intense vs quiet), pacing (section tempo), shot length.
224
- **Rule of three**: never more than three similar things in a row, and max three of any shot
225
- type in the whole cut.
226
-
227
- **Text.** End card only, unless the footage cannot say it. ≤ 6 words, evocative verbs, sounds
228
- like this game and no other. Banned: quantities ("5 unique levels"), genre stacks, verb lists
229
- ("Race! Drift! Win!"), stock phrases ("Get ready…", "…like never before"). Cards get their own
230
- beat — never over action.
231
-
232
- ## Selection rules this project already paid for
233
-
234
- - **Never slow motion.** On gameplay footage it reads as a low framerate. \`speed\` is 1.0.
235
- - **Numbers are not interest.** A high \`impactSpeed\` is often a car dead against a wall — the
236
- worst clip. A crash earns its slot only if things visibly break and motion continues.
237
- - **Low speed can BE the drama.** Wheelspin recoveries, plowing back onto the track, being
238
- overtaken while struggling — often the best clips, and they score near zero.
239
- - **"Some shots of X" means a few.** One standing start is an opener; five is a broken trailer.
240
- - **Menu and selection screens need \`"ui": false\`** — the HUD replay paints the race HUD over them.
241
- - **Verify on pixels.** Sheets and stills, every candidate. Then render — iterating is minutes and
242
- revisions are kept, so render rather than debate.
241
+ markers and the recording stops at the last one (600 s is the ceiling).
242
+
243
+ You write this file — take the coordinates from the level you built, in \`world.json\`. Aim the
244
+ first marker at whatever makes the game recognisable, keep the camera moving slowly and in one
245
+ direction per leg (a drifting push or a slow arc reads as deliberate; a whip-pan reads as a
246
+ mistake), and give each leg several seconds. Six markers over 20 s is plenty for the two or three
247
+ shots a cut will actually use — you are recording candidate footage, not the trailer.
248
+
249
+ ## Craft — read \`references/trailer-craft.md\` before touching the cut
250
+
251
+ Everything about WHICH moments and in what order lives in
252
+ \`references/trailer-craft.md\`, next to this file: the Genre → Hook → Anchors → Content ordering,
253
+ laying the timeline out as a skeleton before hunting footage, pacing and shot length, the five
254
+ variety axes, the rules for on-screen text, a section-by-section structure template, and the
255
+ selection rules earlier trailers already paid for (never slow motion; a high \`impactSpeed\` is
256
+ usually a car dead against a wall; low speed can BE the drama; menus need \`"ui": false\`).
257
+
258
+ Read it in full the first time you cut a trailer for this game. The tool finds candidate windows
259
+ and snaps cuts to the beat — it has no opinion about any of the above, so without that file your
260
+ "tuning" is random.
243
261
 
244
262
  ## Tuning from prompts
245
263
 
@@ -254,6 +272,8 @@ The creator talks; you edit \`trailer/shots.json\`, run \`bitmagic trailer make\
254
272
  | "show the menu / the map / the start" | add ONE shot from the recording's opening with \`"ui": false\` |
255
273
  | "put the title at the end" / "change the tagline" | \`titles: [{ "at": "last-clip", "text": "…", "sub": "…", "style": "card" }]\` |
256
274
  | "add a title at the start" | a \`title\`-style cue at \`at: 0\` for ~2.5 s, and make the first shot calm enough to read over |
275
+ | "show more of the world / the level", "a wider shot", "an establishing shot" | record a fly-through, \`merge\` it with the gameplay recording, and take the cold open (and the breath) from it |
276
+ | "I can't play right now", "you do it", nobody available | \`record --flythrough\` — it clicks Play itself and needs no one |
257
277
  | "different music", "more epic / chill" | \`--music-prompt\` with the new direction (spends sparks), or \`--music <file>\`; shots keep their beat counts and re-snap |
258
278
  | "no HUD" / "show the HUD" | drop or add \`--ui\` (per shot: \`"ui": false\`) |
259
279
  | "the HUD stutters" / "smoother HUD" | raise \`--ui-keyframe-rate\` on \`make\` or \`render\` (default 30/s; 0 = every change) |
@@ -265,6 +285,25 @@ Then: **quota check** the labels (rule of three, one standing start), render, ex
265
285
  from the changed region, compare with the previous \`-rN\`, deliver the URL.
266
286
  `;
267
287
  }
288
+ /**
289
+ * `<skills dir>/making-a-trailer/references/trailer-craft.md` — the only shipped skill file that is
290
+ * read from disk rather than written as a template literal.
291
+ *
292
+ * It is a shipped asset (`assets/skills/`, listed in package.json's `files`) because two skills
293
+ * need the same bytes: this one, and the monorepo's own `.claude/skills/make-trailer/`, whose copy
294
+ * is a SYMLINK to the asset. Trailer craft is editing knowledge — it says nothing about the CLI, so
295
+ * neither reader owns it and neither can be given an abridgement without going stale against the
296
+ * other. The same reasoning as the repo's `.agents/skills -> ../.claude/skills` link: a link is not
297
+ * a copy, so there is nothing to keep in step and no check to forget to run.
298
+ *
299
+ * Resolved from this module's own location the way `defaultTitleFont` resolves the bundled font:
300
+ * `../../assets/` is the same hop from `src/scaffold/` and from `dist/scaffold/`, so it works run
301
+ * from source and from an installed package alike.
302
+ */
303
+ export function renderTrailerCraftReference() {
304
+ const source = fileURLToPath(new URL('../../assets/skills/trailer-craft.md', import.meta.url));
305
+ return fs.readFileSync(source, 'utf-8');
306
+ }
268
307
  /**
269
308
  * `<skills dir>/publishing-a-game/SKILL.md` — the whole ship-it path, and every way it refuses.
270
309
  *
@@ -1 +1 @@
1
- {"version":3,"file":"skill-files.js","sourceRoot":"","sources":["../../src/scaffold/skill-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGvD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;;;;CAkBR,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAsB;IAC7E,2FAA2F;IAC3F,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;IAC7F,6FAA6F;IAC7F,0EAA0E;IAC1E,MAAM,WAAW,GACf,QAAQ,CAAC,MAAM,KAAK,CAAC;QACnB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,8FAA8F;YAC9F,mEAAmE;YACnE,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5C,iFAAiF,CAAC;IAExF,OAAO;;sBAEa,SAAS,SAAS,iBAAiB,CAAC,SAAS,CAAC;;;EAGlE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BZ,CAAC;AACF,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuJR,CAAC;AACF,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+HR,CAAC;AACF,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,+BAA+B;IAC7C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkER,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"skill-files.js","sourceRoot":"","sources":["../../src/scaffold/skill-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGvD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;;;;CAkBR,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAsB;IAC7E,2FAA2F;IAC3F,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;IAC7F,6FAA6F;IAC7F,0EAA0E;IAC1E,MAAM,WAAW,GACf,QAAQ,CAAC,MAAM,KAAK,CAAC;QACnB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,8FAA8F;YAC9F,mEAAmE;YACnE,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5C,iFAAiF,CAAC;IAExF,OAAO;;sBAEa,SAAS,SAAS,iBAAiB,CAAC,SAAS,CAAC;;;EAGlE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BZ,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6JR,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,2BAA2B;IACzC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,sCAAsC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/F,OAAO,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+HR,CAAC;AACF,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,+BAA+B;IAC7C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkER,CAAC;AACF,CAAC"}
@@ -40,8 +40,9 @@ export declare function creatorPromptField(override?: unknown): {
40
40
  /** `body` plus the creator's own words, when the flag was given and telemetry is on. */
41
41
  export declare function withParent(body: Record<string, unknown>): Record<string, unknown>;
42
42
  /**
43
- * The creator's ask as an opaque, stable dedupe key — what the command beacon sends so
44
- * api-server can count "prompts this game was built with" without ever being told the text.
43
+ * The creator's ask as an opaque, stable dedupe key — what a game's "Built with N prompts" is
44
+ * counted on, so the COUNT never depends on storing anybody's words. (The beacon also carries the
45
+ * words themselves in {@link creatorAskText}, for a channel that shows them and stores nothing.)
45
46
  *
46
47
  * The CLI is the ONLY producer of this value. api-server stores it and compares it to other
47
48
  * values from this same function; it never recomputes one from text, so the two sides cannot
@@ -56,3 +57,18 @@ export declare function withParent(body: Record<string, unknown>): Record<string
56
57
  * `--original-prompt` produces — the count is a floor, never an overcount.
57
58
  */
58
59
  export declare function creatorAskDigest(override?: unknown): string | undefined;
60
+ /**
61
+ * The creator's ask as TEXT, bounded for a wire that has a body limit.
62
+ *
63
+ * The beacon carries this so the live-prompts Slack channel can show what an
64
+ * agent is being asked for on the commands that send no prompt anywhere else —
65
+ * `build`, `verify`, `dev`, `reload`, `publish` — which are most of what
66
+ * building a GDK project consists of. api-server posts it and never stores it:
67
+ * the count still runs on {@link creatorAskDigest}, and no prompt text reaches
68
+ * Postgres.
69
+ *
70
+ * Capped by the same rule the digest hashes under, so the two always describe
71
+ * the same words. `DO_NOT_TRACK` drops it upstream in `beginCommand`, like
72
+ * every other field here.
73
+ */
74
+ export declare function creatorAskText(override?: unknown): string | undefined;
@@ -52,8 +52,9 @@ export function withParent(body) {
52
52
  return 'creatorPrompt' in field ? { ...body, ...field } : body;
53
53
  }
54
54
  /**
55
- * The creator's ask as an opaque, stable dedupe key — what the command beacon sends so
56
- * api-server can count "prompts this game was built with" without ever being told the text.
55
+ * The creator's ask as an opaque, stable dedupe key — what a game's "Built with N prompts" is
56
+ * counted on, so the COUNT never depends on storing anybody's words. (The beacon also carries the
57
+ * words themselves in {@link creatorAskText}, for a channel that shows them and stores nothing.)
57
58
  *
58
59
  * The CLI is the ONLY producer of this value. api-server stores it and compares it to other
59
60
  * values from this same function; it never recomputes one from text, so the two sides cannot
@@ -68,9 +69,29 @@ export function withParent(body) {
68
69
  * `--original-prompt` produces — the count is a floor, never an overcount.
69
70
  */
70
71
  export function creatorAskDigest(override) {
72
+ const text = creatorAskText(override);
73
+ if (text === undefined)
74
+ return undefined;
75
+ return createHash('sha256').update(text).digest('hex').slice(0, 16);
76
+ }
77
+ /**
78
+ * The creator's ask as TEXT, bounded for a wire that has a body limit.
79
+ *
80
+ * The beacon carries this so the live-prompts Slack channel can show what an
81
+ * agent is being asked for on the commands that send no prompt anywhere else —
82
+ * `build`, `verify`, `dev`, `reload`, `publish` — which are most of what
83
+ * building a GDK project consists of. api-server posts it and never stores it:
84
+ * the count still runs on {@link creatorAskDigest}, and no prompt text reaches
85
+ * Postgres.
86
+ *
87
+ * Capped by the same rule the digest hashes under, so the two always describe
88
+ * the same words. `DO_NOT_TRACK` drops it upstream in `beginCommand`, like
89
+ * every other field here.
90
+ */
91
+ export function creatorAskText(override) {
71
92
  const field = creatorPromptField(override);
72
93
  if (!('creatorPrompt' in field))
73
94
  return undefined;
74
- return createHash('sha256').update(field.creatorPrompt.slice(0, MAX_ASK_CHARS)).digest('hex').slice(0, 16);
95
+ return field.creatorPrompt.slice(0, MAX_ASK_CHARS);
75
96
  }
76
97
  //# sourceMappingURL=creator-prompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"creator-prompt.js","sourceRoot":"","sources":["../../src/telemetry/creator-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,sGAAsG;AACtG,MAAM,aAAa,GAAG,IAAI,CAAC;AAE3B,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,oFAAoF;UAC7F,iEAAiE;CAC7D,CAAC;AAEX;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAkB;IACnD,MAAM,KAAK,GAAG,QAAQ,IAAI,cAAc,EAAE,EAAE,aAAa,CAAC;IAC1D,oFAAoF;IACpF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACrG,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,UAAU,CAAC,IAA6B;IACtD,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;IACnC,gGAAgG;IAChG,8FAA8F;IAC9F,OAAO,eAAe,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACjE,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAkB;IACjD,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,CAAC,eAAe,IAAI,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAClD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7G,CAAC"}
1
+ {"version":3,"file":"creator-prompt.js","sourceRoot":"","sources":["../../src/telemetry/creator-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,sGAAsG;AACtG,MAAM,aAAa,GAAG,IAAI,CAAC;AAE3B,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,oFAAoF;UAC7F,iEAAiE;CAC7D,CAAC;AAEX;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAkB;IACnD,MAAM,KAAK,GAAG,QAAQ,IAAI,cAAc,EAAE,EAAE,aAAa,CAAC;IAC1D,oFAAoF;IACpF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACrG,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,UAAU,CAAC,IAA6B;IACtD,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;IACnC,gGAAgG;IAChG,8FAA8F;IAC9F,OAAO,eAAe,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACjE,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAkB;IACjD,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACzC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAAC,QAAkB;IAC/C,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,CAAC,eAAe,IAAI,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAClD,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;AACrD,CAAC"}
@@ -16,11 +16,19 @@
16
16
  * bounded to {@link REPORT_TIMEOUT_MS} per request so a finished command is
17
17
  * never held open by a sulking network (the same reasoning as
18
18
  * update/check.ts). It never prints.
19
- * 2. It sends categories, never messages: the command name, ok/failed, the
20
- * exit code, a `CliError.code`, and a duration. A message can name a path;
21
- * that does not belong in an analytics event. The two later additions keep
22
- * the rule: the project's game id is an id we minted, and the creator's ask
23
- * travels as an opaque DIGEST, never its words. See {@link CommandProvenance}.
19
+ * 2. Its ANALYTICS are categories, never messages: the command name, ok/failed,
20
+ * the exit code, a `CliError.code`, and a duration. A message can name a
21
+ * path; that does not belong in an analytics event. The game id keeps the
22
+ * rule (it is an id we minted) and so does the ask DIGEST (opaque by
23
+ * construction), and neither reaches GA4.
24
+ *
25
+ * `creatorPrompt` is the one field that carries words, and it is not
26
+ * analytics: api-server posts it to an internal Slack channel and stores it
27
+ * nowhere — not GA4, not Postgres, not BigQuery. It is here because the
28
+ * commands that send prompt text to a route are the generators, and an
29
+ * agent building a GDK project spends most of its commands on the offline
30
+ * ones. `DO_NOT_TRACK` drops it with everything else. See
31
+ * {@link CommandProvenance}.
24
32
  * 3. It is authenticated with the creator's own token, so the server can key
25
33
  * the event to the account and look up their real Pro state. No token, no
26
34
  * report — an anonymous beacon would be a spammable endpoint for nothing.
@@ -32,7 +40,7 @@ import { resolveAuth0ClientId } from '../config/environments.js';
32
40
  import { getAccessToken } from '../auth/session.js';
33
41
  import { readProjectGameIdOrNull } from '../project/context.js';
34
42
  import { apiServerHeaders } from './request-headers.js';
35
- import { creatorAskDigest } from './creator-prompt.js';
43
+ import { creatorAskDigest, creatorAskText } from './creator-prompt.js';
36
44
  import { currentCommand, isTelemetryDisabled } from './command-context.js';
37
45
  // Re-exported because this is where the opt-out is enforced for a report that is already
38
46
  // under way; `beginCommand` consults the same predicate to skip collecting anything at all.
@@ -85,21 +93,28 @@ function defaultDeps() {
85
93
  return { fetch: globalThis.fetch, env: process.env };
86
94
  }
87
95
  /**
88
- * The game and the ask, when this command has either. Both keys are omitted rather than sent as
89
- * null: api-server validates the body strictly, and an absent key is how "nothing to say" is
90
- * spelled everywhere else on this wire.
96
+ * The game and the ask, when this command has either. Keys are omitted rather than sent as null:
97
+ * api-server validates the body strictly, and an absent key is how "nothing to say" is spelled
98
+ * everywhere else on this wire.
99
+ *
100
+ * Nothing is present unless the command declared `--original-prompt` AND the agent passed it —
101
+ * `creatorAskDigest` reads the value `beginCommand` captured, which is also where `DO_NOT_TRACK`
102
+ * already dropped it.
91
103
  *
92
- * The digest is only ever present when the command declared `--original-prompt` AND the agent
93
- * passed it — `creatorAskDigest` reads the value `beginCommand` captured, which is also where
94
- * `DO_NOT_TRACK` already dropped it. The pair is only sent together: a digest with no game
95
- * cannot be counted, and a game with no digest is not an ask.
104
+ * `gameId` and `askDigest` are only sent TOGETHER: a digest with no game cannot be counted, and a
105
+ * game with no digest is not an ask. `creatorPrompt` is independent of that pair, because the
106
+ * channel it feeds wants the ask from a command run before a game exists just as much — the pair
107
+ * is about counting, and counting needs a game to count against.
96
108
  */
97
109
  function provenance(deps) {
98
- const askDigest = creatorAskDigest();
99
- if (askDigest === undefined)
110
+ const creatorPrompt = creatorAskText();
111
+ if (creatorPrompt === undefined)
100
112
  return {};
101
113
  const gameId = readProjectGameIdOrNull(deps.cwd);
102
- return gameId === undefined ? {} : { gameId, askDigest };
114
+ const askDigest = creatorAskDigest();
115
+ if (gameId === undefined || askDigest === undefined)
116
+ return { creatorPrompt };
117
+ return { creatorPrompt, gameId, askDigest };
103
118
  }
104
119
  /**
105
120
  * Report the running command's `report` to api-server. Resolves when the report
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/telemetry/report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EAAE,oBAAoB,EAAoB,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAuB,MAAM,sBAAsB,CAAC;AAEhG,yFAAyF;AACzF,4FAA4F;AAC5F,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAEtC,MAAM,CAAC,MAAM,eAAe,GAAG,oBAAoB,CAAC;AA2CpD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,MAAM,IAAI,GAAG,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,OAAO,SAAS,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACvE,CAAC;AAKD,qEAAqE;AACrE,SAAS,YAAY,CAAC,SAAkC;IACtD,OAAO,CAAC,KAAiB,EAAE,IAAgB,EAAE,EAAE,CAC7C,SAAS,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;AAClF,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,kBAAkB,CAC/B,WAAwB,EACxB,OAAuB,EACvB,IAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,MAAM,cAAc,CACzB,WAAW,EACX,QAAQ,EACR;YACE,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;YAC/B,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACtE,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,EACD,IAAI,CAAC,OAAO,CACb,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC;QACvC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,OAAO,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;IACrF,CAAC;AACH,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;AACvD,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,UAAU,CAAC,IAAgB;IAClC,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;IACrC,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjD,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC3D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAqB,EAAE,OAAmB,WAAW,EAAE;IAC9F,IAAI,CAAC;QACH,IAAI,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO;QAC1C,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;QACjC,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO;QAE7B,2EAA2E;QAC3E,2EAA2E;QAC3E,oCAAoC;QACpC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACxC,IAAI,WAAW,KAAK,IAAI;YAAE,OAAO;QAEjC,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACnE,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO;QAE3B,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,eAAe,EAAE,EAAE;YACxE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,GAAG,gBAAgB,EAAE;gBACrB,aAAa,EAAE,UAAU,KAAK,EAAE;gBAChC,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;SAChF,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,2EAA2E;QAC3E,kEAAkE;IACpE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/telemetry/report.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitmagic/cli",
3
- "version": "0.1.65-dev.2",
3
+ "version": "0.1.65-dev.20",
4
4
  "description": "Build Bitmagic games from your own agent tool",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Bitmagic Oy",
@@ -25,9 +25,9 @@
25
25
  "playwright-core": "^1.59.1",
26
26
  "tar": "^7.4.3",
27
27
  "ws": "^8.21.3",
28
- "@bitmagic/animation-forger": "0.1.20-dev.2",
29
- "@bitmagic/world-forger": "0.1.25-dev.2",
30
- "@bitmagic/asset-core": "0.2.20-dev.2"
28
+ "@bitmagic/animation-forger": "0.1.20-dev.20",
29
+ "@bitmagic/asset-core": "0.2.20-dev.20",
30
+ "@bitmagic/world-forger": "0.1.25-dev.20"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@eslint/js": "^9.38.0",