@portel/photon 1.28.2 → 1.31.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.
- package/README.md +42 -11
- package/dist/asset-resolver.d.ts +44 -0
- package/dist/asset-resolver.d.ts.map +1 -0
- package/dist/asset-resolver.js +105 -0
- package/dist/asset-resolver.js.map +1 -0
- package/dist/auto-ui/beam/external-mcp-manager.d.ts +73 -0
- package/dist/auto-ui/beam/external-mcp-manager.d.ts.map +1 -0
- package/dist/auto-ui/beam/external-mcp-manager.js +65 -0
- package/dist/auto-ui/beam/external-mcp-manager.js.map +1 -0
- package/dist/auto-ui/beam/external-mcp.d.ts.map +1 -1
- package/dist/auto-ui/beam/external-mcp.js +25 -1
- package/dist/auto-ui/beam/external-mcp.js.map +1 -1
- package/dist/auto-ui/beam/photon-management.d.ts.map +1 -1
- package/dist/auto-ui/beam/photon-management.js +11 -8
- package/dist/auto-ui/beam/photon-management.js.map +1 -1
- package/dist/auto-ui/beam/routes/api-browse.d.ts.map +1 -1
- package/dist/auto-ui/beam/routes/api-browse.js +7 -4
- package/dist/auto-ui/beam/routes/api-browse.js.map +1 -1
- package/dist/auto-ui/beam/routes/api-config.d.ts.map +1 -1
- package/dist/auto-ui/beam/routes/api-config.js +3 -2
- package/dist/auto-ui/beam/routes/api-config.js.map +1 -1
- package/dist/auto-ui/beam/routes/api-marketplace.d.ts.map +1 -1
- package/dist/auto-ui/beam/routes/api-marketplace.js +6 -2
- package/dist/auto-ui/beam/routes/api-marketplace.js.map +1 -1
- package/dist/auto-ui/beam/startup.js.map +1 -1
- package/dist/auto-ui/beam/types.d.ts +5 -2
- package/dist/auto-ui/beam/types.d.ts.map +1 -1
- package/dist/auto-ui/beam.d.ts.map +1 -1
- package/dist/auto-ui/beam.js +239 -88
- package/dist/auto-ui/beam.js.map +1 -1
- package/dist/auto-ui/bridge/index.d.ts.map +1 -1
- package/dist/auto-ui/bridge/index.js +11 -0
- package/dist/auto-ui/bridge/index.js.map +1 -1
- package/dist/auto-ui/bridge/types.d.ts +2 -0
- package/dist/auto-ui/bridge/types.d.ts.map +1 -1
- package/dist/auto-ui/openapi-generator.js +1 -4
- package/dist/auto-ui/openapi-generator.js.map +1 -1
- package/dist/auto-ui/photon-bridge.d.ts +4 -0
- package/dist/auto-ui/photon-bridge.d.ts.map +1 -1
- package/dist/auto-ui/photon-bridge.js.map +1 -1
- package/dist/auto-ui/photon-host.js.map +1 -1
- package/dist/auto-ui/streamable-http-transport.d.ts +7 -0
- package/dist/auto-ui/streamable-http-transport.d.ts.map +1 -1
- package/dist/auto-ui/streamable-http-transport.js +252 -43
- package/dist/auto-ui/streamable-http-transport.js.map +1 -1
- package/dist/auto-ui/types.d.ts +24 -2
- package/dist/auto-ui/types.d.ts.map +1 -1
- package/dist/auto-ui/types.js.map +1 -1
- package/dist/beam.bundle.js +202 -24
- package/dist/beam.bundle.js.map +3 -3
- package/dist/capability-negotiator.d.ts +39 -1
- package/dist/capability-negotiator.d.ts.map +1 -1
- package/dist/capability-negotiator.js +5 -0
- package/dist/capability-negotiator.js.map +1 -1
- package/dist/cf-bindings-parser.d.ts +15 -0
- package/dist/cf-bindings-parser.d.ts.map +1 -0
- package/dist/cf-bindings-parser.js +98 -0
- package/dist/cf-bindings-parser.js.map +1 -0
- package/dist/cf-usage-scanner.d.ts +76 -0
- package/dist/cf-usage-scanner.d.ts.map +1 -0
- package/dist/cf-usage-scanner.js +179 -0
- package/dist/cf-usage-scanner.js.map +1 -0
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +124 -16
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/cf.d.ts +18 -0
- package/dist/cli/commands/cf.d.ts.map +1 -0
- package/dist/cli/commands/cf.js +207 -0
- package/dist/cli/commands/cf.js.map +1 -0
- package/dist/cli/commands/info.js +1 -1
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +59 -46
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +3 -0
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +43 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/daemon/client.d.ts.map +1 -1
- package/dist/daemon/client.js +40 -33
- package/dist/daemon/client.js.map +1 -1
- package/dist/daemon/manager.d.ts +6 -2
- package/dist/daemon/manager.d.ts.map +1 -1
- package/dist/daemon/manager.js +75 -20
- package/dist/daemon/manager.js.map +1 -1
- package/dist/daemon/server.js +69 -11
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/worker-host.js.map +1 -1
- package/dist/deploy/cloudflare.d.ts +27 -0
- package/dist/deploy/cloudflare.d.ts.map +1 -1
- package/dist/deploy/cloudflare.js +210 -3
- package/dist/deploy/cloudflare.js.map +1 -1
- package/dist/editor-support/docblock-tag-catalog.d.ts.map +1 -1
- package/dist/editor-support/docblock-tag-catalog.js +32 -2
- package/dist/editor-support/docblock-tag-catalog.js.map +1 -1
- package/dist/embedded-runtime.js.map +1 -1
- package/dist/format/registry.d.ts +83 -0
- package/dist/format/registry.d.ts.map +1 -0
- package/dist/format/registry.js +139 -0
- package/dist/format/registry.js.map +1 -0
- package/dist/format/seed.d.ts +18 -0
- package/dist/format/seed.d.ts.map +1 -0
- package/dist/format/seed.js +246 -0
- package/dist/format/seed.js.map +1 -0
- package/dist/loader.d.ts +61 -66
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +315 -327
- package/dist/loader.js.map +1 -1
- package/dist/photon-cli-runner.d.ts.map +1 -1
- package/dist/photon-cli-runner.js +20 -11
- package/dist/photon-cli-runner.js.map +1 -1
- package/dist/photons/maker.photon.d.ts +2 -2
- package/dist/photons/maker.photon.d.ts.map +1 -1
- package/dist/photons/maker.photon.js +5 -6
- package/dist/photons/maker.photon.js.map +1 -1
- package/dist/photons/maker.photon.ts +5 -6
- package/dist/resource-server.d.ts +55 -15
- package/dist/resource-server.d.ts.map +1 -1
- package/dist/resource-server.js +205 -50
- package/dist/resource-server.js.map +1 -1
- package/dist/runtime/cf-local.d.ts +157 -0
- package/dist/runtime/cf-local.d.ts.map +1 -0
- package/dist/runtime/cf-local.js +406 -0
- package/dist/runtime/cf-local.js.map +1 -0
- package/dist/server.d.ts +117 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +681 -67
- package/dist/server.js.map +1 -1
- package/dist/settings-persistence.d.ts +50 -0
- package/dist/settings-persistence.d.ts.map +1 -0
- package/dist/settings-persistence.js +188 -0
- package/dist/settings-persistence.js.map +1 -0
- package/dist/shared/asset-encoding.d.ts +30 -0
- package/dist/shared/asset-encoding.d.ts.map +1 -0
- package/dist/shared/asset-encoding.js +0 -0
- package/dist/shared/asset-encoding.js.map +1 -0
- package/dist/shared/audit-sqlite.d.ts.map +1 -1
- package/dist/shared/audit-sqlite.js +0 -1
- package/dist/shared/audit-sqlite.js.map +1 -1
- package/dist/shared/cross-origin-headers.d.ts +47 -0
- package/dist/shared/cross-origin-headers.d.ts.map +1 -0
- package/dist/shared/cross-origin-headers.js +61 -0
- package/dist/shared/cross-origin-headers.js.map +1 -0
- package/dist/shared/error-handler.d.ts.map +1 -1
- package/dist/shared/error-handler.js +3 -1
- package/dist/shared/error-handler.js.map +1 -1
- package/dist/shared/expose-route-extractor.d.ts +36 -0
- package/dist/shared/expose-route-extractor.d.ts.map +1 -0
- package/dist/shared/expose-route-extractor.js +64 -0
- package/dist/shared/expose-route-extractor.js.map +1 -0
- package/dist/shared/extract-claims.d.ts +33 -0
- package/dist/shared/extract-claims.d.ts.map +1 -0
- package/dist/shared/extract-claims.js +60 -0
- package/dist/shared/extract-claims.js.map +1 -0
- package/dist/shared/http-route-extractor.d.ts +6 -0
- package/dist/shared/http-route-extractor.d.ts.map +1 -1
- package/dist/shared/http-route-extractor.js +29 -5
- package/dist/shared/http-route-extractor.js.map +1 -1
- package/dist/shared/instance-binding.d.ts +53 -0
- package/dist/shared/instance-binding.d.ts.map +1 -0
- package/dist/shared/instance-binding.js +85 -0
- package/dist/shared/instance-binding.js.map +1 -0
- package/dist/shared/io.d.ts.map +1 -1
- package/dist/shared/io.js +5 -2
- package/dist/shared/io.js.map +1 -1
- package/dist/shared/logger.js.map +1 -1
- package/dist/shared/sqlite-runtime.d.ts.map +1 -1
- package/dist/shared/sqlite-runtime.js +0 -1
- package/dist/shared/sqlite-runtime.js.map +1 -1
- package/dist/task-executor.js.map +1 -1
- package/dist/telemetry/sdk.d.ts.map +1 -1
- package/dist/telemetry/sdk.js +0 -1
- package/dist/telemetry/sdk.js.map +1 -1
- package/dist/test-runner.d.ts.map +1 -1
- package/dist/test-runner.js.map +1 -1
- package/dist/types/server-types.d.ts +16 -7
- package/dist/types/server-types.d.ts.map +1 -1
- package/package.json +14 -4
- package/templates/cloudflare/worker.ts.template +428 -14
- package/templates/cloudflare/wrangler.toml.template +2 -7
- package/templates/photon.template.ts +13 -0
|
@@ -24,6 +24,58 @@ export interface ResourceServerOptions {
|
|
|
24
24
|
bundleJs: string;
|
|
25
25
|
};
|
|
26
26
|
embeddedUITemplates?: Record<string, Record<string, string>>;
|
|
27
|
+
/**
|
|
28
|
+
* Embedded `<photon>/<name>/assets/**` tree for v1.29 directory-style
|
|
29
|
+
* serving in standalone binaries. Populated by `photon build` when the
|
|
30
|
+
* companion `assets/` folder exists. Consumed by the directory-style
|
|
31
|
+
* GET handler so SPA chunks resolve without filesystem access.
|
|
32
|
+
* Shape: photonName → { relativePath → utf-8 content }.
|
|
33
|
+
*/
|
|
34
|
+
embeddedAssetTree?: Record<string, Record<string, string>>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Check if a URI contains template parameters, e.g. `person://{slug}`.
|
|
38
|
+
* Exported so both STDIO (ResourceServer) and the streamable-HTTP
|
|
39
|
+
* transport can split static vs templated URIs the same way.
|
|
40
|
+
*/
|
|
41
|
+
export declare function isUriTemplate(uri: string): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Test whether `uri` matches the template `pattern`.
|
|
44
|
+
* Example: `matchUriTemplate('person://{slug}', 'person://alice')` → true.
|
|
45
|
+
*/
|
|
46
|
+
export declare function matchUriTemplate(pattern: string, uri: string): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Extract template parameter values from a URI given its template pattern.
|
|
49
|
+
* Example: `parseUriTemplateParams('person://{slug}', 'person://alice')`
|
|
50
|
+
* → `{ slug: 'alice' }`. Returns an empty object on mismatch.
|
|
51
|
+
*/
|
|
52
|
+
export declare function parseUriTemplateParams(pattern: string, uri: string): Record<string, string>;
|
|
53
|
+
/**
|
|
54
|
+
* Sink that delivers a `notifications/resources/updated` event to a single
|
|
55
|
+
* client (one MCP server connection — STDIO or one SSE session).
|
|
56
|
+
*/
|
|
57
|
+
export type ResourceUpdateSink = (uri: string) => void | Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* Server-wide registry of `resources/subscribe` state. One instance lives on
|
|
60
|
+
* `PhotonServer`; both the STDIO server and every SSE session register their
|
|
61
|
+
* sinks with it.
|
|
62
|
+
*
|
|
63
|
+
* - Subscriptions are keyed by *exact* URI (per MCP spec — clients subscribe
|
|
64
|
+
* to `person://alice`, never to the template `person://{slug}`).
|
|
65
|
+
* - On session disconnect, call `disconnect(sink)` to purge all that session's
|
|
66
|
+
* subscriptions in one go.
|
|
67
|
+
* - `notify(uri)` fans out to every subscribed sink, isolating delivery
|
|
68
|
+
* failures so one dead transport does not block others.
|
|
69
|
+
*/
|
|
70
|
+
export declare class SubscriptionRegistry {
|
|
71
|
+
private bySink;
|
|
72
|
+
private byUri;
|
|
73
|
+
subscribe(sink: ResourceUpdateSink, uri: string): void;
|
|
74
|
+
unsubscribe(sink: ResourceUpdateSink, uri: string): void;
|
|
75
|
+
disconnect(sink: ResourceUpdateSink): void;
|
|
76
|
+
notify(uri: string): Promise<void>;
|
|
77
|
+
/** True if any sink is subscribed to `uri`. Used by tests. */
|
|
78
|
+
hasSubscribers(uri: string): boolean;
|
|
27
79
|
}
|
|
28
80
|
export declare class ResourceServer {
|
|
29
81
|
private toolExecutor;
|
|
@@ -58,21 +110,9 @@ export declare class ResourceServer {
|
|
|
58
110
|
sizes?: string;
|
|
59
111
|
theme?: string;
|
|
60
112
|
}>;
|
|
61
|
-
/**
|
|
62
|
-
* Check if a URI is a template (contains {parameters})
|
|
63
|
-
*/
|
|
64
113
|
isUriTemplate(uri: string): boolean;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
* Example: github://repos/{owner}/{repo} matches github://repos/foo/bar
|
|
68
|
-
*/
|
|
69
|
-
private matchUriPattern;
|
|
70
|
-
/**
|
|
71
|
-
* Parse parameters from URI based on pattern
|
|
72
|
-
* Example: pattern="github://repos/{owner}/{repo}", uri="github://repos/foo/bar"
|
|
73
|
-
* Returns: { owner: "foo", repo: "bar" }
|
|
74
|
-
*/
|
|
75
|
-
private parseUriParams;
|
|
114
|
+
matchUriPattern(pattern: string, uri: string): boolean;
|
|
115
|
+
parseUriParams(pattern: string, uri: string): Record<string, string>;
|
|
76
116
|
handleListResources(mcp: PhotonClassExtended | null): {
|
|
77
117
|
resources: any[];
|
|
78
118
|
};
|
|
@@ -95,7 +135,7 @@ export declare class ResourceServer {
|
|
|
95
135
|
/**
|
|
96
136
|
* Format static result to MCP resource response
|
|
97
137
|
*/
|
|
98
|
-
|
|
138
|
+
formatStaticResult(result: any, mimeType?: string): any;
|
|
99
139
|
/**
|
|
100
140
|
* Generate minimal MCP Apps bridge script for Claude Desktop compatibility
|
|
101
141
|
* This handles the ui/initialize handshake and tool result delivery
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-server.d.ts","sourceRoot":"","sources":["../src/resource-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,iFAAiF;AACjF,MAAM,WAAW,oBAAoB;IACnC,WAAW,CACT,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,GAAG,CAAC,CAAC;IAChB,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CACtD;AAED,sDAAsD;AACtD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"resource-server.d.ts","sourceRoot":"","sources":["../src/resource-server.ts"],"names":[],"mappings":"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"}
|
package/dist/resource-server.js
CHANGED
|
@@ -13,6 +13,120 @@
|
|
|
13
13
|
import { readFileSync } from 'node:fs';
|
|
14
14
|
import * as path from 'node:path';
|
|
15
15
|
import { readText } from './shared/io.js';
|
|
16
|
+
/**
|
|
17
|
+
* Check if a URI contains template parameters, e.g. `person://{slug}`.
|
|
18
|
+
* Exported so both STDIO (ResourceServer) and the streamable-HTTP
|
|
19
|
+
* transport can split static vs templated URIs the same way.
|
|
20
|
+
*/
|
|
21
|
+
export function isUriTemplate(uri) {
|
|
22
|
+
return /\{[^}]+\}/.test(uri);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Test whether `uri` matches the template `pattern`.
|
|
26
|
+
* Example: `matchUriTemplate('person://{slug}', 'person://alice')` → true.
|
|
27
|
+
*/
|
|
28
|
+
export function matchUriTemplate(pattern, uri) {
|
|
29
|
+
const regexPattern = pattern.replace(/\{[^}]+\}/g, '([^/]+)');
|
|
30
|
+
return new RegExp(`^${regexPattern}$`).test(uri);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Extract template parameter values from a URI given its template pattern.
|
|
34
|
+
* Example: `parseUriTemplateParams('person://{slug}', 'person://alice')`
|
|
35
|
+
* → `{ slug: 'alice' }`. Returns an empty object on mismatch.
|
|
36
|
+
*/
|
|
37
|
+
export function parseUriTemplateParams(pattern, uri) {
|
|
38
|
+
const paramNames = [];
|
|
39
|
+
const paramRegex = /\{([^}]+)\}/g;
|
|
40
|
+
let match;
|
|
41
|
+
while ((match = paramRegex.exec(pattern)) !== null) {
|
|
42
|
+
paramNames.push(match[1]);
|
|
43
|
+
}
|
|
44
|
+
const regexPattern = pattern.replace(/\{[^}]+\}/g, '([^/]+)');
|
|
45
|
+
const values = uri.match(new RegExp(`^${regexPattern}$`));
|
|
46
|
+
if (!values)
|
|
47
|
+
return {};
|
|
48
|
+
const params = {};
|
|
49
|
+
for (let i = 0; i < paramNames.length; i++) {
|
|
50
|
+
params[paramNames[i]] = values[i + 1];
|
|
51
|
+
}
|
|
52
|
+
return params;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Server-wide registry of `resources/subscribe` state. One instance lives on
|
|
56
|
+
* `PhotonServer`; both the STDIO server and every SSE session register their
|
|
57
|
+
* sinks with it.
|
|
58
|
+
*
|
|
59
|
+
* - Subscriptions are keyed by *exact* URI (per MCP spec — clients subscribe
|
|
60
|
+
* to `person://alice`, never to the template `person://{slug}`).
|
|
61
|
+
* - On session disconnect, call `disconnect(sink)` to purge all that session's
|
|
62
|
+
* subscriptions in one go.
|
|
63
|
+
* - `notify(uri)` fans out to every subscribed sink, isolating delivery
|
|
64
|
+
* failures so one dead transport does not block others.
|
|
65
|
+
*/
|
|
66
|
+
export class SubscriptionRegistry {
|
|
67
|
+
bySink = new Map();
|
|
68
|
+
byUri = new Map();
|
|
69
|
+
subscribe(sink, uri) {
|
|
70
|
+
let uris = this.bySink.get(sink);
|
|
71
|
+
if (!uris) {
|
|
72
|
+
uris = new Set();
|
|
73
|
+
this.bySink.set(sink, uris);
|
|
74
|
+
}
|
|
75
|
+
uris.add(uri);
|
|
76
|
+
let sinks = this.byUri.get(uri);
|
|
77
|
+
if (!sinks) {
|
|
78
|
+
sinks = new Set();
|
|
79
|
+
this.byUri.set(uri, sinks);
|
|
80
|
+
}
|
|
81
|
+
sinks.add(sink);
|
|
82
|
+
}
|
|
83
|
+
unsubscribe(sink, uri) {
|
|
84
|
+
const uris = this.bySink.get(sink);
|
|
85
|
+
if (uris) {
|
|
86
|
+
uris.delete(uri);
|
|
87
|
+
if (uris.size === 0)
|
|
88
|
+
this.bySink.delete(sink);
|
|
89
|
+
}
|
|
90
|
+
const sinks = this.byUri.get(uri);
|
|
91
|
+
if (sinks) {
|
|
92
|
+
sinks.delete(sink);
|
|
93
|
+
if (sinks.size === 0)
|
|
94
|
+
this.byUri.delete(uri);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
disconnect(sink) {
|
|
98
|
+
const uris = this.bySink.get(sink);
|
|
99
|
+
if (!uris)
|
|
100
|
+
return;
|
|
101
|
+
for (const uri of uris) {
|
|
102
|
+
const sinks = this.byUri.get(uri);
|
|
103
|
+
if (sinks) {
|
|
104
|
+
sinks.delete(sink);
|
|
105
|
+
if (sinks.size === 0)
|
|
106
|
+
this.byUri.delete(uri);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
this.bySink.delete(sink);
|
|
110
|
+
}
|
|
111
|
+
async notify(uri) {
|
|
112
|
+
const sinks = this.byUri.get(uri);
|
|
113
|
+
if (!sinks || sinks.size === 0)
|
|
114
|
+
return;
|
|
115
|
+
await Promise.all(Array.from(sinks).map(async (sink) => {
|
|
116
|
+
try {
|
|
117
|
+
await sink(uri);
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
// Failed delivery on one transport must not block others.
|
|
121
|
+
}
|
|
122
|
+
}));
|
|
123
|
+
}
|
|
124
|
+
/** True if any sink is subscribed to `uri`. Used by tests. */
|
|
125
|
+
hasSubscribers(uri) {
|
|
126
|
+
const sinks = this.byUri.get(uri);
|
|
127
|
+
return !!sinks && sinks.size > 0;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
16
130
|
export class ResourceServer {
|
|
17
131
|
toolExecutor;
|
|
18
132
|
options;
|
|
@@ -89,44 +203,15 @@ export class ResourceServer {
|
|
|
89
203
|
this.resolvedIconsCache.set(cacheKey, icons);
|
|
90
204
|
return icons;
|
|
91
205
|
}
|
|
92
|
-
// ─── URI template helpers
|
|
93
|
-
/**
|
|
94
|
-
* Check if a URI is a template (contains {parameters})
|
|
95
|
-
*/
|
|
206
|
+
// ─── URI template helpers (delegate to module-level functions) ──────
|
|
96
207
|
isUriTemplate(uri) {
|
|
97
|
-
return
|
|
208
|
+
return isUriTemplate(uri);
|
|
98
209
|
}
|
|
99
|
-
/**
|
|
100
|
-
* Match URI pattern with actual URI
|
|
101
|
-
* Example: github://repos/{owner}/{repo} matches github://repos/foo/bar
|
|
102
|
-
*/
|
|
103
210
|
matchUriPattern(pattern, uri) {
|
|
104
|
-
|
|
105
|
-
const regex = new RegExp(`^${regexPattern}$`);
|
|
106
|
-
return regex.test(uri);
|
|
211
|
+
return matchUriTemplate(pattern, uri);
|
|
107
212
|
}
|
|
108
|
-
/**
|
|
109
|
-
* Parse parameters from URI based on pattern
|
|
110
|
-
* Example: pattern="github://repos/{owner}/{repo}", uri="github://repos/foo/bar"
|
|
111
|
-
* Returns: { owner: "foo", repo: "bar" }
|
|
112
|
-
*/
|
|
113
213
|
parseUriParams(pattern, uri) {
|
|
114
|
-
|
|
115
|
-
const paramNames = [];
|
|
116
|
-
const paramRegex = /\{([^}]+)\}/g;
|
|
117
|
-
let match;
|
|
118
|
-
while ((match = paramRegex.exec(pattern)) !== null) {
|
|
119
|
-
paramNames.push(match[1]);
|
|
120
|
-
}
|
|
121
|
-
const regexPattern = pattern.replace(/\{[^}]+\}/g, '([^/]+)');
|
|
122
|
-
const regex = new RegExp(`^${regexPattern}$`);
|
|
123
|
-
const values = uri.match(regex);
|
|
124
|
-
if (values) {
|
|
125
|
-
for (let i = 0; i < paramNames.length; i++) {
|
|
126
|
-
params[paramNames[i]] = values[i + 1];
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
return params;
|
|
214
|
+
return parseUriTemplateParams(pattern, uri);
|
|
130
215
|
}
|
|
131
216
|
// ─── MCP request handlers ──────────────────────────────────────────
|
|
132
217
|
handleListResources(mcp) {
|
|
@@ -380,19 +465,81 @@ export class ResourceServer {
|
|
|
380
465
|
var currentTheme = 'dark';
|
|
381
466
|
var injectedPhotons = ${JSON.stringify(injectedPhotons)};
|
|
382
467
|
|
|
468
|
+
// Transport discriminator (Track D1). The bridge runs in three contexts:
|
|
469
|
+
// 1. Inside a host iframe that speaks postMessage (Beam, Claude Apps).
|
|
470
|
+
// 2. Standalone browser tab (no host) — needs to use fetch.
|
|
471
|
+
// 3. Iframe inside a host that ignores us — also fetch.
|
|
472
|
+
// window.parent === window only catches the second case; (1) and (3) both
|
|
473
|
+
// have a parent, so we ping it with a hello and wait 200ms for an ack
|
|
474
|
+
// before committing to fetch. Hosts that want postMessage must reply
|
|
475
|
+
// with { type: 'photon:ack', id } within that window.
|
|
476
|
+
var transport = 'pending';
|
|
477
|
+
var resolveTransport;
|
|
478
|
+
var transportReady = new Promise(function(resolve) { resolveTransport = resolve; });
|
|
479
|
+
function settleTransport(t) {
|
|
480
|
+
if (transport === 'pending') {
|
|
481
|
+
transport = t;
|
|
482
|
+
resolveTransport(t);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
|
|
383
486
|
function generateCallId() {
|
|
384
487
|
return 'call_' + (++callIdCounter) + '_' + Math.random().toString(36).slice(2);
|
|
385
488
|
}
|
|
386
489
|
|
|
387
490
|
function postToHost(msg) {
|
|
388
|
-
window.parent.postMessage(msg, '*');
|
|
491
|
+
try { window.parent.postMessage(msg, '*'); } catch (e) { /* hostless */ }
|
|
389
492
|
}
|
|
390
493
|
|
|
494
|
+
function methodToKebab(s) {
|
|
495
|
+
return s
|
|
496
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1-$2')
|
|
497
|
+
.replace(/([A-Z]+)([A-Z][a-z])/g, '$1-$2')
|
|
498
|
+
.toLowerCase();
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
function fetchToolCall(name, args, opts) {
|
|
502
|
+
var a = args || {};
|
|
503
|
+
if (opts && opts.instance !== undefined) {
|
|
504
|
+
a = Object.assign({}, a, { _targetInstance: opts.instance });
|
|
505
|
+
}
|
|
506
|
+
return fetch('/api/' + methodToKebab(name), {
|
|
507
|
+
method: 'POST',
|
|
508
|
+
credentials: 'same-origin',
|
|
509
|
+
headers: {
|
|
510
|
+
'Content-Type': 'application/json',
|
|
511
|
+
'Accept': 'application/json'
|
|
512
|
+
},
|
|
513
|
+
body: JSON.stringify(a)
|
|
514
|
+
}).then(function(r) {
|
|
515
|
+
if (!r.ok) {
|
|
516
|
+
return r.text().then(function(text) {
|
|
517
|
+
throw new Error(text || ('HTTP ' + r.status));
|
|
518
|
+
});
|
|
519
|
+
}
|
|
520
|
+
var ct = r.headers.get('content-type') || '';
|
|
521
|
+
return ct.indexOf('application/json') >= 0 ? r.json() : r.text();
|
|
522
|
+
});
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
// Hello handshake. Standalone tabs (no host) silently drop the message;
|
|
526
|
+
// the timeout below guarantees we still flip to fetch.
|
|
527
|
+
postToHost({ type: 'photon:hello', id: 'init-' + Math.random().toString(36).slice(2) });
|
|
528
|
+
setTimeout(function() { settleTransport('fetch'); }, 200);
|
|
529
|
+
|
|
391
530
|
// Listen for messages from host
|
|
392
531
|
window.addEventListener('message', function(e) {
|
|
393
532
|
var m = e.data;
|
|
394
533
|
if (!m || typeof m !== 'object') return;
|
|
395
534
|
|
|
535
|
+
// Track D1 ack — host confirms postMessage transport. Accept the
|
|
536
|
+
// signal at any time (even after the 200ms window) so a slow but
|
|
537
|
+
// present host still wins over fetch on subsequent calls.
|
|
538
|
+
if (m.type === 'photon:ack') {
|
|
539
|
+
settleTransport('postmessage');
|
|
540
|
+
return;
|
|
541
|
+
}
|
|
542
|
+
|
|
396
543
|
// Handle JSON-RPC messages
|
|
397
544
|
if (m.jsonrpc === '2.0') {
|
|
398
545
|
// Response to our request (has id, no method)
|
|
@@ -510,23 +657,31 @@ export class ResourceServer {
|
|
|
510
657
|
};
|
|
511
658
|
},
|
|
512
659
|
callTool: function(name, args, opts) {
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
if (
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
setTimeout(function() {
|
|
525
|
-
if (pendingCalls[callId]) {
|
|
526
|
-
delete pendingCalls[callId];
|
|
527
|
-
reject(new Error('Tool call timeout'));
|
|
660
|
+
// Wait for the handshake to settle so the very first call routes
|
|
661
|
+
// correctly. Subsequent calls hit the resolved transport without
|
|
662
|
+
// an extra microtask.
|
|
663
|
+
return transportReady.then(function(t) {
|
|
664
|
+
if (t === 'fetch') return fetchToolCall(name, args, opts);
|
|
665
|
+
var callId = generateCallId();
|
|
666
|
+
return new Promise(function(resolve, reject) {
|
|
667
|
+
pendingCalls[callId] = { resolve: resolve, reject: reject };
|
|
668
|
+
var a = args || {};
|
|
669
|
+
if (opts && opts.instance !== undefined) {
|
|
670
|
+
a = Object.assign({}, a, { _targetInstance: opts.instance });
|
|
528
671
|
}
|
|
529
|
-
|
|
672
|
+
postToHost({
|
|
673
|
+
jsonrpc: '2.0',
|
|
674
|
+
id: callId,
|
|
675
|
+
method: 'tools/call',
|
|
676
|
+
params: { name: name, arguments: a }
|
|
677
|
+
});
|
|
678
|
+
setTimeout(function() {
|
|
679
|
+
if (pendingCalls[callId]) {
|
|
680
|
+
delete pendingCalls[callId];
|
|
681
|
+
reject(new Error('Tool call timeout'));
|
|
682
|
+
}
|
|
683
|
+
}, 30000);
|
|
684
|
+
});
|
|
530
685
|
});
|
|
531
686
|
},
|
|
532
687
|
invoke: function(name, args, opts) { return window.photon.callTool(name, args, opts); },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-server.js","sourceRoot":"","sources":["../src/resource-server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"resource-server.js","sourceRoot":"","sources":["../src/resource-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local Cloudflare runtime adapter for the new `Cloudflare` injection
|
|
3
|
+
* surface. Backs `private cf: Cloudflare` constructor params (and the
|
|
4
|
+
* forgiving auto-inject path for plain classes that reference
|
|
5
|
+
* `this.cf.*`) with a miniflare sandbox when a photon runs outside a
|
|
6
|
+
* deployed Worker.
|
|
7
|
+
*
|
|
8
|
+
* Auto-naming rule (single source of truth — `bindingNameFor`):
|
|
9
|
+
* cf.kv() → <photon>_kv
|
|
10
|
+
* cf.kv('x') → <photon>_x_kv
|
|
11
|
+
* cf.ai → AI (shared, single per Worker)
|
|
12
|
+
* cf.images → IMAGES (shared)
|
|
13
|
+
* cf.browser → BROWSER (shared)
|
|
14
|
+
*
|
|
15
|
+
* Photons no longer pick global binding names. The framework derives
|
|
16
|
+
* them from the photon name plus an optional qualifier so per-photon
|
|
17
|
+
* resources never collide.
|
|
18
|
+
*
|
|
19
|
+
* Boot is keyed off the `cf-usage-scanner` output: every literal
|
|
20
|
+
* qualifier the photon uses is configured in miniflare up front, so
|
|
21
|
+
* the first call to a binding doesn't pay a reconfigure cost. Dynamic
|
|
22
|
+
* qualifiers (`cf.kv(this.tenantId)`) only get the default binding
|
|
23
|
+
* unless the author lists overrides in `protected cfBindings`.
|
|
24
|
+
*
|
|
25
|
+
* Storage persists under `<baseDir>/.data/cf-sandbox/<photon>/` so
|
|
26
|
+
* state survives process restarts and matches the Phase A2 layout.
|
|
27
|
+
*/
|
|
28
|
+
import { type Cloudflare, type ScopedBindingCategory, type R2BucketLike, type KVNamespaceLike, type D1DatabaseLike, type QueueLike, type VectorizeIndexLike, type AiLike, type ImagesBindingLike, type FetcherLike } from '@portel/photon-core';
|
|
29
|
+
import { type CfUsage } from '../cf-usage-scanner.js';
|
|
30
|
+
/**
|
|
31
|
+
* Optional override layer. Most photons leave this empty — the
|
|
32
|
+
* auto-naming convention covers the common case. Authors set it when
|
|
33
|
+
* they need a binding to point at a pre-existing CF resource owned
|
|
34
|
+
* outside the photon (typically only matters at deploy time, not for
|
|
35
|
+
* the local sandbox).
|
|
36
|
+
*
|
|
37
|
+
* Schema mirrors the deploy-side override JSON (~/.photon/state/...).
|
|
38
|
+
* For local boot, we accept the same shape so a single
|
|
39
|
+
* `protected cfBindings` block round-trips through both layers.
|
|
40
|
+
*/
|
|
41
|
+
export interface CfOverrides {
|
|
42
|
+
/** Per-qualifier override of the resource name a binding points at. */
|
|
43
|
+
kv?: Record<string, string>;
|
|
44
|
+
r2?: Record<string, string>;
|
|
45
|
+
d1?: Record<string, string | {
|
|
46
|
+
name: string;
|
|
47
|
+
id: string;
|
|
48
|
+
}>;
|
|
49
|
+
queue?: Record<string, string>;
|
|
50
|
+
vectorize?: Record<string, string>;
|
|
51
|
+
}
|
|
52
|
+
export interface CFLocalRuntimeOptions {
|
|
53
|
+
photonName: string;
|
|
54
|
+
baseDir: string;
|
|
55
|
+
/**
|
|
56
|
+
* Static-analysis output from cf-usage-scanner. Determines which
|
|
57
|
+
* binding names miniflare boots with. When absent, only the
|
|
58
|
+
* default per-category binding is configured (callers that hit a
|
|
59
|
+
* qualified binding without source-scanning will get a clear miss
|
|
60
|
+
* error from miniflare).
|
|
61
|
+
*/
|
|
62
|
+
usage?: CfUsage;
|
|
63
|
+
/** Optional `protected cfBindings` override layer, see CfOverrides. */
|
|
64
|
+
overrides?: CfOverrides;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Legacy override schema. The Phase A2 release shipped `cfBindings`
|
|
68
|
+
* as a `Record<bindingName, resourceId>` declaration that doubled as
|
|
69
|
+
* a binding declaration. Under the new auto-naming model
|
|
70
|
+
* (bindingNameFor) the same shape becomes a pure override layer —
|
|
71
|
+
* authors who want to repoint a default binding at a pre-existing
|
|
72
|
+
* resource still write the same JSON. Kept exported so deploy code
|
|
73
|
+
* and the photon-cf CLI keep building during the migration.
|
|
74
|
+
*/
|
|
75
|
+
export type CfBindingsConfig = CfOverrides & {
|
|
76
|
+
ai?: boolean;
|
|
77
|
+
images?: boolean;
|
|
78
|
+
browser?: boolean;
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Merge two CfBindingsConfig blobs. Used by the deploy pipeline to
|
|
82
|
+
* stack a per-photon override JSON on top of in-source declarations.
|
|
83
|
+
* Boolean shared flags are last-write-wins; per-binding records merge
|
|
84
|
+
* key-by-key.
|
|
85
|
+
*/
|
|
86
|
+
export declare function mergeBindings(base: CfBindingsConfig | null | undefined, override: CfBindingsConfig | null | undefined): CfBindingsConfig;
|
|
87
|
+
export declare class CFLocalRuntime implements Cloudflare {
|
|
88
|
+
private mfPromise;
|
|
89
|
+
private readonly photonName;
|
|
90
|
+
private readonly baseDir;
|
|
91
|
+
private readonly usage;
|
|
92
|
+
private readonly overrides;
|
|
93
|
+
/**
|
|
94
|
+
* Legacy mode means the photon was constructed via the Phase-A2
|
|
95
|
+
* positional `(name, cfBindings, baseDir)` form. In that mode the
|
|
96
|
+
* `qualifier` arg passed to `cf.kv(...)` etc. is treated as a
|
|
97
|
+
* literal binding name (not run through `bindingNameFor`), and
|
|
98
|
+
* miniflare seeds the names declared in `overrides.<category>`.
|
|
99
|
+
* The new options-form constructor flips this to false and the
|
|
100
|
+
* auto-naming convention takes over.
|
|
101
|
+
*/
|
|
102
|
+
private readonly legacyMode;
|
|
103
|
+
private readonly legacyBooleanFlags;
|
|
104
|
+
/**
|
|
105
|
+
* New options-object form (preferred). Hosts that source-scan the
|
|
106
|
+
* photon for `Cloudflare` usage pass the scanner output as `usage`
|
|
107
|
+
* so miniflare seeds every literal-qualified binding upfront.
|
|
108
|
+
*/
|
|
109
|
+
constructor(opts: CFLocalRuntimeOptions);
|
|
110
|
+
/**
|
|
111
|
+
* Legacy positional form retained for the classic loader and
|
|
112
|
+
* existing CF-runtime tests. Translates the Phase-A2 `cfBindings`
|
|
113
|
+
* declaration to the new override schema; auto-naming is disabled
|
|
114
|
+
* (no usage scan) so explicit binding names take precedence over
|
|
115
|
+
* `<photon>_<category>` defaults. Callers should migrate to the
|
|
116
|
+
* options form when the demolition commit lands.
|
|
117
|
+
*
|
|
118
|
+
* @deprecated use the options-object constructor.
|
|
119
|
+
*/
|
|
120
|
+
constructor(photonName: string, bindings: CfBindingsConfig, baseDir: string);
|
|
121
|
+
/** Legacy alias retained for callers that built against the Phase-A2 API. */
|
|
122
|
+
getBindings(): CfBindingsConfig;
|
|
123
|
+
/** Inspector for tools/CLI: lists every binding miniflare seeded. */
|
|
124
|
+
getSeededBindings(): Record<ScopedBindingCategory, string[]>;
|
|
125
|
+
/**
|
|
126
|
+
* Resolve the miniflare binding name for a `cf.<cat>(qualifier?)`
|
|
127
|
+
* call. In auto-naming mode runs through `bindingNameFor`; in
|
|
128
|
+
* legacy mode treats the arg as a literal binding name (matching
|
|
129
|
+
* the Phase-A2 `cf.kv(name)` semantics).
|
|
130
|
+
*/
|
|
131
|
+
private resolveBindingName;
|
|
132
|
+
dispose(): Promise<void>;
|
|
133
|
+
kv(qualifier?: string): KVNamespaceLike;
|
|
134
|
+
r2(qualifier?: string): R2BucketLike;
|
|
135
|
+
d1(qualifier?: string): D1DatabaseLike;
|
|
136
|
+
queue<Body = unknown>(qualifier?: string): QueueLike<Body>;
|
|
137
|
+
vectorize(qualifier?: string): VectorizeIndexLike;
|
|
138
|
+
get ai(): AiLike;
|
|
139
|
+
get images(): ImagesBindingLike;
|
|
140
|
+
get browser(): FetcherLike;
|
|
141
|
+
fetch(_input: string, _init?: unknown): Promise<unknown>;
|
|
142
|
+
/** Lazily boot a Miniflare instance scoped to this photon. */
|
|
143
|
+
private getMiniflare;
|
|
144
|
+
/**
|
|
145
|
+
* Build a thin proxy whose methods defer to a binding fetched via
|
|
146
|
+
* `mf.getKVNamespace(name)` / `mf.getR2Bucket(name)` / etc on first
|
|
147
|
+
* invocation. Avoids paying the boot cost on cold paths.
|
|
148
|
+
*/
|
|
149
|
+
private scopedBinding;
|
|
150
|
+
/**
|
|
151
|
+
* Pull a binding off the miniflare-built env (for AI, Vectorize,
|
|
152
|
+
* Images — categories that surface as env props rather than via a
|
|
153
|
+
* dedicated `mf.getXxx(name)` accessor).
|
|
154
|
+
*/
|
|
155
|
+
private envBindingProxy;
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=cf-local.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cf-local.d.ts","sourceRoot":"","sources":["../../src/runtime/cf-local.ts"],"names":[],"mappings":"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"}
|