@tangle-network/agent-runtime 0.289.1 → 0.290.1
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/{activation-LtjekQoy.js → activation-BdvuHbTG.js} +2 -2
- package/dist/{activation-LtjekQoy.js.map → activation-BdvuHbTG.js.map} +1 -1
- package/dist/{activation-BH2oPn09.d.ts → activation-qNAqp9BD.d.ts} +3 -3
- package/dist/agent.d.ts +2 -2
- package/dist/agent.js +2 -2
- package/dist/{coordination-driver-DyiP0EjT.js → coordination-driver-CTw92HIk.js} +2 -2
- package/dist/{coordination-driver-DyiP0EjT.js.map → coordination-driver-CTw92HIk.js.map} +1 -1
- package/dist/{delegate-DG4mL_CP.js → delegate-DhAvvPIP.js} +2 -2
- package/dist/{delegate-DG4mL_CP.js.map → delegate-DhAvvPIP.js.map} +1 -1
- package/dist/durable.d.ts +2 -2
- package/dist/durable.js +2 -2
- package/dist/{graph-C2s81zTq.js → graph-2Iea0PDT.js} +4 -4
- package/dist/{graph-C2s81zTq.js.map → graph-2Iea0PDT.js.map} +1 -1
- package/dist/{improvement-cycle-CQNxlLeK.js → improvement-cycle-CdT1IClg.js} +3 -3
- package/dist/{improvement-cycle-CQNxlLeK.js.map → improvement-cycle-CdT1IClg.js.map} +1 -1
- package/dist/{index-w7xjlAcL.d.ts → index-CNHHOhRS.d.ts} +8 -18
- package/dist/index.d.ts +7 -7
- package/dist/index.js +8 -8
- package/dist/intelligence.d.ts +3 -3
- package/dist/intelligence.js +4 -4
- package/dist/kernel.d.ts +4 -4
- package/dist/kernel.js +9 -9
- package/dist/{loop-runner-bin-UhqEBk50.js → loop-runner-bin-BuEFaR7Z.js} +3 -3
- package/dist/{loop-runner-bin-UhqEBk50.js.map → loop-runner-bin-BuEFaR7Z.js.map} +1 -1
- package/dist/{loop-runner-bin-DxZdgqD5.d.ts → loop-runner-bin-liVnm-Gi.d.ts} +3 -3
- package/dist/loop-runner-bin.d.ts +1 -1
- package/dist/loop-runner-bin.js +1 -1
- package/dist/mcp/bin.js +3 -3
- package/dist/mcp/index.d.ts +5 -5
- package/dist/mcp/index.js +4 -4
- package/dist/{openai-tools-CWp4nc4r.d.ts → openai-tools-De6m7S4Y.d.ts} +2 -2
- package/dist/profiles.d.ts +2 -2
- package/dist/{provision-supervisor-DxylNO_M.js → provision-supervisor-Cm2-dL4F.js} +8 -25
- package/dist/provision-supervisor-Cm2-dL4F.js.map +1 -0
- package/dist/{runtime-CoIG3eqG.js → runtime-DJ_ISfL-.js} +8 -8
- package/dist/{runtime-CoIG3eqG.js.map → runtime-DJ_ISfL-.js.map} +1 -1
- package/dist/{search-method-a40Q47iV.js → search-method-Q7X92VD3.js} +86 -48
- package/dist/search-method-Q7X92VD3.js.map +1 -0
- package/dist/{server-CN3u3vEi.js → server-CRTAzqiD.js} +3 -3
- package/dist/{server-CN3u3vEi.js.map → server-CRTAzqiD.js.map} +1 -1
- package/dist/{stream-agent-turn-DJqcRoxP.d.ts → stream-agent-turn-kseOD-Ma.d.ts} +5 -48
- package/dist/{substrate-C9cGwDJ5.d.ts → substrate-DFWtsdNI.d.ts} +2 -2
- package/dist/{supervise-BnFVp7W-.js → supervise-CClk-m6Y.js} +3 -3
- package/dist/{supervise-BnFVp7W-.js.map → supervise-CClk-m6Y.js.map} +1 -1
- package/dist/{supervisor-CSLiRg5R.js → supervisor-CQFcQhlo.js} +46 -544
- package/dist/supervisor-CQFcQhlo.js.map +1 -0
- package/dist/testing.d.ts +2 -2
- package/dist/testing.js +12 -12
- package/dist/tui/index.d.ts +1 -1
- package/dist/tui/index.js +1 -1
- package/dist/{types-BPO06pPv.d.ts → types-BFcLI8Ge.d.ts} +5 -1
- package/package.json +1 -1
- package/dist/provision-supervisor-DxylNO_M.js.map +0 -1
- package/dist/search-method-a40Q47iV.js.map +0 -1
- package/dist/supervisor-CSLiRg5R.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { An as LEAF_CONTINUATION_TASK, Ba as promptFromAgentTurnInput, Ca as sleep, Fa as awaitAbortable, Fi as authoredProfileDigest, Fn as unavailablePauseMs, Gi as runtimeOwnedExecutorMaterialization, Gn as InMemorySpawnJournal, Ha as providerMessageText, Hr as createOtelExporter, In as unavailableSignalOfFailure, Jr as toOtelAttributes, Kr as padSpanId, La as armDeadlineTimer, M as withDriverExecutor, Mt as createExecutor, Nt as createExecutorRegistry, Ri as knownExecutionBindingReceipt, Va as promptOptionsFromAgentTurnInput, Vr as createOpenInferenceFileExporter, Wi as runtimeOwnedExecutorExecutionBinding, Wn as InMemoryResultBlobStore, Wr as generateSpanId, Xi as unknownMaterializationReceipt, Yi as unknownExecutionBindingReceipt, Zi as executableAgentProfileSnapshot, aa as createSandboxToolPartState, ca as isSandboxTerminalEvent, ia as canonicalStreamEventFromSandboxEvent, kn as observedModelMatchesDeclared, kt as captureReusableExecutorConfig, la as mapSandboxEvent, na as readSandboxOutcome, oa as createSandboxUsageLedger, q as openSlotGroup, qi as runtimeOwnedPendingExecutorMaterialization, qr as padTraceId, r as createSupervisor, si as harnessInvocation, ta as projectSandboxOutcome, ua as mapSandboxToolEvent, zi as knownMaterializationReceipt } from "./supervisor-CQFcQhlo.js";
|
|
2
2
|
import { i as ConfigError, m as ValidationError, p as SessionMismatchError, r as BackendTransportError } from "./errors-DodWX-cb.js";
|
|
3
3
|
import { a as concreteProfileModel, c as profileModelExecutionSettings, i as concreteModelId, l as profileProviderModel, o as enforceTokenLimits, s as profileBridgeWireModel, t as assertExecutableAgentProfile } from "./model-policy-CA5d1YUP.js";
|
|
4
4
|
import { O as immutableCandidateValue, w as canonicalCandidateDigest$1 } from "./workspace-archive-MhowMCmp.js";
|
|
@@ -14,7 +14,7 @@ import { redact } from "@tangle-network/agent-eval/traces";
|
|
|
14
14
|
import { assertProposalFindings } from "@tangle-network/agent-eval/analyst";
|
|
15
15
|
import { SearchRecorder, aide, asha, campaignCellSearchResult, campaignScenarioIdentity, campaignSplitDigestFromIdentities, createRunCostLedger, fsCampaignStorage, isProposedCandidate, openSearchLedger, renderSearchSummary, resolveRunDir, runCampaign, runSearch, searchClaimReserveUsd, searchNodeId, searchProposalExecution, searchProposerView, searchReceiptAccounting } from "@tangle-network/agent-eval/campaign";
|
|
16
16
|
import { defineEvaluationClaim, summarizeEvaluationUnits } from "@tangle-network/agent-eval/experiment";
|
|
17
|
-
import { harnessSystemPromptIntents
|
|
17
|
+
import { harnessSystemPromptIntents } from "@tangle-network/agent-interface/harness-capabilities";
|
|
18
18
|
//#region src/sessions.ts
|
|
19
19
|
/**
|
|
20
20
|
*
|
|
@@ -3574,6 +3574,7 @@ async function transientRetry(operation, options = {}) {
|
|
|
3574
3574
|
* resource the materializer does not lower into the worker's directory.
|
|
3575
3575
|
*/
|
|
3576
3576
|
function sharedBoxRefusal(profile) {
|
|
3577
|
+
if (profile.model?.metadata?.credentialSource !== void 0) return "model.metadata.credentialSource requires a dedicated provider";
|
|
3577
3578
|
if (profile.harness !== HARNESS) return `harness ${String(profile.harness)} is not ${HARNESS}`;
|
|
3578
3579
|
if (concreteProfileModel(profile) === void 0) return "profile names no concrete model";
|
|
3579
3580
|
if (profile.model?.provider === void 0) return "profile names no model provider";
|
|
@@ -3670,26 +3671,31 @@ function sharedBoxPlacement(options) {
|
|
|
3670
3671
|
const pool = createBoxPool(options.client, boxOptions, workersPerBox, retryDelayMs);
|
|
3671
3672
|
const providerFor = (worker = {}) => {
|
|
3672
3673
|
const clientName = worker.nodeId === void 0 ? void 0 : sharedWorkerClientName(worker.nodeId);
|
|
3673
|
-
return
|
|
3674
|
-
const profile = workerProfile(createOptions);
|
|
3675
|
-
const refusal = sharedBoxRefusal(profile);
|
|
3676
|
-
if (refusal !== void 0) throw new ValidationError(`sharedBoxPlacement: ${refusal}`);
|
|
3677
|
-
assertWorkerCreateOptions(createOptions);
|
|
3678
|
-
const lease = await pool.acquire();
|
|
3679
|
-
try {
|
|
3680
|
-
return await createWorker(lease, workerRoot, profile, {
|
|
3681
|
-
retryDelayMs,
|
|
3682
|
-
clientName,
|
|
3683
|
-
unavailablePause: options.unavailablePause ?? {}
|
|
3684
|
-
});
|
|
3685
|
-
} catch (error) {
|
|
3686
|
-
await lease.release();
|
|
3687
|
-
throw error;
|
|
3688
|
-
}
|
|
3689
|
-
} }, {
|
|
3674
|
+
return {
|
|
3690
3675
|
name: SHARED_PROVIDER_NAME,
|
|
3691
|
-
capabilities: sharedBoxCapabilities
|
|
3692
|
-
|
|
3676
|
+
capabilities: sharedBoxCapabilities,
|
|
3677
|
+
async create(input) {
|
|
3678
|
+
const profile = workerProfile(input);
|
|
3679
|
+
const refusal = sharedBoxRefusal(profile);
|
|
3680
|
+
if (refusal !== void 0) throw new ValidationError(`sharedBoxPlacement: ${refusal}`);
|
|
3681
|
+
assertWorkerCreateInput(input);
|
|
3682
|
+
input.signal?.throwIfAborted();
|
|
3683
|
+
const lease = await pool.acquire();
|
|
3684
|
+
try {
|
|
3685
|
+
input.signal?.throwIfAborted();
|
|
3686
|
+
return await createWorker(lease, workerRoot, profile, {
|
|
3687
|
+
retryDelayMs,
|
|
3688
|
+
clientName,
|
|
3689
|
+
name: input.name,
|
|
3690
|
+
metadata: input.metadata,
|
|
3691
|
+
unavailablePause: options.unavailablePause ?? {}
|
|
3692
|
+
});
|
|
3693
|
+
} catch (error) {
|
|
3694
|
+
await lease.release();
|
|
3695
|
+
throw error;
|
|
3696
|
+
}
|
|
3697
|
+
}
|
|
3698
|
+
};
|
|
3693
3699
|
};
|
|
3694
3700
|
return {
|
|
3695
3701
|
providerFor,
|
|
@@ -3712,7 +3718,7 @@ function sharedBoxCapabilities() {
|
|
|
3712
3718
|
profile: {
|
|
3713
3719
|
namedProfiles: false,
|
|
3714
3720
|
systemPrompt: {
|
|
3715
|
-
...harnessSystemPromptIntents
|
|
3721
|
+
...harnessSystemPromptIntents(HARNESS),
|
|
3716
3722
|
replace: false
|
|
3717
3723
|
},
|
|
3718
3724
|
instructions: true,
|
|
@@ -3755,9 +3761,8 @@ function sharedBoxCapabilities() {
|
|
|
3755
3761
|
confidential: false
|
|
3756
3762
|
};
|
|
3757
3763
|
}
|
|
3758
|
-
function workerProfile(
|
|
3759
|
-
const
|
|
3760
|
-
const parsed = agentProfileSchema.safeParse(raw);
|
|
3764
|
+
function workerProfile(input) {
|
|
3765
|
+
const parsed = agentProfileSchema.safeParse(input.profile);
|
|
3761
3766
|
if (!parsed.success) throw new ValidationError("sharedBoxPlacement: an exact AgentProfile is required at create");
|
|
3762
3767
|
return parsed.data;
|
|
3763
3768
|
}
|
|
@@ -3767,23 +3772,35 @@ function workerProfile(createOptions) {
|
|
|
3767
3772
|
* dropped: a worker that asked for an environment variable, a repository or its own resources
|
|
3768
3773
|
* would otherwise run without them and report nothing.
|
|
3769
3774
|
*/
|
|
3770
|
-
function
|
|
3771
|
-
const options = createOptions ?? {};
|
|
3775
|
+
function assertWorkerCreateInput(input) {
|
|
3772
3776
|
for (const key of [
|
|
3773
|
-
"
|
|
3774
|
-
"
|
|
3775
|
-
"
|
|
3776
|
-
"
|
|
3777
|
-
"
|
|
3778
|
-
"
|
|
3779
|
-
|
|
3780
|
-
|
|
3781
|
-
if (env !== void 0 && Object.keys(env).length > 0) throw new ValidationError("sharedBoxPlacement: a shared worker cannot set env");
|
|
3782
|
-
|
|
3783
|
-
if (
|
|
3784
|
-
const
|
|
3785
|
-
|
|
3786
|
-
if (
|
|
3777
|
+
"idempotencyKey",
|
|
3778
|
+
"workspace",
|
|
3779
|
+
"resources",
|
|
3780
|
+
"runtimeAttachments",
|
|
3781
|
+
"requestedId",
|
|
3782
|
+
"egress",
|
|
3783
|
+
"billingOwner"
|
|
3784
|
+
]) if (input[key] !== void 0) throw new ValidationError(`sharedBoxPlacement: a shared worker cannot set ${key}`);
|
|
3785
|
+
if (input.env !== void 0 && Object.keys(input.env).length > 0) throw new ValidationError("sharedBoxPlacement: a shared worker cannot set env");
|
|
3786
|
+
if (input.secrets !== void 0 && Object.keys(input.secrets).length > 0) throw new ValidationError("sharedBoxPlacement: a shared worker cannot request secrets");
|
|
3787
|
+
if (input.backend !== void 0 && input.backend !== HARNESS) throw new ValidationError(`sharedBoxPlacement: backend ${input.backend} is not ${HARNESS}`);
|
|
3788
|
+
for (const key of Object.keys(input.providerOptions ?? {})) if (key !== "sandboxCreateOptions") throw new ValidationError(`sharedBoxPlacement: a shared worker cannot set providerOptions.${key}`);
|
|
3789
|
+
const box = input.providerOptions?.sandboxCreateOptions;
|
|
3790
|
+
if (box === void 0) return;
|
|
3791
|
+
if (box === null || typeof box !== "object" || Array.isArray(box)) throw new ValidationError("sharedBoxPlacement: sandboxCreateOptions must be an object");
|
|
3792
|
+
for (const key of Object.keys(box)) if (![
|
|
3793
|
+
"backend",
|
|
3794
|
+
"metadata",
|
|
3795
|
+
"name"
|
|
3796
|
+
].includes(key)) throw new ValidationError(`sharedBoxPlacement: a shared worker cannot set ${key}`);
|
|
3797
|
+
const projected = box;
|
|
3798
|
+
if (projected.name !== void 0 && projected.name !== input.name) throw new ValidationError("sharedBoxPlacement: projected name must match the worker name");
|
|
3799
|
+
if (projected.metadata !== void 0 && (input.metadata === void 0 || canonicalCandidateDigest(projected.metadata) !== canonicalCandidateDigest(input.metadata))) throw new ValidationError("sharedBoxPlacement: projected metadata must match worker metadata");
|
|
3800
|
+
const backend = projected.backend;
|
|
3801
|
+
if (backend?.type !== void 0 && backend.type !== HARNESS) throw new ValidationError(`sharedBoxPlacement: backend ${backend.type} is not ${HARNESS}`);
|
|
3802
|
+
for (const key of Object.keys(backend ?? {})) if (key !== "type" && key !== "profile") throw new ValidationError(`sharedBoxPlacement: a shared worker cannot set backend.${key}`);
|
|
3803
|
+
if (backend?.profile !== void 0 && canonicalAgentProfileDigest(agentProfileSchema.parse(backend.profile)) !== canonicalAgentProfileDigest(workerProfile(input))) throw new ValidationError("sharedBoxPlacement: projected profile must match the exact worker profile");
|
|
3787
3804
|
}
|
|
3788
3805
|
function createBoxPool(client, boxOptions, workersPerBox, retryDelayMs) {
|
|
3789
3806
|
const poolId = randomUUID();
|
|
@@ -4014,14 +4031,23 @@ async function createWorker(lease, root, createProfile, placement) {
|
|
|
4014
4031
|
}
|
|
4015
4032
|
return {
|
|
4016
4033
|
id: `${box.id}/${workerId}`,
|
|
4017
|
-
|
|
4018
|
-
|
|
4034
|
+
provider: SHARED_PROVIDER_NAME,
|
|
4035
|
+
name: placement.name ?? workerId,
|
|
4036
|
+
creation: "created",
|
|
4037
|
+
capabilities: sharedBoxCapabilities(),
|
|
4038
|
+
async status() {
|
|
4039
|
+
return released ? "stopped" : "running";
|
|
4040
|
+
},
|
|
4019
4041
|
metadata: {
|
|
4042
|
+
...placement.metadata,
|
|
4020
4043
|
sharedBoxId: box.id,
|
|
4021
4044
|
workerId,
|
|
4022
4045
|
workerDir: paths.dir
|
|
4023
4046
|
},
|
|
4024
|
-
async *
|
|
4047
|
+
async *stream(input) {
|
|
4048
|
+
const message = promptFromAgentTurnInput(input);
|
|
4049
|
+
if (typeof message !== "string") throw new ValidationError("sharedBoxPlacement: a shared worker requires a text prompt");
|
|
4050
|
+
const options = promptOptionsFromAgentTurnInput(input);
|
|
4025
4051
|
if (released) throw new ValidationError("sharedBoxPlacement: this worker was released");
|
|
4026
4052
|
if (turnActive) throw new ValidationError("sharedBoxPlacement: a worker runs one turn at a time");
|
|
4027
4053
|
const turnProfile = options?.backend?.profile === void 0 ? createProfile : agentProfileSchema.parse(options.backend.profile);
|
|
@@ -4048,8 +4074,14 @@ async function createWorker(lease, root, createProfile, placement) {
|
|
|
4048
4074
|
async write(path, content) {
|
|
4049
4075
|
await box.fs.write(resolvePath(path), content);
|
|
4050
4076
|
},
|
|
4077
|
+
async placement() {
|
|
4078
|
+
return {
|
|
4079
|
+
kind: "sandbox",
|
|
4080
|
+
sandboxId: box.id
|
|
4081
|
+
};
|
|
4082
|
+
},
|
|
4051
4083
|
async refresh() {},
|
|
4052
|
-
async
|
|
4084
|
+
async destroy() {
|
|
4053
4085
|
if (released) return;
|
|
4054
4086
|
released = true;
|
|
4055
4087
|
try {
|
|
@@ -4158,7 +4190,7 @@ function lineReader() {
|
|
|
4158
4190
|
async function materializeWorker(box, paths, profile, task, turnModel, clientName, continueSession) {
|
|
4159
4191
|
const refusal = sharedBoxRefusal(profile);
|
|
4160
4192
|
if (refusal !== void 0) throw new ValidationError(`sharedBoxPlacement: ${refusal}`);
|
|
4161
|
-
if (turnModel?.authFiles !== void 0 || turnModel?.authMode === "oauth") throw new ValidationError("sharedBoxPlacement: a shared worker cannot carry
|
|
4193
|
+
if (turnModel?.cliAuth !== void 0 || turnModel?.authFiles !== void 0 || turnModel?.authMode === "oauth") throw new ValidationError("sharedBoxPlacement: a shared worker cannot carry native credentials");
|
|
4162
4194
|
const plan = materializeProfile(profile, HARNESS);
|
|
4163
4195
|
let generated = {};
|
|
4164
4196
|
for (const file of plan.files) {
|
|
@@ -4253,7 +4285,7 @@ function subagentSessionOf(part) {
|
|
|
4253
4285
|
}
|
|
4254
4286
|
}
|
|
4255
4287
|
/**
|
|
4256
|
-
* Translate opencode's JSON event lines into
|
|
4288
|
+
* Translate opencode's JSON event lines into events the provider executor reads.
|
|
4257
4289
|
*
|
|
4258
4290
|
* Every part becomes `message.part.updated`, which is how the sidecar forwards opencode parts, so
|
|
4259
4291
|
* the existing trace and progress readers decode them unchanged. Each `step-finish` part also
|
|
@@ -4379,6 +4411,12 @@ function stepReceipt(part, model) {
|
|
|
4379
4411
|
return {
|
|
4380
4412
|
type: "llm_call",
|
|
4381
4413
|
...typeof part.id === "string" ? { id: part.id } : {},
|
|
4414
|
+
usageMode: "delta",
|
|
4415
|
+
...known ? { usage: {
|
|
4416
|
+
inputTokens: input + cacheRead + cacheWrite,
|
|
4417
|
+
outputTokens: output + reasoning,
|
|
4418
|
+
...reasoning > 0 ? { reasoningTokens: reasoning } : {}
|
|
4419
|
+
} } : {},
|
|
4382
4420
|
data: {
|
|
4383
4421
|
usageMode: "delta",
|
|
4384
4422
|
model,
|
|
@@ -5637,4 +5675,4 @@ function refusalText(error) {
|
|
|
5637
5675
|
//#endregion
|
|
5638
5676
|
export { sampleThenRefine as $, parseRolloutPolicy as A, officialChecksFromMeta as B, privateValuePaths as C, ROLLOUT_POLICY_EXTENSION as D, isCodeSurface as E, composeCheckSources as F, visibleCheckScore as G, sandboxCheckRunner as H, defaultExtractCandidate as I, defineStrategy as J, adaptiveRefine as K, defaultStructuralRolloutPolicy as L, structuralRolloutPolicyFromProfile as M, canDisplace as N, applyRolloutPolicyToProfile as O, compareCheckOutcomes as P, sample as Q, filterAuthoredAsserts as R, parseExecutionRef as S, assertCandidateSurfaceKind as T, selectBestIndex as U, resolveEntrySymbol as V, structuralRollout as W, refine as X, depthStrategy as Y, runAgentic as Z, sharedBoxRefusal as _, startOrResumeRuntimeSession as _t, SearchEnvironmentFault as a, profileOptimizerModelCall as at, assertCandidateValidator as b, reconcileInterruptedSearchCalls as c, strategyAuthorMethod as ct, sharedBoxLane as d, createIterableBackend as dt, ObservationError as et, subscriptionLane as f, createSandboxPromptBackend as ft, sharedBoxPlacement as g, nowIso as gt, ROUTER_CLIENT_HEADER as h, newRuntimeSession as ht, searchMethod as i, profileChatClient as it, serializeRolloutPolicy as j, normalizeRolloutPolicy as k, routerLane as l, collectAgentTurn as lt, DEFAULT_SHARED_BOX_WORKERS as m, InMemoryRuntimeSessionStore as mt, runSearchImprovement as n, observe as nt, dedicatedLane as o, copyImproveCost as ot, DEFAULT_SHARED_BOX_RESOURCES as p, normalizeBackendStreamEvent as pt, breadthStrategy as q, runtimeShipDecision as r, renderReport as rt, isSearchEnvironmentFault as s, optimizerMethod as st, isImproveSearchMethod as t, defaultAnalystInstruction as tt, searchExecutor as u, streamAgentTurn as ut, sharedWorkerClientName as v, touchSession as vt, validateProfileCandidate as w, assertProfileTrainingIsHeldOut as x, prepareProfileImprovement as y, modelAuthoredChecks as z };
|
|
5639
5677
|
|
|
5640
|
-
//# sourceMappingURL=search-method-
|
|
5678
|
+
//# sourceMappingURL=search-method-Q7X92VD3.js.map
|