mockpit 1.2.0 → 2.0.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.
- package/README.md +69 -48
- package/bin/demoData.js +3 -3
- package/bin/mockpit.js +426 -51
- package/dist/mcp/server.js +45 -7
- package/dist/server/apiViews.d.ts +407 -21
- package/dist/server/apiViews.js +110 -11
- package/dist/server/app.d.ts +5 -1
- package/dist/server/app.js +1454 -192
- package/dist/server/codeWorker.js +2 -1
- package/dist/server/decisions.d.ts +23 -0
- package/dist/server/decisions.js +100 -0
- package/dist/server/designGuide.d.ts +6 -2
- package/dist/server/designGuide.js +96 -27
- package/dist/server/embeds.d.ts +26 -0
- package/dist/server/embeds.js +144 -0
- package/dist/server/eventLog.js +2 -1
- package/dist/server/feedbackBatch.d.ts +15 -4
- package/dist/server/feedbackBatch.js +31 -7
- package/dist/server/fills.d.ts +41 -0
- package/dist/server/fills.js +328 -0
- package/dist/server/guidance.d.ts +23 -0
- package/dist/server/guidance.js +71 -0
- package/dist/server/index.js +25 -2
- package/dist/server/knobs.d.ts +6 -2
- package/dist/server/knobs.js +11 -1
- package/dist/server/mcpHttp.d.ts +6 -0
- package/dist/server/mcpHttp.js +35 -0
- package/dist/server/mcpSpec.d.ts +14 -13
- package/dist/server/mcpSpec.js +133 -18
- package/dist/server/postSurfaces.js +6 -12
- package/dist/server/richRender.js +3 -1
- package/dist/server/run.js +10 -1
- package/dist/server/runApi.d.ts +3 -3
- package/dist/server/runApi.js +18 -13
- package/dist/server/sqlStore.d.ts +97 -5
- package/dist/server/sqlStore.js +367 -27
- package/dist/server/surfacePage.d.ts +6 -2
- package/dist/server/surfacePage.js +142 -10
- package/dist/server/themes.d.ts +2 -0
- package/dist/server/themes.js +23 -3
- package/dist/server/types.d.ts +107 -16
- package/dist/server/types.js +73 -10
- package/dist/server/viewerRequest.d.ts +2 -0
- package/dist/server/viewerRequest.js +14 -0
- package/extensions/mockpit.js +179 -16
- package/guide/packs/design-craft.md +35 -0
- package/guide/topics/asks.md +82 -31
- package/guide/topics/feedback.md +151 -43
- package/guide/topics/html.md +8 -10
- package/guide/topics/http.md +8 -4
- package/guide/topics/knobs.md +4 -3
- package/guide/topics/scripts.md +2 -2
- package/guide/topics/surfaces.md +45 -11
- package/package.json +3 -15
- package/skills/launch-video/SKILL.md +2 -2
- package/skills/mockpit/SKILL.md +23 -7
- package/viewer/dist/index.html +9 -8
- package/dist/server/slots.d.ts +0 -14
- package/dist/server/slots.js +0 -71
package/dist/mcp/server.js
CHANGED
|
@@ -144,6 +144,26 @@ async function ensureSession(title) {
|
|
|
144
144
|
sessionId = session.id;
|
|
145
145
|
return sessionId;
|
|
146
146
|
}
|
|
147
|
+
// A poster may name an image file: it travels as an upload, never as bytes in
|
|
148
|
+
// the model's context. Anything else goes through as the asset id it is.
|
|
149
|
+
async function posterId(value, session) {
|
|
150
|
+
if (typeof value !== "string")
|
|
151
|
+
return value;
|
|
152
|
+
try {
|
|
153
|
+
if (!statSync(value).isFile())
|
|
154
|
+
return value;
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
return value;
|
|
158
|
+
}
|
|
159
|
+
const asset = await post("/api/assets", {
|
|
160
|
+
data: readFileSync(value, "base64"),
|
|
161
|
+
contentType: contentTypeForPath(value),
|
|
162
|
+
filename: value.split(/[\\/]/).pop(),
|
|
163
|
+
session,
|
|
164
|
+
});
|
|
165
|
+
return asset.id;
|
|
166
|
+
}
|
|
147
167
|
// Every tool is a pass-through to the REST route the CLI uses, mapped the way
|
|
148
168
|
// server/mcpHttp.ts maps HTTP MCP: same request, same response, so the tiers
|
|
149
169
|
// cannot drift. Only the session (one per conversation), the project (this
|
|
@@ -156,6 +176,8 @@ const handlers = {
|
|
|
156
176
|
...args,
|
|
157
177
|
html,
|
|
158
178
|
parts: readPartFiles(args.parts),
|
|
179
|
+
fills: readPartFiles(args.fills),
|
|
180
|
+
poster: await posterId(args.poster, session),
|
|
159
181
|
session,
|
|
160
182
|
agent: AGENT,
|
|
161
183
|
project: resolveProject(args.project),
|
|
@@ -169,13 +191,15 @@ const handlers = {
|
|
|
169
191
|
project: resolveProject(args.project),
|
|
170
192
|
});
|
|
171
193
|
},
|
|
172
|
-
read: (args) => json(args.mock === undefined
|
|
173
|
-
? `/api/
|
|
174
|
-
:
|
|
175
|
-
project: resolveProject(args.project)
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
194
|
+
read: (args) => json(args.mock === undefined && args.tree === true
|
|
195
|
+
? `/api/projects/${enc(resolveProject(args.project))}/tree`
|
|
196
|
+
: args.mock === undefined
|
|
197
|
+
? `/api/mocks${query({ project: resolveProject(args.project) })}`
|
|
198
|
+
: `/api/mocks/${enc(args.mock)}${query({
|
|
199
|
+
project: resolveProject(args.project),
|
|
200
|
+
body: args.body,
|
|
201
|
+
history: args.history,
|
|
202
|
+
})}`),
|
|
179
203
|
// Never waits: the server reads from the session's cursor, shared with
|
|
180
204
|
// piggyback and `mockpit watch`, so each Send is delivered exactly once.
|
|
181
205
|
async feedback(args) {
|
|
@@ -192,6 +216,20 @@ const handlers = {
|
|
|
192
216
|
message: args.message,
|
|
193
217
|
});
|
|
194
218
|
},
|
|
219
|
+
async edit(args) {
|
|
220
|
+
const session = await ensureSession();
|
|
221
|
+
const project = resolveProject(args.project);
|
|
222
|
+
if (args.rename !== undefined || args.areaOrder !== undefined) {
|
|
223
|
+
if (args.mock !== undefined) {
|
|
224
|
+
throw new Error('"rename" and "areaOrder" edit the project; edit the mock without them');
|
|
225
|
+
}
|
|
226
|
+
return post(`/api/projects/${enc(project)}`, { name: args.rename, areaOrder: args.areaOrder, session }, "PATCH");
|
|
227
|
+
}
|
|
228
|
+
if (typeof args.mock !== "string" || !args.mock) {
|
|
229
|
+
throw new Error('provide "mock", or "rename" / "areaOrder" to edit the project');
|
|
230
|
+
}
|
|
231
|
+
return post(`/api/mocks/${enc(args.mock)}`, { ...args, project, session }, "PATCH");
|
|
232
|
+
},
|
|
195
233
|
export: (args) => json(`/api/mocks/${enc(args.mock)}/export${query({
|
|
196
234
|
project: resolveProject(args.project),
|
|
197
235
|
state: args.state,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type PartInfo } from "./parts.ts";
|
|
2
|
-
import { type Mock, type Post, type PostVersion, type Session, type Surface } from "./types.ts";
|
|
2
|
+
import { type Embed, type KnobValue, type Mock, type Post, type PostVersion, type Session, type Surface } from "./types.ts";
|
|
3
3
|
export declare const surfaceRef: (surface: Pick<Surface, "id" | "kind">, index: number) => {
|
|
4
4
|
id: string | undefined;
|
|
5
5
|
kind: "html" | "diff" | "image" | "markdown" | "terminal" | "mermaid" | "json" | "code";
|
|
@@ -10,6 +10,7 @@ export declare const fullSurfaceView: (surface: Surface, index: number) => {
|
|
|
10
10
|
kind: "html";
|
|
11
11
|
html: string;
|
|
12
12
|
kits?: string[];
|
|
13
|
+
poster?: string;
|
|
13
14
|
id?: string;
|
|
14
15
|
} | {
|
|
15
16
|
index: number;
|
|
@@ -56,11 +57,12 @@ export declare const fullSurfaceView: (surface: Surface, index: number) => {
|
|
|
56
57
|
lineStart?: number;
|
|
57
58
|
id?: string;
|
|
58
59
|
};
|
|
59
|
-
export declare const hydratedSurfaceView: (surface: Surface, index: number) =>
|
|
60
|
+
export declare const hydratedSurfaceView: (surface: Surface, index: number) => {
|
|
60
61
|
index: number;
|
|
61
62
|
kind: "html";
|
|
62
63
|
html: string;
|
|
63
64
|
kits?: string[];
|
|
65
|
+
poster?: string;
|
|
64
66
|
id?: string;
|
|
65
67
|
} | {
|
|
66
68
|
index: number;
|
|
@@ -106,8 +108,18 @@ export declare const hydratedSurfaceView: (surface: Surface, index: number) => R
|
|
|
106
108
|
title?: string;
|
|
107
109
|
lineStart?: number;
|
|
108
110
|
id?: string;
|
|
109
|
-
}
|
|
111
|
+
} | Record<string, unknown>;
|
|
110
112
|
export declare const historyMetaView: (version: PostVersion) => {
|
|
113
|
+
poster: string;
|
|
114
|
+
surfaceKinds: ("html" | "diff" | "image" | "markdown" | "terminal" | "mermaid" | "json" | "code")[];
|
|
115
|
+
author?: string | undefined;
|
|
116
|
+
prompt?: string | undefined;
|
|
117
|
+
from?: number | undefined;
|
|
118
|
+
version: number;
|
|
119
|
+
title: string;
|
|
120
|
+
at: string;
|
|
121
|
+
} | {
|
|
122
|
+
poster?: undefined;
|
|
111
123
|
surfaceKinds: ("html" | "diff" | "image" | "markdown" | "terminal" | "mermaid" | "json" | "code")[];
|
|
112
124
|
author?: string | undefined;
|
|
113
125
|
prompt?: string | undefined;
|
|
@@ -119,9 +131,18 @@ export declare const historyMetaView: (version: PostVersion) => {
|
|
|
119
131
|
export interface VariantViewOptions {
|
|
120
132
|
body?: boolean;
|
|
121
133
|
history?: boolean;
|
|
134
|
+
embeds?: Map<string, EmbedView>;
|
|
135
|
+
}
|
|
136
|
+
export interface EmbedView {
|
|
137
|
+
key: string;
|
|
138
|
+
list: (Embed & {
|
|
139
|
+
latest: number;
|
|
140
|
+
versions: number[];
|
|
141
|
+
})[];
|
|
122
142
|
}
|
|
123
143
|
export declare const variantView: (post: Post, opts?: VariantViewOptions) => {
|
|
124
|
-
history?: {
|
|
144
|
+
history?: ({
|
|
145
|
+
poster: string;
|
|
125
146
|
surfaceKinds: ("html" | "diff" | "image" | "markdown" | "terminal" | "mermaid" | "json" | "code")[];
|
|
126
147
|
author?: string | undefined;
|
|
127
148
|
prompt?: string | undefined;
|
|
@@ -129,13 +150,43 @@ export declare const variantView: (post: Post, opts?: VariantViewOptions) => {
|
|
|
129
150
|
version: number;
|
|
130
151
|
title: string;
|
|
131
152
|
at: string;
|
|
132
|
-
}
|
|
153
|
+
} | {
|
|
154
|
+
poster?: undefined;
|
|
155
|
+
surfaceKinds: ("html" | "diff" | "image" | "markdown" | "terminal" | "mermaid" | "json" | "code")[];
|
|
156
|
+
author?: string | undefined;
|
|
157
|
+
prompt?: string | undefined;
|
|
158
|
+
from?: number | undefined;
|
|
159
|
+
version: number;
|
|
160
|
+
title: string;
|
|
161
|
+
at: string;
|
|
162
|
+
} | {
|
|
163
|
+
hidden: true;
|
|
164
|
+
poster: string;
|
|
165
|
+
surfaceKinds: ("html" | "diff" | "image" | "markdown" | "terminal" | "mermaid" | "json" | "code")[];
|
|
166
|
+
author?: string | undefined;
|
|
167
|
+
prompt?: string | undefined;
|
|
168
|
+
from?: number | undefined;
|
|
169
|
+
version: number;
|
|
170
|
+
title: string;
|
|
171
|
+
at: string;
|
|
172
|
+
} | {
|
|
173
|
+
hidden: true;
|
|
174
|
+
poster?: undefined;
|
|
175
|
+
surfaceKinds: ("html" | "diff" | "image" | "markdown" | "terminal" | "mermaid" | "json" | "code")[];
|
|
176
|
+
author?: string | undefined;
|
|
177
|
+
prompt?: string | undefined;
|
|
178
|
+
from?: number | undefined;
|
|
179
|
+
version: number;
|
|
180
|
+
title: string;
|
|
181
|
+
at: string;
|
|
182
|
+
})[] | undefined;
|
|
133
183
|
parts: string[];
|
|
134
|
-
surfaces: (
|
|
184
|
+
surfaces: ({
|
|
135
185
|
index: number;
|
|
136
186
|
kind: "html";
|
|
137
187
|
html: string;
|
|
138
188
|
kits?: string[];
|
|
189
|
+
poster?: string;
|
|
139
190
|
id?: string;
|
|
140
191
|
} | {
|
|
141
192
|
index: number;
|
|
@@ -181,64 +232,285 @@ export declare const variantView: (post: Post, opts?: VariantViewOptions) => {
|
|
|
181
232
|
title?: string;
|
|
182
233
|
lineStart?: number;
|
|
183
234
|
id?: string;
|
|
184
|
-
})[];
|
|
185
|
-
|
|
186
|
-
|
|
235
|
+
} | Record<string, unknown>)[];
|
|
236
|
+
inUseVersion?: number | undefined;
|
|
237
|
+
starred?: boolean | undefined;
|
|
238
|
+
forkedFrom?: import("./types.ts").ForkRef | undefined;
|
|
239
|
+
publishedWith?: Embed[] | undefined;
|
|
240
|
+
embeds?: (Embed & {
|
|
241
|
+
latest: number;
|
|
242
|
+
versions: number[];
|
|
243
|
+
})[] | undefined;
|
|
244
|
+
embedsKey?: string | undefined;
|
|
245
|
+
note?: string | undefined;
|
|
246
|
+
fills?: import("./fills.ts").SlotInfo[] | undefined;
|
|
247
|
+
knobs?: {
|
|
248
|
+
[x: string]: import("./types.ts").KnobConfig;
|
|
249
|
+
} | undefined;
|
|
187
250
|
author?: string | undefined;
|
|
188
251
|
prompt?: string | undefined;
|
|
189
252
|
from?: number | undefined;
|
|
190
253
|
postId: string;
|
|
191
254
|
state: string | null;
|
|
192
255
|
variant: string;
|
|
193
|
-
status: import("./types.ts").
|
|
256
|
+
status: import("./types.ts").VariantStatus;
|
|
194
257
|
version: number;
|
|
195
258
|
title: string;
|
|
196
259
|
sessionId: string;
|
|
197
260
|
createdAt: string;
|
|
198
261
|
updatedAt: string;
|
|
199
262
|
};
|
|
263
|
+
export declare const inUseByState: (mock: Mock, posts: Post[]) => {
|
|
264
|
+
state: string | null;
|
|
265
|
+
variant: string;
|
|
266
|
+
version: number;
|
|
267
|
+
}[];
|
|
200
268
|
export interface StateParts {
|
|
201
269
|
state: string | null;
|
|
202
270
|
parts: PartInfo[];
|
|
203
271
|
}
|
|
204
272
|
export declare function partsByState(mock: Mock, posts: Post[]): StateParts[];
|
|
273
|
+
export declare const placeOf: (mock: Pick<Mock, "area" | "source">) => {
|
|
274
|
+
area?: string;
|
|
275
|
+
source?: string;
|
|
276
|
+
};
|
|
205
277
|
export declare const mockSummaryView: (mock: Mock, posts: Post[]) => {
|
|
206
278
|
sessionId: string | null;
|
|
279
|
+
closedAt: string | null;
|
|
207
280
|
createdAt: string;
|
|
208
281
|
updatedAt: string;
|
|
209
282
|
thumbnail: {
|
|
283
|
+
poster?: string | undefined;
|
|
210
284
|
postId: string;
|
|
211
285
|
surface: number;
|
|
212
286
|
version: number;
|
|
213
287
|
} | null;
|
|
214
288
|
drafted?: number | undefined;
|
|
289
|
+
stateCount: number;
|
|
290
|
+
variants: number;
|
|
291
|
+
open: number;
|
|
292
|
+
situations: Record<string, string[]>;
|
|
293
|
+
states: string[];
|
|
294
|
+
area?: string;
|
|
295
|
+
source?: string;
|
|
215
296
|
id: string;
|
|
216
297
|
project: string;
|
|
217
298
|
slug: string;
|
|
218
299
|
title: string;
|
|
219
300
|
kind: import("./types.ts").MockKind;
|
|
220
|
-
|
|
301
|
+
} | {
|
|
302
|
+
sessionId: string | null;
|
|
303
|
+
closedAt: string | null;
|
|
304
|
+
createdAt: string;
|
|
305
|
+
updatedAt: string;
|
|
306
|
+
thumbnail: {
|
|
307
|
+
poster?: string | undefined;
|
|
308
|
+
postId: string;
|
|
309
|
+
surface: number;
|
|
310
|
+
version: number;
|
|
311
|
+
} | null;
|
|
312
|
+
drafted?: number | undefined;
|
|
221
313
|
stateCount: number;
|
|
222
314
|
variants: number;
|
|
223
315
|
open: number;
|
|
316
|
+
situations?: undefined;
|
|
317
|
+
states: string[];
|
|
318
|
+
area?: string;
|
|
319
|
+
source?: string;
|
|
320
|
+
id: string;
|
|
321
|
+
project: string;
|
|
322
|
+
slug: string;
|
|
323
|
+
title: string;
|
|
324
|
+
kind: import("./types.ts").MockKind;
|
|
224
325
|
};
|
|
225
326
|
export declare const mockDetailView: (mock: Mock, posts: Post[], opts?: VariantViewOptions & {
|
|
226
|
-
|
|
327
|
+
settled?: Record<string, KnobValue>;
|
|
227
328
|
}) => {
|
|
329
|
+
asks: import("./types.ts").Ask[];
|
|
330
|
+
open: number;
|
|
331
|
+
knobs: import("./types.ts").Knobs;
|
|
332
|
+
widths: number[];
|
|
333
|
+
sessionId: string | null;
|
|
334
|
+
closedAt: string | null;
|
|
335
|
+
createdAt: string;
|
|
336
|
+
updatedAt: string;
|
|
337
|
+
variants: {
|
|
338
|
+
history?: ({
|
|
339
|
+
poster: string;
|
|
340
|
+
surfaceKinds: ("html" | "diff" | "image" | "markdown" | "terminal" | "mermaid" | "json" | "code")[];
|
|
341
|
+
author?: string | undefined;
|
|
342
|
+
prompt?: string | undefined;
|
|
343
|
+
from?: number | undefined;
|
|
344
|
+
version: number;
|
|
345
|
+
title: string;
|
|
346
|
+
at: string;
|
|
347
|
+
} | {
|
|
348
|
+
poster?: undefined;
|
|
349
|
+
surfaceKinds: ("html" | "diff" | "image" | "markdown" | "terminal" | "mermaid" | "json" | "code")[];
|
|
350
|
+
author?: string | undefined;
|
|
351
|
+
prompt?: string | undefined;
|
|
352
|
+
from?: number | undefined;
|
|
353
|
+
version: number;
|
|
354
|
+
title: string;
|
|
355
|
+
at: string;
|
|
356
|
+
} | {
|
|
357
|
+
hidden: true;
|
|
358
|
+
poster: string;
|
|
359
|
+
surfaceKinds: ("html" | "diff" | "image" | "markdown" | "terminal" | "mermaid" | "json" | "code")[];
|
|
360
|
+
author?: string | undefined;
|
|
361
|
+
prompt?: string | undefined;
|
|
362
|
+
from?: number | undefined;
|
|
363
|
+
version: number;
|
|
364
|
+
title: string;
|
|
365
|
+
at: string;
|
|
366
|
+
} | {
|
|
367
|
+
hidden: true;
|
|
368
|
+
poster?: undefined;
|
|
369
|
+
surfaceKinds: ("html" | "diff" | "image" | "markdown" | "terminal" | "mermaid" | "json" | "code")[];
|
|
370
|
+
author?: string | undefined;
|
|
371
|
+
prompt?: string | undefined;
|
|
372
|
+
from?: number | undefined;
|
|
373
|
+
version: number;
|
|
374
|
+
title: string;
|
|
375
|
+
at: string;
|
|
376
|
+
})[] | undefined;
|
|
377
|
+
parts: string[];
|
|
378
|
+
surfaces: ({
|
|
379
|
+
index: number;
|
|
380
|
+
kind: "html";
|
|
381
|
+
html: string;
|
|
382
|
+
kits?: string[];
|
|
383
|
+
poster?: string;
|
|
384
|
+
id?: string;
|
|
385
|
+
} | {
|
|
386
|
+
index: number;
|
|
387
|
+
kind: "diff";
|
|
388
|
+
patch?: string;
|
|
389
|
+
files?: import("./types.ts").DiffFile[];
|
|
390
|
+
layout?: "unified" | "split";
|
|
391
|
+
id?: string;
|
|
392
|
+
} | {
|
|
393
|
+
index: number;
|
|
394
|
+
kind: "image";
|
|
395
|
+
assetId: string;
|
|
396
|
+
alt?: string;
|
|
397
|
+
caption?: string;
|
|
398
|
+
id?: string;
|
|
399
|
+
} | {
|
|
400
|
+
index: number;
|
|
401
|
+
kind: "markdown";
|
|
402
|
+
markdown: string;
|
|
403
|
+
id?: string;
|
|
404
|
+
} | {
|
|
405
|
+
index: number;
|
|
406
|
+
kind: "terminal";
|
|
407
|
+
text: string;
|
|
408
|
+
cols?: number;
|
|
409
|
+
title?: string;
|
|
410
|
+
id?: string;
|
|
411
|
+
} | {
|
|
412
|
+
index: number;
|
|
413
|
+
kind: "mermaid";
|
|
414
|
+
mermaid: string;
|
|
415
|
+
id?: string;
|
|
416
|
+
} | {
|
|
417
|
+
index: number;
|
|
418
|
+
kind: "json";
|
|
419
|
+
data: unknown;
|
|
420
|
+
id?: string;
|
|
421
|
+
} | {
|
|
422
|
+
index: number;
|
|
423
|
+
kind: "code";
|
|
424
|
+
code: string;
|
|
425
|
+
language?: string;
|
|
426
|
+
title?: string;
|
|
427
|
+
lineStart?: number;
|
|
428
|
+
id?: string;
|
|
429
|
+
} | Record<string, unknown>)[];
|
|
430
|
+
inUseVersion?: number | undefined;
|
|
431
|
+
starred?: boolean | undefined;
|
|
432
|
+
forkedFrom?: import("./types.ts").ForkRef | undefined;
|
|
433
|
+
publishedWith?: Embed[] | undefined;
|
|
434
|
+
embeds?: (Embed & {
|
|
435
|
+
latest: number;
|
|
436
|
+
versions: number[];
|
|
437
|
+
})[] | undefined;
|
|
438
|
+
embedsKey?: string | undefined;
|
|
439
|
+
note?: string | undefined;
|
|
440
|
+
fills?: import("./fills.ts").SlotInfo[] | undefined;
|
|
441
|
+
knobs?: {
|
|
442
|
+
[x: string]: import("./types.ts").KnobConfig;
|
|
443
|
+
} | undefined;
|
|
444
|
+
author?: string | undefined;
|
|
445
|
+
prompt?: string | undefined;
|
|
446
|
+
from?: number | undefined;
|
|
447
|
+
postId: string;
|
|
448
|
+
state: string | null;
|
|
449
|
+
variant: string;
|
|
450
|
+
status: import("./types.ts").VariantStatus;
|
|
451
|
+
version: number;
|
|
452
|
+
title: string;
|
|
453
|
+
sessionId: string;
|
|
454
|
+
createdAt: string;
|
|
455
|
+
updatedAt: string;
|
|
456
|
+
}[];
|
|
457
|
+
inUse: {
|
|
458
|
+
state: string | null;
|
|
459
|
+
variant: string;
|
|
460
|
+
version: number;
|
|
461
|
+
}[];
|
|
462
|
+
parts: StateParts[];
|
|
463
|
+
settled: Record<string, KnobValue>;
|
|
464
|
+
situations: Record<string, string[]>;
|
|
465
|
+
states: string[];
|
|
466
|
+
area?: string;
|
|
467
|
+
source?: string;
|
|
228
468
|
id: string;
|
|
229
469
|
project: string;
|
|
230
470
|
slug: string;
|
|
231
471
|
title: string;
|
|
232
472
|
kind: import("./types.ts").MockKind;
|
|
233
|
-
|
|
473
|
+
} | {
|
|
234
474
|
asks: import("./types.ts").Ask[];
|
|
235
475
|
open: number;
|
|
236
476
|
knobs: import("./types.ts").Knobs;
|
|
477
|
+
widths: number[];
|
|
237
478
|
sessionId: string | null;
|
|
479
|
+
closedAt: string | null;
|
|
238
480
|
createdAt: string;
|
|
239
481
|
updatedAt: string;
|
|
240
482
|
variants: {
|
|
241
|
-
history?: {
|
|
483
|
+
history?: ({
|
|
484
|
+
poster: string;
|
|
485
|
+
surfaceKinds: ("html" | "diff" | "image" | "markdown" | "terminal" | "mermaid" | "json" | "code")[];
|
|
486
|
+
author?: string | undefined;
|
|
487
|
+
prompt?: string | undefined;
|
|
488
|
+
from?: number | undefined;
|
|
489
|
+
version: number;
|
|
490
|
+
title: string;
|
|
491
|
+
at: string;
|
|
492
|
+
} | {
|
|
493
|
+
poster?: undefined;
|
|
494
|
+
surfaceKinds: ("html" | "diff" | "image" | "markdown" | "terminal" | "mermaid" | "json" | "code")[];
|
|
495
|
+
author?: string | undefined;
|
|
496
|
+
prompt?: string | undefined;
|
|
497
|
+
from?: number | undefined;
|
|
498
|
+
version: number;
|
|
499
|
+
title: string;
|
|
500
|
+
at: string;
|
|
501
|
+
} | {
|
|
502
|
+
hidden: true;
|
|
503
|
+
poster: string;
|
|
504
|
+
surfaceKinds: ("html" | "diff" | "image" | "markdown" | "terminal" | "mermaid" | "json" | "code")[];
|
|
505
|
+
author?: string | undefined;
|
|
506
|
+
prompt?: string | undefined;
|
|
507
|
+
from?: number | undefined;
|
|
508
|
+
version: number;
|
|
509
|
+
title: string;
|
|
510
|
+
at: string;
|
|
511
|
+
} | {
|
|
512
|
+
hidden: true;
|
|
513
|
+
poster?: undefined;
|
|
242
514
|
surfaceKinds: ("html" | "diff" | "image" | "markdown" | "terminal" | "mermaid" | "json" | "code")[];
|
|
243
515
|
author?: string | undefined;
|
|
244
516
|
prompt?: string | undefined;
|
|
@@ -246,13 +518,14 @@ export declare const mockDetailView: (mock: Mock, posts: Post[], opts?: VariantV
|
|
|
246
518
|
version: number;
|
|
247
519
|
title: string;
|
|
248
520
|
at: string;
|
|
249
|
-
}[] | undefined;
|
|
521
|
+
})[] | undefined;
|
|
250
522
|
parts: string[];
|
|
251
|
-
surfaces: (
|
|
523
|
+
surfaces: ({
|
|
252
524
|
index: number;
|
|
253
525
|
kind: "html";
|
|
254
526
|
html: string;
|
|
255
527
|
kits?: string[];
|
|
528
|
+
poster?: string;
|
|
256
529
|
id?: string;
|
|
257
530
|
} | {
|
|
258
531
|
index: number;
|
|
@@ -298,24 +571,50 @@ export declare const mockDetailView: (mock: Mock, posts: Post[], opts?: VariantV
|
|
|
298
571
|
title?: string;
|
|
299
572
|
lineStart?: number;
|
|
300
573
|
id?: string;
|
|
301
|
-
})[];
|
|
302
|
-
|
|
303
|
-
|
|
574
|
+
} | Record<string, unknown>)[];
|
|
575
|
+
inUseVersion?: number | undefined;
|
|
576
|
+
starred?: boolean | undefined;
|
|
577
|
+
forkedFrom?: import("./types.ts").ForkRef | undefined;
|
|
578
|
+
publishedWith?: Embed[] | undefined;
|
|
579
|
+
embeds?: (Embed & {
|
|
580
|
+
latest: number;
|
|
581
|
+
versions: number[];
|
|
582
|
+
})[] | undefined;
|
|
583
|
+
embedsKey?: string | undefined;
|
|
584
|
+
note?: string | undefined;
|
|
585
|
+
fills?: import("./fills.ts").SlotInfo[] | undefined;
|
|
586
|
+
knobs?: {
|
|
587
|
+
[x: string]: import("./types.ts").KnobConfig;
|
|
588
|
+
} | undefined;
|
|
304
589
|
author?: string | undefined;
|
|
305
590
|
prompt?: string | undefined;
|
|
306
591
|
from?: number | undefined;
|
|
307
592
|
postId: string;
|
|
308
593
|
state: string | null;
|
|
309
594
|
variant: string;
|
|
310
|
-
status: import("./types.ts").
|
|
595
|
+
status: import("./types.ts").VariantStatus;
|
|
311
596
|
version: number;
|
|
312
597
|
title: string;
|
|
313
598
|
sessionId: string;
|
|
314
599
|
createdAt: string;
|
|
315
600
|
updatedAt: string;
|
|
316
601
|
}[];
|
|
602
|
+
inUse: {
|
|
603
|
+
state: string | null;
|
|
604
|
+
variant: string;
|
|
605
|
+
version: number;
|
|
606
|
+
}[];
|
|
317
607
|
parts: StateParts[];
|
|
318
|
-
|
|
608
|
+
settled: Record<string, KnobValue>;
|
|
609
|
+
situations?: undefined;
|
|
610
|
+
states: string[];
|
|
611
|
+
area?: string;
|
|
612
|
+
source?: string;
|
|
613
|
+
id: string;
|
|
614
|
+
project: string;
|
|
615
|
+
slug: string;
|
|
616
|
+
title: string;
|
|
617
|
+
kind: import("./types.ts").MockKind;
|
|
319
618
|
};
|
|
320
619
|
export declare const sessionRowView: (session: Session, postCount: number) => {
|
|
321
620
|
postCount: number;
|
|
@@ -330,3 +629,90 @@ export declare const sessionRowView: (session: Session, postCount: number) => {
|
|
|
330
629
|
agentActiveAt: string | null;
|
|
331
630
|
keyed: boolean;
|
|
332
631
|
};
|
|
632
|
+
export declare const treeNodeView: (mock: Mock, posts: Post[], extra: {
|
|
633
|
+
settled: Record<string, KnobValue>;
|
|
634
|
+
embeds: string[];
|
|
635
|
+
embedViews: Map<string, EmbedView>;
|
|
636
|
+
}) => {
|
|
637
|
+
open: number;
|
|
638
|
+
states: string[] | null[];
|
|
639
|
+
widths: number[];
|
|
640
|
+
createdAt: string;
|
|
641
|
+
updatedAt: string;
|
|
642
|
+
closedAt: string | null;
|
|
643
|
+
settled: Record<string, KnobValue>;
|
|
644
|
+
embeds: string[];
|
|
645
|
+
embeddedIn: string[];
|
|
646
|
+
inUse: {
|
|
647
|
+
state: string | null;
|
|
648
|
+
variant: string;
|
|
649
|
+
version: number;
|
|
650
|
+
}[];
|
|
651
|
+
variants: ({
|
|
652
|
+
embedsKey?: string | undefined;
|
|
653
|
+
inUseVersion?: number | undefined;
|
|
654
|
+
starred?: boolean | undefined;
|
|
655
|
+
forkedFrom?: import("./types.ts").ForkRef | undefined;
|
|
656
|
+
note?: string | undefined;
|
|
657
|
+
inUsePoster?: undefined;
|
|
658
|
+
poster: string;
|
|
659
|
+
postId: string;
|
|
660
|
+
state: string | null;
|
|
661
|
+
variant: string;
|
|
662
|
+
status: import("./types.ts").VariantStatus;
|
|
663
|
+
version: number;
|
|
664
|
+
updatedAt: string;
|
|
665
|
+
surface: number;
|
|
666
|
+
} | {
|
|
667
|
+
embedsKey?: string | undefined;
|
|
668
|
+
inUseVersion?: number | undefined;
|
|
669
|
+
starred?: boolean | undefined;
|
|
670
|
+
forkedFrom?: import("./types.ts").ForkRef | undefined;
|
|
671
|
+
note?: string | undefined;
|
|
672
|
+
inUsePoster: string;
|
|
673
|
+
poster: string;
|
|
674
|
+
postId: string;
|
|
675
|
+
state: string | null;
|
|
676
|
+
variant: string;
|
|
677
|
+
status: import("./types.ts").VariantStatus;
|
|
678
|
+
version: number;
|
|
679
|
+
updatedAt: string;
|
|
680
|
+
surface: number;
|
|
681
|
+
} | {
|
|
682
|
+
embedsKey?: string | undefined;
|
|
683
|
+
inUseVersion?: number | undefined;
|
|
684
|
+
starred?: boolean | undefined;
|
|
685
|
+
forkedFrom?: import("./types.ts").ForkRef | undefined;
|
|
686
|
+
note?: string | undefined;
|
|
687
|
+
inUsePoster?: undefined;
|
|
688
|
+
poster?: undefined;
|
|
689
|
+
postId: string;
|
|
690
|
+
state: string | null;
|
|
691
|
+
variant: string;
|
|
692
|
+
status: import("./types.ts").VariantStatus;
|
|
693
|
+
version: number;
|
|
694
|
+
updatedAt: string;
|
|
695
|
+
surface: number;
|
|
696
|
+
} | {
|
|
697
|
+
embedsKey?: string | undefined;
|
|
698
|
+
inUseVersion?: number | undefined;
|
|
699
|
+
starred?: boolean | undefined;
|
|
700
|
+
forkedFrom?: import("./types.ts").ForkRef | undefined;
|
|
701
|
+
note?: string | undefined;
|
|
702
|
+
inUsePoster: string;
|
|
703
|
+
poster?: undefined;
|
|
704
|
+
postId: string;
|
|
705
|
+
state: string | null;
|
|
706
|
+
variant: string;
|
|
707
|
+
status: import("./types.ts").VariantStatus;
|
|
708
|
+
version: number;
|
|
709
|
+
updatedAt: string;
|
|
710
|
+
surface: number;
|
|
711
|
+
})[];
|
|
712
|
+
area?: string;
|
|
713
|
+
source?: string;
|
|
714
|
+
id: string;
|
|
715
|
+
slug: string;
|
|
716
|
+
title: string;
|
|
717
|
+
kind: import("./types.ts").MockKind;
|
|
718
|
+
};
|