@waica/cli 0.6.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/README.md +1 -1
  2. package/dist/editor/assets/{cssMode-D3SZSKEA.js → cssMode-DwPoqXFO.js} +1 -1
  3. package/dist/editor/assets/{freemarker2-BH1pa3TU.js → freemarker2-gl5y25bH.js} +1 -1
  4. package/dist/editor/assets/{handlebars-Cf7meNHo.js → handlebars-DHUb8mb3.js} +1 -1
  5. package/dist/editor/assets/{html-6hqYzl5P.js → html-C8W-psr4.js} +1 -1
  6. package/dist/editor/assets/{htmlMode-D_IiyUdi.js → htmlMode-BiF5TH2_.js} +1 -1
  7. package/dist/editor/assets/{index-Cy5pmBhN.css → index-CzarIYLW.css} +1 -1
  8. package/dist/editor/assets/{index-CJyB1cBF.js → index-DtMwWp8R.js} +6380 -2495
  9. package/dist/editor/assets/{javascript-CTeTqLj8.js → javascript-D_t2jyWi.js} +1 -1
  10. package/dist/editor/assets/{jsonMode-t8AC-38H.js → jsonMode-CZ0SltDj.js} +1 -1
  11. package/dist/editor/assets/{liquid-Dc6NoKas.js → liquid-DUxURZui.js} +1 -1
  12. package/dist/editor/assets/{mdx-DCPtX-bs.js → mdx-CDIQ7hmo.js} +1 -1
  13. package/dist/editor/assets/{python-DXAju_oJ.js → python-Cra2N916.js} +1 -1
  14. package/dist/editor/assets/{razor-DqQldpv6.js → razor-B3qV-mNp.js} +1 -1
  15. package/dist/editor/assets/{tsMode-B60EhHlZ.js → tsMode-Ci457z4v.js} +1 -1
  16. package/dist/editor/assets/{typescript-C4LyYAns.js → typescript-BXjh3GLT.js} +1 -1
  17. package/dist/editor/assets/{xml-B0QcT5_Z.js → xml-DQuEpqk5.js} +1 -1
  18. package/dist/editor/assets/{yaml-CEpyO2Qc.js → yaml-CQA7WIT-.js} +1 -1
  19. package/dist/editor/index.html +2 -2
  20. package/dist/mcp/archetypes.js +6 -2
  21. package/dist/mcp/create-project.js +12 -6
  22. package/dist/mcp/known-archetypes.js +24 -0
  23. package/dist/mcp/node_modules/@waica/archetype-isometric/assets/ATTRIBUTION.md +72 -0
  24. package/dist/mcp/node_modules/@waica/archetype-isometric/assets/waica-iso-crate.png +0 -0
  25. package/dist/mcp/node_modules/@waica/archetype-isometric/assets/waica-iso-ground.png +0 -0
  26. package/dist/mcp/node_modules/@waica/archetype-isometric/assets/waica-iso-hero.png +0 -0
  27. package/dist/mcp/node_modules/@waica/archetype-isometric/assets/waica-iso-orc.png +0 -0
  28. package/dist/mcp/node_modules/@waica/archetype-isometric/assets/waica-iso-rock.png +0 -0
  29. package/dist/mcp/node_modules/@waica/archetype-isometric/assets/waica-iso-tree.png +0 -0
  30. package/dist/mcp/node_modules/@waica/archetype-isometric/assets/waica-iso-villager.png +0 -0
  31. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/animation.d.ts +3 -0
  32. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/animation.js +10 -0
  33. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/art.d.ts +3 -0
  34. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/art.js +10 -0
  35. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/bundle.d.ts +2 -0
  36. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/bundle.js +9 -0
  37. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/controls.d.ts +3 -0
  38. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/controls.js +14 -0
  39. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/index.d.ts +24 -0
  40. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/index.js +15 -0
  41. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/manifest.d.ts +16 -0
  42. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/manifest.js +29 -0
  43. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/prefabs.d.ts +18 -0
  44. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/prefabs.js +196 -0
  45. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/registry-data.d.ts +3 -0
  46. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/registry-data.js +46 -0
  47. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/registry.d.ts +4 -0
  48. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/registry.js +17 -0
  49. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/scene-default.d.ts +5 -0
  50. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/scene-default.js +49 -0
  51. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/ui.d.ts +1 -0
  52. package/dist/mcp/node_modules/@waica/archetype-isometric/dist/ui.js +17 -0
  53. package/dist/mcp/node_modules/@waica/archetype-isometric/package.json +30 -0
  54. package/dist/mcp/node_modules/@waica/archetype-platformer/package.json +3 -3
  55. package/dist/mcp/node_modules/@waica/archetype-topdown/assets/ATTRIBUTION.md +28 -0
  56. package/dist/mcp/node_modules/@waica/archetype-topdown/assets/waica-blob.png +0 -0
  57. package/dist/mcp/node_modules/@waica/archetype-topdown/assets/waica-fence.png +0 -0
  58. package/dist/mcp/node_modules/@waica/archetype-topdown/assets/waica-grass.png +0 -0
  59. package/dist/mcp/node_modules/@waica/archetype-topdown/assets/waica-hero.png +0 -0
  60. package/dist/mcp/node_modules/@waica/archetype-topdown/assets/waica-npc.png +0 -0
  61. package/dist/mcp/node_modules/@waica/archetype-topdown/assets/waica-path.png +0 -0
  62. package/dist/mcp/node_modules/@waica/archetype-topdown/assets/waica-potion.png +0 -0
  63. package/dist/mcp/node_modules/@waica/archetype-topdown/assets/waica-tree.png +0 -0
  64. package/dist/mcp/node_modules/@waica/archetype-topdown/assets/waica-water.png +0 -0
  65. package/dist/mcp/node_modules/@waica/archetype-topdown/dist/animation.d.ts +7 -0
  66. package/dist/mcp/node_modules/@waica/archetype-topdown/dist/animation.js +10 -0
  67. package/dist/mcp/node_modules/@waica/archetype-topdown/dist/art.d.ts +10 -0
  68. package/dist/mcp/node_modules/@waica/archetype-topdown/dist/art.js +19 -0
  69. package/dist/mcp/node_modules/@waica/archetype-topdown/dist/bundle.d.ts +3 -0
  70. package/dist/mcp/node_modules/@waica/archetype-topdown/dist/bundle.js +10 -0
  71. package/dist/mcp/node_modules/@waica/archetype-topdown/dist/controls.d.ts +5 -0
  72. package/dist/mcp/node_modules/@waica/archetype-topdown/dist/controls.js +16 -0
  73. package/dist/mcp/node_modules/@waica/archetype-topdown/dist/index.d.ts +25 -0
  74. package/dist/mcp/node_modules/@waica/archetype-topdown/dist/index.js +16 -0
  75. package/dist/mcp/node_modules/@waica/archetype-topdown/dist/manifest.d.ts +16 -0
  76. package/dist/mcp/node_modules/@waica/archetype-topdown/dist/manifest.js +29 -0
  77. package/dist/mcp/node_modules/@waica/archetype-topdown/dist/prefabs.d.ts +11 -0
  78. package/dist/mcp/node_modules/@waica/archetype-topdown/dist/prefabs.js +178 -0
  79. package/dist/mcp/node_modules/@waica/archetype-topdown/dist/registry-data.d.ts +9 -0
  80. package/dist/mcp/node_modules/@waica/archetype-topdown/dist/registry-data.js +55 -0
  81. package/dist/mcp/node_modules/@waica/archetype-topdown/dist/registry.d.ts +6 -0
  82. package/dist/mcp/node_modules/@waica/archetype-topdown/dist/registry.js +21 -0
  83. package/dist/mcp/node_modules/@waica/archetype-topdown/dist/scene-default.d.ts +57 -0
  84. package/dist/mcp/node_modules/@waica/archetype-topdown/dist/scene-default.js +110 -0
  85. package/dist/mcp/node_modules/@waica/archetype-topdown/dist/ui.d.ts +10 -0
  86. package/dist/mcp/node_modules/@waica/archetype-topdown/dist/ui.js +26 -0
  87. package/dist/mcp/node_modules/@waica/archetype-topdown/package.json +30 -0
  88. package/dist/mcp/node_modules/@waica/behaviors/dist/grid-motor.d.ts +56 -0
  89. package/dist/mcp/node_modules/@waica/behaviors/dist/grid-motor.js +74 -0
  90. package/dist/mcp/node_modules/@waica/behaviors/dist/grid-player-role.d.ts +15 -0
  91. package/dist/mcp/node_modules/@waica/behaviors/dist/grid-player-role.js +71 -0
  92. package/dist/mcp/node_modules/@waica/behaviors/dist/index.d.ts +5 -0
  93. package/dist/mcp/node_modules/@waica/behaviors/dist/index.js +5 -0
  94. package/dist/mcp/node_modules/@waica/behaviors/dist/interactable.d.ts +34 -0
  95. package/dist/mcp/node_modules/@waica/behaviors/dist/interactable.js +72 -0
  96. package/dist/mcp/node_modules/@waica/behaviors/dist/iso-motor.d.ts +14 -0
  97. package/dist/mcp/node_modules/@waica/behaviors/dist/iso-motor.js +36 -0
  98. package/dist/mcp/node_modules/@waica/behaviors/dist/iso-player-states.d.ts +5 -0
  99. package/dist/mcp/node_modules/@waica/behaviors/dist/iso-player-states.js +9 -0
  100. package/dist/mcp/node_modules/@waica/behaviors/dist/platformer-motor.d.ts +4 -2
  101. package/dist/mcp/node_modules/@waica/behaviors/dist/platformer-motor.js +5 -1
  102. package/dist/mcp/node_modules/@waica/behaviors/dist/topdown-motor.d.ts +18 -0
  103. package/dist/mcp/node_modules/@waica/behaviors/dist/topdown-motor.js +31 -0
  104. package/dist/mcp/node_modules/@waica/behaviors/dist/topdown-player-states.d.ts +5 -0
  105. package/dist/mcp/node_modules/@waica/behaviors/dist/topdown-player-states.js +14 -0
  106. package/dist/mcp/node_modules/@waica/behaviors/package.json +2 -2
  107. package/dist/mcp/node_modules/@waica/engine/dist/animation/directional.d.ts +48 -0
  108. package/dist/mcp/node_modules/@waica/engine/dist/animation/directional.js +68 -0
  109. package/dist/mcp/node_modules/@waica/engine/dist/archetype.d.ts +3 -0
  110. package/dist/mcp/node_modules/@waica/engine/dist/camera.d.ts +19 -0
  111. package/dist/mcp/node_modules/@waica/engine/dist/camera.js +10 -0
  112. package/dist/mcp/node_modules/@waica/engine/dist/component.d.ts +2 -0
  113. package/dist/mcp/node_modules/@waica/engine/dist/components/animated-sprite.d.ts +27 -2
  114. package/dist/mcp/node_modules/@waica/engine/dist/components/animated-sprite.js +50 -5
  115. package/dist/mcp/node_modules/@waica/engine/dist/components/dynamic-body.js +2 -4
  116. package/dist/mcp/node_modules/@waica/engine/dist/components/sprite.d.ts +23 -1
  117. package/dist/mcp/node_modules/@waica/engine/dist/components/sprite.js +49 -8
  118. package/dist/mcp/node_modules/@waica/engine/dist/components/tilemap.d.ts +113 -0
  119. package/dist/mcp/node_modules/@waica/engine/dist/components/tilemap.js +316 -0
  120. package/dist/mcp/node_modules/@waica/engine/dist/entity.d.ts +3 -0
  121. package/dist/mcp/node_modules/@waica/engine/dist/entity.js +13 -1
  122. package/dist/mcp/node_modules/@waica/engine/dist/game.d.ts +13 -1
  123. package/dist/mcp/node_modules/@waica/engine/dist/game.js +70 -9
  124. package/dist/mcp/node_modules/@waica/engine/dist/index.d.ts +16 -3
  125. package/dist/mcp/node_modules/@waica/engine/dist/index.js +8 -1
  126. package/dist/mcp/node_modules/@waica/engine/dist/projection.d.ts +14 -0
  127. package/dist/mcp/node_modules/@waica/engine/dist/projection.js +30 -0
  128. package/dist/mcp/node_modules/@waica/engine/dist/render-sort.d.ts +31 -0
  129. package/dist/mcp/node_modules/@waica/engine/dist/render-sort.js +39 -0
  130. package/dist/mcp/node_modules/@waica/engine/dist/scene-solids.d.ts +16 -0
  131. package/dist/mcp/node_modules/@waica/engine/dist/scene-solids.js +28 -0
  132. package/dist/mcp/node_modules/@waica/engine/dist/scene.d.ts +12 -0
  133. package/dist/mcp/node_modules/@waica/engine/dist/scene.js +1 -0
  134. package/dist/mcp/node_modules/@waica/engine/dist/solid-axis.js +2 -4
  135. package/dist/mcp/node_modules/@waica/engine/dist/sprite-placement.d.ts +22 -0
  136. package/dist/mcp/node_modules/@waica/engine/dist/sprite-placement.js +14 -0
  137. package/dist/mcp/node_modules/@waica/engine/dist/state/hooks.d.ts +1 -1
  138. package/dist/mcp/node_modules/@waica/engine/dist/state/hooks.js +3 -1
  139. package/dist/mcp/node_modules/@waica/engine/dist/state/state-machine.d.ts +18 -0
  140. package/dist/mcp/node_modules/@waica/engine/dist/state/state-machine.js +57 -1
  141. package/dist/mcp/node_modules/@waica/engine/dist/tilemap-grid.d.ts +26 -0
  142. package/dist/mcp/node_modules/@waica/engine/dist/tilemap-grid.js +41 -0
  143. package/dist/mcp/node_modules/@waica/engine/package.json +1 -1
  144. package/dist/mcp/package-resolver.js +14 -4
  145. package/dist/mcp/project-component-loader.js +2 -1
  146. package/dist/mcp/project-component-runner.js +5 -0
  147. package/dist/mcp/server.js +18 -1
  148. package/dist/mcp/template/package.json.tpl +1 -1
  149. package/dist/mcp/template/src/main.ts +8 -4
  150. package/dist/mcp/workspace-runtime.js +41 -10
  151. package/package.json +1 -1
@@ -1,11 +1,12 @@
1
1
  import { access, readFile } from 'node:fs/promises';
2
2
  import path from 'node:path';
3
3
  import { fileURLToPath, pathToFileURL } from 'node:url';
4
+ import { KNOWN_ARCHETYPES } from './known-archetypes.js';
4
5
  const here = path.dirname(fileURLToPath(import.meta.url));
5
6
  const WORKSPACE_DIRECTORIES = {
6
7
  '@waica/engine': 'engine',
7
8
  '@waica/behaviors': 'behaviors',
8
- '@waica/archetype-platformer': 'archetype-platformer',
9
+ ...Object.fromEntries(KNOWN_ARCHETYPES.map(({ packageName, directory }) => [packageName, directory])),
9
10
  };
10
11
  let workspaceHooks;
11
12
  let workspacePackages;
@@ -68,6 +69,40 @@ export async function workspacePackageRoot(packageName) {
68
69
  workspacePackages ??= loadWorkspacePackages();
69
70
  return (await workspacePackages).get(packageName);
70
71
  }
72
+ /**
73
+ * Which workspace mappings the runtime hook should install. Engine and
74
+ * behaviors gate the whole plan — nothing loads without them — but each
75
+ * archetype only gates itself: a missing archetype dist drops that
76
+ * archetype's mappings with a warning instead of disabling every mapping.
77
+ */
78
+ export async function planWorkspaceRuntime(repositoryRoot, fileExists = exists) {
79
+ const core = {
80
+ '@waica/engine': path.join(repositoryRoot, 'packages/engine/dist/index.js'),
81
+ '@waica/behaviors': path.join(repositoryRoot, 'packages/behaviors/dist/index.js'),
82
+ };
83
+ if (!(await Promise.all(Object.values(core).map(fileExists))).every(Boolean))
84
+ return undefined;
85
+ const files = { ...core };
86
+ const directories = ['engine', 'behaviors'];
87
+ const warnings = [];
88
+ for (const { packageName, directory } of KNOWN_ARCHETYPES) {
89
+ const index = path.join(repositoryRoot, 'packages', directory, 'dist/index.js');
90
+ const manifest = path.join(repositoryRoot, 'packages', directory, 'dist/manifest.js');
91
+ if ((await fileExists(index)) && (await fileExists(manifest))) {
92
+ files[packageName] = index;
93
+ files[`${packageName}/manifest`] = manifest;
94
+ directories.push(directory);
95
+ }
96
+ else {
97
+ warnings.push(`waica-mcp: workspace archetype ${packageName} has no built dist; its workspace mappings were skipped.`);
98
+ }
99
+ }
100
+ return {
101
+ mappings: Object.fromEntries(Object.entries(files).map(([specifier, file]) => [specifier, pathToFileURL(file).href])),
102
+ parentPrefixes: directories.map((directory) => `${pathToFileURL(path.join(repositoryRoot, 'packages', directory, 'dist')).href}/`),
103
+ warnings,
104
+ };
105
+ }
71
106
  /**
72
107
  * Built workspace packages still import one another by bare package name while
73
108
  * checkout exports point at source TypeScript. Map only imports whose parent is
@@ -78,16 +113,12 @@ export async function prepareWorkspaceRuntime() {
78
113
  const repositoryRoot = await findWorkspaceRoot();
79
114
  if (repositoryRoot === undefined)
80
115
  return;
81
- const files = {
82
- '@waica/engine': path.join(repositoryRoot, 'packages/engine/dist/index.js'),
83
- '@waica/behaviors': path.join(repositoryRoot, 'packages/behaviors/dist/index.js'),
84
- '@waica/archetype-platformer': path.join(repositoryRoot, 'packages/archetype-platformer/dist/index.js'),
85
- '@waica/archetype-platformer/manifest': path.join(repositoryRoot, 'packages/archetype-platformer/dist/manifest.js'),
86
- };
87
- if (!(await Promise.all(Object.values(files).map(exists))).every(Boolean))
116
+ const plan = await planWorkspaceRuntime(repositoryRoot);
117
+ if (plan === undefined)
88
118
  return;
89
- const mappings = Object.fromEntries(Object.entries(files).map(([specifier, file]) => [specifier, pathToFileURL(file).href]));
90
- const parentPrefixes = ['engine', 'behaviors', 'archetype-platformer'].map((directory) => `${pathToFileURL(path.join(repositoryRoot, 'packages', directory, 'dist')).href}/`);
119
+ for (const warning of plan.warnings)
120
+ console.warn(warning);
121
+ const { mappings, parentPrefixes } = plan;
91
122
  const moduleApi = await import('node:module');
92
123
  if (typeof moduleApi.registerHooks === 'function') {
93
124
  workspaceHooks = moduleApi.registerHooks({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@waica/cli",
3
- "version": "0.6.1",
3
+ "version": "0.8.0",
4
4
  "description": "Waica in one command — `npx @waica/cli` opens the editor, `waica mcp` serves the MCP server",
5
5
  "license": "MIT",
6
6
  "type": "module",