picopilot 0.2.0 → 0.3.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 (82) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +129 -36
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/audio.d.ts +23 -2
  5. package/dist/commands/audio.d.ts.map +1 -1
  6. package/dist/commands/audio.js +239 -26
  7. package/dist/commands/audio.js.map +1 -1
  8. package/dist/commands/doctor.d.ts.map +1 -1
  9. package/dist/commands/doctor.js +8 -3
  10. package/dist/commands/doctor.js.map +1 -1
  11. package/dist/commands/gfx.d.ts.map +1 -1
  12. package/dist/commands/gfx.js +11 -5
  13. package/dist/commands/gfx.js.map +1 -1
  14. package/dist/commands/music.d.ts +2 -1
  15. package/dist/commands/music.d.ts.map +1 -1
  16. package/dist/commands/music.js +209 -2
  17. package/dist/commands/music.js.map +1 -1
  18. package/dist/commands/pico8-env.d.ts +39 -3
  19. package/dist/commands/pico8-env.d.ts.map +1 -1
  20. package/dist/commands/pico8-env.js +51 -4
  21. package/dist/commands/pico8-env.js.map +1 -1
  22. package/dist/commands/run.d.ts.map +1 -1
  23. package/dist/commands/run.js +8 -2
  24. package/dist/commands/run.js.map +1 -1
  25. package/dist/commands/sfx.d.ts.map +1 -1
  26. package/dist/commands/sfx.js +99 -11
  27. package/dist/commands/sfx.js.map +1 -1
  28. package/dist/engine/audio/analyze.d.ts +164 -0
  29. package/dist/engine/audio/analyze.d.ts.map +1 -0
  30. package/dist/engine/audio/analyze.js +512 -0
  31. package/dist/engine/audio/analyze.js.map +1 -0
  32. package/dist/engine/audio/index.d.ts +4 -2
  33. package/dist/engine/audio/index.d.ts.map +1 -1
  34. package/dist/engine/audio/index.js +4 -2
  35. package/dist/engine/audio/index.js.map +1 -1
  36. package/dist/engine/audio/score.d.ts +137 -0
  37. package/dist/engine/audio/score.d.ts.map +1 -0
  38. package/dist/engine/audio/score.js +420 -0
  39. package/dist/engine/audio/score.js.map +1 -0
  40. package/dist/engine/audio/section.d.ts +7 -0
  41. package/dist/engine/audio/section.d.ts.map +1 -1
  42. package/dist/engine/audio/section.js +17 -0
  43. package/dist/engine/audio/section.js.map +1 -1
  44. package/dist/engine/audio/sfx.d.ts +114 -12
  45. package/dist/engine/audio/sfx.d.ts.map +1 -1
  46. package/dist/engine/audio/sfx.js +236 -33
  47. package/dist/engine/audio/sfx.js.map +1 -1
  48. package/dist/engine/pico8/harness.d.ts +11 -5
  49. package/dist/engine/pico8/harness.d.ts.map +1 -1
  50. package/dist/engine/pico8/harness.js +24 -10
  51. package/dist/engine/pico8/harness.js.map +1 -1
  52. package/dist/engine/scaffold/scaffold.d.ts.map +1 -1
  53. package/dist/engine/scaffold/scaffold.js +5 -1
  54. package/dist/engine/scaffold/scaffold.js.map +1 -1
  55. package/package.json +2 -2
  56. package/src/cli.test.ts +42 -1
  57. package/src/cli.ts +143 -37
  58. package/src/commands/audio.test.ts +170 -1
  59. package/src/commands/audio.ts +294 -30
  60. package/src/commands/doctor.test.ts +1 -0
  61. package/src/commands/doctor.ts +8 -3
  62. package/src/commands/gfx.ts +12 -9
  63. package/src/commands/music.test.ts +119 -0
  64. package/src/commands/music.ts +251 -1
  65. package/src/commands/pico8-env.ts +71 -3
  66. package/src/commands/run.ts +8 -2
  67. package/src/commands/sfx.test.ts +55 -0
  68. package/src/commands/sfx.ts +118 -11
  69. package/src/engine/audio/analyze.test.ts +239 -0
  70. package/src/engine/audio/analyze.ts +664 -0
  71. package/src/engine/audio/index.ts +46 -1
  72. package/src/engine/audio/score.test.ts +402 -0
  73. package/src/engine/audio/score.ts +630 -0
  74. package/src/engine/audio/section.ts +19 -0
  75. package/src/engine/audio/sfx.test.ts +219 -4
  76. package/src/engine/audio/sfx.ts +326 -40
  77. package/src/engine/pico8/harness.test.ts +19 -0
  78. package/src/engine/pico8/harness.ts +29 -11
  79. package/src/engine/scaffold/scaffold.ts +5 -1
  80. package/src/mcp.process.test.ts +219 -0
  81. package/src/skills/picopilot-audio/SKILL.md +74 -184
  82. package/src/skills/picopilot-overview/SKILL.md +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"sfx.js","sourceRoot":"","sources":["../../../src/engine/audio/sfx.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sfx.js","sourceRoot":"","sources":["../../../src/engine/audio/sfx.ts"],"names":[],"mappings":"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"}
@@ -96,7 +96,11 @@ export interface RenderHarness {
96
96
  readonly cartText: string;
97
97
  /** The record window in seconds the adapter should let the capture run for. */
98
98
  readonly seconds: number;
99
- /** The number of `_update` frames the harness records for (= seconds * 30fps). */
99
+ /**
100
+ * The number of `_update` frames the harness records for (= seconds * 30fps).
101
+ * For `buildRecordHarness` on a cart that uses `_update60`, the recorder
102
+ * counts seconds * 60 frames instead, chosen at run time.
103
+ */
100
104
  readonly frames: number;
101
105
  /** The base filename the harness passes to `extcmd("set_filename")`. */
102
106
  readonly wavBasename: string;
@@ -128,11 +132,13 @@ export declare function buildRenderHarness(cartText: string, target: RenderTarge
128
132
  * cooperative recorder tab that starts recording immediately and stops after the
129
133
  * window. The recorder runs as an extra code tab so it does not disturb the
130
134
  * cart's own `_update`/`_draw` (PICO-8 runs all tabs; the appended top-level code
131
- * arms the recorder and a hooked `_update` advances the timer).
135
+ * arms the recorder and a hooked `_update`/`_update60` advances the timer).
132
136
  *
133
- * Because a general cart may define its own `_update`, the recorder wraps it: it
134
- * saves the cart's `_update` and installs one that ticks the record timer then
135
- * calls the original. This is the record analogue of the debug skill's "add
137
+ * Because a general cart may define its own `_update` or `_update60` (PICO-8
138
+ * calls `_update60` instead of `_update` when it exists), the recorder wraps
139
+ * whichever the cart uses: it saves the cart's callback and installs one that
140
+ * ticks the record timer then calls the original, counting frames at that
141
+ * loop's rate (30 or 60 fps). This is the record analogue of the debug skill's "add
136
142
  * capture lines, run, revert" recipe, done on a THROWAWAY copy.
137
143
  *
138
144
  * The harness runs from a different folder than the source cart (an isolated
@@ -1 +1 @@
1
- {"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../../../src/engine/pico8/harness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAC;AAUtC;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GACrB;IAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAC,GAC9C;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAC,GAClD;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAAC;AAE3B,gFAAgF;AAChF,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC,wFAAwF;AACxF,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,wFAAwF;AACxF,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC;;;GAGG;AACH,MAAM,MAAM,gBAAgB;AAC3B,qEAAqE;AACnE,kCAAkC;AACpC,8EAA8E;GAC5E,2BAA2B;AAC7B,sDAAsD;GACpD,+BAA+B,CAAC;AAEnC,0EAA0E;AAC1E,qBAAa,YAAa,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;gBACpB,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM;CAKnD;AAKD;;;;;GAKG;AACH,UAAU,SAAS;IAClB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACtB;AAoBD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAUtD;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC5B,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,YAAY,EACpB,QAAQ,CAAC,EAAE,MAAM,GACf,MAAM,CAaR;AAcD,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAS3D;AAED,uFAAuF;AACvF,MAAM,WAAW,aAAa;IAC7B,sFAAsF;IACtF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC7B;AAkCD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CACjC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAM,GACvE,aAAa,CA4Cf;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,kBAAkB,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IACR,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CACrD,GACJ,aAAa,CAgDf"}
1
+ {"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../../../src/engine/pico8/harness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAC;AAUtC;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GACrB;IAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAC,GAC9C;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAC,GAClD;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAAC;AAE3B,gFAAgF;AAChF,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC,wFAAwF;AACxF,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,wFAAwF;AACxF,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC;;;GAGG;AACH,MAAM,MAAM,gBAAgB;AAC3B,qEAAqE;AACnE,kCAAkC;AACpC,8EAA8E;GAC5E,2BAA2B;AAC7B,sDAAsD;GACpD,+BAA+B,CAAC;AAEnC,0EAA0E;AAC1E,qBAAa,YAAa,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;gBACpB,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM;CAKnD;AAKD;;;;;GAKG;AACH,UAAU,SAAS;IAClB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACtB;AAoBD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAUtD;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC5B,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,YAAY,EACpB,QAAQ,CAAC,EAAE,MAAM,GACf,MAAM,CAaR;AAcD,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAS3D;AAED,uFAAuF;AACvF,MAAM,WAAW,aAAa;IAC7B,sFAAsF;IACtF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC7B;AAkCD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CACjC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAM,GACvE,aAAa,CA4Cf;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,kBAAkB,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IACR,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CACrD,GACJ,aAAa,CA4Df"}
@@ -200,11 +200,13 @@ export function buildRenderHarness(cartText, target, options = {}) {
200
200
  * cooperative recorder tab that starts recording immediately and stops after the
201
201
  * window. The recorder runs as an extra code tab so it does not disturb the
202
202
  * cart's own `_update`/`_draw` (PICO-8 runs all tabs; the appended top-level code
203
- * arms the recorder and a hooked `_update` advances the timer).
203
+ * arms the recorder and a hooked `_update`/`_update60` advances the timer).
204
204
  *
205
- * Because a general cart may define its own `_update`, the recorder wraps it: it
206
- * saves the cart's `_update` and installs one that ticks the record timer then
207
- * calls the original. This is the record analogue of the debug skill's "add
205
+ * Because a general cart may define its own `_update` or `_update60` (PICO-8
206
+ * calls `_update60` instead of `_update` when it exists), the recorder wraps
207
+ * whichever the cart uses: it saves the cart's callback and installs one that
208
+ * ticks the record timer then calls the original, counting frames at that
209
+ * loop's rate (30 or 60 fps). This is the record analogue of the debug skill's "add
208
210
  * capture lines, run, revert" recipe, done on a THROWAWAY copy.
209
211
  *
210
212
  * The harness runs from a different folder than the source cart (an isolated
@@ -229,21 +231,33 @@ export function buildRecordHarness(cartText, options = {}) {
229
231
  const sentinel = options.sentinel ?? DONE_SENTINEL;
230
232
  const wavBasename = options.wavBasename ?? RECORD_WAV_BASENAME;
231
233
  const existing = resolveIncludes(cart.getSection('lua') ?? '', options.readInclude);
232
- // Append the recorder AFTER the cart's own code. It wraps _update so it works
233
- // whether or not the cart defines one, and never edits the cart's own logic.
234
+ // Append the recorder AFTER the cart's own code, so the cart's callbacks
235
+ // exist when it runs. It hooks whichever update loop the cart uses: PICO-8
236
+ // calls _update60 INSTEAD of _update when a cart defines it (60fps), so a
237
+ // recorder that only wrapped _update never ticked on such a cart and the
238
+ // run hit the backstop without ever starting audio_rec. The frame count
239
+ // follows the loop's rate so the window stays `seconds` long either way.
240
+ const frames60 = Math.max(1, Math.round(seconds * 60));
234
241
  const recorder = [
235
242
  '',
236
243
  '-->8',
237
244
  '-- picopilot audio record harness (throwaway; ADR-0009).',
238
245
  "-- Records the cart's own audio; real-time capture, NOT an offline export.",
239
246
  '__pp_rec_update=_update',
247
+ '__pp_rec_update60=_update60',
240
248
  '__pp_rec_t=0',
241
- 'function _update()',
249
+ `__pp_rec_n=${frames}`,
250
+ `if __pp_rec_update60 then __pp_rec_n=${frames60} end`,
251
+ 'function __pp_rec_tick()',
242
252
  ' __pp_rec_t+=1',
243
253
  ` if __pp_rec_t==1 then extcmd("set_filename","${wavBasename}") extcmd("audio_rec") end`,
244
- ` if __pp_rec_t==${frames} then extcmd("audio_end",1) end`,
245
- ` if __pp_rec_t==${frames + 1} then printh("${sentinel}") end`,
246
- ' if __pp_rec_update then __pp_rec_update() end',
254
+ ' if __pp_rec_t==__pp_rec_n then extcmd("audio_end",1) end',
255
+ ` if __pp_rec_t==__pp_rec_n+1 then printh("${sentinel}") end`,
256
+ 'end',
257
+ 'if __pp_rec_update60 then',
258
+ ' function _update60() __pp_rec_tick() __pp_rec_update60() end',
259
+ 'else',
260
+ ' function _update() __pp_rec_tick() if __pp_rec_update then __pp_rec_update() end end',
247
261
  'end',
248
262
  '',
249
263
  ].join('\n');
@@ -1 +1 @@
1
- {"version":3,"file":"harness.js","sourceRoot":"","sources":["../../../src/engine/pico8/harness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"harness.js","sourceRoot":"","sources":["../../../src/engine/pico8/harness.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../../src/engine/scaffold/scaffold.ts"],"names":[],"mappings":"AAiBA;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AAEpD;;;;GAIG;AACH,wBAAgB,MAAM,IAAI,MAAM,CAM/B;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAehC;AAED,2FAA2F;AAC3F,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,IAAI,MAAM,CAkOjC;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAI,YAAY,EAAE,CAO9C"}
1
+ {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../../src/engine/scaffold/scaffold.ts"],"names":[],"mappings":"AAiBA;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AAEpD;;;;GAIG;AACH,wBAAgB,MAAM,IAAI,MAAM,CAM/B;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAehC;AAED,2FAA2F;AAC3F,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,IAAI,MAAM,CAsOjC;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAI,YAAY,EAAE,CAO9C"}
@@ -85,6 +85,9 @@ curated from PICO-8's manual for the things models get wrong without a reminder.
85
85
  - Sprites: 256 8x8 sprites in a base bank (0..127) plus a shared bank (128..255).
86
86
  - Map: 128x32 tiles + a shared half that ALIASES sprites 128..255 (see below).
87
87
  - Sound: 4 channels, 64 SFX slots; music is patterns of up to 4 SFX references.
88
+ Compose it as text (\`picopilot sfx from-mml\`, \`music from-score\`), then
89
+ \`audio render --analyze\` to judge it by numbers; the \`picopilot-audio\` skill
90
+ carries the loop and the taste rules (soft, low, varied, under the SFX).
88
91
  - Numbers: 16.16 fixed point, range \`-32768.0 .. 32767.99\`.
89
92
 
90
93
  ## The execution loop (every cart)
@@ -230,7 +233,8 @@ in \`picopilot.json\`), so you never silently destroy map data you cannot see.
230
233
  \`color(col)\`, \`fillp(mask)\`, \`tline(...)\`, \`flip()\`.
231
234
  - **Map / flags:** \`mget(x,y)\`, \`mset(x,y,v)\`, \`fget(n,[f])\`, \`fset(n,[f],v)\`.
232
235
  - **Input:** \`btn([i,[p]])\`, \`btnp([i,[p]])\` (buttons 0..5 = left,right,up,down,O/Z,X).
233
- - **Audio:** \`sfx(n,[channel,[offset]])\`, \`music([n,[fade,[mask]]])\`.
236
+ - **Audio:** \`sfx(n,[channel,[offset]])\`, \`music([n,[fade,[mask]]])\` (mask 7 =
237
+ channels 0-2, so channel 3 stays free for \`sfx\`).
234
238
  - **Math:** \`abs\`, \`flr\` (\`-flr(-x)\` = ceil), \`min\`, \`max\`, \`mid\`, \`rnd(x)\`,
235
239
  \`srand(x)\`, \`sgn\`, \`sqrt\`, \`sin(x)\`/\`cos(x)\` (range 0..1, sin inverted),
236
240
  \`atan2(x,y)\`.
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../../src/engine/scaffold/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAC,iBAAiB,EAAC,MAAM,oBAAoB,CAAC;AAErD;;;;;;;;;GASG;AAEH,0FAA0F;AAC1F,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAEpD;;;;GAIG;AACH,MAAM,UAAU,MAAM;IACrB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CACtB,sDAAsD,YAAY,aAAa,CAC/E,CAAC;IACF,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,gBAAgB,IAAI,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO;IACtB,OAAO;;;;;;;;;;;;;CAaP,CAAC;AACF,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,aAAa;IAC5B,OAAO,iBAAiB,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ;IACvB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgOP,CAAC;AACF,CAAC;AAYD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa;IAC5B,OAAO;QACN,EAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,EAAC;QACpC,EAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,EAAC;QACtC,EAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC;QACxC,EAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,EAAE,EAAC;KAClD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../../src/engine/scaffold/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAC,iBAAiB,EAAC,MAAM,oBAAoB,CAAC;AAErD;;;;;;;;;GASG;AAEH,0FAA0F;AAC1F,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAEpD;;;;GAIG;AACH,MAAM,UAAU,MAAM;IACrB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CACtB,sDAAsD,YAAY,aAAa,CAC/E,CAAC;IACF,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,gBAAgB,IAAI,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO;IACtB,OAAO;;;;;;;;;;;;;CAaP,CAAC;AACF,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,aAAa;IAC5B,OAAO,iBAAiB,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ;IACvB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoOP,CAAC;AACF,CAAC;AAYD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa;IAC5B,OAAO;QACN,EAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,EAAC;QACpC,EAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,EAAC;QACtC,EAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC;QACxC,EAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,EAAE,EAAC;KAClD,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "picopilot",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "An agent-first toolchain for PICO-8 game development, built on the incur CLI framework.",
5
5
  "license": "AGPL-3.0-only",
6
6
  "repository": {
@@ -31,7 +31,7 @@
31
31
  "node": ">=22"
32
32
  },
33
33
  "dependencies": {
34
- "incur": "0.4.10"
34
+ "incur": "0.7.1"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@types/node": "22.12.0",
package/src/cli.test.ts CHANGED
@@ -70,6 +70,7 @@ describe('display mode resolution through the CLI', () => {
70
70
  for (const argv of [
71
71
  ['--display', 'native', 'probe-display'],
72
72
  ['probe-display', '--display', 'native'],
73
+ ['probe-display', '--display=native'],
73
74
  ]) {
74
75
  const {out} = await probe(
75
76
  argv,
@@ -84,7 +85,7 @@ describe('display mode resolution through the CLI', () => {
84
85
  const cli = createCli();
85
86
  let stdout = '';
86
87
  let exitCode = 0;
87
- await cli.serve(['run', join(dir, 'none.p8'), '--json'], {
88
+ await cli.serve(['doctor', '--json'], {
88
89
  stdout(s) {
89
90
  stdout += s;
90
91
  },
@@ -99,6 +100,46 @@ describe('display mode resolution through the CLI', () => {
99
100
  expect(out.message).toContain('PICOPILOT_DISPLAY');
100
101
  });
101
102
 
103
+ it('an invalid --display is an error for a display command', async () => {
104
+ const cli = createCli();
105
+ let stdout = '';
106
+ let exitCode = 0;
107
+ await cli.serve(['doctor', '--display', 'bogus', '--json'], {
108
+ stdout(s) {
109
+ stdout += s;
110
+ },
111
+ exit(code) {
112
+ exitCode = code;
113
+ },
114
+ env: {},
115
+ });
116
+ expect(exitCode).not.toBe(0);
117
+ expect(stdout).toContain('--display');
118
+ });
119
+
120
+ it('a --display with no value is rejected, and does not eat the next flag', async () => {
121
+ for (const argv of [
122
+ ['doctor', '--display', '--json'],
123
+ ['doctor', '--json', '--display'],
124
+ ]) {
125
+ const cli = createCli();
126
+ let stdout = '';
127
+ let exitCode = 0;
128
+ await cli.serve(argv, {
129
+ stdout(s) {
130
+ stdout += s;
131
+ },
132
+ exit(code) {
133
+ exitCode = code;
134
+ },
135
+ env: {},
136
+ });
137
+ expect(exitCode, argv.join(' ')).not.toBe(0);
138
+ // --json still applied: the error envelope is JSON.
139
+ expect(() => JSON.parse(stdout), argv.join(' ')).not.toThrow();
140
+ }
141
+ });
142
+
102
143
  it('an invalid value does not break commands that never use the display', async () => {
103
144
  const cli = createCli();
104
145
  let stdout = '';
package/src/cli.ts CHANGED
@@ -1,4 +1,6 @@
1
- import {readFileSync} from 'node:fs';
1
+ import {existsSync, readFileSync} from 'node:fs';
2
+ import {homedir} from 'node:os';
3
+ import {join, resolve} from 'node:path';
2
4
  import {Cli, z} from 'incur';
3
5
  import {registerAudio} from './commands/audio.js';
4
6
  import {registerDoctor} from './commands/doctor.js';
@@ -24,13 +26,88 @@ import {
24
26
  } from './engine/pico8/display.js';
25
27
  import {VERSION} from './version.js';
26
28
 
27
- /** The commands that use the display mode (they start a `-run` session, or report on it). */
28
- const DISPLAY_COMMANDS: ReadonlySet<string> = new Set([
29
- 'run',
30
- 'audio record',
31
- 'audio render',
32
- 'doctor',
33
- ]);
29
+ /** The config files picopilot searches (first existing wins), relative to the cwd. */
30
+ const CONFIG_FILES = ['picopilot.json'];
31
+
32
+ /**
33
+ * What one `serve` invocation said at the top level, captured BEFORE incur sees
34
+ * the argv: the `--display` flag (taken out of argv, so it works before or after
35
+ * the command name and on `--mcp`), and for `--mcp` the config flags. incur's
36
+ * MCP transport passes no global flags to a tool call and loads no config file,
37
+ * so picopilot carries both itself.
38
+ */
39
+ interface Invocation {
40
+ display?: string;
41
+ mcp: boolean;
42
+ /** MCP only: the config tree picopilot loaded itself (undefined = none). */
43
+ mcpConfig?: Record<string, unknown>;
44
+ }
45
+
46
+ /**
47
+ * Removes every `--display <v>` / `--display=<v>` from argv and returns the last
48
+ * value. A `--display` with no value (last token, or followed by another flag)
49
+ * stays in argv, so incur rejects it instead of it silently eating the next flag.
50
+ */
51
+ function takeDisplayFlag(argv: string[]): {argv: string[]; display?: string} {
52
+ const rest: string[] = [];
53
+ let display: string | undefined;
54
+ for (let i = 0; i < argv.length; i++) {
55
+ const a = argv[i] as string;
56
+ const next = argv[i + 1];
57
+ if (a === '--display' && next !== undefined && !next.startsWith('-')) {
58
+ display = next;
59
+ i++;
60
+ } else if (a.startsWith('--display=') && a.length > '--display='.length) {
61
+ display = a.slice('--display='.length);
62
+ } else {
63
+ rest.push(a);
64
+ }
65
+ }
66
+ return {argv: rest, display};
67
+ }
68
+
69
+ /** Resolves a config path the way incur does: `~` is the home dir, else relative to the cwd. */
70
+ function resolveConfigPath(path: string): string {
71
+ return path === '~' || path.startsWith('~/')
72
+ ? join(homedir(), path.slice(1))
73
+ : resolve(path);
74
+ }
75
+
76
+ /**
77
+ * For `--mcp`: the config file incur would have loaded on the CLI. Mirrors
78
+ * incur's own parsing: `--config <p>` / `--config=<p>` / `--no-config`, the last
79
+ * one wins, a missing value is an error; else the first existing default file.
80
+ */
81
+ function loadMcpConfig(argv: string[]): Record<string, unknown> | undefined {
82
+ let explicit: string | undefined;
83
+ let disabled = false;
84
+ for (let i = 0; i < argv.length; i++) {
85
+ const a = argv[i] as string;
86
+ let value: string | undefined;
87
+ if (a === '--config') value = argv[++i];
88
+ else if (a.startsWith('--config=')) value = a.slice('--config='.length);
89
+ else if (a === '--no-config') {
90
+ explicit = undefined;
91
+ disabled = true;
92
+ continue;
93
+ } else continue;
94
+ if (value === undefined || value === '') {
95
+ throw new Error('Missing value for flag: --config');
96
+ }
97
+ explicit = value;
98
+ disabled = false;
99
+ }
100
+ if (disabled) return undefined;
101
+ const sink: {display?: unknown} = {};
102
+ if (explicit !== undefined) {
103
+ return loadConfig(resolveConfigPath(explicit), sink);
104
+ }
105
+ for (const file of CONFIG_FILES) {
106
+ const path = resolveConfigPath(file);
107
+ if (existsSync(path)) return loadConfig(path, sink);
108
+ }
109
+ return undefined;
110
+ }
34
111
 
35
112
  /**
36
113
  * Reads a picopilot.json for incur's config layer AND captures its top-level
@@ -91,20 +168,12 @@ export function createCli(): Cli.Cli {
91
168
  // Per-cart policy config (e.g. `allowMapOverlap`); precedence argv > config > defaults.
92
169
  config: {
93
170
  flag: 'config',
94
- files: ['picopilot.json'],
171
+ files: CONFIG_FILES,
95
172
  loader: async (path) => loadConfig(path, configSink),
96
173
  },
97
- // The display mode (ADR-0017) is global: it applies to every command that
98
- // starts a PICO-8 `-run` session. Precedence: --display > PICOPILOT_DISPLAY
99
- // > picopilot.json `display` > auto.
100
- globals: z.object({
101
- display: z
102
- .enum(DISPLAY_MODES)
103
- .optional()
104
- .describe(
105
- 'How PICO-8 -run sessions (audio record/render, run --record-audio) get a display: auto (default: a private virtual display only when there is none), xvfb (always virtual), native (as-is). Also PICOPILOT_DISPLAY or picopilot.json "display" (under --mcp, only PICOPILOT_DISPLAY applies).',
106
- ),
107
- }),
174
+ // The display mode (ADR-0017): `--display` (a per-command option on the
175
+ // commands that use it, also accepted anywhere on the command line and on
176
+ // `--mcp`) > PICOPILOT_DISPLAY > picopilot.json `display` > auto.
108
177
  env: z.object({
109
178
  [DISPLAY_ENV_VAR]: z
110
179
  .string()
@@ -113,37 +182,74 @@ export function createCli(): Cli.Cli {
113
182
  }),
114
183
  vars: z.object({
115
184
  display: z.enum(DISPLAY_MODES).default(DEFAULT_DISPLAY_MODE),
185
+ displayError: z.string().optional(),
186
+ mcpConfig: z.record(z.string(), z.unknown()).optional(),
116
187
  }),
188
+ mcp: {
189
+ // One MCP tool per command (incur's default is progressive discovery
190
+ // behind search/call meta-tools); picopilot's surface is small, and the
191
+ // skills name commands directly.
192
+ tools: {discovery: 'direct'},
193
+ },
117
194
  });
118
195
 
196
+ const invocation: Invocation = {mcp: false};
197
+
119
198
  cli.use(async (c, next) => {
120
- const configured = configSink.display;
199
+ const configured = invocation.mcp
200
+ ? invocation.mcpConfig?.[DISPLAY_CONFIG_KEY]
201
+ : configSink.display;
121
202
  configSink.display = undefined; // never leak into a later invocation
122
203
  const resolved = resolveDisplayMode({
123
- // incur's MCP transport passes no globals (and loads no config file), so
124
- // under `--mcp` only PICOPILOT_DISPLAY applies.
125
- flag: c.globals?.display,
204
+ flag: invocation.display,
126
205
  env: (c.env as Record<string, string | undefined>)[DISPLAY_ENV_VAR],
127
206
  config: configured,
128
207
  });
129
- if (!resolved.ok) {
130
- // A bad value only fails the commands that use it; the rest run as usual.
131
- if (!DISPLAY_COMMANDS.has(c.command)) return next();
132
- // (An invalid --display never gets here: incur's enum rejects it first.)
208
+ if (resolved.ok) {
209
+ c.set('display', resolved.mode);
210
+ } else {
211
+ // Not an error here: only the commands that USE the display mode fail
212
+ // on a bad value (see resolveCommandDisplay); the rest run as usual.
133
213
  const where =
134
- resolved.source === 'env'
135
- ? DISPLAY_ENV_VAR
136
- : `picopilot.json "${DISPLAY_CONFIG_KEY}"`;
137
- return c.error({
138
- code: 'invalid-display-mode',
139
- message: `${where} is "${resolved.value}"; expected one of: ${DISPLAY_MODES.join(', ')}.`,
140
- exitCode: 1,
141
- });
214
+ resolved.source === 'flag'
215
+ ? '--display'
216
+ : resolved.source === 'env'
217
+ ? DISPLAY_ENV_VAR
218
+ : `picopilot.json "${DISPLAY_CONFIG_KEY}"`;
219
+ c.set(
220
+ 'displayError',
221
+ `${where} is "${resolved.value}"; expected one of: ${DISPLAY_MODES.join(', ')}.`,
222
+ );
223
+ }
224
+ if (invocation.mcp && invocation.mcpConfig !== undefined) {
225
+ c.set('mcpConfig', invocation.mcpConfig);
142
226
  }
143
- c.set('display', resolved.mode);
144
227
  await next();
145
228
  });
146
229
 
230
+ // Capture the top-level `--display` (and, for `--mcp`, the config) before
231
+ // incur parses argv; see {@link Invocation}.
232
+ const serve = cli.serve.bind(cli);
233
+ cli.serve = async (argv = process.argv.slice(2), options) => {
234
+ const taken = takeDisplayFlag(argv);
235
+ invocation.display = taken.display;
236
+ invocation.mcp = taken.argv.includes('--mcp');
237
+ invocation.mcpConfig = undefined;
238
+ if (invocation.mcp) {
239
+ try {
240
+ invocation.mcpConfig = loadMcpConfig(taken.argv);
241
+ } catch (e) {
242
+ // A broken config must stop the server visibly, not serve without it.
243
+ process.stderr.write(
244
+ `picopilot --mcp: ${e instanceof Error ? e.message : String(e)}\n`,
245
+ );
246
+ process.exitCode = 1;
247
+ return;
248
+ }
249
+ }
250
+ return serve(taken.argv, options);
251
+ };
252
+
147
253
  // The register* helpers take the untyped Cli: the display var is read through
148
254
  // `displayModeOf`, so they do not depend on this CLI's generics.
149
255
  const root = cli as unknown as Cli.Cli;