@dzbot/dzstudio-mcp 0.0.0-stage → 0.1.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 (49) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +162 -2
  3. package/dist/config/config.js +172 -0
  4. package/dist/config/config.js.map +1 -0
  5. package/dist/config/sessions.js +67 -0
  6. package/dist/config/sessions.js.map +1 -0
  7. package/dist/index.js +16 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/mcp/agent.js +1148 -0
  10. package/dist/mcp/agent.js.map +1 -0
  11. package/dist/mcp/server.js +263 -0
  12. package/dist/mcp/server.js.map +1 -0
  13. package/dist/protocol/client.js +134 -0
  14. package/dist/protocol/client.js.map +1 -0
  15. package/dist/protocol/session.js +837 -0
  16. package/dist/protocol/session.js.map +1 -0
  17. package/dist/protocol/transport.js +66 -0
  18. package/dist/protocol/transport.js.map +1 -0
  19. package/dist/scene/chunks.js +30 -0
  20. package/dist/scene/chunks.js.map +1 -0
  21. package/dist/scene/edits.js +183 -0
  22. package/dist/scene/edits.js.map +1 -0
  23. package/dist/scene/float32.js +167 -0
  24. package/dist/scene/float32.js.map +1 -0
  25. package/dist/scene/ids.js +43 -0
  26. package/dist/scene/ids.js.map +1 -0
  27. package/dist/scene/index.js +9 -0
  28. package/dist/scene/index.js.map +1 -0
  29. package/dist/scene/json.js +294 -0
  30. package/dist/scene/json.js.map +1 -0
  31. package/dist/scene/projectload.js +652 -0
  32. package/dist/scene/projectload.js.map +1 -0
  33. package/dist/scene/scene.js +506 -0
  34. package/dist/scene/scene.js.map +1 -0
  35. package/dist/scene/srcjson.js +297 -0
  36. package/dist/scene/srcjson.js.map +1 -0
  37. package/dist/scene/textform.js +257 -0
  38. package/dist/scene/textform.js.map +1 -0
  39. package/dist/scene/types.js +35 -0
  40. package/dist/scene/types.js.map +1 -0
  41. package/dist/world/data.js +604 -0
  42. package/dist/world/data.js.map +1 -0
  43. package/dist/world/format.js +205 -0
  44. package/dist/world/format.js.map +1 -0
  45. package/dist/world/source.js +267 -0
  46. package/dist/world/source.js.map +1 -0
  47. package/dist/world/tools.js +530 -0
  48. package/dist/world/tools.js.map +1 -0
  49. package/package.json +48 -4
@@ -0,0 +1,294 @@
1
+ /**
2
+ * The JSON dialect of the dzStudio text form.
3
+ *
4
+ * Writing is canonical: compact, keys in a fixed or byte-sorted order, a minimal set of escapes, raw UTF-8 for
5
+ * everything else. Reading is lenient about whitespace and escapes but strict about what the game cannot hold
6
+ * (`\u0000`, nesting deeper than 64 levels, trailing garbage).
7
+ */
8
+ export class JsonError extends Error {
9
+ }
10
+ const MAX_DEPTH = 64;
11
+ export function isObject(v) {
12
+ return v instanceof Map;
13
+ }
14
+ export function writeString(s) {
15
+ let out = '"';
16
+ let start = 0;
17
+ for (let i = 0; i < s.length; i++) {
18
+ const c = s.charCodeAt(i);
19
+ let esc;
20
+ if (c === 0x22)
21
+ esc = '\\"';
22
+ else if (c === 0x5c)
23
+ esc = '\\\\';
24
+ else if (c < 0x20) {
25
+ switch (c) {
26
+ case 8:
27
+ esc = '\\b';
28
+ break;
29
+ case 9:
30
+ esc = '\\t';
31
+ break;
32
+ case 10:
33
+ esc = '\\n';
34
+ break;
35
+ case 12:
36
+ esc = '\\f';
37
+ break;
38
+ case 13:
39
+ esc = '\\r';
40
+ break;
41
+ default:
42
+ esc = '\\u00' + c.toString(16).padStart(2, '0');
43
+ }
44
+ }
45
+ if (esc !== undefined) {
46
+ out += s.slice(start, i) + esc;
47
+ start = i + 1;
48
+ }
49
+ }
50
+ return out + s.slice(start) + '"';
51
+ }
52
+ /** Ascending by the UTF-8 bytes of the key. */
53
+ export function compareKeys(a, b) {
54
+ return Buffer.compare(Buffer.from(a, 'utf8'), Buffer.from(b, 'utf8'));
55
+ }
56
+ export function sortedKeys(keys) {
57
+ return [...keys].sort(compareKeys);
58
+ }
59
+ export function writeInt(n) {
60
+ if (!Number.isSafeInteger(n) || n < 0)
61
+ throw new JsonError(`not a non-negative integer: ${n}`);
62
+ return String(n);
63
+ }
64
+ /** A string → string map with byte-sorted keys. */
65
+ export function writeStringMap(m) {
66
+ return ('{' +
67
+ sortedKeys(m.keys())
68
+ .map((k) => writeString(k) + ':' + writeString(m.get(k)))
69
+ .join(',') +
70
+ '}');
71
+ }
72
+ /** Generic writer for plugin-owned JSON (objects with byte-sorted keys). */
73
+ export function writeJson(v) {
74
+ if (v === null)
75
+ return 'null';
76
+ if (typeof v === 'boolean')
77
+ return v ? 'true' : 'false';
78
+ if (typeof v === 'number') {
79
+ if (!Number.isFinite(v))
80
+ throw new JsonError('non-finite number');
81
+ return String(v);
82
+ }
83
+ if (typeof v === 'string')
84
+ return writeString(v);
85
+ if (Array.isArray(v))
86
+ return '[' + v.map(writeJson).join(',') + ']';
87
+ return ('{' +
88
+ sortedKeys(v.keys())
89
+ .map((k) => writeString(k) + ':' + writeJson(v.get(k)))
90
+ .join(',') +
91
+ '}');
92
+ }
93
+ export function parseJson(text) {
94
+ const p = new Parser(text);
95
+ p.ws();
96
+ const v = p.value(0);
97
+ p.ws();
98
+ if (p.i !== text.length)
99
+ throw new JsonError(`unexpected text after the value at ${p.i}`);
100
+ return v;
101
+ }
102
+ class Parser {
103
+ s;
104
+ i = 0;
105
+ constructor(s) {
106
+ this.s = s;
107
+ }
108
+ ws() {
109
+ for (;;) {
110
+ const c = this.s.charCodeAt(this.i);
111
+ if (c === 0x20 || c === 0x09 || c === 0x0a || c === 0x0d)
112
+ this.i++;
113
+ else
114
+ return;
115
+ }
116
+ }
117
+ fail(msg) {
118
+ throw new JsonError(`${msg} at ${this.i}`);
119
+ }
120
+ value(depth) {
121
+ const c = this.s[this.i];
122
+ switch (c) {
123
+ case '{':
124
+ return this.object(depth + 1);
125
+ case '[':
126
+ return this.array(depth + 1);
127
+ case '"':
128
+ return this.string();
129
+ case 't':
130
+ return this.literal('true', true);
131
+ case 'f':
132
+ return this.literal('false', false);
133
+ case 'n':
134
+ return this.literal('null', null);
135
+ default:
136
+ return this.number();
137
+ }
138
+ }
139
+ literal(word, v) {
140
+ if (this.s.startsWith(word, this.i)) {
141
+ this.i += word.length;
142
+ return v;
143
+ }
144
+ return this.fail('unexpected token');
145
+ }
146
+ object(depth) {
147
+ if (depth > MAX_DEPTH)
148
+ this.fail('nested too deeply');
149
+ this.i++;
150
+ const m = new Map();
151
+ this.ws();
152
+ if (this.s[this.i] === '}') {
153
+ this.i++;
154
+ return m;
155
+ }
156
+ for (;;) {
157
+ this.ws();
158
+ if (this.s[this.i] !== '"')
159
+ this.fail('expected a key');
160
+ const k = this.string();
161
+ this.ws();
162
+ if (this.s[this.i] !== ':')
163
+ this.fail('expected :');
164
+ this.i++;
165
+ this.ws();
166
+ const v = this.value(depth);
167
+ m.delete(k);
168
+ m.set(k, v);
169
+ this.ws();
170
+ const c = this.s[this.i++];
171
+ if (c === '}')
172
+ return m;
173
+ if (c !== ',')
174
+ this.fail('expected , or }');
175
+ }
176
+ }
177
+ array(depth) {
178
+ if (depth > MAX_DEPTH)
179
+ this.fail('nested too deeply');
180
+ this.i++;
181
+ const a = [];
182
+ this.ws();
183
+ if (this.s[this.i] === ']') {
184
+ this.i++;
185
+ return a;
186
+ }
187
+ for (;;) {
188
+ this.ws();
189
+ a.push(this.value(depth));
190
+ this.ws();
191
+ const c = this.s[this.i++];
192
+ if (c === ']')
193
+ return a;
194
+ if (c !== ',')
195
+ this.fail('expected , or ]');
196
+ }
197
+ }
198
+ string() {
199
+ this.i++;
200
+ let out = '';
201
+ let start = this.i;
202
+ for (;;) {
203
+ if (this.i >= this.s.length)
204
+ this.fail('unterminated string');
205
+ const c = this.s.charCodeAt(this.i);
206
+ if (c === 0x22) {
207
+ out += this.s.slice(start, this.i);
208
+ this.i++;
209
+ return out;
210
+ }
211
+ if (c < 0x20)
212
+ this.fail('control character in string');
213
+ if (c >= 0xd800 && c <= 0xdfff) {
214
+ const hi = c <= 0xdbff;
215
+ const next = this.s.charCodeAt(this.i + 1);
216
+ if (!hi || !(next >= 0xdc00 && next <= 0xdfff))
217
+ this.fail('lone surrogate');
218
+ this.i += 2;
219
+ continue;
220
+ }
221
+ if (c !== 0x5c) {
222
+ this.i++;
223
+ continue;
224
+ }
225
+ out += this.s.slice(start, this.i);
226
+ const e = this.s[this.i + 1];
227
+ this.i += 2;
228
+ switch (e) {
229
+ case '"':
230
+ out += '"';
231
+ break;
232
+ case '\\':
233
+ out += '\\';
234
+ break;
235
+ case '/':
236
+ out += '/';
237
+ break;
238
+ case 'b':
239
+ out += '\b';
240
+ break;
241
+ case 'f':
242
+ out += '\f';
243
+ break;
244
+ case 'n':
245
+ out += '\n';
246
+ break;
247
+ case 'r':
248
+ out += '\r';
249
+ break;
250
+ case 't':
251
+ out += '\t';
252
+ break;
253
+ case 'u': {
254
+ const u = this.hex4();
255
+ if (u === 0)
256
+ this.fail('\\u0000 is not allowed');
257
+ if (u >= 0xd800 && u <= 0xdbff) {
258
+ if (this.s[this.i] !== '\\' || this.s[this.i + 1] !== 'u')
259
+ this.fail('lone surrogate');
260
+ this.i += 2;
261
+ const lo = this.hex4();
262
+ if (lo < 0xdc00 || lo > 0xdfff)
263
+ this.fail('lone surrogate');
264
+ out += String.fromCharCode(u, lo);
265
+ }
266
+ else if (u >= 0xdc00 && u <= 0xdfff) {
267
+ this.fail('lone surrogate');
268
+ }
269
+ else
270
+ out += String.fromCharCode(u);
271
+ break;
272
+ }
273
+ default:
274
+ this.fail('invalid escape');
275
+ }
276
+ start = this.i;
277
+ }
278
+ }
279
+ hex4() {
280
+ const h = this.s.slice(this.i, this.i + 4);
281
+ if (!/^[0-9a-fA-F]{4}$/.test(h))
282
+ this.fail('invalid \\u escape');
283
+ this.i += 4;
284
+ return parseInt(h, 16);
285
+ }
286
+ number() {
287
+ const m = /^-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?/.exec(this.s.slice(this.i, this.i + 400));
288
+ if (!m)
289
+ this.fail('unexpected token');
290
+ this.i += m[0].length;
291
+ return Number(m[0]);
292
+ }
293
+ }
294
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/scene/json.ts"],"names":[],"mappings":"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"}