@vibes.diy/prompts 14.3.78 → 14.3.80

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/llms/use-vibe.md CHANGED
@@ -16,9 +16,11 @@ Pass the Fireproof database name you are writing to. You get:
16
16
 
17
17
  While `pending` is set, show a quiet checking state — never a sign-in prompt, never the raw `reason` token, and never a blank space where the write surface was. A pending verdict means "we don't know yet", not "you may not"; it resolves on its own within a moment, so anything that reads as a refusal is wrong for that moment, and hiding the surface with nothing in its place makes the app look broken.
18
18
 
19
+ Holding on `ready` works the same way: put `if (!ready) return <Skeleton />` above the first `can.*(…).ok` read, so the surface's place shows a checking state until the verdict lands.
20
+
19
21
  On a real denial (`!ok` and no `pending`), explain it in your app's own words — `reason` is a machine token, not display copy. Let it *inform* the sentence you write ("Join the team channel to post here"), and never render it directly: a token like `pending` or `not in channel: team` printed into the page is internal vocabulary leaking at a user.
20
22
 
21
- Never stamp author fields from `me` while the verdict is pending — `me` is null until identity resolves, and a write that skips the gate lands authorless.
23
+ Stamp `authorHandle: me.userHandle` inside the write an allowed verdict renders — the submit handler of the form `can.create` let through — so every document lands with its author. Never stamp author fields from `me` while the verdict is pending — `me` is null until identity resolves, and a write that skips the gate lands authorless.
22
24
 
23
25
  **Build the candidate from the doc you'll actually write.** `can.create(draft)` runs the access function against `draft`, so `draft` must carry the fields the function checks — `authorHandle`, `channelId`, etc. A bare `can.create({ type: "post" })` gets denied (e.g. `"not author"`) and hides the form even from users who could post. Stamp the same fields you'll `put`: `can.create({ type: "post", channelId, authorHandle: me?.userHandle })`. And gate the **same database** you write to — `useVibe(dbName)` selects the access function and grants by `dbName`, so a gate on a different db won't reflect server enforcement.
24
26
 
@@ -28,27 +30,32 @@ Gate every write affordance on `can.*`. Hold it while `pending`, and write your
28
30
 
29
31
  ### `App.jsx`
30
32
  ```jsx
33
+ import { useState } from "react";
31
34
  import { useVibe } from "use-vibes";
32
- import { Button, Input, Skeleton } from "@vibes.diy/look";
35
+ import { Button, Field, Input, Row, Skeleton, Text } from "@vibes.diy/pouf";
33
36
 
34
37
  function PromptBar({ database }) {
35
38
  const { can, me } = useVibe("aestheticBoard");
39
+ const [text, setText] = useState("");
36
40
  const v = can.create({ type: "tile", authorHandle: me?.userHandle });
37
41
  // 1. still resolving — a quiet placeholder, no refusal wording, no empty hole
38
- if (v.pending) return <Skeleton className="h-10 w-full" aria-busy="true" />;
42
+ if (v.pending) return <div aria-busy="true"><Skeleton variant="row" /></div>;
39
43
  // 2. resolved denial — your words, informed by v.reason, never v.reason itself
40
- if (!v.ok) return <p className="text-muted-foreground">Join the board to add a tile.</p>;
44
+ if (!v.ok) return <Text muted>Join the board to add a tile.</Text>;
41
45
  // 3. allowed
42
46
  return (
43
47
  <form
44
- onSubmit={(e) => {
48
+ onSubmit={async (e) => {
45
49
  e.preventDefault();
46
- database.put({ type: "tile", authorHandle: me?.userHandle, text: e.target.tile.value });
50
+ await database.put({ type: "tile", authorHandle: me?.userHandle, text });
51
+ setText("");
47
52
  }}
48
53
  >
49
54
  {/* no current-user pill — identity + sign-in live in the Vibes Switch (the logo) */}
50
- <Input name="tile" placeholder="Add a tile…" />
51
- <Button type="submit">Post</Button>
55
+ <Row gap={2} align="top">
56
+ <Field label="New tile">{(id, describedBy) => <Input id={id} describedBy={describedBy} value={text} onChange={setText} placeholder="Add a tile…" />}</Field>
57
+ <Button type="submit">Post</Button>
58
+ </Row>
52
59
  </form>
53
60
  );
54
61
  }
@@ -17,6 +17,7 @@ Start with a minimal component that reads the viewer identity. You don't render
17
17
  import React from "react";
18
18
  import { useFireproof } from "use-fireproof";
19
19
  import { useViewer } from "use-vibes";
20
+ import { Stack, Text } from "@vibes.diy/pouf";
20
21
 
21
22
  export default function App() {
22
23
  const { viewer, isViewerPending } = useViewer();
@@ -24,14 +25,14 @@ export default function App() {
24
25
  if (isViewerPending) return null;
25
26
 
26
27
  return (
27
- <div>
28
+ <Stack gap={3}>
28
29
  {/* No current-user pill here — that's the Vibes Switch's job. */}
29
30
  {viewer ? (
30
- <p>Welcome back, {viewer.displayName ?? viewer.userHandle}!</p>
31
+ <Text>Welcome back, {viewer.displayName ?? viewer.userHandle}!</Text>
31
32
  ) : (
32
- <p>Everything you make here is saved on this device.</p>
33
+ <Text muted>Everything you make here is saved on this device.</Text>
33
34
  )}
34
- </div>
35
+ </Stack>
35
36
  );
36
37
  }
37
38
  ```
@@ -62,9 +63,18 @@ import { useViewer, useVibe } from "use-vibes";
62
63
  ### `App.jsx`
63
64
  ```jsx
64
65
  <<<<<<< SEARCH
65
- const { viewer, isViewerPending } = useViewer();
66
+ import { Stack, Text } from "@vibes.diy/pouf";
66
67
  =======
68
+ import { Button, Field, Input, Row, Stack, Text } from "@vibes.diy/pouf";
69
+ >>>>>>> REPLACE
70
+ ```
71
+
72
+ ### `App.jsx`
73
+ ```jsx
74
+ <<<<<<< SEARCH
67
75
  const { viewer, isViewerPending } = useViewer();
76
+ =======
77
+ const { viewer, isViewerPending, requestLogin } = useViewer();
68
78
  const { can, ready, me } = useVibe("comments");
69
79
  >>>>>>> REPLACE
70
80
  ```
@@ -73,9 +83,9 @@ import { useViewer, useVibe } from "use-vibes";
73
83
  ```jsx
74
84
  <<<<<<< SEARCH
75
85
  {viewer ? (
76
- <p>Welcome back, {viewer.displayName ?? viewer.userHandle}!</p>
86
+ <Text>Welcome back, {viewer.displayName ?? viewer.userHandle}!</Text>
77
87
  ) : (
78
- <p>Everything you make here is saved on this device.</p>
88
+ <Text muted>Everything you make here is saved on this device.</Text>
79
89
  )}
80
90
  =======
81
91
  {/* write gate: useVibe().can, not viewer */}
@@ -83,14 +93,18 @@ import { useViewer, useVibe } from "use-vibes";
83
93
  const v = can.create({ type: "comment", authorHandle: me?.userHandle });
84
94
  return v.ok ? (
85
95
  <form>
86
- <input placeholder="Add a comment..." />
87
- <button type="submit">Post</button>
96
+ <Row gap={2} align="top">
97
+ <Field label="Comment">{(id, describedBy) => <Input id={id} describedBy={describedBy} value="" onChange={() => {}} placeholder="Add a comment..." />}</Field>
98
+ <Button type="submit">Post</Button>
99
+ </Row>
88
100
  </form>
89
- ) : (
101
+ ) : me?.userHandle ? (
90
102
  // Your own words, informed by v.reason. A signed-in viewer who is denied is
91
103
  // outside this thread's membership, so the sentence says that; the sign-in
92
- // ask is for the anonymous viewer.
93
- <p>{me?.userHandle ? "Comments here are for members of this thread." : "Sign in to add a comment."}</p>
104
+ // ask is for the anonymous viewer, and it is a control wired to requestLogin.
105
+ <Text muted>Comments here are for members of this thread.</Text>
106
+ ) : (
107
+ <Button type="button" onClick={requestLogin}>Sign in to add a comment</Button>
94
108
  );
95
109
  })()}
96
110
  >>>>>>> REPLACE
@@ -105,18 +119,18 @@ Wire up a full comment thread with Fireproof and viewer attribution:
105
119
  ### `App.jsx`
106
120
  ```jsx
107
121
  <<<<<<< SEARCH
108
- import { useViewer, useVibe } from "use-vibes";
122
+ import { Button, Field, Input, Row, Stack, Text } from "@vibes.diy/pouf";
109
123
  =======
110
- import { useViewer, useVibe } from "use-vibes";
124
+ import { Button, Field, Input, Row, RowCard, Stack, Text } from "@vibes.diy/pouf";
111
125
  >>>>>>> REPLACE
112
126
  ```
113
127
 
114
128
  ```jsx
115
129
  <<<<<<< SEARCH
116
- const { viewer, isViewerPending } = useViewer();
130
+ const { viewer, isViewerPending, requestLogin } = useViewer();
117
131
  const { can, ready, me } = useVibe("comments");
118
132
  =======
119
- const { viewer, isViewerPending, ViewerTag } = useViewer();
133
+ const { viewer, isViewerPending, ViewerTag, requestLogin } = useViewer();
120
134
  const { can, ready, me } = useVibe("comments");
121
135
  const { useLiveQuery, database } = useFireproof("comments");
122
136
  const { docs: comments } = useLiveQuery("createdAt");
@@ -131,40 +145,48 @@ import { useViewer, useVibe } from "use-vibes";
131
145
  const v = can.create({ type: "comment", authorHandle: me?.userHandle });
132
146
  return v.ok ? (
133
147
  <form>
134
- <input placeholder="Add a comment..." />
135
- <button type="submit">Post</button>
148
+ <Row gap={2} align="top">
149
+ <Field label="Comment">{(id, describedBy) => <Input id={id} describedBy={describedBy} value="" onChange={() => {}} placeholder="Add a comment..." />}</Field>
150
+ <Button type="submit">Post</Button>
151
+ </Row>
136
152
  </form>
137
- ) : (
153
+ ) : me?.userHandle ? (
138
154
  // Your own words, informed by v.reason. A signed-in viewer who is denied is
139
155
  // outside this thread's membership, so the sentence says that; the sign-in
140
- // ask is for the anonymous viewer.
141
- <p>{me?.userHandle ? "Comments here are for members of this thread." : "Sign in to add a comment."}</p>
156
+ // ask is for the anonymous viewer, and it is a control wired to requestLogin.
157
+ <Text muted>Comments here are for members of this thread.</Text>
158
+ ) : (
159
+ <Button type="button" onClick={requestLogin}>Sign in to add a comment</Button>
142
160
  );
143
161
  })()}
144
162
  =======
145
163
  {/* render OTHER users with userHandle — that's what ViewerTag is for here */}
146
- <ul>
164
+ <Stack gap={3}>
147
165
  {comments.map((c) => (
148
- <li key={c._id}>
166
+ <RowCard key={c._id}>
149
167
  <ViewerTag userHandle={c.authorHandle} />
150
- <p>{c.body}</p>
151
- </li>
168
+ <Text>{c.body}</Text>
169
+ </RowCard>
152
170
  ))}
153
- </ul>
171
+ </Stack>
154
172
 
155
173
  {/* write gate: useVibe().can, not viewer */}
156
174
  {!ready ? null : (() => {
157
175
  const v = can.create({ type: "comment", authorHandle: me?.userHandle });
158
176
  return v.ok ? (
159
177
  <form onSubmit={(e) => { e.preventDefault(); post(); }}>
160
- <input value={body} onChange={(e) => setBody(e.target.value)} placeholder="Add a comment..." />
161
- <button type="submit">Post</button>
178
+ <Row gap={2} align="top">
179
+ <Field label="Comment">{(id, describedBy) => <Input id={id} describedBy={describedBy} value={body} onChange={setBody} placeholder="Add a comment..." />}</Field>
180
+ <Button type="submit">Post</Button>
181
+ </Row>
162
182
  </form>
163
- ) : (
183
+ ) : me?.userHandle ? (
164
184
  // Your own words, informed by v.reason. A signed-in viewer who is denied is
165
185
  // outside this thread's membership, so the sentence says that; the sign-in
166
- // ask is for the anonymous viewer.
167
- <p>{me?.userHandle ? "Comments here are for members of this thread." : "Sign in to add a comment."}</p>
186
+ // ask is for the anonymous viewer, and it is a control wired to requestLogin.
187
+ <Text muted>Comments here are for members of this thread.</Text>
188
+ ) : (
189
+ <Button type="button" onClick={requestLogin}>Sign in to add a comment</Button>
168
190
  );
169
191
  })()}
170
192
  >>>>>>> REPLACE
@@ -204,19 +226,11 @@ Three rules separate a CTA that converts from the two shapes that don't.
204
226
 
205
227
  **Ask at the moment of value.** The ask lands when the person has just made something they'd hate to lose — posted their first comment, starred their first pick, saved their first note. A prompt on arrival asks a stranger to commit before they know what the app does; a prompt after the first save offers to keep something they can already see.
206
228
 
207
- **Wire the ask to `requestLogin()`, never to a sentence about the logo.** Copy like "sign in via the logo" points at platform chrome outside your app's frame and sends the reader hunting for it. It is not a call to action and it does not convert. Render a real control: `<button onClick={requestLogin}>Keep these</button>`.
229
+ **Wire the ask to `requestLogin()`, never to a sentence about the logo.** Copy like "sign in via the logo" points at platform chrome outside your app's frame and sends the reader hunting for it. It is not a call to action and it does not convert. Render a real control: `<Button onClick={requestLogin}>Keep these</Button>`. Every sign-in line your app renders — a muted `Text`, an `Empty` title — comes with that control right beside it, so the reader can act on it where they read it.
208
230
 
209
231
  **Only ask once identity has settled.** `isViewerPending` is `true` while the platform is still resolving who's looking, and a CTA rendered in that window shows signed-in people a SIGN IN button on every load. Compute the settled-signed-out state once and gate on it — `const settledSignedOut = !isViewerPending && !viewer;`.
210
232
 
211
- Layer it onto the comment app: the visitor can already read and post, and once they've posted, we offer to keep it.
212
-
213
- ```jsx
214
- <<<<<<< SEARCH
215
- const { viewer, isViewerPending, ViewerTag } = useViewer();
216
- =======
217
- const { viewer, isViewerPending, ViewerTag, requestLogin } = useViewer();
218
- >>>>>>> REPLACE
219
- ```
233
+ Layer it onto the comment app: the visitor can already read and post, and once they've posted, we offer to keep it. `requestLogin` already comes from `useViewer()` above.
220
234
 
221
235
  ```jsx
222
236
  <<<<<<< SEARCH
@@ -240,15 +254,17 @@ Layer it onto the comment app: the visitor can already read and post, and once t
240
254
  {/* write gate: useVibe().can, not viewer */}
241
255
  =======
242
256
  {settledSignedOut && hasSomethingToKeep && (
243
- <div>
257
+ <Stack gap={2}>
244
258
  {/* Says what they GET. Never "you must sign in to continue" — they
245
259
  can continue, and their comment above is already saved locally.
246
260
  And never "post it under your name": signing in syncs the comment
247
261
  they already wrote, it does not rewrite the author stamped on it.
248
262
  Promise continuity, which is true — not attribution, which isn't. */}
249
- <p>Your comment is saved on this device.</p>
250
- <button onClick={requestLogin}>Sign in to keep it on all your devices</button>
251
- </div>
263
+ <Text muted>Your comment is saved on this device.</Text>
264
+ <Row>
265
+ <Button type="button" onClick={requestLogin}>Sign in to keep it on all your devices</Button>
266
+ </Row>
267
+ </Stack>
252
268
  )}
253
269
 
254
270
  {/* write gate: useVibe().can, not viewer */}
package/llms/voxel.md CHANGED
@@ -165,38 +165,34 @@ export function readableInk(background) {
165
165
  ```
166
166
 
167
167
  The selected material supplies the active accent; erase mode supplies `erase`.
168
- Apply it consistently to active view/gravity buttons, action buttons, the
169
- stage border, selected hotbar ring, and keycap accents. Keep unselected panels
170
- on theme surfaces (`bg-background/85`, `bg-card`, `text-foreground`) so the
171
- controls stay readable over sky, water, caves, and bright terrain. Scope the
172
- variables to the game container, including its HUD and fullscreen subtree:
168
+ Pass it as `tint` to the active view/gravity buttons, action buttons, and the
169
+ selected hotbar slot (an `IconButton`): pouf fills each control with the accent
170
+ and picks its readable text. Keep unselected controls `variant="quiet"` and
171
+ panels on theme surfaces (`Card`) so the HUD stays readable over sky, water,
172
+ caves, and bright terrain:
173
173
 
174
174
  ```jsx
175
175
  const accent = eraseMode ? VOXEL_PALETTE.erase : selectedMaterial.color;
176
- const controlStyle = {
177
- backgroundColor: "var(--voxel-accent)",
178
- color: "var(--voxel-accent-fg)",
179
- };
180
- return <section style={{
181
- "--voxel-accent": accent,
182
- "--voxel-accent-fg": readableInk(accent),
183
- "--voxel-accent-soft": `${accent}33`, // palette colors are six-digit hex
184
- }}>
185
- {/* canvas and HUD share this scope */}
186
- <button style={controlStyle} onClick={cycleView}>Switch view</button>
176
+ return <section>
177
+ {/* canvas and HUD share this accent */}
178
+ <Button tint={accent} onClick={cycleView}>Switch view</Button>
179
+ <Button tint={accent} aria-pressed={eraseMode} onClick={toggleErase}>
180
+ {eraseMode ? "Erase" : "Place"}
181
+ </Button>
187
182
  </section>;
188
183
  ```
189
184
 
190
- Choose the higher-contrast foreground from `ink` and `light` using sRGB relative
191
- luminance and contrast ratio ([normal text: at least 4.5:1](https://www.w3.org/WAI/WCAG22/Understanding/contrast-minimum.html)). For the palette above,
192
- `dirt` takes white and the other materials and erase take `ink`; recompute for
193
- additional or customized colors. Apply the same foreground selection to
194
- hotbar number labels too. A simple brightness threshold can choose white on
195
- wood, water, or lava even when dark text is more readable. Keep labels/icons,
196
- `aria-pressed` or `aria-checked`, a visible focus ring, and a two-tone selection
197
- outline: the accent reinforces the selected mode rather than being its only
198
- signal. On touch, keep movement/look separate from Place/Break/Jump controls,
199
- and clear held input on pointer cancellation or lost capture.
185
+ Where the game draws the accent itself (the stage border in the scene, hotbar
186
+ number labels on a canvas), choose the text with `readableInk`: the
187
+ higher-contrast foreground from `ink` and `light` using sRGB relative
188
+ luminance and contrast ratio ([normal text: at least 4.5:1](https://www.w3.org/WAI/WCAG22/Understanding/contrast-minimum.html)), the same choice
189
+ `tint` makes. For the palette above, `dirt` takes white and the other materials
190
+ and erase take `ink`; recompute for additional or customized colors. A simple
191
+ brightness threshold can choose white on wood, water, or lava even when dark
192
+ text is more readable. Keep labels/icons and `aria-pressed` or `aria-checked`:
193
+ the accent reinforces the selected mode rather than being its only signal. On
194
+ touch, keep movement/look separate from Place/Break/Jump controls, and clear
195
+ held input on pointer cancellation or lost capture.
200
196
 
201
197
  ## Rendering: instance the EXPOSED blocks (this is the whole performance game)
202
198
 
@@ -417,19 +413,18 @@ and only request lock from that click:
417
413
 
418
414
  ```jsx
419
415
  {worldReady && !isTouch && !locked && (
420
- <button onClick={() => engineRef.current?.requestLock()}
421
- className="absolute inset-0 z-20 flex flex-col items-center justify-center bg-black/55 backdrop-blur-sm">
422
- <Card className="max-w-sm">
423
- <CardHeader>
424
- <CardTitle>Voxel World</CardTitle>
425
- </CardHeader>
426
- <CardContent>
427
- <p>Click to play</p>
416
+ <div className="absolute inset-0 z-20 flex flex-col items-center justify-center bg-background/80 backdrop-blur-sm">
417
+ <Card>
418
+ <Stack gap={3}>
419
+ <Heading level={2}>Voxel World</Heading>
420
+ <Button type="button" size="lg" onClick={() => engineRef.current?.requestLock()}>
421
+ Click to play
422
+ </Button>
428
423
  {/* WASD move · Mouse look · Shift sprint · Space jump · Left-click break · Right-click place · F fly · 1–9 blocks */}
429
- </CardContent>
424
+ <Text size="sm" muted>Press Esc to release the mouse</Text>
425
+ </Stack>
430
426
  </Card>
431
- <p className="mt-4 text-muted-foreground">Press Esc to release the mouse</p>
432
- </button>
427
+ </div>
433
428
  )}
434
429
  ```
435
430
 
package/llms/youtube.md CHANGED
@@ -512,6 +512,7 @@ export async function scheduled(event, ctx) {
512
512
  ```jsx app=youtube-dashboard
513
513
  import React, { useState } from "react";
514
514
  import { useFireproof } from "use-fireproof";
515
+ import { Button, Field, Input, Row } from "@vibes.diy/pouf";
515
516
 
516
517
  const SETUP_STEPS = [
517
518
  "Open the Google Cloud console and create or select a project.",
@@ -552,8 +553,10 @@ export default function App() {
552
553
 
553
554
  return (
554
555
  <div>
555
- <input value={input} onChange={(e) => setInput(e.target.value)} placeholder="@handle or channel URL" />
556
- <button onClick={connect}>Connect channel</button>
556
+ <Row gap={2} align="top">
557
+ <Field label="Channel">{(id, describedBy) => <Input id={id} describedBy={describedBy} value={input} onChange={setInput} placeholder="@handle or channel URL" />}</Field>
558
+ <Button type="button" onClick={connect}>Connect channel</Button>
559
+ </Row>
557
560
 
558
561
  {problem?.reason === "missing-key" && (
559
562
  <section>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibes.diy/prompts",
3
- "version": "14.3.78",
3
+ "version": "14.3.80",
4
4
  "type": "module",
5
5
  "main": "./index.js",
6
6
  "exports": {
@@ -39,9 +39,9 @@
39
39
  "license": "Apache-2.0",
40
40
  "dependencies": {
41
41
  "@adviser/cement": "~0.5.34",
42
- "@vibes.diy/call-ai-v2": "14.3.78",
43
- "@vibes.diy/identity": "14.3.78",
44
- "@vibes.diy/use-vibes-types": "14.3.78",
42
+ "@vibes.diy/call-ai-v2": "14.3.80",
43
+ "@vibes.diy/identity": "14.3.80",
44
+ "@vibes.diy/use-vibes-types": "14.3.80",
45
45
  "arktype": "~2.2.6",
46
46
  "json-schema-faker": "~0.6.3"
47
47
  },
package/prompts.d.ts CHANGED
@@ -2,11 +2,13 @@ import type { UserSettings } from "./settings.js";
2
2
  import { LlmCatalogEntry } from "./json-docs.js";
3
3
  export declare function getDefaultSkills(): Promise<string[]>;
4
4
  export interface PromptSegments {
5
- headPre: string;
6
- headDocs: string;
5
+ headCore: string;
6
+ headSkills: string;
7
7
  headLook: string;
8
8
  tail: string;
9
9
  }
10
+ export declare function coreSkillNames(variant: MakeBaseSystemPromptOptions["variant"]): readonly string[];
11
+ export declare const STARTER_IMPORTS_POINTER = "// The import lines for this app are in the <starter-imports> block after the skill docs below \u2014 use them verbatim here.";
10
12
  export interface SystemPromptResult {
11
13
  systemPrompt: string;
12
14
  promptSegments: PromptSegments;
package/prompts.js CHANGED
@@ -7,6 +7,13 @@ import { defaultStylePrompt } from "./style-prompts.js";
7
7
  export async function getDefaultSkills() {
8
8
  return ["fireproof", "callai", "image-gen", "use-vibe"];
9
9
  }
10
+ export function coreSkillNames(variant) {
11
+ const isFirstTurn = variant === "initial" || variant === "initial-oneshot";
12
+ return isFirstTurn
13
+ ? ["use-vibe", "use-viewer", "image-gen", "callai"]
14
+ : ["use-vibe", "use-viewer", "image-gen", "callai", "backend"];
15
+ }
16
+ export const STARTER_IMPORTS_POINTER = "// The import lines for this app are in the <starter-imports> block after the skill docs below — use them verbatim here.";
10
17
  export function generateImportStatements(llms) {
11
18
  const seen = new Set();
12
19
  return llms
@@ -62,29 +69,40 @@ export async function makeBaseSystemPrompt(model, sessionDoc) {
62
69
  if (isFirstTurn === false && llmsCatalogNames.has("backend") && selectedNames.includes("backend") === false) {
63
70
  selectedNames.push("backend");
64
71
  }
72
+ for (const name of coreSkillNames(sessionDoc?.variant)) {
73
+ if (llmsCatalogNames.has(name) && selectedNames.includes(name) === false)
74
+ selectedNames.push(name);
75
+ }
65
76
  const includeDemoData = sessionDoc?.demoData === true;
66
77
  const chosenLlms = llmsCatalog.filter((l) => selectedNames.includes(l.name));
67
- const concatenatedLlmsTxts = [];
68
- for (const llm of chosenLlms) {
69
- const docFile = `${llm.name}.md`;
70
- const rText = await keyedLoadAsset.get(docFile).once(async () => {
71
- return loadAsset(`./llms/${docFile}`, {
72
- fallBackUrl: pkgBaseUrl,
73
- basePath: () => import.meta.url,
74
- mock: {
75
- fetch: sessionDoc.fetch,
76
- },
78
+ const coreNames = coreSkillNames(sessionDoc?.variant);
79
+ const coreLlms = chosenLlms.filter((l) => coreNames.includes(l.name));
80
+ const appLlms = chosenLlms.filter((l) => coreNames.includes(l.name) === false);
81
+ const renderDocs = async (llms) => {
82
+ const concatenatedLlmsTxts = [];
83
+ for (const llm of llms) {
84
+ const docFile = `${llm.name}.md`;
85
+ const rText = await keyedLoadAsset.get(docFile).once(async () => {
86
+ return loadAsset(`./llms/${docFile}`, {
87
+ fallBackUrl: pkgBaseUrl,
88
+ basePath: () => import.meta.url,
89
+ mock: {
90
+ fetch: sessionDoc.fetch,
91
+ },
92
+ });
77
93
  });
78
- });
79
- if (rText.isErr()) {
80
- console.warn(`Failed to load text for LLM ${llm.name} at path ${import.meta.dirname}/./llms/${docFile}:`, rText.Err());
81
- continue;
94
+ if (rText.isErr()) {
95
+ console.warn(`Failed to load text for LLM ${llm.name} at path ${import.meta.dirname}/./llms/${docFile}:`, rText.Err());
96
+ continue;
97
+ }
98
+ concatenatedLlmsTxts.push(`<${llm.label}-docs>`);
99
+ concatenatedLlmsTxts.push(rText.Ok() ?? "");
100
+ concatenatedLlmsTxts.push(`</${llm.label}-docs>`);
82
101
  }
83
- concatenatedLlmsTxts.push(`<${llm.label}-docs>`);
84
- concatenatedLlmsTxts.push(rText.Ok() ?? "");
85
- concatenatedLlmsTxts.push(`</${llm.label}-docs>`);
86
- }
87
- const concatenatedLlmsTxt = concatenatedLlmsTxts.join("\n");
102
+ return concatenatedLlmsTxts.join("\n");
103
+ };
104
+ const coreDocsTxt = await renderDocs(coreLlms);
105
+ const appDocsTxt = await renderDocs(appLlms);
88
106
  const themeCatalogNames = getThemeCatalogNames();
89
107
  const colorsetCatalogNames = getColorsetCatalogNames();
90
108
  const requestedTheme = typeof sessionDoc?.theme === "string" ? sessionDoc.theme : undefined;
@@ -171,20 +189,25 @@ export async function makeBaseSystemPrompt(model, sessionDoc) {
171
189
  ? "system-prompt-initial-oneshot.md"
172
190
  : "system-prompt.md";
173
191
  const template = await getSystemPromptTemplate(pkgBaseUrl, templateFilename, sessionDoc.fetch);
174
- const substituteStable = (s) => s.replaceAll("{{DEMO_DATA}}", demoDataLines).replaceAll("{{IMPORT_STATEMENTS}}", importStatements);
192
+ const substituteStable = (s, imports) => s.replaceAll("{{DEMO_DATA}}", demoDataLines).replaceAll("{{IMPORT_STATEMENTS}}", imports);
175
193
  const llmsMarker = "{{CONCATENATED_LLMS}}";
176
194
  const markerIdx = template.indexOf(llmsMarker);
177
- const headPre = markerIdx === -1 ? substituteStable(template) : substituteStable(template.slice(0, markerIdx));
178
- const headDocs = markerIdx === -1 ? "" : concatenatedLlmsTxt + substituteStable(template.slice(markerIdx + llmsMarker.length));
195
+ const headCore = markerIdx === -1
196
+ ? substituteStable(template, importStatements)
197
+ : substituteStable(template.slice(0, markerIdx), STARTER_IMPORTS_POINTER) +
198
+ coreDocsTxt +
199
+ substituteStable(template.slice(markerIdx + llmsMarker.length), STARTER_IMPORTS_POINTER);
200
+ const starterImports = `\n<starter-imports>\n${importStatements}\n</starter-imports>\n`;
201
+ const headSkills = markerIdx === -1 ? "" : `${appDocsTxt.length > 0 ? `\n${appDocsTxt}\n` : ""}${starterImports}`;
179
202
  const stylePromptLine = stylePrompt ? `- Don't use words from the style prompt in your copy: ${stylePrompt}` : "";
180
203
  const tailSections = [stylePromptLine, themeDesignSection, titleSection, enrichedPromptSection, userPromptSection]
181
204
  .map((s) => s.replace(/\n+$/, ""))
182
205
  .filter((s) => s.length > 0);
183
206
  const tail = tailSections.length === 0 ? "" : `\n${tailSections.join("\n\n")}\n`;
184
- const systemPrompt = headPre + headDocs + headLook + tail;
207
+ const systemPrompt = headCore + headSkills + headLook + tail;
185
208
  return {
186
209
  systemPrompt,
187
- promptSegments: { headPre, headDocs, headLook, tail },
210
+ promptSegments: { headCore, headSkills, headLook, tail },
188
211
  skills: selectedNames,
189
212
  theme: validatedTheme,
190
213
  colorTheme: validatedColorTheme,
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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"}