@funpixel/tools 0.0.0-stage → 0.1.1

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 (2414) hide show
  1. package/LICENSE +115 -0
  2. package/NOTICE +28 -0
  3. package/README.md +110 -2
  4. package/bench/LICENSE +674 -0
  5. package/bench/README.md +10 -0
  6. package/bench/entrypoint.py +94 -0
  7. package/bench/handlers/__init__.py +53 -0
  8. package/bench/handlers/apply_skin.py +192 -0
  9. package/bench/handlers/apply_texture.py +195 -0
  10. package/bench/handlers/audit_clips.py +351 -0
  11. package/bench/handlers/author_clips.py +297 -0
  12. package/bench/handlers/author_motion.py +298 -0
  13. package/bench/handlers/bake_emissive.py +136 -0
  14. package/bench/handlers/build_level.py +395 -0
  15. package/bench/handlers/decimate.py +220 -0
  16. package/bench/handlers/fit_rig.py +273 -0
  17. package/bench/handlers/fracture.py +233 -0
  18. package/bench/handlers/humanoid.py +119 -0
  19. package/bench/handlers/inspect.py +212 -0
  20. package/bench/handlers/level_check.py +68 -0
  21. package/bench/handlers/level_geo.py +150 -0
  22. package/bench/handlers/level_proof.py +117 -0
  23. package/bench/handlers/level_props.py +135 -0
  24. package/bench/handlers/lod.py +83 -0
  25. package/bench/handlers/merge_clips.py +122 -0
  26. package/bench/handlers/mirror_limb.py +336 -0
  27. package/bench/handlers/motion_specs.json +11 -0
  28. package/bench/handlers/normalize_materials.py +182 -0
  29. package/bench/handlers/normalize_transform.py +174 -0
  30. package/bench/handlers/prune_clips.py +141 -0
  31. package/bench/handlers/raster.py +98 -0
  32. package/bench/handlers/render.py +239 -0
  33. package/bench/handlers/render_views.py +101 -0
  34. package/bench/handlers/retarget_clips.py +185 -0
  35. package/bench/handlers/scene.py +311 -0
  36. package/bench/handlers/sheet.py +118 -0
  37. package/bench/handlers/texels.py +176 -0
  38. package/bench/handlers/views.py +232 -0
  39. package/dist/api/generated/openapi.js +1 -0
  40. package/dist/api/http.js +71 -0
  41. package/dist/api/jobs.js +94 -0
  42. package/dist/assets/bakeoff.js +61 -0
  43. package/dist/assets/counts.js +60 -0
  44. package/dist/assets/gen.js +230 -0
  45. package/dist/assets/lock.js +77 -0
  46. package/dist/assets/manifest.js +236 -0
  47. package/dist/assets/palette-fit.js +99 -0
  48. package/dist/assets/pixelart.js +192 -0
  49. package/dist/assets/pixels.js +131 -0
  50. package/dist/assets/plan.js +169 -0
  51. package/dist/assets/process.js +209 -0
  52. package/dist/assets/script.js +194 -0
  53. package/dist/assets/steps.js +294 -0
  54. package/dist/bin.js +8 -0
  55. package/dist/board/board.js +99 -0
  56. package/dist/cast/library.js +102 -0
  57. package/dist/cast/measure.js +222 -0
  58. package/dist/cli.js +2917 -0
  59. package/dist/clip/clip.js +83 -0
  60. package/dist/commands/account.js +158 -0
  61. package/dist/commands/assets-pixels.js +106 -0
  62. package/dist/commands/assets.js +473 -0
  63. package/dist/commands/beats.js +77 -0
  64. package/dist/commands/board.js +162 -0
  65. package/dist/commands/boxes.js +89 -0
  66. package/dist/commands/capture-all.js +92 -0
  67. package/dist/commands/cast.js +84 -0
  68. package/dist/commands/character.js +58 -0
  69. package/dist/commands/check.js +404 -0
  70. package/dist/commands/clip.js +112 -0
  71. package/dist/commands/compare-takes.js +204 -0
  72. package/dist/commands/compare-target.js +149 -0
  73. package/dist/commands/compare.js +117 -0
  74. package/dist/commands/compose-variations.js +202 -0
  75. package/dist/commands/compose.js +163 -0
  76. package/dist/commands/cut.js +13 -0
  77. package/dist/commands/decide.js +90 -0
  78. package/dist/commands/depth.js +171 -0
  79. package/dist/commands/dev.js +138 -0
  80. package/dist/commands/directions.js +106 -0
  81. package/dist/commands/doctor.js +281 -0
  82. package/dist/commands/export.js +88 -0
  83. package/dist/commands/feedback.js +496 -0
  84. package/dist/commands/feel.js +144 -0
  85. package/dist/commands/fidelity.js +95 -0
  86. package/dist/commands/find.js +116 -0
  87. package/dist/commands/firstlook.js +138 -0
  88. package/dist/commands/flow.js +600 -0
  89. package/dist/commands/framing.js +53 -0
  90. package/dist/commands/gdd.js +227 -0
  91. package/dist/commands/gen.js +512 -0
  92. package/dist/commands/greenlight.js +148 -0
  93. package/dist/commands/hook.js +171 -0
  94. package/dist/commands/init.js +234 -0
  95. package/dist/commands/inspect.js +161 -0
  96. package/dist/commands/job.js +41 -0
  97. package/dist/commands/jobs.js +87 -0
  98. package/dist/commands/journal.js +58 -0
  99. package/dist/commands/journey.js +228 -0
  100. package/dist/commands/judge.js +191 -0
  101. package/dist/commands/lanes.js +571 -0
  102. package/dist/commands/lessons.js +74 -0
  103. package/dist/commands/life.js +134 -0
  104. package/dist/commands/login.js +134 -0
  105. package/dist/commands/look-3d.js +105 -0
  106. package/dist/commands/look-fit.js +116 -0
  107. package/dist/commands/look-hud.js +180 -0
  108. package/dist/commands/look-read.js +162 -0
  109. package/dist/commands/look-sheet.js +152 -0
  110. package/dist/commands/look-theme.js +136 -0
  111. package/dist/commands/look.js +373 -0
  112. package/dist/commands/loop.js +112 -0
  113. package/dist/commands/loudness.js +69 -0
  114. package/dist/commands/mobile-qa.js +119 -0
  115. package/dist/commands/model.js +256 -0
  116. package/dist/commands/models.js +93 -0
  117. package/dist/commands/motion.js +305 -0
  118. package/dist/commands/next.js +72 -0
  119. package/dist/commands/note.js +294 -0
  120. package/dist/commands/optimize.js +212 -0
  121. package/dist/commands/owner.js +109 -0
  122. package/dist/commands/pack.js +66 -0
  123. package/dist/commands/parts.js +635 -0
  124. package/dist/commands/phone.js +398 -0
  125. package/dist/commands/pick.js +146 -0
  126. package/dist/commands/pitch.js +205 -0
  127. package/dist/commands/places.js +89 -0
  128. package/dist/commands/play.js +368 -0
  129. package/dist/commands/playable.js +51 -0
  130. package/dist/commands/playtest.js +262 -0
  131. package/dist/commands/profile.js +292 -0
  132. package/dist/commands/progress.js +537 -0
  133. package/dist/commands/publish.js +165 -0
  134. package/dist/commands/reach.js +72 -0
  135. package/dist/commands/reel.js +177 -0
  136. package/dist/commands/review.js +112 -0
  137. package/dist/commands/rooms.js +180 -0
  138. package/dist/commands/schema.js +29 -0
  139. package/dist/commands/score.js +326 -0
  140. package/dist/commands/serve.js +67 -0
  141. package/dist/commands/setup.js +254 -0
  142. package/dist/commands/sim.js +179 -0
  143. package/dist/commands/simulator.js +154 -0
  144. package/dist/commands/smoke-build.js +305 -0
  145. package/dist/commands/smoke.js +37 -0
  146. package/dist/commands/spec.js +114 -0
  147. package/dist/commands/store.js +154 -0
  148. package/dist/commands/test.js +104 -0
  149. package/dist/commands/trailer.js +255 -0
  150. package/dist/commands/unity-editor.js +322 -0
  151. package/dist/commands/unity-player.js +672 -0
  152. package/dist/commands/unity.js +198 -0
  153. package/dist/commands/upgrade.js +186 -0
  154. package/dist/commands/variety.js +108 -0
  155. package/dist/commands/verify.js +293 -0
  156. package/dist/commands/walk.js +449 -0
  157. package/dist/commands/widen.js +133 -0
  158. package/dist/commands/world.js +175 -0
  159. package/dist/commands/wow.js +143 -0
  160. package/dist/commands/zero.js +71 -0
  161. package/dist/compose/adsheet.js +61 -0
  162. package/dist/compose/contract.js +248 -0
  163. package/dist/compose/facts.js +81 -0
  164. package/dist/compose/hyperframes.js +102 -0
  165. package/dist/compose/page.js +216 -0
  166. package/dist/compose/probe.js +160 -0
  167. package/dist/compose/run.js +170 -0
  168. package/dist/compose/sheet.js +92 -0
  169. package/dist/compose/starters.js +247 -0
  170. package/dist/compose/variations.js +203 -0
  171. package/dist/criteria.js +35 -0
  172. package/dist/depth/experience.js +61 -0
  173. package/dist/depth/fill.js +102 -0
  174. package/dist/depth/inventory.js +161 -0
  175. package/dist/depth/pacing.js +173 -0
  176. package/dist/depth/story.js +97 -0
  177. package/dist/dev/devtools.js +119 -0
  178. package/dist/dev/hold.js +46 -0
  179. package/dist/dev/lan.js +15 -0
  180. package/dist/dev/open.js +30 -0
  181. package/dist/dev/qr.js +124 -0
  182. package/dist/devtools/LICENSES/pixi.js.LICENSE +21 -0
  183. package/dist/devtools/LICENSES/preact.LICENSE +21 -0
  184. package/dist/devtools/LICENSES/source-map-js.LICENSE +28 -0
  185. package/dist/devtools/LICENSES/three.LICENSE +21 -0
  186. package/dist/devtools/inspector/funpixel-inspector.pixi.min.js +1 -0
  187. package/dist/devtools/inspector/funpixel-inspector.threejs.min.js +1 -0
  188. package/dist/devtools/inspector/hooked-engines/pixi.min.js +8 -0
  189. package/dist/devtools/inspector/hooked-engines/preact.min.js +1 -0
  190. package/dist/devtools/inspector/hooked-engines/threejs.min.js +12 -0
  191. package/dist/devtools/kapture/funpixel-kapture.min.js +1 -0
  192. package/dist/devtools/profiler/funpixel-profiler.pixi.min.js +1 -0
  193. package/dist/devtools/profiler/funpixel-profiler.threejs.min.js +1 -0
  194. package/dist/direct/moves.js +234 -0
  195. package/dist/direct/read.js +59 -0
  196. package/dist/direct/round.js +80 -0
  197. package/dist/doctor/host.js +245 -0
  198. package/dist/doctor/unity-checks.js +380 -0
  199. package/dist/doctor/unity-history.js +589 -0
  200. package/dist/doctor/unity-host.js +160 -0
  201. package/dist/doctor/unity-import-rules.js +874 -0
  202. package/dist/doctor/unity-meta.js +225 -0
  203. package/dist/doctor/unity-project.js +297 -0
  204. package/dist/doctor/unity.js +171 -0
  205. package/dist/export/export.js +165 -0
  206. package/dist/export/metadata.js +25 -0
  207. package/dist/export/runtime.js +119 -0
  208. package/dist/export/scan.js +78 -0
  209. package/dist/export/select.js +193 -0
  210. package/dist/export/strip.js +42 -0
  211. package/dist/feedback/ab.js +55 -0
  212. package/dist/feedback/auto.js +44 -0
  213. package/dist/feedback/learn.js +255 -0
  214. package/dist/feedback/measure.js +49 -0
  215. package/dist/feedback/page.js +66 -0
  216. package/dist/feel/feedback.js +85 -0
  217. package/dist/feel/judge.js +420 -0
  218. package/dist/feel/run.js +185 -0
  219. package/dist/feel/spec.js +124 -0
  220. package/dist/feel/sweep.js +156 -0
  221. package/dist/fidelity/consistency.js +205 -0
  222. package/dist/fidelity/match.js +675 -0
  223. package/dist/fidelity/run.js +107 -0
  224. package/dist/find/keywords.js +97 -0
  225. package/dist/find/names.js +45 -0
  226. package/dist/find/route.js +59 -0
  227. package/dist/firstlook/quality.js +261 -0
  228. package/dist/firstlook/render.js +111 -0
  229. package/dist/firstlook/set.js +218 -0
  230. package/dist/flow/flow.js +455 -0
  231. package/dist/flow/look.js +139 -0
  232. package/dist/frame/behaviour.js +53 -0
  233. package/dist/frame/clock.js +117 -0
  234. package/dist/frame/contract.js +111 -0
  235. package/dist/frame/genre.js +65 -0
  236. package/dist/frame/idle.js +58 -0
  237. package/dist/frame/opening.js +171 -0
  238. package/dist/frames/loop.js +52 -0
  239. package/dist/frames/sheet.js +69 -0
  240. package/dist/gdd/book.js +483 -0
  241. package/dist/gdd/chapters.js +71 -0
  242. package/dist/gdd/design.js +135 -0
  243. package/dist/gdd/doc.js +32 -0
  244. package/dist/gdd/levelmap.js +428 -0
  245. package/dist/gdd/measures.js +477 -0
  246. package/dist/gdd/page.js +111 -0
  247. package/dist/gdd/rubric.js +250 -0
  248. package/dist/gdd/size.js +83 -0
  249. package/dist/gdd/tiers.js +148 -0
  250. package/dist/gdd/world.js +98 -0
  251. package/dist/gdd/worth.js +507 -0
  252. package/dist/gen/kinds.js +451 -0
  253. package/dist/gen/local/doctor.js +25 -0
  254. package/dist/gen/local/index.js +3 -0
  255. package/dist/gen/local/kokoro.js +334 -0
  256. package/dist/gen/local/master.js +248 -0
  257. package/dist/gen/local/provider.js +65 -0
  258. package/dist/gen/local/voice-rules.js +156 -0
  259. package/dist/gen/models.generated.js +469 -0
  260. package/dist/gen/models.js +53 -0
  261. package/dist/gen/prompt-lint.js +35 -0
  262. package/dist/gen/record.js +73 -0
  263. package/dist/gen/save.js +101 -0
  264. package/dist/gen/title.js +55 -0
  265. package/dist/gen/unity.js +334 -0
  266. package/dist/goals/goals.js +204 -0
  267. package/dist/goals/run.js +90 -0
  268. package/dist/greenlight/ambition.js +42 -0
  269. package/dist/greenlight/bible.js +138 -0
  270. package/dist/greenlight/lock.js +48 -0
  271. package/dist/greenlight/match.js +19 -0
  272. package/dist/greenlight/md.js +82 -0
  273. package/dist/greenlight/page.js +100 -0
  274. package/dist/greenlight/pitches.js +66 -0
  275. package/dist/greenlight/worth.js +90 -0
  276. package/dist/guidance.js +24 -0
  277. package/dist/init/bare.js +114 -0
  278. package/dist/init/git.js +56 -0
  279. package/dist/init/starter.js +166 -0
  280. package/dist/init/starters.js +179 -0
  281. package/dist/inspect/describe.js +125 -0
  282. package/dist/inspect/devserver.js +40 -0
  283. package/dist/journey/diff.js +74 -0
  284. package/dist/journey/from-round.js +44 -0
  285. package/dist/journey/record.js +76 -0
  286. package/dist/journey/run.js +139 -0
  287. package/dist/journey/script.js +223 -0
  288. package/dist/judge/common.js +60 -0
  289. package/dist/judge/identity.js +68 -0
  290. package/dist/judge/sources.js +37 -0
  291. package/dist/judge/structure.js +59 -0
  292. package/dist/keys/device.js +145 -0
  293. package/dist/keys/store.js +167 -0
  294. package/dist/lanes/fence.js +108 -0
  295. package/dist/lanes/gate.js +123 -0
  296. package/dist/lanes/lanes.js +355 -0
  297. package/dist/lanes/union.js +62 -0
  298. package/dist/lanes/where.js +49 -0
  299. package/dist/lessons/motifs.js +97 -0
  300. package/dist/lessons/store.js +56 -0
  301. package/dist/look/anim.js +206 -0
  302. package/dist/look/boxes.js +209 -0
  303. package/dist/look/dressing.js +24 -0
  304. package/dist/look/feedback.js +50 -0
  305. package/dist/look/fit.js +123 -0
  306. package/dist/look/held.js +92 -0
  307. package/dist/look/hook.js +169 -0
  308. package/dist/look/hud.js +189 -0
  309. package/dist/look/image-io.js +50 -0
  310. package/dist/look/life.js +96 -0
  311. package/dist/look/light.js +42 -0
  312. package/dist/look/look.js +85 -0
  313. package/dist/look/loops.js +108 -0
  314. package/dist/look/made-of.js +242 -0
  315. package/dist/look/moments.js +32 -0
  316. package/dist/look/motion.js +44 -0
  317. package/dist/look/phone-play.js +142 -0
  318. package/dist/look/player.js +32 -0
  319. package/dist/look/png.js +117 -0
  320. package/dist/look/readability.js +100 -0
  321. package/dist/look/roles.js +109 -0
  322. package/dist/look/sheet.js +104 -0
  323. package/dist/look/theme.js +278 -0
  324. package/dist/look/touch.js +129 -0
  325. package/dist/look/ui-style.js +102 -0
  326. package/dist/machine/procs.js +117 -0
  327. package/dist/managed.js +15 -0
  328. package/dist/mcp/hosted.js +174 -0
  329. package/dist/mcp/models.generated.js +538 -0
  330. package/dist/mcp/models.js +35 -0
  331. package/dist/mcp/server.js +330 -0
  332. package/dist/memory/decisions.js +138 -0
  333. package/dist/memory/journal.js +108 -0
  334. package/dist/model/bench.js +83 -0
  335. package/dist/model/blender.js +106 -0
  336. package/dist/model/clips.js +34 -0
  337. package/dist/model/finalize.js +33 -0
  338. package/dist/motion/checks.js +173 -0
  339. package/dist/motion/contract.js +177 -0
  340. package/dist/motion/encode.js +37 -0
  341. package/dist/motion/render.js +167 -0
  342. package/dist/motion/starter.js +54 -0
  343. package/dist/optimize/check.js +29 -0
  344. package/dist/optimize/helper.js +80 -0
  345. package/dist/owner/bar.js +285 -0
  346. package/dist/owner/match.js +105 -0
  347. package/dist/pack/build.js +97 -0
  348. package/dist/pack/deps.js +28 -0
  349. package/dist/pack/leaks.js +77 -0
  350. package/dist/pack/limits.js +51 -0
  351. package/dist/pack/report.js +35 -0
  352. package/dist/phone/baguette.js +139 -0
  353. package/dist/phone/listen.js +65 -0
  354. package/dist/pipeline/pipeline.js +929 -0
  355. package/dist/plan/actions.js +18 -0
  356. package/dist/plan/notes.js +15 -0
  357. package/dist/play/clock.js +40 -0
  358. package/dist/play/condition.js +45 -0
  359. package/dist/play/frames.js +60 -0
  360. package/dist/play/input.js +118 -0
  361. package/dist/play/pointer.js +21 -0
  362. package/dist/play/report.js +124 -0
  363. package/dist/play/server.js +274 -0
  364. package/dist/play/session.js +231 -0
  365. package/dist/play/steps.js +192 -0
  366. package/dist/playable/build.js +90 -0
  367. package/dist/playable/cta.js +88 -0
  368. package/dist/playable/networks.js +33 -0
  369. package/dist/playable/scan.js +46 -0
  370. package/dist/playtest/after-round.js +60 -0
  371. package/dist/playtest/assemble.js +168 -0
  372. package/dist/playtest/experience-run.js +69 -0
  373. package/dist/playtest/experience.js +77 -0
  374. package/dist/playtest/facts.js +90 -0
  375. package/dist/playtest/fidelity.js +179 -0
  376. package/dist/playtest/history.js +115 -0
  377. package/dist/playtest/hits.js +48 -0
  378. package/dist/playtest/hosted.js +98 -0
  379. package/dist/playtest/keep.js +110 -0
  380. package/dist/playtest/ledger.js +77 -0
  381. package/dist/playtest/length.js +113 -0
  382. package/dist/playtest/measure.js +181 -0
  383. package/dist/playtest/mobile-qa.js +391 -0
  384. package/dist/playtest/mockups.js +198 -0
  385. package/dist/playtest/moments.js +28 -0
  386. package/dist/playtest/prepare.js +162 -0
  387. package/dist/playtest/rank.js +184 -0
  388. package/dist/playtest/report.js +209 -0
  389. package/dist/playtest/route.js +139 -0
  390. package/dist/playtest/seats.js +128 -0
  391. package/dist/playtest/sheet.js +38 -0
  392. package/dist/playtest/stop.js +54 -0
  393. package/dist/playtest/stuck.js +47 -0
  394. package/dist/production/contract.js +61 -0
  395. package/dist/production/mirror.js +96 -0
  396. package/dist/production/tier.js +66 -0
  397. package/dist/profile/compare.js +171 -0
  398. package/dist/progress/answers.js +35 -0
  399. package/dist/progress/holds.js +106 -0
  400. package/dist/progress/notify.js +25 -0
  401. package/dist/progress/progress.js +300 -0
  402. package/dist/publish/build.js +54 -0
  403. package/dist/publish/folder.js +106 -0
  404. package/dist/publish/funpixel.js +96 -0
  405. package/dist/publish/hosts.js +48 -0
  406. package/dist/reach/envelope.js +111 -0
  407. package/dist/reach/load.js +84 -0
  408. package/dist/reach/side.js +320 -0
  409. package/dist/reach/spec3d.js +338 -0
  410. package/dist/reach/tiles.js +163 -0
  411. package/dist/reel/encode.js +34 -0
  412. package/dist/reel/tour.js +81 -0
  413. package/dist/relay/bots.js +62 -0
  414. package/dist/relay/bridge.js +54 -0
  415. package/dist/relay/local.js +82 -0
  416. package/dist/relay/redis.js +40 -0
  417. package/dist/review/audio.js +72 -0
  418. package/dist/review/ledger.js +60 -0
  419. package/dist/review/media.js +114 -0
  420. package/dist/review/model.js +348 -0
  421. package/dist/review/picture.js +113 -0
  422. package/dist/review/specs.js +134 -0
  423. package/dist/review/video.js +248 -0
  424. package/dist/schema/game.js +308 -0
  425. package/dist/score/comfort.js +79 -0
  426. package/dist/score/light.js +62 -0
  427. package/dist/score/measure.js +386 -0
  428. package/dist/score/vision.js +59 -0
  429. package/dist/serve/webgl.js +415 -0
  430. package/dist/setup/lsp.js +42 -0
  431. package/dist/sim/curve.js +122 -0
  432. package/dist/sim/judge.js +240 -0
  433. package/dist/sim/skeleton.js +65 -0
  434. package/dist/simulator/lease.js +159 -0
  435. package/dist/simulator/orient.js +57 -0
  436. package/dist/simulator/screen.js +113 -0
  437. package/dist/simulator/simctl.js +79 -0
  438. package/dist/smoke/art.js +20 -0
  439. package/dist/smoke/checks.js +165 -0
  440. package/dist/smoke/logic.js +73 -0
  441. package/dist/smoke/orphans.js +78 -0
  442. package/dist/smoke/palette.js +16 -0
  443. package/dist/smoke/sources.js +36 -0
  444. package/dist/sound/beats.js +95 -0
  445. package/dist/sound/loudness.js +94 -0
  446. package/dist/spec/extract.js +123 -0
  447. package/dist/spec/lint.js +261 -0
  448. package/dist/spec/presets.js +30 -0
  449. package/dist/spec/rooms.js +188 -0
  450. package/dist/spec/scaffold.js +457 -0
  451. package/dist/spec/sections.js +16 -0
  452. package/dist/spec/tunables.js +74 -0
  453. package/dist/stage/harnessignore.js +90 -0
  454. package/dist/stage/stage.js +57 -0
  455. package/dist/stage/tar.js +41 -0
  456. package/dist/status/board.js +172 -0
  457. package/dist/status/file.js +112 -0
  458. package/dist/status/inbox.js +55 -0
  459. package/dist/status/status.js +311 -0
  460. package/dist/store/answers.js +47 -0
  461. package/dist/store/doctor.js +120 -0
  462. package/dist/store/images.js +65 -0
  463. package/dist/store/init.js +101 -0
  464. package/dist/store/lint.js +392 -0
  465. package/dist/store/plan.js +133 -0
  466. package/dist/store/sdks.js +107 -0
  467. package/dist/studio/forks.js +93 -0
  468. package/dist/studio/pitch.js +294 -0
  469. package/dist/studio/widen.js +212 -0
  470. package/dist/suite/node-run.js +81 -0
  471. package/dist/suite/test-types.js +71 -0
  472. package/dist/trailer/assemble.js +90 -0
  473. package/dist/trailer/beats.js +74 -0
  474. package/dist/trailer/cards.js +77 -0
  475. package/dist/trailer/cues.js +78 -0
  476. package/dist/trailer/cut.js +49 -0
  477. package/dist/trailer/find.js +33 -0
  478. package/dist/trailer/mix.js +109 -0
  479. package/dist/trailer/placement.js +30 -0
  480. package/dist/types.js +1 -0
  481. package/dist/ui.js +79 -0
  482. package/dist/unity/bridge.js +251 -0
  483. package/dist/unity/disk.js +666 -0
  484. package/dist/unity/editor.js +471 -0
  485. package/dist/unity/gc.js +140 -0
  486. package/dist/unity/mcp-stdio.js +141 -0
  487. package/dist/unity/probe/budgets.js +84 -0
  488. package/dist/unity/probe/client.js +93 -0
  489. package/dist/unity/probe/install.js +118 -0
  490. package/dist/unity/probe/player.js +255 -0
  491. package/dist/unity/probe/report.js +102 -0
  492. package/dist/unity/probe/script.js +225 -0
  493. package/dist/unity/queue.js +353 -0
  494. package/dist/unity/run.js +172 -0
  495. package/dist/update.js +111 -0
  496. package/dist/variety/compare.js +104 -0
  497. package/dist/variety/places.js +109 -0
  498. package/dist/variety/profile.js +127 -0
  499. package/dist/vendor/verify/README.md +19 -0
  500. package/dist/vendor/verify/package.json +14 -0
  501. package/dist/vendor/verify/src/index.d.ts +105 -0
  502. package/dist/vendor/verify/src/index.js +78 -0
  503. package/dist/vendor/verify/src/init/preview_shim.js +63 -0
  504. package/dist/vendor/verify/src/page/actors.js +258 -0
  505. package/dist/vendor/verify/src/page/audio.js +106 -0
  506. package/dist/vendor/verify/src/page/audio_cues.js +141 -0
  507. package/dist/vendor/verify/src/page/audio_files.js +56 -0
  508. package/dist/vendor/verify/src/page/bot_sweep.js +72 -0
  509. package/dist/vendor/verify/src/page/capture_view.js +164 -0
  510. package/dist/vendor/verify/src/page/context_loss_listener.js +23 -0
  511. package/dist/vendor/verify/src/page/dressing.js +106 -0
  512. package/dist/vendor/verify/src/page/enter_view.js +33 -0
  513. package/dist/vendor/verify/src/page/feel.js +126 -0
  514. package/dist/vendor/verify/src/page/feel_sweep.js +75 -0
  515. package/dist/vendor/verify/src/page/first_paint.js +54 -0
  516. package/dist/vendor/verify/src/page/fonts.js +50 -0
  517. package/dist/vendor/verify/src/page/frame_honesty.js +44 -0
  518. package/dist/vendor/verify/src/page/front_door.js +197 -0
  519. package/dist/vendor/verify/src/page/grounding.js +448 -0
  520. package/dist/vendor/verify/src/page/hooks.js +74 -0
  521. package/dist/vendor/verify/src/page/hud.js +261 -0
  522. package/dist/vendor/verify/src/page/inventory.js +15 -0
  523. package/dist/vendor/verify/src/page/layout.js +378 -0
  524. package/dist/vendor/verify/src/page/levels.js +40 -0
  525. package/dist/vendor/verify/src/page/life.js +123 -0
  526. package/dist/vendor/verify/src/page/life_anim.js +501 -0
  527. package/dist/vendor/verify/src/page/made_of.js +83 -0
  528. package/dist/vendor/verify/src/page/mechanic_check.js +272 -0
  529. package/dist/vendor/verify/src/page/moments.js +36 -0
  530. package/dist/vendor/verify/src/page/motion.js +139 -0
  531. package/dist/vendor/verify/src/page/perf.js +255 -0
  532. package/dist/vendor/verify/src/page/phone_check.js +229 -0
  533. package/dist/vendor/verify/src/page/play.js +117 -0
  534. package/dist/vendor/verify/src/page/play_act.js +164 -0
  535. package/dist/vendor/verify/src/page/preview.js +33 -0
  536. package/dist/vendor/verify/src/page/recorder.js +54 -0
  537. package/dist/vendor/verify/src/page/render_health.js +83 -0
  538. package/dist/vendor/verify/src/page/renderer.js +75 -0
  539. package/dist/vendor/verify/src/page/scene.js +222 -0
  540. package/dist/vendor/verify/src/page/self_test.js +25 -0
  541. package/dist/vendor/verify/src/page/step_clock.js +247 -0
  542. package/dist/vendor/verify/src/page/surfaces.js +261 -0
  543. package/dist/vendor/verify/src/page/world_actors.js +264 -0
  544. package/dist/verify/browser.js +245 -0
  545. package/dist/verify/console.js +34 -0
  546. package/dist/verify/fingerprint.js +72 -0
  547. package/dist/verify/gpu.js +33 -0
  548. package/dist/verify/health.js +172 -0
  549. package/dist/verify/hooks.js +34 -0
  550. package/dist/verify/judge.js +303 -0
  551. package/dist/verify/players.js +123 -0
  552. package/dist/verify/probe.js +236 -0
  553. package/dist/verify/reads.js +32 -0
  554. package/dist/verify/run.js +56 -0
  555. package/dist/verify/serve.js +36 -0
  556. package/dist/walk/film.js +37 -0
  557. package/dist/walk/judge.js +287 -0
  558. package/dist/walk/routes.js +199 -0
  559. package/dist/walk/world.js +292 -0
  560. package/dist/world/brief.js +86 -0
  561. package/dist/world/check.js +254 -0
  562. package/dist/world/forge.js +542 -0
  563. package/dist/world/format.js +40 -0
  564. package/dist/world/variety.js +59 -0
  565. package/dist/wow/catalogue.js +86 -0
  566. package/dist/wow/picks.js +74 -0
  567. package/package.json +51 -4
  568. package/panel/asset-identity.md +61 -0
  569. package/panel/asset-structure.md +55 -0
  570. package/panel/blockers.md +47 -0
  571. package/panel/brief.md +89 -0
  572. package/panel/clip.md +54 -0
  573. package/panel/experience-personas.json +4 -0
  574. package/panel/experience.md +96 -0
  575. package/panel/fidelity-ui.md +74 -0
  576. package/panel/fidelity.md +83 -0
  577. package/panel/greenlight-pitch.md +69 -0
  578. package/panel/greenlight.md +87 -0
  579. package/panel/mobile-qa.md +128 -0
  580. package/panel/personas.json +6 -0
  581. package/panel/reference-match.md +12 -0
  582. package/panel/versus.md +31 -0
  583. package/plugins/.agents/plugins/marketplace.json +18 -0
  584. package/plugins/.claude-plugin/marketplace.json +17 -0
  585. package/plugins/.cursor-plugin/marketplace.json +13 -0
  586. package/plugins/LICENSE +115 -0
  587. package/plugins/README.md +16 -0
  588. package/plugins/THIRD_PARTY_NOTICES.md +75 -0
  589. package/plugins/claude/.claude-plugin/plugin.json +19 -0
  590. package/plugins/claude/.mcp.json +10 -0
  591. package/plugins/claude/LICENSE +115 -0
  592. package/plugins/claude/README.md +14 -0
  593. package/plugins/claude/THIRD_PARTY_NOTICES.md +75 -0
  594. package/plugins/claude/agents/art-director.md +54 -0
  595. package/plugins/claude/agents/audio-director.md +51 -0
  596. package/plugins/claude/agents/critic.md +113 -0
  597. package/plugins/claude/agents/lane.md +38 -0
  598. package/plugins/claude/agents/level-designer.md +45 -0
  599. package/plugins/claude/agents/mobile-qa.md +71 -0
  600. package/plugins/claude/agents/player.md +144 -0
  601. package/plugins/claude/agents/qa-lead.md +52 -0
  602. package/plugins/claude/commands/first-look.md +59 -0
  603. package/plugins/claude/commands/flow.md +50 -0
  604. package/plugins/claude/commands/lanes.md +38 -0
  605. package/plugins/claude/commands/mobile-qa.md +28 -0
  606. package/plugins/claude/commands/new.md +94 -0
  607. package/plugins/claude/commands/playtest.md +66 -0
  608. package/plugins/claude/commands/publish.md +23 -0
  609. package/plugins/claude/commands/smoke-build.md +25 -0
  610. package/plugins/claude/commands/verify.md +20 -0
  611. package/plugins/claude/hooks/brief.md +135 -0
  612. package/plugins/claude/hooks/critic-receipts.mjs +86 -0
  613. package/plugins/claude/hooks/durable.mjs +56 -0
  614. package/plugins/claude/hooks/fence.mjs +30 -0
  615. package/plugins/claude/hooks/floors.mjs +181 -0
  616. package/plugins/claude/hooks/flow.mjs +154 -0
  617. package/plugins/claude/hooks/front-door.mjs +68 -0
  618. package/plugins/claude/hooks/guidance.json +3 -0
  619. package/plugins/claude/hooks/hints.mjs +183 -0
  620. package/plugins/claude/hooks/hooks.json +62 -0
  621. package/plugins/claude/hooks/lib.mjs +362 -0
  622. package/plugins/claude/hooks/memory.mjs +92 -0
  623. package/plugins/claude/hooks/mobile-qa.mjs +43 -0
  624. package/plugins/claude/hooks/note.mjs +63 -0
  625. package/plugins/claude/hooks/nudge.mjs +98 -0
  626. package/plugins/claude/hooks/pipeline.mjs +207 -0
  627. package/plugins/claude/hooks/prompt.mjs +51 -0
  628. package/plugins/claude/hooks/quality.mjs +310 -0
  629. package/plugins/claude/hooks/reach.mjs +93 -0
  630. package/plugins/claude/hooks/scope.mjs +44 -0
  631. package/plugins/claude/hooks/session-log.mjs +101 -0
  632. package/plugins/claude/hooks/session-start.mjs +194 -0
  633. package/plugins/claude/hooks/skill-names.json +19 -0
  634. package/plugins/claude/hooks/stop-gate.mjs +303 -0
  635. package/plugins/claude/hooks/vendor/direct/round.mjs +81 -0
  636. package/plugins/claude/hooks/vendor/find/names.mjs +46 -0
  637. package/plugins/claude/hooks/vendor/firstlook/set.mjs +219 -0
  638. package/plugins/claude/hooks/vendor/flow/flow.mjs +456 -0
  639. package/plugins/claude/hooks/vendor/flow/look.mjs +140 -0
  640. package/plugins/claude/hooks/vendor/gdd/book.mjs +484 -0
  641. package/plugins/claude/hooks/vendor/gdd/chapters.mjs +72 -0
  642. package/plugins/claude/hooks/vendor/gdd/doc.mjs +33 -0
  643. package/plugins/claude/hooks/vendor/gdd/levelmap.mjs +429 -0
  644. package/plugins/claude/hooks/vendor/gdd/rubric.mjs +251 -0
  645. package/plugins/claude/hooks/vendor/gdd/worth.mjs +508 -0
  646. package/plugins/claude/hooks/vendor/lanes/fence.mjs +109 -0
  647. package/plugins/claude/hooks/vendor/lanes/lanes.mjs +356 -0
  648. package/plugins/claude/hooks/vendor/lanes/union.mjs +63 -0
  649. package/plugins/claude/hooks/vendor/lessons/motifs.mjs +98 -0
  650. package/plugins/claude/hooks/vendor/lessons/store.mjs +57 -0
  651. package/plugins/claude/hooks/vendor/look/made-of.mjs +243 -0
  652. package/plugins/claude/hooks/vendor/look/roles.mjs +110 -0
  653. package/plugins/claude/hooks/vendor/memory/decisions.mjs +139 -0
  654. package/plugins/claude/hooks/vendor/memory/journal.mjs +109 -0
  655. package/plugins/claude/hooks/vendor/owner/bar.mjs +286 -0
  656. package/plugins/claude/hooks/vendor/pipeline/pipeline.mjs +930 -0
  657. package/plugins/claude/hooks/vendor/playtest/keep.mjs +111 -0
  658. package/plugins/claude/hooks/vendor/playtest/stuck.mjs +48 -0
  659. package/plugins/claude/hooks/vendor/progress/holds.mjs +107 -0
  660. package/plugins/claude/hooks/vendor/progress/progress.mjs +301 -0
  661. package/plugins/claude/hooks/vendor/sim/judge.mjs +241 -0
  662. package/plugins/claude/hooks/vendor/spec/rooms.mjs +189 -0
  663. package/plugins/claude/hooks/vendor/spec/tunables.mjs +75 -0
  664. package/plugins/claude/hooks/vendor/stage/harnessignore.mjs +91 -0
  665. package/plugins/claude/hooks/vendor/stage/stage.mjs +58 -0
  666. package/plugins/claude/hooks/vendor/status/board.mjs +173 -0
  667. package/plugins/claude/hooks/vendor/status/file.mjs +113 -0
  668. package/plugins/claude/hooks/vendor/studio/forks.mjs +94 -0
  669. package/plugins/claude/hooks/vendor/studio/pitch.mjs +295 -0
  670. package/plugins/claude/hooks/vendor/verify/fingerprint.mjs +73 -0
  671. package/plugins/claude/hooks/vendor/verify/reads.mjs +33 -0
  672. package/plugins/claude/hooks/vendor/wow/picks.mjs +75 -0
  673. package/plugins/claude/skills/3d/SKILL.md +89 -0
  674. package/plugins/claude/skills/3d/references/bake-off.md +48 -0
  675. package/plugins/claude/skills/3d/references/bench.md +103 -0
  676. package/plugins/claude/skills/3d/references/budgets.md +48 -0
  677. package/plugins/claude/skills/3d/references/characters.md +67 -0
  678. package/plugins/claude/skills/3d/references/concept-image.md +47 -0
  679. package/plugins/claude/skills/3d/references/engine-targets.md +31 -0
  680. package/plugins/claude/skills/3d/references/hero-route.md +104 -0
  681. package/plugins/claude/skills/3d/references/level-spec.md +109 -0
  682. package/plugins/claude/skills/3d/references/levels.md +84 -0
  683. package/plugins/claude/skills/3d/references/light-and-places.md +141 -0
  684. package/plugins/claude/skills/3d/references/models.md +111 -0
  685. package/plugins/claude/skills/3d/references/painted-target.md +184 -0
  686. package/plugins/claude/skills/3d/references/reading.md +41 -0
  687. package/plugins/claude/skills/3d/references/skin.md +85 -0
  688. package/plugins/claude/skills/3d/references/skyboxes.md +65 -0
  689. package/plugins/claude/skills/3d/references/textures.md +71 -0
  690. package/plugins/claude/skills/3d/references/three-loading.md +199 -0
  691. package/plugins/claude/skills/3d/references/unity.md +78 -0
  692. package/plugins/claude/skills/art/SKILL.md +104 -0
  693. package/plugins/claude/skills/art/references/2d-assets.md +108 -0
  694. package/plugins/claude/skills/art/references/animation.md +126 -0
  695. package/plugins/claude/skills/art/references/cast.md +73 -0
  696. package/plugins/claude/skills/art/references/characters.md +49 -0
  697. package/plugins/claude/skills/art/references/cost.md +107 -0
  698. package/plugins/claude/skills/art/references/effects.md +85 -0
  699. package/plugins/claude/skills/art/references/frames.md +87 -0
  700. package/plugins/claude/skills/art/references/judging-frames.md +64 -0
  701. package/plugins/claude/skills/art/references/look.md +102 -0
  702. package/plugins/claude/skills/art/references/measure.md +119 -0
  703. package/plugins/claude/skills/art/references/pipeline.md +185 -0
  704. package/plugins/claude/skills/art/references/pixi.md +277 -0
  705. package/plugins/claude/skills/art/references/planes.md +27 -0
  706. package/plugins/claude/skills/art/references/prompts.md +171 -0
  707. package/plugins/claude/skills/art/references/sheets.md +141 -0
  708. package/plugins/claude/skills/art/references/style-file.md +39 -0
  709. package/plugins/claude/skills/art/references/three.md +232 -0
  710. package/plugins/claude/skills/art/references/ui.md +163 -0
  711. package/plugins/claude/skills/art/references/unity.md +78 -0
  712. package/plugins/claude/skills/art/references/wiring.md +41 -0
  713. package/plugins/claude/skills/audio/SKILL.md +92 -0
  714. package/plugins/claude/skills/audio/references/adaptive-music.md +204 -0
  715. package/plugins/claude/skills/audio/references/engine.md +78 -0
  716. package/plugins/claude/skills/audio/references/measure.md +101 -0
  717. package/plugins/claude/skills/audio/references/unity.md +74 -0
  718. package/plugins/claude/skills/feedback/SKILL.md +120 -0
  719. package/plugins/claude/skills/feedback/references/memory.md +99 -0
  720. package/plugins/claude/skills/game-feel/SKILL.md +104 -0
  721. package/plugins/claude/skills/game-feel/references/contact.md +110 -0
  722. package/plugins/claude/skills/game-feel/references/measure.md +125 -0
  723. package/plugins/claude/skills/game-feel/references/motion.md +134 -0
  724. package/plugins/claude/skills/game-feel/references/payoffs.md +35 -0
  725. package/plugins/claude/skills/game-feel/references/recipes.md +107 -0
  726. package/plugins/claude/skills/game-feel/references/unity.md +73 -0
  727. package/plugins/claude/skills/game-logic/SKILL.md +113 -0
  728. package/plugins/claude/skills/game-logic/references/balance.md +88 -0
  729. package/plugins/claude/skills/game-logic/references/content-at-scale.md +147 -0
  730. package/plugins/claude/skills/game-logic/references/depth.md +89 -0
  731. package/plugins/claude/skills/game-logic/references/escalation.md +41 -0
  732. package/plugins/claude/skills/game-logic/references/levels.md +61 -0
  733. package/plugins/claude/skills/game-logic/references/probes.md +122 -0
  734. package/plugins/claude/skills/game-logic/references/unity.md +108 -0
  735. package/plugins/claude/skills/game-spine/SKILL.md +118 -0
  736. package/plugins/claude/skills/game-spine/references/camera.md +94 -0
  737. package/plugins/claude/skills/game-spine/references/multiplayer.md +101 -0
  738. package/plugins/claude/skills/game-spine/references/patterns.md +103 -0
  739. package/plugins/claude/skills/game-spine/references/performance.md +96 -0
  740. package/plugins/claude/skills/game-spine/references/pixi.md +26 -0
  741. package/plugins/claude/skills/game-spine/references/replay.md +102 -0
  742. package/plugins/claude/skills/game-spine/references/room-api.md +63 -0
  743. package/plugins/claude/skills/game-spine/references/room-modes.md +40 -0
  744. package/plugins/claude/skills/game-spine/references/sdk.md +114 -0
  745. package/plugins/claude/skills/game-spine/references/three.md +62 -0
  746. package/plugins/claude/skills/gdd/SKILL.md +116 -0
  747. package/plugins/claude/skills/gdd/references/as-built.md +40 -0
  748. package/plugins/claude/skills/gdd/references/design-measures.md +24 -0
  749. package/plugins/claude/skills/gdd/references/design-note.md +88 -0
  750. package/plugins/claude/skills/gdd/references/experience.md +92 -0
  751. package/plugins/claude/skills/gdd/references/first-look.md +226 -0
  752. package/plugins/claude/skills/gdd/references/floors.md +62 -0
  753. package/plugins/claude/skills/gdd/references/frame.md +75 -0
  754. package/plugins/claude/skills/gdd/references/gameplay-contract.md +81 -0
  755. package/plugins/claude/skills/gdd/references/gdd-template.md +417 -0
  756. package/plugins/claude/skills/gdd/references/genre-card.md +109 -0
  757. package/plugins/claude/skills/gdd/references/genre-platformer.md +159 -0
  758. package/plugins/claude/skills/gdd/references/genre-puzzle.md +145 -0
  759. package/plugins/claude/skills/gdd/references/genre-racing.md +137 -0
  760. package/plugins/claude/skills/gdd/references/genre-rpg.md +125 -0
  761. package/plugins/claude/skills/gdd/references/genre-shooter.md +128 -0
  762. package/plugins/claude/skills/gdd/references/genre-simulation.md +112 -0
  763. package/plugins/claude/skills/gdd/references/genre-strategy.md +116 -0
  764. package/plugins/claude/skills/gdd/references/genre-survival.md +122 -0
  765. package/plugins/claude/skills/gdd/references/in-the-loop.md +106 -0
  766. package/plugins/claude/skills/gdd/references/invent-first.md +131 -0
  767. package/plugins/claude/skills/gdd/references/level-and-fun.md +112 -0
  768. package/plugins/claude/skills/gdd/references/pages.md +47 -0
  769. package/plugins/claude/skills/gdd/references/plan-at-size.md +140 -0
  770. package/plugins/claude/skills/gdd/references/production-tiers.md +117 -0
  771. package/plugins/claude/skills/gdd/references/sections.md +148 -0
  772. package/plugins/claude/skills/gdd/references/spec-folder.md +131 -0
  773. package/plugins/claude/skills/gdd/references/start.md +110 -0
  774. package/plugins/claude/skills/gdd/references/starters.md +175 -0
  775. package/plugins/claude/skills/gdd/references/the-path.md +133 -0
  776. package/plugins/claude/skills/gdd/references/track.md +29 -0
  777. package/plugins/claude/skills/gdd/references/world-and-identity.md +165 -0
  778. package/plugins/claude/skills/gdd/references/worth.md +74 -0
  779. package/plugins/claude/skills/mobile-ui/SKILL.md +107 -0
  780. package/plugins/claude/skills/mobile-ui/references/contrast.md +123 -0
  781. package/plugins/claude/skills/mobile-ui/references/hud-and-title.md +108 -0
  782. package/plugins/claude/skills/mobile-ui/references/hud-genres.md +124 -0
  783. package/plugins/claude/skills/mobile-ui/references/phone-check.md +156 -0
  784. package/plugins/claude/skills/mobile-ui/references/recipes.md +279 -0
  785. package/plugins/claude/skills/mobile-ui/references/restyle-ui.md +229 -0
  786. package/plugins/claude/skills/mobile-ui/references/unity.md +61 -0
  787. package/plugins/claude/skills/publishing/SKILL.md +109 -0
  788. package/plugins/claude/skills/publishing/references/compose.md +113 -0
  789. package/plugins/claude/skills/publishing/references/motion.md +120 -0
  790. package/plugins/claude/skills/publishing/references/networks.md +75 -0
  791. package/plugins/claude/skills/publishing/references/other-hosts.md +65 -0
  792. package/plugins/claude/skills/publishing/references/playable-ad.md +90 -0
  793. package/plugins/claude/skills/publishing/references/server-build.md +85 -0
  794. package/plugins/claude/skills/publishing/references/store-shots.md +85 -0
  795. package/plugins/claude/skills/publishing/references/trailer.md +55 -0
  796. package/plugins/claude/skills/publishing/references/what-ships.md +30 -0
  797. package/plugins/claude/skills/store/SKILL.md +81 -0
  798. package/plugins/claude/skills/store/references/app-store.md +73 -0
  799. package/plugins/claude/skills/store/references/google-play.md +141 -0
  800. package/plugins/claude/skills/store/references/ios-release.md +63 -0
  801. package/plugins/claude/skills/store/references/money.md +66 -0
  802. package/plugins/claude/skills/store/references/purchases-and-review.md +74 -0
  803. package/plugins/claude/skills/store/references/readiness-page.md +24 -0
  804. package/plugins/claude/skills/store/references/readiness.md +107 -0
  805. package/plugins/claude/skills/store/references/steam.md +38 -0
  806. package/plugins/claude/skills/store/references/unity-store.md +55 -0
  807. package/plugins/claude/skills/store/references/web-portals.md +43 -0
  808. package/plugins/claude/skills/unity-game/SKILL.md +103 -0
  809. package/plugins/claude/skills/unity-game/references/agent-ops.md +54 -0
  810. package/plugins/claude/skills/unity-game/references/fixes.md +40 -0
  811. package/plugins/claude/skills/unity-game/references/from-a-web-game.md +108 -0
  812. package/plugins/claude/skills/unity-game/references/handing-off.md +42 -0
  813. package/plugins/claude/skills/unity-game/references/performance.md +59 -0
  814. package/plugins/claude/skills/unity-game/references/probe.md +80 -0
  815. package/plugins/claude/skills/unity-game/references/shared-mac.md +121 -0
  816. package/plugins/claude/skills/unity-game/references/traps.md +108 -0
  817. package/plugins/claude/skills/verifying/SKILL.md +109 -0
  818. package/plugins/claude/skills/verifying/references/actors.md +94 -0
  819. package/plugins/claude/skills/verifying/references/bar.md +62 -0
  820. package/plugins/claude/skills/verifying/references/checks.md +69 -0
  821. package/plugins/claude/skills/verifying/references/experience.md +67 -0
  822. package/plugins/claude/skills/verifying/references/eyes.md +54 -0
  823. package/plugins/claude/skills/verifying/references/fidelity.md +126 -0
  824. package/plugins/claude/skills/verifying/references/hit-bar.md +31 -0
  825. package/plugins/claude/skills/verifying/references/journeys.md +77 -0
  826. package/plugins/claude/skills/verifying/references/mobile-qa.md +123 -0
  827. package/plugins/claude/skills/verifying/references/playtest.md +161 -0
  828. package/plugins/claude/skills/verifying/references/review.md +105 -0
  829. package/plugins/claude/skills/verifying/references/rubric.md +67 -0
  830. package/plugins/claude/skills/verifying/references/scenes.md +49 -0
  831. package/plugins/claude/skills/verifying/references/unity.md +60 -0
  832. package/plugins/claude/skills/world-and-story/SKILL.md +99 -0
  833. package/plugins/claude/skills/world-and-story/references/atmosphere.md +208 -0
  834. package/plugins/claude/skills/world-and-story/references/forged-world.md +79 -0
  835. package/plugins/claude/skills/world-and-story/references/living-world.md +237 -0
  836. package/plugins/claude/skills/world-and-story/references/opening-and-chapters.md +215 -0
  837. package/plugins/claude/skills/world-and-story/references/shelf.md +80 -0
  838. package/plugins/claude/skills/world-and-story/references/story-at-size.md +159 -0
  839. package/plugins/claude/skills/world-and-story/references/voice.md +175 -0
  840. package/plugins/claude/skills/world-and-story/references/world-kit.md +154 -0
  841. package/plugins/codex/.codex-plugin/plugin.json +27 -0
  842. package/plugins/codex/.mcp.json +7 -0
  843. package/plugins/codex/AGENTS.md +135 -0
  844. package/plugins/codex/LICENSE +115 -0
  845. package/plugins/codex/README.md +17 -0
  846. package/plugins/codex/THIRD_PARTY_NOTICES.md +75 -0
  847. package/plugins/codex/hooks/brief.md +135 -0
  848. package/plugins/codex/hooks/codex-critic.mjs +15 -0
  849. package/plugins/codex/hooks/critic-receipts.mjs +86 -0
  850. package/plugins/codex/hooks/durable.mjs +56 -0
  851. package/plugins/codex/hooks/fence.mjs +30 -0
  852. package/plugins/codex/hooks/floors.mjs +181 -0
  853. package/plugins/codex/hooks/flow.mjs +154 -0
  854. package/plugins/codex/hooks/front-door.mjs +68 -0
  855. package/plugins/codex/hooks/guidance.json +3 -0
  856. package/plugins/codex/hooks/hints.mjs +183 -0
  857. package/plugins/codex/hooks/hooks.json +59 -0
  858. package/plugins/codex/hooks/host.md +54 -0
  859. package/plugins/codex/hooks/lib.mjs +362 -0
  860. package/plugins/codex/hooks/memory.mjs +92 -0
  861. package/plugins/codex/hooks/mobile-qa.mjs +43 -0
  862. package/plugins/codex/hooks/note.mjs +63 -0
  863. package/plugins/codex/hooks/nudge.mjs +98 -0
  864. package/plugins/codex/hooks/pipeline.mjs +207 -0
  865. package/plugins/codex/hooks/prompt.mjs +51 -0
  866. package/plugins/codex/hooks/quality.mjs +310 -0
  867. package/plugins/codex/hooks/reach.mjs +93 -0
  868. package/plugins/codex/hooks/scope.mjs +44 -0
  869. package/plugins/codex/hooks/session-log.mjs +101 -0
  870. package/plugins/codex/hooks/session-start.mjs +194 -0
  871. package/plugins/codex/hooks/stop-gate.mjs +303 -0
  872. package/plugins/codex/hooks/vendor/direct/round.mjs +81 -0
  873. package/plugins/codex/hooks/vendor/find/names.mjs +46 -0
  874. package/plugins/codex/hooks/vendor/firstlook/set.mjs +219 -0
  875. package/plugins/codex/hooks/vendor/flow/flow.mjs +456 -0
  876. package/plugins/codex/hooks/vendor/flow/look.mjs +140 -0
  877. package/plugins/codex/hooks/vendor/gdd/book.mjs +484 -0
  878. package/plugins/codex/hooks/vendor/gdd/chapters.mjs +72 -0
  879. package/plugins/codex/hooks/vendor/gdd/doc.mjs +33 -0
  880. package/plugins/codex/hooks/vendor/gdd/levelmap.mjs +429 -0
  881. package/plugins/codex/hooks/vendor/gdd/rubric.mjs +251 -0
  882. package/plugins/codex/hooks/vendor/gdd/worth.mjs +508 -0
  883. package/plugins/codex/hooks/vendor/lanes/fence.mjs +109 -0
  884. package/plugins/codex/hooks/vendor/lanes/lanes.mjs +356 -0
  885. package/plugins/codex/hooks/vendor/lanes/union.mjs +63 -0
  886. package/plugins/codex/hooks/vendor/lessons/motifs.mjs +98 -0
  887. package/plugins/codex/hooks/vendor/lessons/store.mjs +57 -0
  888. package/plugins/codex/hooks/vendor/look/made-of.mjs +243 -0
  889. package/plugins/codex/hooks/vendor/look/roles.mjs +110 -0
  890. package/plugins/codex/hooks/vendor/memory/decisions.mjs +139 -0
  891. package/plugins/codex/hooks/vendor/memory/journal.mjs +109 -0
  892. package/plugins/codex/hooks/vendor/owner/bar.mjs +286 -0
  893. package/plugins/codex/hooks/vendor/pipeline/pipeline.mjs +930 -0
  894. package/plugins/codex/hooks/vendor/playtest/keep.mjs +111 -0
  895. package/plugins/codex/hooks/vendor/playtest/stuck.mjs +48 -0
  896. package/plugins/codex/hooks/vendor/progress/holds.mjs +107 -0
  897. package/plugins/codex/hooks/vendor/progress/progress.mjs +301 -0
  898. package/plugins/codex/hooks/vendor/sim/judge.mjs +241 -0
  899. package/plugins/codex/hooks/vendor/spec/rooms.mjs +189 -0
  900. package/plugins/codex/hooks/vendor/spec/tunables.mjs +75 -0
  901. package/plugins/codex/hooks/vendor/stage/harnessignore.mjs +91 -0
  902. package/plugins/codex/hooks/vendor/stage/stage.mjs +58 -0
  903. package/plugins/codex/hooks/vendor/status/board.mjs +173 -0
  904. package/plugins/codex/hooks/vendor/status/file.mjs +113 -0
  905. package/plugins/codex/hooks/vendor/studio/forks.mjs +94 -0
  906. package/plugins/codex/hooks/vendor/studio/pitch.mjs +295 -0
  907. package/plugins/codex/hooks/vendor/verify/fingerprint.mjs +73 -0
  908. package/plugins/codex/hooks/vendor/verify/reads.mjs +33 -0
  909. package/plugins/codex/hooks/vendor/wow/picks.mjs +75 -0
  910. package/plugins/codex/mcp.json +9 -0
  911. package/plugins/codex/plugin.json +26 -0
  912. package/plugins/codex/skills/fp-art-director/SKILL.md +58 -0
  913. package/plugins/codex/skills/fp-art-director/agents/openai.yaml +12 -0
  914. package/plugins/codex/skills/fp-art-director/references/codex.md +54 -0
  915. package/plugins/codex/skills/fp-audio-director/SKILL.md +55 -0
  916. package/plugins/codex/skills/fp-audio-director/agents/openai.yaml +12 -0
  917. package/plugins/codex/skills/fp-audio-director/references/codex.md +54 -0
  918. package/plugins/codex/skills/fp-critic/SKILL.md +117 -0
  919. package/plugins/codex/skills/fp-critic/agents/openai.yaml +12 -0
  920. package/plugins/codex/skills/fp-critic/references/codex.md +54 -0
  921. package/plugins/codex/skills/fp-first-look/SKILL.md +59 -0
  922. package/plugins/codex/skills/fp-first-look/agents/openai.yaml +12 -0
  923. package/plugins/codex/skills/fp-flow/SKILL.md +50 -0
  924. package/plugins/codex/skills/fp-flow/agents/openai.yaml +12 -0
  925. package/plugins/codex/skills/fp-lane/SKILL.md +41 -0
  926. package/plugins/codex/skills/fp-lane/agents/openai.yaml +12 -0
  927. package/plugins/codex/skills/fp-lane/references/codex.md +54 -0
  928. package/plugins/codex/skills/fp-lanes/SKILL.md +38 -0
  929. package/plugins/codex/skills/fp-lanes/agents/openai.yaml +12 -0
  930. package/plugins/codex/skills/fp-level-designer/SKILL.md +49 -0
  931. package/plugins/codex/skills/fp-level-designer/agents/openai.yaml +12 -0
  932. package/plugins/codex/skills/fp-level-designer/references/codex.md +54 -0
  933. package/plugins/codex/skills/fp-mobile-qa/SKILL.md +28 -0
  934. package/plugins/codex/skills/fp-mobile-qa/agents/openai.yaml +12 -0
  935. package/plugins/codex/skills/fp-mobile-qa-seat/SKILL.md +74 -0
  936. package/plugins/codex/skills/fp-mobile-qa-seat/agents/openai.yaml +12 -0
  937. package/plugins/codex/skills/fp-mobile-qa-seat/references/codex.md +54 -0
  938. package/plugins/codex/skills/fp-new/SKILL.md +94 -0
  939. package/plugins/codex/skills/fp-new/agents/openai.yaml +12 -0
  940. package/plugins/codex/skills/fp-player/SKILL.md +147 -0
  941. package/plugins/codex/skills/fp-player/agents/openai.yaml +12 -0
  942. package/plugins/codex/skills/fp-player/references/codex.md +54 -0
  943. package/plugins/codex/skills/fp-playtest/SKILL.md +66 -0
  944. package/plugins/codex/skills/fp-playtest/agents/openai.yaml +12 -0
  945. package/plugins/codex/skills/fp-publish/SKILL.md +23 -0
  946. package/plugins/codex/skills/fp-publish/agents/openai.yaml +12 -0
  947. package/plugins/codex/skills/fp-qa-lead/SKILL.md +56 -0
  948. package/plugins/codex/skills/fp-qa-lead/agents/openai.yaml +12 -0
  949. package/plugins/codex/skills/fp-qa-lead/references/codex.md +54 -0
  950. package/plugins/codex/skills/fp-smoke-build/SKILL.md +25 -0
  951. package/plugins/codex/skills/fp-smoke-build/agents/openai.yaml +12 -0
  952. package/plugins/codex/skills/fp-studio/SKILL.md +59 -0
  953. package/plugins/codex/skills/fp-studio/agents/openai.yaml +12 -0
  954. package/plugins/codex/skills/fp-verify/SKILL.md +20 -0
  955. package/plugins/codex/skills/fp-verify/agents/openai.yaml +12 -0
  956. package/plugins/codex/skills/funpixel-3d/SKILL.md +89 -0
  957. package/plugins/codex/skills/funpixel-3d/agents/openai.yaml +12 -0
  958. package/plugins/codex/skills/funpixel-3d/references/bake-off.md +48 -0
  959. package/plugins/codex/skills/funpixel-3d/references/bench.md +103 -0
  960. package/plugins/codex/skills/funpixel-3d/references/budgets.md +48 -0
  961. package/plugins/codex/skills/funpixel-3d/references/characters.md +67 -0
  962. package/plugins/codex/skills/funpixel-3d/references/concept-image.md +47 -0
  963. package/plugins/codex/skills/funpixel-3d/references/engine-targets.md +31 -0
  964. package/plugins/codex/skills/funpixel-3d/references/hero-route.md +104 -0
  965. package/plugins/codex/skills/funpixel-3d/references/level-spec.md +109 -0
  966. package/plugins/codex/skills/funpixel-3d/references/levels.md +84 -0
  967. package/plugins/codex/skills/funpixel-3d/references/light-and-places.md +141 -0
  968. package/plugins/codex/skills/funpixel-3d/references/models.md +111 -0
  969. package/plugins/codex/skills/funpixel-3d/references/painted-target.md +184 -0
  970. package/plugins/codex/skills/funpixel-3d/references/reading.md +41 -0
  971. package/plugins/codex/skills/funpixel-3d/references/skin.md +85 -0
  972. package/plugins/codex/skills/funpixel-3d/references/skyboxes.md +65 -0
  973. package/plugins/codex/skills/funpixel-3d/references/textures.md +71 -0
  974. package/plugins/codex/skills/funpixel-3d/references/three-loading.md +199 -0
  975. package/plugins/codex/skills/funpixel-3d/references/unity.md +78 -0
  976. package/plugins/codex/skills/funpixel-art/SKILL.md +104 -0
  977. package/plugins/codex/skills/funpixel-art/agents/openai.yaml +12 -0
  978. package/plugins/codex/skills/funpixel-art/references/2d-assets.md +108 -0
  979. package/plugins/codex/skills/funpixel-art/references/animation.md +126 -0
  980. package/plugins/codex/skills/funpixel-art/references/cast.md +73 -0
  981. package/plugins/codex/skills/funpixel-art/references/characters.md +49 -0
  982. package/plugins/codex/skills/funpixel-art/references/cost.md +107 -0
  983. package/plugins/codex/skills/funpixel-art/references/effects.md +85 -0
  984. package/plugins/codex/skills/funpixel-art/references/frames.md +87 -0
  985. package/plugins/codex/skills/funpixel-art/references/judging-frames.md +64 -0
  986. package/plugins/codex/skills/funpixel-art/references/look.md +102 -0
  987. package/plugins/codex/skills/funpixel-art/references/measure.md +119 -0
  988. package/plugins/codex/skills/funpixel-art/references/pipeline.md +185 -0
  989. package/plugins/codex/skills/funpixel-art/references/pixi.md +277 -0
  990. package/plugins/codex/skills/funpixel-art/references/planes.md +27 -0
  991. package/plugins/codex/skills/funpixel-art/references/prompts.md +171 -0
  992. package/plugins/codex/skills/funpixel-art/references/sheets.md +141 -0
  993. package/plugins/codex/skills/funpixel-art/references/style-file.md +39 -0
  994. package/plugins/codex/skills/funpixel-art/references/three.md +232 -0
  995. package/plugins/codex/skills/funpixel-art/references/ui.md +163 -0
  996. package/plugins/codex/skills/funpixel-art/references/unity.md +78 -0
  997. package/plugins/codex/skills/funpixel-art/references/wiring.md +41 -0
  998. package/plugins/codex/skills/funpixel-audio/SKILL.md +92 -0
  999. package/plugins/codex/skills/funpixel-audio/agents/openai.yaml +12 -0
  1000. package/plugins/codex/skills/funpixel-audio/references/adaptive-music.md +204 -0
  1001. package/plugins/codex/skills/funpixel-audio/references/engine.md +78 -0
  1002. package/plugins/codex/skills/funpixel-audio/references/measure.md +101 -0
  1003. package/plugins/codex/skills/funpixel-audio/references/unity.md +74 -0
  1004. package/plugins/codex/skills/funpixel-feedback/SKILL.md +120 -0
  1005. package/plugins/codex/skills/funpixel-feedback/agents/openai.yaml +12 -0
  1006. package/plugins/codex/skills/funpixel-feedback/references/memory.md +99 -0
  1007. package/plugins/codex/skills/funpixel-game-feel/SKILL.md +104 -0
  1008. package/plugins/codex/skills/funpixel-game-feel/agents/openai.yaml +12 -0
  1009. package/plugins/codex/skills/funpixel-game-feel/references/contact.md +110 -0
  1010. package/plugins/codex/skills/funpixel-game-feel/references/measure.md +125 -0
  1011. package/plugins/codex/skills/funpixel-game-feel/references/motion.md +134 -0
  1012. package/plugins/codex/skills/funpixel-game-feel/references/payoffs.md +35 -0
  1013. package/plugins/codex/skills/funpixel-game-feel/references/recipes.md +107 -0
  1014. package/plugins/codex/skills/funpixel-game-feel/references/unity.md +73 -0
  1015. package/plugins/codex/skills/funpixel-game-logic/SKILL.md +113 -0
  1016. package/plugins/codex/skills/funpixel-game-logic/agents/openai.yaml +12 -0
  1017. package/plugins/codex/skills/funpixel-game-logic/references/balance.md +88 -0
  1018. package/plugins/codex/skills/funpixel-game-logic/references/content-at-scale.md +147 -0
  1019. package/plugins/codex/skills/funpixel-game-logic/references/depth.md +89 -0
  1020. package/plugins/codex/skills/funpixel-game-logic/references/escalation.md +41 -0
  1021. package/plugins/codex/skills/funpixel-game-logic/references/levels.md +61 -0
  1022. package/plugins/codex/skills/funpixel-game-logic/references/probes.md +122 -0
  1023. package/plugins/codex/skills/funpixel-game-logic/references/unity.md +108 -0
  1024. package/plugins/codex/skills/funpixel-game-spine/SKILL.md +118 -0
  1025. package/plugins/codex/skills/funpixel-game-spine/agents/openai.yaml +12 -0
  1026. package/plugins/codex/skills/funpixel-game-spine/references/camera.md +94 -0
  1027. package/plugins/codex/skills/funpixel-game-spine/references/multiplayer.md +101 -0
  1028. package/plugins/codex/skills/funpixel-game-spine/references/patterns.md +103 -0
  1029. package/plugins/codex/skills/funpixel-game-spine/references/performance.md +96 -0
  1030. package/plugins/codex/skills/funpixel-game-spine/references/pixi.md +26 -0
  1031. package/plugins/codex/skills/funpixel-game-spine/references/replay.md +102 -0
  1032. package/plugins/codex/skills/funpixel-game-spine/references/room-api.md +63 -0
  1033. package/plugins/codex/skills/funpixel-game-spine/references/room-modes.md +40 -0
  1034. package/plugins/codex/skills/funpixel-game-spine/references/sdk.md +114 -0
  1035. package/plugins/codex/skills/funpixel-game-spine/references/three.md +62 -0
  1036. package/plugins/codex/skills/funpixel-gdd/SKILL.md +116 -0
  1037. package/plugins/codex/skills/funpixel-gdd/agents/openai.yaml +12 -0
  1038. package/plugins/codex/skills/funpixel-gdd/references/as-built.md +40 -0
  1039. package/plugins/codex/skills/funpixel-gdd/references/design-measures.md +24 -0
  1040. package/plugins/codex/skills/funpixel-gdd/references/design-note.md +88 -0
  1041. package/plugins/codex/skills/funpixel-gdd/references/experience.md +92 -0
  1042. package/plugins/codex/skills/funpixel-gdd/references/first-look.md +226 -0
  1043. package/plugins/codex/skills/funpixel-gdd/references/floors.md +62 -0
  1044. package/plugins/codex/skills/funpixel-gdd/references/frame.md +75 -0
  1045. package/plugins/codex/skills/funpixel-gdd/references/gameplay-contract.md +81 -0
  1046. package/plugins/codex/skills/funpixel-gdd/references/gdd-template.md +417 -0
  1047. package/plugins/codex/skills/funpixel-gdd/references/genre-card.md +109 -0
  1048. package/plugins/codex/skills/funpixel-gdd/references/genre-platformer.md +159 -0
  1049. package/plugins/codex/skills/funpixel-gdd/references/genre-puzzle.md +145 -0
  1050. package/plugins/codex/skills/funpixel-gdd/references/genre-racing.md +137 -0
  1051. package/plugins/codex/skills/funpixel-gdd/references/genre-rpg.md +125 -0
  1052. package/plugins/codex/skills/funpixel-gdd/references/genre-shooter.md +128 -0
  1053. package/plugins/codex/skills/funpixel-gdd/references/genre-simulation.md +112 -0
  1054. package/plugins/codex/skills/funpixel-gdd/references/genre-strategy.md +116 -0
  1055. package/plugins/codex/skills/funpixel-gdd/references/genre-survival.md +122 -0
  1056. package/plugins/codex/skills/funpixel-gdd/references/in-the-loop.md +106 -0
  1057. package/plugins/codex/skills/funpixel-gdd/references/invent-first.md +131 -0
  1058. package/plugins/codex/skills/funpixel-gdd/references/level-and-fun.md +112 -0
  1059. package/plugins/codex/skills/funpixel-gdd/references/pages.md +47 -0
  1060. package/plugins/codex/skills/funpixel-gdd/references/plan-at-size.md +140 -0
  1061. package/plugins/codex/skills/funpixel-gdd/references/production-tiers.md +117 -0
  1062. package/plugins/codex/skills/funpixel-gdd/references/sections.md +148 -0
  1063. package/plugins/codex/skills/funpixel-gdd/references/spec-folder.md +131 -0
  1064. package/plugins/codex/skills/funpixel-gdd/references/start.md +110 -0
  1065. package/plugins/codex/skills/funpixel-gdd/references/starters.md +175 -0
  1066. package/plugins/codex/skills/funpixel-gdd/references/the-path.md +133 -0
  1067. package/plugins/codex/skills/funpixel-gdd/references/track.md +29 -0
  1068. package/plugins/codex/skills/funpixel-gdd/references/world-and-identity.md +165 -0
  1069. package/plugins/codex/skills/funpixel-gdd/references/worth.md +74 -0
  1070. package/plugins/codex/skills/funpixel-mobile-ui/SKILL.md +107 -0
  1071. package/plugins/codex/skills/funpixel-mobile-ui/agents/openai.yaml +12 -0
  1072. package/plugins/codex/skills/funpixel-mobile-ui/references/contrast.md +123 -0
  1073. package/plugins/codex/skills/funpixel-mobile-ui/references/hud-and-title.md +108 -0
  1074. package/plugins/codex/skills/funpixel-mobile-ui/references/hud-genres.md +124 -0
  1075. package/plugins/codex/skills/funpixel-mobile-ui/references/phone-check.md +156 -0
  1076. package/plugins/codex/skills/funpixel-mobile-ui/references/recipes.md +279 -0
  1077. package/plugins/codex/skills/funpixel-mobile-ui/references/restyle-ui.md +229 -0
  1078. package/plugins/codex/skills/funpixel-mobile-ui/references/unity.md +61 -0
  1079. package/plugins/codex/skills/funpixel-publish/SKILL.md +109 -0
  1080. package/plugins/codex/skills/funpixel-publish/agents/openai.yaml +12 -0
  1081. package/plugins/codex/skills/funpixel-publish/references/compose.md +113 -0
  1082. package/plugins/codex/skills/funpixel-publish/references/motion.md +120 -0
  1083. package/plugins/codex/skills/funpixel-publish/references/networks.md +75 -0
  1084. package/plugins/codex/skills/funpixel-publish/references/other-hosts.md +65 -0
  1085. package/plugins/codex/skills/funpixel-publish/references/playable-ad.md +90 -0
  1086. package/plugins/codex/skills/funpixel-publish/references/server-build.md +85 -0
  1087. package/plugins/codex/skills/funpixel-publish/references/store-shots.md +85 -0
  1088. package/plugins/codex/skills/funpixel-publish/references/trailer.md +55 -0
  1089. package/plugins/codex/skills/funpixel-publish/references/what-ships.md +30 -0
  1090. package/plugins/codex/skills/funpixel-store/SKILL.md +81 -0
  1091. package/plugins/codex/skills/funpixel-store/agents/openai.yaml +12 -0
  1092. package/plugins/codex/skills/funpixel-store/references/app-store.md +73 -0
  1093. package/plugins/codex/skills/funpixel-store/references/google-play.md +141 -0
  1094. package/plugins/codex/skills/funpixel-store/references/ios-release.md +63 -0
  1095. package/plugins/codex/skills/funpixel-store/references/money.md +66 -0
  1096. package/plugins/codex/skills/funpixel-store/references/purchases-and-review.md +74 -0
  1097. package/plugins/codex/skills/funpixel-store/references/readiness-page.md +24 -0
  1098. package/plugins/codex/skills/funpixel-store/references/readiness.md +107 -0
  1099. package/plugins/codex/skills/funpixel-store/references/steam.md +38 -0
  1100. package/plugins/codex/skills/funpixel-store/references/unity-store.md +55 -0
  1101. package/plugins/codex/skills/funpixel-store/references/web-portals.md +43 -0
  1102. package/plugins/codex/skills/funpixel-unity-game/SKILL.md +103 -0
  1103. package/plugins/codex/skills/funpixel-unity-game/agents/openai.yaml +12 -0
  1104. package/plugins/codex/skills/funpixel-unity-game/references/agent-ops.md +54 -0
  1105. package/plugins/codex/skills/funpixel-unity-game/references/fixes.md +40 -0
  1106. package/plugins/codex/skills/funpixel-unity-game/references/from-a-web-game.md +108 -0
  1107. package/plugins/codex/skills/funpixel-unity-game/references/handing-off.md +42 -0
  1108. package/plugins/codex/skills/funpixel-unity-game/references/performance.md +59 -0
  1109. package/plugins/codex/skills/funpixel-unity-game/references/probe.md +80 -0
  1110. package/plugins/codex/skills/funpixel-unity-game/references/shared-mac.md +121 -0
  1111. package/plugins/codex/skills/funpixel-unity-game/references/traps.md +108 -0
  1112. package/plugins/codex/skills/funpixel-verify/SKILL.md +109 -0
  1113. package/plugins/codex/skills/funpixel-verify/agents/openai.yaml +12 -0
  1114. package/plugins/codex/skills/funpixel-verify/references/actors.md +94 -0
  1115. package/plugins/codex/skills/funpixel-verify/references/bar.md +62 -0
  1116. package/plugins/codex/skills/funpixel-verify/references/checks.md +69 -0
  1117. package/plugins/codex/skills/funpixel-verify/references/experience.md +67 -0
  1118. package/plugins/codex/skills/funpixel-verify/references/eyes.md +54 -0
  1119. package/plugins/codex/skills/funpixel-verify/references/fidelity.md +126 -0
  1120. package/plugins/codex/skills/funpixel-verify/references/hit-bar.md +31 -0
  1121. package/plugins/codex/skills/funpixel-verify/references/journeys.md +77 -0
  1122. package/plugins/codex/skills/funpixel-verify/references/mobile-qa.md +123 -0
  1123. package/plugins/codex/skills/funpixel-verify/references/playtest.md +161 -0
  1124. package/plugins/codex/skills/funpixel-verify/references/review.md +105 -0
  1125. package/plugins/codex/skills/funpixel-verify/references/rubric.md +67 -0
  1126. package/plugins/codex/skills/funpixel-verify/references/scenes.md +49 -0
  1127. package/plugins/codex/skills/funpixel-verify/references/unity.md +60 -0
  1128. package/plugins/codex/skills/funpixel-world-and-story/SKILL.md +99 -0
  1129. package/plugins/codex/skills/funpixel-world-and-story/agents/openai.yaml +12 -0
  1130. package/plugins/codex/skills/funpixel-world-and-story/references/atmosphere.md +208 -0
  1131. package/plugins/codex/skills/funpixel-world-and-story/references/forged-world.md +79 -0
  1132. package/plugins/codex/skills/funpixel-world-and-story/references/living-world.md +237 -0
  1133. package/plugins/codex/skills/funpixel-world-and-story/references/opening-and-chapters.md +215 -0
  1134. package/plugins/codex/skills/funpixel-world-and-story/references/shelf.md +80 -0
  1135. package/plugins/codex/skills/funpixel-world-and-story/references/story-at-size.md +159 -0
  1136. package/plugins/codex/skills/funpixel-world-and-story/references/voice.md +175 -0
  1137. package/plugins/codex/skills/funpixel-world-and-story/references/world-kit.md +154 -0
  1138. package/plugins/cursor/.cursor-plugin/plugin.json +26 -0
  1139. package/plugins/cursor/LICENSE +115 -0
  1140. package/plugins/cursor/README.md +13 -0
  1141. package/plugins/cursor/THIRD_PARTY_NOTICES.md +75 -0
  1142. package/plugins/cursor/agents/art-director.md +54 -0
  1143. package/plugins/cursor/agents/audio-director.md +51 -0
  1144. package/plugins/cursor/agents/critic.md +113 -0
  1145. package/plugins/cursor/agents/lane.md +37 -0
  1146. package/plugins/cursor/agents/level-designer.md +45 -0
  1147. package/plugins/cursor/agents/mobile-qa.md +70 -0
  1148. package/plugins/cursor/agents/player.md +143 -0
  1149. package/plugins/cursor/agents/qa-lead.md +52 -0
  1150. package/plugins/cursor/commands/first-look.md +59 -0
  1151. package/plugins/cursor/commands/flow.md +50 -0
  1152. package/plugins/cursor/commands/lanes.md +38 -0
  1153. package/plugins/cursor/commands/mobile-qa.md +28 -0
  1154. package/plugins/cursor/commands/new.md +94 -0
  1155. package/plugins/cursor/commands/playtest.md +66 -0
  1156. package/plugins/cursor/commands/publish.md +23 -0
  1157. package/plugins/cursor/commands/smoke-build.md +25 -0
  1158. package/plugins/cursor/commands/verify.md +20 -0
  1159. package/plugins/cursor/hooks/brief.md +135 -0
  1160. package/plugins/cursor/hooks/critic-receipts.mjs +86 -0
  1161. package/plugins/cursor/hooks/durable.mjs +56 -0
  1162. package/plugins/cursor/hooks/fence.mjs +30 -0
  1163. package/plugins/cursor/hooks/floors.mjs +181 -0
  1164. package/plugins/cursor/hooks/flow.mjs +154 -0
  1165. package/plugins/cursor/hooks/front-door.mjs +68 -0
  1166. package/plugins/cursor/hooks/guidance.json +3 -0
  1167. package/plugins/cursor/hooks/hints.mjs +183 -0
  1168. package/plugins/cursor/hooks/hooks.json +26 -0
  1169. package/plugins/cursor/hooks/lib.mjs +362 -0
  1170. package/plugins/cursor/hooks/memory.mjs +92 -0
  1171. package/plugins/cursor/hooks/mobile-qa.mjs +43 -0
  1172. package/plugins/cursor/hooks/note.mjs +63 -0
  1173. package/plugins/cursor/hooks/nudge.mjs +98 -0
  1174. package/plugins/cursor/hooks/pipeline.mjs +207 -0
  1175. package/plugins/cursor/hooks/prompt.mjs +51 -0
  1176. package/plugins/cursor/hooks/quality.mjs +310 -0
  1177. package/plugins/cursor/hooks/reach.mjs +93 -0
  1178. package/plugins/cursor/hooks/scope.mjs +44 -0
  1179. package/plugins/cursor/hooks/session-log.mjs +101 -0
  1180. package/plugins/cursor/hooks/session-start.mjs +194 -0
  1181. package/plugins/cursor/hooks/stop-gate.mjs +303 -0
  1182. package/plugins/cursor/hooks/vendor/direct/round.mjs +81 -0
  1183. package/plugins/cursor/hooks/vendor/find/names.mjs +46 -0
  1184. package/plugins/cursor/hooks/vendor/firstlook/set.mjs +219 -0
  1185. package/plugins/cursor/hooks/vendor/flow/flow.mjs +456 -0
  1186. package/plugins/cursor/hooks/vendor/flow/look.mjs +140 -0
  1187. package/plugins/cursor/hooks/vendor/gdd/book.mjs +484 -0
  1188. package/plugins/cursor/hooks/vendor/gdd/chapters.mjs +72 -0
  1189. package/plugins/cursor/hooks/vendor/gdd/doc.mjs +33 -0
  1190. package/plugins/cursor/hooks/vendor/gdd/levelmap.mjs +429 -0
  1191. package/plugins/cursor/hooks/vendor/gdd/rubric.mjs +251 -0
  1192. package/plugins/cursor/hooks/vendor/gdd/worth.mjs +508 -0
  1193. package/plugins/cursor/hooks/vendor/lanes/fence.mjs +109 -0
  1194. package/plugins/cursor/hooks/vendor/lanes/lanes.mjs +356 -0
  1195. package/plugins/cursor/hooks/vendor/lanes/union.mjs +63 -0
  1196. package/plugins/cursor/hooks/vendor/lessons/motifs.mjs +98 -0
  1197. package/plugins/cursor/hooks/vendor/lessons/store.mjs +57 -0
  1198. package/plugins/cursor/hooks/vendor/look/made-of.mjs +243 -0
  1199. package/plugins/cursor/hooks/vendor/look/roles.mjs +110 -0
  1200. package/plugins/cursor/hooks/vendor/memory/decisions.mjs +139 -0
  1201. package/plugins/cursor/hooks/vendor/memory/journal.mjs +109 -0
  1202. package/plugins/cursor/hooks/vendor/owner/bar.mjs +286 -0
  1203. package/plugins/cursor/hooks/vendor/pipeline/pipeline.mjs +930 -0
  1204. package/plugins/cursor/hooks/vendor/playtest/keep.mjs +111 -0
  1205. package/plugins/cursor/hooks/vendor/playtest/stuck.mjs +48 -0
  1206. package/plugins/cursor/hooks/vendor/progress/holds.mjs +107 -0
  1207. package/plugins/cursor/hooks/vendor/progress/progress.mjs +301 -0
  1208. package/plugins/cursor/hooks/vendor/sim/judge.mjs +241 -0
  1209. package/plugins/cursor/hooks/vendor/spec/rooms.mjs +189 -0
  1210. package/plugins/cursor/hooks/vendor/spec/tunables.mjs +75 -0
  1211. package/plugins/cursor/hooks/vendor/stage/harnessignore.mjs +91 -0
  1212. package/plugins/cursor/hooks/vendor/stage/stage.mjs +58 -0
  1213. package/plugins/cursor/hooks/vendor/status/board.mjs +173 -0
  1214. package/plugins/cursor/hooks/vendor/status/file.mjs +113 -0
  1215. package/plugins/cursor/hooks/vendor/studio/forks.mjs +94 -0
  1216. package/plugins/cursor/hooks/vendor/studio/pitch.mjs +295 -0
  1217. package/plugins/cursor/hooks/vendor/verify/fingerprint.mjs +73 -0
  1218. package/plugins/cursor/hooks/vendor/verify/reads.mjs +33 -0
  1219. package/plugins/cursor/hooks/vendor/wow/picks.mjs +75 -0
  1220. package/plugins/cursor/mcp.json +10 -0
  1221. package/plugins/cursor/rules/funpixel-brief.mdc +141 -0
  1222. package/plugins/cursor/skills/funpixel-3d/SKILL.md +89 -0
  1223. package/plugins/cursor/skills/funpixel-3d/references/bake-off.md +48 -0
  1224. package/plugins/cursor/skills/funpixel-3d/references/bench.md +103 -0
  1225. package/plugins/cursor/skills/funpixel-3d/references/budgets.md +48 -0
  1226. package/plugins/cursor/skills/funpixel-3d/references/characters.md +67 -0
  1227. package/plugins/cursor/skills/funpixel-3d/references/concept-image.md +47 -0
  1228. package/plugins/cursor/skills/funpixel-3d/references/engine-targets.md +31 -0
  1229. package/plugins/cursor/skills/funpixel-3d/references/hero-route.md +104 -0
  1230. package/plugins/cursor/skills/funpixel-3d/references/level-spec.md +109 -0
  1231. package/plugins/cursor/skills/funpixel-3d/references/levels.md +84 -0
  1232. package/plugins/cursor/skills/funpixel-3d/references/light-and-places.md +141 -0
  1233. package/plugins/cursor/skills/funpixel-3d/references/models.md +111 -0
  1234. package/plugins/cursor/skills/funpixel-3d/references/painted-target.md +184 -0
  1235. package/plugins/cursor/skills/funpixel-3d/references/reading.md +41 -0
  1236. package/plugins/cursor/skills/funpixel-3d/references/skin.md +85 -0
  1237. package/plugins/cursor/skills/funpixel-3d/references/skyboxes.md +65 -0
  1238. package/plugins/cursor/skills/funpixel-3d/references/textures.md +71 -0
  1239. package/plugins/cursor/skills/funpixel-3d/references/three-loading.md +199 -0
  1240. package/plugins/cursor/skills/funpixel-3d/references/unity.md +78 -0
  1241. package/plugins/cursor/skills/funpixel-art/SKILL.md +104 -0
  1242. package/plugins/cursor/skills/funpixel-art/references/2d-assets.md +108 -0
  1243. package/plugins/cursor/skills/funpixel-art/references/animation.md +126 -0
  1244. package/plugins/cursor/skills/funpixel-art/references/cast.md +73 -0
  1245. package/plugins/cursor/skills/funpixel-art/references/characters.md +49 -0
  1246. package/plugins/cursor/skills/funpixel-art/references/cost.md +107 -0
  1247. package/plugins/cursor/skills/funpixel-art/references/effects.md +85 -0
  1248. package/plugins/cursor/skills/funpixel-art/references/frames.md +87 -0
  1249. package/plugins/cursor/skills/funpixel-art/references/judging-frames.md +64 -0
  1250. package/plugins/cursor/skills/funpixel-art/references/look.md +102 -0
  1251. package/plugins/cursor/skills/funpixel-art/references/measure.md +119 -0
  1252. package/plugins/cursor/skills/funpixel-art/references/pipeline.md +185 -0
  1253. package/plugins/cursor/skills/funpixel-art/references/pixi.md +277 -0
  1254. package/plugins/cursor/skills/funpixel-art/references/planes.md +27 -0
  1255. package/plugins/cursor/skills/funpixel-art/references/prompts.md +171 -0
  1256. package/plugins/cursor/skills/funpixel-art/references/sheets.md +141 -0
  1257. package/plugins/cursor/skills/funpixel-art/references/style-file.md +39 -0
  1258. package/plugins/cursor/skills/funpixel-art/references/three.md +232 -0
  1259. package/plugins/cursor/skills/funpixel-art/references/ui.md +163 -0
  1260. package/plugins/cursor/skills/funpixel-art/references/unity.md +78 -0
  1261. package/plugins/cursor/skills/funpixel-art/references/wiring.md +41 -0
  1262. package/plugins/cursor/skills/funpixel-audio/SKILL.md +92 -0
  1263. package/plugins/cursor/skills/funpixel-audio/references/adaptive-music.md +204 -0
  1264. package/plugins/cursor/skills/funpixel-audio/references/engine.md +78 -0
  1265. package/plugins/cursor/skills/funpixel-audio/references/measure.md +101 -0
  1266. package/plugins/cursor/skills/funpixel-audio/references/unity.md +74 -0
  1267. package/plugins/cursor/skills/funpixel-feedback/SKILL.md +120 -0
  1268. package/plugins/cursor/skills/funpixel-feedback/references/memory.md +99 -0
  1269. package/plugins/cursor/skills/funpixel-game-feel/SKILL.md +104 -0
  1270. package/plugins/cursor/skills/funpixel-game-feel/references/contact.md +110 -0
  1271. package/plugins/cursor/skills/funpixel-game-feel/references/measure.md +125 -0
  1272. package/plugins/cursor/skills/funpixel-game-feel/references/motion.md +134 -0
  1273. package/plugins/cursor/skills/funpixel-game-feel/references/payoffs.md +35 -0
  1274. package/plugins/cursor/skills/funpixel-game-feel/references/recipes.md +107 -0
  1275. package/plugins/cursor/skills/funpixel-game-feel/references/unity.md +73 -0
  1276. package/plugins/cursor/skills/funpixel-game-logic/SKILL.md +113 -0
  1277. package/plugins/cursor/skills/funpixel-game-logic/references/balance.md +88 -0
  1278. package/plugins/cursor/skills/funpixel-game-logic/references/content-at-scale.md +147 -0
  1279. package/plugins/cursor/skills/funpixel-game-logic/references/depth.md +89 -0
  1280. package/plugins/cursor/skills/funpixel-game-logic/references/escalation.md +41 -0
  1281. package/plugins/cursor/skills/funpixel-game-logic/references/levels.md +61 -0
  1282. package/plugins/cursor/skills/funpixel-game-logic/references/probes.md +122 -0
  1283. package/plugins/cursor/skills/funpixel-game-logic/references/unity.md +108 -0
  1284. package/plugins/cursor/skills/funpixel-game-spine/SKILL.md +118 -0
  1285. package/plugins/cursor/skills/funpixel-game-spine/references/camera.md +94 -0
  1286. package/plugins/cursor/skills/funpixel-game-spine/references/multiplayer.md +101 -0
  1287. package/plugins/cursor/skills/funpixel-game-spine/references/patterns.md +103 -0
  1288. package/plugins/cursor/skills/funpixel-game-spine/references/performance.md +96 -0
  1289. package/plugins/cursor/skills/funpixel-game-spine/references/pixi.md +26 -0
  1290. package/plugins/cursor/skills/funpixel-game-spine/references/replay.md +102 -0
  1291. package/plugins/cursor/skills/funpixel-game-spine/references/room-api.md +63 -0
  1292. package/plugins/cursor/skills/funpixel-game-spine/references/room-modes.md +40 -0
  1293. package/plugins/cursor/skills/funpixel-game-spine/references/sdk.md +114 -0
  1294. package/plugins/cursor/skills/funpixel-game-spine/references/three.md +62 -0
  1295. package/plugins/cursor/skills/funpixel-gdd/SKILL.md +116 -0
  1296. package/plugins/cursor/skills/funpixel-gdd/references/as-built.md +40 -0
  1297. package/plugins/cursor/skills/funpixel-gdd/references/design-measures.md +24 -0
  1298. package/plugins/cursor/skills/funpixel-gdd/references/design-note.md +88 -0
  1299. package/plugins/cursor/skills/funpixel-gdd/references/experience.md +92 -0
  1300. package/plugins/cursor/skills/funpixel-gdd/references/first-look.md +226 -0
  1301. package/plugins/cursor/skills/funpixel-gdd/references/floors.md +62 -0
  1302. package/plugins/cursor/skills/funpixel-gdd/references/frame.md +75 -0
  1303. package/plugins/cursor/skills/funpixel-gdd/references/gameplay-contract.md +81 -0
  1304. package/plugins/cursor/skills/funpixel-gdd/references/gdd-template.md +417 -0
  1305. package/plugins/cursor/skills/funpixel-gdd/references/genre-card.md +109 -0
  1306. package/plugins/cursor/skills/funpixel-gdd/references/genre-platformer.md +159 -0
  1307. package/plugins/cursor/skills/funpixel-gdd/references/genre-puzzle.md +145 -0
  1308. package/plugins/cursor/skills/funpixel-gdd/references/genre-racing.md +137 -0
  1309. package/plugins/cursor/skills/funpixel-gdd/references/genre-rpg.md +125 -0
  1310. package/plugins/cursor/skills/funpixel-gdd/references/genre-shooter.md +128 -0
  1311. package/plugins/cursor/skills/funpixel-gdd/references/genre-simulation.md +112 -0
  1312. package/plugins/cursor/skills/funpixel-gdd/references/genre-strategy.md +116 -0
  1313. package/plugins/cursor/skills/funpixel-gdd/references/genre-survival.md +122 -0
  1314. package/plugins/cursor/skills/funpixel-gdd/references/in-the-loop.md +106 -0
  1315. package/plugins/cursor/skills/funpixel-gdd/references/invent-first.md +131 -0
  1316. package/plugins/cursor/skills/funpixel-gdd/references/level-and-fun.md +112 -0
  1317. package/plugins/cursor/skills/funpixel-gdd/references/pages.md +47 -0
  1318. package/plugins/cursor/skills/funpixel-gdd/references/plan-at-size.md +140 -0
  1319. package/plugins/cursor/skills/funpixel-gdd/references/production-tiers.md +117 -0
  1320. package/plugins/cursor/skills/funpixel-gdd/references/sections.md +148 -0
  1321. package/plugins/cursor/skills/funpixel-gdd/references/spec-folder.md +131 -0
  1322. package/plugins/cursor/skills/funpixel-gdd/references/start.md +110 -0
  1323. package/plugins/cursor/skills/funpixel-gdd/references/starters.md +175 -0
  1324. package/plugins/cursor/skills/funpixel-gdd/references/the-path.md +133 -0
  1325. package/plugins/cursor/skills/funpixel-gdd/references/track.md +29 -0
  1326. package/plugins/cursor/skills/funpixel-gdd/references/world-and-identity.md +165 -0
  1327. package/plugins/cursor/skills/funpixel-gdd/references/worth.md +74 -0
  1328. package/plugins/cursor/skills/funpixel-mobile-ui/SKILL.md +107 -0
  1329. package/plugins/cursor/skills/funpixel-mobile-ui/references/contrast.md +123 -0
  1330. package/plugins/cursor/skills/funpixel-mobile-ui/references/hud-and-title.md +108 -0
  1331. package/plugins/cursor/skills/funpixel-mobile-ui/references/hud-genres.md +124 -0
  1332. package/plugins/cursor/skills/funpixel-mobile-ui/references/phone-check.md +156 -0
  1333. package/plugins/cursor/skills/funpixel-mobile-ui/references/recipes.md +279 -0
  1334. package/plugins/cursor/skills/funpixel-mobile-ui/references/restyle-ui.md +229 -0
  1335. package/plugins/cursor/skills/funpixel-mobile-ui/references/unity.md +61 -0
  1336. package/plugins/cursor/skills/funpixel-publish/SKILL.md +109 -0
  1337. package/plugins/cursor/skills/funpixel-publish/references/compose.md +113 -0
  1338. package/plugins/cursor/skills/funpixel-publish/references/motion.md +120 -0
  1339. package/plugins/cursor/skills/funpixel-publish/references/networks.md +75 -0
  1340. package/plugins/cursor/skills/funpixel-publish/references/other-hosts.md +65 -0
  1341. package/plugins/cursor/skills/funpixel-publish/references/playable-ad.md +90 -0
  1342. package/plugins/cursor/skills/funpixel-publish/references/server-build.md +85 -0
  1343. package/plugins/cursor/skills/funpixel-publish/references/store-shots.md +85 -0
  1344. package/plugins/cursor/skills/funpixel-publish/references/trailer.md +55 -0
  1345. package/plugins/cursor/skills/funpixel-publish/references/what-ships.md +30 -0
  1346. package/plugins/cursor/skills/funpixel-store/SKILL.md +81 -0
  1347. package/plugins/cursor/skills/funpixel-store/references/app-store.md +73 -0
  1348. package/plugins/cursor/skills/funpixel-store/references/google-play.md +141 -0
  1349. package/plugins/cursor/skills/funpixel-store/references/ios-release.md +63 -0
  1350. package/plugins/cursor/skills/funpixel-store/references/money.md +66 -0
  1351. package/plugins/cursor/skills/funpixel-store/references/purchases-and-review.md +74 -0
  1352. package/plugins/cursor/skills/funpixel-store/references/readiness-page.md +24 -0
  1353. package/plugins/cursor/skills/funpixel-store/references/readiness.md +107 -0
  1354. package/plugins/cursor/skills/funpixel-store/references/steam.md +38 -0
  1355. package/plugins/cursor/skills/funpixel-store/references/unity-store.md +55 -0
  1356. package/plugins/cursor/skills/funpixel-store/references/web-portals.md +43 -0
  1357. package/plugins/cursor/skills/funpixel-unity-game/SKILL.md +103 -0
  1358. package/plugins/cursor/skills/funpixel-unity-game/references/agent-ops.md +54 -0
  1359. package/plugins/cursor/skills/funpixel-unity-game/references/fixes.md +40 -0
  1360. package/plugins/cursor/skills/funpixel-unity-game/references/from-a-web-game.md +108 -0
  1361. package/plugins/cursor/skills/funpixel-unity-game/references/handing-off.md +42 -0
  1362. package/plugins/cursor/skills/funpixel-unity-game/references/performance.md +59 -0
  1363. package/plugins/cursor/skills/funpixel-unity-game/references/probe.md +80 -0
  1364. package/plugins/cursor/skills/funpixel-unity-game/references/shared-mac.md +121 -0
  1365. package/plugins/cursor/skills/funpixel-unity-game/references/traps.md +108 -0
  1366. package/plugins/cursor/skills/funpixel-verify/SKILL.md +109 -0
  1367. package/plugins/cursor/skills/funpixel-verify/references/actors.md +94 -0
  1368. package/plugins/cursor/skills/funpixel-verify/references/bar.md +62 -0
  1369. package/plugins/cursor/skills/funpixel-verify/references/checks.md +69 -0
  1370. package/plugins/cursor/skills/funpixel-verify/references/experience.md +67 -0
  1371. package/plugins/cursor/skills/funpixel-verify/references/eyes.md +54 -0
  1372. package/plugins/cursor/skills/funpixel-verify/references/fidelity.md +126 -0
  1373. package/plugins/cursor/skills/funpixel-verify/references/hit-bar.md +31 -0
  1374. package/plugins/cursor/skills/funpixel-verify/references/journeys.md +77 -0
  1375. package/plugins/cursor/skills/funpixel-verify/references/mobile-qa.md +123 -0
  1376. package/plugins/cursor/skills/funpixel-verify/references/playtest.md +161 -0
  1377. package/plugins/cursor/skills/funpixel-verify/references/review.md +105 -0
  1378. package/plugins/cursor/skills/funpixel-verify/references/rubric.md +67 -0
  1379. package/plugins/cursor/skills/funpixel-verify/references/scenes.md +49 -0
  1380. package/plugins/cursor/skills/funpixel-verify/references/unity.md +60 -0
  1381. package/plugins/cursor/skills/funpixel-world-and-story/SKILL.md +99 -0
  1382. package/plugins/cursor/skills/funpixel-world-and-story/references/atmosphere.md +208 -0
  1383. package/plugins/cursor/skills/funpixel-world-and-story/references/forged-world.md +79 -0
  1384. package/plugins/cursor/skills/funpixel-world-and-story/references/living-world.md +237 -0
  1385. package/plugins/cursor/skills/funpixel-world-and-story/references/opening-and-chapters.md +215 -0
  1386. package/plugins/cursor/skills/funpixel-world-and-story/references/shelf.md +80 -0
  1387. package/plugins/cursor/skills/funpixel-world-and-story/references/story-at-size.md +159 -0
  1388. package/plugins/cursor/skills/funpixel-world-and-story/references/voice.md +175 -0
  1389. package/plugins/cursor/skills/funpixel-world-and-story/references/world-kit.md +154 -0
  1390. package/plugins/kiro/AGENTS.md +135 -0
  1391. package/plugins/kiro/LICENSE +115 -0
  1392. package/plugins/kiro/README.md +17 -0
  1393. package/plugins/kiro/THIRD_PARTY_NOTICES.md +75 -0
  1394. package/plugins/kiro/agent.template.json +45 -0
  1395. package/plugins/kiro/hooks/brief.md +135 -0
  1396. package/plugins/kiro/hooks/critic-receipts.mjs +86 -0
  1397. package/plugins/kiro/hooks/durable.mjs +56 -0
  1398. package/plugins/kiro/hooks/fence.mjs +30 -0
  1399. package/plugins/kiro/hooks/floors.mjs +181 -0
  1400. package/plugins/kiro/hooks/flow.mjs +154 -0
  1401. package/plugins/kiro/hooks/front-door.mjs +68 -0
  1402. package/plugins/kiro/hooks/guidance.json +3 -0
  1403. package/plugins/kiro/hooks/hints.mjs +183 -0
  1404. package/plugins/kiro/hooks/host.md +43 -0
  1405. package/plugins/kiro/hooks/kiro-prompt.mjs +26 -0
  1406. package/plugins/kiro/hooks/lib.mjs +362 -0
  1407. package/plugins/kiro/hooks/memory.mjs +92 -0
  1408. package/plugins/kiro/hooks/mobile-qa.mjs +43 -0
  1409. package/plugins/kiro/hooks/note.mjs +63 -0
  1410. package/plugins/kiro/hooks/nudge.mjs +98 -0
  1411. package/plugins/kiro/hooks/pipeline.mjs +207 -0
  1412. package/plugins/kiro/hooks/prompt.mjs +51 -0
  1413. package/plugins/kiro/hooks/quality.mjs +310 -0
  1414. package/plugins/kiro/hooks/reach.mjs +93 -0
  1415. package/plugins/kiro/hooks/scope.mjs +44 -0
  1416. package/plugins/kiro/hooks/session-log.mjs +101 -0
  1417. package/plugins/kiro/hooks/session-start.mjs +194 -0
  1418. package/plugins/kiro/hooks/stop-gate.mjs +303 -0
  1419. package/plugins/kiro/hooks/vendor/direct/round.mjs +81 -0
  1420. package/plugins/kiro/hooks/vendor/find/names.mjs +46 -0
  1421. package/plugins/kiro/hooks/vendor/firstlook/set.mjs +219 -0
  1422. package/plugins/kiro/hooks/vendor/flow/flow.mjs +456 -0
  1423. package/plugins/kiro/hooks/vendor/flow/look.mjs +140 -0
  1424. package/plugins/kiro/hooks/vendor/gdd/book.mjs +484 -0
  1425. package/plugins/kiro/hooks/vendor/gdd/chapters.mjs +72 -0
  1426. package/plugins/kiro/hooks/vendor/gdd/doc.mjs +33 -0
  1427. package/plugins/kiro/hooks/vendor/gdd/levelmap.mjs +429 -0
  1428. package/plugins/kiro/hooks/vendor/gdd/rubric.mjs +251 -0
  1429. package/plugins/kiro/hooks/vendor/gdd/worth.mjs +508 -0
  1430. package/plugins/kiro/hooks/vendor/lanes/fence.mjs +109 -0
  1431. package/plugins/kiro/hooks/vendor/lanes/lanes.mjs +356 -0
  1432. package/plugins/kiro/hooks/vendor/lanes/union.mjs +63 -0
  1433. package/plugins/kiro/hooks/vendor/lessons/motifs.mjs +98 -0
  1434. package/plugins/kiro/hooks/vendor/lessons/store.mjs +57 -0
  1435. package/plugins/kiro/hooks/vendor/look/made-of.mjs +243 -0
  1436. package/plugins/kiro/hooks/vendor/look/roles.mjs +110 -0
  1437. package/plugins/kiro/hooks/vendor/memory/decisions.mjs +139 -0
  1438. package/plugins/kiro/hooks/vendor/memory/journal.mjs +109 -0
  1439. package/plugins/kiro/hooks/vendor/owner/bar.mjs +286 -0
  1440. package/plugins/kiro/hooks/vendor/pipeline/pipeline.mjs +930 -0
  1441. package/plugins/kiro/hooks/vendor/playtest/keep.mjs +111 -0
  1442. package/plugins/kiro/hooks/vendor/playtest/stuck.mjs +48 -0
  1443. package/plugins/kiro/hooks/vendor/progress/holds.mjs +107 -0
  1444. package/plugins/kiro/hooks/vendor/progress/progress.mjs +301 -0
  1445. package/plugins/kiro/hooks/vendor/sim/judge.mjs +241 -0
  1446. package/plugins/kiro/hooks/vendor/spec/rooms.mjs +189 -0
  1447. package/plugins/kiro/hooks/vendor/spec/tunables.mjs +75 -0
  1448. package/plugins/kiro/hooks/vendor/stage/harnessignore.mjs +91 -0
  1449. package/plugins/kiro/hooks/vendor/stage/stage.mjs +58 -0
  1450. package/plugins/kiro/hooks/vendor/status/board.mjs +173 -0
  1451. package/plugins/kiro/hooks/vendor/status/file.mjs +113 -0
  1452. package/plugins/kiro/hooks/vendor/studio/forks.mjs +94 -0
  1453. package/plugins/kiro/hooks/vendor/studio/pitch.mjs +295 -0
  1454. package/plugins/kiro/hooks/vendor/verify/fingerprint.mjs +73 -0
  1455. package/plugins/kiro/hooks/vendor/verify/reads.mjs +33 -0
  1456. package/plugins/kiro/hooks/vendor/wow/picks.mjs +75 -0
  1457. package/plugins/kiro/install.mjs +37 -0
  1458. package/plugins/kiro/skills/fp-art-director/SKILL.md +58 -0
  1459. package/plugins/kiro/skills/fp-art-director/references/kiro.md +43 -0
  1460. package/plugins/kiro/skills/fp-audio-director/SKILL.md +55 -0
  1461. package/plugins/kiro/skills/fp-audio-director/references/kiro.md +43 -0
  1462. package/plugins/kiro/skills/fp-critic/SKILL.md +117 -0
  1463. package/plugins/kiro/skills/fp-critic/references/kiro.md +43 -0
  1464. package/plugins/kiro/skills/fp-first-look/SKILL.md +61 -0
  1465. package/plugins/kiro/skills/fp-flow/SKILL.md +52 -0
  1466. package/plugins/kiro/skills/fp-lane/SKILL.md +41 -0
  1467. package/plugins/kiro/skills/fp-lane/references/kiro.md +43 -0
  1468. package/plugins/kiro/skills/fp-lanes/SKILL.md +40 -0
  1469. package/plugins/kiro/skills/fp-level-designer/SKILL.md +49 -0
  1470. package/plugins/kiro/skills/fp-level-designer/references/kiro.md +43 -0
  1471. package/plugins/kiro/skills/fp-mobile-qa/SKILL.md +30 -0
  1472. package/plugins/kiro/skills/fp-mobile-qa-seat/SKILL.md +74 -0
  1473. package/plugins/kiro/skills/fp-mobile-qa-seat/references/kiro.md +43 -0
  1474. package/plugins/kiro/skills/fp-new/SKILL.md +96 -0
  1475. package/plugins/kiro/skills/fp-player/SKILL.md +147 -0
  1476. package/plugins/kiro/skills/fp-player/references/kiro.md +43 -0
  1477. package/plugins/kiro/skills/fp-playtest/SKILL.md +68 -0
  1478. package/plugins/kiro/skills/fp-publish/SKILL.md +25 -0
  1479. package/plugins/kiro/skills/fp-qa-lead/SKILL.md +56 -0
  1480. package/plugins/kiro/skills/fp-qa-lead/references/kiro.md +43 -0
  1481. package/plugins/kiro/skills/fp-smoke-build/SKILL.md +27 -0
  1482. package/plugins/kiro/skills/fp-studio/SKILL.md +48 -0
  1483. package/plugins/kiro/skills/fp-verify/SKILL.md +22 -0
  1484. package/plugins/kiro/skills/funpixel-3d/SKILL.md +89 -0
  1485. package/plugins/kiro/skills/funpixel-3d/references/bake-off.md +48 -0
  1486. package/plugins/kiro/skills/funpixel-3d/references/bench.md +103 -0
  1487. package/plugins/kiro/skills/funpixel-3d/references/budgets.md +48 -0
  1488. package/plugins/kiro/skills/funpixel-3d/references/characters.md +67 -0
  1489. package/plugins/kiro/skills/funpixel-3d/references/concept-image.md +47 -0
  1490. package/plugins/kiro/skills/funpixel-3d/references/engine-targets.md +31 -0
  1491. package/plugins/kiro/skills/funpixel-3d/references/hero-route.md +104 -0
  1492. package/plugins/kiro/skills/funpixel-3d/references/level-spec.md +109 -0
  1493. package/plugins/kiro/skills/funpixel-3d/references/levels.md +84 -0
  1494. package/plugins/kiro/skills/funpixel-3d/references/light-and-places.md +141 -0
  1495. package/plugins/kiro/skills/funpixel-3d/references/models.md +111 -0
  1496. package/plugins/kiro/skills/funpixel-3d/references/painted-target.md +184 -0
  1497. package/plugins/kiro/skills/funpixel-3d/references/reading.md +41 -0
  1498. package/plugins/kiro/skills/funpixel-3d/references/skin.md +85 -0
  1499. package/plugins/kiro/skills/funpixel-3d/references/skyboxes.md +65 -0
  1500. package/plugins/kiro/skills/funpixel-3d/references/textures.md +71 -0
  1501. package/plugins/kiro/skills/funpixel-3d/references/three-loading.md +199 -0
  1502. package/plugins/kiro/skills/funpixel-3d/references/unity.md +78 -0
  1503. package/plugins/kiro/skills/funpixel-art/SKILL.md +104 -0
  1504. package/plugins/kiro/skills/funpixel-art/references/2d-assets.md +108 -0
  1505. package/plugins/kiro/skills/funpixel-art/references/animation.md +126 -0
  1506. package/plugins/kiro/skills/funpixel-art/references/cast.md +73 -0
  1507. package/plugins/kiro/skills/funpixel-art/references/characters.md +49 -0
  1508. package/plugins/kiro/skills/funpixel-art/references/cost.md +107 -0
  1509. package/plugins/kiro/skills/funpixel-art/references/effects.md +85 -0
  1510. package/plugins/kiro/skills/funpixel-art/references/frames.md +87 -0
  1511. package/plugins/kiro/skills/funpixel-art/references/judging-frames.md +64 -0
  1512. package/plugins/kiro/skills/funpixel-art/references/look.md +102 -0
  1513. package/plugins/kiro/skills/funpixel-art/references/measure.md +119 -0
  1514. package/plugins/kiro/skills/funpixel-art/references/pipeline.md +185 -0
  1515. package/plugins/kiro/skills/funpixel-art/references/pixi.md +277 -0
  1516. package/plugins/kiro/skills/funpixel-art/references/planes.md +27 -0
  1517. package/plugins/kiro/skills/funpixel-art/references/prompts.md +171 -0
  1518. package/plugins/kiro/skills/funpixel-art/references/sheets.md +141 -0
  1519. package/plugins/kiro/skills/funpixel-art/references/style-file.md +39 -0
  1520. package/plugins/kiro/skills/funpixel-art/references/three.md +232 -0
  1521. package/plugins/kiro/skills/funpixel-art/references/ui.md +163 -0
  1522. package/plugins/kiro/skills/funpixel-art/references/unity.md +78 -0
  1523. package/plugins/kiro/skills/funpixel-art/references/wiring.md +41 -0
  1524. package/plugins/kiro/skills/funpixel-audio/SKILL.md +92 -0
  1525. package/plugins/kiro/skills/funpixel-audio/references/adaptive-music.md +204 -0
  1526. package/plugins/kiro/skills/funpixel-audio/references/engine.md +78 -0
  1527. package/plugins/kiro/skills/funpixel-audio/references/measure.md +101 -0
  1528. package/plugins/kiro/skills/funpixel-audio/references/unity.md +74 -0
  1529. package/plugins/kiro/skills/funpixel-feedback/SKILL.md +120 -0
  1530. package/plugins/kiro/skills/funpixel-feedback/references/memory.md +99 -0
  1531. package/plugins/kiro/skills/funpixel-game-feel/SKILL.md +104 -0
  1532. package/plugins/kiro/skills/funpixel-game-feel/references/contact.md +110 -0
  1533. package/plugins/kiro/skills/funpixel-game-feel/references/measure.md +125 -0
  1534. package/plugins/kiro/skills/funpixel-game-feel/references/motion.md +134 -0
  1535. package/plugins/kiro/skills/funpixel-game-feel/references/payoffs.md +35 -0
  1536. package/plugins/kiro/skills/funpixel-game-feel/references/recipes.md +107 -0
  1537. package/plugins/kiro/skills/funpixel-game-feel/references/unity.md +73 -0
  1538. package/plugins/kiro/skills/funpixel-game-logic/SKILL.md +113 -0
  1539. package/plugins/kiro/skills/funpixel-game-logic/references/balance.md +88 -0
  1540. package/plugins/kiro/skills/funpixel-game-logic/references/content-at-scale.md +147 -0
  1541. package/plugins/kiro/skills/funpixel-game-logic/references/depth.md +89 -0
  1542. package/plugins/kiro/skills/funpixel-game-logic/references/escalation.md +41 -0
  1543. package/plugins/kiro/skills/funpixel-game-logic/references/levels.md +61 -0
  1544. package/plugins/kiro/skills/funpixel-game-logic/references/probes.md +122 -0
  1545. package/plugins/kiro/skills/funpixel-game-logic/references/unity.md +108 -0
  1546. package/plugins/kiro/skills/funpixel-game-spine/SKILL.md +118 -0
  1547. package/plugins/kiro/skills/funpixel-game-spine/references/camera.md +94 -0
  1548. package/plugins/kiro/skills/funpixel-game-spine/references/multiplayer.md +101 -0
  1549. package/plugins/kiro/skills/funpixel-game-spine/references/patterns.md +103 -0
  1550. package/plugins/kiro/skills/funpixel-game-spine/references/performance.md +96 -0
  1551. package/plugins/kiro/skills/funpixel-game-spine/references/pixi.md +26 -0
  1552. package/plugins/kiro/skills/funpixel-game-spine/references/replay.md +102 -0
  1553. package/plugins/kiro/skills/funpixel-game-spine/references/room-api.md +63 -0
  1554. package/plugins/kiro/skills/funpixel-game-spine/references/room-modes.md +40 -0
  1555. package/plugins/kiro/skills/funpixel-game-spine/references/sdk.md +114 -0
  1556. package/plugins/kiro/skills/funpixel-game-spine/references/three.md +62 -0
  1557. package/plugins/kiro/skills/funpixel-gdd/SKILL.md +116 -0
  1558. package/plugins/kiro/skills/funpixel-gdd/references/as-built.md +40 -0
  1559. package/plugins/kiro/skills/funpixel-gdd/references/design-measures.md +24 -0
  1560. package/plugins/kiro/skills/funpixel-gdd/references/design-note.md +88 -0
  1561. package/plugins/kiro/skills/funpixel-gdd/references/experience.md +92 -0
  1562. package/plugins/kiro/skills/funpixel-gdd/references/first-look.md +226 -0
  1563. package/plugins/kiro/skills/funpixel-gdd/references/floors.md +62 -0
  1564. package/plugins/kiro/skills/funpixel-gdd/references/frame.md +75 -0
  1565. package/plugins/kiro/skills/funpixel-gdd/references/gameplay-contract.md +81 -0
  1566. package/plugins/kiro/skills/funpixel-gdd/references/gdd-template.md +417 -0
  1567. package/plugins/kiro/skills/funpixel-gdd/references/genre-card.md +109 -0
  1568. package/plugins/kiro/skills/funpixel-gdd/references/genre-platformer.md +159 -0
  1569. package/plugins/kiro/skills/funpixel-gdd/references/genre-puzzle.md +145 -0
  1570. package/plugins/kiro/skills/funpixel-gdd/references/genre-racing.md +137 -0
  1571. package/plugins/kiro/skills/funpixel-gdd/references/genre-rpg.md +125 -0
  1572. package/plugins/kiro/skills/funpixel-gdd/references/genre-shooter.md +128 -0
  1573. package/plugins/kiro/skills/funpixel-gdd/references/genre-simulation.md +112 -0
  1574. package/plugins/kiro/skills/funpixel-gdd/references/genre-strategy.md +116 -0
  1575. package/plugins/kiro/skills/funpixel-gdd/references/genre-survival.md +122 -0
  1576. package/plugins/kiro/skills/funpixel-gdd/references/in-the-loop.md +106 -0
  1577. package/plugins/kiro/skills/funpixel-gdd/references/invent-first.md +131 -0
  1578. package/plugins/kiro/skills/funpixel-gdd/references/level-and-fun.md +112 -0
  1579. package/plugins/kiro/skills/funpixel-gdd/references/pages.md +47 -0
  1580. package/plugins/kiro/skills/funpixel-gdd/references/plan-at-size.md +140 -0
  1581. package/plugins/kiro/skills/funpixel-gdd/references/production-tiers.md +117 -0
  1582. package/plugins/kiro/skills/funpixel-gdd/references/sections.md +148 -0
  1583. package/plugins/kiro/skills/funpixel-gdd/references/spec-folder.md +131 -0
  1584. package/plugins/kiro/skills/funpixel-gdd/references/start.md +110 -0
  1585. package/plugins/kiro/skills/funpixel-gdd/references/starters.md +175 -0
  1586. package/plugins/kiro/skills/funpixel-gdd/references/the-path.md +133 -0
  1587. package/plugins/kiro/skills/funpixel-gdd/references/track.md +29 -0
  1588. package/plugins/kiro/skills/funpixel-gdd/references/world-and-identity.md +165 -0
  1589. package/plugins/kiro/skills/funpixel-gdd/references/worth.md +74 -0
  1590. package/plugins/kiro/skills/funpixel-mobile-ui/SKILL.md +107 -0
  1591. package/plugins/kiro/skills/funpixel-mobile-ui/references/contrast.md +123 -0
  1592. package/plugins/kiro/skills/funpixel-mobile-ui/references/hud-and-title.md +108 -0
  1593. package/plugins/kiro/skills/funpixel-mobile-ui/references/hud-genres.md +124 -0
  1594. package/plugins/kiro/skills/funpixel-mobile-ui/references/phone-check.md +156 -0
  1595. package/plugins/kiro/skills/funpixel-mobile-ui/references/recipes.md +279 -0
  1596. package/plugins/kiro/skills/funpixel-mobile-ui/references/restyle-ui.md +229 -0
  1597. package/plugins/kiro/skills/funpixel-mobile-ui/references/unity.md +61 -0
  1598. package/plugins/kiro/skills/funpixel-publish/SKILL.md +109 -0
  1599. package/plugins/kiro/skills/funpixel-publish/references/compose.md +113 -0
  1600. package/plugins/kiro/skills/funpixel-publish/references/motion.md +120 -0
  1601. package/plugins/kiro/skills/funpixel-publish/references/networks.md +75 -0
  1602. package/plugins/kiro/skills/funpixel-publish/references/other-hosts.md +65 -0
  1603. package/plugins/kiro/skills/funpixel-publish/references/playable-ad.md +90 -0
  1604. package/plugins/kiro/skills/funpixel-publish/references/server-build.md +85 -0
  1605. package/plugins/kiro/skills/funpixel-publish/references/store-shots.md +85 -0
  1606. package/plugins/kiro/skills/funpixel-publish/references/trailer.md +55 -0
  1607. package/plugins/kiro/skills/funpixel-publish/references/what-ships.md +30 -0
  1608. package/plugins/kiro/skills/funpixel-store/SKILL.md +81 -0
  1609. package/plugins/kiro/skills/funpixel-store/references/app-store.md +73 -0
  1610. package/plugins/kiro/skills/funpixel-store/references/google-play.md +141 -0
  1611. package/plugins/kiro/skills/funpixel-store/references/ios-release.md +63 -0
  1612. package/plugins/kiro/skills/funpixel-store/references/money.md +66 -0
  1613. package/plugins/kiro/skills/funpixel-store/references/purchases-and-review.md +74 -0
  1614. package/plugins/kiro/skills/funpixel-store/references/readiness-page.md +24 -0
  1615. package/plugins/kiro/skills/funpixel-store/references/readiness.md +107 -0
  1616. package/plugins/kiro/skills/funpixel-store/references/steam.md +38 -0
  1617. package/plugins/kiro/skills/funpixel-store/references/unity-store.md +55 -0
  1618. package/plugins/kiro/skills/funpixel-store/references/web-portals.md +43 -0
  1619. package/plugins/kiro/skills/funpixel-unity-game/SKILL.md +103 -0
  1620. package/plugins/kiro/skills/funpixel-unity-game/references/agent-ops.md +54 -0
  1621. package/plugins/kiro/skills/funpixel-unity-game/references/fixes.md +40 -0
  1622. package/plugins/kiro/skills/funpixel-unity-game/references/from-a-web-game.md +108 -0
  1623. package/plugins/kiro/skills/funpixel-unity-game/references/handing-off.md +42 -0
  1624. package/plugins/kiro/skills/funpixel-unity-game/references/performance.md +59 -0
  1625. package/plugins/kiro/skills/funpixel-unity-game/references/probe.md +80 -0
  1626. package/plugins/kiro/skills/funpixel-unity-game/references/shared-mac.md +121 -0
  1627. package/plugins/kiro/skills/funpixel-unity-game/references/traps.md +108 -0
  1628. package/plugins/kiro/skills/funpixel-verify/SKILL.md +109 -0
  1629. package/plugins/kiro/skills/funpixel-verify/references/actors.md +94 -0
  1630. package/plugins/kiro/skills/funpixel-verify/references/bar.md +62 -0
  1631. package/plugins/kiro/skills/funpixel-verify/references/checks.md +69 -0
  1632. package/plugins/kiro/skills/funpixel-verify/references/experience.md +67 -0
  1633. package/plugins/kiro/skills/funpixel-verify/references/eyes.md +54 -0
  1634. package/plugins/kiro/skills/funpixel-verify/references/fidelity.md +126 -0
  1635. package/plugins/kiro/skills/funpixel-verify/references/hit-bar.md +31 -0
  1636. package/plugins/kiro/skills/funpixel-verify/references/journeys.md +77 -0
  1637. package/plugins/kiro/skills/funpixel-verify/references/mobile-qa.md +123 -0
  1638. package/plugins/kiro/skills/funpixel-verify/references/playtest.md +161 -0
  1639. package/plugins/kiro/skills/funpixel-verify/references/review.md +105 -0
  1640. package/plugins/kiro/skills/funpixel-verify/references/rubric.md +67 -0
  1641. package/plugins/kiro/skills/funpixel-verify/references/scenes.md +49 -0
  1642. package/plugins/kiro/skills/funpixel-verify/references/unity.md +60 -0
  1643. package/plugins/kiro/skills/funpixel-world-and-story/SKILL.md +99 -0
  1644. package/plugins/kiro/skills/funpixel-world-and-story/references/atmosphere.md +208 -0
  1645. package/plugins/kiro/skills/funpixel-world-and-story/references/forged-world.md +79 -0
  1646. package/plugins/kiro/skills/funpixel-world-and-story/references/living-world.md +237 -0
  1647. package/plugins/kiro/skills/funpixel-world-and-story/references/opening-and-chapters.md +215 -0
  1648. package/plugins/kiro/skills/funpixel-world-and-story/references/shelf.md +80 -0
  1649. package/plugins/kiro/skills/funpixel-world-and-story/references/story-at-size.md +159 -0
  1650. package/plugins/kiro/skills/funpixel-world-and-story/references/voice.md +175 -0
  1651. package/plugins/kiro/skills/funpixel-world-and-story/references/world-kit.md +154 -0
  1652. package/plugins/robin/LICENSE +115 -0
  1653. package/plugins/robin/README.md +27 -0
  1654. package/plugins/robin/THIRD_PARTY_NOTICES.md +75 -0
  1655. package/plugins/robin/claude/.claude-plugin/plugin.json +19 -0
  1656. package/plugins/robin/claude/.mcp.json +10 -0
  1657. package/plugins/robin/claude/LICENSE +115 -0
  1658. package/plugins/robin/claude/README.md +14 -0
  1659. package/plugins/robin/claude/THIRD_PARTY_NOTICES.md +75 -0
  1660. package/plugins/robin/claude/agents/art-director.md +54 -0
  1661. package/plugins/robin/claude/agents/audio-director.md +51 -0
  1662. package/plugins/robin/claude/agents/critic.md +113 -0
  1663. package/plugins/robin/claude/agents/lane.md +38 -0
  1664. package/plugins/robin/claude/agents/level-designer.md +45 -0
  1665. package/plugins/robin/claude/agents/mobile-qa.md +71 -0
  1666. package/plugins/robin/claude/agents/player.md +144 -0
  1667. package/plugins/robin/claude/agents/qa-lead.md +52 -0
  1668. package/plugins/robin/claude/commands/first-look.md +59 -0
  1669. package/plugins/robin/claude/commands/flow.md +50 -0
  1670. package/plugins/robin/claude/commands/lanes.md +38 -0
  1671. package/plugins/robin/claude/commands/mobile-qa.md +28 -0
  1672. package/plugins/robin/claude/commands/new.md +94 -0
  1673. package/plugins/robin/claude/commands/playtest.md +66 -0
  1674. package/plugins/robin/claude/commands/publish.md +23 -0
  1675. package/plugins/robin/claude/commands/smoke-build.md +25 -0
  1676. package/plugins/robin/claude/commands/verify.md +20 -0
  1677. package/plugins/robin/claude/hooks/brief.md +135 -0
  1678. package/plugins/robin/claude/hooks/critic-receipts.mjs +86 -0
  1679. package/plugins/robin/claude/hooks/durable.mjs +56 -0
  1680. package/plugins/robin/claude/hooks/fence.mjs +30 -0
  1681. package/plugins/robin/claude/hooks/floors.mjs +181 -0
  1682. package/plugins/robin/claude/hooks/flow.mjs +154 -0
  1683. package/plugins/robin/claude/hooks/front-door.mjs +68 -0
  1684. package/plugins/robin/claude/hooks/guidance.json +3 -0
  1685. package/plugins/robin/claude/hooks/hints.mjs +183 -0
  1686. package/plugins/robin/claude/hooks/hooks.json +62 -0
  1687. package/plugins/robin/claude/hooks/lib.mjs +362 -0
  1688. package/plugins/robin/claude/hooks/memory.mjs +92 -0
  1689. package/plugins/robin/claude/hooks/mobile-qa.mjs +43 -0
  1690. package/plugins/robin/claude/hooks/note.mjs +63 -0
  1691. package/plugins/robin/claude/hooks/nudge.mjs +98 -0
  1692. package/plugins/robin/claude/hooks/pipeline.mjs +207 -0
  1693. package/plugins/robin/claude/hooks/prompt.mjs +51 -0
  1694. package/plugins/robin/claude/hooks/quality.mjs +310 -0
  1695. package/plugins/robin/claude/hooks/reach.mjs +93 -0
  1696. package/plugins/robin/claude/hooks/scope.mjs +44 -0
  1697. package/plugins/robin/claude/hooks/session-log.mjs +101 -0
  1698. package/plugins/robin/claude/hooks/session-start.mjs +194 -0
  1699. package/plugins/robin/claude/hooks/skill-names.json +19 -0
  1700. package/plugins/robin/claude/hooks/stop-gate.mjs +303 -0
  1701. package/plugins/robin/claude/hooks/vendor/direct/round.mjs +81 -0
  1702. package/plugins/robin/claude/hooks/vendor/find/names.mjs +46 -0
  1703. package/plugins/robin/claude/hooks/vendor/firstlook/set.mjs +219 -0
  1704. package/plugins/robin/claude/hooks/vendor/flow/flow.mjs +456 -0
  1705. package/plugins/robin/claude/hooks/vendor/flow/look.mjs +140 -0
  1706. package/plugins/robin/claude/hooks/vendor/gdd/book.mjs +484 -0
  1707. package/plugins/robin/claude/hooks/vendor/gdd/chapters.mjs +72 -0
  1708. package/plugins/robin/claude/hooks/vendor/gdd/doc.mjs +33 -0
  1709. package/plugins/robin/claude/hooks/vendor/gdd/levelmap.mjs +429 -0
  1710. package/plugins/robin/claude/hooks/vendor/gdd/rubric.mjs +251 -0
  1711. package/plugins/robin/claude/hooks/vendor/gdd/worth.mjs +508 -0
  1712. package/plugins/robin/claude/hooks/vendor/lanes/fence.mjs +109 -0
  1713. package/plugins/robin/claude/hooks/vendor/lanes/lanes.mjs +356 -0
  1714. package/plugins/robin/claude/hooks/vendor/lanes/union.mjs +63 -0
  1715. package/plugins/robin/claude/hooks/vendor/lessons/motifs.mjs +98 -0
  1716. package/plugins/robin/claude/hooks/vendor/lessons/store.mjs +57 -0
  1717. package/plugins/robin/claude/hooks/vendor/look/made-of.mjs +243 -0
  1718. package/plugins/robin/claude/hooks/vendor/look/roles.mjs +110 -0
  1719. package/plugins/robin/claude/hooks/vendor/memory/decisions.mjs +139 -0
  1720. package/plugins/robin/claude/hooks/vendor/memory/journal.mjs +109 -0
  1721. package/plugins/robin/claude/hooks/vendor/owner/bar.mjs +286 -0
  1722. package/plugins/robin/claude/hooks/vendor/pipeline/pipeline.mjs +930 -0
  1723. package/plugins/robin/claude/hooks/vendor/playtest/keep.mjs +111 -0
  1724. package/plugins/robin/claude/hooks/vendor/playtest/stuck.mjs +48 -0
  1725. package/plugins/robin/claude/hooks/vendor/progress/holds.mjs +107 -0
  1726. package/plugins/robin/claude/hooks/vendor/progress/progress.mjs +301 -0
  1727. package/plugins/robin/claude/hooks/vendor/sim/judge.mjs +241 -0
  1728. package/plugins/robin/claude/hooks/vendor/spec/rooms.mjs +189 -0
  1729. package/plugins/robin/claude/hooks/vendor/spec/tunables.mjs +75 -0
  1730. package/plugins/robin/claude/hooks/vendor/stage/harnessignore.mjs +91 -0
  1731. package/plugins/robin/claude/hooks/vendor/stage/stage.mjs +58 -0
  1732. package/plugins/robin/claude/hooks/vendor/status/board.mjs +173 -0
  1733. package/plugins/robin/claude/hooks/vendor/status/file.mjs +113 -0
  1734. package/plugins/robin/claude/hooks/vendor/studio/forks.mjs +94 -0
  1735. package/plugins/robin/claude/hooks/vendor/studio/pitch.mjs +295 -0
  1736. package/plugins/robin/claude/hooks/vendor/verify/fingerprint.mjs +73 -0
  1737. package/plugins/robin/claude/hooks/vendor/verify/reads.mjs +33 -0
  1738. package/plugins/robin/claude/hooks/vendor/wow/picks.mjs +75 -0
  1739. package/plugins/robin/claude/skills/3d/SKILL.md +89 -0
  1740. package/plugins/robin/claude/skills/3d/references/bake-off.md +48 -0
  1741. package/plugins/robin/claude/skills/3d/references/bench.md +103 -0
  1742. package/plugins/robin/claude/skills/3d/references/budgets.md +48 -0
  1743. package/plugins/robin/claude/skills/3d/references/characters.md +67 -0
  1744. package/plugins/robin/claude/skills/3d/references/concept-image.md +47 -0
  1745. package/plugins/robin/claude/skills/3d/references/engine-targets.md +31 -0
  1746. package/plugins/robin/claude/skills/3d/references/hero-route.md +104 -0
  1747. package/plugins/robin/claude/skills/3d/references/level-spec.md +109 -0
  1748. package/plugins/robin/claude/skills/3d/references/levels.md +84 -0
  1749. package/plugins/robin/claude/skills/3d/references/light-and-places.md +141 -0
  1750. package/plugins/robin/claude/skills/3d/references/models.md +111 -0
  1751. package/plugins/robin/claude/skills/3d/references/painted-target.md +184 -0
  1752. package/plugins/robin/claude/skills/3d/references/reading.md +41 -0
  1753. package/plugins/robin/claude/skills/3d/references/skin.md +85 -0
  1754. package/plugins/robin/claude/skills/3d/references/skyboxes.md +65 -0
  1755. package/plugins/robin/claude/skills/3d/references/textures.md +71 -0
  1756. package/plugins/robin/claude/skills/3d/references/three-loading.md +199 -0
  1757. package/plugins/robin/claude/skills/3d/references/unity.md +78 -0
  1758. package/plugins/robin/claude/skills/art/SKILL.md +104 -0
  1759. package/plugins/robin/claude/skills/art/references/2d-assets.md +108 -0
  1760. package/plugins/robin/claude/skills/art/references/animation.md +126 -0
  1761. package/plugins/robin/claude/skills/art/references/cast.md +73 -0
  1762. package/plugins/robin/claude/skills/art/references/characters.md +49 -0
  1763. package/plugins/robin/claude/skills/art/references/cost.md +107 -0
  1764. package/plugins/robin/claude/skills/art/references/effects.md +85 -0
  1765. package/plugins/robin/claude/skills/art/references/frames.md +87 -0
  1766. package/plugins/robin/claude/skills/art/references/judging-frames.md +64 -0
  1767. package/plugins/robin/claude/skills/art/references/look.md +102 -0
  1768. package/plugins/robin/claude/skills/art/references/measure.md +119 -0
  1769. package/plugins/robin/claude/skills/art/references/pipeline.md +185 -0
  1770. package/plugins/robin/claude/skills/art/references/pixi.md +277 -0
  1771. package/plugins/robin/claude/skills/art/references/planes.md +27 -0
  1772. package/plugins/robin/claude/skills/art/references/prompts.md +171 -0
  1773. package/plugins/robin/claude/skills/art/references/sheets.md +141 -0
  1774. package/plugins/robin/claude/skills/art/references/style-file.md +39 -0
  1775. package/plugins/robin/claude/skills/art/references/three.md +232 -0
  1776. package/plugins/robin/claude/skills/art/references/ui.md +163 -0
  1777. package/plugins/robin/claude/skills/art/references/unity.md +78 -0
  1778. package/plugins/robin/claude/skills/art/references/wiring.md +41 -0
  1779. package/plugins/robin/claude/skills/audio/SKILL.md +92 -0
  1780. package/plugins/robin/claude/skills/audio/references/adaptive-music.md +204 -0
  1781. package/plugins/robin/claude/skills/audio/references/engine.md +78 -0
  1782. package/plugins/robin/claude/skills/audio/references/measure.md +101 -0
  1783. package/plugins/robin/claude/skills/audio/references/unity.md +74 -0
  1784. package/plugins/robin/claude/skills/feedback/SKILL.md +120 -0
  1785. package/plugins/robin/claude/skills/feedback/references/memory.md +99 -0
  1786. package/plugins/robin/claude/skills/game-feel/SKILL.md +104 -0
  1787. package/plugins/robin/claude/skills/game-feel/references/contact.md +110 -0
  1788. package/plugins/robin/claude/skills/game-feel/references/measure.md +125 -0
  1789. package/plugins/robin/claude/skills/game-feel/references/motion.md +134 -0
  1790. package/plugins/robin/claude/skills/game-feel/references/payoffs.md +35 -0
  1791. package/plugins/robin/claude/skills/game-feel/references/recipes.md +107 -0
  1792. package/plugins/robin/claude/skills/game-feel/references/unity.md +73 -0
  1793. package/plugins/robin/claude/skills/game-logic/SKILL.md +113 -0
  1794. package/plugins/robin/claude/skills/game-logic/references/balance.md +88 -0
  1795. package/plugins/robin/claude/skills/game-logic/references/content-at-scale.md +147 -0
  1796. package/plugins/robin/claude/skills/game-logic/references/depth.md +89 -0
  1797. package/plugins/robin/claude/skills/game-logic/references/escalation.md +41 -0
  1798. package/plugins/robin/claude/skills/game-logic/references/levels.md +61 -0
  1799. package/plugins/robin/claude/skills/game-logic/references/probes.md +122 -0
  1800. package/plugins/robin/claude/skills/game-logic/references/unity.md +108 -0
  1801. package/plugins/robin/claude/skills/game-spine/SKILL.md +118 -0
  1802. package/plugins/robin/claude/skills/game-spine/references/camera.md +94 -0
  1803. package/plugins/robin/claude/skills/game-spine/references/multiplayer.md +101 -0
  1804. package/plugins/robin/claude/skills/game-spine/references/patterns.md +103 -0
  1805. package/plugins/robin/claude/skills/game-spine/references/performance.md +96 -0
  1806. package/plugins/robin/claude/skills/game-spine/references/pixi.md +26 -0
  1807. package/plugins/robin/claude/skills/game-spine/references/replay.md +102 -0
  1808. package/plugins/robin/claude/skills/game-spine/references/room-api.md +63 -0
  1809. package/plugins/robin/claude/skills/game-spine/references/room-modes.md +40 -0
  1810. package/plugins/robin/claude/skills/game-spine/references/sdk.md +114 -0
  1811. package/plugins/robin/claude/skills/game-spine/references/three.md +62 -0
  1812. package/plugins/robin/claude/skills/gdd/SKILL.md +116 -0
  1813. package/plugins/robin/claude/skills/gdd/references/as-built.md +40 -0
  1814. package/plugins/robin/claude/skills/gdd/references/design-measures.md +24 -0
  1815. package/plugins/robin/claude/skills/gdd/references/design-note.md +88 -0
  1816. package/plugins/robin/claude/skills/gdd/references/experience.md +92 -0
  1817. package/plugins/robin/claude/skills/gdd/references/first-look.md +226 -0
  1818. package/plugins/robin/claude/skills/gdd/references/floors.md +62 -0
  1819. package/plugins/robin/claude/skills/gdd/references/frame.md +75 -0
  1820. package/plugins/robin/claude/skills/gdd/references/gameplay-contract.md +81 -0
  1821. package/plugins/robin/claude/skills/gdd/references/gdd-template.md +417 -0
  1822. package/plugins/robin/claude/skills/gdd/references/genre-card.md +109 -0
  1823. package/plugins/robin/claude/skills/gdd/references/genre-platformer.md +159 -0
  1824. package/plugins/robin/claude/skills/gdd/references/genre-puzzle.md +145 -0
  1825. package/plugins/robin/claude/skills/gdd/references/genre-racing.md +137 -0
  1826. package/plugins/robin/claude/skills/gdd/references/genre-rpg.md +125 -0
  1827. package/plugins/robin/claude/skills/gdd/references/genre-shooter.md +128 -0
  1828. package/plugins/robin/claude/skills/gdd/references/genre-simulation.md +112 -0
  1829. package/plugins/robin/claude/skills/gdd/references/genre-strategy.md +116 -0
  1830. package/plugins/robin/claude/skills/gdd/references/genre-survival.md +122 -0
  1831. package/plugins/robin/claude/skills/gdd/references/in-the-loop.md +106 -0
  1832. package/plugins/robin/claude/skills/gdd/references/invent-first.md +131 -0
  1833. package/plugins/robin/claude/skills/gdd/references/level-and-fun.md +112 -0
  1834. package/plugins/robin/claude/skills/gdd/references/pages.md +47 -0
  1835. package/plugins/robin/claude/skills/gdd/references/plan-at-size.md +140 -0
  1836. package/plugins/robin/claude/skills/gdd/references/production-tiers.md +117 -0
  1837. package/plugins/robin/claude/skills/gdd/references/sections.md +148 -0
  1838. package/plugins/robin/claude/skills/gdd/references/spec-folder.md +131 -0
  1839. package/plugins/robin/claude/skills/gdd/references/start.md +110 -0
  1840. package/plugins/robin/claude/skills/gdd/references/starters.md +175 -0
  1841. package/plugins/robin/claude/skills/gdd/references/the-path.md +133 -0
  1842. package/plugins/robin/claude/skills/gdd/references/track.md +29 -0
  1843. package/plugins/robin/claude/skills/gdd/references/world-and-identity.md +165 -0
  1844. package/plugins/robin/claude/skills/gdd/references/worth.md +74 -0
  1845. package/plugins/robin/claude/skills/mobile-ui/SKILL.md +107 -0
  1846. package/plugins/robin/claude/skills/mobile-ui/references/contrast.md +123 -0
  1847. package/plugins/robin/claude/skills/mobile-ui/references/hud-and-title.md +108 -0
  1848. package/plugins/robin/claude/skills/mobile-ui/references/hud-genres.md +124 -0
  1849. package/plugins/robin/claude/skills/mobile-ui/references/phone-check.md +156 -0
  1850. package/plugins/robin/claude/skills/mobile-ui/references/recipes.md +279 -0
  1851. package/plugins/robin/claude/skills/mobile-ui/references/restyle-ui.md +229 -0
  1852. package/plugins/robin/claude/skills/mobile-ui/references/unity.md +61 -0
  1853. package/plugins/robin/claude/skills/publishing/SKILL.md +109 -0
  1854. package/plugins/robin/claude/skills/publishing/references/compose.md +113 -0
  1855. package/plugins/robin/claude/skills/publishing/references/motion.md +120 -0
  1856. package/plugins/robin/claude/skills/publishing/references/networks.md +75 -0
  1857. package/plugins/robin/claude/skills/publishing/references/other-hosts.md +65 -0
  1858. package/plugins/robin/claude/skills/publishing/references/playable-ad.md +90 -0
  1859. package/plugins/robin/claude/skills/publishing/references/server-build.md +85 -0
  1860. package/plugins/robin/claude/skills/publishing/references/store-shots.md +85 -0
  1861. package/plugins/robin/claude/skills/publishing/references/trailer.md +55 -0
  1862. package/plugins/robin/claude/skills/publishing/references/what-ships.md +30 -0
  1863. package/plugins/robin/claude/skills/store/SKILL.md +81 -0
  1864. package/plugins/robin/claude/skills/store/references/app-store.md +73 -0
  1865. package/plugins/robin/claude/skills/store/references/google-play.md +141 -0
  1866. package/plugins/robin/claude/skills/store/references/ios-release.md +63 -0
  1867. package/plugins/robin/claude/skills/store/references/money.md +66 -0
  1868. package/plugins/robin/claude/skills/store/references/purchases-and-review.md +74 -0
  1869. package/plugins/robin/claude/skills/store/references/readiness-page.md +24 -0
  1870. package/plugins/robin/claude/skills/store/references/readiness.md +107 -0
  1871. package/plugins/robin/claude/skills/store/references/steam.md +38 -0
  1872. package/plugins/robin/claude/skills/store/references/unity-store.md +55 -0
  1873. package/plugins/robin/claude/skills/store/references/web-portals.md +43 -0
  1874. package/plugins/robin/claude/skills/unity-game/SKILL.md +103 -0
  1875. package/plugins/robin/claude/skills/unity-game/references/agent-ops.md +54 -0
  1876. package/plugins/robin/claude/skills/unity-game/references/fixes.md +40 -0
  1877. package/plugins/robin/claude/skills/unity-game/references/from-a-web-game.md +108 -0
  1878. package/plugins/robin/claude/skills/unity-game/references/handing-off.md +42 -0
  1879. package/plugins/robin/claude/skills/unity-game/references/performance.md +59 -0
  1880. package/plugins/robin/claude/skills/unity-game/references/probe.md +80 -0
  1881. package/plugins/robin/claude/skills/unity-game/references/shared-mac.md +121 -0
  1882. package/plugins/robin/claude/skills/unity-game/references/traps.md +108 -0
  1883. package/plugins/robin/claude/skills/verifying/SKILL.md +109 -0
  1884. package/plugins/robin/claude/skills/verifying/references/actors.md +94 -0
  1885. package/plugins/robin/claude/skills/verifying/references/bar.md +62 -0
  1886. package/plugins/robin/claude/skills/verifying/references/checks.md +69 -0
  1887. package/plugins/robin/claude/skills/verifying/references/experience.md +67 -0
  1888. package/plugins/robin/claude/skills/verifying/references/eyes.md +54 -0
  1889. package/plugins/robin/claude/skills/verifying/references/fidelity.md +126 -0
  1890. package/plugins/robin/claude/skills/verifying/references/hit-bar.md +31 -0
  1891. package/plugins/robin/claude/skills/verifying/references/journeys.md +77 -0
  1892. package/plugins/robin/claude/skills/verifying/references/mobile-qa.md +123 -0
  1893. package/plugins/robin/claude/skills/verifying/references/playtest.md +161 -0
  1894. package/plugins/robin/claude/skills/verifying/references/review.md +105 -0
  1895. package/plugins/robin/claude/skills/verifying/references/rubric.md +67 -0
  1896. package/plugins/robin/claude/skills/verifying/references/scenes.md +49 -0
  1897. package/plugins/robin/claude/skills/verifying/references/unity.md +60 -0
  1898. package/plugins/robin/claude/skills/world-and-story/SKILL.md +99 -0
  1899. package/plugins/robin/claude/skills/world-and-story/references/atmosphere.md +208 -0
  1900. package/plugins/robin/claude/skills/world-and-story/references/forged-world.md +79 -0
  1901. package/plugins/robin/claude/skills/world-and-story/references/living-world.md +237 -0
  1902. package/plugins/robin/claude/skills/world-and-story/references/opening-and-chapters.md +215 -0
  1903. package/plugins/robin/claude/skills/world-and-story/references/shelf.md +80 -0
  1904. package/plugins/robin/claude/skills/world-and-story/references/story-at-size.md +159 -0
  1905. package/plugins/robin/claude/skills/world-and-story/references/voice.md +175 -0
  1906. package/plugins/robin/claude/skills/world-and-story/references/world-kit.md +154 -0
  1907. package/plugins/robin/mcp-servers.json +25 -0
  1908. package/plugins/robin/plugin.json +20 -0
  1909. package/plugins/robin/skills/fp-first-look/SKILL.md +59 -0
  1910. package/plugins/robin/skills/fp-flow/SKILL.md +50 -0
  1911. package/plugins/robin/skills/fp-lanes/SKILL.md +38 -0
  1912. package/plugins/robin/skills/fp-mobile-qa/SKILL.md +28 -0
  1913. package/plugins/robin/skills/fp-new/SKILL.md +94 -0
  1914. package/plugins/robin/skills/fp-playtest/SKILL.md +66 -0
  1915. package/plugins/robin/skills/fp-publish/SKILL.md +23 -0
  1916. package/plugins/robin/skills/fp-smoke-build/SKILL.md +25 -0
  1917. package/plugins/robin/skills/fp-verify/SKILL.md +20 -0
  1918. package/plugins/robin/skills/funpixel-3d/SKILL.md +89 -0
  1919. package/plugins/robin/skills/funpixel-3d/references/bake-off.md +48 -0
  1920. package/plugins/robin/skills/funpixel-3d/references/bench.md +103 -0
  1921. package/plugins/robin/skills/funpixel-3d/references/budgets.md +48 -0
  1922. package/plugins/robin/skills/funpixel-3d/references/characters.md +67 -0
  1923. package/plugins/robin/skills/funpixel-3d/references/concept-image.md +47 -0
  1924. package/plugins/robin/skills/funpixel-3d/references/engine-targets.md +31 -0
  1925. package/plugins/robin/skills/funpixel-3d/references/hero-route.md +104 -0
  1926. package/plugins/robin/skills/funpixel-3d/references/level-spec.md +109 -0
  1927. package/plugins/robin/skills/funpixel-3d/references/levels.md +84 -0
  1928. package/plugins/robin/skills/funpixel-3d/references/light-and-places.md +141 -0
  1929. package/plugins/robin/skills/funpixel-3d/references/models.md +111 -0
  1930. package/plugins/robin/skills/funpixel-3d/references/painted-target.md +184 -0
  1931. package/plugins/robin/skills/funpixel-3d/references/reading.md +41 -0
  1932. package/plugins/robin/skills/funpixel-3d/references/skin.md +85 -0
  1933. package/plugins/robin/skills/funpixel-3d/references/skyboxes.md +65 -0
  1934. package/plugins/robin/skills/funpixel-3d/references/textures.md +71 -0
  1935. package/plugins/robin/skills/funpixel-3d/references/three-loading.md +199 -0
  1936. package/plugins/robin/skills/funpixel-3d/references/unity.md +78 -0
  1937. package/plugins/robin/skills/funpixel-art/SKILL.md +104 -0
  1938. package/plugins/robin/skills/funpixel-art/references/2d-assets.md +108 -0
  1939. package/plugins/robin/skills/funpixel-art/references/animation.md +126 -0
  1940. package/plugins/robin/skills/funpixel-art/references/cast.md +73 -0
  1941. package/plugins/robin/skills/funpixel-art/references/characters.md +49 -0
  1942. package/plugins/robin/skills/funpixel-art/references/cost.md +107 -0
  1943. package/plugins/robin/skills/funpixel-art/references/effects.md +85 -0
  1944. package/plugins/robin/skills/funpixel-art/references/frames.md +87 -0
  1945. package/plugins/robin/skills/funpixel-art/references/judging-frames.md +64 -0
  1946. package/plugins/robin/skills/funpixel-art/references/look.md +102 -0
  1947. package/plugins/robin/skills/funpixel-art/references/measure.md +119 -0
  1948. package/plugins/robin/skills/funpixel-art/references/pipeline.md +185 -0
  1949. package/plugins/robin/skills/funpixel-art/references/pixi.md +277 -0
  1950. package/plugins/robin/skills/funpixel-art/references/planes.md +27 -0
  1951. package/plugins/robin/skills/funpixel-art/references/prompts.md +171 -0
  1952. package/plugins/robin/skills/funpixel-art/references/sheets.md +141 -0
  1953. package/plugins/robin/skills/funpixel-art/references/style-file.md +39 -0
  1954. package/plugins/robin/skills/funpixel-art/references/three.md +232 -0
  1955. package/plugins/robin/skills/funpixel-art/references/ui.md +163 -0
  1956. package/plugins/robin/skills/funpixel-art/references/unity.md +78 -0
  1957. package/plugins/robin/skills/funpixel-art/references/wiring.md +41 -0
  1958. package/plugins/robin/skills/funpixel-audio/SKILL.md +92 -0
  1959. package/plugins/robin/skills/funpixel-audio/references/adaptive-music.md +204 -0
  1960. package/plugins/robin/skills/funpixel-audio/references/engine.md +78 -0
  1961. package/plugins/robin/skills/funpixel-audio/references/measure.md +101 -0
  1962. package/plugins/robin/skills/funpixel-audio/references/unity.md +74 -0
  1963. package/plugins/robin/skills/funpixel-brief/SKILL.md +163 -0
  1964. package/plugins/robin/skills/funpixel-feedback/SKILL.md +120 -0
  1965. package/plugins/robin/skills/funpixel-feedback/references/memory.md +99 -0
  1966. package/plugins/robin/skills/funpixel-game-feel/SKILL.md +104 -0
  1967. package/plugins/robin/skills/funpixel-game-feel/references/contact.md +110 -0
  1968. package/plugins/robin/skills/funpixel-game-feel/references/measure.md +125 -0
  1969. package/plugins/robin/skills/funpixel-game-feel/references/motion.md +134 -0
  1970. package/plugins/robin/skills/funpixel-game-feel/references/payoffs.md +35 -0
  1971. package/plugins/robin/skills/funpixel-game-feel/references/recipes.md +107 -0
  1972. package/plugins/robin/skills/funpixel-game-feel/references/unity.md +73 -0
  1973. package/plugins/robin/skills/funpixel-game-logic/SKILL.md +113 -0
  1974. package/plugins/robin/skills/funpixel-game-logic/references/balance.md +88 -0
  1975. package/plugins/robin/skills/funpixel-game-logic/references/content-at-scale.md +147 -0
  1976. package/plugins/robin/skills/funpixel-game-logic/references/depth.md +89 -0
  1977. package/plugins/robin/skills/funpixel-game-logic/references/escalation.md +41 -0
  1978. package/plugins/robin/skills/funpixel-game-logic/references/levels.md +61 -0
  1979. package/plugins/robin/skills/funpixel-game-logic/references/probes.md +122 -0
  1980. package/plugins/robin/skills/funpixel-game-logic/references/unity.md +108 -0
  1981. package/plugins/robin/skills/funpixel-game-spine/SKILL.md +118 -0
  1982. package/plugins/robin/skills/funpixel-game-spine/references/camera.md +94 -0
  1983. package/plugins/robin/skills/funpixel-game-spine/references/multiplayer.md +101 -0
  1984. package/plugins/robin/skills/funpixel-game-spine/references/patterns.md +103 -0
  1985. package/plugins/robin/skills/funpixel-game-spine/references/performance.md +96 -0
  1986. package/plugins/robin/skills/funpixel-game-spine/references/pixi.md +26 -0
  1987. package/plugins/robin/skills/funpixel-game-spine/references/replay.md +102 -0
  1988. package/plugins/robin/skills/funpixel-game-spine/references/room-api.md +63 -0
  1989. package/plugins/robin/skills/funpixel-game-spine/references/room-modes.md +40 -0
  1990. package/plugins/robin/skills/funpixel-game-spine/references/sdk.md +114 -0
  1991. package/plugins/robin/skills/funpixel-game-spine/references/three.md +62 -0
  1992. package/plugins/robin/skills/funpixel-gdd/SKILL.md +116 -0
  1993. package/plugins/robin/skills/funpixel-gdd/references/as-built.md +40 -0
  1994. package/plugins/robin/skills/funpixel-gdd/references/design-measures.md +24 -0
  1995. package/plugins/robin/skills/funpixel-gdd/references/design-note.md +88 -0
  1996. package/plugins/robin/skills/funpixel-gdd/references/experience.md +92 -0
  1997. package/plugins/robin/skills/funpixel-gdd/references/first-look.md +226 -0
  1998. package/plugins/robin/skills/funpixel-gdd/references/floors.md +62 -0
  1999. package/plugins/robin/skills/funpixel-gdd/references/frame.md +75 -0
  2000. package/plugins/robin/skills/funpixel-gdd/references/gameplay-contract.md +81 -0
  2001. package/plugins/robin/skills/funpixel-gdd/references/gdd-template.md +417 -0
  2002. package/plugins/robin/skills/funpixel-gdd/references/genre-card.md +109 -0
  2003. package/plugins/robin/skills/funpixel-gdd/references/genre-platformer.md +159 -0
  2004. package/plugins/robin/skills/funpixel-gdd/references/genre-puzzle.md +145 -0
  2005. package/plugins/robin/skills/funpixel-gdd/references/genre-racing.md +137 -0
  2006. package/plugins/robin/skills/funpixel-gdd/references/genre-rpg.md +125 -0
  2007. package/plugins/robin/skills/funpixel-gdd/references/genre-shooter.md +128 -0
  2008. package/plugins/robin/skills/funpixel-gdd/references/genre-simulation.md +112 -0
  2009. package/plugins/robin/skills/funpixel-gdd/references/genre-strategy.md +116 -0
  2010. package/plugins/robin/skills/funpixel-gdd/references/genre-survival.md +122 -0
  2011. package/plugins/robin/skills/funpixel-gdd/references/in-the-loop.md +106 -0
  2012. package/plugins/robin/skills/funpixel-gdd/references/invent-first.md +131 -0
  2013. package/plugins/robin/skills/funpixel-gdd/references/level-and-fun.md +112 -0
  2014. package/plugins/robin/skills/funpixel-gdd/references/pages.md +47 -0
  2015. package/plugins/robin/skills/funpixel-gdd/references/plan-at-size.md +140 -0
  2016. package/plugins/robin/skills/funpixel-gdd/references/production-tiers.md +117 -0
  2017. package/plugins/robin/skills/funpixel-gdd/references/sections.md +148 -0
  2018. package/plugins/robin/skills/funpixel-gdd/references/spec-folder.md +131 -0
  2019. package/plugins/robin/skills/funpixel-gdd/references/start.md +110 -0
  2020. package/plugins/robin/skills/funpixel-gdd/references/starters.md +175 -0
  2021. package/plugins/robin/skills/funpixel-gdd/references/the-path.md +133 -0
  2022. package/plugins/robin/skills/funpixel-gdd/references/track.md +29 -0
  2023. package/plugins/robin/skills/funpixel-gdd/references/world-and-identity.md +165 -0
  2024. package/plugins/robin/skills/funpixel-gdd/references/worth.md +74 -0
  2025. package/plugins/robin/skills/funpixel-mobile-ui/SKILL.md +107 -0
  2026. package/plugins/robin/skills/funpixel-mobile-ui/references/contrast.md +123 -0
  2027. package/plugins/robin/skills/funpixel-mobile-ui/references/hud-and-title.md +108 -0
  2028. package/plugins/robin/skills/funpixel-mobile-ui/references/hud-genres.md +124 -0
  2029. package/plugins/robin/skills/funpixel-mobile-ui/references/phone-check.md +156 -0
  2030. package/plugins/robin/skills/funpixel-mobile-ui/references/recipes.md +279 -0
  2031. package/plugins/robin/skills/funpixel-mobile-ui/references/restyle-ui.md +229 -0
  2032. package/plugins/robin/skills/funpixel-mobile-ui/references/unity.md +61 -0
  2033. package/plugins/robin/skills/funpixel-publish/SKILL.md +109 -0
  2034. package/plugins/robin/skills/funpixel-publish/references/compose.md +113 -0
  2035. package/plugins/robin/skills/funpixel-publish/references/motion.md +120 -0
  2036. package/plugins/robin/skills/funpixel-publish/references/networks.md +75 -0
  2037. package/plugins/robin/skills/funpixel-publish/references/other-hosts.md +65 -0
  2038. package/plugins/robin/skills/funpixel-publish/references/playable-ad.md +90 -0
  2039. package/plugins/robin/skills/funpixel-publish/references/server-build.md +85 -0
  2040. package/plugins/robin/skills/funpixel-publish/references/store-shots.md +85 -0
  2041. package/plugins/robin/skills/funpixel-publish/references/trailer.md +55 -0
  2042. package/plugins/robin/skills/funpixel-publish/references/what-ships.md +30 -0
  2043. package/plugins/robin/skills/funpixel-store/SKILL.md +81 -0
  2044. package/plugins/robin/skills/funpixel-store/references/app-store.md +73 -0
  2045. package/plugins/robin/skills/funpixel-store/references/google-play.md +141 -0
  2046. package/plugins/robin/skills/funpixel-store/references/ios-release.md +63 -0
  2047. package/plugins/robin/skills/funpixel-store/references/money.md +66 -0
  2048. package/plugins/robin/skills/funpixel-store/references/purchases-and-review.md +74 -0
  2049. package/plugins/robin/skills/funpixel-store/references/readiness-page.md +24 -0
  2050. package/plugins/robin/skills/funpixel-store/references/readiness.md +107 -0
  2051. package/plugins/robin/skills/funpixel-store/references/steam.md +38 -0
  2052. package/plugins/robin/skills/funpixel-store/references/unity-store.md +55 -0
  2053. package/plugins/robin/skills/funpixel-store/references/web-portals.md +43 -0
  2054. package/plugins/robin/skills/funpixel-unity-game/SKILL.md +103 -0
  2055. package/plugins/robin/skills/funpixel-unity-game/references/agent-ops.md +54 -0
  2056. package/plugins/robin/skills/funpixel-unity-game/references/fixes.md +40 -0
  2057. package/plugins/robin/skills/funpixel-unity-game/references/from-a-web-game.md +108 -0
  2058. package/plugins/robin/skills/funpixel-unity-game/references/handing-off.md +42 -0
  2059. package/plugins/robin/skills/funpixel-unity-game/references/performance.md +59 -0
  2060. package/plugins/robin/skills/funpixel-unity-game/references/probe.md +80 -0
  2061. package/plugins/robin/skills/funpixel-unity-game/references/shared-mac.md +121 -0
  2062. package/plugins/robin/skills/funpixel-unity-game/references/traps.md +108 -0
  2063. package/plugins/robin/skills/funpixel-verify/SKILL.md +109 -0
  2064. package/plugins/robin/skills/funpixel-verify/references/actors.md +94 -0
  2065. package/plugins/robin/skills/funpixel-verify/references/bar.md +62 -0
  2066. package/plugins/robin/skills/funpixel-verify/references/checks.md +69 -0
  2067. package/plugins/robin/skills/funpixel-verify/references/experience.md +67 -0
  2068. package/plugins/robin/skills/funpixel-verify/references/eyes.md +54 -0
  2069. package/plugins/robin/skills/funpixel-verify/references/fidelity.md +126 -0
  2070. package/plugins/robin/skills/funpixel-verify/references/hit-bar.md +31 -0
  2071. package/plugins/robin/skills/funpixel-verify/references/journeys.md +77 -0
  2072. package/plugins/robin/skills/funpixel-verify/references/mobile-qa.md +123 -0
  2073. package/plugins/robin/skills/funpixel-verify/references/playtest.md +161 -0
  2074. package/plugins/robin/skills/funpixel-verify/references/review.md +105 -0
  2075. package/plugins/robin/skills/funpixel-verify/references/rubric.md +67 -0
  2076. package/plugins/robin/skills/funpixel-verify/references/scenes.md +49 -0
  2077. package/plugins/robin/skills/funpixel-verify/references/unity.md +60 -0
  2078. package/plugins/robin/skills/funpixel-world-and-story/SKILL.md +99 -0
  2079. package/plugins/robin/skills/funpixel-world-and-story/references/atmosphere.md +208 -0
  2080. package/plugins/robin/skills/funpixel-world-and-story/references/forged-world.md +79 -0
  2081. package/plugins/robin/skills/funpixel-world-and-story/references/living-world.md +237 -0
  2082. package/plugins/robin/skills/funpixel-world-and-story/references/opening-and-chapters.md +215 -0
  2083. package/plugins/robin/skills/funpixel-world-and-story/references/shelf.md +80 -0
  2084. package/plugins/robin/skills/funpixel-world-and-story/references/story-at-size.md +159 -0
  2085. package/plugins/robin/skills/funpixel-world-and-story/references/voice.md +175 -0
  2086. package/plugins/robin/skills/funpixel-world-and-story/references/world-kit.md +154 -0
  2087. package/templates/common/.agents/skills/funpixel-3d/SKILL.md +89 -0
  2088. package/templates/common/.agents/skills/funpixel-3d/references/bake-off.md +48 -0
  2089. package/templates/common/.agents/skills/funpixel-3d/references/bench.md +103 -0
  2090. package/templates/common/.agents/skills/funpixel-3d/references/budgets.md +48 -0
  2091. package/templates/common/.agents/skills/funpixel-3d/references/characters.md +67 -0
  2092. package/templates/common/.agents/skills/funpixel-3d/references/concept-image.md +47 -0
  2093. package/templates/common/.agents/skills/funpixel-3d/references/engine-targets.md +31 -0
  2094. package/templates/common/.agents/skills/funpixel-3d/references/hero-route.md +104 -0
  2095. package/templates/common/.agents/skills/funpixel-3d/references/level-spec.md +109 -0
  2096. package/templates/common/.agents/skills/funpixel-3d/references/levels.md +84 -0
  2097. package/templates/common/.agents/skills/funpixel-3d/references/light-and-places.md +141 -0
  2098. package/templates/common/.agents/skills/funpixel-3d/references/models.md +111 -0
  2099. package/templates/common/.agents/skills/funpixel-3d/references/painted-target.md +184 -0
  2100. package/templates/common/.agents/skills/funpixel-3d/references/reading.md +41 -0
  2101. package/templates/common/.agents/skills/funpixel-3d/references/skin.md +85 -0
  2102. package/templates/common/.agents/skills/funpixel-3d/references/skyboxes.md +65 -0
  2103. package/templates/common/.agents/skills/funpixel-3d/references/textures.md +71 -0
  2104. package/templates/common/.agents/skills/funpixel-3d/references/three-loading.md +199 -0
  2105. package/templates/common/.agents/skills/funpixel-3d/references/unity.md +78 -0
  2106. package/templates/common/.agents/skills/funpixel-art/SKILL.md +104 -0
  2107. package/templates/common/.agents/skills/funpixel-art/references/2d-assets.md +108 -0
  2108. package/templates/common/.agents/skills/funpixel-art/references/animation.md +126 -0
  2109. package/templates/common/.agents/skills/funpixel-art/references/cast.md +73 -0
  2110. package/templates/common/.agents/skills/funpixel-art/references/characters.md +49 -0
  2111. package/templates/common/.agents/skills/funpixel-art/references/cost.md +107 -0
  2112. package/templates/common/.agents/skills/funpixel-art/references/effects.md +85 -0
  2113. package/templates/common/.agents/skills/funpixel-art/references/frames.md +87 -0
  2114. package/templates/common/.agents/skills/funpixel-art/references/judging-frames.md +64 -0
  2115. package/templates/common/.agents/skills/funpixel-art/references/look.md +102 -0
  2116. package/templates/common/.agents/skills/funpixel-art/references/measure.md +119 -0
  2117. package/templates/common/.agents/skills/funpixel-art/references/pipeline.md +185 -0
  2118. package/templates/common/.agents/skills/funpixel-art/references/pixi.md +277 -0
  2119. package/templates/common/.agents/skills/funpixel-art/references/planes.md +27 -0
  2120. package/templates/common/.agents/skills/funpixel-art/references/prompts.md +171 -0
  2121. package/templates/common/.agents/skills/funpixel-art/references/sheets.md +141 -0
  2122. package/templates/common/.agents/skills/funpixel-art/references/style-file.md +39 -0
  2123. package/templates/common/.agents/skills/funpixel-art/references/three.md +232 -0
  2124. package/templates/common/.agents/skills/funpixel-art/references/ui.md +163 -0
  2125. package/templates/common/.agents/skills/funpixel-art/references/unity.md +78 -0
  2126. package/templates/common/.agents/skills/funpixel-art/references/wiring.md +41 -0
  2127. package/templates/common/.agents/skills/funpixel-audio/SKILL.md +92 -0
  2128. package/templates/common/.agents/skills/funpixel-audio/references/adaptive-music.md +204 -0
  2129. package/templates/common/.agents/skills/funpixel-audio/references/engine.md +78 -0
  2130. package/templates/common/.agents/skills/funpixel-audio/references/measure.md +101 -0
  2131. package/templates/common/.agents/skills/funpixel-audio/references/unity.md +74 -0
  2132. package/templates/common/.agents/skills/funpixel-feedback/SKILL.md +120 -0
  2133. package/templates/common/.agents/skills/funpixel-feedback/references/memory.md +99 -0
  2134. package/templates/common/.agents/skills/funpixel-game-feel/SKILL.md +104 -0
  2135. package/templates/common/.agents/skills/funpixel-game-feel/references/contact.md +110 -0
  2136. package/templates/common/.agents/skills/funpixel-game-feel/references/measure.md +125 -0
  2137. package/templates/common/.agents/skills/funpixel-game-feel/references/motion.md +134 -0
  2138. package/templates/common/.agents/skills/funpixel-game-feel/references/payoffs.md +35 -0
  2139. package/templates/common/.agents/skills/funpixel-game-feel/references/recipes.md +107 -0
  2140. package/templates/common/.agents/skills/funpixel-game-feel/references/unity.md +73 -0
  2141. package/templates/common/.agents/skills/funpixel-game-logic/SKILL.md +113 -0
  2142. package/templates/common/.agents/skills/funpixel-game-logic/references/balance.md +88 -0
  2143. package/templates/common/.agents/skills/funpixel-game-logic/references/content-at-scale.md +147 -0
  2144. package/templates/common/.agents/skills/funpixel-game-logic/references/depth.md +89 -0
  2145. package/templates/common/.agents/skills/funpixel-game-logic/references/escalation.md +41 -0
  2146. package/templates/common/.agents/skills/funpixel-game-logic/references/levels.md +61 -0
  2147. package/templates/common/.agents/skills/funpixel-game-logic/references/probes.md +122 -0
  2148. package/templates/common/.agents/skills/funpixel-game-logic/references/unity.md +108 -0
  2149. package/templates/common/.agents/skills/funpixel-game-spine/SKILL.md +118 -0
  2150. package/templates/common/.agents/skills/funpixel-game-spine/references/camera.md +94 -0
  2151. package/templates/common/.agents/skills/funpixel-game-spine/references/multiplayer.md +101 -0
  2152. package/templates/common/.agents/skills/funpixel-game-spine/references/patterns.md +103 -0
  2153. package/templates/common/.agents/skills/funpixel-game-spine/references/performance.md +96 -0
  2154. package/templates/common/.agents/skills/funpixel-game-spine/references/pixi.md +26 -0
  2155. package/templates/common/.agents/skills/funpixel-game-spine/references/replay.md +102 -0
  2156. package/templates/common/.agents/skills/funpixel-game-spine/references/room-api.md +63 -0
  2157. package/templates/common/.agents/skills/funpixel-game-spine/references/room-modes.md +40 -0
  2158. package/templates/common/.agents/skills/funpixel-game-spine/references/sdk.md +114 -0
  2159. package/templates/common/.agents/skills/funpixel-game-spine/references/three.md +62 -0
  2160. package/templates/common/.agents/skills/funpixel-gdd/SKILL.md +116 -0
  2161. package/templates/common/.agents/skills/funpixel-gdd/references/as-built.md +40 -0
  2162. package/templates/common/.agents/skills/funpixel-gdd/references/design-measures.md +24 -0
  2163. package/templates/common/.agents/skills/funpixel-gdd/references/design-note.md +88 -0
  2164. package/templates/common/.agents/skills/funpixel-gdd/references/experience.md +92 -0
  2165. package/templates/common/.agents/skills/funpixel-gdd/references/first-look.md +226 -0
  2166. package/templates/common/.agents/skills/funpixel-gdd/references/floors.md +62 -0
  2167. package/templates/common/.agents/skills/funpixel-gdd/references/frame.md +75 -0
  2168. package/templates/common/.agents/skills/funpixel-gdd/references/gameplay-contract.md +81 -0
  2169. package/templates/common/.agents/skills/funpixel-gdd/references/gdd-template.md +417 -0
  2170. package/templates/common/.agents/skills/funpixel-gdd/references/genre-card.md +109 -0
  2171. package/templates/common/.agents/skills/funpixel-gdd/references/genre-platformer.md +159 -0
  2172. package/templates/common/.agents/skills/funpixel-gdd/references/genre-puzzle.md +145 -0
  2173. package/templates/common/.agents/skills/funpixel-gdd/references/genre-racing.md +137 -0
  2174. package/templates/common/.agents/skills/funpixel-gdd/references/genre-rpg.md +125 -0
  2175. package/templates/common/.agents/skills/funpixel-gdd/references/genre-shooter.md +128 -0
  2176. package/templates/common/.agents/skills/funpixel-gdd/references/genre-simulation.md +112 -0
  2177. package/templates/common/.agents/skills/funpixel-gdd/references/genre-strategy.md +116 -0
  2178. package/templates/common/.agents/skills/funpixel-gdd/references/genre-survival.md +122 -0
  2179. package/templates/common/.agents/skills/funpixel-gdd/references/in-the-loop.md +106 -0
  2180. package/templates/common/.agents/skills/funpixel-gdd/references/invent-first.md +131 -0
  2181. package/templates/common/.agents/skills/funpixel-gdd/references/level-and-fun.md +112 -0
  2182. package/templates/common/.agents/skills/funpixel-gdd/references/pages.md +47 -0
  2183. package/templates/common/.agents/skills/funpixel-gdd/references/plan-at-size.md +140 -0
  2184. package/templates/common/.agents/skills/funpixel-gdd/references/production-tiers.md +117 -0
  2185. package/templates/common/.agents/skills/funpixel-gdd/references/sections.md +148 -0
  2186. package/templates/common/.agents/skills/funpixel-gdd/references/spec-folder.md +131 -0
  2187. package/templates/common/.agents/skills/funpixel-gdd/references/start.md +110 -0
  2188. package/templates/common/.agents/skills/funpixel-gdd/references/starters.md +175 -0
  2189. package/templates/common/.agents/skills/funpixel-gdd/references/the-path.md +133 -0
  2190. package/templates/common/.agents/skills/funpixel-gdd/references/track.md +29 -0
  2191. package/templates/common/.agents/skills/funpixel-gdd/references/world-and-identity.md +165 -0
  2192. package/templates/common/.agents/skills/funpixel-gdd/references/worth.md +74 -0
  2193. package/templates/common/.agents/skills/funpixel-mobile-ui/SKILL.md +107 -0
  2194. package/templates/common/.agents/skills/funpixel-mobile-ui/references/contrast.md +123 -0
  2195. package/templates/common/.agents/skills/funpixel-mobile-ui/references/hud-and-title.md +108 -0
  2196. package/templates/common/.agents/skills/funpixel-mobile-ui/references/hud-genres.md +124 -0
  2197. package/templates/common/.agents/skills/funpixel-mobile-ui/references/phone-check.md +156 -0
  2198. package/templates/common/.agents/skills/funpixel-mobile-ui/references/recipes.md +279 -0
  2199. package/templates/common/.agents/skills/funpixel-mobile-ui/references/restyle-ui.md +229 -0
  2200. package/templates/common/.agents/skills/funpixel-mobile-ui/references/unity.md +61 -0
  2201. package/templates/common/.agents/skills/funpixel-publish/SKILL.md +109 -0
  2202. package/templates/common/.agents/skills/funpixel-publish/references/compose.md +113 -0
  2203. package/templates/common/.agents/skills/funpixel-publish/references/motion.md +120 -0
  2204. package/templates/common/.agents/skills/funpixel-publish/references/networks.md +75 -0
  2205. package/templates/common/.agents/skills/funpixel-publish/references/other-hosts.md +65 -0
  2206. package/templates/common/.agents/skills/funpixel-publish/references/playable-ad.md +90 -0
  2207. package/templates/common/.agents/skills/funpixel-publish/references/server-build.md +85 -0
  2208. package/templates/common/.agents/skills/funpixel-publish/references/store-shots.md +85 -0
  2209. package/templates/common/.agents/skills/funpixel-publish/references/trailer.md +55 -0
  2210. package/templates/common/.agents/skills/funpixel-publish/references/what-ships.md +30 -0
  2211. package/templates/common/.agents/skills/funpixel-store/SKILL.md +81 -0
  2212. package/templates/common/.agents/skills/funpixel-store/references/app-store.md +73 -0
  2213. package/templates/common/.agents/skills/funpixel-store/references/google-play.md +141 -0
  2214. package/templates/common/.agents/skills/funpixel-store/references/ios-release.md +63 -0
  2215. package/templates/common/.agents/skills/funpixel-store/references/money.md +66 -0
  2216. package/templates/common/.agents/skills/funpixel-store/references/purchases-and-review.md +74 -0
  2217. package/templates/common/.agents/skills/funpixel-store/references/readiness-page.md +24 -0
  2218. package/templates/common/.agents/skills/funpixel-store/references/readiness.md +107 -0
  2219. package/templates/common/.agents/skills/funpixel-store/references/steam.md +38 -0
  2220. package/templates/common/.agents/skills/funpixel-store/references/unity-store.md +55 -0
  2221. package/templates/common/.agents/skills/funpixel-store/references/web-portals.md +43 -0
  2222. package/templates/common/.agents/skills/funpixel-unity-game/SKILL.md +103 -0
  2223. package/templates/common/.agents/skills/funpixel-unity-game/references/agent-ops.md +54 -0
  2224. package/templates/common/.agents/skills/funpixel-unity-game/references/fixes.md +40 -0
  2225. package/templates/common/.agents/skills/funpixel-unity-game/references/from-a-web-game.md +108 -0
  2226. package/templates/common/.agents/skills/funpixel-unity-game/references/handing-off.md +42 -0
  2227. package/templates/common/.agents/skills/funpixel-unity-game/references/performance.md +59 -0
  2228. package/templates/common/.agents/skills/funpixel-unity-game/references/probe.md +80 -0
  2229. package/templates/common/.agents/skills/funpixel-unity-game/references/shared-mac.md +121 -0
  2230. package/templates/common/.agents/skills/funpixel-unity-game/references/traps.md +108 -0
  2231. package/templates/common/.agents/skills/funpixel-verify/SKILL.md +109 -0
  2232. package/templates/common/.agents/skills/funpixel-verify/references/actors.md +94 -0
  2233. package/templates/common/.agents/skills/funpixel-verify/references/bar.md +62 -0
  2234. package/templates/common/.agents/skills/funpixel-verify/references/checks.md +69 -0
  2235. package/templates/common/.agents/skills/funpixel-verify/references/experience.md +67 -0
  2236. package/templates/common/.agents/skills/funpixel-verify/references/eyes.md +54 -0
  2237. package/templates/common/.agents/skills/funpixel-verify/references/fidelity.md +126 -0
  2238. package/templates/common/.agents/skills/funpixel-verify/references/hit-bar.md +31 -0
  2239. package/templates/common/.agents/skills/funpixel-verify/references/journeys.md +77 -0
  2240. package/templates/common/.agents/skills/funpixel-verify/references/mobile-qa.md +123 -0
  2241. package/templates/common/.agents/skills/funpixel-verify/references/playtest.md +161 -0
  2242. package/templates/common/.agents/skills/funpixel-verify/references/review.md +105 -0
  2243. package/templates/common/.agents/skills/funpixel-verify/references/rubric.md +67 -0
  2244. package/templates/common/.agents/skills/funpixel-verify/references/scenes.md +49 -0
  2245. package/templates/common/.agents/skills/funpixel-verify/references/unity.md +60 -0
  2246. package/templates/common/.agents/skills/funpixel-world-and-story/SKILL.md +99 -0
  2247. package/templates/common/.agents/skills/funpixel-world-and-story/references/atmosphere.md +208 -0
  2248. package/templates/common/.agents/skills/funpixel-world-and-story/references/forged-world.md +79 -0
  2249. package/templates/common/.agents/skills/funpixel-world-and-story/references/living-world.md +237 -0
  2250. package/templates/common/.agents/skills/funpixel-world-and-story/references/opening-and-chapters.md +215 -0
  2251. package/templates/common/.agents/skills/funpixel-world-and-story/references/shelf.md +80 -0
  2252. package/templates/common/.agents/skills/funpixel-world-and-story/references/story-at-size.md +159 -0
  2253. package/templates/common/.agents/skills/funpixel-world-and-story/references/voice.md +175 -0
  2254. package/templates/common/.agents/skills/funpixel-world-and-story/references/world-kit.md +154 -0
  2255. package/templates/common/.claude/settings.json +3 -0
  2256. package/templates/common/.harnessignore +28 -0
  2257. package/templates/common/AGENTS.md +135 -0
  2258. package/templates/common/CLAUDE.md +1 -0
  2259. package/templates/common/assets/assets.example.json +9 -0
  2260. package/templates/common/index.html +13 -0
  2261. package/templates/common/src/art/files.mjs +27 -0
  2262. package/templates/common/src/assets.ts +62 -0
  2263. package/templates/common/src/beat.ts +50 -0
  2264. package/templates/common/src/characters.ts +54 -0
  2265. package/templates/common/src/expose.ts +63 -0
  2266. package/templates/common/src/feel.ts +78 -0
  2267. package/templates/common/src/fpx-hooks.ts +46 -0
  2268. package/templates/common/src/frame.ts +63 -0
  2269. package/templates/common/src/grade.ts +47 -0
  2270. package/templates/common/src/hud-kit.css +29 -0
  2271. package/templates/common/src/hud-kit.tsx +85 -0
  2272. package/templates/common/src/hud.tsx +55 -0
  2273. package/templates/common/src/icons.tsx +35 -0
  2274. package/templates/common/src/input.ts +70 -0
  2275. package/templates/common/src/juice.ts +92 -0
  2276. package/templates/common/src/levels.ts +43 -0
  2277. package/templates/common/src/living.ts +91 -0
  2278. package/templates/common/src/look.json +19 -0
  2279. package/templates/common/src/look.ts +54 -0
  2280. package/templates/common/src/main.tsx +31 -0
  2281. package/templates/common/src/markers.ts +60 -0
  2282. package/templates/common/src/motion-sample.ts +71 -0
  2283. package/templates/common/src/motion.ts +92 -0
  2284. package/templates/common/src/pin.ts +32 -0
  2285. package/templates/common/src/platform.ts +67 -0
  2286. package/templates/common/src/pose.ts +22 -0
  2287. package/templates/common/src/probe-human.ts +29 -0
  2288. package/templates/common/src/probe-kit.ts +99 -0
  2289. package/templates/common/src/rules.ts +99 -0
  2290. package/templates/common/src/save.ts +21 -0
  2291. package/templates/common/src/screens.css +34 -0
  2292. package/templates/common/src/screens.tsx +95 -0
  2293. package/templates/common/src/selftests.ts +22 -0
  2294. package/templates/common/src/session.ts +99 -0
  2295. package/templates/common/src/sound.ts +85 -0
  2296. package/templates/common/src/splash-funpixel/OFL.txt +94 -0
  2297. package/templates/common/src/splash-funpixel/card.css +18 -0
  2298. package/templates/common/src/splash-funpixel/card.tsx +22 -0
  2299. package/templates/common/src/splash.css +15 -0
  2300. package/templates/common/src/splash.tsx +86 -0
  2301. package/templates/common/src/store.ts +68 -0
  2302. package/templates/common/src/strike.ts +82 -0
  2303. package/templates/common/src/styles.css +81 -0
  2304. package/templates/common/src/toasts.ts +75 -0
  2305. package/templates/common/src/world.ts +91 -0
  2306. package/templates/common/test/feel.json +36 -0
  2307. package/templates/common/test/platform.test.ts +42 -0
  2308. package/templates/common/test/probes.ts +72 -0
  2309. package/templates/common/test/rules.test.ts +88 -0
  2310. package/templates/common/tsconfig.json +16 -0
  2311. package/templates/common/vite.config.ts +6 -0
  2312. package/templates/pixi/src/character.ts +63 -0
  2313. package/templates/pixi/src/game.ts +99 -0
  2314. package/templates/pixi/src/world-hud.ts +16 -0
  2315. package/templates/spec/common/src/chapters.ts +97 -0
  2316. package/templates/spec/common/src/levels.ts +68 -0
  2317. package/templates/spec/common/src/probe-rooms.ts +63 -0
  2318. package/templates/spec/common/src/room-map.tsx +30 -0
  2319. package/templates/spec/common/src/tune.ts +93 -0
  2320. package/templates/spec/common/test/rooms.test.ts +59 -0
  2321. package/templates/spec/common/test/rooms.ts +53 -0
  2322. package/templates/spec/three-world/test/rooms.ts +54 -0
  2323. package/templates/three/src/character.ts +65 -0
  2324. package/templates/three/src/game.ts +99 -0
  2325. package/templates/three/src/world-hud.ts +22 -0
  2326. package/templates/three-world/src/bot.ts +43 -0
  2327. package/templates/three-world/src/budget.ts +73 -0
  2328. package/templates/three-world/src/camera-rig.ts +99 -0
  2329. package/templates/three-world/src/controls.tsx +49 -0
  2330. package/templates/three-world/src/cutout-atlas.ts +26 -0
  2331. package/templates/three-world/src/cutout-math.ts +47 -0
  2332. package/templates/three-world/src/cutouts.ts +99 -0
  2333. package/templates/three-world/src/dressing-math.ts +98 -0
  2334. package/templates/three-world/src/dressing.ts +84 -0
  2335. package/templates/three-world/src/expose.ts +82 -0
  2336. package/templates/three-world/src/feel.ts +79 -0
  2337. package/templates/three-world/src/game.ts +99 -0
  2338. package/templates/three-world/src/hud.tsx +44 -0
  2339. package/templates/three-world/src/icons.tsx +36 -0
  2340. package/templates/three-world/src/input.ts +73 -0
  2341. package/templates/three-world/src/juice.ts +91 -0
  2342. package/templates/three-world/src/layout.ts +73 -0
  2343. package/templates/three-world/src/light-math.ts +78 -0
  2344. package/templates/three-world/src/light.ts +77 -0
  2345. package/templates/three-world/src/look.json +30 -0
  2346. package/templates/three-world/src/main.tsx +38 -0
  2347. package/templates/three-world/src/models.ts +62 -0
  2348. package/templates/three-world/src/palette.ts +21 -0
  2349. package/templates/three-world/src/places.json +50 -0
  2350. package/templates/three-world/src/places.ts +56 -0
  2351. package/templates/three-world/src/pose.ts +22 -0
  2352. package/templates/three-world/src/post.ts +47 -0
  2353. package/templates/three-world/src/rest-math.ts +29 -0
  2354. package/templates/three-world/src/rules.ts +89 -0
  2355. package/templates/three-world/src/screens.css +45 -0
  2356. package/templates/three-world/src/screens.tsx +96 -0
  2357. package/templates/three-world/src/selftests.ts +25 -0
  2358. package/templates/three-world/src/session.ts +99 -0
  2359. package/templates/three-world/src/shots.ts +59 -0
  2360. package/templates/three-world/src/sky.ts +48 -0
  2361. package/templates/three-world/src/stage.ts +83 -0
  2362. package/templates/three-world/src/styles.css +95 -0
  2363. package/templates/three-world/src/surfaces.ts +55 -0
  2364. package/templates/three-world/src/world.ts +70 -0
  2365. package/templates/three-world/test/feel.json +29 -0
  2366. package/templates/three-world/test/probes.ts +65 -0
  2367. package/templates/three-world/test/resolve.mjs +13 -0
  2368. package/templates/three-world/test/rules.test.ts +81 -0
  2369. package/unity/com.funpixel.probe/Editor/Funpixel.Probe.Editor.asmdef +16 -0
  2370. package/unity/com.funpixel.probe/Editor/Funpixel.Probe.Editor.asmdef.meta +7 -0
  2371. package/unity/com.funpixel.probe/Editor/ProbeBuild.cs +97 -0
  2372. package/unity/com.funpixel.probe/Editor/ProbeBuild.cs.meta +11 -0
  2373. package/unity/com.funpixel.probe/Editor/ReleaseGuard.cs +23 -0
  2374. package/unity/com.funpixel.probe/Editor/ReleaseGuard.cs.meta +11 -0
  2375. package/unity/com.funpixel.probe/Editor.meta +8 -0
  2376. package/unity/com.funpixel.probe/Runtime/Api/Funpixel.Probe.asmdef +14 -0
  2377. package/unity/com.funpixel.probe/Runtime/Api/Funpixel.Probe.asmdef.meta +7 -0
  2378. package/unity/com.funpixel.probe/Runtime/Api/FunpixelProbe.cs +146 -0
  2379. package/unity/com.funpixel.probe/Runtime/Api/FunpixelProbe.cs.meta +11 -0
  2380. package/unity/com.funpixel.probe/Runtime/Api.meta +8 -0
  2381. package/unity/com.funpixel.probe/Runtime/Player/Args.cs +87 -0
  2382. package/unity/com.funpixel.probe/Runtime/Player/Args.cs.meta +11 -0
  2383. package/unity/com.funpixel.probe/Runtime/Player/Boot.cs +67 -0
  2384. package/unity/com.funpixel.probe/Runtime/Player/Boot.cs.meta +11 -0
  2385. package/unity/com.funpixel.probe/Runtime/Player/Bridge.cs +559 -0
  2386. package/unity/com.funpixel.probe/Runtime/Player/Bridge.cs.meta +11 -0
  2387. package/unity/com.funpixel.probe/Runtime/Player/Capture.cs +145 -0
  2388. package/unity/com.funpixel.probe/Runtime/Player/Capture.cs.meta +11 -0
  2389. package/unity/com.funpixel.probe/Runtime/Player/Funpixel.Probe.Player.asmdef +32 -0
  2390. package/unity/com.funpixel.probe/Runtime/Player/Funpixel.Probe.Player.asmdef.meta +7 -0
  2391. package/unity/com.funpixel.probe/Runtime/Player/Inject.cs +127 -0
  2392. package/unity/com.funpixel.probe/Runtime/Player/Inject.cs.meta +11 -0
  2393. package/unity/com.funpixel.probe/Runtime/Player/Json.cs +246 -0
  2394. package/unity/com.funpixel.probe/Runtime/Player/Json.cs.meta +11 -0
  2395. package/unity/com.funpixel.probe/Runtime/Player/Probe.cs +194 -0
  2396. package/unity/com.funpixel.probe/Runtime/Player/Probe.cs.meta +11 -0
  2397. package/unity/com.funpixel.probe/Runtime/Player/Stats.cs +266 -0
  2398. package/unity/com.funpixel.probe/Runtime/Player/Stats.cs.meta +11 -0
  2399. package/unity/com.funpixel.probe/Runtime/Player/UiTargets.cs +134 -0
  2400. package/unity/com.funpixel.probe/Runtime/Player/UiTargets.cs.meta +11 -0
  2401. package/unity/com.funpixel.probe/Runtime/Player.meta +8 -0
  2402. package/unity/com.funpixel.probe/Runtime/link.xml +7 -0
  2403. package/unity/com.funpixel.probe/Runtime/link.xml.meta +7 -0
  2404. package/unity/com.funpixel.probe/Runtime.meta +8 -0
  2405. package/unity/com.funpixel.probe/Tests/Editor/Funpixel.Probe.Tests.asmdef +25 -0
  2406. package/unity/com.funpixel.probe/Tests/Editor/Funpixel.Probe.Tests.asmdef.meta +7 -0
  2407. package/unity/com.funpixel.probe/Tests/Editor/StatsTests.cs +147 -0
  2408. package/unity/com.funpixel.probe/Tests/Editor/StatsTests.cs.meta +11 -0
  2409. package/unity/com.funpixel.probe/Tests/Editor/WireTests.cs +86 -0
  2410. package/unity/com.funpixel.probe/Tests/Editor/WireTests.cs.meta +11 -0
  2411. package/unity/com.funpixel.probe/Tests/Editor.meta +8 -0
  2412. package/unity/com.funpixel.probe/Tests.meta +8 -0
  2413. package/unity/com.funpixel.probe/package.json +14 -0
  2414. package/unity/com.funpixel.probe/package.json.meta +7 -0
@@ -0,0 +1,46 @@
1
+ export function holdReloads(opts) {
2
+ const min = opts.minClients ?? 2, poll = opts.pollMs ?? 1000, maxHold = opts.maxHoldMs ?? 10 * 60_000;
3
+ const now = opts.now ?? Date.now;
4
+ return {
5
+ name: 'funtools-hold-reloads',
6
+ apply: 'serve',
7
+ configureServer(server) {
8
+ const ws = server.ws;
9
+ const send = ws.send.bind(ws);
10
+ let held = null, since = 0, changes = 0;
11
+ const pages = () => ws.clients?.size ?? 0;
12
+ const release = (why) => {
13
+ if (!held)
14
+ return;
15
+ const p = held;
16
+ held = null;
17
+ opts.log(`reload released (${why}; ${changes} change(s) held)`);
18
+ changes = 0;
19
+ send(p);
20
+ };
21
+ ws.send = (...args) => {
22
+ const p = args[0];
23
+ if (p && typeof p === 'object' && p.type === 'full-reload' && pages() >= min) {
24
+ if (!held) {
25
+ since = now();
26
+ opts.log(`reload held: ${pages()} pages are in the dev room, and a reload would end their match; it goes out when the room empties`);
27
+ }
28
+ held = p;
29
+ changes++;
30
+ return undefined;
31
+ }
32
+ return send(...args);
33
+ };
34
+ const timer = setInterval(() => {
35
+ if (!held)
36
+ return;
37
+ if (pages() < min)
38
+ release('the room emptied');
39
+ else if (now() - since >= maxHold)
40
+ release(`held ${Math.round(maxHold / 60_000)} min`);
41
+ }, poll);
42
+ timer.unref?.();
43
+ server.httpServer?.on('close', () => clearInterval(timer));
44
+ },
45
+ };
46
+ }
@@ -0,0 +1,15 @@
1
+ import { networkInterfaces } from 'node:os';
2
+ export function lanAddress(ifaces = networkInterfaces()) {
3
+ const privateV4 = /^(10\.|192\.168\.|172\.(1[6-9]|2\d|3[01])\.)/;
4
+ const found = [];
5
+ for (const [name, list] of Object.entries(ifaces)) {
6
+ for (const i of list ?? []) {
7
+ if (i.family === 'IPv4' && !i.internal && privateV4.test(i.address) && !/^(utun|ipsec|tun|tap|bridge|vmnet|docker|veth)/.test(name))
8
+ found.push({ name, address: i.address });
9
+ }
10
+ }
11
+ found.sort((a, b) => rank(a.name) - rank(b.name) || a.name.localeCompare(b.name));
12
+ return found[0]?.address ?? null;
13
+ }
14
+ const rank = (name) => (name === 'en0' ? 0 : /^(en|eth|wl)/.test(name) ? 1 : 2);
15
+ export const LAN_WARNING = 'this serves the dev server to everyone on your local network (the game\'s source and devtools); use it on a network you trust and stop it (Ctrl-C) when you are done';
@@ -0,0 +1,30 @@
1
+ import { spawn } from 'node:child_process';
2
+ export function opener(platform = process.platform) {
3
+ if (platform === 'darwin')
4
+ return { cmd: 'open', args: (t) => [t] };
5
+ if (platform === 'win32')
6
+ return { cmd: 'cmd', args: (t) => ['/c', 'start', '""', t] };
7
+ return { cmd: 'xdg-open', args: (t) => [t] };
8
+ }
9
+ export function mayOpen(env = process.env, platform = process.platform) {
10
+ if (env.CI || env.FUNPIXEL_NO_OPEN)
11
+ return false;
12
+ if (platform === 'linux' && !env.DISPLAY && !env.WAYLAND_DISPLAY)
13
+ return false;
14
+ return true;
15
+ }
16
+ export function openTarget(target, o = {}) {
17
+ const platform = o.platform ?? process.platform;
18
+ if (!mayOpen(o.env ?? process.env, platform))
19
+ return false;
20
+ const { cmd, args } = opener(platform);
21
+ try {
22
+ const child = (o.run ?? spawn)(cmd, args(target), { detached: true, stdio: 'ignore' });
23
+ child.on('error', () => { });
24
+ child.unref();
25
+ return true;
26
+ }
27
+ catch {
28
+ return false;
29
+ }
30
+ }
package/dist/dev/qr.js ADDED
@@ -0,0 +1,124 @@
1
+ const CAPACITY = { 1: [19, 7], 2: [34, 10], 3: [55, 15], 4: [80, 20], 5: [108, 26] };
2
+ const ALIGN = { 2: 18, 3: 22, 4: 26, 5: 30 };
3
+ function rsMul(x, y) {
4
+ let z = 0;
5
+ for (let i = 7; i >= 0; i--) {
6
+ z = (z << 1) ^ ((z >>> 7) * 0x11d);
7
+ z ^= ((y >>> i) & 1) * x;
8
+ }
9
+ return z & 0xff;
10
+ }
11
+ function rsDivisor(degree) {
12
+ const r = new Array(degree).fill(0);
13
+ r[degree - 1] = 1;
14
+ let root = 1;
15
+ for (let i = 0; i < degree; i++) {
16
+ for (let j = 0; j < r.length; j++) {
17
+ r[j] = rsMul(r[j], root);
18
+ if (j + 1 < r.length)
19
+ r[j] ^= r[j + 1];
20
+ }
21
+ root = rsMul(root, 0x02);
22
+ }
23
+ return r;
24
+ }
25
+ export function rsRemainder(data, degree) {
26
+ const div = rsDivisor(degree), r = new Array(degree).fill(0);
27
+ for (const b of data) {
28
+ const f = b ^ r.shift();
29
+ r.push(0);
30
+ div.forEach((c, i) => { r[i] ^= rsMul(c, f); });
31
+ }
32
+ return r;
33
+ }
34
+ export function qr(text) {
35
+ const bytes = [...new TextEncoder().encode(text)];
36
+ const version = Object.keys(CAPACITY).map(Number).find((v) => bytes.length <= CAPACITY[v][0] - 2);
37
+ if (!version)
38
+ return null;
39
+ const [dataLen, ecLen] = CAPACITY[version];
40
+ const bits = [];
41
+ const put = (v, n) => { for (let i = n - 1; i >= 0; i--)
42
+ bits.push((v >>> i) & 1); };
43
+ put(4, 4);
44
+ put(bytes.length, 8);
45
+ for (const b of bytes)
46
+ put(b, 8);
47
+ put(0, Math.min(4, dataLen * 8 - bits.length));
48
+ while (bits.length % 8)
49
+ bits.push(0);
50
+ const data = [];
51
+ for (let i = 0; i < bits.length; i += 8)
52
+ data.push(bits.slice(i, i + 8).reduce((a, b) => (a << 1) | b, 0));
53
+ for (let pad = 0xec; data.length < dataLen; pad ^= 0xec ^ 0x11)
54
+ data.push(pad);
55
+ const all = [...data, ...rsRemainder(data, ecLen)];
56
+ const size = version * 4 + 17;
57
+ const m = Array.from({ length: size }, () => new Array(size).fill(false));
58
+ const fn = Array.from({ length: size }, () => new Array(size).fill(false));
59
+ const set = (x, y, dark) => { m[y][x] = dark; fn[y][x] = true; };
60
+ for (let i = 0; i < size; i++) {
61
+ set(6, i, i % 2 === 0);
62
+ set(i, 6, i % 2 === 0);
63
+ }
64
+ for (const [cx, cy] of [[3, 3], [size - 4, 3], [3, size - 4]]) {
65
+ for (let dy = -4; dy <= 4; dy++)
66
+ for (let dx = -4; dx <= 4; dx++) {
67
+ const x = cx + dx, y = cy + dy, d = Math.max(Math.abs(dx), Math.abs(dy));
68
+ if (x >= 0 && x < size && y >= 0 && y < size)
69
+ set(x, y, d !== 2 && d !== 4);
70
+ }
71
+ }
72
+ if (ALIGN[version]) {
73
+ const p = ALIGN[version];
74
+ for (let dy = -2; dy <= 2; dy++)
75
+ for (let dx = -2; dx <= 2; dx++)
76
+ set(p + dx, p + dy, Math.max(Math.abs(dx), Math.abs(dy)) !== 1);
77
+ }
78
+ const fmt = 1 << 3;
79
+ let rem = fmt;
80
+ for (let i = 0; i < 10; i++)
81
+ rem = (rem << 1) ^ ((rem >>> 9) * 0x537);
82
+ const f = ((fmt << 10) | rem) ^ 0x5412;
83
+ const bit = (i) => ((f >>> i) & 1) === 1;
84
+ for (let i = 0; i <= 5; i++)
85
+ set(8, i, bit(i));
86
+ set(8, 7, bit(6));
87
+ set(8, 8, bit(7));
88
+ set(7, 8, bit(8));
89
+ for (let i = 9; i < 15; i++)
90
+ set(14 - i, 8, bit(i));
91
+ for (let i = 0; i < 8; i++)
92
+ set(size - 1 - i, 8, bit(i));
93
+ for (let i = 8; i < 15; i++)
94
+ set(8, size - 15 + i, bit(i));
95
+ set(8, size - 8, true);
96
+ let i = 0;
97
+ for (let right = size - 1; right >= 1; right -= 2) {
98
+ if (right === 6)
99
+ right = 5;
100
+ for (let vert = 0; vert < size; vert++) {
101
+ for (let j = 0; j < 2; j++) {
102
+ const x = right - j, y = ((right + 1) & 2) === 0 ? size - 1 - vert : vert;
103
+ if (fn[y][x])
104
+ continue;
105
+ const dark = i < all.length * 8 && ((all[i >>> 3] >>> (7 - (i & 7))) & 1) === 1;
106
+ i++;
107
+ m[y][x] = dark !== ((x + y) % 2 === 0);
108
+ }
109
+ }
110
+ }
111
+ return m;
112
+ }
113
+ export function qrLines(modules, quiet = 2) {
114
+ const n = modules.length + quiet * 2;
115
+ const at = (x, y) => { const X = x - quiet, Y = y - quiet; return X >= 0 && Y >= 0 && X < modules.length && Y < modules.length && modules[Y][X]; };
116
+ const lines = [];
117
+ for (let y = 0; y < n; y += 2) {
118
+ let line = '';
119
+ for (let x = 0; x < n; x++)
120
+ line += `\x1b[${at(x, y) ? 30 : 97};${at(x, y + 1) ? 40 : 107}m▀`;
121
+ lines.push(`${line}\x1b[0m`);
122
+ }
123
+ return lines;
124
+ }
@@ -0,0 +1,21 @@
1
+ The MIT License
2
+
3
+ Copyright (c) 2013-2023 Mathew Groves, Chad Engler
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015-present Jason Miller
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,28 @@
1
+
2
+ Copyright (c) 2009-2011, Mozilla Foundation and contributors
3
+ All rights reserved.
4
+
5
+ Redistribution and use in source and binary forms, with or without
6
+ modification, are permitted provided that the following conditions are met:
7
+
8
+ * Redistributions of source code must retain the above copyright notice, this
9
+ list of conditions and the following disclaimer.
10
+
11
+ * Redistributions in binary form must reproduce the above copyright notice,
12
+ this list of conditions and the following disclaimer in the documentation
13
+ and/or other materials provided with the distribution.
14
+
15
+ * Neither the names of the Mozilla Foundation nor the names of project
16
+ contributors may be used to endorse or promote products derived from this
17
+ software without specific prior written permission.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
23
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,21 @@
1
+ The MIT License
2
+
3
+ Copyright © 2010-2026 three.js authors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1 @@
1
+ var FunpixelInspector=function(e){"use strict";var t;!function(e){e[e.UI=1e3]="UI",e[e.Interactive=500]="Interactive",e[e.Object=100]="Object",e[e.Background=0]="Background"}(t||(t={}));const n={selected:"rgba(0, 200, 255, 0.8)",hovered:"rgba(255, 200, 0, 0.6)",label:"rgba(0, 0, 0, 0.8)",labelText:"#ffffff"};class r{userFilePatterns=[/https?:\/\/[^\/]+\/(?:src\/)?([^?:]+\.(ts|js|tsx|jsx))(?:\?[^:]*)?:(\d+):(\d+)/,/\((?:[^()]*\/)?([^\/\\()]+\.(ts|js|tsx|jsx)):(\d+):(\d+)\)/,/@(?:[^@]*\/)?([^\/\\@]+\.(ts|js|tsx|jsx)):(\d+):(\d+)/,/[\s(@]([^\/\\()\s@]+\.(ts|js|tsx|jsx)):(\d+)/];skipPatterns=[/funpixel-inspector/i,/funpixel-hooked/i,/hookFactory/i,/captureSource/i,/animation-runtime/i,/node_modules/,/webpack/,/\/@vite\//,/\/vite\/dist\//,/chunk-/i,/vendor/i];parse(){const e=(new Error).stack;return e?this.parseLines(e.split("\n"),2):null}parseStack(e){return this.parseLines(e.split("\n"),0)}parseLines(e,t){for(let n=t;n<e.length;n++){const t=e[n];if(!this.skipPatterns.some(e=>e.test(t)))for(const e of this.userFilePatterns){const n=t.match(e);if(n){const e=n[1];return{file:e.includes("/")&&e.split("/").pop()||e,line:parseInt(n[3],10),column:n[4]?parseInt(n[4],10):void 0}}}}return null}getCodeRange(e,t=5){return{startLine:Math.max(1,e-t),endLine:e+t}}}const i=/funpixel-|__FUNPIXEL|hooked-|hookFactory|makeHooked|node_modules|\/@vite\/|\/@fs\/|webpack|rollup|chunk-/;class o{resolveEngineVersion;engine;handlers=new Map;isListening=!1;boundHandleMessage=this.handleMessage.bind(this);constructor(e,t){this.resolveEngineVersion=t,this.engine=e}send(e){const t=this.resolveEngineVersion?.(),n={...e,engine:this.engine,...t?{engineVersion:t}:{}};window.parent.postMessage(n,"*")}on(e,t){const n=this.handlers.get(e)||[];n.push(t),this.handlers.set(e,n),this.isListening||this.startListening()}off(e,t){const n=this.handlers.get(e)||[],r=n.indexOf(t);r>-1&&n.splice(r,1)}startListening(){this.isListening||(this.isListening=!0,window.addEventListener("message",this.boundHandleMessage))}handleMessage(e){const t=e.data;if(!t?.type)return;const n=this.normalizeMessageType(t.type);if(!n)return;const r=this.handlers.get(n);if(r){const e={type:n,target:t.target};r.forEach(t=>t(e))}}normalizeMessageType(e){switch(e){case"FUNPIXEL_PAUSE":case"ENABLE_INSPECTOR":case"PAUSE_GAME":return"FUNPIXEL_PAUSE";case"FUNPIXEL_RESUME":case"RESUME_GAME":return"FUNPIXEL_RESUME";case"FUNPIXEL_GET_TREE":return"FUNPIXEL_GET_TREE";case"GET_SCENE_TREE":return"GET_SCENE_TREE";case"REQUEST_SCREENSHOT":case"FUNPIXEL_SCREENSHOT_REQUEST":return"REQUEST_SCREENSHOT";case"REQUEST_AREA_SCREENSHOT":case"FUNPIXEL_AREA_SCREENSHOT_REQUEST":return"REQUEST_AREA_SCREENSHOT";case"DETECT_ENGINE":return"DETECT_ENGINE";case"FOCUS_OBJECT":return"FOCUS_OBJECT";case"SELECT_OBJECT":return"SELECT_OBJECT";case"FUNPIXEL_CLEAR_SELECTION":return"FUNPIXEL_CLEAR_SELECTION";default:return null}}destroy(){this.isListening&&(window.removeEventListener("message",this.boundHandleMessage),this.isListening=!1),this.handlers.clear()}}class s{canvas=null;ctx=null;colors;animationFrame=null;gameCanvas=null;constructor(e=n){this.colors=e}create(e){if(!e)return;this.canvas&&this.remove(),this.canvas=document.createElement("canvas"),this.canvas.id="funpixel-inspector-overlay",this.gameCanvas=e,this.positionCanvas(),this.ctx=this.canvas.getContext("2d");const t=window.devicePixelRatio||1;this.ctx&&this.ctx.scale(t,t),document.documentElement.appendChild(this.canvas),this.setupResizeObserver(e)}positionCanvas(){if(!this.canvas||!this.gameCanvas)return;const e=this.gameCanvas.getBoundingClientRect(),t=window.devicePixelRatio||1;this.canvas.width=Math.max(1,Math.round(e.width*t)),this.canvas.height=Math.max(1,Math.round(e.height*t)),this.canvas.style.cssText=`\n position: fixed;\n top: ${e.top}px;\n left: ${e.left}px;\n width: ${e.width}px;\n height: ${e.height}px;\n pointer-events: none;\n z-index: 9999;\n `;const n=this.canvas.getContext("2d");n&&(n.setTransform(1,0,0,1,0,0),n.scale(t,t))}remove(){this.animationFrame&&(cancelAnimationFrame(this.animationFrame),this.animationFrame=null),this.canvas&&(this.canvas.remove(),this.canvas=null,this.ctx=null),this.gameCanvas=null}clear(){this.ctx&&this.canvas&&(this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height),this.ctx.restore())}render(e){if(this.ctx&&this.canvas){this.clear();for(const t of e)t.isSelected?this.drawSelection(t.bounds,t.label):t.isHovered&&this.drawHover(t.bounds,t.label)}}drawSelection(e,t){if(!this.ctx)return;const{x:n,y:r,width:i,height:o}=e;this.ctx.strokeStyle=this.colors.selected,this.ctx.lineWidth=3,this.ctx.setLineDash([]),this.ctx.strokeRect(n,r,i,o);const s=10;this.ctx.fillStyle=this.colors.selected,this.ctx.fillRect(n-2,r-2,s,4),this.ctx.fillRect(n-2,r-2,4,s),this.ctx.fillRect(n+i-s+2,r-2,s,4),this.ctx.fillRect(n+i-2,r-2,4,s),this.ctx.fillRect(n-2,r+o-2,s,4),this.ctx.fillRect(n-2,r+o-s+2,4,s),this.ctx.fillRect(n+i-s+2,r+o-2,s,4),this.ctx.fillRect(n+i-2,r+o-s+2,4,s),t&&this.drawLabel(n,r-25,t,!0)}drawHover(e,t){if(!this.ctx)return;const{x:n,y:r,width:i,height:o}=e;this.ctx.strokeStyle=this.colors.hovered,this.ctx.lineWidth=2,this.ctx.setLineDash([5,5]),this.ctx.strokeRect(n,r,i,o),t&&this.drawLabel(n,r-20,t,!1)}drawLabel(e,t,n,r){if(!this.ctx)return;this.ctx.font="12px monospace";const i=this.ctx.measureText(n).width+8,o=window.devicePixelRatio||1,s=(this.canvas?.width||0)/o,a=Math.max(0,Math.min(e,s-i)),l=Math.max(20,t);this.ctx.fillStyle=this.colors.label,this.ctx.fillRect(a,l-20,i,20),this.ctx.fillStyle=this.colors.labelText,this.ctx.fillText(n,a+4,l-4),r&&(this.ctx.fillStyle=this.colors.selected,this.ctx.fillRect(a,l-20,3,20))}drawConnectionLine(e,t){if(!this.ctx)return;const n={x:e.x+e.width/2,y:e.y+e.height/2},r={x:t.x+t.width/2,y:t.y+t.height/2};this.ctx.strokeStyle="rgba(255, 255, 255, 0.5)",this.ctx.lineWidth=1,this.ctx.setLineDash([3,3]),this.ctx.beginPath(),this.ctx.moveTo(n.x,n.y),this.ctx.lineTo(r.x,r.y),this.ctx.stroke()}setupResizeObserver(e){new ResizeObserver(()=>{this.canvas&&this.gameCanvas&&this.positionCanvas()}).observe(e)}setColors(e){this.colors={...this.colors,...e}}isActive(){return null!==this.canvas}}class a{objects=new WeakMap;count=0;stackParser;constructor(e){this.stackParser=e||new r}track(e,t,n){const r=n??this.stackParser.parse();this.objects.set(e,{type:t,source:r}),this.count++}get(e){return this.objects.get(e)}has(e){return this.objects.has(e)}getCount(){return this.count}createHook(e,t){const n=this;return function(...r){const i=e.apply(this,r),o=t(r,i);return n.track(i,o),i}}hookConstructor(e,t){const n=this,r=e,i=function(...e){const i=Reflect.construct(r,e,new.target||r),o=t(e,i);return n.track(i,o),i};return i.prototype=r.prototype,Object.setPrototypeOf(i,r),i}}class l{messages;sourceMapResolver;errors=[];maxErrors=50;errorHashes=new Set;inflight=new Set;originalConsoleError;constructor(e,t){this.messages=e,this.sourceMapResolver=t,this.originalConsoleError=console.error}init(){window.addEventListener("error",this.handleError),window.addEventListener("unhandledrejection",this.handleRejection),console.error=this.handleConsoleError}handleError=e=>{const t={type:"error",message:e.message,filename:e.filename,line:e.lineno,column:e.colno,stack:e.error?.stack,timestamp:Date.now()};this.trackError(t)};handleRejection=e=>{const t=e.reason,n={type:"unhandledrejection",message:t?.message||String(t),stack:t?.stack,timestamp:Date.now()};this.trackError(n)};handleConsoleError=(...e)=>{this.originalConsoleError.apply(console,e);const t={type:"console_error",message:e.map(e=>e instanceof Error?e.message:"string"==typeof e?e:String(e)).join(" "),stack:e[0]instanceof Error?e[0].stack:void 0,timestamp:Date.now()};this.trackError(t)};trackError(e){const t=`${e.message}-${e.filename||""}-${e.line||0}-${e.column||0}`;if(this.errorHashes.has(t))return;if(this.errorHashes.add(t),this.errors.push(e),this.errors.length>this.maxErrors){const e=this.errors.shift();if(e){const t=`${e.message}-${e.filename||""}-${e.line||0}-${e.column||0}`;this.errorHashes.delete(t)}}const n=this.resolveAndSend(e);this.inflight.add(n),n.finally(()=>this.inflight.delete(n))}async settled(){for(;this.inflight.size;)await Promise.allSettled([...this.inflight])}async resolveAndSend(e){const t=e.filename&&null!=e.line&&null!=e.column?{f:e.filename,l:e.line,c:e.column}:function(e){if(!e)return null;for(const t of e.split("\n")){if(i.test(t))continue;const e=t.match(/(?:\(|@)((?:https?|file):\/\/[^\s)]+):(\d+):(\d+)/)||t.match(/at\s+((?:https?|file):\/\/[^\s)]+):(\d+):(\d+)/);if(e)return{f:e[1],l:+e[2],c:+e[3]}}return null}(e.stack);if(t)try{const n=await this.sourceMapResolver.resolve(t);n&&(e.originalSource=n.source,e.originalLine=n.line,e.originalColumn=n.column,e.originalSourceLine=n.sourceLine)}catch{}this.messages.send({type:"RUNTIME_ERROR",error:e})}getErrors(){return this.errors}clearErrors(){this.errors=[],this.errorHashes.clear()}destroy(){window.removeEventListener("error",this.handleError),window.removeEventListener("unhandledrejection",this.handleRejection),console.error=this.originalConsoleError}}const c=["[funpixel:","[funpixel]","[bridge","[juice","[tilemap","[audio","[camera","[pathfinding","[dialogue","[physics","[save","[animations","[assets","[inspector","[profiler"];class u{messages;entryCount=0;originalLog;originalWarn;constructor(e){this.messages=e,this.originalLog=console.log,this.originalWarn=console.warn}init(){console.log=this.interceptLog,console.warn=this.interceptWarn}send(e,t){if(this.entryCount>=200)return;const n=t.map(e=>{if("string"==typeof e)return e;if(e instanceof Error)return e.message;try{return JSON.stringify(e)}catch{return String(e)}}).join(" ");"error"!==e&&function(e){const t=e.toLowerCase();return c.some(e=>t.startsWith(e.toLowerCase()))}(n)||(this.entryCount++,this.messages.send({type:"CONSOLE_LOG",entry:{level:e,message:n,timestamp:Date.now()}}))}interceptLog=(...e)=>{this.originalLog.apply(console,e),this.send("log",e)};interceptWarn=(...e)=>{this.originalWarn.apply(console,e),this.send("warn",e)};resetCount(){this.entryCount=0}destroy(){console.log=this.originalLog,console.warn=this.originalWarn}}var h,d,p={},g={},f={},m={};function y(){if(h)return m;h=1;var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");return m.encode=function(t){if(0<=t&&t<e.length)return e[t];throw new TypeError("Must be between 0 and 63: "+t)},m.decode=function(e){return 65<=e&&e<=90?e-65:97<=e&&e<=122?e-97+26:48<=e&&e<=57?e-48+52:43==e?62:47==e?63:-1},m}function v(){if(d)return f;d=1;var e=y();return f.encode=function(t){var n,r="",i=function(e){return e<0?1+(-e<<1):0+(e<<1)}(t);do{n=31&i,(i>>>=5)>0&&(n|=32),r+=e.encode(n)}while(i>0);return r},f.decode=function(t,n,r){var i,o,s,a,l=t.length,c=0,u=0;do{if(n>=l)throw new Error("Expected more digits in base 64 VLQ value.");if(-1===(o=e.decode(t.charCodeAt(n++))))throw new Error("Invalid base64 digit: "+t.charAt(n-1));i=!!(32&o),c+=(o&=31)<<u,u+=5}while(i);r.value=(a=(s=c)>>1,1&~s?a:-a),r.rest=n},f}var _,C={};function b(){return _||(_=1,function(e){e.getArg=function(e,t,n){if(t in e)return e[t];if(3===arguments.length)return n;throw new Error('"'+t+'" is a required argument.')};var t=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,n=/^data:.+\,.+$/;function r(e){var n=e.match(t);return n?{scheme:n[1],auth:n[2],host:n[3],port:n[4],path:n[5]}:null}function i(e){var t="";return e.scheme&&(t+=e.scheme+":"),t+="//",e.auth&&(t+=e.auth+"@"),e.host&&(t+=e.host),e.port&&(t+=":"+e.port),e.path&&(t+=e.path),t}e.urlParse=r,e.urlGenerate=i;var o,s,a=(o=function(t){var n=t,o=r(t);if(o){if(!o.path)return t;n=o.path}for(var s=e.isAbsolute(n),a=[],l=0,c=0;;){if(l=c,-1===(c=n.indexOf("/",l))){a.push(n.slice(l));break}for(a.push(n.slice(l,c));c<n.length&&"/"===n[c];)c++}var u,h=0;for(c=a.length-1;c>=0;c--)"."===(u=a[c])?a.splice(c,1):".."===u?h++:h>0&&(""===u?(a.splice(c+1,h),h=0):(a.splice(c,2),h--));return""===(n=a.join("/"))&&(n=s?"/":"."),o?(o.path=n,i(o)):n},s=[],function(e){for(var t=0;t<s.length;t++)if(s[t].input===e){var n=s[0];return s[0]=s[t],s[t]=n,s[0].result}var r=o(e);return s.unshift({input:e,result:r}),s.length>32&&s.pop(),r});function l(e,t){""===e&&(e="."),""===t&&(t=".");var o=r(t),s=r(e);if(s&&(e=s.path||"/"),o&&!o.scheme)return s&&(o.scheme=s.scheme),i(o);if(o||t.match(n))return t;if(s&&!s.host&&!s.path)return s.host=t,i(s);var l="/"===t.charAt(0)?t:a(e.replace(/\/+$/,"")+"/"+t);return s?(s.path=l,i(s)):l}e.normalize=a,e.join=l,e.isAbsolute=function(e){return"/"===e.charAt(0)||t.test(e)},e.relative=function(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var n=0;0!==t.indexOf(e+"/");){var r=e.lastIndexOf("/");if(r<0)return t;if((e=e.slice(0,r)).match(/^([^\/]+:\/)?\/*$/))return t;++n}return Array(n+1).join("../")+t.substr(e.length+1)};var c=!("__proto__"in Object.create(null));function u(e){return e}function h(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var n=t-10;n>=0;n--)if(36!==e.charCodeAt(n))return!1;return!0}function d(e,t){return e===t?0:null===e?1:null===t?-1:e>t?1:-1}e.toSetString=c?u:function(e){return h(e)?"$"+e:e},e.fromSetString=c?u:function(e){return h(e)?e.slice(1):e},e.compareByOriginalPositions=function(e,t,n){var r=d(e.source,t.source);return 0!==r||0!==(r=e.originalLine-t.originalLine)||0!==(r=e.originalColumn-t.originalColumn)||n||0!==(r=e.generatedColumn-t.generatedColumn)||0!==(r=e.generatedLine-t.generatedLine)?r:d(e.name,t.name)},e.compareByOriginalPositionsNoSource=function(e,t,n){var r;return 0!==(r=e.originalLine-t.originalLine)||0!==(r=e.originalColumn-t.originalColumn)||n||0!==(r=e.generatedColumn-t.generatedColumn)||0!==(r=e.generatedLine-t.generatedLine)?r:d(e.name,t.name)},e.compareByGeneratedPositionsDeflated=function(e,t,n){var r=e.generatedLine-t.generatedLine;return 0!==r||0!==(r=e.generatedColumn-t.generatedColumn)||n||0!==(r=d(e.source,t.source))||0!==(r=e.originalLine-t.originalLine)||0!==(r=e.originalColumn-t.originalColumn)?r:d(e.name,t.name)},e.compareByGeneratedPositionsDeflatedNoLine=function(e,t,n){var r=e.generatedColumn-t.generatedColumn;return 0!==r||n||0!==(r=d(e.source,t.source))||0!==(r=e.originalLine-t.originalLine)||0!==(r=e.originalColumn-t.originalColumn)?r:d(e.name,t.name)},e.compareByGeneratedPositionsInflated=function(e,t){var n=e.generatedLine-t.generatedLine;return 0!==n||0!==(n=e.generatedColumn-t.generatedColumn)||0!==(n=d(e.source,t.source))||0!==(n=e.originalLine-t.originalLine)||0!==(n=e.originalColumn-t.originalColumn)?n:d(e.name,t.name)},e.parseSourceMapInput=function(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))},e.computeSourceURL=function(e,t,n){if(t=t||"",e&&("/"!==e[e.length-1]&&"/"!==t[0]&&(e+="/"),t=e+t),n){var o=r(n);if(!o)throw new Error("sourceMapURL could not be parsed");if(o.path){var s=o.path.lastIndexOf("/");s>=0&&(o.path=o.path.substring(0,s+1))}t=l(i(o),t)}return a(t)}}(C)),C}var w,E={};function x(){if(w)return E;w=1;var e=b(),t=Object.prototype.hasOwnProperty,n="undefined"!=typeof Map;function r(){this._array=[],this._set=n?new Map:Object.create(null)}return r.fromArray=function(e,t){for(var n=new r,i=0,o=e.length;i<o;i++)n.add(e[i],t);return n},r.prototype.size=function(){return n?this._set.size:Object.getOwnPropertyNames(this._set).length},r.prototype.add=function(r,i){var o=n?r:e.toSetString(r),s=n?this.has(r):t.call(this._set,o),a=this._array.length;s&&!i||this._array.push(r),s||(n?this._set.set(r,a):this._set[o]=a)},r.prototype.has=function(r){if(n)return this._set.has(r);var i=e.toSetString(r);return t.call(this._set,i)},r.prototype.indexOf=function(r){if(n){var i=this._set.get(r);if(i>=0)return i}else{var o=e.toSetString(r);if(t.call(this._set,o))return this._set[o]}throw new Error('"'+r+'" is not in the set.')},r.prototype.at=function(e){if(e>=0&&e<this._array.length)return this._array[e];throw new Error("No element indexed by "+e)},r.prototype.toArray=function(){return this._array.slice()},E.ArraySet=r,E}var S,L,M={};function A(){if(S)return M;S=1;var e=b();function t(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}return t.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},t.prototype.add=function(t){var n,r,i,o,s,a;n=this._last,r=t,i=n.generatedLine,o=r.generatedLine,s=n.generatedColumn,a=r.generatedColumn,o>i||o==i&&a>=s||e.compareByGeneratedPositionsInflated(n,r)<=0?(this._last=t,this._array.push(t)):(this._sorted=!1,this._array.push(t))},t.prototype.toArray=function(){return this._sorted||(this._array.sort(e.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},M.MappingList=t,M}function T(){if(L)return g;L=1;var e=v(),t=b(),n=x().ArraySet,r=A().MappingList;function i(e){e||(e={}),this._file=t.getArg(e,"file",null),this._sourceRoot=t.getArg(e,"sourceRoot",null),this._skipValidation=t.getArg(e,"skipValidation",!1),this._ignoreInvalidMapping=t.getArg(e,"ignoreInvalidMapping",!1),this._sources=new n,this._names=new n,this._mappings=new r,this._sourcesContents=null}return i.prototype._version=3,i.fromSourceMap=function(e,n){var r=e.sourceRoot,o=new i(Object.assign(n||{},{file:e.file,sourceRoot:r}));return e.eachMapping(function(e){var n={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(n.source=e.source,null!=r&&(n.source=t.relative(r,n.source)),n.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(n.name=e.name)),o.addMapping(n)}),e.sources.forEach(function(n){var i=n;null!==r&&(i=t.relative(r,n)),o._sources.has(i)||o._sources.add(i);var s=e.sourceContentFor(n);null!=s&&o.setSourceContent(n,s)}),o},i.prototype.addMapping=function(e){var n=t.getArg(e,"generated"),r=t.getArg(e,"original",null),i=t.getArg(e,"source",null),o=t.getArg(e,"name",null);(this._skipValidation||!1!==this._validateMapping(n,r,i,o))&&(null!=i&&(i=String(i),this._sources.has(i)||this._sources.add(i)),null!=o&&(o=String(o),this._names.has(o)||this._names.add(o)),this._mappings.add({generatedLine:n.line,generatedColumn:n.column,originalLine:null!=r&&r.line,originalColumn:null!=r&&r.column,source:i,name:o}))},i.prototype.setSourceContent=function(e,n){var r=e;null!=this._sourceRoot&&(r=t.relative(this._sourceRoot,r)),null!=n?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[t.toSetString(r)]=n):this._sourcesContents&&(delete this._sourcesContents[t.toSetString(r)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},i.prototype.applySourceMap=function(e,r,i){var o=r;if(null==r){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');o=e.file}var s=this._sourceRoot;null!=s&&(o=t.relative(s,o));var a=new n,l=new n;this._mappings.unsortedForEach(function(n){if(n.source===o&&null!=n.originalLine){var r=e.originalPositionFor({line:n.originalLine,column:n.originalColumn});null!=r.source&&(n.source=r.source,null!=i&&(n.source=t.join(i,n.source)),null!=s&&(n.source=t.relative(s,n.source)),n.originalLine=r.line,n.originalColumn=r.column,null!=r.name&&(n.name=r.name))}var c=n.source;null==c||a.has(c)||a.add(c);var u=n.name;null==u||l.has(u)||l.add(u)},this),this._sources=a,this._names=l,e.sources.forEach(function(n){var r=e.sourceContentFor(n);null!=r&&(null!=i&&(n=t.join(i,n)),null!=s&&(n=t.relative(s,n)),this.setSourceContent(n,r))},this)},i.prototype._validateMapping=function(e,t,n,r){if(t&&"number"!=typeof t.line&&"number"!=typeof t.column){var i="original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.";if(this._ignoreInvalidMapping)return"undefined"!=typeof console&&console.warn&&console.warn(i),!1;throw new Error(i)}if((!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0)||t||n||r)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&n)){i="Invalid mapping: "+JSON.stringify({generated:e,source:n,original:t,name:r});if(this._ignoreInvalidMapping)return"undefined"!=typeof console&&console.warn&&console.warn(i),!1;throw new Error(i)}},i.prototype._serializeMappings=function(){for(var n,r,i,o,s=0,a=1,l=0,c=0,u=0,h=0,d="",p=this._mappings.toArray(),g=0,f=p.length;g<f;g++){if(n="",(r=p[g]).generatedLine!==a)for(s=0;r.generatedLine!==a;)n+=";",a++;else if(g>0){if(!t.compareByGeneratedPositionsInflated(r,p[g-1]))continue;n+=","}n+=e.encode(r.generatedColumn-s),s=r.generatedColumn,null!=r.source&&(o=this._sources.indexOf(r.source),n+=e.encode(o-h),h=o,n+=e.encode(r.originalLine-1-c),c=r.originalLine-1,n+=e.encode(r.originalColumn-l),l=r.originalColumn,null!=r.name&&(i=this._names.indexOf(r.name),n+=e.encode(i-u),u=i)),d+=n}return d},i.prototype._generateSourcesContent=function(e,n){return e.map(function(e){if(!this._sourcesContents)return null;null!=n&&(e=t.relative(n,e));var r=t.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,r)?this._sourcesContents[r]:null},this)},i.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},i.prototype.toString=function(){return JSON.stringify(this.toJSON())},g.SourceMapGenerator=i,g}var O,R={},k={};function P(){return O||(O=1,function(e){function t(n,r,i,o,s,a){var l=Math.floor((r-n)/2)+n,c=s(i,o[l],!0);return 0===c?l:c>0?r-l>1?t(l,r,i,o,s,a):a==e.LEAST_UPPER_BOUND?r<o.length?r:-1:l:l-n>1?t(n,l,i,o,s,a):a==e.LEAST_UPPER_BOUND?l:n<0?-1:n}e.GREATEST_LOWER_BOUND=1,e.LEAST_UPPER_BOUND=2,e.search=function(n,r,i,o){if(0===r.length)return-1;var s=t(-1,r.length,n,r,i,o||e.GREATEST_LOWER_BOUND);if(s<0)return-1;for(;s-1>=0&&0===i(r[s],r[s-1],!0);)--s;return s}}(k)),k}var I,j,N={};function U(){if(I)return N;function e(e){function t(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}return function e(n,r,i,o){if(i<o){var s=i-1;t(n,(u=i,h=o,Math.round(u+Math.random()*(h-u))),o);for(var a=n[o],l=i;l<o;l++)r(n[l],a,!1)<=0&&t(n,s+=1,l);t(n,s+1,l);var c=s+1;e(n,r,i,c-1),e(n,r,c+1,o)}var u,h}}I=1;let t=new WeakMap;return N.quickSort=function(n,r,i=0){let o=t.get(r);void 0===o&&(o=function(t){let n=e.toString();return new Function(`return ${n}`)()(t)}(r),t.set(r,o)),o(n,r,i,n.length-1)},N}var $,D,H={};var F=(D||(D=1,p.SourceMapGenerator=T().SourceMapGenerator,p.SourceMapConsumer=function(){if(j)return R;j=1;var e=b(),t=P(),n=x().ArraySet,r=v(),i=U().quickSort;function o(t,n){var r=t;return"string"==typeof t&&(r=e.parseSourceMapInput(t)),null!=r.sections?new u(r,n):new s(r,n)}function s(t,r){var i=t;"string"==typeof t&&(i=e.parseSourceMapInput(t));var o=e.getArg(i,"version"),s=e.getArg(i,"sources"),a=e.getArg(i,"names",[]),l=e.getArg(i,"sourceRoot",null),c=e.getArg(i,"sourcesContent",null),u=e.getArg(i,"mappings"),h=e.getArg(i,"file",null);if(o!=this._version)throw new Error("Unsupported version: "+o);l&&(l=e.normalize(l)),s=s.map(String).map(e.normalize).map(function(t){return l&&e.isAbsolute(l)&&e.isAbsolute(t)?e.relative(l,t):t}),this._names=n.fromArray(a.map(String),!0),this._sources=n.fromArray(s,!0),this._absoluteSources=this._sources.toArray().map(function(t){return e.computeSourceURL(l,t,r)}),this.sourceRoot=l,this.sourcesContent=c,this._mappings=u,this._sourceMapURL=r,this.file=h}function a(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}o.fromSourceMap=function(e,t){return s.fromSourceMap(e,t)},o.prototype._version=3,o.prototype.__generatedMappings=null,Object.defineProperty(o.prototype,"_generatedMappings",{configurable:!0,enumerable:!0,get:function(){return this.__generatedMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__generatedMappings}}),o.prototype.__originalMappings=null,Object.defineProperty(o.prototype,"_originalMappings",{configurable:!0,enumerable:!0,get:function(){return this.__originalMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__originalMappings}}),o.prototype._charIsMappingSeparator=function(e,t){var n=e.charAt(t);return";"===n||","===n},o.prototype._parseMappings=function(e,t){throw new Error("Subclasses must implement _parseMappings")},o.GENERATED_ORDER=1,o.ORIGINAL_ORDER=2,o.GREATEST_LOWER_BOUND=1,o.LEAST_UPPER_BOUND=2,o.prototype.eachMapping=function(t,n,r){var i,s=n||null;switch(r||o.GENERATED_ORDER){case o.GENERATED_ORDER:i=this._generatedMappings;break;case o.ORIGINAL_ORDER:i=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}for(var a=this.sourceRoot,l=t.bind(s),c=this._names,u=this._sources,h=this._sourceMapURL,d=0,p=i.length;d<p;d++){var g=i[d],f=null===g.source?null:u.at(g.source);null!==f&&(f=e.computeSourceURL(a,f,h)),l({source:f,generatedLine:g.generatedLine,generatedColumn:g.generatedColumn,originalLine:g.originalLine,originalColumn:g.originalColumn,name:null===g.name?null:c.at(g.name)})}},o.prototype.allGeneratedPositionsFor=function(n){var r=e.getArg(n,"line"),i={source:e.getArg(n,"source"),originalLine:r,originalColumn:e.getArg(n,"column",0)};if(i.source=this._findSourceIndex(i.source),i.source<0)return[];var o=[],s=this._findMapping(i,this._originalMappings,"originalLine","originalColumn",e.compareByOriginalPositions,t.LEAST_UPPER_BOUND);if(s>=0){var a=this._originalMappings[s];if(void 0===n.column)for(var l=a.originalLine;a&&a.originalLine===l;)o.push({line:e.getArg(a,"generatedLine",null),column:e.getArg(a,"generatedColumn",null),lastColumn:e.getArg(a,"lastGeneratedColumn",null)}),a=this._originalMappings[++s];else for(var c=a.originalColumn;a&&a.originalLine===r&&a.originalColumn==c;)o.push({line:e.getArg(a,"generatedLine",null),column:e.getArg(a,"generatedColumn",null),lastColumn:e.getArg(a,"lastGeneratedColumn",null)}),a=this._originalMappings[++s]}return o},R.SourceMapConsumer=o,s.prototype=Object.create(o.prototype),s.prototype.consumer=o,s.prototype._findSourceIndex=function(t){var n,r=t;if(null!=this.sourceRoot&&(r=e.relative(this.sourceRoot,r)),this._sources.has(r))return this._sources.indexOf(r);for(n=0;n<this._absoluteSources.length;++n)if(this._absoluteSources[n]==t)return n;return-1},s.fromSourceMap=function(t,r){var o=Object.create(s.prototype),l=o._names=n.fromArray(t._names.toArray(),!0),c=o._sources=n.fromArray(t._sources.toArray(),!0);o.sourceRoot=t._sourceRoot,o.sourcesContent=t._generateSourcesContent(o._sources.toArray(),o.sourceRoot),o.file=t._file,o._sourceMapURL=r,o._absoluteSources=o._sources.toArray().map(function(t){return e.computeSourceURL(o.sourceRoot,t,r)});for(var u=t._mappings.toArray().slice(),h=o.__generatedMappings=[],d=o.__originalMappings=[],p=0,g=u.length;p<g;p++){var f=u[p],m=new a;m.generatedLine=f.generatedLine,m.generatedColumn=f.generatedColumn,f.source&&(m.source=c.indexOf(f.source),m.originalLine=f.originalLine,m.originalColumn=f.originalColumn,f.name&&(m.name=l.indexOf(f.name)),d.push(m)),h.push(m)}return i(o.__originalMappings,e.compareByOriginalPositions),o},s.prototype._version=3,Object.defineProperty(s.prototype,"sources",{get:function(){return this._absoluteSources.slice()}});const l=e.compareByGeneratedPositionsDeflatedNoLine;function c(e,t){let n=e.length,r=e.length-t;if(!(r<=1))if(2==r){let n=e[t],r=e[t+1];l(n,r)>0&&(e[t]=r,e[t+1]=n)}else if(r<20)for(let r=t;r<n;r++)for(let n=r;n>t;n--){let t=e[n-1],r=e[n];if(l(t,r)<=0)break;e[n-1]=r,e[n]=t}else i(e,l,t)}function u(t,r){var i=t;"string"==typeof t&&(i=e.parseSourceMapInput(t));var s=e.getArg(i,"version"),a=e.getArg(i,"sections");if(s!=this._version)throw new Error("Unsupported version: "+s);this._sources=new n,this._names=new n;var l={line:-1,column:0};this._sections=a.map(function(t){if(t.url)throw new Error("Support for url field in sections not implemented.");var n=e.getArg(t,"offset"),i=e.getArg(n,"line"),s=e.getArg(n,"column");if(i<l.line||i===l.line&&s<l.column)throw new Error("Section offsets must be ordered and non-overlapping.");return l=n,{generatedOffset:{generatedLine:i+1,generatedColumn:s+1},consumer:new o(e.getArg(t,"map"),r)}})}return s.prototype._parseMappings=function(t,n){var o,s,l,u,h=1,d=0,p=0,g=0,f=0,m=0,y=t.length,v=0,_={},C=[],b=[];let w=0;for(;v<y;)if(";"===t.charAt(v))h++,v++,d=0,c(b,w),w=b.length;else if(","===t.charAt(v))v++;else{for((o=new a).generatedLine=h,l=v;l<y&&!this._charIsMappingSeparator(t,l);l++);for(t.slice(v,l),s=[];v<l;)r.decode(t,v,_),u=_.value,v=_.rest,s.push(u);if(2===s.length)throw new Error("Found a source, but no line and column");if(3===s.length)throw new Error("Found a source and line, but no column");if(o.generatedColumn=d+s[0],d=o.generatedColumn,s.length>1&&(o.source=f+s[1],f+=s[1],o.originalLine=p+s[2],p=o.originalLine,o.originalLine+=1,o.originalColumn=g+s[3],g=o.originalColumn,s.length>4&&(o.name=m+s[4],m+=s[4])),b.push(o),"number"==typeof o.originalLine){let e=o.source;for(;C.length<=e;)C.push(null);null===C[e]&&(C[e]=[]),C[e].push(o)}}c(b,w),this.__generatedMappings=b;for(var E=0;E<C.length;E++)null!=C[E]&&i(C[E],e.compareByOriginalPositionsNoSource);this.__originalMappings=[].concat(...C)},s.prototype._findMapping=function(e,n,r,i,o,s){if(e[r]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[r]);if(e[i]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[i]);return t.search(e,n,o,s)},s.prototype.computeColumnSpans=function(){for(var e=0;e<this._generatedMappings.length;++e){var t=this._generatedMappings[e];if(e+1<this._generatedMappings.length){var n=this._generatedMappings[e+1];if(t.generatedLine===n.generatedLine){t.lastGeneratedColumn=n.generatedColumn-1;continue}}t.lastGeneratedColumn=1/0}},s.prototype.originalPositionFor=function(t){var n={generatedLine:e.getArg(t,"line"),generatedColumn:e.getArg(t,"column")},r=this._findMapping(n,this._generatedMappings,"generatedLine","generatedColumn",e.compareByGeneratedPositionsDeflated,e.getArg(t,"bias",o.GREATEST_LOWER_BOUND));if(r>=0){var i=this._generatedMappings[r];if(i.generatedLine===n.generatedLine){var s=e.getArg(i,"source",null);null!==s&&(s=this._sources.at(s),s=e.computeSourceURL(this.sourceRoot,s,this._sourceMapURL));var a=e.getArg(i,"name",null);return null!==a&&(a=this._names.at(a)),{source:s,line:e.getArg(i,"originalLine",null),column:e.getArg(i,"originalColumn",null),name:a}}}return{source:null,line:null,column:null,name:null}},s.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e})},s.prototype.sourceContentFor=function(t,n){if(!this.sourcesContent)return null;var r=this._findSourceIndex(t);if(r>=0)return this.sourcesContent[r];var i,o=t;if(null!=this.sourceRoot&&(o=e.relative(this.sourceRoot,o)),null!=this.sourceRoot&&(i=e.urlParse(this.sourceRoot))){var s=o.replace(/^file:\/\//,"");if("file"==i.scheme&&this._sources.has(s))return this.sourcesContent[this._sources.indexOf(s)];if((!i.path||"/"==i.path)&&this._sources.has("/"+o))return this.sourcesContent[this._sources.indexOf("/"+o)]}if(n)return null;throw new Error('"'+o+'" is not in the SourceMap.')},s.prototype.generatedPositionFor=function(t){var n=e.getArg(t,"source");if((n=this._findSourceIndex(n))<0)return{line:null,column:null,lastColumn:null};var r={source:n,originalLine:e.getArg(t,"line"),originalColumn:e.getArg(t,"column")},i=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",e.compareByOriginalPositions,e.getArg(t,"bias",o.GREATEST_LOWER_BOUND));if(i>=0){var s=this._originalMappings[i];if(s.source===r.source)return{line:e.getArg(s,"generatedLine",null),column:e.getArg(s,"generatedColumn",null),lastColumn:e.getArg(s,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},R.BasicSourceMapConsumer=s,u.prototype=Object.create(o.prototype),u.prototype.constructor=o,u.prototype._version=3,Object.defineProperty(u.prototype,"sources",{get:function(){for(var e=[],t=0;t<this._sections.length;t++)for(var n=0;n<this._sections[t].consumer.sources.length;n++)e.push(this._sections[t].consumer.sources[n]);return e}}),u.prototype.originalPositionFor=function(n){var r={generatedLine:e.getArg(n,"line"),generatedColumn:e.getArg(n,"column")},i=t.search(r,this._sections,function(e,t){return e.generatedLine-t.generatedOffset.generatedLine||e.generatedColumn-t.generatedOffset.generatedColumn}),o=this._sections[i];return o?o.consumer.originalPositionFor({line:r.generatedLine-(o.generatedOffset.generatedLine-1),column:r.generatedColumn-(o.generatedOffset.generatedLine===r.generatedLine?o.generatedOffset.generatedColumn-1:0),bias:n.bias}):{source:null,line:null,column:null,name:null}},u.prototype.hasContentsOfAllSources=function(){return this._sections.every(function(e){return e.consumer.hasContentsOfAllSources()})},u.prototype.sourceContentFor=function(e,t){for(var n=0;n<this._sections.length;n++){var r=this._sections[n].consumer.sourceContentFor(e,!0);if(r||""===r)return r}if(t)return null;throw new Error('"'+e+'" is not in the SourceMap.')},u.prototype.generatedPositionFor=function(t){for(var n=0;n<this._sections.length;n++){var r=this._sections[n];if(-1!==r.consumer._findSourceIndex(e.getArg(t,"source"))){var i=r.consumer.generatedPositionFor(t);if(i)return{line:i.line+(r.generatedOffset.generatedLine-1),column:i.column+(r.generatedOffset.generatedLine===i.line?r.generatedOffset.generatedColumn-1:0)}}}return{line:null,column:null}},u.prototype._parseMappings=function(t,n){this.__generatedMappings=[],this.__originalMappings=[];for(var r=0;r<this._sections.length;r++)for(var o=this._sections[r],s=o.consumer._generatedMappings,a=0;a<s.length;a++){var l=s[a],c=o.consumer._sources.at(l.source);null!==c&&(c=e.computeSourceURL(o.consumer.sourceRoot,c,this._sourceMapURL)),this._sources.add(c),c=this._sources.indexOf(c);var u=null;l.name&&(u=o.consumer._names.at(l.name),this._names.add(u),u=this._names.indexOf(u));var h={source:c,generatedLine:l.generatedLine+(o.generatedOffset.generatedLine-1),generatedColumn:l.generatedColumn+(o.generatedOffset.generatedLine===l.generatedLine?o.generatedOffset.generatedColumn-1:0),originalLine:l.originalLine,originalColumn:l.originalColumn,name:u};this.__generatedMappings.push(h),"number"==typeof h.originalLine&&this.__originalMappings.push(h)}i(this.__generatedMappings,e.compareByGeneratedPositionsDeflated),i(this.__originalMappings,e.compareByOriginalPositions)},R.IndexedSourceMapConsumer=u,R}().SourceMapConsumer,p.SourceNode=function(){if($)return H;$=1;var e=T().SourceMapGenerator,t=b(),n=/(\r?\n)/,r="$$$isSourceNode$$$";function i(e,t,n,i,o){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==t?null:t,this.source=null==n?null:n,this.name=null==o?null:o,this[r]=!0,null!=i&&this.add(i)}return i.fromStringWithSourceMap=function(e,r,o){var s=new i,a=e.split(n),l=0,c=function(){return e()+(e()||"");function e(){return l<a.length?a[l++]:void 0}},u=1,h=0,d=null;return r.eachMapping(function(e){if(null!==d){if(!(u<e.generatedLine)){var t=(n=a[l]||"").substr(0,e.generatedColumn-h);return a[l]=n.substr(e.generatedColumn-h),h=e.generatedColumn,p(d,t),void(d=e)}p(d,c()),u++,h=0}for(;u<e.generatedLine;)s.add(c()),u++;if(h<e.generatedColumn){var n=a[l]||"";s.add(n.substr(0,e.generatedColumn)),a[l]=n.substr(e.generatedColumn),h=e.generatedColumn}d=e},this),l<a.length&&(d&&p(d,c()),s.add(a.splice(l).join(""))),r.sources.forEach(function(e){var n=r.sourceContentFor(e);null!=n&&(null!=o&&(e=t.join(o,e)),s.setSourceContent(e,n))}),s;function p(e,n){if(null===e||void 0===e.source)s.add(n);else{var r=o?t.join(o,e.source):e.source;s.add(new i(e.originalLine,e.originalColumn,r,n,e.name))}}},i.prototype.add=function(e){if(Array.isArray(e))e.forEach(function(e){this.add(e)},this);else{if(!e[r]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);e&&this.children.push(e)}return this},i.prototype.prepend=function(e){if(Array.isArray(e))for(var t=e.length-1;t>=0;t--)this.prepend(e[t]);else{if(!e[r]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},i.prototype.walk=function(e){for(var t,n=0,i=this.children.length;n<i;n++)(t=this.children[n])[r]?t.walk(e):""!==t&&e(t,{source:this.source,line:this.line,column:this.column,name:this.name})},i.prototype.join=function(e){var t,n,r=this.children.length;if(r>0){for(t=[],n=0;n<r-1;n++)t.push(this.children[n]),t.push(e);t.push(this.children[n]),this.children=t}return this},i.prototype.replaceRight=function(e,t){var n=this.children[this.children.length-1];return n[r]?n.replaceRight(e,t):"string"==typeof n?this.children[this.children.length-1]=n.replace(e,t):this.children.push("".replace(e,t)),this},i.prototype.setSourceContent=function(e,n){this.sourceContents[t.toSetString(e)]=n},i.prototype.walkSourceContents=function(e){for(var n=0,i=this.children.length;n<i;n++)this.children[n][r]&&this.children[n].walkSourceContents(e);var o=Object.keys(this.sourceContents);for(n=0,i=o.length;n<i;n++)e(t.fromSetString(o[n]),this.sourceContents[o[n]])},i.prototype.toString=function(){var e="";return this.walk(function(t){e+=t}),e},i.prototype.toStringWithSourceMap=function(t){var n={code:"",line:1,column:0},r=new e(t),i=!1,o=null,s=null,a=null,l=null;return this.walk(function(e,t){n.code+=e,null!==t.source&&null!==t.line&&null!==t.column?(o===t.source&&s===t.line&&a===t.column&&l===t.name||r.addMapping({source:t.source,original:{line:t.line,column:t.column},generated:{line:n.line,column:n.column},name:t.name}),o=t.source,s=t.line,a=t.column,l=t.name,i=!0):i&&(r.addMapping({generated:{line:n.line,column:n.column}}),o=null,i=!1);for(var c=0,u=e.length;c<u;c++)10===e.charCodeAt(c)?(n.line++,n.column=0,c+1===u?(o=null,i=!1):i&&r.addMapping({source:t.source,original:{line:t.line,column:t.column},generated:{line:n.line,column:n.column},name:t.name})):n.column++}),this.walkSourceContents(function(e,t){r.setSourceContent(e,t)}),{code:n.code,map:r}},H.SourceNode=i,H}().SourceNode),p);class B{consumers=new Map;pending=new Map;async resolve(e){if(!function(e){try{const t=new URL(e),n=t.pathname;return!!/\.(?:js|mjs|cjs)$/.test(n)&&(!t.searchParams.has("t")&&(!!/-[A-Za-z0-9_-]{6,}\.(?:js|mjs|cjs)$/.test(n)||!!n.startsWith("/assets/")))}catch{return!1}}(e.f)){let t=e.f;try{t=new URL(e.f).pathname}catch{}if(function(e){try{const t=new URL(e);return!t.pathname.includes("/node_modules/")&&!t.pathname.startsWith("/@")&&(/\.(?:ts|tsx|jsx|mts|vue|svelte)$/.test(t.pathname)||t.searchParams.has("t"))}catch{return!1}}(e.f)){const n=await this.getInlineConsumer(e.f);if(n){const r=n.originalPositionFor({line:e.l,column:e.c});if(r.source&&r.line){const e={source:t,line:r.line,column:r.column??void 0};return this.fillSourceLine(n,r.source,r.line,e),e}}}return{source:t,line:e.l,column:e.c}}const t=await this.getConsumer(e.f);if(!t)return{source:this.extractPath(e.f),line:e.l,column:e.c};const n=t.originalPositionFor({line:e.l,column:e.c});if(!n.source)return console.warn(`[funpixel-inspector] source map present but no mapping for ${e.f}:${e.l}:${e.c} (position outside mapped ranges — bundler boilerplate or generated code)`),null;const r={source:this.normalizePath(n.source),line:n.line,column:n.column??void 0};return n.line&&this.fillSourceLine(t,n.source,n.line,r),r}fillSourceLine(e,t,n,r){try{const i=e.sourceContentFor(t,!0),o=i?.split("\n")[n-1];if(!o)return;r.sourceLine=o.trim();const s=o.match(/(?:const|let|var)\s+(\w+)\s*=|this\.(\w+)\s*=/);s&&(r.varName=s[1]||s[2])}catch{}}getInlineConsumer(e){const t=`inline:${e}`;if(this.consumers.has(t))return Promise.resolve(this.consumers.get(t));let n=this.pending.get(t);return n||(n=fetch(e).then(e=>e.ok?e.text():"").then(e=>{const t=function(e){const t=/\/\/[#@]\s*sourceMappingURL=data:application\/json[^,]*;base64,([A-Za-z0-9+/=]+)\s*$/.exec(e);if(!t)return null;try{const e=Uint8Array.from(atob(t[1]),e=>e.charCodeAt(0));return JSON.parse((new TextDecoder).decode(e))}catch{return null}}(e);return t?new F.SourceMapConsumer(t):null}).catch(()=>null).then(e=>(this.consumers.set(t,e),this.pending.delete(t),e)),this.pending.set(t,n)),n}async getConsumer(e){if(this.consumers.has(e))return this.consumers.get(e);if(this.pending.has(e))return this.pending.get(e);const t=this.fetchMap(e);this.pending.set(e,t);const n=await t;return this.consumers.set(e,n),this.pending.delete(e),n}async fetchMap(e){const t=e+".map";try{const e=await fetch(t);if(!e.ok)return console.warn(`[funpixel-inspector] source map fetch failed for ${t}: HTTP ${e.status} (build did not emit a .map alongside the bundle, or preview server is not serving it)`),null;const n=await e.json();return new F.SourceMapConsumer(n)}catch(e){return console.warn(`[funpixel-inspector] source map fetch/parse error for ${t}:`,e),null}}extractPath(e){try{return new URL(e).pathname}catch{return e}}normalizePath(e){return e.replace(/^(\.\.\/)+/,"")}}const G=new Set(["DIV","SPAN","SECTION","ARTICLE","HEADER","FOOTER","MAIN","NAV","P"]),X=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A","LABEL","PROGRESS","METER","CANVAS","VIDEO","IMG","SVG"]);class z{isInspectorChrome(e){return null!==e.closest('[id^="funpixel-inspector-"], #funpixel-dom-highlighter, #funpixel-screenshot-selection')||e.hasAttribute("data-funpixel-inspector")}isGameCanvas(e){return"CANVAS"===e.tagName&&!this.isInspectorChrome(e)}isCanvasAncestor(e,t){return!(!e.classList.contains("canvas-host")&&!e.classList.contains("canvas-container"))||!!t&&(e===t||e.contains(t))}isTransparentViewportWrapper(e){if(e.hasAttribute("data-funpixel-component"))return!1;if(X.has(e.tagName))return!1;const t=e.getBoundingClientRect();if(t.width<.9*window.innerWidth||t.height<.9*window.innerHeight)return!1;const n=getComputedStyle(e),r=n.backgroundColor;if(r&&"transparent"!==r&&!/^rgba\([^)]*,\s*0\s*\)$/.test(r))return!1;if(n.backgroundImage&&"none"!==n.backgroundImage)return!1;if(n.boxShadow&&"none"!==n.boxShadow)return!1;if(parseFloat(n.borderTopWidth||"0")>0)return!1;for(const t of Array.from(e.childNodes))if(3===t.nodeType&&t.textContent&&t.textContent.trim())return!1;return!0}findComponentAt(e,t){const n=document.elementsFromPoint(e,t),r=[];for(const e of n)e instanceof HTMLElement&&(this.isInspectorChrome(e)||this.isTransparentViewportWrapper(e)||r.push(e));const i=r.find(e=>this.isGameCanvas(e))??null,o=r.filter(e=>!this.isGameCanvas(e)&&!this.isCanvasAncestor(e,i));if(0===o.length)return null;const s=o[0],a=s.getAttribute("data-funpixel-component");if(a)return this.isFxComponent(s)?null:{element:s,name:a};for(const e of o)if(X.has(e.tagName)){const t=e.getAttribute("data-funpixel-component");return t&&this.isFxComponent(e)?null:{element:e,name:t??this.inferRawName(e)}}let l=s;for(;l;){const e=l.getAttribute("data-funpixel-component");if(e)return this.isFxComponent(l)?null:{element:l,name:e};l=l.parentElement}return{element:s,name:this.inferRawName(s)}}getComponentMetadata(e,t){const n=e.getAttribute("data-funpixel-component")||this.inferRawName(e)||"UI Element",r=e.getAttribute("data-funpixel-props"),i=r?this.safeParseJson(r):this.inferRawProps(e),o=e.getBoundingClientRect(),s=t?this.toCanvasBounds(o,t):{x:o.left,y:o.top,width:o.width,height:o.height};return{type:n,typeName:n,layer:1e3,position:{x:Math.round(o.left),y:Math.round(o.top)},scale:{x:1,y:1},alpha:this.getComputedAlpha(e),visible:null!==e.offsetParent||"fixed"===e.style.position,childCount:e.querySelectorAll("[data-funpixel-component]").length,bounds:s,parentLabel:this.getParentLabel(e),sourceFile:null,sourceLine:null,sourceColumn:null,sourceLineRange:null,isDomComponent:!0,cssClass:e.className||void 0,componentProps:i}}buildDomTree(){return this.walkDomTree(document.body)}findComponentNamed(e,t=document.body){for(const n of Array.from(t.children)){if(!(n instanceof HTMLElement))continue;if(this.isInspectorChrome(n)||this.isGameCanvas(n))continue;const t=n.getAttribute("data-funpixel-component");if(t===e)return n;if(!t&&this.hasStrongIdentity(n)&&this.inferRawName(n)===e)return n;const r=this.findComponentNamed(e,n);if(r)return r}return null}isFxComponent(e){return"true"===e.getAttribute("data-funpixel-fx")}walkDomTree(e){const t=[];for(const n of Array.from(e.children)){if(!(n instanceof HTMLElement))continue;if(this.isInspectorChrome(n)||this.isGameCanvas(n))continue;const e=n.getAttribute("data-funpixel-component");if(e){const r=this.isFxComponent(n);t.push({name:e,type:e,layer:r?"fx":"hud",children:this.walkDomTree(n)})}else if(this.hasStrongIdentity(n)){const e=this.inferRawName(n);t.push({name:e,type:n.tagName.toLowerCase(),layer:"hud",children:this.walkDomTree(n)})}else t.push(...this.walkDomTree(n))}return t}toCanvasBounds(e,t){const n=t.getBoundingClientRect(),r=t.width/n.width,i=t.height/n.height;return{x:(e.left-n.left)*r,y:(e.top-n.top)*i,width:e.width*r,height:e.height*i}}getComputedAlpha(e){const t=getComputedStyle(e).opacity;return t?parseFloat(t):1}getParentLabel(e){let t=e.parentElement;for(;t;){const e=t.getAttribute("data-funpixel-component");if(e)return e;t=t.parentElement}return"overlay"}safeParseJson(e){try{return JSON.parse(e)}catch{return{}}}inferRawName(e){if(e.id)return`#${e.id}`;const t=e.tagName;if(X.has(t)){const n=e.textContent?.trim().slice(0,24);if(n)return`${t.toLowerCase()}: "${n}"`;if("INPUT"===t){const t=e;return`input[${t.type}]${t.placeholder?` "${t.placeholder}"`:""}`}return t.toLowerCase()}const n=this.getMeaningfulClass(e);if(n)return`.${n}`;const r=e.getAttribute("role");if(r)return r;const i=e.getAttribute("aria-label");if(i)return i.slice(0,32);const o=e.textContent?.trim();return o&&o.length<=24?`"${o}"`:t.toLowerCase()}hasStrongIdentity(e){return!!e.id||(!!X.has(e.tagName)||(!!this.getMeaningfulClass(e)||!G.has(e.tagName)))}getMeaningfulClass(e){for(const t of e.classList)if(!(t.length<4||/^[a-z][-a-z0-9]{0,2}$/.test(t)))return t;return null}inferRawProps(e){const t={},n=e.textContent?.trim();return n&&n.length<=60&&(t.text=n),e.getAttribute("role")&&(t.role=e.getAttribute("role")),e.getAttribute("aria-label")&&(t["aria-label"]=e.getAttribute("aria-label")),e.id&&(t.id=e.id),e.className&&(t.class=e.className),t}}class W{container=null;selectionEl=null;hoverEl=null;labelEl=null;create(){if(this.container)return;const e=document.querySelector(".funpixel-shell")??document.documentElement;e&&(this.container=document.createElement("div"),this.container.id="funpixel-dom-highlighter",this.container.style.cssText="\n position: fixed;\n inset: 0;\n pointer-events: none;\n z-index: 2147483000;\n ",e.appendChild(this.container))}showSelection(e,t){if(!this.container)return;this.clearSelection();const r=e.getBoundingClientRect(),i=r.left,o=r.top;this.selectionEl=document.createElement("div"),this.selectionEl.style.cssText=`\n position: fixed;\n left: ${i}px;\n top: ${o}px;\n width: ${r.width}px;\n height: ${r.height}px;\n border: 3px solid ${n.selected};\n border-radius: 2px;\n pointer-events: none;\n box-sizing: border-box;\n `;const s=this.createCornerMarkers(n.selected);for(const e of s)this.selectionEl.appendChild(e);this.container.appendChild(this.selectionEl)}showHover(e,t){if(!this.container)return;this.clearHover();const r=e.getBoundingClientRect();if(r.width<=0||r.height<=0)return;const i=r.left,o=r.top;this.hoverEl=document.createElement("div"),this.hoverEl.style.cssText=`\n position: fixed;\n left: ${i}px;\n top: ${o}px;\n width: ${r.width}px;\n height: ${r.height}px;\n border: 2px dashed ${n.hovered};\n border-radius: 2px;\n pointer-events: none;\n box-sizing: border-box;\n `,this.container.appendChild(this.hoverEl);const s=this.createLabel(0,-24,t,!1);this.hoverEl.appendChild(s)}clearSelection(){this.selectionEl&&(this.selectionEl.remove(),this.selectionEl=null),this.labelEl&&(this.labelEl.remove(),this.labelEl=null)}clearHover(){this.hoverEl&&(this.hoverEl.remove(),this.hoverEl=null)}clear(){this.clearSelection(),this.clearHover()}remove(){this.clear(),this.container&&(this.container.remove(),this.container=null)}isActive(){return null!==this.container}createLabel(e,t,r,i,o=!1){const s=document.createElement("div"),a=i?n.selected:n.hovered;return s.style.cssText=`\n position: ${o?"fixed":"absolute"};\n left: ${Math.max(0,e)}px;\n top: ${Math.max(0,t)}px;\n background: ${n.label};\n color: ${n.labelText};\n font: 12px monospace;\n padding: 2px 6px;\n border-left: 3px solid ${a};\n white-space: nowrap;\n pointer-events: none;\n `,s.textContent=r,s}createCornerMarkers(e){const t=10,n=[],r=[{left:-1,top:-1,bTop:3,bLeft:3,bRight:0,bBottom:0,w:t,h:t},{right:-1,top:-1,bTop:3,bRight:3,bLeft:0,bBottom:0,w:t,h:t},{left:-1,bottom:-1,bBottom:3,bLeft:3,bRight:0,bTop:0,w:t,h:t},{right:-1,bottom:-1,bBottom:3,bRight:3,bLeft:0,bTop:0,w:t,h:t}];for(const t of r){const r=document.createElement("div");r.style.cssText=`\n position: absolute;\n width: ${t.w}px;\n height: ${t.h}px;\n border-color: ${e};\n border-style: solid;\n border-width: ${t.bTop||0}px ${t.bRight||0}px ${t.bBottom||0}px ${t.bLeft||0}px;\n pointer-events: none;\n ${"left"in t?`left: ${t.left}px;`:""}\n ${"right"in t?`right: ${t.right}px;`:""}\n ${"top"in t?`top: ${t.top}px;`:""}\n ${"bottom"in t?`bottom: ${t.bottom}px;`:""}\n `,n.push(r)}return n}}const J={sceneCheckInterval:100,sceneCheckTimeout:1e4,debug:!1},V=.82;function q(e,t={}){const n=Math.min(1,1280/Math.max(1,e.width)),r=t.alpha?"image/png":"image/jpeg";if(1===n)return"image/jpeg"===r?e.toDataURL(r,V):e.toDataURL(r);try{const t=document.createElement("canvas");t.width=Math.max(1,Math.round(e.width*n)),t.height=Math.max(1,Math.round(e.height*n));const i=t.getContext("2d");return i?(i.drawImage(e,0,0,t.width,t.height),"image/jpeg"===r?t.toDataURL(r,V):t.toDataURL(r)):e.toDataURL(r,V)}catch{return e.toDataURL(r,V)}}class Y{stackParser;messages;canvasHighlighter;tracker;errorTracker;consoleLogTracker;sourceMapResolver;domInspector;domHighlighter;isPaused=!1;sceneReady=!1;isDomSelection=!1;pendingPause=!1;selectedObject=null;hoveredObject=null;config;boundHandleClick;boundHandleMouseMove;boundHandleKeyDown;boundHandleMouseOut;lastMouseMoveTime=0;inputShield=null;initOverlay=null;constructor(e={}){this.config={...J,...e},this.stackParser=new r,this.canvasHighlighter=new s,this.tracker=new a(this.stackParser),this.sourceMapResolver=new B,this.domInspector=new z,this.domHighlighter=new W,this.boundHandleClick=this.handleClick.bind(this),this.boundHandleMouseMove=this.handleMouseMove.bind(this),this.boundHandleKeyDown=this.handleKeyDown.bind(this),this.boundHandleMouseOut=this.handleMouseOut.bind(this),this.messages=null,this.errorTracker=null,this.consoleLogTracker=null}selectByName(e){const t=this.domInspector.findComponentNamed(e);if(t)return this.selectedObject=t,this.isDomSelection=!0,this.canvasHighlighter.clear(),this.domHighlighter.showSelection(t,e),void this.messages.send({type:"OBJECT_SELECTED",metadata:this.domInspector.getComponentMetadata(t,this.getCanvas())});const n=this.findObjectByName(e);if(!n)return void this.log(`selectByName: "${e}" not found`);this.isDomSelection=!1,this.domHighlighter.clearSelection(),this.selectedObject=n;const r=this.getObjectMetadata(n);this.enrichMetadata(n,r).then(t=>{this.messages.send({type:"OBJECT_SELECTED",metadata:t}),this.log(`Selected by name: ${e}`)})}forEachSceneObject(e){}scheduleFrame(e){requestAnimationFrame(e)}getEngineVersion(){const e=window;if("threejs"===this.engineType){const t=e.THREE?.REVISION;return null!=t?`r${t}`:void 0}if("pixi"===this.engineType)return e.PIXI?.VERSION??void 0}init(){this.messages=new o(this.engineType,()=>this.getEngineVersion()),this.errorTracker=new l(this.messages,this.sourceMapResolver),this.errorTracker.init(),this.consoleLogTracker=new u(this.messages),this.consoleLogTracker.init(),this.hookConstructors(),this.setupMessageHandlers(),this.waitForScene(),this.exposeGlobalAPI(),this.log("Inspector initialized with error tracking")}waitForScene(){const e=Date.now(),t=setInterval(()=>{this.isSceneReady()?(clearInterval(t),this.onSceneReady()):Date.now()-e>this.config.sceneCheckTimeout&&(clearInterval(t),this.log("Scene not found after timeout","warn"))},this.config.sceneCheckInterval)}onSceneReady(){this.log("Scene detected"),this.sceneReady=!0,this.messages.send({type:"FUNPIXEL_READY"}),this.sendEngineDetected(),this.pendingPause&&(this.log("Executing pending pause"),this.pause())}setupMessageHandlers(){this.messages.on("FUNPIXEL_PAUSE",()=>this.pause()),this.messages.on("FUNPIXEL_RESUME",()=>this.resume()),this.messages.on("FUNPIXEL_CLEAR_SELECTION",()=>this.clearSelection()),this.messages.on("FUNPIXEL_GET_TREE",()=>this.sendSceneTree()),this.messages.on("GET_SCENE_TREE",()=>this.sendSceneTree("SCENE_TREE")),this.messages.on("REQUEST_SCREENSHOT",()=>this.takeScreenshot()),this.messages.on("REQUEST_AREA_SCREENSHOT",()=>this.startAreaSelection()),this.messages.on("DETECT_ENGINE",()=>this.sendEngineDetected()),this.messages.on("SELECT_OBJECT",e=>{e.target&&this.selectByName(e.target)}),this.messages.on("FOCUS_OBJECT",e=>{e.target&&(this.log(`Focusing on "${e.target}"`),this.focusOnObject(e.target))})}sendEngineDetected(){this.messages.send({type:"ENGINE_DETECTED",engine:this.engineType}),this.log(`Engine detected: ${this.engineType}`)}takeScreenshot(){const e=this.getCanvas();if(!e)return this.log("No canvas available for screenshot, trying html2canvas fallback","warn"),void this.tryHtml2CanvasFallback(()=>{window.parent.postMessage({type:"SCREENSHOT_RESULT",error:"No canvas"},"*")});const t=e=>{if(e.length<200)return this.log("Canvas capture returned blank image, trying html2canvas fallback","warn"),void this.tryHtml2CanvasFallback(()=>{window.parent.postMessage({type:"SCREENSHOT_RESULT",dataUrl:e},"*")});window.parent.postMessage({type:"SCREENSHOT_RESULT",dataUrl:e},"*"),this.log("Screenshot captured")},n=e=>{this.log(`Screenshot failed: ${e}, trying html2canvas fallback`,"error"),this.tryHtml2CanvasFallback(()=>{window.parent.postMessage({type:"SCREENSHOT_RESULT",error:String(e)},"*")})};if(this.needsRafCapture(e))this.isPaused?(window.__GAME_STATE__&&(window.__GAME_STATE__.isPaused=!1),this.scheduleFrame(()=>{try{t(q(e))}catch(e){n(e)}finally{window.__GAME_STATE__&&(window.__GAME_STATE__.isPaused=!0)}})):this.scheduleFrame(()=>{try{t(q(e))}catch(e){n(e)}});else try{t(q(e))}catch(e){n(e)}}tryHtml2CanvasFallback(e){this.loadHtml2Canvas().then(t=>{t?(this.log("Using html2canvas fallback for screenshot"),t(document.body,{useCORS:!0,allowTaint:!0,backgroundColor:null}).then(e=>{const t=q(e,{alpha:!0});window.parent.postMessage({type:"SCREENSHOT_RESULT",dataUrl:t},"*"),this.log("Screenshot captured via html2canvas fallback")}).catch(t=>{this.log(`html2canvas fallback failed: ${t}`,"error"),e()})):e()}).catch(()=>e())}html2canvasPromise=null;loadHtml2Canvas(){return"function"==typeof window.html2canvas?Promise.resolve(window.html2canvas):(this.html2canvasPromise||(this.html2canvasPromise=new Promise(e=>{const t=document.createElement("script");t.src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js",t.onload=()=>{"function"==typeof window.html2canvas?(this.log("html2canvas loaded dynamically"),e(window.html2canvas)):e(null)},t.onerror=()=>{this.log("Failed to load html2canvas from CDN","warn"),e(null)},document.head.appendChild(t)})),this.html2canvasPromise)}startAreaSelection(){const e=this.getCanvas();if(!e)return this.log("No canvas available for area screenshot","warn"),void window.parent.postMessage({type:"SCREENSHOT_RESULT",error:"No canvas"},"*");const t=document.createElement("div");t.id="funpixel-screenshot-selection",t.style.cssText="\n position: fixed;\n top: 0; left: 0; width: 100%; height: 100%;\n cursor: crosshair;\n z-index: 99999;\n background: rgba(0, 0, 0, 0.3);\n ";const n=document.createElement("div");n.style.cssText="\n position: absolute;\n border: 2px dashed #00f0ff;\n background: rgba(0, 240, 255, 0.1);\n box-shadow: 0 0 10px rgba(0, 240, 255, 0.3);\n display: none;\n pointer-events: none;\n ",t.appendChild(n);const r=document.createElement("div");r.textContent="Click and drag to select area. Press ESC to cancel.",r.style.cssText="\n position: absolute;\n top: 20px; left: 50%; transform: translateX(-50%);\n padding: 8px 16px;\n background: rgba(0, 0, 0, 0.8);\n color: #fff;\n border-radius: 8px;\n font-size: 12px;\n font-weight: 500;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n pointer-events: none;\n white-space: nowrap;\n ",t.appendChild(r);const i=document.createElement("div");i.style.cssText="\n position: absolute;\n padding: 4px 8px;\n background: rgba(0, 0, 0, 0.8);\n color: #00f0ff;\n border-radius: 4px;\n font-size: 11px;\n font-family: ui-monospace, monospace;\n pointer-events: none;\n display: none;\n transform: translateX(-50%);\n white-space: nowrap;\n ",t.appendChild(i);let o=0,s=0,a=!1;const l=e=>{a=!0,o=e.clientX,s=e.clientY,n.style.display="block",n.style.left=`${o}px`,n.style.top=`${s}px`,n.style.width="0",n.style.height="0",i.style.display="none"},c=e=>{if(!a)return;const t=e.clientX,r=e.clientY,l=Math.min(o,t),c=Math.min(s,r),u=Math.abs(t-o),h=Math.abs(r-s);n.style.left=`${l}px`,n.style.top=`${c}px`,n.style.width=`${u}px`,n.style.height=`${h}px`,u>0&&h>0&&(i.style.display="block",i.style.left=`${l+u/2}px`,i.style.top=`${c+h+10}px`,i.textContent=`${Math.round(u)} x ${Math.round(h)}`)},u=t=>{if(!a)return;a=!1;const n=t.clientX,r=t.clientY,i=e.getBoundingClientRect(),l=e.width/i.width,c=e.height/i.height,u=Math.max(0,Math.min(o,n)-i.left)*l,h=Math.max(0,Math.min(s,r)-i.top)*c,p=Math.abs(n-o)*l,g=Math.abs(r-s)*c;d(),p>10&&g>10?this.captureArea(e,u,h,p,g):window.parent.postMessage({type:"SCREENSHOT_RESULT",error:"Selection too small"},"*")},h=e=>{"Escape"===e.key&&(d(),window.parent.postMessage({type:"SCREENSHOT_RESULT",error:"Cancelled"},"*"))},d=()=>{t.removeEventListener("mousedown",l),t.removeEventListener("mousemove",c),t.removeEventListener("mouseup",u),document.removeEventListener("keydown",h),t.remove()};t.addEventListener("mousedown",l),t.addEventListener("mousemove",c),t.addEventListener("mouseup",u),document.addEventListener("keydown",h),document.body.appendChild(t),this.log("Area selection started - drag to select, Esc to cancel")}captureArea(e,t,n,r,i){const o=()=>{const o=document.createElement("canvas");o.width=r,o.height=i;const s=o.getContext("2d");if(!s)throw new Error("Could not get 2D context");s.drawImage(e,t,n,r,i,0,0,r,i);const a=q(o);window.parent.postMessage({type:"SCREENSHOT_RESULT",dataUrl:a},"*"),this.log(`Area screenshot captured: ${Math.round(r)}x${Math.round(i)}`)},s=e=>{this.log(`Area screenshot failed: ${e}`,"error"),window.parent.postMessage({type:"SCREENSHOT_RESULT",error:String(e)},"*")};if(this.needsRafCapture(e))this.isPaused&&window.__GAME_STATE__&&(window.__GAME_STATE__.isPaused=!1),this.scheduleFrame(()=>{try{o()}catch(e){s(e)}finally{this.isPaused&&window.__GAME_STATE__&&(window.__GAME_STATE__.isPaused=!0)}});else try{o()}catch(e){s(e)}}needsRafCapture(e){const t=e.getContext("webgl2",{failIfMajorPerformanceCaveat:!1})||e.getContext("webgl",{failIfMajorPerformanceCaveat:!1});if(t){const e=t.getContextAttributes();return!(!e||e.preserveDrawingBuffer)}return!e.getContext("2d")}captureObjectScreenshot(e,t){try{const n=e.getBoundingClientRect(),r=e.width/n.width,i=e.height/n.height,o=Math.max(8,.1*t.width)*r,s=Math.max(8,.1*t.height)*i,a=Math.max(0,t.x*r-o),l=Math.max(0,t.y*i-s),c=Math.min(e.width-a,t.width*r+2*o),u=Math.min(e.height-l,t.height*i+2*s);if(c<4||u<4)return;const h=document.createElement("canvas");h.width=c,h.height=u;const d=h.getContext("2d");if(!d)return;return d.drawImage(e,a,l,c,u,0,0,c,u),h.toDataURL("image/png")}catch{return}}sendSceneTree(e="FUNPIXEL_TREE"){const t=this.buildSceneTree(),n=this.domInspector.buildDomTree(),r=[];if(t&&r.push({...t,layer:"canvas"}),n.length>0&&r.push({name:"UI Layer",type:"overlay",layer:"hud",children:n}),r.length>0){const t={name:"Game",type:"root",children:r};this.messages.send({type:e,tree:t})}}pause(){if(!this.isPaused){if(!this.isSceneReady())return this.log("Scene not ready yet, will pause when ready"),this.pendingPause=!0,void this.showInitOverlay();this.pendingPause=!1,this.isPaused=!0,window.__GAME_STATE__&&(window.__GAME_STATE__.isPaused=!0),this.showInitOverlay(),this.canvasHighlighter.create(this.getCanvas()),this.domHighlighter.create(),this.createInputShield(),document.addEventListener("click",this.boundHandleClick,!0),document.addEventListener("mousemove",this.boundHandleMouseMove,!0),window.addEventListener("keydown",this.boundHandleKeyDown,!0),document.addEventListener("mouseout",this.boundHandleMouseOut,!0),this.renderOverlay(),this.messages.send({type:"GAME_PAUSED"}),setTimeout(()=>this.hideInitOverlay(),50),this.log("Paused - Click objects to inspect")}}resume(){if(!this.isPaused)return;this.isPaused=!1,this.hideInitOverlay(),window.__GAME_STATE__&&(window.__GAME_STATE__.isPaused=!1),this.removeInputShield(),document.removeEventListener("click",this.boundHandleClick,!0),document.removeEventListener("mousemove",this.boundHandleMouseMove,!0),window.removeEventListener("keydown",this.boundHandleKeyDown,!0),document.removeEventListener("mouseout",this.boundHandleMouseOut,!0);const e=this.getCanvas();e&&(e.style.cursor="default"),this.selectedObject=null,this.hoveredObject=null,this.isDomSelection=!1,this.canvasHighlighter.remove(),this.domHighlighter.remove(),this.messages.send({type:"GAME_RESUMED"}),this.log("Resumed")}clearSelection(){this.isPaused&&(this.selectedObject=null,this.hoveredObject=null,this.isDomSelection=!1,this.domHighlighter.clearSelection(),this.renderOverlay(),this.messages.send({type:"OBJECT_DESELECTED"}),this.log("Selection cleared"))}handleClick(e){if(!this.isPaused)return;e.stopPropagation(),e.preventDefault();const t=this.domInspector.findComponentAt(e.clientX,e.clientY);if(this.log(`handleClick(${Math.round(e.clientX)},${Math.round(e.clientY)}): domHit=${t?t.name:"null"}`),t){this.selectedObject=t.element,this.isDomSelection=!0;const n=this.domInspector.getComponentMetadata(t.element,this.getCanvas());return this.canvasHighlighter.clear(),this.domHighlighter.clearHover(),this.domHighlighter.showSelection(t.element,t.name),this.messages.send({type:"OBJECT_SELECTED",metadata:n,clickX:e.clientX,clickY:e.clientY}),void this.log(`Selected HUD: ${t.name}`)}this.isDomSelection=!1,this.domHighlighter.clearSelection();const n=this.findObjectsAt(e.clientX,e.clientY);if(n.length>0){const t=n[0];this.selectedObject=t.obj;const r=this.getObjectMetadata(t.obj),i=this.getCanvas(),o=i?this.getObjectBounds(t.obj):null,s=!!(o&&o.width>0&&o.height>0),a=async n=>{const i=await this.enrichMetadata(t.obj,r);this.messages.send({type:"OBJECT_SELECTED",metadata:i,clickX:e.clientX,clickY:e.clientY,screenshot:n}),this.log(`Selected: ${i.type}`)};if(i&&s&&this.needsRafCapture(i))window.__GAME_STATE__&&(window.__GAME_STATE__.isPaused=!1),this.scheduleFrame(()=>{let e;try{e=this.captureObjectScreenshot(i,o)}catch{}finally{window.__GAME_STATE__&&(window.__GAME_STATE__.isPaused=!0)}a(e)});else{const e=i&&s?this.captureObjectScreenshot(i,o):void 0;a(e)}}else this.selectedObject=null,this.messages.send({type:"OBJECT_DESELECTED"});this.renderOverlay()}handleMouseMove(e){if(!this.isPaused)return;e.stopPropagation();const t=performance.now();if(t-this.lastMouseMoveTime<32)return;this.lastMouseMoveTime=t;const n=this.getCanvas(),r=this.domInspector.findComponentAt(e.clientX,e.clientY);if(r){this.hoveredObject=r.element,this.domHighlighter.clearHover();return this.isDomSelection&&this.selectedObject===r.element||this.domHighlighter.showHover(r.element,r.name),document.body.style.cursor="pointer",void(this.isDomSelection||this.canvasHighlighter.clear())}this.domHighlighter.clearHover();const i=this.findObjectsAt(e.clientX,e.clientY);i.length>0?(this.hoveredObject=i[0].obj,n&&(n.style.cursor="pointer"),document.body.style.cursor="pointer"):(this.hoveredObject=null,n&&(n.style.cursor="default"),document.body.style.cursor="default"),this.renderOverlay()}handleMouseOut(e){this.isPaused&&null===e.relatedTarget&&(this.domHighlighter.clearHover(),this.hoveredObject=null,this.canvasHighlighter.clear(),this.renderOverlay())}handleKeyDown(e){this.isPaused&&(e.stopPropagation(),e.preventDefault(),"Escape"===e.key&&this.selectedObject&&(this.selectedObject=null,this.isDomSelection=!1,this.domHighlighter.clear(),this.messages.send({type:"OBJECT_DESELECTED"}),this.renderOverlay()))}showInitOverlay(){this.hideInitOverlay();const e=document.querySelector(".funpixel-shell")||document.body,t=document.createElement("div");t.id="funpixel-inspector-init",t.style.cssText="\n position: absolute;\n inset: 0;\n z-index: 100000;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(10, 10, 15, 0.35);\n backdrop-filter: blur(1px);\n -webkit-backdrop-filter: blur(1px);\n transition: opacity 0.2s ease;\n opacity: 1;\n ";const n=document.createElement("div");n.style.cssText="\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 20px;\n background: rgba(18, 18, 26, 0.92);\n border: 1px solid rgba(255, 255, 255, 0.08);\n border-radius: 24px;\n backdrop-filter: blur(12px);\n -webkit-backdrop-filter: blur(12px);\n box-shadow: 0 4px 24px rgba(0, 0, 0, 0.4), 0 0 40px rgba(0, 240, 255, 0.08);\n color: rgba(255, 255, 255, 0.65);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n font-size: 12px;\n font-weight: 500;\n ";const r=document.createElement("div");if(r.innerHTML='<div class="funpixel-morph-logo" style="width:24px;height:24px">\n <svg class="funpixel-morph-logo__ring" viewBox="0 0 512 512" fill="none"><path d="M 256 460 C 245 450, 120 380, 80 300 C 45 230, 55 145, 100 105 C 145 65, 200 75, 230 100 C 248 115, 254 140, 256 160 C 258 140, 264 115, 282 100 C 312 75, 367 65, 412 105 C 457 145, 467 230, 432 300 C 392 380, 267 450, 256 460 Z" fill="none" stroke="#00f0ff" stroke-width="3"/></svg>\n <svg class="funpixel-morph-logo__ring funpixel-morph-logo__ring--delayed" viewBox="0 0 512 512" fill="none"><path d="M 256 460 C 245 450, 120 380, 80 300 C 45 230, 55 145, 100 105 C 145 65, 200 75, 230 100 C 248 115, 254 140, 256 160 C 258 140, 264 115, 282 100 C 312 75, 367 65, 412 105 C 457 145, 467 230, 432 300 C 392 380, 267 450, 256 460 Z" fill="none" stroke="#00f0ff" stroke-width="3"/></svg>\n <svg class="funpixel-morph-logo__svg" viewBox="0 0 512 512" fill="none">\n <path class="funpixel-morph-logo__body" d="M 256 325 C 244 335, 204 380, 170 365 C 125 340, 92 300, 92 245 C 92 175, 115 140, 165 140 C 210 140, 240 140, 256 140 C 272 140, 302 140, 347 140 C 397 140, 420 175, 420 245 C 420 300, 387 340, 342 365 C 308 380, 268 335, 256 325 Z" fill="#00f0ff"/>\n <g class="funpixel-morph-logo__eye-left"><rect x="145" y="190" width="16" height="56" rx="3" fill="rgba(0,0,0,0.45)"/><rect x="125" y="210" width="56" height="16" rx="3" fill="rgba(0,0,0,0.45)"/></g>\n <path class="funpixel-morph-logo__eye-right" d="M320 198 L362 223 L320 248 Z" fill="rgba(0,0,0,0.45)" stroke="rgba(0,0,0,0.45)" stroke-width="8" stroke-linejoin="round"/>\n <path class="funpixel-morph-logo__smile" d="M 188 280 Q 244 325, 300 280" stroke="rgba(0,0,0,0.45)" stroke-width="14" stroke-linecap="round" fill="none"/>\n </svg>\n </div>',!document.getElementById("funpixel-morph-style")){const e=document.createElement("style");e.id="funpixel-morph-style",e.textContent='\n .funpixel-morph-logo { position: relative; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }\n .funpixel-morph-logo__svg { width: 100%; height: 100%; position: relative; z-index: 2; overflow: visible; filter: drop-shadow(0 0 4px rgba(0,240,255,0.3)); }\n .funpixel-morph-logo__ring { position: absolute; top: 50%; left: 50%; width: 110%; height: 110%; transform: translate(-50%,-50%) scale(1); opacity: 0; pointer-events: none; z-index: 1; overflow: visible; animation: funpixel-morph-ring 10s ease-out infinite; }\n .funpixel-morph-logo__ring--delayed { animation-delay: 0.4s; }\n .funpixel-morph-logo__body { animation: funpixel-morph-body 10s ease-in-out infinite; }\n .funpixel-morph-logo__smile { animation: funpixel-morph-smile 10s ease-in-out infinite; }\n .funpixel-morph-logo__eye-left { animation: funpixel-morph-eyeL 10s ease-in-out infinite; }\n .funpixel-morph-logo__eye-right { animation: funpixel-morph-eyeR 10s ease-in-out infinite; }\n @keyframes funpixel-morph-body {\n 0%,25% { d: path("M 256 325 C 244 335, 204 380, 170 365 C 125 340, 92 300, 92 245 C 92 175, 115 140, 165 140 C 210 140, 240 140, 256 140 C 272 140, 302 140, 347 140 C 397 140, 420 175, 420 245 C 420 300, 387 340, 342 365 C 308 380, 268 335, 256 325 Z"); }\n 40%,60% { d: path("M 256 460 C 245 450, 120 380, 80 300 C 45 230, 55 145, 100 105 C 145 65, 200 75, 230 100 C 248 115, 254 140, 256 160 C 258 140, 264 115, 282 100 C 312 75, 367 65, 412 105 C 457 145, 467 230, 432 300 C 392 380, 267 450, 256 460 Z"); }\n 72% { d: path("M 256 328 C 244 338, 206 378, 172 362 C 122 338, 86 298, 86 245 C 86 172, 110 138, 162 138 C 208 138, 238 138, 256 138 C 274 138, 304 138, 350 138 C 402 138, 426 172, 426 245 C 426 298, 390 338, 340 362 C 306 378, 268 338, 256 328 Z"); }\n 78%,100% { d: path("M 256 325 C 244 335, 204 380, 170 365 C 125 340, 92 300, 92 245 C 92 175, 115 140, 165 140 C 210 140, 240 140, 256 140 C 272 140, 302 140, 347 140 C 397 140, 420 175, 420 245 C 420 300, 387 340, 342 365 C 308 380, 268 335, 256 325 Z"); }\n }\n @keyframes funpixel-morph-smile {\n 0%,25% { d: path("M 188 280 Q 244 325, 300 280"); }\n 40%,60% { d: path("M 160 330 Q 256 400, 352 330"); }\n 75%,100% { d: path("M 188 280 Q 244 325, 300 280"); }\n }\n @keyframes funpixel-morph-eyeL { 0%,25% { transform: translate(0,0); } 40%,60% { transform: translate(12px,-40px); } 75%,100% { transform: translate(0,0); } }\n @keyframes funpixel-morph-eyeR { 0%,25% { transform: translate(0,0); } 40%,60% { transform: translate(4px,-40px); } 75%,100% { transform: translate(0,0); } }\n @keyframes funpixel-morph-ring {\n 0%,42% { transform: translate(-50%,-50%) scale(1); opacity: 0; }\n 44% { transform: translate(-50%,-50%) scale(1); opacity: 0.3; }\n 65% { transform: translate(-50%,-50%) scale(1.6); opacity: 0; }\n 100% { transform: translate(-50%,-50%) scale(1.6); opacity: 0; }\n }\n ',document.head.appendChild(e)}n.appendChild(r),n.appendChild(document.createTextNode("Setting up inspector…")),t.appendChild(n),e.appendChild(t),this.initOverlay=t}hideInitOverlay(){const e=this.initOverlay;e&&(this.initOverlay=null,e.style.opacity="0",setTimeout(()=>e.remove(),200))}createInputShield(){this.removeInputShield();const e=document.querySelector(".funpixel-shell")||document.body,t=document.createElement("div");t.id="funpixel-inspector-shield",t.style.cssText="\n position: absolute;\n top: 0; left: 0; right: 0; bottom: 0;\n z-index: 99998;\n cursor: crosshair;\n ",t.addEventListener("pointerdown",e=>{e.stopPropagation(),e.preventDefault()},!0),t.addEventListener("pointerup",e=>{e.stopPropagation(),e.preventDefault()},!0),t.addEventListener("touchstart",e=>{e.stopPropagation(),e.preventDefault()},{capture:!0,passive:!1}),t.addEventListener("touchmove",e=>{e.stopPropagation(),e.preventDefault()},{capture:!0,passive:!1}),t.addEventListener("touchend",e=>{e.stopPropagation(),e.preventDefault()},!0),t.addEventListener("mousedown",e=>{e.stopPropagation(),e.preventDefault()},!0),t.addEventListener("mouseup",e=>{e.stopPropagation(),e.preventDefault()},!0),t.addEventListener("contextmenu",e=>{e.stopPropagation(),e.preventDefault()},!0),e.appendChild(t),this.inputShield=t}removeInputShield(){this.inputShield&&(this.inputShield.remove(),this.inputShield=null)}renderOverlay(){const e=[],t=this.isDomSelection||this.selectedObject instanceof Element?null:this.selectedObject,n=this.hoveredObject instanceof Element?null:this.hoveredObject;if(t){const n=this.getObjectBounds(t);if(n){const r=this.getObjectMetadata(t);e.push({bounds:n,label:r.type||"Unknown",isSelected:!0})}}if(n&&n!==t){const t=this.getObjectBounds(n);if(t){const r=this.getObjectMetadata(n);e.push({bounds:t,label:r.type,isHovered:!0})}}this.canvasHighlighter.render(e)}exposeGlobalAPI(){window.__funpixelInspector={pause:()=>this.pause(),resume:()=>this.resume(),isPaused:()=>this.isPaused,getSelected:()=>this.selectedObject,getTracked:()=>this.tracker.objects,agent:{version:1,engine:this.engineType,ready:()=>this.sceneReady,at:(e,t,n=6)=>this.agentAt(e,t,n),named:(e,t=10)=>this.agentNamed(e,t),tree:()=>this.buildSceneTree(),errors:async()=>(await this.errorTracker.settled(),this.errorTracker.getErrors().map(e=>({...e}))),resolve:e=>this.sourceMapResolver.resolve(e)}}}async agentHit(e,t){const n="hud"===t?this.domInspector.getComponentMetadata(e,this.getCanvas()):this.getObjectMetadata(e),r=await this.enrichMetadata(e,n),i=e,o=[i.label,i.name,i.__n,r.type].find(e=>"string"==typeof e&&e)??r.type,s=function(e,t=24){if(!e||"object"!=typeof e||Array.isArray(e))return;const n=e=>"string"==typeof e?e.slice(0,200):"boolean"==typeof e||"number"==typeof e&&Number.isFinite(e)?e:void 0,r={};for(const[i,o]of Object.entries(e)){if(Object.keys(r).length>=t)break;const e=n(o);if(void 0===e){if(Array.isArray(o)&&o.length<=16){const e=o.map(n);e.every(e=>void 0!==e)&&(r[i]=e)}}else r[i]=e}return Object.keys(r).length?r:void 0}(i.userData);return s?{kind:t,name:o,metadata:r,data:s}:{kind:t,name:o,metadata:r}}async agentAt(e,t,n){const r=[],i=this.domInspector.findComponentAt(e,t);i&&r.push(await this.agentHit(i.element,"hud"));const o=new Set;for(const i of this.findObjectsAt(e,t)){if(r.length>=n)break;o.has(i.obj)||(o.add(i.obj),r.push(await this.agentHit(i.obj,"object")))}return r}async agentNamed(e,t){const n=e.toLowerCase(),r=[[],[],[]],i=new Set;this.forEachSceneObject(t=>{if(i.has(t))return;i.add(t);const o=t,s=[o.label,o.name].filter(e=>"string"==typeof e&&""!==e),a="string"==typeof o.__n?o.__n:"";s.includes(e)?r[0].push(t):a===e?r[1].push(t):[...s,a].some(e=>e&&e.toLowerCase().includes(n))&&r[2].push(t)});const o=r.flat().slice(0,t),s=[];for(const e of o)s.push(await this.agentHit(e,"object"));return s}async enrichMetadata(e,t){const n=e?.__src;if(!n)return t;if(null==t.sourceColumn&&(t.sourceColumn=n.c||null),!t.sourceFile)try{const e=new URL(n.f).pathname;t.sourceFile=e.split("/").pop()||e}catch{t.sourceFile=n.f}t.sourceLine||(t.sourceLine=n.l);try{const e=await this.sourceMapResolver.resolve(n);e&&(t.originalSource=e.source,t.originalLine=e.line,t.originalSourceLine=e.sourceLine||null)}catch{}return t}log(e,t="log"){(this.config.debug||"log"!==t)&&console[t](`[Funpixel Inspector] ${e}`)}destroy(){this.resume(),this.domHighlighter.remove(),this.errorTracker.destroy(),this.consoleLogTracker.destroy(),this.messages.destroy(),delete window.__funpixelInspector}}const K=e=>"string"==typeof e&&""!==e?e.slice(0,120):void 0;function Q(e){if(!e||"object"!=typeof e)return;const t=K(e.label)??K(e.source?.label)??function(e){if(!e||"object"!=typeof e)return;const t=e;return K(t.currentSrc)??K(t.src)}(e.source?.resource);return"EMPTY"===t?void 0:function(e){const t=K("string"==typeof e?e.trim():e);if(!t)return;if(/^(data|blob):/i.test(t))return"embedded";const n=t.split(/[?#]/)[0].replace(/\/+$/,""),r=n.slice(n.lastIndexOf("/")+1);if(r)try{return decodeURIComponent(r)}catch{return r}}(t)}function Z(e,t){const n=K(e?.label);if(n)return n;const r=e?.constructor?.name,i="string"==typeof r?r.replace(/^_+/,""):"";return i.length>2?i.slice(0,120):t}function ee(e){const t=e,n={};if(!t||"object"!=typeof t)return n;"boolean"==typeof t.visible&&(n.active=function(e,t){let n=e;for(let e=0;n&&e<64;e++,n=n.parent)if(!t(n))return!1;return!0}(t,e=>!0!==e.destroyed&&!1!==e.visible&&!1!==e.renderable));const r=function(e){if("number"==typeof e&&Number.isFinite(e))return"#"+(16777215&Math.trunc(e)).toString(16).padStart(6,"0")}(t.tint);r&&(n.tint=r);const i=Q(t.texture);i&&(n.texture=i);const o=[];if(Array.isArray(t.filters))for(const e of t.filters.slice(0,16)){if(!e||"object"!=typeof e)continue;const t=e.enabled;o.push("boolean"==typeof t?{name:Z(e,"Filter"),enabled:t}:{name:Z(e,"Filter")})}return t.mask&&"object"==typeof t.mask&&o.length<16&&o.push({name:"Mask"}),o.length&&(n.components=o),n}class te extends Y{engineType="pixi";app=null;stage=null;hooksInstalled=!1;constructor(e){super(e),this.init()}findObjectsAt(e,t){const n=this.findPixiApp();if(!n||!n.stage)return this.log("findObjectsAt: No PIXI app/stage found"),[];const r=this.getCanvas();if(!r)return this.log("findObjectsAt: No canvas found"),[];const i=r.getBoundingClientRect(),o=n.renderer?.resolution||1,s=(e-i.left)*(r.width/i.width)/o,a=(t-i.top)*(r.height/i.height)/o,l=[],c=r.width/o*(r.height/o),u=(e,t=0)=>{if(e.visible&&!(t>20)){if(e.children)for(let n=e.children.length-1;n>=0;n--)u(e.children[n],t+1);if(this.tracker.has(e)&&this.hitTest(e,s,a)){const n=this.getObjectBoundsInternal(e);if(!n)return;const r=n.width*n.height,i=this.detectLayerPriority(e,n,c);l.push({obj:e,layer:i,depth:t,area:r,zIndex:e.zIndex||0})}}};return u(n.stage,0),this.log(`findObjectsAt(${Math.round(s)},${Math.round(a)}): ${l.length} candidates from scene tree`),l.sort((e,t)=>{if(e.layer!==t.layer)return t.layer-e.layer;const n=e.zIndex||0,r=t.zIndex||0;if(n!==r)return r-n;const i=e.depth||0,o=t.depth||0;if(i!==o)return o-i;return(e.area||0)-(t.area||0)}),l}getObjectMetadata(e){const t=e,n=this.tracker.get(t);let r={x:0,y:0,width:0,height:0};try{const e=t.getBounds();r={x:e.x,y:e.y,width:e.width,height:e.height}}catch{}const i={x:t.position.x,y:t.position.y},o={rotation:t.rotation},s={x:t.scale.x,y:t.scale.y};return{type:t.label||n?.type||t.constructor.name,typeName:t.constructor.name,layer:this.detectLayerPriority(t,r,this.getCanvas()?.width||800*(this.getCanvas()?.height||600)),position:i,rotation:o,scale:s,alpha:t.alpha,visible:t.visible,childCount:t.children?.length||0,bounds:r,parentLabel:t.parent?.label||"Stage",sourceFile:n?.source?.file||null,sourceLine:n?.source?.line||null,sourceColumn:n?.source?.column||null,sourceLineRange:n?.source?.line?this.stackParser.getCodeRange(n.source.line):null,...ee(t)}}hookConstructors(){const e=this.tracker,t=this.stackParser,n=window.__FUNPIXEL_TRACK_BUFFER__;if(n&&Array.isArray(n)){for(const t of n)e.track(t.obj,t.type,null);this.log(`Drained ${n.length} buffered objects from early registration`),delete window.__FUNPIXEL_TRACK_BUFFER__}window.__FUNPIXEL_TRACK__=(n,r)=>{const i=t.parse();e.track(n,r,i)},void 0===window.PIXI||this.hooksInstalled||(this.hooksInstalled=!0,this.hookPixiConstructors(window.PIXI))}hookPixiConstructors(e){const t=this.tracker,n=this.stackParser,r=this.inferObjectType.bind(this);try{const i=Object.getOwnPropertyDescriptor(e,"Container");if(i&&!i.writable&&!i.configurable)return void this.log("PIXI module is frozen - relying on hooked bundle __FUNPIXEL_TRACK__ hooks");const o=e.Container;e.Container=function(...e){const i=Reflect.construct(o,e,new.target||o),s=n.parse();return t.track(i,r(i),s),i},e.Container.prototype=o.prototype,Object.setPrototypeOf(e.Container,o);const s=e.Sprite;e.Sprite=function(...e){const r=Reflect.construct(s,e,new.target||s),i=n.parse(),o=r.label||r.texture?.label||"sprite";return t.track(r,o,i),r},e.Sprite.prototype=s.prototype,Object.setPrototypeOf(e.Sprite,s);const a=e.Graphics;e.Graphics=function(...e){const r=Reflect.construct(a,e,new.target||a),i=n.parse();return t.track(r,r.label||"graphics",i),r},e.Graphics.prototype=a.prototype,Object.setPrototypeOf(e.Graphics,a);const l=e.Text;e.Text=function(...e){const r=Reflect.construct(l,e,new.target||l),i=n.parse();return t.track(r,r.label||"text",i),r},e.Text.prototype=l.prototype,Object.setPrototypeOf(e.Text,l);const c=e.AnimatedSprite;e.AnimatedSprite=function(...e){const r=Reflect.construct(c,e,new.target||c),i=n.parse();return t.track(r,r.label||"animated_sprite",i),r},e.AnimatedSprite.prototype=c.prototype,Object.setPrototypeOf(e.AnimatedSprite,c),this.log("PixiJS runtime hooks installed (fallback mode)")}catch(e){this.log(`Cannot hook PIXI constructors (frozen module): ${e}`,"warn")}}isSceneReady(){const e=this.findPixiApp();if(e&&e.stage)return!0;return!!this.findGameCanvas()}getCanvas(){return this.findGameCanvas()}getObjectBounds(e){return this.getObjectBoundsInternal(e)}buildSceneTree(){const e=this.findPixiApp();return e?.stage?this.buildNodeTree(e.stage,0):null}onSceneReady(){if(this.app=this.findPixiApp(),this.stage=this.app?.stage||null,this.stage){const e=this.retroactiveTrack(this.stage,0);e>0&&this.log(`Retroactively tracked ${e} scene objects`),this.log(`Stage ready: ${this.tracker.getCount()} tracked objects`)}else this.log("No explicit stage found, using canvas-based detection");super.onSceneReady()}retroactiveTrack(e,t){if(t>15)return 0;let n=0;if(!this.tracker.has(e)){const t=e.label||e.constructor?.name||"container";this.tracker.track(e,t,null),n++}if(e.children)for(const r of e.children)n+=this.retroactiveTrack(r,t+1);return n}tickerWasRunning=!1;pause(){const e=this.app||this.findPixiApp();e?.ticker&&(this.tickerWasRunning=e.ticker.started,this.tickerWasRunning&&(e.ticker.stop(),this.log("PIXI ticker stopped")));const t=e?.stage||this.stage;if(t){const e=this.retroactiveTrack(t,0);e>0&&this.log(`Tracked ${e} new objects at pause time`),this.log(`Total tracked: ${this.tracker.getCount()} objects`)}super.pause()}resume(){super.resume();const e=this.app||this.findPixiApp();e?.ticker&&this.tickerWasRunning&&(e.ticker.start(),this.log("PIXI ticker restarted"))}findPixiApp(){if(window.__PIXI_APP__)return window.__PIXI_APP__;const e=window;if(e.app&&this.isPixiApp(e.app))return e.app;if(e.game&&this.isPixiApp(e.game))return e.game;if(e.pixiApp&&this.isPixiApp(e.pixiApp))return e.pixiApp;if(window.PIXI){const e=window.PIXI;if(e.app&&this.isPixiApp(e.app))return e.app}for(const t in window)try{const n=e[t];if(n&&this.isPixiApp(n))return n}catch{}return null}isPixiApp(e){if(!e||"object"!=typeof e)return!1;const t=e;return!!(t.stage&&t.renderer&&t.ticker)}findGameCanvas(){const e=document.querySelectorAll("canvas");for(const t of e){const e=t;if(e.__pixi_app||e.__PIXI_APP__||t.getAttribute("data-pixi"))return t}return e[0]||null}hitTest(e,t,n){const r=this.getObjectBoundsInternal(e);return!!r&&(0!==r.width&&0!==r.height&&(t>=r.x&&t<=r.x+r.width&&n>=r.y&&n<=r.y+r.height))}getObjectBoundsInternal(e){try{if("function"==typeof e.getBounds){const t=e.getBounds();return{x:t.x,y:t.y,width:t.width,height:t.height}}}catch{}return null}detectLayerPriority(e,t,n){if("number"==typeof e.funpixelLayer)return e.funpixelLayer;const r=t.width*t.height;return r>.5*n?50:r<2e3?500:200}inferObjectType(e){if(e.label&&""!==e.label.trim())return e.label;if(e.parent?.label){const t=e.parent.label.toLowerCase();if(t.includes("player"))return"Player";if(t.includes("enemy"))return"Enemy";if(t.includes("car"))return"Car";if(t.includes("bot"))return"Bot"}return e.constructor.name}buildNodeTree(e,t){if(!e||t>15)return null;const n=[];if(e.children)for(const r of e.children){const e=this.buildNodeTree(r,t+1);e&&n.push(e)}return{name:e.label||e.constructor.name,type:e.constructor.name,children:n}}findObjectByName(e){const t=(this.app||this.findPixiApp())?.stage||this.stage;return t?this.resolveObject(e,t):null}forEachSceneObject(e){const t=(this.app||this.findPixiApp())?.stage,n=(t,r)=>{if(!(r>30)){e(t);for(const e of t.children||[])n(e,r+1)}};t&&n(t,0)}focusOnObject(e){const t=this.app||this.findPixiApp(),n=t?.stage||this.stage;if(!t||!n||"function"!=typeof t.renderer?.render)return void this.log("focusOnObject: pixi refs unavailable");const r=this.resolveObject(e,n);if(!r)return void this.log(`focusOnObject: "${e}" not found on stage`);const i=r.getBounds();if(!i||i.width<=0||i.height<=0)return void this.log(`focusOnObject: "${e}" has empty bounds`);const o=t.renderer.width,s=t.renderer.height,a=i.x+i.width/2,l=i.y+i.height/2,c=Math.min(.55*o/i.width,.55*s/i.height),u=n.scale.x||1,h=Math.max(.2,Math.min(u*c,3*u)),d=h/u,p=n.position.x,g=n.position.y,f={x:o/2-d*(a-p),y:s/2-d*(l-g)},m="function"==typeof window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,y=(e,r,i)=>{n.position.x=e,n.position.y=r,n.scale.x=i,n.scale.y=i,t.renderer.render(n)};if(m)return void y(f.x,f.y,h);let v=0;const _=e=>{v||(v=e);const t=Math.min(1,(e-v)/420),n=(e=>e<.5?2*e*e:1-Math.pow(-2*e+2,2)/2)(t);y(p+(f.x-p)*n,g+(f.y-g)*n,u+(h-u)*n),t<1&&window.requestAnimationFrame(_)};window.requestAnimationFrame(_),this.log(`focusOnObject: framing "${r.label||r.name||r.constructor.name}"`)}resolveObject(e,t){const n=this.selectedObject;if(n&&"object"==typeof n&&"getBounds"in n&&(n.label===e||n.name===e))return n;let r=null;const i=t=>{if(!r)if(t.label!==e&&t.name!==e)for(const e of t.children)i(e);else r=t};return i(t),r}}if("undefined"!=typeof window&&!window.__FUNPIXEL_TRACK__){const e=[];window.__FUNPIXEL_TRACK_BUFFER__=e,window.__FUNPIXEL_TRACK__=(t,n)=>{e.push({obj:t,type:n})}}function ne(){new te({debug:!0})}return"loading"===document.readyState?document.addEventListener("DOMContentLoaded",ne):ne(),e.PixiInspector=te,e}({});