@portel/photon 1.14.0 → 1.16.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-config.d.ts.map +1 -1
- package/dist/auto-ui/beam/routes/api-config.js +29 -8
- 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 +3 -0
- 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 +167 -48
- 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 +578 -0
- package/dist/auto-ui/bridge/index.js.map +1 -1
- package/dist/auto-ui/bridge/renderers.d.ts.map +1 -1
- package/dist/auto-ui/bridge/renderers.js +7 -3
- package/dist/auto-ui/bridge/renderers.js.map +1 -1
- package/dist/auto-ui/bridge/types.d.ts +6 -0
- package/dist/auto-ui/bridge/types.d.ts.map +1 -1
- package/dist/auto-ui/frontend/pure-view.html +289 -0
- package/dist/auto-ui/photon-bridge.d.ts +11 -0
- package/dist/auto-ui/photon-bridge.d.ts.map +1 -1
- package/dist/auto-ui/photon-bridge.js +75 -1
- package/dist/auto-ui/photon-bridge.js.map +1 -1
- package/dist/auto-ui/streamable-http-transport.d.ts.map +1 -1
- package/dist/auto-ui/streamable-http-transport.js +29 -3
- package/dist/auto-ui/streamable-http-transport.js.map +1 -1
- package/dist/beam-form.bundle.js +5707 -0
- package/dist/beam-form.bundle.js.map +7 -0
- package/dist/beam.bundle.js +1947 -523
- package/dist/beam.bundle.js.map +4 -4
- package/dist/cli/commands/info.d.ts.map +1 -1
- package/dist/cli/commands/info.js +15 -2
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/daemon/client.d.ts +5 -0
- package/dist/daemon/client.d.ts.map +1 -1
- package/dist/daemon/client.js +50 -0
- package/dist/daemon/client.js.map +1 -1
- package/dist/daemon/manager.d.ts +15 -0
- package/dist/daemon/manager.d.ts.map +1 -1
- package/dist/daemon/manager.js +142 -11
- package/dist/daemon/manager.js.map +1 -1
- package/dist/deploy/cloudflare.d.ts.map +1 -1
- package/dist/deploy/cloudflare.js +10 -2
- package/dist/deploy/cloudflare.js.map +1 -1
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +50 -3
- package/dist/loader.js.map +1 -1
- package/dist/marketplace-manager.d.ts +9 -0
- package/dist/marketplace-manager.d.ts.map +1 -1
- package/dist/marketplace-manager.js +115 -42
- package/dist/marketplace-manager.js.map +1 -1
- package/dist/meta.d.ts +51 -0
- package/dist/meta.d.ts.map +1 -0
- package/dist/meta.js +320 -0
- package/dist/meta.js.map +1 -0
- package/dist/photon-cli-runner.d.ts.map +1 -1
- package/dist/photon-cli-runner.js +30 -5
- 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 +33 -21
- package/dist/photon-doc-extractor.js.map +1 -1
- package/dist/photons/docs/ui/docs.html +441 -0
- package/dist/photons/docs.photon.d.ts +237 -0
- package/dist/photons/docs.photon.d.ts.map +1 -0
- package/dist/photons/docs.photon.js +483 -0
- package/dist/photons/docs.photon.js.map +1 -0
- package/dist/photons/docs.photon.ts +536 -0
- package/dist/photons/slides.photon.d.ts +212 -0
- package/dist/photons/slides.photon.d.ts.map +1 -0
- package/dist/photons/slides.photon.js +355 -0
- package/dist/photons/slides.photon.js.map +1 -0
- package/dist/photons/slides.photon.ts +370 -0
- package/dist/photons/spreadsheet/ui/spreadsheet.html +779 -0
- package/dist/photons/spreadsheet.photon.d.ts +554 -0
- package/dist/photons/spreadsheet.photon.d.ts.map +1 -0
- package/dist/photons/spreadsheet.photon.js +1050 -0
- package/dist/photons/spreadsheet.photon.js.map +1 -0
- package/dist/photons/spreadsheet.photon.ts +1239 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +17 -57
- package/dist/server.js.map +1 -1
- package/dist/shared/error-handler.d.ts +8 -0
- package/dist/shared/error-handler.d.ts.map +1 -1
- package/dist/shared/error-handler.js +50 -0
- package/dist/shared/error-handler.js.map +1 -1
- package/dist/shared-utils.d.ts +3 -2
- package/dist/shared-utils.d.ts.map +1 -1
- package/dist/shared-utils.js +4 -3
- package/dist/shared-utils.js.map +1 -1
- package/package.json +7 -2
|
@@ -321,12 +321,16 @@ export function generateRenderersScript() {
|
|
|
321
321
|
};
|
|
322
322
|
});
|
|
323
323
|
|
|
324
|
+
// Force high-DPI rendering: use at least 2x pixel ratio so charts
|
|
325
|
+
// stay crisp inside transform:scale() slide canvases on retina displays.
|
|
326
|
+
var dpr = Math.max(window.devicePixelRatio || 1, 2);
|
|
324
327
|
new Chart(canvas, {
|
|
325
328
|
type: chartType,
|
|
326
329
|
data: { labels: labels, datasets: datasets },
|
|
327
330
|
options: {
|
|
328
331
|
responsive: true,
|
|
329
332
|
maintainAspectRatio: true,
|
|
333
|
+
devicePixelRatio: dpr,
|
|
330
334
|
indexAxis: isHorizontal ? 'y' : 'x',
|
|
331
335
|
plugins: { legend: { labels: { color: colors.textMuted } } },
|
|
332
336
|
scales: (chartType === 'pie' || chartType === 'doughnut') ? {} : {
|
|
@@ -750,8 +754,8 @@ export function generateRenderersScript() {
|
|
|
750
754
|
h += '</div>';
|
|
751
755
|
// Nav arrows
|
|
752
756
|
if (items.length > 1) {
|
|
753
|
-
h += '<button onclick="(function(el){var s=el.closest(
|
|
754
|
-
h += '<button onclick="(function(el){var s=el.closest(
|
|
757
|
+
h += '<button onclick="(function(el){var s=el.closest("[id]").querySelector(".slides");var idx=+(s.dataset.idx||0);idx=idx>0?idx-1:' + (items.length - 1) + ';s.style.transform="translateX(-"+idx*100+"%)";s.dataset.idx=idx})(this)" style="position:absolute;left:8px;top:50%;transform:translateY(-50%);background:rgba(0,0,0,0.5);color:#fff;border:none;border-radius:50%;width:32px;height:32px;cursor:pointer;font-size:16px">\\u2039</button>';
|
|
758
|
+
h += '<button onclick="(function(el){var s=el.closest("[id]").querySelector(".slides");var idx=+(s.dataset.idx||0);idx=idx<' + (items.length - 1) + '?idx+1:0;s.style.transform="translateX(-"+idx*100+"%)";s.dataset.idx=idx})(this)" style="position:absolute;right:8px;top:50%;transform:translateY(-50%);background:rgba(0,0,0,0.5);color:#fff;border:none;border-radius:50%;width:32px;height:32px;cursor:pointer;font-size:16px">\\u203A</button>';
|
|
755
759
|
// Dots
|
|
756
760
|
h += '<div style="position:absolute;bottom:8px;left:50%;transform:translateX(-50%);display:flex;gap:6px">';
|
|
757
761
|
for (var j = 0; j < items.length; j++) {
|
|
@@ -772,7 +776,7 @@ export function generateRenderersScript() {
|
|
|
772
776
|
var src = item.src || item.url || item.image || item.thumbnail || '';
|
|
773
777
|
var full = item.full || item.original || src;
|
|
774
778
|
var caption = item.caption || item.title || '';
|
|
775
|
-
h += '<div style="cursor:pointer;overflow:hidden;border-radius:6px;aspect-ratio:1" onclick="(function(s,c){var o=document.createElement(
|
|
779
|
+
h += '<div style="cursor:pointer;overflow:hidden;border-radius:6px;aspect-ratio:1" onclick="(function(s,c){var o=document.createElement("div");o.style.cssText="position:fixed;inset:0;background:rgba(0,0,0,0.9);z-index:9999;display:flex;align-items:center;justify-content:center;flex-direction:column;cursor:pointer";o.onclick=function(){o.remove()};var img=document.createElement("img");img.src=s;img.style.cssText="max-width:90%;max-height:85vh;border-radius:8px";o.appendChild(img);if(c){var p=document.createElement("div");p.style.cssText="color:#fff;font-size:13px;margin-top:8px";p.textContent=c;o.appendChild(p)}document.body.appendChild(o))("' + esc(full) + '","' + esc(caption) + '")">';
|
|
776
780
|
h += '<img src="' + esc(src) + '" alt="' + esc(caption) + '" style="width:100%;height:100%;object-fit:cover" />';
|
|
777
781
|
h += '</div>';
|
|
778
782
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderers.js","sourceRoot":"","sources":["../../../src/auto-ui/bridge/renderers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,UAAU,uBAAuB;IACrC,iEAAiE;IACjE,6DAA6D;IAC7D,OAAO
|
|
1
|
+
{"version":3,"file":"renderers.js","sourceRoot":"","sources":["../../../src/auto-ui/bridge/renderers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,UAAU,uBAAuB;IACrC,iEAAiE;IACjE,6DAA6D;IAC7D,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA8tCH,CAAC;AACP,CAAC"}
|
|
@@ -14,6 +14,12 @@ export interface BridgeMethodMeta {
|
|
|
14
14
|
scheduled?: string;
|
|
15
15
|
/** True if method has no side effects (@readOnly) */
|
|
16
16
|
readOnly?: boolean;
|
|
17
|
+
/** JSON Schema for method parameters — enables auto form/result detection and form generation */
|
|
18
|
+
inputSchema?: {
|
|
19
|
+
type?: string;
|
|
20
|
+
properties?: Record<string, any>;
|
|
21
|
+
required?: string[];
|
|
22
|
+
};
|
|
17
23
|
}
|
|
18
24
|
/**
|
|
19
25
|
* Photon context passed to the bridge
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/auto-ui/bridge/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/auto-ui/bridge/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en" style="color-scheme:dark;background:#111318">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<meta name="photon-template" content="true" />
|
|
7
|
+
<meta name="theme-color" content="#1a1b26" />
|
|
8
|
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
9
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
10
|
+
<link
|
|
11
|
+
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500&family=Space+Grotesk:wght@500;600;700&display=swap"
|
|
12
|
+
rel="stylesheet"
|
|
13
|
+
/>
|
|
14
|
+
<script src="https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.min.js"></script>
|
|
15
|
+
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
|
|
16
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js"></script>
|
|
17
|
+
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/prism.min.js"></script>
|
|
18
|
+
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-typescript.min.js"></script>
|
|
19
|
+
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-javascript.min.js"></script>
|
|
20
|
+
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-json.min.js"></script>
|
|
21
|
+
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-python.min.js"></script>
|
|
22
|
+
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-bash.min.js"></script>
|
|
23
|
+
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-css.min.js"></script>
|
|
24
|
+
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-sql.min.js"></script>
|
|
25
|
+
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-yaml.min.js"></script>
|
|
26
|
+
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-markdown.min.js"></script>
|
|
27
|
+
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-rust.min.js"></script>
|
|
28
|
+
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-go.min.js"></script>
|
|
29
|
+
<style>
|
|
30
|
+
body,
|
|
31
|
+
html {
|
|
32
|
+
margin: 0;
|
|
33
|
+
padding: 0;
|
|
34
|
+
height: 100%;
|
|
35
|
+
width: 100%;
|
|
36
|
+
overflow: auto;
|
|
37
|
+
background: #111318;
|
|
38
|
+
color: #c0caf5;
|
|
39
|
+
font-family: Inter, system-ui, sans-serif;
|
|
40
|
+
}
|
|
41
|
+
/* Hide native scrollbars — use custom if needed */
|
|
42
|
+
::-webkit-scrollbar { display: none; }
|
|
43
|
+
* { scrollbar-width: none; }
|
|
44
|
+
|
|
45
|
+
#pure-view {
|
|
46
|
+
width: 100%;
|
|
47
|
+
min-height: 100vh;
|
|
48
|
+
display: flex;
|
|
49
|
+
align-items: center;
|
|
50
|
+
justify-content: center;
|
|
51
|
+
padding: 16px;
|
|
52
|
+
box-sizing: border-box;
|
|
53
|
+
visibility: hidden;
|
|
54
|
+
}
|
|
55
|
+
#pure-view.ready {
|
|
56
|
+
visibility: visible;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* Form mode: top-aligned, full width for form content.
|
|
60
|
+
Provides the design system CSS variables that invoke-form expects
|
|
61
|
+
(normally inherited from beam-app, but pure-view has no beam-app). */
|
|
62
|
+
#pure-view[data-view='form'] {
|
|
63
|
+
align-items: flex-start;
|
|
64
|
+
justify-content: center;
|
|
65
|
+
padding: 24px;
|
|
66
|
+
|
|
67
|
+
/* Colors — dark theme (matches beam-app :host defaults) */
|
|
68
|
+
--bg-app: hsl(220, 15%, 10%);
|
|
69
|
+
--bg-glass: hsla(220, 15%, 14%, 0.6);
|
|
70
|
+
--bg-glass-strong: hsla(220, 15%, 14%, 0.85);
|
|
71
|
+
--bg-panel: hsl(220, 15%, 12%);
|
|
72
|
+
--t-primary: hsl(220, 10%, 95%);
|
|
73
|
+
--t-secondary: hsl(220, 10%, 75%);
|
|
74
|
+
--t-muted: hsl(220, 10%, 65%);
|
|
75
|
+
--border-glass: hsla(220, 10%, 80%, 0.1);
|
|
76
|
+
--accent-primary: hsl(260, 100%, 65%);
|
|
77
|
+
--accent-secondary: hsl(190, 100%, 50%);
|
|
78
|
+
--glow-primary: hsla(260, 100%, 65%, 0.3);
|
|
79
|
+
--color-error: #ff4444;
|
|
80
|
+
--color-error-glow: rgba(255, 68, 68, 0.6);
|
|
81
|
+
--color-error-bg: rgba(255, 68, 68, 0.1);
|
|
82
|
+
--color-success: #00e676;
|
|
83
|
+
--color-warning: #ffab00;
|
|
84
|
+
|
|
85
|
+
/* Spacing / radius / typography */
|
|
86
|
+
--space-xs: 4px;
|
|
87
|
+
--space-sm: 8px;
|
|
88
|
+
--space-md: 16px;
|
|
89
|
+
--space-lg: 24px;
|
|
90
|
+
--space-xl: 32px;
|
|
91
|
+
--radius-xs: 4px;
|
|
92
|
+
--radius-sm: 6px;
|
|
93
|
+
--radius-md: 12px;
|
|
94
|
+
--radius-lg: 18px;
|
|
95
|
+
--radius-full: 9999px;
|
|
96
|
+
--font-sans: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
|
|
97
|
+
--font-mono: 'JetBrains Mono', monospace;
|
|
98
|
+
--text-md: 0.9rem;
|
|
99
|
+
--text-sm: 0.8rem;
|
|
100
|
+
--text-xs: 0.7rem;
|
|
101
|
+
|
|
102
|
+
color: var(--t-primary);
|
|
103
|
+
font-family: var(--font-sans);
|
|
104
|
+
}
|
|
105
|
+
#pure-view[data-view='form'] invoke-form {
|
|
106
|
+
width: 100%;
|
|
107
|
+
max-width: 640px;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/* Prism.js Dark Theme (One Dark inspired) */
|
|
111
|
+
code[class*='language-'],
|
|
112
|
+
pre[class*='language-'] {
|
|
113
|
+
color: #abb2bf;
|
|
114
|
+
text-shadow: none;
|
|
115
|
+
}
|
|
116
|
+
.token.comment,
|
|
117
|
+
.token.prolog,
|
|
118
|
+
.token.doctype,
|
|
119
|
+
.token.cdata {
|
|
120
|
+
color: #5c6370;
|
|
121
|
+
font-style: italic;
|
|
122
|
+
}
|
|
123
|
+
.token.punctuation {
|
|
124
|
+
color: #abb2bf;
|
|
125
|
+
}
|
|
126
|
+
.token.property,
|
|
127
|
+
.token.tag,
|
|
128
|
+
.token.boolean,
|
|
129
|
+
.token.number,
|
|
130
|
+
.token.constant,
|
|
131
|
+
.token.symbol,
|
|
132
|
+
.token.deleted {
|
|
133
|
+
color: #e06c75;
|
|
134
|
+
}
|
|
135
|
+
.token.selector,
|
|
136
|
+
.token.attr-name,
|
|
137
|
+
.token.string,
|
|
138
|
+
.token.char,
|
|
139
|
+
.token.builtin,
|
|
140
|
+
.token.inserted {
|
|
141
|
+
color: #98c379;
|
|
142
|
+
}
|
|
143
|
+
.token.operator,
|
|
144
|
+
.token.entity,
|
|
145
|
+
.token.url,
|
|
146
|
+
.language-css .token.string,
|
|
147
|
+
.style .token.string {
|
|
148
|
+
color: #56b6c2;
|
|
149
|
+
}
|
|
150
|
+
.token.atrule,
|
|
151
|
+
.token.attr-value,
|
|
152
|
+
.token.keyword {
|
|
153
|
+
color: #c678dd;
|
|
154
|
+
}
|
|
155
|
+
.token.function,
|
|
156
|
+
.token.class-name {
|
|
157
|
+
color: #61afef;
|
|
158
|
+
}
|
|
159
|
+
.token.regex,
|
|
160
|
+
.token.important,
|
|
161
|
+
.token.variable {
|
|
162
|
+
color: #d19a66;
|
|
163
|
+
}
|
|
164
|
+
</style>
|
|
165
|
+
|
|
166
|
+
<!-- MCP Adapter: intercepts bridge postMessage calls and proxies to MCP HTTP -->
|
|
167
|
+
<script>
|
|
168
|
+
(function() {
|
|
169
|
+
var photonName = '__PHOTON__';
|
|
170
|
+
var mcpSessionId = null;
|
|
171
|
+
|
|
172
|
+
// Parse response — handles both JSON and SSE formats
|
|
173
|
+
function parseResponse(res) {
|
|
174
|
+
mcpSessionId = res.headers.get('mcp-session-id') || mcpSessionId;
|
|
175
|
+
var ct = res.headers.get('content-type') || '';
|
|
176
|
+
if (ct.indexOf('text/event-stream') !== -1) {
|
|
177
|
+
return res.text().then(function(text) {
|
|
178
|
+
var lines = text.split('\n');
|
|
179
|
+
for (var i = lines.length - 1; i >= 0; i--) {
|
|
180
|
+
if (lines[i].indexOf('data: ') === 0) {
|
|
181
|
+
try { return JSON.parse(lines[i].substring(6)); } catch(e) {}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return { error: { message: 'Failed to parse SSE response' } };
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
return res.json();
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// Initialize MCP session
|
|
191
|
+
function initMCP() {
|
|
192
|
+
return fetch('/mcp', {
|
|
193
|
+
method: 'POST',
|
|
194
|
+
headers: { 'Content-Type': 'application/json', 'Accept': 'application/json, text/event-stream' },
|
|
195
|
+
body: JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'initialize', params: {
|
|
196
|
+
protocolVersion: '2025-03-26',
|
|
197
|
+
capabilities: {},
|
|
198
|
+
clientInfo: { name: 'pure-view', version: '1.0.0' }
|
|
199
|
+
}})
|
|
200
|
+
}).then(parseResponse);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
// Call MCP tool
|
|
204
|
+
function callMCPTool(toolName, args) {
|
|
205
|
+
var headers = { 'Content-Type': 'application/json', 'Accept': 'application/json, text/event-stream' };
|
|
206
|
+
if (mcpSessionId) headers['Mcp-Session-Id'] = mcpSessionId;
|
|
207
|
+
return fetch('/mcp', {
|
|
208
|
+
method: 'POST',
|
|
209
|
+
headers: headers,
|
|
210
|
+
body: JSON.stringify({ jsonrpc: '2.0', id: Date.now(), method: 'tools/call', params: {
|
|
211
|
+
name: toolName,
|
|
212
|
+
arguments: args || {}
|
|
213
|
+
}})
|
|
214
|
+
}).then(parseResponse);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// Parse MCP tool result to extract data
|
|
218
|
+
function parseToolResult(mcpResult) {
|
|
219
|
+
if (!mcpResult || !mcpResult.result) return mcpResult;
|
|
220
|
+
var r = mcpResult.result;
|
|
221
|
+
var content = r.content || [];
|
|
222
|
+
for (var i = 0; i < content.length; i++) {
|
|
223
|
+
if (content[i].type === 'text') {
|
|
224
|
+
try { return JSON.parse(content[i].text); } catch(e) { return content[i].text; }
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
if (r.structuredContent) return r.structuredContent;
|
|
228
|
+
return r;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// Listen for bridge messages (same-window postMessage)
|
|
232
|
+
window.addEventListener('message', function(event) {
|
|
233
|
+
var msg = event.data;
|
|
234
|
+
if (!msg || typeof msg !== 'object') return;
|
|
235
|
+
|
|
236
|
+
// Handle JSON-RPC tools/call from bridge and form components
|
|
237
|
+
if (msg.jsonrpc === '2.0' && msg.method === 'tools/call' && msg.id != null) {
|
|
238
|
+
var rawName = (msg.params && msg.params.name) || '';
|
|
239
|
+
// Don't double-prefix: invoke-form sends fully-qualified names (photon/method),
|
|
240
|
+
// bridge sends unqualified names (just method). Check for prefix before adding.
|
|
241
|
+
var toolName = rawName.indexOf('/') !== -1 ? rawName : photonName + '/' + rawName;
|
|
242
|
+
var args = (msg.params && msg.params.arguments) || {};
|
|
243
|
+
|
|
244
|
+
var doCall = function() {
|
|
245
|
+
callMCPTool(toolName, args).then(function(result) {
|
|
246
|
+
var parsed = parseToolResult(result);
|
|
247
|
+
window.postMessage({ jsonrpc: '2.0', id: msg.id, result: parsed }, '*');
|
|
248
|
+
}).catch(function(err) {
|
|
249
|
+
window.postMessage({ jsonrpc: '2.0', id: msg.id, error: { code: -32000, message: err.message } }, '*');
|
|
250
|
+
});
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
if (!mcpSessionId) {
|
|
254
|
+
initMCP().then(doCall).catch(function(err) {
|
|
255
|
+
window.postMessage({ jsonrpc: '2.0', id: msg.id, error: { code: -32000, message: 'MCP init failed: ' + err.message } }, '*');
|
|
256
|
+
});
|
|
257
|
+
} else {
|
|
258
|
+
doCall();
|
|
259
|
+
}
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
// Handle ui/initialize request from bridge
|
|
264
|
+
if (msg.jsonrpc === '2.0' && msg.method === 'ui/initialize' && msg.id != null) {
|
|
265
|
+
window.postMessage({ jsonrpc: '2.0', id: msg.id, result: {
|
|
266
|
+
hostContext: { theme: 'dark' }
|
|
267
|
+
}}, '*');
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
});
|
|
271
|
+
|
|
272
|
+
// Pre-initialize MCP session
|
|
273
|
+
initMCP().catch(function(e) { console.warn('[pure-view] MCP init failed:', e); });
|
|
274
|
+
})();
|
|
275
|
+
</script>
|
|
276
|
+
</head>
|
|
277
|
+
|
|
278
|
+
<body>
|
|
279
|
+
<div id="pure-view" data-method="__METHOD__" data-args="__ARGS__"></div>
|
|
280
|
+
<script src="/api/platform-bridge?photon=__PHOTON__&raw=1"></script>
|
|
281
|
+
<script>
|
|
282
|
+
// Reveal content only after everything is loaded — prevents white flash
|
|
283
|
+
window.addEventListener('load', function() {
|
|
284
|
+
var el = document.getElementById('pure-view');
|
|
285
|
+
if (el) el.classList.add('ready');
|
|
286
|
+
});
|
|
287
|
+
</script>
|
|
288
|
+
</body>
|
|
289
|
+
</html>
|
|
@@ -112,6 +112,17 @@ export interface PhotonBridge {
|
|
|
112
112
|
method: string;
|
|
113
113
|
/** Check if running inside ChatGPT (has window.openai) */
|
|
114
114
|
isChatGPT: boolean;
|
|
115
|
+
/** Universal motion API for animations and transitions */
|
|
116
|
+
motion: {
|
|
117
|
+
/** Apply an enter animation to an element */
|
|
118
|
+
enter(el: any, effect?: string): void;
|
|
119
|
+
/** Apply an exit animation, returns Promise that resolves after element is removed */
|
|
120
|
+
exit(el: any, effect?: string): Promise<void>;
|
|
121
|
+
/** Add stagger animation to a container's children */
|
|
122
|
+
stagger(container: any): void;
|
|
123
|
+
/** Apply a depth/perspective preset to an element */
|
|
124
|
+
depth(el: any, preset?: string): void;
|
|
125
|
+
};
|
|
115
126
|
}
|
|
116
127
|
export type HostToUIMessage = {
|
|
117
128
|
type: 'photon:init';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"photon-bridge.d.ts","sourceRoot":"","sources":["../../src/auto-ui/photon-bridge.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"photon-bridge.d.ts","sourceRoot":"","sources":["../../src/auto-ui/photon-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -187,6 +187,52 @@ export function createPhotonBridge() {
|
|
|
187
187
|
get isChatGPT() {
|
|
188
188
|
return isChatGPT;
|
|
189
189
|
},
|
|
190
|
+
// Motion API
|
|
191
|
+
motion: {
|
|
192
|
+
enter(el, effect = 'fade-in') {
|
|
193
|
+
if (!el)
|
|
194
|
+
return;
|
|
195
|
+
el.classList.add(`motion-${effect}`);
|
|
196
|
+
},
|
|
197
|
+
exit(el, effect = 'fade-out') {
|
|
198
|
+
if (!el)
|
|
199
|
+
return Promise.resolve();
|
|
200
|
+
el.classList.add(`motion-${effect}`);
|
|
201
|
+
return new Promise((resolve) => {
|
|
202
|
+
const onEnd = () => {
|
|
203
|
+
el.removeEventListener('animationend', onEnd);
|
|
204
|
+
el.remove();
|
|
205
|
+
resolve();
|
|
206
|
+
};
|
|
207
|
+
el.addEventListener('animationend', onEnd);
|
|
208
|
+
setTimeout(() => {
|
|
209
|
+
if (el.parentElement) {
|
|
210
|
+
el.removeEventListener('animationend', onEnd);
|
|
211
|
+
el.remove();
|
|
212
|
+
resolve();
|
|
213
|
+
}
|
|
214
|
+
}, 1000);
|
|
215
|
+
});
|
|
216
|
+
},
|
|
217
|
+
stagger(container) {
|
|
218
|
+
if (container)
|
|
219
|
+
container.classList.add('motion-stagger');
|
|
220
|
+
},
|
|
221
|
+
depth(el, preset = 'float') {
|
|
222
|
+
if (!el)
|
|
223
|
+
return;
|
|
224
|
+
const parent = el.parentElement;
|
|
225
|
+
if (parent && !parent.classList.contains('motion-perspective')) {
|
|
226
|
+
parent.classList.add('motion-perspective');
|
|
227
|
+
}
|
|
228
|
+
if (preset === 'tilt' || preset === 'tilt-right') {
|
|
229
|
+
el.classList.add(`motion-${preset}`);
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
el.classList.add(`motion-depth-${preset}`);
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
},
|
|
190
236
|
};
|
|
191
237
|
}
|
|
192
238
|
// ════════════════════════════════════════════════════════════════════════════════
|
|
@@ -266,7 +312,35 @@ export function generateBridgeLoaderScript() {
|
|
|
266
312
|
get locale() { return ctx.locale; },
|
|
267
313
|
get photon() { return ctx.photon; },
|
|
268
314
|
get method() { return ctx.method; },
|
|
269
|
-
get isChatGPT() { return typeof window.openai !== 'undefined'; }
|
|
315
|
+
get isChatGPT() { return typeof window.openai !== 'undefined'; },
|
|
316
|
+
motion: {
|
|
317
|
+
enter: function(el, effect) {
|
|
318
|
+
if (!el) return;
|
|
319
|
+
el.classList.add('motion-' + (effect || 'fade-in'));
|
|
320
|
+
},
|
|
321
|
+
exit: function(el, effect) {
|
|
322
|
+
if (!el) return Promise.resolve();
|
|
323
|
+
effect = effect || 'fade-out';
|
|
324
|
+
if (window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
|
325
|
+
el.remove(); return Promise.resolve();
|
|
326
|
+
}
|
|
327
|
+
el.classList.add('motion-' + effect);
|
|
328
|
+
return new Promise(function(resolve) {
|
|
329
|
+
function onEnd() { el.removeEventListener('animationend', onEnd); el.remove(); resolve(); }
|
|
330
|
+
el.addEventListener('animationend', onEnd);
|
|
331
|
+
setTimeout(function() { if (el.parentElement) { el.removeEventListener('animationend', onEnd); el.remove(); resolve(); } }, 1000);
|
|
332
|
+
});
|
|
333
|
+
},
|
|
334
|
+
stagger: function(container) { if (container) container.classList.add('motion-stagger'); },
|
|
335
|
+
depth: function(el, preset) {
|
|
336
|
+
if (!el) return;
|
|
337
|
+
preset = preset || 'float';
|
|
338
|
+
var parent = el.parentElement;
|
|
339
|
+
if (parent && !parent.classList.contains('motion-perspective')) parent.classList.add('motion-perspective');
|
|
340
|
+
if (preset === 'tilt' || preset === 'tilt-right') el.classList.add('motion-' + preset);
|
|
341
|
+
else el.classList.add('motion-depth-' + preset);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
270
344
|
};
|
|
271
345
|
})();
|
|
272
346
|
</script>`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"photon-bridge.js","sourceRoot":"","sources":["../../src/auto-ui/photon-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"photon-bridge.js","sourceRoot":"","sources":["../../src/auto-ui/photon-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streamable-http-transport.d.ts","sourceRoot":"","sources":["../../src/auto-ui/streamable-http-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"streamable-http-transport.d.ts","sourceRoot":"","sources":["../../src/auto-ui/streamable-http-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@ import { readdir, stat, readFile, writeFile } from 'fs/promises';
|
|
|
21
21
|
import { join, dirname, extname, resolve, normalize } from 'path';
|
|
22
22
|
import { homedir } from 'os';
|
|
23
23
|
import { PHOTON_VERSION } from '../version.js';
|
|
24
|
+
import { formatToolError } from '../shared/error-handler.js';
|
|
24
25
|
import { AGUIEventType } from '../ag-ui/types.js';
|
|
25
26
|
import { proxyExternalAgent, createAGUIOutputHandler } from '../ag-ui/adapter.js';
|
|
26
27
|
import { buildToolMetadataExtensions } from './types.js';
|
|
@@ -299,6 +300,14 @@ function buildTextContent(text, methodInfo) {
|
|
|
299
300
|
* Build a tool call result, optionally with structuredContent when outputSchema is declared
|
|
300
301
|
*/
|
|
301
302
|
function buildToolResult(result, methodInfo) {
|
|
303
|
+
// _meta format transformation: pre-formatted text bypasses normal formatting
|
|
304
|
+
if (result && typeof result === 'object' && result._metaFormatted === true) {
|
|
305
|
+
const content = { type: 'text', text: result.text };
|
|
306
|
+
if (result.mimeType) {
|
|
307
|
+
content.annotations = { mimeType: result.mimeType };
|
|
308
|
+
}
|
|
309
|
+
return { content: [content], isError: false };
|
|
310
|
+
}
|
|
302
311
|
const text = formatResultText(result);
|
|
303
312
|
const toolResult = {
|
|
304
313
|
content: [buildTextContent(text, methodInfo)],
|
|
@@ -1088,6 +1097,23 @@ const handlers = {
|
|
|
1088
1097
|
if (methodInfo?.outputFormat) {
|
|
1089
1098
|
uiMetadata['x-output-format'] = methodInfo.outputFormat;
|
|
1090
1099
|
}
|
|
1100
|
+
// Auto-confirm @destructive operations before execution (any transport path)
|
|
1101
|
+
if (methodInfo?.destructiveHint) {
|
|
1102
|
+
const elicitResult = await requestBeamElicitation({
|
|
1103
|
+
ask: 'confirm',
|
|
1104
|
+
message: `"${methodName}" is a destructive operation. Continue?`,
|
|
1105
|
+
});
|
|
1106
|
+
if (elicitResult.action !== 'accept' || elicitResult.content === false) {
|
|
1107
|
+
return {
|
|
1108
|
+
jsonrpc: '2.0',
|
|
1109
|
+
id: req.id,
|
|
1110
|
+
result: {
|
|
1111
|
+
content: [{ type: 'text', text: `${methodName} cancelled` }],
|
|
1112
|
+
isError: false,
|
|
1113
|
+
},
|
|
1114
|
+
};
|
|
1115
|
+
}
|
|
1116
|
+
}
|
|
1091
1117
|
// Stateful photons: route through daemon for shared instance across all clients
|
|
1092
1118
|
if (photonInfo?.stateful && photonInfo.path) {
|
|
1093
1119
|
try {
|
|
@@ -1595,7 +1621,7 @@ const handlers = {
|
|
|
1595
1621
|
return toolResponse;
|
|
1596
1622
|
}
|
|
1597
1623
|
catch (error) {
|
|
1598
|
-
const
|
|
1624
|
+
const { text } = formatToolError(methodName, error);
|
|
1599
1625
|
audit({
|
|
1600
1626
|
ts: new Date().toISOString(),
|
|
1601
1627
|
event: 'tool_error',
|
|
@@ -1604,13 +1630,13 @@ const handlers = {
|
|
|
1604
1630
|
instance: session?.instanceName || 'default',
|
|
1605
1631
|
client: session?.clientInfo?.name || 'beam',
|
|
1606
1632
|
sessionId: session?.id,
|
|
1607
|
-
error: message,
|
|
1633
|
+
error: error instanceof Error ? error.message : String(error),
|
|
1608
1634
|
});
|
|
1609
1635
|
return {
|
|
1610
1636
|
jsonrpc: '2.0',
|
|
1611
1637
|
id: req.id,
|
|
1612
1638
|
result: {
|
|
1613
|
-
content: [{ type: 'text', text
|
|
1639
|
+
content: [{ type: 'text', text }],
|
|
1614
1640
|
isError: true,
|
|
1615
1641
|
},
|
|
1616
1642
|
};
|