picopilot 0.1.4 → 0.2.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 (172) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +111 -16
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/audio.d.ts +3 -3
  5. package/dist/commands/audio.d.ts.map +1 -1
  6. package/dist/commands/audio.js +61 -44
  7. package/dist/commands/audio.js.map +1 -1
  8. package/dist/commands/cart-includes.d.ts +11 -0
  9. package/dist/commands/cart-includes.d.ts.map +1 -0
  10. package/dist/commands/cart-includes.js +26 -0
  11. package/dist/commands/cart-includes.js.map +1 -0
  12. package/dist/commands/doctor.d.ts +22 -0
  13. package/dist/commands/doctor.d.ts.map +1 -0
  14. package/dist/commands/doctor.js +222 -0
  15. package/dist/commands/doctor.js.map +1 -0
  16. package/dist/commands/export.d.ts +3 -4
  17. package/dist/commands/export.d.ts.map +1 -1
  18. package/dist/commands/export.js +66 -86
  19. package/dist/commands/export.js.map +1 -1
  20. package/dist/commands/gfx.d.ts +2 -2
  21. package/dist/commands/gfx.d.ts.map +1 -1
  22. package/dist/commands/gfx.js +3 -2
  23. package/dist/commands/gfx.js.map +1 -1
  24. package/dist/commands/label-cart.d.ts +72 -0
  25. package/dist/commands/label-cart.d.ts.map +1 -0
  26. package/dist/commands/label-cart.js +228 -0
  27. package/dist/commands/label-cart.js.map +1 -0
  28. package/dist/commands/lint.d.ts +2 -2
  29. package/dist/commands/lint.d.ts.map +1 -1
  30. package/dist/commands/lint.js +3 -2
  31. package/dist/commands/lint.js.map +1 -1
  32. package/dist/commands/minify.d.ts +2 -2
  33. package/dist/commands/minify.d.ts.map +1 -1
  34. package/dist/commands/minify.js +3 -2
  35. package/dist/commands/minify.js.map +1 -1
  36. package/dist/commands/pico8-env.d.ts +76 -0
  37. package/dist/commands/pico8-env.d.ts.map +1 -0
  38. package/dist/commands/pico8-env.js +71 -0
  39. package/dist/commands/pico8-env.js.map +1 -0
  40. package/dist/commands/playtest.d.ts +2 -2
  41. package/dist/commands/playtest.d.ts.map +1 -1
  42. package/dist/commands/playtest.js +6 -32
  43. package/dist/commands/playtest.js.map +1 -1
  44. package/dist/commands/run.d.ts +3 -4
  45. package/dist/commands/run.d.ts.map +1 -1
  46. package/dist/commands/run.js +46 -19
  47. package/dist/commands/run.js.map +1 -1
  48. package/dist/commands/serve.d.ts +2 -2
  49. package/dist/commands/serve.d.ts.map +1 -1
  50. package/dist/commands/serve.js +65 -19
  51. package/dist/commands/serve.js.map +1 -1
  52. package/dist/commands/shrinko-env.d.ts +22 -0
  53. package/dist/commands/shrinko-env.d.ts.map +1 -0
  54. package/dist/commands/shrinko-env.js +15 -0
  55. package/dist/commands/shrinko-env.js.map +1 -0
  56. package/dist/commands/tokens.d.ts +4 -4
  57. package/dist/commands/tokens.d.ts.map +1 -1
  58. package/dist/commands/tokens.js +3 -2
  59. package/dist/commands/tokens.js.map +1 -1
  60. package/dist/commands/verify.d.ts +2 -2
  61. package/dist/commands/verify.d.ts.map +1 -1
  62. package/dist/commands/verify.js +3 -2
  63. package/dist/commands/verify.js.map +1 -1
  64. package/dist/engine/child-env.d.ts +14 -0
  65. package/dist/engine/child-env.d.ts.map +1 -0
  66. package/dist/engine/child-env.js +21 -0
  67. package/dist/engine/child-env.js.map +1 -0
  68. package/dist/engine/gfx/label.d.ts +15 -9
  69. package/dist/engine/gfx/label.d.ts.map +1 -1
  70. package/dist/engine/gfx/label.js +130 -38
  71. package/dist/engine/gfx/label.js.map +1 -1
  72. package/dist/engine/pico8/adapter.d.ts +23 -3
  73. package/dist/engine/pico8/adapter.d.ts.map +1 -1
  74. package/dist/engine/pico8/adapter.js.map +1 -1
  75. package/dist/engine/pico8/cleanup.d.ts +16 -0
  76. package/dist/engine/pico8/cleanup.d.ts.map +1 -0
  77. package/dist/engine/pico8/cleanup.js +74 -0
  78. package/dist/engine/pico8/cleanup.js.map +1 -0
  79. package/dist/engine/pico8/display.d.ts +149 -0
  80. package/dist/engine/pico8/display.d.ts.map +1 -0
  81. package/dist/engine/pico8/display.js +311 -0
  82. package/dist/engine/pico8/display.js.map +1 -0
  83. package/dist/engine/pico8/drive.d.ts.map +1 -1
  84. package/dist/engine/pico8/drive.js +28 -2
  85. package/dist/engine/pico8/drive.js.map +1 -1
  86. package/dist/engine/pico8/harness.d.ts +8 -0
  87. package/dist/engine/pico8/harness.d.ts.map +1 -1
  88. package/dist/engine/pico8/harness.js +9 -1
  89. package/dist/engine/pico8/harness.js.map +1 -1
  90. package/dist/engine/pico8/index.d.ts +3 -0
  91. package/dist/engine/pico8/index.d.ts.map +1 -1
  92. package/dist/engine/pico8/index.js +3 -0
  93. package/dist/engine/pico8/index.js.map +1 -1
  94. package/dist/engine/pico8/session-daemon-entry.d.ts +1 -1
  95. package/dist/engine/pico8/session-daemon-entry.js +1 -1
  96. package/dist/engine/pico8/session-daemon-main.d.ts +1 -1
  97. package/dist/engine/pico8/session-daemon-main.js +1 -1
  98. package/dist/engine/pico8/session-daemon.d.ts +1 -1
  99. package/dist/engine/pico8/session-daemon.d.ts.map +1 -1
  100. package/dist/engine/pico8/session-daemon.js +19 -19
  101. package/dist/engine/pico8/session-daemon.js.map +1 -1
  102. package/dist/engine/pico8/session.d.ts +1 -1
  103. package/dist/engine/pico8/session.js +1 -1
  104. package/dist/engine/pico8/shell.d.ts +56 -3
  105. package/dist/engine/pico8/shell.d.ts.map +1 -1
  106. package/dist/engine/pico8/shell.js +188 -24
  107. package/dist/engine/pico8/shell.js.map +1 -1
  108. package/dist/engine/pico8/supervisor.d.ts +1 -1
  109. package/dist/engine/pico8/supervisor.js +1 -1
  110. package/dist/engine/shrinko/adapter.d.ts +1 -1
  111. package/dist/engine/shrinko/shell.d.ts +3 -3
  112. package/dist/engine/shrinko/shell.js +3 -3
  113. package/package.json +2 -1
  114. package/src/cli.test.ts +188 -0
  115. package/src/cli.ts +122 -16
  116. package/src/commands/audio.test.ts +76 -1
  117. package/src/commands/audio.ts +79 -57
  118. package/src/commands/cart-includes.ts +27 -0
  119. package/src/commands/doctor.test.ts +149 -0
  120. package/src/commands/doctor.ts +280 -0
  121. package/src/commands/export.test.ts +327 -3
  122. package/src/commands/export.ts +81 -99
  123. package/src/commands/gfx.ts +7 -6
  124. package/src/commands/label-cart.ts +304 -0
  125. package/src/commands/lint.test.ts +6 -0
  126. package/src/commands/lint.ts +7 -6
  127. package/src/commands/minify.test.ts +6 -0
  128. package/src/commands/minify.ts +7 -6
  129. package/src/commands/pico8-env.ts +124 -0
  130. package/src/commands/playtest.test.ts +3 -0
  131. package/src/commands/playtest.ts +10 -34
  132. package/src/commands/run.test.ts +116 -2
  133. package/src/commands/run.ts +62 -24
  134. package/src/commands/serve.test.ts +138 -2
  135. package/src/commands/serve.ts +80 -21
  136. package/src/commands/shrinko-env.test.ts +68 -0
  137. package/src/commands/shrinko-env.ts +40 -0
  138. package/src/commands/tokens.test.ts +19 -0
  139. package/src/commands/tokens.ts +9 -6
  140. package/src/commands/verify.test.ts +12 -0
  141. package/src/commands/verify.ts +7 -4
  142. package/src/engine/child-env.ts +22 -0
  143. package/src/engine/gfx/fixtures/pico8-screenshot-384.png +0 -0
  144. package/src/engine/gfx/label.test.ts +467 -1
  145. package/src/engine/gfx/label.ts +147 -41
  146. package/src/engine/pico8/adapter.ts +25 -3
  147. package/src/engine/pico8/cleanup.test.ts +28 -0
  148. package/src/engine/pico8/cleanup.ts +76 -0
  149. package/src/engine/pico8/display.test.ts +210 -0
  150. package/src/engine/pico8/display.ts +429 -0
  151. package/src/engine/pico8/drive.test.ts +20 -0
  152. package/src/engine/pico8/drive.ts +25 -2
  153. package/src/engine/pico8/fake-xvfb.test-support.ts +55 -0
  154. package/src/engine/pico8/harness.test.ts +26 -0
  155. package/src/engine/pico8/harness.ts +18 -2
  156. package/src/engine/pico8/index.ts +3 -0
  157. package/src/engine/pico8/session-daemon-entry.ts +1 -1
  158. package/src/engine/pico8/session-daemon-main.ts +1 -1
  159. package/src/engine/pico8/session-daemon.test.ts +32 -1
  160. package/src/engine/pico8/session-daemon.ts +25 -17
  161. package/src/engine/pico8/session.test.ts +1 -1
  162. package/src/engine/pico8/session.ts +1 -1
  163. package/src/engine/pico8/shell.test.ts +449 -10
  164. package/src/engine/pico8/shell.ts +255 -26
  165. package/src/engine/pico8/supervisor.ts +1 -1
  166. package/src/engine/pico8/virtual-display.process.test.ts +206 -0
  167. package/src/engine/shrinko/adapter.ts +1 -1
  168. package/src/engine/shrinko/shell.ts +3 -3
  169. package/src/engine/skills/skills.test.ts +10 -0
  170. package/src/skills/picopilot-audio/SKILL.md +4 -8
  171. package/src/skills/picopilot-debug/SKILL.md +18 -1
  172. package/src/skills/picopilot-overview/SKILL.md +9 -1
@@ -1,9 +1,11 @@
1
1
  import { existsSync, mkdirSync, mkdtempSync, readFileSync, writeFileSync, } from 'node:fs';
2
2
  import { tmpdir } from 'node:os';
3
- import { dirname, isAbsolute, join, resolve } from 'node:path';
3
+ import { isAbsolute, join, resolve } from 'node:path';
4
4
  import { Cli as IncurCli, z } from 'incur';
5
- import { buildDriveHarness, DEFAULT_ACK_TIMEOUT_MS, DEFAULT_IDLE_TIMEOUT_MS, DONE_SENTINEL, DriveError, PICO8_NOT_FOUND_MARKER, parseButtons, parseInputScript, SessionClient, SessionRegistry, sessionExists, SHOT_BASENAME, ShellPico8Adapter, spawnSessionDaemon, } from '../engine/pico8/index.js';
6
- const defaultAdapterFactory = (env) => new ShellPico8Adapter({ env });
5
+ import { buildDriveHarness, DEFAULT_ACK_TIMEOUT_MS, DEFAULT_IDLE_TIMEOUT_MS, DONE_SENTINEL, DriveError, PICO8_NOT_FOUND_MARKER, parseButtons, parseInputScript, SessionClient, SessionRegistry, sessionExists, SHOT_BASENAME, spawnSessionDaemon, } from '../engine/pico8/index.js';
6
+ import { createShellAdapterFactory, PICO8_ENV, } from './pico8-env.js';
7
+ import { makeReadInclude } from './cart-includes.js';
8
+ const defaultAdapterFactory = createShellAdapterFactory();
7
9
  /**
8
10
  * The default backstop: kill a driven cart that never signals/exits after this
9
11
  * many ms. Larger than `run`'s screenshot default because a driven run advances
@@ -18,28 +20,6 @@ const START_POLL_MS = 50;
18
20
  function resolvePath(p) {
19
21
  return isAbsolute(p) ? p : resolve(process.cwd(), p);
20
22
  }
21
- /**
22
- * A `#include` resolver for the drive-transform, bound to the SOURCE cart's dir:
23
- * picopilot's standard scaffold is `main.p8` = `#include main.lua`, and the
24
- * driven cart runs from a throwaway temp dir where `main.lua` is absent, so the
25
- * transform inlines includes to be self-contained. Reads the included file
26
- * relative to the cart (absolute paths honoured); returns `undefined` if it
27
- * cannot be read (the directive is then left verbatim).
28
- */
29
- function makeReadInclude(cartPath) {
30
- const base = dirname(cartPath);
31
- return (includePath) => {
32
- const full = isAbsolute(includePath)
33
- ? includePath
34
- : join(base, includePath);
35
- try {
36
- return readFileSync(full, 'utf8');
37
- }
38
- catch {
39
- return undefined;
40
- }
41
- };
42
- }
43
23
  /** A small sleep for the `start` readiness poll. */
44
24
  function sleep(ms) {
45
25
  return new Promise((r) => setTimeout(r, ms));
@@ -168,13 +148,7 @@ function buildPlaytestGroup(adapterFactory) {
168
148
  return playtest;
169
149
  }
170
150
  /** The env schema the whole `playtest` group shares (locates the binary, isolated). */
171
- const PLAYTEST_ENV = z.object({
172
- PICO8_PATH: z
173
- .string()
174
- .optional()
175
- .describe('Explicit path to the PICO-8 binary (else `pico8` on PATH).'),
176
- PATH: z.string().optional().describe('Used to locate `pico8`.'),
177
- });
151
+ const PLAYTEST_ENV = PICO8_ENV;
178
152
  /**
179
153
  * The ONE-SHOT root handler (unchanged behaviour from the one-shot task): build
180
154
  * the throwaway driven cart, pipe the whole scripted input as fixed-size blocks,
@@ -1 +1 @@
1
- {"version":3,"file":"playtest.js","sourceRoot":"","sources":["../../src/commands/playtest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"playtest.js","sourceRoot":"","sources":["../../src/commands/playtest.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,UAAU,EACV,SAAS,EACT,WAAW,EACX,YAAY,EACZ,aAAa,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAC,MAAM,EAAC,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAC,UAAU,EAAE,IAAI,EAAE,OAAO,EAAC,MAAM,WAAW,CAAC;AACpD,OAAO,EAAW,GAAG,IAAI,QAAQ,EAAE,CAAC,EAAC,MAAM,OAAO,CAAC;AACnD,OAAO,EACN,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,aAAa,EACb,UAAU,EAEV,sBAAsB,EACtB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,aAAa,EACb,aAAa,EACb,kBAAkB,GAIlB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACN,yBAAyB,EACzB,SAAS,GAET,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAC,eAAe,EAAC,MAAM,oBAAoB,CAAC;AAUnD,MAAM,qBAAqB,GAAwB,yBAAyB,EAAE,CAAC;AAE/E;;;;GAIG;AACH,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAEnC,uFAAuF;AACvF,MAAM,sBAAsB,GAAG,MAAM,CAAC;AACtC,0EAA0E;AAC1E,MAAM,aAAa,GAAG,EAAE,CAAC;AAEzB,sEAAsE;AACtE,SAAS,WAAW,CAAC,CAAS;IAC7B,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,oDAAoD;AACpD,SAAS,KAAK,CAAC,EAAU;IACxB,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,gBAAgB,CAC/B,GAAY,EACZ,iBAAsC,qBAAqB;IAE3D,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,kBAAkB,CAAC,cAAmC;IAC9D,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE;QAC5C,WAAW,EACV,gWAAgW;KACjW,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE;QACvB,WAAW,EACV,oNAAoN;QACrN,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,IAAI,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,OAAO,CAAC,SAAS,CAAC;iBAClB,QAAQ,CACR,sEAAsE,CACtE;SACF,CAAC;QACF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;YACjB,KAAK,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACR,sTAAsT,CACtT;YACF,IAAI,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,QAAQ,CACR,gJAAgJ,CAChJ;YACF,MAAM,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,QAAQ,EAAE;iBACV,QAAQ,CACR,uFAAuF,CACvF;YACF,OAAO,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACR,yGAAyG,CACzG;YACF,QAAQ,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,OAAO,CAAC,aAAa,CAAC;iBACtB,QAAQ,CACR,4EAA4E,CAC5E;YACF,UAAU,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,OAAO,CAAC,mBAAmB,CAAC;iBAC5B,QAAQ,CACR,sEAAsE,CACtE;SACF,CAAC;QACF,GAAG,EAAE,YAAY;QACjB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YAChB,WAAW,EAAE,CAAC;iBACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,CACR,0EAA0E,CAC1E;YACF,MAAM,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,CAAC,0DAA0D,CAAC;YACtE,UAAU,EAAE,CAAC;iBACX,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;iBACrC,QAAQ,CACR,+EAA+E,CAC/E;YACF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YACpE,KAAK,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,CAAC,2DAA2D,CAAC;YACvE,SAAS,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,CACR,iEAAiE,CACjE;YACF,MAAM,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,CAAC,uDAAuD,CAAC;SACnE,CAAC;QACF,QAAQ,EAAE;YACT,EAAC,WAAW,EAAE,qDAAqD,EAAC;YACpE;gBACC,WAAW,EAAE,wDAAwD;gBACrE,IAAI,EAAE,EAAC,IAAI,EAAE,SAAS,EAAC;gBACvB,OAAO,EAAE,EAAC,KAAK,EAAE,oBAAoB,EAAC;aACtC;YACD;gBACC,WAAW,EAAE,wCAAwC;gBACrD,IAAI,EAAE,EAAC,IAAI,EAAE,SAAS,EAAC;gBACvB,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAC;aAChC;SACD;QACD,KAAK,CAAC,GAAG,CAAC,GAAQ;YACjB,OAAO,UAAU,CAChB;gBACC,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,EAAE,EAAE,GAAG,CAAC,EAAgD;aACxD,EACD,cAAc,CACd,CAAC;QACH,CAAC;KACD,CAAC,CAAC;IAEH,oBAAoB,CAAC,QAA8B,CAAC,CAAC;IACrD,OAAO,QAA8B,CAAC;AACvC,CAAC;AAED,uFAAuF;AACvF,MAAM,YAAY,GAAG,SAAS,CAAC;AAE/B;;;;GAIG;AACH,KAAK,UAAU,UAAU,CACxB,GAaC,EACD,cAAmC;IAEnC,MAAM,EAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAC,GAAG,GAAG,CAAC;IAC5C,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAExC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;YACZ,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,cAAc,QAAQ,EAAE;YACjC,QAAQ,EAAE,CAAC;SACX,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC;IACZ,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC;YACJ,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,UAAU,EAAE,CAAC;gBAC7B,OAAO,KAAK,CAAC,EAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAC,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM,CAAC,CAAC;QACT,CAAC;IACF,CAAC;IAED,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACJ,OAAO,GAAG,iBAAiB,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;YAC3D,OAAO;YACP,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,WAAW,EAAE,eAAe,CAAC,QAAQ,CAAC;SACtC,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,IAAI,CAAC,YAAY,UAAU,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC,EAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAC,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,CAAC,CAAC;IACT,CAAC;IAED,MAAM,OAAO,GACZ,OAAO,CAAC,OAAO,KAAK,SAAS;QAC5B,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;QAC9B,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC;IACvD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,SAAS,CAAC,OAAO,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;IAEhE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC9C,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE5C,MAAM,OAAO,GAAG,cAAc,CAAC,GAAwB,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC;QAClC,QAAQ,EAAE,UAAU;QACpB,OAAO;QACP,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;KAC9B,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,OAAO,EAAE,4BAA4B,MAAM,CAAC,MAAM,YAAY,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACxF,QAAQ,EAAE,CAAC;SACX,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,EAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAC,GAAG,MAAM,CAAC,KAAK,CAAC;IACvD,MAAM,GAAG,GACR,UAAU,KAAK,SAAS;QACvB,CAAC,CAAC;YACA,WAAW,EACV,sFAAsF;YACvF,QAAQ,EAAE;gBACT;oBACC,OAAO,EAAE,QAAQ;oBACjB,WAAW,EAAE,kDAAkD;iBAC/D;gBACD;oBACC,OAAO,EAAE,KAAK;oBACd,WAAW,EAAE,gDAAgD;iBAC7D;aACD;SACD;QACF,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO,EAAE,CACR;QACC,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC;QAC7B,MAAM;QACN,UAAU;QACV,OAAO;QACP,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,MAAM,EAAE,OAAO,CAAC,IAAI,KAAK,SAAS;KAClC,EACD,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC,GAAG,EAAC,CACrC,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,2DAA2D;AAC3D,8EAA8E;AAE9E,4DAA4D;AAC5D,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACpE,KAAK,EAAE,CAAC;SACN,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,CAAC,+CAA+C,CAAC;IAC3D,KAAK,EAAE,CAAC;SACN,OAAO,EAAE;SACT,QAAQ,CACR,iEAAiE,CACjE;IACF,GAAG,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2DAA2D,CAAC;IACvE,UAAU,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,0DAA0D,CAAC;IACtE,QAAQ,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,sDAAsD,CAAC;IAClE,OAAO,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,gEAAgE,CAAC;CAC5E,CAAC,CAAC;AAEH,4EAA4E;AAC5E,SAAS,oBAAoB,CAAC,QAAiB;IAC9C,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE;QACzB,WAAW,EACV,mOAAmO;QACpO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,IAAI,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,OAAO,CAAC,SAAS,CAAC;iBAClB,QAAQ,CAAC,0DAA0D,CAAC;SACtE,CAAC;QACF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;YACjB,EAAE,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACR,iFAAiF,CACjF;YACF,IAAI,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,QAAQ,CACR,mEAAmE,CACnE;YACF,aAAa,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,OAAO,CAAC,uBAAuB,CAAC;iBAChC,QAAQ,CACR,yEAAyE,CACzE;YACF,YAAY,EAAE,CAAC;iBACb,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,OAAO,CAAC,sBAAsB,CAAC;iBAC/B,QAAQ,CACR,+DAA+D,CAC/D;SACF,CAAC;QACF,GAAG,EAAE,YAAY;QACjB,MAAM,EAAE,cAAc;QACtB,QAAQ,EAAE;YACT,EAAC,WAAW,EAAE,4BAA4B,EAAC;YAC3C;gBACC,WAAW,EAAE,+BAA+B;gBAC5C,IAAI,EAAE,EAAC,IAAI,EAAE,SAAS,EAAC;gBACvB,OAAO,EAAE,EAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAC;aAC9B;SACD;QACD,KAAK,CAAC,GAAG,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAC;YACxC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3B,OAAO,KAAK,CAAC;oBACZ,IAAI,EAAE,gBAAgB;oBACtB,OAAO,EAAE,cAAc,QAAQ,EAAE;oBACjC,QAAQ,EAAE,CAAC;iBACX,CAAC,CAAC;YACJ,CAAC;YAED,qEAAqE;YACrE,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;YACvC,IAAI,EAAU,CAAC;YACf,IAAI,CAAC;gBACJ,EAAE;oBACD,OAAO,CAAC,EAAE,KAAK,SAAS;wBACvB,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;wBACxC,CAAC,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;YAC/B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACZ,OAAO,KAAK,CAAC;oBACZ,IAAI,EAAE,6BAA6B;oBACnC,OAAO,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oBACnD,QAAQ,EAAE,CAAC;iBACX,CAAC,CAAC;YACJ,CAAC;YACD,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,IAAI,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACrE,OAAO,KAAK,CAAC;oBACZ,IAAI,EAAE,yBAAyB;oBAC/B,OAAO,EAAE,cAAc,EAAE,qDAAqD;oBAC9E,QAAQ,EAAE,CAAC;iBACX,CAAC,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAElC,2EAA2E;YAC3E,mEAAmE;YACnE,IAAI,OAAO,CAAC;YACZ,IAAI,CAAC;gBACJ,OAAO,GAAG,iBAAiB,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;oBAC3D,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,YAAY,EAAE,aAAa;oBAC3B,WAAW,EAAE,eAAe,CAAC,QAAQ,CAAC;iBACtC,CAAC,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACZ,IAAI,CAAC,YAAY,UAAU,EAAE,CAAC;oBAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBACpB,OAAO,KAAK,CAAC,EAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAC,CAAC,CAAC;gBAC/D,CAAC;gBACD,MAAM,CAAC,CAAC;YACT,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YAChD,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YAE5C,0EAA0E;YAC1E,8CAA8C;YAC9C,kBAAkB,CAAC;gBAClB,EAAE;gBACF,KAAK;gBACL,QAAQ,EAAE,UAAU;gBACpB,YAAY,EAAE,aAAa;gBAC3B,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,YAAY,EAAE,OAAO,CAAC,YAAY;aAClC,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;YACpE,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACpB,OAAO,KAAK,CAAC;oBACZ,IAAI,EAAE,iBAAiB;oBACvB,OAAO,EACN,0EAA0E;oBAC3E,QAAQ,EAAE,CAAC;iBACX,CAAC,CAAC;YACJ,CAAC;YACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACpB,OAAO,KAAK,CAAC;oBACZ,IAAI,EAAE,+BAA+B;oBACrC,OAAO,EAAE,kDAAkD,sBAAsB,IAAI;oBACrF,QAAQ,EAAE,CAAC;iBACX,CAAC,CAAC;YACJ,CAAC;YAED,OAAO,EAAE,CACR,EAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAC,EACnD;gBACC,GAAG,EAAE;oBACJ,WAAW,EAAE,YAAY,EAAE,iCAAiC;oBAC5D,QAAQ,EAAE;wBACT;4BACC,OAAO,EAAE,kBAAkB,EAAE,YAAY;4BACzC,WAAW,EAAE,kCAAkC;yBAC/C;wBACD;4BACC,OAAO,EAAE,iBAAiB,EAAE,cAAc;4BAC1C,WAAW,EAAE,uCAAuC;yBACpD;wBACD;4BACC,OAAO,EAAE,iBAAiB,EAAE,EAAE;4BAC9B,WAAW,EAAE,mCAAmC;yBAChD;wBACD;4BACC,OAAO,EAAE,iBAAiB,EAAE,EAAE;4BAC9B,WAAW,EAAE,wBAAwB;yBACrC;qBACD;iBACD;aACD,CACD,CAAC;QACH,CAAC;KACD,CAAC,CAAC;IAEH,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE;QACzB,WAAW,EACV,gLAAgL;QACjL,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;YAClE,OAAO,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,OAAO,CAAC,EAAE,CAAC;iBACX,QAAQ,CAAC,oDAAoD,CAAC;SAChE,CAAC;QACF,GAAG,EAAE,YAAY;QACjB,MAAM,EAAE,cAAc;QACtB,QAAQ,EAAE;YACT,EAAC,WAAW,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAC,EAAC;YACvE,EAAC,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,EAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAC,EAAC;SAC7D;QACD,KAAK,CAAC,GAAG,CAAC,EAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAC;YAC1B,IAAI,IAAY,CAAC;YACjB,IAAI,CAAC;gBACJ,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACZ,IAAI,CAAC,YAAY,UAAU,EAAE,CAAC;oBAC7B,OAAO,KAAK,CAAC,EAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAC,CAAC,CAAC;gBAC/D,CAAC;gBACD,MAAM,CAAC,CAAC;YACT,CAAC;YACD,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5D,CAAC;KACD,CAAC,CAAC;IAEH,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;QACxB,WAAW,EACV,mJAAmJ;QACpJ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;SAClE,CAAC;QACF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;YACjB,MAAM,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,OAAO,CAAC,CAAC,CAAC;iBACV,QAAQ,CAAC,oDAAoD,CAAC;SAChE,CAAC;QACF,GAAG,EAAE,YAAY;QACjB,MAAM,EAAE,cAAc;QACtB,QAAQ,EAAE;YACT,EAAC,WAAW,EAAE,mBAAmB,EAAE,IAAI,EAAE,EAAC,EAAE,EAAE,MAAM,EAAC,EAAC;YACtD;gBACC,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,EAAC,EAAE,EAAE,MAAM,EAAC;gBAClB,OAAO,EAAE,EAAC,MAAM,EAAE,EAAE,EAAC;aACrB;SACD;QACD,KAAK,CAAC,GAAG,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAC;YACnC,OAAO,QAAQ,CACd,IAAI,CAAC,EAAE,EACP,EAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAC,EACtC,KAAK,EACL,EAAE,CACF,CAAC;QACH,CAAC;KACD,CAAC,CAAC;IAEH,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;QACxB,WAAW,EACV,4FAA4F;QAC7F,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;SAClE,CAAC;QACF,GAAG,EAAE,YAAY;QACjB,MAAM,EAAE,cAAc;QACtB,QAAQ,EAAE;YACT,EAAC,WAAW,EAAE,8BAA8B,EAAE,IAAI,EAAE,EAAC,EAAE,EAAE,MAAM,EAAC,EAAC;SACjE;QACD,KAAK,CAAC,GAAG,CAAC,EAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAC;YAC1B,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACrD,CAAC;KACD,CAAC,CAAC;IAEH,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE;QAC1B,WAAW,EACV,sFAAsF;QACvF,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;SAClE,CAAC;QACF,GAAG,EAAE,YAAY;QACjB,MAAM,EAAE,cAAc;QACtB,QAAQ,EAAE,CAAC,EAAC,WAAW,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAC,EAAE,EAAE,MAAM,EAAC,EAAC,CAAC;QAChE,KAAK,CAAC,GAAG,CAAC,EAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAC;YAC1B,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACvD,CAAC;KACD,CAAC,CAAC;IAEH,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;QACxB,WAAW,EACV,0GAA0G;QAC3G,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;SAClE,CAAC;QACF,GAAG,EAAE,YAAY;QACjB,MAAM,EAAE,cAAc;QACtB,QAAQ,EAAE,CAAC,EAAC,WAAW,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAC,EAAE,EAAE,MAAM,EAAC,EAAC,CAAC;QAC/D,KAAK,CAAC,GAAG,CAAC,EAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAC;YAC1B,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;YACvC,IAAI,KAAK,CAAC;YACV,IAAI,CAAC;gBACJ,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACZ,OAAO,KAAK,CAAC;oBACZ,IAAI,EAAE,6BAA6B;oBACnC,OAAO,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oBACnD,QAAQ,EAAE,CAAC;iBACX,CAAC,CAAC;YACJ,CAAC;YACD,2EAA2E;YAC3E,gDAAgD;YAChD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACzB,OAAO,EAAE,CAAC,EAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;YAClD,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAC/D,+DAA+D;YAC/D,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzB,OAAO,GAAG,CAAC;QACZ,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,YAAY,CAC1B,KAAoC,EACpC,SAAiB;IAEjB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC9B,IAAI,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,QAAQ,CAAC;QACxC,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,OAAO,OAAO,CAAC;QAC7C,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,QAAQ,CACtB,EAAU,EACV,OAAuB,EACvB,KAAkE,EAClE,EAAsC;IAEtC,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACvC,IAAI,KAAK,CAAC;IACV,IAAI,CAAC;QACJ,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,OAAO,KAAK,CAAC;YACZ,IAAI,EAAE,6BAA6B;YACnC,OAAO,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACnD,QAAQ,EAAE,CAAC;SACX,CAAC,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;YACZ,IAAI,EAAE,4BAA4B;YAClC,OAAO,EAAE,oBAAoB,EAAE,uCAAuC;YACtE,QAAQ,EAAE,CAAC;SACX,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,QAAyB,CAAC;IAC9B,IAAI,CAAC;QACJ,QAAQ,GAAG,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,OAAO,KAAK,CAAC;YACZ,IAAI,EAAE,4BAA4B;YAClC,OAAO,EAAE,4BAA4B,EAAE,MAAM,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YACzF,QAAQ,EAAE,CAAC;SACX,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC;YACZ,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,QAAQ,EAAE,CAAC;SACX,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC"}
@@ -1,12 +1,11 @@
1
1
  import { type Cli } from 'incur';
2
- import { type Pico8Adapter } from '../engine/pico8/index.js';
2
+ import { type Pico8AdapterFactory } from './pico8-env.js';
3
3
  /**
4
4
  * Injects the PICO-8 adapter `run` uses (defaults to the shell adapter over
5
5
  * native `pico8 -x`). Mirrors the shrinko `adapterFactory` seam: a test passes a
6
- * stub to drive the sentinel/backstop/absent paths without the paid binary, and
7
- * to isolate the child `env` (its `PICO8_PATH`/`PATH`).
6
+ * stub to drive the sentinel/backstop/absent paths without the paid binary.
8
7
  */
9
- export type Pico8AdapterFactory = (env: NodeJS.ProcessEnv) => Pico8Adapter;
8
+ export type { Pico8AdapterFactory } from './pico8-env.js';
10
9
  /**
11
10
  * Registers `picopilot run`, the THIN sentinel-watch + screenshot-collect
12
11
  * orchestration command (US #14, ADR-0006). It is NOT a `pico8` wrapper: its
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AASA,OAAO,EAAC,KAAK,GAAG,EAAI,MAAM,OAAO,CAAC;AAClC,OAAO,EAIN,KAAK,YAAY,EAEjB,MAAM,0BAA0B,CAAC;AAElC;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,YAAY,CAAC;AAQ3E;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CAC1B,GAAG,EAAE,GAAG,CAAC,GAAG,EACZ,cAAc,GAAE,mBAA2C,GACzD,IAAI,CAsON"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AASA,OAAO,EAAC,KAAK,GAAG,EAAI,MAAM,OAAO,CAAC;AAOlC,OAAO,EAMN,KAAK,mBAAmB,EACxB,MAAM,gBAAgB,CAAC;AAExB;;;;GAIG;AACH,YAAY,EAAC,mBAAmB,EAAC,MAAM,gBAAgB,CAAC;AAOxD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CAC1B,GAAG,EAAE,GAAG,CAAC,GAAG,EACZ,cAAc,GAAE,mBAA2C,GACzD,IAAI,CAuQN"}
@@ -2,8 +2,10 @@ import { existsSync, mkdirSync, mkdtempSync, readFileSync, writeFileSync, } from
2
2
  import { tmpdir } from 'node:os';
3
3
  import { isAbsolute, join, resolve } from 'node:path';
4
4
  import { z } from 'incur';
5
- import { buildRecordHarness, DONE_SENTINEL, HarnessError, ShellPico8Adapter, } from '../engine/pico8/index.js';
6
- const defaultAdapterFactory = (env) => new ShellPico8Adapter({ env });
5
+ import { buildRecordHarness, DONE_SENTINEL, HarnessError, } from '../engine/pico8/index.js';
6
+ import { makeReadInclude } from './cart-includes.js';
7
+ import { createShellAdapterFactory, displayModeOf, displayUnavailableError, PICO8_ENV, pico8NotFoundError, } from './pico8-env.js';
8
+ const defaultAdapterFactory = createShellAdapterFactory();
7
9
  /** The default backstop: kill a cart that never signals/exits after this many ms. */
8
10
  const DEFAULT_BACKSTOP_MS = 15_000;
9
11
  /**
@@ -56,17 +58,11 @@ export function registerRun(cli, adapterFactory = defaultAdapterFactory) {
56
58
  recordAudio: z
57
59
  .boolean()
58
60
  .default(false)
59
- .describe("Also capture a WAV of the run's audio alongside the screenshots (ADR-0009). A REAL-TIME recording that needs a real audio+video session (a separate -run pass, NOT the headless screenshot pass), never an offline export."),
60
- }),
61
- // incur resolves these from the (test-overridable) env source and hands
62
- // them to the child, so PICO8_PATH/PATH locate the binary in isolation.
63
- env: z.object({
64
- PICO8_PATH: z
65
- .string()
66
- .optional()
67
- .describe('Explicit path to the PICO-8 binary (else `pico8` on PATH).'),
68
- PATH: z.string().optional().describe('Used to locate `pico8`.'),
61
+ .describe("Also capture a WAV of the run's audio alongside the screenshots (ADR-0009). A REAL-TIME recording in a separate -run pass (not the headless screenshot pass), never an offline export. Works headless: with no display, picopilot runs that pass on a private virtual display (ADR-0017, --display)."),
69
62
  }),
63
+ // incur resolves these from the (test-overridable) env source; the child
64
+ // gets the parent env with them overlaid (DISPLAY, HOME, ... pass through).
65
+ env: PICO8_ENV,
70
66
  output: z.object({
71
67
  screenshots: z
72
68
  .array(z.string())
@@ -85,6 +81,18 @@ export function registerRun(cli, adapterFactory = defaultAdapterFactory) {
85
81
  audioCaptured: z
86
82
  .boolean()
87
83
  .describe('Whether a non-empty WAV was captured (false unless --record-audio ran and produced audio).'),
84
+ audioDisplay: z
85
+ .enum(['native', 'Xvfb', 'xvfb-run'])
86
+ .optional()
87
+ .describe('With --record-audio: which display the -run pass used (native, or a private virtual display).'),
88
+ noAudioReason: z
89
+ .string()
90
+ .optional()
91
+ .describe('With --record-audio and no WAV: why (backstop fired / PICO-8 exited before the done-sentinel / empty capture).'),
92
+ pico8LogTail: z
93
+ .string()
94
+ .optional()
95
+ .describe("With --record-audio and no WAV: the tail of PICO-8's own log.txt (load errors, SDL init failures)."),
88
96
  }),
89
97
  examples: [
90
98
  { description: 'Run main.p8' },
@@ -95,7 +103,7 @@ export function registerRun(cli, adapterFactory = defaultAdapterFactory) {
95
103
  options: { shotDir: './shots' },
96
104
  },
97
105
  ],
98
- async run({ args, options, env, error, ok }) {
106
+ async run({ args, options, env, error, ok, var: vars }) {
99
107
  const cartPath = isAbsolute(args.cart)
100
108
  ? args.cart
101
109
  : resolve(process.cwd(), args.cart);
@@ -117,7 +125,9 @@ export function registerRun(cli, adapterFactory = defaultAdapterFactory) {
117
125
  : mkdtempSync(join(tmpdir(), 'picopilot-run-'));
118
126
  if (!existsSync(shotDir))
119
127
  mkdirSync(shotDir, { recursive: true });
120
- const adapter = adapterFactory(env);
128
+ const adapter = adapterFactory(env, {
129
+ display: displayModeOf(vars),
130
+ });
121
131
  const result = await adapter.run({
122
132
  cartPath,
123
133
  shotDir,
@@ -142,10 +152,16 @@ export function registerRun(cli, adapterFactory = defaultAdapterFactory) {
142
152
  // uses. The WAV lands in the isolated shotDir alongside the screenshots.
143
153
  let wav;
144
154
  let audioCaptured = false;
155
+ let noAudioReason;
156
+ let pico8LogTail;
157
+ let audioDisplay;
145
158
  if (options.recordAudio) {
146
159
  try {
160
+ // `#include`s are inlined (resolved against the SOURCE cart's folder):
161
+ // the harness runs from shotDir, where `main.lua` does not exist.
147
162
  const harness = buildRecordHarness(readFileSync(cartPath, 'utf8'), {
148
163
  sentinel: options.sentinel,
164
+ readInclude: makeReadInclude(cartPath),
149
165
  });
150
166
  const harnessCart = join(shotDir, 'record-audio-harness.p8');
151
167
  writeFileSync(harnessCart, harness.cartText);
@@ -156,18 +172,26 @@ export function registerRun(cli, adapterFactory = defaultAdapterFactory) {
156
172
  sentinel: options.sentinel,
157
173
  backstopMs: options.backstopMs,
158
174
  });
159
- if (rec.ok) {
160
- wav = rec.value.wavPath;
161
- audioCaptured = rec.value.wavPath !== undefined;
175
+ if (!rec.ok) {
176
+ // pico8-not-found is impossible here (the screenshot pass above would
177
+ // have returned it); display-unavailable is the real case: the -run
178
+ // pass needs a display, there is none, and no Xvfb to make one.
179
+ return error(rec.reason === 'display-unavailable'
180
+ ? displayUnavailableError('run --record-audio', rec)
181
+ : pico8NotFoundError(rec));
162
182
  }
163
- // A record-pass pico8-not-found is impossible here: the screenshot
164
- // pass above already returned pico8-not-found if PICO-8 were absent.
183
+ wav = rec.value.wavPath;
184
+ audioCaptured = rec.value.wavPath !== undefined;
185
+ noAudioReason = rec.value.noWavReason;
186
+ pico8LogTail = rec.value.pico8LogTail;
187
+ audioDisplay = rec.value.display;
165
188
  }
166
189
  catch (e) {
167
190
  if (!(e instanceof HarnessError))
168
191
  throw e;
169
192
  // A harness-build failure (unparseable cart) leaves audioCaptured false;
170
193
  // the screenshot run's report still stands.
194
+ noAudioReason = `the record harness could not be built: ${e.message}`;
171
195
  }
172
196
  }
173
197
  // A backstop timeout is a soft warning: the cart never signalled done, so
@@ -217,6 +241,9 @@ export function registerRun(cli, adapterFactory = defaultAdapterFactory) {
217
241
  shotDir,
218
242
  wav,
219
243
  audioCaptured,
244
+ ...(audioDisplay !== undefined ? { audioDisplay } : {}),
245
+ ...(noAudioReason !== undefined ? { noAudioReason } : {}),
246
+ ...(pico8LogTail !== undefined ? { pico8LogTail } : {}),
220
247
  }, cta === undefined ? undefined : { cta });
221
248
  },
222
249
  });
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { type Server } from 'node:http';
2
2
  import { type Cli } from 'incur';
3
- import { type Pico8Adapter } from '../engine/pico8/index.js';
3
+ import { type Pico8AdapterFactory } from './pico8-env.js';
4
4
  /**
5
5
  * Injects the PICO-8 adapter `serve` uses (defaults to the shell adapter). Same
6
6
  * seam as `export`/`run`: a test passes a stub so the export step needs no paid
7
7
  * binary, and the child `env` (`PICO8_PATH`/`PATH`) stays isolated.
8
8
  */
9
- export type Pico8AdapterFactory = (env: NodeJS.ProcessEnv) => Pico8Adapter;
9
+ export type { Pico8AdapterFactory } from './pico8-env.js';
10
10
  /**
11
11
  * Injects the HTTP-server factory `serve` binds. The default is a zero-dep
12
12
  * `node:http` static server over the export dir; a test injects a fake to assert
@@ -1 +1 @@
1
- {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAOA,OAAO,EAAe,KAAK,MAAM,EAAC,MAAM,WAAW,CAAC;AAGpD,OAAO,EAAC,KAAK,GAAG,EAAI,MAAM,OAAO,CAAC;AAClC,OAAO,EAEN,KAAK,YAAY,EAEjB,MAAM,0BAA0B,CAAC;AAElC;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,YAAY,CAAC;AAK3E;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,KACR,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC;AAiB7C;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;AA6E7D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAC5B,GAAG,EAAE,GAAG,CAAC,GAAG,EACZ,cAAc,GAAE,mBAA2C,EAC3D,aAAa,GAAE,aAAoC,EACnD,eAAe,GAAE,gBAA0C,GACzD,IAAI,CA4GN"}
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAOA,OAAO,EAAe,KAAK,MAAM,EAAC,MAAM,WAAW,CAAC;AAGpD,OAAO,EAAC,KAAK,GAAG,EAAI,MAAM,OAAO,CAAC;AAMlC,OAAO,EAGN,KAAK,mBAAmB,EACxB,MAAM,gBAAgB,CAAC;AAGxB;;;;GAIG;AACH,YAAY,EAAC,mBAAmB,EAAC,MAAM,gBAAgB,CAAC;AAIxD;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,KACR,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC;AAiB7C;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;AA6E7D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAC5B,GAAG,EAAE,GAAG,CAAC,GAAG,EACZ,cAAc,GAAE,mBAA2C,EAC3D,aAAa,GAAE,aAAoC,EACnD,eAAe,GAAE,gBAA0C,GACzD,IAAI,CAkKN"}
@@ -3,8 +3,10 @@ import { createServer } from 'node:http';
3
3
  import { tmpdir } from 'node:os';
4
4
  import { extname, isAbsolute, join, normalize, resolve } from 'node:path';
5
5
  import { z } from 'incur';
6
- import { EXPORT_HTML_NAME, ShellPico8Adapter, } from '../engine/pico8/index.js';
7
- const defaultAdapterFactory = (env) => new ShellPico8Adapter({ env });
6
+ import { EXPORT_HTML_NAME, } from '../engine/pico8/index.js';
7
+ import { createShellAdapterFactory, PICO8_ENV, } from './pico8-env.js';
8
+ import { prepareLabeledCart } from './label-cart.js';
9
+ const defaultAdapterFactory = createShellAdapterFactory();
8
10
  const DEFAULT_PORT = 5858;
9
11
  const DEFAULT_BACKSTOP_MS = 30_000;
10
12
  /**
@@ -121,6 +123,16 @@ export function registerServe(cli, adapterFactory = defaultAdapterFactory, serve
121
123
  .describe('The .p8 cart to export and serve. Defaults to main.p8 in the current folder.'),
122
124
  }),
123
125
  options: z.object({
126
+ label: z
127
+ .string()
128
+ .optional()
129
+ .describe('PNG to bake in as the __label__ (the export splash) for a cart that has none: a `run`/`playtest` screenshot as-is, or any 128x128 PNG. The cart itself is not modified. Ignored if the cart already has a label.'),
130
+ labelFrame: z
131
+ .number()
132
+ .int()
133
+ .min(0)
134
+ .optional()
135
+ .describe('Capture the label from the game itself: run the cart headlessly with NO input and use frame N (0-based: 0 = the first drawn frame, usually the title screen) as the __label__. Needs PICO-8; the cart need not cooperate. Exclusive with --label; ignored if the cart already has a label.'),
124
136
  port: z
125
137
  .number()
126
138
  .int()
@@ -133,15 +145,9 @@ export function registerServe(cli, adapterFactory = defaultAdapterFactory, serve
133
145
  .int()
134
146
  .positive()
135
147
  .default(DEFAULT_BACKSTOP_MS)
136
- .describe('Safety backstop for the export step.'),
137
- }),
138
- env: z.object({
139
- PICO8_PATH: z
140
- .string()
141
- .optional()
142
- .describe('Explicit path to the PICO-8 binary (else `pico8` on PATH).'),
143
- PATH: z.string().optional().describe('Used to locate `pico8`.'),
148
+ .describe('Safety backstop for the export step (and the --label-frame capture run).'),
144
149
  }),
150
+ env: PICO8_ENV,
145
151
  output: z.object({
146
152
  url: z.string().describe('The local URL to open in a browser.'),
147
153
  port: z.number().describe('The port the server bound to.'),
@@ -157,6 +163,16 @@ export function registerServe(cli, adapterFactory = defaultAdapterFactory, serve
157
163
  args: { cart: 'game.p8' },
158
164
  options: { port: 8080 },
159
165
  },
166
+ {
167
+ description: 'Serve a labelless cart, using a `run` screenshot as the splash',
168
+ args: { cart: 'game.p8' },
169
+ options: { label: './shots/<name>.png' },
170
+ },
171
+ {
172
+ description: 'Serve a labelless cart, using its title screen (frame 0) as the splash',
173
+ args: { cart: 'game.p8' },
174
+ options: { labelFrame: 0 },
175
+ },
160
176
  ],
161
177
  async run({ args, options, env, error, ok }) {
162
178
  const cartPath = isAbsolute(args.cart)
@@ -169,16 +185,46 @@ export function registerServe(cli, adapterFactory = defaultAdapterFactory, serve
169
185
  exitCode: 1,
170
186
  });
171
187
  }
172
- // Always export first, into an isolated temp dir (never a user path or
173
- // ~/Desktop). The bundle is the standalone pair the static server plays.
174
- const serveDir = mkdtempSync(join(tmpdir(), 'picopilot-serve-'));
188
+ // --label / --label-frame: export a labeled throwaway copy (shared with
189
+ // `export`; the cart is never mutated). A bad image or a failed capture
190
+ // fails before anything is exported.
175
191
  const adapter = adapterFactory(env);
176
- const result = await adapter.export({
177
- cartPath,
178
- outDir: serveDir,
179
- htmlName: EXPORT_HTML_NAME,
192
+ const labeled = await prepareLabeledCart(cartPath, {
193
+ label: options.label,
194
+ labelFrame: options.labelFrame,
180
195
  backstopMs: options.backstopMs,
181
- });
196
+ }, (o) => adapter.drive(o));
197
+ if (!labeled.ok) {
198
+ return error({
199
+ code: labeled.code,
200
+ message: labeled.message,
201
+ exitCode: 1,
202
+ ...(labeled.cta ? { cta: labeled.cta } : {}),
203
+ });
204
+ }
205
+ // Always export first, into an isolated temp dir (never a user path or
206
+ // ~/Desktop). The bundle is the standalone pair the static server plays.
207
+ // The labeled copy (in the user's cart dir) is removed on every path; a
208
+ // throw also reaps the temp dir, since nothing will be served from it.
209
+ let result;
210
+ let serveDir;
211
+ try {
212
+ serveDir = mkdtempSync(join(tmpdir(), 'picopilot-serve-'));
213
+ result = await adapter.export({
214
+ cartPath: labeled.cartPath,
215
+ outDir: serveDir,
216
+ htmlName: EXPORT_HTML_NAME,
217
+ backstopMs: options.backstopMs,
218
+ });
219
+ }
220
+ catch (e) {
221
+ if (serveDir !== undefined)
222
+ removeDir(serveDir);
223
+ throw e;
224
+ }
225
+ finally {
226
+ labeled.cleanup();
227
+ }
182
228
  if (!result.ok) {
183
229
  // Nothing is being served: remove the temp dir now, not on exit.
184
230
  removeDir(serveDir);
@@ -193,7 +239,7 @@ export function registerServe(cli, adapterFactory = defaultAdapterFactory, serve
193
239
  return error({
194
240
  code: 'export-failed',
195
241
  message: result.value.labelWarning
196
- ? 'PICO-8 produced no bundle: this cart has no __label__ (the export splash), which the browser export needs. To just SEE your own build work, use `picopilot run` or `picopilot playtest` (no label needed) instead of serve. If you genuinely want a browser build to SHARE, bake a label first with `picopilot export --label <128x128.png>` (do NOT hand-edit main.p8), then re-serve.'
242
+ ? 'PICO-8 produced no bundle: this cart has no __label__ (the export splash), which the browser export needs. To just SEE your own build work, use `picopilot run` or `picopilot playtest` (no label needed) instead of serve. If you genuinely want a browser build to SHARE, give it a splash: `picopilot serve <cart> --label-frame 0` captures the title screen for you, or `picopilot serve <cart> --label <screenshot.png>` takes any path `run`/`playtest` lists under `screenshots` as-is (do NOT hand-edit main.p8).'
197
243
  : 'PICO-8 produced no export bundle. Check the cart runs without a boot error (via `picopilot run`).',
198
244
  exitCode: 1,
199
245
  });
@@ -1 +1 @@
1
- {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { type ChildRunner, type ShrinkoAdapter } from '../engine/shrinko/index.js';
2
+ /**
3
+ * Builds the {@link ShrinkoAdapter} a shrinko-backed command uses, given the
4
+ * incur-resolved env (its `PATH`). A test passes its own factory to swap in a
5
+ * stub adapter (the seam-swap contract).
6
+ */
7
+ export type ShrinkoAdapterFactory = (env: NodeJS.ProcessEnv) => ShrinkoAdapter;
8
+ /** Dependencies for {@link createShellShrinkoFactory}, injectable for tests. */
9
+ export interface ShellShrinkoFactoryDeps {
10
+ /** The parent environment shrinko inherits (defaults to `process.env`). */
11
+ readonly parentEnv?: NodeJS.ProcessEnv;
12
+ /** The child runner (defaults to the real `execFile`). */
13
+ readonly run?: ChildRunner;
14
+ }
15
+ /**
16
+ * The default shrinko factory: the shell adapter over a user-installed
17
+ * shrinko8, whose child env is the parent env overlaid with the command's
18
+ * resolved `PATH`. shrinko8 is a Python tool, so a `pip install --user` copy is
19
+ * only found when HOME (user site-packages) reaches the child.
20
+ */
21
+ export declare function createShellShrinkoFactory(deps?: ShellShrinkoFactoryDeps): ShrinkoAdapterFactory;
22
+ //# sourceMappingURL=shrinko-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shrinko-env.d.ts","sourceRoot":"","sources":["../../src/commands/shrinko-env.ts"],"names":[],"mappings":"AACA,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,cAAc,EAEnB,MAAM,4BAA4B,CAAC;AAEpC;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,cAAc,CAAC;AAE/E,gFAAgF;AAChF,MAAM,WAAW,uBAAuB;IACvC,2EAA2E;IAC3E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACvC,0DAA0D;IAC1D,QAAQ,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACxC,IAAI,GAAE,uBAA4B,GAChC,qBAAqB,CASvB"}
@@ -0,0 +1,15 @@
1
+ import { overlayEnv } from '../engine/child-env.js';
2
+ import { ShellShrinkoAdapter, } from '../engine/shrinko/index.js';
3
+ /**
4
+ * The default shrinko factory: the shell adapter over a user-installed
5
+ * shrinko8, whose child env is the parent env overlaid with the command's
6
+ * resolved `PATH`. shrinko8 is a Python tool, so a `pip install --user` copy is
7
+ * only found when HOME (user site-packages) reaches the child.
8
+ */
9
+ export function createShellShrinkoFactory(deps = {}) {
10
+ return (env) => new ShellShrinkoAdapter({
11
+ env: overlayEnv(env, deps.parentEnv ?? process.env),
12
+ run: deps.run,
13
+ });
14
+ }
15
+ //# sourceMappingURL=shrinko-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shrinko-env.js","sourceRoot":"","sources":["../../src/commands/shrinko-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAGN,mBAAmB,GACnB,MAAM,4BAA4B,CAAC;AAiBpC;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACxC,OAAgC,EAAE;IAElC,OAAO,CAAC,GAAG,EAAE,EAAE,CACd,IAAI,mBAAmB,CAAC;QACvB,GAAG,EAAE,UAAU,CACd,GAAyC,EACzC,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAC7B;QACD,GAAG,EAAE,IAAI,CAAC,GAAG;KACb,CAAC,CAAC;AACL,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import { type Cli } from 'incur';
2
- import { type ShrinkoAdapter } from '../engine/shrinko/index.js';
2
+ import { type ShrinkoAdapterFactory } from './shrinko-env.js';
3
3
  /** PICO-8's Lua token budget. A cart over this will not load in PICO-8 (US #3). */
4
4
  export declare const TOKEN_BUDGET = 8192;
5
5
  /**
6
6
  * Builds the {@link ShrinkoAdapter} a command uses, given the incur-resolved
7
- * env. The default is the shell-out {@link ShellShrinkoAdapter}, whose child
8
- * process inherits ONLY this `env` (its `PATH` is the test isolation lever).
7
+ * env. The default is the shell-out `ShellShrinkoAdapter`, whose child process
8
+ * gets the parent env with this resolved `PATH` overlaid (see `shrinko-env.ts`).
9
9
  *
10
10
  * A test passes its own factory to {@link registerTokens} to SWAP a stub
11
11
  * adapter (the seam-swap contract): the command's public output/exit must be
@@ -13,7 +13,7 @@ export declare const TOKEN_BUDGET = 8192;
13
13
  * seam, because the command only ever talks to the {@link ShrinkoAdapter}
14
14
  * interface.
15
15
  */
16
- export type ShrinkoAdapterFactory = (env: NodeJS.ProcessEnv) => ShrinkoAdapter;
16
+ export type { ShrinkoAdapterFactory } from './shrinko-env.js';
17
17
  /**
18
18
  * Registers `picopilot tokens` (US #3), the first shrinko-backed command.
19
19
  *
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/commands/tokens.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,KAAK,GAAG,EAAI,MAAM,OAAO,CAAC;AAElC,OAAO,EACN,KAAK,cAAc,EAGnB,MAAM,4BAA4B,CAAC;AAEpC,mFAAmF;AACnF,eAAO,MAAM,YAAY,OAAO,CAAC;AAEjC;;;;;;;;;;GAUG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,cAAc,CAAC;AAK/E;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAC7B,GAAG,EAAE,GAAG,CAAC,GAAG,EACZ,cAAc,GAAE,qBAA6C,GAC3D,IAAI,CAqHN"}
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/commands/tokens.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,KAAK,GAAG,EAAI,MAAM,OAAO,CAAC;AAMlC,OAAO,EAEN,KAAK,qBAAqB,EAC1B,MAAM,kBAAkB,CAAC;AAE1B,mFAAmF;AACnF,eAAO,MAAM,YAAY,OAAO,CAAC;AAEjC;;;;;;;;;;GAUG;AACH,YAAY,EAAC,qBAAqB,EAAC,MAAM,kBAAkB,CAAC;AAK5D;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAC7B,GAAG,EAAE,GAAG,CAAC,GAAG,EACZ,cAAc,GAAE,qBAA6C,GAC3D,IAAI,CAqHN"}
@@ -1,10 +1,11 @@
1
1
  import { existsSync } from 'node:fs';
2
2
  import { isAbsolute, resolve } from 'node:path';
3
3
  import { z } from 'incur';
4
- import { ShrinkoParseError, ShellShrinkoAdapter, } from '../engine/shrinko/index.js';
4
+ import { ShrinkoParseError, } from '../engine/shrinko/index.js';
5
+ import { createShellShrinkoFactory, } from './shrinko-env.js';
5
6
  /** PICO-8's Lua token budget. A cart over this will not load in PICO-8 (US #3). */
6
7
  export const TOKEN_BUDGET = 8192;
7
- const defaultAdapterFactory = (env) => new ShellShrinkoAdapter({ env });
8
+ const defaultAdapterFactory = createShellShrinkoFactory();
8
9
  /**
9
10
  * Registers `picopilot tokens` (US #3), the first shrinko-backed command.
10
11
  *