@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
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",
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
"@modelcontextprotocol/ext-apps": "^1.0.1",
|
|
113
113
|
"@modelcontextprotocol/sdk": "^1.25.2",
|
|
114
114
|
"@portel/cli": "^1.1.0",
|
|
115
|
-
"@portel/photon-core": "^2.
|
|
115
|
+
"@portel/photon-core": "^2.18.0",
|
|
116
116
|
"boxen": "^8.0.1",
|
|
117
117
|
"chalk": "^5.4.1",
|
|
118
118
|
"chart.js": "^4.5.1",
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OpenAI Apps SDK Compatibility Shim
|
|
3
|
-
*
|
|
4
|
-
* Provides window.openai API that translates to MCP Apps protocol.
|
|
5
|
-
* This allows apps built for ChatGPT to work in Photon hosts.
|
|
6
|
-
*/
|
|
7
|
-
import type { PhotonApp } from './photon-app.js';
|
|
8
|
-
import type { OpenAIAPI } from './types.js';
|
|
9
|
-
/**
|
|
10
|
-
* Generate the OpenAI shim code as inline JavaScript
|
|
11
|
-
*
|
|
12
|
-
* This gets injected into the iframe along with the PhotonApp.
|
|
13
|
-
* It creates a window.openai object that delegates to window.photon.
|
|
14
|
-
*/
|
|
15
|
-
export declare function generateOpenAIShimCode(): string;
|
|
16
|
-
/**
|
|
17
|
-
* Create OpenAI shim wrapper (for use with PhotonApp in browser)
|
|
18
|
-
*/
|
|
19
|
-
export declare function createOpenAIShim(photonApp: PhotonApp): OpenAIAPI;
|
|
20
|
-
//# sourceMappingURL=openai-shim.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openai-shim.d.ts","sourceRoot":"","sources":["../../../src/auto-ui/bridge/openai-shim.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAkK/C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAoEhE"}
|
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generate the OpenAI shim code as inline JavaScript
|
|
3
|
-
*
|
|
4
|
-
* This gets injected into the iframe along with the PhotonApp.
|
|
5
|
-
* It creates a window.openai object that delegates to window.photon.
|
|
6
|
-
*/
|
|
7
|
-
export function generateOpenAIShimCode() {
|
|
8
|
-
return `
|
|
9
|
-
// OpenAI Apps SDK Shim - delegates to window.photon
|
|
10
|
-
(function() {
|
|
11
|
-
'use strict';
|
|
12
|
-
|
|
13
|
-
var widgetState = {};
|
|
14
|
-
var pendingCalls = {};
|
|
15
|
-
var callIdCounter = 0;
|
|
16
|
-
|
|
17
|
-
function generateCallId() {
|
|
18
|
-
return 'openai_' + (++callIdCounter) + '_' + Math.random().toString(36).slice(2);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
function postToHost(msg) {
|
|
22
|
-
window.parent.postMessage(msg, '*');
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
window.openai = {
|
|
26
|
-
// Context properties - delegate to photon
|
|
27
|
-
get theme() { return window.photon ? window.photon.theme : 'dark'; },
|
|
28
|
-
get displayMode() { return 'inline'; },
|
|
29
|
-
get locale() { return window.photon ? window.photon.locale : 'en-US'; },
|
|
30
|
-
get maxHeight() { return 800; },
|
|
31
|
-
get toolInput() { return window.photon ? window.photon.toolInput : {}; },
|
|
32
|
-
get toolOutput() { return window.photon ? window.photon.toolOutput : null; },
|
|
33
|
-
get widgetState() { return widgetState; },
|
|
34
|
-
get toolResponseMetadata() { return {}; },
|
|
35
|
-
|
|
36
|
-
// Methods
|
|
37
|
-
setWidgetState: function(state) {
|
|
38
|
-
widgetState = state;
|
|
39
|
-
if (window.photon) window.photon.setWidgetState(state);
|
|
40
|
-
},
|
|
41
|
-
|
|
42
|
-
callTool: function(name, args) {
|
|
43
|
-
if (window.photon) return window.photon.invoke(name, args);
|
|
44
|
-
return Promise.reject(new Error('Photon not initialized'));
|
|
45
|
-
},
|
|
46
|
-
|
|
47
|
-
sendFollowUpMessage: function(opts) {
|
|
48
|
-
postToHost({ type: 'photon:follow-up', message: opts.prompt });
|
|
49
|
-
return Promise.resolve();
|
|
50
|
-
},
|
|
51
|
-
|
|
52
|
-
uploadFile: function(file) {
|
|
53
|
-
var callId = generateCallId();
|
|
54
|
-
return new Promise(function(resolve, reject) {
|
|
55
|
-
pendingCalls[callId] = { resolve: resolve, reject: reject };
|
|
56
|
-
|
|
57
|
-
var reader = new FileReader();
|
|
58
|
-
reader.onload = function() {
|
|
59
|
-
postToHost({
|
|
60
|
-
type: 'photon:upload-file',
|
|
61
|
-
callId: callId,
|
|
62
|
-
fileName: file.name,
|
|
63
|
-
fileType: file.type,
|
|
64
|
-
fileSize: file.size,
|
|
65
|
-
data: reader.result
|
|
66
|
-
});
|
|
67
|
-
};
|
|
68
|
-
reader.onerror = function() {
|
|
69
|
-
delete pendingCalls[callId];
|
|
70
|
-
reject(new Error('Failed to read file'));
|
|
71
|
-
};
|
|
72
|
-
reader.readAsDataURL(file);
|
|
73
|
-
|
|
74
|
-
setTimeout(function() {
|
|
75
|
-
if (pendingCalls[callId]) {
|
|
76
|
-
delete pendingCalls[callId];
|
|
77
|
-
reject(new Error('File upload timeout'));
|
|
78
|
-
}
|
|
79
|
-
}, 60000);
|
|
80
|
-
});
|
|
81
|
-
},
|
|
82
|
-
|
|
83
|
-
getFileDownloadUrl: function(opts) {
|
|
84
|
-
var callId = generateCallId();
|
|
85
|
-
return new Promise(function(resolve, reject) {
|
|
86
|
-
pendingCalls[callId] = { resolve: resolve, reject: reject };
|
|
87
|
-
postToHost({
|
|
88
|
-
type: 'photon:get-file-url',
|
|
89
|
-
callId: callId,
|
|
90
|
-
fileId: opts.fileId
|
|
91
|
-
});
|
|
92
|
-
setTimeout(function() {
|
|
93
|
-
if (pendingCalls[callId]) {
|
|
94
|
-
delete pendingCalls[callId];
|
|
95
|
-
reject(new Error('Get file URL timeout'));
|
|
96
|
-
}
|
|
97
|
-
}, 30000);
|
|
98
|
-
});
|
|
99
|
-
},
|
|
100
|
-
|
|
101
|
-
requestDisplayMode: function(mode) {
|
|
102
|
-
postToHost({ type: 'photon:request-display-mode', mode: mode });
|
|
103
|
-
return Promise.resolve();
|
|
104
|
-
},
|
|
105
|
-
|
|
106
|
-
requestModal: function(opts) {
|
|
107
|
-
var callId = generateCallId();
|
|
108
|
-
return new Promise(function(resolve, reject) {
|
|
109
|
-
pendingCalls[callId] = { resolve: resolve, reject: reject };
|
|
110
|
-
postToHost({
|
|
111
|
-
type: 'photon:request-modal',
|
|
112
|
-
callId: callId,
|
|
113
|
-
template: opts.template,
|
|
114
|
-
params: opts.params
|
|
115
|
-
});
|
|
116
|
-
setTimeout(function() {
|
|
117
|
-
if (pendingCalls[callId]) {
|
|
118
|
-
delete pendingCalls[callId];
|
|
119
|
-
reject(new Error('Modal request timeout'));
|
|
120
|
-
}
|
|
121
|
-
}, 300000);
|
|
122
|
-
});
|
|
123
|
-
},
|
|
124
|
-
|
|
125
|
-
notifyIntrinsicHeight: function(height) {
|
|
126
|
-
// Use MCP Apps size notification
|
|
127
|
-
window.parent.postMessage({
|
|
128
|
-
jsonrpc: '2.0',
|
|
129
|
-
method: 'ui/notifications/size-changed',
|
|
130
|
-
params: { height: height }
|
|
131
|
-
}, '*');
|
|
132
|
-
},
|
|
133
|
-
|
|
134
|
-
openExternal: function(opts) {
|
|
135
|
-
window.open(opts.href, '_blank', 'noopener,noreferrer');
|
|
136
|
-
},
|
|
137
|
-
|
|
138
|
-
setOpenInAppUrl: function(opts) {
|
|
139
|
-
postToHost({ type: 'photon:set-open-in-app-url', href: opts.href });
|
|
140
|
-
}
|
|
141
|
-
};
|
|
142
|
-
|
|
143
|
-
// Handle responses from host
|
|
144
|
-
window.addEventListener('message', function(e) {
|
|
145
|
-
var m = e.data;
|
|
146
|
-
if (!m || typeof m !== 'object') return;
|
|
147
|
-
|
|
148
|
-
if (m.type === 'photon:upload-file-response' && pendingCalls[m.callId]) {
|
|
149
|
-
var p = pendingCalls[m.callId];
|
|
150
|
-
delete pendingCalls[m.callId];
|
|
151
|
-
if (m.error) p.reject(new Error(m.error));
|
|
152
|
-
else p.resolve({ fileId: m.fileId });
|
|
153
|
-
}
|
|
154
|
-
if (m.type === 'photon:get-file-url-response' && pendingCalls[m.callId]) {
|
|
155
|
-
var p = pendingCalls[m.callId];
|
|
156
|
-
delete pendingCalls[m.callId];
|
|
157
|
-
if (m.error) p.reject(new Error(m.error));
|
|
158
|
-
else p.resolve(m.url);
|
|
159
|
-
}
|
|
160
|
-
if (m.type === 'photon:request-modal-response' && pendingCalls[m.callId]) {
|
|
161
|
-
var p = pendingCalls[m.callId];
|
|
162
|
-
delete pendingCalls[m.callId];
|
|
163
|
-
if (m.error) p.reject(new Error(m.error));
|
|
164
|
-
else p.resolve(m.result);
|
|
165
|
-
}
|
|
166
|
-
});
|
|
167
|
-
})();
|
|
168
|
-
`;
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Create OpenAI shim wrapper (for use with PhotonApp in browser)
|
|
172
|
-
*/
|
|
173
|
-
export function createOpenAIShim(photonApp) {
|
|
174
|
-
let widgetState = {};
|
|
175
|
-
return {
|
|
176
|
-
get theme() {
|
|
177
|
-
return photonApp.theme;
|
|
178
|
-
},
|
|
179
|
-
get displayMode() {
|
|
180
|
-
return 'inline';
|
|
181
|
-
},
|
|
182
|
-
get locale() {
|
|
183
|
-
return photonApp.locale;
|
|
184
|
-
},
|
|
185
|
-
get maxHeight() {
|
|
186
|
-
return 800;
|
|
187
|
-
},
|
|
188
|
-
get toolInput() {
|
|
189
|
-
return photonApp.toolInput;
|
|
190
|
-
},
|
|
191
|
-
get toolOutput() {
|
|
192
|
-
return photonApp.toolOutput;
|
|
193
|
-
},
|
|
194
|
-
get widgetState() {
|
|
195
|
-
return widgetState;
|
|
196
|
-
},
|
|
197
|
-
setWidgetState(state) {
|
|
198
|
-
widgetState = state;
|
|
199
|
-
photonApp.setWidgetState(state);
|
|
200
|
-
},
|
|
201
|
-
callTool(name, args) {
|
|
202
|
-
return photonApp.invoke(name, args);
|
|
203
|
-
},
|
|
204
|
-
sendFollowUpMessage(_options) {
|
|
205
|
-
// Not supported in Photon
|
|
206
|
-
return Promise.resolve();
|
|
207
|
-
},
|
|
208
|
-
uploadFile(_file) {
|
|
209
|
-
return Promise.reject(new Error('File upload not supported'));
|
|
210
|
-
},
|
|
211
|
-
getFileDownloadUrl(_options) {
|
|
212
|
-
return Promise.reject(new Error('File download not supported'));
|
|
213
|
-
},
|
|
214
|
-
requestDisplayMode(_mode) {
|
|
215
|
-
return Promise.resolve();
|
|
216
|
-
},
|
|
217
|
-
requestModal(_options) {
|
|
218
|
-
return Promise.reject(new Error('Modal not supported'));
|
|
219
|
-
},
|
|
220
|
-
notifyIntrinsicHeight(height) {
|
|
221
|
-
photonApp.sendSizeChanged({ height });
|
|
222
|
-
},
|
|
223
|
-
openExternal(options) {
|
|
224
|
-
window.open(options.href, '_blank', 'noopener,noreferrer');
|
|
225
|
-
},
|
|
226
|
-
setOpenInAppUrl(_options) {
|
|
227
|
-
// Not supported
|
|
228
|
-
},
|
|
229
|
-
};
|
|
230
|
-
}
|
|
231
|
-
//# sourceMappingURL=openai-shim.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openai-shim.js","sourceRoot":"","sources":["../../../src/auto-ui/bridge/openai-shim.ts"],"names":[],"mappings":"AASA;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgKR,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAoB;IACnD,IAAI,WAAW,GAAY,EAAE,CAAC;IAE9B,OAAO;QACL,IAAI,KAAK;YACP,OAAO,SAAS,CAAC,KAAK,CAAC;QACzB,CAAC;QACD,IAAI,WAAW;YACb,OAAO,QAAiB,CAAC;QAC3B,CAAC;QACD,IAAI,MAAM;YACR,OAAO,SAAS,CAAC,MAAM,CAAC;QAC1B,CAAC;QACD,IAAI,SAAS;YACX,OAAO,GAAG,CAAC;QACb,CAAC;QACD,IAAI,SAAS;YACX,OAAO,SAAS,CAAC,SAAS,CAAC;QAC7B,CAAC;QACD,IAAI,UAAU;YACZ,OAAO,SAAS,CAAC,UAAU,CAAC;QAC9B,CAAC;QACD,IAAI,WAAW;YACb,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,cAAc,CAAC,KAAc;YAC3B,WAAW,GAAG,KAAK,CAAC;YACpB,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QAED,QAAQ,CAAC,IAAY,EAAE,IAA6B;YAClD,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC;QAED,mBAAmB,CAAC,QAA4B;YAC9C,0BAA0B;YAC1B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QAED,UAAU,CAAC,KAAW;YACpB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,kBAAkB,CAAC,QAA4B;YAC7C,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,kBAAkB,CAAC,KAAsC;YACvD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QAED,YAAY,CAAC,QAA+C;YAC1D,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,qBAAqB,CAAC,MAAc;YAClC,SAAS,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACxC,CAAC;QAED,YAAY,CAAC,OAAyB;YACpC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,qBAAqB,CAAC,CAAC;QAC7D,CAAC;QAED,eAAe,CAAC,QAA0B;YACxC,gBAAgB;QAClB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PhotonApp - View-side bridge using MCP Apps Extension SDK
|
|
3
|
-
*
|
|
4
|
-
* Extends the standard App class from @modelcontextprotocol/ext-apps
|
|
5
|
-
* to provide the window.photon API for photon UIs.
|
|
6
|
-
*
|
|
7
|
-
* Usage in UI templates:
|
|
8
|
-
* ```javascript
|
|
9
|
-
* const app = new PhotonApp('kanban');
|
|
10
|
-
* await app.connect();
|
|
11
|
-
*
|
|
12
|
-
* app.onResult((data) => renderBoard(data));
|
|
13
|
-
* const boards = await app.invoke('boards');
|
|
14
|
-
* ```
|
|
15
|
-
*/
|
|
16
|
-
import type { ProgressNotification, StatusNotification, StreamNotification, EmitNotification, SizeConstraints } from './types.js';
|
|
17
|
-
type Listener<T> = (data: T) => void;
|
|
18
|
-
/**
|
|
19
|
-
* PhotonApp class for UI templates
|
|
20
|
-
*
|
|
21
|
-
* This runs in the browser iframe and communicates with the host
|
|
22
|
-
* using the MCP Apps Extension protocol.
|
|
23
|
-
*/
|
|
24
|
-
export declare class PhotonApp {
|
|
25
|
-
private _name;
|
|
26
|
-
private _toolOutput;
|
|
27
|
-
private _toolInput;
|
|
28
|
-
private _widgetState;
|
|
29
|
-
private _theme;
|
|
30
|
-
private _locale;
|
|
31
|
-
private _hostContext;
|
|
32
|
-
private _pendingCalls;
|
|
33
|
-
private _callIdCounter;
|
|
34
|
-
private _resultListeners;
|
|
35
|
-
private _themeListeners;
|
|
36
|
-
private _progressListeners;
|
|
37
|
-
private _statusListeners;
|
|
38
|
-
private _streamListeners;
|
|
39
|
-
private _emitListeners;
|
|
40
|
-
constructor(name: string);
|
|
41
|
-
/**
|
|
42
|
-
* Set up message handler for communication with host
|
|
43
|
-
*/
|
|
44
|
-
private _setupMessageHandler;
|
|
45
|
-
/**
|
|
46
|
-
* Handle JSON-RPC 2.0 messages (MCP Apps protocol)
|
|
47
|
-
*/
|
|
48
|
-
private _handleJsonRpcMessage;
|
|
49
|
-
/**
|
|
50
|
-
* Handle legacy photon: messages for backward compatibility
|
|
51
|
-
*/
|
|
52
|
-
private _handleLegacyMessage;
|
|
53
|
-
/**
|
|
54
|
-
* Handle ui/initialize message
|
|
55
|
-
*/
|
|
56
|
-
private _handleInitialize;
|
|
57
|
-
/**
|
|
58
|
-
* Handle host context changes (theme, etc.)
|
|
59
|
-
*/
|
|
60
|
-
private _handleHostContextChanged;
|
|
61
|
-
/**
|
|
62
|
-
* Apply theme class to document
|
|
63
|
-
*/
|
|
64
|
-
private _applyTheme;
|
|
65
|
-
/**
|
|
66
|
-
* Apply theme CSS variables
|
|
67
|
-
*/
|
|
68
|
-
private _applyThemeTokens;
|
|
69
|
-
/**
|
|
70
|
-
* Post message to host
|
|
71
|
-
*/
|
|
72
|
-
private _postToHost;
|
|
73
|
-
/**
|
|
74
|
-
* Generate unique call ID
|
|
75
|
-
*/
|
|
76
|
-
private _generateCallId;
|
|
77
|
-
/**
|
|
78
|
-
* Extract data from MCP result format
|
|
79
|
-
*/
|
|
80
|
-
private _extractData;
|
|
81
|
-
/**
|
|
82
|
-
* Connect to host and perform MCP Apps handshake
|
|
83
|
-
*/
|
|
84
|
-
connect(): Promise<void>;
|
|
85
|
-
/**
|
|
86
|
-
* Current tool output data
|
|
87
|
-
*/
|
|
88
|
-
get toolOutput(): any;
|
|
89
|
-
/**
|
|
90
|
-
* Current tool input
|
|
91
|
-
*/
|
|
92
|
-
get toolInput(): Record<string, unknown>;
|
|
93
|
-
/**
|
|
94
|
-
* Widget state
|
|
95
|
-
*/
|
|
96
|
-
get widgetState(): unknown;
|
|
97
|
-
/**
|
|
98
|
-
* Set widget state
|
|
99
|
-
*/
|
|
100
|
-
setWidgetState(state: unknown): void;
|
|
101
|
-
/**
|
|
102
|
-
* Current theme
|
|
103
|
-
*/
|
|
104
|
-
get theme(): 'light' | 'dark';
|
|
105
|
-
/**
|
|
106
|
-
* Current locale
|
|
107
|
-
*/
|
|
108
|
-
get locale(): string;
|
|
109
|
-
/**
|
|
110
|
-
* Host context from initialization
|
|
111
|
-
*/
|
|
112
|
-
get hostContext(): any;
|
|
113
|
-
/**
|
|
114
|
-
* Register result handler
|
|
115
|
-
*/
|
|
116
|
-
onResult(cb: Listener<any>): () => void;
|
|
117
|
-
/**
|
|
118
|
-
* Register theme change handler
|
|
119
|
-
*/
|
|
120
|
-
onThemeChange(cb: Listener<'light' | 'dark'>): () => void;
|
|
121
|
-
/**
|
|
122
|
-
* Register progress notification handler
|
|
123
|
-
*/
|
|
124
|
-
onProgress(cb: Listener<ProgressNotification>): () => void;
|
|
125
|
-
/**
|
|
126
|
-
* Register status notification handler
|
|
127
|
-
*/
|
|
128
|
-
onStatus(cb: Listener<StatusNotification>): () => void;
|
|
129
|
-
/**
|
|
130
|
-
* Register stream notification handler
|
|
131
|
-
*/
|
|
132
|
-
onStream(cb: Listener<StreamNotification>): () => void;
|
|
133
|
-
/**
|
|
134
|
-
* Register emit notification handler
|
|
135
|
-
*/
|
|
136
|
-
onEmit(cb: Listener<EmitNotification>): () => void;
|
|
137
|
-
/**
|
|
138
|
-
* Call a tool on the server
|
|
139
|
-
*/
|
|
140
|
-
invoke(name: string, args?: Record<string, unknown>): Promise<any>;
|
|
141
|
-
/**
|
|
142
|
-
* Alias for invoke (compatibility)
|
|
143
|
-
*/
|
|
144
|
-
callTool(name: string, args?: Record<string, unknown>): Promise<any>;
|
|
145
|
-
/**
|
|
146
|
-
* Send size change notification to host
|
|
147
|
-
*/
|
|
148
|
-
sendSizeChanged(size: {
|
|
149
|
-
width?: number;
|
|
150
|
-
height?: number;
|
|
151
|
-
}): void;
|
|
152
|
-
/**
|
|
153
|
-
* Parse size constraints from meta tag
|
|
154
|
-
*/
|
|
155
|
-
static parseSizeMeta(): SizeConstraints;
|
|
156
|
-
/**
|
|
157
|
-
* Set up automatic size reporting with ResizeObserver
|
|
158
|
-
*/
|
|
159
|
-
setupAutoResize(target?: HTMLElement): () => void;
|
|
160
|
-
}
|
|
161
|
-
export {};
|
|
162
|
-
//# sourceMappingURL=photon-app.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"photon-app.d.ts","sourceRoot":"","sources":["../../../src/auto-ui/bridge/photon-app.ts"],"names":[],"mappings":"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"}
|