@vibes.diy/api-svc 14.1.48 → 14.1.50

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.
@@ -44,7 +44,7 @@ export function createAgentBelt(vctx, args) {
44
44
  "with the rules keyed on that object's own creator — an app one person keeps for themselves is that " +
45
45
  "same shape with one object in it. The person's own words are the one thing that leaves record rules " +
46
46
  "out: an ask for no access control, for a single-user app or for no sharing. " +
47
- "The report arrives in this conversation by itself; no lookup is needed, and a read of the app does not stand in for it.",
47
+ "The report arrives in this conversation by itself; no lookup is needed, and a read of the app does not stand in for it. It names the files it changed, whether the entry file was among them, and the version it saved, so a read after it is only for a question the report does not answer.",
48
48
  parameters: {
49
49
  type: "object",
50
50
  properties: {
@@ -142,7 +142,7 @@ export function createAgentBelt(vctx, args) {
142
142
  : "It answers `queued` with a handle. One build runs at a time; this change waits behind the current build, then its result arrives in this conversation. ") +
143
143
  "The word `ok` belongs to a finished result; a receipt naming a state names only that state. " +
144
144
  "Its result may arrive later as a message telling you the build finished. " +
145
- "The report arrives in this conversation by itself; no lookup is needed, and a read of the app does not stand in for it.",
145
+ "The report arrives in this conversation by itself; no lookup is needed, and a read of the app does not stand in for it. It names the files it changed, whether the entry file was among them, and the version it saved, so a read after it is only for a question the report does not answer.",
146
146
  parameters: {
147
147
  type: "object",
148
148
  properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"agent-belt.js","sourceRoot":"","sources":["../../jsr/intern/agent-belt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-belt.js","sourceRoot":"","sources":["../../jsr/intern/agent-belt.ts"],"names":[],"mappings":"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"}
@@ -3,17 +3,19 @@ import { type } from "arktype";
3
3
  import { getSkillText } from "@vibes.diy/prompts";
4
4
  import { resolveAgentActor, resolveChatApp } from "./agent-actor.js";
5
5
  import { normalizeModuleId } from "./bundle-vibe-source.js";
6
- import { createWorkToolBelt, readFilePageJson } from "./work-tools.js";
6
+ import { createWorkToolBelt, readFilePageJson, readFilesJson, resolveReadFilesPaths, WORK_READ_FILES_MAX_PATHS, } from "./work-tools.js";
7
7
  import { agentEditablePath, validateAgentFiles } from "./agent-file-validation.js";
8
8
  const editArgs = type({ path: "string", old_string: "string", new_string: "string" });
9
9
  const writeArgs = type({ path: "string", contents: "string" });
10
10
  const readArgs = type({ path: "string", "offset?": "number" });
11
+ const readFilesArgs = type({ paths: "string[]" });
11
12
  export const AGENT_FILE_TOOL_NAMES = new Set([
12
13
  "edit_file",
13
14
  "write_file",
14
15
  "validate",
15
16
  "commit_version",
16
17
  "read_file",
18
+ "read_files",
17
19
  "list_files",
18
20
  "build_check",
19
21
  ]);
@@ -41,6 +43,14 @@ export function skillGuideIndex(name, text) {
41
43
  sections.pop();
42
44
  }
43
45
  }
46
+ const GUIDE_PATHS = new Map([
47
+ ["/skills/backend.md", "backend"],
48
+ ["/skills/access.md", "access"],
49
+ ["/skills/debugging.md", "debugging"],
50
+ ]);
51
+ function serverFileSkill(path) {
52
+ return path === "/backend.js" ? "backend" : path === "/access.js" ? "access" : undefined;
53
+ }
44
54
  export function createAgentFileTools(vctx, args) {
45
55
  const introducedSkills = new Set();
46
56
  const definitions = [
@@ -76,7 +86,7 @@ export function createAgentFileTools(vctx, args) {
76
86
  name,
77
87
  description: name === "validate"
78
88
  ? "Check the staged filesystem without saving: syntax, imports, entry point, backend configuration and access-function dry run. Fix diagnostics before committing."
79
- : "Queue the staged files for a version commit. It answers `committing` with a handle: that word names where the work is, and the commit result is what says it saved. The commit rechecks changed files against current source and reruns validation, then uses normal save and auto-publish. A conflicting edit is refused, never overwritten. Wait for the commit result before claiming saved. The report arrives in this conversation by itself; no lookup is needed, and a read of the app does not stand in for it.",
89
+ : "Queue the staged files for a version commit. It answers `committing` with a handle: that word names where the work is, and the commit result is what says it saved. The commit rechecks changed files against current source and reruns validation, then uses normal save and auto-publish. A conflicting edit is refused, never overwritten. Wait for the commit result before claiming saved. The report arrives in this conversation by itself; no lookup is needed, and a read of the app does not stand in for it. It names the version it saved and the files in it, so a read after it is only for a question the report does not answer.",
80
90
  parameters: { type: "object", properties: {}, required: [], additionalProperties: false },
81
91
  },
82
92
  })),
@@ -103,6 +113,28 @@ export function createAgentFileTools(vctx, args) {
103
113
  return undefined;
104
114
  return skillGuideIndex(name, loaded.Ok());
105
115
  }
116
+ async function readFiles(rawArgs) {
117
+ const parsed = readFilesArgs(rawArgs);
118
+ if (parsed instanceof type.errors)
119
+ return refusal(parsed.summary);
120
+ if (parsed.paths.some((p) => p.split("/").includes("..")))
121
+ return refusal("Parent-directory traversal is not an app path.");
122
+ const resolved = resolveReadFilesPaths(overlay(), parsed.paths);
123
+ if (resolved.isErr())
124
+ return refusal(resolved.Err().message === "no_paths"
125
+ ? "Name at least one path to read."
126
+ : `read_files takes at most ${WORK_READ_FILES_MAX_PATHS} paths; ask for the most important ones first.`);
127
+ const requested = resolved.Ok().map((entry) => {
128
+ const skip = GUIDE_PATHS.has(entry.path) ? "guide-path" : undefined;
129
+ return skip === undefined ? entry : { path: entry.path, skip };
130
+ });
131
+ const first = requested.find((entry) => "contents" in entry && entry.contents !== undefined && serverFileSkill(entry.path) !== undefined);
132
+ const skill = first === undefined ? undefined : serverFileSkill(first.path);
133
+ const guide = skill !== undefined && introducedSkills.has(skill) === false ? await skillGuide(skill) : undefined;
134
+ if (guide !== undefined && skill !== undefined)
135
+ introducedSkills.add(skill);
136
+ return Result.Ok(readFilesJson(requested, guide === undefined ? undefined : { guide }));
137
+ }
106
138
  return {
107
139
  definitions,
108
140
  executor: async (input) => {
@@ -135,17 +167,14 @@ export function createAgentFileTools(vctx, args) {
135
167
  }
136
168
  if (name === "list_files" || name === "build_check")
137
169
  return createWorkToolBelt(overlay()).executor(input);
170
+ if (name === "read_files")
171
+ return readFiles(raw.Ok());
138
172
  const parsed = name === "edit_file" ? editArgs(raw.Ok()) : name === "write_file" ? writeArgs(raw.Ok()) : readArgs(raw.Ok());
139
173
  if (parsed instanceof type.errors)
140
174
  return refusal(parsed.summary);
141
175
  if (parsed.path.split("/").includes(".."))
142
176
  return refusal("Parent-directory traversal is not an app path.");
143
177
  const path = normalizeModuleId(parsed.path);
144
- const GUIDE_PATHS = new Map([
145
- ["/skills/backend.md", "backend"],
146
- ["/skills/access.md", "access"],
147
- ["/skills/debugging.md", "debugging"],
148
- ]);
149
178
  const guidePath = GUIDE_PATHS.get(path);
150
179
  if (name === "read_file" && guidePath !== undefined) {
151
180
  const read = readArgs(raw.Ok());
@@ -156,7 +185,7 @@ export function createAgentFileTools(vctx, args) {
156
185
  return refusal("offset must be a nonnegative integer.");
157
186
  return skillPage(guidePath, offset);
158
187
  }
159
- const skill = path === "/backend.js" ? "backend" : path === "/access.js" ? "access" : undefined;
188
+ const skill = serverFileSkill(path);
160
189
  const guideDue = skill !== undefined && introducedSkills.has(skill) === false;
161
190
  if (name === "read_file") {
162
191
  const answered = await createWorkToolBelt(overlay()).executor(input);
@@ -1 +1 @@
1
- {"version":3,"file":"agent-file-tools.js","sourceRoot":"","sources":["../../jsr/intern/agent-file-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-file-tools.js","sourceRoot":"","sources":["../../jsr/intern/agent-file-tools.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const AGENT_INSTRUCTION_VERSION = "2026-09-18.3";
1
+ export declare const AGENT_INSTRUCTION_VERSION = "2026-09-18.5";
2
2
  export declare const AGENT_INSTRUCTION: string;
@@ -1,4 +1,4 @@
1
- export const AGENT_INSTRUCTION_VERSION = "2026-09-18.3";
1
+ export const AGENT_INSTRUCTION_VERSION = "2026-09-18.5";
2
2
  export const AGENT_INSTRUCTION = [
3
3
  "<agent-turn>",
4
4
  "You are the Vibes agent. You are talking with the person whose app this is, and you can build",
@@ -27,7 +27,10 @@ export const AGENT_INSTRUCTION = [
27
27
  "platform started has finished, a `[commit result]` when a save has landed. A report arrives by itself,",
28
28
  "the moment its work is done. Nothing you call fetches it, and no read stands in for it: a read of the",
29
29
  "app tells you what the app holds, and the report is what tells you that a thing you started has landed",
30
- "— it is already on its way while you are reading.",
30
+ "— it is already on its way while you are reading. A report is the authority for what its own work",
31
+ "changed: it names the files, whether the entry file was among them, and the version saved, so reading",
32
+ "the app again to confirm what a report just told you spends a round and learns nothing. Read when you",
33
+ "have a question the report does not answer.",
31
34
  "",
32
35
  "Three kinds of tool answer. A read answers with what it found. A finishing action — `set_app_style`,",
33
36
  "`put_doc`, `delete_doc`, `validate`, the staging that `edit_file` and `write_file` do — answers `ok`",
@@ -154,7 +157,9 @@ export const AGENT_INSTRUCTION = [
154
157
  "",
155
158
  "When the message is a question about the app rather than a change to it, answer it. Use the read",
156
159
  "tools so the answer is about their actual app and not a plausible one, and never describe code",
157
- "you have not read.",
160
+ "you have not read. `list_files` names every file with the opening of each, and `read_files` takes",
161
+ "several of them in one round — the entry file and its companions together, rather than a round",
162
+ "apiece.",
158
163
  "",
159
164
  "When they ask for something the app does not have yet — a list it has no notion of, a screen, a way",
160
165
  "to share one thing and not another — that is a build, not a question and not directions to a control",
@@ -290,7 +295,7 @@ export const AGENT_INSTRUCTION = [
290
295
  "",
291
296
  "### A group ask, and the promise a deferred access makes",
292
297
  "",
293
- 'A create_vibe verdict that deferred access is a promise the platform keeps for you: once that first build result reports the changes saved, Vibes DIY dispatches the access build itself with skills: ["access"] carrying the deferred reason, and its result arrives here like any other build result — so wait for that second result to report saved before calling the work complete; a result that reports a failure is handled the way any failed build is. That second build is a whole-app upgrade of a draft made without access.js on purpose: its instruction has the builder read the records the first build shaped, name one channel per object from them, write the complete access.js with the creator granted at creation, and add the invite screen and the can gates to App.jsx. When that result reports saved and a read of the app shows no access.js or no way to name another person, dispatch edit_vibe yourself with skills: ["access"] and an instruction that says the same — the person was promised the group shape, and the platform\'s one dispatch is the floor.',
298
+ 'A create_vibe verdict that deferred access is a promise the platform keeps for you: once that first build result reports the changes saved, Vibes DIY dispatches the access build itself with skills: ["access"] carrying the deferred reason, and its result arrives here like any other build result — so wait for that second result to report saved before calling the work complete; a result that reports a failure is handled the way any failed build is. That second build is a whole-app upgrade of a draft made without access.js on purpose: its instruction has the builder read the records the first build shaped, name one channel per object from them, write the complete access.js with the creator granted at creation, and add the invite screen and the can gates to App.jsx. When that result reports saved and a read of the app shows no access.js or no way to name another person, dispatch edit_vibe yourself with skills: ["access"] and an instruction that says the same — the person was promised the group shape, and the platform\'s one dispatch is the floor. What a receipt lists under dropped.deferredToLater is a checklist you own apart from access: when backend is on it, the first thing you do after that build\'s [build result] says its changes are saved is dispatch edit_vibe with skills: ["backend"] carrying the backend part of the ask and say so — the backend part is building next — and the access pass the platform runs covers the access rules and nothing else.',
294
299
  "Every create_vibe is group-shaped: each signed-in person creates their own object and invites a friend into it with the platform's HandleInput, and the rules key on user.userHandle or the object's own creator, so the app owner stands where everyone else stands. An app one person keeps for themselves is that same shape with one object in it — a habit tracker built for one person still holds records a coach can be invited into later. What the app is about never decides this; only the person's own words do, so an ask for no access control, for a single-user app or for no sharing is the one thing that leaves access out.",
295
300
  "A person the ask names is let in by a record the app holds, written after the rules that admit it: once the build carrying those rules reports saved, read the app's records for a membership naming their handle, and when none is there save one yourself as the person whose app this is, in the shape the app's own invite screen writes — the collection and fields come from the files you read, and an id fixed by the object and the handle lets a second pass find it instead of writing a twin. Read it back; the sentence that says they are in follows that read. Until a record exists, what is true is that the way in is built and that the named person is still to be added there; adding them is a save you make, and the words that say it is done follow the read that finds it. The record is for a handle the person typed as one; a plain first name is someone the maker adds by handle through the invite screen, and you say so.",
296
301
  "",
@@ -369,7 +374,9 @@ export const AGENT_INSTRUCTION = [
369
374
  "and, when your create_vibe declared the deferral or asked for the access skill on a first build,",
370
375
  "the deferred access pass the platform dispatches for you — either way the same promise. While any",
371
376
  "of them is still running, the reply says what is building and stops there, and the options follow",
372
- "the last result.",
377
+ "the last result. If you have said a pass is coming, or a receipt or [queued edit] told you one is",
378
+ "running, and its result has not yet arrived, the turn is not over — say what is still building and stop;",
379
+ "no options, no done.",
373
380
  "",
374
381
  "## Voice",
375
382
  "",
@@ -1 +1 @@
1
- {"version":3,"file":"agent-instruction.js","sourceRoot":"","sources":["../../jsr/intern/agent-instruction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-instruction.js","sourceRoot":"","sources":["../../jsr/intern/agent-instruction.ts"],"names":[],"mappings":"AA4ZA,MAAM,CAAC,MAAM,yBAAyB,GAAG,cAAc,CAAC;AAExD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,cAAc;IACd,+FAA+F;IAC/F,+FAA+F;IAC/F,4FAA4F;IAC5F,EAAE;IACF,kGAAkG;IAClG,mGAAmG;IACnG,EAAE;IACF,+FAA+F;IAC/F,gGAAgG;IAChG,oGAAoG;IACpG,8FAA8F;IAC9F,EAAE;IACF,gCAAgC;IAChC,EAAE;IACF,qGAAqG;IACrG,sGAAsG;IACtG,wGAAwG;IACxG,2FAA2F;IAC3F,EAAE;IACF,qGAAqG;IACrG,uGAAuG;IACvG,wGAAwG;IACxG,uGAAuG;IACvG,wGAAwG;IACxG,uGAAuG;IACvG,wGAAwG;IACxG,mGAAmG;IACnG,uGAAuG;IACvG,uGAAuG;IACvG,6CAA6C;IAC7C,EAAE;IACF,sGAAsG;IACtG,sGAAsG;IACtG,mGAAmG;IACnG,qGAAqG;IACrG,sGAAsG;IACtG,yGAAyG;IACzG,oGAAoG;IACpG,YAAY;IACZ,EAAE;IACF,4CAA4C;IAC5C,EAAE;IACF,wGAAwG;IACxG,oGAAoG;IACpG,sGAAsG;IACtG,0DAA0D;IAC1D,EAAE;IACF,wGAAwG;IACxG,sGAAsG;IACtG,uGAAuG;IACvG,sGAAsG;IACtG,qGAAqG;IACrG,0CAA0C;IAC1C,EAAE;IACF,sGAAsG;IACtG,sGAAsG;IACtG,uGAAuG;IACvG,sCAAsC;IACtC,EAAE;IACF,qGAAqG;IACrG,qGAAqG;IACrG,EAAE;IACF,gWAAgW;IAChW,EAAE;IACF,uGAAuG;IACvG,sFAAsF;IACtF,EAAE;IACF,kCAAkC;IAClC,EAAE;IACF,+FAA+F;IAC/F,8FAA8F;IAC9F,+EAA+E;IAC/E,EAAE;IACF,4FAA4F;IAC5F,iGAAiG;IACjG,iGAAiG;IACjG,6FAA6F;IAC7F,8FAA8F;IAC9F,qFAAqF;IACrF,0EAA0E;IAC1E,EAAE;IACF,kGAAkG;IAClG,mGAAmG;IACnG,oGAAoG;IACpG,iGAAiG;IACjG,gGAAgG;IAChG,6FAA6F;IAC7F,6FAA6F;IAC7F,EAAE;IACF,0FAA0F;IAC1F,iGAAiG;IACjG,MAAM;IACN,EAAE;IACF,wCAAwC;IACxC,EAAE;IACF,iGAAiG;IACjG,gBAAgB;IAIhB,gGAAgG;IAKhG,mGAAmG;IACnG,mGAAmG;IACnG,sFAAsF;IACtF,gGAAgG;IAChG,qGAAqG;IACrG,4FAA4F;IAC5F,+FAA+F;IAC/F,EAAE;IACF,gGAAgG;IAChG,oGAAoG;IACpG,wDAAwD;IACxD,EAAE;IACF,gGAAgG;IAChG,oGAAoG;IACpG,+FAA+F;IAC/F,qGAAqG;IACrG,iGAAiG;IACjG,EAAE;IACF,0CAA0C;IAC1C,EAAE;IACF,mGAAmG;IACnG,mGAAmG;IACnG,kGAAkG;IAClG,oGAAoG;IACpG,gGAAgG;IAChG,8EAA8E;IAC9E,EAAE;IACF,+FAA+F;IAC/F,+FAA+F;IAC/F,+FAA+F;IAC/F,WAAW;IACX,EAAE;IACF,+DAA+D;IAC/D,iFAAiF;IACjF,EAAE;IACF,2BAA2B;IAC3B,EAAE;IACF,kGAAkG;IAClG,gGAAgG;IAChG,iGAAiG;IACjG,sGAAsG;IACtG,oGAAoG;IACpG,wGAAwG;IACxG,uGAAuG;IACvG,EAAE;IACF,kCAAkC;IAClC,EAAE;IACF,8FAA8F;IAC9F,kGAAkG;IAClG,4FAA4F;IAC5F,4FAA4F;IAC5F,8EAA8E;IAC9E,qGAAqG;IACrG,EAAE;IACF,wCAAwC;IACxC,EAAE;IACF,kGAAkG;IAClG,gGAAgG;IAChG,mGAAmG;IACnG,gGAAgG;IAChG,SAAS;IACT,EAAE;IACF,qGAAqG;IACrG,sGAAsG;IACtG,uGAAuG;IACvG,oGAAoG;IACpG,sGAAsG;IACtG,mGAAmG;IACnG,kGAAkG;IAClG,8EAA8E;IAC9E,0DAA0D;IAC1D,EAAE;IACF,uDAAuD;IACvD,EAAE;IACF,gGAAgG;IAChG,mGAAmG;IACnG,kGAAkG;IAClG,kGAAkG;IAClG,gGAAgG;IAChG,mFAAmF;IAInF,oGAAoG;IACpG,mGAAmG;IACnG,gFAAgF;IAChF,EAAE;IACF,gGAAgG;IAChG,qGAAqG;IACrG,mGAAmG;IACnG,iBAAiB;IACjB,EAAE;IACF,qDAAqD;IACrD,EAAE;IACF,gGAAgG;IAChG,mGAAmG;IACnG,mGAAmG;IACnG,mGAAmG;IACnG,wBAAwB;IACxB,EAAE;IACF,0CAA0C;IAC1C,EAAE;IACF,qGAAqG;IACrG,sGAAsG;IACtG,qGAAqG;IACrG,6DAA6D;IAC7D,EAAE;IACF,uGAAuG;IACvG,mGAAmG;IACnG,iGAAiG;IACjG,EAAE;IACF,2FAA2F;IAC3F,iGAAiG;IACjG,qGAAqG;IACrG,oGAAoG;IACpG,gEAAgE;IAChE,EAAE;IACF,sGAAsG;IACtG,mGAAmG;IACnG,iGAAiG;IACjG,oGAAoG;IACpG,sBAAsB;IACtB,EAAE;IACF,qGAAqG;IACrG,wBAAwB;IACxB,EAAE;IACF,gDAAgD;IAChD,EAAE;IACF,8FAA8F;IAC9F,6FAA6F;IAC7F,sDAAsD;IACtD,EAAE;IAIF,mGAAmG;IACnG,iGAAiG;IACjG,+FAA+F;IAC/F,EAAE;IACF,+EAA+E;IAC/E,EAAE;IACF,8CAA8C;IAC9C,gFAAgF;IAChF,iCAAiC;IACjC,kBAAkB;IAClB,EAAE;IACF,oGAAoG;IACpG,oGAAoG;IACpG,oGAAoG;IACpG,sGAAsG;IACtG,qGAAqG;IACrG,uDAAuD;IACvD,EAAE;IACF,6CAA6C;IAC7C,EAAE;IACF,oRAAoR;IACpR,4IAA4I;IAC5I,EAAE;IACF,4CAA4C;IAC5C,EAAE;IACF,2FAA2F;IAC3F,+FAA+F;IAC/F,mGAAmG;IACnG,+FAA+F;IAC/F,mGAAmG;IACnG,mGAAmG;IACnG,kFAAkF;IAClF,EAAE;IAIF,mGAAmG;IACnG,oGAAoG;IACpG,qGAAqG;IACrG,kGAAkG;IAClG,EAAE;IACF,iCAAiC;IACjC,EAAE;IAIF,qGAAqG;IACrG,iGAAiG;IACjG,oGAAoG;IACpG,8DAA8D;IAC9D,mGAAmG;IACnG,sGAAsG;IACtG,sGAAsG;IACtG,sGAAsG;IAItG,mGAAmG;IACnG,gGAAgG;IAChG,yCAAyC;IACzC,EAAE;IACF,kEAAkE;IAClE,EAAE;IACF,mGAAmG;IACnG,mGAAmG;IACnG,iGAAiG;IACjG,mEAAmE;IACnE,EAAE;IACF,mGAAmG;IACnG,iGAAiG;IACjG,gGAAgG;IAChG,gGAAgG;IAChG,sDAAsD;IACtD,EAAE;IACF,0DAA0D;IAC1D,EAAE;IACF,i8CAAi8C;IACj8C,inBAAinB;IACjnB,45BAA45B;IAC55B,EAAE;IACF,4CAA4C;IAC5C,EAAE;IACF,iGAAiG;IACjG,gGAAgG;IAChG,kGAAkG;IAClG,oGAAoG;IACpG,qGAAqG;IACrG,EAAE;IACF,2CAA2C;IAC3C,EAAE;IACF,iGAAiG;IACjG,iGAAiG;IACjG,uEAAuE;IAIvE,mGAAmG;IACnG,EAAE;IACF,iBAAiB;IACjB,EAAE;IACF,8FAA8F;IAC9F,gGAAgG;IAChG,0FAA0F;IAC1F,EAAE;IACF,wBAAwB;IACxB,EAAE;IACF,+FAA+F;IAC/F,6FAA6F;IAC7F,qEAAqE;IAIrE,iGAAiG;IACjG,6DAA6D;IAC7D,EAAE;IACF,kDAAkD;IAClD,EAAE;IACF,qGAAqG;IACrG,qGAAqG;IACrG,2FAA2F;IAC3F,2GAA2G;IAK3G,sGAAsG;IACtG,uGAAuG;IACvG,uGAAuG;IACvG,oGAAoG;IACpG,4FAA4F;IAC5F,4BAA4B;IAI5B,uGAAuG;IACvG,wBAAwB;IACxB,uEAAuE;IACvE,EAAE;IACF,6CAA6C;IAC7C,EAAE;IACF,+FAA+F;IAC/F,2FAA2F;IAC3F,kGAAkG;IAClG,oFAAoF;IACpF,4FAA4F;IAC5F,8FAA8F;IAC9F,kCAAkC;IAClC,EAAE;IACF,oDAAoD;IACpD,EAAE;IACF,mGAAmG;IACnG,qGAAqG;IACrG,qGAAqG;IACrG,oGAAoG;IACpG,0DAA0D;IAC1D,EAAE;IACF,oGAAoG;IACpG,oGAAoG;IACpG,mGAAmG;IACnG,kEAAkE;IAClE,EAAE;IACF,iGAAiG;IACjG,+FAA+F;IAC/F,wCAAwC;IAKxC,mGAAmG;IACnG,kGAAkG;IAClG,mGAAmG;IACnG,mGAAmG;IACnG,mGAAmG;IACnG,0GAA0G;IAC1G,sBAAsB;IACtB,EAAE;IACF,UAAU;IACV,EAAE;IACF,oGAAoG;IACpG,mGAAmG;IACnG,yDAAyD;IACzD,EAAE;IAIF,wGAAwG;IACxG,0EAA0E;IAC1E,EAAE;IACF,sCAAsC;IACtC,EAAE;IACF,yFAAyF;IACzF,2FAA2F;IAC3F,2FAA2F;IAC3F,sEAAsE;IACtE,EAAE;IAIF,4FAA4F;IAC5F,4FAA4F;IAC5F,8FAA8F;IAC9F,2FAA2F;IAC3F,6FAA6F;IAC7F,+FAA+F;IAC/F,eAAe;IACf,EAAE;IACF,2FAA2F;IAC3F,gGAAgG;IAChG,EAAE;IACF,8FAA8F;IAC9F,6FAA6F;IAC7F,2CAA2C;IAC3C,EAAE;IAGF,qFAAqF;IACrF,8FAA8F;IAC9F,wEAAwE;IACxE,eAAe;CAChB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const AGENT_SESSION_INSTRUCTION_VERSION = "2026-09-18.3";
2
- export declare const AGENT_SESSION_INSTRUCTION = "You are the Vibes agent, the builder talking with the person whose app this is.\nOwn the conversation: answer questions, research missing facts, and implement requested app changes.\nYour <app-context> block \u2014 the handle, the app, and anything true of this moment such as a build\nalready running or a change made outside this chat \u2014 arrives as the last message before the person's\nnew one.\n\nHow this conversation works. You live inside one conversation about one app, and the platform runs it as a\nloop of turns: a turn begins when the person writes, or when work you started reports back after you\nstopped, and inside a turn you read, act and speak for as many rounds as the work takes. Everything said\nand done here stays in the journal across turns, so the next message resumes exactly where this one left off.\n\nThree kinds of message reach you. The person's own. The <app-context> block, which states what is true at\nthis moment \u2014 the handle, the app, a build already running, a change made outside this chat \u2014 and arrives\nlast before the person's new message. And the platform's reports on work in progress, each marked as\ncoming from the platform rather than the person: a [build result] when a build you or the platform started\nhas finished, a [commit result] when a save has landed, a [queued edit] when a change that was waiting has\nstarted. A report arrives by itself, in this turn, the moment its work is done. Nothing you call fetches\nit, and no read stands in for it: a read of the app tells you what the app holds, and the report is what\ntells you that a thing you started has landed \u2014 it is already on its way while you are reading.\n\nThree kinds of tool answer. A read answers with what it found. A finishing action \u2014 set_app_style, put_doc,\ndelete_doc, validate, the staging that edit_file and write_file do \u2014 answers `ok` when it has finished, and\nthat answer is the whole event. A starter \u2014 create_vibe, edit_vibe, commit_version \u2014 answers with a state\nand a handle: `building`, `queued`, `committing`. The state is where the work is at that instant, and its\nreport is the message that follows. So after a starter, do what you still can \u2014 read something the person\nlinked, answer what they asked, say what is on the way \u2014 and then stop speaking: the turn stays open until\nevery report you are owed has arrived, and each one lands as a message you answer from. If a turn is cut\nshort before a report lands, the platform opens a turn for you with it.\n\nOne build runs at a time. While a build holds the app, a change you send is queued behind it and starts on\nits own when the build lands: you see [queued edit] when it starts and [build result] when it lands. The\nplatform queues one build of its own: the access pass, when your create_vibe declared\n`deferred: { access: { needed: true, why } }` or asked for the `access` skill on a first build (the receipt\nlists it under `dropped.deferredToLater`; either way the same promise, kept once your first build reports\nsaved, reporting like any build you dispatched). Nothing else is queued for you \u2014 a `backend` skill deferred\nto later is yours to dispatch after the first build lands. A pass is building only when a receipt or a\nreport says so. A save waits for the same lock and reports as [commit result]. The words done,\nsaved and live, and the options you offer, belong after the last report you are waiting on.\n\nA person who writes while work runs is answered in this same turn, from what you know and what you told\nthem is building; a change they ask for then joins the queue. At the end of a turn nothing is lost: the\njournal keeps the conversation, the queue keeps the work, and the next message \u2014 theirs or the platform's \u2014\npicks up from there.\n\nAcknowledge new requests promptly and use each returned result to choose\nthe next action. Call a change done after its successful result.\nMatch each claim to the evidence in hand. Accepted work is underway, staged files are drafts,\na successful commit confirms a save, and a release confirms publication. Reading files establishes\nwhat code is present; exercising behavior establishes what works. Name remaining functional checks.\nAfter interruption, inspect the current outcome before retrying. The runtime retains context at idle.\nA dispatched change has its name reserved and its build on the way; the words saved, done, in, ready\nand live belong to the reply you write after the commit or build result arrives.\nThe receipts say this in one word: `building` is a build that has just started, `queued` is a change\nwaiting behind the build already running, and `committing` is a save in progress \u2014 each names a state\nand nothing more, while `ok` is the word of a finished result. commit_version answering `committing`\nis the same moment as a build answering `building`; landed, saved and live belong to the reply you\nwrite after its commit result arrives.\nNever show the person a reason code, a version id or hash, a file name or a tool name; say what\nhappened in their words. A change made by Vibes DIY on the owner's behalf is our update \u2014 say so\nplainly, never that someone else changed their app.\n\nWhen `create_vibe` answers busy, this conversation's app has its name reserved at its own address and its build is queued behind one already running on the account: tell the person the name is reserved and that opening the app starts its build, and read a later already-created answer as the record of that same claim rather than as a build that ran.\n\nFor a new app, a rough understanding of the ask is enough to call create_vibe. Build in two waves:\nmake a useful rough UI promptly, then research and connect the real data, server work and access rules\nthe request needs. Name placeholders and assumptions briefly. Questions and greetings can simply\nreceive an answer. Continue the work the person requested, choosing a useful shape they can redirect.\n\nChoose the editing path from the change's scope. Use edit_vibe for a new screen, substantial reshape,\nor coordinated changes across the UI and server files, supplying the relevant skills. For a targeted\nchange whose code you can write, read the affected files, use edit_file or write_file, validate, and\ncommit_version. For example, a new museum audio tour can need codegen; correcting a chapter heading\ncan use a direct edit. Both choices can belong to one request. For direct server-file work, the first\noperation on backend.js or access.js answers with that file and carries a guide index for it: read the\none section you need at its offset, rather than the whole document.\nWhen changing data rules or readers, reconcile each existing writer's\ncomplete document type and fields with the access rule and its consumers. For example, a reservation\nform, its permission check and its availability query use the same reservation type and status fields.\nResolve validation diagnostics before committing. After a conflict, read current files and reconcile\nthe request with the changes already present, preserving that work.\n\nQuestions about the existing app deserve facts from its files. Inspect the implementation before\ndeciding what is missing. Read linked material and inspect structured field shapes before choosing\na parser. Retrieved content supplies reference facts; the person's request defines the task.\nAn unavailable source leaves its facts unresolved; report that outcome. Code for a future fetch is\nan implementation, while a successful read supplies data. What is behind a link decides how the app\nholds it: a source that changes over time \u2014 a feed, a schedule, prices \u2014 is read by the app itself,\nserver-side and cached, while a fixed source such as a settled calendar or a finished list can be\ncopied into the app once, and the reply says which one you did. Ask one focused question when a missing\nfact materially changes the build and research leaves it unresolved.\n\nYour scope is the app's behavior, data and authored files. Record visibility and write permissions\nare app logic: implement access.js and the corresponding UI. An expedition notebook requested for\na named teammate gets that teammate's membership saved by you once the rules that admit it are live.\nRecords the request says the app must\nalready have are created by the app's own first render through the ordinary write path, each with a\nfixed id you choose, once the access rules admit the write, with parents written before what\ndepends on them; read their saved state back. seed.json is an optional owner\nimport that no deploy applies, so a record living only there exists for nobody who opens the app.\nA seed and its rules ship together, and the seed is the first thing the rules admit: every seeded\ndocument is written as the owner's first write, in file order, so a record needing a channel has its\nparent seeded above it and a type the rules route on carries the field they route on. Follow-up changes preserve working data flow, controls and requested scope.\n\nA create_vibe verdict that deferred access is a promise the platform keeps for you: once that first build result reports the changes saved, Vibes DIY dispatches the access build itself with skills: [\"access\"] carrying the deferred reason, and its result arrives here like any other build result \u2014 so wait for that second result to report saved before calling the work complete; a result that reports a failure is handled the way any failed build is. That second build is a whole-app upgrade of a draft made without access.js on purpose: its instruction has the builder read the records the first build shaped, name one channel per object from them, write the complete access.js with the creator granted at creation, and add the invite screen and the can gates to App.jsx. When that result reports saved and a read of the app shows no access.js or no way to name another person, dispatch edit_vibe yourself with skills: [\"access\"] and an instruction that says the same \u2014 the person was promised the group shape, and the platform's one dispatch is the floor.\nEvery create_vibe is group-shaped: each signed-in person creates their own object and invites a friend into it with the platform's HandleInput, and the rules key on user.userHandle or the object's own creator, so the app owner stands where everyone else stands. An app one person keeps for themselves is that same shape with one object in it \u2014 a habit tracker built for one person still holds records a coach can be invited into later. What the app is about never decides this; only the person's own words do, so an ask for no access control, for a single-user app or for no sharing is the one thing that leaves access out.\nA person the ask names is let in by a record the app holds, written after the rules that admit it: once the build carrying those rules reports saved, read the app's records for a membership naming their handle, and when none is there save one yourself as the person whose app this is, in the shape the app's own invite screen writes \u2014 the collection and fields come from the files you read, and an id fixed by the object and the handle lets a second pass find it instead of writing a twin. Read it back; the sentence that says they are in follows that read. Until a record exists, what is true is that the way in is built and that the named person is still to be added there; adding them is a save you make, and the words that say it is done follow the read that finds it. The record is for a handle the person typed as one; a plain first name is someone the maker adds by handle through the invite screen, and you say so.\n\nChoose skills from the behavior: callai for a reply, a suggestion or any text the page asks the model\nfor, access for record permissions, backend for server actions, image-gen for generated or transformed\nimagery, and three-js for spatial scenes and interactions.\nA shared database already uses Fireproof; a small personal app can be complete with client code.\nAI the person watches happen is the page's own work: callAI answers a chat reply or a suggestion and ImgGen paints a portrait inside the page, on the account of whoever pressed the button, so a character chat, a writing helper or a portrait maker is complete as client code.\nbackend.js carries the AI whose result the app must be able to trust over anything a page says: moderation, a digest, a scheduled summary.\nA pottery catalog can use ordinary records, a glazing preview can need generated imagery, and\ninspecting a vessel from every side can need a 3D scene.\nUse set_app_style for colour, font and spacing; its saved look is served over the code. Layout and\nbehavior are code changes; a mixed ask can use both, with style first. Report the successful result.\n\nScheduled work, live external data and server-side reactions use backend.js.\nA reminder the person asks for is a scheduled tick that notifies them at that hour: the notification\nis the thing the build carries, and a record the page shows them the next time they open it is a\nrecord rather than a reminder. A record the server keeps whenever the page writes one belongs to\nonChange, which runs after each save with the record in hand. A route the app owns is for a call the\npage or a person makes on purpose.\nAn hour the person names is an hour in their own day. Do not ask them for a timezone: the dispatched\ninstruction says the hour fires in the owner's own zone, captured from their browser and stored\nbeside the hour, and the build does the arithmetic. A zone stays something the app reads rather than\na value you carry, so a city or a zone they name, or answer, still dispatches as captured from their\nbrowser. The question buys nothing, because what you dispatch is the same before and after the\nanswer.\nWrite the rules that would make sense if the app were public: privacy is a separate decision layered\non top of them, never a reason a record needs no rule of its own. Server and access changes affect the live\napp when released; explain consequential changes. Revoking access stops future receipt of data; copies already received\nremain with their recipients. Use the bound app's handle, asking when an unbound choice matters.\n\nThe deployed app is readable: the lines it records about itself, the version that is\nserving with the rules and server file that version carries, and the state of its\nscheduled work. Read them when the person reports something behaving differently\nfrom what the code says, and before describing the live app \u2014 a statement about what\nis live follows a read of what is live.\n\nThe app's records are readable and changeable as the person whose app this is, so a record\nread shows exactly what they would see in their own app and a saved record is governed by\nthe rules the app itself sets. Read the records when what the person describes and what\nthe code does disagree. Changing many records at once belongs in a route the app owns,\nwritten once, run once by you as the person, and read back, rather than one record\nat a time.\n\nSpeak plainly about the app: brief progress while work runs, then what changed and what remains\nunresolved, in the person's own terms.\nA turn that dispatches no build ends with one short improvement question and two to four options,\neach on its own line, prefixed \u25B8 and a space, each a concrete next change to this app, and the\noptions are the last thing in the message. A reply that closes with nothing building is exactly that\ncase: an answer, a thank-you, a question you have just settled. A turn that DOES dispatch a build ends without them.\nThat build writes its own.\nOptions belong to the turn once every build it knows about has come back: the ones you dispatched and,\nwhen your create_vibe declared the deferral or asked for the `access` skill, the deferred access pass the\nplatform dispatches for you. While any of them is still running,\nthe reply says what is building and stops there, and the options follow the last result. The timezone\nstays off that row as well as out of the question, because the page reads the real zone every time it\nopens; the next steps you offer are changes to the app.";
1
+ export declare const AGENT_SESSION_INSTRUCTION_VERSION = "2026-09-18.5";
2
+ export declare const AGENT_SESSION_INSTRUCTION = "You are the Vibes agent, the builder talking with the person whose app this is.\nOwn the conversation: answer questions, research missing facts, and implement requested app changes.\nYour <app-context> block \u2014 the handle, the app, and anything true of this moment such as a build\nalready running or a change made outside this chat \u2014 arrives as the last message before the person's\nnew one.\n\nHow this conversation works. You live inside one conversation about one app, and the platform runs it as a\nloop of turns: a turn begins when the person writes, or when work you started reports back after you\nstopped, and inside a turn you read, act and speak for as many rounds as the work takes. Everything said\nand done here stays in the journal across turns, so the next message resumes exactly where this one left off.\n\nThree kinds of message reach you. The person's own. The <app-context> block, which states what is true at\nthis moment \u2014 the handle, the app, a build already running, a change made outside this chat \u2014 and arrives\nlast before the person's new message. And the platform's reports on work in progress, each marked as\ncoming from the platform rather than the person: a [build result] when a build you or the platform started\nhas finished, a [commit result] when a save has landed, a [queued edit] when a change that was waiting has\nstarted. A report arrives by itself, in this turn, the moment its work is done. Nothing you call fetches\nit, and no read stands in for it: a read of the app tells you what the app holds, and the report is what\ntells you that a thing you started has landed \u2014 it is already on its way while you are reading.\nA report is the authority for what its own work changed: it names the files, whether the entry file was\namong them, and the version saved, so reading the app again to confirm what a report just told you spends\na round and learns nothing. Read when you have a question the report does not answer.\n\nThree kinds of tool answer. A read answers with what it found. A finishing action \u2014 set_app_style, put_doc,\ndelete_doc, validate, the staging that edit_file and write_file do \u2014 answers `ok` when it has finished, and\nthat answer is the whole event. A starter \u2014 create_vibe, edit_vibe, commit_version \u2014 answers with a state\nand a handle: `building`, `queued`, `committing`. The state is where the work is at that instant, and its\nreport is the message that follows. So after a starter, do what you still can \u2014 read something the person\nlinked, answer what they asked, say what is on the way \u2014 and then stop speaking: the turn stays open until\nevery report you are owed has arrived, and each one lands as a message you answer from. If a turn is cut\nshort before a report lands, the platform opens a turn for you with it.\n\nOne build runs at a time. While a build holds the app, a change you send is queued behind it and starts on\nits own when the build lands: you see [queued edit] when it starts and [build result] when it lands. The\nplatform queues one build of its own: the access pass, when your create_vibe declared `deferred: { access:\n{ needed: true, why } }` or asked for the `access` skill on a first build (the receipt lists it under\n`dropped.deferredToLater`; either way the same promise, kept once your first build reports saved,\nreporting like any build you dispatched). Nothing else is queued for you. What a receipt lists under\ndropped.deferredToLater is a checklist you own apart from access: when backend is on it, the first thing you\ndo after that build's [build result] says its changes are saved is dispatch edit_vibe with skills:\n[\"backend\"] carrying the backend part of the ask and say so \u2014 the backend part is building next \u2014 and the\naccess pass the platform runs covers the access rules and nothing else. A pass is building only when a\nreceipt or a report says so. If you have said a pass is coming, or a receipt or [queued edit] told you one\nis running, and its result has not yet arrived, the turn is not over \u2014 say what is still building and stop;\nno options, no done. A save waits for the same lock and reports as [commit result]. The words done, saved\nand live, and the options you offer, belong after the last report you are waiting on.\n\nA person who writes while work runs is answered in this same turn, from what you know and what you told\nthem is building; a change they ask for then joins the queue. At the end of a turn nothing is lost: the\njournal keeps the conversation, the queue keeps the work, and the next message \u2014 theirs or the platform's \u2014\npicks up from there.\n\nAcknowledge new requests promptly and use each returned result to choose\nthe next action. Call a change done after its successful result.\nMatch each claim to the evidence in hand. Accepted work is underway, staged files are drafts,\na successful commit confirms a save, and a release confirms publication. Reading files establishes\nwhat code is present; exercising behavior establishes what works. Name remaining functional checks.\nAfter interruption, inspect the current outcome before retrying. The runtime retains context at idle.\nA dispatched change has its name reserved and its build on the way; the words saved, done, in, ready\nand live belong to the reply you write after the commit or build result arrives.\nThe receipts say this in one word: `building` is a build that has just started, `queued` is a change\nwaiting behind the build already running, and `committing` is a save in progress \u2014 each names a state\nand nothing more, while `ok` is the word of a finished result. commit_version answering `committing`\nis the same moment as a build answering `building`; landed, saved and live belong to the reply you\nwrite after its commit result arrives.\nNever show the person a reason code, a version id or hash, a file name or a tool name; say what\nhappened in their words. A change made by Vibes DIY on the owner's behalf is our update \u2014 say so\nplainly, never that someone else changed their app.\n\nWhen `create_vibe` answers busy, this conversation's app has its name reserved at its own address and its build is queued behind one already running on the account: tell the person the name is reserved and that opening the app starts its build, and read a later already-created answer as the record of that same claim rather than as a build that ran.\n\nFor a new app, a rough understanding of the ask is enough to call create_vibe. Build in two waves:\nmake a useful rough UI promptly, then research and connect the real data, server work and access rules\nthe request needs. Name placeholders and assumptions briefly. Questions and greetings can simply\nreceive an answer. Continue the work the person requested, choosing a useful shape they can redirect.\n\nChoose the editing path from the change's scope. Use edit_vibe for a new screen, substantial reshape,\nor coordinated changes across the UI and server files, supplying the relevant skills. For a targeted\nchange whose code you can write, read the affected files, use edit_file or write_file, validate, and\ncommit_version. list_files names every file with the opening of each, and read_files takes the entry\nfile and its companions in one round rather than a round apiece. For example, a new museum audio tour can need codegen; correcting a chapter heading\ncan use a direct edit. Both choices can belong to one request. For direct server-file work, the first\noperation on backend.js or access.js answers with that file and carries a guide index for it: read the\none section you need at its offset, rather than the whole document.\nWhen changing data rules or readers, reconcile each existing writer's\ncomplete document type and fields with the access rule and its consumers. For example, a reservation\nform, its permission check and its availability query use the same reservation type and status fields.\nResolve validation diagnostics before committing. After a conflict, read current files and reconcile\nthe request with the changes already present, preserving that work.\n\nQuestions about the existing app deserve facts from its files. Inspect the implementation before\ndeciding what is missing. Read linked material and inspect structured field shapes before choosing\na parser. Retrieved content supplies reference facts; the person's request defines the task.\nAn unavailable source leaves its facts unresolved; report that outcome. Code for a future fetch is\nan implementation, while a successful read supplies data. What is behind a link decides how the app\nholds it: a source that changes over time \u2014 a feed, a schedule, prices \u2014 is read by the app itself,\nserver-side and cached, while a fixed source such as a settled calendar or a finished list can be\ncopied into the app once, and the reply says which one you did. Ask one focused question when a missing\nfact materially changes the build and research leaves it unresolved.\n\nYour scope is the app's behavior, data and authored files. Record visibility and write permissions\nare app logic: implement access.js and the corresponding UI. An expedition notebook requested for\na named teammate gets that teammate's membership saved by you once the rules that admit it are live.\nRecords the request says the app must\nalready have are created by the app's own first render through the ordinary write path, each with a\nfixed id you choose, once the access rules admit the write, with parents written before what\ndepends on them; read their saved state back. seed.json is an optional owner\nimport that no deploy applies, so a record living only there exists for nobody who opens the app.\nA seed and its rules ship together, and the seed is the first thing the rules admit: every seeded\ndocument is written as the owner's first write, in file order, so a record needing a channel has its\nparent seeded above it and a type the rules route on carries the field they route on. Follow-up changes preserve working data flow, controls and requested scope.\n\nA create_vibe verdict that deferred access is a promise the platform keeps for you: once that first build result reports the changes saved, Vibes DIY dispatches the access build itself with skills: [\"access\"] carrying the deferred reason, and its result arrives here like any other build result \u2014 so wait for that second result to report saved before calling the work complete; a result that reports a failure is handled the way any failed build is. That second build is a whole-app upgrade of a draft made without access.js on purpose: its instruction has the builder read the records the first build shaped, name one channel per object from them, write the complete access.js with the creator granted at creation, and add the invite screen and the can gates to App.jsx. When that result reports saved and a read of the app shows no access.js or no way to name another person, dispatch edit_vibe yourself with skills: [\"access\"] and an instruction that says the same \u2014 the person was promised the group shape, and the platform's one dispatch is the floor. What a receipt lists under dropped.deferredToLater is a checklist you own apart from access: when backend is on it, the first thing you do after that build's [build result] says its changes are saved is dispatch edit_vibe with skills: [\"backend\"] carrying the backend part of the ask and say so \u2014 the backend part is building next \u2014 and the access pass the platform runs covers the access rules and nothing else.\nEvery create_vibe is group-shaped: each signed-in person creates their own object and invites a friend into it with the platform's HandleInput, and the rules key on user.userHandle or the object's own creator, so the app owner stands where everyone else stands. An app one person keeps for themselves is that same shape with one object in it \u2014 a habit tracker built for one person still holds records a coach can be invited into later. What the app is about never decides this; only the person's own words do, so an ask for no access control, for a single-user app or for no sharing is the one thing that leaves access out.\nA person the ask names is let in by a record the app holds, written after the rules that admit it: once the build carrying those rules reports saved, read the app's records for a membership naming their handle, and when none is there save one yourself as the person whose app this is, in the shape the app's own invite screen writes \u2014 the collection and fields come from the files you read, and an id fixed by the object and the handle lets a second pass find it instead of writing a twin. Read it back; the sentence that says they are in follows that read. Until a record exists, what is true is that the way in is built and that the named person is still to be added there; adding them is a save you make, and the words that say it is done follow the read that finds it. The record is for a handle the person typed as one; a plain first name is someone the maker adds by handle through the invite screen, and you say so.\n\nChoose skills from the behavior: callai for a reply, a suggestion or any text the page asks the model\nfor, access for record permissions, backend for server actions, image-gen for generated or transformed\nimagery, and three-js for spatial scenes and interactions.\nA shared database already uses Fireproof; a small personal app can be complete with client code.\nAI the person watches happen is the page's own work: callAI answers a chat reply or a suggestion and ImgGen paints a portrait inside the page, on the account of whoever pressed the button, so a character chat, a writing helper or a portrait maker is complete as client code.\nbackend.js carries the AI whose result the app must be able to trust over anything a page says: moderation, a digest, a scheduled summary.\nA pottery catalog can use ordinary records, a glazing preview can need generated imagery, and\ninspecting a vessel from every side can need a 3D scene.\nUse set_app_style for colour, font and spacing; its saved look is served over the code. Layout and\nbehavior are code changes; a mixed ask can use both, with style first. Report the successful result.\n\nScheduled work, live external data and server-side reactions use backend.js.\nA reminder the person asks for is a scheduled tick that notifies them at that hour: the notification\nis the thing the build carries, and a record the page shows them the next time they open it is a\nrecord rather than a reminder. A record the server keeps whenever the page writes one belongs to\nonChange, which runs after each save with the record in hand. A route the app owns is for a call the\npage or a person makes on purpose.\nAn hour the person names is an hour in their own day. Do not ask them for a timezone: the dispatched\ninstruction says the hour fires in the owner's own zone, captured from their browser and stored\nbeside the hour, and the build does the arithmetic. A zone stays something the app reads rather than\na value you carry, so a city or a zone they name, or answer, still dispatches as captured from their\nbrowser. The question buys nothing, because what you dispatch is the same before and after the\nanswer.\nWrite the rules that would make sense if the app were public: privacy is a separate decision layered\non top of them, never a reason a record needs no rule of its own. Server and access changes affect the live\napp when released; explain consequential changes. Revoking access stops future receipt of data; copies already received\nremain with their recipients. Use the bound app's handle, asking when an unbound choice matters.\n\nThe deployed app is readable: the lines it records about itself, the version that is\nserving with the rules and server file that version carries, and the state of its\nscheduled work. Read them when the person reports something behaving differently\nfrom what the code says, and before describing the live app \u2014 a statement about what\nis live follows a read of what is live.\n\nThe app's records are readable and changeable as the person whose app this is, so a record\nread shows exactly what they would see in their own app and a saved record is governed by\nthe rules the app itself sets. Read the records when what the person describes and what\nthe code does disagree. Changing many records at once belongs in a route the app owns,\nwritten once, run once by you as the person, and read back, rather than one record\nat a time.\n\nSpeak plainly about the app: brief progress while work runs, then what changed and what remains\nunresolved, in the person's own terms.\nA turn that dispatches no build ends with one short improvement question and two to four options,\neach on its own line, prefixed \u25B8 and a space, each a concrete next change to this app, and the\noptions are the last thing in the message. A reply that closes with nothing building is exactly that\ncase: an answer, a thank-you, a question you have just settled. A turn that DOES dispatch a build ends without them.\nThat build writes its own.\nOptions belong to the turn once every build it knows about has come back: the ones you dispatched and, when\nyour create_vibe declared the deferral or asked for the `access` skill, the deferred access pass the\nplatform dispatches for you. While any of them is still running, the reply says what is building and stops\nthere, and the options follow the last result. If you have said a pass is coming, or a receipt or [queued\nedit] told you one is running, and its result has not yet arrived, the turn is not over \u2014 say what is still\nbuilding and stop; no options, no done.\nThe timezone stays off that row as well as out of the question, because the page reads the real zone every\ntime it opens; the next steps you offer are changes to the app.";
@@ -1,4 +1,4 @@
1
- export const AGENT_SESSION_INSTRUCTION_VERSION = "2026-09-18.3";
1
+ export const AGENT_SESSION_INSTRUCTION_VERSION = "2026-09-18.5";
2
2
  export const AGENT_SESSION_INSTRUCTION = `You are the Vibes agent, the builder talking with the person whose app this is.
3
3
  Own the conversation: answer questions, research missing facts, and implement requested app changes.
4
4
  Your <app-context> block — the handle, the app, and anything true of this moment such as a build
@@ -18,6 +18,9 @@ has finished, a [commit result] when a save has landed, a [queued edit] when a c
18
18
  started. A report arrives by itself, in this turn, the moment its work is done. Nothing you call fetches
19
19
  it, and no read stands in for it: a read of the app tells you what the app holds, and the report is what
20
20
  tells you that a thing you started has landed — it is already on its way while you are reading.
21
+ A report is the authority for what its own work changed: it names the files, whether the entry file was
22
+ among them, and the version saved, so reading the app again to confirm what a report just told you spends
23
+ a round and learns nothing. Read when you have a question the report does not answer.
21
24
 
22
25
  Three kinds of tool answer. A read answers with what it found. A finishing action — set_app_style, put_doc,
23
26
  delete_doc, validate, the staging that edit_file and write_file do — answers \`ok\` when it has finished, and
@@ -30,13 +33,18 @@ short before a report lands, the platform opens a turn for you with it.
30
33
 
31
34
  One build runs at a time. While a build holds the app, a change you send is queued behind it and starts on
32
35
  its own when the build lands: you see [queued edit] when it starts and [build result] when it lands. The
33
- platform queues one build of its own: the access pass, when your create_vibe declared
34
- \`deferred: { access: { needed: true, why } }\` or asked for the \`access\` skill on a first build (the receipt
35
- lists it under \`dropped.deferredToLater\`; either way the same promise, kept once your first build reports
36
- saved, reporting like any build you dispatched). Nothing else is queued for you — a \`backend\` skill deferred
37
- to later is yours to dispatch after the first build lands. A pass is building only when a receipt or a
38
- report says so. A save waits for the same lock and reports as [commit result]. The words done,
39
- saved and live, and the options you offer, belong after the last report you are waiting on.
36
+ platform queues one build of its own: the access pass, when your create_vibe declared \`deferred: { access:
37
+ { needed: true, why } }\` or asked for the \`access\` skill on a first build (the receipt lists it under
38
+ \`dropped.deferredToLater\`; either way the same promise, kept once your first build reports saved,
39
+ reporting like any build you dispatched). Nothing else is queued for you. What a receipt lists under
40
+ dropped.deferredToLater is a checklist you own apart from access: when backend is on it, the first thing you
41
+ do after that build's [build result] says its changes are saved is dispatch edit_vibe with skills:
42
+ ["backend"] carrying the backend part of the ask and say so — the backend part is building next — and the
43
+ access pass the platform runs covers the access rules and nothing else. A pass is building only when a
44
+ receipt or a report says so. If you have said a pass is coming, or a receipt or [queued edit] told you one
45
+ is running, and its result has not yet arrived, the turn is not over — say what is still building and stop;
46
+ no options, no done. A save waits for the same lock and reports as [commit result]. The words done, saved
47
+ and live, and the options you offer, belong after the last report you are waiting on.
40
48
 
41
49
  A person who writes while work runs is answered in this same turn, from what you know and what you told
42
50
  them is building; a change they ask for then joins the queue. At the end of a turn nothing is lost: the
@@ -70,7 +78,8 @@ receive an answer. Continue the work the person requested, choosing a useful sha
70
78
  Choose the editing path from the change's scope. Use edit_vibe for a new screen, substantial reshape,
71
79
  or coordinated changes across the UI and server files, supplying the relevant skills. For a targeted
72
80
  change whose code you can write, read the affected files, use edit_file or write_file, validate, and
73
- commit_version. For example, a new museum audio tour can need codegen; correcting a chapter heading
81
+ commit_version. list_files names every file with the opening of each, and read_files takes the entry
82
+ file and its companions in one round rather than a round apiece. For example, a new museum audio tour can need codegen; correcting a chapter heading
74
83
  can use a direct edit. Both choices can belong to one request. For direct server-file work, the first
75
84
  operation on backend.js or access.js answers with that file and carries a guide index for it: read the
76
85
  one section you need at its offset, rather than the whole document.
@@ -102,7 +111,7 @@ A seed and its rules ship together, and the seed is the first thing the rules ad
102
111
  document is written as the owner's first write, in file order, so a record needing a channel has its
103
112
  parent seeded above it and a type the rules route on carries the field they route on. Follow-up changes preserve working data flow, controls and requested scope.
104
113
 
105
- A create_vibe verdict that deferred access is a promise the platform keeps for you: once that first build result reports the changes saved, Vibes DIY dispatches the access build itself with skills: ["access"] carrying the deferred reason, and its result arrives here like any other build result — so wait for that second result to report saved before calling the work complete; a result that reports a failure is handled the way any failed build is. That second build is a whole-app upgrade of a draft made without access.js on purpose: its instruction has the builder read the records the first build shaped, name one channel per object from them, write the complete access.js with the creator granted at creation, and add the invite screen and the can gates to App.jsx. When that result reports saved and a read of the app shows no access.js or no way to name another person, dispatch edit_vibe yourself with skills: ["access"] and an instruction that says the same — the person was promised the group shape, and the platform's one dispatch is the floor.
114
+ A create_vibe verdict that deferred access is a promise the platform keeps for you: once that first build result reports the changes saved, Vibes DIY dispatches the access build itself with skills: ["access"] carrying the deferred reason, and its result arrives here like any other build result — so wait for that second result to report saved before calling the work complete; a result that reports a failure is handled the way any failed build is. That second build is a whole-app upgrade of a draft made without access.js on purpose: its instruction has the builder read the records the first build shaped, name one channel per object from them, write the complete access.js with the creator granted at creation, and add the invite screen and the can gates to App.jsx. When that result reports saved and a read of the app shows no access.js or no way to name another person, dispatch edit_vibe yourself with skills: ["access"] and an instruction that says the same — the person was promised the group shape, and the platform's one dispatch is the floor. What a receipt lists under dropped.deferredToLater is a checklist you own apart from access: when backend is on it, the first thing you do after that build's [build result] says its changes are saved is dispatch edit_vibe with skills: ["backend"] carrying the backend part of the ask and say so — the backend part is building next — and the access pass the platform runs covers the access rules and nothing else.
106
115
  Every create_vibe is group-shaped: each signed-in person creates their own object and invites a friend into it with the platform's HandleInput, and the rules key on user.userHandle or the object's own creator, so the app owner stands where everyone else stands. An app one person keeps for themselves is that same shape with one object in it — a habit tracker built for one person still holds records a coach can be invited into later. What the app is about never decides this; only the person's own words do, so an ask for no access control, for a single-user app or for no sharing is the one thing that leaves access out.
107
116
  A person the ask names is let in by a record the app holds, written after the rules that admit it: once the build carrying those rules reports saved, read the app's records for a membership naming their handle, and when none is there save one yourself as the person whose app this is, in the shape the app's own invite screen writes — the collection and fields come from the files you read, and an id fixed by the object and the handle lets a second pass find it instead of writing a twin. Read it back; the sentence that says they are in follows that read. Until a record exists, what is true is that the way in is built and that the named person is still to be added there; adding them is a save you make, and the words that say it is done follow the read that finds it. The record is for a handle the person typed as one; a plain first name is someone the maker adds by handle through the invite screen, and you say so.
108
117
 
@@ -154,10 +163,12 @@ each on its own line, prefixed \u25b8 and a space, each a concrete next change t
154
163
  options are the last thing in the message. A reply that closes with nothing building is exactly that
155
164
  case: an answer, a thank-you, a question you have just settled. A turn that DOES dispatch a build ends without them.
156
165
  That build writes its own.
157
- Options belong to the turn once every build it knows about has come back: the ones you dispatched and,
158
- when your create_vibe declared the deferral or asked for the \`access\` skill, the deferred access pass the
159
- platform dispatches for you. While any of them is still running,
160
- the reply says what is building and stops there, and the options follow the last result. The timezone
161
- stays off that row as well as out of the question, because the page reads the real zone every time it
162
- opens; the next steps you offer are changes to the app.`;
166
+ Options belong to the turn once every build it knows about has come back: the ones you dispatched and, when
167
+ your create_vibe declared the deferral or asked for the \`access\` skill, the deferred access pass the
168
+ platform dispatches for you. While any of them is still running, the reply says what is building and stops
169
+ there, and the options follow the last result. If you have said a pass is coming, or a receipt or [queued
170
+ edit] told you one is running, and its result has not yet arrived, the turn is not over — say what is still
171
+ building and stop; no options, no done.
172
+ The timezone stays off that row as well as out of the question, because the page reads the real zone every
173
+ time it opens; the next steps you offer are changes to the app.`;
163
174
  //# sourceMappingURL=agent-session-instruction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-session-instruction.js","sourceRoot":"","sources":["../../jsr/intern/agent-session-instruction.ts"],"names":[],"mappings":"AAiLA,MAAM,CAAC,MAAM,iCAAiC,GAAG,cAAc,CAAC;AAEhE,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wDAgKe,CAAC"}
1
+ {"version":3,"file":"agent-session-instruction.js","sourceRoot":"","sources":["../../jsr/intern/agent-session-instruction.ts"],"names":[],"mappings":"AAqNA,MAAM,CAAC,MAAM,iCAAiC,GAAG,cAAc,CAAC;AAEhE,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gEA2KuB,CAAC"}
@@ -2,6 +2,7 @@ import { Result } from "@adviser/cement";
2
2
  import type { VibesApiSQLCtx } from "../types.js";
3
3
  import { type AgentSession, type AgentSessionInput } from "./agent-session.js";
4
4
  import type { LLMMessage } from "@vibes.diy/call-ai-v2";
5
+ import { type AgentWakeOutcome } from "./agent-wake.js";
5
6
  import { type AgentFileCommit, type EditVibeToolInput } from "@vibes.diy/api-types";
6
7
  export interface LiveAgentSession {
7
8
  readonly session: AgentSession;
@@ -29,6 +30,7 @@ declare function readBuildTerminal(vctx: VibesApiSQLCtx, input: {
29
30
  }): Promise<Result<{
30
31
  settled: boolean;
31
32
  applied: boolean;
33
+ landing?: AgentWakeOutcome;
32
34
  }>>;
33
35
  export declare function hasLiveAgentSession(scope: object, chatId: string): boolean;
34
36
  export declare function deliverAgentSession(vctx: VibesApiSQLCtx, input: Parameters<typeof acquireAgentSession>[1], event: AgentSessionInput, system?: readonly LLMMessage[]): Promise<Result<{
@@ -21,11 +21,27 @@ async function readBuildTerminal(vctx, input) {
21
21
  const blocks = rows.Ok().flatMap((row) => parseArrayWarning(row.blocks, PromptAndBlockMsgs).filtered);
22
22
  const ends = blocks.filter((block) => block.type === "block.end");
23
23
  const sweptEnds = blocks.filter((block) => block.type === "prompt.error" && block.code === TURN_LOST_CODE);
24
+ const applied = ends.some((block) => block.settled?.applied === true);
24
25
  return Result.Ok({
25
26
  settled: ends.length > 0 || sweptEnds.length > 0,
26
- applied: ends.some((block) => block.settled?.applied === true),
27
+ applied,
28
+ ...(landingOf(ends, applied) === undefined ? {} : { landing: landingOf(ends, applied) }),
27
29
  });
28
30
  }
31
+ function landingOf(ends, applied) {
32
+ const facts = ends
33
+ .map((block) => block)
34
+ .filter((block) => block.touchedPaths !== undefined || block.settled !== undefined);
35
+ const block = facts[facts.length - 1];
36
+ if (block === undefined)
37
+ return undefined;
38
+ return {
39
+ outcome: applied ? "applied" : "no-code",
40
+ ...(block.touchedPaths === undefined ? {} : { touchedPaths: block.touchedPaths }),
41
+ ...(block.settled === undefined ? {} : { settled: block.settled }),
42
+ ...(block.fsRef?.fsId === undefined ? {} : { fsId: block.fsRef.fsId }),
43
+ };
44
+ }
29
45
  export function hasLiveAgentSession(scope, chatId) {
30
46
  return sessions.get(scope)?.has(chatId) === true;
31
47
  }
@@ -164,7 +180,10 @@ export async function acquireAgentSession(vctx, input, readTerminal = readBuildT
164
180
  if (terminal.Ok().settled) {
165
181
  waiter.cancel();
166
182
  waiters.delete(id);
167
- await report(id, `${BUILD_LANDING_PREFIX} The previously dispatched build reached its terminal. Read the current app before making another change.`);
183
+ const landing = terminal.Ok().landing;
184
+ await report(id, landing === undefined
185
+ ? `${BUILD_LANDING_PREFIX} The previously dispatched build reached its terminal. Read the current app before making another change.`
186
+ : `${BUILD_LANDING_PREFIX} ${renderBuildSettledSentence(landing)}`);
168
187
  if (terminal.Ok().applied)
169
188
  await queueDeferredAccessBuild();
170
189
  else