@portel/photon 1.18.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 +196 -77
- 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 +49 -6
- package/dist/beam-form.bundle.js.map +2 -2
- package/dist/beam.bundle.js +2090 -512
- 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/claude-code-plugin.js +1 -1
- package/dist/cli/commands/beam.d.ts.map +1 -1
- package/dist/cli/commands/beam.js +8 -2
- package/dist/cli/commands/beam.js.map +1 -1
- package/dist/cli/commands/changelog.d.ts +9 -0
- package/dist/cli/commands/changelog.d.ts.map +1 -0
- package/dist/cli/commands/changelog.js +133 -0
- package/dist/cli/commands/changelog.js.map +1 -0
- package/dist/cli/commands/maker.d.ts.map +1 -1
- package/dist/cli/commands/maker.js +23 -2
- package/dist/cli/commands/maker.js.map +1 -1
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +53 -0
- 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 +43 -9
- package/dist/cli/commands/package.js.map +1 -1
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +1 -0
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/update.d.ts +3 -2
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +50 -43
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +16 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli-alias.js +1 -1
- package/dist/cli-alias.js.map +1 -1
- package/dist/context-store.d.ts +23 -33
- package/dist/context-store.d.ts.map +1 -1
- package/dist/context-store.js +147 -97
- package/dist/context-store.js.map +1 -1
- package/dist/context.d.ts +15 -10
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +37 -13
- package/dist/context.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 +34 -51
- 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/data-migration.d.ts +27 -0
- package/dist/data-migration.d.ts.map +1 -0
- package/dist/data-migration.js +307 -0
- package/dist/data-migration.js.map +1 -0
- package/dist/editor-support/docblock-tag-catalog.d.ts.map +1 -1
- package/dist/editor-support/docblock-tag-catalog.js +6 -0
- package/dist/editor-support/docblock-tag-catalog.js.map +1 -1
- package/dist/loader.d.ts +13 -0
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +169 -22
- 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 +185 -62
- 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/photon-cli-runner.d.ts.map +1 -1
- package/dist/photon-cli-runner.js +47 -21
- 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 +6 -0
- package/dist/photon-doc-extractor.js.map +1 -1
- package/dist/readme-syncer.d.ts.map +1 -1
- package/dist/readme-syncer.js +6 -1
- package/dist/readme-syncer.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 +30 -119
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +252 -1122
- package/dist/server.js.map +1 -1
- package/dist/shared/audit.d.ts.map +1 -1
- package/dist/shared/audit.js +11 -4
- 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/tasks/store.d.ts.map +1 -1
- package/dist/tasks/store.js +6 -2
- package/dist/tasks/store.js.map +1 -1
- 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/dist/version-notify.d.ts +27 -0
- package/dist/version-notify.d.ts.map +1 -0
- package/dist/version-notify.js +142 -0
- package/dist/version-notify.js.map +1 -0
- package/package.json +3 -3
- package/dist/auto-ui/bridge/openai-shim.d.ts +0 -20
- package/dist/auto-ui/bridge/openai-shim.d.ts.map +0 -1
- package/dist/auto-ui/bridge/openai-shim.js +0 -231
- package/dist/auto-ui/bridge/openai-shim.js.map +0 -1
- package/dist/auto-ui/bridge/photon-app.d.ts +0 -162
- package/dist/auto-ui/bridge/photon-app.d.ts.map +0 -1
- package/dist/auto-ui/bridge/photon-app.js +0 -460
- package/dist/auto-ui/bridge/photon-app.js.map +0 -1
- package/dist/auto-ui/daemon-tools.d.ts +0 -45
- package/dist/auto-ui/daemon-tools.d.ts.map +0 -1
- package/dist/auto-ui/daemon-tools.js +0 -581
- package/dist/auto-ui/daemon-tools.js.map +0 -1
- package/dist/auto-ui/design-system/index.d.ts +0 -21
- package/dist/auto-ui/design-system/index.d.ts.map +0 -1
- package/dist/auto-ui/design-system/index.js +0 -27
- package/dist/auto-ui/design-system/index.js.map +0 -1
- package/dist/auto-ui/design-system/transaction-ui.d.ts +0 -70
- package/dist/auto-ui/design-system/transaction-ui.d.ts.map +0 -1
- package/dist/auto-ui/design-system/transaction-ui.js +0 -982
- package/dist/auto-ui/design-system/transaction-ui.js.map +0 -1
- package/dist/auto-ui/playground-server.d.ts +0 -7
- package/dist/auto-ui/playground-server.d.ts.map +0 -1
- package/dist/auto-ui/playground-server.js +0 -840
- package/dist/auto-ui/playground-server.js.map +0 -1
- package/dist/auto-ui/rendering/components.d.ts +0 -29
- package/dist/auto-ui/rendering/components.d.ts.map +0 -1
- package/dist/auto-ui/rendering/components.js +0 -1341
- package/dist/auto-ui/rendering/components.js.map +0 -1
- package/dist/auto-ui/rendering/field-analyzer.d.ts +0 -104
- package/dist/auto-ui/rendering/field-analyzer.d.ts.map +0 -1
- package/dist/auto-ui/rendering/field-analyzer.js +0 -447
- package/dist/auto-ui/rendering/field-analyzer.js.map +0 -1
- package/dist/auto-ui/rendering/field-renderers.d.ts +0 -64
- package/dist/auto-ui/rendering/field-renderers.d.ts.map +0 -1
- package/dist/auto-ui/rendering/field-renderers.js +0 -317
- package/dist/auto-ui/rendering/field-renderers.js.map +0 -1
- package/dist/auto-ui/rendering/index.d.ts +0 -28
- package/dist/auto-ui/rendering/index.d.ts.map +0 -1
- package/dist/auto-ui/rendering/index.js +0 -60
- package/dist/auto-ui/rendering/index.js.map +0 -1
- package/dist/auto-ui/rendering/layout-selector.d.ts +0 -60
- package/dist/auto-ui/rendering/layout-selector.d.ts.map +0 -1
- package/dist/auto-ui/rendering/layout-selector.js +0 -476
- package/dist/auto-ui/rendering/layout-selector.js.map +0 -1
- package/dist/markdown-utils.d.ts +0 -8
- package/dist/markdown-utils.d.ts.map +0 -1
- package/dist/markdown-utils.js +0 -64
- package/dist/markdown-utils.js.map +0 -1
- package/dist/mcp-client.d.ts +0 -9
- package/dist/mcp-client.d.ts.map +0 -1
- package/dist/mcp-client.js +0 -11
- package/dist/mcp-client.js.map +0 -1
- package/dist/mcp-elicitation.d.ts +0 -32
- package/dist/mcp-elicitation.d.ts.map +0 -1
- package/dist/mcp-elicitation.js +0 -26
- package/dist/mcp-elicitation.js.map +0 -1
- package/dist/photons/builder-compass.photon.d.ts +0 -167
- package/dist/photons/builder-compass.photon.d.ts.map +0 -1
- package/dist/photons/builder-compass.photon.js +0 -816
- package/dist/photons/builder-compass.photon.js.map +0 -1
- package/dist/photons/builder-compass.photon.ts +0 -1129
- package/dist/photons/docs/ui/docs.html +0 -441
- package/dist/photons/docs.photon.d.ts +0 -237
- package/dist/photons/docs.photon.d.ts.map +0 -1
- package/dist/photons/docs.photon.js +0 -483
- package/dist/photons/docs.photon.js.map +0 -1
- package/dist/photons/docs.photon.ts +0 -536
- package/dist/photons/slides.photon.d.ts +0 -212
- package/dist/photons/slides.photon.d.ts.map +0 -1
- package/dist/photons/slides.photon.js +0 -355
- package/dist/photons/slides.photon.js.map +0 -1
- package/dist/photons/slides.photon.ts +0 -370
- package/dist/photons/spreadsheet/ui/spreadsheet.html +0 -779
- package/dist/photons/spreadsheet.photon.d.ts +0 -554
- package/dist/photons/spreadsheet.photon.d.ts.map +0 -1
- package/dist/photons/spreadsheet.photon.js +0 -1050
- package/dist/photons/spreadsheet.photon.js.map +0 -1
- package/dist/photons/spreadsheet.photon.ts +0 -1239
- package/dist/photons/ui/builder-compass.html +0 -1199
- package/dist/photons/ui/builder-compass.photon.html +0 -380
- package/dist/security-scanner.d.ts +0 -52
- package/dist/security-scanner.d.ts.map +0 -1
- package/dist/security-scanner.js +0 -181
- package/dist/security-scanner.js.map +0 -1
- package/dist/shared/performance.d.ts +0 -65
- package/dist/shared/performance.d.ts.map +0 -1
- package/dist/shared/performance.js +0 -136
- package/dist/shared/performance.js.map +0 -1
|
@@ -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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/tasks/store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/tasks/store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,KAAK,IAAI,EAAuD,MAAM,YAAY,CAAC;AAkB5F,2CAA2C;AAC3C,eAAO,MAAM,UAAU,uBAAqB,CAAC;AAM7C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,GAAG,IAAI,CAEpF;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAEzD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAEzE;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,GAAG,CAAC,EAAE,MAAM,GACX,IAAI,CAkBN;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAS/C;AAED,wBAAgB,UAAU,CACxB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CACd,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,CAClF,GACA,IAAI,GAAG,IAAI,CAcb;AAED,wBAAgB,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,CAejD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CA+B1C;AAED,qCAAqC;AACrC,wBAAgB,YAAY,IAAI,MAAM,CAErC"}
|
package/dist/tasks/store.js
CHANGED
|
@@ -8,11 +8,15 @@
|
|
|
8
8
|
import { mkdirSync, readdirSync, unlinkSync, existsSync } from 'fs';
|
|
9
9
|
import { readJSONSync, writeJSONSync } from '../shared/io.js';
|
|
10
10
|
import { join } from 'path';
|
|
11
|
-
import { homedir } from 'os';
|
|
12
11
|
import { randomUUID } from 'crypto';
|
|
13
12
|
import { EventEmitter } from 'events';
|
|
14
13
|
import { TERMINAL_STATES, DEFAULT_TTL, DEFAULT_POLL_INTERVAL } from './types.js';
|
|
15
|
-
|
|
14
|
+
import { getTasksDir, getLegacyTasksDir } from '@portel/photon-core';
|
|
15
|
+
// Tasks are ephemeral/global — use .data/tasks/
|
|
16
|
+
// Check legacy path for existing tasks during migration
|
|
17
|
+
const newDir = getTasksDir();
|
|
18
|
+
const legacyDir = getLegacyTasksDir();
|
|
19
|
+
const TASKS_DIR = existsSync(newDir) ? newDir : existsSync(legacyDir) ? legacyDir : newDir;
|
|
16
20
|
/** Ensure tasks directory exists (idempotent) */
|
|
17
21
|
function ensureDir() {
|
|
18
22
|
mkdirSync(TASKS_DIR, { recursive: true });
|
package/dist/tasks/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/tasks/store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/tasks/store.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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version Upgrade Notification
|
|
3
|
+
*
|
|
4
|
+
* Checks npm registry for newer versions and displays an unobtrusive notice
|
|
5
|
+
* with changelog highlights. Non-blocking — spawns a detached child process
|
|
6
|
+
* on cache miss so CLI startup is never delayed.
|
|
7
|
+
*
|
|
8
|
+
* Cache: .data/.version-check.json (24h TTL)
|
|
9
|
+
* Notice: shown once per new version (tracks notifiedVersion)
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Spawn a detached background process that fetches the latest version
|
|
13
|
+
* and changelog, then writes the cache file. The parent process does
|
|
14
|
+
* not wait for this — CLI exits immediately.
|
|
15
|
+
*/
|
|
16
|
+
export declare function refreshUpdateCache(): void;
|
|
17
|
+
/**
|
|
18
|
+
* Show update notice to stderr if a newer version is available.
|
|
19
|
+
*
|
|
20
|
+
* Returns silently if:
|
|
21
|
+
* - No cache exists (background refresh hasn't completed yet)
|
|
22
|
+
* - Current version is up to date
|
|
23
|
+
* - Already notified for this version
|
|
24
|
+
* - Running in MCP STDIO mode
|
|
25
|
+
*/
|
|
26
|
+
export declare function showUpdateNotice(): void;
|
|
27
|
+
//# sourceMappingURL=version-notify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-notify.d.ts","sourceRoot":"","sources":["../src/version-notify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA2DH;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAwCzC;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CA6BvC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version Upgrade Notification
|
|
3
|
+
*
|
|
4
|
+
* Checks npm registry for newer versions and displays an unobtrusive notice
|
|
5
|
+
* with changelog highlights. Non-blocking — spawns a detached child process
|
|
6
|
+
* on cache miss so CLI startup is never delayed.
|
|
7
|
+
*
|
|
8
|
+
* Cache: .data/.version-check.json (24h TTL)
|
|
9
|
+
* Notice: shown once per new version (tracks notifiedVersion)
|
|
10
|
+
*/
|
|
11
|
+
import * as fs from 'fs';
|
|
12
|
+
import * as path from 'path';
|
|
13
|
+
import { spawn } from 'child_process';
|
|
14
|
+
import { getDataRoot } from '@portel/photon-core';
|
|
15
|
+
import { PHOTON_VERSION } from './version.js';
|
|
16
|
+
const CACHE_TTL_MS = 24 * 60 * 60 * 1000; // 24 hours
|
|
17
|
+
function getCachePath() {
|
|
18
|
+
return path.join(getDataRoot(), '.version-check.json');
|
|
19
|
+
}
|
|
20
|
+
function readCache() {
|
|
21
|
+
try {
|
|
22
|
+
const cachePath = getCachePath();
|
|
23
|
+
if (!fs.existsSync(cachePath))
|
|
24
|
+
return null;
|
|
25
|
+
return JSON.parse(fs.readFileSync(cachePath, 'utf-8'));
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function writeCache(cache) {
|
|
32
|
+
try {
|
|
33
|
+
const cachePath = getCachePath();
|
|
34
|
+
fs.mkdirSync(path.dirname(cachePath), { recursive: true });
|
|
35
|
+
fs.writeFileSync(cachePath, JSON.stringify(cache, null, 2));
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// Best effort
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function isStale(cache) {
|
|
42
|
+
const checkedAt = new Date(cache.checkedAt).getTime();
|
|
43
|
+
return Date.now() - checkedAt > CACHE_TTL_MS;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Compare two semver strings.
|
|
47
|
+
* Returns 1 if a > b, -1 if a < b, 0 if equal.
|
|
48
|
+
*/
|
|
49
|
+
function compareSemver(a, b) {
|
|
50
|
+
const pa = a.split('.').map(Number);
|
|
51
|
+
const pb = b.split('.').map(Number);
|
|
52
|
+
for (let i = 0; i < 3; i++) {
|
|
53
|
+
if ((pa[i] || 0) > (pb[i] || 0))
|
|
54
|
+
return 1;
|
|
55
|
+
if ((pa[i] || 0) < (pb[i] || 0))
|
|
56
|
+
return -1;
|
|
57
|
+
}
|
|
58
|
+
return 0;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Spawn a detached background process that fetches the latest version
|
|
62
|
+
* and changelog, then writes the cache file. The parent process does
|
|
63
|
+
* not wait for this — CLI exits immediately.
|
|
64
|
+
*/
|
|
65
|
+
export function refreshUpdateCache() {
|
|
66
|
+
const cache = readCache();
|
|
67
|
+
if (cache && !isStale(cache))
|
|
68
|
+
return;
|
|
69
|
+
const cachePath = getCachePath();
|
|
70
|
+
const script = `
|
|
71
|
+
const fs = require('fs');
|
|
72
|
+
const { execSync } = require('child_process');
|
|
73
|
+
|
|
74
|
+
let latest = null;
|
|
75
|
+
try {
|
|
76
|
+
latest = execSync('npm view @portel/photon version', {
|
|
77
|
+
encoding: 'utf-8', timeout: 10000,
|
|
78
|
+
stdio: ['pipe', 'pipe', 'pipe']
|
|
79
|
+
}).trim();
|
|
80
|
+
} catch { process.exit(0); }
|
|
81
|
+
|
|
82
|
+
if (!latest) process.exit(0);
|
|
83
|
+
|
|
84
|
+
const existing = (() => {
|
|
85
|
+
try { return JSON.parse(fs.readFileSync(${JSON.stringify(cachePath)}, 'utf-8')); }
|
|
86
|
+
catch { return {}; }
|
|
87
|
+
})();
|
|
88
|
+
const data = {
|
|
89
|
+
latest,
|
|
90
|
+
checkedAt: new Date().toISOString(),
|
|
91
|
+
notifiedVersion: existing.notifiedVersion || undefined,
|
|
92
|
+
};
|
|
93
|
+
try {
|
|
94
|
+
fs.mkdirSync(require('path').dirname(${JSON.stringify(cachePath)}), { recursive: true });
|
|
95
|
+
fs.writeFileSync(${JSON.stringify(cachePath)}, JSON.stringify(data, null, 2));
|
|
96
|
+
} catch {}
|
|
97
|
+
`;
|
|
98
|
+
// Spawn detached — parent doesn't wait
|
|
99
|
+
const child = spawn(process.execPath, ['-e', script], {
|
|
100
|
+
detached: true,
|
|
101
|
+
stdio: 'ignore',
|
|
102
|
+
});
|
|
103
|
+
child.unref();
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Show update notice to stderr if a newer version is available.
|
|
107
|
+
*
|
|
108
|
+
* Returns silently if:
|
|
109
|
+
* - No cache exists (background refresh hasn't completed yet)
|
|
110
|
+
* - Current version is up to date
|
|
111
|
+
* - Already notified for this version
|
|
112
|
+
* - Running in MCP STDIO mode
|
|
113
|
+
*/
|
|
114
|
+
export function showUpdateNotice() {
|
|
115
|
+
if (process.env.PHOTON_TRANSPORT === 'stdio')
|
|
116
|
+
return;
|
|
117
|
+
const cache = readCache();
|
|
118
|
+
if (!cache)
|
|
119
|
+
return;
|
|
120
|
+
if (compareSemver(cache.latest, PHOTON_VERSION) <= 0)
|
|
121
|
+
return;
|
|
122
|
+
if (cache.notifiedVersion === cache.latest)
|
|
123
|
+
return;
|
|
124
|
+
const current = PHOTON_VERSION;
|
|
125
|
+
const latest = cache.latest;
|
|
126
|
+
const lines = [];
|
|
127
|
+
lines.push(` Update available: ${current} → ${latest}`);
|
|
128
|
+
lines.push(` Update: photon update`);
|
|
129
|
+
lines.push(` What's new: photon changelog`);
|
|
130
|
+
const width = Math.max(...lines.map((l) => l.length)) + 2;
|
|
131
|
+
const pad = (s) => s + ' '.repeat(Math.max(0, width - s.length));
|
|
132
|
+
console.error('');
|
|
133
|
+
console.error(`╭${'─'.repeat(width)}╮`);
|
|
134
|
+
for (const line of lines) {
|
|
135
|
+
console.error(`│${pad(line)}│`);
|
|
136
|
+
}
|
|
137
|
+
console.error(`╰${'─'.repeat(width)}╯`);
|
|
138
|
+
// Mark as notified so we don't show again for this version
|
|
139
|
+
cache.notifiedVersion = cache.latest;
|
|
140
|
+
writeCache(cache);
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=version-notify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-notify.js","sourceRoot":"","sources":["../src/version-notify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAQ9C,MAAM,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW;AAErD,SAAS,YAAY;IACnB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,qBAAqB,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,SAAS;IAChB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;QACjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,KAAmB;IACrC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;QACjC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,cAAc;IAChB,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,KAAmB;IAClC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;IACtD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,YAAY,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,CAAS,EAAE,CAAS;IACzC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO;IAErC,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;gDAe+B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;;;;;;;;;6CAS5B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;yBAC7C,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;;GAE/C,CAAC;IAEF,uCAAuC;IACvC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;QACpD,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAC;IACH,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB;IAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,OAAO;QAAE,OAAO;IAErD,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,IAAI,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC;QAAE,OAAO;IAC7D,IAAI,KAAK,CAAC,eAAe,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO;IAEnD,MAAM,OAAO,GAAG,cAAc,CAAC;IAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,uBAAuB,OAAO,MAAM,MAAM,EAAE,CAAC,CAAC;IACzD,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACzC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAE7C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAEzE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAExC,2DAA2D;IAC3D,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC;IACrC,UAAU,CAAC,KAAK,CAAC,CAAC;AACpB,CAAC"}
|