@cogitator-ai/studio 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 (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +74 -0
  3. package/dist/host/checkpoints.d.ts +11 -0
  4. package/dist/host/checkpoints.d.ts.map +1 -0
  5. package/dist/host/checkpoints.js +43 -0
  6. package/dist/host/checkpoints.js.map +1 -0
  7. package/dist/host/main.d.ts +2 -0
  8. package/dist/host/main.d.ts.map +1 -0
  9. package/dist/host/main.js +49 -0
  10. package/dist/host/main.js.map +1 -0
  11. package/dist/host/project.d.ts +22 -0
  12. package/dist/host/project.d.ts.map +1 -0
  13. package/dist/host/project.js +88 -0
  14. package/dist/host/project.js.map +1 -0
  15. package/dist/host/runner.d.ts +58 -0
  16. package/dist/host/runner.d.ts.map +1 -0
  17. package/dist/host/runner.js +507 -0
  18. package/dist/host/runner.js.map +1 -0
  19. package/dist/index.d.ts +8 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +5 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/protocol.d.ts +398 -0
  24. package/dist/protocol.d.ts.map +1 -0
  25. package/dist/protocol.js +7 -0
  26. package/dist/protocol.js.map +1 -0
  27. package/dist/registry.d.ts +8 -0
  28. package/dist/registry.d.ts.map +1 -0
  29. package/dist/registry.js +119 -0
  30. package/dist/registry.js.map +1 -0
  31. package/dist/server/host-manager.d.ts +52 -0
  32. package/dist/server/host-manager.d.ts.map +1 -0
  33. package/dist/server/host-manager.js +267 -0
  34. package/dist/server/host-manager.js.map +1 -0
  35. package/dist/server/server.d.ts +41 -0
  36. package/dist/server/server.d.ts.map +1 -0
  37. package/dist/server/server.js +437 -0
  38. package/dist/server/server.js.map +1 -0
  39. package/dist/server/store.d.ts +88 -0
  40. package/dist/server/store.d.ts.map +1 -0
  41. package/dist/server/store.js +602 -0
  42. package/dist/server/store.js.map +1 -0
  43. package/dist/ui/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  44. package/dist/ui/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  45. package/dist/ui/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  46. package/dist/ui/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  47. package/dist/ui/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  48. package/dist/ui/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  49. package/dist/ui/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  50. package/dist/ui/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  51. package/dist/ui/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  52. package/dist/ui/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  53. package/dist/ui/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  54. package/dist/ui/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  55. package/dist/ui/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  56. package/dist/ui/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  57. package/dist/ui/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  58. package/dist/ui/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  59. package/dist/ui/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  60. package/dist/ui/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  61. package/dist/ui/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  62. package/dist/ui/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
  63. package/dist/ui/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
  64. package/dist/ui/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
  65. package/dist/ui/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
  66. package/dist/ui/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2 +0 -0
  67. package/dist/ui/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2 +0 -0
  68. package/dist/ui/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2 +0 -0
  69. package/dist/ui/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2 +0 -0
  70. package/dist/ui/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2 +0 -0
  71. package/dist/ui/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2 +0 -0
  72. package/dist/ui/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
  73. package/dist/ui/assets/icons-f6vmKzId.js +1 -0
  74. package/dist/ui/assets/index-C4hZIqRf.js +8 -0
  75. package/dist/ui/assets/index-D3MDAGJQ.css +1 -0
  76. package/dist/ui/assets/markdown-B0lQtlaX.js +39 -0
  77. package/dist/ui/assets/math-D93AjGz5.css +1 -0
  78. package/dist/ui/assets/math-Dyab3dfo.js +257 -0
  79. package/dist/ui/assets/react-Oh0PCTUB.js +9 -0
  80. package/dist/ui/favicon.svg +1 -0
  81. package/dist/ui/index.html +21 -0
  82. package/dist/ui/theme.js +4 -0
  83. package/package.json +90 -0
@@ -0,0 +1,398 @@
1
+ /**
2
+ * What the studio's three parts say to each other: the runtime host (a child
3
+ * process that runs the project), the server, and the UI in the browser. The
4
+ * file has no imports, so the UI bundle can share it.
5
+ */
6
+ export interface ToolInfo {
7
+ name: string;
8
+ description: string;
9
+ /** JSON Schema of the arguments. */
10
+ parameters: unknown;
11
+ requiresApproval: boolean;
12
+ }
13
+ export interface AgentInfo {
14
+ /** The key the registry exports it under. */
15
+ key: string;
16
+ name: string;
17
+ description?: string;
18
+ /** `provider/model`, absent when the agent takes the runtime's default model. */
19
+ model?: string;
20
+ instructions: string;
21
+ tools: ToolInfo[];
22
+ }
23
+ export interface WorkflowEdgeInfo {
24
+ type: string;
25
+ from: string;
26
+ to: string[];
27
+ }
28
+ export interface WorkflowInfo {
29
+ key: string;
30
+ name: string;
31
+ entryPoint: string;
32
+ nodes: string[];
33
+ edges: WorkflowEdgeInfo[];
34
+ /** The state the workflow starts from, as JSON, the default input of a run. */
35
+ initialState: unknown;
36
+ }
37
+ export interface SwarmInfo {
38
+ key: string;
39
+ name: string;
40
+ strategy: string;
41
+ agents: string[];
42
+ }
43
+ export interface RegistryInfo {
44
+ /** The runtime's `llm.defaultModel`, which agents without a model of their own run on. */
45
+ defaultModel?: string;
46
+ agents: AgentInfo[];
47
+ workflows: WorkflowInfo[];
48
+ swarms: SwarmInfo[];
49
+ }
50
+ export interface UsageInfo {
51
+ inputTokens: number;
52
+ outputTokens: number;
53
+ /** USD, as the provider reported it or priced from the model registry. */
54
+ cost: number;
55
+ /** Whether `cost` is known: false when no model of the run has a price. */
56
+ priced?: boolean;
57
+ duration: number;
58
+ }
59
+ /** A span of a run as the trace shows it, with its own cost when it is a model call. */
60
+ export interface SpanRecord {
61
+ id: string;
62
+ parentId?: string;
63
+ name: string;
64
+ kind: 'llm' | 'tool' | 'agent' | 'handoff' | 'other';
65
+ status: 'ok' | 'error' | 'unset';
66
+ startTime: number;
67
+ endTime: number;
68
+ duration: number;
69
+ model?: string;
70
+ inputTokens?: number;
71
+ outputTokens?: number;
72
+ /** USD of a model call, `undefined` when the model's price is unknown. */
73
+ cost?: number;
74
+ attributes: Record<string, unknown>;
75
+ }
76
+ export interface ToolCallRecord {
77
+ id: string;
78
+ name: string;
79
+ arguments: unknown;
80
+ result?: unknown;
81
+ error?: string;
82
+ approval?: {
83
+ id: string;
84
+ status: 'waiting' | 'approved' | 'rejected';
85
+ reason?: string;
86
+ };
87
+ }
88
+ export type RunStatus = 'running' | 'waiting' | 'completed' | 'failed' | 'stopped';
89
+ export interface WorkflowNodeRecord {
90
+ name: string;
91
+ status: 'pending' | 'running' | 'completed' | 'failed' | 'skipped';
92
+ startedAt?: number;
93
+ duration?: number;
94
+ output?: unknown;
95
+ error?: string;
96
+ }
97
+ /** A run the studio keeps: an agent run, a workflow run, or a fork of an agent run. */
98
+ export interface RunRecord {
99
+ id: string;
100
+ kind: 'agent' | 'workflow' | 'fork';
101
+ /** Registry key of the agent or workflow. */
102
+ target: string;
103
+ /** The agent's own name, which nested runs are found by. */
104
+ agentName?: string;
105
+ threadId?: string;
106
+ input: string;
107
+ output?: string;
108
+ reasoning?: string;
109
+ status: RunStatus;
110
+ error?: string;
111
+ startedAt: number;
112
+ endedAt?: number;
113
+ model?: string;
114
+ toolCalls: ToolCallRecord[];
115
+ spans: SpanRecord[];
116
+ usage?: UsageInfo;
117
+ /** Runs of agents this run's tools started, in the order they started. */
118
+ children: string[];
119
+ parentRunId?: string;
120
+ /** The tool call of the parent run that started this run. */
121
+ parentToolCallId?: string;
122
+ /** Tool-call steps a fork can start from: 0 is before the first tool call. */
123
+ steps?: StepRecord[];
124
+ forkOf?: ForkOrigin;
125
+ /** Runs forked from this one. */
126
+ forks: string[];
127
+ nodes?: WorkflowNodeRecord[];
128
+ /** The workflow manager's id of the run, which a rerun starts from. */
129
+ workflowRunId?: string;
130
+ rerunOf?: {
131
+ runId: string;
132
+ fromNode: string;
133
+ };
134
+ }
135
+ export interface StepRecord {
136
+ index: number;
137
+ checkpointId: string;
138
+ label: string;
139
+ /** Tool calls made before this step. */
140
+ toolCalls: Array<{
141
+ name: string;
142
+ result: unknown;
143
+ }>;
144
+ }
145
+ export interface ForkOrigin {
146
+ runId: string;
147
+ step: number;
148
+ input?: string;
149
+ context?: string;
150
+ toolResults?: Record<string, unknown>;
151
+ }
152
+ /** An agent or workflow with what its runs did, for the overview. */
153
+ export interface TargetStats {
154
+ target: string;
155
+ kind: 'agent' | 'workflow';
156
+ /** Every run of it, the ones agent tools started included. */
157
+ runs: number;
158
+ failed: number;
159
+ cost: number;
160
+ priced: boolean;
161
+ lastRunAt: number;
162
+ }
163
+ /** Aggregates over every run the studio keeps. */
164
+ export interface StudioStats {
165
+ /** Runs started from the studio, nested ones not counted. */
166
+ runs: number;
167
+ byStatus: Record<RunStatus, number>;
168
+ /** USD of every run, nested ones included. */
169
+ cost: number;
170
+ /** Whether any run had a known price. */
171
+ priced: boolean;
172
+ inputTokens: number;
173
+ outputTokens: number;
174
+ /** Wall time in ms of the finished runs started from the studio, `null` before the first. */
175
+ duration: {
176
+ p50: number;
177
+ p95: number;
178
+ } | null;
179
+ /** Runs started from the studio per local day, oldest first, today last. */
180
+ activity: Array<{
181
+ day: number;
182
+ runs: number;
183
+ failed: number;
184
+ }>;
185
+ /** Busiest first. */
186
+ targets: TargetStats[];
187
+ }
188
+ /** A conversation with an agent across runs. */
189
+ export interface ThreadRecord {
190
+ id: string;
191
+ agent: string;
192
+ title: string;
193
+ createdAt: number;
194
+ updatedAt: number;
195
+ runs: string[];
196
+ }
197
+ export interface ForkRequest {
198
+ step: number;
199
+ input?: string;
200
+ context?: string;
201
+ toolResults?: Record<string, unknown>;
202
+ }
203
+ /** What the host reports while it runs things. */
204
+ export type HostEvent = {
205
+ type: 'run.started';
206
+ runId: string;
207
+ kind: RunRecord['kind'];
208
+ target: string;
209
+ agentName?: string;
210
+ input: string;
211
+ threadId?: string;
212
+ model?: string;
213
+ rootRunId: string;
214
+ startedAt: number;
215
+ forkOf?: ForkOrigin;
216
+ rerunOf?: {
217
+ runId: string;
218
+ fromNode: string;
219
+ };
220
+ } | {
221
+ type: 'run.token';
222
+ runId: string;
223
+ text: string;
224
+ } | {
225
+ type: 'run.reasoning';
226
+ runId: string;
227
+ text: string;
228
+ } | {
229
+ type: 'run.tool.call';
230
+ runId: string;
231
+ call: {
232
+ id: string;
233
+ name: string;
234
+ arguments: unknown;
235
+ };
236
+ } | {
237
+ type: 'run.tool.result';
238
+ runId: string;
239
+ callId: string;
240
+ result: unknown;
241
+ error?: string;
242
+ } | {
243
+ type: 'run.approval';
244
+ runId: string;
245
+ approvalId: string;
246
+ callId: string;
247
+ toolName: string;
248
+ arguments: unknown;
249
+ description: string;
250
+ } | {
251
+ type: 'run.approval.decided';
252
+ runId: string;
253
+ approvalId: string;
254
+ approved: boolean;
255
+ reason?: string;
256
+ } | {
257
+ type: 'run.span';
258
+ runId: string;
259
+ span: RawSpan;
260
+ } | {
261
+ type: 'run.completed';
262
+ runId: string;
263
+ output: string;
264
+ usage: UsageInfo;
265
+ endedAt: number;
266
+ /** Every tool call of the run with its result, also those no callback reported. */
267
+ toolCalls?: Array<{
268
+ id: string;
269
+ name: string;
270
+ arguments: unknown;
271
+ result?: unknown;
272
+ error?: string;
273
+ }>;
274
+ steps?: StepRecord[];
275
+ workflowRunId?: string;
276
+ } | {
277
+ type: 'run.failed';
278
+ runId: string;
279
+ error: string;
280
+ endedAt: number;
281
+ stopped: boolean;
282
+ } | {
283
+ type: 'workflow.node';
284
+ runId: string;
285
+ node: string;
286
+ status: WorkflowNodeRecord['status'];
287
+ at: number;
288
+ duration?: number;
289
+ output?: unknown;
290
+ error?: string;
291
+ };
292
+ /** A span as the runtime reports it. */
293
+ export interface RawSpan {
294
+ id: string;
295
+ traceId: string;
296
+ parentId?: string;
297
+ name: string;
298
+ status: 'ok' | 'error' | 'unset';
299
+ startTime: number;
300
+ endTime: number;
301
+ duration: number;
302
+ attributes: Record<string, unknown>;
303
+ }
304
+ /** What the server pushes to the UI over server-sent events. */
305
+ export type StudioEvent = {
306
+ type: 'host';
307
+ status: HostStatus;
308
+ } | {
309
+ type: 'run';
310
+ run: RunRecord;
311
+ } | {
312
+ type: 'token';
313
+ runId: string;
314
+ text: string;
315
+ } | {
316
+ type: 'reasoning';
317
+ runId: string;
318
+ text: string;
319
+ } | {
320
+ type: 'thread';
321
+ thread: ThreadRecord;
322
+ };
323
+ export type HostStatus = {
324
+ state: 'starting';
325
+ } | {
326
+ state: 'ready';
327
+ registry: RegistryInfo;
328
+ memory: 'project' | 'studio';
329
+ loadedAt: number;
330
+ } | {
331
+ state: 'failed';
332
+ error: string;
333
+ } | {
334
+ state: 'restarting';
335
+ reason: string;
336
+ };
337
+ /** Requests the server sends the host. */
338
+ export type HostRequest = {
339
+ type: 'chat';
340
+ requestId: string;
341
+ agent: string;
342
+ input: string;
343
+ threadId: string;
344
+ history: HistoryMessage[];
345
+ } | {
346
+ type: 'stop';
347
+ requestId: string;
348
+ runId: string;
349
+ } | {
350
+ type: 'approve';
351
+ requestId: string;
352
+ approvalId: string;
353
+ approved: boolean;
354
+ reason?: string;
355
+ } | {
356
+ type: 'fork';
357
+ requestId: string;
358
+ run: RunRecord;
359
+ fork: ForkRequest;
360
+ } | {
361
+ type: 'workflow.run';
362
+ requestId: string;
363
+ workflow: string;
364
+ input: unknown;
365
+ } | {
366
+ type: 'workflow.rerun';
367
+ requestId: string;
368
+ run: RunRecord;
369
+ fromNode: string;
370
+ };
371
+ /** A message of a thread, replayed into a fresh memory when the host restarts. */
372
+ export interface HistoryMessage {
373
+ role: 'user' | 'assistant';
374
+ content: string;
375
+ }
376
+ /** Messages from the host to the server. */
377
+ export type HostMessage = {
378
+ type: 'ready';
379
+ registry: RegistryInfo;
380
+ memory: 'project' | 'studio';
381
+ } | {
382
+ type: 'load-failed';
383
+ error: string;
384
+ } | {
385
+ type: 'event';
386
+ event: HostEvent;
387
+ } | {
388
+ type: 'response';
389
+ requestId: string;
390
+ ok: true;
391
+ data: unknown;
392
+ } | {
393
+ type: 'response';
394
+ requestId: string;
395
+ ok: false;
396
+ error: string;
397
+ };
398
+ //# sourceMappingURL=protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,EAAE,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,+EAA+E;IAC/E,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,0FAA0F;IAC1F,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wFAAwF;AACxF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;IACrD,MAAM,EAAE,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACzF;AAED,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEnF,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,uFAAuF;AACvF,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;IACpC,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8EAA8E;IAC9E,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,iCAAiC;IACjC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC7B,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,qEAAqE;AACrE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,GAAG,UAAU,CAAC;IAC3B,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,kDAAkD;AAClD,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACpC,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,6FAA6F;IAC7F,QAAQ,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9C,4EAA4E;IAC5E,QAAQ,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,qBAAqB;IACrB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,gDAAgD;AAChD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,kDAAkD;AAClD,MAAM,MAAM,SAAS,GACjB;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C,GACD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAA;CAAE,GAChG;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3F;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,GACD;IACE,IAAI,EAAE,sBAAsB,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GACD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAClD;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,OAAO,CAAC;QACnB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GACD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACvF;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEN,wCAAwC;AACxC,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,gEAAgE;AAChE,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,SAAS,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,CAAC;AAE7C,MAAM,MAAM,UAAU,GAClB;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,GACrB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC1F;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5C,0CAA0C;AAC1C,MAAM,MAAM,WAAW,GACnB;IACE,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B,GACD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9F;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC7E;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpF,kFAAkF;AAClF,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,4CAA4C;AAC5C,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * What the studio's three parts say to each other: the runtime host (a child
3
+ * process that runs the project), the server, and the UI in the browser. The
4
+ * file has no imports, so the UI bundle can share it.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,8 @@
1
+ import type { RegistryInfo } from './protocol.js';
2
+ /** Where a scaffolded project registers its agents, workflows and swarms. */
3
+ export declare const REGISTRY_PATH = "src/cogitator.ts";
4
+ type UnknownRecord = Record<string, unknown>;
5
+ /** The agents, workflows and swarms a registry module exports, as plain data. */
6
+ export declare function describeRegistry(module: UnknownRecord): RegistryInfo;
7
+ export {};
8
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,YAAY,EAAqC,MAAM,eAAe,CAAC;AAEhG,6EAA6E;AAC7E,eAAO,MAAM,aAAa,qBAAqB,CAAC;AAWhD,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAuG7C,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,YAAY,CAQpE"}
@@ -0,0 +1,119 @@
1
+ /** Where a scaffolded project registers its agents, workflows and swarms. */
2
+ export const REGISTRY_PATH = 'src/cogitator.ts';
3
+ /** `value` as plain JSON, `null` for what JSON cannot hold. */
4
+ function jsonSafe(value) {
5
+ try {
6
+ return JSON.parse(JSON.stringify(value ?? null));
7
+ }
8
+ catch {
9
+ return null;
10
+ }
11
+ }
12
+ function isRecord(value) {
13
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
14
+ }
15
+ function stringOf(value) {
16
+ return typeof value === 'string' ? value : undefined;
17
+ }
18
+ /**
19
+ * The agent behind a value, judged by shape: the project and the CLI may load
20
+ * different copies of @cogitator-ai/core, so `instanceof Agent` cannot be used.
21
+ */
22
+ function agentShape(value) {
23
+ if (!isRecord(value) || !isRecord(value.config))
24
+ return undefined;
25
+ if (typeof value.config.name !== 'string' || typeof value.config.instructions !== 'string') {
26
+ return undefined;
27
+ }
28
+ return { config: value.config, tools: Array.isArray(value.tools) ? value.tools : [] };
29
+ }
30
+ function describeTool(value) {
31
+ if (!isRecord(value) || typeof value.name !== 'string')
32
+ return undefined;
33
+ const schema = typeof value.toJSON === 'function' ? value.toJSON() : undefined;
34
+ return {
35
+ name: value.name,
36
+ description: stringOf(value.description) ?? '',
37
+ parameters: isRecord(schema) ? schema.parameters : undefined,
38
+ requiresApproval: value.requiresApproval !== undefined && value.requiresApproval !== false,
39
+ };
40
+ }
41
+ function describeAgent(key, value) {
42
+ const agent = agentShape(value);
43
+ if (!agent)
44
+ return undefined;
45
+ const { config } = agent;
46
+ return {
47
+ key,
48
+ name: String(config.name),
49
+ ...(stringOf(config.description) && { description: stringOf(config.description) }),
50
+ ...(stringOf(config.model) && { model: stringOf(config.model) }),
51
+ instructions: String(config.instructions),
52
+ tools: agent.tools.map(describeTool).filter((tool) => tool !== undefined),
53
+ };
54
+ }
55
+ function describeWorkflow(key, value) {
56
+ if (!isRecord(value) || !(value.nodes instanceof Map) || typeof value.entryPoint !== 'string') {
57
+ return undefined;
58
+ }
59
+ const edges = Array.isArray(value.edges) ? value.edges.filter(isRecord) : [];
60
+ return {
61
+ key,
62
+ name: stringOf(value.name) ?? key,
63
+ entryPoint: value.entryPoint,
64
+ initialState: jsonSafe(value.initialState),
65
+ nodes: [...value.nodes.keys()].map(String),
66
+ edges: edges.map((edge) => {
67
+ const targets = [edge.to, edge.targets, edge.back, edge.exit].flatMap((target) => Array.isArray(target) ? target.map(String) : typeof target === 'string' ? [target] : []);
68
+ return { type: stringOf(edge.type) ?? 'sequential', from: String(edge.from), to: targets };
69
+ }),
70
+ };
71
+ }
72
+ function describeSwarm(key, value) {
73
+ if (!isRecord(value) || typeof value.strategy !== 'string')
74
+ return undefined;
75
+ const names = new Set();
76
+ const add = (candidate) => {
77
+ const agent = agentShape(candidate);
78
+ if (agent)
79
+ names.add(String(agent.config.name));
80
+ };
81
+ for (const field of ['supervisor', 'moderator', 'router'])
82
+ add(value[field]);
83
+ for (const field of ['workers', 'agents']) {
84
+ const list = value[field];
85
+ if (Array.isArray(list))
86
+ list.forEach(add);
87
+ }
88
+ if (Array.isArray(value.stages)) {
89
+ for (const stage of value.stages)
90
+ if (isRecord(stage))
91
+ add(stage.agent);
92
+ }
93
+ return { key, name: stringOf(value.name) ?? key, strategy: value.strategy, agents: [...names] };
94
+ }
95
+ function describeGroup(group, describe) {
96
+ if (!isRecord(group))
97
+ return [];
98
+ return Object.entries(group)
99
+ .map(([key, value]) => describe(key, value))
100
+ .filter((item) => item !== undefined);
101
+ }
102
+ /** `llm.defaultModel` of the runtime the registry exports as `cogitator`. */
103
+ function defaultModelOf(runtime) {
104
+ if (!isRecord(runtime) || !isRecord(runtime.config) || !isRecord(runtime.config.llm)) {
105
+ return undefined;
106
+ }
107
+ return stringOf(runtime.config.llm.defaultModel);
108
+ }
109
+ /** The agents, workflows and swarms a registry module exports, as plain data. */
110
+ export function describeRegistry(module) {
111
+ const defaultModel = defaultModelOf(module.cogitator);
112
+ return {
113
+ ...(defaultModel && { defaultModel }),
114
+ agents: describeGroup(module.agents, describeAgent),
115
+ workflows: describeGroup(module.workflows, describeWorkflow),
116
+ swarms: describeGroup(module.swarms, describeSwarm),
117
+ };
118
+ }
119
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import type { HostEvent, HostRequest, HostStatus } from '../protocol.js';
2
+ /** Distributes `Omit` over a union, so each request keeps its own fields. */
3
+ type WithoutId<T> = T extends unknown ? Omit<T, 'requestId'> : never;
4
+ export interface HostManagerOptions {
5
+ projectDir: string;
6
+ studioDir: string;
7
+ /** Restart the host when the project changes (default `true`). */
8
+ watch?: boolean;
9
+ onStatus: (status: HostStatus) => void;
10
+ onEvent: (event: HostEvent) => void;
11
+ /** Runs still going when the host goes away. */
12
+ onLost: (reason: string) => void;
13
+ /** Output of the project's own code. */
14
+ onOutput?: (line: string, stream: 'stdout' | 'stderr') => void;
15
+ /** How long the project may take to load (default 60 s). */
16
+ loadTimeoutMs?: number;
17
+ }
18
+ /** Whether a change of `path` (relative to the project) should reload it. */
19
+ export declare function reloadsProject(path: string): boolean;
20
+ /**
21
+ * Keeps the runtime host running for the studio: starts it, sends it
22
+ * requests, and starts it again when the project changes, so the studio
23
+ * process and the browser stay while the code reloads.
24
+ */
25
+ export declare class HostManager {
26
+ private readonly options;
27
+ private child?;
28
+ private status;
29
+ private readonly pending;
30
+ private readonly waiters;
31
+ private watcher?;
32
+ private debounce?;
33
+ private closed;
34
+ private generation;
35
+ constructor(options: HostManagerOptions);
36
+ get current(): HostStatus;
37
+ start(): void;
38
+ private setStatus;
39
+ private spawn;
40
+ private failPending;
41
+ private stopChild;
42
+ /** Starts the host again, with the project as it is now. */
43
+ restart(reason: string): Promise<void>;
44
+ private watchProject;
45
+ /** Resolves once the project is loaded; rejects when it failed to load. */
46
+ ready(timeoutMs?: number): Promise<void>;
47
+ /** Sends a request to the host once the project is loaded. */
48
+ request<T>(request: WithoutId<HostRequest>): Promise<T>;
49
+ close(): Promise<void>;
50
+ }
51
+ export {};
52
+ //# sourceMappingURL=host-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-manager.d.ts","sourceRoot":"","sources":["../../src/server/host-manager.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAe,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEtF,6EAA6E;AAC7E,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,GAAG,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC;AAErE,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACvC,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACpC,gDAAgD;IAChD,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,wCAAwC;IACxC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAC;IAC/D,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAeD,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKpD;AA2BD;;;;GAIG;AACH,qBAAa,WAAW;IAUV,OAAO,CAAC,QAAQ,CAAC,OAAO;IATpC,OAAO,CAAC,KAAK,CAAC,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsE;IAC9F,OAAO,CAAC,OAAO,CAAC,CAAY;IAC5B,OAAO,CAAC,QAAQ,CAAC,CAAgC;IACjD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAK;gBAEM,OAAO,EAAE,kBAAkB;IAExD,IAAI,OAAO,IAAI,UAAU,CAExB;IAED,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,KAAK;IAmFb,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,SAAS;IAcjB,4DAA4D;IACtD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5C,OAAO,CAAC,YAAY;IAoBpB,2EAA2E;IAC3E,KAAK,CAAC,SAAS,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBxC,8DAA8D;IACxD,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAevD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7B"}