@sajou/mcp-server 0.6.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 (130) hide show
  1. package/README.md +78 -0
  2. package/dist/app.d.ts +32 -0
  3. package/dist/app.d.ts.map +1 -0
  4. package/dist/app.js +76 -0
  5. package/dist/app.js.map +1 -0
  6. package/dist/index.d.ts +18 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +65 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/mcp/transport.d.ts +18 -0
  11. package/dist/mcp/transport.d.ts.map +1 -0
  12. package/dist/mcp/transport.js +56 -0
  13. package/dist/mcp/transport.js.map +1 -0
  14. package/dist/middleware.d.ts +14 -0
  15. package/dist/middleware.d.ts.map +1 -0
  16. package/dist/middleware.js +14 -0
  17. package/dist/middleware.js.map +1 -0
  18. package/dist/routes/discovery.d.ts +8 -0
  19. package/dist/routes/discovery.d.ts.map +1 -0
  20. package/dist/routes/discovery.js +155 -0
  21. package/dist/routes/discovery.js.map +1 -0
  22. package/dist/routes/proxy.d.ts +10 -0
  23. package/dist/routes/proxy.d.ts.map +1 -0
  24. package/dist/routes/proxy.js +84 -0
  25. package/dist/routes/proxy.js.map +1 -0
  26. package/dist/routes/scene.d.ts +10 -0
  27. package/dist/routes/scene.d.ts.map +1 -0
  28. package/dist/routes/scene.js +298 -0
  29. package/dist/routes/scene.js.map +1 -0
  30. package/dist/routes/signals.d.ts +12 -0
  31. package/dist/routes/signals.d.ts.map +1 -0
  32. package/dist/routes/signals.js +61 -0
  33. package/dist/routes/signals.js.map +1 -0
  34. package/dist/routes/tap.d.ts +10 -0
  35. package/dist/routes/tap.d.ts.map +1 -0
  36. package/dist/routes/tap.js +115 -0
  37. package/dist/routes/tap.js.map +1 -0
  38. package/dist/server.d.ts +12 -0
  39. package/dist/server.d.ts.map +1 -0
  40. package/dist/server.js +103 -0
  41. package/dist/server.js.map +1 -0
  42. package/dist/state/mutations.d.ts +53 -0
  43. package/dist/state/mutations.d.ts.map +1 -0
  44. package/dist/state/mutations.js +409 -0
  45. package/dist/state/mutations.js.map +1 -0
  46. package/dist/state/store.d.ts +51 -0
  47. package/dist/state/store.d.ts.map +1 -0
  48. package/dist/state/store.js +149 -0
  49. package/dist/state/store.js.map +1 -0
  50. package/dist/tools/create-binding.d.ts +45 -0
  51. package/dist/tools/create-binding.d.ts.map +1 -0
  52. package/dist/tools/create-binding.js +82 -0
  53. package/dist/tools/create-binding.js.map +1 -0
  54. package/dist/tools/create-choreography.d.ts +76 -0
  55. package/dist/tools/create-choreography.d.ts.map +1 -0
  56. package/dist/tools/create-choreography.js +118 -0
  57. package/dist/tools/create-choreography.js.map +1 -0
  58. package/dist/tools/create-shader.d.ts +117 -0
  59. package/dist/tools/create-shader.d.ts.map +1 -0
  60. package/dist/tools/create-shader.js +150 -0
  61. package/dist/tools/create-shader.js.map +1 -0
  62. package/dist/tools/create-sketch.d.ts +96 -0
  63. package/dist/tools/create-sketch.d.ts.map +1 -0
  64. package/dist/tools/create-sketch.js +130 -0
  65. package/dist/tools/create-sketch.js.map +1 -0
  66. package/dist/tools/create-wire.d.ts +32 -0
  67. package/dist/tools/create-wire.d.ts.map +1 -0
  68. package/dist/tools/create-wire.js +84 -0
  69. package/dist/tools/create-wire.js.map +1 -0
  70. package/dist/tools/describe-scene.d.ts +22 -0
  71. package/dist/tools/describe-scene.d.ts.map +1 -0
  72. package/dist/tools/describe-scene.js +194 -0
  73. package/dist/tools/describe-scene.js.map +1 -0
  74. package/dist/tools/emit-signal.d.ts +36 -0
  75. package/dist/tools/emit-signal.d.ts.map +1 -0
  76. package/dist/tools/emit-signal.js +60 -0
  77. package/dist/tools/emit-signal.js.map +1 -0
  78. package/dist/tools/get-catalog.d.ts +27 -0
  79. package/dist/tools/get-catalog.d.ts.map +1 -0
  80. package/dist/tools/get-catalog.js +37 -0
  81. package/dist/tools/get-catalog.js.map +1 -0
  82. package/dist/tools/get-choreographies.d.ts +21 -0
  83. package/dist/tools/get-choreographies.d.ts.map +1 -0
  84. package/dist/tools/get-choreographies.js +70 -0
  85. package/dist/tools/get-choreographies.js.map +1 -0
  86. package/dist/tools/get-scene-state.d.ts +21 -0
  87. package/dist/tools/get-scene-state.d.ts.map +1 -0
  88. package/dist/tools/get-scene-state.js +48 -0
  89. package/dist/tools/get-scene-state.js.map +1 -0
  90. package/dist/tools/get-shaders.d.ts +16 -0
  91. package/dist/tools/get-shaders.d.ts.map +1 -0
  92. package/dist/tools/get-shaders.js +38 -0
  93. package/dist/tools/get-shaders.js.map +1 -0
  94. package/dist/tools/get-sketches.d.ts +16 -0
  95. package/dist/tools/get-sketches.d.ts.map +1 -0
  96. package/dist/tools/get-sketches.js +37 -0
  97. package/dist/tools/get-sketches.js.map +1 -0
  98. package/dist/tools/list-themes.d.ts +21 -0
  99. package/dist/tools/list-themes.d.ts.map +1 -0
  100. package/dist/tools/list-themes.js +32 -0
  101. package/dist/tools/list-themes.js.map +1 -0
  102. package/dist/tools/map-signals.d.ts +30 -0
  103. package/dist/tools/map-signals.d.ts.map +1 -0
  104. package/dist/tools/map-signals.js +44 -0
  105. package/dist/tools/map-signals.js.map +1 -0
  106. package/dist/tools/place-entity.d.ts +47 -0
  107. package/dist/tools/place-entity.d.ts.map +1 -0
  108. package/dist/tools/place-entity.js +85 -0
  109. package/dist/tools/place-entity.js.map +1 -0
  110. package/dist/tools/remove-item.d.ts +25 -0
  111. package/dist/tools/remove-item.d.ts.map +1 -0
  112. package/dist/tools/remove-item.js +55 -0
  113. package/dist/tools/remove-item.js.map +1 -0
  114. package/dist/tools/set-sketch-param.d.ts +29 -0
  115. package/dist/tools/set-sketch-param.d.ts.map +1 -0
  116. package/dist/tools/set-sketch-param.js +49 -0
  117. package/dist/tools/set-sketch-param.js.map +1 -0
  118. package/dist/tools/set-uniform.d.ts +29 -0
  119. package/dist/tools/set-uniform.d.ts.map +1 -0
  120. package/dist/tools/set-uniform.js +49 -0
  121. package/dist/tools/set-uniform.js.map +1 -0
  122. package/dist/tools/update-shader.d.ts +119 -0
  123. package/dist/tools/update-shader.d.ts.map +1 -0
  124. package/dist/tools/update-shader.js +81 -0
  125. package/dist/tools/update-shader.js.map +1 -0
  126. package/dist/tools/update-sketch.d.ts +99 -0
  127. package/dist/tools/update-sketch.d.ts.map +1 -0
  128. package/dist/tools/update-sketch.js +75 -0
  129. package/dist/tools/update-sketch.js.map +1 -0
  130. package/package.json +55 -0
@@ -0,0 +1,12 @@
1
+ /**
2
+ * MCP server setup — creates the McpServer instance and registers all tools.
3
+ *
4
+ * Each tool is a separate module in `./tools/`. This file wires them together
5
+ * into a single MCP server that AI agents can interact with.
6
+ */
7
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
8
+ /**
9
+ * Create and configure the sajou MCP server with all tools registered.
10
+ */
11
+ export declare function createServer(): McpServer;
12
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuBpE;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,CA4JxC"}
package/dist/server.js ADDED
@@ -0,0 +1,103 @@
1
+ /**
2
+ * MCP server setup — creates the McpServer instance and registers all tools.
3
+ *
4
+ * Each tool is a separate module in `./tools/`. This file wires them together
5
+ * into a single MCP server that AI agents can interact with.
6
+ */
7
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
8
+ import * as emitSignalTool from "./tools/emit-signal.js";
9
+ import * as getSceneStateTool from "./tools/get-scene-state.js";
10
+ import * as getChoreographiesTool from "./tools/get-choreographies.js";
11
+ import * as listThemesTool from "./tools/list-themes.js";
12
+ import * as getCatalogTool from "./tools/get-catalog.js";
13
+ import * as mapSignalsTool from "./tools/map-signals.js";
14
+ import * as describeSceneTool from "./tools/describe-scene.js";
15
+ // Write tools — scene composition
16
+ import * as placeEntityTool from "./tools/place-entity.js";
17
+ import * as createChoreographyTool from "./tools/create-choreography.js";
18
+ import * as createBindingTool from "./tools/create-binding.js";
19
+ import * as createWireTool from "./tools/create-wire.js";
20
+ import * as removeItemTool from "./tools/remove-item.js";
21
+ // Shader tools
22
+ import * as createShaderTool from "./tools/create-shader.js";
23
+ import * as updateShaderTool from "./tools/update-shader.js";
24
+ import * as getShadersTool from "./tools/get-shaders.js";
25
+ import * as setUniformTool from "./tools/set-uniform.js";
26
+ /**
27
+ * Create and configure the sajou MCP server with all tools registered.
28
+ */
29
+ export function createServer() {
30
+ const server = new McpServer({
31
+ name: "sajou",
32
+ version: "0.0.0",
33
+ });
34
+ // Register all tools
35
+ server.registerTool(emitSignalTool.name, {
36
+ description: emitSignalTool.description,
37
+ inputSchema: emitSignalTool.inputSchema,
38
+ }, emitSignalTool.handler);
39
+ server.registerTool(getSceneStateTool.name, {
40
+ description: getSceneStateTool.description,
41
+ inputSchema: getSceneStateTool.inputSchema,
42
+ }, getSceneStateTool.handler);
43
+ server.registerTool(getChoreographiesTool.name, {
44
+ description: getChoreographiesTool.description,
45
+ inputSchema: getChoreographiesTool.inputSchema,
46
+ }, getChoreographiesTool.handler);
47
+ server.registerTool(listThemesTool.name, {
48
+ description: listThemesTool.description,
49
+ inputSchema: listThemesTool.inputSchema,
50
+ }, listThemesTool.handler);
51
+ server.registerTool(getCatalogTool.name, {
52
+ description: getCatalogTool.description,
53
+ inputSchema: getCatalogTool.inputSchema,
54
+ }, getCatalogTool.handler);
55
+ server.registerTool(mapSignalsTool.name, {
56
+ description: mapSignalsTool.description,
57
+ inputSchema: mapSignalsTool.inputSchema,
58
+ }, mapSignalsTool.handler);
59
+ server.registerTool(describeSceneTool.name, {
60
+ description: describeSceneTool.description,
61
+ inputSchema: describeSceneTool.inputSchema,
62
+ }, describeSceneTool.handler);
63
+ // --- Write tools ---
64
+ server.registerTool(placeEntityTool.name, {
65
+ description: placeEntityTool.description,
66
+ inputSchema: placeEntityTool.inputSchema,
67
+ }, placeEntityTool.handler);
68
+ server.registerTool(createChoreographyTool.name, {
69
+ description: createChoreographyTool.description,
70
+ inputSchema: createChoreographyTool.inputSchema,
71
+ }, createChoreographyTool.handler);
72
+ server.registerTool(createBindingTool.name, {
73
+ description: createBindingTool.description,
74
+ inputSchema: createBindingTool.inputSchema,
75
+ }, createBindingTool.handler);
76
+ server.registerTool(createWireTool.name, {
77
+ description: createWireTool.description,
78
+ inputSchema: createWireTool.inputSchema,
79
+ }, createWireTool.handler);
80
+ server.registerTool(removeItemTool.name, {
81
+ description: removeItemTool.description,
82
+ inputSchema: removeItemTool.inputSchema,
83
+ }, removeItemTool.handler);
84
+ // --- Shader tools ---
85
+ server.registerTool(createShaderTool.name, {
86
+ description: createShaderTool.description,
87
+ inputSchema: createShaderTool.inputSchema,
88
+ }, createShaderTool.handler);
89
+ server.registerTool(updateShaderTool.name, {
90
+ description: updateShaderTool.description,
91
+ inputSchema: updateShaderTool.inputSchema,
92
+ }, updateShaderTool.handler);
93
+ server.registerTool(getShadersTool.name, {
94
+ description: getShadersTool.description,
95
+ inputSchema: getShadersTool.inputSchema,
96
+ }, getShadersTool.handler);
97
+ server.registerTool(setUniformTool.name, {
98
+ description: setUniformTool.description,
99
+ inputSchema: setUniformTool.inputSchema,
100
+ }, setUniformTool.handler);
101
+ return server;
102
+ }
103
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Server-side mutations — direct state modifications.
3
+ *
4
+ * Each function modifies the in-memory store and triggers subscriber
5
+ * notifications. These replace the old command-queue → browser round-trip.
6
+ */
7
+ /** Place a new entity on the scene. */
8
+ export declare function addEntity(data: Record<string, unknown>): void;
9
+ /** Remove an entity by instance ID. */
10
+ export declare function removeEntity(id: string): void;
11
+ /** Update an entity by spreading partial data. */
12
+ export declare function updateEntity(id: string, data: Record<string, unknown>): void;
13
+ /** Add a choreography definition. */
14
+ export declare function addChoreography(data: Record<string, unknown>): void;
15
+ /** Remove a choreography by ID. Also removes wires targeting it. */
16
+ export declare function removeChoreography(id: string): void;
17
+ /** Update a choreography by spreading partial data. */
18
+ export declare function updateChoreography(id: string, data: Record<string, unknown>): void;
19
+ /** Add a binding. */
20
+ export declare function addBinding(data: Record<string, unknown>): void;
21
+ /** Remove a binding by ID. */
22
+ export declare function removeBinding(id: string): void;
23
+ /** Add a wire connection. */
24
+ export declare function addWire(data: Record<string, unknown>): void;
25
+ /** Remove a wire by ID. */
26
+ export declare function removeWire(id: string): void;
27
+ /** Add a signal source. */
28
+ export declare function addSignalSource(data: Record<string, unknown>): void;
29
+ /** Remove a signal source by ID. Also removes its wires. */
30
+ export declare function removeSignalSource(id: string): void;
31
+ /** Add a shader. */
32
+ export declare function addShader(data: Record<string, unknown>): void;
33
+ /** Update an existing shader. */
34
+ export declare function updateShader(id: string, data: Record<string, unknown>): void;
35
+ /** Remove a shader by ID. */
36
+ export declare function removeShader(id: string): void;
37
+ /** Set a single uniform value on a shader. */
38
+ export declare function setUniform(shaderId: string, uniformName: string, value: number | boolean | number[]): void;
39
+ /** Add a p5 sketch. */
40
+ export declare function addP5Sketch(data: Record<string, unknown>): void;
41
+ /** Update a p5 sketch. */
42
+ export declare function updateP5Sketch(id: string, data: Record<string, unknown>): void;
43
+ /** Remove a p5 sketch by ID. */
44
+ export declare function removeP5Sketch(id: string): void;
45
+ /** Set a single param value on a p5 sketch. */
46
+ export declare function setP5Param(sketchId: string, paramName: string, value: number | boolean | number[]): void;
47
+ /** Execute a command in the same format as the old command-queue. */
48
+ export declare function executeCommand(cmd: {
49
+ action: string;
50
+ type: string;
51
+ data: Record<string, unknown>;
52
+ }): void;
53
+ //# sourceMappingURL=mutations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutations.d.ts","sourceRoot":"","sources":["../../src/state/mutations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,409 @@
1
+ /**
2
+ * Server-side mutations — direct state modifications.
3
+ *
4
+ * Each function modifies the in-memory store and triggers subscriber
5
+ * notifications. These replace the old command-queue → browser round-trip.
6
+ */
7
+ import { mutate, getShaders, getP5 } from "./store.js";
8
+ // ---------------------------------------------------------------------------
9
+ // Entity mutations
10
+ // ---------------------------------------------------------------------------
11
+ /** Place a new entity on the scene. */
12
+ export function addEntity(data) {
13
+ mutate((s) => {
14
+ const entities = (s.scene["entities"] ?? []);
15
+ entities.push({
16
+ id: data["id"] ?? crypto.randomUUID(),
17
+ entityId: data["entityId"],
18
+ semanticId: data["semanticId"],
19
+ x: data["x"] ?? 0,
20
+ y: data["y"] ?? 0,
21
+ scale: data["scale"] ?? 1,
22
+ rotation: data["rotation"] ?? 0,
23
+ layerId: data["layerId"] ?? "midground",
24
+ zIndex: data["zIndex"] ?? 0,
25
+ opacity: data["opacity"] ?? 1,
26
+ flipH: data["flipH"] ?? false,
27
+ flipV: data["flipV"] ?? false,
28
+ locked: data["locked"] ?? false,
29
+ visible: data["visible"] ?? true,
30
+ activeState: data["activeState"] ?? "idle",
31
+ });
32
+ s.scene["entities"] = entities;
33
+ });
34
+ }
35
+ /** Remove an entity by instance ID. */
36
+ export function removeEntity(id) {
37
+ mutate((s) => {
38
+ const entities = (s.scene["entities"] ?? []);
39
+ s.scene["entities"] = entities.filter((e) => e["id"] !== id);
40
+ });
41
+ }
42
+ /** Update an entity by spreading partial data. */
43
+ export function updateEntity(id, data) {
44
+ mutate((s) => {
45
+ const entities = (s.scene["entities"] ?? []);
46
+ s.scene["entities"] = entities.map((e) => e["id"] === id ? { ...e, ...data } : e);
47
+ });
48
+ }
49
+ // ---------------------------------------------------------------------------
50
+ // Choreography mutations
51
+ // ---------------------------------------------------------------------------
52
+ /** Add a choreography definition. */
53
+ export function addChoreography(data) {
54
+ mutate((s) => {
55
+ const choreos = (s.choreographies["choreographies"] ?? []);
56
+ choreos.push({
57
+ id: data["id"] ?? crypto.randomUUID(),
58
+ on: data["on"] ?? "",
59
+ when: data["when"] ?? null,
60
+ interrupts: data["interrupts"] ?? false,
61
+ steps: data["steps"] ?? [],
62
+ nodeX: data["nodeX"] ?? 0,
63
+ nodeY: data["nodeY"] ?? 0,
64
+ collapsed: data["collapsed"] ?? false,
65
+ defaultTargetEntityId: data["defaultTargetEntityId"] ?? null,
66
+ });
67
+ s.choreographies["choreographies"] = choreos;
68
+ });
69
+ }
70
+ /** Remove a choreography by ID. Also removes wires targeting it. */
71
+ export function removeChoreography(id) {
72
+ mutate((s) => {
73
+ const choreos = (s.choreographies["choreographies"] ?? []);
74
+ s.choreographies["choreographies"] = choreos.filter((c) => c["id"] !== id);
75
+ // Clean up wires targeting this choreography
76
+ const wires = (s.wiring["wires"] ?? []);
77
+ s.wiring["wires"] = wires.filter((w) => !(w["toZone"] === "choreographer" && w["toId"] === id));
78
+ });
79
+ }
80
+ /** Update a choreography by spreading partial data. */
81
+ export function updateChoreography(id, data) {
82
+ mutate((s) => {
83
+ const choreos = (s.choreographies["choreographies"] ?? []);
84
+ s.choreographies["choreographies"] = choreos.map((c) => c["id"] === id ? { ...c, ...data } : c);
85
+ });
86
+ }
87
+ // ---------------------------------------------------------------------------
88
+ // Binding mutations
89
+ // ---------------------------------------------------------------------------
90
+ /** Add a binding. */
91
+ export function addBinding(data) {
92
+ mutate((s) => {
93
+ const bindings = (s.bindings["bindings"] ?? []);
94
+ bindings.push({
95
+ id: data["id"] ?? crypto.randomUUID(),
96
+ targetEntityId: data["targetEntityId"],
97
+ property: data["property"],
98
+ sourceChoreographyId: data["sourceChoreographyId"],
99
+ sourceType: data["sourceType"] ?? "direct",
100
+ mapping: data["mapping"],
101
+ action: data["action"],
102
+ sourceField: data["sourceField"],
103
+ transition: data["transition"],
104
+ });
105
+ s.bindings["bindings"] = bindings;
106
+ });
107
+ }
108
+ /** Remove a binding by ID. */
109
+ export function removeBinding(id) {
110
+ mutate((s) => {
111
+ const bindings = (s.bindings["bindings"] ?? []);
112
+ s.bindings["bindings"] = bindings.filter((b) => b["id"] !== id);
113
+ });
114
+ }
115
+ // ---------------------------------------------------------------------------
116
+ // Wire mutations
117
+ // ---------------------------------------------------------------------------
118
+ /** Add a wire connection. */
119
+ export function addWire(data) {
120
+ mutate((s) => {
121
+ const wires = (s.wiring["wires"] ?? []);
122
+ wires.push({
123
+ id: data["id"] ?? crypto.randomUUID(),
124
+ fromZone: data["fromZone"],
125
+ fromId: data["fromId"],
126
+ toZone: data["toZone"],
127
+ toId: data["toId"],
128
+ mapping: data["mapping"] ?? null,
129
+ });
130
+ s.wiring["wires"] = wires;
131
+ });
132
+ }
133
+ /** Remove a wire by ID. */
134
+ export function removeWire(id) {
135
+ mutate((s) => {
136
+ const wires = (s.wiring["wires"] ?? []);
137
+ s.wiring["wires"] = wires.filter((w) => w["id"] !== id);
138
+ });
139
+ }
140
+ // ---------------------------------------------------------------------------
141
+ // Signal source mutations
142
+ // ---------------------------------------------------------------------------
143
+ /** Add a signal source. */
144
+ export function addSignalSource(data) {
145
+ mutate((s) => {
146
+ const sources = (s.signalSources["sources"] ?? []);
147
+ sources.push({
148
+ id: data["id"] ?? crypto.randomUUID(),
149
+ name: data["name"] ?? "New Source",
150
+ protocol: data["protocol"] ?? "websocket",
151
+ url: data["url"] ?? "",
152
+ status: data["status"] ?? "disconnected",
153
+ error: null,
154
+ category: data["category"] ?? "remote",
155
+ eventsPerSecond: 0,
156
+ streaming: false,
157
+ });
158
+ s.signalSources["sources"] = sources;
159
+ });
160
+ }
161
+ /** Remove a signal source by ID. Also removes its wires. */
162
+ export function removeSignalSource(id) {
163
+ mutate((s) => {
164
+ const sources = (s.signalSources["sources"] ?? []);
165
+ s.signalSources["sources"] = sources.filter((src) => src["id"] !== id);
166
+ // Clean up wires from this source
167
+ const wires = (s.wiring["wires"] ?? []);
168
+ s.wiring["wires"] = wires.filter((w) => !(w["fromZone"] === "signal" && w["fromId"] === id));
169
+ });
170
+ }
171
+ /** Parse raw uniform data from an API call. */
172
+ function parseUniforms(raw) {
173
+ return raw.map((u) => ({
174
+ name: u["name"],
175
+ type: u["type"] ?? "float",
176
+ control: u["control"] ?? "slider",
177
+ value: u["value"],
178
+ defaultValue: (u["defaultValue"] ?? u["value"]),
179
+ min: u["min"] ?? 0,
180
+ max: u["max"] ?? 1,
181
+ step: u["step"] ?? 0.01,
182
+ objectId: u["objectId"],
183
+ bind: u["bind"],
184
+ }));
185
+ }
186
+ /** Parse raw object data from an API call. */
187
+ function parseObjects(raw) {
188
+ return raw.map((o) => ({
189
+ id: o["id"],
190
+ label: o["label"],
191
+ }));
192
+ }
193
+ /** Add a shader. */
194
+ export function addShader(data) {
195
+ const rawUniforms = data["uniforms"] ?? [];
196
+ const rawObjects = data["objects"] ?? [];
197
+ mutate((s) => {
198
+ const shaders = (s.shaders["shaders"] ?? []);
199
+ shaders.push({
200
+ id: data["id"] ?? crypto.randomUUID(),
201
+ name: data["name"] ?? "Untitled",
202
+ mode: data["mode"] ?? "fragment",
203
+ vertexSource: data["vertexSource"] ?? "",
204
+ fragmentSource: data["fragmentSource"] ?? "",
205
+ uniforms: parseUniforms(rawUniforms),
206
+ objects: parseObjects(rawObjects),
207
+ passes: data["passes"] ?? 1,
208
+ bufferResolution: data["bufferResolution"] ?? 1,
209
+ });
210
+ s.shaders["shaders"] = shaders;
211
+ });
212
+ }
213
+ /** Update an existing shader. */
214
+ export function updateShader(id, data) {
215
+ mutate((s) => {
216
+ const shaders = (s.shaders["shaders"] ?? []);
217
+ s.shaders["shaders"] = shaders.map((shader) => {
218
+ if (shader["id"] !== id)
219
+ return shader;
220
+ const partial = {};
221
+ if (data["name"] !== undefined)
222
+ partial["name"] = data["name"];
223
+ if (data["mode"] !== undefined)
224
+ partial["mode"] = data["mode"];
225
+ if (data["vertexSource"] !== undefined)
226
+ partial["vertexSource"] = data["vertexSource"];
227
+ if (data["fragmentSource"] !== undefined)
228
+ partial["fragmentSource"] = data["fragmentSource"];
229
+ if (data["passes"] !== undefined)
230
+ partial["passes"] = data["passes"];
231
+ if (data["bufferResolution"] !== undefined)
232
+ partial["bufferResolution"] = data["bufferResolution"];
233
+ if (data["uniforms"] !== undefined) {
234
+ partial["uniforms"] = parseUniforms(data["uniforms"]);
235
+ }
236
+ if (data["objects"] !== undefined) {
237
+ partial["objects"] = parseObjects(data["objects"]);
238
+ }
239
+ return { ...shader, ...partial };
240
+ });
241
+ });
242
+ }
243
+ /** Remove a shader by ID. */
244
+ export function removeShader(id) {
245
+ mutate((s) => {
246
+ const shaders = (s.shaders["shaders"] ?? []);
247
+ s.shaders["shaders"] = shaders.filter((shader) => shader["id"] !== id);
248
+ });
249
+ }
250
+ /** Set a single uniform value on a shader. */
251
+ export function setUniform(shaderId, uniformName, value) {
252
+ const shadersState = getShaders();
253
+ const shaders = (shadersState["shaders"] ?? []);
254
+ const shader = shaders.find((s) => s["id"] === shaderId);
255
+ if (!shader)
256
+ return;
257
+ const uniforms = (shader["uniforms"] ?? []);
258
+ const updatedUniforms = uniforms.map((u) => u.name === uniformName ? { ...u, value } : u);
259
+ updateShader(shaderId, { uniforms: updatedUniforms });
260
+ }
261
+ // ---------------------------------------------------------------------------
262
+ // Sketch mutations (p5.js + Three.js)
263
+ // ---------------------------------------------------------------------------
264
+ /** Valid sketch runtime modes. */
265
+ const VALID_SKETCH_MODES = new Set(["p5", "threejs"]);
266
+ /** Validate and return sketch mode, defaulting to "p5". */
267
+ function validateSketchMode(raw) {
268
+ if (typeof raw === "string" && VALID_SKETCH_MODES.has(raw))
269
+ return raw;
270
+ return "p5";
271
+ }
272
+ /** Parse raw param data from an API call. */
273
+ function parseP5Params(raw) {
274
+ return raw.map((p) => ({
275
+ name: p["name"],
276
+ type: p["type"] ?? "float",
277
+ control: p["control"] ?? "slider",
278
+ value: p["value"],
279
+ defaultValue: (p["defaultValue"] ?? p["value"]),
280
+ min: p["min"] ?? 0,
281
+ max: p["max"] ?? 1,
282
+ step: p["step"] ?? 0.01,
283
+ bind: p["bind"],
284
+ }));
285
+ }
286
+ /** Add a p5 sketch. */
287
+ export function addP5Sketch(data) {
288
+ const rawParams = data["params"] ?? [];
289
+ mutate((s) => {
290
+ const sketches = (s.p5["sketches"] ?? []);
291
+ sketches.push({
292
+ id: data["id"] ?? crypto.randomUUID(),
293
+ name: data["name"] ?? "Untitled",
294
+ source: data["source"] ?? "",
295
+ params: parseP5Params(rawParams),
296
+ width: data["width"] ?? 0,
297
+ height: data["height"] ?? 0,
298
+ mode: validateSketchMode(data["mode"]),
299
+ });
300
+ s.p5["sketches"] = sketches;
301
+ });
302
+ }
303
+ /** Update a p5 sketch. */
304
+ export function updateP5Sketch(id, data) {
305
+ mutate((s) => {
306
+ const sketches = (s.p5["sketches"] ?? []);
307
+ s.p5["sketches"] = sketches.map((sketch) => {
308
+ if (sketch["id"] !== id)
309
+ return sketch;
310
+ const partial = {};
311
+ if (data["name"] !== undefined)
312
+ partial["name"] = data["name"];
313
+ if (data["source"] !== undefined)
314
+ partial["source"] = data["source"];
315
+ if (data["width"] !== undefined)
316
+ partial["width"] = data["width"];
317
+ if (data["height"] !== undefined)
318
+ partial["height"] = data["height"];
319
+ if (data["mode"] !== undefined)
320
+ partial["mode"] = validateSketchMode(data["mode"]);
321
+ if (data["params"] !== undefined) {
322
+ partial["params"] = parseP5Params(data["params"]);
323
+ }
324
+ return { ...sketch, ...partial };
325
+ });
326
+ });
327
+ }
328
+ /** Remove a p5 sketch by ID. */
329
+ export function removeP5Sketch(id) {
330
+ mutate((s) => {
331
+ const sketches = (s.p5["sketches"] ?? []);
332
+ s.p5["sketches"] = sketches.filter((sketch) => sketch["id"] !== id);
333
+ });
334
+ }
335
+ /** Set a single param value on a p5 sketch. */
336
+ export function setP5Param(sketchId, paramName, value) {
337
+ const p5State = getP5();
338
+ const sketches = (p5State["sketches"] ?? []);
339
+ const sketch = sketches.find((s) => s["id"] === sketchId);
340
+ if (!sketch)
341
+ return;
342
+ const params = (sketch["params"] ?? []);
343
+ const updatedParams = params.map((p) => p.name === paramName ? { ...p, value } : p);
344
+ updateP5Sketch(sketchId, { params: updatedParams });
345
+ }
346
+ // ---------------------------------------------------------------------------
347
+ // Generic command dispatch (for browser SSE command compatibility)
348
+ // ---------------------------------------------------------------------------
349
+ /** Execute a command in the same format as the old command-queue. */
350
+ export function executeCommand(cmd) {
351
+ const { action, type, data } = cmd;
352
+ switch (type) {
353
+ case "entity":
354
+ if (action === "add")
355
+ addEntity(data);
356
+ else if (action === "remove")
357
+ removeEntity(data["id"]);
358
+ else if (action === "update")
359
+ updateEntity(data["id"], data);
360
+ break;
361
+ case "choreography":
362
+ if (action === "add")
363
+ addChoreography(data);
364
+ else if (action === "remove")
365
+ removeChoreography(data["id"]);
366
+ else if (action === "update")
367
+ updateChoreography(data["id"], data);
368
+ break;
369
+ case "binding":
370
+ if (action === "add")
371
+ addBinding(data);
372
+ else if (action === "remove")
373
+ removeBinding(data["id"]);
374
+ break;
375
+ case "wire":
376
+ if (action === "add")
377
+ addWire(data);
378
+ else if (action === "remove")
379
+ removeWire(data["id"]);
380
+ break;
381
+ case "source":
382
+ if (action === "add")
383
+ addSignalSource(data);
384
+ else if (action === "remove")
385
+ removeSignalSource(data["id"]);
386
+ break;
387
+ case "shader":
388
+ if (action === "add")
389
+ addShader(data);
390
+ else if (action === "update")
391
+ updateShader(data["id"], data);
392
+ else if (action === "remove")
393
+ removeShader(data["id"]);
394
+ else if (action === "set-uniform")
395
+ setUniform(data["id"], data["uniformName"], data["value"]);
396
+ break;
397
+ case "p5":
398
+ if (action === "add")
399
+ addP5Sketch(data);
400
+ else if (action === "update")
401
+ updateP5Sketch(data["id"], data);
402
+ else if (action === "remove")
403
+ removeP5Sketch(data["id"]);
404
+ else if (action === "set-param")
405
+ setP5Param(data["id"], data["paramName"], data["value"]);
406
+ break;
407
+ }
408
+ }
409
+ //# sourceMappingURL=mutations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutations.js","sourceRoot":"","sources":["../../src/state/mutations.ts"],"names":[],"mappings":"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"}