@vibes.diy/api-svc 14.3.90 → 14.3.91

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.
Files changed (39) hide show
  1. package/create-handler.d.ts +1 -0
  2. package/create-handler.js +1 -0
  3. package/create-handler.js.map +1 -1
  4. package/intern/agent-belt.d.ts +2 -3
  5. package/intern/agent-belt.js +6 -28
  6. package/intern/agent-belt.js.map +1 -1
  7. package/intern/agent-session-instruction.d.ts +3 -2
  8. package/intern/agent-session-instruction.js +3 -1
  9. package/intern/agent-session-instruction.js.map +1 -1
  10. package/intern/agent-skill-catalog.d.ts +12 -0
  11. package/intern/agent-skill-catalog.js +26 -0
  12. package/intern/agent-skill-catalog.js.map +1 -0
  13. package/intern/capi-build-event.d.ts +3 -1
  14. package/intern/capi-build-event.js +18 -1
  15. package/intern/capi-build-event.js.map +1 -1
  16. package/intern/capi-lead-event.d.ts +55 -0
  17. package/intern/capi-lead-event.js +169 -0
  18. package/intern/capi-lead-event.js.map +1 -0
  19. package/intern/capi-lead-ledger.d.ts +11 -0
  20. package/intern/capi-lead-ledger.js +75 -0
  21. package/intern/capi-lead-ledger.js.map +1 -0
  22. package/intern/mercury-capability-triggers.d.ts +1 -1
  23. package/intern/mercury-capability-triggers.js +0 -81
  24. package/intern/mercury-capability-triggers.js.map +1 -1
  25. package/intern/mercury-first-build-seam.js +1 -1
  26. package/intern/mercury-first-build-seam.js.map +1 -1
  27. package/intern/mercury-first-build.d.ts +25 -15
  28. package/intern/mercury-first-build.js +114 -84
  29. package/intern/mercury-first-build.js.map +1 -1
  30. package/intern/record-daily-visit.js +19 -1
  31. package/intern/record-daily-visit.js.map +1 -1
  32. package/package.json +13 -13
  33. package/public/ensure-user-settings.d.ts +1 -1
  34. package/public/ensure-user-settings.js +23 -10
  35. package/public/ensure-user-settings.js.map +1 -1
  36. package/public/who-am-i.js +12 -1
  37. package/public/who-am-i.js.map +1 -1
  38. package/types.d.ts +2 -1
  39. package/types.js.map +1 -1
@@ -0,0 +1,55 @@
1
+ import { type Result } from "@adviser/cement";
2
+ import { UserSettingItem, postCapiEvent } from "@vibes.diy/api-types";
3
+ import { cfDrizzle, VibesApiTables } from "@vibes.diy/api-sql";
4
+ import { VibesApiSQLCtx } from "../types.js";
5
+ import type { VibesPlan } from "./autumn-plan.js";
6
+ import { type CapiBuildEventPlan } from "./capi-build-event.js";
7
+ export type CapiLeadRung = "signup" | "audience" | "paid" | "return";
8
+ export interface CapiLeadEventPlanInput {
9
+ readonly rung: CapiLeadRung;
10
+ readonly day?: string;
11
+ readonly settings: readonly UserSettingItem[];
12
+ readonly externalId: string;
13
+ readonly capiToken: string | undefined;
14
+ readonly pixelId: string | undefined;
15
+ }
16
+ export declare function planCapiLeadEvent(input: CapiLeadEventPlanInput): CapiBuildEventPlan | undefined;
17
+ export declare function shouldCreditAudience(viewerSlug: string | undefined, ownerSlug: string, vibeIdentityRouted: boolean, viewerIsStaff: boolean): boolean;
18
+ export declare function postCapiAudienceEvent(vctx: VibesApiSQLCtx, args: {
19
+ ownerHandle: string;
20
+ viewerUserId: string;
21
+ }): void;
22
+ export interface CapiPaidCtx {
23
+ readonly sql: {
24
+ db: ReturnType<typeof cfDrizzle>["db"];
25
+ tables: VibesApiTables;
26
+ };
27
+ readonly capiToken: string | undefined;
28
+ readonly pixelId: string | undefined;
29
+ readonly eventSourceUrl: string;
30
+ readonly readPlan?: (userId: string) => Promise<Result<VibesPlan>>;
31
+ readonly send?: typeof postCapiEvent;
32
+ }
33
+ export declare function postCapiPaidEvent(ctx: CapiPaidCtx, userId: string): Promise<void>;
34
+ export interface ShouldCreditReturnInput {
35
+ readonly settings: readonly UserSettingItem[];
36
+ readonly day: string;
37
+ readonly nowMs: number;
38
+ readonly isStaff: boolean;
39
+ }
40
+ export declare function shouldCreditReturn(input: ShouldCreditReturnInput): boolean;
41
+ export interface CapiReturnCtx {
42
+ readonly sql: {
43
+ db: ReturnType<typeof cfDrizzle>["db"];
44
+ tables: VibesApiTables;
45
+ };
46
+ readonly capiToken: string | undefined;
47
+ readonly pixelId: string | undefined;
48
+ readonly eventSourceUrl: string;
49
+ readonly send?: typeof postCapiEvent;
50
+ }
51
+ export declare function postCapiReturnEvent(ctx: CapiReturnCtx, args: {
52
+ readonly userId: string;
53
+ readonly settings: readonly UserSettingItem[];
54
+ readonly day: string;
55
+ }): Promise<void>;
@@ -0,0 +1,169 @@
1
+ import { exception2Result } from "@adviser/cement";
2
+ import { eq } from "drizzle-orm/sql/expressions";
3
+ import { LEAD_POINTS, META_CLICK_WINDOW_MS, capiEventId, capiExternalId, isUserSettingContactEmail, isUserSettingMetaClickId, parseArrayWarning, postCapiEvent, userSettingItem, } from "@vibes.diy/api-types";
4
+ import { buildCapiBuildEvent } from "./capi-build-event.js";
5
+ import { claimLeadReturnDay, claimLeadRung, isLeadRungCredited, lastCreditedReturnDay } from "./capi-lead-ledger.js";
6
+ export function planCapiLeadEvent(input) {
7
+ if (input.capiToken === undefined || input.capiToken === "")
8
+ return undefined;
9
+ if (input.pixelId === undefined || input.pixelId === "")
10
+ return undefined;
11
+ const click = input.settings.find(isUserSettingMetaClickId);
12
+ if (click === undefined || click.fbc === "")
13
+ return undefined;
14
+ const keySuffix = input.rung === "return"
15
+ ? input.day === undefined
16
+ ? undefined
17
+ : `return:${input.externalId}:${input.day}`
18
+ : `${input.rung}:${input.externalId}`;
19
+ if (keySuffix === undefined)
20
+ return undefined;
21
+ if (input.rung === "return" ? lastCreditedReturnDay(input.settings) === input.day : isLeadRungCredited(input.settings, input.rung))
22
+ return undefined;
23
+ const contact = input.settings.find(isUserSettingContactEmail);
24
+ const email = contact?.verified === true ? contact.email : undefined;
25
+ return {
26
+ eventName: "Lead",
27
+ eventId: capiEventId("Lead", keySuffix),
28
+ fbc: click.fbc,
29
+ capiToken: input.capiToken,
30
+ pixelId: input.pixelId,
31
+ externalId: input.externalId,
32
+ value: LEAD_POINTS[input.rung],
33
+ ...(email === undefined ? {} : { email }),
34
+ };
35
+ }
36
+ export function shouldCreditAudience(viewerSlug, ownerSlug, vibeIdentityRouted, viewerIsStaff) {
37
+ if (vibeIdentityRouted !== true)
38
+ return false;
39
+ if (viewerIsStaff)
40
+ return false;
41
+ return viewerSlug !== ownerSlug;
42
+ }
43
+ const AUDIENCE_SKIP_MS = 60 * 60 * 1000;
44
+ const audienceSkipUntil = new Map();
45
+ export function postCapiAudienceEvent(vctx, args) {
46
+ const skipUntil = audienceSkipUntil.get(args.ownerHandle);
47
+ if (skipUntil !== undefined && skipUntil > Date.now())
48
+ return;
49
+ const promise = (async () => {
50
+ if (vctx.metaCapiToken === undefined || vctx.metaCapiToken === "")
51
+ return;
52
+ if (vctx.metaPixelId === undefined || vctx.metaPixelId === "")
53
+ return;
54
+ const tHandles = vctx.sql.tables.handleBinding;
55
+ const maker = await vctx.sql.db
56
+ .select({ userId: tHandles.userId })
57
+ .from(tHandles)
58
+ .where(eq(tHandles.handle, args.ownerHandle))
59
+ .limit(1)
60
+ .then((r) => r[0]);
61
+ if (maker === undefined || maker.userId === undefined || maker.userId === "")
62
+ return;
63
+ if (maker.userId === args.viewerUserId)
64
+ return;
65
+ const t = vctx.sql.tables.userSettings;
66
+ const row = await vctx.sql.db
67
+ .select({ settings: t.settings })
68
+ .from(t)
69
+ .where(eq(t.userId, maker.userId))
70
+ .limit(1)
71
+ .then((r) => r[0]);
72
+ const { filtered: settings } = parseArrayWarning(row?.settings ?? [], userSettingItem);
73
+ const plan = planCapiLeadEvent({
74
+ rung: "audience",
75
+ settings,
76
+ externalId: await capiExternalId(maker.userId),
77
+ capiToken: vctx.metaCapiToken,
78
+ pixelId: vctx.metaPixelId,
79
+ });
80
+ if (plan === undefined || (await claimLeadRung(vctx.sql, maker.userId, "audience")) === false) {
81
+ audienceSkipUntil.set(args.ownerHandle, Date.now() + AUDIENCE_SKIP_MS);
82
+ return;
83
+ }
84
+ const payload = await buildCapiBuildEvent({
85
+ plan,
86
+ eventSourceUrl: vctx.params.vibes.env.VIBES_DIY_PUBLIC_BASE_URL,
87
+ });
88
+ await (vctx.metaCapiSend ?? postCapiEvent)(plan.pixelId, payload, plan.eventName);
89
+ })().catch((e) => {
90
+ console.error("[capi] audience event failed", e);
91
+ });
92
+ vctx.waitUntil?.(promise);
93
+ }
94
+ export async function postCapiPaidEvent(ctx, userId) {
95
+ const r = await exception2Result(async () => {
96
+ if (ctx.capiToken === undefined || ctx.capiToken === "")
97
+ return;
98
+ if (ctx.pixelId === undefined || ctx.pixelId === "")
99
+ return;
100
+ if (ctx.readPlan === undefined) {
101
+ console.warn("[capi] paid rung dark — no Autumn reader on this deployment");
102
+ return;
103
+ }
104
+ const rPlan = await ctx.readPlan(userId);
105
+ if (rPlan.isErr()) {
106
+ console.error("[capi] paid plan read failed", rPlan.Err());
107
+ return;
108
+ }
109
+ if (rPlan.Ok() !== "plus")
110
+ return;
111
+ const t = ctx.sql.tables.userSettings;
112
+ const row = await ctx.sql.db
113
+ .select({ settings: t.settings })
114
+ .from(t)
115
+ .where(eq(t.userId, userId))
116
+ .limit(1)
117
+ .then((r) => r[0]);
118
+ const { filtered: settings } = parseArrayWarning(row?.settings ?? [], userSettingItem);
119
+ const plan = planCapiLeadEvent({
120
+ rung: "paid",
121
+ settings,
122
+ externalId: await capiExternalId(userId),
123
+ capiToken: ctx.capiToken,
124
+ pixelId: ctx.pixelId,
125
+ });
126
+ if (plan === undefined)
127
+ return;
128
+ if ((await claimLeadRung(ctx.sql, userId, "paid")) === false)
129
+ return;
130
+ const payload = await buildCapiBuildEvent({ plan, eventSourceUrl: ctx.eventSourceUrl });
131
+ await (ctx.send ?? postCapiEvent)(plan.pixelId, payload, plan.eventName);
132
+ });
133
+ if (r.isErr())
134
+ console.error("[capi] paid event failed", r.Err());
135
+ }
136
+ export function shouldCreditReturn(input) {
137
+ if (input.isStaff)
138
+ return false;
139
+ if (Number.isFinite(input.nowMs) === false)
140
+ return false;
141
+ const click = input.settings.find(isUserSettingMetaClickId);
142
+ if (click === undefined || click.fbc === "")
143
+ return false;
144
+ if (input.nowMs - click.clickedAt > META_CLICK_WINDOW_MS)
145
+ return false;
146
+ const clickDay = new Date(click.clickedAt).toISOString().slice(0, 10);
147
+ return input.day > clickDay;
148
+ }
149
+ export async function postCapiReturnEvent(ctx, args) {
150
+ const r = await exception2Result(async () => {
151
+ const plan = planCapiLeadEvent({
152
+ rung: "return",
153
+ day: args.day,
154
+ settings: args.settings,
155
+ externalId: await capiExternalId(args.userId),
156
+ capiToken: ctx.capiToken,
157
+ pixelId: ctx.pixelId,
158
+ });
159
+ if (plan === undefined)
160
+ return;
161
+ if ((await claimLeadReturnDay(ctx.sql, args.userId, args.day)) === false)
162
+ return;
163
+ const payload = await buildCapiBuildEvent({ plan, eventSourceUrl: ctx.eventSourceUrl });
164
+ await (ctx.send ?? postCapiEvent)(plan.pixelId, payload, plan.eventName);
165
+ });
166
+ if (r.isErr())
167
+ console.error("[capi] return event failed", r.Err());
168
+ }
169
+ //# sourceMappingURL=capi-lead-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capi-lead-event.js","sourceRoot":"","sources":["../../jsr/intern/capi-lead-event.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { UserSettingItem } from "@vibes.diy/api-types";
2
+ import { cfDrizzle, VibesApiTables } from "@vibes.diy/api-sql";
3
+ export type CapiLedgerRung = "signup" | "revise" | "audience" | "paid";
4
+ export interface CapiLedgerSql {
5
+ readonly db: ReturnType<typeof cfDrizzle>["db"];
6
+ readonly tables: VibesApiTables;
7
+ }
8
+ export declare function isLeadRungCredited(settings: readonly UserSettingItem[], rung: CapiLedgerRung): boolean;
9
+ export declare function claimLeadRung(sql: CapiLedgerSql, userId: string, rung: CapiLedgerRung): Promise<boolean>;
10
+ export declare function lastCreditedReturnDay(settings: readonly UserSettingItem[]): string | undefined;
11
+ export declare function claimLeadReturnDay(sql: CapiLedgerSql, userId: string, day: string): Promise<boolean>;
@@ -0,0 +1,75 @@
1
+ import { and, eq } from "drizzle-orm/sql/expressions";
2
+ import { isUserSettingCapiLeadCredited, parseArrayWarning, userSettingItem } from "@vibes.diy/api-types";
3
+ export function isLeadRungCredited(settings, rung) {
4
+ return settings.find(isUserSettingCapiLeadCredited)?.rungs.includes(rung) === true;
5
+ }
6
+ export async function claimLeadRung(sql, userId, rung) {
7
+ const t = sql.tables.userSettings;
8
+ const row = await sql.db
9
+ .select({ settings: t.settings })
10
+ .from(t)
11
+ .where(eq(t.userId, userId))
12
+ .limit(1)
13
+ .then((r) => r[0]);
14
+ if (row === undefined)
15
+ return false;
16
+ const { filtered: settings } = parseArrayWarning(row.settings ?? [], userSettingItem);
17
+ if (isLeadRungCredited(settings, rung))
18
+ return false;
19
+ const prior = settings.find(isUserSettingCapiLeadCredited)?.rungs ?? [];
20
+ const now = new Date().toISOString();
21
+ const claimId = crypto.randomUUID();
22
+ const next = { type: "capiLeadCredited", rungs: [...prior, rung], updatedAt: now, claimId };
23
+ await sql.db
24
+ .update(t)
25
+ .set({ settings: [...settings.filter((s) => s.type !== "capiLeadCredited"), next], updated: now })
26
+ .where(and(eq(t.userId, userId), eq(t.settings, row.settings)));
27
+ const after = await sql.db
28
+ .select({ settings: t.settings })
29
+ .from(t)
30
+ .where(eq(t.userId, userId))
31
+ .limit(1)
32
+ .then((r) => r[0]);
33
+ const { filtered: afterSettings } = parseArrayWarning(after?.settings ?? [], userSettingItem);
34
+ return afterSettings.find(isUserSettingCapiLeadCredited)?.claimId === claimId;
35
+ }
36
+ export function lastCreditedReturnDay(settings) {
37
+ return settings.find(isUserSettingCapiLeadCredited)?.returnDay;
38
+ }
39
+ export async function claimLeadReturnDay(sql, userId, day) {
40
+ const t = sql.tables.userSettings;
41
+ const row = await sql.db
42
+ .select({ settings: t.settings })
43
+ .from(t)
44
+ .where(eq(t.userId, userId))
45
+ .limit(1)
46
+ .then((r) => r[0]);
47
+ if (row === undefined)
48
+ return false;
49
+ const { filtered: settings } = parseArrayWarning(row.settings ?? [], userSettingItem);
50
+ if (lastCreditedReturnDay(settings) === day)
51
+ return false;
52
+ const prior = settings.find(isUserSettingCapiLeadCredited);
53
+ const now = new Date().toISOString();
54
+ const claimId = crypto.randomUUID();
55
+ const next = {
56
+ type: "capiLeadCredited",
57
+ rungs: prior?.rungs ?? [],
58
+ updatedAt: now,
59
+ returnDay: day,
60
+ claimId,
61
+ };
62
+ await sql.db
63
+ .update(t)
64
+ .set({ settings: [...settings.filter((s) => s.type !== "capiLeadCredited"), next], updated: now })
65
+ .where(and(eq(t.userId, userId), eq(t.settings, row.settings)));
66
+ const after = await sql.db
67
+ .select({ settings: t.settings })
68
+ .from(t)
69
+ .where(eq(t.userId, userId))
70
+ .limit(1)
71
+ .then((r) => r[0]);
72
+ const { filtered: afterSettings } = parseArrayWarning(after?.settings ?? [], userSettingItem);
73
+ return afterSettings.find(isUserSettingCapiLeadCredited)?.claimId === claimId;
74
+ }
75
+ //# sourceMappingURL=capi-lead-ledger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capi-lead-ledger.js","sourceRoot":"","sources":["../../jsr/intern/capi-lead-ledger.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export declare const MERCURY_CAPABILITY_TRIGGERS = "A trigger is an example, not a password: set a capability when the request implies it in any words, and none when the app needs none of them. composer is set only together with ai.\n- ai (a language model reads, writes or judges words or photos) when the request says or implies:\n - a sentence typed in turns into the record's fields\n - a pasted list gets sorted into groups\n - answers a question about the saved records\n - suggests what to make or do next from what is saved\n - summarizes a long note into a few lines\n - writes a caption, a blurb or a short poem\n - a chat reply in a made-up persona's voice\n - looks at a photo and says what is in it\n - gives feedback on, rates or roasts what someone wrote\n - translates or rewrites text in another tone\n - comes up with names, prompts or ideas on request\n - pulls the facts out of a pasted message or email\n - makes up a story, a riddle or a fortune\n- composer (records come in as the person's own words or photos, read by ai) when the request says or implies:\n - add entries in my own words, however I like (also ai)\n - paste a group chat and each item becomes a record (also ai)\n - type a line like 'basil and two tomatoes, bed 3' to add plants (also ai)\n - snap a photo of a receipt or label to add it (also ai)\n - jot a quick note and it gets filed in the right place (also ai)\n- imageGen (the app makes pictures) when the request says or implies:\n - draws a picture of each item\n - makes an avatar from a selfie\n - restyles a photo as a cartoon or a painting\n - a cover image for each story, album or book\n - illustrates each creature or character card\n - designs a logo or a badge\n - shows what something would look like before it exists\n - a colouring page or sticker made to order\n - a product shot for each listing\n- backend (server work the page cannot do on its own) when the request says or implies:\n - reminds me tomorrow morning (also calendar)\n - emails the manager every Monday (also calendar)\n - a weekly digest or summary sent to the owner\n - notifies someone when a new entry arrives\n - pulls a live feed, prices or weather from a website\n - reads a web page or API the person names\n - sends each new record to Slack or a Google Sheet\n - receives a webhook from a payment or code service\n - checks something every hour and keeps the latest\n - deals secret hands no other player can peek at (also boardGame)\n - nags me when something goes overdue (also calendar)\n- calendar (the app keeps dates) when the request says or implies:\n - a due date or deadline on each item\n - keeps a streak of days in a row\n - a shift schedule for the week\n - book an open time slot\n - something that repeats every Tuesday\n - a month view of what happened when\n - subscribe to it from my phone's calendar (also backend)\n - a timeline of dated moments\n - totals for each pay period\n - counts down the days to an event\n - shows how long since I last did it\n- audio (sound or music) when the request says or implies:\n - plays a sound on each tap\n - a drum machine or a beat pad\n - a metronome that keeps time\n - a little synth that plays notes\n - background music or ambient sound\n - records the mic and plays it back with an echo\n - a chime when the timer ends\n- threeD (a 3D world or scene) when the request says or implies:\n - a 3D scene you can spin and zoom\n - fly or drive through a world\n - a physics simulator with things that fall and bounce\n - a 3D model of a room, object or building\n - particles, glow and shader effects\n - a first-person walk around a place\n- charts (graphs, maps and statistics views) when the request says or implies:\n - a graph of progress over time\n - a heatmap of activity\n - a pie or bar chart of where the money went\n - a stats page with averages and bests\n - a map with pins\n - a histogram or a scatter of the entries\n - compares two things side by side in a chart\n- boardGame (a turn-based board, tile or card game) when the request says or implies:\n - bingo cards dealt per player\n - a daily word guess with a share grid\n - a crossword, word search or sudoku\n - chess, checkers, go or mancala\n - solitaire or another card game\n - a trivia room people answer in turn\n - a dice scoresheet with house rules\n - players take turns on a shared board\n - minesweeper, 2048 or tic-tac-toe\n- sensitive (health, real people's money, kids, or private) when the request says or implies:\n - tracks a medication, a symptom or a diagnosis\n - about my kid or a child in my care\n - a budget, debts, salary or what people owe\n - the word private, or only me\n - a mood or therapy journal";
1
+ export declare const MERCURY_CAPABILITY_TRIGGERS = "A trigger is an example, not a password: set a capability when the request implies it in any words, and none when the app needs none of them. composer is set only together with ai.\n- composer (records come in as the person's own words or photos, read by ai) when the request says or implies:\n - add entries in my own words, however I like (also ai)\n - paste a group chat and each item becomes a record (also ai)\n - type a line like 'basil and two tomatoes, bed 3' to add plants (also ai)\n - snap a photo of a receipt or label to add it (also ai)\n - jot a quick note and it gets filed in the right place (also ai)\n- sensitive (health, real people's money, kids, or private) when the request says or implies:\n - tracks a medication, a symptom or a diagnosis\n - about my kid or a child in my care\n - a budget, debts, salary or what people owe\n - the word private, or only me\n - a mood or therapy journal";
@@ -1,91 +1,10 @@
1
1
  export const MERCURY_CAPABILITY_TRIGGERS = `A trigger is an example, not a password: set a capability when the request implies it in any words, and none when the app needs none of them. composer is set only together with ai.
2
- - ai (a language model reads, writes or judges words or photos) when the request says or implies:
3
- - a sentence typed in turns into the record's fields
4
- - a pasted list gets sorted into groups
5
- - answers a question about the saved records
6
- - suggests what to make or do next from what is saved
7
- - summarizes a long note into a few lines
8
- - writes a caption, a blurb or a short poem
9
- - a chat reply in a made-up persona's voice
10
- - looks at a photo and says what is in it
11
- - gives feedback on, rates or roasts what someone wrote
12
- - translates or rewrites text in another tone
13
- - comes up with names, prompts or ideas on request
14
- - pulls the facts out of a pasted message or email
15
- - makes up a story, a riddle or a fortune
16
2
  - composer (records come in as the person's own words or photos, read by ai) when the request says or implies:
17
3
  - add entries in my own words, however I like (also ai)
18
4
  - paste a group chat and each item becomes a record (also ai)
19
5
  - type a line like 'basil and two tomatoes, bed 3' to add plants (also ai)
20
6
  - snap a photo of a receipt or label to add it (also ai)
21
7
  - jot a quick note and it gets filed in the right place (also ai)
22
- - imageGen (the app makes pictures) when the request says or implies:
23
- - draws a picture of each item
24
- - makes an avatar from a selfie
25
- - restyles a photo as a cartoon or a painting
26
- - a cover image for each story, album or book
27
- - illustrates each creature or character card
28
- - designs a logo or a badge
29
- - shows what something would look like before it exists
30
- - a colouring page or sticker made to order
31
- - a product shot for each listing
32
- - backend (server work the page cannot do on its own) when the request says or implies:
33
- - reminds me tomorrow morning (also calendar)
34
- - emails the manager every Monday (also calendar)
35
- - a weekly digest or summary sent to the owner
36
- - notifies someone when a new entry arrives
37
- - pulls a live feed, prices or weather from a website
38
- - reads a web page or API the person names
39
- - sends each new record to Slack or a Google Sheet
40
- - receives a webhook from a payment or code service
41
- - checks something every hour and keeps the latest
42
- - deals secret hands no other player can peek at (also boardGame)
43
- - nags me when something goes overdue (also calendar)
44
- - calendar (the app keeps dates) when the request says or implies:
45
- - a due date or deadline on each item
46
- - keeps a streak of days in a row
47
- - a shift schedule for the week
48
- - book an open time slot
49
- - something that repeats every Tuesday
50
- - a month view of what happened when
51
- - subscribe to it from my phone's calendar (also backend)
52
- - a timeline of dated moments
53
- - totals for each pay period
54
- - counts down the days to an event
55
- - shows how long since I last did it
56
- - audio (sound or music) when the request says or implies:
57
- - plays a sound on each tap
58
- - a drum machine or a beat pad
59
- - a metronome that keeps time
60
- - a little synth that plays notes
61
- - background music or ambient sound
62
- - records the mic and plays it back with an echo
63
- - a chime when the timer ends
64
- - threeD (a 3D world or scene) when the request says or implies:
65
- - a 3D scene you can spin and zoom
66
- - fly or drive through a world
67
- - a physics simulator with things that fall and bounce
68
- - a 3D model of a room, object or building
69
- - particles, glow and shader effects
70
- - a first-person walk around a place
71
- - charts (graphs, maps and statistics views) when the request says or implies:
72
- - a graph of progress over time
73
- - a heatmap of activity
74
- - a pie or bar chart of where the money went
75
- - a stats page with averages and bests
76
- - a map with pins
77
- - a histogram or a scatter of the entries
78
- - compares two things side by side in a chart
79
- - boardGame (a turn-based board, tile or card game) when the request says or implies:
80
- - bingo cards dealt per player
81
- - a daily word guess with a share grid
82
- - a crossword, word search or sudoku
83
- - chess, checkers, go or mancala
84
- - solitaire or another card game
85
- - a trivia room people answer in turn
86
- - a dice scoresheet with house rules
87
- - players take turns on a shared board
88
- - minesweeper, 2048 or tic-tac-toe
89
8
  - sensitive (health, real people's money, kids, or private) when the request says or implies:
90
9
  - tracks a medication, a symptom or a diagnosis
91
10
  - about my kid or a child in my care
@@ -1 +1 @@
1
- {"version":3,"file":"mercury-capability-triggers.js","sourceRoot":"","sources":["../../jsr/intern/mercury-capability-triggers.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BA6Fb,CAAC"}
1
+ {"version":3,"file":"mercury-capability-triggers.js","sourceRoot":"","sources":["../../jsr/intern/mercury-capability-triggers.ts"],"names":[],"mappings":"AAmBA,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;8BAYb,CAAC"}
@@ -60,7 +60,7 @@ export async function runMercurySeam(vctx, o) {
60
60
  const mercury = rMercury.Ok();
61
61
  const summary = {
62
62
  elapsedMs: mercury.elapsedMs,
63
- archetype: mercury.shape.archetype,
63
+ shape: mercury.shape.appShape,
64
64
  coreAction: mercury.shape.coreAction,
65
65
  skills: mercury.input.skills ?? [],
66
66
  ...(typeof mercury.input.font === "string" ? { font: mercury.input.font } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"mercury-first-build-seam.js","sourceRoot":"","sources":["../../jsr/intern/mercury-first-build-seam.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mercury-first-build-seam.js","sourceRoot":"","sources":["../../jsr/intern/mercury-first-build-seam.ts"],"names":[],"mappings":"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"}
@@ -10,15 +10,17 @@ export declare const MERCURY_FIRST_BUILD_REASONING: {
10
10
  export type MercuryPlanner = "mercury" | "haiku";
11
11
  export declare const MERCURY_HAIKU_PLANNER_MODEL = "anthropic/claude-haiku-5.5";
12
12
  export declare const MERCURY_HAIKU_PLANNER_BREAKER: MercuryCircuitBreaker;
13
- export declare const MERCURY_ARCHETYPES: readonly ["personal", "group", "publish", "intake", "open", "toy"];
14
- export type MercuryArchetype = (typeof MERCURY_ARCHETYPES)[number];
15
- export declare const MERCURY_FLAGS: readonly ["ai", "composer", "imageGen", "backend", "calendar", "audio", "threeD", "charts", "boardGame", "sensitive"];
13
+ export declare const MERCURY_APP_SHAPES: readonly ["personal", "playful", "group", "publish", "intake", "open"];
14
+ export type MercuryAppShape = (typeof MERCURY_APP_SHAPES)[number];
15
+ export declare function readMercuryAppShape(word: string): MercuryAppShape | undefined;
16
+ export declare const MERCURY_FLAGS: readonly ["composer", "sensitive"];
16
17
  export type MercuryFlag = (typeof MERCURY_FLAGS)[number];
17
18
  export interface MercuryShape {
18
- readonly archetype: MercuryArchetype;
19
+ readonly appShape: MercuryAppShape;
19
20
  readonly coreAction: string;
20
21
  readonly recordNames: readonly string[];
21
22
  readonly flags: Readonly<Record<MercuryFlag, boolean>>;
23
+ readonly skills: readonly string[];
22
24
  readonly keepsToThemselves?: boolean;
23
25
  }
24
26
  export declare function fixMercuryShape(shape: MercuryShape, personWords: string): MercuryShape;
@@ -42,10 +44,7 @@ export declare const MERCURY_ADDRESS: MercuryAddressEncoding;
42
44
  export declare function mercurySlugWordsSentence(words: readonly string[]): string;
43
45
  export declare const MERCURY_ROOMS_HINT = "an array of 2 or 3 room slugs from the room list";
44
46
  export declare const MERCURY_FONT_HINT = "one font slug from the font list";
45
- export declare const MERCURY_BLOCK_WORLD_TRIGGER = " - a Minecraft-style block world to build and break blocks in";
46
- export declare function mercuryBlockWorldNamed(personWords: string): boolean;
47
- export declare function mercuryRealTimeGameNamed(personWords: string): boolean;
48
- export declare function stripMercuryArchetypeTag(text: string): {
47
+ export declare function stripMercuryShapeTag(text: string): {
49
48
  readonly text: string;
50
49
  readonly repaired: boolean;
51
50
  };
@@ -59,9 +58,13 @@ export declare function gateMercuryAddress(o: {
59
58
  readonly slugs: readonly string[];
60
59
  }): Result<MercuryGatedAddress>;
61
60
  export declare function mercurySlugsWithWord(pairs: readonly MercuryPair[], words: readonly string[]): number;
62
- export declare function mercurySkills(shape: MercuryShape, opts?: {
63
- readonly personWords?: string;
64
- }): string[];
61
+ export declare function mercurySkills(shape: MercuryShape): string[];
62
+ export declare function gateMercurySkills(raw: string | undefined, opts: {
63
+ readonly poufBlocks: boolean;
64
+ }): {
65
+ readonly skills: readonly string[];
66
+ readonly unknown: readonly string[];
67
+ };
65
68
  export declare function mercuryNature(shape: MercuryShape, personWords: string): AppNature;
66
69
  export interface MercuryGatedRooms {
67
70
  readonly rooms?: readonly string[];
@@ -157,17 +160,18 @@ export declare function recordMercuryFim(vctx: VibesApiSQLCtx, o: {
157
160
  readonly fim: MercuryFimReceipt;
158
161
  readonly filledText?: string;
159
162
  }): Promise<void>;
160
- export declare const MERCURY_CARDS_DEFAULT_ARCHETYPE: MercuryArchetype;
163
+ export declare const MERCURY_CARDS_DEFAULT_APP_SHAPE: MercuryAppShape;
161
164
  export declare const MERCURY_TESTER_REPLY_INTRO = "A fast tester's first read:";
162
165
  export declare const MERCURY_TESTER_REPLY_RULE = "Guesses only; the creator's words win.";
163
- export declare const MERCURY_SHARING_LINE: Readonly<Record<MercuryArchetype, string>>;
166
+ export declare const MERCURY_SHARING_LINE: Readonly<Record<MercuryAppShape, string>>;
164
167
  export declare const MERCURY_SHARING_KEEPS_TO_THEMSELVES = "Each person's records are theirs alone, and a one-tap publish shares a chosen one with everyone who can open the app.";
165
168
  export declare const MERCURY_SHARING_SENSITIVE = "Each person's records are private to them from the first one, and sharing is theirs to turn on: a \"Shared with followers\" checkbox that starts unchecked, an add-buddies picker that grants one chosen handle, and a one-tap publish for a single finished item \u2014 never an always-on public channel for the records.";
166
169
  export declare const MERCURY_SHARING_PREFIX = "Who sees what:";
167
170
  export declare function mercurySharingLine(shape: MercuryShape, personWords: string): string;
168
- export declare function mercuryTesterReplyEnrichedPrompt(reply: string, personWords: string, shape: MercuryShape): string;
171
+ export declare function mercuryReplyForBuilder(reply: string): string;
172
+ export declare function mercuryTesterReplyEnrichedPrompt(reply: string, personWords: string, shape: MercuryShape, skills?: readonly string[]): string;
169
173
  export declare const MERCURY_COMPOSER_LINE = "The records come in through a sentence composer (Add and Ask) as the front door.";
170
- export declare function mercuryCardsBuilderLines(shape: MercuryShape): string[];
174
+ export declare function mercuryCardsBuilderLines(shape: MercuryShape, skills?: readonly string[]): string[];
171
175
  export declare const MERCURY_CARDS_MARKER = "--- CARDS ---";
172
176
  export declare const MERCURY_CARDS_APP_MARKER = "--- APP ---";
173
177
  export declare const MERCURY_CARDS_TAIL_HINTS: Readonly<Record<string, string>>;
@@ -176,15 +180,20 @@ export declare const MERCURY_CARDS_SHAPE = "As a <role>, I <action on a named re
176
180
  export declare const MERCURY_ASK_WORDS_RULE = "Keep the ask's genre and capability words exactly as the person wrote them \u2014 3D, first-person, email, a named recipient, a schedule, a fixed number of people \u2014 in the preamble and the cards.";
177
181
  export declare const MERCURY_TYPED_DATA_RULE = "When the person typed data \u2014 items, amounts, names, a list \u2014 the cards carry every piece of it verbatim, quantities included (\"half a bag\" stays \"half a bag\").";
178
182
  export declare const MERCURY_CARDS_RULES = "Rules:\n- Use the person's own nouns for records, roles and actions.\n- Give what the person asked for plus what those parts need in order to work.\n- A line that rests on your assumption and not on the person's words ends with (guess). A line the person's words settle carries no label.\n- Keep the ask's genre and capability words exactly as the person wrote them \u2014 3D, first-person, email, a named recipient, a schedule, a fixed number of people \u2014 in the preamble and the cards.\n- When the person typed data \u2014 items, amounts, names, a list \u2014 the cards carry every piece of it verbatim, quantities included (\"half a bag\" stays \"half a bag\").";
183
+ export declare function mercuryCardsSkillList(o: {
184
+ readonly poufBlocks: boolean;
185
+ }): string;
179
186
  export declare function mercuryCardsSystem(o?: {
180
187
  readonly rooms?: boolean;
181
188
  readonly font?: boolean;
189
+ readonly poufBlocks?: boolean;
182
190
  }): string;
183
191
  export declare function mercuryCardsMessages(o: {
184
192
  readonly personWords: string;
185
193
  readonly words: readonly string[];
186
194
  readonly rooms?: boolean;
187
195
  readonly font?: boolean;
196
+ readonly poufBlocks?: boolean;
188
197
  }): LLMMessage[];
189
198
  export interface MercuryCardsReply {
190
199
  readonly lines: readonly string[];
@@ -212,6 +221,7 @@ export interface MercuryCardsBrief {
212
221
  export declare function gateMercuryCards(raw: unknown, o: {
213
222
  readonly personWords: string;
214
223
  readonly askRooms: boolean;
224
+ readonly poufBlocks?: boolean;
215
225
  }): Result<MercuryCardsBrief>;
216
226
  export declare const MERCURY_FIM_MODEL = "mercury-coder";
217
227
  export declare const MERCURY_FIM_URL = "https://api.inceptionlabs.ai/v1/fim/completions";