@vibes.diy/prompts 2.6.3 → 2.6.5

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/json-docs.d.ts CHANGED
@@ -6,6 +6,7 @@ export interface JsonDoc<T = LlmConfig> {
6
6
  }
7
7
  export interface JsonDocs {
8
8
  "callai.json": JsonDoc;
9
+ "create-vibe.json": JsonDoc;
9
10
  "d3.json": JsonDoc;
10
11
  "fireproof.json": JsonDoc;
11
12
  "image-gen.json": JsonDoc;
package/json-docs.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"json-docs.js","sourceRoot":"","sources":["../jsr/json-docs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAwB7C,MAAM,UAAU,kBAAkB;IAChC,OAAO,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACjC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,IAAuB,EAAE;IAC5D,MAAM,CAAC,GAAa,EAAc,CAAC;IAGnC,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,IAAI,OAAO,CAAC;QACvC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IAChD,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"json-docs.js","sourceRoot":"","sources":["../jsr/json-docs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAyB7C,MAAM,UAAU,kBAAkB;IAChC,OAAO,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACjC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,IAAuB,EAAE;IAC5D,MAAM,CAAC,GAAa,EAAc,CAAC;IAGnC,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,IAAI,OAAO,CAAC;QACvC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IAChD,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { LlmConfig } from "./types.js";
2
+ export declare const createVibeConfig: LlmConfig;
@@ -0,0 +1,8 @@
1
+ export const createVibeConfig = {
2
+ name: "create-vibe",
3
+ label: "createVibe",
4
+ description: "Hand off to the builder to generate a second, personalized vibe (interviewer / meta-vibes)",
5
+ importModule: "use-vibes",
6
+ importName: "createVibe",
7
+ };
8
+ //# sourceMappingURL=create-vibe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-vibe.js","sourceRoot":"","sources":["../../jsr/llms/create-vibe.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAc;IACzC,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,4FAA4F;IACzG,YAAY,EAAE,WAAW;IACzB,UAAU,EAAE,YAAY;CACzB,CAAC"}
@@ -0,0 +1,146 @@
1
+ # createVibe — meta-vibes (a vibe that builds another vibe)
2
+
3
+ `createVibe(prompt)` hands off to the Vibes builder to generate a **new,
4
+ personalized vibe** from a prompt you construct at runtime. It is the primitive
5
+ behind **meta-vibes**: a vibe whose output is *another* vibe.
6
+
7
+ The motivating shape is an **interviewer vibe**. The first vibe is *process* — it
8
+ runs a short, adaptive conversation (often with `callAI`) to gather what it needs.
9
+ When it has enough, it calls `createVibe(richPrompt)` with a fully-specified,
10
+ opinionated prompt built from the answers. The user lands in a second vibe that is
11
+ **personalized from birth** — a pitch deck that already knows their company, a
12
+ course outline already filled with their topic, a workout plan already matching
13
+ their goals — instead of a blank generic tool.
14
+
15
+ Use this skill only when the app's job is to *produce another app*. A normal app
16
+ that just stores and shows data does not need it.
17
+
18
+ ## The one rule: call it from a click
19
+
20
+ `createVibe()` opens the builder in a **new tab**, leaving the interviewer open
21
+ behind it. Browsers only allow opening a tab from inside a real user gesture, so
22
+ **always call `createVibe()` from an `onClick` (or other direct interaction)** —
23
+ never automatically from an effect, a timer, or straight out of an async `callAI`
24
+ resolution. Gate it behind an explicit "Create my ___" button the user presses
25
+ when they're ready.
26
+
27
+ ```jsx
28
+ import React from "react";
29
+ import { createVibe } from "use-vibes";
30
+
31
+ export default function App() {
32
+ const c = { btn: "min-h-[44px] px-5 rounded-xl bg-[#0f172a] text-white" };
33
+ // `ready` + `spec` come from the interview (see the full example below).
34
+ return (
35
+ <button
36
+ className={c.btn}
37
+ disabled={!ready}
38
+ onClick={() => createVibe(spec)} // ← user gesture: the new tab is allowed
39
+ >
40
+ Create my pitch deck
41
+ </button>
42
+ );
43
+ }
44
+ ```
45
+
46
+ ## Build a rich, opinionated prompt — not a one-liner
47
+
48
+ The whole point is that the second vibe arrives already specific. Construct a
49
+ detailed prompt from the interview: what to build, the sections/screens it needs,
50
+ and the user's actual content baked in. Treat it like a brief you'd hand a
51
+ designer, not a search query.
52
+
53
+ ```js
54
+ const spec = `Build a pitch deck app for ${company}, a ${stage} startup in ${market}.
55
+ Pre-populate these slides with the content below — do not leave them blank:
56
+ 1. Problem: ${problem}
57
+ 2. Solution: ${solution}
58
+ 3. Market size: ${marketSize}
59
+ 4. Team: ${team}
60
+ 5. The ask: ${ask}
61
+ Let the user edit each slide inline and present full-screen.`;
62
+ ```
63
+
64
+ ## Full pattern — interview, then hand off
65
+
66
+ ```jsx
67
+ import React from "react";
68
+ import { callAI } from "call-ai";
69
+ import { createVibe } from "use-vibes";
70
+
71
+ export default function App() {
72
+ const [answers, setAnswers] = React.useState({});
73
+ const [spec, setSpec] = React.useState("");
74
+ const [building, setBuilding] = React.useState(false);
75
+
76
+ // ... interview UI fills `answers` via callAI-driven questions ...
77
+
78
+ async function finish() {
79
+ setBuilding(true);
80
+ try {
81
+ // Use callAI to turn the raw answers into a rich, opinionated brief.
82
+ const spec = await callAI(
83
+ `Write a detailed builder prompt for a pitch deck app, baking in: ${JSON.stringify(answers)}`
84
+ );
85
+ setSpec(spec);
86
+ } finally {
87
+ setBuilding(false);
88
+ }
89
+ }
90
+
91
+ const c = { btn: "min-h-[44px] px-5 rounded-xl bg-[#0f172a] text-white" };
92
+ return (
93
+ <main id="app">
94
+ {/* ...interview... */}
95
+ {!spec ? (
96
+ <button className={c.btn} disabled={building} onClick={finish}>
97
+ {building ? "Preparing…" : "I'm ready"}
98
+ </button>
99
+ ) : (
100
+ // Prompt is prepared; THIS click opens the builder (user gesture).
101
+ <button className={c.btn} onClick={() => createVibe(spec)}>
102
+ Create my pitch deck
103
+ </button>
104
+ )}
105
+ </main>
106
+ );
107
+ }
108
+ ```
109
+
110
+ Note the two-step flow: the async work (`callAI` building the brief) happens
111
+ first, and the **final `createVibe()` runs in its own click**. Don't call
112
+ `createVibe()` inside the `await` chain — by then the user's gesture has expired
113
+ and the new tab will be blocked.
114
+
115
+ ## API
116
+
117
+ - `createVibe(prompt)` → `Window | null`. Opens the builder in a new tab;
118
+ returns the opened window, or `null` if the popup was blocked. The builder
119
+ origin is chosen automatically — you don't pass one.
120
+ - `buildCreateVibeUrl(prompt)` → `string`. The hand-off URL without navigating —
121
+ use it for a fallback link. **Import it alongside `createVibe`** —
122
+ `import { createVibe, buildCreateVibeUrl } from "use-vibes"` — it is not
123
+ included automatically.
124
+
125
+ Very long prompts (a verbose brief over a few thousand characters) make a long
126
+ URL; `createVibe()` warns in the console when it crosses a safe threshold but
127
+ still proceeds. Keep the brief focused. If `createVibe()` returns `null` (popup
128
+ blocked), offer a fallback link so the hand-off still works:
129
+
130
+ ```jsx
131
+ import { createVibe, buildCreateVibeUrl } from "use-vibes";
132
+
133
+ function HandoffButton({ spec }) {
134
+ const [blocked, setBlocked] = React.useState(false);
135
+ return blocked ? (
136
+ <a href={buildCreateVibeUrl(spec)} target="_blank" rel="noopener noreferrer">
137
+ Open the builder
138
+ </a>
139
+ ) : (
140
+ <button onClick={() => setBlocked(!createVibe(spec))}>Create my pitch deck</button>
141
+ );
142
+ }
143
+ ```
144
+
145
+ The hand-off always lands on the public vibes.diy builder (or, when the vibe is
146
+ running under a PR preview, that preview). You don't choose the destination.
package/llms/index.d.ts CHANGED
@@ -7,5 +7,6 @@ export { threeJsConfig } from "./three-js.js";
7
7
  export { webxrConfig } from "./webxr.js";
8
8
  export { useViewerConfig } from "./use-viewer.js";
9
9
  export { useVibeConfig } from "./use-vibe.js";
10
+ export { createVibeConfig } from "./create-vibe.js";
10
11
  export type { LlmConfig } from "./types.js";
11
- export declare const allConfigs: readonly [import("./types.js").LlmConfig, import("./types.js").LlmConfig, import("./types.js").LlmConfig, import("./types.js").LlmConfig, import("./types.js").LlmConfig, import("./types.js").LlmConfig, import("./types.js").LlmConfig, import("./types.js").LlmConfig, import("./types.js").LlmConfig];
12
+ export declare const allConfigs: readonly [import("./types.js").LlmConfig, import("./types.js").LlmConfig, import("./types.js").LlmConfig, import("./types.js").LlmConfig, import("./types.js").LlmConfig, import("./types.js").LlmConfig, import("./types.js").LlmConfig, import("./types.js").LlmConfig, import("./types.js").LlmConfig, import("./types.js").LlmConfig];
package/llms/index.js CHANGED
@@ -7,6 +7,7 @@ import { threeJsConfig } from "./three-js.js";
7
7
  import { webxrConfig } from "./webxr.js";
8
8
  import { useViewerConfig } from "./use-viewer.js";
9
9
  import { useVibeConfig } from "./use-vibe.js";
10
+ import { createVibeConfig } from "./create-vibe.js";
10
11
  export { callaiConfig } from "./callai.js";
11
12
  export { fireproofConfig } from "./fireproof.js";
12
13
  export { imageGenConfig } from "./image-gen.js";
@@ -16,6 +17,7 @@ export { threeJsConfig } from "./three-js.js";
16
17
  export { webxrConfig } from "./webxr.js";
17
18
  export { useViewerConfig } from "./use-viewer.js";
18
19
  export { useVibeConfig } from "./use-vibe.js";
20
+ export { createVibeConfig } from "./create-vibe.js";
19
21
  export const allConfigs = [
20
22
  callaiConfig,
21
23
  imageGenConfig,
@@ -26,5 +28,6 @@ export const allConfigs = [
26
28
  webxrConfig,
27
29
  useViewerConfig,
28
30
  useVibeConfig,
31
+ createVibeConfig,
29
32
  ];
30
33
  //# sourceMappingURL=index.js.map
package/llms/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../jsr/llms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAI9C,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,YAAY;IACZ,cAAc;IACd,cAAc;IACd,QAAQ;IACR,aAAa;IACb,eAAe;IACf,WAAW;IACX,eAAe;IACf,aAAa;CACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../jsr/llms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIpD,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,YAAY;IACZ,cAAc;IACd,cAAc;IACd,QAAQ;IACR,aAAa;IACb,eAAe;IACf,WAAW;IACX,eAAe;IACf,aAAa;IACb,gBAAgB;CACR,CAAC"}
package/llms/web-audio.md CHANGED
@@ -4,6 +4,18 @@ Authoritative source: Issue #228 research threads — comments 3192681700, 31926
4
4
 
5
5
  > **Web Audio is a browser built-in.** Use `window.AudioContext` (with the
6
6
  > `window.webkitAudioContext` fallback) directly, gated on a user gesture as shown below.
7
+ >
8
+ > **iOS Safari: unlock audio synchronously inside the gesture.** WebKit requires
9
+ > playback to *directly result* from a trusted handler (`pointerdown`, `touchend`,
10
+ > `click`, `keydown`). Inside that handler you must, synchronously and before any
11
+ > async work: create-or-resume the `AudioContext` **and start at least one real
12
+ > sound** (a ~10ms blip at `gain ≈ 0.0001` is enough). A resume/start that runs
13
+ > from a downstream `setTimeout`, `Promise.then`, `await`, `requestAnimationFrame`,
14
+ > a React state-update→effect, a worker/scheduler task, or a media
15
+ > `canplay`/`canplaythrough` callback **does not count** and will stay silent on
16
+ > iOS. Once the context is `running`, all of those are fine for scheduling. iOS
17
+ > also suspends audio after backgrounding/lock, so **re-check `audioCtx.state` on
18
+ > every gesture** and resume again if needed. See the `unlockAudio()` gate in §1.
7
19
 
8
20
  ## 1) Fundamentals and Core Nodes
9
21
 
@@ -17,15 +29,40 @@ Authoritative source: Issue #228 research threads — comments 3192681700, 31926
17
29
  Examples
18
30
 
19
31
  ```js
20
- // 1) Context (user gesture required in many browsers)
21
- const audioCtx = new (window.AudioContext || window.webkitAudioContext)();
32
+ // 1) Context + iOS-safe unlock gate.
33
+ let audioCtx;
34
+ function unlockAudio() {
35
+ audioCtx ||= new (window.AudioContext || window.webkitAudioContext)();
36
+ // Re-check every gesture — iOS suspends audio after backgrounding/lock.
37
+ if (audioCtx.state !== "running") {
38
+ audioCtx.resume();
39
+ // Start one real (silent) sound synchronously, inside the gesture, so WebKit
40
+ // actually unlocks output. This is the part a resume()-alone often misses.
41
+ const osc = audioCtx.createOscillator();
42
+ const gain = audioCtx.createGain();
43
+ gain.gain.value = 0.0001;
44
+ osc.connect(gain).connect(audioCtx.destination);
45
+ osc.start();
46
+ osc.stop(audioCtx.currentTime + 0.01);
47
+ }
48
+ return audioCtx;
49
+ }
22
50
 
23
- // Start/resume only in direct response to a user gesture (e.g., a Play button)
24
- document.querySelector("#start-audio")?.addEventListener("click", async () => {
25
- if (audioCtx.state !== "running") await audioCtx.resume();
26
- // now safe to create/start nodes
51
+ // Call unlockAudio() FIRST, synchronously, in a trusted gesture before any
52
+ // app/audio logic. After it returns, the context is running and timers,
53
+ // requestAnimationFrame, sequencers, and workers are all safe to schedule with.
54
+ document.querySelector("#start-audio")?.addEventListener("pointerdown", () => {
55
+ unlockAudio();
56
+ // now safe to create/start nodes, kick off the transport, etc.
27
57
  });
28
58
 
59
+ // ✗ What breaks on iOS — the unlock does NOT count if audio first starts from a
60
+ // downstream callback, because it no longer "directly results" from the gesture:
61
+ // el.addEventListener("click", () => requestAnimationFrame(() => audioCtx.resume())); // risky
62
+ // setTimeout(...), Promise.then(...), await fetch(...), await import(...),
63
+ // a React state update then effect, a scheduler/task-queue callback, or a
64
+ // media canplay/canplaythrough callback — all too late. Unlock in the handler.
65
+
29
66
  // 2) Simple tone
30
67
  const osc = audioCtx.createOscillator();
31
68
  osc.type = "sine";
@@ -225,7 +262,12 @@ External sync and drift
225
262
 
226
263
  ## 5) Practical Notes
227
264
 
228
- - User gesture required to start/resume `AudioContext` and to access the mic.
265
+ - User gesture required to start/resume `AudioContext` and to access the mic. On
266
+ iOS Safari the unlock must be **synchronous inside the gesture and start one
267
+ real sound** (the `unlockAudio()` gate in §1); a resume from a downstream
268
+ timer/promise/`await`/rAF/effect/media callback is too late. Re-check
269
+ `audioCtx.state` on every gesture, since iOS suspends audio after
270
+ backgrounding/lock.
229
271
  - Convolver IRs: host with CORS if cross‑origin; decode before use.
230
272
  - Latency budget: device `baseLatency` + your lookahead + any Worklet buffering.
231
273
  - Headphones recommended for monitoring to avoid acoustic feedback.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibes.diy/prompts",
3
- "version": "2.6.3",
3
+ "version": "2.6.5",
4
4
  "type": "module",
5
5
  "main": "./index.js",
6
6
  "description": "",
@@ -30,9 +30,9 @@
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.6.3",
34
- "@vibes.diy/identity": "^2.6.3",
35
- "@vibes.diy/use-vibes-types": "^2.6.3",
33
+ "@vibes.diy/call-ai-v2": "^2.6.5",
34
+ "@vibes.diy/identity": "^2.6.5",
35
+ "@vibes.diy/use-vibes-types": "^2.6.5",
36
36
  "arktype": "~2.2.1",
37
37
  "json-schema-faker": "~0.6.2"
38
38
  },