@portel/photon 1.17.6 → 1.19.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.
Files changed (194) hide show
  1. package/dist/auto-ui/beam/photon-management.d.ts.map +1 -1
  2. package/dist/auto-ui/beam/photon-management.js +28 -1
  3. package/dist/auto-ui/beam/photon-management.js.map +1 -1
  4. package/dist/auto-ui/beam/routes/api-marketplace.d.ts.map +1 -1
  5. package/dist/auto-ui/beam/routes/api-marketplace.js +10 -5
  6. package/dist/auto-ui/beam/routes/api-marketplace.js.map +1 -1
  7. package/dist/auto-ui/beam.d.ts.map +1 -1
  8. package/dist/auto-ui/beam.js +14 -4
  9. package/dist/auto-ui/beam.js.map +1 -1
  10. package/dist/auto-ui/streamable-http-transport.d.ts.map +1 -1
  11. package/dist/auto-ui/streamable-http-transport.js +259 -88
  12. package/dist/auto-ui/streamable-http-transport.js.map +1 -1
  13. package/dist/auto-ui/types.d.ts +2 -0
  14. package/dist/auto-ui/types.d.ts.map +1 -1
  15. package/dist/auto-ui/types.js +5 -0
  16. package/dist/auto-ui/types.js.map +1 -1
  17. package/dist/beam-form.bundle.js +5 -3
  18. package/dist/beam-form.bundle.js.map +2 -2
  19. package/dist/beam.bundle.js +912 -59
  20. package/dist/beam.bundle.js.map +3 -3
  21. package/dist/claude-code-plugin.js +1 -1
  22. package/dist/cli/commands/beam.d.ts.map +1 -1
  23. package/dist/cli/commands/beam.js +8 -2
  24. package/dist/cli/commands/beam.js.map +1 -1
  25. package/dist/cli/commands/changelog.d.ts +9 -0
  26. package/dist/cli/commands/changelog.d.ts.map +1 -0
  27. package/dist/cli/commands/changelog.js +133 -0
  28. package/dist/cli/commands/changelog.js.map +1 -0
  29. package/dist/cli/commands/maker.d.ts.map +1 -1
  30. package/dist/cli/commands/maker.js +23 -2
  31. package/dist/cli/commands/maker.js.map +1 -1
  32. package/dist/cli/commands/mcp.d.ts.map +1 -1
  33. package/dist/cli/commands/mcp.js +53 -0
  34. package/dist/cli/commands/mcp.js.map +1 -1
  35. package/dist/cli/commands/package.d.ts.map +1 -1
  36. package/dist/cli/commands/package.js +18 -2
  37. package/dist/cli/commands/package.js.map +1 -1
  38. package/dist/cli/commands/run.d.ts.map +1 -1
  39. package/dist/cli/commands/run.js +1 -0
  40. package/dist/cli/commands/run.js.map +1 -1
  41. package/dist/cli/commands/update.d.ts +3 -2
  42. package/dist/cli/commands/update.d.ts.map +1 -1
  43. package/dist/cli/commands/update.js +50 -43
  44. package/dist/cli/commands/update.js.map +1 -1
  45. package/dist/cli/index.d.ts.map +1 -1
  46. package/dist/cli/index.js +16 -2
  47. package/dist/cli/index.js.map +1 -1
  48. package/dist/cli-alias.js +1 -1
  49. package/dist/cli-alias.js.map +1 -1
  50. package/dist/context-store.d.ts +23 -33
  51. package/dist/context-store.d.ts.map +1 -1
  52. package/dist/context-store.js +147 -97
  53. package/dist/context-store.js.map +1 -1
  54. package/dist/context.d.ts +15 -10
  55. package/dist/context.d.ts.map +1 -1
  56. package/dist/context.js +37 -13
  57. package/dist/context.js.map +1 -1
  58. package/dist/daemon/server.js +4 -2
  59. package/dist/daemon/server.js.map +1 -1
  60. package/dist/data-migration.d.ts +27 -0
  61. package/dist/data-migration.d.ts.map +1 -0
  62. package/dist/data-migration.js +307 -0
  63. package/dist/data-migration.js.map +1 -0
  64. package/dist/editor-support/docblock-tag-catalog.d.ts.map +1 -1
  65. package/dist/editor-support/docblock-tag-catalog.js +6 -0
  66. package/dist/editor-support/docblock-tag-catalog.js.map +1 -1
  67. package/dist/loader.d.ts +10 -0
  68. package/dist/loader.d.ts.map +1 -1
  69. package/dist/loader.js +106 -20
  70. package/dist/loader.js.map +1 -1
  71. package/dist/marketplace-manager.d.ts.map +1 -1
  72. package/dist/marketplace-manager.js +25 -5
  73. package/dist/marketplace-manager.js.map +1 -1
  74. package/dist/photon-cli-runner.d.ts.map +1 -1
  75. package/dist/photon-cli-runner.js +56 -19
  76. package/dist/photon-cli-runner.js.map +1 -1
  77. package/dist/photon-doc-extractor.d.ts +1 -0
  78. package/dist/photon-doc-extractor.d.ts.map +1 -1
  79. package/dist/photon-doc-extractor.js +6 -0
  80. package/dist/photon-doc-extractor.js.map +1 -1
  81. package/dist/readme-syncer.d.ts.map +1 -1
  82. package/dist/readme-syncer.js +6 -1
  83. package/dist/readme-syncer.js.map +1 -1
  84. package/dist/server.d.ts +40 -0
  85. package/dist/server.d.ts.map +1 -1
  86. package/dist/server.js +298 -29
  87. package/dist/server.js.map +1 -1
  88. package/dist/shared/audit.js +4 -4
  89. package/dist/shared/audit.js.map +1 -1
  90. package/dist/tasks/executor.d.ts +47 -0
  91. package/dist/tasks/executor.d.ts.map +1 -0
  92. package/dist/tasks/executor.js +180 -0
  93. package/dist/tasks/executor.js.map +1 -0
  94. package/dist/tasks/store.d.ts +13 -6
  95. package/dist/tasks/store.d.ts.map +1 -1
  96. package/dist/tasks/store.js +56 -11
  97. package/dist/tasks/store.js.map +1 -1
  98. package/dist/tasks/types.d.ts +23 -2
  99. package/dist/tasks/types.d.ts.map +1 -1
  100. package/dist/tasks/types.js +23 -3
  101. package/dist/tasks/types.js.map +1 -1
  102. package/dist/version-notify.d.ts +27 -0
  103. package/dist/version-notify.d.ts.map +1 -0
  104. package/dist/version-notify.js +142 -0
  105. package/dist/version-notify.js.map +1 -0
  106. package/package.json +5 -4
  107. package/dist/auto-ui/bridge/openai-shim.d.ts +0 -20
  108. package/dist/auto-ui/bridge/openai-shim.d.ts.map +0 -1
  109. package/dist/auto-ui/bridge/openai-shim.js +0 -231
  110. package/dist/auto-ui/bridge/openai-shim.js.map +0 -1
  111. package/dist/auto-ui/bridge/photon-app.d.ts +0 -162
  112. package/dist/auto-ui/bridge/photon-app.d.ts.map +0 -1
  113. package/dist/auto-ui/bridge/photon-app.js +0 -460
  114. package/dist/auto-ui/bridge/photon-app.js.map +0 -1
  115. package/dist/auto-ui/daemon-tools.d.ts +0 -45
  116. package/dist/auto-ui/daemon-tools.d.ts.map +0 -1
  117. package/dist/auto-ui/daemon-tools.js +0 -581
  118. package/dist/auto-ui/daemon-tools.js.map +0 -1
  119. package/dist/auto-ui/design-system/index.d.ts +0 -21
  120. package/dist/auto-ui/design-system/index.d.ts.map +0 -1
  121. package/dist/auto-ui/design-system/index.js +0 -27
  122. package/dist/auto-ui/design-system/index.js.map +0 -1
  123. package/dist/auto-ui/design-system/transaction-ui.d.ts +0 -70
  124. package/dist/auto-ui/design-system/transaction-ui.d.ts.map +0 -1
  125. package/dist/auto-ui/design-system/transaction-ui.js +0 -982
  126. package/dist/auto-ui/design-system/transaction-ui.js.map +0 -1
  127. package/dist/auto-ui/playground-server.d.ts +0 -7
  128. package/dist/auto-ui/playground-server.d.ts.map +0 -1
  129. package/dist/auto-ui/playground-server.js +0 -840
  130. package/dist/auto-ui/playground-server.js.map +0 -1
  131. package/dist/auto-ui/rendering/components.d.ts +0 -29
  132. package/dist/auto-ui/rendering/components.d.ts.map +0 -1
  133. package/dist/auto-ui/rendering/components.js +0 -1341
  134. package/dist/auto-ui/rendering/components.js.map +0 -1
  135. package/dist/auto-ui/rendering/field-analyzer.d.ts +0 -104
  136. package/dist/auto-ui/rendering/field-analyzer.d.ts.map +0 -1
  137. package/dist/auto-ui/rendering/field-analyzer.js +0 -447
  138. package/dist/auto-ui/rendering/field-analyzer.js.map +0 -1
  139. package/dist/auto-ui/rendering/field-renderers.d.ts +0 -64
  140. package/dist/auto-ui/rendering/field-renderers.d.ts.map +0 -1
  141. package/dist/auto-ui/rendering/field-renderers.js +0 -317
  142. package/dist/auto-ui/rendering/field-renderers.js.map +0 -1
  143. package/dist/auto-ui/rendering/index.d.ts +0 -28
  144. package/dist/auto-ui/rendering/index.d.ts.map +0 -1
  145. package/dist/auto-ui/rendering/index.js +0 -60
  146. package/dist/auto-ui/rendering/index.js.map +0 -1
  147. package/dist/auto-ui/rendering/layout-selector.d.ts +0 -60
  148. package/dist/auto-ui/rendering/layout-selector.d.ts.map +0 -1
  149. package/dist/auto-ui/rendering/layout-selector.js +0 -476
  150. package/dist/auto-ui/rendering/layout-selector.js.map +0 -1
  151. package/dist/markdown-utils.d.ts +0 -8
  152. package/dist/markdown-utils.d.ts.map +0 -1
  153. package/dist/markdown-utils.js +0 -64
  154. package/dist/markdown-utils.js.map +0 -1
  155. package/dist/mcp-client.d.ts +0 -9
  156. package/dist/mcp-client.d.ts.map +0 -1
  157. package/dist/mcp-client.js +0 -11
  158. package/dist/mcp-client.js.map +0 -1
  159. package/dist/mcp-elicitation.d.ts +0 -32
  160. package/dist/mcp-elicitation.d.ts.map +0 -1
  161. package/dist/mcp-elicitation.js +0 -26
  162. package/dist/mcp-elicitation.js.map +0 -1
  163. package/dist/photons/builder-compass.photon.d.ts +0 -167
  164. package/dist/photons/builder-compass.photon.d.ts.map +0 -1
  165. package/dist/photons/builder-compass.photon.js +0 -816
  166. package/dist/photons/builder-compass.photon.js.map +0 -1
  167. package/dist/photons/builder-compass.photon.ts +0 -1129
  168. package/dist/photons/docs/ui/docs.html +0 -441
  169. package/dist/photons/docs.photon.d.ts +0 -237
  170. package/dist/photons/docs.photon.d.ts.map +0 -1
  171. package/dist/photons/docs.photon.js +0 -483
  172. package/dist/photons/docs.photon.js.map +0 -1
  173. package/dist/photons/docs.photon.ts +0 -536
  174. package/dist/photons/slides.photon.d.ts +0 -212
  175. package/dist/photons/slides.photon.d.ts.map +0 -1
  176. package/dist/photons/slides.photon.js +0 -355
  177. package/dist/photons/slides.photon.js.map +0 -1
  178. package/dist/photons/slides.photon.ts +0 -370
  179. package/dist/photons/spreadsheet/ui/spreadsheet.html +0 -779
  180. package/dist/photons/spreadsheet.photon.d.ts +0 -554
  181. package/dist/photons/spreadsheet.photon.d.ts.map +0 -1
  182. package/dist/photons/spreadsheet.photon.js +0 -1050
  183. package/dist/photons/spreadsheet.photon.js.map +0 -1
  184. package/dist/photons/spreadsheet.photon.ts +0 -1239
  185. package/dist/photons/ui/builder-compass.html +0 -1199
  186. package/dist/photons/ui/builder-compass.photon.html +0 -380
  187. package/dist/security-scanner.d.ts +0 -52
  188. package/dist/security-scanner.d.ts.map +0 -1
  189. package/dist/security-scanner.js +0 -181
  190. package/dist/security-scanner.js.map +0 -1
  191. package/dist/shared/performance.d.ts +0 -65
  192. package/dist/shared/performance.d.ts.map +0 -1
  193. package/dist/shared/performance.js +0 -136
  194. 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.17.6",
3
+ "version": "1.19.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",
@@ -14,7 +14,7 @@
14
14
  ],
15
15
  "scripts": {
16
16
  "prepare": "git config core.hooksPath .githooks || true",
17
- "build": "npm run lint -- --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && tsx scripts/build-beam.ts",
17
+ "build": "eslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && tsx scripts/build-beam.ts",
18
18
  "dev": "tsc --watch",
19
19
  "lint": "eslint src/",
20
20
  "lint:fix": "eslint src/ --fix",
@@ -26,7 +26,8 @@
26
26
  "watch:beam": "tsx scripts/build-beam.ts --watch",
27
27
  "dev:beam": "npm run build && npm run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & tsx scripts/build-beam.ts --watch & sleep 1 && tsx watch src/cli.ts beam)",
28
28
  "prepublishOnly": "node -e \"const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }\" && node -e \"const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is npm-linked. Run: npm unlink '+d+' && npm install '+d); process.exit(1);}}\" && npm run build && npm run build:beam",
29
- "test": "npm run test:all",
29
+ "test": "bash scripts/run-tests.sh",
30
+ "test:chain": "npm run test:all",
30
31
  "test:all": "npm run build && npm run test:security && npm run test:schema && npm run test:marketplace && npm run test:loader && npm run test:server && npm run test:integration && npm run test:ui-resources && npm run test:client-adaptive && npm run test:zero-config && npm run test:mcp-config && npm run test:cli && npm run test:logger && npm run test:error-handler && npm run test:validation && npm run test:daemon-pubsub && npm run test:daemon-buffer && npm run test:instance-drift && npm run test:daemon-watcher && npm run test:ui-rendering && npm run test:photon-instance-manager && npm run test:viewport-aware-proxy && npm run test:viewport-manager && npm run test:pagination-integration && npm run test:pagination-performance && npm run test:pagination-phase5 && npm run test:pagination-phase5c && npm run test:pagination-phase5d && npm run test:phase6a && npm run test:phase6b && npm run test:phase6c && npm run test:phase6d && npm run test:promises && npm run test:readme",
31
32
  "test:daemon-watcher": "npx tsx tests/daemon-watcher.test.ts",
32
33
  "test:instance-drift": "npx tsx tests/instance-drift.test.ts",
@@ -111,7 +112,7 @@
111
112
  "@modelcontextprotocol/ext-apps": "^1.0.1",
112
113
  "@modelcontextprotocol/sdk": "^1.25.2",
113
114
  "@portel/cli": "^1.1.0",
114
- "@portel/photon-core": "^2.17.5",
115
+ "@portel/photon-core": "^2.18.0",
115
116
  "boxen": "^8.0.1",
116
117
  "chalk": "^5.4.1",
117
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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"}