@just-every/design 0.1.31 → 0.1.33

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.
@@ -1,14 +1,10 @@
1
- const CORE_SEQUENCE = ['create', 'watch', 'extract', 'download', 'iterate'];
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import path from 'node:path';
3
+ const CORE_SEQUENCE = ['create', 'sync', 'check'];
2
4
  const CORE_STEP_BY_TOOL = {
3
5
  'design.create': 'create',
4
- 'design.watch': 'watch',
5
- 'design.extractAssets': 'extract',
6
- 'design.artifacts.download': 'download',
7
- 'design.iterate': 'iterate',
8
- };
9
- const ASSET_POLICY = {
10
- includeAllAssets: true,
11
- ifMissingOrLowQuality: 'request_changes_or_new_assets',
6
+ 'design.sync': 'sync',
7
+ 'design.check': 'check',
12
8
  };
13
9
  function extractRunId(result) {
14
10
  const obj = result;
@@ -100,106 +96,37 @@ function buildGuidance(tool, result, context) {
100
96
  expectedSeconds: 600,
101
97
  reason: 'Design runs typically finish in ~10 minutes, but timing can vary by complexity.',
102
98
  };
103
- guidance.instructions.push('Create starts an async design run and returns immediately.', 'Wait for the run to finish before relying on outputs.', 'Use the run link (guidance.links.runUrl) to review designs and pick another draft.', 'Next: watch the run to completion and sync artifacts locally.', 'After completion, extract assets (or watch with ensureAssets) so you can use them in implementation.', 'When assets are available, include all assets in the UI or request changes/new assets if needed.');
99
+ guidance.instructions.push('Create starts an async design run and returns immediately.', 'CLIs must follow the sequence: design.create -> design.sync -> design.check.', 'Next: sync the run to completion and download assets locally.');
104
100
  if (runId) {
105
101
  const syncDir = context.syncDir?.trim() || defaultSyncDir(runId);
106
102
  guidance.nextActions = [
107
103
  {
108
- tool: 'design.watch',
109
- reason: 'Wait for completion and sync artifacts (including assets).',
110
- input: { runId, syncDir, ensureAssets: true, timeoutSeconds: 3600 },
104
+ tool: 'design.sync',
105
+ reason: 'Wait for completion, extract assets, and sync artifacts locally.',
106
+ input: { runId, syncDir },
111
107
  },
112
108
  ];
113
109
  }
114
- guidance.assetPolicy = ASSET_POLICY;
115
110
  return guidance;
116
111
  }
117
- if (step === 'watch') {
118
- guidance.instructions.push('Watch polls until the run reaches a terminal state or times out.', 'If syncDir is set, artifacts are downloaded and a sync map is written for reuse.', 'With ensureAssets=true, watch will trigger asset extraction if assets are missing.', 'Use the run link (guidance.links.runUrl) to review drafts and select a different target when needed.', 'After syncing, include all assets in the UI or request changes/new assets if any are missing or low quality.');
119
- if (runId && !context.syncDir) {
120
- guidance.nextActions = [
121
- {
122
- tool: 'design.watch',
123
- reason: 'Re-run with syncDir to download artifacts locally.',
124
- input: { runId, syncDir: defaultSyncDir(runId), ensureAssets: true, timeoutSeconds: 3600 },
125
- },
126
- ];
127
- }
128
- guidance.assetPolicy = ASSET_POLICY;
129
- return guidance;
130
- }
131
- if (step === 'extract') {
112
+ if (step === 'sync') {
132
113
  guidance.wait = {
133
- expectedSeconds: 300,
134
- reason: 'Asset extraction is async and can take a few minutes.',
114
+ expectedSeconds: 1800,
115
+ reason: 'Sync can take up to 30 minutes for a fresh design.',
135
116
  };
136
- guidance.instructions.push('Extract triggers the asset-extraction phase for a completed interface run.', 'After triggering, watch the run again to wait for extraction to finish.', 'Sync or download the extracted assets once they appear.', 'Include all assets in the UI or request changes/new assets if anything is missing or low quality.');
137
- if (runId) {
138
- const syncDir = context.syncDir?.trim() || defaultSyncDir(runId);
139
- guidance.nextActions = [
140
- {
141
- tool: 'design.watch',
142
- reason: 'Wait for extraction to finish and sync assets locally.',
143
- input: { runId, syncDir, ensureAssets: false, timeoutSeconds: 3600 },
144
- },
145
- ];
146
- }
147
- guidance.assetPolicy = ASSET_POLICY;
117
+ guidance.instructions.push('Sync waits for completion, extracts assets, and downloads artifacts into a folder.', 'CLIs must follow the sequence: design.create -> design.sync -> design.check.', 'After sync, run design.check with a URL or local HTML file path.');
148
118
  return guidance;
149
119
  }
150
- if (step === 'download') {
151
- guidance.instructions.push('Download fetches a single artifact to a local cache path.', 'Use the filePath directly in your UI implementation.', 'If the asset lacks variants or quality is off, request changes/new assets.', 'After integrating, use iterate to compare your UI against the target.');
152
- guidance.assetPolicy = ASSET_POLICY;
120
+ if (step === 'check') {
121
+ guidance.instructions.push('Check captures a screenshot and compares it to the target design.', 'Apply the guidance, then run design.check again until it matches closely.');
153
122
  return guidance;
154
123
  }
155
- if (step === 'iterate') {
156
- guidance.instructions.push('Iterate compares your implementation screenshots against the target and returns critique guidance.', 'Apply the feedback and incorporate any generated assets.', 'Re-screenshot and iterate again until the UI matches the target closely.');
124
+ if (tool === 'design.instructions') {
125
+ guidance.instructions.push('Use these instructions to follow the required workflow order.');
157
126
  return guidance;
158
127
  }
159
- switch (tool) {
160
- case 'design.list':
161
- guidance.instructions.push('Pick a runId from the list, then call design.get or design.watch.');
162
- return guidance;
163
- case 'design.get':
164
- guidance.instructions.push('If the run is not completed, use design.watch to wait for completion.', 'If completed, list or download artifacts (and extract assets if needed).');
165
- return guidance;
166
- case 'design.generateHtml':
167
- guidance.wait = {
168
- expectedSeconds: 300,
169
- reason: 'HTML generation is async and can take a few minutes.',
170
- };
171
- guidance.instructions.push('Generate HTML triggers code + asset output for interface runs.', 'Watch the run to completion, then sync/download the HTML artifacts.', 'Use extracted assets and HTML previews as implementation references.');
172
- return guidance;
173
- case 'design.refineDraft':
174
- guidance.instructions.push('Refine creates a new draft variant without forking the run.', 'After it completes, set the refined draft as the target if desired.', 'Then extract assets and include them in the UI.');
175
- guidance.assetPolicy = ASSET_POLICY;
176
- return guidance;
177
- case 'design.uploadTarget':
178
- guidance.instructions.push('UploadTarget sets a new target image for the run.', 'After setting the target, extract assets so you can use them in implementation.', 'Include all extracted assets in the UI or request changes/new assets if needed.');
179
- guidance.assetPolicy = ASSET_POLICY;
180
- return guidance;
181
- case 'design.setTarget':
182
- guidance.instructions.push('SetTarget locks the run target to a specific draft image.', 'After setting the target, extract assets for that selection.', 'Include all extracted assets in the UI or request changes/new assets if needed.');
183
- guidance.assetPolicy = ASSET_POLICY;
184
- return guidance;
185
- case 'design.clearTarget':
186
- guidance.instructions.push('ClearTarget removes any explicit target selection.', 'Subsequent extraction will use the default target selection.', 'If you need a specific draft, call design.setTarget first.');
187
- return guidance;
188
- case 'design.events':
189
- guidance.instructions.push('Events are useful for debugging failures or stalled runs.', 'If errors appear, fix them and re-run watch/extract as needed.');
190
- return guidance;
191
- case 'design.artifacts.list':
192
- guidance.instructions.push('Use this list to select artifact ids for download.', 'If assets are missing, run design.extractAssets and watch/sync again.');
193
- guidance.assetPolicy = ASSET_POLICY;
194
- return guidance;
195
- case 'design.artifacts.download':
196
- guidance.instructions.push('Artifact downloaded to local cache.', 'Include it in the UI or request changes/new assets if needed.');
197
- guidance.assetPolicy = ASSET_POLICY;
198
- return guidance;
199
- default:
200
- guidance.instructions.push('No additional guidance available for this tool.');
201
- return guidance;
202
- }
128
+ guidance.instructions.push('No additional guidance available for this tool.');
129
+ return guidance;
203
130
  }
204
131
  export function wrapToolResponse(tool, result, context = {}) {
205
132
  return {
@@ -207,4 +134,413 @@ export function wrapToolResponse(tool, result, context = {}) {
207
134
  guidance: buildGuidance(tool, result, context),
208
135
  };
209
136
  }
137
+ function formatValue(value) {
138
+ if (value === null || value === undefined)
139
+ return '';
140
+ if (typeof value === 'string')
141
+ return value.trim();
142
+ if (typeof value === 'number' || typeof value === 'boolean')
143
+ return String(value);
144
+ return '';
145
+ }
146
+ function extractRun(result) {
147
+ const obj = result;
148
+ if (!obj || typeof obj !== 'object')
149
+ return null;
150
+ return obj.run?.run ?? obj.run ?? null;
151
+ }
152
+ function readTrimmedString(value) {
153
+ return typeof value === 'string' ? value.trim() : '';
154
+ }
155
+ function joinDisplayPath(base, rel) {
156
+ const baseTrim = base.trim();
157
+ const relTrim = rel.trim();
158
+ if (!baseTrim)
159
+ return relTrim;
160
+ if (!relTrim)
161
+ return baseTrim;
162
+ const separator = baseTrim.includes('\\') ? '\\' : '/';
163
+ const baseNormalized = baseTrim.endsWith(separator) ? baseTrim.slice(0, -1) : baseTrim;
164
+ const relNormalized = relTrim.replace(/^[\\/]+/, '');
165
+ return `${baseNormalized}${separator}${relNormalized}`;
166
+ }
167
+ function resolveFilePath(base, rel) {
168
+ if (!base.trim())
169
+ return rel;
170
+ try {
171
+ return path.resolve(base, rel);
172
+ }
173
+ catch {
174
+ return joinDisplayPath(base, rel);
175
+ }
176
+ }
177
+ function readJsonFile(filePath) {
178
+ if (!filePath)
179
+ return null;
180
+ try {
181
+ const raw = readFileSync(filePath, 'utf8');
182
+ if (!raw.trim())
183
+ return null;
184
+ return JSON.parse(raw);
185
+ }
186
+ catch {
187
+ return null;
188
+ }
189
+ }
190
+ function readPngSize(buffer) {
191
+ if (buffer.length < 24)
192
+ return null;
193
+ const signature = buffer.subarray(0, 8);
194
+ const pngSig = Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);
195
+ if (!signature.equals(pngSig))
196
+ return null;
197
+ if (buffer.toString('ascii', 12, 16) !== 'IHDR')
198
+ return null;
199
+ const width = buffer.readUInt32BE(16);
200
+ const height = buffer.readUInt32BE(20);
201
+ if (!width || !height)
202
+ return null;
203
+ return { width, height };
204
+ }
205
+ function readJpegSize(buffer) {
206
+ if (buffer.length < 4)
207
+ return null;
208
+ if (buffer[0] !== 0xff || buffer[1] !== 0xd8)
209
+ return null;
210
+ let offset = 2;
211
+ while (offset + 1 < buffer.length) {
212
+ if (buffer[offset] !== 0xff) {
213
+ offset += 1;
214
+ continue;
215
+ }
216
+ let marker = buffer[offset + 1];
217
+ while (marker === 0xff) {
218
+ offset += 1;
219
+ marker = buffer[offset + 1];
220
+ }
221
+ const markerCode = 0xff00 | marker;
222
+ offset += 2;
223
+ if (markerCode === 0xffd9 || markerCode === 0xffda)
224
+ break;
225
+ if (offset + 2 > buffer.length)
226
+ break;
227
+ const length = buffer.readUInt16BE(offset);
228
+ if (length < 2)
229
+ break;
230
+ const isSof = markerCode === 0xffc0 || markerCode === 0xffc1 || markerCode === 0xffc2 || markerCode === 0xffc3;
231
+ if (isSof && offset + 7 < buffer.length) {
232
+ const height = buffer.readUInt16BE(offset + 3);
233
+ const width = buffer.readUInt16BE(offset + 5);
234
+ if (width && height)
235
+ return { width, height };
236
+ }
237
+ offset += length;
238
+ }
239
+ return null;
240
+ }
241
+ function getImageSize(filePath) {
242
+ if (!filePath || !existsSync(filePath))
243
+ return null;
244
+ const ext = path.extname(filePath).toLowerCase();
245
+ if (ext !== '.png' && ext !== '.jpg' && ext !== '.jpeg')
246
+ return null;
247
+ try {
248
+ const buffer = readFileSync(filePath);
249
+ if (ext === '.png')
250
+ return readPngSize(buffer);
251
+ return readJpegSize(buffer);
252
+ }
253
+ catch {
254
+ return null;
255
+ }
256
+ }
257
+ function buildAssetGuide(syncDir, mapPath) {
258
+ const trimmedDir = syncDir.trim();
259
+ const fallbackMap = trimmedDir ? resolveFilePath(trimmedDir, 'every-design-sync.json') : '';
260
+ const mapData = readJsonFile(mapPath || fallbackMap);
261
+ const files = Array.isArray(mapData?.files) ? mapData.files : [];
262
+ const targetFile = files.find((entry) => typeof entry?.logicalKey === 'string' && entry.logicalKey.startsWith('target-image'))
263
+ || files.find((entry) => entry?.artifactType === 'target-image');
264
+ const targetRel = readTrimmedString(targetFile?.relPath);
265
+ let targetPath = targetRel && trimmedDir ? joinDisplayPath(trimmedDir, targetRel) : '';
266
+ if (!targetPath && trimmedDir) {
267
+ const candidate = resolveFilePath(trimmedDir, path.join('target', 'target.png'));
268
+ if (existsSync(candidate)) {
269
+ targetPath = joinDisplayPath(trimmedDir, path.join('target', 'target.png'));
270
+ }
271
+ }
272
+ let assetPlanAbs = '';
273
+ const assetPlanEntry = files.find((entry) => readTrimmedString(entry?.logicalKey) === 'asset-plan')
274
+ || files.find((entry) => readTrimmedString(entry?.artifactType) === 'asset-plan');
275
+ const assetPlanRel = readTrimmedString(assetPlanEntry?.relPath);
276
+ if (assetPlanRel && trimmedDir) {
277
+ assetPlanAbs = resolveFilePath(trimmedDir, assetPlanRel);
278
+ }
279
+ if (!assetPlanAbs && trimmedDir) {
280
+ const candidate = resolveFilePath(trimmedDir, path.join('assets', 'asset-plan.json'));
281
+ if (existsSync(candidate)) {
282
+ assetPlanAbs = candidate;
283
+ }
284
+ }
285
+ if (!assetPlanAbs && trimmedDir) {
286
+ const candidate = resolveFilePath(trimmedDir, path.join('assets', 'asset_plan.json'));
287
+ if (existsSync(candidate)) {
288
+ assetPlanAbs = candidate;
289
+ }
290
+ }
291
+ const assetPlan = assetPlanAbs ? readJsonFile(assetPlanAbs) : null;
292
+ const planAssets = Array.isArray(assetPlan?.assets) ? assetPlan.assets : [];
293
+ const assetFilesById = new Map();
294
+ for (const entry of files) {
295
+ if (!entry || typeof entry !== 'object')
296
+ continue;
297
+ const artifactType = readTrimmedString(entry.artifactType);
298
+ if (!artifactType.startsWith('asset-'))
299
+ continue;
300
+ const assetId = readTrimmedString(entry?.metadata?.assetId);
301
+ const relPath = readTrimmedString(entry.relPath);
302
+ if (!assetId || !relPath || !trimmedDir)
303
+ continue;
304
+ const display = joinDisplayPath(trimmedDir, relPath);
305
+ const absolute = resolveFilePath(trimmedDir, relPath);
306
+ const bucket = assetFilesById.get(assetId) ?? [];
307
+ bucket.push({ display, absolute });
308
+ assetFilesById.set(assetId, bucket);
309
+ }
310
+ const assets = [];
311
+ for (const asset of planAssets) {
312
+ if (!asset || typeof asset !== 'object')
313
+ continue;
314
+ const id = readTrimmedString(asset.id);
315
+ if (!id)
316
+ continue;
317
+ const matches = [];
318
+ const direct = assetFilesById.get(id);
319
+ if (direct)
320
+ matches.push(...direct);
321
+ if (!direct || direct.length === 0) {
322
+ for (const [key, entries] of assetFilesById.entries()) {
323
+ if (key.startsWith(`${id}_`)) {
324
+ matches.push(...entries);
325
+ }
326
+ }
327
+ }
328
+ const typeValue = readTrimmedString(asset.type) || 'asset';
329
+ const transparentFlag = asset.transparentBackground;
330
+ const transparencyLabel = transparentFlag === true ? 'transparent' : transparentFlag === false ? 'opaque' : '';
331
+ let sizeLabel = '';
332
+ for (const entry of matches) {
333
+ const size = getImageSize(entry.absolute);
334
+ if (size) {
335
+ sizeLabel = `${size.width}x${size.height}px`;
336
+ break;
337
+ }
338
+ }
339
+ const typeParts = [typeValue, transparencyLabel, sizeLabel].filter((part) => part && part.trim());
340
+ const typeLabel = typeParts.join(', ');
341
+ assets.push({
342
+ id,
343
+ assetPaths: matches,
344
+ typeLabel,
345
+ description: readTrimmedString(asset.description),
346
+ location: readTrimmedString(asset.location),
347
+ implementation: readTrimmedString(asset.implementation),
348
+ });
349
+ }
350
+ return { targetPath, assets };
351
+ }
352
+ function titleize(value) {
353
+ if (!value)
354
+ return '';
355
+ const cleaned = value.replace(/[_-]+/g, ' ').trim();
356
+ if (!cleaned)
357
+ return '';
358
+ return cleaned.charAt(0).toUpperCase() + cleaned.slice(1);
359
+ }
360
+ function extractGuidanceLines(iterate, errorText) {
361
+ const lines = [];
362
+ if (errorText) {
363
+ lines.push(`Error: ${errorText}`);
364
+ }
365
+ const summary = readTrimmedString(iterate?.comparison_summary ?? iterate?.comparisonSummary ?? iterate?.summary);
366
+ if (summary) {
367
+ if (lines.length)
368
+ lines.push('');
369
+ lines.push(summary);
370
+ }
371
+ const proposals = iterate?.implementation_proposals ?? iterate?.implementationProposals ?? null;
372
+ if (proposals && typeof proposals === 'object') {
373
+ const items = [];
374
+ for (const value of Object.values(proposals)) {
375
+ if (Array.isArray(value)) {
376
+ for (const item of value) {
377
+ if (typeof item === 'string' && item.trim()) {
378
+ items.push(item.trim());
379
+ }
380
+ }
381
+ }
382
+ }
383
+ if (items.length) {
384
+ if (lines.length)
385
+ lines.push('');
386
+ lines.push('Proposed changes:');
387
+ for (const item of items) {
388
+ lines.push(`- ${item}`);
389
+ }
390
+ }
391
+ }
392
+ const critique = iterate?.critique ?? null;
393
+ if (critique && typeof critique === 'object') {
394
+ const critiqueLines = Object.entries(critique)
395
+ .filter(([, value]) => typeof value === 'string' && value.trim())
396
+ .map(([key, value]) => `${titleize(key)}: ${String(value).trim()}`);
397
+ if (critiqueLines.length) {
398
+ if (lines.length)
399
+ lines.push('');
400
+ lines.push(...critiqueLines);
401
+ }
402
+ }
403
+ return lines;
404
+ }
405
+ export function formatSyncStartMarkdown() {
406
+ return [
407
+ '# design.sync',
408
+ 'Sync waits for completion, extracts assets, and downloads assets into a folder. If this call ends before completion, please call it again to wait for the remainder of the run to complete.',
409
+ '',
410
+ '--- Running ---',
411
+ ].join('\n');
412
+ }
413
+ function buildSyncCompletionLines(response) {
414
+ const { result, guidance } = response;
415
+ const run = extractRun(result);
416
+ const runId = guidance.runId || (run && typeof run.id === 'string' ? run.id : '');
417
+ const synced = result?.synced ?? null;
418
+ const syncDir = readTrimmedString(synced?.dir);
419
+ const mapPath = readTrimmedString(synced?.mapPath);
420
+ const guide = syncDir ? buildAssetGuide(syncDir, mapPath) : { targetPath: '', assets: [] };
421
+ const lines = [];
422
+ lines.push('--- Complete ---');
423
+ if (runId)
424
+ lines.push(`Run ID: ${runId}`);
425
+ if (syncDir)
426
+ lines.push(`Synced dir: ${syncDir}`);
427
+ if (typeof synced?.downloaded === 'number')
428
+ lines.push(`Downloaded: ${synced.downloaded}`);
429
+ if (typeof synced?.skipped === 'number')
430
+ lines.push(`Skipped: ${synced.skipped}`);
431
+ if (mapPath)
432
+ lines.push(`Map: ${mapPath}`);
433
+ lines.push('');
434
+ lines.push('## Instructions');
435
+ lines.push(`Target design: ${guide.targetPath}`);
436
+ lines.push('The target image shows the design you need to recreate. Attempt to recreate it as faithfully as possible (while accomodating responsive design or other requirements) using these assets;');
437
+ for (const asset of guide.assets) {
438
+ lines.push('');
439
+ lines.push(`### ${asset.id}`);
440
+ const assetsLine = asset.assetPaths.map((entry) => entry.display).filter(Boolean).join(', ');
441
+ lines.push(`Assets: ${assetsLine}`);
442
+ lines.push(`Type: ${asset.typeLabel}`);
443
+ lines.push(`Description: ${asset.description}`);
444
+ lines.push(`Location: ${asset.location}`);
445
+ lines.push(`Implementation: ${asset.implementation}`);
446
+ }
447
+ lines.push('');
448
+ lines.push('## Verification');
449
+ lines.push('Once you have integrated the provided assets, run design.check with a URL or local HTML file path.');
450
+ return lines;
451
+ }
452
+ export function formatSyncCompletionMarkdown(response) {
453
+ return buildSyncCompletionLines(response).join('\n');
454
+ }
455
+ function formatCreateMarkdown(response) {
456
+ const { result, guidance } = response;
457
+ const run = extractRun(result);
458
+ const runId = guidance.runId || (run && typeof run.id === 'string' ? run.id : '');
459
+ const runUrl = guidance.links?.runUrl ?? '';
460
+ const status = formatValue(run?.status);
461
+ const lines = [];
462
+ lines.push('# design.create');
463
+ if (runId)
464
+ lines.push(`Run ID: ${runId}`);
465
+ if (runUrl)
466
+ lines.push(`Run URL: ${runUrl} (optionally share with your user so they can review progress)`);
467
+ if (status)
468
+ lines.push(`Status: ${status}`);
469
+ lines.push('');
470
+ lines.push('## Instructions');
471
+ lines.push('The design run has been created. You must follow the sequence: design.create -> design.sync -> design.check.');
472
+ lines.push('1. Call design.sync. This will wait for the run to complete then automatically download the target image and associated assets locally.');
473
+ lines.push('2. Use the target image as your goal. Recreate it in your local codebase using the assets provided.');
474
+ lines.push('3. Call design.check which will provide you with a screenshot of your rendered code and provide guidance on how to get closer to the target design if needed.');
475
+ return lines.join('\n');
476
+ }
477
+ function formatSyncMarkdown(response) {
478
+ const progressLines = Array.isArray(response.result?.progress)
479
+ ? response.result.progress.filter((line) => typeof line === 'string' && line.trim())
480
+ : [];
481
+ if (!progressLines.length) {
482
+ progressLines.push('Progress: 0%');
483
+ }
484
+ const lines = [];
485
+ lines.push(formatSyncStartMarkdown());
486
+ if (progressLines.length) {
487
+ lines.push(...progressLines);
488
+ }
489
+ lines.push('');
490
+ lines.push(...buildSyncCompletionLines(response));
491
+ return lines.join('\n');
492
+ }
493
+ function formatCheckMarkdown(response) {
494
+ const { result, guidance } = response;
495
+ const runId = guidance.runId || '';
496
+ const screenshot = result?.screenshot ?? null;
497
+ const iterate = result?.iterate ?? null;
498
+ const error = result?.error ?? null;
499
+ const errorText = typeof error === 'string'
500
+ ? error.trim()
501
+ : typeof error === 'number' || typeof error === 'boolean'
502
+ ? String(error)
503
+ : error && typeof error === 'object'
504
+ ? JSON.stringify(error)
505
+ : '';
506
+ const guidanceLines = extractGuidanceLines(iterate, errorText);
507
+ const lines = [];
508
+ lines.push('# design.check');
509
+ if (runId)
510
+ lines.push(`Run ID: ${runId}`);
511
+ lines.push('');
512
+ lines.push('## Instructions');
513
+ lines.push('Check captures a screenshot and compares it to the target design.');
514
+ lines.push('Apply the guidance below, then run design.check again until it matches closely.');
515
+ lines.push('');
516
+ lines.push('## Screenshot');
517
+ if (screenshot?.filePath) {
518
+ lines.push(screenshot.filePath);
519
+ }
520
+ lines.push('');
521
+ lines.push('## Guidance');
522
+ if (guidanceLines.length) {
523
+ lines.push(...guidanceLines);
524
+ }
525
+ return lines.join('\n');
526
+ }
527
+ export function formatToolResponseMarkdown(response) {
528
+ const { result, guidance } = response;
529
+ const tool = guidance.tool;
530
+ if (tool === 'design.instructions') {
531
+ const instructions = result?.instructions;
532
+ if (typeof instructions === 'string' && instructions.trim())
533
+ return instructions.trim();
534
+ }
535
+ if (tool === 'design.create') {
536
+ return formatCreateMarkdown(response);
537
+ }
538
+ if (tool === 'design.sync') {
539
+ return formatSyncMarkdown(response);
540
+ }
541
+ if (tool === 'design.check') {
542
+ return formatCheckMarkdown(response);
543
+ }
544
+ return `# ${tool}`;
545
+ }
210
546
  //# sourceMappingURL=response-guidance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"response-guidance.js","sourceRoot":"","sources":["../src/response-guidance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"response-guidance.js","sourceRoot":"","sources":["../src/response-guidance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ declare function which(bin: string): string | null;
2
+ declare function resolveHeadlessBrowserBinary(): string | null;
3
+ export declare function runScreenshotCommand(args: {
4
+ url: string;
5
+ outPath: string;
6
+ width: number;
7
+ height: number;
8
+ waitMs: number;
9
+ }): Promise<{
10
+ screenshotPath: string;
11
+ width: number;
12
+ height: number;
13
+ engine: string;
14
+ binary?: string;
15
+ }>;
16
+ export { resolveHeadlessBrowserBinary, which };
17
+ //# sourceMappingURL=screenshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../src/screenshot.ts"],"names":[],"mappings":"AAMA,iBAAS,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUzC;AAED,iBAAS,4BAA4B,IAAI,MAAM,GAAG,IAAI,CA+BrD;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAE,CAwLvG;AAED,OAAO,EAAE,4BAA4B,EAAE,KAAK,EAAE,CAAC"}