@pix3/cli 1.6.0 → 1.6.3

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 (126) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +788 -754
  3. package/dist/index.js +208 -203
  4. package/dist/runtime-types.json +1 -1
  5. package/dist/smoke/prebuilt/{chunk-J2SJVMDO.mjs → chunk-CBFYKDS7.mjs} +1 -1
  6. package/dist/smoke/prebuilt/chunk-VJHJ5BCO.mjs +239 -0
  7. package/dist/smoke/prebuilt/runtime.mjs +1 -1
  8. package/dist/smoke/prebuilt/smoke-worker.mjs +1 -1
  9. package/dist/smoke/prebuilt/tree-defaults.mjs +1 -1
  10. package/dist/validate/prebuilt/bundle-main.js +13 -13
  11. package/dist/validate/prebuilt/chunk-CFQFEI52.js +239 -0
  12. package/dist/validate/prebuilt/runtime.js +1 -1
  13. package/kit/files/.claude/skills/pix3-nodes/SKILL.md +210 -210
  14. package/kit/files/.claude/skills/pix3-nodes/reference.md +39 -24
  15. package/kit/files/.claude/skills/pix3-scene-format/SKILL.md +238 -235
  16. package/kit/files/.claude/skills/pix3-scene-format/reference.md +43 -28
  17. package/kit/files/.claude/skills/pix3-scripts/SKILL.md +285 -281
  18. package/kit/files/.claude/skills/pix3-scripts/reference.md +69 -52
  19. package/kit/files/.claude/skills/pix3-verify/SKILL.md +298 -256
  20. package/kit/files/.claude/skills/pix3-verify/reference.md +21 -21
  21. package/kit/files/AGENTS.md +203 -203
  22. package/kit/files/CLAUDE.md +1 -1
  23. package/kit/kit.json +2 -2
  24. package/package.json +54 -54
  25. package/templates/empty-2d/files/README.md +20 -20
  26. package/templates/empty-2d/files/scenes/main.pix3scene +68 -68
  27. package/templates/empty-2d/template.yaml +7 -7
  28. package/templates/empty-3d/files/README.md +20 -20
  29. package/templates/empty-3d/files/scenes/main.pix3scene +108 -108
  30. package/templates/empty-3d/template.yaml +7 -7
  31. package/templates/idea-blank/files/README.md +22 -22
  32. package/templates/idea-blank/files/scenes/main.pix3scene +37 -37
  33. package/templates/idea-blank/template.yaml +10 -10
  34. package/templates/minigame-2d/files/README.md +44 -44
  35. package/templates/minigame-2d/files/design/tests/reachability.json +1 -1
  36. package/templates/minigame-2d/files/design/tests/routines/mute-music.json +44 -44
  37. package/templates/minigame-2d/files/scenes/main.pix3scene +84 -84
  38. package/templates/minigame-2d/files/scenes/menu.pix3scene +118 -118
  39. package/templates/minigame-2d/files/scenes/ui/settings-window.pix3scene +138 -138
  40. package/templates/minigame-2d/files/scripts/GameFlow.ts +133 -133
  41. package/templates/minigame-2d/files/scripts/MenuFlow.ts +217 -217
  42. package/templates/minigame-2d/files/scripts/SettingsWindow.ts +198 -198
  43. package/templates/minigame-2d/template.yaml +10 -10
  44. package/templates/playable-2d/files/README.md +30 -30
  45. package/templates/playable-2d/files/design/recipe.md +83 -83
  46. package/templates/playable-2d/files/design/tests/reachability.json +4 -4
  47. package/templates/playable-2d/files/design/tests/routines/intro-to-cta.json +32 -32
  48. package/templates/playable-2d/files/scenes/main.pix3scene +111 -111
  49. package/templates/playable-2d/files/scenes/ui/end-screen.pix3scene +91 -91
  50. package/templates/playable-2d/files/scenes/ui/intro.pix3scene +65 -65
  51. package/templates/playable-2d/files/scripts/GameFlow.ts +256 -256
  52. package/templates/playable-2d/template.yaml +9 -9
  53. package/templates/playable-3d/files/README.md +32 -32
  54. package/templates/playable-3d/files/design/recipe.md +127 -127
  55. package/templates/playable-3d/files/design/tests/reachability.json +4 -4
  56. package/templates/playable-3d/files/design/tests/routines/intro-to-cta.json +32 -32
  57. package/templates/playable-3d/files/scenes/main.pix3scene +230 -230
  58. package/templates/playable-3d/files/scenes/ui/end-screen.pix3scene +91 -91
  59. package/templates/playable-3d/files/scenes/ui/intro.pix3scene +65 -65
  60. package/templates/playable-3d/files/scripts/GameFlow.ts +309 -309
  61. package/templates/playable-3d/files/scripts/GameRules.ts +290 -290
  62. package/templates/playable-3d/files/scripts/ScoreHud.ts +113 -113
  63. package/templates/playable-3d/template.yaml +9 -9
  64. package/templates/recipe-arena-2d/files/README.md +48 -48
  65. package/templates/recipe-arena-2d/files/design/recipe.md +127 -127
  66. package/templates/recipe-arena-2d/files/scenes/main.pix3scene +292 -292
  67. package/templates/recipe-arena-2d/files/scenes/menu.pix3scene +100 -100
  68. package/templates/recipe-arena-2d/files/scenes/prefabs/hazard.pix3scene +42 -42
  69. package/templates/recipe-arena-2d/files/scenes/prefabs/pickup.pix3scene +45 -45
  70. package/templates/recipe-arena-2d/files/scenes/ui/result.pix3scene +85 -85
  71. package/templates/recipe-arena-2d/files/scripts/GameRules.ts +368 -368
  72. package/templates/recipe-arena-2d/files/scripts/MenuFlow.ts +106 -106
  73. package/templates/recipe-arena-2d/files/scripts/PlayerController.ts +151 -151
  74. package/templates/recipe-arena-2d/files/scripts/ScoreHud.ts +94 -94
  75. package/templates/recipe-arena-2d/files/scripts/Spawner.ts +214 -214
  76. package/templates/recipe-arena-2d/files/scripts/TouchRules.ts +174 -174
  77. package/templates/recipe-arena-2d/template.yaml +10 -10
  78. package/templates/recipe-blank-2d/files/README.md +61 -61
  79. package/templates/recipe-blank-2d/files/design/recipe.md +148 -148
  80. package/templates/recipe-blank-2d/files/design/tests/reachability.json +4 -4
  81. package/templates/recipe-blank-2d/files/design/tests/routines/restart.json +27 -27
  82. package/templates/recipe-blank-2d/files/scenes/main.pix3scene +224 -224
  83. package/templates/recipe-blank-2d/files/scenes/ui/result.pix3scene +85 -85
  84. package/templates/recipe-blank-2d/files/scripts/GameRules.ts +350 -350
  85. package/templates/recipe-blank-2d/files/scripts/ScoreHud.ts +110 -110
  86. package/templates/recipe-blank-2d/template.yaml +10 -10
  87. package/templates/recipe-bouncer-2d/files/README.md +81 -81
  88. package/templates/recipe-bouncer-2d/files/design/recipe.md +146 -146
  89. package/templates/recipe-bouncer-2d/files/scenes/main.pix3scene +615 -615
  90. package/templates/recipe-bouncer-2d/files/scenes/menu.pix3scene +191 -191
  91. package/templates/recipe-bouncer-2d/files/scenes/ui/result.pix3scene +87 -87
  92. package/templates/recipe-bouncer-2d/files/scripts/BallBody.ts +298 -298
  93. package/templates/recipe-bouncer-2d/files/scripts/GameRules.ts +377 -377
  94. package/templates/recipe-bouncer-2d/files/scripts/MenuFlow.ts +109 -109
  95. package/templates/recipe-bouncer-2d/files/scripts/PaddleController.ts +112 -112
  96. package/templates/recipe-bouncer-2d/files/scripts/ScoreHud.ts +94 -94
  97. package/templates/recipe-bouncer-2d/files/scripts/TouchRules.ts +263 -263
  98. package/templates/recipe-bouncer-2d/files/scripts/ball-collision.ts +307 -307
  99. package/templates/recipe-bouncer-2d/template.yaml +10 -10
  100. package/templates/recipe-grid-3d/files/README.md +22 -22
  101. package/templates/recipe-grid-3d/files/design/recipe.md +110 -110
  102. package/templates/recipe-grid-3d/files/scenes/main.pix3scene +169 -169
  103. package/templates/recipe-grid-3d/files/scenes/menu.pix3scene +100 -100
  104. package/templates/recipe-grid-3d/files/scenes/ui/result.pix3scene +105 -105
  105. package/templates/recipe-grid-3d/files/scripts/GridBoard.ts +319 -319
  106. package/templates/recipe-grid-3d/files/scripts/GridRules.ts +278 -278
  107. package/templates/recipe-grid-3d/files/scripts/MenuFlow.ts +106 -106
  108. package/templates/recipe-grid-3d/files/scripts/ScoreHud.ts +94 -94
  109. package/templates/recipe-grid-3d/template.yaml +10 -10
  110. package/templates/recipe-tapper-2d/files/README.md +39 -39
  111. package/templates/recipe-tapper-2d/files/design/recipe.md +132 -132
  112. package/templates/recipe-tapper-2d/files/design/tests/reachability.json +4 -4
  113. package/templates/recipe-tapper-2d/files/design/tests/routines/terminal-retry.json +23 -23
  114. package/templates/recipe-tapper-2d/files/scenes/main.pix3scene +269 -269
  115. package/templates/recipe-tapper-2d/files/scenes/menu.pix3scene +100 -100
  116. package/templates/recipe-tapper-2d/files/scenes/prefabs/hazard.pix3scene +42 -42
  117. package/templates/recipe-tapper-2d/files/scenes/prefabs/target.pix3scene +45 -45
  118. package/templates/recipe-tapper-2d/files/scenes/ui/result.pix3scene +85 -85
  119. package/templates/recipe-tapper-2d/files/scripts/GameRules.ts +368 -368
  120. package/templates/recipe-tapper-2d/files/scripts/MenuFlow.ts +106 -106
  121. package/templates/recipe-tapper-2d/files/scripts/ScoreHud.ts +94 -94
  122. package/templates/recipe-tapper-2d/files/scripts/Spawner.ts +214 -214
  123. package/templates/recipe-tapper-2d/files/scripts/TouchRules.ts +192 -192
  124. package/templates/recipe-tapper-2d/template.yaml +10 -10
  125. package/dist/smoke/prebuilt/chunk-OJXQXIIQ.mjs +0 -239
  126. package/dist/validate/prebuilt/chunk-BS2OZM7U.js +0 -239
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __pix3CreateRequire } from 'node:module'; const require = __pix3CreateRequire(import.meta.url);
2
- import{a as l,oa as d}from"./chunk-OJXQXIIQ.mjs";import{pd as u}from"./chunk-P2CBRXPJ.mjs";var g=()=>{let n={addColorStop:()=>{}};return new Proxy({},{get(e,t){return t==="measureText"?r=>({width:r.length*10,actualBoundingBoxAscent:10,actualBoundingBoxDescent:3,actualBoundingBoxLeft:0,actualBoundingBoxRight:r.length*10}):t==="getImageData"?()=>({data:new Uint8ClampedArray(4),width:1,height:1}):typeof t=="string"&&t.startsWith("create")?()=>n:()=>{}},set:()=>!0})},x=()=>({style:{},src:"",crossOrigin:null,complete:!1,width:0,height:0,addEventListener:()=>{},removeEventListener:()=>{}}),m=()=>({createElement(n){if(n!=="canvas")throw new Error(`canvas-only document shim: createElement('${n}') is not provided`);return{width:1,height:1,style:{},getContext:e=>e==="2d"?g():null,addEventListener:()=>{},removeEventListener:()=>{}}},createElementNS(n,e){if(e!=="img")throw new Error(`canvas-only document shim: createElementNS('${e}') is not provided`);return x()}}),y=()=>typeof Reflect.get(globalThis,"document")<"u"?()=>{}:(Reflect.set(globalThis,"document",m()),()=>{Reflect.deleteProperty(globalThis,"document")});import{existsSync as h,readFileSync as p,statSync as w}from"node:fs";import{isAbsolute as v,join as R,relative as D,resolve as f}from"node:path";var i=class extends l{projectDir;transformText;constructor(e,t={}){super("/"),this.projectDir=f(e),this.transformText=t.transformText}pathOf(e){let t=this.normalize(e).replace(/^\/+/,"");return this.containedPath(t)}isProjectResource(e){let t=this.getScheme(e);return t===""||t==="res"}exists(e){let t=this.pathOf(e);if(!t||!h(t))return!1;try{return w(t).isFile()}catch{return!1}}async fetchText(e){let t=this.requirePath(e),r=p(t,"utf8");return this.transformText?this.transformText(r,t):r}async fetchBlob(e){return new Blob([new Uint8Array(p(this.requirePath(e)))])}containedPath(e){let t=decodeURIComponent(e.replace(/^\/+/,"")),r=f(R(this.projectDir,t)),c=D(this.projectDir,r);return c.startsWith("..")||v(c)?null:r}requirePath(e){let t=`res://${e.replace(/^\/+/,"")}`,r=this.containedPath(e);if(!r)throw new s(t,"resolves outside the project folder");if(!h(r))throw new s(t);return r}},s=class extends Error{resource;constructor(e,t="file not found"){super(`Missing resource ${e} (${t})`),this.name="MissingResourceError",this.resource=e}},o=class extends Error{resource;constructor(e){super(`Resource ${e} exists but is not decoded outside the browser`),this.name="ResourceNotDecodedError",this.resource=e}},a=class extends d{missingSet=new Set;disk;constructor(e){super(e),this.disk=e}get missing(){return[...this.missingSet]}async loadTexture(e,t){return this.require(e),new u}async loadAsset(e){throw this.require(e),new o(e)}async loadSpineAsset(e){throw this.require(e.skeletonPath),this.require(e.atlasPath),e.texturePath&&this.require(e.texturePath),new o(e.skeletonPath)}require(e){if(this.disk.isProjectResource(e)&&!this.disk.exists(e))throw this.missingSet.add(e),new s(e)}};export{g as a,y as b,i as c,s as d,o as e,a as f};
2
+ import{a as l,oa as d}from"./chunk-VJHJ5BCO.mjs";import{pd as u}from"./chunk-P2CBRXPJ.mjs";var g=()=>{let n={addColorStop:()=>{}};return new Proxy({},{get(e,t){return t==="measureText"?r=>({width:r.length*10,actualBoundingBoxAscent:10,actualBoundingBoxDescent:3,actualBoundingBoxLeft:0,actualBoundingBoxRight:r.length*10}):t==="getImageData"?()=>({data:new Uint8ClampedArray(4),width:1,height:1}):typeof t=="string"&&t.startsWith("create")?()=>n:()=>{}},set:()=>!0})},x=()=>({style:{},src:"",crossOrigin:null,complete:!1,width:0,height:0,addEventListener:()=>{},removeEventListener:()=>{}}),m=()=>({createElement(n){if(n!=="canvas")throw new Error(`canvas-only document shim: createElement('${n}') is not provided`);return{width:1,height:1,style:{},getContext:e=>e==="2d"?g():null,addEventListener:()=>{},removeEventListener:()=>{}}},createElementNS(n,e){if(e!=="img")throw new Error(`canvas-only document shim: createElementNS('${e}') is not provided`);return x()}}),y=()=>typeof Reflect.get(globalThis,"document")<"u"?()=>{}:(Reflect.set(globalThis,"document",m()),()=>{Reflect.deleteProperty(globalThis,"document")});import{existsSync as h,readFileSync as p,statSync as w}from"node:fs";import{isAbsolute as v,join as R,relative as D,resolve as f}from"node:path";var i=class extends l{projectDir;transformText;constructor(e,t={}){super("/"),this.projectDir=f(e),this.transformText=t.transformText}pathOf(e){let t=this.normalize(e).replace(/^\/+/,"");return this.containedPath(t)}isProjectResource(e){let t=this.getScheme(e);return t===""||t==="res"}exists(e){let t=this.pathOf(e);if(!t||!h(t))return!1;try{return w(t).isFile()}catch{return!1}}async fetchText(e){let t=this.requirePath(e),r=p(t,"utf8");return this.transformText?this.transformText(r,t):r}async fetchBlob(e){return new Blob([new Uint8Array(p(this.requirePath(e)))])}containedPath(e){let t=decodeURIComponent(e.replace(/^\/+/,"")),r=f(R(this.projectDir,t)),c=D(this.projectDir,r);return c.startsWith("..")||v(c)?null:r}requirePath(e){let t=`res://${e.replace(/^\/+/,"")}`,r=this.containedPath(e);if(!r)throw new s(t,"resolves outside the project folder");if(!h(r))throw new s(t);return r}},s=class extends Error{resource;constructor(e,t="file not found"){super(`Missing resource ${e} (${t})`),this.name="MissingResourceError",this.resource=e}},o=class extends Error{resource;constructor(e){super(`Resource ${e} exists but is not decoded outside the browser`),this.name="ResourceNotDecodedError",this.resource=e}},a=class extends d{missingSet=new Set;disk;constructor(e){super(e),this.disk=e}get missing(){return[...this.missingSet]}async loadTexture(e,t){return this.require(e),new u}async loadAsset(e){throw this.require(e),new o(e)}async loadSpineAsset(e){throw this.require(e.skeletonPath),this.require(e.atlasPath),e.texturePath&&this.require(e.texturePath),new o(e.skeletonPath)}require(e){if(this.disk.isProjectResource(e)&&!this.disk.exists(e))throw this.missingSet.add(e),new s(e)}};export{g as a,y as b,i as c,s as d,o as e,a as f};