@transloadit/mcp-server 0.7.1 → 0.7.2
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/tool-metadata.d.ts.map +1 -1
- package/dist/tool-metadata.js +4 -0
- package/dist/tool-metadata.js.map +1 -1
- package/dist/ui/assembly-result-widget.d.ts.map +1 -1
- package/dist/ui/assembly-result-widget.js +234 -15
- package/dist/ui/assembly-result-widget.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-metadata.d.ts","sourceRoot":"","sources":["../src/tool-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAEzE,OAAO,EAAE,gBAAgB,EAA2B,MAAM,wBAAwB,CAAA;AAGlF,uFAAuF;AACvF,eAAO,MAAM,SAAS;;;;CAIZ,CAAA;AAEV,4FAA4F;AAC5F,MAAM,MAAM,kBAAkB,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAA;AAE1F,eAAO,MAAM,SAAS,0QASZ,CAAA;AAEV,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAA;AAE7F,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,eAAe,CAAA;IAC5B,4FAA4F;IAC5F,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC5B,+DAA+D;IAC/D,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,qGAAqG;IACrG,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC/B,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,oBAAoB,GAAG,oBAAoB,CAAA;AAEjF,eAAO,MAAM,mBAAmB,GAAI,SAAS;IAC3C,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,KAAG,YAIH,CAAA;AAED,0EAA0E;AAC1E,eAAO,MAAM,sBAAsB,GACjC,UAAU,YAAY,EACtB,MAAM,YAAY,KACjB,kBAAkB,EAIpB,CAAA;AAcD,oFAAoF;AACpF,eAAO,MAAM,eAAe,EAAE,SAAS,QAAQ,EAI9C,CAAA;
|
|
1
|
+
{"version":3,"file":"tool-metadata.d.ts","sourceRoot":"","sources":["../src/tool-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAEzE,OAAO,EAAE,gBAAgB,EAA2B,MAAM,wBAAwB,CAAA;AAGlF,uFAAuF;AACvF,eAAO,MAAM,SAAS;;;;CAIZ,CAAA;AAEV,4FAA4F;AAC5F,MAAM,MAAM,kBAAkB,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAA;AAE1F,eAAO,MAAM,SAAS,0QASZ,CAAA;AAEV,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAA;AAE7F,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,eAAe,CAAA;IAC5B,4FAA4F;IAC5F,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC5B,+DAA+D;IAC/D,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,qGAAqG;IACrG,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC/B,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,oBAAoB,GAAG,oBAAoB,CAAA;AAEjF,eAAO,MAAM,mBAAmB,GAAI,SAAS;IAC3C,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,KAAG,YAIH,CAAA;AAED,0EAA0E;AAC1E,eAAO,MAAM,sBAAsB,GACjC,UAAU,YAAY,EACtB,MAAM,YAAY,KACjB,kBAAkB,EAIpB,CAAA;AAcD,oFAAoF;AACpF,eAAO,MAAM,eAAe,EAAE,SAAS,QAAQ,EAI9C,CAAA;AAyGD,oGAAoG;AACpG,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,QAAQ,EAAE,YAAY,CAgBvD,CAAA;AAED,4FAA4F;AAC5F,eAAO,MAAM,aAAa,GACxB,UAAU,YAAY,EACtB,iBAAiB,kBAAkB,EAAE,KACpC,MAAM,CAAC,MAAM,EAAE,OAAO,CAGvB,CAAA"}
|
package/dist/tool-metadata.js
CHANGED
|
@@ -88,6 +88,10 @@ const genericToolMetadata = {
|
|
|
88
88
|
access: 'account',
|
|
89
89
|
scopes: [mcpScopes.assembliesRead],
|
|
90
90
|
meta: {
|
|
91
|
+
// The result widget calls this through the host to follow a running Assembly. MCP Apps
|
|
92
|
+
// tools are visible to the model and apps by default; ChatGPT needs the explicit opt-in.
|
|
93
|
+
ui: { visibility: ['model', 'app'] },
|
|
94
|
+
'openai/widgetAccessible': true,
|
|
91
95
|
'openai/toolInvocation/invoking': 'Checking the Assembly status…',
|
|
92
96
|
'openai/toolInvocation/invoked': 'Fetched the Assembly status',
|
|
93
97
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-metadata.js","sourceRoot":"","sources":["../src/tool-metadata.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tool-metadata.js","sourceRoot":"","sources":["../src/tool-metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assembly-result-widget.d.ts","sourceRoot":"","sources":["../../src/ui/assembly-result-widget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAIvD,gHAAgH;AAChH,eAAO,MAAM,uBAAuB,qCAAqC,CAAA;AAEzE,6DAA6D;AAC7D,eAAO,MAAM,4BAA4B,8BAA8B,CAAA;AAEvE;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,UAIhC,CAAA;AASD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,EAAE,MAAM,MAAM,KAAG,MAS/D,CAAA;AAED,yFAAyF;AACzF,eAAO,MAAM,qBAAqB,eAAe,CAAA;AAEjD,yDAAyD;AACzD,eAAO,MAAM,aAAa;;;CAAwE,CAAA;AAElG,qFAAqF;AACrF,eAAO,MAAM,oBAAoB,uBAAuB,CAAA;AAExD,8FAA8F;AAC9F,MAAM,MAAM,UAAU,GAAG;IACvB,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,aAAa,EAAE,OAAO,CAAA;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;CACnC,CAAA;AAKD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAChC,UAAU,IAAI,CAAC,cAAc,EAAE,eAAe,GAAG,QAAQ,CAAC,KACzD,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,SAgB/B,CAAA;
|
|
1
|
+
{"version":3,"file":"assembly-result-widget.d.ts","sourceRoot":"","sources":["../../src/ui/assembly-result-widget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAIvD,gHAAgH;AAChH,eAAO,MAAM,uBAAuB,qCAAqC,CAAA;AAEzE,6DAA6D;AAC7D,eAAO,MAAM,4BAA4B,8BAA8B,CAAA;AAEvE;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,UAIhC,CAAA;AASD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,EAAE,MAAM,MAAM,KAAG,MAS/D,CAAA;AAED,yFAAyF;AACzF,eAAO,MAAM,qBAAqB,eAAe,CAAA;AAEjD,yDAAyD;AACzD,eAAO,MAAM,aAAa;;;CAAwE,CAAA;AAElG,qFAAqF;AACrF,eAAO,MAAM,oBAAoB,uBAAuB,CAAA;AAExD,8FAA8F;AAC9F,MAAM,MAAM,UAAU,GAAG;IACvB,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,aAAa,EAAE,OAAO,CAAA;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;CACnC,CAAA;AAKD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAChC,UAAU,IAAI,CAAC,cAAc,EAAE,eAAe,GAAG,QAAQ,CAAC,KACzD,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,SAgB/B,CAAA;AAkGD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,QA85BpC,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,sFAAsF;IACtF,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,4FAA4F;AAC5F,eAAO,MAAM,4BAA4B,GACvC,QAAQ,SAAS,EACjB,UAAS,2BAAgC,KACxC,IAiCF,CAAA"}
|
|
@@ -114,6 +114,21 @@ const visibleFilesTotal = 12;
|
|
|
114
114
|
const sparseStepFiles = 2;
|
|
115
115
|
/** Card height when the host sets no maxHeight, so a long result never takes over the chat. */
|
|
116
116
|
const defaultMaxHeight = 720;
|
|
117
|
+
/**
|
|
118
|
+
* How the widget keeps a running Assembly's status current through the host's tool bridge:
|
|
119
|
+
* checks start after 2 s and back off to every 10 s, for at most 15 minutes of waiting, then a
|
|
120
|
+
* "Check again" button takes over. Hosts render a create result whenever the model moves on, so
|
|
121
|
+
* without this the card would show "Processing" forever unless the model also waits.
|
|
122
|
+
*/
|
|
123
|
+
const statusRefresh = {
|
|
124
|
+
tool: 'transloadit_get_assembly_status',
|
|
125
|
+
initialDelayMs: 2000,
|
|
126
|
+
growth: 1.5,
|
|
127
|
+
maxDelayMs: 10_000,
|
|
128
|
+
maxWaitMs: 15 * 60_000,
|
|
129
|
+
requestTimeoutMs: 30_000,
|
|
130
|
+
maxFailures: 3,
|
|
131
|
+
};
|
|
117
132
|
// The usual native UI stack, without a bare system-ui first: Linux resolves that through
|
|
118
133
|
// fontconfig to whatever font matched, which can be a CJK face with a mid-line "…".
|
|
119
134
|
const fontStack = '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", system-ui, sans-serif';
|
|
@@ -227,6 +242,9 @@ export const assemblyResultWidgetHtml = `<!doctype html>
|
|
|
227
242
|
.callout.err > .icon { color: var(--err); }
|
|
228
243
|
.callout.warn > .icon { color: var(--warn); }
|
|
229
244
|
p.note { font-size: 13px; }
|
|
245
|
+
.text-button { padding: 0; border: 0; background: none; color: var(--accent); font: inherit; font-weight: 500; cursor: pointer; }
|
|
246
|
+
.text-button:hover { text-decoration: underline; }
|
|
247
|
+
.text-button:disabled { color: var(--muted); cursor: default; text-decoration: none; }
|
|
230
248
|
|
|
231
249
|
.more-below { position: sticky; bottom: 0; flex: none; display: flex; align-items: flex-end; justify-content: center; gap: 4px; height: 48px; margin-top: -64px; padding-bottom: 4px; background: linear-gradient(to bottom, transparent, var(--bg) 75%); color: var(--muted); font-size: 12px; pointer-events: none; opacity: 0; transition: opacity 0.15s ease; }
|
|
232
250
|
.more-below.show { opacity: 1; }
|
|
@@ -266,8 +284,9 @@ export const assemblyResultWidgetHtml = `<!doctype html>
|
|
|
266
284
|
const visibleFilesPerStep = ${visibleFilesPerStep}
|
|
267
285
|
const visibleFilesTotal = ${visibleFilesTotal}
|
|
268
286
|
const sparseStepFiles = ${sparseStepFiles}
|
|
287
|
+
const statusRefresh = ${JSON.stringify(statusRefresh)}
|
|
269
288
|
const backtick = String.fromCharCode(96)
|
|
270
|
-
const hostCapabilities = { openLinks: false }
|
|
289
|
+
const hostCapabilities = { openLinks: false, serverTools: false }
|
|
271
290
|
let hasResult = false
|
|
272
291
|
let lastSignature = null
|
|
273
292
|
// Rendered nodes by step and by file, reused while their data is unchanged so previews are
|
|
@@ -370,11 +389,17 @@ export const assemblyResultWidgetHtml = `<!doctype html>
|
|
|
370
389
|
|
|
371
390
|
const pendingRequests = new Map()
|
|
372
391
|
let nextId = 1
|
|
373
|
-
|
|
392
|
+
// A timeout gives up on hosts that never answer, so a check can not hang forever.
|
|
393
|
+
const request = (method, params, timeoutMs) =>
|
|
374
394
|
new Promise((resolve, reject) => {
|
|
375
395
|
const id = nextId++
|
|
376
396
|
pendingRequests.set(id, { resolve, reject })
|
|
377
397
|
post({ jsonrpc: '2.0', id, method, params })
|
|
398
|
+
if (!timeoutMs) return
|
|
399
|
+
setTimeout(() => {
|
|
400
|
+
if (!pendingRequests.delete(id)) return
|
|
401
|
+
reject(new Error(method + ' timed out'))
|
|
402
|
+
}, timeoutMs)
|
|
378
403
|
})
|
|
379
404
|
const notify = (method, params) =>
|
|
380
405
|
post(params === undefined ? { jsonrpc: '2.0', method } : { jsonrpc: '2.0', method, params })
|
|
@@ -460,7 +485,21 @@ export const assemblyResultWidgetHtml = `<!doctype html>
|
|
|
460
485
|
}
|
|
461
486
|
const unavailable = (iconName) => () => [icon(iconName), el('span', { className: 'note', role: 'status', text: 'Preview unavailable' })]
|
|
462
487
|
|
|
463
|
-
|
|
488
|
+
// Names of imported files keep the source URL's percent-encoding (Kennedy%27s.mp4), which only
|
|
489
|
+
// reads as noise. Decode them for display; a malformed sequence, or one that would produce
|
|
490
|
+
// control, bidi or path separator characters, keeps the name exactly as Transloadit reported it.
|
|
491
|
+
// Links always use the file's own URL, never this name.
|
|
492
|
+
const unsafeNameChars = /[\\u0000-\\u001f\\u007f-\\u009f\\u200e\\u200f\\u202a-\\u202e\\u2066-\\u2069\\/\\\\]/
|
|
493
|
+
const displayName = (name) => {
|
|
494
|
+
if (!name.includes('%')) return name
|
|
495
|
+
try {
|
|
496
|
+
const decoded = decodeURIComponent(name)
|
|
497
|
+
return unsafeNameChars.test(decoded) ? name : decoded
|
|
498
|
+
} catch {
|
|
499
|
+
return name
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
const fileName = (file) => displayName(text(file.name) || text(file.basename)) || 'file'
|
|
464
503
|
const fileUrl = (file) => safeUrl(file.ssl_url) || safeUrl(file.url)
|
|
465
504
|
const isAudio = (file) => Boolean(fileUrl(file)) && text(file.mime).startsWith('audio/')
|
|
466
505
|
|
|
@@ -727,35 +766,214 @@ export const assemblyResultWidgetHtml = `<!doctype html>
|
|
|
727
766
|
if (originals.length > 0) nodes.push(originalsFold(originals))
|
|
728
767
|
}
|
|
729
768
|
|
|
730
|
-
// The busy note and any warnings read as one message.
|
|
769
|
+
// The busy note and any warnings read as one message. "Check again" joins the busy note when
|
|
770
|
+
// automatic checks stop, so offering it moves nothing else.
|
|
731
771
|
const notes = []
|
|
732
|
-
if (status.tone === 'busy') notes.push('Result files appear when the Assembly completes.')
|
|
733
|
-
else if (steps.length === 0 && toolErrors.length === 0 && status.tone !== 'err') notes.push('No result files.')
|
|
772
|
+
if (status.tone === 'busy') notes.push(['Result files appear when the Assembly completes.', refreshSlot])
|
|
773
|
+
else if (steps.length === 0 && toolErrors.length === 0 && status.tone !== 'err') notes.push(['No result files.'])
|
|
734
774
|
const warnings = (Array.isArray(payload.warnings) ? payload.warnings : []).filter((warning) => isRecord(warning) && text(warning.message))
|
|
735
775
|
if (warnings.length > 0) {
|
|
736
|
-
nodes.push(callout('warn', [...notes.map((note) => el('p', {
|
|
776
|
+
nodes.push(callout('warn', [...notes.map((note) => el('p', {}, note)), ...warnings.map((warning) => el('p', {}, richText(text(warning.message))))]))
|
|
737
777
|
} else {
|
|
738
|
-
for (const note of notes) nodes.push(el('p', { className: 'note',
|
|
778
|
+
for (const note of notes) nodes.push(el('p', { className: 'note' }, note))
|
|
739
779
|
}
|
|
740
780
|
nodes.push(moreBelow)
|
|
741
781
|
return nodes
|
|
742
782
|
}
|
|
743
783
|
|
|
784
|
+
const payloadOf = (result) => (isRecord(result.structuredContent) ? result.structuredContent : {})
|
|
785
|
+
const metaOf = (result) => (isRecord(result._meta) && isRecord(result._meta[contextKey]) ? result._meta[contextKey] : {})
|
|
786
|
+
const resultSignature = (result) => {
|
|
787
|
+
const payload = payloadOf(result)
|
|
788
|
+
return JSON.stringify([payload, metaOf(result), Object.keys(payload).length === 0 ? contentText(result) : ''])
|
|
789
|
+
}
|
|
790
|
+
|
|
744
791
|
const render = (result) => {
|
|
745
|
-
if (!isRecord(result)) return
|
|
746
|
-
const payload = isRecord(result.structuredContent) ? result.structuredContent : {}
|
|
747
|
-
const meta = isRecord(result._meta) && isRecord(result._meta[contextKey]) ? result._meta[contextKey] : {}
|
|
748
792
|
// Hosts repeat results (re-mounts, reconnects, ChatGPT's toolOutput next to the MCP Apps
|
|
749
793
|
// notification); an identical one must not touch the DOM.
|
|
750
|
-
const signature =
|
|
794
|
+
const signature = resultSignature(result)
|
|
751
795
|
if (signature === lastSignature) return
|
|
752
796
|
lastSignature = signature
|
|
753
797
|
hasResult = true
|
|
754
|
-
app.replaceChildren(...buildResult(result,
|
|
798
|
+
app.replaceChildren(...buildResult(result, payloadOf(result), metaOf(result)))
|
|
755
799
|
updateMoreBelow()
|
|
756
800
|
}
|
|
757
801
|
|
|
802
|
+
// Keeping a running Assembly current. Only the host's tool bridge is used (MCP Apps tools/call
|
|
803
|
+
// or ChatGPT's callTool): it reuses the caller's credentials, and the widget's CSP only allows
|
|
804
|
+
// result file origins anyway.
|
|
805
|
+
const refresh = { hostResult: null, hostSignature: null, timer: null, attempt: 0, waitedMs: 0, failures: 0, active: false, paused: false, inFlight: false }
|
|
806
|
+
|
|
807
|
+
const assemblyOf = (result) => {
|
|
808
|
+
const payload = isRecord(result) ? payloadOf(result) : {}
|
|
809
|
+
return isRecord(payload.assembly) ? payload.assembly : null
|
|
810
|
+
}
|
|
811
|
+
// The same states the SDK's awaitAssemblyCompletion keeps polling on.
|
|
812
|
+
const isRunning = (assembly) => !text(assembly.error) && statusOf(assembly).tone === 'busy'
|
|
813
|
+
const statusArguments = (assembly) => {
|
|
814
|
+
const url = safeUrl(assembly.assembly_ssl_url)
|
|
815
|
+
if (url) return { assembly_url: url }
|
|
816
|
+
const id = text(assembly.assembly_id)
|
|
817
|
+
return id ? { assembly_id: id } : null
|
|
818
|
+
}
|
|
819
|
+
|
|
820
|
+
// Decided per check, because the MCP Apps handshake may complete after the first result.
|
|
821
|
+
const statusCaller = () => {
|
|
822
|
+
if (hostCapabilities.serverTools) {
|
|
823
|
+
return (args) => request('tools/call', { name: statusRefresh.tool, arguments: args }, statusRefresh.requestTimeoutMs)
|
|
824
|
+
}
|
|
825
|
+
const openai = window.openai
|
|
826
|
+
if (openai && typeof openai.callTool === 'function') {
|
|
827
|
+
return (args) =>
|
|
828
|
+
Promise.race([
|
|
829
|
+
Promise.resolve(openai.callTool(statusRefresh.tool, args)),
|
|
830
|
+
new Promise((resolve, reject) => setTimeout(() => reject(new Error('callTool timed out')), statusRefresh.requestTimeoutMs)),
|
|
831
|
+
])
|
|
832
|
+
}
|
|
833
|
+
return null
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
const refreshButton = el('button', { className: 'text-button', type: 'button', text: 'Check again' })
|
|
837
|
+
// Empty while automatic checks run, so its text never reads as part of the result.
|
|
838
|
+
const refreshSlot = el('span')
|
|
839
|
+
const showRefreshButton = (show) => {
|
|
840
|
+
if (show) refreshSlot.replaceChildren(' ', refreshButton)
|
|
841
|
+
else refreshSlot.replaceChildren()
|
|
842
|
+
}
|
|
843
|
+
|
|
844
|
+
const clearRefreshTimer = () => {
|
|
845
|
+
if (refresh.timer === null) return
|
|
846
|
+
clearTimeout(refresh.timer)
|
|
847
|
+
refresh.timer = null
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
// Automatic checks gave up; a person can still ask again when the host can call tools.
|
|
851
|
+
const stopRefreshing = (offerButton) => {
|
|
852
|
+
clearRefreshTimer()
|
|
853
|
+
refresh.active = false
|
|
854
|
+
showRefreshButton(Boolean(offerButton && statusCaller()))
|
|
855
|
+
updateMoreBelow()
|
|
856
|
+
}
|
|
857
|
+
|
|
858
|
+
const scheduleRefresh = () => {
|
|
859
|
+
clearRefreshTimer()
|
|
860
|
+
if (!refresh.active) return
|
|
861
|
+
if (document.visibilityState === 'hidden') {
|
|
862
|
+
refresh.paused = true
|
|
863
|
+
return
|
|
864
|
+
}
|
|
865
|
+
if (refresh.waitedMs >= statusRefresh.maxWaitMs) {
|
|
866
|
+
stopRefreshing(true)
|
|
867
|
+
return
|
|
868
|
+
}
|
|
869
|
+
const delay = Math.min(statusRefresh.initialDelayMs * statusRefresh.growth ** refresh.attempt, statusRefresh.maxDelayMs)
|
|
870
|
+
refresh.attempt += 1
|
|
871
|
+
refresh.waitedMs += delay
|
|
872
|
+
refresh.timer = setTimeout(checkStatus, delay)
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
const refreshFailed = () => {
|
|
876
|
+
refresh.failures += 1
|
|
877
|
+
if (refresh.failures >= statusRefresh.maxFailures) stopRefreshing(true)
|
|
878
|
+
else scheduleRefresh()
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
// The status replaces the Assembly; Steps, links and warnings still come from the host's result,
|
|
882
|
+
// except the create call's errors and warnings, which no longer apply once it has finished.
|
|
883
|
+
const showRefreshedAssembly = (assembly) => {
|
|
884
|
+
const base = refresh.hostResult
|
|
885
|
+
const payload = { ...payloadOf(base), assembly }
|
|
886
|
+
if (!isRunning(assembly)) {
|
|
887
|
+
delete payload.errors
|
|
888
|
+
delete payload.warnings
|
|
889
|
+
}
|
|
890
|
+
render({ ...base, structuredContent: payload })
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
async function checkStatus() {
|
|
894
|
+
refresh.timer = null
|
|
895
|
+
const assembly = assemblyOf(refresh.hostResult)
|
|
896
|
+
const args = assembly ? statusArguments(assembly) : null
|
|
897
|
+
const call = statusCaller()
|
|
898
|
+
if (!args || !refresh.active) return
|
|
899
|
+
// Without a bridge (yet), keep the schedule: the handshake may still enable one.
|
|
900
|
+
if (!call) {
|
|
901
|
+
scheduleRefresh()
|
|
902
|
+
return
|
|
903
|
+
}
|
|
904
|
+
refresh.inFlight = true
|
|
905
|
+
refreshButton.disabled = true
|
|
906
|
+
let result
|
|
907
|
+
try {
|
|
908
|
+
result = await call(args)
|
|
909
|
+
} catch {
|
|
910
|
+
result = null
|
|
911
|
+
}
|
|
912
|
+
refresh.inFlight = false
|
|
913
|
+
refreshButton.disabled = false
|
|
914
|
+
if (!refresh.active) return
|
|
915
|
+
const refreshed = isRecord(result) && result.isError !== true ? assemblyOf(result) : null
|
|
916
|
+
if (!refreshed) {
|
|
917
|
+
refreshFailed()
|
|
918
|
+
return
|
|
919
|
+
}
|
|
920
|
+
refresh.failures = 0
|
|
921
|
+
showRefreshedAssembly(refreshed)
|
|
922
|
+
if (isRunning(refreshed)) scheduleRefresh()
|
|
923
|
+
else stopRefreshing(false)
|
|
924
|
+
}
|
|
925
|
+
|
|
926
|
+
const startRefreshing = () => {
|
|
927
|
+
refresh.active = true
|
|
928
|
+
refresh.paused = false
|
|
929
|
+
refresh.attempt = 0
|
|
930
|
+
refresh.waitedMs = 0
|
|
931
|
+
refresh.failures = 0
|
|
932
|
+
showRefreshButton(false)
|
|
933
|
+
}
|
|
934
|
+
|
|
935
|
+
refreshButton.addEventListener('click', () => {
|
|
936
|
+
if (refresh.inFlight) return
|
|
937
|
+
startRefreshing()
|
|
938
|
+
clearRefreshTimer()
|
|
939
|
+
checkStatus()
|
|
940
|
+
})
|
|
941
|
+
|
|
942
|
+
document.addEventListener('visibilitychange', () => {
|
|
943
|
+
if (document.visibilityState === 'hidden') {
|
|
944
|
+
if (refresh.timer === null) return
|
|
945
|
+
clearRefreshTimer()
|
|
946
|
+
refresh.paused = true
|
|
947
|
+
return
|
|
948
|
+
}
|
|
949
|
+
if (!refresh.paused || !refresh.active) return
|
|
950
|
+
// Back in view: check soon instead of finishing a long backoff.
|
|
951
|
+
refresh.paused = false
|
|
952
|
+
refresh.attempt = 0
|
|
953
|
+
if (!refresh.inFlight) scheduleRefresh()
|
|
954
|
+
})
|
|
955
|
+
|
|
956
|
+
// A result from the host. Polled updates are newer than any repeat of it, so an identical
|
|
957
|
+
// repeat (theme changes re-send ChatGPT's toolOutput) must not bring the old status back.
|
|
958
|
+
const showHostResult = (result) => {
|
|
959
|
+
if (!isRecord(result)) return
|
|
960
|
+
const signature = resultSignature(result)
|
|
961
|
+
if (signature === refresh.hostSignature) return
|
|
962
|
+
refresh.hostSignature = signature
|
|
963
|
+
refresh.hostResult = result
|
|
964
|
+
render(result)
|
|
965
|
+
const assembly = assemblyOf(result)
|
|
966
|
+
if (assembly && isRunning(assembly) && statusArguments(assembly)) {
|
|
967
|
+
if (refresh.active) return
|
|
968
|
+
startRefreshing()
|
|
969
|
+
scheduleRefresh()
|
|
970
|
+
return
|
|
971
|
+
}
|
|
972
|
+
stopRefreshing(false)
|
|
973
|
+
}
|
|
974
|
+
|
|
758
975
|
const handleHostRequest = (message) => {
|
|
976
|
+
if (message.method === 'ui/resource-teardown') stopRefreshing(false)
|
|
759
977
|
if (message.method === 'ping' || message.method === 'ui/resource-teardown') {
|
|
760
978
|
respond(message.id, {})
|
|
761
979
|
return
|
|
@@ -767,7 +985,7 @@ export const assemblyResultWidgetHtml = `<!doctype html>
|
|
|
767
985
|
if (message.method === 'ui/notifications/tool-input') {
|
|
768
986
|
if (!hasResult) pending('running', 'Running the Assembly…')
|
|
769
987
|
} else if (message.method === 'ui/notifications/tool-result') {
|
|
770
|
-
|
|
988
|
+
showHostResult(message.params)
|
|
771
989
|
} else if (message.method === 'ui/notifications/tool-cancelled') {
|
|
772
990
|
if (!hasResult) showStatus('The tool call was cancelled.')
|
|
773
991
|
} else if (message.method === 'ui/notifications/host-context-changed') {
|
|
@@ -800,7 +1018,7 @@ export const assemblyResultWidgetHtml = `<!doctype html>
|
|
|
800
1018
|
if (!openai) return
|
|
801
1019
|
applyHostContext({ theme: openai.theme, maxHeight: openai.maxHeight })
|
|
802
1020
|
if (isRecord(openai.toolOutput)) {
|
|
803
|
-
|
|
1021
|
+
showHostResult({ structuredContent: openai.toolOutput, _meta: openai.toolResponseMetadata })
|
|
804
1022
|
}
|
|
805
1023
|
}
|
|
806
1024
|
window.addEventListener('openai:set_globals', renderFromOpenAi)
|
|
@@ -819,6 +1037,7 @@ export const assemblyResultWidgetHtml = `<!doctype html>
|
|
|
819
1037
|
.then((result) => {
|
|
820
1038
|
if (isRecord(result) && isRecord(result.hostCapabilities)) {
|
|
821
1039
|
hostCapabilities.openLinks = Boolean(result.hostCapabilities.openLinks)
|
|
1040
|
+
hostCapabilities.serverTools = Boolean(result.hostCapabilities.serverTools)
|
|
822
1041
|
}
|
|
823
1042
|
if (isRecord(result)) applyHostContext(result.hostContext)
|
|
824
1043
|
notify('ui/notifications/initialized')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assembly-result-widget.js","sourceRoot":"","sources":["../../src/ui/assembly-result-widget.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"assembly-result-widget.js","sourceRoot":"","sources":["../../src/ui/assembly-result-widget.ts"],"names":[],"mappings":"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"}
|