@portel/photon-core 2.25.0 → 2.27.0

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 (55) hide show
  1. package/README.md +121 -0
  2. package/dist/asset-discovery.d.ts +8 -2
  3. package/dist/asset-discovery.d.ts.map +1 -1
  4. package/dist/asset-discovery.js +46 -9
  5. package/dist/asset-discovery.js.map +1 -1
  6. package/dist/base.d.ts +76 -0
  7. package/dist/base.d.ts.map +1 -1
  8. package/dist/base.js +80 -0
  9. package/dist/base.js.map +1 -1
  10. package/dist/cf.d.ts +121 -0
  11. package/dist/cf.d.ts.map +1 -0
  12. package/dist/cf.js +65 -0
  13. package/dist/cf.js.map +1 -0
  14. package/dist/cloudflare.d.ts +110 -0
  15. package/dist/cloudflare.d.ts.map +1 -0
  16. package/dist/cloudflare.js +138 -0
  17. package/dist/cloudflare.js.map +1 -0
  18. package/dist/collections/Collection.d.ts +12 -0
  19. package/dist/collections/Collection.d.ts.map +1 -1
  20. package/dist/collections/Collection.js +19 -0
  21. package/dist/collections/Collection.js.map +1 -1
  22. package/dist/env.d.ts +29 -0
  23. package/dist/env.d.ts.map +1 -0
  24. package/dist/env.js +2 -0
  25. package/dist/env.js.map +1 -0
  26. package/dist/index.d.ts +3 -0
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +2 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/mixins.d.ts.map +1 -1
  31. package/dist/mixins.js +10 -0
  32. package/dist/mixins.js.map +1 -1
  33. package/dist/photon-loader-lite.d.ts +17 -0
  34. package/dist/photon-loader-lite.d.ts.map +1 -1
  35. package/dist/photon-loader-lite.js +150 -1
  36. package/dist/photon-loader-lite.js.map +1 -1
  37. package/dist/schema-extractor.d.ts +25 -6
  38. package/dist/schema-extractor.d.ts.map +1 -1
  39. package/dist/schema-extractor.js +86 -7
  40. package/dist/schema-extractor.js.map +1 -1
  41. package/dist/types.d.ts +1 -1
  42. package/dist/types.d.ts.map +1 -1
  43. package/dist/types.js.map +1 -1
  44. package/package.json +3 -2
  45. package/src/asset-discovery.ts +44 -9
  46. package/src/base.ts +86 -0
  47. package/src/cf.ts +165 -0
  48. package/src/cloudflare.ts +198 -0
  49. package/src/collections/Collection.ts +19 -0
  50. package/src/env.ts +28 -0
  51. package/src/index.ts +27 -0
  52. package/src/mixins.ts +12 -0
  53. package/src/photon-loader-lite.ts +185 -0
  54. package/src/schema-extractor.ts +119 -9
  55. package/src/types.ts +16 -1
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAsgBH;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAY,EAAE,CAAC,GAAe,CAAC;AAErE;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,GAAa,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqhBH;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAY,EAAE,CAAC,GAAe,CAAC;AAErE;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,GAAa,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@portel/photon-core",
3
- "version": "2.25.0",
3
+ "version": "2.27.0",
4
4
  "description": "Core library for parsing, loading, and managing .photon.ts files - runtime-agnostic foundation for building custom Photon runtimes",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -69,7 +69,8 @@
69
69
  },
70
70
  "devDependencies": {
71
71
  "@types/node": "^22.10.2",
72
- "tsx": "^4.21.0"
72
+ "tsx": "^4.21.0",
73
+ "vitest": "^4.1.5"
73
74
  },
74
75
  "engines": {
75
76
  "node": ">=18.0.0",
@@ -28,9 +28,15 @@ async function fileExists(filePath: string): Promise<boolean> {
28
28
  /**
29
29
  * Discover and extract assets from a Photon file
30
30
  *
31
- * Convention:
31
+ * Conventions (both supported, dual-layout):
32
32
  * - Asset folder: {photon-name}/ next to {photon-name}.photon.ts
33
- * - Subfolder: ui/, prompts/, resources/
33
+ * - Old layout: subfolders ui/, prompts/, resources/ live directly under {photon-name}/
34
+ * - New layout: subfolders live under {photon-name}/assets/ (canonical bundle root)
35
+ *
36
+ * When {photon-name}/assets/ exists, it becomes the resolution root for
37
+ * explicit @ui declarations and the source for auto-discovery. The plain
38
+ * {photon-name}/ folder remains a fallback so older photons keep working
39
+ * without modification.
34
40
  *
35
41
  * @param photonPath - Absolute path to the .photon.ts file
36
42
  * @param source - Source code content of the Photon file
@@ -70,8 +76,23 @@ export async function discoverAssets(
70
76
  // Folder doesn't exist
71
77
  }
72
78
 
79
+ // Dual-layout: prefer {photon}/assets/ as the canonical root when present.
80
+ // Falling back to the plain folder keeps every pre-v1.29 fixture working.
81
+ let assetRoot = assetFolder;
82
+ if (folderExists) {
83
+ const nestedRoot = path.join(assetFolder, 'assets');
84
+ try {
85
+ const nestedStat = await fs.stat(nestedRoot);
86
+ if (nestedStat.isDirectory()) {
87
+ assetRoot = nestedRoot;
88
+ }
89
+ } catch {
90
+ // No assets/ subfolder — keep the legacy root.
91
+ }
92
+ }
93
+
73
94
  // Extract explicit asset declarations from source annotations
74
- const assets = extractor.extractAssets(source, folderExists ? assetFolder : undefined);
95
+ const assets = extractor.extractAssets(source, folderExists ? assetRoot : undefined);
75
96
 
76
97
  // If no folder exists and no explicit declarations, skip
77
98
  if (
@@ -84,19 +105,33 @@ export async function discoverAssets(
84
105
  }
85
106
 
86
107
  if (folderExists) {
87
- // Resolve paths for explicitly declared assets
108
+ // Resolve paths for explicitly declared assets. Try the canonical root
109
+ // first; if a declaration was written against the legacy root convention
110
+ // (./ui/foo.html with no assets/ wrapper), fall back to assetFolder so
111
+ // the directive keeps resolving without source edits.
112
+ const resolveAssetPath = async (declared: string): Promise<string> => {
113
+ const cleaned = declared.replace(/^\.\//, '');
114
+ const primary = path.resolve(assetRoot, cleaned);
115
+ if (assetRoot === assetFolder) return primary;
116
+ try {
117
+ await fs.access(primary);
118
+ return primary;
119
+ } catch {
120
+ return path.resolve(assetFolder, cleaned);
121
+ }
122
+ };
88
123
  for (const ui of assets.ui) {
89
- ui.resolvedPath = path.resolve(assetFolder, ui.path.replace(/^\.\//, ''));
124
+ ui.resolvedPath = await resolveAssetPath(ui.path);
90
125
  }
91
126
  for (const prompt of assets.prompts) {
92
- prompt.resolvedPath = path.resolve(assetFolder, prompt.path.replace(/^\.\//, ''));
127
+ prompt.resolvedPath = await resolveAssetPath(prompt.path);
93
128
  }
94
129
  for (const resource of assets.resources) {
95
- resource.resolvedPath = path.resolve(assetFolder, resource.path.replace(/^\.\//, ''));
130
+ resource.resolvedPath = await resolveAssetPath(resource.path);
96
131
  }
97
132
 
98
- // Auto-discover assets from folder structure
99
- await autoDiscoverAssets(assetFolder, assets);
133
+ // Auto-discover assets from folder structure (new convention root first).
134
+ await autoDiscoverAssets(assetRoot, assets);
100
135
  }
101
136
 
102
137
  return assets;
package/src/base.ts CHANGED
@@ -139,6 +139,35 @@ export class Photon {
139
139
  */
140
140
  _sessionId?: string;
141
141
 
142
+ /**
143
+ * Cloudflare Worker env, present only when the photon runs on a
144
+ * deployed CF Worker. Carries bindings (KV, R2, secrets, custom env
145
+ * vars) that aren't part of the typed `this.cf.*` namespace. Undefined
146
+ * on the local CLI / Beam daemon.
147
+ *
148
+ * Typed loosely so photon-core stays free of `@cloudflare/workers-types`.
149
+ * Photons that need exact binding shapes can re-declare the property
150
+ * with a stricter type.
151
+ */
152
+ readonly env?: Record<string, unknown>;
153
+
154
+ /**
155
+ * True when the active `/mcp` request passed the `PHOTON_MCP_BEARER`
156
+ * Worker secret check. False/undefined when:
157
+ * - no secret is configured (the bearer gate is off),
158
+ * - the photon is running locally (CLI / Beam),
159
+ * - the call arrived via `/api/*`, `__call`, or any path other than
160
+ * a transport-authed `tools/call`.
161
+ *
162
+ * User code can guard sensitive methods with:
163
+ * ```typescript
164
+ * if (!this.mcpAuthed) throw new Error('unauthorized');
165
+ * ```
166
+ * Backed by AsyncLocalStorage on the deployed Worker so concurrent
167
+ * tool calls each see their own value.
168
+ */
169
+ readonly mcpAuthed?: boolean;
170
+
142
171
  /**
143
172
  * Authenticated caller identity
144
173
  *
@@ -263,6 +292,63 @@ export class Photon {
263
292
  return '';
264
293
  }
265
294
 
295
+ /**
296
+ * Workspace roots declared by the connected MCP client (per spec
297
+ * `roots/list`). Each entry is a `{ uri, name? }` pair; URIs always start
298
+ * with `file://` per the current spec.
299
+ *
300
+ * Empty when:
301
+ * - the client did not declare the `roots` capability,
302
+ * - the photon is running outside a live MCP session (CLI / unit test),
303
+ * - the client returned an empty list.
304
+ *
305
+ * The runtime fetches `roots/list` once per session and refreshes on
306
+ * `notifications/roots/list_changed`, so reads inside a tool call are
307
+ * synchronous and consistent.
308
+ *
309
+ * @example
310
+ * ```typescript
311
+ * async listProjectFiles() {
312
+ * const roots = this.roots;
313
+ * if (roots.length === 0) return [];
314
+ * // ...resolve files under each root.uri...
315
+ * }
316
+ * ```
317
+ */
318
+ get roots(): Array<{ uri: string; name?: string }> {
319
+ const store = executionContext.getStore() as
320
+ | { roots?: Array<{ uri: string; name?: string }> }
321
+ | undefined;
322
+ return store?.roots ?? [];
323
+ }
324
+
325
+ /**
326
+ * Notify subscribed MCP clients that the resource at `uri` has changed.
327
+ * Triggers `notifications/resources/updated` for every client that has
328
+ * issued `resources/subscribe` against this exact URI.
329
+ *
330
+ * Default no-op so calls from CLI execution (no live MCP server) do not
331
+ * throw. The runtime overrides this with a wired version on every
332
+ * instance it constructs; that wired version dispatches into the
333
+ * server's subscription registry.
334
+ *
335
+ * Use it from `@stateful` methods or any code path that mutates the
336
+ * data behind a `@resource <uri-template>` resolver:
337
+ *
338
+ * @example
339
+ * ```typescript
340
+ * async upsertPerson(params: { slug: string; ... }) {
341
+ * this.people[params.slug] = ...;
342
+ * this.notifyResourceUpdated(`person://${params.slug}`);
343
+ * }
344
+ * ```
345
+ */
346
+ notifyResourceUpdated(_uri: string): void {
347
+ // Runtime injects a wired version on every instance — see
348
+ // photon/src/loader.ts injectResourceNotifier. This default is for
349
+ // standalone use (CLI, unit tests) where no MCP server is attached.
350
+ }
351
+
266
352
  /**
267
353
  * Internal: resolve the runtime-supplied input provider, throwing a
268
354
  * clear error if none is attached to the current execution context.
package/src/cf.ts ADDED
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Cloudflare capability surface — `this.cf.*`
3
+ *
4
+ * Photons reach into Cloudflare features (R2, KV, D1, Workers AI, Queues,
5
+ * Vectorize, Images, Browser Rendering, Durable Objects) through one
6
+ * namespace. The runtime adapter that wraps a photon decides what backs
7
+ * each binding:
8
+ *
9
+ * - Local: `miniflare` provides an in-process sandbox seeded from the
10
+ * photon's `protected cfBindings = { ... }` config.
11
+ * - Deployed Worker: the real `env` is proxied through.
12
+ *
13
+ * Both paths satisfy the same shape, so the photon source is unchanged.
14
+ *
15
+ * Typing: we publish minimal structural shapes here rather than re-exporting
16
+ * `@cloudflare/workers-types`. The cost of importing the full workers-types
17
+ * tree (~6k lines of declarations) into every photon's transform pipeline
18
+ * showed up as flaky `EPIPE` errors under tsx. Photons that already use
19
+ * workers-types get exact compatibility through structural typing — assign
20
+ * a `R2Bucket` from workers-types into our `R2BucketLike` and TS accepts
21
+ * it. Photons that don't use workers-types still see typed methods on
22
+ * the namespace and full autocomplete on the runtime methods we expose
23
+ * here.
24
+ */
25
+
26
+ /**
27
+ * Minimal R2 bucket surface — covers the methods photons actually call.
28
+ * Structurally compatible with `@cloudflare/workers-types` `R2Bucket`.
29
+ */
30
+ export interface R2BucketLike {
31
+ head(key: string): Promise<unknown>;
32
+ get(key: string, options?: unknown): Promise<unknown>;
33
+ put(key: string, value: unknown, options?: unknown): Promise<unknown>;
34
+ delete(keys: string | string[]): Promise<void>;
35
+ list(options?: unknown): Promise<unknown>;
36
+ }
37
+
38
+ /** Minimal KV namespace surface. */
39
+ export interface KVNamespaceLike {
40
+ get(key: string, options?: unknown): Promise<unknown>;
41
+ put(key: string, value: string | ArrayBuffer | ArrayBufferView | ReadableStream, options?: unknown): Promise<void>;
42
+ delete(key: string): Promise<void>;
43
+ list(options?: unknown): Promise<unknown>;
44
+ }
45
+
46
+ /** Minimal D1 database surface. */
47
+ export interface D1DatabaseLike {
48
+ prepare(query: string): D1PreparedStatementLike;
49
+ batch<T = unknown>(statements: D1PreparedStatementLike[]): Promise<T[]>;
50
+ exec(query: string): Promise<unknown>;
51
+ dump(): Promise<ArrayBuffer>;
52
+ }
53
+
54
+ /** Minimal D1 prepared statement surface. */
55
+ export interface D1PreparedStatementLike {
56
+ bind(...values: unknown[]): D1PreparedStatementLike;
57
+ first<T = unknown>(colName?: string): Promise<T | null>;
58
+ run<T = unknown>(): Promise<T>;
59
+ all<T = unknown>(): Promise<T>;
60
+ raw<T = unknown>(): Promise<T[]>;
61
+ }
62
+
63
+ /** Minimal queue surface. */
64
+ export interface QueueLike<Body = unknown> {
65
+ send(message: Body, options?: unknown): Promise<void>;
66
+ sendBatch(messages: { body: Body }[], options?: unknown): Promise<void>;
67
+ }
68
+
69
+ /** Minimal vectorize surface. */
70
+ export interface VectorizeIndexLike {
71
+ insert(vectors: unknown[]): Promise<unknown>;
72
+ upsert(vectors: unknown[]): Promise<unknown>;
73
+ query(vector: number[], options?: unknown): Promise<unknown>;
74
+ getByIds(ids: string[]): Promise<unknown>;
75
+ deleteByIds(ids: string[]): Promise<unknown>;
76
+ }
77
+
78
+ /** Minimal Workers AI surface. */
79
+ export interface AiLike {
80
+ run(model: string, inputs: unknown, options?: unknown): Promise<unknown>;
81
+ }
82
+
83
+ /** Minimal Cloudflare Images binding surface. */
84
+ export interface ImagesBindingLike {
85
+ info(stream: ReadableStream): Promise<unknown>;
86
+ input(stream: ReadableStream): unknown;
87
+ }
88
+
89
+ /** Minimal Fetcher surface (Service binding / Browser Rendering). */
90
+ export interface FetcherLike {
91
+ fetch(input: string, init?: unknown): Promise<unknown>;
92
+ }
93
+
94
+ /** Minimal Durable Object namespace surface. */
95
+ export interface DurableObjectNamespaceLike {
96
+ idFromName(name: string): unknown;
97
+ idFromString(id: string): unknown;
98
+ newUniqueId(): unknown;
99
+ get(id: unknown): { fetch(input: string, init?: unknown): Promise<unknown> };
100
+ }
101
+
102
+ /**
103
+ * Cloudflare runtime surface as exposed via `this.cf`.
104
+ *
105
+ * Each subnamespace returns either an upstream Cloudflare type or a
106
+ * runtime-supplied proxy with the same shape. Backends:
107
+ * - Local: miniflare instance configured from `protected cfBindings`.
108
+ * - Deployed Worker: real `env.<binding>` passed through.
109
+ */
110
+ export interface CFRuntime {
111
+ r2(name: string): R2BucketLike;
112
+ kv(name: string): KVNamespaceLike;
113
+ d1(name: string): D1DatabaseLike;
114
+ queue<Body = unknown>(name: string): QueueLike<Body>;
115
+ vectorize(name: string): VectorizeIndexLike;
116
+ ai: AiLike;
117
+ images: ImagesBindingLike;
118
+ browser: FetcherLike;
119
+ fetch(input: string, init?: unknown): Promise<unknown>;
120
+ }
121
+
122
+ const HINT =
123
+ 'No Cloudflare runtime is configured. Either run this photon under a ' +
124
+ 'CF-aware host (local Beam with miniflare, or deployed to Cloudflare ' +
125
+ 'Workers), declare `protected cfBindings = { ... }` on the class, or ' +
126
+ 'remove the `this.cf` usage.';
127
+
128
+ function throwingFn(category: string): (...args: unknown[]) => never {
129
+ return (..._args: unknown[]) => {
130
+ throw new Error(`this.cf.${category}() called but ${HINT}`);
131
+ };
132
+ }
133
+
134
+ function throwingProperty(category: string): never {
135
+ return new Proxy(Object.create(null), {
136
+ get(_target, prop) {
137
+ if (prop === Symbol.toPrimitive || prop === 'toString') {
138
+ return () => `[unconfigured this.cf.${category}]`;
139
+ }
140
+ throw new Error(`this.cf.${category}.${String(prop)} accessed but ${HINT}`);
141
+ },
142
+ }) as never;
143
+ }
144
+
145
+ /**
146
+ * Returns a stub `CFRuntime` whose subnamespaces throw a helpful error
147
+ * when used. Callers should hold one instance per photon (mirrors the
148
+ * `_memory` and `_schedule` lazy-init pattern) so identity-sensitive
149
+ * checks remain consistent across reads of `this.cf`.
150
+ */
151
+ export function notConfiguredCF(): CFRuntime {
152
+ return {
153
+ r2: throwingFn('r2') as CFRuntime['r2'],
154
+ kv: throwingFn('kv') as CFRuntime['kv'],
155
+ d1: throwingFn('d1') as CFRuntime['d1'],
156
+ queue: throwingFn('queue') as CFRuntime['queue'],
157
+ vectorize: throwingFn('vectorize') as CFRuntime['vectorize'],
158
+ ai: throwingProperty('ai') as unknown as AiLike,
159
+ images: throwingProperty('images') as unknown as ImagesBindingLike,
160
+ browser: throwingProperty('browser') as unknown as FetcherLike,
161
+ fetch: ((_input: string, _init?: unknown) => {
162
+ throw new Error(`this.cf.fetch() called but ${HINT}`);
163
+ }) as CFRuntime['fetch'],
164
+ };
165
+ }
@@ -0,0 +1,198 @@
1
+ /**
2
+ * Cloudflare — wrapped, auto-named CF surface injected via constructor.
3
+ *
4
+ * Where `CloudflareEnv<T>` exposes the raw Worker `env` (escape hatch for
5
+ * service bindings, exotic features, anything we don't wrap), `Cloudflare`
6
+ * is the ergonomic 95% path: photons call `cf.kv()` / `cf.r2()` / etc.
7
+ * with optional qualifier strings, and the runtime resolves bindings by
8
+ * the **photon name + suffix** convention — so authors never pick names
9
+ * that could collide across photons.
10
+ *
11
+ * Importing `Cloudflare` (or `CloudflareEnv`) into a photon's source is
12
+ * the explicit signal that the photon depends on a Cloudflare deploy
13
+ * target. Outside of CF (or its local miniflare mirror), the loader
14
+ * injects a throwing Proxy and the message names the imported symbol so
15
+ * the diagnostic is unambiguous.
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * import type { Photon, Cloudflare } from "@portel/photon";
20
+ *
21
+ * export class Gallery {
22
+ * constructor(
23
+ * private photon: Photon,
24
+ * private cf: Cloudflare,
25
+ * ) {}
26
+ * async upload(name: string, blob: Blob) {
27
+ * await this.cf.r2().put(name, blob); // gallery_r2
28
+ * await this.cf.d1().prepare("...").bind(name).run(); // gallery_d1
29
+ * await this.photon.memory.set(name, Date.now());
30
+ * }
31
+ * }
32
+ * ```
33
+ *
34
+ * Multi-resource case — qualifier namespaces under the photon:
35
+ * ```ts
36
+ * this.cf.kv() // gallery_kv (default for this photon)
37
+ * this.cf.kv("cache") // gallery_cache_kv
38
+ * this.cf.kv("sessions") // gallery_sessions_kv
39
+ * ```
40
+ *
41
+ * Override path stays in `protected cfBindings = { ... }` — present only
42
+ * when an author needs to point a named binding at a pre-existing CF
43
+ * resource owned outside the photon.
44
+ */
45
+
46
+ import {
47
+ type R2BucketLike,
48
+ type KVNamespaceLike,
49
+ type D1DatabaseLike,
50
+ type QueueLike,
51
+ type VectorizeIndexLike,
52
+ type AiLike,
53
+ type ImagesBindingLike,
54
+ type FetcherLike,
55
+ } from './cf.js';
56
+
57
+ /**
58
+ * The wrapped Cloudflare surface. Methods that take a resource type
59
+ * (kv, r2, d1, queue, vectorize) accept an **optional** qualifier — when
60
+ * omitted, the runtime resolves the photon's default binding for that
61
+ * category. AI / images / browser are single shared bindings per Worker
62
+ * and have no qualifier.
63
+ */
64
+ export interface Cloudflare {
65
+ /** Resolves to `<photonName>_kv` (default) or `<photonName>_<qualifier>_kv`. */
66
+ kv(qualifier?: string): KVNamespaceLike;
67
+ /** Resolves to `<photonName>_r2` (default) or `<photonName>_<qualifier>_r2`. */
68
+ r2(qualifier?: string): R2BucketLike;
69
+ /** Resolves to `<photonName>_d1` (default) or `<photonName>_<qualifier>_d1`. */
70
+ d1(qualifier?: string): D1DatabaseLike;
71
+ /** Resolves to `<photonName>_queue` (default) or `<photonName>_<qualifier>_queue`. */
72
+ queue<Body = unknown>(qualifier?: string): QueueLike<Body>;
73
+ /** Resolves to `<photonName>_vectorize` (default) or `<photonName>_<qualifier>_vectorize`. */
74
+ vectorize(qualifier?: string): VectorizeIndexLike;
75
+ /** Workers AI — shared `AI` binding. */
76
+ readonly ai: AiLike;
77
+ /** Cloudflare Images — shared `IMAGES` binding. */
78
+ readonly images: ImagesBindingLike;
79
+ /** Browser Rendering — shared `BROWSER` binding. */
80
+ readonly browser: FetcherLike;
81
+ /** Top-level fetch (with optional service-binding routing). */
82
+ fetch(input: string, init?: unknown): Promise<unknown>;
83
+ }
84
+
85
+ /**
86
+ * Categories that are scoped per-photon and use the auto-naming
87
+ * convention. Shared categories (ai, images, browser) live outside this
88
+ * list and resolve to fixed binding names.
89
+ */
90
+ export type ScopedBindingCategory = 'kv' | 'r2' | 'd1' | 'queue' | 'vectorize';
91
+
92
+ /**
93
+ * Build the env binding name for a scoped category on a given photon.
94
+ * Default (no qualifier): `<photon>_<category>` (e.g. `gallery_kv`).
95
+ * With qualifier: `<photon>_<qualifier>_<category>` (e.g. `gallery_cache_kv`).
96
+ *
97
+ * The helper is exported so deploy-side codegen (wrangler.toml emission)
98
+ * uses the same naming rule the runtime resolves with.
99
+ */
100
+ export function bindingNameFor(
101
+ photonName: string,
102
+ category: ScopedBindingCategory,
103
+ qualifier?: string,
104
+ ): string {
105
+ const safePhoton = photonName.toLowerCase().replace(/-/g, '_');
106
+ if (qualifier && qualifier.length > 0) {
107
+ const safeQualifier = qualifier.toLowerCase().replace(/-/g, '_');
108
+ return `${safePhoton}_${safeQualifier}_${category}`;
109
+ }
110
+ return `${safePhoton}_${category}`;
111
+ }
112
+
113
+ /** Fixed binding name for a shared category. */
114
+ export const SHARED_AI_BINDING = 'AI';
115
+ export const SHARED_IMAGES_BINDING = 'IMAGES';
116
+ export const SHARED_BROWSER_BINDING = 'BROWSER';
117
+
118
+ const CF_HINT =
119
+ 'This photon imports `Cloudflare` from "@portel/photon" but no CF ' +
120
+ 'runtime is attached. Run via `photon host run` (miniflare-backed) ' +
121
+ 'or deploy with `photon host deploy cloudflare`. Outside CF, this ' +
122
+ 'photon\'s CF-dependent methods cannot execute.';
123
+
124
+ /**
125
+ * Throwing-Proxy fallback. Used by the loader when a photon's
126
+ * constructor types a `Cloudflare` parameter but no CF runtime was
127
+ * provided (e.g. unit tests that didn't pass a stub, or local hosts
128
+ * without miniflare configured).
129
+ */
130
+ export function notConfiguredCloudflare(): Cloudflare {
131
+ const throwing = (label: string) => (..._args: unknown[]) => {
132
+ throw new Error(`Cloudflare.${label} called but ${CF_HINT}`);
133
+ };
134
+ const throwingProp = (label: string) =>
135
+ new Proxy(Object.create(null), {
136
+ get(_t, prop) {
137
+ if (prop === Symbol.toPrimitive || prop === 'toString') {
138
+ return () => `[unconfigured Cloudflare.${label}]`;
139
+ }
140
+ throw new Error(`Cloudflare.${label}.${String(prop)} accessed but ${CF_HINT}`);
141
+ },
142
+ });
143
+ return {
144
+ kv: throwing('kv') as Cloudflare['kv'],
145
+ r2: throwing('r2') as Cloudflare['r2'],
146
+ d1: throwing('d1') as Cloudflare['d1'],
147
+ queue: throwing('queue') as Cloudflare['queue'],
148
+ vectorize: throwing('vectorize') as Cloudflare['vectorize'],
149
+ ai: throwingProp('ai') as unknown as AiLike,
150
+ images: throwingProp('images') as unknown as ImagesBindingLike,
151
+ browser: throwingProp('browser') as unknown as FetcherLike,
152
+ fetch: throwing('fetch') as Cloudflare['fetch'],
153
+ };
154
+ }
155
+
156
+ /**
157
+ * Build a `Cloudflare` surface backed directly by a Worker `env` (the
158
+ * deployed-CF case). Resolves auto-named bindings via the convention in
159
+ * `bindingNameFor`. Local hosts use the miniflare-backed factory in the
160
+ * photon repo's `runtime/cf-local.ts` instead.
161
+ *
162
+ * `env` is typed loosely so this module stays free of
163
+ * `@cloudflare/workers-types`. The deployed Worker template passes the
164
+ * real `env` straight through.
165
+ */
166
+ export function createCloudflareFromEnv(
167
+ env: Record<string, unknown>,
168
+ photonName: string,
169
+ ): Cloudflare {
170
+ const scoped = (category: ScopedBindingCategory) => (qualifier?: string) => {
171
+ const name = bindingNameFor(photonName, category, qualifier);
172
+ const binding = env[name];
173
+ if (binding === undefined) {
174
+ throw new Error(
175
+ `Cloudflare.${category}(${qualifier ? JSON.stringify(qualifier) : ''}) ` +
176
+ `requires binding "${name}" on the Worker env, but it is not defined. ` +
177
+ `Add it to wrangler.toml (or run \`photon host deploy cloudflare\` to ` +
178
+ `regenerate bindings from the photon's declarations).`,
179
+ );
180
+ }
181
+ return binding;
182
+ };
183
+ return {
184
+ kv: scoped('kv') as Cloudflare['kv'],
185
+ r2: scoped('r2') as Cloudflare['r2'],
186
+ d1: scoped('d1') as Cloudflare['d1'],
187
+ queue: scoped('queue') as Cloudflare['queue'],
188
+ vectorize: scoped('vectorize') as Cloudflare['vectorize'],
189
+ ai: (env[SHARED_AI_BINDING] ?? notConfiguredCloudflare().ai) as AiLike,
190
+ images: (env[SHARED_IMAGES_BINDING] ?? notConfiguredCloudflare().images) as ImagesBindingLike,
191
+ browser: (env[SHARED_BROWSER_BINDING] ?? notConfiguredCloudflare().browser) as FetcherLike,
192
+ fetch: (input: string, init?: unknown) => {
193
+ const fetcher = env['fetch'] as ((i: string, n?: unknown) => Promise<unknown>) | undefined;
194
+ if (typeof fetcher === 'function') return fetcher(input, init);
195
+ return fetch(input, init as RequestInit | undefined) as Promise<unknown>;
196
+ },
197
+ };
198
+ }
@@ -330,9 +330,28 @@ export class Collection<T> extends ReactiveArray<T> {
330
330
  /**
331
331
  * Attach a rendering hint for auto-UI.
332
332
  * Returns `this` for chaining at the end of a query.
333
+ *
334
+ * Pins `toJSON` as an own property here. Bun's `JSON.stringify`
335
+ * resolves the array branch before consulting the prototype's
336
+ * `toJSON`, so a prototype-only definition is silently bypassed
337
+ * for Array subclasses (Node 22 calls it correctly; Bun 1.2 does
338
+ * not). Installing the bound function as an own enumerable: false
339
+ * property makes both engines route through our serialization.
340
+ * Without `.as()` the photon shouldn't produce the metadata
341
+ * envelope at all, so the prototype-level `toJSON` (returns plain
342
+ * array) is fine — and JSON.stringify's array path produces the
343
+ * same plain array anyway, so the Bun divergence is invisible
344
+ * for that case.
333
345
  */
334
346
  as(format: RenderFormat, options?: Record<string, unknown>): this {
335
347
  this._renderHint = { format, options };
348
+ if (!Object.prototype.hasOwnProperty.call(this, 'toJSON')) {
349
+ Object.defineProperty(this, 'toJSON', {
350
+ value: this.toJSON.bind(this),
351
+ enumerable: false,
352
+ configurable: true,
353
+ });
354
+ }
336
355
  return this;
337
356
  }
338
357