@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
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TaskExecutor — extracted from PhotonServer
|
|
3
|
+
*
|
|
4
|
+
* Encapsulates all MCP Tasks protocol handling (spec v2025-11-25):
|
|
5
|
+
* - Task creation from tool calls (task mode)
|
|
6
|
+
* - GetTask, ListTasks, CancelTask, GetTaskPayload handlers
|
|
7
|
+
* - Input resolution via elicitation
|
|
8
|
+
*
|
|
9
|
+
* Dependency direction: PhotonServer → TaskExecutor (never the reverse).
|
|
10
|
+
*/
|
|
11
|
+
import type { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
12
|
+
import type { LogLevel } from './shared/logger.js';
|
|
13
|
+
/** Minimal interface for executing a tool — avoids importing PhotonLoader */
|
|
14
|
+
export interface ToolExecutor {
|
|
15
|
+
executeTool(photon: {
|
|
16
|
+
name: string;
|
|
17
|
+
}, toolName: string, args: Record<string, unknown>, options: {
|
|
18
|
+
outputHandler?: (data: any) => void;
|
|
19
|
+
inputProvider?: (ask: any) => Promise<any>;
|
|
20
|
+
}): Promise<any>;
|
|
21
|
+
}
|
|
22
|
+
/** Minimal interface for creating an input provider via MCP elicitation */
|
|
23
|
+
export interface InputProviderFactory {
|
|
24
|
+
createMCPInputProvider(server?: Server): (ask: any) => Promise<any>;
|
|
25
|
+
}
|
|
26
|
+
/** Logger callback matching PhotonServer's log() signature */
|
|
27
|
+
export type TaskLog = (level: LogLevel, message: string, meta?: Record<string, any>) => void;
|
|
28
|
+
export declare class TaskExecutor {
|
|
29
|
+
private log;
|
|
30
|
+
private toolExecutor;
|
|
31
|
+
private inputProviderFactory;
|
|
32
|
+
constructor(log: TaskLog, toolExecutor: ToolExecutor, inputProviderFactory: InputProviderFactory);
|
|
33
|
+
/**
|
|
34
|
+
* Handle task-mode tool call: when request params contain a `task` field,
|
|
35
|
+
* run the tool asynchronously and return a task reference.
|
|
36
|
+
*
|
|
37
|
+
* Returns the MCP response if task mode applies, or null if it doesn't.
|
|
38
|
+
*/
|
|
39
|
+
handleTaskModeCall(photonName: string, toolName: string, args: Record<string, unknown>, taskField: {
|
|
40
|
+
ttl?: number;
|
|
41
|
+
}): {
|
|
42
|
+
content: Array<{
|
|
43
|
+
type: string;
|
|
44
|
+
text: string;
|
|
45
|
+
}>;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Handle tasks/get — returns wire-format task status.
|
|
49
|
+
*/
|
|
50
|
+
handleGetTask(taskId: string): any;
|
|
51
|
+
/**
|
|
52
|
+
* Handle tasks/list — returns paginated task list.
|
|
53
|
+
*/
|
|
54
|
+
handleListTasks(cursor?: string): any;
|
|
55
|
+
/**
|
|
56
|
+
* Handle tasks/cancel — aborts the task and returns updated status.
|
|
57
|
+
*/
|
|
58
|
+
handleCancelTask(taskId: string): any;
|
|
59
|
+
/**
|
|
60
|
+
* Handle tasks/get_result — blocks until task completes or times out.
|
|
61
|
+
* Handles input_required states via elicitation.
|
|
62
|
+
*/
|
|
63
|
+
handleGetTaskPayload(taskId: string, server: Server): Promise<any>;
|
|
64
|
+
/**
|
|
65
|
+
* Format a terminal task result for MCP response.
|
|
66
|
+
*/
|
|
67
|
+
private formatTaskResult;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=task-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-executor.d.ts","sourceRoot":"","sources":["../src/task-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAaxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,6EAA6E;AAC7E,MAAM,WAAW,YAAY;IAC3B,WAAW,CACT,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EACxB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE;QAAE,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;QAAC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;KAAE,GAC3F,OAAO,CAAC,GAAG,CAAC,CAAC;CACjB;AAED,2EAA2E;AAC3E,MAAM,WAAW,oBAAoB;IACnC,sBAAsB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CACrE;AAED,8DAA8D;AAC9D,MAAM,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;AAE7F,qBAAa,YAAY;IAErB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,oBAAoB;gBAFpB,GAAG,EAAE,OAAO,EACZ,YAAY,EAAE,YAAY,EAC1B,oBAAoB,EAAE,oBAAoB;IAGpD;;;;;OAKG;IACH,kBAAkB,CAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,SAAS,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1B;QAAE,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;IAuBrD;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG;IAMlC;;OAEG;IACH,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,GAAG;IAYrC;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG;IAgBrC;;;OAGG;IACG,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAwDxE;;OAEG;IACH,OAAO,CAAC,gBAAgB;CA2BzB"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TaskExecutor — extracted from PhotonServer
|
|
3
|
+
*
|
|
4
|
+
* Encapsulates all MCP Tasks protocol handling (spec v2025-11-25):
|
|
5
|
+
* - Task creation from tool calls (task mode)
|
|
6
|
+
* - GetTask, ListTasks, CancelTask, GetTaskPayload handlers
|
|
7
|
+
* - Input resolution via elicitation
|
|
8
|
+
*
|
|
9
|
+
* Dependency direction: PhotonServer → TaskExecutor (never the reverse).
|
|
10
|
+
*/
|
|
11
|
+
import { createTask, getTask, updateTask, listTasks, registerController, getController, unregisterController, } from './tasks/store.js';
|
|
12
|
+
import { toWireFormat, relatedTaskMeta, TERMINAL_STATES } from './tasks/types.js';
|
|
13
|
+
import { runTaskExecution, resolveTaskInput, waitForTerminalOrInput } from './tasks/executor.js';
|
|
14
|
+
export class TaskExecutor {
|
|
15
|
+
log;
|
|
16
|
+
toolExecutor;
|
|
17
|
+
inputProviderFactory;
|
|
18
|
+
constructor(log, toolExecutor, inputProviderFactory) {
|
|
19
|
+
this.log = log;
|
|
20
|
+
this.toolExecutor = toolExecutor;
|
|
21
|
+
this.inputProviderFactory = inputProviderFactory;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Handle task-mode tool call: when request params contain a `task` field,
|
|
25
|
+
* run the tool asynchronously and return a task reference.
|
|
26
|
+
*
|
|
27
|
+
* Returns the MCP response if task mode applies, or null if it doesn't.
|
|
28
|
+
*/
|
|
29
|
+
handleTaskModeCall(photonName, toolName, args, taskField) {
|
|
30
|
+
const ttl = typeof taskField.ttl === 'number' ? taskField.ttl : undefined;
|
|
31
|
+
this.log('info', 'Starting background task', { photon: photonName, tool: toolName });
|
|
32
|
+
const task = createTask(photonName, toolName, args, ttl);
|
|
33
|
+
const controller = new AbortController();
|
|
34
|
+
registerController(task.id, controller);
|
|
35
|
+
const executeFn = async (taskInputProvider, outputHandler) => {
|
|
36
|
+
return this.toolExecutor.executeTool({ name: photonName }, toolName, args, {
|
|
37
|
+
outputHandler,
|
|
38
|
+
inputProvider: taskInputProvider,
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
runTaskExecution(task.id, executeFn, {
|
|
42
|
+
signal: controller.signal,
|
|
43
|
+
});
|
|
44
|
+
return {
|
|
45
|
+
content: [{ type: 'text', text: JSON.stringify({ task: toWireFormat(task) }, null, 2) }],
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Handle tasks/get — returns wire-format task status.
|
|
50
|
+
*/
|
|
51
|
+
handleGetTask(taskId) {
|
|
52
|
+
const task = getTask(taskId);
|
|
53
|
+
if (!task)
|
|
54
|
+
throw new Error(`Task not found: ${taskId}`);
|
|
55
|
+
return toWireFormat(task);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Handle tasks/list — returns paginated task list.
|
|
59
|
+
*/
|
|
60
|
+
handleListTasks(cursor) {
|
|
61
|
+
const allTasks = listTasks();
|
|
62
|
+
const offset = cursor ? parseInt(cursor, 10) || 0 : 0;
|
|
63
|
+
const pageSize = 50;
|
|
64
|
+
const page = allTasks.slice(offset, offset + pageSize);
|
|
65
|
+
const nextCursor = offset + pageSize < allTasks.length ? String(offset + pageSize) : undefined;
|
|
66
|
+
return {
|
|
67
|
+
tasks: page.map(toWireFormat),
|
|
68
|
+
...(nextCursor && { nextCursor }),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Handle tasks/cancel — aborts the task and returns updated status.
|
|
73
|
+
*/
|
|
74
|
+
handleCancelTask(taskId) {
|
|
75
|
+
const task = getTask(taskId);
|
|
76
|
+
if (!task)
|
|
77
|
+
throw new Error(`Task not found: ${taskId}`);
|
|
78
|
+
if (TERMINAL_STATES.includes(task.state)) {
|
|
79
|
+
throw new Error(`Cannot cancel task in terminal state: ${task.state}`);
|
|
80
|
+
}
|
|
81
|
+
const controller = getController(taskId);
|
|
82
|
+
if (controller)
|
|
83
|
+
controller.abort();
|
|
84
|
+
const updated = updateTask(taskId, {
|
|
85
|
+
state: 'cancelled',
|
|
86
|
+
statusMessage: 'The task was cancelled by request.',
|
|
87
|
+
});
|
|
88
|
+
unregisterController(taskId);
|
|
89
|
+
return toWireFormat(updated);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Handle tasks/get_result — blocks until task completes or times out.
|
|
93
|
+
* Handles input_required states via elicitation.
|
|
94
|
+
*/
|
|
95
|
+
async handleGetTaskPayload(taskId, server) {
|
|
96
|
+
const task = getTask(taskId);
|
|
97
|
+
if (!task)
|
|
98
|
+
throw new Error(`Task not found: ${taskId}`);
|
|
99
|
+
// Already terminal — return immediately
|
|
100
|
+
if (TERMINAL_STATES.includes(task.state)) {
|
|
101
|
+
return this.formatTaskResult(task, taskId);
|
|
102
|
+
}
|
|
103
|
+
// If input_required, try to get input via elicitation
|
|
104
|
+
if (task.state === 'input_required' && task.input) {
|
|
105
|
+
const inputProvider = this.inputProviderFactory.createMCPInputProvider(server);
|
|
106
|
+
try {
|
|
107
|
+
const value = await inputProvider(task.input);
|
|
108
|
+
resolveTaskInput(taskId, value);
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
resolveTaskInput(taskId, null);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// Block until terminal (max 5 min per call)
|
|
115
|
+
try {
|
|
116
|
+
const abortController = new AbortController();
|
|
117
|
+
const timeout = setTimeout(() => abortController.abort(), 300000);
|
|
118
|
+
try {
|
|
119
|
+
while (true) {
|
|
120
|
+
const current = await waitForTerminalOrInput(taskId, abortController.signal);
|
|
121
|
+
if (TERMINAL_STATES.includes(current.state)) {
|
|
122
|
+
return this.formatTaskResult(current, taskId);
|
|
123
|
+
}
|
|
124
|
+
if (current.state === 'input_required' && current.input) {
|
|
125
|
+
const inputProvider = this.inputProviderFactory.createMCPInputProvider(server);
|
|
126
|
+
try {
|
|
127
|
+
const value = await inputProvider(current.input);
|
|
128
|
+
resolveTaskInput(taskId, value);
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
resolveTaskInput(taskId, null);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
finally {
|
|
137
|
+
clearTimeout(timeout);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
const current = getTask(taskId);
|
|
142
|
+
if (current && TERMINAL_STATES.includes(current.state)) {
|
|
143
|
+
return this.formatTaskResult(current, taskId);
|
|
144
|
+
}
|
|
145
|
+
return {
|
|
146
|
+
content: [{ type: 'text', text: `Task ${taskId} is still running.` }],
|
|
147
|
+
isError: false,
|
|
148
|
+
_meta: relatedTaskMeta(taskId),
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Format a terminal task result for MCP response.
|
|
154
|
+
*/
|
|
155
|
+
formatTaskResult(task, taskId) {
|
|
156
|
+
if (task.state === 'failed') {
|
|
157
|
+
return {
|
|
158
|
+
content: [{ type: 'text', text: task.error || 'Task failed' }],
|
|
159
|
+
isError: true,
|
|
160
|
+
_meta: relatedTaskMeta(taskId),
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
if (task.state === 'cancelled') {
|
|
164
|
+
return {
|
|
165
|
+
content: [{ type: 'text', text: 'Task was cancelled.' }],
|
|
166
|
+
isError: false,
|
|
167
|
+
_meta: relatedTaskMeta(taskId),
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
// Completed
|
|
171
|
+
if (task.result && typeof task.result === 'object' && 'content' in task.result) {
|
|
172
|
+
return { ...task.result, _meta: relatedTaskMeta(taskId) };
|
|
173
|
+
}
|
|
174
|
+
const text = typeof task.result === 'string' ? task.result : JSON.stringify(task.result ?? null);
|
|
175
|
+
return {
|
|
176
|
+
content: [{ type: 'text', text }],
|
|
177
|
+
isError: false,
|
|
178
|
+
_meta: relatedTaskMeta(taskId),
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=task-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-executor.js","sourceRoot":"","sources":["../src/task-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime-injected properties on photon instances.
|
|
3
|
+
*
|
|
4
|
+
* The loader dynamically attaches channel infrastructure, event dispatch,
|
|
5
|
+
* and reactive-collection wiring onto plain class instances. This interface
|
|
6
|
+
* captures those shapes so call-sites can avoid `as any`.
|
|
7
|
+
*/
|
|
8
|
+
export interface EventListenerEntry {
|
|
9
|
+
event: string;
|
|
10
|
+
fn: (data: unknown) => void;
|
|
11
|
+
filter?: EventFilter;
|
|
12
|
+
}
|
|
13
|
+
export interface EventFilter {
|
|
14
|
+
group?: string;
|
|
15
|
+
chatId?: string;
|
|
16
|
+
trigger?: string;
|
|
17
|
+
fromMe?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface ChannelMessage {
|
|
20
|
+
content?: string;
|
|
21
|
+
fromMe?: boolean;
|
|
22
|
+
[key: string]: unknown;
|
|
23
|
+
}
|
|
24
|
+
export interface ChannelFunction {
|
|
25
|
+
(content: string, meta?: Record<string, string>): void;
|
|
26
|
+
respond: (requestId: string, behavior: 'allow' | 'deny') => void;
|
|
27
|
+
onPermission: (handler: (request: unknown) => void) => void;
|
|
28
|
+
_dispatchPermission: (request: unknown) => Promise<unknown> | void;
|
|
29
|
+
[key: string]: unknown;
|
|
30
|
+
}
|
|
31
|
+
export interface PhotonInstance {
|
|
32
|
+
channel?: ChannelFunction;
|
|
33
|
+
_dispatch?: (chatId: string, message: ChannelMessage, groupName?: string) => void;
|
|
34
|
+
_eventListeners?: EventListenerEntry[];
|
|
35
|
+
_matchesFilter?: (filter: EventFilter | undefined, chatId: string, message: ChannelMessage, groupName?: string) => boolean;
|
|
36
|
+
on?: (event: string, handler: (data: unknown) => void, filter?: EventFilter) => void;
|
|
37
|
+
off?: (event: string, handler: (data: unknown) => void) => void;
|
|
38
|
+
[key: string]: unknown;
|
|
39
|
+
}
|
|
40
|
+
export interface ReactiveCollectionLike {
|
|
41
|
+
_propertyName?: string;
|
|
42
|
+
_emitter?: (event: string, data: unknown) => void;
|
|
43
|
+
[key: string]: unknown;
|
|
44
|
+
}
|
|
45
|
+
export interface DaemonEventEnvelope {
|
|
46
|
+
channel: string;
|
|
47
|
+
event: string;
|
|
48
|
+
data: Record<string, unknown>;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=photon-instance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"photon-instance.d.ts","sourceRoot":"","sources":["../../src/types/photon-instance.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAKD,MAAM,WAAW,eAAe;IAC9B,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACvD,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;IACjE,YAAY,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC;IAC5D,mBAAmB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACnE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAKD,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClF,eAAe,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACvC,cAAc,CAAC,EAAE,CACf,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc,EACvB,SAAS,CAAC,EAAE,MAAM,KACf,OAAO,CAAC;IACb,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,IAAI,CAAC;IACrF,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC;IAChE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAKD,MAAM,WAAW,sBAAsB;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAKD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime-injected properties on photon instances.
|
|
3
|
+
*
|
|
4
|
+
* The loader dynamically attaches channel infrastructure, event dispatch,
|
|
5
|
+
* and reactive-collection wiring onto plain class instances. This interface
|
|
6
|
+
* captures those shapes so call-sites can avoid `as any`.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=photon-instance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"photon-instance.js","sourceRoot":"","sources":["../../src/types/photon-instance.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-specific type helpers to replace `as any` casts in server.ts.
|
|
3
|
+
*
|
|
4
|
+
* These interfaces extend the published photon-core types with properties
|
|
5
|
+
* that exist at runtime but are not part of the public API surface.
|
|
6
|
+
*/
|
|
7
|
+
import type { PhotonClassExtended } from '@portel/photon-core';
|
|
8
|
+
/**
|
|
9
|
+
* Extended photon class with runtime-only metadata properties.
|
|
10
|
+
* These are set by the loader but not declared on PhotonClassExtended.
|
|
11
|
+
*/
|
|
12
|
+
export interface PhotonClassWithMeta extends PhotonClassExtended {
|
|
13
|
+
/** Photon icon emoji or name (from @icon class-level tag) */
|
|
14
|
+
icon?: string;
|
|
15
|
+
/** Whether the photon is stateful (from @stateful class-level tag) */
|
|
16
|
+
stateful?: boolean;
|
|
17
|
+
/** Convenience flag: true when settingsSchema.hasSettings is true */
|
|
18
|
+
hasSettings?: boolean;
|
|
19
|
+
/** Internal tool schema map used for diagnostics */
|
|
20
|
+
_toolSchemas?: Record<string, unknown>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* MCP tool definition returned by handleListTools.
|
|
24
|
+
* Matches the MCP protocol Tool shape.
|
|
25
|
+
*/
|
|
26
|
+
export interface MCPToolDefinition {
|
|
27
|
+
name: string;
|
|
28
|
+
description: string;
|
|
29
|
+
inputSchema: Record<string, unknown>;
|
|
30
|
+
annotations?: Record<string, unknown>;
|
|
31
|
+
outputSchema?: Record<string, unknown>;
|
|
32
|
+
icons?: Array<{
|
|
33
|
+
src: string;
|
|
34
|
+
mimeType?: string;
|
|
35
|
+
sizes?: string;
|
|
36
|
+
theme?: string;
|
|
37
|
+
}>;
|
|
38
|
+
_meta?: Record<string, unknown>;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* MCP text content block with optional annotations.
|
|
42
|
+
*/
|
|
43
|
+
export interface MCPTextContent {
|
|
44
|
+
type: 'text';
|
|
45
|
+
text: string;
|
|
46
|
+
annotations?: Record<string, unknown>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* MCP tool call response.
|
|
50
|
+
*/
|
|
51
|
+
export interface MCPToolResponse {
|
|
52
|
+
content: MCPTextContent[];
|
|
53
|
+
isError: boolean;
|
|
54
|
+
structuredContent?: Record<string, unknown>;
|
|
55
|
+
_meta?: Record<string, unknown>;
|
|
56
|
+
/** Extension field for format-aware clients */
|
|
57
|
+
'x-output-format'?: string;
|
|
58
|
+
/** Allow additional MCP extension properties */
|
|
59
|
+
[key: string]: unknown;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=server-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-types.d.ts","sourceRoot":"","sources":["../../src/types/server-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,mBAAmB;IAC9D,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,KAAK,CAAC,EAAE,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,CAAC;IAClF,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,+CAA+C;IAC/C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gDAAgD;IAChD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-specific type helpers to replace `as any` casts in server.ts.
|
|
3
|
+
*
|
|
4
|
+
* These interfaces extend the published photon-core types with properties
|
|
5
|
+
* that exist at runtime but are not part of the public API surface.
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=server-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-types.js","sourceRoot":"","sources":["../../src/types/server-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@portel/photon",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.20.0",
|
|
4
4
|
"description": "You focus on the business logic. We'll enable the rest. Build MCP servers and CLI tools in a single TypeScript file.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"test:client-adaptive": "npx tsx tests/client-adaptive.test.ts",
|
|
69
69
|
"test:load": "npm run build && node --expose-gc --max-old-space-size=4096 node_modules/.bin/tsx tests/load-test.ts",
|
|
70
70
|
"test:sqlite": "npm run build && npx tsx tests/sqlite.test.ts",
|
|
71
|
-
"test:github": "npm run build && npx tsx tests/github-issues.
|
|
71
|
+
"test:github": "npm run build && npx tsx tests/github-issues.integration.ts",
|
|
72
72
|
"test:beam": "npm run build && npx tsx tests/beam/rendering.test.ts",
|
|
73
73
|
"test:beam:regressions": "npm run build && npx tsx tests/beam/beam-integration-regressions.test.ts",
|
|
74
74
|
"test:e2e": "npm run build && npx playwright test",
|