@gitroll/tacitt-cli 0.4.1 → 0.5.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/{agent-setup-Cb_spmGb.mjs → agent-setup-BZbgLgHg.mjs} +2 -2
- package/dist/agent-setup-worker.mjs +5 -5
- package/dist/cli.mjs +37 -10
- package/dist/codex-title-worker.mjs +1 -1
- package/dist/configured-preview-worker.mjs +5 -5
- package/dist/configured-session-worker.mjs +5 -5
- package/dist/{frame-waS5FnN5.mjs → frame-DGun31Uc.mjs} +1 -1
- package/dist/{heap-eZTo0VYj.mjs → heap-NDnGBXH6.mjs} +6 -6
- package/dist/inspection-worker.mjs +4 -4
- package/dist/{job-Bi57uRU-.mjs → job-BO0a67HQ.mjs} +383 -8
- package/dist/{locate-U3-nkird.mjs → locate-JYtFmKu-.mjs} +120 -3
- package/dist/{model-BDrntocp.mjs → model-CmHypB0p.mjs} +1 -1
- package/dist/operation-executor.mjs +3 -3
- package/dist/preview-worker.mjs +1 -1
- package/dist/privacy-validator.mjs +1 -1
- package/dist/{query-7uY266qY.mjs → query-BZvNsP1u.mjs} +1272 -265
- package/dist/{run-CV6Io7CS.mjs → run-DvRM-NR8.mjs} +4 -4
- package/dist/{src-DSDRF7i6.mjs → src-C1SjCDx0.mjs} +65 -4
- package/dist/{src-DIuh0LHk.mjs → src-CQeUBG2Y.mjs} +168 -7
- package/dist/{src-BESjwh7X.mjs → src-xidy0yF7.mjs} +5 -4
- package/dist/store-database-worker.mjs +1 -1
- package/dist/web/assets/index-Bbck2aOB.css +1 -0
- package/dist/web/assets/index-D0j-mvf1.js +69 -0
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/skills/tacitt/SKILL.md +4 -4
- package/skills/tacitt/references/INDEX.md +11 -10
- package/skills/tacitt/references/commands.md +13 -0
- package/skills/tacitt/references/journey.md +4 -4
- package/skills/tacitt/references/remote-workers.md +46 -0
- package/skills/tacitt/references/send.md +41 -11
- package/skills/tacitt/scripts/INDEX.md +36 -36
- package/skills/tacitt/scripts/journey-card-consolidation.mjs +2 -4
- package/skills/tacitt/scripts/journey-state.d.mts +30 -0
- package/skills/tacitt/scripts/journey-state.mjs +56 -3
- package/skills/tacitt/scripts/journey-tasks.d.mts +8 -0
- package/skills/tacitt/scripts/journey-tasks.mjs +4 -1
- package/skills/tacitt/scripts/privacy-validator.mjs +78 -3
- package/skills/tacitt/scripts/review.mjs +36 -5
- package/dist/web/assets/index-D5DEG5Ue.css +0 -1
- package/dist/web/assets/index-Dh4iG6x2.js +0 -69
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as createZstdFrameCheck$1 } from "./frame-
|
|
3
|
-
import "./src-
|
|
4
|
-
import { a as isRecord } from "./model-
|
|
1
|
+
import { ln as sessionSchema } from "./locate-JYtFmKu-.mjs";
|
|
2
|
+
import { t as createZstdFrameCheck$1 } from "./frame-DGun31Uc.mjs";
|
|
3
|
+
import "./src-C1SjCDx0.mjs";
|
|
4
|
+
import { a as isRecord } from "./model-CmHypB0p.mjs";
|
|
5
5
|
import { constants } from "node:fs";
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
import { lstat, open, stat } from "node:fs/promises";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as bCountSchema, $n as
|
|
1
|
+
import { $ as bCountSchema, $n as detectStatic, A as bDuplicateMirror, B as bEvidenceReader, Bt as sessionPeriodSchema, C as validateBUnit, Cn as inspectionSemanticVersions, Ct as cardsSubmitSchema, D as uncoveredBObligations, Dn as createStaticProcessor, Dt as privacyResolveSchema, E as bLiterals, Et as packageConfirmActionSchema, Fn as entityDictionaryVersion, Ft as termTypeInfo, G as subtractBRanges, Gn as validateProfile, H as codePointLength, Ht as journeyProfileAddressActionSchema, I as bIssue, It as termTypeSchema, J as bRetainedGroupSchema, Jn as validatePlan, Jt as respondProfileLinks, Kn as orderProfile, L as bOverlaps, Lt as termTypes, M as bLegacyBindings, Mt as reviewTermsResultSchema, N as bUnitFragments, Nt as termAssessmentSchema, O as indexBRanges, On as staticDefaults, Ot as privacyTermKey, P as bAdoptedObligations, Pn as cleanupImplementationVersion, Pt as termOverrideValueSchema, Q as bAnchorSchema, Qt as safeCode, R as unownedBObligations, Rt as deselectOutsidePeriod, S as validateBFields, Sn as currentDetectorVersion, St as cardsConfirmActionSchema, T as bLiteralTerms, Tn as gapReasons, Tt as emptyJourneyPrivacy, U as codePointSlice, Ut as journeyProfileLinksActionSchema, V as bDigest, Vt as emptyJourneyProfile, W as createCodePointIndex, X as bSessionDecisionSchema, Xt as ApplicationError, Y as bReviewSubmissionSchema, Yn as copyData, Yt as classificationTitleMaskSchema, Z as bTermSchema, Zt as UnfinishedJourneyError, _ as semanticFindingSchema, _t as hideConfirmSchema, a as reviewChunkSchema, an as observeSource, at as journeyExceptionSchema, b as validateBReview, bt as journeyConfigurationSchema, c as textDigest, cn as inventorySchema, cr as scalarBefore, ct as journeyPreferenceScopeSchema, dt as nativeJourneySchema, en as familyNeedsReview, et as bIdSchema, f as reviewAlignmentAuditSchema, fn as nativeSourceIdentitySchema, ft as journeyGuidanceSchema, g as validateReviewAlignment, h as reviewFindingsDigest, ht as journeyDescribeSchema, i as reviewBatchSchema, in as sourceKey, ir as createEntityMatcher, it as journeyDigestSchema, jt as reviewTermsInputSchema, kn as staticOptions, l as validateReview, lr as defaultDetectionLimits, lt as journeyProjectTypeSchema, m as reviewAlignmentSchema, mt as delegatedDecisionSchema, n as compileBFindings, nn as reviewFamilies, nt as journeyAccessSchema, o as reviewDigest, on as sourceSnapshotId, ot as journeyIdSchema, p as reviewAlignmentInputSchema, pt as journeyInstructionInputSchema, q as bRepresentationSchema, r as reviewBatchChunks, rn as sourceGraph, rt as journeyChoiceSchema, s as reviewSubmitSchema, sn as fileIdentitySchema, sr as scalarAfter, st as journeyKindSchema, tn as familySelected, tr as staticCategories, tt as bMethod, u as findingReferenceKey, un as sourcePartSchema, ut as journeyWorkTypeSchema, vt as hidePlanInputSchema, w as bLiteralAdmitted, x as createBAnalysisUnits, xt as cardAnswerActionSchema, y as validateBClassification, yt as hidePlanResourceSchema, z as bAnchorKey } from "./locate-JYtFmKu-.mjs";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { createHash, createHmac, createSecretKey, randomUUID } from "node:crypto";
|
|
4
4
|
import { setTimeout as setTimeout$1 } from "node:timers/promises";
|
|
@@ -1566,10 +1566,50 @@ const sendItemSchema = z.object({
|
|
|
1566
1566
|
/** The receipt whose bytes were PUT but not yet completed: the next step completes it (BL-210). */
|
|
1567
1567
|
uploadedReceiptId: journeyIdSchema.nullable().optional(),
|
|
1568
1568
|
/**
|
|
1569
|
+
* Bare `settings_changed` refusals in a row for the uploaded bytes: Passport's scope kept
|
|
1570
|
+
* moving, so the next completion waits longer (ADR 0235). Cleared with the upload marker.
|
|
1571
|
+
*/
|
|
1572
|
+
busyRefusals: count$13.positive().optional(),
|
|
1573
|
+
/**
|
|
1569
1574
|
* Passport answered `bundle_mismatch` to this Work's checksum upload: the rest of this Send
|
|
1570
1575
|
* uploads through staging (ADR 0231).
|
|
1571
1576
|
*/
|
|
1572
1577
|
checksumUploadRefused: z.literal(true).optional(),
|
|
1578
|
+
/** Write-ahead upload intent; completion probes recover an unacknowledged blob PUT. */
|
|
1579
|
+
sessionUpload: z.object({
|
|
1580
|
+
key: journeyDigestSchema,
|
|
1581
|
+
sha256: journeyDigestSchema
|
|
1582
|
+
}).strict().nullable().optional(),
|
|
1583
|
+
/** Exact write-ahead membership request; never rebase it after an uncertain PUT. */
|
|
1584
|
+
sessionMembership: z.object({
|
|
1585
|
+
workId: journeyIdSchema,
|
|
1586
|
+
expectedRevision: count$13,
|
|
1587
|
+
keys: z.array(journeyDigestSchema),
|
|
1588
|
+
title: z.string(),
|
|
1589
|
+
access
|
|
1590
|
+
}).strict().optional(),
|
|
1591
|
+
/** Membership readback retained for visible conflict recovery. */
|
|
1592
|
+
membershipConflict: z.object({
|
|
1593
|
+
revision: count$13,
|
|
1594
|
+
keys: z.array(journeyDigestSchema)
|
|
1595
|
+
}).strict().optional(),
|
|
1596
|
+
/** Informational readback for a freshly prepared recovery; never a write fence. */
|
|
1597
|
+
recoveryReview: z.object({
|
|
1598
|
+
previousSendId: journeyIdSchema,
|
|
1599
|
+
revision: count$13,
|
|
1600
|
+
currentAccess: z.enum([
|
|
1601
|
+
"public",
|
|
1602
|
+
"private",
|
|
1603
|
+
"removed"
|
|
1604
|
+
]).nullable(),
|
|
1605
|
+
currentKeys: z.array(journeyDigestSchema),
|
|
1606
|
+
proposedKeys: z.array(journeyDigestSchema)
|
|
1607
|
+
}).strict().optional(),
|
|
1608
|
+
/** Acknowledged membership revision and later scan identity; never a write-ahead intent. */
|
|
1609
|
+
sessionAssembly: z.object({
|
|
1610
|
+
revision: count$13,
|
|
1611
|
+
scanId: journeyIdSchema.nullable()
|
|
1612
|
+
}).strict().optional(),
|
|
1573
1613
|
status: z.enum([
|
|
1574
1614
|
"ready",
|
|
1575
1615
|
"target",
|
|
@@ -1582,6 +1622,8 @@ const sendItemSchema = z.object({
|
|
|
1582
1622
|
error: z.string().nullable()
|
|
1583
1623
|
}).strict();
|
|
1584
1624
|
const journeySendSchema = z.object({
|
|
1625
|
+
/** Passport advertised parallel-completes when this Send was confirmed (ADR 0235). */
|
|
1626
|
+
parallelCompletes: z.literal(true).optional(),
|
|
1585
1627
|
id: journeyIdSchema,
|
|
1586
1628
|
journeyId: journeyIdSchema,
|
|
1587
1629
|
revision: count$13,
|
|
@@ -1616,7 +1658,7 @@ const journeySendSchema = z.object({
|
|
|
1616
1658
|
error: z.string().nullable(),
|
|
1617
1659
|
/**
|
|
1618
1660
|
* When this Send replaced the owner's earlier Passport Works and how many it retired; a
|
|
1619
|
-
*
|
|
1661
|
+
* historical marker is retained for compatibility only (superseded by ADR 0242).
|
|
1620
1662
|
*/
|
|
1621
1663
|
replaced: z.object({
|
|
1622
1664
|
at: z.iso.datetime(),
|
|
@@ -1867,6 +1909,8 @@ const journeyActionSchema = z.discriminatedUnion("kind", [
|
|
|
1867
1909
|
cardAnswerActionSchema,
|
|
1868
1910
|
cardsConfirmActionSchema,
|
|
1869
1911
|
packageConfirmActionSchema,
|
|
1912
|
+
journeyProfileAddressActionSchema,
|
|
1913
|
+
journeyProfileLinksActionSchema,
|
|
1870
1914
|
z.object({
|
|
1871
1915
|
kind: z.literal("consent"),
|
|
1872
1916
|
allow: z.boolean()
|
|
@@ -5280,6 +5324,17 @@ function respondToJourney(state, action, source, now, decision, preferenceScope)
|
|
|
5280
5324
|
abandonedAt: now
|
|
5281
5325
|
};
|
|
5282
5326
|
}
|
|
5327
|
+
if (action.kind === "profile-address" || action.kind === "profile-links") {
|
|
5328
|
+
if (decision) throw new ApplicationError("CONFIRMATION_REQUIRED");
|
|
5329
|
+
const profile = state.profile ?? emptyJourneyProfile;
|
|
5330
|
+
return {
|
|
5331
|
+
...state,
|
|
5332
|
+
profile: action.kind === "profile-address" ? {
|
|
5333
|
+
...profile,
|
|
5334
|
+
address: action.address
|
|
5335
|
+
} : respondProfileLinks(profile, action)
|
|
5336
|
+
};
|
|
5337
|
+
}
|
|
5283
5338
|
assertDelegatedDecision(state, action, decision, source);
|
|
5284
5339
|
if (action.kind === "instruction") {
|
|
5285
5340
|
if (source !== "conversation") throw new ApplicationError("CONFIRMATION_REQUIRED");
|
|
@@ -6463,7 +6518,9 @@ function createNativeJourney(storage, now = () => (/* @__PURE__ */ new Date()).t
|
|
|
6463
6518
|
"consent",
|
|
6464
6519
|
"work-access",
|
|
6465
6520
|
"works-access",
|
|
6466
|
-
"card-answer"
|
|
6521
|
+
"card-answer",
|
|
6522
|
+
"profile-address",
|
|
6523
|
+
"profile-links"
|
|
6467
6524
|
].includes(input.action.kind);
|
|
6468
6525
|
for (let attempt = 0;; attempt++) {
|
|
6469
6526
|
const result = await commitResponse(input, source, rebase);
|
|
@@ -6899,7 +6956,10 @@ function safeJourneySender(sender, now) {
|
|
|
6899
6956
|
},
|
|
6900
6957
|
async advance(input, signal = new AbortController().signal) {
|
|
6901
6958
|
return safe(await sender.advance(input, signal));
|
|
6902
|
-
}
|
|
6959
|
+
},
|
|
6960
|
+
ownerProfile: (signal = new AbortController().signal) => sender.ownerProfile(signal),
|
|
6961
|
+
addressTaken: (input, signal = new AbortController().signal) => sender.addressTaken(input, signal),
|
|
6962
|
+
saveSentProfile: (input, signal = new AbortController().signal) => sender.saveSentProfile(input, signal)
|
|
6903
6963
|
};
|
|
6904
6964
|
}
|
|
6905
6965
|
function safeReservation(input) {
|
|
@@ -6993,6 +7053,7 @@ const manualUploadSchema = z.object({
|
|
|
6993
7053
|
subject: z.string().nullable(),
|
|
6994
7054
|
confirmedAt: z.iso.datetime().nullable(),
|
|
6995
7055
|
status: journeySendSchema.shape.status,
|
|
7056
|
+
parallelCompletes: journeySendSchema.shape.parallelCompletes,
|
|
6996
7057
|
items: z.array(sendItemSchema),
|
|
6997
7058
|
/** The result slot holding each item's primary ZIP, keyed by the item's logical Work ID. */
|
|
6998
7059
|
slots: z.record(journeyIdSchema, count$2),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as createZstdFrameCheck } from "./frame-
|
|
3
|
-
import { An as bContainment, Dt as metadataProcessingVersion, F as withSourceEvidence, I as agentSetupKey, Mr as agentSourceSchema, P as sourceIdentityEvidence, Pn as bWordBounded, ai as sourceChangePolicy, fi as staticCatalogRef, it as defaultAgentSetupInclusion, jn as bExceptionRanges, jr as agentSourcePathSegment, rt as classifyAgentSetup, si as approvedTreatmentSchema, ur as resolveSourceSelection } from "./src-
|
|
1
|
+
import { $n as detectStatic, An as createReplacementKey, Bn as nativeItems, En as walkNativeFields, Fn as entityDictionaryVersion, Gn as validateProfile, H as codePointLength, Hn as transformRecords, In as nativeParserVersion, Jn as validatePlan, Ln as redactionImplementationVersion, Mn as projectNativeRecord, Nn as parseNativeRecord, Pn as cleanupImplementationVersion, Qn as resolveLimits, Qt as safeCode, Un as frameRecords, V as bDigest, Vn as nativeText, Wn as retainedMainTextNodes, Xn as defaultLimits, Xt as ApplicationError, Zn as recordPointerLimits, _n as reviewRoles, bn as createSessionPreparation, c as textDigest, dr as fail$1, fn as nativeSourceIdentitySchema, fr as isProcessingCode, gn as mainReviewRole, hn as projectNativeReviewInput, in as sourceKey, ir as createEntityMatcher, j as bDuplicateShift, jn as sessionNonce, k as bBindingCap, lr as defaultDetectionLimits, mn as processNativeRecord, nn as reviewFamilies, nr as jsonSpans, o as reviewDigest, on as sourceSnapshotId, pn as withMandatoryCustomTerms, qn as buildPlan, rr as agentContextLocation, tn as familySelected, ur as ProcessingError, vn as createSentenceContext, wn as createDetectionSummary, x as createBAnalysisUnits, xn as bindInspection, yn as renderNative, zn as nativeField } from "./locate-JYtFmKu-.mjs";
|
|
2
|
+
import { t as createZstdFrameCheck } from "./frame-DGun31Uc.mjs";
|
|
3
|
+
import { An as bContainment, Dt as metadataProcessingVersion, F as withSourceEvidence, I as agentSetupKey, Mr as agentSourceSchema, P as sourceIdentityEvidence, Pn as bWordBounded, ai as sourceChangePolicy, fi as staticCatalogRef, it as defaultAgentSetupInclusion, jn as bExceptionRanges, jr as agentSourcePathSegment, rt as classifyAgentSetup, si as approvedTreatmentSchema, ur as resolveSourceSelection } from "./src-C1SjCDx0.mjs";
|
|
4
4
|
import { constants } from "node:fs";
|
|
5
5
|
import { link, lstat, mkdir, open, readFile, readdir, realpath, rm, rmdir, stat, unlink } from "node:fs/promises";
|
|
6
6
|
import { execFile, fork, spawn } from "node:child_process";
|
|
@@ -15,7 +15,7 @@ import { ERR_UNSUPPORTED_FORMAT, Reader, TextReader, ZipReader, ZipWriter, confi
|
|
|
15
15
|
import "node:perf_hooks";
|
|
16
16
|
import { availableParallelism, platform, tmpdir, totalmem } from "node:os";
|
|
17
17
|
import { pipeline } from "node:stream/promises";
|
|
18
|
-
import { constants as constants$1, createZstdDecompress } from "node:zlib";
|
|
18
|
+
import { constants as constants$1, crc32, createZstdDecompress } from "node:zlib";
|
|
19
19
|
import { parse } from "@decimalturn/toml-patch";
|
|
20
20
|
//#region packages/file-privacy/src/windows/descriptor.ts
|
|
21
21
|
const system = "S-1-5-18";
|
|
@@ -12929,7 +12929,8 @@ function assessedOnlySessions(approval) {
|
|
|
12929
12929
|
if (approval.treatment?.kind !== "configured") return /* @__PURE__ */ new Set();
|
|
12930
12930
|
const { definitions, sessions } = approval.treatment.configuration;
|
|
12931
12931
|
const assessed = new Set(definitions.filter(({ cleanup }) => object(cleanup.options) && cleanup.options["assessedSessionsOnly"] === true).map((definition) => definition.id));
|
|
12932
|
-
|
|
12932
|
+
const remoteWorkers = new Set(approval.inventory.sessions.filter((session) => session.remoteParentSessionId).map((session) => session.id));
|
|
12933
|
+
return new Set(sessions.filter((entry) => assessed.has(entry.treatmentId) && !remoteWorkers.has(entry.sessionId)).map((entry) => entry.sessionId));
|
|
12933
12934
|
}
|
|
12934
12935
|
//#endregion
|
|
12935
12936
|
//#region packages/artifact/src/configured/admission.ts
|
|
@@ -15416,6 +15417,166 @@ async function openConfiguredUpload(input, signal = new AbortController().signal
|
|
|
15416
15417
|
}
|
|
15417
15418
|
}
|
|
15418
15419
|
//#endregion
|
|
15420
|
+
//#region packages/artifact/src/configured/output/session-file.ts
|
|
15421
|
+
/** Unlinked private storage survives no crash and never exposes source paths. */
|
|
15422
|
+
async function sessionFile() {
|
|
15423
|
+
const path = join(tmpdir(), `sess-pilot-send-${randomUUID()}.spool`);
|
|
15424
|
+
const handle = await openPrivateFile(path, constants.O_CREAT | constants.O_EXCL | constants.O_RDWR | constants.O_NOFOLLOW, 384);
|
|
15425
|
+
try {
|
|
15426
|
+
await unlink(path);
|
|
15427
|
+
return handle;
|
|
15428
|
+
} catch (error) {
|
|
15429
|
+
const cleanup = createCleanup();
|
|
15430
|
+
cleanup.failed(error);
|
|
15431
|
+
await cleanup.run(() => handle.close(), () => unlink(path));
|
|
15432
|
+
throw error;
|
|
15433
|
+
}
|
|
15434
|
+
}
|
|
15435
|
+
async function sessionFileFacts(file, size, signal) {
|
|
15436
|
+
const digest = createHash("sha256");
|
|
15437
|
+
let crc = 0;
|
|
15438
|
+
const reader = new FileReader(file, size, 262144, true, signal);
|
|
15439
|
+
for await (const bytes of reader.createReadable()) {
|
|
15440
|
+
digest.update(bytes);
|
|
15441
|
+
crc = crc32(bytes, crc);
|
|
15442
|
+
}
|
|
15443
|
+
return {
|
|
15444
|
+
byteLength: size,
|
|
15445
|
+
sha256: digest.digest("hex"),
|
|
15446
|
+
crc32: crc
|
|
15447
|
+
};
|
|
15448
|
+
}
|
|
15449
|
+
/** Verify bounded final redacted bytes before starting a second ZIP codec. */
|
|
15450
|
+
async function sessionPart(entry, expected, signal) {
|
|
15451
|
+
if (expected.byteLength > 268435456 || entry.uncompressedSize !== expected.byteLength) fail("ARTIFACT_PART_LIMIT");
|
|
15452
|
+
const file = await sessionFile();
|
|
15453
|
+
let size = 0;
|
|
15454
|
+
const digest = createHash("sha256");
|
|
15455
|
+
let crc = 0;
|
|
15456
|
+
try {
|
|
15457
|
+
await entry.getData(new WritableStream({ async write(bytes) {
|
|
15458
|
+
signal.throwIfAborted();
|
|
15459
|
+
if (size + bytes.byteLength > expected.byteLength) fail("ARTIFACT_PART_LIMIT");
|
|
15460
|
+
digest.update(bytes);
|
|
15461
|
+
crc = crc32(bytes, crc);
|
|
15462
|
+
let offset = 0;
|
|
15463
|
+
while (offset < bytes.byteLength) {
|
|
15464
|
+
const result = await file.write(bytes, offset, bytes.byteLength - offset, size + offset);
|
|
15465
|
+
if (!result.bytesWritten) fail("ARTIFACT_IO_FAILED");
|
|
15466
|
+
offset += result.bytesWritten;
|
|
15467
|
+
}
|
|
15468
|
+
size += bytes.byteLength;
|
|
15469
|
+
} }), {
|
|
15470
|
+
signal,
|
|
15471
|
+
checkSignature: true
|
|
15472
|
+
});
|
|
15473
|
+
if (size !== expected.byteLength || digest.digest("hex") !== expected.sha256) fail("ARTIFACT_INVALID_ARCHIVE");
|
|
15474
|
+
return {
|
|
15475
|
+
file,
|
|
15476
|
+
crc32: crc
|
|
15477
|
+
};
|
|
15478
|
+
} catch (error) {
|
|
15479
|
+
const cleanup = createCleanup();
|
|
15480
|
+
cleanup.failed(error);
|
|
15481
|
+
await cleanup.run(() => file.close());
|
|
15482
|
+
throw error;
|
|
15483
|
+
}
|
|
15484
|
+
}
|
|
15485
|
+
//#endregion
|
|
15486
|
+
//#region packages/artifact/src/configured/output/sessions.ts
|
|
15487
|
+
/** Each yielded spool stays open until the caller advances or closes this iterator. */
|
|
15488
|
+
async function* configuredSessionUploads(input, identities, signal) {
|
|
15489
|
+
const verified = await checkFrozenOutput(input, signal);
|
|
15490
|
+
const archive = await openCheckedOutput(input, verified.checked, signal);
|
|
15491
|
+
const cleanup = createCleanup();
|
|
15492
|
+
try {
|
|
15493
|
+
if (archive.manifestText !== verified.manifestText) fail("ARTIFACT_PROCESSING_MISMATCH");
|
|
15494
|
+
const descriptions = new Map(verified.manifest.entries.map((entry) => [entry.entryPath, entry]));
|
|
15495
|
+
for (const session of verified.manifest.sessions) {
|
|
15496
|
+
signal.throwIfAborted();
|
|
15497
|
+
const identity = identities.find((item) => item.archiveSessionId === session.id) ?? fail("ARTIFACT_IDENTITY_MISMATCH");
|
|
15498
|
+
const workspace = verified.manifest.sourceWorkspaces.find((item) => item.id === session.workspaceId) ?? fail("ARTIFACT_INVALID_MANIFEST");
|
|
15499
|
+
const entry = archive.entries.get(workspace.metadataPath) ?? fail("ARTIFACT_INVALID_ARCHIVE");
|
|
15500
|
+
const description = descriptions.get(workspace.metadataPath) ?? fail("ARTIFACT_INVALID_ARCHIVE");
|
|
15501
|
+
const text = await readMetadata(entry, signal);
|
|
15502
|
+
if (Buffer.byteLength(text) !== description.byteLength || createHash("sha256").update(text).digest("hex") !== description.sha256) fail("ARTIFACT_INVALID_ARCHIVE");
|
|
15503
|
+
const { version: _, ...facts } = validateConfiguredSourceMetadata(strictJson(text, metadataLimitBytes), workspace);
|
|
15504
|
+
const nativeSessionId = session.parts[0]?.native.sessionId ?? session.sourceSessionId;
|
|
15505
|
+
if (!nativeSessionId?.trim() && !identity.relativePath) fail("ARTIFACT_IDENTITY_MISMATCH");
|
|
15506
|
+
const metadata = {
|
|
15507
|
+
workspace: facts,
|
|
15508
|
+
sourceSessionId: nativeSessionId,
|
|
15509
|
+
harness: session.harness,
|
|
15510
|
+
lastAt: identity.lastAt,
|
|
15511
|
+
parts: []
|
|
15512
|
+
};
|
|
15513
|
+
const file = await sessionFile();
|
|
15514
|
+
const sessionCleanup = createCleanup();
|
|
15515
|
+
try {
|
|
15516
|
+
let size = 0;
|
|
15517
|
+
const sink = fileWriter(file, signal, (bytes) => {
|
|
15518
|
+
if (bytes > 5 * 1024 ** 3) fail("ARTIFACT_ARCHIVE_LIMIT");
|
|
15519
|
+
size = bytes;
|
|
15520
|
+
}, false);
|
|
15521
|
+
const zip = new ZipWriter(sink.writable, {
|
|
15522
|
+
useWebWorkers: false,
|
|
15523
|
+
useCompressionStream: true,
|
|
15524
|
+
bufferedWrite: false,
|
|
15525
|
+
dataDescriptor: true,
|
|
15526
|
+
unixMode: 33152,
|
|
15527
|
+
lastModDate: /* @__PURE__ */ new Date("1980-01-01T00:00:00.000Z"),
|
|
15528
|
+
extendedTimestamp: false
|
|
15529
|
+
});
|
|
15530
|
+
for (const [index, part] of session.parts.entries()) {
|
|
15531
|
+
const source = archive.entries.get(part.dataPath) ?? fail("ARTIFACT_INVALID_ARCHIVE");
|
|
15532
|
+
const expected = descriptions.get(part.dataPath) ?? fail("ARTIFACT_INVALID_ARCHIVE");
|
|
15533
|
+
const prepared = await sessionPart(source, expected, signal);
|
|
15534
|
+
const partCleanup = createCleanup();
|
|
15535
|
+
try {
|
|
15536
|
+
const path = `p${String(index + 1).padStart(6, "0")}.jsonl`;
|
|
15537
|
+
await zip.add(path, new FileReader(prepared.file, expected.byteLength, 262144, true, signal), { signal });
|
|
15538
|
+
metadata.parts.push({
|
|
15539
|
+
path,
|
|
15540
|
+
byteLength: expected.byteLength,
|
|
15541
|
+
sha256: expected.sha256,
|
|
15542
|
+
crc32: prepared.crc32
|
|
15543
|
+
});
|
|
15544
|
+
} catch (error) {
|
|
15545
|
+
partCleanup.failed(error);
|
|
15546
|
+
throw error;
|
|
15547
|
+
} finally {
|
|
15548
|
+
await partCleanup.run(() => prepared.file.close());
|
|
15549
|
+
}
|
|
15550
|
+
}
|
|
15551
|
+
await zip.close();
|
|
15552
|
+
if (zip.warnings?.length) fail("ARTIFACT_INVALID_ARCHIVE");
|
|
15553
|
+
if (size > 5 * 1024 ** 3) fail("ARTIFACT_ARCHIVE_LIMIT");
|
|
15554
|
+
const content = await sessionFileFacts(file, size, signal);
|
|
15555
|
+
await archive.fence();
|
|
15556
|
+
yield {
|
|
15557
|
+
...content,
|
|
15558
|
+
metadata,
|
|
15559
|
+
nativeSessionId,
|
|
15560
|
+
relativePath: identity.relativePath,
|
|
15561
|
+
harness: session.harness,
|
|
15562
|
+
lastAt: identity.lastAt,
|
|
15563
|
+
stream: () => new FileReader(file, size, 262144, true, signal).createReadable()
|
|
15564
|
+
};
|
|
15565
|
+
} catch (error) {
|
|
15566
|
+
sessionCleanup.failed(error);
|
|
15567
|
+
throw error;
|
|
15568
|
+
} finally {
|
|
15569
|
+
await sessionCleanup.run(() => file.close());
|
|
15570
|
+
}
|
|
15571
|
+
}
|
|
15572
|
+
} catch (error) {
|
|
15573
|
+
cleanup.failed(error);
|
|
15574
|
+
throw error;
|
|
15575
|
+
} finally {
|
|
15576
|
+
await cleanup.run(() => archive.close());
|
|
15577
|
+
}
|
|
15578
|
+
}
|
|
15579
|
+
//#endregion
|
|
15419
15580
|
//#region packages/artifact/src/configured/output/shard/write.ts
|
|
15420
15581
|
const zipOptions = {
|
|
15421
15582
|
useWebWorkers: false,
|
|
@@ -15643,7 +15804,7 @@ async function runConfiguredScanJob(job, processing, signal, onSourceProgress, o
|
|
|
15643
15804
|
const launch = adapter.launch?.(root);
|
|
15644
15805
|
const identityRecord = native.sessionId !== null && adapter.identityRecord?.(root) !== false && launch !== void 0;
|
|
15645
15806
|
if (launch === "automation") {
|
|
15646
|
-
if (!identitySeen && identityRecord) fail("ARTIFACT_PROCESSING_UNSUPPORTED");
|
|
15807
|
+
if (!identitySeen && identityRecord && !job.session.remoteParentSessionId) fail("ARTIFACT_PROCESSING_UNSUPPORTED");
|
|
15647
15808
|
tolerate("launch");
|
|
15648
15809
|
}
|
|
15649
15810
|
identitySeen ||= identityRecord;
|
|
@@ -16811,4 +16972,4 @@ async function verifyPreparedSessionSources(prepared, input, signal) {
|
|
|
16811
16972
|
}
|
|
16812
16973
|
}
|
|
16813
16974
|
//#endregion
|
|
16814
|
-
export {
|
|
16975
|
+
export { createCleanup as $, renderJobDigest as A, parallelismLimits as B, readOriginalSearchFields as C, prepareCollectionProduction as D, checkReusableBundle as E, SessionWorkerError as F, processJourneyMetadataFields as G, privateJourneyDirectory as H, sessionWorkerFailure as I, listAgentSetup as J, staticMaskCategory as K, privateCollectionDirectory as L, readCollectionIndex as M, parseCollectionWorkspaceSummary as N, captureLogicalJourneySources as O, createSharedSessionPool as P, removeNamedTemporarySpools as Q, defaultParallelism as R, readPrivateReviewPayload as S, createCollectionArtifacts as T, readLogicalJourneyFinalMasks as U, writeLogicalJourneyOutput as V, readConfiguredOutputInfo as W, createInspectionProcessor as X, createConfiguredPreviewStream as Y, createTemporary as Z, processJourneyMetadata as _, scanReviewFields as a, windowsOwnerOnly as at, writeLogicalJourneyBase as b, readSessionScanRecords as c, verifyOutputShard as d, safeError as et, writeOutputShard as f, readCapturedOriginalRows as g, captureConfiguredSessionJob as h, buildWorkScanBatches as i, restrictToOwner as it, runConfiguredSessionJob as j, capturedJourneyScope as k, scanPreparedSession as l, openConfiguredUpload as m, verifyPreparedSessionSources as n, makePrivateDirectory as nt, createWorkPieces as o, isWindowsAclFailure as ot, configuredSessionUploads as p, readWorkspacePair as q, prepareSessionScans as r, openPrivateFile as rt, readSessionScanFields as s, windowsAclCodes as st, preparedScanConfiguration as t, exclusiveLock as tt, runConfiguredScanJob as u, readStaticSessionMasks as v, readConfiguredSearchFields as w, writePrivateReviewPayload as x, staticSessionJobs as y, gitSeedsProvider as z };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Ot as nativeAdapterVersions, ni as gitMetadataBudgetBytes, tt as reviewInventory } from "./src-
|
|
3
|
-
import { a as isRecord, i as errorCode, n as checkDiscoveryAbort, o as unresolvedMetadata, r as discoveryBounds, t as DiscoveryWarnings } from "./model-
|
|
4
|
-
import { c as previewLimits, d as checkOpenSource, f as checkSource, h as openSource, i as pageFits, l as previewSourceVersion, m as noSymlinks, p as fileSnapshot, r as previewHeapLimits, s as previewMessageSchema, u as createZstdFrameCheck } from "./run-
|
|
1
|
+
import { Bn as nativeItems, En as walkNativeFields, Nn as parseNativeRecord, Rn as nativeBoolean, Vn as nativeText, Wn as retainedMainTextNodes, Xn as defaultLimits, an as observeSource, on as sourceSnapshotId, ur as ProcessingError, zn as nativeField } from "./locate-JYtFmKu-.mjs";
|
|
2
|
+
import { Ot as nativeAdapterVersions, ni as gitMetadataBudgetBytes, tt as reviewInventory } from "./src-C1SjCDx0.mjs";
|
|
3
|
+
import { a as isRecord, i as errorCode, n as checkDiscoveryAbort, o as unresolvedMetadata, r as discoveryBounds, t as DiscoveryWarnings } from "./model-CmHypB0p.mjs";
|
|
4
|
+
import { c as previewLimits, d as checkOpenSource, f as checkSource, h as openSource, i as pageFits, l as previewSourceVersion, m as noSymlinks, p as fileSnapshot, r as previewHeapLimits, s as previewMessageSchema, u as createZstdFrameCheck } from "./run-DvRM-NR8.mjs";
|
|
5
5
|
import { a as titleHintLimits, n as titleHeapLimits, o as titleInputSchema, r as decodeTitleError, s as titleReplySchema } from "./heap-1FYhGds4.mjs";
|
|
6
6
|
import { constants } from "node:fs";
|
|
7
7
|
import { lstat, open, opendir, readFile, readdir, realpath, stat } from "node:fs/promises";
|
|
@@ -4869,6 +4869,7 @@ async function scanRoot(path, harness, state, warnings, signal) {
|
|
|
4869
4869
|
id: randomUUID(),
|
|
4870
4870
|
path: child,
|
|
4871
4871
|
root,
|
|
4872
|
+
harnessRelativePath: `${basename(path)}/${relative(root, child).split(sep).join("/")}`,
|
|
4872
4873
|
representation: entry.name.endsWith(".zst") ? "jsonl.zst" : "jsonl",
|
|
4873
4874
|
snapshot
|
|
4874
4875
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as createExecutor, t as assertStoreHeap } from "./heap-
|
|
1
|
+
import { i as createExecutor, t as assertStoreHeap } from "./heap-NDnGBXH6.mjs";
|
|
2
2
|
import { parentPort } from "node:worker_threads";
|
|
3
3
|
//#region packages/local-host/src/store/worker/entry.ts
|
|
4
4
|
if (!parentPort) throw new Error("STORE_WORKER_REQUIRED");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-sans-cyrillic-ext-400-normal-g30qAdWV.woff2)format("woff2"),url(./ibm-plex-sans-cyrillic-ext-400-normal-Dsrv2Tcn.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-sans-cyrillic-400-normal-DZqxrq2p.woff2)format("woff2"),url(./ibm-plex-sans-cyrillic-400-normal-BTotfTJu.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-sans-greek-400-normal-_efipK4i.woff2)format("woff2"),url(./ibm-plex-sans-greek-400-normal-D9ESIMu3.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-sans-vietnamese-400-normal-DG4YqDda.woff2)format("woff2"),url(./ibm-plex-sans-vietnamese-400-normal-fK1oJ5dG.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2)format("woff2"),url(./ibm-plex-sans-latin-ext-400-normal-RBey6euL.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-sans-latin-400-normal-CDDApCn2.woff2)format("woff2"),url(./ibm-plex-sans-latin-400-normal-CYLoc0-x.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-sans-cyrillic-ext-500-normal-Cs5J6C77.woff2)format("woff2"),url(./ibm-plex-sans-cyrillic-ext-500-normal-DB5PtV2g.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-sans-cyrillic-500-normal-CocWQlwt.woff2)format("woff2"),url(./ibm-plex-sans-cyrillic-500-normal-ByOcLdNv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-sans-greek-500-normal-JMMifIXV.woff2)format("woff2"),url(./ibm-plex-sans-greek-500-normal-CuWXN6rf.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-sans-vietnamese-500-normal-e4dixQRQ.woff2)format("woff2"),url(./ibm-plex-sans-vietnamese-500-normal-BEb3_waV.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2)format("woff2"),url(./ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-sans-latin-500-normal-6ng42L7E.woff2)format("woff2"),url(./ibm-plex-sans-latin-500-normal-BgVn5rGT.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-sans-cyrillic-ext-600-normal-DUMzJB7m.woff2)format("woff2"),url(./ibm-plex-sans-cyrillic-ext-600-normal-Bz0x94Yp.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-sans-cyrillic-600-normal-71GNu3SW.woff2)format("woff2"),url(./ibm-plex-sans-cyrillic-600-normal-BGq0mW3O.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-sans-greek-600-normal-DzTrcv_p.woff2)format("woff2"),url(./ibm-plex-sans-greek-600-normal-D-CqTdkO.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-sans-vietnamese-600-normal-DpPYBSTl.woff2)format("woff2"),url(./ibm-plex-sans-vietnamese-600-normal-DgdngZtN.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2)format("woff2"),url(./ibm-plex-sans-latin-ext-600-normal-DIrixKbi.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2)format("woff2"),url(./ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(./ibm-plex-sans-cyrillic-ext-700-normal-BmRLXWpJ.woff2)format("woff2"),url(./ibm-plex-sans-cyrillic-ext-700-normal-DCQwxkRk.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(./ibm-plex-sans-cyrillic-700-normal-D_uavGvn.woff2)format("woff2"),url(./ibm-plex-sans-cyrillic-700-normal-RFb1v-CK.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(./ibm-plex-sans-greek-700-normal-wyJ6jzdA.woff2)format("woff2"),url(./ibm-plex-sans-greek-700-normal-CkZN0sRy.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(./ibm-plex-sans-vietnamese-700-normal-CkEo6LDy.woff2)format("woff2"),url(./ibm-plex-sans-vietnamese-700-normal-BV5B8Are.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(./ibm-plex-sans-latin-ext-700-normal-aMgXseD4.woff2)format("woff2"),url(./ibm-plex-sans-latin-ext-700-normal-DZH6Xh-4.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(./ibm-plex-sans-latin-700-normal-Bxkt5Cjx.woff2)format("woff2"),url(./ibm-plex-sans-latin-700-normal-Bth3BMcD.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2)format("woff2"),url(./ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2)format("woff2"),url(./ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2)format("woff2"),url(./ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2)format("woff2"),url(./ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2)format("woff2"),url(./ibm-plex-mono-latin-400-normal-CvHOgSBP.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2)format("woff2"),url(./ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2)format("woff2"),url(./ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2)format("woff2"),url(./ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2)format("woff2"),url(./ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2)format("woff2"),url(./ibm-plex-mono-latin-500-normal-CB9ihrfo.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:is(html:has(.native-panel),body:has(.native-panel)){background:#fff;margin:0}:is(html:has(.native-panel[data-scaled]),body:has(.native-panel[data-scaled])){height:100%;overflow:hidden}#root:has(>.native-panel[data-scaled]){height:100dvh;overflow:hidden}.native-panel[data-scaled]{scrollbar-gutter:stable;transform-origin:0 0;overflow:auto}.native-panel:focus{outline:0}.native-panel{--ink:#111;--body:#3d3d3d;--muted:#6f6f6f;--faint:#a3a3a3;--orange:#fe7445;--orange-ink:#b8451e;--panel:#f7f6f4;--line:#e6e4df;--dash:#d6d3ce;--ease:cubic-bezier(.2, .7, .2, 1);--hero-accent:#a84b2b;--hero-sub:#595b59;--check:#686e66;--rule:#e4e5e2;--provider-line:#dcded9;--provider-ink:#343834;--note:#656965;--badge:#ecebe6;--skeleton:#e9e9e6;--card-line:#1b293e1a;--card-shadow:0 6px 24px #1b293e0d;--btn-ink:#181b20;--btn-ink-hover:#303945;--btn-line:#cfd5dd;--kicker:#626760;--source:#4d5662;--source-context:#69737f;--count:#6b7380;--chip-count:#8a919c;--chip-line:#e3e6ea;--search:#f3f4f6;--struck-ink:#555b63;--struck-bg:#eeeff1;--pill-ink:#2b2b2b;--ready:#d9643a;--send-bar:#ed8058;--send-track:#f1f1ee;--alert:#a33e29;--menu-ink:#18181b;--menu-option:#27272a;--menu-checked:#f4f3ef;--menu-line:#e4e4df;--trigger-hover:#f2f1ec;--chevron:#71717a;--ease-out-expo:cubic-bezier(.16, 1, .3, 1);--ease-in:cubic-bezier(.4, 0, 1, 1);--t:.45s;--sans:"IBM Plex Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"IBM Plex Mono", ui-monospace, Menlo, monospace;color:var(--body);font:15px/1.6 var(--sans);-webkit-font-smoothing:antialiased;font-synthesis:none;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background:#fff}.native-panel,.native-panel *{box-sizing:border-box}.native-panel section{background:0 0;border:0;border-radius:0;margin:0;padding:0}.native-panel :is(h1,h2,h3,p,ul,ol){margin:0}.native-panel :is(h1,h2,h3){color:var(--ink);font-weight:600}.native-panel :is(button,summary,a,input,[tabindex]):focus-visible{outline:2px solid var(--orange-ink);outline-offset:2px}.native-panel button{font:500 13px/1.4 var(--sans);color:var(--ink);cursor:pointer;border:1px solid var(--dash);background:#fff;border-radius:999px;min-height:30px;padding:5px 16px}.native-panel ::selection{color:#111;background:#ffc4ad}.native-panel [data-kind=identity]{--kc:#4f74b8}.native-panel [data-kind=credentials]{--kc:#c2455c}.native-panel [data-kind=internal]{--kc:#c4921a}.native-panel [data-kind=private]{--kc:#2e8a82}.native-panel .tc-head{border-bottom:1px solid var(--line);align-items:center;max-width:none;height:48px;margin:0;padding:12px max(16px,50% - 264px);display:flex}.native-panel .tc-logo{color:var(--ink);letter-spacing:-.05em;align-items:center;gap:7px;font-size:21px;font-weight:700;line-height:1;display:inline-flex}.native-panel .tc-logo:before{content:"";background:linear-gradient(var(--ink) 0 42%, var(--orange) 42%);border-radius:50%;width:18px;height:18px}.native-panel .native-journey{max-width:560px;margin:0 auto;padding:24px 16px 56px}.native-panel .journey-muted{color:var(--muted);font-size:13px}.native-panel .journey-chat-hint{color:var(--muted);font-size:12.5px;font-weight:400}.native-panel .kicon{fill:var(--kc,var(--faint));opacity:.85;flex:none;display:inline-block}.native-panel .vh{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.native-panel button:hover:not(:disabled){background:var(--panel)}.native-panel button.primary{background:var(--ink);color:#fff;border-color:var(--ink)}.native-panel button.primary:hover:not(:disabled){background:#333}.native-panel .journey-stage .say{font-size:13px}.native-panel .now .journey-fold{font-size:12.5px}.native-panel :is(.now,.finish) [role=alert]{color:var(--alert);margin-top:8px;font-size:13px;line-height:20px}.native-panel .now .account-summary{margin-block:10px}.native-panel .tc-agent{color:var(--muted);white-space:nowrap;align-items:center;gap:6px;margin:0 0 0 auto;font-size:12px;line-height:19.2px;display:inline-flex}.native-panel .tc-agent:before{content:"";background:var(--muted);border-radius:50%;width:7px;height:7px}.native-panel .tc-agent[data-state=connected]:before{background:#2e8a82;animation:1.4s ease-out infinite pg-pulse-dot}.native-panel .tc-agent[data-state=stopped]{color:var(--ink)}@keyframes pg-pulse-dot{50%{opacity:.45}}@media (prefers-reduced-motion:reduce){.native-panel .tc-agent:before{animation:none}}.native-panel :is(h1,h2,h3)[tabindex="-1"]:focus-visible{outline:0}.native-panel .native-journey:has(>.journey-welcome){padding-top:16px}.native-panel .ob-hero{margin:0 0 12px;padding:8px 16px 0;position:relative}.native-panel .ob-hero:after{content:"";z-index:-1;background:radial-gradient(var(--dash) .9px, transparent 1.1px) 0 0 / 4px 4px;pointer-events:none;width:190px;height:150px;position:absolute;top:-24px;right:0;-webkit-mask-image:radial-gradient(closest-side,#000 20%,#0000);mask-image:radial-gradient(closest-side,#000 20%,#0000)}.native-panel .ob-hero h1{letter-spacing:-1.26px;font-size:36px;font-weight:600;line-height:40.32px}.native-panel .welcome-accent{color:var(--hero-accent)}.native-panel .tag-sub{color:var(--hero-sub);margin-top:16px;font-size:15px;line-height:24px}.native-panel .f-prom{margin:0 16px;padding:0;list-style:none}.native-panel .f-prom>li{border-bottom:1px solid var(--rule);color:var(--ink);grid-template-columns:16px minmax(0,1fr);align-items:start;gap:12px;padding:14px 0;font-size:14px;line-height:22px;display:grid}.native-panel .f-prom>li:last-child{border-bottom:0;padding-bottom:6px}.native-panel .f-prom>li>span{font-weight:500}.native-panel .f-tk{fill:none;width:16px;height:16px;stroke:var(--check);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;margin-top:3px}.native-panel .kk-w{grid-column:2}.native-panel .kk{padding:0;font-size:13px;line-height:19.5px;list-style:none}.native-panel .kk li{border:0;flex-wrap:wrap;align-items:center;gap:0 6px;padding:0;display:flex}.native-panel .kk b{font-weight:500}.native-panel .kk span{color:var(--muted)}.native-panel .kk.compact{flex-wrap:wrap;gap:6px;display:flex}.native-panel .kk.compact li{background:color-mix(in srgb, var(--kc) 12%, #fff);min-height:26px;color:var(--ink);white-space:nowrap;border-radius:999px;gap:5px;padding:3px 9px;font-size:12px;line-height:18px}.native-panel .f-how{width:calc(100% - 32px);min-height:44px;color:var(--ink);font:500 14px/22px var(--sans);text-align:left;background:0 0;border:0;border-radius:0;justify-content:space-between;align-items:center;gap:10px;margin:0 16px;padding:12px 0;display:flex}.native-panel .f-how:hover:not(:disabled){background:0 0}.native-panel .f-how i{width:11px;height:11px;position:relative}.native-panel .f-how i:before,.native-panel .f-how i:after{content:"";background:var(--ink);width:11px;height:1px;transition:transform .45s var(--ease);position:absolute;top:5px;left:0}.native-panel .f-how i:after{transform:rotate(90deg)}.native-panel .f-how[aria-expanded=true] i:after{transform:none}.native-panel .f-more{transition:grid-template-rows .45s var(--ease), opacity .3s var(--ease);grid-template-rows:1fr;margin:0 16px;display:grid}.native-panel .f-more>div{min-height:0;overflow:hidden}.native-panel .f-more[aria-hidden=true]{opacity:0;grid-template-rows:0fr}.native-panel .f-more[aria-hidden=true]>div{visibility:hidden;transition:visibility 0s .45s}.native-panel .flist{padding:0;list-style:none}.native-panel .flist li{grid-template-columns:24px minmax(0,1fr);gap:12px;padding:7px 0;display:grid}.native-panel .no{color:var(--note);font:500 12px/20px var(--mono);font-variant-numeric:tabular-nums;padding-top:2px}.native-panel .f-line{color:var(--ink);flex-direction:column;font-size:14px;line-height:22px;display:flex}.native-panel .f-line small{color:var(--note);margin-top:2px;font-size:12px;line-height:20px}.native-panel .ob-start{margin:0 16px;padding-top:16px}.native-panel .ob-start .btns{align-items:center;gap:10px;display:flex}.native-panel .tc-btn.welcome-go{min-height:42px;font:500 14px/20px var(--sans);background:#171917;border-color:#171917;padding:10px 20px}.native-panel .f-disc{color:var(--note);text-wrap:pretty;margin-top:10px;font-size:12px;line-height:20px}.native-panel .welcome-message{color:var(--note);margin:8px 0 12px;font-size:12px;line-height:20px}.native-panel .welcome-message[role=alert]{color:var(--alert)}.native-panel .ob-start .journey-connection{color:var(--note);border:0;margin:0 0 12px;padding:0;font-size:12px;line-height:20px}.native-panel .welcome-providers{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.native-panel .tc-btn.welcome-provider{border:1px solid var(--provider-line);min-height:44px;color:var(--provider-ink);font:500 14px/20px var(--sans);background:#fff;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:11px 16px;display:flex;position:relative}.native-panel .tc-btn.welcome-provider:hover:not(:disabled){background:#f5f5f3;border-color:#b7bbb5}.native-panel .tc-btn.welcome-provider:disabled{opacity:1;color:#777d75;background:#fafaf9}.native-panel .tc-btn.welcome-provider[data-pending]{border-color:var(--provider-ink);background:var(--provider-ink);color:#0000;cursor:wait}.native-panel .welcome-spinner{border:2px solid #dedad9;border-top-color:var(--kicker);border-radius:50%;width:22px;height:22px;margin:-11px 0 0 -11px;animation:.8s linear infinite welcome-spin;position:absolute;top:50%;left:50%}@keyframes welcome-spin{to{transform:rotate(360deg)}}.native-panel .welcome-auth>.f-disc{margin-top:12px}.native-panel .welcome-auth>.btns+.f-disc{margin-top:10px}.native-panel .welcome-auth>.welcome-message{margin:8px 0 12px}.native-panel .welcome-message a{color:var(--ink);text-underline-offset:3px}.native-panel .welcome-text-action{min-height:44px;color:var(--note);font:400 14px/22px var(--sans);background:0 0;border:0;border-radius:0;justify-content:center;align-items:center;padding:10px 8px;display:flex}.native-panel .welcome-text-action:hover:not(:disabled){color:var(--ink);background:0 0}.native-panel .welcome-cancel{margin:4px auto 0}.native-panel .welcome-account{justify-content:space-between;align-items:center;gap:0 8px;display:flex}.native-panel .welcome-account>p{color:var(--note);align-items:center;gap:6px;font-size:14px;line-height:22px;display:flex}.native-panel .welcome-account strong{color:var(--provider-ink);font-weight:500}.native-panel .welcome-avatar{color:#5b1f0a;width:22px;height:22px;font:600 10px/10px var(--sans);letter-spacing:.2px;background:#efc4b1;border-radius:50%;place-items:center;margin-left:2px;display:grid;overflow:hidden}.native-panel .welcome-avatar img{object-fit:cover;width:100%;height:100%}.native-panel .welcome-auth .btns{margin-top:16px}.native-panel .welcome-auth .say.quiet{font-size:14px;line-height:22px}.native-panel .o-deck{margin:0 0 24px}.native-panel .o-stack{padding-bottom:10px;display:grid;position:relative}.native-panel .o-stack>*{grid-area:1/1}.native-panel .o-back{height:200px;transition:opacity .25s var(--ease), transform .25s var(--ease);border:1px solid #e7eaee;border-radius:18px;align-self:start}.native-panel .o-back[data-p="1"]{z-index:1;background:#ffffff80;transform:translateY(6px)scaleX(.955)}.native-panel .o-back[data-p="2"]{z-index:0;background:#ffffff59;transform:translateY(11px)scaleX(.91)}.native-panel .o-top{z-index:2;border:1px solid var(--card-line);min-width:0;min-height:200px;box-shadow:var(--card-shadow);color:var(--btn-ink);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);animation:card-in .26s var(--ease);background:#ffffffc7;border-radius:18px;flex-direction:column;padding:12px 16px;display:flex;position:relative;overflow:hidden}@keyframes card-in{0%{opacity:.6;transform:translateY(5px)scale(.96)}}.native-panel .o-leave{z-index:3;pointer-events:none}.native-panel .o-leave>.o-top{height:100%;animation:card-out-hide .22s var(--ease-in) forwards}.native-panel .o-leave[data-side=keep]>.o-top{animation-name:card-out-keep}@keyframes card-out-hide{to{opacity:0;transform:translate(56px)rotate(4deg)}}@keyframes card-out-keep{to{opacity:0;transform:translate(-56px)rotate(-4deg)}}.native-panel .o-k{align-items:center;gap:4px 8px;display:flex}.native-panel .o-kick{color:var(--kicker);letter-spacing:.18px;font-size:12px;font-weight:500;line-height:18px}.native-panel .o-head{color:var(--ink);overflow-wrap:anywhere;margin:4px 0 0;font-size:15px;font-weight:500;line-height:22px}.native-panel .o-head:focus:not(:focus-visible){outline:0}.native-panel .o-evidence{flex-direction:column;gap:6px;margin-top:8px;display:flex}.native-panel .o-body{color:var(--body);overflow-wrap:anywhere;font-size:13px;line-height:20px}.native-panel .o-body mark{background:var(--struck-bg);color:var(--struck-ink);border-radius:4px;padding:1px 5px;font-weight:600;text-decoration:underline}.native-panel .o-src{color:var(--source);margin-top:8px;font-size:12px;line-height:18px}.native-panel .o-src button{min-height:0;color:inherit;font:inherit;text-align:left;background:0 0;border:0;border-radius:0;padding:0;display:inline}.native-panel .o-src button:hover:not(:disabled){background:0 0;text-decoration:underline}.native-panel .o-src button:disabled{opacity:1;cursor:default}.native-panel .o-source-context{color:var(--source-context)}.native-panel .o-source-context:before{content:" · "}.native-panel .o-terms{align-items:center;gap:8px;padding-top:8px;display:flex}.native-panel .o-tsearch{background:var(--search);cursor:text;border:1px solid #0000;border-radius:999px;flex:none;align-items:center;gap:8px;width:124px;height:28px;padding:0 10px;transition:width .18s;display:flex}.native-panel .o-tsearch:focus-within{border-color:var(--ink);background:#fff;width:168px;box-shadow:0 0 0 3px #4f74b82e}.native-panel .o-tsearch svg{fill:none;stroke:var(--count);stroke-width:1.6px;flex:none}.native-panel .o-tsearch input{width:100%;min-width:0;color:var(--ink);font:13px/18px var(--sans);background:0 0;border:0;outline:0;padding:0}.native-panel .o-tsearch input::-webkit-search-cancel-button{display:none}.native-panel .o-trule{background:var(--chip-line);flex:none;width:1px;height:16px}.native-panel .o-tchips{scrollbar-width:none;flex:1;gap:6px;min-width:0;padding:2px 24px 2px 0;display:flex;overflow-x:auto}.native-panel .o-tchip{border:1px solid var(--chip-line);min-height:26px;color:var(--ink);font:400 12.5px/16px var(--sans);white-space:nowrap;opacity:.45;background:#fff;border-radius:999px;flex:none;align-items:center;gap:5px;padding:0 10px;transition:opacity .12s,background-color .12s;display:inline-flex}.native-panel .o-tchip[aria-pressed=true]{background:var(--badge);opacity:1;border-color:#0000}.native-panel .o-tchip:hover:not(:disabled){background:var(--badge)}.native-panel .o-tchip:disabled{opacity:.45}.native-panel .o-tnone{color:var(--count);font-size:12.5px;line-height:26px}.native-panel .o-foot{justify-content:space-between;align-items:center;gap:8px;margin-top:auto;padding-top:8px;display:flex}.native-panel .o-sel{color:var(--count);white-space:nowrap;font-variant-numeric:tabular-nums;align-items:center;gap:8px;font-size:12.5px;line-height:16px;display:flex}.native-panel .o-tall{min-height:0;color:var(--ink);font:500 12.5px/16px var(--sans);background:0 0;border:0;padding:4px 0;text-decoration:underline}.native-panel .o-tall:hover:not(:disabled){background:0 0}.native-panel .o-acts{justify-content:flex-end;align-items:center;gap:8px;margin-left:auto;display:flex}.native-panel .o-btn{border:1px solid var(--btn-line);min-width:64px;min-height:30px;color:var(--btn-ink-hover);font:500 13px/20px var(--sans);background:#ffffffa6;border-radius:999px;padding:4px 12px}.native-panel .o-btn:hover:not(:disabled){background:#f1f4f8;border-color:#8b98a9}.native-panel .o-btn[data-suggested]{border-color:var(--btn-ink);background:var(--btn-ink);color:#fff}.native-panel .o-btn[data-suggested]:hover:not(:disabled){border-color:var(--btn-ink-hover);background:var(--btn-ink-hover)}.native-panel .o-btn:disabled{opacity:.4}.native-panel .o-btn[aria-pressed=true]:not([data-suggested]){border-color:var(--btn-ink-hover)}.native-panel .journey-decision [role=alert]{color:var(--alert);margin-top:8px;font-size:12px;line-height:20px}.native-panel .o-toasts{z-index:30;pointer-events:none;margin:0;padding:0;list-style:none;display:grid;position:fixed;top:60px;right:max(56px,50% - 264px)}.native-panel .o-toast{border:1px solid var(--card-line);color:var(--muted);transform-origin:top;animation:toast-fade .18s ease-out, toast-in .22s var(--ease-out-expo);background:#fff;border-radius:12px;grid-area:1/1;justify-self:end;align-items:center;gap:8px;padding:10px 14px;font-size:13px;line-height:20px;display:flex;box-shadow:0 8px 28px #1b293e1f,0 1px 3px #1b293e0f}.native-panel .o-toast b{color:var(--ink);font-weight:500}.native-panel .o-toast svg{fill:none;stroke:var(--muted);stroke-width:1.4px;flex:none}.native-panel .o-toast[data-option=hide] svg{stroke:var(--ink)}.native-panel .o-toast[data-depth="1"]{z-index:-1;transform:translateY(12px)scale(.95)}.native-panel .o-toast[data-depth="2"]{z-index:-2;transform:translateY(24px)scale(.9)}@keyframes toast-fade{0%{opacity:0}}@keyframes toast-in{0%{transform:translateY(-8px)scale(.98)}}.native-panel .o-tsearch input:focus-visible{outline:0}.native-panel .o-uns{color:var(--ink);gap:10px;margin:0;padding:0;font-size:13px;line-height:20px;list-style:none;display:grid}.native-panel .o-uns li{justify-content:space-between;gap:6px 16px;display:flex}.native-panel .o-uns .kf{color:var(--body)}.native-panel .o-quiet{color:#626b76}.native-panel .o-hint{color:var(--muted);margin-top:12px;font-size:13px;line-height:20px}.native-panel .o-foot-uns{margin-top:auto;padding-top:12px}.native-panel .o-btn[data-suggested][aria-expanded=true]{border-color:var(--btn-ink-hover);background:var(--btn-ink-hover)}.native-panel .o-toast[data-leaving]{animation:toast-out .14s var(--ease-in) forwards}@keyframes toast-out{to{opacity:0}}.native-panel .o-chip{background:var(--badge);color:var(--kicker);border-radius:999px;padding:0 8px;font-size:11.5px;line-height:18px}.native-panel .o-addr{color:var(--body);font:400 14px/22px var(--mono);flex-wrap:wrap;align-items:center;gap:4px 8px;margin:10px 0 0;display:flex}.native-panel .o-addr-host{color:var(--muted)}.native-panel .o-addr-slug{color:var(--ink);font-weight:500}.native-panel .o-addr-in,.native-panel .o-paste input{border:1px solid var(--btn-line);min-width:0;min-height:30px;color:var(--ink);font:inherit;background:#fff;border-radius:8px;flex:160px;padding:2px 10px}.native-panel .o-avail{color:var(--count);font:400 12.5px/18px var(--sans)}.native-panel .o-avail[data-state=ok]{color:var(--check)}.native-panel .o-avail[data-state=taken]{color:var(--orange-ink)}.native-panel .o-lnks{flex-wrap:wrap;gap:6px;margin:10px 0 0;padding:0;list-style:none;display:flex}.native-panel .o-lnk{background:var(--badge);min-height:26px;color:var(--ink);font:400 12.5px/16px var(--sans);border-radius:999px;align-items:center;gap:4px;padding:0 4px 0 10px;display:inline-flex}.native-panel .o-lnk-x{width:20px;height:20px;color:var(--muted);background:0 0;border:0;border-radius:999px}.native-panel .o-paste{font:400 13px/20px var(--sans);gap:8px;margin:10px 0 0;display:flex}.native-panel .o-paste-h:empty{display:none}.native-panel .now{border:1px solid var(--card-line);box-shadow:var(--card-shadow);background:#fff;border-radius:18px;margin:0 0 24px;padding:16px}.native-panel .now-k{color:var(--muted);align-items:center;gap:8px;margin:0 0 4px;font-size:12px;font-weight:400;line-height:18px;display:flex}.native-panel .now-t{color:var(--ink);letter-spacing:0;margin:4px 0 8px;font-size:15px;font-weight:500;line-height:22px}.native-panel .now-b{animation:ob-rise .35s var(--ease)}.native-panel .now .now-b .say{color:var(--muted);font-size:13px;line-height:20px}.native-panel .now :is(p,li,h3){overflow-wrap:anywhere}.native-panel .now :is(ul,h3){font-size:13px}.native-panel .now ul{padding-left:20px}.native-panel .now a{color:var(--ink);text-underline-offset:3px}.native-panel .journey-send-scope{margin-top:8px}.native-panel .journey-fold{border-top:1px solid var(--line);margin-top:8px;padding-top:8px}.native-panel .prog{margin:0 0 16px;padding:0 16px;font-size:13px;line-height:20px}.native-panel .now-cap{min-width:0;color:var(--muted);white-space:nowrap;gap:4px;display:flex}.native-panel .barline+.now-cap{margin-top:8px}.native-panel .now-cap>*{text-overflow:ellipsis;overflow:hidden}.native-panel .now-cap>.now-v{flex:none}.native-panel .now-w{color:var(--ink);font-weight:500}.native-panel .barline{align-items:center;gap:10px;min-height:20px;display:flex}.native-panel .barline>span{white-space:nowrap;color:var(--muted);font:500 13px/20px var(--sans);font-variant-numeric:tabular-nums;flex:none}.native-panel .tc-bar{appearance:none;background:var(--panel);width:100%;min-width:0;height:4px;accent-color:var(--orange);border:0;border-radius:2px;flex:auto;margin:0;display:block}.native-panel .tc-bar::-webkit-progress-bar{background:var(--panel);border-radius:2px}.native-panel .tc-bar::-webkit-progress-value{background:var(--orange);border-radius:2px}.native-panel .tc-bar::-moz-progress-bar{background:var(--orange)}.native-panel .hid{flex-wrap:wrap;align-items:center;gap:4px 14px;margin:0 0 12px;padding:0 16px;display:flex;position:relative}.native-panel .hid-h{color:var(--muted);font-size:13px;line-height:19.5px}.native-panel .hid-h b{color:var(--ink);font-variant-numeric:tabular-nums;margin-left:4px;font-weight:500}.native-panel .kinds.hid-t{min-height:22px;font:500 13px/19.5px var(--sans);background:0 0;border:0;border-radius:999px;align-items:center;gap:12px;margin:0 -6px;padding:1px 6px;display:flex}.native-panel .kinds.hid-t:hover:not(:disabled),.native-panel .kinds.hid-t[aria-expanded=true]{background:var(--panel)}.native-panel .kinds:after{content:"";border-right:1px solid var(--faint);border-bottom:1px solid var(--faint);width:5px;height:5px;margin-left:-4px;transform:translateY(-2px)rotate(45deg)}.native-panel .kc{color:var(--ink);font-variant-numeric:tabular-nums;align-items:center;gap:5px;display:inline-flex;position:relative}.native-panel .kc b{font-weight:500}.native-panel .hid-pop{z-index:3;border:1px solid var(--line);background:#fff;border-radius:10px;padding:16px;position:absolute;top:27.5px;left:16px;right:16px;box-shadow:0 8px 24px #1111111a}.native-panel .hid-pop .kk{color:var(--body);gap:12px;display:grid}.native-panel .hid-pop .kk li{grid-template-columns:14px minmax(0,1fr);align-items:center;gap:2px 8px;display:grid}.native-panel .hid-pop .kk b{color:var(--ink);font-weight:500;line-height:20px}.native-panel .hid-pop .kk span{color:var(--muted);grid-column:2;line-height:20px}.native-panel .o-rules{border-top:1px solid var(--line);margin-top:14px;padding-top:12px}.native-panel .o-rules-h{color:var(--ink);margin:0 0 6px;font-size:13px;font-weight:500;line-height:20px}.native-panel .o-rule-w{border-left:2px solid var(--line);color:var(--source);flex-direction:column;gap:4px;margin:0;padding:0 0 0 12px;font-size:13px;line-height:20px;list-style:none;display:flex}.native-panel .o-rule-w li{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.native-panel .o-rule-change{min-height:0;color:var(--ink);font:500 12.5px/20px var(--sans);text-underline-offset:3px;background:0 0;border:0;flex:none;padding:0;text-decoration:underline}.native-panel .o-rule-change:hover:not(:disabled){background:0 0}.native-panel .ktip{z-index:5;color:#333;width:260px;font:400 13px/19.5px var(--sans);text-align:left;white-space:normal;pointer-events:none;background:#fff;border:1px solid #dedfd8;border-radius:10px;padding:13px 15px;display:none;position:absolute;top:calc(100% + 8px);left:-8px;box-shadow:0 6px 24px #1112}.native-panel :is(.kc,.kf):is(:hover,:focus-visible)>.ktip{display:block}.native-panel .kinds[aria-expanded=true] .ktip{display:none}.native-panel .ktip-head{align-items:center;gap:8px;margin-bottom:6px;display:flex}.native-panel .ktip-head strong{font-weight:500}.native-panel .ktip-line{margin:3px 0;display:block}.native-panel .ktip-desc{color:var(--muted)}.native-panel .kf{position:relative}.native-panel .kf:focus-visible{outline:2px solid var(--orange-ink);outline-offset:2px;border-radius:4px}.native-panel .now .btns{flex-wrap:wrap;align-items:center;gap:8px;margin-top:16px;display:flex}.native-panel .now .btns button{min-height:30px;font:500 13px/20px var(--sans);padding:4px 12px}.native-panel .now-t[data-ready]{align-items:center;gap:10px;animation:.3s ease-out .16s both now-text-slide;display:flex}.native-panel .now-t[data-ready]:before{content:"";background:var(--ready) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m7.5 12.5 3 3 6-6.5' fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 24px no-repeat;border-radius:50%;flex:none;width:24px;height:24px;animation:.38s cubic-bezier(.22,1,.36,1) now-pop-in}.native-panel .now-t[data-ready]~*{animation:.3s ease-out .16s both now-text-slide}@keyframes now-pop-in{0%{transform:scale(.55)}60%{transform:scale(1.16)}}@keyframes now-text-slide{0%{opacity:.35;transform:translateY(2px)}}.native-panel .now a.tc-btn{border:1px solid var(--ink);background:var(--ink);color:#fff;min-height:36px;font:500 14px/1 var(--sans);border-radius:999px;align-items:center;gap:6px;padding:0 18px;text-decoration:none;display:inline-flex}.native-panel .now>a.tc-btn{vertical-align:top;margin-top:8px}.native-panel .now a.tc-btn:hover{background:#2b2b2b}.native-panel .now .say{color:var(--muted);font-size:13px;line-height:20px}.native-panel .now .barline{margin:6px 0 4px}.native-panel .now .tc-bar{background:#fff}.native-panel .now .tc-bar::-webkit-progress-bar{background:#fff}.native-panel .journey-send[data-send-state=prepared]>.journey-chat-hint{align-items:center;min-height:36px;margin-top:8px;display:flex}.native-panel .journey-send[data-send-state=sending]>.say{min-height:45.125px}.native-panel .journey-send-account{vertical-align:middle;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;font-size:12.5px;display:inline-flex}.native-panel .journey-send-account .account-control{flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:8px;padding:0;font-size:12.5px;display:flex}.native-panel .journey-send-account button.primary{color:var(--ink);border-color:var(--dash);background:#fff}.native-panel .journey-send .account-panel{background:0 0;border:0;margin:0;padding:8px 0 0;font-size:13px}.native-panel .journey-send .account-panel h2{margin-bottom:4px;font-size:14px}.native-panel .journey-send-details{margin-block:8px;font-size:13px}.native-panel .journey-send-details summary{font-size:12.5px}.native-panel .journey-send-work{border-bottom:1px solid var(--line);padding-block:8px}.native-panel .journey-send-work h3{font-size:13.5px}.native-panel .journey-send-work:last-child{border-bottom:0}.native-panel .journey-send .actions{flex-wrap:wrap;gap:8px;display:flex}.native-panel .journey-send-account+.btns{vertical-align:middle;margin-left:8px;display:inline-flex}.native-panel .journey-send-account .journey-send-details{flex-basis:100%}.native-panel .journey-reading-caption{color:var(--muted);overflow-wrap:anywhere;margin:6px 0 0;font-size:12.5px}.native-panel .journey-send-sign-in .account-code{font:600 22px/1.4 var(--mono);color:var(--ink);margin:6px 0}.native-panel .journey-send-sign-in .actions{margin-top:8px;display:flex}.native-panel .journey-send-sign-in .actions button{width:auto}.native-panel .journey-send-sign-in .metadata{color:var(--muted);font-size:12.5px}.native-panel .tc-bar:indeterminate{background-image:linear-gradient(var(--orange), var(--orange));animation:tc-sweep 1.4s var(--ease) infinite;background-position:50% 0;background-repeat:no-repeat;background-size:40% 100%}.native-panel .tc-bar:indeterminate::-webkit-progress-bar{background:0 0}.native-panel .tc-bar:indeterminate::-moz-progress-bar{background:0 0}@keyframes tc-sweep{0%{background-position:-67% 0}to{background-position:167% 0}}.native-panel .statline{border-bottom:1px solid var(--line);color:var(--muted);justify-content:space-between;align-items:center;gap:2px 16px;margin:0;padding:0 16px 6px;font-size:12px;line-height:18px;display:flex}.native-panel .review-heading{color:var(--body);letter-spacing:.12px;white-space:nowrap;align-items:center;gap:5px;font-weight:500;display:flex}.native-panel .review-heading-count{background:var(--badge);min-width:18px;color:var(--body);letter-spacing:0;font-variant-numeric:tabular-nums;border-radius:999px;justify-content:center;padding:0 5px;font-size:11px;font-weight:400;line-height:16px;display:inline-flex}.native-panel .wh-sort{align-items:center;gap:4px;display:flex}.native-panel .wh-sort-k:after{content:"·";color:var(--dash);margin-left:4px}.native-panel .pr-note{padding:12px 16px}.native-panel .plist{margin:0;padding:0;list-style:none}.native-panel .plist>li{border-bottom:1px solid var(--line);position:relative}.native-panel .pr-head{cursor:pointer;grid-template-columns:minmax(0,1fr) auto;gap:0 12px;padding:12px 16px;display:grid}.native-panel .plist>li:hover>.pr-head,.native-panel .plist>li[data-reading]>.pr-head{background:var(--panel)}.native-panel .pr-tw{align-items:center;min-width:0;min-height:28px;display:flex}.native-panel .pr-t{min-width:0;min-height:0;color:var(--ink);font:500 15px/22px var(--sans);text-align:left;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;border-radius:0;padding:0 3px 0 0;overflow:hidden}.native-panel .pr-t:hover:not(:disabled){background:0 0}.native-panel button.pr-t:after{content:"";border-right:1px solid var(--muted);border-bottom:1px solid var(--muted);width:5px;height:5px;margin:0 3px 0 8px;display:inline-block;transform:translateY(-2px)rotate(-45deg)}.native-panel .pr-t:not(.raw){animation:.18s ease-out work-reveal}@keyframes work-reveal{0%{opacity:.35}}.native-panel .pr-r{justify-content:flex-end;align-items:flex-start;gap:10px;padding-top:3px;display:flex}.native-panel .pr-r>section{min-width:0}.native-panel .pr-c{background:var(--panel);min-width:96px;min-height:28px;color:var(--faint);font:500 12px/20px var(--sans);white-space:nowrap;animation:ob-rise .3s var(--ease);border-radius:999px;justify-content:center;align-items:center;margin-top:-3px;padding:4px 10px;display:inline-flex}.native-panel .pr-c[data-s=waiting]{min-width:0}.native-panel .pr-c[data-s=reading],.native-panel .pr-c[data-s=attention]{color:var(--orange-ink);background:#fff}.native-panel .pr-c[data-s=sorting]{min-width:0;min-height:0;color:var(--orange-ink);background:#fff;margin-top:1px;padding:1px 8px}.native-panel .pr-d{color:var(--muted);grid-column:1/-1;font-size:13px;line-height:18px;animation:.18s ease-out work-reveal}.native-panel .pr-d.sk{background:var(--skeleton);border-radius:4px;width:260px;max-width:100%;height:10px;margin:4px 0;animation:none}.native-panel .pr-m{flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:10px 14px;min-height:21px;margin-top:6px;display:flex}.native-panel .pr-f{flex-wrap:wrap;gap:6px 14px;animation:.18s ease-out work-reveal;display:inline-flex}.native-panel .pr-f.sk{background:linear-gradient(to right, var(--skeleton) 0 28%, transparent 28% 36%, var(--skeleton) 36% 64%, transparent 64% 72%, var(--skeleton) 72%);border-radius:4px;width:150px;height:12px;animation:none}.native-panel .kf{font:500 12px/19.2px var(--sans);font-variant-numeric:tabular-nums;align-items:center;gap:5px;display:inline-flex}.native-panel .kf b{color:var(--ink);font-size:13px;font-weight:500;line-height:20.8px}.native-panel .c-n{color:var(--ink);font:500 13px/20px var(--sans);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none;margin-left:auto}.native-panel .pr-grouping .pr-head{cursor:default}.native-panel .journey-left-out{color:var(--muted);margin:4px 16px 0;font-size:13px}.native-panel .journey-left-out ul{margin:6px 0 0;padding:0;list-style:none}.native-panel .journey-left-out button{color:var(--body);font:inherit;text-align:left;text-underline-offset:3px;cursor:pointer;background:0 0;border:0;padding:4px 0;text-decoration:underline}.native-panel .sh-select{display:inline-flex;position:relative}.native-panel .sh-select-trigger{min-height:22px;color:var(--body);font:500 12px/16px var(--sans);white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:5px;justify-content:space-between;align-items:center;gap:4px;margin-right:-5px;padding:0 5px;transition:background-color .12s,border-color .12s,box-shadow .12s;display:inline-flex}.native-panel .sh-select-trigger:hover:not(:disabled),.native-panel .sh-select[data-state=open]>.sh-select-trigger{background:var(--trigger-hover)}.native-panel .sh-select-trigger:disabled{opacity:1;color:var(--muted)}.native-panel .sh-select-trigger svg{fill:none;stroke:var(--chevron);stroke-width:1.6px;transition:transform .12s}.native-panel .sh-select[data-state=open]>.sh-select-trigger svg{transform:rotate(180deg)}.native-panel .sh-select-menu{z-index:20;border:1px solid var(--menu-line);min-width:148px;color:var(--menu-ink);transform-origin:100% 0;animation:menu-in .12s var(--ease-out-expo);background:#fff;border-radius:8px;gap:1px;margin:0;padding:4px;list-style:none;display:grid;position:absolute;top:calc(100% + 5px);right:0;box-shadow:0 8px 24px -4px #1111111a,0 2px 6px -1px #1111110d}.native-panel .sh-select-menu:focus{outline:0}@keyframes menu-in{0%{opacity:0;transform:translateY(-2px)scale(.96)}}.native-panel .sh-select-menu>li{min-height:28px;color:var(--menu-option);font:400 12.5px/18px var(--sans);white-space:nowrap;cursor:pointer;border-radius:5px;align-items:center;padding:5px 26px 5px 8px;display:flex;position:relative}.native-panel .sh-select-menu>li[data-active]{background:var(--trigger-hover)}.native-panel .sh-select-menu>li[aria-selected=true]{background:var(--menu-checked);color:var(--ink);font-weight:500}.native-panel .sh-select-menu>li svg{fill:none;stroke:currentColor;stroke-width:1.8px;position:absolute;right:8px}.native-panel .pr-c[data-s=left]{border:1px dashed var(--muted);min-width:0;min-height:0;color:var(--body);background:#fff;margin-top:1px;padding:0 7px}.native-panel .plist>li[data-flash=a]{animation:1.5s ease-out row-flash}.native-panel .plist>li[data-flash=b]{animation:1.5s ease-out row-flash-again}.native-panel b[data-flash]{border-radius:4px;animation:2s ease-out row-flash}@keyframes row-flash{0%{background-color:#fff0e3}to{background-color:#0000}}@keyframes row-flash-again{0%{background-color:#fff0e3}to{background-color:#0000}}.native-panel .d-page{animation:page-forward .26s var(--ease)}.native-panel .page-back{animation:page-back .26s var(--ease)}@keyframes page-forward{0%{opacity:0;transform:translate(28px)}}@keyframes page-back{0%{opacity:0;transform:translate(-28px)}}.native-panel .d-body{grid-template-columns:minmax(0,1fr);gap:8px;padding-bottom:24px;display:grid}.native-panel .d-body>*{min-width:0}.native-panel .d-head{z-index:3;background:#fff;justify-content:space-between;align-items:center;gap:10px;margin:-24px -16px 0;padding:10px 16px;display:flex;position:sticky;top:0}.native-panel .d-back{background:0 0;border:0;border-radius:50%;flex:none;place-items:center;width:32px;height:32px;min-height:32px;margin:0 -4px 0 -11px;padding:0 0 0 3px;display:grid}.native-panel .d-back:before{content:"";border-left:1px solid var(--ink);border-bottom:1px solid var(--ink);width:7px;height:7px;transform:rotate(45deg)}.native-panel .d-back:hover:not(:disabled){background:var(--panel)}.native-panel .d-head h1{min-width:0;color:var(--ink);letter-spacing:-.2px;text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:17px;font-weight:600;line-height:22.95px;overflow:hidden}.native-panel .d-head h1:focus:not(:focus-visible){outline:0}.native-panel .pv-head .sh-select-trigger{min-height:32px;margin-right:-8px;padding:0 8px;font-size:14px;line-height:20px}.native-panel .d-head>section [role=alert],.native-panel .d-head>section [role=status]:not(.vh){color:var(--alert);font-size:12px;position:absolute;top:100%;right:16px}.native-panel .d-desc{color:var(--muted);margin-top:-4px;font-size:14px;line-height:21px}.native-panel .d-dec{margin-top:4px;padding-bottom:16px;display:grid}.native-panel .d-dec:empty{display:none}.native-panel :is(.pr-sug,.d-note){background:var(--panel);color:var(--body);border-radius:8px;padding:10px 12px;font-size:13px;line-height:19.5px}.native-panel .cv-h{color:var(--muted);justify-content:space-between;align-items:center;gap:12px;margin:20px 0 10px;font-size:15px;line-height:22px;display:flex}.native-panel .cv-h b{color:var(--ink);font-weight:600}.native-panel .o-by{background:var(--badge);border-radius:999px;flex:none;padding:2px;display:flex}.native-panel .o-by button{min-height:0;color:var(--body);font:500 12px/18px var(--sans);background:0 0;border:0;border-radius:999px;padding:3px 12px}.native-panel .o-by button:hover:not(:disabled){color:var(--ink);background:0 0}.native-panel .o-by button[aria-pressed=true]{color:var(--ink);background:#fff;box-shadow:0 1px 2px #1b293e1f}.native-panel .o-items{padding:2px 0 6px;display:grid}.native-panel .o-g{margin:0}.native-panel .o-g+.o-g>.o-gh{border-top:1px solid var(--line)}.native-panel .o-g:last-child{border-bottom:1px solid var(--line)}.native-panel .o-gh{color:var(--ink);cursor:pointer;align-items:center;gap:7px;padding:8px 0;font-size:14px;font-weight:500;line-height:21px;list-style:none;display:flex}.native-panel .o-gh::-webkit-details-marker{display:none}.native-panel .o-gh b{background:var(--badge);min-width:18px;color:var(--muted);font-variant-numeric:tabular-nums;border-radius:999px;justify-content:center;padding:0 5px;font-size:11px;font-weight:400;line-height:16px;display:inline-flex}.native-panel .o-gh:after{content:"";border-right:1px solid var(--muted);border-bottom:1px solid var(--muted);width:5px;height:5px;transition:transform .2s var(--ease);margin:0 4px 0 auto;transform:rotate(45deg)}.native-panel .o-g[open]>.o-gh:after{transform:rotate(-135deg)}.native-panel .o-g ul{margin:0 0 0 16px;padding:0;list-style:none}.native-panel .o-g li{border-top:1px solid var(--line);color:var(--ink);overflow-wrap:anywhere;padding:7px 0 8px;font-size:13px;line-height:21.45px}.native-panel .o-g s{background:var(--struck-bg);color:var(--struck-ink);border-radius:6px;padding:2px 6px;line-height:20px}.native-panel .pl{background:color-mix(in srgb, var(--kc) 12%, #fff);color:var(--pill-ink);font:500 13px/20px var(--sans);white-space:nowrap;border-radius:6px;align-items:center;gap:4px;padding:0 7px 0 5px;display:inline-flex}.native-panel .o-sess{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;line-height:17.25px;display:block;overflow:hidden}.native-panel .o-more{min-height:0;color:var(--ink);font:500 12.5px/20px var(--sans);background:0 0;border:0;margin:0 0 10px 16px;padding:0;text-decoration:underline}.native-panel .o-more:hover:not(:disabled){background:0 0}.native-panel .d-body>.pr-tip{color:var(--muted);font-size:12.5px;line-height:18.1px}.native-panel .o-gd{color:var(--muted);font-weight:400}.native-panel .tc-head{justify-content:space-between;gap:12px}.native-panel .tc-head .account-control{margin:0;padding:0;font-size:12px}.native-panel .journey-account-menu{flex:none;margin:0;position:relative}.native-panel .journey-account-menu>summary{border:1px solid var(--line);color:#5b1f0a;width:24px;height:24px;font:600 10px/10px var(--sans);background:#efc4b1;border-radius:50%;justify-content:center;align-items:center;list-style:none;display:flex;overflow:hidden}.native-panel .journey-account-menu>summary::-webkit-details-marker{display:none}.native-panel .journey-account-menu img{object-fit:cover;width:100%;height:100%}.native-panel .journey-account-popover{z-index:10;border:1px solid var(--line);overflow-wrap:anywhere;background:#fff;border-radius:8px;width:min(240px,100vw - 48px);padding:16px;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 6px 20px #1111111a}.native-panel .journey-account-name{color:var(--ink);font-weight:600}.native-panel .journey-account-popover a{color:var(--body);text-underline-offset:3px;margin:12px 0;font-size:13px;display:block}.native-panel .journey-account-popover button{width:100%}.native-panel .journey-auth .account-panel{border:1px solid var(--card-line);box-shadow:var(--card-shadow);color:var(--note);background:#fff;border-radius:18px;margin:0 0 24px;padding:16px;font-size:13px;line-height:20px}.native-panel .journey-auth h2{color:var(--ink);letter-spacing:0;margin:4px 0 8px;font-size:15px;font-weight:500;line-height:22px}.native-panel .journey-auth .error{color:var(--alert);background:0 0;border:0;padding:0}.native-panel .journey-auth p+p{margin-top:12px}.native-panel .journey-auth .account-code{font:600 24px/1.4 var(--mono);color:var(--ink)}.native-panel .journey-auth .actions{margin-top:16px}.native-panel .tc-head .account-control{color:var(--muted);align-items:center;gap:8px;font-size:12px;line-height:19.2px;display:flex}.native-panel .tc-head .account-control button,.native-panel .tc-head .account-control button.primary{border:1px solid var(--dash);min-height:0;color:var(--muted);font:400 12px/19.2px var(--sans);background:0 0;border-radius:999px;padding:1px 10px}.native-panel .tc-head .account-control button.primary:hover:not(:disabled){background:var(--panel)}.native-panel .finish{padding:0 16px 48px;font-size:14px;line-height:21px}.native-panel .finish-kicker{color:var(--muted);margin:16px 0 4px;font-size:12px;font-weight:500;line-height:18px}.native-panel .finish-title{color:var(--ink);letter-spacing:-.3px;margin:4px 0 8px;font-size:20px;font-weight:600;line-height:28px}.native-panel .finish .finish-say{color:#61645f;margin:0 0 16px;font-size:13px;line-height:20px}.native-panel .finish-progress{flex-wrap:wrap;align-items:center;gap:8px 12px;margin:16px 0;display:flex}.native-panel .finish-progress>p{min-width:0;color:var(--provider-ink);flex:1;font-size:13px;font-weight:500;line-height:20px}.native-panel .finish-progress>strong{color:var(--ink);font:500 13px/20px var(--sans);font-variant-numeric:tabular-nums}.native-panel .finish-progress>.tc-bar{background:var(--send-track);border-radius:999px;flex:0 0 100%}.native-panel .finish-progress>.tc-bar::-webkit-progress-bar{background:var(--send-track);border-radius:999px}.native-panel .finish-progress>.tc-bar::-webkit-progress-value{background:var(--send-bar);border-radius:999px}.native-panel .finish-progress>.tc-bar::-moz-progress-bar{background:var(--send-bar)}.native-panel .finish-stages{margin:20px 0 16px;padding:0;list-style:none}.native-panel .finish-stages>li{color:#77736c;align-items:flex-start;gap:16px;min-height:32px;padding-bottom:20px;font-size:14px;font-weight:400;line-height:22px;display:flex;position:relative}.native-panel .finish-stages>li:last-child{padding-bottom:0}.native-panel .finish-stages>li:not(:last-child):before{content:"";background:#e5e3df;width:1px;height:35px;position:absolute;top:32px;left:16px}.native-panel .finish-stages>li[data-state=done]:before{background:var(--orange)}.native-panel .finish-mark{width:32px;height:32px;color:var(--body);font:500 13px/13px var(--sans);background:#fff;border:1px solid #dedbd6;border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}.native-panel .finish-stages>[data-state=done]{color:#555b55;font-weight:500}.native-panel .finish-stages>[data-state=done]>.finish-mark{border-color:var(--orange);background:var(--orange);color:#fff}.native-panel .finish-stages>[data-state=active]{color:#171917;font-weight:600}.native-panel .finish-stages>[data-state=active]>.finish-mark{border-color:var(--orange);color:var(--orange-ink)}.native-panel .finish-stage{flex-direction:column;min-width:0;padding-top:5px;display:flex}.native-panel .finish-stage small{color:#8a877f;overflow-wrap:anywhere;min-height:20px;font-size:13px;font-weight:400;line-height:20px}.native-panel [data-state=active] .finish-stage small{color:var(--body)}.native-panel .finish-summary{border-top:1px solid var(--line);color:var(--muted);text-align:center;grid-template-columns:repeat(3,minmax(0,1fr));margin:20px 0 0;padding:18px 0 16px;font-size:12px;line-height:16px;display:grid}.native-panel .finish-summary>span{flex-direction:column;align-items:center;gap:4px;display:flex}.native-panel .finish-summary>span+span{border-left:1px solid #e4e5df}.native-panel .finish-summary b{color:var(--ink);letter-spacing:-.2px;font-variant-numeric:tabular-nums;font-size:20px;font-weight:600;line-height:24px}.native-panel .finish-timing{color:var(--muted);margin:0 0 4px;font-size:13px;line-height:20px}.native-panel .finish .btns{flex-wrap:wrap;gap:8px;margin-top:16px;display:flex}.native-panel .finish .finish-go{color:#fff;min-height:42px;font:500 14px/20px var(--sans);background:#171917;border-color:#171917;flex:1 0 100%;padding:10px 20px}.native-panel .finish .btns button:not(.finish-go){min-height:30px;font:500 13px/20px var(--sans);padding:4px 12px}.native-panel .journey-auth .journey-sign-in-message{background:0 0;flex-wrap:wrap;align-items:center;gap:0 12px;padding:0;display:flex}.native-panel .journey-sign-in-message .welcome-message{margin:0}.native-panel .journey-sign-in-message button{min-height:0;font:500 12px/20px var(--sans);text-underline-offset:3px;background:0 0;border:0;padding:0;text-decoration:underline}.native-panel .tc-head .account-control .metadata{color:var(--muted);font-size:12px;line-height:19.2px}.native-panel :is(.journey-send-sign-in,.journey-auth) .actions button{width:auto;min-height:0;color:var(--note);font:400 13px/20px var(--sans);text-underline-offset:3px;background:0 0;border:0;padding:0;text-decoration:underline}.native-panel :is(.journey-send-sign-in,.journey-auth) p>button.primary{min-height:30px;font:500 13px/20px var(--sans);padding:4px 12px}@keyframes ob-rise{0%{opacity:0;transform:translateY(3px)}}@keyframes ob-pop{0%{transform:scale(.6)}}.native-panel :is(.plist>li,.finish-stage small){animation:ob-rise .35s var(--ease)}.native-panel .kf .kicon{animation:ob-pop .3s var(--ease)}.native-panel .tc-bar::-webkit-progress-value{transition:width .3s var(--ease)}@media (prefers-reduced-motion:reduce){.native-panel *,.native-panel :before,.native-panel :after{transition:none!important;animation:none!important}.native-panel .tc-bar::-webkit-progress-value{transition:none!important;animation:none!important}}.native-panel .journey-question h2{margin-bottom:10px;font-size:19px;line-height:1.35}.native-panel .journey-question p{margin-block:10px}.native-panel .journey-scope{padding:0;list-style:none}.native-panel .journey-scope li{border-bottom:1px solid var(--line);padding-block:8px}.native-panel .journey-scope li span{display:block}.native-panel textarea{resize:vertical;width:100%;min-height:72px;font:inherit;border:1px solid var(--dash);border-radius:6px;padding:8px}.native-panel input{accent-color:var(--orange-ink)}.native-panel button:disabled{cursor:default;opacity:.55}.native-panel details{margin-block:10px}.native-panel summary{cursor:pointer;font-weight:500}.native-panel pre{white-space:pre-wrap;overflow-wrap:anywhere;font:12px/1.6 var(--mono);background:var(--panel);border-radius:6px;padding:10px}.native-panel .journey-source-location{overflow-wrap:anywhere;font:11px/1.6 var(--mono);color:var(--muted)}.native-panel .journey-findings ul{overflow-wrap:anywhere;padding-left:20px}.native-panel .journey-findings li{margin-block:12px}.native-panel .pr-m{flex-wrap:wrap}.native-panel .journey-connection{border:1px solid var(--card-line);box-shadow:var(--card-shadow);color:var(--note);background:#fff;border-radius:18px;margin:0 0 24px;padding:16px;font-size:13px;line-height:20px}.native-panel [role=alert]{color:var(--alert);font-size:13px;line-height:20px}.native-panel :is(.journey-findings,.journey-fold){overflow-wrap:anywhere}.native-panel .fold{display:grid}.native-panel .fold>*{min-height:0;overflow:hidden}.native-panel .fold[data-fold=out]{animation:fold-close .45s var(--ease) forwards, fade-out .3s var(--ease) forwards}.native-panel .fold[data-fold=in]{animation:fold-open .45s var(--ease), fade-in .3s var(--ease)}@keyframes fold-close{0%{grid-template-rows:1fr}to{grid-template-rows:0fr}}@keyframes fold-open{0%{grid-template-rows:0fr}to{grid-template-rows:1fr}}@keyframes fade-out{to{opacity:0}}@keyframes fade-in{0%{opacity:0}}:root{color:#20252c;font-synthesis:none;background:#f4f6f8;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.55}*{box-sizing:border-box}body{margin:0}header,main,footer{max-width:1100px;margin:auto;padding:1.5rem}header{justify-content:space-between;align-items:center;gap:1rem;display:flex}header p{color:#535d6b;margin:.25rem 0 0}.brand{font-size:1.5rem;font-weight:750}.local,.badge{background:#e7edf6;border-radius:.35rem;padding:.2rem .5rem;font-size:.85rem}.badge{color:#654a00;background:#fff0c7;margin-left:.7rem}h1{margin:0 0 .5rem;font-size:2rem}h2{margin-top:0;font-size:1.3rem}h3,h4,h5{margin:0 0 .65rem;font-size:1rem}p{margin:.7rem 0}section{background:#fff;border:1px solid #dbe1e8;border-radius:.65rem;margin:1rem 0;padding:1.5rem}button,input,select{font:inherit}select,input[type=number],input[type=search]{max-width:100%;color:inherit;background:#fff;border:1px solid #aab5c2;border-radius:.35rem;padding:.45rem .6rem}.bundle-library-settings form{gap:.65rem;display:grid}.bundle-library-settings input[type=text]{width:min(100%,42rem);color:inherit;background:#fff;border:1px solid #aab5c2;border-radius:.35rem;padding:.45rem .6rem}.bundle-library-settings .bundle-library-path{overflow-wrap:anywhere}.method{margin:.65rem 0;display:flex}.processing-settings,.inspection-panel{background:#fff;border:1px solid #dbe1e8;border-radius:.45rem;min-width:0;margin:.8rem 0;padding:1rem}.processing-settings>summary,.inspection-panel>summary{font-weight:650}.processing-control{margin:1rem 0}.processing-control label{flex-wrap:wrap}.processing-settings fieldset{border:1px solid #dbe1e8;border-radius:.35rem;min-width:0;margin:1rem 0;padding:.85rem}.source-change-policy{border:1px solid #dbe1e8;border-radius:.35rem;gap:.65rem;margin:1rem 0;padding:.85rem;display:grid}.source-change-policy legend,.processing-settings legend{font-weight:650}.agent-setup-files{gap:.85rem;padding:0;list-style:none;display:grid}.agent-setup-path{overflow-wrap:anywhere}.agent-setup-files pre{max-height:18rem;overflow:auto}.processing-example{overflow-wrap:anywhere;background:#f4f6f8;padding:.65rem;display:block}.table-scroll{max-width:100%;overflow-x:auto}.inspection-counts{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.85rem}.inspection-counts th,.inspection-counts td{text-align:right;border:1px solid #dbe1e8;padding:.45rem .55rem}.inspection-counts th[scope=row],.inspection-counts th[rowspan]{text-align:left}.inspection-counts caption{text-align:left;margin:.5rem 0}button{color:#20252c;cursor:pointer;background:#fff;border:1px solid #aab5c2;border-radius:.35rem;padding:.55rem .85rem;line-height:1.35}button:hover:not(:disabled){background:#edf2f8}button:disabled{opacity:.55;cursor:not-allowed}button.primary{color:#fff;background:#2455a4;border-color:#2455a4}button.primary:hover:not(:disabled){background:#1b4489}:focus-visible{outline-offset:3px;outline:3px solid #457dd0}input[type=checkbox],input[type=radio]{accent-color:#2455a4;flex-shrink:0;width:1.1rem;height:1.1rem}label{overflow-wrap:anywhere;align-items:center;gap:.6rem;font-weight:650;display:inline-flex}.actions,.item-heading,.section-heading{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.main-views{margin:1rem 0}.main-views button[aria-current=page]{color:#fff;background:#2455a4;border-color:#2455a4}.bundle-results{min-width:0}.bundle-results-table{border-collapse:collapse;width:100%;margin-top:1rem}.bundle-results-table th,.bundle-results-table td{text-align:left;vertical-align:middle;border-bottom:1px solid #dbe1e8;padding:.75rem .5rem}.bundle-results-table th[scope=row]{overflow-wrap:anywhere;min-width:16rem}.bundle-results-table td:nth-child(3),.bundle-results-table td:nth-child(4){white-space:nowrap;font-variant-numeric:tabular-nums}.item-heading,.section-heading{justify-content:space-between}.item-heading label{flex:250px}.item-list{padding:0;list-style:none}.workspace,.session{border-top:1px solid #dbe1e8;padding:1rem 0}.sessions{background:#f7f9fc;padding:1rem}.metadata,.connection,small{color:#535d6b;font-size:.9rem}.path{overflow-wrap:anywhere;font-family:ui-monospace,monospace;font-size:.9rem}.header-actions,.account-control{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.6rem;display:flex}.account-identity{overflow-wrap:anywhere;color:#1f6b3a;align-items:center;gap:.5rem;font-weight:650;display:inline-flex}.account-summary{align-items:center;gap:.6rem;display:flex}.account-avatar{object-fit:cover;border-radius:50%;flex:none;width:1.8rem;height:1.8rem}.account-code{letter-spacing:.15em;margin:.6rem 0;font-family:ui-monospace,monospace;font-size:1.7rem}.title-context{color:#535d6b;font-family:ui-monospace,monospace;font-size:.9rem;font-weight:400}.workspace-search{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.workspace-search input{flex:16rem;width:min(100%,32rem)}.notice,.error,.completion{background:#fff6dc;border:1px solid #e7cc86;border-radius:.4rem;padding:.9rem 1rem}.error{background:#fff0ee;border-color:#dea79f}.completion{background:#eaf6ee;border-color:#add1ba}.warnings{color:#74551b;overflow-wrap:anywhere}.operation-timings{font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:.6rem 2rem;display:flex}.operation-timings>div{gap:.5rem;display:flex}.operation-timings dt{font-weight:600}.operation-timings dd{margin:0}.counts{font-weight:650}.preview{background:#fff}.preview-unit{border-top:1px solid #dbe1e8;padding:.8rem 0}pre{white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:.9rem}summary{cursor:pointer}.comparison{max-height:18rem;overflow:auto}.pagination{margin-top:1rem}.output-path{font-weight:650}progress{width:100%;margin:1rem 0;display:block}dialog{max-width:min(620px,100vw - 2rem);max-height:calc(100vh - 2rem);color:inherit;border:1px solid #aab5c2;border-radius:.65rem;padding:1.5rem;overflow:auto}dialog::backdrop{background:#19233273}dialog .actions{justify-content:flex-end;margin-top:1.2rem}footer{color:#535d6b;font-size:.9rem}@media (width<=650px){header,main,footer{padding:1rem}header{align-items:flex-start}header .local{display:none}section{padding:1rem}.actions button{flex-grow:1}}.preview-message{border-radius:8px;margin:12px 0;padding:12px 16px}.preview-user{background:#eff6ff;border-left:3px solid #2563eb}.preview-assistant{background:#f8fafc;border-left:3px solid #94a3b8}.preview-message pre{margin:0;font-family:inherit;line-height:1.6}.preview-message h6{color:#475569;margin:0 0 8px;font-size:.9rem}.preview-activity{color:#64748b;margin:8px 16px;font-size:.85rem}.preview-details{color:#475569;margin:12px 0;font-size:.85rem}.preview-details summary{cursor:pointer}.preview-records pre{max-height:24rem;overflow:auto}.connection,.journey-connection,.error p{white-space:pre-line}
|