pilotswarm-sdk 0.5.44 → 0.5.46

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 (86) hide show
  1. package/api/src/api-client.js +6 -1
  2. package/api/src/http-api-transport.js +47 -0
  3. package/api/src/protocol.js +14 -0
  4. package/dist/agent-manager-tools.d.ts +2 -0
  5. package/dist/agent-manager-tools.d.ts.map +1 -1
  6. package/dist/agent-manager-tools.js +4 -1
  7. package/dist/agent-manager-tools.js.map +1 -1
  8. package/dist/agent-package-format.d.ts +6 -0
  9. package/dist/agent-package-format.d.ts.map +1 -1
  10. package/dist/agent-package-format.js +33 -0
  11. package/dist/agent-package-format.js.map +1 -1
  12. package/dist/agent-package-service.d.ts.map +1 -1
  13. package/dist/agent-package-service.js +7 -2
  14. package/dist/agent-package-service.js.map +1 -1
  15. package/dist/artifact-tools.js +1 -1
  16. package/dist/artifact-tools.js.map +1 -1
  17. package/dist/canvas-app-catalog.d.ts +61 -0
  18. package/dist/canvas-app-catalog.d.ts.map +1 -0
  19. package/dist/canvas-app-catalog.js +146 -0
  20. package/dist/canvas-app-catalog.js.map +1 -0
  21. package/dist/canvas-app-manifest.d.ts +94 -2
  22. package/dist/canvas-app-manifest.d.ts.map +1 -1
  23. package/dist/canvas-app-manifest.js +140 -1
  24. package/dist/canvas-app-manifest.js.map +1 -1
  25. package/dist/canvas-kv.d.ts +176 -0
  26. package/dist/canvas-kv.d.ts.map +1 -0
  27. package/dist/canvas-kv.js +281 -0
  28. package/dist/canvas-kv.js.map +1 -0
  29. package/dist/canvas-support.d.ts +40 -0
  30. package/dist/canvas-support.d.ts.map +1 -0
  31. package/dist/canvas-support.js +79 -0
  32. package/dist/canvas-support.js.map +1 -0
  33. package/dist/cms-migrations.d.ts.map +1 -1
  34. package/dist/cms-migrations.js +822 -0
  35. package/dist/cms-migrations.js.map +1 -1
  36. package/dist/cms.d.ts +101 -0
  37. package/dist/cms.d.ts.map +1 -1
  38. package/dist/cms.js +80 -1
  39. package/dist/cms.js.map +1 -1
  40. package/dist/facts-migrations.d.ts.map +1 -1
  41. package/dist/facts-migrations.js +30 -0
  42. package/dist/facts-migrations.js.map +1 -1
  43. package/dist/index.d.ts +10 -2
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +5 -1
  46. package/dist/index.js.map +1 -1
  47. package/dist/inspect-tools.d.ts +6 -0
  48. package/dist/inspect-tools.d.ts.map +1 -1
  49. package/dist/inspect-tools.js +1 -0
  50. package/dist/inspect-tools.js.map +1 -1
  51. package/dist/managed-session.d.ts +7 -0
  52. package/dist/managed-session.d.ts.map +1 -1
  53. package/dist/managed-session.js +193 -64
  54. package/dist/managed-session.js.map +1 -1
  55. package/dist/management-client.d.ts +37 -1
  56. package/dist/management-client.d.ts.map +1 -1
  57. package/dist/management-client.js +80 -3
  58. package/dist/management-client.js.map +1 -1
  59. package/dist/mcp-loader.d.ts +68 -0
  60. package/dist/mcp-loader.d.ts.map +1 -1
  61. package/dist/mcp-loader.js +79 -0
  62. package/dist/mcp-loader.js.map +1 -1
  63. package/dist/session-manager.d.ts +20 -0
  64. package/dist/session-manager.d.ts.map +1 -1
  65. package/dist/session-manager.js +13 -1
  66. package/dist/session-manager.js.map +1 -1
  67. package/dist/session-proxy.d.ts +1 -9
  68. package/dist/session-proxy.d.ts.map +1 -1
  69. package/dist/session-proxy.js +95 -77
  70. package/dist/session-proxy.js.map +1 -1
  71. package/dist/web/generated-op-methods.d.ts +53 -0
  72. package/dist/web/generated-op-methods.d.ts.map +1 -1
  73. package/dist/web/generated-op-methods.js +12 -0
  74. package/dist/web/generated-op-methods.js.map +1 -1
  75. package/dist/web/web-management-client.d.ts +18 -0
  76. package/dist/web/web-management-client.d.ts.map +1 -1
  77. package/dist/web/web-management-client.js +27 -0
  78. package/dist/web/web-management-client.js.map +1 -1
  79. package/dist/worker.d.ts +27 -0
  80. package/dist/worker.d.ts.map +1 -1
  81. package/dist/worker.js +145 -13
  82. package/dist/worker.js.map +1 -1
  83. package/package.json +3 -3
  84. package/plugins/system/agents/default.agent.md +30 -126
  85. package/plugins/system/skills/canvas-apps/SKILL.md +224 -111
  86. package/plugins/system/skills/html-visuals/SKILL.md +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"canvas-app-manifest.js","sourceRoot":"","sources":["../src/canvas-app-manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canvas-app-manifest.js","sourceRoot":"","sources":["../src/canvas-app-manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * The canvas KV chokepoint — interactive-canvas-apps.md Parts C, D, E, H.
3
+ *
4
+ * Every door (signed-in browser, link bearer, the agent) authenticates on
5
+ * its own and hands this module a RESOLVED principal. This module never
6
+ * sees a cookie or a token. It owns every rule:
7
+ *
8
+ * key grammar and limits (Part I)
9
+ * who may write this canvas (Part D: policy × manifest × relation)
10
+ * reserved prefixes cfg/ evt/ ui/<me>/ req/
11
+ * author-bound overwrites (H.2, unless the manifest shares the prefix)
12
+ * the req/* status cap (Part E: collaborators SUGGEST, owners QUEUE)
13
+ * the envelope { v, by, at } — `by` is stamped here, never accepted
14
+ *
15
+ * It lives in the SDK because two processes need it: the portal serves
16
+ * browsers, the worker serves the agent.
17
+ */
18
+ import type { SessionAccessSnapshot } from "./cms.js";
19
+ export declare const CANVAS_KV_KEY_MAX = 200;
20
+ export declare const CANVAS_KV_VALUE_MAX_BYTES: number;
21
+ export declare const CANVAS_KV_MAX_KEYS = 1000;
22
+ export declare const CANVAS_KV_MAX_BYTES: number;
23
+ export declare const CANVAS_KV_LIST_PAGE = 200;
24
+ export type CanvasKvPrincipal = {
25
+ kind: "user";
26
+ provider: string;
27
+ subject: string;
28
+ isAdmin: boolean;
29
+ label?: string | null;
30
+ } | {
31
+ kind: "agent";
32
+ sessionId: string;
33
+ } | {
34
+ kind: "link";
35
+ writerId: string;
36
+ label?: string | null;
37
+ writeEnabled: boolean;
38
+ };
39
+ export type CanvasKvRelation = "owner" | "admin" | "collaborator" | "viewer" | "link" | "agent";
40
+ export interface CanvasKvBy {
41
+ kind: "user" | "link" | "agent";
42
+ id: string;
43
+ label: string | null;
44
+ }
45
+ export interface CanvasKvMe extends CanvasKvBy {
46
+ relation: CanvasKvRelation;
47
+ canWrite: boolean;
48
+ }
49
+ export interface CanvasKvEntry {
50
+ key: string;
51
+ v: unknown;
52
+ by: CanvasKvBy;
53
+ at: string;
54
+ rev: number;
55
+ }
56
+ export interface CanvasKvViewer {
57
+ me: CanvasKvMe;
58
+ /** owner | readers | link — the owner's policy for this canvas. */
59
+ policy: "owner" | "readers" | "link";
60
+ /** The app's declared switch, or null when the document declares none. */
61
+ manifestKv: {
62
+ write: "owner" | "viewers";
63
+ shared: string[];
64
+ } | null;
65
+ /** True for owner, admin, agent, and session writers: they may touch any row and queue requests. */
66
+ privileged: boolean;
67
+ }
68
+ export type CanvasKvWriteOp = {
69
+ op: "put";
70
+ key: string;
71
+ value: unknown;
72
+ ifMatch?: number | null;
73
+ } | {
74
+ op: "delete";
75
+ key: string;
76
+ ifMatch?: number | null;
77
+ };
78
+ export interface CanvasKvWriteResult {
79
+ key: string;
80
+ ok: boolean;
81
+ rev?: number;
82
+ /** Set when the chokepoint changed what was written (a collaborator's req/* status). */
83
+ capped?: "suggested";
84
+ error?: string;
85
+ code?: "FORBIDDEN" | "CONFLICT" | "INVALID_KEY" | "INVALID_REQUEST" | "TOO_LARGE" | "QUOTA" | "NOT_FOUND";
86
+ }
87
+ export declare class CanvasKvError extends Error {
88
+ code: string;
89
+ constructor(code: string, message: string);
90
+ }
91
+ export declare function validateCanvasKvKey(key: unknown): string | null;
92
+ export declare function validateCanvasKvSlot(slot: unknown): number | null;
93
+ /** `app/task/*` matches `app/task/x` and `app/task/x/y`; `*` alone matches everything. */
94
+ export declare function canvasKvGlobMatches(glob: string, key: string): boolean;
95
+ export declare function principalBy(principal: CanvasKvPrincipal): CanvasKvBy;
96
+ /**
97
+ * Who this principal is to this canvas, and whether they may write.
98
+ *
99
+ * Session writers ALWAYS get canvas write (the agent law, D.1). Session
100
+ * readers write only when the owner's policy admits them AND the app
101
+ * declared `kv.write: "viewers"` (D.3 — two switches, neither alone opens
102
+ * the door). A link bearer writes only under policy `link` with a
103
+ * read/write link; that door is not built yet, so `writeEnabled` is false
104
+ * everywhere today.
105
+ */
106
+ export declare function resolveCanvasKvViewer(principal: CanvasKvPrincipal, snapshot: SessionAccessSnapshot | null, settings: {
107
+ kvAccess: "owner" | "readers" | "link";
108
+ kvManifest: unknown;
109
+ } | null): CanvasKvViewer;
110
+ /**
111
+ * The per-key rule for one write. Returns the (possibly capped) envelope
112
+ * value to store, or a refusal. Pure: the caller supplies the existing row.
113
+ */
114
+ export declare function decideCanvasKvWrite(viewer: CanvasKvViewer, op: CanvasKvWriteOp, existing: {
115
+ by: CanvasKvBy | null;
116
+ } | null): {
117
+ ok: true;
118
+ value?: unknown;
119
+ capped?: "suggested";
120
+ } | {
121
+ ok: false;
122
+ code: CanvasKvWriteResult["code"];
123
+ error: string;
124
+ };
125
+ export interface CanvasKvStore {
126
+ getSessionAccess(sessionId: string, viewer: {
127
+ provider: string;
128
+ subject: string;
129
+ }): Promise<SessionAccessSnapshot | null>;
130
+ getCanvasKvSettings(sessionId: string, slot: number): Promise<{
131
+ kvAccess: "owner" | "readers" | "link";
132
+ kvManifest: unknown;
133
+ latestRev: number;
134
+ } | null>;
135
+ canvasKvGet(sessionId: string, slot: number, key: string): Promise<{
136
+ key: string;
137
+ value: any;
138
+ rev: number;
139
+ updatedAt: string;
140
+ } | null>;
141
+ canvasKvList(sessionId: string, slot: number, prefix: string | null, limit: number, afterKey: string | null): Promise<Array<{
142
+ key: string;
143
+ value: any;
144
+ rev: number;
145
+ updatedAt: string;
146
+ }>>;
147
+ canvasKvWrite(sessionId: string, slot: number, key: string, value: unknown | null, ifMatch: number | null, limits: {
148
+ maxKeys: number;
149
+ maxBytes: number;
150
+ maxValueBytes: number;
151
+ }): Promise<{
152
+ status: string;
153
+ rev: number;
154
+ sizeBytes: number | null;
155
+ }>;
156
+ }
157
+ export interface CanvasKvReadResult {
158
+ entries: CanvasKvEntry[];
159
+ nextAfter: string | null;
160
+ me: CanvasKvMe;
161
+ policy: "owner" | "readers" | "link";
162
+ manifestKv: CanvasKvViewer["manifestKv"];
163
+ }
164
+ /** Door-agnostic read: the page's `canvas-kv-ready` payload and every list/get. */
165
+ export declare function readCanvasKv(store: CanvasKvStore, sessionId: string, slot: number, principal: CanvasKvPrincipal, query?: {
166
+ prefix?: string | null;
167
+ limit?: number | null;
168
+ after?: string | null;
169
+ key?: string | null;
170
+ }): Promise<CanvasKvReadResult>;
171
+ /** Door-agnostic write: one or more ops, each answered individually. */
172
+ export declare function writeCanvasKv(store: CanvasKvStore, sessionId: string, slot: number, principal: CanvasKvPrincipal, ops: CanvasKvWriteOp[]): Promise<{
173
+ results: CanvasKvWriteResult[];
174
+ me: CanvasKvMe;
175
+ }>;
176
+ //# sourceMappingURL=canvas-kv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas-kv.d.ts","sourceRoot":"","sources":["../src/canvas-kv.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,281 @@
1
+ /**
2
+ * The canvas KV chokepoint — interactive-canvas-apps.md Parts C, D, E, H.
3
+ *
4
+ * Every door (signed-in browser, link bearer, the agent) authenticates on
5
+ * its own and hands this module a RESOLVED principal. This module never
6
+ * sees a cookie or a token. It owns every rule:
7
+ *
8
+ * key grammar and limits (Part I)
9
+ * who may write this canvas (Part D: policy × manifest × relation)
10
+ * reserved prefixes cfg/ evt/ ui/<me>/ req/
11
+ * author-bound overwrites (H.2, unless the manifest shares the prefix)
12
+ * the req/* status cap (Part E: collaborators SUGGEST, owners QUEUE)
13
+ * the envelope { v, by, at } — `by` is stamped here, never accepted
14
+ *
15
+ * It lives in the SDK because two processes need it: the portal serves
16
+ * browsers, the worker serves the agent.
17
+ */
18
+ import { normalizeCanvasKvManifest } from "./canvas-app-manifest.js";
19
+ // ─── Limits (Part I) ─────────────────────────────────────────────
20
+ export const CANVAS_KV_KEY_MAX = 200;
21
+ export const CANVAS_KV_VALUE_MAX_BYTES = 16 * 1024;
22
+ export const CANVAS_KV_MAX_KEYS = 1000;
23
+ export const CANVAS_KV_MAX_BYTES = 2 * 1024 * 1024;
24
+ export const CANVAS_KV_LIST_PAGE = 200;
25
+ const KEY_RE = /^[A-Za-z0-9._/-]+$/;
26
+ export class CanvasKvError extends Error {
27
+ code;
28
+ constructor(code, message) {
29
+ super(message);
30
+ this.code = code;
31
+ }
32
+ }
33
+ // ─── Pure rules ──────────────────────────────────────────────────
34
+ export function validateCanvasKvKey(key) {
35
+ if (typeof key !== "string" || !key)
36
+ return "key is required";
37
+ if (key.length > CANVAS_KV_KEY_MAX)
38
+ return `key exceeds ${CANVAS_KV_KEY_MAX} characters`;
39
+ if (!KEY_RE.test(key))
40
+ return "key may contain only letters, digits, . _ / -";
41
+ if (key.startsWith("/"))
42
+ return "key may not start with /";
43
+ if (key.includes(".."))
44
+ return "key may not contain ..";
45
+ return null;
46
+ }
47
+ export function validateCanvasKvSlot(slot) {
48
+ const n = Number(slot);
49
+ if (!Number.isInteger(n) || n < 1 || n > 5)
50
+ return null;
51
+ return n;
52
+ }
53
+ /** `app/task/*` matches `app/task/x` and `app/task/x/y`; `*` alone matches everything. */
54
+ export function canvasKvGlobMatches(glob, key) {
55
+ if (glob === "*")
56
+ return true;
57
+ if (glob.endsWith("/*"))
58
+ return key.startsWith(glob.slice(0, -1)) || key === glob.slice(0, -2);
59
+ if (glob.endsWith("*"))
60
+ return key.startsWith(glob.slice(0, -1));
61
+ return glob === key;
62
+ }
63
+ export function principalBy(principal) {
64
+ switch (principal.kind) {
65
+ case "user":
66
+ return { kind: "user", id: `${principal.provider}/${principal.subject}`, label: principal.label ?? null };
67
+ case "agent":
68
+ return { kind: "agent", id: `agent:${principal.sessionId}`, label: "agent" };
69
+ case "link":
70
+ return { kind: "link", id: principal.writerId, label: principal.label ?? null };
71
+ }
72
+ }
73
+ /**
74
+ * Who this principal is to this canvas, and whether they may write.
75
+ *
76
+ * Session writers ALWAYS get canvas write (the agent law, D.1). Session
77
+ * readers write only when the owner's policy admits them AND the app
78
+ * declared `kv.write: "viewers"` (D.3 — two switches, neither alone opens
79
+ * the door). A link bearer writes only under policy `link` with a
80
+ * read/write link; that door is not built yet, so `writeEnabled` is false
81
+ * everywhere today.
82
+ */
83
+ export function resolveCanvasKvViewer(principal, snapshot, settings) {
84
+ const policy = settings?.kvAccess ?? "owner";
85
+ const manifestKv = normalizeCanvasKvManifest(settings?.kvManifest);
86
+ const by = principalBy(principal);
87
+ if (principal.kind === "agent") {
88
+ return { me: { ...by, relation: "agent", canWrite: true }, policy, manifestKv, privileged: true };
89
+ }
90
+ if (principal.kind === "link") {
91
+ const canWrite = policy === "link" && principal.writeEnabled === true && manifestKv?.write === "viewers";
92
+ return { me: { ...by, relation: "link", canWrite }, policy, manifestKv, privileged: false };
93
+ }
94
+ const isOwner = Boolean(snapshot?.viewerIsOwner);
95
+ const isAdmin = principal.isAdmin === true;
96
+ // Effective session access: a targeted share, else what the session's
97
+ // deployment-wide visibility grants every signed-in user.
98
+ const visibility = snapshot?.visibility ?? "private";
99
+ const share = snapshot?.viewerShareAccess
100
+ ?? (visibility === "shared_write" ? "write" : visibility === "shared_read" ? "read" : null);
101
+ const relation = isOwner ? "owner" : isAdmin ? "admin" : share ? "collaborator" : "viewer";
102
+ const privileged = isOwner || isAdmin || share === "write";
103
+ const admitted = (policy === "readers" || policy === "link") && manifestKv?.write === "viewers";
104
+ const canWrite = privileged || (share === "read" && admitted);
105
+ return { me: { ...by, relation, canWrite }, policy, manifestKv, privileged };
106
+ }
107
+ /**
108
+ * The per-key rule for one write. Returns the (possibly capped) envelope
109
+ * value to store, or a refusal. Pure: the caller supplies the existing row.
110
+ */
111
+ export function decideCanvasKvWrite(viewer, op, existing) {
112
+ const key = op.key;
113
+ if (!viewer.me.canWrite) {
114
+ return { ok: false, code: "FORBIDDEN", error: "you can view this canvas but not write it" };
115
+ }
116
+ // Reserved prefixes.
117
+ if (key === "cfg" || key.startsWith("cfg/")) {
118
+ if (!(viewer.me.relation === "owner" || viewer.me.relation === "admin" || viewer.me.relation === "agent")) {
119
+ return { ok: false, code: "FORBIDDEN", error: "cfg/* is owner-and-agent writable" };
120
+ }
121
+ }
122
+ else if (key === "evt" || key.startsWith("evt/")) {
123
+ if (!(viewer.me.relation === "owner" || viewer.me.relation === "agent")) {
124
+ return { ok: false, code: "FORBIDDEN", error: "evt/* is written by the session, not by viewers" };
125
+ }
126
+ }
127
+ else if (key.startsWith("ui/")) {
128
+ // The writer id itself contains a slash (provider/subject), so the
129
+ // owned namespace is `ui/<id>` and everything below it.
130
+ const mine = `ui/${viewer.me.id}`;
131
+ if (key !== mine && !key.startsWith(`${mine}/`) && !viewer.privileged) {
132
+ return { ok: false, code: "FORBIDDEN", error: `ui/* rows belong to their writer; yours are ${mine}` };
133
+ }
134
+ }
135
+ // Author-bound: an unprivileged writer modifies only rows they wrote,
136
+ // unless the app shares that prefix.
137
+ if (!viewer.privileged && existing && existing.by && existing.by.id !== viewer.me.id) {
138
+ const shared = viewer.manifestKv?.shared ?? [];
139
+ if (!shared.some((g) => canvasKvGlobMatches(g, key))) {
140
+ return { ok: false, code: "FORBIDDEN", error: "this row was written by someone else; the app does not share that key" };
141
+ }
142
+ }
143
+ if (op.op === "delete")
144
+ return { ok: true };
145
+ // The req/* status cap: collaborators suggest, only the owner queues.
146
+ let value = op.value;
147
+ let capped;
148
+ if (key.startsWith("req/") && !viewer.privileged && value && typeof value === "object" && !Array.isArray(value)) {
149
+ const status = value.status;
150
+ if (status !== "suggested" && status !== "done" && status !== "failed") {
151
+ value = { ...value, status: "suggested" };
152
+ capped = "suggested";
153
+ }
154
+ if (status === "done" || status === "failed") {
155
+ // A collaborator may not land a request either.
156
+ value = { ...value, status: "suggested" };
157
+ capped = "suggested";
158
+ }
159
+ }
160
+ return { ok: true, value, capped };
161
+ }
162
+ function rowToEntry(row) {
163
+ const env = row.value && typeof row.value === "object" ? row.value : {};
164
+ const by = env.by && typeof env.by === "object"
165
+ ? { kind: env.by.kind === "link" ? "link" : env.by.kind === "agent" ? "agent" : "user", id: String(env.by.id ?? ""), label: env.by.label ?? null }
166
+ : { kind: "user", id: "", label: null };
167
+ return { key: row.key, v: env.v, by, at: String(env.at ?? ""), rev: Number(row.rev) || 0 };
168
+ }
169
+ async function viewerFor(store, sessionId, slot, principal) {
170
+ if (validateCanvasKvSlot(slot) === null)
171
+ throw new CanvasKvError("INVALID_REQUEST", "slot must be an integer 1-5");
172
+ let snapshot = null;
173
+ if (principal.kind === "user") {
174
+ snapshot = await store.getSessionAccess(sessionId, { provider: principal.provider, subject: principal.subject });
175
+ if (!snapshot)
176
+ throw new CanvasKvError("NOT_FOUND", "session not found");
177
+ // Read access is the floor. Doors gate this too (session:read), but
178
+ // the chokepoint must not depend on it.
179
+ const visible = snapshot.viewerIsOwner || principal.isAdmin || snapshot.viewerShareAccess != null
180
+ || snapshot.visibility === "shared_read" || snapshot.visibility === "shared_write";
181
+ if (!visible)
182
+ throw new CanvasKvError("FORBIDDEN", "not visible");
183
+ }
184
+ const settings = await store.getCanvasKvSettings(sessionId, slot);
185
+ return resolveCanvasKvViewer(principal, snapshot, settings ? { kvAccess: settings.kvAccess, kvManifest: settings.kvManifest } : null);
186
+ }
187
+ /** Door-agnostic read: the page's `canvas-kv-ready` payload and every list/get. */
188
+ export async function readCanvasKv(store, sessionId, slot, principal, query = {}) {
189
+ const viewer = await viewerFor(store, sessionId, slot, principal);
190
+ if (query.key) {
191
+ const bad = validateCanvasKvKey(query.key);
192
+ if (bad)
193
+ throw new CanvasKvError("INVALID_KEY", bad);
194
+ const row = await store.canvasKvGet(sessionId, slot, query.key);
195
+ return { entries: row ? [rowToEntry(row)] : [], nextAfter: null, me: viewer.me, policy: viewer.policy, manifestKv: viewer.manifestKv };
196
+ }
197
+ const prefix = typeof query.prefix === "string" ? query.prefix : null;
198
+ if (prefix && (prefix.length > CANVAS_KV_KEY_MAX || !/^[A-Za-z0-9._/-]*$/.test(prefix))) {
199
+ throw new CanvasKvError("INVALID_KEY", "prefix may contain only letters, digits, . _ / -");
200
+ }
201
+ const limit = Math.max(1, Math.min(CANVAS_KV_LIST_PAGE, Math.floor(Number(query.limit) || CANVAS_KV_LIST_PAGE)));
202
+ const after = typeof query.after === "string" && query.after ? query.after : null;
203
+ const rows = await store.canvasKvList(sessionId, slot, prefix, limit, after);
204
+ const entries = rows.map(rowToEntry);
205
+ return {
206
+ entries,
207
+ nextAfter: rows.length === limit ? rows[rows.length - 1].key : null,
208
+ me: viewer.me,
209
+ policy: viewer.policy,
210
+ manifestKv: viewer.manifestKv,
211
+ };
212
+ }
213
+ /** Door-agnostic write: one or more ops, each answered individually. */
214
+ export async function writeCanvasKv(store, sessionId, slot, principal, ops) {
215
+ const viewer = await viewerFor(store, sessionId, slot, principal);
216
+ const results = [];
217
+ const by = viewer.me;
218
+ for (const op of ops.slice(0, 50)) {
219
+ const bad = validateCanvasKvKey(op?.key);
220
+ if (bad) {
221
+ results.push({ key: String(op?.key ?? ""), ok: false, code: "INVALID_KEY", error: bad });
222
+ continue;
223
+ }
224
+ // Only the two documented ops. Anything else is refused, never
225
+ // executed as a put — a misspelled "DELETE" must not overwrite a row.
226
+ if (op.op !== "put" && op.op !== "delete") {
227
+ const bad = op;
228
+ results.push({ key: String(bad.key ?? ""), ok: false, code: "INVALID_REQUEST", error: `op must be put or delete (got ${JSON.stringify(bad.op)})` });
229
+ continue;
230
+ }
231
+ // ifMatch is a non-negative integer or absent. A malformed value is
232
+ // refused rather than coerced to 0, which would silently become a claim.
233
+ let ifMatch = null;
234
+ if (op.ifMatch !== undefined && op.ifMatch !== null) {
235
+ const n = Number(op.ifMatch);
236
+ if (!Number.isInteger(n) || n < 0) {
237
+ results.push({ key: op.key, ok: false, code: "INVALID_REQUEST", error: "ifMatch must be a non-negative integer (0 = the key must not exist)" });
238
+ continue;
239
+ }
240
+ ifMatch = n;
241
+ }
242
+ const existingRow = await store.canvasKvGet(sessionId, slot, op.key);
243
+ const existing = existingRow ? { by: rowToEntry(existingRow).by } : null;
244
+ const decision = decideCanvasKvWrite(viewer, op, existing);
245
+ if (!decision.ok) {
246
+ results.push({ key: op.key, ok: false, code: decision.code, error: decision.error });
247
+ continue;
248
+ }
249
+ const envelope = op.op === "delete"
250
+ ? null
251
+ : { v: decision.value === undefined ? null : decision.value, by: { kind: by.kind, id: by.id, label: by.label }, at: new Date().toISOString() };
252
+ const outcome = await store.canvasKvWrite(sessionId, slot, op.key, envelope, ifMatch, {
253
+ maxKeys: CANVAS_KV_MAX_KEYS, maxBytes: CANVAS_KV_MAX_BYTES, maxValueBytes: CANVAS_KV_VALUE_MAX_BYTES,
254
+ });
255
+ switch (outcome.status) {
256
+ case "written":
257
+ case "deleted":
258
+ results.push({ key: op.key, ok: true, rev: outcome.rev, ...(decision.capped ? { capped: decision.capped } : {}) });
259
+ break;
260
+ case "not_found":
261
+ results.push({ key: op.key, ok: true, rev: outcome.rev });
262
+ break;
263
+ case "conflict":
264
+ results.push({ key: op.key, ok: false, code: "CONFLICT", rev: outcome.rev, error: `rev mismatch (current ${outcome.rev})` });
265
+ break;
266
+ case "too_large":
267
+ results.push({ key: op.key, ok: false, code: "TOO_LARGE", error: `value is ${outcome.sizeBytes} bytes; the cap is ${CANVAS_KV_VALUE_MAX_BYTES}` });
268
+ break;
269
+ case "quota_keys":
270
+ results.push({ key: op.key, ok: false, code: "QUOTA", error: `this canvas already holds ${CANVAS_KV_MAX_KEYS} keys` });
271
+ break;
272
+ case "quota_bytes":
273
+ results.push({ key: op.key, ok: false, code: "QUOTA", error: `this canvas is at its ${CANVAS_KV_MAX_BYTES}-byte budget` });
274
+ break;
275
+ default:
276
+ results.push({ key: op.key, ok: false, code: "CONFLICT", error: `unexpected store status ${outcome.status}` });
277
+ }
278
+ }
279
+ return { results, me: viewer.me };
280
+ }
281
+ //# sourceMappingURL=canvas-kv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas-kv.js","sourceRoot":"","sources":["../src/canvas-kv.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Canvas helpers shared by the session bridge (session-proxy.ts) and the app
3
+ * catalog (canvas-app-catalog.ts). Kept in their own module so the catalog
4
+ * can be exercised without importing the whole bridge, and so the bridge and
5
+ * the catalog can never disagree about slot names or revision derivation.
6
+ *
7
+ * The session canvas: one reserved artifact per session slot, drawn by the
8
+ * agent with draw_canvas and rendered live in the portal. The revision is
9
+ * derived from the durable session.canvas_updated event log, not a counter
10
+ * column — see docs/proposals/session-canvas.md.
11
+ */
12
+ export declare const CANVAS_ARTIFACT_FILENAME = "canvas.html";
13
+ /** Slot 1 keeps the historical name; 2-5 are canvas2.html .. canvas5.html. */
14
+ export declare function canvasArtifactFilename(slot: number): string;
15
+ /** 1-5, defaulting absent to 1. Returns null for anything else. */
16
+ export declare function normalizeCanvasSlot(value: unknown): number | null;
17
+ /** Event rows predate slots; a missing slot means slot 1. */
18
+ export declare function eventSlot(row: any): number;
19
+ /**
20
+ * Latest canvas draw's full data (rev + armed contract) from the durable
21
+ * event log — the single authority. Reads a bounded window rather than
22
+ * exactly one row and takes the max of the VALID revs it finds, so one
23
+ * garbage event (rev missing, NaN, negative — injectable via
24
+ * send_session_event, which validates nothing) cannot reset the sequence.
25
+ *
26
+ * No empty-coerce on failure: a transient read error that reads as "no
27
+ * canvas" would mint rev 1 over a live rev-12 canvas. Callers route the
28
+ * throw to a structured { error }.
29
+ *
30
+ * Window 30, not 5: five interleaved slots can push one slot's latest draw
31
+ * well past a five-event window. The session_canvases table is the fast
32
+ * path; this scan is the durable fallback.
33
+ */
34
+ export declare function latestCanvasEventData(catalog: any, sessionId: string, slot?: number): Promise<{
35
+ rev: number;
36
+ responseContract?: Record<string, any>;
37
+ }>;
38
+ /** The current canvas revision: table first (migration 0045), event scan as the durable fallback. */
39
+ export declare function latestCanvasRev(catalog: any, sessionId: string, slot?: number): Promise<number>;
40
+ //# sourceMappingURL=canvas-support.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas-support.d.ts","sourceRoot":"","sources":["../src/canvas-support.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,eAAO,MAAM,wBAAwB,gBAAgB,CAAC;AAEtD,8EAA8E;AAC9E,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,mEAAmE;AACnE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAKjE;AAED,6DAA6D;AAC7D,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAG1C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAAE,CAAC,CAavJ;AAED,qGAAqG;AACrG,wBAAsB,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBhG"}