@mariozechner/pi-web-ui 0.30.1 → 0.31.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/CHANGELOG.md +88 -0
- package/README.md +420 -150
- package/dist/ChatPanel.d.ts +1 -2
- package/dist/ChatPanel.d.ts.map +1 -1
- package/dist/ChatPanel.js +22 -45
- package/dist/ChatPanel.js.map +1 -1
- package/dist/components/AgentInterface.d.ts +1 -1
- package/dist/components/AgentInterface.d.ts.map +1 -1
- package/dist/components/AgentInterface.js +113 -91
- package/dist/components/AgentInterface.js.map +1 -1
- package/dist/components/AttachmentTile.d.ts.map +1 -1
- package/dist/components/AttachmentTile.js +12 -28
- package/dist/components/AttachmentTile.js.map +1 -1
- package/dist/components/ConsoleBlock.d.ts.map +1 -1
- package/dist/components/ConsoleBlock.js +6 -21
- package/dist/components/ConsoleBlock.js.map +1 -1
- package/dist/components/CustomProviderCard.d.ts.map +1 -1
- package/dist/components/CustomProviderCard.js +15 -34
- package/dist/components/CustomProviderCard.js.map +1 -1
- package/dist/components/ExpandableSection.d.ts.map +1 -1
- package/dist/components/ExpandableSection.js +10 -27
- package/dist/components/ExpandableSection.js.map +1 -1
- package/dist/components/Input.js.map +1 -1
- package/dist/components/MessageEditor.d.ts +2 -1
- package/dist/components/MessageEditor.d.ts.map +1 -1
- package/dist/components/MessageEditor.js +147 -190
- package/dist/components/MessageEditor.js.map +1 -1
- package/dist/components/MessageList.d.ts +2 -3
- package/dist/components/MessageList.d.ts.map +1 -1
- package/dist/components/MessageList.js +11 -28
- package/dist/components/MessageList.js.map +1 -1
- package/dist/components/Messages.d.ts +37 -7
- package/dist/components/Messages.d.ts.map +1 -1
- package/dist/components/Messages.js +127 -103
- package/dist/components/Messages.js.map +1 -1
- package/dist/components/ProviderKeyInput.d.ts.map +1 -1
- package/dist/components/ProviderKeyInput.js +15 -39
- package/dist/components/ProviderKeyInput.js.map +1 -1
- package/dist/components/SandboxedIframe.d.ts.map +1 -1
- package/dist/components/SandboxedIframe.js +11 -15
- package/dist/components/SandboxedIframe.js.map +1 -1
- package/dist/components/StreamingMessageContainer.d.ts +3 -2
- package/dist/components/StreamingMessageContainer.d.ts.map +1 -1
- package/dist/components/StreamingMessageContainer.js +16 -34
- package/dist/components/StreamingMessageContainer.js.map +1 -1
- package/dist/components/ThinkingBlock.d.ts.map +1 -1
- package/dist/components/ThinkingBlock.js +9 -26
- package/dist/components/ThinkingBlock.js.map +1 -1
- package/dist/components/message-renderer-registry.d.ts +5 -5
- package/dist/components/message-renderer-registry.d.ts.map +1 -1
- package/dist/components/message-renderer-registry.js.map +1 -1
- package/dist/components/sandbox/ArtifactsRuntimeProvider.d.ts.map +1 -1
- package/dist/components/sandbox/ArtifactsRuntimeProvider.js +3 -0
- package/dist/components/sandbox/ArtifactsRuntimeProvider.js.map +1 -1
- package/dist/components/sandbox/AttachmentsRuntimeProvider.d.ts.map +1 -1
- package/dist/components/sandbox/AttachmentsRuntimeProvider.js +1 -0
- package/dist/components/sandbox/AttachmentsRuntimeProvider.js.map +1 -1
- package/dist/components/sandbox/ConsoleRuntimeProvider.d.ts.map +1 -1
- package/dist/components/sandbox/ConsoleRuntimeProvider.js +3 -5
- package/dist/components/sandbox/ConsoleRuntimeProvider.js.map +1 -1
- package/dist/components/sandbox/FileDownloadRuntimeProvider.d.ts.map +1 -1
- package/dist/components/sandbox/FileDownloadRuntimeProvider.js +1 -3
- package/dist/components/sandbox/FileDownloadRuntimeProvider.js.map +1 -1
- package/dist/components/sandbox/RuntimeMessageBridge.d.ts.map +1 -1
- package/dist/components/sandbox/RuntimeMessageBridge.js.map +1 -1
- package/dist/components/sandbox/RuntimeMessageRouter.d.ts.map +1 -1
- package/dist/components/sandbox/RuntimeMessageRouter.js +3 -5
- package/dist/components/sandbox/RuntimeMessageRouter.js.map +1 -1
- package/dist/dialogs/ApiKeyPromptDialog.d.ts.map +1 -1
- package/dist/dialogs/ApiKeyPromptDialog.js +10 -23
- package/dist/dialogs/ApiKeyPromptDialog.js.map +1 -1
- package/dist/dialogs/AttachmentOverlay.d.ts.map +1 -1
- package/dist/dialogs/AttachmentOverlay.js +34 -46
- package/dist/dialogs/AttachmentOverlay.js.map +1 -1
- package/dist/dialogs/CustomProviderDialog.d.ts.map +1 -1
- package/dist/dialogs/CustomProviderDialog.js +19 -39
- package/dist/dialogs/CustomProviderDialog.js.map +1 -1
- package/dist/dialogs/ModelSelector.d.ts.map +1 -1
- package/dist/dialogs/ModelSelector.js +25 -53
- package/dist/dialogs/ModelSelector.js.map +1 -1
- package/dist/dialogs/PersistentStorageDialog.d.ts.map +1 -1
- package/dist/dialogs/PersistentStorageDialog.js +9 -23
- package/dist/dialogs/PersistentStorageDialog.js.map +1 -1
- package/dist/dialogs/ProvidersModelsTab.d.ts.map +1 -1
- package/dist/dialogs/ProvidersModelsTab.js +7 -23
- package/dist/dialogs/ProvidersModelsTab.js.map +1 -1
- package/dist/dialogs/SessionListDialog.d.ts.map +1 -1
- package/dist/dialogs/SessionListDialog.js +14 -29
- package/dist/dialogs/SessionListDialog.js.map +1 -1
- package/dist/dialogs/SettingsDialog.d.ts.map +1 -1
- package/dist/dialogs/SettingsDialog.js +20 -52
- package/dist/dialogs/SettingsDialog.js.map +1 -1
- package/dist/index.d.ts +5 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -6
- package/dist/index.js.map +1 -1
- package/dist/prompts/prompts.d.ts.map +1 -1
- package/dist/storage/app-storage.d.ts.map +1 -1
- package/dist/storage/app-storage.js +5 -0
- package/dist/storage/app-storage.js.map +1 -1
- package/dist/storage/backends/indexeddb-storage-backend.d.ts.map +1 -1
- package/dist/storage/backends/indexeddb-storage-backend.js +2 -1
- package/dist/storage/backends/indexeddb-storage-backend.js.map +1 -1
- package/dist/storage/store.d.ts.map +1 -1
- package/dist/storage/store.js +1 -3
- package/dist/storage/store.js.map +1 -1
- package/dist/storage/stores/custom-providers-store.d.ts.map +1 -1
- package/dist/storage/stores/custom-providers-store.js.map +1 -1
- package/dist/storage/stores/provider-keys-store.d.ts.map +1 -1
- package/dist/storage/stores/provider-keys-store.js.map +1 -1
- package/dist/storage/stores/sessions-store.d.ts +1 -1
- package/dist/storage/stores/sessions-store.d.ts.map +1 -1
- package/dist/storage/stores/sessions-store.js.map +1 -1
- package/dist/storage/stores/settings-store.d.ts.map +1 -1
- package/dist/storage/stores/settings-store.js.map +1 -1
- package/dist/storage/types.d.ts +2 -3
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/tools/artifacts/ArtifactElement.d.ts.map +1 -1
- package/dist/tools/artifacts/ArtifactElement.js +1 -4
- package/dist/tools/artifacts/ArtifactElement.js.map +1 -1
- package/dist/tools/artifacts/ArtifactPill.js.map +1 -1
- package/dist/tools/artifacts/Console.d.ts.map +1 -1
- package/dist/tools/artifacts/Console.js +10 -28
- package/dist/tools/artifacts/Console.js.map +1 -1
- package/dist/tools/artifacts/DocxArtifact.d.ts.map +1 -1
- package/dist/tools/artifacts/DocxArtifact.js +7 -23
- package/dist/tools/artifacts/DocxArtifact.js.map +1 -1
- package/dist/tools/artifacts/ExcelArtifact.d.ts.map +1 -1
- package/dist/tools/artifacts/ExcelArtifact.js +7 -23
- package/dist/tools/artifacts/ExcelArtifact.js.map +1 -1
- package/dist/tools/artifacts/GenericArtifact.d.ts.map +1 -1
- package/dist/tools/artifacts/GenericArtifact.js +5 -19
- package/dist/tools/artifacts/GenericArtifact.js.map +1 -1
- package/dist/tools/artifacts/HtmlArtifact.d.ts.map +1 -1
- package/dist/tools/artifacts/HtmlArtifact.js +16 -35
- package/dist/tools/artifacts/HtmlArtifact.js.map +1 -1
- package/dist/tools/artifacts/ImageArtifact.d.ts.map +1 -1
- package/dist/tools/artifacts/ImageArtifact.js +5 -19
- package/dist/tools/artifacts/ImageArtifact.js.map +1 -1
- package/dist/tools/artifacts/MarkdownArtifact.d.ts.map +1 -1
- package/dist/tools/artifacts/MarkdownArtifact.js +8 -24
- package/dist/tools/artifacts/MarkdownArtifact.js.map +1 -1
- package/dist/tools/artifacts/PdfArtifact.d.ts.map +1 -1
- package/dist/tools/artifacts/PdfArtifact.js +8 -24
- package/dist/tools/artifacts/PdfArtifact.js.map +1 -1
- package/dist/tools/artifacts/SvgArtifact.d.ts.map +1 -1
- package/dist/tools/artifacts/SvgArtifact.js +8 -24
- package/dist/tools/artifacts/SvgArtifact.js.map +1 -1
- package/dist/tools/artifacts/TextArtifact.d.ts.map +1 -1
- package/dist/tools/artifacts/TextArtifact.js +6 -20
- package/dist/tools/artifacts/TextArtifact.js.map +1 -1
- package/dist/tools/artifacts/artifacts-tool-renderer.d.ts.map +1 -1
- package/dist/tools/artifacts/artifacts-tool-renderer.js +1 -0
- package/dist/tools/artifacts/artifacts-tool-renderer.js.map +1 -1
- package/dist/tools/artifacts/artifacts.d.ts +2 -3
- package/dist/tools/artifacts/artifacts.d.ts.map +1 -1
- package/dist/tools/artifacts/artifacts.js +30 -52
- package/dist/tools/artifacts/artifacts.js.map +1 -1
- package/dist/tools/extract-document.d.ts +2 -2
- package/dist/tools/extract-document.d.ts.map +1 -1
- package/dist/tools/extract-document.js.map +1 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/javascript-repl.d.ts +3 -3
- package/dist/tools/javascript-repl.d.ts.map +1 -1
- package/dist/tools/javascript-repl.js.map +1 -1
- package/dist/tools/renderer-registry.js.map +1 -1
- package/dist/tools/renderers/BashRenderer.d.ts.map +1 -1
- package/dist/tools/renderers/BashRenderer.js.map +1 -1
- package/dist/tools/renderers/CalculateRenderer.d.ts.map +1 -1
- package/dist/tools/renderers/CalculateRenderer.js.map +1 -1
- package/dist/tools/renderers/DefaultRenderer.d.ts.map +1 -1
- package/dist/tools/renderers/DefaultRenderer.js.map +1 -1
- package/dist/tools/renderers/GetCurrentTimeRenderer.d.ts.map +1 -1
- package/dist/tools/renderers/GetCurrentTimeRenderer.js.map +1 -1
- package/dist/utils/attachment-utils.js.map +1 -1
- package/dist/utils/auth-token.js.map +1 -1
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/i18n.d.ts +14 -14
- package/dist/utils/i18n.d.ts.map +1 -1
- package/dist/utils/i18n.js.map +1 -1
- package/dist/utils/model-discovery.js.map +1 -1
- package/dist/utils/proxy-utils.d.ts +9 -1
- package/dist/utils/proxy-utils.d.ts.map +1 -1
- package/dist/utils/proxy-utils.js +19 -0
- package/dist/utils/proxy-utils.js.map +1 -1
- package/dist/utils/test-sessions.d.ts +47 -47
- package/dist/utils/test-sessions.js.map +1 -1
- package/example/package.json +1 -1
- package/example/src/custom-messages.ts +26 -36
- package/example/src/main.ts +11 -20
- package/example/tsconfig.json +1 -0
- package/package.json +4 -4
- package/src/ChatPanel.ts +2 -3
- package/src/components/AgentInterface.ts +57 -13
- package/src/components/MessageEditor.ts +2 -1
- package/src/components/MessageList.ts +3 -4
- package/src/components/Messages.ts +108 -19
- package/src/components/StreamingMessageContainer.ts +6 -5
- package/src/components/message-renderer-registry.ts +5 -5
- package/src/index.ts +13 -10
- package/src/storage/stores/sessions-store.ts +1 -1
- package/src/storage/types.ts +2 -3
- package/src/tools/artifacts/artifacts.ts +4 -4
- package/src/tools/extract-document.ts +2 -1
- package/src/tools/javascript-repl.ts +2 -1
- package/src/utils/proxy-utils.ts +23 -1
- package/dist/agent/agent.d.ts +0 -62
- package/dist/agent/agent.d.ts.map +0 -1
- package/dist/agent/agent.js +0 -274
- package/dist/agent/agent.js.map +0 -1
- package/dist/agent/transports/AppTransport.d.ts +0 -15
- package/dist/agent/transports/AppTransport.d.ts.map +0 -1
- package/dist/agent/transports/AppTransport.js +0 -327
- package/dist/agent/transports/AppTransport.js.map +0 -1
- package/dist/agent/transports/ProviderTransport.d.ts +0 -14
- package/dist/agent/transports/ProviderTransport.d.ts.map +0 -1
- package/dist/agent/transports/ProviderTransport.js +0 -55
- package/dist/agent/transports/ProviderTransport.js.map +0 -1
- package/dist/agent/transports/index.d.ts +0 -4
- package/dist/agent/transports/index.d.ts.map +0 -1
- package/dist/agent/transports/index.js +0 -4
- package/dist/agent/transports/index.js.map +0 -1
- package/dist/agent/transports/proxy-types.d.ts +0 -48
- package/dist/agent/transports/proxy-types.d.ts.map +0 -1
- package/dist/agent/transports/proxy-types.js +0 -2
- package/dist/agent/transports/proxy-types.js.map +0 -1
- package/dist/agent/transports/types.d.ts +0 -15
- package/dist/agent/transports/types.d.ts.map +0 -1
- package/dist/agent/transports/types.js +0 -2
- package/dist/agent/transports/types.js.map +0 -1
- package/dist/agent/types.d.ts +0 -15
- package/dist/agent/types.d.ts.map +0 -1
- package/dist/agent/types.js +0 -2
- package/dist/agent/types.js.map +0 -1
- package/example/src/test-sessions.ts +0 -104
- package/src/agent/agent.ts +0 -341
- package/src/agent/transports/AppTransport.ts +0 -371
- package/src/agent/transports/ProviderTransport.ts +0 -71
- package/src/agent/transports/index.ts +0 -3
- package/src/agent/transports/proxy-types.ts +0 -15
- package/src/agent/transports/types.ts +0 -26
- package/src/agent/types.ts +0 -11
package/dist/agent/agent.js
DELETED
|
@@ -1,274 +0,0 @@
|
|
|
1
|
-
import { getModel, } from "@mariozechner/pi-ai";
|
|
2
|
-
// Default transformer: Keep only LLM-compatible messages, strip app-specific fields
|
|
3
|
-
function defaultMessageTransformer(messages) {
|
|
4
|
-
return messages
|
|
5
|
-
.filter((m) => {
|
|
6
|
-
// Only keep standard LLM message roles
|
|
7
|
-
return m.role === "user" || m.role === "assistant" || m.role === "toolResult";
|
|
8
|
-
})
|
|
9
|
-
.map((m) => {
|
|
10
|
-
if (m.role === "user") {
|
|
11
|
-
// Strip attachments field (app-specific)
|
|
12
|
-
// biome-ignore lint/correctness/noUnusedVariables: fine here
|
|
13
|
-
const { attachments, ...rest } = m;
|
|
14
|
-
return rest;
|
|
15
|
-
}
|
|
16
|
-
return m;
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
export class Agent {
|
|
20
|
-
constructor(opts) {
|
|
21
|
-
this._state = {
|
|
22
|
-
systemPrompt: "",
|
|
23
|
-
model: getModel("google", "gemini-2.5-flash-lite-preview-06-17"),
|
|
24
|
-
thinkingLevel: "off",
|
|
25
|
-
tools: [],
|
|
26
|
-
messages: [],
|
|
27
|
-
isStreaming: false,
|
|
28
|
-
streamMessage: null,
|
|
29
|
-
pendingToolCalls: new Set(),
|
|
30
|
-
error: undefined,
|
|
31
|
-
};
|
|
32
|
-
this.listeners = new Set();
|
|
33
|
-
this.messageQueue = [];
|
|
34
|
-
this._state = { ...this._state, ...opts.initialState };
|
|
35
|
-
this.debugListener = opts.debugListener;
|
|
36
|
-
this.transport = opts.transport;
|
|
37
|
-
this.messageTransformer = opts.messageTransformer || defaultMessageTransformer;
|
|
38
|
-
}
|
|
39
|
-
get state() {
|
|
40
|
-
return this._state;
|
|
41
|
-
}
|
|
42
|
-
subscribe(fn) {
|
|
43
|
-
this.listeners.add(fn);
|
|
44
|
-
fn({ type: "state-update", state: this._state });
|
|
45
|
-
return () => this.listeners.delete(fn);
|
|
46
|
-
}
|
|
47
|
-
// Mutators
|
|
48
|
-
setSystemPrompt(v) {
|
|
49
|
-
this.patch({ systemPrompt: v });
|
|
50
|
-
}
|
|
51
|
-
setModel(m) {
|
|
52
|
-
this.patch({ model: m });
|
|
53
|
-
}
|
|
54
|
-
setThinkingLevel(l) {
|
|
55
|
-
this.patch({ thinkingLevel: l });
|
|
56
|
-
}
|
|
57
|
-
setTools(t) {
|
|
58
|
-
this.patch({ tools: t });
|
|
59
|
-
}
|
|
60
|
-
replaceMessages(ms) {
|
|
61
|
-
this.patch({ messages: ms.slice() });
|
|
62
|
-
}
|
|
63
|
-
appendMessage(m) {
|
|
64
|
-
this.patch({ messages: [...this._state.messages, m] });
|
|
65
|
-
}
|
|
66
|
-
async queueMessage(m) {
|
|
67
|
-
// Transform message and queue it for injection at next turn
|
|
68
|
-
const transformed = await this.messageTransformer([m]);
|
|
69
|
-
this.messageQueue.push({
|
|
70
|
-
original: m,
|
|
71
|
-
llm: transformed[0], // undefined if filtered out
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
clearMessages() {
|
|
75
|
-
this.patch({ messages: [] });
|
|
76
|
-
}
|
|
77
|
-
abort() {
|
|
78
|
-
this.abortController?.abort();
|
|
79
|
-
}
|
|
80
|
-
logState(message) {
|
|
81
|
-
const { systemPrompt, model, messages } = this._state;
|
|
82
|
-
console.log(message, { systemPrompt, model, messages });
|
|
83
|
-
}
|
|
84
|
-
async prompt(input, attachments) {
|
|
85
|
-
const model = this._state.model;
|
|
86
|
-
if (!model) {
|
|
87
|
-
this.emit({ type: "error-no-model" });
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
// Build user message with attachments
|
|
91
|
-
const content = [{ type: "text", text: input }];
|
|
92
|
-
if (attachments?.length) {
|
|
93
|
-
for (const a of attachments) {
|
|
94
|
-
if (a.type === "image") {
|
|
95
|
-
content.push({ type: "image", data: a.content, mimeType: a.mimeType });
|
|
96
|
-
}
|
|
97
|
-
else if (a.type === "document" && a.extractedText) {
|
|
98
|
-
content.push({
|
|
99
|
-
type: "text",
|
|
100
|
-
text: `\n\n[Document: ${a.fileName}]\n${a.extractedText}`,
|
|
101
|
-
isDocument: true,
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
const userMessage = {
|
|
107
|
-
role: "user",
|
|
108
|
-
content,
|
|
109
|
-
attachments: attachments?.length ? attachments : undefined,
|
|
110
|
-
timestamp: Date.now(),
|
|
111
|
-
};
|
|
112
|
-
this.abortController = new AbortController();
|
|
113
|
-
this.patch({ isStreaming: true, streamMessage: null, error: undefined });
|
|
114
|
-
this.emit({ type: "started" });
|
|
115
|
-
const reasoning = this._state.thinkingLevel === "off"
|
|
116
|
-
? undefined
|
|
117
|
-
: this._state.thinkingLevel === "minimal"
|
|
118
|
-
? "low"
|
|
119
|
-
: this._state.thinkingLevel;
|
|
120
|
-
const cfg = {
|
|
121
|
-
systemPrompt: this._state.systemPrompt,
|
|
122
|
-
tools: this._state.tools,
|
|
123
|
-
model,
|
|
124
|
-
reasoning,
|
|
125
|
-
getQueuedMessages: async () => {
|
|
126
|
-
// Return queued messages (they'll be added to state via message_end event)
|
|
127
|
-
const queued = this.messageQueue.slice();
|
|
128
|
-
this.messageQueue = [];
|
|
129
|
-
return queued;
|
|
130
|
-
},
|
|
131
|
-
};
|
|
132
|
-
try {
|
|
133
|
-
let partial = null;
|
|
134
|
-
let turnDebug = null;
|
|
135
|
-
let turnStart = 0;
|
|
136
|
-
this.logState("prompt started, current state:");
|
|
137
|
-
// Transform app messages to LLM-compatible messages (initial set)
|
|
138
|
-
const llmMessages = await this.messageTransformer(this._state.messages);
|
|
139
|
-
console.log("transformed messages:", llmMessages);
|
|
140
|
-
for await (const ev of this.transport.run(llmMessages, userMessage, cfg, this.abortController.signal)) {
|
|
141
|
-
switch (ev.type) {
|
|
142
|
-
case "turn_start": {
|
|
143
|
-
turnStart = performance.now();
|
|
144
|
-
// Build request context snapshot (use transformed messages)
|
|
145
|
-
const ctx = {
|
|
146
|
-
systemPrompt: this._state.systemPrompt,
|
|
147
|
-
messages: [...llmMessages],
|
|
148
|
-
tools: this._state.tools,
|
|
149
|
-
};
|
|
150
|
-
turnDebug = {
|
|
151
|
-
timestamp: new Date().toISOString(),
|
|
152
|
-
request: {
|
|
153
|
-
provider: cfg.model.provider,
|
|
154
|
-
model: cfg.model.id,
|
|
155
|
-
context: { ...ctx },
|
|
156
|
-
},
|
|
157
|
-
sseEvents: [],
|
|
158
|
-
};
|
|
159
|
-
break;
|
|
160
|
-
}
|
|
161
|
-
case "message_start":
|
|
162
|
-
case "message_update": {
|
|
163
|
-
partial = ev.message;
|
|
164
|
-
// Collect SSE-like events for debug (drop heavy partial)
|
|
165
|
-
if (ev.type === "message_update" && ev.assistantMessageEvent && turnDebug) {
|
|
166
|
-
const copy = { ...ev.assistantMessageEvent };
|
|
167
|
-
if (copy && "partial" in copy)
|
|
168
|
-
delete copy.partial;
|
|
169
|
-
turnDebug.sseEvents.push(JSON.stringify(copy));
|
|
170
|
-
if (!turnDebug.ttft)
|
|
171
|
-
turnDebug.ttft = performance.now() - turnStart;
|
|
172
|
-
}
|
|
173
|
-
this.patch({ streamMessage: ev.message });
|
|
174
|
-
break;
|
|
175
|
-
}
|
|
176
|
-
case "message_end": {
|
|
177
|
-
partial = null;
|
|
178
|
-
this.appendMessage(ev.message);
|
|
179
|
-
this.patch({ streamMessage: null });
|
|
180
|
-
if (turnDebug) {
|
|
181
|
-
if (ev.message.role !== "assistant" && ev.message.role !== "toolResult") {
|
|
182
|
-
turnDebug.request.context.messages.push(ev.message);
|
|
183
|
-
}
|
|
184
|
-
if (ev.message.role === "assistant")
|
|
185
|
-
turnDebug.response = ev.message;
|
|
186
|
-
}
|
|
187
|
-
break;
|
|
188
|
-
}
|
|
189
|
-
case "tool_execution_start": {
|
|
190
|
-
const s = new Set(this._state.pendingToolCalls);
|
|
191
|
-
s.add(ev.toolCallId);
|
|
192
|
-
this.patch({ pendingToolCalls: s });
|
|
193
|
-
break;
|
|
194
|
-
}
|
|
195
|
-
case "tool_execution_end": {
|
|
196
|
-
const s = new Set(this._state.pendingToolCalls);
|
|
197
|
-
s.delete(ev.toolCallId);
|
|
198
|
-
this.patch({ pendingToolCalls: s });
|
|
199
|
-
break;
|
|
200
|
-
}
|
|
201
|
-
case "turn_end": {
|
|
202
|
-
// finalize current turn
|
|
203
|
-
if (turnDebug) {
|
|
204
|
-
turnDebug.totalTime = performance.now() - turnStart;
|
|
205
|
-
this.debugListener?.(turnDebug);
|
|
206
|
-
turnDebug = null;
|
|
207
|
-
}
|
|
208
|
-
break;
|
|
209
|
-
}
|
|
210
|
-
case "agent_end": {
|
|
211
|
-
this.patch({ streamMessage: null });
|
|
212
|
-
break;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
if (partial && partial.role === "assistant" && partial.content.length > 0) {
|
|
217
|
-
const onlyEmpty = !partial.content.some((c) => (c.type === "thinking" && c.thinking.trim().length > 0) ||
|
|
218
|
-
(c.type === "text" && c.text.trim().length > 0) ||
|
|
219
|
-
(c.type === "toolCall" && c.name.trim().length > 0));
|
|
220
|
-
if (!onlyEmpty) {
|
|
221
|
-
this.appendMessage(partial);
|
|
222
|
-
}
|
|
223
|
-
else {
|
|
224
|
-
if (this.abortController?.signal.aborted) {
|
|
225
|
-
throw new Error("Request was aborted");
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
catch (err) {
|
|
231
|
-
if (String(err?.message || err) === "no-api-key") {
|
|
232
|
-
this.emit({ type: "error-no-api-key", provider: model.provider });
|
|
233
|
-
}
|
|
234
|
-
else {
|
|
235
|
-
const msg = {
|
|
236
|
-
role: "assistant",
|
|
237
|
-
content: [{ type: "text", text: "" }],
|
|
238
|
-
api: model.api,
|
|
239
|
-
provider: model.provider,
|
|
240
|
-
model: model.id,
|
|
241
|
-
usage: {
|
|
242
|
-
input: 0,
|
|
243
|
-
output: 0,
|
|
244
|
-
cacheRead: 0,
|
|
245
|
-
cacheWrite: 0,
|
|
246
|
-
totalTokens: 0,
|
|
247
|
-
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
|
|
248
|
-
},
|
|
249
|
-
stopReason: this.abortController?.signal.aborted ? "aborted" : "error",
|
|
250
|
-
errorMessage: err?.message || String(err),
|
|
251
|
-
timestamp: Date.now(),
|
|
252
|
-
};
|
|
253
|
-
this.appendMessage(msg);
|
|
254
|
-
this.patch({ error: err?.message || String(err) });
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
finally {
|
|
258
|
-
this.patch({ isStreaming: false, streamMessage: null, pendingToolCalls: new Set() });
|
|
259
|
-
this.abortController = undefined;
|
|
260
|
-
this.emit({ type: "completed" });
|
|
261
|
-
}
|
|
262
|
-
this.logState("final state:");
|
|
263
|
-
}
|
|
264
|
-
patch(p) {
|
|
265
|
-
this._state = { ...this._state, ...p };
|
|
266
|
-
this.emit({ type: "state-update", state: this._state });
|
|
267
|
-
}
|
|
268
|
-
emit(e) {
|
|
269
|
-
for (const listener of this.listeners) {
|
|
270
|
-
listener(e);
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
//# sourceMappingURL=agent.js.map
|
package/dist/agent/agent.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/agent/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { Message } from "@mariozechner/pi-ai";
|
|
2
|
-
import type { AgentRunConfig, AgentTransport } from "./types.js";
|
|
3
|
-
/**
|
|
4
|
-
* Transport that uses an app server with user authentication tokens.
|
|
5
|
-
* The server manages user accounts and proxies requests to LLM providers.
|
|
6
|
-
*/
|
|
7
|
-
export declare class AppTransport implements AgentTransport {
|
|
8
|
-
private readonly proxyUrl;
|
|
9
|
-
private getStreamFn;
|
|
10
|
-
private buildContext;
|
|
11
|
-
private buildLoopConfig;
|
|
12
|
-
run(messages: Message[], userMessage: Message, cfg: AgentRunConfig, signal?: AbortSignal): AsyncGenerator<import("@mariozechner/pi-ai").AgentEvent, void, unknown>;
|
|
13
|
-
continue(messages: Message[], cfg: AgentRunConfig, signal?: AbortSignal): AsyncGenerator<import("@mariozechner/pi-ai").AgentEvent, void, unknown>;
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=AppTransport.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AppTransport.d.ts","sourceRoot":"","sources":["../../../src/agent/transports/AppTransport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAOX,OAAO,EAKP,MAAM,qBAAqB,CAAC;AAO7B,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA0SjE;;;GAGG;AACH,qBAAa,YAAa,YAAW,cAAc;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;YAE9C,WAAW;IAWzB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,eAAe;IAQhB,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,WAAW;IAUxF,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,WAAW;CAS9E"}
|
|
@@ -1,327 +0,0 @@
|
|
|
1
|
-
import { agentLoop, agentLoopContinue } from "@mariozechner/pi-ai";
|
|
2
|
-
import { AssistantMessageEventStream } from "@mariozechner/pi-ai/dist/utils/event-stream.js";
|
|
3
|
-
import { parseStreamingJson } from "@mariozechner/pi-ai/dist/utils/json-parse.js";
|
|
4
|
-
import { clearAuthToken, getAuthToken } from "../../utils/auth-token.js";
|
|
5
|
-
import { i18n } from "../../utils/i18n.js";
|
|
6
|
-
/**
|
|
7
|
-
* Stream function that proxies through a server instead of calling providers directly.
|
|
8
|
-
* The server strips the partial field from delta events to reduce bandwidth.
|
|
9
|
-
* We reconstruct the partial message client-side.
|
|
10
|
-
*/
|
|
11
|
-
function streamSimpleProxy(model, context, options, proxyUrl) {
|
|
12
|
-
const stream = new AssistantMessageEventStream();
|
|
13
|
-
(async () => {
|
|
14
|
-
// Initialize the partial message that we'll build up from events
|
|
15
|
-
const partial = {
|
|
16
|
-
role: "assistant",
|
|
17
|
-
stopReason: "stop",
|
|
18
|
-
content: [],
|
|
19
|
-
api: model.api,
|
|
20
|
-
provider: model.provider,
|
|
21
|
-
model: model.id,
|
|
22
|
-
usage: {
|
|
23
|
-
input: 0,
|
|
24
|
-
output: 0,
|
|
25
|
-
cacheRead: 0,
|
|
26
|
-
cacheWrite: 0,
|
|
27
|
-
totalTokens: 0,
|
|
28
|
-
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
|
|
29
|
-
},
|
|
30
|
-
timestamp: Date.now(),
|
|
31
|
-
};
|
|
32
|
-
let reader;
|
|
33
|
-
// Set up abort handler to cancel the reader
|
|
34
|
-
const abortHandler = () => {
|
|
35
|
-
if (reader) {
|
|
36
|
-
reader.cancel("Request aborted by user").catch(() => { });
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
if (options.signal) {
|
|
40
|
-
options.signal.addEventListener("abort", abortHandler);
|
|
41
|
-
}
|
|
42
|
-
try {
|
|
43
|
-
const response = await fetch(`${proxyUrl}/api/stream`, {
|
|
44
|
-
method: "POST",
|
|
45
|
-
headers: {
|
|
46
|
-
Authorization: `Bearer ${options.authToken}`,
|
|
47
|
-
"Content-Type": "application/json",
|
|
48
|
-
},
|
|
49
|
-
body: JSON.stringify({
|
|
50
|
-
model,
|
|
51
|
-
context,
|
|
52
|
-
options: {
|
|
53
|
-
temperature: options.temperature,
|
|
54
|
-
maxTokens: options.maxTokens,
|
|
55
|
-
reasoning: options.reasoning,
|
|
56
|
-
// Don't send apiKey or signal - those are added server-side
|
|
57
|
-
},
|
|
58
|
-
}),
|
|
59
|
-
signal: options.signal,
|
|
60
|
-
});
|
|
61
|
-
if (!response.ok) {
|
|
62
|
-
let errorMessage = `Proxy error: ${response.status} ${response.statusText}`;
|
|
63
|
-
try {
|
|
64
|
-
const errorData = await response.json();
|
|
65
|
-
if (errorData.error) {
|
|
66
|
-
errorMessage = `Proxy error: ${errorData.error}`;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
catch {
|
|
70
|
-
// Couldn't parse error response, use default message
|
|
71
|
-
}
|
|
72
|
-
throw new Error(errorMessage);
|
|
73
|
-
}
|
|
74
|
-
// Parse SSE stream
|
|
75
|
-
reader = response.body.getReader();
|
|
76
|
-
const decoder = new TextDecoder();
|
|
77
|
-
let buffer = "";
|
|
78
|
-
while (true) {
|
|
79
|
-
const { done, value } = await reader.read();
|
|
80
|
-
if (done)
|
|
81
|
-
break;
|
|
82
|
-
// Check if aborted after reading
|
|
83
|
-
if (options.signal?.aborted) {
|
|
84
|
-
throw new Error("Request aborted by user");
|
|
85
|
-
}
|
|
86
|
-
buffer += decoder.decode(value, { stream: true });
|
|
87
|
-
const lines = buffer.split("\n");
|
|
88
|
-
buffer = lines.pop() || "";
|
|
89
|
-
for (const line of lines) {
|
|
90
|
-
if (line.startsWith("data: ")) {
|
|
91
|
-
const data = line.slice(6).trim();
|
|
92
|
-
if (data) {
|
|
93
|
-
const proxyEvent = JSON.parse(data);
|
|
94
|
-
let event;
|
|
95
|
-
// Handle different event types
|
|
96
|
-
// Server sends events with partial for non-delta events,
|
|
97
|
-
// and without partial for delta events
|
|
98
|
-
switch (proxyEvent.type) {
|
|
99
|
-
case "start":
|
|
100
|
-
event = { type: "start", partial };
|
|
101
|
-
break;
|
|
102
|
-
case "text_start":
|
|
103
|
-
partial.content[proxyEvent.contentIndex] = {
|
|
104
|
-
type: "text",
|
|
105
|
-
text: "",
|
|
106
|
-
};
|
|
107
|
-
event = { type: "text_start", contentIndex: proxyEvent.contentIndex, partial };
|
|
108
|
-
break;
|
|
109
|
-
case "text_delta": {
|
|
110
|
-
const content = partial.content[proxyEvent.contentIndex];
|
|
111
|
-
if (content?.type === "text") {
|
|
112
|
-
content.text += proxyEvent.delta;
|
|
113
|
-
event = {
|
|
114
|
-
type: "text_delta",
|
|
115
|
-
contentIndex: proxyEvent.contentIndex,
|
|
116
|
-
delta: proxyEvent.delta,
|
|
117
|
-
partial,
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
throw new Error("Received text_delta for non-text content");
|
|
122
|
-
}
|
|
123
|
-
break;
|
|
124
|
-
}
|
|
125
|
-
case "text_end": {
|
|
126
|
-
const content = partial.content[proxyEvent.contentIndex];
|
|
127
|
-
if (content?.type === "text") {
|
|
128
|
-
content.textSignature = proxyEvent.contentSignature;
|
|
129
|
-
event = {
|
|
130
|
-
type: "text_end",
|
|
131
|
-
contentIndex: proxyEvent.contentIndex,
|
|
132
|
-
content: content.text,
|
|
133
|
-
partial,
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
throw new Error("Received text_end for non-text content");
|
|
138
|
-
}
|
|
139
|
-
break;
|
|
140
|
-
}
|
|
141
|
-
case "thinking_start":
|
|
142
|
-
partial.content[proxyEvent.contentIndex] = {
|
|
143
|
-
type: "thinking",
|
|
144
|
-
thinking: "",
|
|
145
|
-
};
|
|
146
|
-
event = { type: "thinking_start", contentIndex: proxyEvent.contentIndex, partial };
|
|
147
|
-
break;
|
|
148
|
-
case "thinking_delta": {
|
|
149
|
-
const content = partial.content[proxyEvent.contentIndex];
|
|
150
|
-
if (content?.type === "thinking") {
|
|
151
|
-
content.thinking += proxyEvent.delta;
|
|
152
|
-
event = {
|
|
153
|
-
type: "thinking_delta",
|
|
154
|
-
contentIndex: proxyEvent.contentIndex,
|
|
155
|
-
delta: proxyEvent.delta,
|
|
156
|
-
partial,
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
else {
|
|
160
|
-
throw new Error("Received thinking_delta for non-thinking content");
|
|
161
|
-
}
|
|
162
|
-
break;
|
|
163
|
-
}
|
|
164
|
-
case "thinking_end": {
|
|
165
|
-
const content = partial.content[proxyEvent.contentIndex];
|
|
166
|
-
if (content?.type === "thinking") {
|
|
167
|
-
content.thinkingSignature = proxyEvent.contentSignature;
|
|
168
|
-
event = {
|
|
169
|
-
type: "thinking_end",
|
|
170
|
-
contentIndex: proxyEvent.contentIndex,
|
|
171
|
-
content: content.thinking,
|
|
172
|
-
partial,
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
else {
|
|
176
|
-
throw new Error("Received thinking_end for non-thinking content");
|
|
177
|
-
}
|
|
178
|
-
break;
|
|
179
|
-
}
|
|
180
|
-
case "toolcall_start":
|
|
181
|
-
partial.content[proxyEvent.contentIndex] = {
|
|
182
|
-
type: "toolCall",
|
|
183
|
-
id: proxyEvent.id,
|
|
184
|
-
name: proxyEvent.toolName,
|
|
185
|
-
arguments: {},
|
|
186
|
-
partialJson: "",
|
|
187
|
-
};
|
|
188
|
-
event = { type: "toolcall_start", contentIndex: proxyEvent.contentIndex, partial };
|
|
189
|
-
break;
|
|
190
|
-
case "toolcall_delta": {
|
|
191
|
-
const content = partial.content[proxyEvent.contentIndex];
|
|
192
|
-
if (content?.type === "toolCall") {
|
|
193
|
-
content.partialJson += proxyEvent.delta;
|
|
194
|
-
content.arguments = parseStreamingJson(content.partialJson) || {};
|
|
195
|
-
event = {
|
|
196
|
-
type: "toolcall_delta",
|
|
197
|
-
contentIndex: proxyEvent.contentIndex,
|
|
198
|
-
delta: proxyEvent.delta,
|
|
199
|
-
partial,
|
|
200
|
-
};
|
|
201
|
-
partial.content[proxyEvent.contentIndex] = { ...content }; // Trigger reactivity
|
|
202
|
-
}
|
|
203
|
-
else {
|
|
204
|
-
throw new Error("Received toolcall_delta for non-toolCall content");
|
|
205
|
-
}
|
|
206
|
-
break;
|
|
207
|
-
}
|
|
208
|
-
case "toolcall_end": {
|
|
209
|
-
const content = partial.content[proxyEvent.contentIndex];
|
|
210
|
-
if (content?.type === "toolCall") {
|
|
211
|
-
delete content.partialJson;
|
|
212
|
-
event = {
|
|
213
|
-
type: "toolcall_end",
|
|
214
|
-
contentIndex: proxyEvent.contentIndex,
|
|
215
|
-
toolCall: content,
|
|
216
|
-
partial,
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
break;
|
|
220
|
-
}
|
|
221
|
-
case "done":
|
|
222
|
-
partial.stopReason = proxyEvent.reason;
|
|
223
|
-
partial.usage = proxyEvent.usage;
|
|
224
|
-
event = { type: "done", reason: proxyEvent.reason, message: partial };
|
|
225
|
-
break;
|
|
226
|
-
case "error":
|
|
227
|
-
partial.stopReason = proxyEvent.reason;
|
|
228
|
-
partial.errorMessage = proxyEvent.errorMessage;
|
|
229
|
-
partial.usage = proxyEvent.usage;
|
|
230
|
-
event = { type: "error", reason: proxyEvent.reason, error: partial };
|
|
231
|
-
break;
|
|
232
|
-
default: {
|
|
233
|
-
// Exhaustive check
|
|
234
|
-
const _exhaustiveCheck = proxyEvent;
|
|
235
|
-
console.warn(`Unhandled event type: ${proxyEvent.type}`);
|
|
236
|
-
break;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
// Push the event to stream
|
|
240
|
-
if (event) {
|
|
241
|
-
stream.push(event);
|
|
242
|
-
}
|
|
243
|
-
else {
|
|
244
|
-
throw new Error("Failed to create event from proxy event");
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
// Check if aborted after reading
|
|
251
|
-
if (options.signal?.aborted) {
|
|
252
|
-
throw new Error("Request aborted by user");
|
|
253
|
-
}
|
|
254
|
-
stream.end();
|
|
255
|
-
}
|
|
256
|
-
catch (error) {
|
|
257
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
258
|
-
if (errorMessage.toLowerCase().includes("proxy") && errorMessage.includes("Unauthorized")) {
|
|
259
|
-
clearAuthToken();
|
|
260
|
-
}
|
|
261
|
-
partial.stopReason = options.signal?.aborted ? "aborted" : "error";
|
|
262
|
-
partial.errorMessage = errorMessage;
|
|
263
|
-
stream.push({
|
|
264
|
-
type: "error",
|
|
265
|
-
reason: partial.stopReason,
|
|
266
|
-
error: partial,
|
|
267
|
-
});
|
|
268
|
-
stream.end();
|
|
269
|
-
}
|
|
270
|
-
finally {
|
|
271
|
-
// Clean up abort handler
|
|
272
|
-
if (options.signal) {
|
|
273
|
-
options.signal.removeEventListener("abort", abortHandler);
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
})();
|
|
277
|
-
return stream;
|
|
278
|
-
}
|
|
279
|
-
/**
|
|
280
|
-
* Transport that uses an app server with user authentication tokens.
|
|
281
|
-
* The server manages user accounts and proxies requests to LLM providers.
|
|
282
|
-
*/
|
|
283
|
-
export class AppTransport {
|
|
284
|
-
constructor() {
|
|
285
|
-
this.proxyUrl = "https://genai.mariozechner.at";
|
|
286
|
-
}
|
|
287
|
-
async getStreamFn() {
|
|
288
|
-
const authToken = await getAuthToken();
|
|
289
|
-
if (!authToken) {
|
|
290
|
-
throw new Error(i18n("Auth token is required for proxy transport"));
|
|
291
|
-
}
|
|
292
|
-
return (model, context, options) => {
|
|
293
|
-
return streamSimpleProxy(model, context, { ...options, authToken }, this.proxyUrl);
|
|
294
|
-
};
|
|
295
|
-
}
|
|
296
|
-
buildContext(messages, cfg) {
|
|
297
|
-
return {
|
|
298
|
-
systemPrompt: cfg.systemPrompt,
|
|
299
|
-
messages,
|
|
300
|
-
tools: cfg.tools,
|
|
301
|
-
};
|
|
302
|
-
}
|
|
303
|
-
buildLoopConfig(cfg) {
|
|
304
|
-
return {
|
|
305
|
-
model: cfg.model,
|
|
306
|
-
reasoning: cfg.reasoning,
|
|
307
|
-
getQueuedMessages: cfg.getQueuedMessages,
|
|
308
|
-
};
|
|
309
|
-
}
|
|
310
|
-
async *run(messages, userMessage, cfg, signal) {
|
|
311
|
-
const streamFn = await this.getStreamFn();
|
|
312
|
-
const context = this.buildContext(messages, cfg);
|
|
313
|
-
const pc = this.buildLoopConfig(cfg);
|
|
314
|
-
for await (const ev of agentLoop(userMessage, context, pc, signal, streamFn)) {
|
|
315
|
-
yield ev;
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
async *continue(messages, cfg, signal) {
|
|
319
|
-
const streamFn = await this.getStreamFn();
|
|
320
|
-
const context = this.buildContext(messages, cfg);
|
|
321
|
-
const pc = this.buildLoopConfig(cfg);
|
|
322
|
-
for await (const ev of agentLoopContinue(context, pc, signal, streamFn)) {
|
|
323
|
-
yield ev;
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
//# sourceMappingURL=AppTransport.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AppTransport.js","sourceRoot":"","sources":["../../../src/agent/transports/AppTransport.ts"],"names":[],"mappings":"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"}
|