@portel/photon 1.19.0 → 1.20.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/dist/auto-ui/beam/routes/api-browse.d.ts.map +1 -1
- package/dist/auto-ui/beam/routes/api-browse.js +16 -4
- package/dist/auto-ui/beam/routes/api-browse.js.map +1 -1
- package/dist/auto-ui/beam/routes/api-config.js +4 -4
- 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 +14 -1
- package/dist/auto-ui/beam/routes/api-marketplace.js.map +1 -1
- package/dist/auto-ui/beam.d.ts.map +1 -1
- package/dist/auto-ui/beam.js +183 -74
- 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 +17 -0
- package/dist/auto-ui/bridge/index.js.map +1 -1
- package/dist/auto-ui/streamable-http-transport.d.ts +1 -0
- package/dist/auto-ui/streamable-http-transport.d.ts.map +1 -1
- package/dist/auto-ui/streamable-http-transport.js +64 -16
- package/dist/auto-ui/streamable-http-transport.js.map +1 -1
- package/dist/auto-ui/types.d.ts +12 -0
- package/dist/auto-ui/types.d.ts.map +1 -1
- package/dist/auto-ui/types.js.map +1 -1
- package/dist/beam-form.bundle.js +44 -3
- package/dist/beam-form.bundle.js.map +2 -2
- package/dist/beam.bundle.js +1404 -482
- package/dist/beam.bundle.js.map +4 -4
- package/dist/capability-negotiator.d.ts +67 -0
- package/dist/capability-negotiator.d.ts.map +1 -0
- package/dist/capability-negotiator.js +104 -0
- package/dist/capability-negotiator.js.map +1 -0
- package/dist/channel-manager.d.ts +122 -0
- package/dist/channel-manager.d.ts.map +1 -0
- package/dist/channel-manager.js +266 -0
- package/dist/channel-manager.js.map +1 -0
- package/dist/cli/commands/package.d.ts.map +1 -1
- package/dist/cli/commands/package.js +25 -7
- package/dist/cli/commands/package.js.map +1 -1
- package/dist/daemon/client.d.ts.map +1 -1
- package/dist/daemon/client.js +12 -0
- package/dist/daemon/client.js.map +1 -1
- package/dist/daemon/server.js +30 -49
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/worker-manager.d.ts.map +1 -1
- package/dist/daemon/worker-manager.js +21 -7
- package/dist/daemon/worker-manager.js.map +1 -1
- package/dist/loader.d.ts +4 -1
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +73 -11
- package/dist/loader.js.map +1 -1
- package/dist/marketplace-manager.d.ts +6 -0
- package/dist/marketplace-manager.d.ts.map +1 -1
- package/dist/marketplace-manager.js +161 -58
- package/dist/marketplace-manager.js.map +1 -1
- package/dist/namespace-migration.d.ts +1 -0
- package/dist/namespace-migration.d.ts.map +1 -1
- package/dist/namespace-migration.js +86 -0
- package/dist/namespace-migration.js.map +1 -1
- package/dist/resource-server.d.ts +105 -0
- package/dist/resource-server.d.ts.map +1 -0
- package/dist/resource-server.js +723 -0
- package/dist/resource-server.js.map +1 -0
- package/dist/serv/auth/jwt.d.ts +2 -0
- package/dist/serv/auth/jwt.d.ts.map +1 -1
- package/dist/serv/auth/jwt.js +11 -5
- package/dist/serv/auth/jwt.js.map +1 -1
- package/dist/serv/vault/token-vault.d.ts +2 -0
- package/dist/serv/vault/token-vault.d.ts.map +1 -1
- package/dist/serv/vault/token-vault.js +6 -0
- package/dist/serv/vault/token-vault.js.map +1 -1
- package/dist/server.d.ts +20 -149
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +232 -1217
- package/dist/server.js.map +1 -1
- package/dist/shared/audit.d.ts.map +1 -1
- package/dist/shared/audit.js +7 -0
- package/dist/shared/audit.js.map +1 -1
- package/dist/shared/security.d.ts +10 -0
- package/dist/shared/security.d.ts.map +1 -1
- package/dist/shared/security.js +27 -0
- package/dist/shared/security.js.map +1 -1
- package/dist/task-executor.d.ts +69 -0
- package/dist/task-executor.d.ts.map +1 -0
- package/dist/task-executor.js +182 -0
- package/dist/task-executor.js.map +1 -0
- package/dist/types/photon-instance.d.ts +50 -0
- package/dist/types/photon-instance.d.ts.map +1 -0
- package/dist/types/photon-instance.js +9 -0
- package/dist/types/photon-instance.js.map +1 -0
- package/dist/types/server-types.d.ts +61 -0
- package/dist/types/server-types.d.ts.map +1 -0
- package/dist/types/server-types.js +8 -0
- package/dist/types/server-types.js.map +1 -0
- package/package.json +2 -2
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Namespace Migration
|
|
3
3
|
*
|
|
4
4
|
* Migrates flat ~/.photon/*.photon.ts files into namespace subdirectories.
|
|
5
|
+
* Also cleans up legacy ~/.photon/local/ artifacts from older auto-symlink logic.
|
|
5
6
|
*
|
|
6
7
|
* Files with @forkedFrom metadata → move to author namespace
|
|
7
8
|
* Files without metadata → stay in root (local photons live at ~/.photon/ root)
|
|
@@ -13,6 +14,7 @@ import * as fsp from 'fs/promises';
|
|
|
13
14
|
import * as path from 'path';
|
|
14
15
|
import { getDefaultContext } from './context.js';
|
|
15
16
|
const SENTINEL = '.migrated';
|
|
17
|
+
const LEGACY_LOCAL_DIR = 'local';
|
|
16
18
|
/**
|
|
17
19
|
* Run the namespace migration if it hasn't been run yet.
|
|
18
20
|
* Safe to call on every startup — returns immediately if already migrated.
|
|
@@ -27,6 +29,7 @@ export async function runNamespaceMigration(baseDir) {
|
|
|
27
29
|
return;
|
|
28
30
|
}
|
|
29
31
|
const dir = baseDir || getDefaultContext().baseDir;
|
|
32
|
+
await cleanupLegacyLocalNamespace(dir);
|
|
30
33
|
const sentinelPath = path.join(dir, SENTINEL);
|
|
31
34
|
// Already migrated?
|
|
32
35
|
if (fs.existsSync(sentinelPath)) {
|
|
@@ -168,6 +171,89 @@ export async function runNamespaceMigration(baseDir) {
|
|
|
168
171
|
console.error(`[photon] Migrated ${migrated} photon(s) to namespace directories`);
|
|
169
172
|
}
|
|
170
173
|
}
|
|
174
|
+
async function cleanupLegacyLocalNamespace(baseDir) {
|
|
175
|
+
const localDir = path.join(baseDir, LEGACY_LOCAL_DIR);
|
|
176
|
+
let entries;
|
|
177
|
+
try {
|
|
178
|
+
entries = await fsp.readdir(localDir, { withFileTypes: true });
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
for (const entry of entries) {
|
|
184
|
+
const localPath = path.join(localDir, entry.name);
|
|
185
|
+
if (entry.isSymbolicLink()) {
|
|
186
|
+
await fsp.rm(localPath, { recursive: true, force: true });
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
if (entry.isDirectory()) {
|
|
190
|
+
continue;
|
|
191
|
+
}
|
|
192
|
+
if (!entry.isFile() || !entry.name.match(/\.photon\.(ts|js)$/)) {
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
const targetPath = path.join(baseDir, entry.name);
|
|
196
|
+
if (!(await pathExists(targetPath))) {
|
|
197
|
+
await fsp.rename(localPath, targetPath);
|
|
198
|
+
const photonName = entry.name.replace(/\.photon\.(ts|js)$/, '');
|
|
199
|
+
const localAssetDir = path.join(localDir, photonName);
|
|
200
|
+
const targetAssetDir = path.join(baseDir, photonName);
|
|
201
|
+
if (await pathExists(localAssetDir)) {
|
|
202
|
+
await moveDirectoryIfPossible(localAssetDir, targetAssetDir);
|
|
203
|
+
}
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
if (await filesMatch(localPath, targetPath)) {
|
|
207
|
+
await fsp.rm(localPath, { force: true });
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
if (await isDirectoryEmpty(localDir)) {
|
|
211
|
+
await fsp.rm(localDir, { recursive: true, force: true });
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
async function moveDirectoryIfPossible(sourceDir, targetDir) {
|
|
215
|
+
const sourceStat = await fsp.lstat(sourceDir).catch(() => null);
|
|
216
|
+
if (!sourceStat)
|
|
217
|
+
return;
|
|
218
|
+
if (sourceStat.isSymbolicLink()) {
|
|
219
|
+
await fsp.rm(sourceDir, { recursive: true, force: true });
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
if (!sourceStat.isDirectory()) {
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
if (await pathExists(targetDir)) {
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
await fsp.rename(sourceDir, targetDir);
|
|
229
|
+
}
|
|
230
|
+
async function pathExists(targetPath) {
|
|
231
|
+
try {
|
|
232
|
+
await fsp.lstat(targetPath);
|
|
233
|
+
return true;
|
|
234
|
+
}
|
|
235
|
+
catch {
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
async function filesMatch(a, b) {
|
|
240
|
+
try {
|
|
241
|
+
const [aContent, bContent] = await Promise.all([fsp.readFile(a), fsp.readFile(b)]);
|
|
242
|
+
return aContent.equals(bContent);
|
|
243
|
+
}
|
|
244
|
+
catch {
|
|
245
|
+
return false;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
async function isDirectoryEmpty(dir) {
|
|
249
|
+
try {
|
|
250
|
+
const entries = await fsp.readdir(dir);
|
|
251
|
+
return entries.length === 0;
|
|
252
|
+
}
|
|
253
|
+
catch {
|
|
254
|
+
return false;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
171
257
|
async function writeSentinel(sentinelPath) {
|
|
172
258
|
try {
|
|
173
259
|
await fsp.writeFile(sentinelPath, JSON.stringify({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namespace-migration.js","sourceRoot":"","sources":["../src/namespace-migration.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"namespace-migration.js","sourceRoot":"","sources":["../src/namespace-migration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ResourceServer — extracted from PhotonServer
|
|
3
|
+
*
|
|
4
|
+
* Encapsulates all MCP resource handling:
|
|
5
|
+
* - ListResources, ListResourceTemplates, ReadResource handlers
|
|
6
|
+
* - UI resource URI resolution (ui:// and photon:// schemes)
|
|
7
|
+
* - Icon image resolution (file → data URI)
|
|
8
|
+
* - Asset serving (UI HTML, prompts, static resources)
|
|
9
|
+
* - MCP Apps bridge script generation for Claude Desktop compatibility
|
|
10
|
+
*
|
|
11
|
+
* Dependency direction: PhotonServer → ResourceServer (never the reverse).
|
|
12
|
+
*/
|
|
13
|
+
import type { PhotonClassExtended } from '@portel/photon-core';
|
|
14
|
+
/** Minimal interface for executing tool calls — avoids importing PhotonLoader */
|
|
15
|
+
export interface ResourceToolExecutor {
|
|
16
|
+
executeTool(photon: PhotonClassExtended, toolName: string, args: Record<string, unknown>): Promise<any>;
|
|
17
|
+
getLoadedPhotons(): Map<string, PhotonClassExtended>;
|
|
18
|
+
}
|
|
19
|
+
/** Minimal options subset needed by ResourceServer */
|
|
20
|
+
export interface ResourceServerOptions {
|
|
21
|
+
filePath: string;
|
|
22
|
+
embeddedAssets?: {
|
|
23
|
+
indexHtml: string;
|
|
24
|
+
bundleJs: string;
|
|
25
|
+
};
|
|
26
|
+
embeddedUITemplates?: Record<string, Record<string, string>>;
|
|
27
|
+
}
|
|
28
|
+
export declare class ResourceServer {
|
|
29
|
+
private toolExecutor;
|
|
30
|
+
private options;
|
|
31
|
+
private static readonly ICON_MIME_TYPES;
|
|
32
|
+
/** Cached resolved icons per tool name */
|
|
33
|
+
private resolvedIconsCache;
|
|
34
|
+
constructor(toolExecutor: ResourceToolExecutor, options: ResourceServerOptions);
|
|
35
|
+
/**
|
|
36
|
+
* Build UI resource URI based on detected format
|
|
37
|
+
*/
|
|
38
|
+
buildUIResourceUri(photonName: string, uiId: string): string;
|
|
39
|
+
/**
|
|
40
|
+
* Build tool metadata for UI based on detected format
|
|
41
|
+
*/
|
|
42
|
+
buildUIToolMeta(photonName: string, uiId: string): Record<string, unknown>;
|
|
43
|
+
/**
|
|
44
|
+
* Get UI mimeType based on detected format and client capabilities
|
|
45
|
+
*/
|
|
46
|
+
getUIMimeType(): string;
|
|
47
|
+
/**
|
|
48
|
+
* Resolve raw icon image paths to MCP Icon[] format (data URIs).
|
|
49
|
+
* Results are cached so file I/O only happens once per tool.
|
|
50
|
+
*/
|
|
51
|
+
resolveIconImages(iconImages: Array<{
|
|
52
|
+
path: string;
|
|
53
|
+
sizes?: string;
|
|
54
|
+
theme?: string;
|
|
55
|
+
}>): Array<{
|
|
56
|
+
src: string;
|
|
57
|
+
mimeType?: string;
|
|
58
|
+
sizes?: string;
|
|
59
|
+
theme?: string;
|
|
60
|
+
}>;
|
|
61
|
+
/**
|
|
62
|
+
* Check if a URI is a template (contains {parameters})
|
|
63
|
+
*/
|
|
64
|
+
isUriTemplate(uri: string): boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Match URI pattern with actual URI
|
|
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;
|
|
76
|
+
handleListResources(mcp: PhotonClassExtended | null): {
|
|
77
|
+
resources: any[];
|
|
78
|
+
};
|
|
79
|
+
handleListResourceTemplates(mcp: PhotonClassExtended | null): {
|
|
80
|
+
resourceTemplates: any[];
|
|
81
|
+
};
|
|
82
|
+
handleReadResource(request: any, mcp: PhotonClassExtended | null): Promise<any>;
|
|
83
|
+
/**
|
|
84
|
+
* Handle SEP-1865 ui:// resource read
|
|
85
|
+
*/
|
|
86
|
+
private handleUIAssetRead;
|
|
87
|
+
/**
|
|
88
|
+
* Handle photon:// asset read (Beam format)
|
|
89
|
+
*/
|
|
90
|
+
private handleAssetRead;
|
|
91
|
+
/**
|
|
92
|
+
* Handle static resource read (for both stdio and SSE handlers)
|
|
93
|
+
*/
|
|
94
|
+
private handleStaticRead;
|
|
95
|
+
/**
|
|
96
|
+
* Format static result to MCP resource response
|
|
97
|
+
*/
|
|
98
|
+
private formatStaticResult;
|
|
99
|
+
/**
|
|
100
|
+
* Generate minimal MCP Apps bridge script for Claude Desktop compatibility
|
|
101
|
+
* This handles the ui/initialize handshake and tool result delivery
|
|
102
|
+
*/
|
|
103
|
+
generateMcpAppsBridge(mcp: PhotonClassExtended | null): string;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=resource-server.d.ts.map
|
|
@@ -0,0 +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;CAC9D;AAED,qBAAa,cAAc;IAkBvB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,OAAO;IAlBjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAQrC;IAEF,0CAA0C;IAC1C,OAAO,CAAC,kBAAkB,CAGtB;gBAGM,YAAY,EAAE,oBAAoB,EAClC,OAAO,EAAE,qBAAqB;IAKxC;;OAEG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAI5D;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAK1E;;OAEG;IACH,aAAa,IAAI,MAAM;IAMvB;;;OAGG;IACH,iBAAiB,CACf,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAClE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAoC5E;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAInC;;;OAGG;IACH,OAAO,CAAC,eAAe;IAMvB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAyBtB,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI,GAAG;QAAE,SAAS,EAAE,GAAG,EAAE,CAAA;KAAE;IA2E1E,2BAA2B,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI,GAAG;QAAE,iBAAiB,EAAE,GAAG,EAAE,CAAA;KAAE;IAiBpF,kBAAkB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,mBAAmB,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC;IA2CrF;;OAEG;YACW,iBAAiB;IAgD/B;;OAEG;YACW,eAAe;IA+C7B;;OAEG;YACW,gBAAgB;IAW9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAe1B;;;OAGG;IACH,qBAAqB,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI,GAAG,MAAM;CA4W/D"}
|