@vibes.diy/prompts 2.2.1 → 2.2.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibes.diy/prompts",
3
- "version": "2.2.1",
3
+ "version": "2.2.2",
4
4
  "type": "module",
5
5
  "main": "./index.js",
6
6
  "description": "",
@@ -30,8 +30,8 @@
30
30
  "@fireproof/core-types-base": "~0.24.19",
31
31
  "@fireproof/core-types-protocols-cloud": "~0.24.19",
32
32
  "@fireproof/use-fireproof": "~0.24.19",
33
- "@vibes.diy/call-ai-v2": "^2.2.1",
34
- "@vibes.diy/use-vibes-types": "^2.2.1",
33
+ "@vibes.diy/call-ai-v2": "^2.2.2",
34
+ "@vibes.diy/use-vibes-types": "^2.2.2",
35
35
  "arktype": "~2.2.0",
36
36
  "json-schema-faker": "~0.6.1"
37
37
  },
package/prompts.js CHANGED
@@ -155,8 +155,8 @@ export async function makeBaseSystemPrompt(model, sessionDoc) {
155
155
  "- Don't try to generate png or base64 data, use placeholder image APIs instead, like https://picsum.photos/400 where 400 is the square size",
156
156
  "- Never use emojis in the UI. Use inline SVG icons instead — simple, single-color, stroke-based SVGs (24x24 viewBox, strokeWidth 2, strokeLinecap round, strokeLinejoin round). Build icons directly in JSX, do not import icon libraries.",
157
157
  "- Consider and potentially reuse/extend code from previous responses if relevant",
158
- "- Always output the full component code, keep the explanation short and concise",
159
- "- Never also output a small snippet to change, just the full component code",
158
+ "- Build incrementally: start with a minimal working layout, then interleave short prose descriptions with focused edits that grow the app. The user sees the preview update as each edit lands, so each step should leave the app in a working state.",
159
+ "- Each replace edit re-mounts the live preview, so component-local state (form inputs, scroll position) resets between edits. If your app needs persisted UI state during demos, store it in Fireproof rather than React local state.",
160
160
  "- Keep your component file as short as possible for fast updates",
161
161
  "- IMPORTANT: Never change the database name from what it was in the previous code. Changing the database name loses all existing user data. If the previous code used a specific database name, you MUST use that exact same name.",
162
162
  "- The system can send you crash reports, fix them by simplifying the affected code",
@@ -178,20 +178,96 @@ export async function makeBaseSystemPrompt(model, sessionDoc) {
178
178
  "",
179
179
  ...titleLines,
180
180
  ...(userPrompt ? [userPrompt, ""] : []),
181
- "IMPORTANT: You are working in one JavaScript file. Define a classNames object just before the JSX return for colors and repeated styles, then reference it in your JSX.",
181
+ "IMPORTANT: You are working in one JavaScript file (`App.jsx`). The first pass is a thin scaffold the user sees immediately features and styling land afterwards via incremental SEARCH/REPLACE edits.",
182
182
  "",
183
183
  "Before writing code, provide a title and brief description of the app. Then list the top 3 features that are the best fit for a mobile web database with real-time collaboration and describe a short planned workflow showing how those features connect into a coherent user experience.",
184
184
  "",
185
- "Then write the full component code block. After the code block, add a short message (1-2 sentences) describing the core workflow the app supports.",
185
+ "## Output format (incremental edits)",
186
186
  "",
187
- "Begin the component with the import statements. Use react and the following libraries:",
187
+ "Every code block must be preceded by the file name on its own line. The file is `App.jsx`.",
188
188
  "",
189
- "```js",
190
- `import React, { ... } from "react"${generateImportStatements(chosenLlms)}`,
189
+ "**After the description prose, emit a thin scaffold as a single fenced block. Target ~40 lines.** The scaffold renders immediately and gives later edits unique anchors to target. It must contain:",
190
+ "- the import statements (react + the libraries listed below)",
191
+ "- a `classNames` object with one **empty-string** key per major region (`page`, `header`, plus one per feature). Names only — do NOT fill in Tailwind class strings here; long value strings are slow to stream. Values land via edits.",
192
+ "- a small stub function component per feature (`function FeatureOne() {...}`, etc.) — each is a unique SEARCH target, and replacing one is naturally a 10–20 line edit",
193
+ '- a default-exported `App` function that composes them inside a `<main id="app">` with `<header id="app-header">`',
194
+ '- name the section ids and feature components after the features you just described (e.g. for a kanban board: `id="board"`, `id="add-task"`, `id="ai-expand"`), not literal `feature-one`',
195
+ "- plain JSX placeholders in each stub (e.g. `<h2>Feature</h2>` and a `{/* ... */}` comment)",
196
+ "- NO hooks (no useState, no useFireproof, no useLiveQuery), NO callAI calls, NO event handlers, NO real Tailwind class strings",
191
197
  "",
192
- "// other imports only when requested",
198
+ "Scaffold shape (rename `featureOne/Two/Three` and `id` values to match your features):",
199
+ "",
200
+ "```",
201
+ "App.jsx",
202
+ "```jsx",
203
+ `import React from "react"${generateImportStatements(chosenLlms)}`,
204
+ "",
205
+ "const classNames = {",
206
+ ' page: "",',
207
+ ' header: "",',
208
+ ' featureOne: "",',
209
+ ' featureTwo: "",',
210
+ ' featureThree: "",',
211
+ "};",
212
+ "",
213
+ "function FeatureOne() {",
214
+ " return (",
215
+ ' <section id="feature-one" className={classNames.featureOne}>',
216
+ " <h2>Feature One</h2>",
217
+ " </section>",
218
+ " );",
219
+ "}",
220
+ "",
221
+ "function FeatureTwo() {",
222
+ " return (",
223
+ ' <section id="feature-two" className={classNames.featureTwo}>',
224
+ " <h2>Feature Two</h2>",
225
+ " </section>",
226
+ " );",
227
+ "}",
228
+ "",
229
+ "function FeatureThree() {",
230
+ " return (",
231
+ ' <section id="feature-three" className={classNames.featureThree}>',
232
+ " <h2>Feature Three</h2>",
233
+ " </section>",
234
+ " );",
235
+ "}",
236
+ "",
237
+ "export default function App() {",
238
+ " return (",
239
+ ' <main id="app" className={classNames.page}>',
240
+ ' <header id="app-header" className={classNames.header}>',
241
+ " <h1>App Title</h1>",
242
+ " </header>",
243
+ " <FeatureOne />",
244
+ " <FeatureTwo />",
245
+ " <FeatureThree />",
246
+ " </main>",
247
+ " );",
248
+ "}",
249
+ "```",
193
250
  "```",
194
251
  "",
252
+ "**Then, for each feature, write a short prose paragraph followed by a focused edit using SEARCH/REPLACE markers inside a fenced block.** Each `<<<<<<< SEARCH` snippet must match exactly one place in the current file (the stub `function FeatureN() {...}` is the natural target — include the whole function body for uniqueness). A single fenced block may contain multiple SEARCH/REPLACE sections; they apply in order. Styling (filling in the `classNames` values, color tokens, layout polish) also lands via SEARCH/REPLACE edits — do not put real class strings in the scaffold.",
253
+ "",
254
+ "**Target 10–20 lines per SEARCH/REPLACE edit.** A single feature stub → working component is the natural unit. If a single edit grows beyond ~25 lines, split it into multiple SEARCH/REPLACE sections in the same fenced block.",
255
+ "",
256
+ "```",
257
+ "App.jsx",
258
+ "```jsx",
259
+ "<<<<<<< SEARCH",
260
+ "// existing snippet (must match exactly once)",
261
+ "=======",
262
+ "// new snippet",
263
+ ">>>>>>> REPLACE",
264
+ "```",
265
+ "```",
266
+ "",
267
+ '**Always go feature-by-feature with SEARCH/REPLACE.** Do NOT emit the whole file as a single edit just because the build feels substantial — the user wants to see each feature land incrementally. The only time to emit a fresh full-file block is when the user explicitly requests a complete overhaul or redesign (e.g. "redo the whole thing", "switch to a totally different layout"). If you find yourself thinking "this is a substantial build, I\'ll do it in one pass", do not — go feature-by-feature instead.',
268
+ "",
269
+ "After your final edit, add a short 1-2 sentence message describing the core workflow the app supports.",
270
+ "",
195
271
  ].join("\n");
196
272
  return {
197
273
  systemPrompt,
package/prompts.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../jsr/prompts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../jsr/prompts.ts"],"names":[],"mappings":"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"}
package/segment-parser.js CHANGED
@@ -1,125 +1,139 @@
1
- export function parseContent(text) {
2
- const segments = [];
1
+ import { applyEdits, parseFenceBody } from "@vibes.diy/call-ai-v2";
2
+ const SEARCH_MARKER = /^<{7}\s+SEARCH\s*$/m;
3
+ function stripDependenciesPrefix(text) {
3
4
  const depsFormat1 = text.match(/^({"dependencies":\s*{}})/);
4
5
  const depsFormat2 = text.match(/^({(?:"[^"]+"\s*:\s*"[^"]+"(?:,\s*)?)+}})/);
5
6
  const depsFormat3 = text.match(/^({"dependencies":\s*{(?:"[^"]+"\s*:\s*"[^"]+"(?:,\s*)?)+}})/);
6
7
  const depsFormat4 = text.match(/^({"dependencies":\s*{[\s\S]*?^}})/m);
7
- if (depsFormat1 && depsFormat1[1]) {
8
- text = text.substring(text.indexOf(depsFormat1[1]) + depsFormat1[1].length).trim();
9
- }
10
- else if (depsFormat2 && depsFormat2[1]) {
11
- text = text.substring(text.indexOf(depsFormat2[1]) + depsFormat2[1].length).trim();
8
+ const match = depsFormat1 ?? depsFormat2 ?? depsFormat3 ?? depsFormat4;
9
+ if (match && match[1]) {
10
+ return text.substring(text.indexOf(match[1]) + match[1].length).trim();
12
11
  }
13
- else if (depsFormat3 && depsFormat3[1]) {
14
- text = text.substring(text.indexOf(depsFormat3[1]) + depsFormat3[1].length).trim();
15
- }
16
- else if (depsFormat4 && depsFormat4[1]) {
17
- text = text.substring(text.indexOf(depsFormat4[1]) + depsFormat4[1].length).trim();
18
- }
19
- const codeBlockRegex = /(?:^|\n)[ \t]*```(?:js|jsx|javascript|)[ \t]*\n([\s\S]*?)(?:^|\n)[ \t]*```[ \t]*(?:\n|$)/g;
20
- const codeBlocks = [];
12
+ return text;
13
+ }
14
+ function findFencedBlocks(text) {
15
+ const blocks = [];
16
+ const codeBlockRegex = /(?:^|\n)[ \t]*```(?:\w+)?(?:[ \t]+\S+(?:[ \t]+\S+)?)?[ \t]*\n([\s\S]*?)(?:^|\n)[ \t]*```[ \t]*(?:\n|$)/g;
21
17
  let match;
22
18
  while ((match = codeBlockRegex.exec(text)) !== null) {
23
19
  const fullMatch = match[0];
24
- const codeContent = match[1]?.trim() || "";
25
- const startIdx = match.index;
26
- const endIdx = startIdx + fullMatch.length;
27
- codeBlocks.push({
20
+ const codeContent = (match[1] ?? "").trim();
21
+ blocks.push({
28
22
  fullBlock: fullMatch,
29
23
  content: codeContent,
30
- startIdx,
31
- endIdx,
24
+ startIdx: match.index,
25
+ endIdx: match.index + fullMatch.length,
32
26
  length: codeContent.length,
33
27
  });
34
28
  }
35
- const incompleteCodeBlockMatch = text.match(/(?:^|\n)[ \t]*```(?:js|jsx|javascript|)[ \t]*\n([\s\S]*)$/s);
36
- if (incompleteCodeBlockMatch && incompleteCodeBlockMatch.index !== undefined) {
37
- const startIdx = incompleteCodeBlockMatch.index;
38
- const isDuplicate = codeBlocks.some((block) => block.startIdx === startIdx);
39
- if (!isDuplicate) {
40
- const fullMatch = incompleteCodeBlockMatch[0];
41
- const codeContent = incompleteCodeBlockMatch[1]?.trim() || "";
42
- const endIdx = text.length;
43
- codeBlocks.push({
44
- fullBlock: fullMatch,
29
+ const incomplete = text.match(/(?:^|\n)[ \t]*```(?:\w+)?(?:[ \t]+\S+(?:[ \t]+\S+)?)?[ \t]*\n([\s\S]*)$/s);
30
+ if (incomplete && incomplete.index !== undefined) {
31
+ const startIdx = incomplete.index;
32
+ if (!blocks.some((b) => b.startIdx === startIdx)) {
33
+ const codeContent = (incomplete[1] ?? "").trim();
34
+ blocks.push({
35
+ fullBlock: incomplete[0],
45
36
  content: codeContent,
46
37
  startIdx,
47
- endIdx,
38
+ endIdx: text.length,
48
39
  length: codeContent.length,
49
40
  incomplete: true,
50
41
  });
51
42
  }
52
43
  }
53
- if (codeBlocks.length === 0) {
54
- segments.push({
55
- type: "markdown",
56
- content: text,
57
- });
58
- return { segments };
59
- }
60
- let longestBlockIndex = 0;
61
- let maxLength = 0;
62
- for (let i = 0; i < codeBlocks.length; i++) {
63
- if (codeBlocks[i].length > maxLength) {
64
- maxLength = codeBlocks[i].length;
65
- longestBlockIndex = i;
44
+ return blocks;
45
+ }
46
+ function legacyParse(stripped, blocks) {
47
+ let longestIdx = 0;
48
+ let maxLen = 0;
49
+ for (let i = 0; i < blocks.length; i += 1) {
50
+ if (blocks[i].length > maxLen) {
51
+ maxLen = blocks[i].length;
52
+ longestIdx = i;
66
53
  }
67
54
  }
68
- codeBlocks.sort((a, b) => a.startIdx - b.startIdx);
69
- const longestBlock = codeBlocks[longestBlockIndex];
70
- let beforeContent = "";
71
- if (longestBlock.startIdx > 0) {
72
- let currentPos = 0;
73
- for (const block of codeBlocks) {
74
- if (block === longestBlock) {
75
- beforeContent += text.substring(currentPos, block.startIdx);
55
+ const sorted = [...blocks].sort((a, b) => a.startIdx - b.startIdx);
56
+ const longest = blocks[longestIdx];
57
+ let beforeText = "";
58
+ if (longest.startIdx > 0) {
59
+ let pos = 0;
60
+ let processed = false;
61
+ for (const b of sorted) {
62
+ if (b === longest) {
63
+ beforeText += stripped.substring(pos, b.startIdx);
76
64
  break;
77
65
  }
78
- else if (block.startIdx >= currentPos && block.endIdx <= longestBlock.startIdx) {
79
- beforeContent += text.substring(currentPos, block.startIdx);
80
- beforeContent += block.fullBlock;
81
- currentPos = block.endIdx;
66
+ if (b.startIdx >= pos && b.endIdx <= longest.startIdx) {
67
+ beforeText += stripped.substring(pos, b.startIdx);
68
+ beforeText += b.fullBlock;
69
+ pos = b.endIdx;
70
+ processed = true;
82
71
  }
83
72
  }
84
- if (beforeContent === "") {
85
- beforeContent = text.substring(0, longestBlock.startIdx);
73
+ if (!processed && beforeText.length === 0) {
74
+ beforeText = stripped.substring(0, longest.startIdx);
86
75
  }
87
76
  }
88
- if (beforeContent.trim().length > 0) {
89
- segments.push({
90
- type: "markdown",
91
- content: beforeContent.trim(),
92
- });
93
- }
94
- segments.push({
95
- type: "code",
96
- content: longestBlock.content,
97
- });
98
- let afterContent = "";
99
- if (longestBlock.endIdx < text.length) {
100
- let currentPos = longestBlock.endIdx;
101
- let processedBlocks = false;
102
- for (const block of codeBlocks) {
103
- if (block !== longestBlock && block.startIdx >= longestBlock.endIdx) {
104
- afterContent += text.substring(currentPos, block.startIdx);
105
- afterContent += block.fullBlock;
106
- currentPos = block.endIdx;
107
- processedBlocks = true;
77
+ let afterText = "";
78
+ if (longest.endIdx < stripped.length) {
79
+ let pos = longest.endIdx;
80
+ let processed = false;
81
+ for (const b of sorted) {
82
+ if (b !== longest && b.startIdx >= longest.endIdx) {
83
+ afterText += stripped.substring(pos, b.startIdx);
84
+ afterText += b.fullBlock;
85
+ pos = b.endIdx;
86
+ processed = true;
108
87
  }
109
88
  }
110
- if (currentPos < text.length) {
111
- afterContent += text.substring(currentPos);
112
- }
113
- if (!processedBlocks) {
114
- afterContent = text.substring(longestBlock.endIdx);
115
- }
89
+ if (pos < stripped.length)
90
+ afterText += stripped.substring(pos);
91
+ if (!processed)
92
+ afterText = stripped.substring(longest.endIdx);
116
93
  }
117
- if (afterContent.trim().length > 0) {
118
- segments.push({
119
- type: "markdown",
120
- content: afterContent.trim(),
121
- });
94
+ const segments = [];
95
+ if (beforeText.trim().length > 0)
96
+ segments.push({ type: "markdown", content: beforeText.trim() });
97
+ segments.push({ type: "code", content: longest.content });
98
+ if (afterText.trim().length > 0)
99
+ segments.push({ type: "markdown", content: afterText.trim() });
100
+ return { segments };
101
+ }
102
+ function aiderParse(stripped, blocks) {
103
+ let resolved = "";
104
+ for (const block of blocks) {
105
+ const lines = block.content.split("\n");
106
+ const parsed = parseFenceBody(lines);
107
+ const result = applyEdits(resolved, parsed.edits);
108
+ resolved = result.content;
122
109
  }
110
+ let cursor = 0;
111
+ let beforeText = "";
112
+ let afterText = "";
113
+ blocks.forEach((b, i) => {
114
+ const piece = stripped.substring(cursor, b.startIdx);
115
+ if (i === 0)
116
+ beforeText = piece;
117
+ else
118
+ afterText += piece;
119
+ cursor = b.endIdx;
120
+ });
121
+ afterText += stripped.substring(cursor);
122
+ const segments = [];
123
+ if (beforeText.trim().length > 0)
124
+ segments.push({ type: "markdown", content: beforeText.trim() });
125
+ segments.push({ type: "code", content: resolved });
126
+ if (afterText.trim().length > 0)
127
+ segments.push({ type: "markdown", content: afterText.trim() });
123
128
  return { segments };
124
129
  }
130
+ export function parseContent(text) {
131
+ const stripped = stripDependenciesPrefix(text);
132
+ const blocks = findFencedBlocks(stripped);
133
+ if (blocks.length === 0) {
134
+ return { segments: [{ type: "markdown", content: stripped }] };
135
+ }
136
+ const hasSearchMarker = blocks.some((b) => SEARCH_MARKER.test(b.content));
137
+ return hasSearchMarker ? aiderParse(stripped, blocks) : legacyParse(stripped, blocks);
138
+ }
125
139
  //# sourceMappingURL=segment-parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"segment-parser.js","sourceRoot":"","sources":["../jsr/segment-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"segment-parser.js","sourceRoot":"","sources":["../jsr/segment-parser.ts"],"names":[],"mappings":"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"}