@agent-workshop/adoc-core 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 (64) hide show
  1. package/LICENSE +5 -0
  2. package/THIRD_PARTY_NOTICES.md +49 -0
  3. package/dist/claim.d.ts +17 -0
  4. package/dist/claim.js +35 -0
  5. package/dist/claim.js.map +1 -0
  6. package/dist/client.d.ts +14 -0
  7. package/dist/client.js +49 -0
  8. package/dist/client.js.map +1 -0
  9. package/dist/config.d.ts +39 -0
  10. package/dist/config.js +110 -0
  11. package/dist/config.js.map +1 -0
  12. package/dist/errors.d.ts +6 -0
  13. package/dist/errors.js +13 -0
  14. package/dist/errors.js.map +1 -0
  15. package/dist/fetch.d.ts +19 -0
  16. package/dist/fetch.js +106 -0
  17. package/dist/fetch.js.map +1 -0
  18. package/dist/git.d.ts +1 -0
  19. package/dist/git.js +13 -0
  20. package/dist/git.js.map +1 -0
  21. package/dist/herdr.d.ts +44 -0
  22. package/dist/herdr.js +134 -0
  23. package/dist/herdr.js.map +1 -0
  24. package/dist/home.d.ts +12 -0
  25. package/dist/home.js +43 -0
  26. package/dist/home.js.map +1 -0
  27. package/dist/index.d.ts +18 -0
  28. package/dist/index.js +19 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/messages.d.ts +76 -0
  31. package/dist/messages.js +119 -0
  32. package/dist/messages.js.map +1 -0
  33. package/dist/names.d.ts +14 -0
  34. package/dist/names.js +19 -0
  35. package/dist/names.js.map +1 -0
  36. package/dist/plugins.d.ts +43 -0
  37. package/dist/plugins.js +157 -0
  38. package/dist/plugins.js.map +1 -0
  39. package/dist/registry.d.ts +11 -0
  40. package/dist/registry.js +39 -0
  41. package/dist/registry.js.map +1 -0
  42. package/dist/report.d.ts +3 -0
  43. package/dist/report.js +9 -0
  44. package/dist/report.js.map +1 -0
  45. package/dist/scan.d.ts +35 -0
  46. package/dist/scan.js +163 -0
  47. package/dist/scan.js.map +1 -0
  48. package/dist/server.d.ts +80 -0
  49. package/dist/server.js +576 -0
  50. package/dist/server.js.map +1 -0
  51. package/dist/skills.d.ts +46 -0
  52. package/dist/skills.js +131 -0
  53. package/dist/skills.js.map +1 -0
  54. package/dist/terminal.d.ts +28 -0
  55. package/dist/terminal.js +110 -0
  56. package/dist/terminal.js.map +1 -0
  57. package/dist/transports.d.ts +21 -0
  58. package/dist/transports.js +69 -0
  59. package/dist/transports.js.map +1 -0
  60. package/dist/workspace.d.ts +182 -0
  61. package/dist/workspace.js +392 -0
  62. package/dist/workspace.js.map +1 -0
  63. package/package.json +54 -0
  64. package/skill/SKILL.md +219 -0
@@ -0,0 +1,392 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { mkdir, writeFile } from 'node:fs/promises';
3
+ import { dirname, join, normalize } from 'node:path';
4
+ import { actionResultSchema, describeIssues, sourceDiff, unifiedDiff, summarySchema, } from '@agent-workshop/adoc-plugin-kit';
5
+ import { readConfig } from './config.js';
6
+ import { AdocError, errorMessage } from './errors.js';
7
+ import { isGitRepository } from './git.js';
8
+ import { parseDocumentTarget } from './names.js';
9
+ import { loadPlugins } from './plugins.js';
10
+ import { readDocument, scanDocuments } from './scan.js';
11
+ const VERSIONS_KEPT = 20;
12
+ const REF_ATTRIBUTE = /data-adoc-ref="([^"]+)"/g;
13
+ function stripScripts(htmlText) {
14
+ return htmlText.replace(/<script\b[\s\S]*?<\/script\s*>/gi, '').replace(/\son[a-z]+\s*=\s*("[^"]*"|'[^']*'|[^\s>]+)/gi, '');
15
+ }
16
+ function htmlOf(value) {
17
+ if (typeof value === 'string')
18
+ return value;
19
+ if (value && typeof value.html === 'string')
20
+ return value.html;
21
+ throw new Error('render must return a string or the result of html`…`');
22
+ }
23
+ function unescapeAttribute(value) {
24
+ return value.replace(/&quot;/g, '"').replace(/&#39;/g, "'").replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');
25
+ }
26
+ /**
27
+ * An opened _Adoc_Workspace_: its configuration, loaded plugins and indexed documents.
28
+ * Plugin calls are cached by _Document_Version_; `refresh` rescans after file changes.
29
+ */
30
+ export class Workspace {
31
+ home;
32
+ config;
33
+ plugins = new Map();
34
+ documents = new Map();
35
+ problems = [];
36
+ cache = new Map();
37
+ /** _Document_Version_Store_: recent versions of each document, oldest first. */
38
+ versions = new Map();
39
+ changeCache = new Map();
40
+ revision = 0;
41
+ /** Whether the workspace is inside a git repository, checked on every refresh. */
42
+ git = false;
43
+ constructor(home, config) {
44
+ this.home = home;
45
+ this.config = config;
46
+ }
47
+ static async open(home, env = process.env) {
48
+ const workspace = new Workspace(home, await readConfig(home, env));
49
+ workspace.plugins = await loadPlugins(home, workspace.config);
50
+ await workspace.refresh();
51
+ return workspace;
52
+ }
53
+ /** Reloads every plugin from disk, for example after its index.ts changed, and rescans. */
54
+ async reloadPlugins() {
55
+ this.plugins = await loadPlugins(this.home, this.config, true);
56
+ this.cache.clear();
57
+ this.changeCache.clear();
58
+ this.documents.clear();
59
+ await this.refresh();
60
+ }
61
+ get root() {
62
+ return this.home.workspace;
63
+ }
64
+ get name() {
65
+ return this.root.split('/').pop() ?? this.root;
66
+ }
67
+ /** Rescans the watch paths. Returns the keys whose version changed, appeared or disappeared. */
68
+ async refresh() {
69
+ this.git = await isGitRepository(this.root);
70
+ const scan = await scanDocuments(this.root, this.config.watch, this.plugins);
71
+ const changed = new Set([...this.documents.keys()].filter((k) => !scan.documents.has(k)));
72
+ this.documents = scan.documents;
73
+ this.problems = scan.problems;
74
+ for (const key of [...this.cache.keys()])
75
+ if (!this.documents.has(key))
76
+ this.cache.delete(key);
77
+ for (const record of this.documents.values()) {
78
+ const { doc, version, updatedAt } = await readDocument(this.root, record);
79
+ const cached = this.cache.get(record.key);
80
+ if (cached)
81
+ cached.updatedAt = updatedAt;
82
+ if (cached?.version !== version) {
83
+ this.cache.set(record.key, { version, updatedAt, doc });
84
+ this.remember(record.key, version, doc);
85
+ changed.add(record.key);
86
+ }
87
+ }
88
+ if (changed.size || this.revision === 0)
89
+ this.revision++;
90
+ return [...changed];
91
+ }
92
+ remember(key, version, doc) {
93
+ const kept = this.versions.get(key) ?? new Map();
94
+ const seenAt = kept.get(version)?.seenAt ?? new Date().toISOString();
95
+ kept.delete(version);
96
+ kept.set(version, { doc, seenAt });
97
+ while (kept.size > VERSIONS_KEPT)
98
+ kept.delete(kept.keys().next().value);
99
+ this.versions.set(key, kept);
100
+ }
101
+ /** The changes of a document since `base`: the plugin's renderChanges, or a line diff of the main file. */
102
+ changes(key, base) {
103
+ const entry = this.entry(key);
104
+ if (!entry)
105
+ return undefined;
106
+ const previous = this.versions.get(key)?.get(base)?.doc;
107
+ if (!previous)
108
+ return { base, available: false };
109
+ const cacheKey = `${key}|${base}|${entry.cached.version}`;
110
+ let result = this.changeCache.get(cacheKey);
111
+ if (!result) {
112
+ try {
113
+ const rendered = entry.definition.renderChanges
114
+ ? entry.definition.renderChanges(entry.cached.doc, previous)
115
+ : sourceDiff(previous.text, entry.cached.doc.text, { file: entry.record.file });
116
+ result = { html: stripScripts(htmlOf(rendered)) };
117
+ }
118
+ catch (error) {
119
+ result = { error: errorMessage(error) };
120
+ }
121
+ this.changeCache.set(cacheKey, result);
122
+ }
123
+ return { base, available: true, ...result };
124
+ }
125
+ /** The versions of a document in the _Document_Version_Store_, newest first. */
126
+ storedVersions(key) {
127
+ const entry = this.entry(key);
128
+ if (!entry)
129
+ return undefined;
130
+ return [...(this.versions.get(key)?.entries() ?? [])]
131
+ .map(([version, { seenAt }]) => ({ version, seenAt, current: version === entry.cached.version }))
132
+ .reverse();
133
+ }
134
+ pluginInfos() {
135
+ return [...this.plugins.values()].map((p) => {
136
+ const info = { key: p.key, source: p.source, documents: [...this.documents.values()].filter((d) => d.pluginKey === p.key && !d.archived).length };
137
+ if (p.definition) {
138
+ info.description = p.definition.description;
139
+ info.layout = p.definition.layout.kind === 'file' ? `file ${p.key}-<local id>${p.definition.layout.extension}` : `folder ${p.key}-<local id>/${p.definition.layout.entry}`;
140
+ }
141
+ if (p.directory)
142
+ info.directory = p.directory;
143
+ // Looked up on every call: a plugin may build its client module while the server runs.
144
+ if (p.definition && p.directory && existsSync(join(p.directory, 'client', 'index.js')))
145
+ info.client = { style: existsSync(join(p.directory, 'client', 'index.css')) };
146
+ if (p.skill) {
147
+ info.scope = p.skill.scope;
148
+ info.skill = p.skill.name;
149
+ }
150
+ if (p.error)
151
+ info.error = p.error;
152
+ return info;
153
+ });
154
+ }
155
+ /** Every declared plugin, loaded or failed, in the order of the _Adoc_Config_. */
156
+ loadedPlugins() {
157
+ return [...this.plugins.values()];
158
+ }
159
+ plugin(key) {
160
+ return this.plugins.get(key);
161
+ }
162
+ record(key) {
163
+ return this.documents.get(key);
164
+ }
165
+ definitionOf(record) {
166
+ const definition = this.plugins.get(record.pluginKey)?.definition;
167
+ if (!definition)
168
+ throw new AdocError('plugin.unavailable', `plugin ${record.pluginKey} is not loaded`);
169
+ return definition;
170
+ }
171
+ entry(key) {
172
+ const record = this.documents.get(key);
173
+ const cached = this.cache.get(key);
174
+ if (!record || !cached)
175
+ return undefined;
176
+ return { record, cached, definition: this.definitionOf(record) };
177
+ }
178
+ /** The _Document_Summary_ of a document, computed once per version. */
179
+ summarize(key) {
180
+ const entry = this.entry(key);
181
+ if (!entry)
182
+ return undefined;
183
+ const { cached, definition } = entry;
184
+ if (cached.summary === undefined && cached.summaryError === undefined) {
185
+ try {
186
+ const result = summarySchema.safeParse(definition.summarize(cached.doc));
187
+ if (result.success)
188
+ cached.summary = result.data;
189
+ else
190
+ cached.summaryError = `summarize returned an invalid summary: ${describeIssues(result.error, 'summary')}`;
191
+ }
192
+ catch (error) {
193
+ cached.summaryError = errorMessage(error);
194
+ }
195
+ }
196
+ return cached.summary ? { summary: cached.summary } : { error: cached.summaryError };
197
+ }
198
+ /** The body HTML of a document from its _Plugin_Renderer_, computed once per version. */
199
+ render(key) {
200
+ const entry = this.entry(key);
201
+ if (!entry)
202
+ return undefined;
203
+ const { cached, definition } = entry;
204
+ if (cached.html === undefined && cached.renderError === undefined) {
205
+ try {
206
+ cached.html = stripScripts(htmlOf(definition.render(cached.doc)));
207
+ }
208
+ catch (error) {
209
+ cached.renderError = errorMessage(error);
210
+ }
211
+ }
212
+ return cached.html !== undefined ? { html: cached.html } : { error: cached.renderError };
213
+ }
214
+ /** The _Document_Summary_List_ of one plugin, ordered by key. */
215
+ summaryList(pluginKey) {
216
+ return [...this.documents.values()]
217
+ .filter((d) => d.pluginKey === pluginKey)
218
+ .sort((a, b) => a.key.localeCompare(b.key))
219
+ .map((d) => ({ key: d.key, path: d.path, updatedAt: this.cache.get(d.key).updatedAt, archived: d.archived, ...this.summarize(d.key) }));
220
+ }
221
+ /** _Document_Find_Command_ `list`: the entries of every plugin (or one), archived or not as asked, newest first. */
222
+ findDocuments(options) {
223
+ return [...this.plugins.keys()]
224
+ .filter((pluginKey) => !options.pluginKey || pluginKey === options.pluginKey)
225
+ .flatMap((pluginKey) => this.summaryList(pluginKey).map((entry) => ({ pluginKey, ...entry })))
226
+ .filter((entry) => entry.archived === options.archived)
227
+ .sort((a, b) => b.updatedAt.localeCompare(a.updatedAt) || a.key.localeCompare(b.key));
228
+ }
229
+ /** _Document_Find_Command_ `search`: every line of a document file that contains the text, case-insensitive. */
230
+ searchDocuments(text, options) {
231
+ const needle = text.toLowerCase();
232
+ const hits = [];
233
+ for (const { key } of this.findDocuments(options)) {
234
+ const record = this.documents.get(key);
235
+ for (const [name, content] of Object.entries(this.cache.get(key).doc.files)) {
236
+ const path = record.kind === 'file' ? record.path : `${record.path}/${name}`;
237
+ content.split('\n').forEach((line, i) => {
238
+ if (line.toLowerCase().includes(needle))
239
+ hits.push({ key, path, line: i + 1, text: line.trim() });
240
+ });
241
+ }
242
+ }
243
+ return hits;
244
+ }
245
+ /**
246
+ * Writes the main file that the user edited in the _Document_Editor_, when `version` is still current; answers
247
+ * with the new version and the unified diff from `since` (the text the unsent edits started from) to the new text.
248
+ */
249
+ async editMainFile(key, version, text, since) {
250
+ await this.refresh();
251
+ const entry = this.entry(key);
252
+ if (!entry)
253
+ return { status: 'refused', reason: `${key} no longer exists.` };
254
+ if (entry.cached.version !== version)
255
+ return { status: 'refused', reason: `${key} changed while you were editing; your text is kept, copy it and edit again.` };
256
+ const before = since ?? entry.cached.doc.text;
257
+ await writeFile(join(this.root, entry.record.file), text);
258
+ await this.refresh();
259
+ return { status: 'applied', version: this.cache.get(key).version, diff: unifiedDiff(before, text, entry.record.file) };
260
+ }
261
+ /** The main file of a document with its version, for the elements of a _Plugin_Client_Module_. */
262
+ mainFile(key) {
263
+ const entry = this.entry(key);
264
+ return entry && { key, version: entry.cached.version, file: entry.record.file, text: entry.cached.doc.text };
265
+ }
266
+ view(key) {
267
+ const entry = this.entry(key);
268
+ if (!entry)
269
+ return undefined;
270
+ const summary = this.summarize(key);
271
+ const rendered = this.render(key);
272
+ const view = { key, pluginKey: entry.record.pluginKey, path: entry.record.path, file: entry.record.file, version: entry.cached.version, archived: entry.record.archived };
273
+ if (summary.summary)
274
+ view.summary = summary.summary;
275
+ if (summary.error)
276
+ view.summaryError = summary.error;
277
+ if (rendered.html !== undefined)
278
+ view.html = rendered.html;
279
+ if (rendered.error)
280
+ view.renderError = rendered.error;
281
+ return view;
282
+ }
283
+ /** _Document_Reference_Resolution_: the summary of the referenced document, or `found: false`. */
284
+ resolve(target) {
285
+ const parsed = parseDocumentTarget(target);
286
+ const key = parsed?.key ?? target;
287
+ const record = parsed && this.documents.get(parsed.key);
288
+ if (!record)
289
+ return { found: false, key };
290
+ return { found: true, key, archived: record.archived, ...this.summarize(record.key) };
291
+ }
292
+ /** Every _Document_Reference_ that the renderer of a document marked. */
293
+ references(key) {
294
+ const rendered = this.render(key);
295
+ if (!rendered?.html)
296
+ return [];
297
+ return [...new Set([...rendered.html.matchAll(REF_ATTRIBUTE)].map((m) => unescapeAttribute(m[1])))];
298
+ }
299
+ /** The report of _Adoc_Check_Command_. */
300
+ check() {
301
+ const entries = [];
302
+ if (!this.git)
303
+ entries.push({ level: 'warning', kind: 'no-git', message: `${this.root} is not in a git repository; the agent cannot commit document changes.` });
304
+ for (const plugin of this.plugins.values()) {
305
+ if (plugin.error)
306
+ entries.push({ level: 'error', kind: 'plugin-load', message: `plugin ${plugin.key} (${plugin.source}) failed to load: ${plugin.error}` });
307
+ }
308
+ for (const problem of this.problems) {
309
+ const entry = { level: problem.kind === 'duplicate-key' || problem.kind === 'invalid-local-id' ? 'error' : 'warning', kind: problem.kind, message: problem.message, path: problem.path };
310
+ if (problem.key)
311
+ entry.key = problem.key;
312
+ entries.push(entry);
313
+ }
314
+ for (const record of [...this.documents.values()].sort((a, b) => a.key.localeCompare(b.key))) {
315
+ const summary = this.summarize(record.key);
316
+ if (summary?.error)
317
+ entries.push({ level: 'error', kind: 'parse-error', key: record.key, path: record.file, message: `${record.key}: summarize failed: ${summary.error}` });
318
+ const rendered = this.render(record.key);
319
+ if (rendered?.error)
320
+ entries.push({ level: 'error', kind: 'parse-error', key: record.key, path: record.file, message: `${record.key}: render failed: ${rendered.error}` });
321
+ for (const target of this.references(record.key)) {
322
+ if (!this.resolve(target).found)
323
+ entries.push({ level: 'warning', kind: 'broken-reference', key: record.key, path: record.file, message: `${record.key} refers to ${target}, which does not exist.` });
324
+ }
325
+ }
326
+ return entries;
327
+ }
328
+ /**
329
+ * Handles one _Document_Action_: runs the _Plugin_Action_Handler_ or the _Default_Action_Handler_,
330
+ * refuses a change when the _Document_Version_ moved, writes returned files and returns the message to send.
331
+ */
332
+ async applyAction(key, event, version) {
333
+ const entry = this.entry(key);
334
+ if (!entry)
335
+ return { status: 'refused', reason: `${key} no longer exists.` };
336
+ await this.refresh();
337
+ const fresh = this.entry(key);
338
+ if (!fresh)
339
+ return { status: 'refused', reason: `${key} no longer exists.` };
340
+ const target = event.anchor ? { level: 'anchor', key, anchor: event.anchor } : { level: 'document', key };
341
+ const base = { target, action: event.name, value: event.value, ...(event.to !== undefined ? { to: event.to } : {}) };
342
+ const handler = fresh.definition.actions?.[event.name];
343
+ if (!handler) {
344
+ const value = event.kind === 'drag' ? `${event.value} to ${event.to ?? ''}` : event.kind === 'toggle' ? String(event.checked) : event.value;
345
+ return { status: 'sent', message: { ...base, applied: false, text: `user request: ${event.name} ${value}`.trim() } };
346
+ }
347
+ let result;
348
+ try {
349
+ const raw = handler(fresh.cached.doc, event) ?? {};
350
+ const parsed = actionResultSchema.safeParse(raw);
351
+ if (!parsed.success)
352
+ throw new Error(`action ${event.name} returned an invalid result: ${describeIssues(parsed.error, 'result')}`);
353
+ result = parsed.data;
354
+ }
355
+ catch (error) {
356
+ return { status: 'failed', error: errorMessage(error) };
357
+ }
358
+ const writes = [];
359
+ if (result.text !== undefined)
360
+ writes.push([fresh.record.file, result.text]);
361
+ for (const [rel, content] of Object.entries(result.files ?? {})) {
362
+ if (fresh.record.kind !== 'folder')
363
+ return { status: 'failed', error: `action ${event.name} returned files, but ${key} is a file document; return text instead.` };
364
+ const path = normalize(`${fresh.record.path}/${rel}`);
365
+ if (!path.startsWith(`${fresh.record.path}/`))
366
+ return { status: 'failed', error: `action ${event.name} tried to write outside ${key}: ${rel}` };
367
+ writes.push([path, content]);
368
+ }
369
+ const layout = fresh.definition.layout;
370
+ for (const [extension, content] of Object.entries(result.companions ?? {})) {
371
+ if (layout.kind !== 'file' || !layout.companions?.includes(extension))
372
+ return { status: 'failed', error: `action ${event.name} returned the companion ${extension}, which the layout of ${fresh.record.pluginKey} does not declare.` };
373
+ writes.push([`${fresh.record.path.slice(0, -layout.extension.length)}${extension}`, content]);
374
+ }
375
+ if (writes.length) {
376
+ if (fresh.cached.version !== version)
377
+ return { status: 'refused', reason: `${key} changed after it was shown; reload and try again.` };
378
+ for (const [path, content] of writes) {
379
+ await mkdir(dirname(join(this.root, path)), { recursive: true });
380
+ await writeFile(join(this.root, path), typeof content === 'string' ? content : Buffer.from(content.base64, 'base64'));
381
+ }
382
+ await this.refresh();
383
+ }
384
+ const applied = writes.length > 0;
385
+ // An applied action returns the new version, so that the page can send the next action without reloading first.
386
+ const after = applied ? { version: this.cache.get(key)?.version } : {};
387
+ if (result.message === undefined)
388
+ return { status: applied ? 'applied' : 'sent', ...after };
389
+ return { status: applied ? 'applied' : 'sent', ...after, message: { ...base, applied, text: result.message } };
390
+ }
391
+ }
392
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@agent-workshop/adoc-core",
3
+ "version": "0.1.0",
4
+ "license": "0BSD",
5
+ "type": "module",
6
+ "description": "adoc workspace, plugins, documents, messages, transports and server.",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/dirty49374/adoc.git",
10
+ "directory": "packages/core"
11
+ },
12
+ "files": [
13
+ "dist",
14
+ "skill",
15
+ "LICENSE",
16
+ "THIRD_PARTY_NOTICES.md"
17
+ ],
18
+ "engines": {
19
+ "node": ">=24"
20
+ },
21
+ "publishConfig": {
22
+ "registry": "https://registry.npmjs.org",
23
+ "access": "public"
24
+ },
25
+ "exports": {
26
+ ".": {
27
+ "types": "./dist/index.d.ts",
28
+ "default": "./dist/index.js"
29
+ }
30
+ },
31
+ "dependencies": {
32
+ "semver": "7.8.5",
33
+ "ws": "8.21.3",
34
+ "yaml": "2.9.0",
35
+ "zod": "4.5.4",
36
+ "@agent-workshop/adoc-plugin-kanban": "0.1.0",
37
+ "@agent-workshop/adoc-plugin-note": "0.1.0",
38
+ "@agent-workshop/adoc-plugin-kit": "0.1.0",
39
+ "@agent-workshop/adoc-plugin-sketch": "0.1.0",
40
+ "@agent-workshop/adoc-plugin-task": "0.1.0",
41
+ "@agent-workshop/adoc-plugin-todo": "0.1.0",
42
+ "@agent-workshop/adoc-webapp": "0.1.0"
43
+ },
44
+ "devDependencies": {
45
+ "@types/semver": "7.8.0",
46
+ "@types/ws": "8.18.1",
47
+ "@agent-workshop/adoc-testing": "0.1.0"
48
+ },
49
+ "scripts": {
50
+ "build": "tsc -b",
51
+ "check": "tsc -b && tsc -p test",
52
+ "test": "vitest run --testTimeout 20000"
53
+ }
54
+ }