@portel/photon 1.9.0 → 1.10.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 +163 -210
- package/dist/async/dedup-map.d.ts +40 -0
- package/dist/async/dedup-map.d.ts.map +1 -0
- package/dist/async/dedup-map.js +80 -0
- package/dist/async/dedup-map.js.map +1 -0
- package/dist/async/index.d.ts +11 -0
- package/dist/async/index.d.ts.map +1 -0
- package/dist/async/index.js +11 -0
- package/dist/async/index.js.map +1 -0
- package/dist/async/loading-gate.d.ts +27 -0
- package/dist/async/loading-gate.d.ts.map +1 -0
- package/dist/async/loading-gate.js +48 -0
- package/dist/async/loading-gate.js.map +1 -0
- package/dist/async/with-timeout.d.ts +6 -0
- package/dist/async/with-timeout.d.ts.map +1 -0
- package/dist/async/with-timeout.js +17 -0
- package/dist/async/with-timeout.js.map +1 -0
- package/dist/auto-ui/beam/class-metadata.d.ts +52 -0
- package/dist/auto-ui/beam/class-metadata.d.ts.map +1 -0
- package/dist/auto-ui/beam/class-metadata.js +133 -0
- package/dist/auto-ui/beam/class-metadata.js.map +1 -0
- package/dist/auto-ui/beam/config.d.ts +13 -0
- package/dist/auto-ui/beam/config.d.ts.map +1 -0
- package/dist/auto-ui/beam/config.js +52 -0
- package/dist/auto-ui/beam/config.js.map +1 -0
- package/dist/auto-ui/beam/external-mcp.d.ts +37 -0
- package/dist/auto-ui/beam/external-mcp.d.ts.map +1 -0
- package/dist/auto-ui/beam/external-mcp.js +311 -0
- package/dist/auto-ui/beam/external-mcp.js.map +1 -0
- package/dist/auto-ui/beam/photon-management.d.ts +51 -0
- package/dist/auto-ui/beam/photon-management.d.ts.map +1 -0
- package/dist/auto-ui/beam/photon-management.js +310 -0
- package/dist/auto-ui/beam/photon-management.js.map +1 -0
- package/dist/auto-ui/beam/routes/api-browse.d.ts +17 -0
- package/dist/auto-ui/beam/routes/api-browse.d.ts.map +1 -0
- package/dist/auto-ui/beam/routes/api-browse.js +531 -0
- package/dist/auto-ui/beam/routes/api-browse.js.map +1 -0
- package/dist/auto-ui/beam/routes/api-config.d.ts +9 -0
- package/dist/auto-ui/beam/routes/api-config.d.ts.map +1 -0
- package/dist/auto-ui/beam/routes/api-config.js +494 -0
- package/dist/auto-ui/beam/routes/api-config.js.map +1 -0
- package/dist/auto-ui/beam/routes/api-marketplace.d.ts +8 -0
- package/dist/auto-ui/beam/routes/api-marketplace.d.ts.map +1 -0
- package/dist/auto-ui/beam/routes/api-marketplace.js +490 -0
- package/dist/auto-ui/beam/routes/api-marketplace.js.map +1 -0
- package/dist/auto-ui/beam/startup.d.ts +41 -0
- package/dist/auto-ui/beam/startup.d.ts.map +1 -0
- package/dist/auto-ui/beam/startup.js +98 -0
- package/dist/auto-ui/beam/startup.js.map +1 -0
- package/dist/auto-ui/beam/subscription.d.ts +35 -0
- package/dist/auto-ui/beam/subscription.d.ts.map +1 -0
- package/dist/auto-ui/beam/subscription.js +151 -0
- package/dist/auto-ui/beam/subscription.js.map +1 -0
- package/dist/auto-ui/beam/types.d.ts +103 -0
- package/dist/auto-ui/beam/types.d.ts.map +1 -0
- package/dist/auto-ui/beam/types.js +8 -0
- package/dist/auto-ui/beam/types.js.map +1 -0
- package/dist/auto-ui/beam.d.ts +2 -0
- package/dist/auto-ui/beam.d.ts.map +1 -1
- package/dist/auto-ui/beam.js +729 -2596
- 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 +10 -2
- package/dist/auto-ui/bridge/index.js.map +1 -1
- package/dist/auto-ui/components/card.d.ts.map +1 -1
- package/dist/auto-ui/components/card.js +3 -1
- package/dist/auto-ui/components/card.js.map +1 -1
- package/dist/auto-ui/components/progress.d.ts.map +1 -1
- package/dist/auto-ui/components/progress.js.map +1 -1
- package/dist/auto-ui/daemon-tools.d.ts +1 -1
- package/dist/auto-ui/daemon-tools.d.ts.map +1 -1
- package/dist/auto-ui/daemon-tools.js +4 -3
- package/dist/auto-ui/daemon-tools.js.map +1 -1
- package/dist/auto-ui/photon-bridge.d.ts +6 -2
- package/dist/auto-ui/photon-bridge.d.ts.map +1 -1
- package/dist/auto-ui/photon-bridge.js +20 -8
- package/dist/auto-ui/photon-bridge.js.map +1 -1
- package/dist/auto-ui/platform-compat.d.ts.map +1 -1
- package/dist/auto-ui/platform-compat.js +4 -0
- package/dist/auto-ui/platform-compat.js.map +1 -1
- package/dist/auto-ui/streamable-http-transport.d.ts +4 -2
- package/dist/auto-ui/streamable-http-transport.d.ts.map +1 -1
- package/dist/auto-ui/streamable-http-transport.js +120 -30
- package/dist/auto-ui/streamable-http-transport.js.map +1 -1
- package/dist/auto-ui/types.d.ts +4 -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 +8225 -3999
- package/dist/beam.bundle.js.map +4 -4
- package/dist/cli/commands/alias.d.ts +14 -0
- package/dist/cli/commands/alias.d.ts.map +1 -0
- package/dist/cli/commands/alias.js +41 -0
- package/dist/cli/commands/alias.js.map +1 -0
- package/dist/cli/commands/audit.d.ts +9 -0
- package/dist/cli/commands/audit.d.ts.map +1 -0
- package/dist/cli/commands/audit.js +377 -0
- package/dist/cli/commands/audit.js.map +1 -0
- package/dist/cli/commands/beam.d.ts +20 -0
- package/dist/cli/commands/beam.d.ts.map +1 -0
- package/dist/cli/commands/beam.js +256 -0
- package/dist/cli/commands/beam.js.map +1 -0
- package/dist/cli/commands/config.d.ts +14 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +165 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/daemon.d.ts +11 -0
- package/dist/cli/commands/daemon.d.ts.map +1 -0
- package/dist/cli/commands/daemon.js +108 -0
- package/dist/cli/commands/daemon.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +14 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +257 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/host.d.ts +11 -0
- package/dist/cli/commands/host.d.ts.map +1 -0
- package/dist/cli/commands/host.js +96 -0
- package/dist/cli/commands/host.js.map +1 -0
- package/dist/cli/commands/info.d.ts +1 -1
- package/dist/cli/commands/info.d.ts.map +1 -1
- package/dist/cli/commands/info.js +16 -15
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/cli/commands/init.d.ts +20 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +774 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/maker.d.ts +12 -0
- package/dist/cli/commands/maker.d.ts.map +1 -0
- package/dist/cli/commands/maker.js +605 -0
- package/dist/cli/commands/maker.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +27 -0
- package/dist/cli/commands/mcp.d.ts.map +1 -0
- package/dist/cli/commands/mcp.js +390 -0
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/commands/package-app.d.ts +1 -1
- package/dist/cli/commands/package-app.d.ts.map +1 -1
- package/dist/cli/commands/package-app.js +5 -4
- package/dist/cli/commands/package-app.js.map +1 -1
- package/dist/cli/commands/package.d.ts +1 -1
- package/dist/cli/commands/package.d.ts.map +1 -1
- package/dist/cli/commands/package.js +134 -32
- package/dist/cli/commands/package.js.map +1 -1
- package/dist/cli/commands/run.d.ts +34 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +334 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/search.d.ts +11 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +60 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +11 -0
- package/dist/cli/commands/serve.d.ts.map +1 -0
- package/dist/cli/commands/serve.js +138 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/test.d.ts +14 -0
- package/dist/cli/commands/test.d.ts.map +1 -0
- package/dist/cli/commands/test.js +51 -0
- package/dist/cli/commands/test.js.map +1 -0
- package/dist/cli/commands/update.d.ts +11 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +72 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/index.d.ts +14 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +139 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli-alias.js +2 -2
- package/dist/cli-alias.js.map +1 -1
- package/dist/cli.d.ts +3 -16
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +4 -2725
- package/dist/cli.js.map +1 -1
- package/dist/context-store.d.ts +13 -12
- package/dist/context-store.d.ts.map +1 -1
- package/dist/context-store.js +47 -23
- package/dist/context-store.js.map +1 -1
- package/dist/context.d.ts +35 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +38 -0
- package/dist/context.js.map +1 -0
- package/dist/daemon/client.d.ts +25 -13
- package/dist/daemon/client.d.ts.map +1 -1
- package/dist/daemon/client.js +183 -135
- package/dist/daemon/client.js.map +1 -1
- package/dist/daemon/manager.d.ts +58 -26
- package/dist/daemon/manager.d.ts.map +1 -1
- package/dist/daemon/manager.js +348 -157
- package/dist/daemon/manager.js.map +1 -1
- package/dist/daemon/protocol.d.ts +9 -3
- package/dist/daemon/protocol.d.ts.map +1 -1
- package/dist/daemon/protocol.js +2 -0
- package/dist/daemon/protocol.js.map +1 -1
- package/dist/daemon/server.js +850 -200
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/session-manager.d.ts +16 -2
- package/dist/daemon/session-manager.d.ts.map +1 -1
- package/dist/daemon/session-manager.js +65 -7
- package/dist/daemon/session-manager.js.map +1 -1
- package/dist/daemon/state-machine.d.ts +22 -0
- package/dist/daemon/state-machine.d.ts.map +1 -0
- package/dist/daemon/state-machine.js +48 -0
- package/dist/daemon/state-machine.js.map +1 -0
- package/dist/deploy/cloudflare.d.ts.map +1 -1
- package/dist/deploy/cloudflare.js +5 -5
- package/dist/deploy/cloudflare.js.map +1 -1
- package/dist/loader.d.ts +65 -7
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +587 -63
- package/dist/loader.js.map +1 -1
- package/dist/marketplace-manager.d.ts +84 -12
- package/dist/marketplace-manager.d.ts.map +1 -1
- package/dist/marketplace-manager.js +470 -26
- package/dist/marketplace-manager.js.map +1 -1
- package/dist/path-resolver.d.ts +3 -1
- package/dist/path-resolver.d.ts.map +1 -1
- package/dist/path-resolver.js +4 -3
- package/dist/path-resolver.js.map +1 -1
- package/dist/photon-cli-runner.d.ts +1 -1
- package/dist/photon-cli-runner.d.ts.map +1 -1
- package/dist/photon-cli-runner.js +34 -44
- package/dist/photon-cli-runner.js.map +1 -1
- package/dist/photon-doc-extractor.d.ts +1 -0
- package/dist/photon-doc-extractor.d.ts.map +1 -1
- package/dist/photon-doc-extractor.js +33 -12
- package/dist/photon-doc-extractor.js.map +1 -1
- package/dist/photons/maker.photon.d.ts.map +1 -1
- package/dist/photons/maker.photon.js +4 -4
- package/dist/photons/maker.photon.js.map +1 -1
- package/dist/photons/maker.photon.ts +4 -3
- package/dist/photons/marketplace.photon.d.ts.map +1 -1
- package/dist/photons/marketplace.photon.js +10 -27
- package/dist/photons/marketplace.photon.js.map +1 -1
- package/dist/photons/marketplace.photon.ts +14 -33
- package/dist/photons/tunnel.photon.d.ts.map +1 -1
- package/dist/photons/tunnel.photon.js +4 -8
- package/dist/photons/tunnel.photon.js.map +1 -1
- package/dist/photons/tunnel.photon.ts +4 -7
- package/dist/serv/session/kv-store.d.ts +1 -1
- package/dist/serv/session/kv-store.d.ts.map +1 -1
- package/dist/serv/session/store.d.ts.map +1 -1
- package/dist/serv/session/store.js +16 -14
- package/dist/serv/session/store.js.map +1 -1
- package/dist/serv/vault/token-vault.js +1 -1
- package/dist/serv/vault/token-vault.js.map +1 -1
- package/dist/server.d.ts +34 -12
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +364 -313
- package/dist/server.js.map +1 -1
- package/dist/shared/audit.d.ts +30 -0
- package/dist/shared/audit.d.ts.map +1 -0
- package/dist/shared/audit.js +89 -0
- package/dist/shared/audit.js.map +1 -0
- package/dist/shared/cli-sections.d.ts +0 -4
- package/dist/shared/cli-sections.d.ts.map +1 -1
- package/dist/shared/cli-sections.js +0 -6
- package/dist/shared/cli-sections.js.map +1 -1
- package/dist/shared/cli-utils.d.ts +2 -56
- package/dist/shared/cli-utils.d.ts.map +1 -1
- package/dist/shared/cli-utils.js +1 -87
- package/dist/shared/cli-utils.js.map +1 -1
- package/dist/shared/error-handler.d.ts +6 -72
- package/dist/shared/error-handler.d.ts.map +1 -1
- package/dist/shared/error-handler.js +22 -213
- package/dist/shared/error-handler.js.map +1 -1
- package/dist/shared/security.d.ts +0 -9
- package/dist/shared/security.d.ts.map +1 -1
- package/dist/shared/security.js +0 -30
- package/dist/shared/security.js.map +1 -1
- package/dist/shared-utils.d.ts +0 -26
- package/dist/shared-utils.d.ts.map +1 -1
- package/dist/shared-utils.js +0 -44
- package/dist/shared-utils.js.map +1 -1
- package/dist/shell-completions.d.ts +1 -1
- package/dist/shell-completions.d.ts.map +1 -1
- package/dist/shell-completions.js +5 -5
- package/dist/shell-completions.js.map +1 -1
- package/dist/template-manager.d.ts.map +1 -1
- package/dist/template-manager.js +14 -1
- package/dist/template-manager.js.map +1 -1
- package/dist/test-runner.d.ts +0 -12
- package/dist/test-runner.d.ts.map +1 -1
- package/dist/test-runner.js +4 -39
- package/dist/test-runner.js.map +1 -1
- package/dist/testing.d.ts +1 -1
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +2 -2
- package/dist/testing.js.map +1 -1
- package/dist/version-checker.d.ts +4 -4
- package/dist/version-checker.d.ts.map +1 -1
- package/dist/version-checker.js +33 -4
- package/dist/version-checker.js.map +1 -1
- package/dist/watcher.d.ts.map +1 -1
- package/dist/watcher.js +14 -12
- package/dist/watcher.js.map +1 -1
- package/package.json +24 -17
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Photon management operations — configure, reload, remove, update metadata, generate docs.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from beam.ts. All functions take explicit parameters
|
|
5
|
+
* rather than relying on closure-captured state.
|
|
6
|
+
*/
|
|
7
|
+
import * as fs from 'fs/promises';
|
|
8
|
+
import * as path from 'path';
|
|
9
|
+
import { createHash } from 'crypto';
|
|
10
|
+
import { SchemaExtractor } from '@portel/photon-core';
|
|
11
|
+
import { PhotonDocExtractor } from '../../photon-doc-extractor.js';
|
|
12
|
+
import { TemplateManager } from '../../template-manager.js';
|
|
13
|
+
import { toEnvVarName } from '../../shared/config-docs.js';
|
|
14
|
+
import { logger } from '../../shared/logger.js';
|
|
15
|
+
import { broadcastNotification, broadcastToBeam } from '../streamable-http-transport.js';
|
|
16
|
+
import { applyMethodVisibility, extractClassMetadataFromSource, backfillEnvDefaults, } from './class-metadata.js';
|
|
17
|
+
import { saveConfig } from './config.js';
|
|
18
|
+
function generatePhotonId(photonPath) {
|
|
19
|
+
return createHash('sha256').update(photonPath).digest('hex').slice(0, 12);
|
|
20
|
+
}
|
|
21
|
+
/** Build MethodInfo[] from extracted schemas + templates + source */
|
|
22
|
+
function buildMethodList(schemas, templates, source, uiAssets) {
|
|
23
|
+
const lifecycleMethods = ['onInitialize', 'onShutdown', 'constructor'];
|
|
24
|
+
const methods = schemas
|
|
25
|
+
.filter((schema) => !lifecycleMethods.includes(schema.name))
|
|
26
|
+
.map((schema) => {
|
|
27
|
+
const linkedAsset = uiAssets.find((ui) => ui.linkedTool === schema.name);
|
|
28
|
+
return {
|
|
29
|
+
name: schema.name,
|
|
30
|
+
description: schema.description || '',
|
|
31
|
+
params: schema.inputSchema || { type: 'object', properties: {}, required: [] },
|
|
32
|
+
returns: { type: 'object' },
|
|
33
|
+
autorun: schema.autorun || false,
|
|
34
|
+
outputFormat: schema.outputFormat,
|
|
35
|
+
layoutHints: schema.layoutHints,
|
|
36
|
+
buttonLabel: schema.buttonLabel,
|
|
37
|
+
icon: schema.icon,
|
|
38
|
+
linkedUi: linkedAsset?.id,
|
|
39
|
+
scheduled: schema.scheduled,
|
|
40
|
+
};
|
|
41
|
+
});
|
|
42
|
+
templates.forEach((template) => {
|
|
43
|
+
if (!lifecycleMethods.includes(template.name)) {
|
|
44
|
+
methods.push({
|
|
45
|
+
name: template.name,
|
|
46
|
+
description: template.description || '',
|
|
47
|
+
params: template.inputSchema || { type: 'object', properties: {}, required: [] },
|
|
48
|
+
returns: { type: 'object' },
|
|
49
|
+
isTemplate: true,
|
|
50
|
+
outputFormat: 'markdown',
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
applyMethodVisibility(source, methods);
|
|
55
|
+
return methods;
|
|
56
|
+
}
|
|
57
|
+
/** Extract constructor params as ConfigParam[] */
|
|
58
|
+
function extractConfigParams(extractor, source, photonName) {
|
|
59
|
+
try {
|
|
60
|
+
const params = extractor.extractConstructorParams(source);
|
|
61
|
+
return params
|
|
62
|
+
.filter((p) => p.isPrimitive)
|
|
63
|
+
.map((p) => ({
|
|
64
|
+
name: p.name,
|
|
65
|
+
envVar: toEnvVarName(photonName, p.name),
|
|
66
|
+
type: p.type,
|
|
67
|
+
isOptional: p.isOptional,
|
|
68
|
+
hasDefault: p.hasDefault,
|
|
69
|
+
defaultValue: p.defaultValue,
|
|
70
|
+
}));
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return [];
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Configure a photon via MCP — apply env vars, save config, reload.
|
|
78
|
+
*/
|
|
79
|
+
export async function configurePhotonViaMCP(photonName, config, photons, photonMCPs, loader, savedConfig, workingDir, activeLoads) {
|
|
80
|
+
const photonIndex = photons.findIndex((p) => p.name === photonName);
|
|
81
|
+
if (photonIndex === -1) {
|
|
82
|
+
return { success: false, error: `Photon not found: ${photonName}` };
|
|
83
|
+
}
|
|
84
|
+
if (activeLoads?.has(photonName)) {
|
|
85
|
+
return {
|
|
86
|
+
success: false,
|
|
87
|
+
error: `${photonName} is currently being reloaded — try again shortly`,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
activeLoads?.add(photonName);
|
|
91
|
+
for (const [key, value] of Object.entries(config)) {
|
|
92
|
+
process.env[key] = String(value);
|
|
93
|
+
}
|
|
94
|
+
savedConfig.photons[photonName] = { ...(savedConfig.photons[photonName] || {}), ...config };
|
|
95
|
+
await saveConfig(savedConfig, workingDir);
|
|
96
|
+
const targetPhoton = photons[photonIndex];
|
|
97
|
+
const isReconfigure = targetPhoton.configured === true;
|
|
98
|
+
try {
|
|
99
|
+
const mcp = isReconfigure
|
|
100
|
+
? await loader.reloadFile(targetPhoton.path)
|
|
101
|
+
: await loader.loadFile(targetPhoton.path);
|
|
102
|
+
const instance = mcp.instance;
|
|
103
|
+
if (!instance) {
|
|
104
|
+
throw new Error('Failed to create instance');
|
|
105
|
+
}
|
|
106
|
+
photonMCPs.set(photonName, mcp);
|
|
107
|
+
backfillEnvDefaults(instance, targetPhoton.requiredParams || []);
|
|
108
|
+
const extractor = new SchemaExtractor();
|
|
109
|
+
const configSource = await fs.readFile(targetPhoton.path, 'utf-8');
|
|
110
|
+
const { tools: schemas, templates } = extractor.extractAllFromSource(configSource);
|
|
111
|
+
mcp.schemas = schemas;
|
|
112
|
+
const uiAssets = mcp.assets?.ui || [];
|
|
113
|
+
const methods = buildMethodList(schemas, templates, configSource, uiAssets);
|
|
114
|
+
const mainMethod = methods.find((m) => m.name === 'main' && m.linkedUi);
|
|
115
|
+
const configuredPhoton = {
|
|
116
|
+
id: generatePhotonId(targetPhoton.path),
|
|
117
|
+
name: photonName,
|
|
118
|
+
path: targetPhoton.path,
|
|
119
|
+
configured: true,
|
|
120
|
+
methods,
|
|
121
|
+
isApp: !!mainMethod,
|
|
122
|
+
appEntry: mainMethod,
|
|
123
|
+
assets: mcp.assets,
|
|
124
|
+
...(mcp.injectedPhotons &&
|
|
125
|
+
mcp.injectedPhotons.length > 0 && { injectedPhotons: mcp.injectedPhotons }),
|
|
126
|
+
};
|
|
127
|
+
// Re-find index — array may have shifted during the async work above
|
|
128
|
+
const currentIndex = photons.findIndex((p) => p.name === photonName);
|
|
129
|
+
if (currentIndex === -1) {
|
|
130
|
+
activeLoads?.delete(photonName);
|
|
131
|
+
return { success: false, error: `${photonName} was removed during configuration` };
|
|
132
|
+
}
|
|
133
|
+
photons[currentIndex] = configuredPhoton;
|
|
134
|
+
activeLoads?.delete(photonName);
|
|
135
|
+
logger.info(`✅ ${photonName} configured via MCP`);
|
|
136
|
+
broadcastNotification('notifications/tools/list_changed', {});
|
|
137
|
+
broadcastToBeam('beam/configured', { photon: configuredPhoton });
|
|
138
|
+
return { success: true };
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
activeLoads?.delete(photonName);
|
|
142
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
143
|
+
logger.error(`Failed to configure ${photonName} via MCP: ${errorMsg}`);
|
|
144
|
+
return { success: false, error: errorMsg };
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Reload a photon via MCP — re-read source, rebuild methods, update in-place.
|
|
149
|
+
*/
|
|
150
|
+
export async function reloadPhotonViaMCP(photonName, photons, photonMCPs, loader, savedConfig, broadcastChange, activeLoads) {
|
|
151
|
+
const photonIndex = photons.findIndex((p) => p.name === photonName);
|
|
152
|
+
if (photonIndex === -1) {
|
|
153
|
+
return { success: false, error: `Photon not found: ${photonName}` };
|
|
154
|
+
}
|
|
155
|
+
if (activeLoads?.has(photonName)) {
|
|
156
|
+
return {
|
|
157
|
+
success: false,
|
|
158
|
+
error: `${photonName} is currently being reloaded — try again shortly`,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
activeLoads?.add(photonName);
|
|
162
|
+
const photon = photons[photonIndex];
|
|
163
|
+
const photonPath = photon.path;
|
|
164
|
+
const config = savedConfig.photons[photonName] || {};
|
|
165
|
+
for (const [key, value] of Object.entries(config)) {
|
|
166
|
+
process.env[key] = value;
|
|
167
|
+
}
|
|
168
|
+
try {
|
|
169
|
+
const mcp = await loader.reloadFile(photonPath);
|
|
170
|
+
const instance = mcp.instance;
|
|
171
|
+
if (!instance) {
|
|
172
|
+
throw new Error('Failed to create instance');
|
|
173
|
+
}
|
|
174
|
+
photonMCPs.set(photonName, mcp);
|
|
175
|
+
backfillEnvDefaults(instance, photon.requiredParams || []);
|
|
176
|
+
const extractor = new SchemaExtractor();
|
|
177
|
+
const reloadSrc = await fs.readFile(photonPath, 'utf-8');
|
|
178
|
+
const { tools: schemas, templates } = extractor.extractAllFromSource(reloadSrc);
|
|
179
|
+
mcp.schemas = schemas;
|
|
180
|
+
const uiAssets = mcp.assets?.ui || [];
|
|
181
|
+
const methods = buildMethodList(schemas, templates, reloadSrc, uiAssets);
|
|
182
|
+
const mainMethod = methods.find((m) => m.name === 'main' && m.linkedUi);
|
|
183
|
+
const reloadClassMeta = extractClassMetadataFromSource(reloadSrc);
|
|
184
|
+
const reloadedPhoton = {
|
|
185
|
+
id: generatePhotonId(photonPath),
|
|
186
|
+
name: photonName,
|
|
187
|
+
path: photonPath,
|
|
188
|
+
configured: true,
|
|
189
|
+
methods,
|
|
190
|
+
isApp: !!mainMethod,
|
|
191
|
+
appEntry: mainMethod,
|
|
192
|
+
description: reloadClassMeta.description,
|
|
193
|
+
icon: reloadClassMeta.icon,
|
|
194
|
+
internal: reloadClassMeta.internal,
|
|
195
|
+
...(mcp.injectedPhotons &&
|
|
196
|
+
mcp.injectedPhotons.length > 0 && { injectedPhotons: mcp.injectedPhotons }),
|
|
197
|
+
};
|
|
198
|
+
// Re-find index — array may have shifted during the async work above
|
|
199
|
+
const currentIndex = photons.findIndex((p) => p.name === photonName);
|
|
200
|
+
if (currentIndex === -1) {
|
|
201
|
+
activeLoads?.delete(photonName);
|
|
202
|
+
return { success: false, error: `${photonName} was removed during reload` };
|
|
203
|
+
}
|
|
204
|
+
photons[currentIndex] = reloadedPhoton;
|
|
205
|
+
activeLoads?.delete(photonName);
|
|
206
|
+
logger.info(`🔄 ${photonName} reloaded via MCP`);
|
|
207
|
+
broadcastChange();
|
|
208
|
+
return { success: true, photon: reloadedPhoton };
|
|
209
|
+
}
|
|
210
|
+
catch (error) {
|
|
211
|
+
activeLoads?.delete(photonName);
|
|
212
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
213
|
+
logger.error(`Failed to reload ${photonName} via MCP: ${errorMsg}`);
|
|
214
|
+
return { success: false, error: errorMsg };
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Remove a photon — delete from arrays/maps, clear saved config.
|
|
219
|
+
*/
|
|
220
|
+
export async function removePhotonViaMCP(photonName, photons, photonMCPs, savedConfig, broadcastChange, workingDir) {
|
|
221
|
+
const photonIndex = photons.findIndex((p) => p.name === photonName);
|
|
222
|
+
if (photonIndex === -1) {
|
|
223
|
+
return { success: false, error: `Photon not found: ${photonName}` };
|
|
224
|
+
}
|
|
225
|
+
photons.splice(photonIndex, 1);
|
|
226
|
+
photonMCPs.delete(photonName);
|
|
227
|
+
if (savedConfig.photons[photonName]) {
|
|
228
|
+
delete savedConfig.photons[photonName];
|
|
229
|
+
await saveConfig(savedConfig, workingDir);
|
|
230
|
+
}
|
|
231
|
+
logger.info(`🗑️ ${photonName} removed via MCP`);
|
|
232
|
+
broadcastChange();
|
|
233
|
+
return { success: true };
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Update photon or method metadata in-place.
|
|
237
|
+
*/
|
|
238
|
+
export async function updateMetadataViaMCP(photonName, methodName, metadata, photons) {
|
|
239
|
+
const photonIndex = photons.findIndex((p) => p.name === photonName);
|
|
240
|
+
if (photonIndex === -1) {
|
|
241
|
+
return { success: false, error: `Photon not found: ${photonName}` };
|
|
242
|
+
}
|
|
243
|
+
if (methodName) {
|
|
244
|
+
if (!photons[photonIndex].configured || !photons[photonIndex].methods) {
|
|
245
|
+
return { success: false, error: 'Photon is not configured or has no methods' };
|
|
246
|
+
}
|
|
247
|
+
const method = photons[photonIndex].methods.find((m) => m.name === methodName);
|
|
248
|
+
if (!method) {
|
|
249
|
+
return { success: false, error: `Method not found: ${methodName}` };
|
|
250
|
+
}
|
|
251
|
+
if (metadata.description !== undefined)
|
|
252
|
+
method.description = metadata.description;
|
|
253
|
+
if (metadata.icon !== undefined)
|
|
254
|
+
method.icon = metadata.icon;
|
|
255
|
+
logger.info(`📝 Updated metadata for ${photonName}/${methodName}`);
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
if (metadata.description !== undefined) {
|
|
259
|
+
photons[photonIndex].description = metadata.description;
|
|
260
|
+
}
|
|
261
|
+
if (metadata.icon !== undefined) {
|
|
262
|
+
photons[photonIndex].icon = metadata.icon;
|
|
263
|
+
}
|
|
264
|
+
logger.info(`📝 Updated metadata for ${photonName}`);
|
|
265
|
+
}
|
|
266
|
+
return { success: true };
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Generate rich help markdown for a photon.
|
|
270
|
+
* Checks for an existing .md file first; generates and saves one if missing.
|
|
271
|
+
*/
|
|
272
|
+
export async function generatePhotonHelpMarkdown(photonName, photons) {
|
|
273
|
+
const photon = photons.find((p) => p.name === photonName);
|
|
274
|
+
if (!photon) {
|
|
275
|
+
throw new Error(`Photon not found: ${photonName}`);
|
|
276
|
+
}
|
|
277
|
+
if (!photon.path) {
|
|
278
|
+
throw new Error(`Photon path not available: ${photonName}`);
|
|
279
|
+
}
|
|
280
|
+
const sourceDir = path.dirname(photon.path);
|
|
281
|
+
const mdPath = path.join(sourceDir, `${photonName}.md`);
|
|
282
|
+
try {
|
|
283
|
+
const [mdStat, srcStat] = await Promise.all([fs.stat(mdPath), fs.stat(photon.path)]);
|
|
284
|
+
if (mdStat.mtimeMs >= srcStat.mtimeMs) {
|
|
285
|
+
const existing = await fs.readFile(mdPath, 'utf-8');
|
|
286
|
+
if (existing.trim()) {
|
|
287
|
+
return existing;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
catch {
|
|
292
|
+
// .md doesn't exist or stat failed - regenerate
|
|
293
|
+
}
|
|
294
|
+
const extractor = new PhotonDocExtractor(photon.path);
|
|
295
|
+
const metadata = await extractor.extractFullMetadata();
|
|
296
|
+
const templateMgr = new TemplateManager(sourceDir);
|
|
297
|
+
await templateMgr.ensureTemplates();
|
|
298
|
+
const markdown = await templateMgr.renderTemplate('photon.md', metadata);
|
|
299
|
+
try {
|
|
300
|
+
await fs.writeFile(mdPath, markdown, 'utf-8');
|
|
301
|
+
logger.info(`📄 Generated help doc: ${mdPath}`);
|
|
302
|
+
}
|
|
303
|
+
catch {
|
|
304
|
+
logger.debug(`Could not save help doc to ${mdPath} (read-only?)`);
|
|
305
|
+
}
|
|
306
|
+
return markdown;
|
|
307
|
+
}
|
|
308
|
+
// Re-export helper for use by handleFileChange (still in beam.ts)
|
|
309
|
+
export { buildMethodList, extractConfigParams, generatePhotonId };
|
|
310
|
+
//# sourceMappingURL=photon-management.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"photon-management.js","sourceRoot":"","sources":["../../../src/auto-ui/beam/photon-management.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browse, UI, and PWA route handlers.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from beam.ts — handles:
|
|
5
|
+
* /api/browse – File browser API
|
|
6
|
+
* /api/local-file – Serve local files (images in markdown, etc.)
|
|
7
|
+
* /api/photon-workdir – Resolve photon working directory
|
|
8
|
+
* /api/ui – Serve UI templates for custom UI rendering
|
|
9
|
+
* /api/mcp-app – Serve MCP App HTML from external MCPs
|
|
10
|
+
* /api/template – Serve @ui template files (class-level custom UI)
|
|
11
|
+
* /api/pwa/manifest.json – Auto-generated PWA manifest
|
|
12
|
+
* /api/pwa/icon.svg – Auto-generated SVG icon from photon emoji
|
|
13
|
+
* /api/pwa/app – PWA app entry with bridge injection
|
|
14
|
+
*/
|
|
15
|
+
import type { RouteHandler } from '../types.js';
|
|
16
|
+
export declare const handleBrowseRoutes: RouteHandler;
|
|
17
|
+
//# sourceMappingURL=api-browse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-browse.d.ts","sourceRoot":"","sources":["../../../../src/auto-ui/beam/routes/api-browse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH,OAAO,KAAK,EAAa,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3D,eAAO,MAAM,kBAAkB,EAAE,YAqjBhC,CAAC"}
|