@sentry/junior 0.258.0 → 0.259.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/adapter-Bn0gFVSF.js +270 -0
- package/dist/{admin-My1SLGVO.js → admin-C8xz2f10.js} +1 -1
- package/dist/{agent-hooks-BJ_5mlRH.js → agent-hooks-B00FaKdP.js} +9 -8
- package/dist/{agent-runner-DGsFQw72.js → agent-runner-CPSd7rKm.js} +87 -308
- package/dist/api/schema.d.ts +29 -0
- package/dist/api/schema.js +2 -2
- package/dist/api.js +93 -22
- package/dist/{app-PX2H1PxU.d.ts → app-Bbxrehjf.d.ts} +5 -2
- package/dist/app.d.ts +2 -2
- package/dist/app.js +30 -28
- package/dist/{assistant-reply-H1M-91oF.js → assistant-reply-CqthTerd.js} +1 -1
- package/dist/{briefs-vYoK85rJ.js → briefs-DNYbQ9cD.js} +2 -2
- package/dist/{catalog-runtime-BN4DVxco.js → catalog-runtime-B8SuFPGb.js} +1 -1
- package/dist/cli/chat.d.ts +1 -1
- package/dist/cli/chat.js +15 -15
- package/dist/cli/check.js +3 -3
- package/dist/cli/main.js +6 -2
- package/dist/cli/plugins.d.ts +1 -1
- package/dist/cli/plugins.js +4 -4
- package/dist/cli/run.d.ts +2 -1
- package/dist/cli/run.js +2 -1
- package/dist/cli/snapshot-create.js +4 -3
- package/dist/cli/upgrade.d.ts +1 -1
- package/dist/cli/upgrade.js +3 -3
- package/dist/{client-DbyHuMFU.js → client-BZdxgKyL.js} +57 -4
- package/dist/{config-_WO_AjCB.js → config-Deqpfpg9.js} +5 -2
- package/dist/{connections-ag_1JOhB.js → connections-9gJkfS85.js} +174 -10
- package/dist/{conversation-privacy-DHP_xnVj.js → conversation-privacy-CFhNKxp-.js} +1 -1
- package/dist/{credential-sync-B-CPX_ag.js → credential-sync-BABGymK3.js} +15 -177
- package/dist/{executor-RvG6kVe1.js → executor-Bb3eQb8q.js} +2 -2
- package/dist/{images-C2J_bj2g.js → images-BbSdVHC6.js} +2 -2
- package/dist/instrumentation.js +2 -2
- package/dist/{job-queue-DVe37it2.js → job-queue-vdGU-5ge.js} +1 -1
- package/dist/{logging-DsHONhVm.js → logging-BStXN56b.js} +1 -1
- package/dist/{message-DyitL8no.js → message-DRf6m4uO.js} +3 -3
- package/dist/nitro.d.ts +2 -2
- package/dist/nitro.js +3 -3
- package/dist/{oauth-callback-server-CDby-pCn.js → oauth-callback-server-JmOgLcGl.js} +2 -2
- package/dist/{pending-auth-D8J1uJUS.js → pending-auth-rG5U_QS1.js} +62 -62
- package/dist/{plugins-B11Mfkmv.d.ts → plugins-B_0Cr0MO.d.ts} +5 -1
- package/dist/{profile-DpYjfKke.js → profile-qBM6B_-V.js} +4 -273
- package/dist/{registry-Du566MtJ.js → registry-B_M_x_iS.js} +41 -2
- package/dist/{resolve-ClCIgh8E.js → resolve-BzpuLh8c.js} +3 -2
- package/dist/{result-BBbKA61B.js → result-DEZH_AnZ.js} +6 -6
- package/dist/{runner-CCuqFSqx.js → runner-BqQlG10t.js} +9 -9
- package/dist/{sandbox-egress-signals-DY1mbKF4.js → sandbox-egress-signals-DCq3WLs5.js} +1 -1
- package/dist/{schema-DrMh3NtR.js → schema-CF9HqNRY.js} +15 -1
- package/dist/service-account-BqTBkyD7.js +120 -0
- package/dist/service-account-BzhW7kXu.js +661 -0
- package/dist/{session-stop-CIoFiwwe.js → session-stop-CV65ZlU3.js} +10 -10
- package/dist/{skills-DyQBLIrK.js → skills-CiWS5_Ub.js} +2 -2
- package/dist/{spawn-Dqfeo7XP.js → spawn-BSAQ7UQZ.js} +2 -2
- package/dist/{store-DJLwq4x8.js → store-B1GES4gC.js} +6 -6
- package/dist/{task-queue-BzW4MaWU.js → task-queue-BAeGEMjJ.js} +3 -3
- package/dist/{task-runner-D3qJh4fK.js → task-runner-BlGhcQPi.js} +10 -10
- package/dist/{tasks-CEXKTASS.js → tasks-DieKX3d4.js} +9 -8
- package/dist/{thread-state-W3f6kAtz.js → thread-state-DpSWS4Rr.js} +6 -6
- package/dist/{turn-failure-response-CWx7aNIh.js → turn-failure-response-DQljogGJ.js} +7 -7
- package/dist/{turn-lifecycle-C9JFst7-.js → turn-lifecycle-BLgrkV_L.js} +1 -1
- package/dist/{turn-session-routing-CUxtfpr7.js → turn-session-routing-BlajheOU.js} +1 -1
- package/dist/{validation-BHRxa5G4.js → validation-23d7K9tX.js} +1 -1
- package/dist/{version-C0U6rHg0.js → version-B_XumRx-.js} +1 -1
- package/dist/version.js +1 -1
- package/dist/{viewer-CGvvRqKp.js → viewer-B2_ABsYi.js} +3 -3
- package/dist/{web-input-Keb5GRWj.js → web-input-BZDyxpzR.js} +29 -29
- package/dist/{work-DRcsJ3hV.js → work-D3QKiV0O.js} +9 -9
- package/dist/{worker-Cjo-QqPq.js → worker-C8mUjYf9.js} +5 -5
- package/package.json +7 -7
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { T as withSpan, _ as serializeGenAiAttribute, f as logException, h as normalizeGenAiFinishReason, i as extractGenAiUsageAttributes, m as logWarn } from "./logging-
|
|
2
|
-
import { a as toCanonicalInputMessage, n as getCurrentConversationPrivacy, o as toCanonicalOutputMessage, s as toGenAiMessagesTraceAttributes } from "./conversation-privacy-
|
|
1
|
+
import { T as withSpan, _ as serializeGenAiAttribute, f as logException, h as normalizeGenAiFinishReason, i as extractGenAiUsageAttributes, m as logWarn } from "./logging-BStXN56b.js";
|
|
2
|
+
import { a as toCanonicalInputMessage, n as getCurrentConversationPrivacy, o as toCanonicalOutputMessage, s as toGenAiMessagesTraceAttributes } from "./conversation-privacy-CFhNKxp-.js";
|
|
3
3
|
import { calculateCost, completeSimple, getEnvApiKey, getModels, registerApiProvider } from "@earendil-works/pi-ai/compat";
|
|
4
4
|
import { stream as streamAnthropic, streamSimple as streamSimpleAnthropic } from "@earendil-works/pi-ai/api/anthropic-messages";
|
|
5
5
|
import { createGatewayProvider } from "@ai-sdk/gateway";
|
|
6
6
|
import { getVercelOidcToken } from "@vercel/oidc";
|
|
7
|
-
import { NoObjectGeneratedError, embedMany, generateObject } from "ai";
|
|
7
|
+
import { Experimental_DecisionRefusalError, NoObjectGeneratedError, embedMany, experimental_decide, generateObject } from "ai";
|
|
8
8
|
// src/chat/optional-string.ts
|
|
9
9
|
/**
|
|
10
10
|
* Normalize optional env-style strings so blank values do not masquerade as
|
|
@@ -400,6 +400,7 @@ const GEN_AI_PROVIDER_NAME = GATEWAY_PROVIDER;
|
|
|
400
400
|
const GEN_AI_SERVER_ADDRESS = "ai-gateway.vercel.sh";
|
|
401
401
|
const GEN_AI_OPERATION_CHAT = "chat";
|
|
402
402
|
const GEN_AI_OPERATION_EMBEDDINGS = "embeddings";
|
|
403
|
+
const GEN_AI_OPERATION_DECIDE = "decide";
|
|
403
404
|
const EMBEDDING_INPUT_COST_USD_PER_MILLION_TOKENS = {
|
|
404
405
|
"cohere/embed-v4.0": .12,
|
|
405
406
|
"google/gemini-embedding-001": .15,
|
|
@@ -411,6 +412,14 @@ const EMBEDDING_INPUT_COST_USD_PER_MILLION_TOKENS = {
|
|
|
411
412
|
"voyage/voyage-3.5": .06,
|
|
412
413
|
"voyage/voyage-3.5-lite": .02
|
|
413
414
|
};
|
|
415
|
+
const DECISION_INPUT_COST_USD_PER_MILLION_TOKENS = {
|
|
416
|
+
"openai/gpt-6-luna-decisions": .1,
|
|
417
|
+
"typesafe-ai/jev": .042
|
|
418
|
+
};
|
|
419
|
+
function decisionCostUsd(modelId, inputTokens) {
|
|
420
|
+
const costPerMillionTokens = DECISION_INPUT_COST_USD_PER_MILLION_TOKENS[modelId];
|
|
421
|
+
return costPerMillionTokens === void 0 || inputTokens === void 0 ? void 0 : inputTokens * costPerMillionTokens / 1e6;
|
|
422
|
+
}
|
|
414
423
|
function embeddingCostUsd(modelId, inputTokens) {
|
|
415
424
|
const costPerMillionTokens = EMBEDDING_INPUT_COST_USD_PER_MILLION_TOKENS[modelId];
|
|
416
425
|
return costPerMillionTokens === void 0 ? void 0 : inputTokens * costPerMillionTokens / 1e6;
|
|
@@ -605,6 +614,50 @@ async function completeObject(params) {
|
|
|
605
614
|
...costUsd !== void 0 ? { costUsd } : void 0
|
|
606
615
|
};
|
|
607
616
|
}
|
|
617
|
+
/** Answer typed decision questions with an AI Gateway decision model, such as Jev. */
|
|
618
|
+
async function completeDecision(params) {
|
|
619
|
+
const credential = await resolveGatewayCredential();
|
|
620
|
+
const provider = createGatewayProvider(credential ? { apiKey: credential.token } : {});
|
|
621
|
+
try {
|
|
622
|
+
const result = await withSpan(`${GEN_AI_OPERATION_DECIDE} ${params.modelId}`, "gen_ai.decide", logContextFromMetadata(params.modelId, params.metadata), async (setSpanAttributes) => {
|
|
623
|
+
const result = await experimental_decide({
|
|
624
|
+
model: provider.decisionModel(params.modelId),
|
|
625
|
+
state: params.state,
|
|
626
|
+
questions: params.questions,
|
|
627
|
+
...params.signal !== void 0 ? { abortSignal: params.signal } : void 0
|
|
628
|
+
});
|
|
629
|
+
const costUsd = decisionCostUsd(params.modelId, result.usage.inputTokens);
|
|
630
|
+
setSpanAttributes(extractGenAiUsageAttributes({
|
|
631
|
+
...result.usage,
|
|
632
|
+
...costUsd !== void 0 ? { cost: {
|
|
633
|
+
input: costUsd,
|
|
634
|
+
total: costUsd
|
|
635
|
+
} } : void 0
|
|
636
|
+
}));
|
|
637
|
+
return {
|
|
638
|
+
answers: result.answers,
|
|
639
|
+
costUsd
|
|
640
|
+
};
|
|
641
|
+
}, {
|
|
642
|
+
"gen_ai.provider.name": GEN_AI_PROVIDER_NAME,
|
|
643
|
+
"gen_ai.operation.name": GEN_AI_OPERATION_DECIDE,
|
|
644
|
+
"gen_ai.request.model": params.modelId,
|
|
645
|
+
...params.promptName ? { "gen_ai.prompt.name": params.promptName } : void 0,
|
|
646
|
+
"server.address": GEN_AI_SERVER_ADDRESS,
|
|
647
|
+
"server.port": 443,
|
|
648
|
+
"gen_ai.provider.auth_mode": credential?.mode ?? "api_key"
|
|
649
|
+
});
|
|
650
|
+
return {
|
|
651
|
+
answers: result.answers,
|
|
652
|
+
...result.costUsd !== void 0 ? { costUsd: result.costUsd } : void 0
|
|
653
|
+
};
|
|
654
|
+
} catch (error) {
|
|
655
|
+
throw createProviderError(error, {
|
|
656
|
+
...Experimental_DecisionRefusalError.isInstance(error) ? { kind: "invalid_response" } : void 0,
|
|
657
|
+
modelId: params.modelId
|
|
658
|
+
});
|
|
659
|
+
}
|
|
660
|
+
}
|
|
608
661
|
/** Generate text embeddings through the host-owned AI Gateway provider. */
|
|
609
662
|
async function embedTexts(params) {
|
|
610
663
|
const texts = params.texts.map((text) => text.trim());
|
|
@@ -665,4 +718,4 @@ async function embedTexts(params) {
|
|
|
665
718
|
throw providerError;
|
|
666
719
|
}
|
|
667
720
|
}
|
|
668
|
-
export { toOptionalTrimmed as S,
|
|
721
|
+
export { toOptionalTrimmed as C, resolveGatewayCredential as S, getProviderErrorAttributes as _, completeText as a, MISSING_GATEWAY_CREDENTIALS_ERROR as b, COMPACTION_SUMMARY_PREFIX as c, renderCurrentInstruction as d, unwrapCurrentInstruction as f, findProviderError as g, createProviderError as h, completeObject as i, hasCompactedConversationContext as l, ProviderError as m, GEN_AI_SERVER_ADDRESS as n, embedTexts as o, escapeXml as p, completeDecision as r, resolveGatewayModel as s, GEN_AI_PROVIDER_NAME as t, isCompactionSummaryText as u, getProviderErrorUserMessage as v, getGatewayApiKey as x, isProviderRetryError as y };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-nwUcYXjP.js";
|
|
2
|
-
import {
|
|
3
|
-
import { m as logWarn } from "./logging-
|
|
2
|
+
import { C as toOptionalTrimmed, s as resolveGatewayModel } from "./client-BZdxgKyL.js";
|
|
3
|
+
import { m as logWarn } from "./logging-BStXN56b.js";
|
|
4
4
|
import { l as TURN_REASONING_LEVELS, s as modelProfileSchema, t as DEFAULT_MODEL_PROFILES, u as parseTurnReasoningLevel } from "./model-profile-Bg8EoCKD.js";
|
|
5
5
|
// src/chat/slack/emoji.ts
|
|
6
6
|
const SLACK_EMOJI_NAME_RE = /^(?:[a-z0-9_+-]+)(?:::(?:skin-tone-[2-6]))?$/;
|
|
@@ -145,6 +145,7 @@ const DEFAULT_FAST_MODEL_ID = resolveGatewayModel("openai/gpt-6-luna").id;
|
|
|
145
145
|
const DEFAULT_GUARDIAN_MODEL_ID = resolveGatewayModel("openai/gpt-6-luna").id;
|
|
146
146
|
const DEFAULT_HANDOFF_MODEL_ID = resolveGatewayModel(DEFAULT_MODEL_PROFILES.handoff.modelId).id;
|
|
147
147
|
const DEFAULT_WEB_SEARCH_MODEL_ID = resolveGatewayModel("openai/gpt-6-luna").id;
|
|
148
|
+
const DEFAULT_DECISION_MODEL_ID = "typesafe-ai/jev";
|
|
148
149
|
const DEFAULT_EMBEDDING_MODEL_ID = "openai/text-embedding-3-small";
|
|
149
150
|
const DEFAULT_IMAGE_GENERATION_MODEL_ID = "google/gemini-3-pro-image";
|
|
150
151
|
const DEFAULT_VISION_MODEL_ID = resolveGatewayModel("openai/gpt-5.6-sol").id;
|
|
@@ -260,6 +261,7 @@ function readBotConfig(env, functionMaxDurationSeconds) {
|
|
|
260
261
|
profiles: parseProfiles(env.AI_MODEL_PROFILES, modelId, handoffModelId),
|
|
261
262
|
contextWindowTokens: parseOptionalPositiveInteger("AI_MODEL_CONTEXT_WINDOW_TOKENS", env.AI_MODEL_CONTEXT_WINDOW_TOKENS) ?? DEFAULT_MODEL_CONTEXT_WINDOW_TOKENS,
|
|
262
263
|
reasoningLevel: reasoningLevel === void 0 ? void 0 : parseTurnReasoningLevel(reasoningLevel),
|
|
264
|
+
decisionModelId: toOptionalTrimmed(env.AI_DECISION_MODEL) ?? DEFAULT_DECISION_MODEL_ID,
|
|
263
265
|
fastModelId,
|
|
264
266
|
guardianModelId,
|
|
265
267
|
imageGenerationModelId: toOptionalTrimmed(env.AI_IMAGE_MODEL) ?? DEFAULT_IMAGE_GENERATION_MODEL_ID,
|
|
@@ -422,6 +424,7 @@ function getRuntimeMetadata() {
|
|
|
422
424
|
}
|
|
423
425
|
/** Apply model overrides from createApp(). */
|
|
424
426
|
function setBotModelConfig(config) {
|
|
427
|
+
if (config.decisionModelId !== void 0) botConfig.decisionModelId = requireModelId("decisionModelId", config.decisionModelId, toOptionalTrimmed);
|
|
425
428
|
if (config.embeddingModelId !== void 0) botConfig.embeddingModelId = requireModelId("embeddingModelId", config.embeddingModelId, validateEmbeddingModelId);
|
|
426
429
|
if (config.fastModelId !== void 0) botConfig.fastModelId = requireModelId("fastModelId", config.fastModelId, validateGatewayModelId);
|
|
427
430
|
if (config.guardianModelId !== void 0) botConfig.guardianModelId = requireModelId("guardianModelId", config.guardianModelId, validateGatewayModelId);
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
1
|
+
import { Ft as startOAuthFlow, c as deleteMcpAuthSessionsForUserProvider, l as deleteMcpServerSessionId, u as deleteMcpStoredOAuthCredentials } from "./agent-runner-CPSd7rKm.js";
|
|
2
|
+
import { n as botConfig } from "./config-Deqpfpg9.js";
|
|
3
|
+
import { A as deleteProviderIdentityForUser, c as getConversationEventStore, f as getSqlExecutor, k as deleteProviderIdentityForSlackUser } from "./viewer-B2_ABsYi.js";
|
|
4
|
+
import { u as hasRequiredOAuthScope } from "./registry-B_M_x_iS.js";
|
|
5
|
+
import { n as pluginCatalogRuntime } from "./catalog-runtime-B8SuFPGb.js";
|
|
6
|
+
import { K as loadTurnCheckpoint, X as failTurnRecord, Z as getTurnRecord } from "./tasks-DieKX3d4.js";
|
|
7
|
+
import { r as getStateAdapter } from "./adapter-Bn0gFVSF.js";
|
|
8
|
+
import { a as getVercelConversationWorkQueue } from "./job-queue-vdGU-5ge.js";
|
|
9
|
+
import { m as ensureConversationWake, w as requestConversationWork } from "./store-B1GES4gC.js";
|
|
10
|
+
import { n as resolveTurnSessionRouting } from "./turn-session-routing-BlajheOU.js";
|
|
10
11
|
import { z } from "zod";
|
|
11
12
|
import { randomBytes, randomUUID } from "node:crypto";
|
|
12
13
|
// src/chat/task-execution/authorized-turn.ts
|
|
@@ -125,6 +126,169 @@ async function wakeAuthorizedTurn(args, queue) {
|
|
|
125
126
|
const request = await recordTurnAuthorization(args);
|
|
126
127
|
if (request) await wakePausedTurn(request, { queue });
|
|
127
128
|
}
|
|
129
|
+
// src/handlers/oauth-html.ts
|
|
130
|
+
/** Build pre-escaped callback HTML with the shared response security policy. */
|
|
131
|
+
function htmlCallbackResponse(title, message, status, options = {}) {
|
|
132
|
+
const footerMessage = options.footerMessage ?? `You can close this tab and return to ${botConfig.userName}.`;
|
|
133
|
+
const isSuccess = status >= 200 && status < 300;
|
|
134
|
+
const statusClass = isSuccess ? "success" : "error";
|
|
135
|
+
const statusIcon = isSuccess ? "" : "!";
|
|
136
|
+
const html = `<!DOCTYPE html>
|
|
137
|
+
<html lang="en">
|
|
138
|
+
<head>
|
|
139
|
+
<meta charset="utf-8">
|
|
140
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
141
|
+
<meta name="color-scheme" content="light dark">
|
|
142
|
+
<title>${title}</title>
|
|
143
|
+
<style>
|
|
144
|
+
:root {
|
|
145
|
+
color-scheme: light dark;
|
|
146
|
+
--canvas: #f4f1fa;
|
|
147
|
+
--surface: #ffffff;
|
|
148
|
+
--text: #211a2c;
|
|
149
|
+
--muted: #6e6479;
|
|
150
|
+
--border: #ded7e8;
|
|
151
|
+
--accent: #6c5fc7;
|
|
152
|
+
--success: #16835c;
|
|
153
|
+
--success-soft: #ddf5ea;
|
|
154
|
+
--error: #bc3d50;
|
|
155
|
+
--error-soft: #fce7eb;
|
|
156
|
+
--shadow: 0 24px 64px rgba(45, 31, 63, 0.14);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
* { box-sizing: border-box; }
|
|
160
|
+
|
|
161
|
+
body {
|
|
162
|
+
min-height: 100vh;
|
|
163
|
+
margin: 0;
|
|
164
|
+
display: grid;
|
|
165
|
+
place-items: center;
|
|
166
|
+
padding: 24px;
|
|
167
|
+
background: var(--canvas);
|
|
168
|
+
color: var(--text);
|
|
169
|
+
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
main {
|
|
173
|
+
width: min(100%, 480px);
|
|
174
|
+
padding: 48px 40px 40px;
|
|
175
|
+
text-align: center;
|
|
176
|
+
background: var(--surface);
|
|
177
|
+
border: 1px solid var(--border);
|
|
178
|
+
border-radius: 24px;
|
|
179
|
+
box-shadow: var(--shadow);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
.brand {
|
|
183
|
+
display: inline-flex;
|
|
184
|
+
align-items: center;
|
|
185
|
+
gap: 8px;
|
|
186
|
+
margin-bottom: 32px;
|
|
187
|
+
color: var(--muted);
|
|
188
|
+
font-size: 14px;
|
|
189
|
+
font-weight: 700;
|
|
190
|
+
letter-spacing: 0.08em;
|
|
191
|
+
text-transform: uppercase;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.brand-mark {
|
|
195
|
+
width: 10px;
|
|
196
|
+
height: 10px;
|
|
197
|
+
background: var(--accent);
|
|
198
|
+
border-radius: 3px;
|
|
199
|
+
transform: rotate(12deg);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.status {
|
|
203
|
+
width: 64px;
|
|
204
|
+
height: 64px;
|
|
205
|
+
margin: 0 auto 24px;
|
|
206
|
+
display: grid;
|
|
207
|
+
place-items: center;
|
|
208
|
+
border-radius: 20px;
|
|
209
|
+
font-size: 32px;
|
|
210
|
+
font-weight: 750;
|
|
211
|
+
line-height: 1;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
.status.success { color: var(--success); background: var(--success-soft); }
|
|
215
|
+
.status.success::before {
|
|
216
|
+
content: "";
|
|
217
|
+
width: 12px;
|
|
218
|
+
height: 24px;
|
|
219
|
+
margin-top: -5px;
|
|
220
|
+
border-right: 4px solid currentColor;
|
|
221
|
+
border-bottom: 4px solid currentColor;
|
|
222
|
+
transform: rotate(45deg);
|
|
223
|
+
}
|
|
224
|
+
.status.error { color: var(--error); background: var(--error-soft); }
|
|
225
|
+
|
|
226
|
+
h1 {
|
|
227
|
+
margin: 0;
|
|
228
|
+
font-size: clamp(28px, 7vw, 36px);
|
|
229
|
+
line-height: 1.12;
|
|
230
|
+
letter-spacing: -0.035em;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
.message {
|
|
234
|
+
margin: 16px auto 0;
|
|
235
|
+
color: var(--muted);
|
|
236
|
+
font-size: 17px;
|
|
237
|
+
line-height: 1.6;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
.footer {
|
|
241
|
+
margin: 32px 0 0;
|
|
242
|
+
padding-top: 24px;
|
|
243
|
+
color: var(--muted);
|
|
244
|
+
border-top: 1px solid var(--border);
|
|
245
|
+
font-size: 14px;
|
|
246
|
+
line-height: 1.5;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
@media (prefers-color-scheme: dark) {
|
|
250
|
+
:root {
|
|
251
|
+
--canvas: #15121a;
|
|
252
|
+
--surface: #211c28;
|
|
253
|
+
--text: #f6f1fb;
|
|
254
|
+
--muted: #b8adbf;
|
|
255
|
+
--border: #3a3243;
|
|
256
|
+
--accent: #a99af0;
|
|
257
|
+
--success: #72d6ad;
|
|
258
|
+
--success-soft: #193c30;
|
|
259
|
+
--error: #ff9aaa;
|
|
260
|
+
--error-soft: #48262e;
|
|
261
|
+
--shadow: 0 24px 64px rgba(0, 0, 0, 0.36);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
@media (max-width: 520px) {
|
|
266
|
+
body { padding: 16px; }
|
|
267
|
+
main { padding: 40px 24px 32px; border-radius: 20px; }
|
|
268
|
+
}
|
|
269
|
+
</style>
|
|
270
|
+
</head>
|
|
271
|
+
<body>
|
|
272
|
+
<main>
|
|
273
|
+
<div class="brand"><span class="brand-mark" aria-hidden="true"></span>${botConfig.userName}</div>
|
|
274
|
+
<div class="status ${statusClass}" aria-hidden="true">${statusIcon}</div>
|
|
275
|
+
<h1>${title}</h1>
|
|
276
|
+
<p class="message">${message}</p>
|
|
277
|
+
<p class="footer">${footerMessage}</p>
|
|
278
|
+
</main>
|
|
279
|
+
</body>
|
|
280
|
+
</html>`;
|
|
281
|
+
return new Response(html, {
|
|
282
|
+
status,
|
|
283
|
+
headers: {
|
|
284
|
+
"Cache-Control": "no-store",
|
|
285
|
+
"Content-Security-Policy": "default-src 'none'; style-src 'unsafe-inline'; frame-ancestors 'none'; base-uri 'none'; form-action 'none'",
|
|
286
|
+
"Content-Type": "text/html; charset=utf-8",
|
|
287
|
+
"Referrer-Policy": "no-referrer",
|
|
288
|
+
"X-Content-Type-Options": "nosniff"
|
|
289
|
+
}
|
|
290
|
+
});
|
|
291
|
+
}
|
|
128
292
|
// src/chat/conversations/web-authorization.ts
|
|
129
293
|
const WEB_AUTHORIZATION_PREFIX = "junior:web_authorization:v1";
|
|
130
294
|
const WEB_AUTHORIZATION_TTL_MS = 864e5;
|
|
@@ -236,4 +400,4 @@ async function disconnectConnection(userId, provider, userTokenStore, viewerUser
|
|
|
236
400
|
if (tokens?.account) await deleteProviderIdentityForUser(getSqlExecutor(), viewerUserId, provider, tokens.account.id);
|
|
237
401
|
await unlinkProvider(userId, provider, userTokenStore);
|
|
238
402
|
}
|
|
239
|
-
export { startConnection as a, deleteWebAuthorization as c,
|
|
403
|
+
export { startConnection as a, deleteWebAuthorization as c, createPausedTurns as d, getPausedTurnRequest as f, getTurnAuthorization as h, readConnectedOAuthTokens as i, getWebAuthorization as l, wakePausedTurn as m, isConnectableProvider as n, unlinkProvider as o, wakeAuthorizedTurn as p, listConnections as r, createWebAuthorization as s, disconnectConnection as t, htmlCallbackResponse as u };
|
|
@@ -1,188 +1,26 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { L as isNativeIdentityProvider, f as logException, g as runBestEffort, m as logWarn } from "./logging-
|
|
4
|
-
import { a as getRuntimeMetadata, n as botConfig } from "./config-
|
|
1
|
+
import { It as createUserTokenStore, Mt as formatProviderLabel, Nt as parseOAuthStatePayload, Pt as resolveBaseUrl, _ as resolvePluginOAuthAccount, d as getMcpAuthSession, f as getMcpStoredOAuthCredentials, o as finalizeMcpAuthorization, p as putMcpStoredOAuthCredentials, s as deleteMcpAuthSession, x as lookupSlackUserProfile } from "./agent-runner-CPSd7rKm.js";
|
|
2
|
+
import { p as escapeXml } from "./client-BZdxgKyL.js";
|
|
3
|
+
import { L as isNativeIdentityProvider, f as logException, g as runBestEffort, m as logWarn } from "./logging-BStXN56b.js";
|
|
4
|
+
import { a as getRuntimeMetadata, n as botConfig } from "./config-Deqpfpg9.js";
|
|
5
5
|
import { f as parseSlackUserId } from "./actor-tlxzqaRe.js";
|
|
6
|
-
import { F as upsertIdentity, I as upsertLinkedIdentity, b as identityFromActor, f as getSqlExecutor, j as findUserByVerifiedEmails } from "./viewer-
|
|
6
|
+
import { F as upsertIdentity, I as upsertLinkedIdentity, b as identityFromActor, f as getSqlExecutor, j as findUserByVerifiedEmails } from "./viewer-B2_ABsYi.js";
|
|
7
7
|
import { i as homeDir } from "./package-discovery-DJBompdd.js";
|
|
8
|
-
import { n as buildOAuthTokenRequest, r as parseOAuthTokenResponse, u as hasRequiredOAuthScope } from "./registry-
|
|
9
|
-
import { n as pluginCatalogRuntime } from "./catalog-runtime-
|
|
10
|
-
import { t as discoverSkills } from "./skills-
|
|
11
|
-
import { B as postSlackMessage, Ft as recordAuthenticationLinked, It as recordAuthorizationCompleted, Z as getTurnRecord } from "./tasks-
|
|
12
|
-
import { Ht as getSlackClient } from "./agent-hooks-
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
8
|
+
import { n as buildOAuthTokenRequest, r as parseOAuthTokenResponse, u as hasRequiredOAuthScope } from "./registry-B_M_x_iS.js";
|
|
9
|
+
import { n as pluginCatalogRuntime } from "./catalog-runtime-B8SuFPGb.js";
|
|
10
|
+
import { t as discoverSkills } from "./skills-CiWS5_Ub.js";
|
|
11
|
+
import { B as postSlackMessage, Ft as recordAuthenticationLinked, It as recordAuthorizationCompleted, Z as getTurnRecord } from "./tasks-DieKX3d4.js";
|
|
12
|
+
import { Ht as getSlackClient } from "./agent-hooks-B00FaKdP.js";
|
|
13
|
+
import { i as getConversationPendingAuth } from "./pending-auth-rG5U_QS1.js";
|
|
14
|
+
import { a as acquireActiveLock, r as getStateAdapter } from "./adapter-Bn0gFVSF.js";
|
|
15
|
+
import { _ as getMcpProviderErrorAttributes } from "./service-account-BzhW7kXu.js";
|
|
16
|
+
import { r as getPersistedThreadState, s as coerceThreadConversationState } from "./thread-state-DpSWS4Rr.js";
|
|
17
|
+
import { c as deleteWebAuthorization, i as readConnectedOAuthTokens, m as wakePausedTurn, p as wakeAuthorizedTurn, u as htmlCallbackResponse } from "./connections-9gJkfS85.js";
|
|
17
18
|
import { n as relayLocalOAuthCallback } from "./oauth-relay-CTygMkNx.js";
|
|
18
19
|
import path from "node:path";
|
|
19
20
|
import { z } from "zod";
|
|
20
21
|
import { createHmac, createSecretKey, timingSafeEqual } from "node:crypto";
|
|
21
22
|
import { pluginStoredTokensSchema } from "@sentry/junior-plugin-api";
|
|
22
23
|
import fs from "node:fs";
|
|
23
|
-
// src/handlers/oauth-html.ts
|
|
24
|
-
/** Build pre-escaped callback HTML with the shared response security policy. */
|
|
25
|
-
function htmlCallbackResponse(title, message, status, options = {}) {
|
|
26
|
-
const footerMessage = options.footerMessage ?? `You can close this tab and return to ${botConfig.userName}.`;
|
|
27
|
-
const isSuccess = status >= 200 && status < 300;
|
|
28
|
-
const statusClass = isSuccess ? "success" : "error";
|
|
29
|
-
const statusIcon = isSuccess ? "" : "!";
|
|
30
|
-
const html = `<!DOCTYPE html>
|
|
31
|
-
<html lang="en">
|
|
32
|
-
<head>
|
|
33
|
-
<meta charset="utf-8">
|
|
34
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
35
|
-
<meta name="color-scheme" content="light dark">
|
|
36
|
-
<title>${title}</title>
|
|
37
|
-
<style>
|
|
38
|
-
:root {
|
|
39
|
-
color-scheme: light dark;
|
|
40
|
-
--canvas: #f4f1fa;
|
|
41
|
-
--surface: #ffffff;
|
|
42
|
-
--text: #211a2c;
|
|
43
|
-
--muted: #6e6479;
|
|
44
|
-
--border: #ded7e8;
|
|
45
|
-
--accent: #6c5fc7;
|
|
46
|
-
--success: #16835c;
|
|
47
|
-
--success-soft: #ddf5ea;
|
|
48
|
-
--error: #bc3d50;
|
|
49
|
-
--error-soft: #fce7eb;
|
|
50
|
-
--shadow: 0 24px 64px rgba(45, 31, 63, 0.14);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
* { box-sizing: border-box; }
|
|
54
|
-
|
|
55
|
-
body {
|
|
56
|
-
min-height: 100vh;
|
|
57
|
-
margin: 0;
|
|
58
|
-
display: grid;
|
|
59
|
-
place-items: center;
|
|
60
|
-
padding: 24px;
|
|
61
|
-
background: var(--canvas);
|
|
62
|
-
color: var(--text);
|
|
63
|
-
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
main {
|
|
67
|
-
width: min(100%, 480px);
|
|
68
|
-
padding: 48px 40px 40px;
|
|
69
|
-
text-align: center;
|
|
70
|
-
background: var(--surface);
|
|
71
|
-
border: 1px solid var(--border);
|
|
72
|
-
border-radius: 24px;
|
|
73
|
-
box-shadow: var(--shadow);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
.brand {
|
|
77
|
-
display: inline-flex;
|
|
78
|
-
align-items: center;
|
|
79
|
-
gap: 8px;
|
|
80
|
-
margin-bottom: 32px;
|
|
81
|
-
color: var(--muted);
|
|
82
|
-
font-size: 14px;
|
|
83
|
-
font-weight: 700;
|
|
84
|
-
letter-spacing: 0.08em;
|
|
85
|
-
text-transform: uppercase;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
.brand-mark {
|
|
89
|
-
width: 10px;
|
|
90
|
-
height: 10px;
|
|
91
|
-
background: var(--accent);
|
|
92
|
-
border-radius: 3px;
|
|
93
|
-
transform: rotate(12deg);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
.status {
|
|
97
|
-
width: 64px;
|
|
98
|
-
height: 64px;
|
|
99
|
-
margin: 0 auto 24px;
|
|
100
|
-
display: grid;
|
|
101
|
-
place-items: center;
|
|
102
|
-
border-radius: 20px;
|
|
103
|
-
font-size: 32px;
|
|
104
|
-
font-weight: 750;
|
|
105
|
-
line-height: 1;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
.status.success { color: var(--success); background: var(--success-soft); }
|
|
109
|
-
.status.success::before {
|
|
110
|
-
content: "";
|
|
111
|
-
width: 12px;
|
|
112
|
-
height: 24px;
|
|
113
|
-
margin-top: -5px;
|
|
114
|
-
border-right: 4px solid currentColor;
|
|
115
|
-
border-bottom: 4px solid currentColor;
|
|
116
|
-
transform: rotate(45deg);
|
|
117
|
-
}
|
|
118
|
-
.status.error { color: var(--error); background: var(--error-soft); }
|
|
119
|
-
|
|
120
|
-
h1 {
|
|
121
|
-
margin: 0;
|
|
122
|
-
font-size: clamp(28px, 7vw, 36px);
|
|
123
|
-
line-height: 1.12;
|
|
124
|
-
letter-spacing: -0.035em;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
.message {
|
|
128
|
-
margin: 16px auto 0;
|
|
129
|
-
color: var(--muted);
|
|
130
|
-
font-size: 17px;
|
|
131
|
-
line-height: 1.6;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
.footer {
|
|
135
|
-
margin: 32px 0 0;
|
|
136
|
-
padding-top: 24px;
|
|
137
|
-
color: var(--muted);
|
|
138
|
-
border-top: 1px solid var(--border);
|
|
139
|
-
font-size: 14px;
|
|
140
|
-
line-height: 1.5;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
@media (prefers-color-scheme: dark) {
|
|
144
|
-
:root {
|
|
145
|
-
--canvas: #15121a;
|
|
146
|
-
--surface: #211c28;
|
|
147
|
-
--text: #f6f1fb;
|
|
148
|
-
--muted: #b8adbf;
|
|
149
|
-
--border: #3a3243;
|
|
150
|
-
--accent: #a99af0;
|
|
151
|
-
--success: #72d6ad;
|
|
152
|
-
--success-soft: #193c30;
|
|
153
|
-
--error: #ff9aaa;
|
|
154
|
-
--error-soft: #48262e;
|
|
155
|
-
--shadow: 0 24px 64px rgba(0, 0, 0, 0.36);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
@media (max-width: 520px) {
|
|
160
|
-
body { padding: 16px; }
|
|
161
|
-
main { padding: 40px 24px 32px; border-radius: 20px; }
|
|
162
|
-
}
|
|
163
|
-
</style>
|
|
164
|
-
</head>
|
|
165
|
-
<body>
|
|
166
|
-
<main>
|
|
167
|
-
<div class="brand"><span class="brand-mark" aria-hidden="true"></span>${botConfig.userName}</div>
|
|
168
|
-
<div class="status ${statusClass}" aria-hidden="true">${statusIcon}</div>
|
|
169
|
-
<h1>${title}</h1>
|
|
170
|
-
<p class="message">${message}</p>
|
|
171
|
-
<p class="footer">${footerMessage}</p>
|
|
172
|
-
</main>
|
|
173
|
-
</body>
|
|
174
|
-
</html>`;
|
|
175
|
-
return new Response(html, {
|
|
176
|
-
status,
|
|
177
|
-
headers: {
|
|
178
|
-
"Cache-Control": "no-store",
|
|
179
|
-
"Content-Security-Policy": "default-src 'none'; style-src 'unsafe-inline'; frame-ancestors 'none'; base-uri 'none'; form-action 'none'",
|
|
180
|
-
"Content-Type": "text/html; charset=utf-8",
|
|
181
|
-
"Referrer-Policy": "no-referrer",
|
|
182
|
-
"X-Content-Type-Options": "nosniff"
|
|
183
|
-
}
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
24
|
// src/handlers/mcp-oauth-callback.ts
|
|
187
25
|
/**
|
|
188
26
|
* MCP OAuth callback handler.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { f as logException } from "./logging-
|
|
1
|
+
import { f as logException } from "./logging-BStXN56b.js";
|
|
2
2
|
import { g as startSpanManual } from "./sentry-BBUlHih9.js";
|
|
3
|
-
import "./config-
|
|
3
|
+
import "./config-Deqpfpg9.js";
|
|
4
4
|
import { a as juniorAgentInvocations, c as juniorIdentities, d as juniorDestinations, f as timestamptz, i as juniorAgentBindings, l as juniorUsers, s as juniorConversations } from "./agent-invocations-Qfz7dWgU.js";
|
|
5
5
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
6
6
|
import { sql } from "drizzle-orm";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-nwUcYXjP.js";
|
|
2
|
-
import { D as storeAttachment, T as readLiveAttachment } from "./agent-runner-
|
|
3
|
-
import { f as getSqlExecutor } from "./viewer-
|
|
2
|
+
import { D as storeAttachment, T as readLiveAttachment } from "./agent-runner-CPSd7rKm.js";
|
|
3
|
+
import { f as getSqlExecutor } from "./viewer-B2_ABsYi.js";
|
|
4
4
|
import { L as detectImageMediaType } from "./conversation-DjN3mlog.js";
|
|
5
5
|
// src/chat/attachments/images.ts
|
|
6
6
|
var images_exports = /* @__PURE__ */ __exportAll({
|
package/dist/instrumentation.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { F as getDeploymentTelemetryAttributes, P as getDeploymentServiceVersion } from "./logging-
|
|
1
|
+
import { F as getDeploymentTelemetryAttributes, P as getDeploymentServiceVersion } from "./logging-BStXN56b.js";
|
|
2
2
|
import { _ as vercelAIIntegration, a as getClient, b as withStreamedSpan, c as init, o as getGlobalScope } from "./sentry-BBUlHih9.js";
|
|
3
|
-
import { n as getCurrentConversationPrivacy } from "./conversation-privacy-
|
|
3
|
+
import { n as getCurrentConversationPrivacy } from "./conversation-privacy-CFhNKxp-.js";
|
|
4
4
|
import { t as consumePrivateTraceResultMarker } from "./private-trace-result-CE7_lEdq.js";
|
|
5
5
|
// src/chat/sentry-payload-filter.ts
|
|
6
6
|
const PAYLOAD_ATTRIBUTE_KEYS = /* @__PURE__ */ new Set([
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as getChatConfig } from "./config-
|
|
1
|
+
import { i as getChatConfig } from "./config-Deqpfpg9.js";
|
|
2
2
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { createHash, createHmac, timingSafeEqual } from "node:crypto";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { d as setTag, f as setUser, h as startSpan, i as getActiveSpan, l as logger, n as captureMessage, p as spanToJSON, s as getTraceData, t as captureException, y as withScope } from "./sentry-BBUlHih9.js";
|
|
2
|
-
import { t as JUNIOR_VERSION } from "./version-
|
|
2
|
+
import { t as JUNIOR_VERSION } from "./version-B_XumRx-.js";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { styleText } from "node:util";
|
|
5
5
|
import { ConfigError, configureSync, getConfig, getLogger } from "@logtape/logtape";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-nwUcYXjP.js";
|
|
2
|
-
import {
|
|
3
|
-
import { n as enqueueAgentMessageToParent } from "./result-
|
|
4
|
-
import { r as enqueueAgentInvocation } from "./work-
|
|
2
|
+
import { Bt as actorFromRun, Q as getActiveAgentInvocationForConversation, Vt as toolInvocationDestination, Y as createAgentInvocationForMessage, Z as findChildAgentConversationId, _t as AgentMessageTargetError, vt as PARENT_AGENT_TARGET } from "./agent-runner-CPSd7rKm.js";
|
|
3
|
+
import { n as enqueueAgentMessageToParent } from "./result-DEZH_AnZ.js";
|
|
4
|
+
import { r as enqueueAgentInvocation } from "./work-D3QKiV0O.js";
|
|
5
5
|
// src/chat/agent-invocations/message.ts
|
|
6
6
|
var message_exports = /* @__PURE__ */ __exportAll({ bindMessageAgent: () => bindMessageAgent });
|
|
7
7
|
/**
|
package/dist/nitro.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as JuniorDashboardOptions } from "./app-
|
|
2
|
-
import { n as JuniorPluginSet } from "./plugins-
|
|
1
|
+
import { r as JuniorDashboardOptions } from "./app-Bbxrehjf.js";
|
|
2
|
+
import { n as JuniorPluginSet } from "./plugins-B_0Cr0MO.js";
|
|
3
3
|
export type JuniorNitroDashboardOptions = JuniorDashboardOptions;
|
|
4
4
|
export interface JuniorPluginModuleReference {
|
|
5
5
|
/** Runtime-safe module that exports a `defineJuniorPlugins(...)` set. */
|
package/dist/nitro.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { A as JUNIOR_RETENTION_CRON_SCHEDULE, D as JUNIOR_HEARTBEAT_CRON_SCHEDULE, E as JUNIOR_CONVERSATION_WORK_CALLBACK_ROUTE, M as JUNIOR_WORKSPACE_SNAPSHOT_JOB_CALLBACK_ROUTE, O as JUNIOR_HEARTBEAT_ROUTE, j as JUNIOR_RETENTION_ROUTE, k as JUNIOR_PLUGIN_TASK_CALLBACK_ROUTE } from "./logging-
|
|
1
|
+
import { A as JUNIOR_RETENTION_CRON_SCHEDULE, D as JUNIOR_HEARTBEAT_CRON_SCHEDULE, E as JUNIOR_CONVERSATION_WORK_CALLBACK_ROUTE, M as JUNIOR_WORKSPACE_SNAPSHOT_JOB_CALLBACK_ROUTE, O as JUNIOR_HEARTBEAT_ROUTE, j as JUNIOR_RETENTION_ROUTE, k as JUNIOR_PLUGIN_TASK_CALLBACK_ROUTE } from "./logging-BStXN56b.js";
|
|
2
2
|
import { d as resolvePackageDir, t as discoverInstalledPluginPackageContent, u as isValidPackageName } from "./package-discovery-DJBompdd.js";
|
|
3
|
-
import { o as resolveConversationWorkQueueTopic, t as WORKSPACE_SNAPSHOT_JOB_QUEUE_TOPIC } from "./job-queue-
|
|
3
|
+
import { o as resolveConversationWorkQueueTopic, t as WORKSPACE_SNAPSHOT_JOB_QUEUE_TOPIC } from "./job-queue-vdGU-5ge.js";
|
|
4
4
|
import { a as pluginRuntimeRegistrationsFromPluginSet, r as pluginCatalogConfigFromPluginSet } from "./plugins-DOm9Y6qI.js";
|
|
5
|
-
import { t as PLUGIN_TASK_QUEUE_TOPIC } from "./task-queue-
|
|
5
|
+
import { t as PLUGIN_TASK_QUEUE_TOPIC } from "./task-queue-BAeGEMjJ.js";
|
|
6
6
|
import { n as loadPluginSetFromModule, r as resolvePluginModule } from "./plugin-module-Cf5gVPWP.js";
|
|
7
7
|
import path from "node:path";
|
|
8
8
|
import { cpSync, existsSync, mkdirSync, readdirSync, statSync } from "node:fs";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { a as GET, n as syncLocalOAuthCredential, r as GET$1 } from "./credential-sync-
|
|
1
|
+
import { It as createUserTokenStore } from "./agent-runner-CPSd7rKm.js";
|
|
2
|
+
import { a as GET, n as syncLocalOAuthCredential, r as GET$1 } from "./credential-sync-BABGymK3.js";
|
|
3
3
|
import { createServer } from "node:http";
|
|
4
4
|
// src/chat/local/oauth-callback-server.ts
|
|
5
5
|
const LOCAL_OAUTH_TIMEOUT_MS = 6e5;
|