@portel/photon 1.22.1 → 1.23.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 +19 -8
- package/dist/a2ui/mapper.d.ts +40 -0
- package/dist/a2ui/mapper.d.ts.map +1 -0
- package/dist/a2ui/mapper.js +286 -0
- package/dist/a2ui/mapper.js.map +1 -0
- package/dist/a2ui/types.d.ts +129 -0
- package/dist/a2ui/types.d.ts.map +1 -0
- package/dist/a2ui/types.js +20 -0
- package/dist/a2ui/types.js.map +1 -0
- package/dist/ag-ui/adapter.d.ts +9 -1
- package/dist/ag-ui/adapter.d.ts.map +1 -1
- package/dist/ag-ui/adapter.js +33 -16
- package/dist/ag-ui/adapter.js.map +1 -1
- package/dist/auto-ui/beam/routes/api-daemon.d.ts +18 -0
- package/dist/auto-ui/beam/routes/api-daemon.d.ts.map +1 -0
- package/dist/auto-ui/beam/routes/api-daemon.js +118 -0
- package/dist/auto-ui/beam/routes/api-daemon.js.map +1 -0
- package/dist/auto-ui/beam.d.ts.map +1 -1
- package/dist/auto-ui/beam.js +34 -34
- package/dist/auto-ui/beam.js.map +1 -1
- package/dist/auto-ui/bridge/renderers.d.ts.map +1 -1
- package/dist/auto-ui/bridge/renderers.js +371 -0
- package/dist/auto-ui/bridge/renderers.js.map +1 -1
- package/dist/auto-ui/streamable-http-transport.d.ts.map +1 -1
- package/dist/auto-ui/streamable-http-transport.js +38 -1
- package/dist/auto-ui/streamable-http-transport.js.map +1 -1
- package/dist/auto-ui/types.d.ts +19 -0
- package/dist/auto-ui/types.d.ts.map +1 -1
- package/dist/auto-ui/types.js.map +1 -1
- package/dist/beam.bundle.js +757 -107
- package/dist/beam.bundle.js.map +4 -4
- package/dist/cli/commands/beam.d.ts.map +1 -1
- package/dist/cli/commands/beam.js +2 -0
- package/dist/cli/commands/beam.js.map +1 -1
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +2 -0
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +92 -3
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/host.d.ts.map +1 -1
- package/dist/cli/commands/host.js +9 -1
- package/dist/cli/commands/host.js.map +1 -1
- package/dist/cli/commands/info.d.ts.map +1 -1
- package/dist/cli/commands/info.js +7 -3
- 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 +4 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/maker.d.ts +8 -0
- package/dist/cli/commands/maker.d.ts.map +1 -1
- package/dist/cli/commands/maker.js +113 -46
- package/dist/cli/commands/maker.js.map +1 -1
- package/dist/cli/commands/marketplace.d.ts.map +1 -1
- package/dist/cli/commands/marketplace.js +7 -1
- package/dist/cli/commands/marketplace.js.map +1 -1
- package/dist/cli/commands/mcp.d.ts +10 -0
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +215 -4
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/package.d.ts.map +1 -1
- package/dist/cli/commands/package.js +33 -15
- package/dist/cli/commands/package.js.map +1 -1
- package/dist/cli/commands/ps.d.ts +16 -0
- package/dist/cli/commands/ps.d.ts.map +1 -0
- package/dist/cli/commands/ps.js +267 -0
- package/dist/cli/commands/ps.js.map +1 -0
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +7 -0
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +14 -4
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +9 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/context-store.d.ts +4 -4
- package/dist/context-store.d.ts.map +1 -1
- package/dist/context-store.js +20 -17
- package/dist/context-store.js.map +1 -1
- package/dist/context.d.ts +5 -4
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +68 -14
- package/dist/context.js.map +1 -1
- package/dist/daemon/client.d.ts +60 -0
- package/dist/daemon/client.d.ts.map +1 -1
- package/dist/daemon/client.js +76 -0
- package/dist/daemon/client.js.map +1 -1
- package/dist/daemon/execution-history-sqlite.d.ts +50 -0
- package/dist/daemon/execution-history-sqlite.d.ts.map +1 -0
- package/dist/daemon/execution-history-sqlite.js +165 -0
- package/dist/daemon/execution-history-sqlite.js.map +1 -0
- package/dist/daemon/execution-history.d.ts +78 -0
- package/dist/daemon/execution-history.d.ts.map +1 -0
- package/dist/daemon/execution-history.js +246 -0
- package/dist/daemon/execution-history.js.map +1 -0
- package/dist/daemon/hot-reload-state.d.ts +27 -0
- package/dist/daemon/hot-reload-state.d.ts.map +1 -0
- package/dist/daemon/hot-reload-state.js +48 -0
- package/dist/daemon/hot-reload-state.js.map +1 -0
- package/dist/daemon/protocol.d.ts +5 -1
- package/dist/daemon/protocol.d.ts.map +1 -1
- package/dist/daemon/protocol.js +13 -0
- package/dist/daemon/protocol.js.map +1 -1
- package/dist/daemon/registry-keys.d.ts +88 -0
- package/dist/daemon/registry-keys.d.ts.map +1 -0
- package/dist/daemon/registry-keys.js +91 -0
- package/dist/daemon/registry-keys.js.map +1 -0
- package/dist/daemon/server.js +1521 -186
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/session-resolver.d.ts +28 -0
- package/dist/daemon/session-resolver.d.ts.map +1 -0
- package/dist/daemon/session-resolver.js +41 -0
- package/dist/daemon/session-resolver.js.map +1 -0
- package/dist/data-migration.js +20 -9
- package/dist/data-migration.js.map +1 -1
- package/dist/loader.d.ts +22 -8
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +214 -94
- package/dist/loader.js.map +1 -1
- package/dist/marketplace-manager.d.ts.map +1 -1
- package/dist/marketplace-manager.js +9 -5
- package/dist/marketplace-manager.js.map +1 -1
- package/dist/namespace-migration.d.ts.map +1 -1
- package/dist/namespace-migration.js +28 -23
- package/dist/namespace-migration.js.map +1 -1
- package/dist/photon-cli-runner.d.ts.map +1 -1
- package/dist/photon-cli-runner.js +57 -8
- package/dist/photon-cli-runner.js.map +1 -1
- package/dist/serv/auth/auth-store.d.ts +155 -0
- package/dist/serv/auth/auth-store.d.ts.map +1 -0
- package/dist/serv/auth/auth-store.js +240 -0
- package/dist/serv/auth/auth-store.js.map +1 -0
- package/dist/serv/auth/endpoints.d.ts +113 -0
- package/dist/serv/auth/endpoints.d.ts.map +1 -0
- package/dist/serv/auth/endpoints.js +1005 -0
- package/dist/serv/auth/endpoints.js.map +1 -0
- package/dist/serv/auth/http-adapter.d.ts +60 -0
- package/dist/serv/auth/http-adapter.d.ts.map +1 -0
- package/dist/serv/auth/http-adapter.js +235 -0
- package/dist/serv/auth/http-adapter.js.map +1 -0
- package/dist/serv/auth/jwt.d.ts +92 -6
- package/dist/serv/auth/jwt.d.ts.map +1 -1
- package/dist/serv/auth/jwt.js +226 -24
- package/dist/serv/auth/jwt.js.map +1 -1
- package/dist/serv/auth/oauth-sqlite-stores.d.ts +48 -0
- package/dist/serv/auth/oauth-sqlite-stores.d.ts.map +1 -0
- package/dist/serv/auth/oauth-sqlite-stores.js +212 -0
- package/dist/serv/auth/oauth-sqlite-stores.js.map +1 -0
- package/dist/serv/auth/sqlite-stores.d.ts +85 -0
- package/dist/serv/auth/sqlite-stores.d.ts.map +1 -0
- package/dist/serv/auth/sqlite-stores.js +446 -0
- package/dist/serv/auth/sqlite-stores.js.map +1 -0
- package/dist/serv/auth/well-known.d.ts +54 -1
- package/dist/serv/auth/well-known.d.ts.map +1 -1
- package/dist/serv/auth/well-known.js +166 -17
- package/dist/serv/auth/well-known.js.map +1 -1
- package/dist/serv/index.d.ts +45 -2
- package/dist/serv/index.d.ts.map +1 -1
- package/dist/serv/index.js +65 -1
- package/dist/serv/index.js.map +1 -1
- package/dist/serv/types/index.d.ts +80 -0
- package/dist/serv/types/index.d.ts.map +1 -1
- package/dist/serv/types/index.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +61 -6
- package/dist/server.js.map +1 -1
- package/dist/shared/announce-context.d.ts +51 -0
- package/dist/shared/announce-context.d.ts.map +1 -0
- package/dist/shared/announce-context.js +73 -0
- package/dist/shared/announce-context.js.map +1 -0
- package/dist/shared/audit-sqlite.d.ts +63 -0
- package/dist/shared/audit-sqlite.d.ts.map +1 -0
- package/dist/shared/audit-sqlite.js +187 -0
- package/dist/shared/audit-sqlite.js.map +1 -0
- package/dist/shared/audit.d.ts +25 -3
- package/dist/shared/audit.d.ts.map +1 -1
- package/dist/shared/audit.js +97 -3
- package/dist/shared/audit.js.map +1 -1
- package/dist/shared/error-handler.d.ts +10 -1
- package/dist/shared/error-handler.d.ts.map +1 -1
- package/dist/shared/error-handler.js +17 -2
- package/dist/shared/error-handler.js.map +1 -1
- package/dist/shared/security.d.ts +12 -0
- package/dist/shared/security.d.ts.map +1 -1
- package/dist/shared/security.js +80 -0
- package/dist/shared/security.js.map +1 -1
- package/dist/shared/sqlite-runtime.d.ts +46 -0
- package/dist/shared/sqlite-runtime.d.ts.map +1 -0
- package/dist/shared/sqlite-runtime.js +110 -0
- package/dist/shared/sqlite-runtime.js.map +1 -0
- package/dist/tasks/store.d.ts +1 -1
- package/dist/tasks/store.d.ts.map +1 -1
- package/dist/tasks/store.js +29 -15
- package/dist/tasks/store.js.map +1 -1
- package/dist/telemetry/metrics.d.ts +26 -0
- package/dist/telemetry/metrics.d.ts.map +1 -1
- package/dist/telemetry/metrics.js +31 -0
- package/dist/telemetry/metrics.js.map +1 -1
- package/dist/test-runner.d.ts.map +1 -1
- package/dist/test-runner.js +3 -3
- package/dist/test-runner.js.map +1 -1
- package/dist/version-checker.d.ts.map +1 -1
- package/dist/version-checker.js +7 -14
- package/dist/version-checker.js.map +1 -1
- package/dist/version.d.ts +12 -0
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +103 -1
- package/dist/version.js.map +1 -1
- package/package.json +6 -2
- package/templates/photon.template.ts +7 -13
package/dist/ag-ui/adapter.js
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
import { randomUUID } from 'crypto';
|
|
16
16
|
import { AGUIEventType } from './types.js';
|
|
17
17
|
import { getRequestContext } from '../telemetry/context.js';
|
|
18
|
+
import { resultToA2UIMessages, looksLikeA2UIStream } from '../a2ui/mapper.js';
|
|
18
19
|
/**
|
|
19
20
|
* Wrap an AG-UI event as a JSON-RPC 2.0 notification.
|
|
20
21
|
*
|
|
@@ -158,22 +159,7 @@ export async function proxyExternalAgent(agentUrl, input, broadcast) {
|
|
|
158
159
|
}));
|
|
159
160
|
}
|
|
160
161
|
}
|
|
161
|
-
|
|
162
|
-
// AG-UI OUTPUT HANDLER (wraps photon execution)
|
|
163
|
-
// ════════════════════════════════════════════════════════════════════════════════
|
|
164
|
-
/**
|
|
165
|
-
* Create an output handler that translates Photon yield values to AG-UI events.
|
|
166
|
-
*
|
|
167
|
-
* Mapping:
|
|
168
|
-
* - Stream chunks (strings) → TEXT_MESSAGE_START/CONTENT/END
|
|
169
|
-
* - Progress yields → STEP_STARTED/STEP_FINISHED
|
|
170
|
-
* - Emit yields (custom) → CUSTOM event
|
|
171
|
-
* - Channel events (patches) → STATE_DELTA
|
|
172
|
-
*
|
|
173
|
-
* Returns { outputHandler, finish, error } — call finish() after successful
|
|
174
|
-
* execution or error() on failure to emit the terminal event.
|
|
175
|
-
*/
|
|
176
|
-
export function createAGUIOutputHandler(photonName, toolName, runId, broadcast) {
|
|
162
|
+
export function createAGUIOutputHandler(photonName, toolName, runId, broadcast, options = {}) {
|
|
177
163
|
const threadId = `${photonName}/${toolName}`;
|
|
178
164
|
const messageId = randomUUID();
|
|
179
165
|
let textStreamStarted = false;
|
|
@@ -311,6 +297,37 @@ export function createAGUIOutputHandler(photonName, toolName, runId, broadcast)
|
|
|
311
297
|
timestamp: ts,
|
|
312
298
|
}));
|
|
313
299
|
}
|
|
300
|
+
// A2UI: map the result to v0.9 messages and emit each as a CUSTOM event.
|
|
301
|
+
// Consumers reassemble the JSONL stream. Emitted before STATE_SNAPSHOT so
|
|
302
|
+
// non-A2UI clients still see the raw data snapshot.
|
|
303
|
+
//
|
|
304
|
+
// Methods are allowed to return a pre-serialized A2UI stream (an array
|
|
305
|
+
// of message objects); forward it verbatim so AG-UI matches the CLI's
|
|
306
|
+
// behavior. Remapping pre-built streams would corrupt custom surfaces.
|
|
307
|
+
if (options.outputFormat === 'a2ui') {
|
|
308
|
+
try {
|
|
309
|
+
const messages = Array.isArray(result) && looksLikeA2UIStream(result)
|
|
310
|
+
? result
|
|
311
|
+
: resultToA2UIMessages(result);
|
|
312
|
+
for (const message of messages) {
|
|
313
|
+
broadcast(wrapNotification({
|
|
314
|
+
type: AGUIEventType.CUSTOM,
|
|
315
|
+
name: 'a2ui.message',
|
|
316
|
+
value: message,
|
|
317
|
+
timestamp: ts,
|
|
318
|
+
}));
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
catch (err) {
|
|
322
|
+
// Don't kill the run on mapping failure — surface it and carry on.
|
|
323
|
+
broadcast(wrapNotification({
|
|
324
|
+
type: AGUIEventType.CUSTOM,
|
|
325
|
+
name: 'a2ui.error',
|
|
326
|
+
value: { message: err instanceof Error ? err.message : String(err) },
|
|
327
|
+
timestamp: ts,
|
|
328
|
+
}));
|
|
329
|
+
}
|
|
330
|
+
}
|
|
314
331
|
// If result is an object, emit as state snapshot
|
|
315
332
|
if (result && typeof result === 'object') {
|
|
316
333
|
broadcast(wrapNotification({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/ag-ui/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,aAAa,EAAsD,MAAM,YAAY,CAAC;AAC/F,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/ag-ui/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Daemon API route handlers for Beam.
|
|
3
|
+
*
|
|
4
|
+
* Thin HTTP wrapper around the daemon client RPCs — gives the Beam UI a
|
|
5
|
+
* parallel surface to the `photon ps` CLI for observing and controlling
|
|
6
|
+
* scheduled work.
|
|
7
|
+
*
|
|
8
|
+
* Endpoints:
|
|
9
|
+
* GET /api/daemon/ps – full snapshot (active/declared/webhooks/sessions)
|
|
10
|
+
* POST /api/daemon/schedules/enable – body: { photon, method }
|
|
11
|
+
* POST /api/daemon/schedules/disable – body: { photon, method }
|
|
12
|
+
* POST /api/daemon/schedules/pause – body: { photon, method }
|
|
13
|
+
* POST /api/daemon/schedules/resume – body: { photon, method }
|
|
14
|
+
* GET /api/daemon/history?photon=&method=&limit=&sinceTs=
|
|
15
|
+
*/
|
|
16
|
+
import type { RouteHandler } from '../types.js';
|
|
17
|
+
export declare const handleDaemonRoutes: RouteHandler;
|
|
18
|
+
//# sourceMappingURL=api-daemon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-daemon.d.ts","sourceRoot":"","sources":["../../../../src/auto-ui/beam/routes/api-daemon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA2BhD,eAAO,MAAM,kBAAkB,EAAE,YA2EhC,CAAC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Daemon API route handlers for Beam.
|
|
3
|
+
*
|
|
4
|
+
* Thin HTTP wrapper around the daemon client RPCs — gives the Beam UI a
|
|
5
|
+
* parallel surface to the `photon ps` CLI for observing and controlling
|
|
6
|
+
* scheduled work.
|
|
7
|
+
*
|
|
8
|
+
* Endpoints:
|
|
9
|
+
* GET /api/daemon/ps – full snapshot (active/declared/webhooks/sessions)
|
|
10
|
+
* POST /api/daemon/schedules/enable – body: { photon, method }
|
|
11
|
+
* POST /api/daemon/schedules/disable – body: { photon, method }
|
|
12
|
+
* POST /api/daemon/schedules/pause – body: { photon, method }
|
|
13
|
+
* POST /api/daemon/schedules/resume – body: { photon, method }
|
|
14
|
+
* GET /api/daemon/history?photon=&method=&limit=&sinceTs=
|
|
15
|
+
*/
|
|
16
|
+
import { readBody } from '../../../shared/security.js';
|
|
17
|
+
import { getErrorMessage } from '../../../shared/error-handler.js';
|
|
18
|
+
function writeJson(res, status, body) {
|
|
19
|
+
res.writeHead(status, { 'Content-Type': 'application/json' });
|
|
20
|
+
res.end(JSON.stringify(body));
|
|
21
|
+
}
|
|
22
|
+
async function readAction(req) {
|
|
23
|
+
const raw = await readBody(req);
|
|
24
|
+
let parsed;
|
|
25
|
+
try {
|
|
26
|
+
parsed = raw ? JSON.parse(raw) : {};
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return { error: 'Invalid JSON body' };
|
|
30
|
+
}
|
|
31
|
+
const body = parsed;
|
|
32
|
+
if (typeof body.photon !== 'string' || !body.photon.trim()) {
|
|
33
|
+
return { error: 'Missing or invalid "photon"' };
|
|
34
|
+
}
|
|
35
|
+
if (typeof body.method !== 'string' || !body.method.trim()) {
|
|
36
|
+
return { error: 'Missing or invalid "method"' };
|
|
37
|
+
}
|
|
38
|
+
return { photon: body.photon, method: body.method };
|
|
39
|
+
}
|
|
40
|
+
export const handleDaemonRoutes = async (req, res, url) => {
|
|
41
|
+
if (!url.pathname.startsWith('/api/daemon'))
|
|
42
|
+
return false;
|
|
43
|
+
// Mutation endpoints require the CSRF-ish header used elsewhere in Beam.
|
|
44
|
+
if (req.method === 'POST' || req.method === 'PUT' || req.method === 'DELETE') {
|
|
45
|
+
const photonHeader = req.headers['x-photon-request'];
|
|
46
|
+
if (!photonHeader) {
|
|
47
|
+
writeJson(res, 403, { error: 'Missing X-Photon-Request header' });
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (url.pathname === '/api/daemon/ps' && (req.method === 'GET' || !req.method)) {
|
|
52
|
+
try {
|
|
53
|
+
const { fetchPsSnapshot } = await import('../../../daemon/client.js');
|
|
54
|
+
const snap = await fetchPsSnapshot();
|
|
55
|
+
writeJson(res, 200, snap);
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
writeJson(res, 500, { error: getErrorMessage(err) });
|
|
59
|
+
}
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
if (url.pathname === '/api/daemon/history' && (req.method === 'GET' || !req.method)) {
|
|
63
|
+
const photon = url.searchParams.get('photon') ?? '';
|
|
64
|
+
const method = url.searchParams.get('method') ?? '';
|
|
65
|
+
if (!photon || !method) {
|
|
66
|
+
writeJson(res, 400, { error: 'Missing required query params "photon" and "method"' });
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
const limitRaw = url.searchParams.get('limit');
|
|
70
|
+
const sinceRaw = url.searchParams.get('sinceTs');
|
|
71
|
+
const limit = limitRaw ? Math.max(1, parseInt(limitRaw, 10) || 20) : undefined;
|
|
72
|
+
const sinceTs = sinceRaw ? parseInt(sinceRaw, 10) || undefined : undefined;
|
|
73
|
+
try {
|
|
74
|
+
const { fetchExecutionHistory } = await import('../../../daemon/client.js');
|
|
75
|
+
const resp = await fetchExecutionHistory(photon, method, { limit, sinceTs });
|
|
76
|
+
writeJson(res, 200, resp);
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
writeJson(res, 500, { error: getErrorMessage(err) });
|
|
80
|
+
}
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
if (url.pathname.startsWith('/api/daemon/schedules/') && (req.method === 'POST' || !req.method)) {
|
|
84
|
+
const action = url.pathname.slice('/api/daemon/schedules/'.length);
|
|
85
|
+
if (!['enable', 'disable', 'pause', 'resume'].includes(action)) {
|
|
86
|
+
writeJson(res, 404, { error: `Unknown schedule action "${action}"` });
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
const parsed = await readAction(req);
|
|
90
|
+
if ('error' in parsed) {
|
|
91
|
+
writeJson(res, 400, { error: parsed.error });
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
try {
|
|
95
|
+
const client = await import('../../../daemon/client.js');
|
|
96
|
+
let result;
|
|
97
|
+
if (action === 'enable') {
|
|
98
|
+
result = await client.enableSchedule(parsed.photon, parsed.method);
|
|
99
|
+
}
|
|
100
|
+
else if (action === 'disable') {
|
|
101
|
+
result = await client.disableSchedule(parsed.photon, parsed.method);
|
|
102
|
+
}
|
|
103
|
+
else if (action === 'pause') {
|
|
104
|
+
result = await client.pauseSchedule(parsed.photon, parsed.method);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
result = await client.resumeSchedule(parsed.photon, parsed.method);
|
|
108
|
+
}
|
|
109
|
+
writeJson(res, 200, { ok: true, result });
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
writeJson(res, 500, { error: getErrorMessage(err) });
|
|
113
|
+
}
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
return false;
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=api-daemon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-daemon.js","sourceRoot":"","sources":["../../../../src/auto-ui/beam/routes/api-daemon.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beam.d.ts","sourceRoot":"","sources":["../../src/auto-ui/beam.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"beam.d.ts","sourceRoot":"","sources":["../../src/auto-ui/beam.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA8KH,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AA4XjD,wBAAsB,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4kFlF;AAED;;;GAGG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAsB9C"}
|
package/dist/auto-ui/beam.js
CHANGED
|
@@ -113,6 +113,7 @@ import { SubscriptionManager } from './beam/subscription.js';
|
|
|
113
113
|
import { handleMarketplaceRoutes } from './beam/routes/api-marketplace.js';
|
|
114
114
|
import { handleBrowseRoutes } from './beam/routes/api-browse.js';
|
|
115
115
|
import { handleConfigRoutes } from './beam/routes/api-config.js';
|
|
116
|
+
import { handleDaemonRoutes } from './beam/routes/api-daemon.js';
|
|
116
117
|
import { loadExternalMCPs as loadExternalMCPsFromModule, reconnectExternalMCP as reconnectExternalMCPFromModule, } from './beam/external-mcp.js';
|
|
117
118
|
import { configurePhotonViaMCP, reloadPhotonViaMCP, removePhotonViaMCP, updateMetadataViaMCP, generatePhotonHelpMarkdown, } from './beam/photon-management.js';
|
|
118
119
|
import { generateAgentCard } from '../a2a/card-generator.js';
|
|
@@ -591,6 +592,33 @@ export async function startBeam(rawWorkingDir, port) {
|
|
|
591
592
|
return true;
|
|
592
593
|
return false;
|
|
593
594
|
};
|
|
595
|
+
// Param names that almost always carry credentials. Same pattern the
|
|
596
|
+
// doctor lint uses; kept inline to avoid pulling a CLI helper into the
|
|
597
|
+
// Beam server bundle.
|
|
598
|
+
const SECRET_NAME_REGEX = /^(api[_-]?key|password|passwd|pwd|secret|token|access[_-]?token|bearer)$/i;
|
|
599
|
+
/**
|
|
600
|
+
* Convert raw extractor params into the Beam-shaped ConfigParam, with
|
|
601
|
+
* isSecret flagged by name and currentValue echoed from process.env.
|
|
602
|
+
* Secret-named env vars are masked to '***' (or null when absent) so
|
|
603
|
+
* Beam's network response never carries a credential in the clear.
|
|
604
|
+
*/
|
|
605
|
+
const enrichParam = (p, photonName) => {
|
|
606
|
+
const envVar = toEnvVarName(photonName, p.name);
|
|
607
|
+
const isSecret = SECRET_NAME_REGEX.test(p.name);
|
|
608
|
+
const raw = process.env[envVar];
|
|
609
|
+
const currentValue = raw === undefined ? null : isSecret ? '***' : raw;
|
|
610
|
+
return {
|
|
611
|
+
name: p.name,
|
|
612
|
+
envVar,
|
|
613
|
+
type: p.type,
|
|
614
|
+
isOptional: p.isOptional,
|
|
615
|
+
hasDefault: p.hasDefault,
|
|
616
|
+
defaultValue: p.defaultValue,
|
|
617
|
+
isSecret,
|
|
618
|
+
currentValue,
|
|
619
|
+
...(p.description ? { description: p.description } : {}),
|
|
620
|
+
};
|
|
621
|
+
};
|
|
594
622
|
// Helper: load a single photon, returning the info to push into photons[]
|
|
595
623
|
async function loadSinglePhoton(name) {
|
|
596
624
|
const photonPath = bundledPhotonPaths.get(name) ||
|
|
@@ -631,16 +659,7 @@ export async function startBeam(rawWorkingDir, port) {
|
|
|
631
659
|
try {
|
|
632
660
|
if (source) {
|
|
633
661
|
const params = extractor.extractConstructorParams(source);
|
|
634
|
-
constructorParams = params
|
|
635
|
-
.filter((p) => p.isPrimitive)
|
|
636
|
-
.map((p) => ({
|
|
637
|
-
name: p.name,
|
|
638
|
-
envVar: toEnvVarName(name, p.name),
|
|
639
|
-
type: p.type,
|
|
640
|
-
isOptional: p.isOptional,
|
|
641
|
-
hasDefault: p.hasDefault,
|
|
642
|
-
defaultValue: p.defaultValue,
|
|
643
|
-
}));
|
|
662
|
+
constructorParams = params.filter((p) => p.isPrimitive).map((p) => enrichParam(p, name));
|
|
644
663
|
// Extract @ui template path from class-level JSDoc
|
|
645
664
|
const classJsdocMatch = source.match(/\/\*\*[\s\S]*?\*\/\s*(?=export\s+default\s+class)/) ||
|
|
646
665
|
source.match(/^\/\*\*([\s\S]*?)\*\//);
|
|
@@ -1221,6 +1240,8 @@ export async function startBeam(rawWorkingDir, port) {
|
|
|
1221
1240
|
return;
|
|
1222
1241
|
if (await handleConfigRoutes(req, res, url, beamState))
|
|
1223
1242
|
return;
|
|
1243
|
+
if (await handleDaemonRoutes(req, res, url, beamState))
|
|
1244
|
+
return;
|
|
1224
1245
|
}
|
|
1225
1246
|
// Service worker for PWA support
|
|
1226
1247
|
if (url.pathname === '/sw.js') {
|
|
@@ -2072,14 +2093,7 @@ export async function startBeam(rawWorkingDir, port) {
|
|
|
2072
2093
|
const params = extractor.extractConstructorParams(source);
|
|
2073
2094
|
constructorParams = params
|
|
2074
2095
|
.filter((p) => p.isPrimitive)
|
|
2075
|
-
.map((p) => (
|
|
2076
|
-
name: p.name,
|
|
2077
|
-
envVar: toEnvVarName(photonName, p.name),
|
|
2078
|
-
type: p.type,
|
|
2079
|
-
isOptional: p.isOptional,
|
|
2080
|
-
hasDefault: p.hasDefault,
|
|
2081
|
-
defaultValue: p.defaultValue,
|
|
2082
|
-
}));
|
|
2096
|
+
.map((p) => enrichParam(p, photonName));
|
|
2083
2097
|
}
|
|
2084
2098
|
catch {
|
|
2085
2099
|
// Can't extract params, try to load anyway
|
|
@@ -2212,14 +2226,7 @@ export async function startBeam(rawWorkingDir, port) {
|
|
|
2212
2226
|
const reloadParams = extractor.extractConstructorParams(reloadSource);
|
|
2213
2227
|
reloadConstructorParams = reloadParams
|
|
2214
2228
|
.filter((p) => p.isPrimitive)
|
|
2215
|
-
.map((p) => (
|
|
2216
|
-
name: p.name,
|
|
2217
|
-
envVar: toEnvVarName(photonName, p.name),
|
|
2218
|
-
type: p.type,
|
|
2219
|
-
isOptional: p.isOptional,
|
|
2220
|
-
hasDefault: p.hasDefault,
|
|
2221
|
-
defaultValue: p.defaultValue,
|
|
2222
|
-
}));
|
|
2229
|
+
.map((p) => enrichParam(p, photonName));
|
|
2223
2230
|
}
|
|
2224
2231
|
catch {
|
|
2225
2232
|
// Can't extract params
|
|
@@ -2297,14 +2304,7 @@ export async function startBeam(rawWorkingDir, port) {
|
|
|
2297
2304
|
const params = extractor.extractConstructorParams(source);
|
|
2298
2305
|
constructorParams = params
|
|
2299
2306
|
.filter((p) => p.isPrimitive)
|
|
2300
|
-
.map((p) => (
|
|
2301
|
-
name: p.name,
|
|
2302
|
-
envVar: toEnvVarName(photonName, p.name),
|
|
2303
|
-
type: p.type,
|
|
2304
|
-
isOptional: p.isOptional,
|
|
2305
|
-
hasDefault: p.hasDefault,
|
|
2306
|
-
defaultValue: p.defaultValue,
|
|
2307
|
-
}));
|
|
2307
|
+
.map((p) => enrichParam(p, photonName));
|
|
2308
2308
|
}
|
|
2309
2309
|
catch {
|
|
2310
2310
|
// Ignore extraction errors
|