@chatpanel/events 0.354.0 → 0.358.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.js CHANGED
@@ -1 +1 @@
1
- import{CURRENT_VERSION as o,EVENT_TYPES as t,ALL_TYPES as a,ACTOR_KINDS as i,SCOPE_KINDS as s,CLASSES as n,EFFECTS as S,EGRESS as l,EventError as E,validateEvent as m,isValidEvent as c,createAppender as p}from"./event.js";import{REF_KINDS as d,RESOLUTION as _,makeRef as A,isRef as R,resolveRef as f}from"./ref.js";import{linearize as u,compareEvents as O,causesAreWellFormed as N}from"./order.js";import{pendingQueue as C,isQueued as M,dequeue as P,moveQueued as L,promoteQueued as x}from"./queue.js";import{groupModels as F,filterSections as D,defaultModelId as k,modelSummary as y,withRecent as U,rememberRecent as b}from"./model-picker.js";import{composerChips as w,chipText as B}from"./composer-chips.js";import{NOTE_ACTIONS as H,NOTE_ACTION_ORDER as K,NOTE_ACTION_TEMPERATURE as V,NOTE_ACTION_ERRORS as W,NOTE_COMMANDS as X,NOTE_COMMAND_TEMPERATURE as Y,NOTE_COMMAND_MAX_TOKENS as z,frameNoteAction as J,noteActionLabel as j,noteActionItems as Q,filterNoteActions as q,commandLineAt as Z,triggerQueryAt as $}from"./note-actions.js";import{parseAgentMention as re,agentMentionAt as oe,parseSkillMention as te,mergeSkillPrompt as ae,findSkillByName as ie,findTargetByName as se,mentionAnswerPrefix as ne}from"./note-mentions.js";import{wikiQueryAt as le,rankLinkTargets as Ee}from"./note-links.js";import{SWARM_ROLES as ce,roleById as pe,classifyModel as Te,supportsSubagents as de,appoint as _e,routeTeam as Ae}from"./cowriter-router.js";import{SEARCH_ENGINES as fe,RESULTS_PER_ENGINE as Ie,buildSearchUrl as ue,unwrapRedirect as Oe,isResultHost as Ne,pickResults as ge,mergeEngineResults as Ce,engineOrder as Me,offTopic as Pe,isSearchPage as Le}from"./web-search.js";import{PACER_DEFAULTS as he,classifyAnswer as Fe,createEnginePacer as De,searchPolitely as ke,retryAfterMs as ye}from"./engine-pacer.js";import{SEARCH_API_PRESETS as be,SearchApiError as ve,defineSearchApi as we,missingVars as Be,buildApiRequest as Ge,readApiResponse as He,apiEngine as Ke,DEFAULT_API_ENGINES as Ve,apiEnginesFrom as We,patchApiEntries as Xe,viewApiEntries as Ye,searchApiChoices as ze,apiTrialVerdict as Je}from"./search-api.js";import{SEARCH_STATUS as Qe,viaOf as qe,tagResults as Ze,searchStatus as $e,engineLabel as er,summarizeSearch as rr}from"./search-outcome.js";import{MAX_GRAPH_NODES as tr,buildNoteGraph as ar,egoGraph as ir,trimGraph as sr,graphStats as nr}from"./note-graph.js";import{lintText as lr,wordDiff as Er,filterTypoEdits as mr,editKey as cr,applyEdits as pr,COWRITER_SYSTEM as Tr,COWRITER_TEMPERATURE as dr}from"./cowriter.js";import{salientTerms as Ar,topicTerms as Rr,researchRelevance as fr,webQuery as Ir,researchSnippet as ur,rankResearchCards as Or,mergeResearchLanes as Nr}from"./note-research.js";import{PLAN_ROLES as Cr,PLAN_AUTHORS as Mr,PLAN_DECOMPOSE_SYSTEM as Pr,PLAN_DECOMPOSE_MAX_TOKENS as Lr,PLAN_DECOMPOSE_TEMPERATURE as xr,PLAN_SECTION_MAX_TOKENS as hr,PLAN_SECTION_TEMPERATURE as Fr,planSectionSystem as Dr,parsePlanTasks as kr,planTitleFor as yr,planParts as Ur,planBody as br,planAttribution as vr}from"./note-plan.js";import{REACH as Br,reachRank as Gr,reachSatisfies as Hr}from"./reach.js";import{UPCASTERS as Vr,upcast as Wr,upcastAll as Xr}from"./upcast.js";import{validateCapability as zr,validateInvocation as Jr,canSatisfy as jr,toModelSchema as Qr,toModelSchemas as qr}from"./capability.js";import{checkInvariants as $r,INVARIANTS as eo}from"./invariants.js";import{createMemoryAdapter as oo,createLogStore as to,createBlobStore as ao}from"./store.js";import{createRegistry as so,REGISTRY_STATES as no}from"./registry.js";import{defineSearchEngine as lo,reconcileEngines as Eo,attemptOrder as mo,ENGINE_KINDS as co,SearchEngineError as po,inheritEngineDefaults as To,ENGINES_REV as _o}from"./search-engines.js";import{getWeather as Ro,weatherUrl as fo,parseWeather as Io,formatWeather as uo,areaLabel as Oo,isAmbiguousLocation as No,WEATHER_HOST as go,WEATHER_TIMEOUT_MS as Co,WeatherError as Mo}from"./weather.js";import{defineToolGroup as Lo,createToolGroupRegistry as xo,ToolGroupError as ho}from"./tool-groups.js";import{toolNeedFor as Do,grantsNeededFor as ko,equipmentFor as yo,isPleasantry as Uo}from"./tool-need.js";import{housekeepingTarget as vo,hasSubstance as wo,isLocalHelper as Bo,isSystemModel as Go,lightestLocalHelper as Ho}from"./housekeeping.js";import{parseFlowchart as Vo,layoutFlowchart as Wo,renderFlowchartSvg as Xo}from"./flowchart.js";import{validateView as zo,validateViewInvocation as Jo,viewResult as jo}from"./view.js";import{validateWidget as qo,validateWidgetMessage as Zo,effectiveGrants as $o,widgetIcon as et,WIDGET_SURFACES as rt}from"./widget.js";import{fuseRRF as tt,planQueries as at,multiSearch as it}from"./rrf.js";import{SUBJECT_KINDS as nt,DEFAULT_THRESHOLD as St,MAX_SUBJECTS as lt,MAX_SUBJECT_CHARS as Et,normalizeSubject as mt,subjectKey as ct,subjectTokens as pt,isSubjectCandidate as Tt,aliasMap as dt,resolveSubjects as _t,earnsBrief as At,rankSubjects as Rt,REDACTION_TOKEN_TYPES as ft,isRedactionToken as It,SELF_LABELS as ut,isSelfLabel as Ot,stripQualifiers as Nt,suggestMerges as gt}from"./entity.js";import{BRIEF_STATES as Mt,CLAIM_KINDS as Pt,MAX_CLAIMS as Lt,MAX_CLAIM_REFS as xt,MAX_BRIEF_RECORDS as ht,MAX_BRIEF_CHARS as Ft,contentHash as Dt,briefId as kt,briefToText as yt,briefTerms as Ut,briefLinks as bt,checkKnowledgeInvariants as vt,parseBriefText as wt}from"./knowledge.js";import{deriveBrief as Gt,deriveBriefs as Ht,driftedRefs as Kt}from"./knowledge-derive.js";import{SYNTHESIS_SCHEMA as Wt,synthesisPrompt as Xt,claimsFromSynthesis as Yt,MAX_SYNTHESIS_CLAIMS as zt,MAX_EXCERPTS as Jt,MAX_EXCERPT_CHARS as jt}from"./synthesis.js";import{PROPOSAL_STATES as qt,SUPERSEDE_OVERLAP as Zt,propose as $t,accept as ea,reject as ra,diffProposal as oa,converge as ta,linkClaims as aa}from"./promotion.js";import{normalizeRecord as sa,normalizeRecords as na,wikilinksIn as Sa,redactedTokensIn as la,redactionCost as Ea,wantedPages as ma,orphanRecords as ca,duplicateTitles as pa,vocabularyDrift as Ta,mentionsFrom as da,spanningQuestions as _a,surveyCorpus as Aa,thresholdSweep as Ra,formatSurvey as fa,NEAR_TITLE_DISTANCE as Ia,SPAN_MIN_TERMS as ua}from"./curate.js";import{PDF_MAX_CHARS as Na,linesFromItems as ga,orderLines as Ca,paragraphsFromLines as Ma,pageTextFromItems as Pa,looksScanned as La,buildPdfDocument as xa}from"./pdf-layout.js";import{YOUTUBE_HOSTS as Fa,TRANSCRIPT_MAX_CHARS as Da,parseYouTubeUrl as ka,isYouTubeUrl as ya,captionTracksFromPlayerResponse as Ua,videoMetaFromPlayerResponse as ba,pickCaptionTrack as va,timedTextUrl as wa,parseTimedText as Ba,groupSegments as Ga,formatTimestamp as Ha,formatTranscript as Ka,buildTranscriptDocument as Va,transcriptFromTracks as Wa}from"./media-transcript.js";import{ACCESS_LOG_VERSION as Ya,ACCESS_LOG_MAX as za,redactAccessArgs as Ja,makeAccessEvent as ja,createAccessLog as Qa,makeStorageTier as qa,formatBytes as Za}from"./observability.js";import{routeGraph as ei,projectChain as ri}from"./route-graph.js";import{defineAdapter as ti,createAdapterRegistry as ai,AdapterError as ii}from"./adapters.js";import{linkifyCitations as ni,repairCitedLinks as Si,markdownUrl as li,sourcesFromToolText as Ei,createCitationCollector as mi,RETRIEVAL_TOOLS as ci}from"./citations.js";import{buildTrajectory as Ti,phasesOf as di,lanesOf as _i,filterEntries as Ai,displayName as Ri,ENTRY_KINDS as fi,threadsOf as Ii,threadTitle as ui,promptEntries as Oi,turnsOf as Ni,threadTree as gi}from"./trajectory.js";import{createTurnRunner as Mi,createStepRecorder as Pi,argsShape as Li,defineLoop as xi,LOOP_KINDS as hi,LoopError as Fi,abortCause as Di,errorFacts as ki}from"./loop.js";import{defineModel as Ui,defineMiddleware as bi,defineRouteStrategy as vi,createModelRouter as wi,signalsFrom as Bi,requirementsFor as Gi,requirementsForStep as Hi,preferenceFor as Ki,failoverOrder as Vi,pinnedOrderOf as Wi,FAILOVER_CLASS_GAP as Xi,FAILOVER_CAPABILITY_GAP as Yi,sameModelKey as zi,RouterError as Ji}from"./router.js";import{makeSourceStore as Qi,manifestText as qi,shortUrl as Zi,readSource as $i,sourceId as es}from"./sources-retrieval.js";import{classifySource as os,extractUrls as ts,hostMatches as as,meetReach as is,sourcePolicyFor as ss,sourceUrlsOf as ns,DEFAULT_INTERNAL_PATTERNS as Ss,INTERNAL_PATTERN_CATALOG as ls}from"./sources.js";import{defineRule as ms,createRuleEngine as cs,SUPPRESSED as ps,RuleError as Ts}from"./rules.js";import{VAULT_VERSION as _s,KDF_ITERATIONS as As,KDF_HASH as Rs,DEFAULT_LOCK_MS as fs,VaultError as Is,MAX_TITLE_CHARS as us,MAX_NOTE_CHARS as Os,MAX_SECRET_CHARS as Ns,MAX_ENTRIES as gs,createVault as Cs,unlockVault as Ms,deriveKey as Ps,sealEntry as Ls,openEntry as xs,validateEntry as hs,entryMeta as Fs,searchEntries as Ds,isLocked as ks,lockedSummary as ys,canAddEntry as Us,toB64 as bs,fromB64 as vs}from"./vault.js";import{SCHEDULE_KINDS as Bs,TRIGGER_KINDS as Gs,JOB_ACTIONS as Hs,MISSED_POLICIES as Ks,ScheduleError as Vs,validateSchedule as Ws,nextFireAt as Xs,occurrencesBetween as Ys,nextWakeAt as zs,parseCron as Js,defineTrigger as js,createTriggerRegistry as Qs,BUILTIN_TRIGGERS as qs,timerTrigger as Zs,meetingStartedTrigger as $s,meetingEndedTrigger as en,personJoinedTrigger as rn,phraseTrigger as on,topicTrigger as tn,questionTrigger as an,voiceCommandTrigger as sn,defineJob as nn,dueJobs as Sn,jobsForEvent as ln,occurrenceKey as En,clipText as mn,matchSummary as cn}from"./schedule.js";import{defineMeetingAnalyzer as Tn,createAnalyzerRegistry as dn,CADENCES as _n,AnalyzerError as An}from"./meeting-analyzers.js";import{DEFAULT_WAKE as fn,ASSISTANT_NAME as In,MAX_COMMANDS_PER_DELTA as un,DAYPART_HOUR as On,VoiceIntentError as Nn,compileWake as gn,wakeFor as Cn,findWakeCommand as Mn,parseCommand as Pn,commandsFromSegments as Ln,parseDuration as xn,parseClock as hn,parseWhen as Fn,parseNumberWords as Dn,normalizeSpeech as kn,tokenize as yn,editDistance as Un,defineVoiceIntent as bn,createVoiceIntentRegistry as vn,defaultVoiceIntents as wn,BUILTIN_VOICE_INTENTS as Bn,timerIntent as Gn,reminderIntent as Hn,scheduleIntent as Kn,noteIntent as Vn,monitorIntent as Wn,REFINEMENT_SCHEMA as Xn,refinementPrompt as Yn,refinementFormat as zn,parseRefinement as Jn,refinementStream as jn,settleRefinement as Qn,refineSpokenCommand as qn,isFillerSentence as Zn,gistText as $n,gistOpening as eS,commandLooksFinished as rS,sameUtterance as oS,createUtteranceGate as tS,UTTERANCE_SETTLE_MS as aS,UTTERANCE_DANGLING_MS as iS}from"./voice-intents.js";import{MAX_TOPICS as nS,MAX_TOPIC_CHARS as SS,TOPICS_SCHEMA as lS,topicsSchema as ES,topicsPrompt as mS,topicsFormat as cS,parseTopics as pS,normalizeTopic as TS,normalizeTopics as dS,topicsStream as _S,ENTITY_TYPES as AS,ENTITIES_SCHEMA as RS,entitiesPrompt as fS,entitiesFormat as IS,parseEntities as uS,coerceEntities as OS,entitiesStream as NS,MAX_SUGGESTIONS as gS,MAX_SUGGESTION_CHARS as CS,SUGGESTIONS_SCHEMA as MS,suggestionsPrompt as PS,suggestionsFormat as LS,parseSuggestions as xS,suggestionsStream as hS}from"./extraction.js";import{FIELD_TYPES as DS,RESPONSE_MODES as kS,StructuredError as yS,defineSchema as US,describeSchema as bS,toJsonSchema as vS,responseFormat as wS,unfence as BS,findJson as GS,rewriteJson as HS,repairJson as KS,isNothing as VS,coerce as WS,parseStructured as XS,createStructuredStream as YS}from"./structured.js";import{explainMcpError as JS,packageFromArgs as jS,isStaleMcpSession as QS,installHintFor as qS,missingCommandMessage as ZS,missingCommandIn as $S,normalizePlatform as el}from"./mcp-errors.js";import{explainInstallFailure as ol,gatewayNotBackAdvice as tl,adviceText as al,npmInstallCommand as il,standaloneInstallCommand as sl,nodeSatisfies as nl,PUBLIC_REGISTRY as Sl}from"./install-advice.js";import{parseSignInPrompt as El,signInError as ml,signInFromError as cl,signInToolResult as pl,MCP_SIGN_IN_CODE as Tl}from"./mcp-signin.js";import{parseAuthChallenge as _l,wellKnownUrls as Al,canonicalResource as Rl,readResourceMetadata as fl,readAuthServerMetadata as Il,registrationRequest as ul,readRegistration as Ol,authorizeUrl as Nl,tokenRequest as gl,readTokenResponse as Cl,tokenExpired as Ml,authHeader as Pl,discoverMcpAuth as Ll,registerMcpClient as xl,fetchMcpToken as hl,TOKEN_SKEW_MS as Fl}from"./mcp-oauth.js";import{toolTraits as kl,bareToolName as yl,canRunConcurrently as Ul,isCacheable as bl,needsConfirmation as vl,traitsIndex as wl,effectiveToolName as Bl,parallelEligible as Gl,PARALLEL_LOCAL_RE as Hl}from"./tool-traits.js";import{planToolRound as Vl,runToolRound as Wl}from"./tool-round.js";import{createToolLoopGuard as Yl,roundSignature as zl,stableToolCallKey as Jl,toolMadeProgress as jl,isLoopableTool as Ql,blockedToolResult as ql,OBSERVATION_TOOLS as Zl,INPUT_PROGRESS_TOOLS as $l}from"./tool-loop-guard.js";import{classifyFailure as rE,createModelHealth as oE,COOLDOWN_MS as tE,UNAVAILABLE_REASONS as aE,normModelName as iE}from"./model-health.js";import{runWithFailover as nE,failoverExhausted as SE,FAILOVER_MAX_ATTEMPTS as lE}from"./failover.js";import{sourcePolicySettings as mE,sourceGuardFor as cE,sourceGate as pE,isSourceGateError as TE,withinReach as dE}from"./source-gate.js";import{runTurnLoop as AE,createCallRunner as RE,roundCap as fE,withToolSystem as IE,describeCall as uE,stepResultText as OE,addUsage as NE,normalizeUsage as gE,openAiTranscript as CE,anthropicTranscript as ME,DEFAULT_MAX_ROUNDS as PE,DEFAULT_MAX_FINISH_TRIES as LE,FINISH_NUDGES as xE,LOOPING_NUDGE as hE,EXHAUSTED_NOTE as FE,ROUND_SEPARATOR as DE}from"./turn-loop.js";import{createResultStore as yE,shieldToolResult as UE,runResultQuery as bE,withResultShield as vE,describeShape as wE,compactValue as BE,resultToolSpec as GE,RESULT_TOOL_NAME as HE,DEFAULT_SHIELD as KE,DEFAULT_STORE as VE}from"./tool-result.js";import{PERMISSION_EVENT as XE,PERMISSION_ANSWERS as YE,PERMISSION_TIMEOUT_MS as zE,PERMISSION_TOOL_NAME as JE,permissionToolSpec as jE,isPermissionTool as QE,permissionRequestFromClaude as qE,permissionKeys as ZE,describePermission as $E,permissionAnswer as em,permissionAllowed as rm,rememberPermission as om,recallPermission as tm,claudePermissionResponse as am,permissionLine as im,permissionIcon as sm,createPermissionDesk as nm}from"./agent-permission.js";import{findTools as lm,findToolsResult as Em,findActionArgs as mm,oneLiner as cm,overlapRank as pm,FIND_ACTION as Tm}from"./tool-discovery.js";import{rankFused as _m,fusedRanker as Am,rerankThrough as Rm,toolDoc as fm,FUSED_CANDIDATES as Im,FUSED_BUDGET_MS as um}from"./tool-rank-fused.js";import{makeToolHub as Nm,hubSpec as gm,HUB_TOOL_NAME as Cm,withHint as Mm,withLead as Pm,lastUserText as Lm}from"./tool-hub.js";import{withPromptedTools as hm,promptedTranscript as Fm,makePromptedTranscript as Dm,promptedToolsSystem as km,parseToolCalls as ym,visiblePrefix as Um,toolChannel as bm,transcriptFor as vm}from"./prompted-tools.js";import{REVEAL as Bm,revealStep as Gm,revealCut as Hm}from"./stream-reveal.js";import{buildToolset as Vm}from"./toolset.js";import{DESCRIBE_ACTION as Xm,actionMenu as Ym,buildGroupDispatchSpec as zm,validateAction as Jm,makeGroupDispatchExecutor as jm,withGuidance as Qm,makeDispatchProvider as qm,estimateTokens as Zm}from"./tool-dispatch.js";import{FIND_TOOL_NAME as ec,FIND_DESCRIPTION as rc,FIND_RESIDENT as oc,findDispatchProvider as tc}from"./find-tool.js";import{WEB_SEARCH_TOOL_NAME as ic,WEB_SEARCH_TOOL_SYSTEM as sc,WEB_SEARCH_SPEC as nc,searchResultsToText as Sc,searchFailureOf as lc,webSearchToolProvider as Ec}from"./web-search-tool.js";import{compressToolSpec as cc,compressToolSpecs as pc,compressionStats as Tc,trimDescription as dc,COMPRESSION_MODES as _c,DEFAULT_COMPRESSION as Ac}from"./tool-schema.js";import{validateRecipe as fc,expandRecipe as Ic,recipeParams as uc,mapInput as Oc,dryRunRecipe as Nc,runPlan as gc,runRecipe as Cc,RecipeError as Mc,RECIPE_MODES as Pc}from"./recipe.js";import{recipeToolProvider as xc,recipeToolSpec as hc,describeRecipeForApproval as Fc,RECIPE_TOOL_NAME as Dc}from"./recipe-tool.js";import{createBudget as yc,validateBudget as Uc,normalizeBudget as bc,usageOf as vc,BudgetError as wc,BUDGET_DIMENSIONS as Bc}from"./budget.js";import{defineTeam as Hc,validateTeam as Kc,normalizeTeam as Vc,normalizeGrants as Wc,grantAllows as Xc,scmAllows as Yc,describeRole as zc,TeamError as Jc,ROLE_MODES as jc,MERGE_POLICIES as Qc,PLAN_MODES as qc,GRANTABLE as Zc,WORK_GRANTS as $c,GRANT_RE as ep,AGENT_REF_RE as rp,STARTER_TEAMS as op,starterTeams as tp,blankTeam as ap,teamFromForm as ip,slugTeamName as sp}from"./team.js";import{fixedPlan as Sp,parsePlan as lp,plannerPrompt as Ep,waves as mp,breakCycles as cp,TEAM_PLAN_SCHEMA as pp}from"./team-plan.js";import{createBoard as dp,parseFindings as _p,boardText as Ap,findingsInstruction as Rp,toBriefClaims as fp,FINDINGS_SCHEMA as Ip,FINDING_KINDS as up,THREAD_KINDS as Op,THREAD_STATUSES as Np,POST_KINDS as gp,POST_STATUSES as Cp,ASK_TYPES as Mp,emptyBoardState as Pp,foldBoard as Lp,findingsOf as xp}from"./team-board.js";import{boardToolProvider as Fp,boardToolSpec as Dp,createAnswerBox as kp,withBoardTool as yp,BOARD_TOOL_NAME as Up,DEFAULT_ASK_TIMEOUT_MS as bp}from"./board-tool.js";import{createRunCache as wp,withRunCache as Bp}from"./team-cache.js";import{emptyRun as Hp,foldRun as Kp,runFromEvents as Vp,checkpointFrom as Wp,isResumable as Xp,LIVE_RUN_STATUSES as Yp,RESUMABLE_RUN_STATUSES as zp,spendOf as Jp,describeSpend as jp,runState as Qp,priorWorkFor as qp,STALLED_AFTER_MS as Zp}from"./team-record.js";import{validateProject as eT,normalizeProject as rT,defineProject as oT,canTransition as tT,blankProject as aT,projectFromForm as iT,emptyProjectRecord as sT,foldProject as nT,projectProgress as ST,ProjectError as lT,PROJECT_STATUSES as ET,PROJECT_ID_RE as mT}from"./project.js";import{validateJob as pT,normalizeJob as TT,defineJob as dT,canTransition as _T,applyAll as AT,jobToRole as RT,readyJobs as fT,blankJob as IT,jobFromForm as uT,JobError as OT,JOB_STATUSES as NT,JOB_ID_RE as gT}from"./job.js";import{validateGate as MT,normalizeGate as PT,effectiveGate as LT,gateAllows as xT,DEFAULT_GATE as hT,AUTONOMY as FT,HUMAN_FLAGS as DT,CHECKS as kT}from"./gate.js";import{runProject as UT,roundJobs as bT,teamForRound as vT,jobResults as wT,roundBudget as BT,parseJobs as GT,parseReview as HT,jobsPrompt as KT,reviewPrompt as VT,PROJECT_JOBS_SCHEMA as WT,PROJECT_REVIEW_SCHEMA as XT,ProjectRunError as YT,EXECUTIVE as zT,MAX_JOBS_PER_ROUND as JT,MAX_ROUNDS as jT,PROJECT_RUN_STATUSES as QT}from"./project-run.js";import{canonical as ZT,sha256 as $T,makeEntry as ed,verifyChain as rd,attest as od,verifyAttested as td,summarize as ad,fit as id,adjustSummary as sd,normalizeEngine as nd,engineKey as Sd,normalizeScm as ld,SCORECARD_ENTRY_KINDS as Ed,ROLE_KINDS as md,SCORECARD_VERSION as cd,ENGINE_KINDS as pd}from"./scorecard.js";import{ENGINE_KINDS as dd,ROUTE_PREFERS as _d,normalizePolicy as Ad,normalizeEngineSpec as Rd,validateEngineSpec as fd,engineRef as Id,engineKeyOf as ud,describeEngine as Od,tierOf as Nd}from"./engine.js";import{AGENT_ID_RE as Cd,APPLIES_TO as Md,EGRESS_CLASSES as Pd,ASSISTANT_ID as Ld,AgentError as xd,validateAgent as hd,normalizeAgent as Fd,defineAgent as Dd,assistantAgent as kd,engineOf as yd,describeAgent as Ud,slugAgentId as bd,resolveTeam as vd,STARTER_AGENTS as wd,starterAgents as Bd,blankAgent as Gd,agentFromForm as Hd,poolFor as Kd}from"./agent.js";import{LEDGER_VERSION as Wd,LEDGER_ENTRY_KINDS as Xd,DECLINE_REASONS as Yd,WITHDRAW_AFTER as zd,ledgerKey as Jd,normalizeCall as jd,makeLedgerEntry as Qd,summarizeEngine as qd}from"./model-ledger.js";import{RECRUIT_SCHEMA as $d,MIN_FIT as e_,engineRow as r_,engineRows as o_,needForJob as t_,routeFor as a_,engineWorth as i_,applications as s_,evaluatorPrompt as n_,parseEvaluation as S_,decide as l_,recruitForRun as E_,proposalFromNeeds as m_,proposalToAgent as c_,carveBudget as p_,recruitEvents as T_,recruitJob as d_}from"./recruit.js";import{DEFAULT_MIN_CALLS as A_,cardOverride as R_,applyCard as f_}from"./model-candidates.js";import{SCM_KINDS as u_,validateConnection as O_,normalizeConnection as N_,parseRemote as g_,connectionFor as C_,branchFor as M_,worktreeDirFor as P_,credentialEnv as L_,describeConnection as x_,blankConnection as h_,connectionFromForm as F_}from"./scm-connection.js";import{messagesFor as k_,mergeTranscript as y_,clipTranscript as U_,clipMessage as b_,newSteps as v_,continuationNote as w_,createControl as B_,STEP_MAX_CHARS as G_,TASK_TRANSCRIPT_MAX_CHARS as H_}from"./team-task.js";import{runTeam as V_,resumeTeam as W_,dryRunTeam as X_,isModelUnavailable as Y_,TeamRunError as z_,RUN_STATUSES as J_}from"./team-run.js";import{teamToolProvider as Q_,teamToolSpec as q_,teamToolTimeoutMs as Z_,describeTeamForApproval as $_,TEAM_TOOL_NAME as eA,TEAM_MANUAL as rA}from"./team-tool.js";import{workLogFor as tA,workLogText as aA,workLogEvidence as iA,describeCall as sA,WORKLOG_KINDS as nA}from"./team-worklog.js";import{normalizeRequest as lA,subtaskFromRequest as EA,takeUp as mA,takeUpLine as cA,holdsGrants as pA,jobFromSubtask as TA,extendDependents as dA,taskTree as _A,threadRows as AA,MAX_SUBTASKS as RA,MAX_DEPTH as fA,MIN_TAKEUP_FIT as IA}from"./team-subtask.js";import{teamLine as OA,teamLanes as NA}from"./team-trail.js";import{promoteRoles as CA,starterTeam as MA,missingStarters as PA,teamHealth as LA,teamShape as xA,describeTeamShape as hA,whereItWorks as FA,rosterRows as DA,agentKind as kA,agentHue as yA,agentColor as UA,agentInitials as bA,roleCardId as vA,cardNumbers as wA,upsertAgents as BA,soloTeam as GA,teamsWithSolos as HA,builtinOrg as KA,isBuiltin as VA,grantChoices as WA,grantsFromChoices as XA,skillChoices as YA,GRANT_INFO as zA,SOLO_BUDGET as JA,TEAM_SHAPES as jA,ROSTER_KINDS as QA}from"./team-org.js";import{observeInbox as ZA,observeStrip as $A,runLanes as eR,spendRows as rR,engineStrip as oR}from"./team-observe.js";import{mcpDispatchProvider as aR,MCP_TOOL_NAME as iR}from"./mcp-dispatch.js";import{createManifest as nR,ManifestError as SR,SOURCES as lR}from"./manifest.js";import{createKernel as mR,meetDecisions as cR,KernelError as pR,REQUIRED_PLUGINS as TR,ALLOW_ALL as dR}from"./kernel.js";import{replay as AR,formatReport as RR,parseJsonl as fR,toJsonl as IR}from"./harness.js";import{compileQuery as OR,findMatches as NR,matchIndexFor as gR,expandReplacement as CR,replaceMatch as MR,replaceAll as PR,replaceAllInRange as LR,MAX_MATCHES as xR}from"./text-search.js";import{DATA_SCOPES as FR}from"./scopes.js";import{MEMORY_VERSION as kR,MEMORY_KINDS as yR,MEMORY_KIND_NAMES as UR,AMBIENT_KINDS as bR,MAX_MEMORY_CHARS as vR,MIN_MEMORY_CHARS as wR,DEFAULT_MAX_MEMORIES as BR,DEFAULT_BLOCK_CHARS as GR,SAME_FACT as HR,MEMORY_TOOL_SPEC as KR,MEMORY_UPCASTERS as VR,MemoryError as WR,normalizeMemory as XR,isValidMemory as YR,memoryKey as zR,slotOf as JR,similarity as jR,containment as QR,candidatesFrom as qR,reconcile as ZR,matchForForget as $R,recall as ef,saysWhere as rf,homePlace as of,needsWhere as tf,memoryBlock as af,markUsed as sf,pruneMemories as nf,memoryToolSystem as Sf,upcastMemory as lf,sameMemory as Ef,AMBIENT_MAX_WORDS as mf}from"./memory.js";import{linksToRead as pf,storyLinkOf as Tf,linkAttachments as df,asksOnlyAboutPage as _f,pageInstruction as Af}from"./message-links.js";import{frontPagesAskedAbout as ff,frontPageInstruction as If,FRONT_PAGES as uf}from"./site-pages.js";import{SOURCE_TRUST as Nf,SkillSourceError as gf,defineSkillSource as Cf,createSkillSourceRegistry as Mf}from"./skill-sources.js";import{SKILL_MANIFEST_VERSION as Lf,SKILL_CONTEXTS as xf,SKILL_HISTORY_SCOPES as hf,SKILL_MCP_MODES as Ff,SKILL_TRUST as Df,SKILL_FILE_KINDS as kf,SKILL_UPCASTERS as yf,SkillManifestError as Uf,isSafeSkillPath as bf,originOf as vf,trustOf as wf,skillFiles as Bf,needsBridge as Gf,declaredAccess as Hf,originLabel as Kf,sameSkillOrigin as Vf,skillIsStale as Wf,validateSkill as Xf,upcastSkill as Yf,upcastSkills as zf,normalizeSkill as Jf}from"./skill-manifest.js";import{SKILL_VARS as Qf,SKILL_VAR_NAMES as qf,skillVar as Zf,skillVarPattern as $f,parseSkillVars as eI,lintSkillPrompt as rI,suggestSkillVar as oI,substituteSkillVars as tI,expandSkillPrompt as aI,skillVarGuidance as iI,SkillVarError as sI}from"./skill-vars.js";import{lineAt as SI,writerAffordance as lI,INSTRUCTION_RE as EI,instructionOnLine as mI,GOAL_MIN_NEW as cI,goalDraftAllowed as pI,createSpendMeter as TI,writerTail as dI,draftSeparator as _I,groundingBlock as AI,writerRequest as RI,AUTOCOMPLETE_SYSTEM as fI,AUTOCOMPLETE_MAX_TOKENS as II,AUTOCOMPLETE_TEMPERATURE as uI,clipCompletion as OI,GEARS as NI,WRITER_PREFS as gI,WRITER_PREF_DEFAULTS as CI,normalizeWriterPrefs as MI,normalizeIntent as PI}from"./cowriter-writer.js";import{SLASH_TYPING_RE as xI,NEW_THREAD_SLASH_ITEMS as hI,parseNewThread as FI,BUG_REPORT_SLASH_ITEMS as DI,parseBugCommand as kI,isSkillEnabled as yI,enabledSkills as UI,slashCommandItems as bI,matchSlashSkill as vI,matchSlashRecipe as wI,recipeInvocationText as BI,matchSlashTeam as GI,teamInvocationText as HI,slashCommandInsert as KI,skillInvocationOf as VI,skillInvocationLabel as WI}from"./slash-commands.js";import{outlineOf as YI,parseListItem as zI,continueList as JI,indentSelection as jI,toggleWrap as QI,toggleLinePrefix as qI,toggleTask as ZI,toggleLink as $I,docStats as eu,selectionStats as ru}from"./markdown-authoring.js";import{MAX_TAG_LENGTH as tu,MAX_TAGS as au,normalizeTag as iu,normalizeTags as su,hasTag as nu,addTag as Su,removeTag as lu,toggleTag as Eu,sameTags as mu,formatTag as cu,parseTagQuery as pu,hasTagTerms as Tu,formatTagQuery as du,matchesTagFilter as _u,filterByTags as Au,tagFacets as Ru,suggestExistingTags as fu,tagsSearchText as Iu}from"./tags.js";import{UNTITLED_MEETING as Ou,MAX_TITLE_LENGTH as Nu,TITLE_RULES_VERSION as gu,cleanTitle as Cu,isGenericTitle as Mu,titleFromSummary as Pu,titleFromTopics as Lu,titleFromParticipants as xu,titleFromDate as hu,readableWhen as Fu,deriveMeetingTitle as Du,shouldAutoTitle as ku,isBetterTitleSource as yu,meetingTitlePrompt as Uu,parseTitleResponse as bu}from"./titles.js";import{RECORD_KINDS as wu,MAX_TITLE_LEN as Bu,LibraryError as Gu,parseRecordId as Hu,makeRecordId as Ku,isRecordId as Vu,normalizeStoredRecord as Wu,isValidStoredRecord as Xu,toSearchRecord as Yu,searchTextFor as zu,toIndexEntry as Ju,deriveTitle as ju,snippetOf as Qu,wordCount as qu,findRecordRefs as Zu,linkRecordRefs as $u,repairAnswerMarkup as eO}from"./library.js";import{CLOCK_TOLERANCE_MS as oO,SyncError as tO,stampOf as aO,decide as iO,planSync as sO,isSettled as nO,forkConflict as SO,advanceBases as lO}from"./sync-plan.js";import{ENCRYPTED_TYPE as mO,COMPRESSIONS as cO,BackupError as pO,KDF_ITERATIONS as TO,encryptBackup as dO,decryptBackup as _O,isEncryptedBackup as AO,RECORD_TYPE as RO,deriveBackupKey as fO,sealRecord as IO,openRecord as uO,isSealedRecord as OO,keyCache as NO,identityCodec as gO,streamCodec as CO,nodeCodec as MO,bestCodec as PO}from"./backup-envelope.js";import{recordsFromBackup as xO,backupFromRecords as hO}from"./backup-records.js";import{DEFAULT_POLICY as DO,SLOW_POLICY as kO,scalePolicy as yO,pickProfile as UO,adaptProfile as bO,policyFor as vO,SLOW_FLUSH_MS as wO,FAST_FLUSH_MS as BO,FAST_STREAK as GO,createJournal as HO,JournalError as KO,ENTRY_VERSION as VO,makeEntry as WO,tombstone as XO,isTombstone as YO,isEntry as zO,entryStamp as JO,supersedes as jO,BOUNDS as QO,createSegment as qO,applyEntry as ZO,segmentBytes as $O,segmentEntries as eN,shouldRotate as rN,mergeSegments as oN,segmentName as tN,parseSegmentName as aN,SEGMENT_RE as iN,boundSegments as sN,segmentsFor as nN,overlay as SN,catchUpPlan as lN}from"./journal.js";import{OMNI_MODES as mN,OMNI_GRAMMAR as cN,parseOmni as pN,extractFilters as TN,resolveSince as dN,wantsModel as _N,isActionable as AN}from"./omni.js";import{THEMES as fN,LIGHT as IN,DARK as uN,PALETTES as ON,SHAPE as NN,TOKEN_NAMES as gN,TOKEN_ROLES as CN,paletteFor as MN,cssVarName as PN,toCssVars as LN,themeStylesheet as xN,resolveTheme as hN}from"./theme.js";import{PLANS as DN,API_BASE as kN,ENDPOINTS as yN,ENTITLEMENT_PUBLIC_JWK as UN,UPGRADE_URL as bN,FEATURE_TIER as vN,PRO_FEATURES as wN,TEAM_FEATURES as BN,FREE_LIMITS as GN,COUNTED as HN,freeCap as KN,observeSince as VN,RECHECK_INTERVAL_MS as WN,EntitlementError as XN,checkoutUrl as YN,planOf as zN,planLabel as JN,isPro as jN,isTeam as QN,can as qN,tierFor as ZN,withinFreeLimit as $N,verifyEntitlement as eg,verifySignedToken as rg,licenseFromPayload as og,needsRecheck as tg}from"./entitlement.js";import{generateDeviceKey as ig,exportDevicePublicKey as sg,signChallenge as ng}from"./device-proof.js";import{renderMarkdown as lg,defaultLinkPolicy as Eg,defaultImagePolicy as mg}from"./markdown-render.js";import{NOTE_IMAGE_SCHEME as pg,MAX_NOTE_IMAGE_BYTES as Tg,NOTE_IMAGE_TYPES as dg,noteImageId as _g,noteImageRef as Ag,noteImageIds as Rg,noteImageRefs as fg,stripNoteImageRefs as Ig,orphanNoteImages as ug,newNoteImageId as Og}from"./note-images.js";import{parseMeetingText as gg,speakerStats as Cg,densityRibbon as Mg}from"./meeting-text.js";import{speakerBreakdown as Lg,speakerTimeline as xg,formatTalkTime as hg,SPEAKER_SLOTS as Fg}from"./meeting-shape.js";import{isSpeakerImageValue as kg,speakerLabeller as yg}from"./meeting-shape.js";import{SORT_MODES as bg,SORT_LABELS as vg,sortStamp as wg,sortRecords as Bg,filterRecords as Gg,dayBucket as Hg,rowTime as Kg,groupRecords as Vg}from"./record-list.js";import{INSIGHT_KINDS as Xg,summarySections as Yg,insightKindOf as zg,meetingInsights as Jg,hasInsights as jg}from"./meeting-insights.js";import{demd as qg,NOTE_SECTIONS as Zg,noteSectionKind as $g,MOMENT_BADGES as eC,momentBadge as rC,parseMeetingNotes as oC,groupActionsByOwner as tC}from"./meeting-insights.js";import{PREF_SECTIONS as iC,PREF_SECTION_IDS as sC,DESKTOP_SECTION_IDS as nC,sectionSpec as SC,sectionValue as lC,pickSections as EC,applySections as mC,sectionHash as cC,mergeStamped as pC,changedSections as TC}from"./client-prefs.js";import{SETTINGS_GROUPS as _C,SETTINGS_PAGES as AC,REQUIREMENTS as RC,BOOKKEEPING_KEYS as fC,listRows as IC,findRow as uC,pageById as OC,groupById as NC,pagesOf as gC,quickRows as CC,breadcrumb as MC,linkTo as PC,linkToRow as LC,parseLink as xC,valueOf as hC,setValue as FC,effectiveValue as DC,describeValue as kC,SETTINGS_OPEN_DEFAULT as yC,settingsOpenMode as UC,searchSettings as bC,statusOf as vC,statusAll as wC,homeChecklist as BC,gateOf as GC,sectionOfRow as HC}from"./settings-registry.js";import{pointsAtGateway as VC,destinationFromEndpoint as WC,destinationFromAgent as XC,availableDestinations as YC,seedDestinations as zC,shouldSeedDestinations as JC,mergeEndpointDestinations as jC}from"./gateway-dests.js";import{McpClient as qC,mcpProvider as ZC}from"./mcp-client.js";import{mcpSharedSystem as eM,mcpInventorySystem as rM,sourceCitationSystem as oM,combineSystemPrompt as tM,toolStatus as aM,widgetAuthoringSystem as iM,vaultWidgetSystem as sM,wantsVaultGuidance as nM}from"./tool-hints.js";import{adaptiveToolRetryHint as lM,createAdaptiveToolPolicy as EM,isInvalidToolParametersResult as mM}from"./adaptive-tool-policy.js";import{getMcpProviders as pM,testMcpServer as TM,resetMcp as dM,mcpBackoff as _M}from"./mcp-manager.js";import{SIDELINE_COMMANDS as RM,BRINGBACK_COMMAND as fM,THREAD_TOOL_NAME as IM,SIDELINE_SLASH_ITEMS as uM,THREAD_TOOL_SPEC as OM,parseSideline as NM,parseBringBack as gM,resolveSidelineTarget as CM,threadManifest as MM,threadToolProvider as PM,readThread as LM,briefPrompt as xM,foldBackNote as hM,foldNotes as FM,nextSidelineIndex as DM,sourceOf as kM,noteUnits as yM,sidelinePath as UM,foldBackFor as bM,SIDELINE_TOOL_NAME as vM,SIDELINE_TOOL_SPEC as wM,sidelineToolProvider as BM}from"./sideline.js";import{WEATHER_TOOL_NAME as HM,WEATHER_TOOL_SYSTEM as KM,weatherToolProvider as VM,weatherFromSearch as WM}from"./weather-tool.js";import{DECIDE_TOOL_NAME as YM,RERANK_TOOL_NAME as zM,CAPABILITY_TOOLS_SYSTEM as JM,capabilityToolsProvider as jM}from"./capability-tools.js";import{openDecision as qM,distributionConfidence as ZM}from"./open-decision.js";import{IN_PROCESS_IDS as eP,inProcessView as rP,capabilityView as oP,choicePatch as tP,choiceNote as aP,inProcessPatch as iP}from"./runtime-in-process.js";import{renderContent as nP,toChatMessages as SP,toMultimodalMessages as lP,imageAttachmentsOf as EP,deferAttachedSources as mP,withSourceTool as cP,SOURCE_TOOL_SPEC as pP}from"./context-attachments.js";import{prefetchPlan as dP,prefetchAttachment as _P,lookupResult as AP,lookupLabel as RP,runResearchItem as fP,weatherPlace as IP,weatherFollowupPlace as uP,newsAsk as OP,pageAsk as NP,answeredByPrefetch as gP,webRedoAsk as CP,aboutOwnPast as MP,offeredSearch as PP,prefetchBudgetMs as LP}from"./prefetch.js";import{createFetchedStore as hP,withFetchedMemo as FP,fetchKey as DP,fetchTitle as kP,fetchedAsSources as yP,fetchedFacts as UP,defaultTtl as bP,exchangeOf as vP,FETCHED_TTL_MS as wP}from"./fetched.js";import{windowOf as GP,fitFor as HP,keepRecentFor as KP,minWindowFor as VP,isContextLimitError as WP,FIT_HEADROOM as XP,SMALL_WINDOW as YP,isSmallWindow as zP,SMALL_WINDOW_ROUNDS as JP}from"./context-window.js";import{planCompaction as QP,compactionPrompt as qP,compactionRecord as ZP,messagesAfter as $P,systemWithSummary as eL,compactable as rL,COMPACTION_SYSTEM as oL}from"./compaction.js";import{selectContext as aL}from"./context-select.js";import{withoutOwnInstructions as sL}from"./own-instructions.js";import{digest as SL,needsWhole as lL}from"./digest.js";import{planRetrieval as mL,toolsWanted as cL,worldAnswered as pL,worldPlanned as TL,toolPlan as dL,contextPlan as _L,historyContext as AL,HISTORY_NOTE as RL,placeItems as fL,planTurn as IL}from"./retrieval-plan.js";import{intentNeeds as OL,intentSchema as NL,intentPrompt as gL,intentFromReply as CL,intentItems as ML,wantsIntent as PL,wantsDecision as LL,decideIntent as xL,questionsIn as hL,partQueries as FL,MAX_PARTS as DL,EXPECTS as kL,expectsOf as yL}from"./turn-intent.js";import{figuresIn as bL,unsupportedFigures as vL,unsupportedNote as wL,groundingNote as BL,turnGroundingNote as GL}from"./answer-grounding.js";import{turnFlow as KL,turnFlowChart as VL,flowWorthDrawing as WL,stepAction as XL,stepState as YL}from"./turn-flow.js";import{runTurnPipeline as JL,finishTurn as jL,routeByRule as QL,defineLane as qL,listLanes as ZL,TURN_STAGES as $L}from"./turn-pipeline.js";import{gatherItems as rx,isMiss as ox,isWebSearch as tx,GATHER_LIMITS as ax}from"./turn-gather.js";import{TURN_EVENTS as sx,createTurnEvents as nx,activityOf as Sx,applyStateDelta as lx}from"./turn-events.js";import{QUESTION_PLAN_LIMITS as mx,SEARCH_UNAVAILABLE as cx,factSchema as px,factSchemaFor as Tx,partsOf as dx,plainEvidence as _x,evidenceFor as Ax,rankedEvidence as Rx,factPrompt as fx,fitsExpected as Ix,snapQuote as ux,standsOn as Ox,subjectsOf as Nx,factFromReply as gx,carried as Cx,againQuery as Mx,pointsBack as Px,dependsOn as Lx,partsPlan as xx,notFoundLines as hx,factsList as Fx,sourcesOf as Dx,finishAnswer as kx,gatherFacts as yx}from"./question-plan.js";import{createCassette as bx,gradeAnswer as vx,scoreRuns as wx,textKey as Bx,ReplayMiss as Gx}from"./turn-replay.js";import{asksIdentity as Kx,identitySystem as Vx,identityHint as Wx}from"./identity.js";import{splitBlocks as Yx,mergeNote as zx,syncNote as Jx,conflictsIn as jx,resolveConflict as Qx}from"./note-merge.js";import{STITCH_LIMITS as Zx,CUT_FINISH as $x,partChars as eh,splitForWindow as rh,partPrompt as oh,mapParts as th,reduceNotes as ah,fitAttachments as ih,isNone as sh,continuationMessages as nh,trimOverlap as Sh,withStitching as lh,CONTINUE_TEXT as Eh}from"./stitch.js";import{presenceFor as ch,presenceDelta as ph,reachOf as Th,withPresence as dh,presenceBlock as _h,roundCount as Ah,roundMinutes as Rh,PRESENCE_BUDGET_TOKENS as fh,PRESENCE_KINDS as Ih}from"./presence.js";import{PolicyError as Oh,POLICY_VERSION as Nh,POLICY_TOKEN_TYPE as gh,REDACTION_TIERS as Ch,LOCKABLE as Mh,FEATURES as Ph,PERMISSION_MODES as Lh,PRODUCT_HOSTS as xh,normalizeOrgPolicy as hh,endpointAllowed as Fh,modelAllowed as Dh,agentAllowed as kh,permissionMode as yh,routeAllowed as Uh,redactionTier as bh,egressAllowed as vh,settingLocked as wh,featureEnabled as Bh,applyPolicyToSettings as Gh,policyLabel as Hh,policyHash as Kh,verifyPolicyToken as Vh,globToRegExp as Wh}from"./policy.js";import{languageInstruction as Yh,RESPONSE_LANGUAGES as zh}from"./response-language.js";import{NOTE_TOOL_SPECS as jh,makeNoteToolExecutor as Qh}from"./note-tool.js";import{memoryToolProvider as Zh}from"./memory-tool.js";import{captureFromMessage as eF}from"./memory-capture.js";import{skillRunFromSkill as oF,skillPackageFiles as tF,filterMcpServersForSkill as aF,skillToolSystem as iF,skillHandle as sF,rankSkills as nF,skillCatalogSystem as SF}from"./skill-runtime.js";import{skillFileProvider as EF,SKILL_FILE_TOOL as mF,skillEntry as cF,skillDiscoveryProvider as pF}from"./skill-files.js";import{SKILL_DRAFT_SCHEMA as dF,MAX_SKILL_FILE_BYTES as _F,MAX_SKILL_PACKAGE_BYTES as AF,skillCreatorPrompt as RF,skillIdFrom as fF,admitPackage as IF,skillFromDraft as uF,packagesFromFiles as OF}from"./skill-creator.js";import{PATH_KIND as gF,FILES_TOOL as CF,checkAttachablePath as MF,secretReason as PF,isSecretPath as LF,pathAttachment as xF,describeAttachedPath as hF,describePathSize as FF,displayPath as DF,pathAttachmentsOf as kF,withAbsolutePaths as yF,attachedFilesProvider as UF,sniffType as bF,normalizePath as vF,collapseDots as wF,basenameOf as BF,SKIP_DIR_NAMES as GF}from"./attached-paths.js";import{EXTRACT_ROUTE as KF,EXTRACT_PROVIDER_ID as VF,MAX_DOCUMENT_BYTES as WF,PAGE_CHARS as XF,EXTRACT_TYPES as YF,validateExtractRequest as zF,validateExtractResponse as JF,paginateText as jF,gatewayExtractor as QF,extractorChain as qF}from"./extract-capability.js";import{MCP_REGISTRY_API as $F,MCP_CATALOG as eD,registryListUrl as rD,fetchMcpRegistryPage as oD,normalizeRegistryPage as tD,normalizeRegistryEntry as aD,mcpServerFromCatalogItem as iD}from"./mcp-registry.js";import{CE_SPECVERSION as nD,CE_TYPE_PREFIX as SD,CE_SOURCE_PREFIX as lD,rfc3339 as ED,ceSourceOf as mD,ceHostOf as cD,toCloudEvent as pD,fromCloudEvent as TD,toCloudEventLines as dD,fromCloudEventLines as _D,toCloudEventBatch as AD}from"./cloudevents.js";import{PUSH_LIMITS as fD,planEventPush as ID,ingestCloudEvents as uD,cursorOf as OD}from"./event-sync.js";import{eventStats as gD,projectYear as CD}from"./event-stats.js";import{SEALED_TYPE as PD,SEALED_VERSION as LD,SealError as xD,webCryptoSealer as hD,nodeSealer as FD,newDeviceKey as DD,sealBlob as kD,openBlob as yD,shredBlob as UD,isSealedBlob as bD,isShredded as vD}from"./blob-envelope.js";import{USAGE_RING_MAX as BD,COST_BASES as GD,usageRecord as HD,usageFromEvent as KD,usageFromOpenAi as VD,rollupKey as WD,applyUsage as XD,summarizeUsage as YD,formatTurnUsage as zD,describeTurnUsage as JD,promptTokensOf as jD}from"./usage.js";import{rateFor as qD,costFor as ZD,formatUsd as $D,PRICING_BASES as ek,PRICING_LABELS as rk,normalizePricing as ok,priceUsage as tk}from"./usage-pricing.js";import{FACTCHECK_SCHEMA as ik,FACTCHECK_VERDICTS as sk,lastClaimOf as nk,factcheckPrompt as Sk,factcheckVerdict as lk,factcheckKey as Ek}from"./cowriter-factcheck.js";import{createVoiceLoop as ck,VOICE_STATES as pk,MUTE_GRACE_MS as Tk,MAX_PENDING_CHARS as dk,CONTINUATION_WINDOW_MS as _k,ECHO_OVERLAP as Ak,ECHO_TAIL_MS as Rk,MIN_BARGE_IN_WORDS as fk,looksLikeEcho as Ik}from"./voice-loop.js";import{voiceStep as Ok,initialVoiceState as Nk,voiceSpeaker as gk,isFarewell as Ck,ANOTHER_VOICE as Mk}from"./voice-brain.js";import{speakStream as Lk,speakable as xk,SPOKEN_REPLY_HINT as hk}from"./speak-stream.js";import{createVad as Dk,lowBandEnergy as kk,pcmEnergy as yk,VAD_DEFAULTS as Uk}from"./voice-vad.js";import{HF_API as vk,TTS_ARCH_LABEL as wk,ttsArchOf as Bk,partitionTtsModels as Gk,modelSearchUrl as Hk,searchModels as Kk,normalizeModel as Vk,formatDownloads as Wk,describeSearchResult as Xk}from"./model-registry.js";import{SAMPLE_RATE as zk,MIN_SECONDS as Jk,TARGET_SECONDS as jk,MAX_SECONDS as Qk,PROMPT_TEXT as qk,sampleSeconds as Zk,sampleTooShort as $k,defaultVoiceName as ey,microphoneError as ry,webMedia as oy,startRecording as ty}from"./voice-sample.js";import{TIER_LABEL as iy,modelRows as sy,catalogStatus as ny,dtypePicker as Sy,voicePicker as ly,voiceListRows as Ey,diarizeRows as my,switchOutcome as cy,saveVoiceFailure as py,saveTimedOut as Ty,catalogUnavailable as dy}from"./voice-models.js";import{dictToText as Ay,textToDict as Ry}from"./redaction-dictionary.js";import{groupRuns as Iy,summarizeRun as uy,findRepeats as Oy,withCost as Ny,verdict as gy,toSanitizedReport as Cy}from"./run-details.js";import{parseMcpConfig as Py,parseArgsInput as Ly,argsToText as xy,parseEnvInput as hy,envToText as Fy,envLikeArgs as Dy}from"./mcp-config-import.js";import{mutableRef as yy,refreshArgs as Uy,canRefresh as by,describeRuntime as vy}from"./mcp-launcher.js";import{defaultMcpServers as By,isDefaultMcpServer as Gy}from"./default-mcp-servers.js";import{MONITOR_SOURCES as Ky,DEFAULT_MONITOR_PROFILE as Vy,monitorProfile as Wy,monitorWindowMs as Xy,monitorNeedsTools as Yy,filterMonitorTools as zy,recentFindings as Jy,describeMonitorProfile as jy}from"./monitor-profile.js";import{NOTHING_NEW as qy,isNothingNew as Zy,accumulates as $y,priorFindingsText as eU,deltaInstruction as rU,monitorPrompt as oU,applyMonitorReply as tU}from"./monitor-turn.js";import{defaultSkills as iU,meetingNotesSkill as sU}from"./default-skills.js";import{SURFACES as SU,FEATURES as lU,listFeatures as EU,featureIds as mU}from"./feature-map.js";import{ISSUE_REPO as pU,NEW_ISSUE_BASE as TU,ISSUE_SEARCH_API as dU,MAX_ISSUE_URL as _U,scrubReportText as AU,diagnosticsText as RU,buildBugReport as fU,newIssueUrl as IU,titleTerms as uU,issueSearchUrl as OU,matchIssues as NU,findExistingIssues as gU,issueCommentText as CU}from"./bug-report.js";import{WEB_RESEARCH_LIMITS as PU,WEB_TASK_DOMAINS as LU,researchAsk as xU,refineQueries as hU,parseSearchText as FU,cleanUrl as DU,pageKey as kU,passagesOf as yU,webResearch as UU,researchBrief as bU,researchCall as vU,runResearch as wU}from"./web-research.js";import{parseAmount as GU,moneyIn as HU,basisAt as KU,qualifierAt as VU,quoteAround as WU,offersIn as XU,rankOffers as YU,comparable as zU,basisLabel as JU,formatValue as jU,unverifiedAmounts as QU,quoteFormIn as qU}from"./offers.js";import{isSecretField as $U,maskSecretFields as eb,isPersonalField as rb,commitKind as ob,commitQuestion as tb,captchaIn as ab,captchaHandoff as ib,fenceUntrusted as sb,isFenced as nb}from"./page-guard.js";import{BROWSER_RELAY as lb,BROWSER_KINDS as Eb,validateBrowserCall as mb,validateBrowserAnnounce as cb,validateBrowserResult as pb,createBrowserRelay as Tb,browserRelaySystem as db}from"./browser-relay.js";export{za as ACCESS_LOG_MAX,Ya as ACCESS_LOG_VERSION,i as ACTOR_KINDS,Cd as AGENT_ID_RE,rp as AGENT_REF_RE,dR as ALLOW_ALL,a as ALL_TYPES,bR as AMBIENT_KINDS,mf as AMBIENT_MAX_WORDS,Mk as ANOTHER_VOICE,kN as API_BASE,Md as APPLIES_TO,Mp as ASK_TYPES,Ld as ASSISTANT_ID,In as ASSISTANT_NAME,II as AUTOCOMPLETE_MAX_TOKENS,fI as AUTOCOMPLETE_SYSTEM,uI as AUTOCOMPLETE_TEMPERATURE,FT as AUTONOMY,ii as AdapterError,xd as AgentError,An as AnalyzerError,TO as BACKUP_KDF_ITERATIONS,Up as BOARD_TOOL_NAME,fC as BOOKKEEPING_KEYS,Mt as BRIEF_STATES,fM as BRINGBACK_COMMAND,Eb as BROWSER_KINDS,lb as BROWSER_RELAY,Bc as BUDGET_DIMENSIONS,DI as BUG_REPORT_SLASH_ITEMS,qs as BUILTIN_TRIGGERS,Bn as BUILTIN_VOICE_INTENTS,pO as BackupError,wc as BudgetError,_n as CADENCES,JM as CAPABILITY_TOOLS_SYSTEM,lD as CE_SOURCE_PREFIX,nD as CE_SPECVERSION,SD as CE_TYPE_PREFIX,kT as CHECKS,Pt as CLAIM_KINDS,n as CLASSES,oO as CLOCK_TOLERANCE_MS,oL as COMPACTION_SYSTEM,cO as COMPRESSIONS,_c as COMPRESSION_MODES,_k as CONTINUATION_WINDOW_MS,Eh as CONTINUE_TEXT,tE as COOLDOWN_MS,GD as COST_BASES,HN as COUNTED,Tr as COWRITER_SYSTEM,dr as COWRITER_TEMPERATURE,o as CURRENT_VERSION,$x as CUT_FINISH,uN as DARK,FR as DATA_SCOPES,On as DAYPART_HOUR,YM as DECIDE_TOOL_NAME,Yd as DECLINE_REASONS,Ve as DEFAULT_API_ENGINES,bp as DEFAULT_ASK_TIMEOUT_MS,GR as DEFAULT_BLOCK_CHARS,Ac as DEFAULT_COMPRESSION,hT as DEFAULT_GATE,Ss as DEFAULT_INTERNAL_PATTERNS,fs as DEFAULT_LOCK_MS,LE as DEFAULT_MAX_FINISH_TRIES,BR as DEFAULT_MAX_MEMORIES,PE as DEFAULT_MAX_ROUNDS,A_ as DEFAULT_MIN_CALLS,Vy as DEFAULT_MONITOR_PROFILE,DO as DEFAULT_POLICY,KE as DEFAULT_SHIELD,VE as DEFAULT_STORE,St as DEFAULT_THRESHOLD,fn as DEFAULT_WAKE,Xm as DESCRIBE_ACTION,nC as DESKTOP_SECTION_IDS,Ak as ECHO_OVERLAP,Rk as ECHO_TAIL_MS,S as EFFECTS,l as EGRESS,Pd as EGRESS_CLASSES,mO as ENCRYPTED_TYPE,yN as ENDPOINTS,_o as ENGINES_REV,co as ENGINE_KINDS,dd as ENGINE_SPEC_KINDS,RS as ENTITIES_SCHEMA,UN as ENTITLEMENT_PUBLIC_JWK,AS as ENTITY_TYPES,fi as ENTRY_KINDS,VO as ENTRY_VERSION,t as EVENT_TYPES,zT as EXECUTIVE,FE as EXHAUSTED_NOTE,kL as EXPECTS,VF as EXTRACT_PROVIDER_ID,KF as EXTRACT_ROUTE,YF as EXTRACT_TYPES,XN as EntitlementError,E as EventError,ik as FACTCHECK_SCHEMA,sk as FACTCHECK_VERDICTS,Yi as FAILOVER_CAPABILITY_GAP,Xi as FAILOVER_CLASS_GAP,lE as FAILOVER_MAX_ATTEMPTS,BO as FAST_FLUSH_MS,GO as FAST_STREAK,Ph as FEATURES,lU as FEATURE_MAP,SU as FEATURE_SURFACES,vN as FEATURE_TIER,wP as FETCHED_TTL_MS,DS as FIELD_TYPES,CF as FILES_TOOL,Ip as FINDINGS_SCHEMA,up as FINDING_KINDS,Tm as FIND_ACTION,rc as FIND_DESCRIPTION,oc as FIND_RESIDENT,ec as FIND_TOOL_NAME,xE as FINISH_NUDGES,XP as FIT_HEADROOM,GN as FREE_LIMITS,uf as FRONT_PAGES,um as FUSED_BUDGET_MS,Im as FUSED_CANDIDATES,ax as GATHER_LIMITS,NI as GEARS,cI as GOAL_MIN_NEW,Zc as GRANTABLE,zA as GRANT_INFO,ep as GRANT_RE,vk as HF_API,RL as HISTORY_NOTE,Cm as HUB_TOOL_NAME,DT as HUMAN_FLAGS,$l as INPUT_PROGRESS_TOOLS,Xg as INSIGHT_KINDS,EI as INSTRUCTION_RE,ls as INTERNAL_PATTERN_CATALOG,eo as INVARIANTS,eP as IN_PROCESS_IDS,pU as ISSUE_REPO,dU as ISSUE_SEARCH_API,Hs as JOB_ACTIONS,gT as JOB_POST_ID_RE,NT as JOB_POST_STATUSES,QO as JOURNAL_BOUNDS,OT as JobPostError,KO as JournalError,Rs as KDF_HASH,As as KDF_ITERATIONS,pR as KernelError,Xd as LEDGER_ENTRY_KINDS,Wd as LEDGER_VERSION,IN as LIGHT,Yp as LIVE_RUN_STATUSES,Mh as LOCKABLE,hE as LOOPING_NUDGE,hi as LOOP_KINDS,Gu as LibraryError,Fi as LoopError,Ft as MAX_BRIEF_CHARS,ht as MAX_BRIEF_RECORDS,Lt as MAX_CLAIMS,xt as MAX_CLAIM_REFS,un as MAX_COMMANDS_PER_DELTA,fA as MAX_DEPTH,WF as MAX_DOCUMENT_BYTES,gs as MAX_ENTRIES,Jt as MAX_EXCERPTS,jt as MAX_EXCERPT_CHARS,tr as MAX_GRAPH_NODES,_U as MAX_ISSUE_URL,JT as MAX_JOBS_PER_ROUND,xR as MAX_MATCHES,vR as MAX_MEMORY_CHARS,Os as MAX_NOTE_CHARS,Tg as MAX_NOTE_IMAGE_BYTES,DL as MAX_PARTS,dk as MAX_PENDING_CHARS,jT as MAX_ROUNDS,Qk as MAX_SECONDS,Ns as MAX_SECRET_CHARS,_F as MAX_SKILL_FILE_BYTES,AF as MAX_SKILL_PACKAGE_BYTES,lt as MAX_SUBJECTS,Et as MAX_SUBJECT_CHARS,RA as MAX_SUBTASKS,gS as MAX_SUGGESTIONS,CS as MAX_SUGGESTION_CHARS,zt as MAX_SYNTHESIS_CLAIMS,au as MAX_TAGS,tu as MAX_TAG_LENGTH,us as MAX_TITLE_CHARS,Bu as MAX_TITLE_LEN,Nu as MAX_TITLE_LENGTH,nS as MAX_TOPICS,SS as MAX_TOPIC_CHARS,eD as MCP_CATALOG,$F as MCP_REGISTRY_API,Tl as MCP_SIGN_IN_CODE,iR as MCP_TOOL_NAME,yR as MEMORY_KINDS,UR as MEMORY_KIND_NAMES,KR as MEMORY_TOOL_SPEC,VR as MEMORY_UPCASTERS,kR as MEMORY_VERSION,Qc as MERGE_POLICIES,fk as MIN_BARGE_IN_WORDS,e_ as MIN_FIT,wR as MIN_MEMORY_CHARS,Jk as MIN_SECONDS,IA as MIN_TAKEUP_FIT,Ks as MISSED_POLICIES,eC as MOMENT_BADGES,Ky as MONITOR_SOURCES,Tk as MUTE_GRACE_MS,SR as ManifestError,qC as McpClient,WR as MemoryError,Ia as NEAR_TITLE_DISTANCE,TU as NEW_ISSUE_BASE,hI as NEW_THREAD_SLASH_ITEMS,H as NOTE_ACTIONS,W as NOTE_ACTION_ERRORS,K as NOTE_ACTION_ORDER,V as NOTE_ACTION_TEMPERATURE,X as NOTE_COMMANDS,z as NOTE_COMMAND_MAX_TOKENS,Y as NOTE_COMMAND_TEMPERATURE,pg as NOTE_IMAGE_SCHEME,dg as NOTE_IMAGE_TYPES,Zg as NOTE_SECTIONS,jh as NOTE_TOOL_SPECS,qy as NOTHING_NEW,Zl as OBSERVATION_TOOLS,cN as OMNI_GRAMMAR,mN as OMNI_MODES,he as PACER_DEFAULTS,XF as PAGE_CHARS,ON as PALETTES,Hl as PARALLEL_LOCAL_RE,gF as PATH_KIND,Na as PDF_MAX_CHARS,YE as PERMISSION_ANSWERS,XE as PERMISSION_EVENT,Lh as PERMISSION_MODES,zE as PERMISSION_TIMEOUT_MS,JE as PERMISSION_TOOL_NAME,DN as PLANS,Mr as PLAN_AUTHORS,Lr as PLAN_DECOMPOSE_MAX_TOKENS,Pr as PLAN_DECOMPOSE_SYSTEM,xr as PLAN_DECOMPOSE_TEMPERATURE,qc as PLAN_MODES,Cr as PLAN_ROLES,hr as PLAN_SECTION_MAX_TOKENS,Fr as PLAN_SECTION_TEMPERATURE,gh as POLICY_TOKEN_TYPE,Nh as POLICY_VERSION,gp as POST_KINDS,Cp as POST_STATUSES,iC as PREF_SECTIONS,sC as PREF_SECTION_IDS,fh as PRESENCE_BUDGET_TOKENS,Ih as PRESENCE_KINDS,ek as PRICING_BASES,rk as PRICING_LABELS,xh as PRODUCT_HOSTS,mT as PROJECT_ID_RE,WT as PROJECT_JOBS_SCHEMA,XT as PROJECT_REVIEW_SCHEMA,QT as PROJECT_RUN_STATUSES,ET as PROJECT_STATUSES,qk as PROMPT_TEXT,qt as PROPOSAL_STATES,wN as PRO_FEATURES,Sl as PUBLIC_REGISTRY,fD as PUSH_LIMITS,Oh as PolicyError,lT as ProjectError,YT as ProjectRunError,mx as QUESTION_PLAN_LIMITS,Br as REACH,WN as RECHECK_INTERVAL_MS,Pc as RECIPE_MODES,Dc as RECIPE_TOOL_NAME,pd as RECORD_ENGINE_KINDS,wu as RECORD_KINDS,RO as RECORD_TYPE,$d as RECRUIT_SCHEMA,Ch as REDACTION_TIERS,ft as REDACTION_TOKEN_TYPES,Xn as REFINEMENT_SCHEMA,d as REF_KINDS,no as REGISTRY_STATES,TR as REQUIRED_PLUGINS,RC as REQUIREMENTS,zM as RERANK_TOOL_NAME,_ as RESOLUTION,zh as RESPONSE_LANGUAGES,kS as RESPONSE_MODES,Ie as RESULTS_PER_ENGINE,HE as RESULT_TOOL_NAME,zp as RESUMABLE_RUN_STATUSES,ci as RETRIEVAL_TOOLS,Bm as REVEAL,md as ROLE_KINDS,jc as ROLE_MODES,QA as ROSTER_KINDS,DE as ROUND_SEPARATOR,_d as ROUTE_PREFERS,J_ as RUN_STATUSES,Mc as RecipeError,Gx as ReplayMiss,Ji as RouterError,Ts as RuleError,HR as SAME_FACT,zk as SAMPLE_RATE,Bs as SCHEDULE_KINDS,u_ as SCM_KINDS,s as SCOPE_KINDS,Ed as SCORECARD_ENTRY_KINDS,cd as SCORECARD_VERSION,PD as SEALED_TYPE,LD as SEALED_VERSION,be as SEARCH_API_PRESETS,fe as SEARCH_ENGINES,Qe as SEARCH_STATUS,cx as SEARCH_UNAVAILABLE,iN as SEGMENT_RE,ut as SELF_LABELS,_C as SETTINGS_GROUPS,yC as SETTINGS_OPEN_DEFAULT,AC as SETTINGS_PAGES,NN as SHAPE,RM as SIDELINE_COMMANDS,uM as SIDELINE_SLASH_ITEMS,vM as SIDELINE_TOOL_NAME,wM as SIDELINE_TOOL_SPEC,xf as SKILL_CONTEXTS,dF as SKILL_DRAFT_SCHEMA,kf as SKILL_FILE_KINDS,mF as SKILL_FILE_TOOL,hf as SKILL_HISTORY_SCOPES,Lf as SKILL_MANIFEST_VERSION,Ff as SKILL_MCP_MODES,Df as SKILL_TRUST,yf as SKILL_UPCASTERS,Qf as SKILL_VARS,qf as SKILL_VAR_NAMES,GF as SKIP_DIR_NAMES,xI as SLASH_TYPING_RE,wO as SLOW_FLUSH_MS,kO as SLOW_POLICY,YP as SMALL_WINDOW,JP as SMALL_WINDOW_ROUNDS,JA as SOLO_BUDGET,vg as SORT_LABELS,bg as SORT_MODES,lR as SOURCES,pP as SOURCE_TOOL_SPEC,Nf as SOURCE_TRUST,ua as SPAN_MIN_TERMS,Fg as SPEAKER_SLOTS,hk as SPOKEN_REPLY_HINT,Zp as STALLED_AFTER_MS,wd as STARTER_AGENTS,op as STARTER_TEAMS,G_ as STEP_MAX_CHARS,Zx as STITCH_LIMITS,nt as SUBJECT_KINDS,MS as SUGGESTIONS_SCHEMA,Zt as SUPERSEDE_OVERLAP,ps as SUPPRESSED,ce as SWARM_ROLES,Wt as SYNTHESIS_SCHEMA,Vs as ScheduleError,xD as SealError,ve as SearchApiError,po as SearchEngineError,Uf as SkillManifestError,gf as SkillSourceError,sI as SkillVarError,yS as StructuredError,tO as SyncError,jk as TARGET_SECONDS,H_ as TASK_TRANSCRIPT_MAX_CHARS,BN as TEAM_FEATURES,rA as TEAM_MANUAL,pp as TEAM_PLAN_SCHEMA,jA as TEAM_SHAPES,eA as TEAM_TOOL_NAME,fN as THEMES,Op as THREAD_KINDS,Np as THREAD_STATUSES,IM as THREAD_TOOL_NAME,OM as THREAD_TOOL_SPEC,iy as TIER_LABEL,gu as TITLE_RULES_VERSION,gN as TOKEN_NAMES,CN as TOKEN_ROLES,Fl as TOKEN_SKEW_MS,lS as TOPICS_SCHEMA,Da as TRANSCRIPT_MAX_CHARS,Gs as TRIGGER_KINDS,wk as TTS_ARCH_LABEL,sx as TURN_EVENTS,$L as TURN_STAGES,Jc as TeamError,z_ as TeamRunError,ho as ToolGroupError,aE as UNAVAILABLE_REASONS,Ou as UNTITLED_MEETING,Vr as UPCASTERS,bN as UPGRADE_URL,BD as USAGE_RING_MAX,iS as UTTERANCE_DANGLING_MS,aS as UTTERANCE_SETTLE_MS,Uk as VAD_DEFAULTS,_s as VAULT_VERSION,pk as VOICE_STATES,Is as VaultError,Nn as VoiceIntentError,go as WEATHER_HOST,Co as WEATHER_TIMEOUT_MS,HM as WEATHER_TOOL_NAME,KM as WEATHER_TOOL_SYSTEM,PU as WEB_RESEARCH_LIMITS,nc as WEB_SEARCH_SPEC,ic as WEB_SEARCH_TOOL_NAME,sc as WEB_SEARCH_TOOL_SYSTEM,LU as WEB_TASK_DOMAINS,rt as WIDGET_SURFACES,zd as WITHDRAW_AFTER,nA as WORKLOG_KINDS,$c as WORK_GRANTS,gI as WRITER_PREFS,CI as WRITER_PREF_DEFAULTS,Mo as WeatherError,Fa as YOUTUBE_HOSTS,Di as abortCause,MP as aboutOwnPast,ea as accept,$y as accumulates,Ym as actionMenu,Sx as activityOf,bO as adaptProfile,lM as adaptiveToolRetryHint,Su as addTag,NE as addUsage,sd as adjustSummary,IF as admitPackage,lO as advanceBases,al as adviceText,Mx as againQuery,kh as agentAllowed,UA as agentColor,Hd as agentFromForm,yA as agentHue,bA as agentInitials,kA as agentKind,oe as agentMentionAt,dt as aliasMap,gP as answeredByPrefetch,ME as anthropicTranscript,Ke as apiEngine,We as apiEnginesFrom,Je as apiTrialVerdict,AT as applyAll,f_ as applyCard,pr as applyEdits,ZO as applyEntry,tU as applyMonitorReply,Gh as applyPolicyToSettings,mC as applySections,lx as applyStateDelta,XD as applyUsage,_e as appoint,Oo as areaLabel,Li as argsShape,xy as argsToText,Kx as asksIdentity,_f as asksOnlyAboutPage,kd as assistantAgent,UF as attachedFilesProvider,mo as attemptOrder,od as attest,Pl as authHeader,Nl as authorizeUrl,YC as availableDestinations,hO as backupFromRecords,yl as bareToolName,BF as basenameOf,KU as basisAt,JU as basisLabel,PO as bestCodec,Gd as blankAgent,h_ as blankConnection,IT as blankJobPost,aT as blankProject,ap as blankTeam,ql as blockedToolResult,Ap as boardText,Fp as boardToolProvider,Dp as boardToolSpec,sN as boundSegments,M_ as branchFor,MC as breadcrumb,cp as breakCycles,kt as briefId,bt as briefLinks,xM as briefPrompt,Ut as briefTerms,yt as briefToText,db as browserRelaySystem,Ge as buildApiRequest,fU as buildBugReport,zm as buildGroupDispatchSpec,ar as buildNoteGraph,xa as buildPdfDocument,ue as buildSearchUrl,Vm as buildToolset,Ti as buildTrajectory,Va as buildTranscriptDocument,KA as builtinOrg,qN as can,Us as canAddEntry,_T as canJobPostTransition,tT as canProjectTransition,by as canRefresh,Ul as canRunConcurrently,jr as canSatisfy,qR as candidatesFrom,ZT as canonical,Rl as canonicalResource,jM as capabilityToolsProvider,oP as capabilityView,ib as captchaHandoff,ab as captchaIn,Ua as captionTracksFromPlayerResponse,eF as captureFromMessage,wA as cardNumbers,R_ as cardOverride,Cx as carried,p_ as carveBudget,ny as catalogStatus,dy as catalogUnavailable,lN as catchUpPlan,N as causesAreWellFormed,cD as ceHostOf,mD as ceSourceOf,TC as changedSections,MF as checkAttachablePath,$r as checkInvariants,vt as checkKnowledgeInvariants,YN as checkoutUrl,Wp as checkpointFrom,B as chipText,aP as choiceNote,tP as choicePatch,Yt as claimsFromSynthesis,Fe as classifyAnswer,rE as classifyFailure,Te as classifyModel,os as classifySource,am as claudePermissionResponse,Cu as cleanTitle,DU as cleanUrl,OI as clipCompletion,b_ as clipMessage,mn as clipText,U_ as clipTranscript,WS as coerce,OS as coerceEntities,wF as collapseDots,tM as combineSystemPrompt,Z as commandLineAt,rS as commandLooksFinished,Ln as commandsFromSegments,ob as commitKind,tb as commitQuestion,BE as compactValue,rL as compactable,qP as compactionPrompt,ZP as compactionRecord,zU as comparable,O as compareEvents,OR as compileQuery,gn as compileWake,w as composerChips,cc as compressToolSpec,pc as compressToolSpecs,Tc as compressionStats,C_ as connectionFor,F_ as connectionFromForm,QR as containment,Dt as contentHash,_L as contextPlan,nh as continuationMessages,w_ as continuationNote,JI as continueList,ta as converge,ZD as costFor,Qa as createAccessLog,ai as createAdapterRegistry,EM as createAdaptiveToolPolicy,dn as createAnalyzerRegistry,kp as createAnswerBox,p as createAppender,ao as createBlobStore,dp as createBoard,Tb as createBrowserRelay,yc as createBudget,RE as createCallRunner,bx as createCassette,mi as createCitationCollector,B_ as createControl,De as createEnginePacer,hP as createFetchedStore,HO as createJournal,mR as createKernel,to as createLogStore,nR as createManifest,oo as createMemoryAdapter,oE as createModelHealth,wi as createModelRouter,nm as createPermissionDesk,so as createRegistry,yE as createResultStore,cs as createRuleEngine,wp as createRunCache,qO as createSegment,Mf as createSkillSourceRegistry,TI as createSpendMeter,Pi as createStepRecorder,YS as createStructuredStream,xo as createToolGroupRegistry,Yl as createToolLoopGuard,Qs as createTriggerRegistry,nx as createTurnEvents,Mi as createTurnRunner,tS as createUtteranceGate,Dk as createVad,Cs as createVault,vn as createVoiceIntentRegistry,ck as createVoiceLoop,L_ as credentialEnv,PN as cssVarName,OD as cursorOf,Hg as dayBucket,iO as decide,xL as decideIntent,l_ as decideRecruit,Hf as declaredAccess,_O as decryptBackup,mg as defaultImagePolicy,Eg as defaultLinkPolicy,By as defaultMcpServers,k as defaultModelId,iU as defaultSkills,bP as defaultTtl,wn as defaultVoiceIntents,ey as defaultVoiceName,mP as deferAttachedSources,ti as defineAdapter,Dd as defineAgent,nn as defineJob,dT as defineJobPost,qL as defineLane,xi as defineLoop,Tn as defineMeetingAnalyzer,bi as defineMiddleware,Ui as defineModel,oT as defineProject,vi as defineRouteStrategy,ms as defineRule,US as defineSchema,we as defineSearchApi,lo as defineSearchEngine,Cf as defineSkillSource,Hc as defineTeam,Lo as defineToolGroup,js as defineTrigger,bn as defineVoiceIntent,rU as deltaInstruction,qg as demd,Mg as densityRibbon,Lx as dependsOn,P as dequeue,fO as deriveBackupKey,Gt as deriveBrief,Ht as deriveBriefs,Ps as deriveKey,Du as deriveMeetingTitle,ju as deriveTitle,Ud as describeAgent,hF as describeAttachedPath,sA as describeCall,x_ as describeConnection,Od as describeEngine,jy as describeMonitorProfile,FF as describePathSize,$E as describePermission,Fc as describeRecipeForApproval,zc as describeRole,vy as describeRuntime,bS as describeSchema,Xk as describeSearchResult,kC as describeSettingValue,wE as describeShape,jp as describeSpend,$_ as describeTeamForApproval,hA as describeTeamShape,uE as describeToolCall,JD as describeTurnUsage,XC as destinationFromAgent,WC as destinationFromEndpoint,RU as diagnosticsText,my as diarizeRows,Ay as dictToText,oa as diffProposal,SL as digest,Ll as discoverMcpAuth,Ri as displayName,DF as displayPath,ZM as distributionConfidence,eu as docStats,_I as draftSeparator,Kt as driftedRefs,Nc as dryRunRecipe,X_ as dryRunTeam,Sy as dtypePicker,Sn as dueJobs,pa as duplicateTitles,At as earnsBrief,Un as editDistance,cr as editKey,LT as effectiveGate,$o as effectiveGrants,DC as effectiveSettingValue,Bl as effectiveToolName,ir as egoGraph,vh as egressAllowed,Pp as emptyBoardState,sT as emptyProjectRecord,Hp as emptyRun,UI as enabledSkills,dO as encryptBackup,Fh as endpointAllowed,Sd as engineKey,ud as engineKeyOf,er as engineLabel,yd as engineOf,Me as engineOrder,Id as engineRef,r_ as engineRow,o_ as engineRows,oR as engineStrip,i_ as engineWorth,IS as entitiesFormat,fS as entitiesPrompt,NS as entitiesStream,Fs as entryMeta,JO as entryStamp,Dy as envLikeArgs,Fy as envToText,yo as equipmentFor,ki as errorFacts,Zm as estimateTokens,n_ as evaluatorPrompt,gD as eventStats,Ax as evidenceFor,vP as exchangeOf,Ic as expandRecipe,CR as expandReplacement,aI as expandSkillPrompt,yL as expectsOf,ol as explainInstallFailure,JS as explainMcpError,sg as exportDevicePublicKey,dA as extendDependents,TN as extractFilters,ts as extractUrls,qF as extractorChain,gx as factFromReply,fx as factPrompt,px as factSchema,Tx as factSchemaFor,Ek as factcheckKey,Sk as factcheckPrompt,lk as factcheckVerdict,Fx as factsList,SE as failoverExhausted,Vi as failoverOrder,Bh as featureEnabled,mU as featureIds,sb as fenceUntrusted,DP as fetchKey,oD as fetchMcpRegistryPage,hl as fetchMcpToken,kP as fetchTitle,yP as fetchedAsSources,UP as fetchedFacts,bL as figuresIn,Au as filterByTags,Ai as filterEntries,aF as filterMcpServersForSkill,zy as filterMonitorTools,q as filterNoteActions,Gg as filterRecords,D as filterSections,mr as filterTypoEdits,mm as findActionArgs,tc as findDispatchProvider,gU as findExistingIssues,GS as findJson,NR as findMatches,Zu as findRecordRefs,Oy as findRepeats,uC as findRow,ie as findSkillByName,se as findTargetByName,lm as findTools,Em as findToolsResult,Mn as findWakeCommand,Rp as findingsInstruction,xp as findingsOf,kx as finishAnswer,jL as finishTurn,id as fit,ih as fitAttachments,HP as fitFor,Ix as fitsExpected,Sp as fixedPlan,WL as flowWorthDrawing,bM as foldBackFor,hM as foldBackNote,Lp as foldBoard,FM as foldNotes,nT as foldProject,Kp as foldRun,SO as forkConflict,Za as formatBytes,Wk as formatDownloads,RR as formatReport,fa as formatSurvey,cu as formatTag,du as formatTagQuery,hg as formatTalkTime,Ha as formatTimestamp,Ka as formatTranscript,zD as formatTurnUsage,$D as formatUsd,jU as formatValue,uo as formatWeather,J as frameNoteAction,KN as freeCap,vs as fromB64,TD as fromCloudEvent,_D as fromCloudEventLines,If as frontPageInstruction,ff as frontPagesAskedAbout,tt as fuseRRF,Am as fusedRanker,xT as gateAllows,QF as gatewayExtractor,tl as gatewayNotBackAdvice,yx as gatherFacts,rx as gatherItems,ig as generateDeviceKey,pM as getMcpProviders,Ro as getWeather,eS as gistOpening,$n as gistText,Wh as globToRegExp,pI as goalDraftAllowed,vx as gradeAnswer,Xc as grantAllows,WA as grantChoices,XA as grantsFromChoices,ko as grantsNeededFor,nr as graphStats,AI as groundingBlock,BL as groundingNote,tC as groupActionsByOwner,NC as groupById,F as groupModels,Vg as groupRecords,Iy as groupRuns,Ga as groupSegments,jg as hasInsights,wo as hasSubstance,nu as hasTag,Tu as hasTagTerms,AL as historyContext,pA as holdsGrants,BC as homeChecklist,of as homePlace,as as hostMatches,vo as housekeepingTarget,gm as hubSpec,gO as identityCodec,Wx as identityHint,Vx as identitySystem,EP as imageAttachmentsOf,iP as inProcessPatch,rP as inProcessView,jI as indentSelection,uD as ingestCloudEvents,To as inheritEngineDefaults,Nk as initialVoiceState,zg as insightKindOf,qS as installHintFor,mI as instructionOnLine,CL as intentFromReply,ML as intentItems,OL as intentNeeds,gL as intentPrompt,NL as intentSchema,AN as isActionable,No as isAmbiguousLocation,yu as isBetterTitleSource,VA as isBuiltin,bl as isCacheable,WP as isContextLimitError,Gy as isDefaultMcpServer,AO as isEncryptedBackup,zO as isEntry,Ck as isFarewell,nb as isFenced,Zn as isFillerSentence,Mu as isGenericTitle,mM as isInvalidToolParametersResult,Bo as isLocalHelper,ks as isLocked,Ql as isLoopableTool,ox as isMiss,Y_ as isModelUnavailable,sh as isNoneNote,VS as isNothing,Zy as isNothingNew,QE as isPermissionTool,rb as isPersonalField,Uo as isPleasantry,jN as isPro,M as isQueued,Vu as isRecordId,It as isRedactionToken,R as isRef,Ne as isResultHost,Xp as isResumable,bf as isSafeSkillPath,bD as isSealedBlob,OO as isSealedRecord,Le as isSearchPage,$U as isSecretField,LF as isSecretPath,Ot as isSelfLabel,nO as isSettled,vD as isShredded,yI as isSkillEnabled,zP as isSmallWindow,TE as isSourceGateError,kg as isSpeakerImageValue,QS as isStaleMcpSession,Tt as isSubjectCandidate,Go as isSystemModel,QN as isTeam,YO as isTombstone,c as isValidEvent,YR as isValidMemory,Xu as isValidStoredRecord,tx as isWebSearch,ya as isYouTubeUrl,CU as issueCommentText,OU as issueSearchUrl,s_ as jobApplications,TA as jobFromSubtask,uT as jobPostFromForm,wT as jobResults,RT as jobToRole,ln as jobsForEvent,KT as jobsPrompt,KP as keepRecentFor,NO as keyCache,_i as lanesOf,Yh as languageInstruction,nk as lastClaimOf,Lm as lastUserText,Wo as layoutFlowchart,Jd as ledgerKey,og as licenseFromPayload,Ho as lightestLocalHelper,SI as lineAt,u as linearize,ga as linesFromItems,df as linkAttachments,aa as linkClaims,$u as linkRecordRefs,PC as linkTo,LC as linkToRow,ni as linkifyCitations,pf as linksToRead,rI as lintSkillPrompt,lr as lintText,EU as listFeatures,ZL as listLanes,IC as listRows,ys as lockedSummary,Ik as looksLikeEcho,La as looksScanned,RP as lookupLabel,AP as lookupResult,kk as lowBandEnergy,ja as makeAccessEvent,qm as makeDispatchProvider,ed as makeEntry,jm as makeGroupDispatchExecutor,WO as makeJournalEntry,Qd as makeLedgerEntry,Qh as makeNoteToolExecutor,Dm as makePromptedTranscript,Ku as makeRecordId,A as makeRef,Qi as makeSourceStore,qa as makeStorageTier,Nm as makeToolHub,qi as manifestText,Oc as mapInput,th as mapParts,sf as markUsed,li as markdownUrl,eb as maskSecretFields,$R as matchForForget,gR as matchIndexFor,NU as matchIssues,wI as matchSlashRecipe,vI as matchSlashSkill,GI as matchSlashTeam,cn as matchSummary,_u as matchesTagFilter,_M as mcpBackoff,aR as mcpDispatchProvider,rM as mcpInventorySystem,ZC as mcpProvider,iD as mcpServerFromCatalogItem,eM as mcpSharedSystem,cR as meetDecisions,is as meetReach,en as meetingEndedTrigger,Jg as meetingInsights,sU as meetingNotesSkill,$s as meetingStartedTrigger,Uu as meetingTitlePrompt,af as memoryBlock,zR as memoryKey,Zh as memoryToolProvider,Sf as memoryToolSystem,ne as mentionAnswerPrefix,da as mentionsFrom,jC as mergeEndpointDestinations,Ce as mergeEngineResults,zx as mergeNote,Nr as mergeResearchLanes,oN as mergeSegments,ae as mergeSkillPrompt,pC as mergeStamped,y_ as mergeTranscript,$P as messagesAfter,k_ as messagesFor,ry as microphoneError,VP as minWindowFor,$S as missingCommandIn,ZS as missingCommandMessage,PA as missingStarters,Be as missingVars,Dh as modelAllowed,sy as modelRows,Hk as modelSearchUrl,y as modelSummary,rC as momentBadge,HU as moneyIn,Wn as monitorIntent,Yy as monitorNeedsTools,Wy as monitorProfile,oU as monitorPrompt,Xy as monitorWindowMs,L as moveQueued,it as multiSearch,yy as mutableRef,t_ as needForJob,Gf as needsBridge,vl as needsConfirmation,tg as needsRecheck,tf as needsWhere,lL as needsWhole,DD as newDeviceKey,IU as newIssueUrl,Og as newNoteImageId,v_ as newSteps,OP as newsAsk,Xs as nextFireAt,DM as nextSidelineIndex,zs as nextWakeAt,MO as nodeCodec,nl as nodeSatisfies,FD as nodeSealer,iE as normModelName,Fd as normalizeAgent,bc as normalizeBudget,jd as normalizeCall,N_ as normalizeConnection,nd as normalizeEngine,Rd as normalizeEngineSpec,PT as normalizeGate,Wc as normalizeGrants,PI as normalizeIntent,TT as normalizeJobPost,XR as normalizeMemory,Vk as normalizeModel,hh as normalizeOrgPolicy,vF as normalizePath,el as normalizePlatform,Ad as normalizePolicy,ok as normalizePricing,rT as normalizeProject,sa as normalizeRecord,na as normalizeRecords,aD as normalizeRegistryEntry,tD as normalizeRegistryPage,lA as normalizeRequest,ld as normalizeScm,Jf as normalizeSkill,kn as normalizeSpeech,Wu as normalizeStoredRecord,mt as normalizeSubject,iu as normalizeTag,su as normalizeTags,Vc as normalizeTeam,TS as normalizeTopic,dS as normalizeTopics,gE as normalizeUsage,MI as normalizeWriterPrefs,hx as notFoundLines,Q as noteActionItems,j as noteActionLabel,jx as noteConflictsIn,_g as noteImageId,Rg as noteImageIds,Ag as noteImageRef,fg as noteImageRefs,Vn as noteIntent,$g as noteSectionKind,yM as noteUnits,il as npmInstallCommand,ZA as observeInbox,VN as observeSince,$A as observeStrip,En as occurrenceKey,Ys as occurrencesBetween,Pe as offTopic,PP as offeredSearch,XU as offersIn,cm as oneLiner,CE as openAiTranscript,yD as openBlob,qM as openDecision,xs as openEntry,uO as openRecord,Ca as orderLines,Kf as originLabel,vf as originOf,ug as orphanNoteImages,ca as orphanRecords,YI as outlineOf,pm as overlapRank,SN as overlayEntries,jS as packageFromArgs,OF as packagesFromFiles,NP as pageAsk,OC as pageById,Af as pageInstruction,kU as pageKey,Pa as pageTextFromItems,gC as pagesOf,jF as paginateText,MN as paletteFor,Ma as paragraphsFromLines,Gl as parallelEligible,re as parseAgentMention,GU as parseAmount,Ly as parseArgsInput,_l as parseAuthChallenge,wt as parseBriefText,gM as parseBringBack,kI as parseBugCommand,hn as parseClock,Pn as parseCommand,Js as parseCron,xn as parseDuration,uS as parseEntities,hy as parseEnvInput,S_ as parseEvaluation,_p as parseFindings,Vo as parseFlowchart,GT as parseJobs,fR as parseJsonl,xC as parseLink,zI as parseListItem,Py as parseMcpConfig,oC as parseMeetingNotes,gg as parseMeetingText,FI as parseNewThread,Dn as parseNumberWords,pN as parseOmni,lp as parsePlan,kr as parsePlanTasks,Hu as parseRecordId,Jn as parseRefinement,g_ as parseRemote,HT as parseReview,FU as parseSearchText,aN as parseSegmentName,NM as parseSideline,El as parseSignInPrompt,te as parseSkillMention,eI as parseSkillVars,XS as parseStructured,xS as parseSuggestions,pu as parseTagQuery,Ba as parseTimedText,bu as parseTitleResponse,ym as parseToolCalls,pS as parseTopics,Io as parseWeather,Fn as parseWhen,ka as parseYouTubeUrl,eh as partChars,oh as partPrompt,FL as partQueries,Gk as partitionTtsModels,dx as partsOf,xx as partsPlan,yU as passagesOf,Xe as patchApiEntries,xF as pathAttachment,kF as pathAttachmentsOf,yk as pcmEnergy,C as pendingQueue,rm as permissionAllowed,em as permissionAnswer,sm as permissionIcon,ZE as permissionKeys,im as permissionLine,yh as permissionMode,qE as permissionRequestFromClaude,jE as permissionToolSpec,rn as personJoinedTrigger,di as phasesOf,on as phraseTrigger,va as pickCaptionTrack,UO as pickProfile,ge as pickResults,EC as pickSections,Wi as pinnedOrderOf,fL as placeItems,_x as plainEvidence,vr as planAttribution,br as planBody,QP as planCompaction,ID as planEventPush,JN as planLabel,zN as planOf,Ur as planParts,at as planQueries,mL as planRetrieval,Dr as planSectionSystem,sO as planSync,yr as planTitleFor,Vl as planToolRound,IL as planTurn,Ep as plannerPrompt,VC as pointsAtGateway,Px as pointsBack,vO as policyFor,Kh as policyHash,Hh as policyLabel,Kd as poolFor,Ki as preferenceFor,_P as prefetchAttachment,LP as prefetchBudgetMs,dP as prefetchPlan,_h as presenceBlock,ph as presenceDelta,ch as presenceFor,tk as priceUsage,eU as priorFindingsText,qp as priorWorkFor,ri as projectChain,iT as projectFromForm,ST as projectProgress,CD as projectYear,x as promoteQueued,CA as promoteRoles,Oi as promptEntries,jD as promptTokensOf,km as promptedToolsSystem,Fm as promptedTranscript,m_ as proposalFromNeeds,c_ as proposalToAgent,$t as propose,nf as pruneMemories,VU as qualifierAt,an as questionTrigger,hL as questionsIn,CC as quickRows,WU as quoteAround,qU as quoteFormIn,_m as rankFused,Ee as rankLinkTargets,YU as rankOffers,Or as rankResearchCards,nF as rankSkills,Rt as rankSubjects,Rx as rankedEvidence,qD as rateFor,Th as reachOf,Gr as reachRank,Hr as reachSatisfies,He as readApiResponse,Il as readAuthServerMetadata,Ol as readRegistration,fl as readResourceMetadata,$i as readSource,LM as readThread,Cl as readTokenResponse,Fu as readableWhen,fT as readyJobs,ef as recall,tm as recallPermission,Jy as recentFindings,BI as recipeInvocationText,uc as recipeParams,xc as recipeToolProvider,hc as recipeToolSpec,ZR as reconcile,Eo as reconcileEngines,xO as recordsFromBackup,T_ as recruitEvents,E_ as recruitForRun,d_ as recruitJob,Ja as redactAccessArgs,la as redactedTokensIn,Ea as redactionCost,bh as redactionTier,ah as reduceNotes,hU as refineQueries,qn as refineSpokenCommand,zn as refinementFormat,Yn as refinementPrompt,jn as refinementStream,Uy as refreshArgs,xl as registerMcpClient,ul as registrationRequest,rD as registryListUrl,ra as reject,om as rememberPermission,b as rememberRecent,Hn as reminderIntent,lu as removeTag,nP as renderContent,Xo as renderFlowchartSvg,lg as renderMarkdown,eO as repairAnswerMarkup,Si as repairCitedLinks,KS as repairJson,PR as replaceAll,LR as replaceAllInRange,MR as replaceMatch,AR as replay,Gi as requirementsFor,Hi as requirementsForStep,Rm as rerankThrough,xU as researchAsk,bU as researchBrief,vU as researchCall,fr as researchRelevance,ur as researchSnippet,dM as resetMcp,Qx as resolveNoteConflict,f as resolveRef,CM as resolveSidelineTarget,dN as resolveSince,_t as resolveSubjects,vd as resolveTeam,hN as resolveTheme,wS as responseFormat,GE as resultToolSpec,W_ as resumeTeam,ye as retryAfterMs,Hm as revealCut,Gm as revealStep,VT as reviewPrompt,HS as rewriteJson,ED as rfc3339,pe as roleById,vA as roleCardId,WD as rollupKey,DA as rosterRows,BT as roundBudget,fE as roundCap,Ah as roundCount,bT as roundJobs,Rh as roundMinutes,zl as roundSignature,Uh as routeAllowed,QL as routeByRule,a_ as routeFor,ei as routeGraph,Ae as routeTeam,Kg as rowTime,Vp as runFromEvents,eR as runLanes,gc as runPlan,UT as runProject,Cc as runRecipe,wU as runResearch,fP as runResearchItem,bE as runResultQuery,Qp as runState,V_ as runTeam,Wl as runToolRound,AE as runTurnLoop,JL as runTurnPipeline,nE as runWithFailover,Ar as salientTerms,Ef as sameMemory,zi as sameModelKey,Vf as sameSkillOrigin,mu as sameTags,oS as sameUtterance,Zk as sampleSeconds,$k as sampleTooShort,Ty as saveTimedOut,py as saveVoiceFailure,rf as saysWhere,yO as scalePolicy,Kn as scheduleIntent,Yc as scmAllows,wx as scoreRuns,AU as scrubReportText,kD as sealBlob,Ls as sealEntry,IO as sealRecord,ze as searchApiChoices,Ds as searchEntries,lc as searchFailureOf,Kk as searchModels,ke as searchPolitely,Sc as searchResultsToText,bC as searchSettings,$e as searchStatus,zu as searchTextFor,PF as secretReason,cC as sectionHash,HC as sectionOfRow,SC as sectionSpec,lC as sectionValue,zC as seedDestinations,$O as segmentBytes,eN as segmentEntries,tN as segmentName,nN as segmentsFor,aL as selectContext,ru as selectionStats,FC as setSettingValue,wh as settingLocked,hC as settingValue,GC as settingsGateOf,UC as settingsOpenMode,wC as settingsStatusAll,vC as settingsStatusOf,Qn as settleRefinement,$T as sha256,UE as shieldToolResult,Zi as shortUrl,ku as shouldAutoTitle,rN as shouldRotate,JC as shouldSeedDestinations,UD as shredBlob,UM as sidelinePath,BM as sidelineToolProvider,ng as signChallenge,ml as signInError,cl as signInFromError,pl as signInToolResult,Bi as signalsFrom,jR as similarity,SF as skillCatalogSystem,YA as skillChoices,RF as skillCreatorPrompt,pF as skillDiscoveryProvider,cF as skillEntry,EF as skillFileProvider,Bf as skillFiles,uF as skillFromDraft,sF as skillHandle,fF as skillIdFrom,WI as skillInvocationLabel,VI as skillInvocationOf,Wf as skillIsStale,tF as skillPackageFiles,oF as skillRunFromSkill,iF as skillToolSystem,Zf as skillVar,iI as skillVarGuidance,$f as skillVarPattern,KI as slashCommandInsert,bI as slashCommandItems,JR as slotOf,bd as slugAgentId,sp as slugTeamName,ux as snapQuote,bF as sniffType,Qu as snippetOf,GA as soloTeam,Bg as sortRecords,wg as sortStamp,oM as sourceCitationSystem,pE as sourceGate,cE as sourceGuardFor,es as sourceId,kM as sourceOf,ss as sourcePolicyFor,mE as sourcePolicySettings,ns as sourceUrlsOf,Ei as sourcesFromToolText,Dx as sourcesOf,_a as spanningQuestions,Lk as speakStream,xk as speakable,Lg as speakerBreakdown,yg as speakerLabeller,Cg as speakerStats,xg as speakerTimeline,Jp as spendOf,rR as spendRows,rh as splitForWindow,Yx as splitNoteBlocks,Jl as stableToolCallKey,aO as stampOf,sl as standaloneInstallCommand,Ox as standsOn,ty as startRecording,Bd as starterAgents,MA as starterTeam,tp as starterTeams,XL as stepAction,OE as stepResultText,YL as stepState,Tf as storyLinkOf,CO as streamCodec,Ig as stripNoteImageRefs,Nt as stripQualifiers,ct as subjectKey,pt as subjectTokens,Nx as subjectsOf,tI as substituteSkillVars,EA as subtaskFromRequest,fu as suggestExistingTags,gt as suggestMerges,oI as suggestSkillVar,LS as suggestionsFormat,PS as suggestionsPrompt,hS as suggestionsStream,ad as summarize,qd as summarizeEngine,uy as summarizeRun,rr as summarizeSearch,YD as summarizeUsage,Yg as summarySections,jO as supersedes,de as supportsSubagents,Aa as surveyCorpus,cy as switchOutcome,Jx as syncNote,Xt as synthesisPrompt,eL as systemWithSummary,Ru as tagFacets,Ze as tagResults,Iu as tagsSearchText,mA as takeUp,cA as takeUpLine,_A as taskTree,vT as teamForRound,ip as teamFromForm,LA as teamHealth,HI as teamInvocationText,NA as teamLanes,OA as teamLine,xA as teamShape,Q_ as teamToolProvider,q_ as teamToolSpec,Z_ as teamToolTimeoutMs,HA as teamsWithSolos,TM as testMcpServer,Bx as textKey,Ry as textToDict,xN as themeStylesheet,MM as threadManifest,AA as threadRows,ui as threadTitle,PM as threadToolProvider,gi as threadTree,Ii as threadsOf,Ra as thresholdSweep,ZN as tierFor,Nd as tierOf,wa as timedTextUrl,Gn as timerIntent,Zs as timerTrigger,hu as titleFromDate,xu as titleFromParticipants,Pu as titleFromSummary,Lu as titleFromTopics,uU as titleTerms,bs as toB64,fp as toBriefClaims,SP as toChatMessages,pD as toCloudEvent,AD as toCloudEventBatch,dD as toCloudEventLines,LN as toCssVars,Ju as toIndexEntry,vS as toJsonSchema,IR as toJsonl,Qr as toModelSchema,qr as toModelSchemas,lP as toMultimodalMessages,Cy as toSanitizedReport,Yu as toSearchRecord,qI as toggleLinePrefix,$I as toggleLink,Eu as toggleTag,ZI as toggleTask,QI as toggleWrap,Ml as tokenExpired,gl as tokenRequest,yn as tokenize,XO as tombstone,bm as toolChannel,fm as toolDoc,jl as toolMadeProgress,Do as toolNeedFor,dL as toolPlan,aM as toolStatus,kl as toolTraits,cL as toolsWanted,Rr as topicTerms,tn as topicTrigger,cS as topicsFormat,mS as topicsPrompt,ES as topicsSchema,_S as topicsStream,wl as traitsIndex,vm as transcriptFor,Wa as transcriptFromTracks,$ as triggerQueryAt,dc as trimDescription,sr as trimGraph,Sh as trimOverlap,wf as trustOf,Bk as ttsArchOf,KL as turnFlow,VL as turnFlowChart,GL as turnGroundingNote,Ni as turnsOf,BS as unfence,Ms as unlockVault,vL as unsupportedFigures,wL as unsupportedNote,QU as unverifiedAmounts,Oe as unwrapRedirect,Wr as upcast,Xr as upcastAll,lf as upcastMemory,Yf as upcastSkill,zf as upcastSkills,BA as upsertAgents,KD as usageFromEvent,VD as usageFromOpenAi,vc as usageOf,HD as usageRecord,Jm as validateAction,hd as validateAgent,cb as validateBrowserAnnounce,mb as validateBrowserCall,pb as validateBrowserResult,Uc as validateBudget,zr as validateCapability,O_ as validateConnection,fd as validateEngineSpec,hs as validateEntry,m as validateEvent,zF as validateExtractRequest,JF as validateExtractResponse,MT as validateGate,Jr as validateInvocation,pT as validateJobPost,eT as validateProject,fc as validateRecipe,Ws as validateSchedule,Xf as validateSkill,Kc as validateTeam,zo as validateView,Jo as validateViewInvocation,qo as validateWidget,Zo as validateWidgetMessage,sM as vaultWidgetSystem,gy as verdict,td as verifyAttested,rd as verifyChain,eg as verifyEntitlement,Vh as verifyPolicyToken,rg as verifySignedToken,qe as viaOf,ba as videoMetaFromPlayerResponse,Ye as viewApiEntries,jo as viewResult,Um as visiblePrefix,Ta as vocabularyDrift,sn as voiceCommandTrigger,Ey as voiceListRows,ly as voicePicker,gk as voiceSpeaker,Ok as voiceStep,Cn as wakeFor,ma as wantedPages,LL as wantsDecision,PL as wantsIntent,_N as wantsModel,nM as wantsVaultGuidance,mp as waves,uP as weatherFollowupPlace,WM as weatherFromSearch,IP as weatherPlace,VM as weatherToolProvider,fo as weatherUrl,hD as webCryptoSealer,oy as webMedia,Ir as webQuery,CP as webRedoAsk,UU as webResearch,Ec as webSearchToolProvider,Al as wellKnownUrls,FA as whereItWorks,iM as widgetAuthoringSystem,et as widgetIcon,le as wikiQueryAt,Sa as wikilinksIn,GP as windowOf,yF as withAbsolutePaths,yp as withBoardTool,Ny as withCost,FP as withFetchedMemo,Qm as withGuidance,Mm as withHint,Pm as withLead,dh as withPresence,hm as withPromptedTools,U as withRecent,vE as withResultShield,Bp as withRunCache,cP as withSourceTool,lh as withStitching,IE as withToolSystem,$N as withinFreeLimit,dE as withinReach,sL as withoutOwnInstructions,qu as wordCount,Er as wordDiff,iA as workLogEvidence,tA as workLogFor,aA as workLogText,P_ as worktreeDirFor,pL as worldAnswered,TL as worldPlanned,lI as writerAffordance,RI as writerRequest,dI as writerTail};
1
+ import{CURRENT_VERSION as o,EVENT_TYPES as t,ALL_TYPES as a,ACTOR_KINDS as i,SCOPE_KINDS as s,CLASSES as n,EFFECTS as l,EGRESS as S,EventError as E,validateEvent as m,isValidEvent as c,createAppender as p}from"./event.js";import{REF_KINDS as d,RESOLUTION as _,makeRef as A,isRef as R,resolveRef as f}from"./ref.js";import{linearize as u,compareEvents as O,causesAreWellFormed as N}from"./order.js";import{pendingQueue as C,isQueued as M,dequeue as P,moveQueued as L,promoteQueued as x}from"./queue.js";import{groupModels as F,filterSections as D,defaultModelId as y,modelSummary as k,withRecent as U,rememberRecent as b}from"./model-picker.js";import{composerChips as w,chipText as B}from"./composer-chips.js";import{NOTE_ACTIONS as H,NOTE_ACTION_ORDER as K,NOTE_ACTION_TEMPERATURE as V,NOTE_ACTION_ERRORS as W,NOTE_COMMANDS as X,NOTE_COMMAND_TEMPERATURE as Y,NOTE_COMMAND_MAX_TOKENS as z,frameNoteAction as J,noteActionLabel as j,noteActionItems as Q,filterNoteActions as q,commandLineAt as Z,triggerQueryAt as $}from"./note-actions.js";import{parseAgentMention as re,agentMentionAt as oe,parseSkillMention as te,mergeSkillPrompt as ae,findSkillByName as ie,findTargetByName as se,mentionAnswerPrefix as ne}from"./note-mentions.js";import{wikiQueryAt as Se,rankLinkTargets as Ee}from"./note-links.js";import{SWARM_ROLES as ce,roleById as pe,classifyModel as Te,supportsSubagents as de,appoint as _e,routeTeam as Ae}from"./cowriter-router.js";import{SEARCH_ENGINES as fe,RESULTS_PER_ENGINE as Ie,buildSearchUrl as ue,unwrapRedirect as Oe,isResultHost as Ne,pickResults as ge,mergeEngineResults as Ce,engineOrder as Me,offTopic as Pe,isSearchPage as Le}from"./web-search.js";import{PACER_DEFAULTS as he,classifyAnswer as Fe,createEnginePacer as De,searchPolitely as ye,retryAfterMs as ke}from"./engine-pacer.js";import{SEARCH_API_PRESETS as be,SearchApiError as ve,defineSearchApi as we,missingVars as Be,buildApiRequest as Ge,readApiResponse as He,apiEngine as Ke,DEFAULT_API_ENGINES as Ve,apiEnginesFrom as We,patchApiEntries as Xe,viewApiEntries as Ye,searchApiChoices as ze,apiTrialVerdict as Je}from"./search-api.js";import{SEARCH_STATUS as Qe,viaOf as qe,tagResults as Ze,searchStatus as $e,engineLabel as er,summarizeSearch as rr}from"./search-outcome.js";import{MAX_GRAPH_NODES as tr,buildNoteGraph as ar,egoGraph as ir,trimGraph as sr,graphStats as nr}from"./note-graph.js";import{lintText as Sr,wordDiff as Er,filterTypoEdits as mr,editKey as cr,applyEdits as pr,COWRITER_SYSTEM as Tr,COWRITER_TEMPERATURE as dr}from"./cowriter.js";import{salientTerms as Ar,topicTerms as Rr,researchRelevance as fr,webQuery as Ir,researchSnippet as ur,rankResearchCards as Or,mergeResearchLanes as Nr}from"./note-research.js";import{PLAN_ROLES as Cr,PLAN_AUTHORS as Mr,PLAN_DECOMPOSE_SYSTEM as Pr,PLAN_DECOMPOSE_MAX_TOKENS as Lr,PLAN_DECOMPOSE_TEMPERATURE as xr,PLAN_SECTION_MAX_TOKENS as hr,PLAN_SECTION_TEMPERATURE as Fr,planSectionSystem as Dr,parsePlanTasks as yr,planTitleFor as kr,planParts as Ur,planBody as br,planAttribution as vr}from"./note-plan.js";import{REACH as Br,reachRank as Gr,reachSatisfies as Hr}from"./reach.js";import{UPCASTERS as Vr,upcast as Wr,upcastAll as Xr}from"./upcast.js";import{validateCapability as zr,validateInvocation as Jr,canSatisfy as jr,toModelSchema as Qr,toModelSchemas as qr}from"./capability.js";import{checkInvariants as $r,INVARIANTS as eo}from"./invariants.js";import{createMemoryAdapter as oo,createLogStore as to,createBlobStore as ao}from"./store.js";import{createRegistry as so,REGISTRY_STATES as no}from"./registry.js";import{defineSearchEngine as So,reconcileEngines as Eo,attemptOrder as mo,ENGINE_KINDS as co,SearchEngineError as po,inheritEngineDefaults as To,ENGINES_REV as _o}from"./search-engines.js";import{getWeather as Ro,weatherUrl as fo,parseWeather as Io,formatWeather as uo,areaLabel as Oo,isAmbiguousLocation as No,WEATHER_HOST as go,WEATHER_TIMEOUT_MS as Co,WeatherError as Mo}from"./weather.js";import{defineToolGroup as Lo,createToolGroupRegistry as xo,ToolGroupError as ho}from"./tool-groups.js";import{toolNeedFor as Do,grantsNeededFor as yo,equipmentFor as ko,isPleasantry as Uo}from"./tool-need.js";import{housekeepingTarget as vo,hasSubstance as wo,isLocalHelper as Bo,isSystemModel as Go,lightestLocalHelper as Ho}from"./housekeeping.js";import{parseFlowchart as Vo,layoutFlowchart as Wo,renderFlowchartSvg as Xo}from"./flowchart.js";import{validateView as zo,validateViewInvocation as Jo,viewResult as jo}from"./view.js";import{validateWidget as qo,validateWidgetMessage as Zo,effectiveGrants as $o,widgetIcon as et,WIDGET_SURFACES as rt}from"./widget.js";import{fuseRRF as tt,planQueries as at,multiSearch as it}from"./rrf.js";import{SUBJECT_KINDS as nt,DEFAULT_THRESHOLD as lt,MAX_SUBJECTS as St,MAX_SUBJECT_CHARS as Et,normalizeSubject as mt,subjectKey as ct,subjectTokens as pt,isSubjectCandidate as Tt,aliasMap as dt,resolveSubjects as _t,earnsBrief as At,rankSubjects as Rt,REDACTION_TOKEN_TYPES as ft,isRedactionToken as It,SELF_LABELS as ut,isSelfLabel as Ot,stripQualifiers as Nt,suggestMerges as gt}from"./entity.js";import{BRIEF_STATES as Mt,CLAIM_KINDS as Pt,MAX_CLAIMS as Lt,MAX_CLAIM_REFS as xt,MAX_BRIEF_RECORDS as ht,MAX_BRIEF_CHARS as Ft,contentHash as Dt,briefId as yt,briefToText as kt,briefTerms as Ut,briefLinks as bt,checkKnowledgeInvariants as vt,parseBriefText as wt}from"./knowledge.js";import{deriveBrief as Gt,deriveBriefs as Ht,driftedRefs as Kt}from"./knowledge-derive.js";import{SYNTHESIS_SCHEMA as Wt,synthesisPrompt as Xt,claimsFromSynthesis as Yt,MAX_SYNTHESIS_CLAIMS as zt,MAX_EXCERPTS as Jt,MAX_EXCERPT_CHARS as jt}from"./synthesis.js";import{PROPOSAL_STATES as qt,SUPERSEDE_OVERLAP as Zt,propose as $t,accept as ea,reject as ra,diffProposal as oa,converge as ta,linkClaims as aa}from"./promotion.js";import{normalizeRecord as sa,normalizeRecords as na,wikilinksIn as la,redactedTokensIn as Sa,redactionCost as Ea,wantedPages as ma,orphanRecords as ca,duplicateTitles as pa,vocabularyDrift as Ta,mentionsFrom as da,spanningQuestions as _a,surveyCorpus as Aa,thresholdSweep as Ra,formatSurvey as fa,NEAR_TITLE_DISTANCE as Ia,SPAN_MIN_TERMS as ua}from"./curate.js";import{PDF_MAX_CHARS as Na,linesFromItems as ga,orderLines as Ca,paragraphsFromLines as Ma,pageTextFromItems as Pa,looksScanned as La,buildPdfDocument as xa}from"./pdf-layout.js";import{YOUTUBE_HOSTS as Fa,TRANSCRIPT_MAX_CHARS as Da,parseYouTubeUrl as ya,isYouTubeUrl as ka,captionTracksFromPlayerResponse as Ua,videoMetaFromPlayerResponse as ba,pickCaptionTrack as va,timedTextUrl as wa,parseTimedText as Ba,groupSegments as Ga,formatTimestamp as Ha,formatTranscript as Ka,buildTranscriptDocument as Va,transcriptFromTracks as Wa}from"./media-transcript.js";import{ACCESS_LOG_VERSION as Ya,ACCESS_LOG_MAX as za,redactAccessArgs as Ja,makeAccessEvent as ja,createAccessLog as Qa,makeStorageTier as qa,formatBytes as Za}from"./observability.js";import{routeGraph as ei,projectChain as ri}from"./route-graph.js";import{defineAdapter as ti,createAdapterRegistry as ai,AdapterError as ii}from"./adapters.js";import{linkifyCitations as ni,repairCitedLinks as li,markdownUrl as Si,sourcesFromToolText as Ei,createCitationCollector as mi,RETRIEVAL_TOOLS as ci}from"./citations.js";import{buildTrajectory as Ti,phasesOf as di,lanesOf as _i,filterEntries as Ai,displayName as Ri,ENTRY_KINDS as fi,threadsOf as Ii,threadTitle as ui,promptEntries as Oi,turnsOf as Ni,threadTree as gi}from"./trajectory.js";import{createTurnRunner as Mi,createStepRecorder as Pi,argsShape as Li,defineLoop as xi,LOOP_KINDS as hi,LoopError as Fi,abortCause as Di,errorFacts as yi}from"./loop.js";import{defineModel as Ui,defineMiddleware as bi,defineRouteStrategy as vi,createModelRouter as wi,signalsFrom as Bi,requirementsFor as Gi,requirementsForStep as Hi,preferenceFor as Ki,failoverOrder as Vi,pinnedOrderOf as Wi,FAILOVER_CLASS_GAP as Xi,FAILOVER_CAPABILITY_GAP as Yi,sameModelKey as zi,RouterError as Ji}from"./router.js";import{makeSourceStore as Qi,manifestText as qi,shortUrl as Zi,readSource as $i,sourceId as es}from"./sources-retrieval.js";import{classifySource as os,extractUrls as ts,hostMatches as as,meetReach as is,sourcePolicyFor as ss,sourceUrlsOf as ns,DEFAULT_INTERNAL_PATTERNS as ls,INTERNAL_PATTERN_CATALOG as Ss}from"./sources.js";import{defineRule as ms,createRuleEngine as cs,SUPPRESSED as ps,RuleError as Ts}from"./rules.js";import{VAULT_VERSION as _s,KDF_ITERATIONS as As,KDF_HASH as Rs,DEFAULT_LOCK_MS as fs,VaultError as Is,MAX_TITLE_CHARS as us,MAX_NOTE_CHARS as Os,MAX_SECRET_CHARS as Ns,MAX_ENTRIES as gs,createVault as Cs,unlockVault as Ms,deriveKey as Ps,sealEntry as Ls,openEntry as xs,validateEntry as hs,entryMeta as Fs,searchEntries as Ds,isLocked as ys,lockedSummary as ks,canAddEntry as Us,toB64 as bs,fromB64 as vs}from"./vault.js";import{SCHEDULE_KINDS as Bs,TRIGGER_KINDS as Gs,JOB_ACTIONS as Hs,MISSED_POLICIES as Ks,ScheduleError as Vs,validateSchedule as Ws,nextFireAt as Xs,occurrencesBetween as Ys,nextWakeAt as zs,parseCron as Js,defineTrigger as js,createTriggerRegistry as Qs,BUILTIN_TRIGGERS as qs,timerTrigger as Zs,meetingStartedTrigger as $s,meetingEndedTrigger as en,personJoinedTrigger as rn,phraseTrigger as on,topicTrigger as tn,questionTrigger as an,voiceCommandTrigger as sn,defineJob as nn,dueJobs as ln,jobsForEvent as Sn,occurrenceKey as En,clipText as mn,matchSummary as cn}from"./schedule.js";import{defineMeetingAnalyzer as Tn,createAnalyzerRegistry as dn,CADENCES as _n,AnalyzerError as An}from"./meeting-analyzers.js";import{DEFAULT_WAKE as fn,ASSISTANT_NAME as In,MAX_COMMANDS_PER_DELTA as un,DAYPART_HOUR as On,VoiceIntentError as Nn,compileWake as gn,wakeFor as Cn,findWakeCommand as Mn,parseCommand as Pn,commandsFromSegments as Ln,parseDuration as xn,parseClock as hn,parseWhen as Fn,parseNumberWords as Dn,normalizeSpeech as yn,tokenize as kn,editDistance as Un,defineVoiceIntent as bn,createVoiceIntentRegistry as vn,defaultVoiceIntents as wn,BUILTIN_VOICE_INTENTS as Bn,timerIntent as Gn,reminderIntent as Hn,scheduleIntent as Kn,noteIntent as Vn,monitorIntent as Wn,REFINEMENT_SCHEMA as Xn,refinementPrompt as Yn,refinementFormat as zn,parseRefinement as Jn,refinementStream as jn,settleRefinement as Qn,refineSpokenCommand as qn,isFillerSentence as Zn,gistText as $n,gistOpening as el,commandLooksFinished as rl,sameUtterance as ol,createUtteranceGate as tl,UTTERANCE_SETTLE_MS as al,UTTERANCE_DANGLING_MS as il}from"./voice-intents.js";import{MAX_TOPICS as nl,MAX_TOPIC_CHARS as ll,TOPICS_SCHEMA as Sl,topicsSchema as El,topicsPrompt as ml,topicsFormat as cl,parseTopics as pl,normalizeTopic as Tl,normalizeTopics as dl,topicsStream as _l,ENTITY_TYPES as Al,ENTITIES_SCHEMA as Rl,entitiesPrompt as fl,entitiesFormat as Il,parseEntities as ul,coerceEntities as Ol,entitiesStream as Nl,MAX_SUGGESTIONS as gl,MAX_SUGGESTION_CHARS as Cl,SUGGESTIONS_SCHEMA as Ml,suggestionsPrompt as Pl,suggestionsFormat as Ll,parseSuggestions as xl,suggestionsStream as hl}from"./extraction.js";import{FIELD_TYPES as Dl,RESPONSE_MODES as yl,StructuredError as kl,defineSchema as Ul,describeSchema as bl,toJsonSchema as vl,responseFormat as wl,unfence as Bl,findJson as Gl,rewriteJson as Hl,repairJson as Kl,isNothing as Vl,coerce as Wl,parseStructured as Xl,createStructuredStream as Yl}from"./structured.js";import{explainMcpError as Jl,packageFromArgs as jl,isStaleMcpSession as Ql,installHintFor as ql,missingCommandMessage as Zl,missingCommandIn as $l,normalizePlatform as eS}from"./mcp-errors.js";import{explainInstallFailure as oS,gatewayNotBackAdvice as tS,adviceText as aS,npmInstallCommand as iS,standaloneInstallCommand as sS,nodeSatisfies as nS,PUBLIC_REGISTRY as lS}from"./install-advice.js";import{parseSignInPrompt as ES,signInError as mS,signInFromError as cS,signInToolResult as pS,MCP_SIGN_IN_CODE as TS}from"./mcp-signin.js";import{parseAuthChallenge as _S,wellKnownUrls as AS,canonicalResource as RS,readResourceMetadata as fS,readAuthServerMetadata as IS,registrationRequest as uS,readRegistration as OS,authorizeUrl as NS,tokenRequest as gS,readTokenResponse as CS,tokenExpired as MS,authHeader as PS,discoverMcpAuth as LS,registerMcpClient as xS,fetchMcpToken as hS,TOKEN_SKEW_MS as FS}from"./mcp-oauth.js";import{toolTraits as yS,bareToolName as kS,canRunConcurrently as US,isCacheable as bS,needsConfirmation as vS,traitsIndex as wS,effectiveToolName as BS,parallelEligible as GS,PARALLEL_LOCAL_RE as HS}from"./tool-traits.js";import{planToolRound as VS,runToolRound as WS}from"./tool-round.js";import{createToolLoopGuard as YS,roundSignature as zS,stableToolCallKey as JS,toolMadeProgress as jS,isLoopableTool as QS,blockedToolResult as qS,OBSERVATION_TOOLS as ZS,INPUT_PROGRESS_TOOLS as $S}from"./tool-loop-guard.js";import{classifyFailure as rE,createModelHealth as oE,COOLDOWN_MS as tE,UNAVAILABLE_REASONS as aE,normModelName as iE}from"./model-health.js";import{runWithFailover as nE,failoverExhausted as lE,FAILOVER_MAX_ATTEMPTS as SE}from"./failover.js";import{sourcePolicySettings as mE,sourceGuardFor as cE,sourceGate as pE,isSourceGateError as TE,withinReach as dE}from"./source-gate.js";import{runTurnLoop as AE,createCallRunner as RE,roundCap as fE,withToolSystem as IE,describeCall as uE,stepResultText as OE,addUsage as NE,normalizeUsage as gE,openAiTranscript as CE,anthropicTranscript as ME,DEFAULT_MAX_ROUNDS as PE,DEFAULT_MAX_FINISH_TRIES as LE,FINISH_NUDGES as xE,LOOPING_NUDGE as hE,EXHAUSTED_NOTE as FE,ROUND_SEPARATOR as DE}from"./turn-loop.js";import{createResultStore as kE,shieldToolResult as UE,runResultQuery as bE,withResultShield as vE,describeShape as wE,compactValue as BE,resultToolSpec as GE,RESULT_TOOL_NAME as HE,DEFAULT_SHIELD as KE,DEFAULT_STORE as VE}from"./tool-result.js";import{PERMISSION_EVENT as XE,PERMISSION_ANSWERS as YE,PERMISSION_TIMEOUT_MS as zE,PERMISSION_TOOL_NAME as JE,permissionToolSpec as jE,isPermissionTool as QE,permissionRequestFromClaude as qE,permissionKeys as ZE,describePermission as $E,permissionAnswer as em,permissionAllowed as rm,rememberPermission as om,recallPermission as tm,claudePermissionResponse as am,permissionLine as im,permissionIcon as sm,createPermissionDesk as nm}from"./agent-permission.js";import{findTools as Sm,findToolsResult as Em,findActionArgs as mm,oneLiner as cm,overlapRank as pm,FIND_ACTION as Tm}from"./tool-discovery.js";import{rankFused as _m,fusedRanker as Am,rerankThrough as Rm,toolDoc as fm,FUSED_CANDIDATES as Im,FUSED_BUDGET_MS as um}from"./tool-rank-fused.js";import{makeToolHub as Nm,hubSpec as gm,HUB_TOOL_NAME as Cm,withHint as Mm,withLead as Pm,lastUserText as Lm}from"./tool-hub.js";import{withPromptedTools as hm,promptedTranscript as Fm,makePromptedTranscript as Dm,promptedToolsSystem as ym,parseToolCalls as km,visiblePrefix as Um,toolChannel as bm,transcriptFor as vm}from"./prompted-tools.js";import{REVEAL as Bm,revealStep as Gm,revealCut as Hm}from"./stream-reveal.js";import{buildToolset as Vm}from"./toolset.js";import{DESCRIBE_ACTION as Xm,actionMenu as Ym,buildGroupDispatchSpec as zm,validateAction as Jm,makeGroupDispatchExecutor as jm,withGuidance as Qm,makeDispatchProvider as qm,estimateTokens as Zm}from"./tool-dispatch.js";import{FIND_TOOL_NAME as ec,FIND_DESCRIPTION as rc,FIND_RESIDENT as oc,findDispatchProvider as tc}from"./find-tool.js";import{WEB_SEARCH_TOOL_NAME as ic,WEB_SEARCH_TOOL_SYSTEM as sc,WEB_SEARCH_SPEC as nc,searchResultsToText as lc,searchFailureOf as Sc,webSearchToolProvider as Ec}from"./web-search-tool.js";import{compressToolSpec as cc,compressToolSpecs as pc,compressionStats as Tc,trimDescription as dc,COMPRESSION_MODES as _c,DEFAULT_COMPRESSION as Ac}from"./tool-schema.js";import{validateRecipe as fc,expandRecipe as Ic,recipeParams as uc,mapInput as Oc,dryRunRecipe as Nc,runPlan as gc,runRecipe as Cc,RecipeError as Mc,RECIPE_MODES as Pc}from"./recipe.js";import{recipeToolProvider as xc,recipeToolSpec as hc,describeRecipeForApproval as Fc,RECIPE_TOOL_NAME as Dc}from"./recipe-tool.js";import{createBudget as kc,validateBudget as Uc,normalizeBudget as bc,usageOf as vc,BudgetError as wc,BUDGET_DIMENSIONS as Bc}from"./budget.js";import{defineTeam as Hc,validateTeam as Kc,normalizeTeam as Vc,normalizeGrants as Wc,grantAllows as Xc,scmAllows as Yc,describeRole as zc,TeamError as Jc,ROLE_MODES as jc,MERGE_POLICIES as Qc,PLAN_MODES as qc,GRANTABLE as Zc,WORK_GRANTS as $c,GRANT_RE as ep,AGENT_REF_RE as rp,STARTER_TEAMS as op,starterTeams as tp,blankTeam as ap,teamFromForm as ip,slugTeamName as sp}from"./team.js";import{fixedPlan as lp,parsePlan as Sp,plannerPrompt as Ep,waves as mp,breakCycles as cp,TEAM_PLAN_SCHEMA as pp}from"./team-plan.js";import{createBoard as dp,parseFindings as _p,boardText as Ap,findingsInstruction as Rp,toBriefClaims as fp,FINDINGS_SCHEMA as Ip,FINDING_KINDS as up,THREAD_KINDS as Op,THREAD_STATUSES as Np,POST_KINDS as gp,POST_STATUSES as Cp,ASK_TYPES as Mp,emptyBoardState as Pp,foldBoard as Lp,findingsOf as xp}from"./team-board.js";import{boardToolProvider as Fp,boardToolSpec as Dp,createAnswerBox as yp,withBoardTool as kp,BOARD_TOOL_NAME as Up,DEFAULT_ASK_TIMEOUT_MS as bp}from"./board-tool.js";import{createRunCache as wp,withRunCache as Bp}from"./team-cache.js";import{emptyRun as Hp,foldRun as Kp,runFromEvents as Vp,checkpointFrom as Wp,isResumable as Xp,LIVE_RUN_STATUSES as Yp,RESUMABLE_RUN_STATUSES as zp,spendOf as Jp,describeSpend as jp,runState as Qp,priorWorkFor as qp,STALLED_AFTER_MS as Zp}from"./team-record.js";import{validateProject as eT,normalizeProject as rT,defineProject as oT,canTransition as tT,blankProject as aT,projectFromForm as iT,emptyProjectRecord as sT,foldProject as nT,projectProgress as lT,ProjectError as ST,PROJECT_STATUSES as ET,PROJECT_ID_RE as mT}from"./project.js";import{validateJob as pT,normalizeJob as TT,defineJob as dT,canTransition as _T,applyAll as AT,jobToRole as RT,readyJobs as fT,blankJob as IT,jobFromForm as uT,JobError as OT,JOB_STATUSES as NT,JOB_ID_RE as gT}from"./job.js";import{validateGate as MT,normalizeGate as PT,effectiveGate as LT,gateAllows as xT,DEFAULT_GATE as hT,AUTONOMY as FT,HUMAN_FLAGS as DT,CHECKS as yT}from"./gate.js";import{runProject as UT,roundJobs as bT,teamForRound as vT,jobResults as wT,roundBudget as BT,parseJobs as GT,parseReview as HT,jobsPrompt as KT,reviewPrompt as VT,PROJECT_JOBS_SCHEMA as WT,PROJECT_REVIEW_SCHEMA as XT,ProjectRunError as YT,EXECUTIVE as zT,MAX_JOBS_PER_ROUND as JT,MAX_ROUNDS as jT,PROJECT_RUN_STATUSES as QT}from"./project-run.js";import{canonical as ZT,sha256 as $T,makeEntry as ed,verifyChain as rd,attest as od,verifyAttested as td,summarize as ad,fit as id,adjustSummary as sd,normalizeEngine as nd,engineKey as ld,normalizeScm as Sd,SCORECARD_ENTRY_KINDS as Ed,ROLE_KINDS as md,SCORECARD_VERSION as cd,ENGINE_KINDS as pd}from"./scorecard.js";import{ENGINE_KINDS as dd,ROUTE_PREFERS as _d,normalizePolicy as Ad,normalizeEngineSpec as Rd,validateEngineSpec as fd,engineRef as Id,engineKeyOf as ud,describeEngine as Od,tierOf as Nd}from"./engine.js";import{AGENT_ID_RE as Cd,APPLIES_TO as Md,EGRESS_CLASSES as Pd,ASSISTANT_ID as Ld,AgentError as xd,validateAgent as hd,normalizeAgent as Fd,defineAgent as Dd,assistantAgent as yd,engineOf as kd,describeAgent as Ud,slugAgentId as bd,resolveTeam as vd,STARTER_AGENTS as wd,starterAgents as Bd,blankAgent as Gd,agentFromForm as Hd,poolFor as Kd}from"./agent.js";import{LEDGER_VERSION as Wd,LEDGER_ENTRY_KINDS as Xd,DECLINE_REASONS as Yd,WITHDRAW_AFTER as zd,ledgerKey as Jd,normalizeCall as jd,makeLedgerEntry as Qd,summarizeEngine as qd}from"./model-ledger.js";import{RECRUIT_SCHEMA as $d,MIN_FIT as e_,engineRow as r_,engineRows as o_,needForJob as t_,routeFor as a_,engineWorth as i_,applications as s_,evaluatorPrompt as n_,parseEvaluation as l_,decide as S_,recruitForRun as E_,proposalFromNeeds as m_,proposalToAgent as c_,carveBudget as p_,recruitEvents as T_,recruitJob as d_}from"./recruit.js";import{DEFAULT_MIN_CALLS as A_,cardOverride as R_,applyCard as f_}from"./model-candidates.js";import{SCM_KINDS as u_,validateConnection as O_,normalizeConnection as N_,parseRemote as g_,connectionFor as C_,branchFor as M_,worktreeDirFor as P_,credentialEnv as L_,describeConnection as x_,blankConnection as h_,connectionFromForm as F_}from"./scm-connection.js";import{messagesFor as y_,mergeTranscript as k_,clipTranscript as U_,clipMessage as b_,newSteps as v_,continuationNote as w_,createControl as B_,STEP_MAX_CHARS as G_,TASK_TRANSCRIPT_MAX_CHARS as H_}from"./team-task.js";import{runTeam as V_,resumeTeam as W_,dryRunTeam as X_,isModelUnavailable as Y_,TeamRunError as z_,RUN_STATUSES as J_}from"./team-run.js";import{teamToolProvider as Q_,teamToolSpec as q_,teamToolTimeoutMs as Z_,describeTeamForApproval as $_,TEAM_TOOL_NAME as eA,TEAM_MANUAL as rA}from"./team-tool.js";import{workLogFor as tA,workLogText as aA,workLogEvidence as iA,describeCall as sA,WORKLOG_KINDS as nA}from"./team-worklog.js";import{normalizeRequest as SA,subtaskFromRequest as EA,takeUp as mA,takeUpLine as cA,holdsGrants as pA,jobFromSubtask as TA,extendDependents as dA,taskTree as _A,threadRows as AA,MAX_SUBTASKS as RA,MAX_DEPTH as fA,MIN_TAKEUP_FIT as IA}from"./team-subtask.js";import{teamLine as OA,teamLanes as NA}from"./team-trail.js";import{promoteRoles as CA,starterTeam as MA,missingStarters as PA,teamHealth as LA,teamShape as xA,describeTeamShape as hA,whereItWorks as FA,rosterRows as DA,agentKind as yA,agentHue as kA,agentColor as UA,agentInitials as bA,roleCardId as vA,cardNumbers as wA,upsertAgents as BA,soloTeam as GA,teamsWithSolos as HA,builtinOrg as KA,isBuiltin as VA,grantChoices as WA,grantsFromChoices as XA,skillChoices as YA,GRANT_INFO as zA,SOLO_BUDGET as JA,TEAM_SHAPES as jA,ROSTER_KINDS as QA}from"./team-org.js";import{observeInbox as ZA,observeStrip as $A,runLanes as eR,spendRows as rR,engineStrip as oR}from"./team-observe.js";import{mcpDispatchProvider as aR,MCP_TOOL_NAME as iR}from"./mcp-dispatch.js";import{createManifest as nR,ManifestError as lR,SOURCES as SR}from"./manifest.js";import{createKernel as mR,meetDecisions as cR,KernelError as pR,REQUIRED_PLUGINS as TR,ALLOW_ALL as dR}from"./kernel.js";import{replay as AR,formatReport as RR,parseJsonl as fR,toJsonl as IR}from"./harness.js";import{compileQuery as OR,findMatches as NR,matchIndexFor as gR,expandReplacement as CR,replaceMatch as MR,replaceAll as PR,replaceAllInRange as LR,MAX_MATCHES as xR}from"./text-search.js";import{DATA_SCOPES as FR}from"./scopes.js";import{MEMORY_VERSION as yR,MEMORY_KINDS as kR,MEMORY_KIND_NAMES as UR,AMBIENT_KINDS as bR,MAX_MEMORY_CHARS as vR,MIN_MEMORY_CHARS as wR,DEFAULT_MAX_MEMORIES as BR,DEFAULT_BLOCK_CHARS as GR,SAME_FACT as HR,MEMORY_TOOL_SPEC as KR,MEMORY_UPCASTERS as VR,MemoryError as WR,normalizeMemory as XR,isValidMemory as YR,memoryKey as zR,slotOf as JR,similarity as jR,containment as QR,candidatesFrom as qR,reconcile as ZR,matchForForget as $R,recall as ef,saysWhere as rf,homePlace as of,needsWhere as tf,memoryBlock as af,markUsed as sf,pruneMemories as nf,memoryToolSystem as lf,upcastMemory as Sf,sameMemory as Ef,AMBIENT_MAX_WORDS as mf}from"./memory.js";import{linksToRead as pf,storyLinkOf as Tf,linkAttachments as df,asksOnlyAboutPage as _f,pageInstruction as Af}from"./message-links.js";import{frontPagesAskedAbout as ff,frontPageInstruction as If,FRONT_PAGES as uf}from"./site-pages.js";import{SOURCE_TRUST as Nf,SkillSourceError as gf,defineSkillSource as Cf,createSkillSourceRegistry as Mf}from"./skill-sources.js";import{SKILL_MANIFEST_VERSION as Lf,SKILL_CONTEXTS as xf,SKILL_HISTORY_SCOPES as hf,SKILL_MCP_MODES as Ff,SKILL_TRUST as Df,SKILL_FILE_KINDS as yf,SKILL_UPCASTERS as kf,SkillManifestError as Uf,isSafeSkillPath as bf,originOf as vf,trustOf as wf,skillFiles as Bf,needsBridge as Gf,declaredAccess as Hf,originLabel as Kf,sameSkillOrigin as Vf,skillIsStale as Wf,validateSkill as Xf,upcastSkill as Yf,upcastSkills as zf,normalizeSkill as Jf}from"./skill-manifest.js";import{SKILL_VARS as Qf,SKILL_VAR_NAMES as qf,skillVar as Zf,skillVarPattern as $f,parseSkillVars as eI,lintSkillPrompt as rI,suggestSkillVar as oI,substituteSkillVars as tI,expandSkillPrompt as aI,skillVarGuidance as iI,SkillVarError as sI}from"./skill-vars.js";import{lineAt as lI,writerAffordance as SI,INSTRUCTION_RE as EI,instructionOnLine as mI,GOAL_MIN_NEW as cI,goalDraftAllowed as pI,createSpendMeter as TI,writerTail as dI,draftSeparator as _I,groundingBlock as AI,writerRequest as RI,AUTOCOMPLETE_SYSTEM as fI,AUTOCOMPLETE_MAX_TOKENS as II,AUTOCOMPLETE_TEMPERATURE as uI,clipCompletion as OI,GEARS as NI,WRITER_PREFS as gI,WRITER_PREF_DEFAULTS as CI,normalizeWriterPrefs as MI,normalizeIntent as PI}from"./cowriter-writer.js";import{SLASH_TYPING_RE as xI,NEW_THREAD_SLASH_ITEMS as hI,parseNewThread as FI,BUG_REPORT_SLASH_ITEMS as DI,parseBugCommand as yI,isSkillEnabled as kI,enabledSkills as UI,slashCommandItems as bI,matchSlashSkill as vI,matchSlashRecipe as wI,recipeInvocationText as BI,matchSlashTeam as GI,teamInvocationText as HI,slashCommandInsert as KI,skillInvocationOf as VI,skillInvocationLabel as WI}from"./slash-commands.js";import{outlineOf as YI,parseListItem as zI,continueList as JI,indentSelection as jI,toggleWrap as QI,toggleLinePrefix as qI,toggleTask as ZI,toggleLink as $I,docStats as eu,selectionStats as ru}from"./markdown-authoring.js";import{MAX_TAG_LENGTH as tu,MAX_TAGS as au,normalizeTag as iu,normalizeTags as su,hasTag as nu,addTag as lu,removeTag as Su,toggleTag as Eu,sameTags as mu,formatTag as cu,parseTagQuery as pu,hasTagTerms as Tu,formatTagQuery as du,matchesTagFilter as _u,filterByTags as Au,tagFacets as Ru,suggestExistingTags as fu,tagsSearchText as Iu}from"./tags.js";import{UNTITLED_MEETING as Ou,MAX_TITLE_LENGTH as Nu,TITLE_RULES_VERSION as gu,cleanTitle as Cu,isGenericTitle as Mu,titleFromSummary as Pu,titleFromTopics as Lu,titleFromParticipants as xu,titleFromDate as hu,readableWhen as Fu,deriveMeetingTitle as Du,shouldAutoTitle as yu,isBetterTitleSource as ku,meetingTitlePrompt as Uu,parseTitleResponse as bu}from"./titles.js";import{RECORD_KINDS as wu,MAX_TITLE_LEN as Bu,LibraryError as Gu,parseRecordId as Hu,makeRecordId as Ku,isRecordId as Vu,normalizeStoredRecord as Wu,isValidStoredRecord as Xu,toSearchRecord as Yu,searchTextFor as zu,toIndexEntry as Ju,deriveTitle as ju,snippetOf as Qu,wordCount as qu,findRecordRefs as Zu,linkRecordRefs as $u,repairAnswerMarkup as eO}from"./library.js";import{CLOCK_TOLERANCE_MS as oO,SyncError as tO,stampOf as aO,decide as iO,planSync as sO,isSettled as nO,forkConflict as lO,advanceBases as SO}from"./sync-plan.js";import{ENCRYPTED_TYPE as mO,COMPRESSIONS as cO,BackupError as pO,KDF_ITERATIONS as TO,encryptBackup as dO,decryptBackup as _O,isEncryptedBackup as AO,RECORD_TYPE as RO,deriveBackupKey as fO,sealRecord as IO,openRecord as uO,isSealedRecord as OO,keyCache as NO,identityCodec as gO,streamCodec as CO,nodeCodec as MO,bestCodec as PO}from"./backup-envelope.js";import{recordsFromBackup as xO,backupFromRecords as hO}from"./backup-records.js";import{DEFAULT_POLICY as DO,SLOW_POLICY as yO,scalePolicy as kO,pickProfile as UO,adaptProfile as bO,policyFor as vO,SLOW_FLUSH_MS as wO,FAST_FLUSH_MS as BO,FAST_STREAK as GO,createJournal as HO,JournalError as KO,ENTRY_VERSION as VO,makeEntry as WO,tombstone as XO,isTombstone as YO,isEntry as zO,entryStamp as JO,supersedes as jO,BOUNDS as QO,createSegment as qO,applyEntry as ZO,segmentBytes as $O,segmentEntries as eN,shouldRotate as rN,mergeSegments as oN,segmentName as tN,parseSegmentName as aN,SEGMENT_RE as iN,boundSegments as sN,segmentsFor as nN,overlay as lN,catchUpPlan as SN}from"./journal.js";import{OMNI_MODES as mN,OMNI_GRAMMAR as cN,parseOmni as pN,extractFilters as TN,resolveSince as dN,wantsModel as _N,isActionable as AN}from"./omni.js";import{THEMES as fN,LIGHT as IN,DARK as uN,PALETTES as ON,SHAPE as NN,TOKEN_NAMES as gN,TOKEN_ROLES as CN,paletteFor as MN,cssVarName as PN,toCssVars as LN,themeStylesheet as xN,resolveTheme as hN}from"./theme.js";import{PLANS as DN,API_BASE as yN,ENDPOINTS as kN,ENTITLEMENT_PUBLIC_JWK as UN,UPGRADE_URL as bN,FEATURE_TIER as vN,PRO_FEATURES as wN,TEAM_FEATURES as BN,FREE_LIMITS as GN,COUNTED as HN,freeCap as KN,observeSince as VN,RECHECK_INTERVAL_MS as WN,EntitlementError as XN,checkoutUrl as YN,planOf as zN,planLabel as JN,isPro as jN,isTeam as QN,can as qN,tierFor as ZN,withinFreeLimit as $N,verifyEntitlement as eg,verifySignedToken as rg,licenseFromPayload as og,needsRecheck as tg}from"./entitlement.js";import{generateDeviceKey as ig,exportDevicePublicKey as sg,signChallenge as ng}from"./device-proof.js";import{renderMarkdown as Sg,defaultLinkPolicy as Eg,defaultImagePolicy as mg}from"./markdown-render.js";import{NOTE_IMAGE_SCHEME as pg,MAX_NOTE_IMAGE_BYTES as Tg,NOTE_IMAGE_TYPES as dg,noteImageId as _g,noteImageRef as Ag,noteImageIds as Rg,noteImageRefs as fg,stripNoteImageRefs as Ig,orphanNoteImages as ug,newNoteImageId as Og}from"./note-images.js";import{parseMeetingText as gg,speakerStats as Cg,densityRibbon as Mg}from"./meeting-text.js";import{speakerBreakdown as Lg,speakerTimeline as xg,formatTalkTime as hg,SPEAKER_SLOTS as Fg}from"./meeting-shape.js";import{isSpeakerImageValue as yg,speakerLabeller as kg}from"./meeting-shape.js";import{SORT_MODES as bg,SORT_LABELS as vg,sortStamp as wg,sortRecords as Bg,filterRecords as Gg,dayBucket as Hg,rowTime as Kg,groupRecords as Vg}from"./record-list.js";import{DATE_PRESETS as Xg,startOfDay as Yg,addDays as zg,dayKey as Jg,resolveDateValue as jg,dateRangeOf as Qg,parseDateQuery as qg,hasDateTerms as Zg,isSingleDay as $g,formatDateTerm as eC,setDateTerm as rC,matchesDateRange as oC,filterByDate as tC,describeDateRange as aC,dateFilterLabel as iC,activePreset as sC,pickDay as nC,shiftMonth as lC,monthGrid as SC,dayCounts as EC,nearbyDays as mC,localeWeekStart as cC}from"./date-filter.js";import{INSIGHT_KINDS as TC,summarySections as dC,insightKindOf as _C,meetingInsights as AC,hasInsights as RC}from"./meeting-insights.js";import{demd as IC,NOTE_SECTIONS as uC,noteSectionKind as OC,MOMENT_BADGES as NC,momentBadge as gC,parseMeetingNotes as CC,groupActionsByOwner as MC}from"./meeting-insights.js";import{PREF_SECTIONS as LC,PREF_SECTION_IDS as xC,DESKTOP_SECTION_IDS as hC,sectionSpec as FC,sectionValue as DC,pickSections as yC,applySections as kC,sectionHash as UC,mergeStamped as bC,changedSections as vC}from"./client-prefs.js";import{SETTINGS_GROUPS as BC,SETTINGS_PAGES as GC,REQUIREMENTS as HC,BOOKKEEPING_KEYS as KC,listRows as VC,findRow as WC,pageById as XC,groupById as YC,pagesOf as zC,quickRows as JC,breadcrumb as jC,linkTo as QC,linkToRow as qC,parseLink as ZC,valueOf as $C,setValue as eM,effectiveValue as rM,describeValue as oM,SETTINGS_OPEN_DEFAULT as tM,settingsOpenMode as aM,searchSettings as iM,statusOf as sM,statusAll as nM,homeChecklist as lM,gateOf as SM,sectionOfRow as EM}from"./settings-registry.js";import{pointsAtGateway as cM,destinationFromEndpoint as pM,destinationFromAgent as TM,availableDestinations as dM,seedDestinations as _M,shouldSeedDestinations as AM,mergeEndpointDestinations as RM}from"./gateway-dests.js";import{McpClient as IM,mcpProvider as uM}from"./mcp-client.js";import{mcpSharedSystem as NM,mcpInventorySystem as gM,sourceCitationSystem as CM,combineSystemPrompt as MM,toolStatus as PM,widgetAuthoringSystem as LM,vaultWidgetSystem as xM,wantsVaultGuidance as hM}from"./tool-hints.js";import{adaptiveToolRetryHint as DM,createAdaptiveToolPolicy as yM,isInvalidToolParametersResult as kM}from"./adaptive-tool-policy.js";import{getMcpProviders as bM,testMcpServer as vM,resetMcp as wM,mcpBackoff as BM}from"./mcp-manager.js";import{SIDELINE_COMMANDS as HM,BRINGBACK_COMMAND as KM,THREAD_TOOL_NAME as VM,SIDELINE_SLASH_ITEMS as WM,THREAD_TOOL_SPEC as XM,parseSideline as YM,parseBringBack as zM,resolveSidelineTarget as JM,threadManifest as jM,threadToolProvider as QM,readThread as qM,briefPrompt as ZM,foldBackNote as $M,foldNotes as eP,nextSidelineIndex as rP,sourceOf as oP,noteUnits as tP,sidelinePath as aP,foldBackFor as iP,SIDELINE_TOOL_NAME as sP,SIDELINE_TOOL_SPEC as nP,sidelineToolProvider as lP}from"./sideline.js";import{WEATHER_TOOL_NAME as EP,WEATHER_TOOL_SYSTEM as mP,weatherToolProvider as cP,weatherFromSearch as pP}from"./weather-tool.js";import{DECIDE_TOOL_NAME as dP,RERANK_TOOL_NAME as _P,CAPABILITY_TOOLS_SYSTEM as AP,capabilityToolsProvider as RP}from"./capability-tools.js";import{openDecision as IP,distributionConfidence as uP}from"./open-decision.js";import{IN_PROCESS_IDS as NP,inProcessView as gP,capabilityView as CP,choicePatch as MP,choiceNote as PP,inProcessPatch as LP}from"./runtime-in-process.js";import{renderContent as hP,toChatMessages as FP,toMultimodalMessages as DP,imageAttachmentsOf as yP,deferAttachedSources as kP,withSourceTool as UP,SOURCE_TOOL_SPEC as bP}from"./context-attachments.js";import{prefetchPlan as wP,prefetchAttachment as BP,lookupResult as GP,lookupLabel as HP,runResearchItem as KP,weatherPlace as VP,weatherFollowupPlace as WP,newsAsk as XP,pageAsk as YP,answeredByPrefetch as zP,webRedoAsk as JP,aboutOwnPast as jP,offeredSearch as QP,prefetchBudgetMs as qP}from"./prefetch.js";import{createFetchedStore as $P,withFetchedMemo as eL,fetchKey as rL,fetchTitle as oL,fetchedAsSources as tL,fetchedFacts as aL,defaultTtl as iL,exchangeOf as sL,FETCHED_TTL_MS as nL}from"./fetched.js";import{windowOf as SL,fitFor as EL,keepRecentFor as mL,minWindowFor as cL,isContextLimitError as pL,FIT_HEADROOM as TL,SMALL_WINDOW as dL,isSmallWindow as _L,SMALL_WINDOW_ROUNDS as AL}from"./context-window.js";import{planCompaction as fL,compactionPrompt as IL,compactionRecord as uL,messagesAfter as OL,systemWithSummary as NL,compactable as gL,COMPACTION_SYSTEM as CL}from"./compaction.js";import{selectContext as PL}from"./context-select.js";import{withoutOwnInstructions as xL}from"./own-instructions.js";import{digest as FL,needsWhole as DL}from"./digest.js";import{planRetrieval as kL,toolsWanted as UL,worldAnswered as bL,worldPlanned as vL,toolPlan as wL,contextPlan as BL,historyContext as GL,HISTORY_NOTE as HL,placeItems as KL,planTurn as VL}from"./retrieval-plan.js";import{intentNeeds as XL,intentSchema as YL,intentPrompt as zL,intentFromReply as JL,intentItems as jL,wantsIntent as QL,wantsDecision as qL,decideIntent as ZL,questionsIn as $L,partQueries as ex,MAX_PARTS as rx,EXPECTS as ox,expectsOf as tx}from"./turn-intent.js";import{figuresIn as ix,unsupportedFigures as sx,unsupportedNote as nx,groundingNote as lx,turnGroundingNote as Sx}from"./answer-grounding.js";import{turnFlow as mx,turnFlowChart as cx,flowWorthDrawing as px,stepAction as Tx,stepState as dx}from"./turn-flow.js";import{runTurnPipeline as Ax,finishTurn as Rx,routeByRule as fx,defineLane as Ix,listLanes as ux,TURN_STAGES as Ox}from"./turn-pipeline.js";import{gatherItems as gx,isMiss as Cx,isWebSearch as Mx,GATHER_LIMITS as Px}from"./turn-gather.js";import{TURN_EVENTS as xx,createTurnEvents as hx,activityOf as Fx,applyStateDelta as Dx}from"./turn-events.js";import{QUESTION_PLAN_LIMITS as kx,SEARCH_UNAVAILABLE as Ux,factSchema as bx,factSchemaFor as vx,partsOf as wx,plainEvidence as Bx,evidenceFor as Gx,rankedEvidence as Hx,factPrompt as Kx,fitsExpected as Vx,snapQuote as Wx,standsOn as Xx,subjectsOf as Yx,factFromReply as zx,carried as Jx,againQuery as jx,pointsBack as Qx,dependsOn as qx,partsPlan as Zx,notFoundLines as $x,factsList as eh,sourcesOf as rh,finishAnswer as oh,gatherFacts as th}from"./question-plan.js";import{createCassette as ih,gradeAnswer as sh,scoreRuns as nh,textKey as lh,ReplayMiss as Sh}from"./turn-replay.js";import{asksIdentity as mh,identitySystem as ch,identityHint as ph}from"./identity.js";import{splitBlocks as dh,mergeNote as _h,syncNote as Ah,conflictsIn as Rh,resolveConflict as fh}from"./note-merge.js";import{STITCH_LIMITS as uh,CUT_FINISH as Oh,partChars as Nh,splitForWindow as gh,partPrompt as Ch,mapParts as Mh,reduceNotes as Ph,fitAttachments as Lh,isNone as xh,continuationMessages as hh,trimOverlap as Fh,withStitching as Dh,CONTINUE_TEXT as yh}from"./stitch.js";import{presenceFor as Uh,presenceDelta as bh,reachOf as vh,withPresence as wh,presenceBlock as Bh,roundCount as Gh,roundMinutes as Hh,PRESENCE_BUDGET_TOKENS as Kh,PRESENCE_KINDS as Vh}from"./presence.js";import{PolicyError as Xh,POLICY_VERSION as Yh,POLICY_TOKEN_TYPE as zh,REDACTION_TIERS as Jh,LOCKABLE as jh,FEATURES as Qh,PERMISSION_MODES as qh,PRODUCT_HOSTS as Zh,normalizeOrgPolicy as $h,endpointAllowed as eF,modelAllowed as rF,agentAllowed as oF,permissionMode as tF,routeAllowed as aF,redactionTier as iF,egressAllowed as sF,settingLocked as nF,featureEnabled as lF,applyPolicyToSettings as SF,policyLabel as EF,policyHash as mF,verifyPolicyToken as cF,globToRegExp as pF}from"./policy.js";import{languageInstruction as dF,RESPONSE_LANGUAGES as _F}from"./response-language.js";import{NOTE_TOOL_SPECS as RF,makeNoteToolExecutor as fF}from"./note-tool.js";import{memoryToolProvider as uF}from"./memory-tool.js";import{captureFromMessage as NF}from"./memory-capture.js";import{skillRunFromSkill as CF,skillPackageFiles as MF,filterMcpServersForSkill as PF,skillToolSystem as LF,skillHandle as xF,rankSkills as hF,skillCatalogSystem as FF}from"./skill-runtime.js";import{skillFileProvider as yF,SKILL_FILE_TOOL as kF,skillEntry as UF,skillDiscoveryProvider as bF}from"./skill-files.js";import{SKILL_DRAFT_SCHEMA as wF,MAX_SKILL_FILE_BYTES as BF,MAX_SKILL_PACKAGE_BYTES as GF,skillCreatorPrompt as HF,skillIdFrom as KF,admitPackage as VF,skillFromDraft as WF,packagesFromFiles as XF}from"./skill-creator.js";import{PATH_KIND as zF,FILES_TOOL as JF,checkAttachablePath as jF,secretReason as QF,isSecretPath as qF,pathAttachment as ZF,describeAttachedPath as $F,describePathSize as eD,displayPath as rD,pathAttachmentsOf as oD,withAbsolutePaths as tD,attachedFilesProvider as aD,sniffType as iD,normalizePath as sD,collapseDots as nD,basenameOf as lD,SKIP_DIR_NAMES as SD}from"./attached-paths.js";import{EXTRACT_ROUTE as mD,EXTRACT_PROVIDER_ID as cD,MAX_DOCUMENT_BYTES as pD,PAGE_CHARS as TD,EXTRACT_TYPES as dD,validateExtractRequest as _D,validateExtractResponse as AD,paginateText as RD,gatewayExtractor as fD,extractorChain as ID}from"./extract-capability.js";import{MCP_REGISTRY_API as OD,MCP_CATALOG as ND,registryListUrl as gD,fetchMcpRegistryPage as CD,normalizeRegistryPage as MD,normalizeRegistryEntry as PD,mcpServerFromCatalogItem as LD}from"./mcp-registry.js";import{CE_SPECVERSION as hD,CE_TYPE_PREFIX as FD,CE_SOURCE_PREFIX as DD,rfc3339 as yD,ceSourceOf as kD,ceHostOf as UD,toCloudEvent as bD,fromCloudEvent as vD,toCloudEventLines as wD,fromCloudEventLines as BD,toCloudEventBatch as GD}from"./cloudevents.js";import{PUSH_LIMITS as KD,planEventPush as VD,ingestCloudEvents as WD,cursorOf as XD}from"./event-sync.js";import{eventStats as zD,projectYear as JD}from"./event-stats.js";import{SEALED_TYPE as QD,SEALED_VERSION as qD,SealError as ZD,webCryptoSealer as $D,nodeSealer as ey,newDeviceKey as ry,sealBlob as oy,openBlob as ty,shredBlob as ay,isSealedBlob as iy,isShredded as sy}from"./blob-envelope.js";import{USAGE_RING_MAX as ly,COST_BASES as Sy,usageRecord as Ey,usageFromEvent as my,usageFromOpenAi as cy,rollupKey as py,applyUsage as Ty,summarizeUsage as dy,formatTurnUsage as _y,describeTurnUsage as Ay,promptTokensOf as Ry}from"./usage.js";import{rateFor as Iy,costFor as uy,formatUsd as Oy,PRICING_BASES as Ny,PRICING_LABELS as gy,normalizePricing as Cy,priceUsage as My}from"./usage-pricing.js";import{FACTCHECK_SCHEMA as Ly,FACTCHECK_VERDICTS as xy,lastClaimOf as hy,factcheckPrompt as Fy,factcheckVerdict as Dy,factcheckKey as yy}from"./cowriter-factcheck.js";import{createVoiceLoop as Uy,VOICE_STATES as by,MUTE_GRACE_MS as vy,MAX_PENDING_CHARS as wy,CONTINUATION_WINDOW_MS as By,ECHO_OVERLAP as Gy,ECHO_TAIL_MS as Hy,MIN_BARGE_IN_WORDS as Ky,looksLikeEcho as Vy}from"./voice-loop.js";import{voiceStep as Xy,initialVoiceState as Yy,voiceSpeaker as zy,isFarewell as Jy,ANOTHER_VOICE as jy}from"./voice-brain.js";import{speakStream as qy,speakable as Zy,SPOKEN_REPLY_HINT as $y}from"./speak-stream.js";import{createVad as rk,lowBandEnergy as ok,pcmEnergy as tk,VAD_DEFAULTS as ak}from"./voice-vad.js";import{HF_API as sk,TTS_ARCH_LABEL as nk,ttsArchOf as lk,partitionTtsModels as Sk,modelSearchUrl as Ek,searchModels as mk,normalizeModel as ck,formatDownloads as pk,describeSearchResult as Tk}from"./model-registry.js";import{SAMPLE_RATE as _k,MIN_SECONDS as Ak,TARGET_SECONDS as Rk,MAX_SECONDS as fk,PROMPT_TEXT as Ik,sampleSeconds as uk,sampleTooShort as Ok,defaultVoiceName as Nk,microphoneError as gk,webMedia as Ck,startRecording as Mk}from"./voice-sample.js";import{TIER_LABEL as Lk,modelRows as xk,catalogStatus as hk,dtypePicker as Fk,voicePicker as Dk,voiceListRows as yk,diarizeRows as kk,switchOutcome as Uk,saveVoiceFailure as bk,saveTimedOut as vk,catalogUnavailable as wk}from"./voice-models.js";import{dictToText as Gk,textToDict as Hk}from"./redaction-dictionary.js";import{groupRuns as Vk,summarizeRun as Wk,findRepeats as Xk,withCost as Yk,verdict as zk,toSanitizedReport as Jk}from"./run-details.js";import{parseMcpConfig as Qk,parseArgsInput as qk,argsToText as Zk,parseEnvInput as $k,envToText as eU,envLikeArgs as rU}from"./mcp-config-import.js";import{mutableRef as tU,refreshArgs as aU,canRefresh as iU,describeRuntime as sU}from"./mcp-launcher.js";import{defaultMcpServers as lU,isDefaultMcpServer as SU}from"./default-mcp-servers.js";import{MONITOR_SOURCES as mU,DEFAULT_MONITOR_PROFILE as cU,monitorProfile as pU,monitorWindowMs as TU,monitorNeedsTools as dU,filterMonitorTools as _U,recentFindings as AU,describeMonitorProfile as RU}from"./monitor-profile.js";import{NOTHING_NEW as IU,isNothingNew as uU,accumulates as OU,priorFindingsText as NU,deltaInstruction as gU,monitorPrompt as CU,applyMonitorReply as MU}from"./monitor-turn.js";import{defaultSkills as LU,meetingNotesSkill as xU}from"./default-skills.js";import{SURFACES as FU,FEATURES as DU,listFeatures as yU,featureIds as kU}from"./feature-map.js";import{ISSUE_REPO as bU,NEW_ISSUE_BASE as vU,ISSUE_SEARCH_API as wU,MAX_ISSUE_URL as BU,scrubReportText as GU,diagnosticsText as HU,buildBugReport as KU,newIssueUrl as VU,titleTerms as WU,issueSearchUrl as XU,matchIssues as YU,findExistingIssues as zU,issueCommentText as JU}from"./bug-report.js";import{WEB_RESEARCH_LIMITS as QU,WEB_TASK_DOMAINS as qU,researchAsk as ZU,refineQueries as $U,parseSearchText as eb,cleanUrl as rb,pageKey as ob,passagesOf as tb,webResearch as ab,researchBrief as ib,researchCall as sb,runResearch as nb}from"./web-research.js";import{parseAmount as Sb,moneyIn as Eb,basisAt as mb,qualifierAt as cb,quoteAround as pb,offersIn as Tb,rankOffers as db,comparable as _b,basisLabel as Ab,formatValue as Rb,unverifiedAmounts as fb,quoteFormIn as Ib}from"./offers.js";import{isSecretField as Ob,maskSecretFields as Nb,isPersonalField as gb,commitKind as Cb,commitQuestion as Mb,captchaIn as Pb,captchaHandoff as Lb,fenceUntrusted as xb,isFenced as hb}from"./page-guard.js";import{BROWSER_RELAY as Db,BROWSER_KINDS as yb,validateBrowserCall as kb,validateBrowserAnnounce as Ub,validateBrowserResult as bb,createBrowserRelay as vb,browserRelaySystem as wb}from"./browser-relay.js";export{za as ACCESS_LOG_MAX,Ya as ACCESS_LOG_VERSION,i as ACTOR_KINDS,Cd as AGENT_ID_RE,rp as AGENT_REF_RE,dR as ALLOW_ALL,a as ALL_TYPES,bR as AMBIENT_KINDS,mf as AMBIENT_MAX_WORDS,jy as ANOTHER_VOICE,yN as API_BASE,Md as APPLIES_TO,Mp as ASK_TYPES,Ld as ASSISTANT_ID,In as ASSISTANT_NAME,II as AUTOCOMPLETE_MAX_TOKENS,fI as AUTOCOMPLETE_SYSTEM,uI as AUTOCOMPLETE_TEMPERATURE,FT as AUTONOMY,ii as AdapterError,xd as AgentError,An as AnalyzerError,TO as BACKUP_KDF_ITERATIONS,Up as BOARD_TOOL_NAME,KC as BOOKKEEPING_KEYS,Mt as BRIEF_STATES,KM as BRINGBACK_COMMAND,yb as BROWSER_KINDS,Db as BROWSER_RELAY,Bc as BUDGET_DIMENSIONS,DI as BUG_REPORT_SLASH_ITEMS,qs as BUILTIN_TRIGGERS,Bn as BUILTIN_VOICE_INTENTS,pO as BackupError,wc as BudgetError,_n as CADENCES,AP as CAPABILITY_TOOLS_SYSTEM,DD as CE_SOURCE_PREFIX,hD as CE_SPECVERSION,FD as CE_TYPE_PREFIX,yT as CHECKS,Pt as CLAIM_KINDS,n as CLASSES,oO as CLOCK_TOLERANCE_MS,CL as COMPACTION_SYSTEM,cO as COMPRESSIONS,_c as COMPRESSION_MODES,By as CONTINUATION_WINDOW_MS,yh as CONTINUE_TEXT,tE as COOLDOWN_MS,Sy as COST_BASES,HN as COUNTED,Tr as COWRITER_SYSTEM,dr as COWRITER_TEMPERATURE,o as CURRENT_VERSION,Oh as CUT_FINISH,uN as DARK,FR as DATA_SCOPES,Xg as DATE_PRESETS,On as DAYPART_HOUR,dP as DECIDE_TOOL_NAME,Yd as DECLINE_REASONS,Ve as DEFAULT_API_ENGINES,bp as DEFAULT_ASK_TIMEOUT_MS,GR as DEFAULT_BLOCK_CHARS,Ac as DEFAULT_COMPRESSION,hT as DEFAULT_GATE,ls as DEFAULT_INTERNAL_PATTERNS,fs as DEFAULT_LOCK_MS,LE as DEFAULT_MAX_FINISH_TRIES,BR as DEFAULT_MAX_MEMORIES,PE as DEFAULT_MAX_ROUNDS,A_ as DEFAULT_MIN_CALLS,cU as DEFAULT_MONITOR_PROFILE,DO as DEFAULT_POLICY,KE as DEFAULT_SHIELD,VE as DEFAULT_STORE,lt as DEFAULT_THRESHOLD,fn as DEFAULT_WAKE,Xm as DESCRIBE_ACTION,hC as DESKTOP_SECTION_IDS,Gy as ECHO_OVERLAP,Hy as ECHO_TAIL_MS,l as EFFECTS,S as EGRESS,Pd as EGRESS_CLASSES,mO as ENCRYPTED_TYPE,kN as ENDPOINTS,_o as ENGINES_REV,co as ENGINE_KINDS,dd as ENGINE_SPEC_KINDS,Rl as ENTITIES_SCHEMA,UN as ENTITLEMENT_PUBLIC_JWK,Al as ENTITY_TYPES,fi as ENTRY_KINDS,VO as ENTRY_VERSION,t as EVENT_TYPES,zT as EXECUTIVE,FE as EXHAUSTED_NOTE,ox as EXPECTS,cD as EXTRACT_PROVIDER_ID,mD as EXTRACT_ROUTE,dD as EXTRACT_TYPES,XN as EntitlementError,E as EventError,Ly as FACTCHECK_SCHEMA,xy as FACTCHECK_VERDICTS,Yi as FAILOVER_CAPABILITY_GAP,Xi as FAILOVER_CLASS_GAP,SE as FAILOVER_MAX_ATTEMPTS,BO as FAST_FLUSH_MS,GO as FAST_STREAK,Qh as FEATURES,DU as FEATURE_MAP,FU as FEATURE_SURFACES,vN as FEATURE_TIER,nL as FETCHED_TTL_MS,Dl as FIELD_TYPES,JF as FILES_TOOL,Ip as FINDINGS_SCHEMA,up as FINDING_KINDS,Tm as FIND_ACTION,rc as FIND_DESCRIPTION,oc as FIND_RESIDENT,ec as FIND_TOOL_NAME,xE as FINISH_NUDGES,TL as FIT_HEADROOM,GN as FREE_LIMITS,uf as FRONT_PAGES,um as FUSED_BUDGET_MS,Im as FUSED_CANDIDATES,Px as GATHER_LIMITS,NI as GEARS,cI as GOAL_MIN_NEW,Zc as GRANTABLE,zA as GRANT_INFO,ep as GRANT_RE,sk as HF_API,HL as HISTORY_NOTE,Cm as HUB_TOOL_NAME,DT as HUMAN_FLAGS,$S as INPUT_PROGRESS_TOOLS,TC as INSIGHT_KINDS,EI as INSTRUCTION_RE,Ss as INTERNAL_PATTERN_CATALOG,eo as INVARIANTS,NP as IN_PROCESS_IDS,bU as ISSUE_REPO,wU as ISSUE_SEARCH_API,Hs as JOB_ACTIONS,gT as JOB_POST_ID_RE,NT as JOB_POST_STATUSES,QO as JOURNAL_BOUNDS,OT as JobPostError,KO as JournalError,Rs as KDF_HASH,As as KDF_ITERATIONS,pR as KernelError,Xd as LEDGER_ENTRY_KINDS,Wd as LEDGER_VERSION,IN as LIGHT,Yp as LIVE_RUN_STATUSES,jh as LOCKABLE,hE as LOOPING_NUDGE,hi as LOOP_KINDS,Gu as LibraryError,Fi as LoopError,Ft as MAX_BRIEF_CHARS,ht as MAX_BRIEF_RECORDS,Lt as MAX_CLAIMS,xt as MAX_CLAIM_REFS,un as MAX_COMMANDS_PER_DELTA,fA as MAX_DEPTH,pD as MAX_DOCUMENT_BYTES,gs as MAX_ENTRIES,Jt as MAX_EXCERPTS,jt as MAX_EXCERPT_CHARS,tr as MAX_GRAPH_NODES,BU as MAX_ISSUE_URL,JT as MAX_JOBS_PER_ROUND,xR as MAX_MATCHES,vR as MAX_MEMORY_CHARS,Os as MAX_NOTE_CHARS,Tg as MAX_NOTE_IMAGE_BYTES,rx as MAX_PARTS,wy as MAX_PENDING_CHARS,jT as MAX_ROUNDS,fk as MAX_SECONDS,Ns as MAX_SECRET_CHARS,BF as MAX_SKILL_FILE_BYTES,GF as MAX_SKILL_PACKAGE_BYTES,St as MAX_SUBJECTS,Et as MAX_SUBJECT_CHARS,RA as MAX_SUBTASKS,gl as MAX_SUGGESTIONS,Cl as MAX_SUGGESTION_CHARS,zt as MAX_SYNTHESIS_CLAIMS,au as MAX_TAGS,tu as MAX_TAG_LENGTH,us as MAX_TITLE_CHARS,Bu as MAX_TITLE_LEN,Nu as MAX_TITLE_LENGTH,nl as MAX_TOPICS,ll as MAX_TOPIC_CHARS,ND as MCP_CATALOG,OD as MCP_REGISTRY_API,TS as MCP_SIGN_IN_CODE,iR as MCP_TOOL_NAME,kR as MEMORY_KINDS,UR as MEMORY_KIND_NAMES,KR as MEMORY_TOOL_SPEC,VR as MEMORY_UPCASTERS,yR as MEMORY_VERSION,Qc as MERGE_POLICIES,Ky as MIN_BARGE_IN_WORDS,e_ as MIN_FIT,wR as MIN_MEMORY_CHARS,Ak as MIN_SECONDS,IA as MIN_TAKEUP_FIT,Ks as MISSED_POLICIES,NC as MOMENT_BADGES,mU as MONITOR_SOURCES,vy as MUTE_GRACE_MS,lR as ManifestError,IM as McpClient,WR as MemoryError,Ia as NEAR_TITLE_DISTANCE,vU as NEW_ISSUE_BASE,hI as NEW_THREAD_SLASH_ITEMS,H as NOTE_ACTIONS,W as NOTE_ACTION_ERRORS,K as NOTE_ACTION_ORDER,V as NOTE_ACTION_TEMPERATURE,X as NOTE_COMMANDS,z as NOTE_COMMAND_MAX_TOKENS,Y as NOTE_COMMAND_TEMPERATURE,pg as NOTE_IMAGE_SCHEME,dg as NOTE_IMAGE_TYPES,uC as NOTE_SECTIONS,RF as NOTE_TOOL_SPECS,IU as NOTHING_NEW,ZS as OBSERVATION_TOOLS,cN as OMNI_GRAMMAR,mN as OMNI_MODES,he as PACER_DEFAULTS,TD as PAGE_CHARS,ON as PALETTES,HS as PARALLEL_LOCAL_RE,zF as PATH_KIND,Na as PDF_MAX_CHARS,YE as PERMISSION_ANSWERS,XE as PERMISSION_EVENT,qh as PERMISSION_MODES,zE as PERMISSION_TIMEOUT_MS,JE as PERMISSION_TOOL_NAME,DN as PLANS,Mr as PLAN_AUTHORS,Lr as PLAN_DECOMPOSE_MAX_TOKENS,Pr as PLAN_DECOMPOSE_SYSTEM,xr as PLAN_DECOMPOSE_TEMPERATURE,qc as PLAN_MODES,Cr as PLAN_ROLES,hr as PLAN_SECTION_MAX_TOKENS,Fr as PLAN_SECTION_TEMPERATURE,zh as POLICY_TOKEN_TYPE,Yh as POLICY_VERSION,gp as POST_KINDS,Cp as POST_STATUSES,LC as PREF_SECTIONS,xC as PREF_SECTION_IDS,Kh as PRESENCE_BUDGET_TOKENS,Vh as PRESENCE_KINDS,Ny as PRICING_BASES,gy as PRICING_LABELS,Zh as PRODUCT_HOSTS,mT as PROJECT_ID_RE,WT as PROJECT_JOBS_SCHEMA,XT as PROJECT_REVIEW_SCHEMA,QT as PROJECT_RUN_STATUSES,ET as PROJECT_STATUSES,Ik as PROMPT_TEXT,qt as PROPOSAL_STATES,wN as PRO_FEATURES,lS as PUBLIC_REGISTRY,KD as PUSH_LIMITS,Xh as PolicyError,ST as ProjectError,YT as ProjectRunError,kx as QUESTION_PLAN_LIMITS,Br as REACH,WN as RECHECK_INTERVAL_MS,Pc as RECIPE_MODES,Dc as RECIPE_TOOL_NAME,pd as RECORD_ENGINE_KINDS,wu as RECORD_KINDS,RO as RECORD_TYPE,$d as RECRUIT_SCHEMA,Jh as REDACTION_TIERS,ft as REDACTION_TOKEN_TYPES,Xn as REFINEMENT_SCHEMA,d as REF_KINDS,no as REGISTRY_STATES,TR as REQUIRED_PLUGINS,HC as REQUIREMENTS,_P as RERANK_TOOL_NAME,_ as RESOLUTION,_F as RESPONSE_LANGUAGES,yl as RESPONSE_MODES,Ie as RESULTS_PER_ENGINE,HE as RESULT_TOOL_NAME,zp as RESUMABLE_RUN_STATUSES,ci as RETRIEVAL_TOOLS,Bm as REVEAL,md as ROLE_KINDS,jc as ROLE_MODES,QA as ROSTER_KINDS,DE as ROUND_SEPARATOR,_d as ROUTE_PREFERS,J_ as RUN_STATUSES,Mc as RecipeError,Sh as ReplayMiss,Ji as RouterError,Ts as RuleError,HR as SAME_FACT,_k as SAMPLE_RATE,Bs as SCHEDULE_KINDS,u_ as SCM_KINDS,s as SCOPE_KINDS,Ed as SCORECARD_ENTRY_KINDS,cd as SCORECARD_VERSION,QD as SEALED_TYPE,qD as SEALED_VERSION,be as SEARCH_API_PRESETS,fe as SEARCH_ENGINES,Qe as SEARCH_STATUS,Ux as SEARCH_UNAVAILABLE,iN as SEGMENT_RE,ut as SELF_LABELS,BC as SETTINGS_GROUPS,tM as SETTINGS_OPEN_DEFAULT,GC as SETTINGS_PAGES,NN as SHAPE,HM as SIDELINE_COMMANDS,WM as SIDELINE_SLASH_ITEMS,sP as SIDELINE_TOOL_NAME,nP as SIDELINE_TOOL_SPEC,xf as SKILL_CONTEXTS,wF as SKILL_DRAFT_SCHEMA,yf as SKILL_FILE_KINDS,kF as SKILL_FILE_TOOL,hf as SKILL_HISTORY_SCOPES,Lf as SKILL_MANIFEST_VERSION,Ff as SKILL_MCP_MODES,Df as SKILL_TRUST,kf as SKILL_UPCASTERS,Qf as SKILL_VARS,qf as SKILL_VAR_NAMES,SD as SKIP_DIR_NAMES,xI as SLASH_TYPING_RE,wO as SLOW_FLUSH_MS,yO as SLOW_POLICY,dL as SMALL_WINDOW,AL as SMALL_WINDOW_ROUNDS,JA as SOLO_BUDGET,vg as SORT_LABELS,bg as SORT_MODES,SR as SOURCES,bP as SOURCE_TOOL_SPEC,Nf as SOURCE_TRUST,ua as SPAN_MIN_TERMS,Fg as SPEAKER_SLOTS,$y as SPOKEN_REPLY_HINT,Zp as STALLED_AFTER_MS,wd as STARTER_AGENTS,op as STARTER_TEAMS,G_ as STEP_MAX_CHARS,uh as STITCH_LIMITS,nt as SUBJECT_KINDS,Ml as SUGGESTIONS_SCHEMA,Zt as SUPERSEDE_OVERLAP,ps as SUPPRESSED,ce as SWARM_ROLES,Wt as SYNTHESIS_SCHEMA,Vs as ScheduleError,ZD as SealError,ve as SearchApiError,po as SearchEngineError,Uf as SkillManifestError,gf as SkillSourceError,sI as SkillVarError,kl as StructuredError,tO as SyncError,Rk as TARGET_SECONDS,H_ as TASK_TRANSCRIPT_MAX_CHARS,BN as TEAM_FEATURES,rA as TEAM_MANUAL,pp as TEAM_PLAN_SCHEMA,jA as TEAM_SHAPES,eA as TEAM_TOOL_NAME,fN as THEMES,Op as THREAD_KINDS,Np as THREAD_STATUSES,VM as THREAD_TOOL_NAME,XM as THREAD_TOOL_SPEC,Lk as TIER_LABEL,gu as TITLE_RULES_VERSION,gN as TOKEN_NAMES,CN as TOKEN_ROLES,FS as TOKEN_SKEW_MS,Sl as TOPICS_SCHEMA,Da as TRANSCRIPT_MAX_CHARS,Gs as TRIGGER_KINDS,nk as TTS_ARCH_LABEL,xx as TURN_EVENTS,Ox as TURN_STAGES,Jc as TeamError,z_ as TeamRunError,ho as ToolGroupError,aE as UNAVAILABLE_REASONS,Ou as UNTITLED_MEETING,Vr as UPCASTERS,bN as UPGRADE_URL,ly as USAGE_RING_MAX,il as UTTERANCE_DANGLING_MS,al as UTTERANCE_SETTLE_MS,ak as VAD_DEFAULTS,_s as VAULT_VERSION,by as VOICE_STATES,Is as VaultError,Nn as VoiceIntentError,go as WEATHER_HOST,Co as WEATHER_TIMEOUT_MS,EP as WEATHER_TOOL_NAME,mP as WEATHER_TOOL_SYSTEM,QU as WEB_RESEARCH_LIMITS,nc as WEB_SEARCH_SPEC,ic as WEB_SEARCH_TOOL_NAME,sc as WEB_SEARCH_TOOL_SYSTEM,qU as WEB_TASK_DOMAINS,rt as WIDGET_SURFACES,zd as WITHDRAW_AFTER,nA as WORKLOG_KINDS,$c as WORK_GRANTS,gI as WRITER_PREFS,CI as WRITER_PREF_DEFAULTS,Mo as WeatherError,Fa as YOUTUBE_HOSTS,Di as abortCause,jP as aboutOwnPast,ea as accept,OU as accumulates,Ym as actionMenu,sC as activePreset,Fx as activityOf,bO as adaptProfile,DM as adaptiveToolRetryHint,zg as addDays,lu as addTag,NE as addUsage,sd as adjustSummary,VF as admitPackage,SO as advanceBases,aS as adviceText,jx as againQuery,oF as agentAllowed,UA as agentColor,Hd as agentFromForm,kA as agentHue,bA as agentInitials,yA as agentKind,oe as agentMentionAt,dt as aliasMap,zP as answeredByPrefetch,ME as anthropicTranscript,Ke as apiEngine,We as apiEnginesFrom,Je as apiTrialVerdict,AT as applyAll,f_ as applyCard,pr as applyEdits,ZO as applyEntry,MU as applyMonitorReply,SF as applyPolicyToSettings,kC as applySections,Dx as applyStateDelta,Ty as applyUsage,_e as appoint,Oo as areaLabel,Li as argsShape,Zk as argsToText,mh as asksIdentity,_f as asksOnlyAboutPage,yd as assistantAgent,aD as attachedFilesProvider,mo as attemptOrder,od as attest,PS as authHeader,NS as authorizeUrl,dM as availableDestinations,hO as backupFromRecords,kS as bareToolName,lD as basenameOf,mb as basisAt,Ab as basisLabel,PO as bestCodec,Gd as blankAgent,h_ as blankConnection,IT as blankJobPost,aT as blankProject,ap as blankTeam,qS as blockedToolResult,Ap as boardText,Fp as boardToolProvider,Dp as boardToolSpec,sN as boundSegments,M_ as branchFor,jC as breadcrumb,cp as breakCycles,yt as briefId,bt as briefLinks,ZM as briefPrompt,Ut as briefTerms,kt as briefToText,wb as browserRelaySystem,Ge as buildApiRequest,KU as buildBugReport,zm as buildGroupDispatchSpec,ar as buildNoteGraph,xa as buildPdfDocument,ue as buildSearchUrl,Vm as buildToolset,Ti as buildTrajectory,Va as buildTranscriptDocument,KA as builtinOrg,qN as can,Us as canAddEntry,_T as canJobPostTransition,tT as canProjectTransition,iU as canRefresh,US as canRunConcurrently,jr as canSatisfy,qR as candidatesFrom,ZT as canonical,RS as canonicalResource,RP as capabilityToolsProvider,CP as capabilityView,Lb as captchaHandoff,Pb as captchaIn,Ua as captionTracksFromPlayerResponse,NF as captureFromMessage,wA as cardNumbers,R_ as cardOverride,Jx as carried,p_ as carveBudget,hk as catalogStatus,wk as catalogUnavailable,SN as catchUpPlan,N as causesAreWellFormed,UD as ceHostOf,kD as ceSourceOf,vC as changedSections,jF as checkAttachablePath,$r as checkInvariants,vt as checkKnowledgeInvariants,YN as checkoutUrl,Wp as checkpointFrom,B as chipText,PP as choiceNote,MP as choicePatch,Yt as claimsFromSynthesis,Fe as classifyAnswer,rE as classifyFailure,Te as classifyModel,os as classifySource,am as claudePermissionResponse,Cu as cleanTitle,rb as cleanUrl,OI as clipCompletion,b_ as clipMessage,mn as clipText,U_ as clipTranscript,Wl as coerce,Ol as coerceEntities,nD as collapseDots,MM as combineSystemPrompt,Z as commandLineAt,rl as commandLooksFinished,Ln as commandsFromSegments,Cb as commitKind,Mb as commitQuestion,BE as compactValue,gL as compactable,IL as compactionPrompt,uL as compactionRecord,_b as comparable,O as compareEvents,OR as compileQuery,gn as compileWake,w as composerChips,cc as compressToolSpec,pc as compressToolSpecs,Tc as compressionStats,C_ as connectionFor,F_ as connectionFromForm,QR as containment,Dt as contentHash,BL as contextPlan,hh as continuationMessages,w_ as continuationNote,JI as continueList,ta as converge,uy as costFor,Qa as createAccessLog,ai as createAdapterRegistry,yM as createAdaptiveToolPolicy,dn as createAnalyzerRegistry,yp as createAnswerBox,p as createAppender,ao as createBlobStore,dp as createBoard,vb as createBrowserRelay,kc as createBudget,RE as createCallRunner,ih as createCassette,mi as createCitationCollector,B_ as createControl,De as createEnginePacer,$P as createFetchedStore,HO as createJournal,mR as createKernel,to as createLogStore,nR as createManifest,oo as createMemoryAdapter,oE as createModelHealth,wi as createModelRouter,nm as createPermissionDesk,so as createRegistry,kE as createResultStore,cs as createRuleEngine,wp as createRunCache,qO as createSegment,Mf as createSkillSourceRegistry,TI as createSpendMeter,Pi as createStepRecorder,Yl as createStructuredStream,xo as createToolGroupRegistry,YS as createToolLoopGuard,Qs as createTriggerRegistry,hx as createTurnEvents,Mi as createTurnRunner,tl as createUtteranceGate,rk as createVad,Cs as createVault,vn as createVoiceIntentRegistry,Uy as createVoiceLoop,L_ as credentialEnv,PN as cssVarName,XD as cursorOf,iC as dateFilterLabel,Qg as dateRangeOf,Hg as dayBucket,EC as dayCounts,Jg as dayKey,iO as decide,ZL as decideIntent,S_ as decideRecruit,Hf as declaredAccess,_O as decryptBackup,mg as defaultImagePolicy,Eg as defaultLinkPolicy,lU as defaultMcpServers,y as defaultModelId,LU as defaultSkills,iL as defaultTtl,wn as defaultVoiceIntents,Nk as defaultVoiceName,kP as deferAttachedSources,ti as defineAdapter,Dd as defineAgent,nn as defineJob,dT as defineJobPost,Ix as defineLane,xi as defineLoop,Tn as defineMeetingAnalyzer,bi as defineMiddleware,Ui as defineModel,oT as defineProject,vi as defineRouteStrategy,ms as defineRule,Ul as defineSchema,we as defineSearchApi,So as defineSearchEngine,Cf as defineSkillSource,Hc as defineTeam,Lo as defineToolGroup,js as defineTrigger,bn as defineVoiceIntent,gU as deltaInstruction,IC as demd,Mg as densityRibbon,qx as dependsOn,P as dequeue,fO as deriveBackupKey,Gt as deriveBrief,Ht as deriveBriefs,Ps as deriveKey,Du as deriveMeetingTitle,ju as deriveTitle,Ud as describeAgent,$F as describeAttachedPath,sA as describeCall,x_ as describeConnection,aC as describeDateRange,Od as describeEngine,RU as describeMonitorProfile,eD as describePathSize,$E as describePermission,Fc as describeRecipeForApproval,zc as describeRole,sU as describeRuntime,bl as describeSchema,Tk as describeSearchResult,oM as describeSettingValue,wE as describeShape,jp as describeSpend,$_ as describeTeamForApproval,hA as describeTeamShape,uE as describeToolCall,Ay as describeTurnUsage,TM as destinationFromAgent,pM as destinationFromEndpoint,HU as diagnosticsText,kk as diarizeRows,Gk as dictToText,oa as diffProposal,FL as digest,LS as discoverMcpAuth,Ri as displayName,rD as displayPath,uP as distributionConfidence,eu as docStats,_I as draftSeparator,Kt as driftedRefs,Nc as dryRunRecipe,X_ as dryRunTeam,Fk as dtypePicker,ln as dueJobs,pa as duplicateTitles,At as earnsBrief,Un as editDistance,cr as editKey,LT as effectiveGate,$o as effectiveGrants,rM as effectiveSettingValue,BS as effectiveToolName,ir as egoGraph,sF as egressAllowed,Pp as emptyBoardState,sT as emptyProjectRecord,Hp as emptyRun,UI as enabledSkills,dO as encryptBackup,eF as endpointAllowed,ld as engineKey,ud as engineKeyOf,er as engineLabel,kd as engineOf,Me as engineOrder,Id as engineRef,r_ as engineRow,o_ as engineRows,oR as engineStrip,i_ as engineWorth,Il as entitiesFormat,fl as entitiesPrompt,Nl as entitiesStream,Fs as entryMeta,JO as entryStamp,rU as envLikeArgs,eU as envToText,ko as equipmentFor,yi as errorFacts,Zm as estimateTokens,n_ as evaluatorPrompt,zD as eventStats,Gx as evidenceFor,sL as exchangeOf,Ic as expandRecipe,CR as expandReplacement,aI as expandSkillPrompt,tx as expectsOf,oS as explainInstallFailure,Jl as explainMcpError,sg as exportDevicePublicKey,dA as extendDependents,TN as extractFilters,ts as extractUrls,ID as extractorChain,zx as factFromReply,Kx as factPrompt,bx as factSchema,vx as factSchemaFor,yy as factcheckKey,Fy as factcheckPrompt,Dy as factcheckVerdict,eh as factsList,lE as failoverExhausted,Vi as failoverOrder,lF as featureEnabled,kU as featureIds,xb as fenceUntrusted,rL as fetchKey,CD as fetchMcpRegistryPage,hS as fetchMcpToken,oL as fetchTitle,tL as fetchedAsSources,aL as fetchedFacts,ix as figuresIn,tC as filterByDate,Au as filterByTags,Ai as filterEntries,PF as filterMcpServersForSkill,_U as filterMonitorTools,q as filterNoteActions,Gg as filterRecords,D as filterSections,mr as filterTypoEdits,mm as findActionArgs,tc as findDispatchProvider,zU as findExistingIssues,Gl as findJson,NR as findMatches,Zu as findRecordRefs,Xk as findRepeats,WC as findRow,ie as findSkillByName,se as findTargetByName,Sm as findTools,Em as findToolsResult,Mn as findWakeCommand,Rp as findingsInstruction,xp as findingsOf,oh as finishAnswer,Rx as finishTurn,id as fit,Lh as fitAttachments,EL as fitFor,Vx as fitsExpected,lp as fixedPlan,px as flowWorthDrawing,iP as foldBackFor,$M as foldBackNote,Lp as foldBoard,eP as foldNotes,nT as foldProject,Kp as foldRun,lO as forkConflict,Za as formatBytes,eC as formatDateTerm,pk as formatDownloads,RR as formatReport,fa as formatSurvey,cu as formatTag,du as formatTagQuery,hg as formatTalkTime,Ha as formatTimestamp,Ka as formatTranscript,_y as formatTurnUsage,Oy as formatUsd,Rb as formatValue,uo as formatWeather,J as frameNoteAction,KN as freeCap,vs as fromB64,vD as fromCloudEvent,BD as fromCloudEventLines,If as frontPageInstruction,ff as frontPagesAskedAbout,tt as fuseRRF,Am as fusedRanker,xT as gateAllows,fD as gatewayExtractor,tS as gatewayNotBackAdvice,th as gatherFacts,gx as gatherItems,ig as generateDeviceKey,bM as getMcpProviders,Ro as getWeather,el as gistOpening,$n as gistText,pF as globToRegExp,pI as goalDraftAllowed,sh as gradeAnswer,Xc as grantAllows,WA as grantChoices,XA as grantsFromChoices,yo as grantsNeededFor,nr as graphStats,AI as groundingBlock,lx as groundingNote,MC as groupActionsByOwner,YC as groupById,F as groupModels,Vg as groupRecords,Vk as groupRuns,Ga as groupSegments,Zg as hasDateTerms,RC as hasInsights,wo as hasSubstance,nu as hasTag,Tu as hasTagTerms,GL as historyContext,pA as holdsGrants,lM as homeChecklist,of as homePlace,as as hostMatches,vo as housekeepingTarget,gm as hubSpec,gO as identityCodec,ph as identityHint,ch as identitySystem,yP as imageAttachmentsOf,LP as inProcessPatch,gP as inProcessView,jI as indentSelection,WD as ingestCloudEvents,To as inheritEngineDefaults,Yy as initialVoiceState,_C as insightKindOf,ql as installHintFor,mI as instructionOnLine,JL as intentFromReply,jL as intentItems,XL as intentNeeds,zL as intentPrompt,YL as intentSchema,AN as isActionable,No as isAmbiguousLocation,ku as isBetterTitleSource,VA as isBuiltin,bS as isCacheable,pL as isContextLimitError,SU as isDefaultMcpServer,AO as isEncryptedBackup,zO as isEntry,Jy as isFarewell,hb as isFenced,Zn as isFillerSentence,Mu as isGenericTitle,kM as isInvalidToolParametersResult,Bo as isLocalHelper,ys as isLocked,QS as isLoopableTool,Cx as isMiss,Y_ as isModelUnavailable,xh as isNoneNote,Vl as isNothing,uU as isNothingNew,QE as isPermissionTool,gb as isPersonalField,Uo as isPleasantry,jN as isPro,M as isQueued,Vu as isRecordId,It as isRedactionToken,R as isRef,Ne as isResultHost,Xp as isResumable,bf as isSafeSkillPath,iy as isSealedBlob,OO as isSealedRecord,Le as isSearchPage,Ob as isSecretField,qF as isSecretPath,Ot as isSelfLabel,nO as isSettled,sy as isShredded,$g as isSingleDay,kI as isSkillEnabled,_L as isSmallWindow,TE as isSourceGateError,yg as isSpeakerImageValue,Ql as isStaleMcpSession,Tt as isSubjectCandidate,Go as isSystemModel,QN as isTeam,YO as isTombstone,c as isValidEvent,YR as isValidMemory,Xu as isValidStoredRecord,Mx as isWebSearch,ka as isYouTubeUrl,JU as issueCommentText,XU as issueSearchUrl,s_ as jobApplications,TA as jobFromSubtask,uT as jobPostFromForm,wT as jobResults,RT as jobToRole,Sn as jobsForEvent,KT as jobsPrompt,mL as keepRecentFor,NO as keyCache,_i as lanesOf,dF as languageInstruction,hy as lastClaimOf,Lm as lastUserText,Wo as layoutFlowchart,Jd as ledgerKey,og as licenseFromPayload,Ho as lightestLocalHelper,lI as lineAt,u as linearize,ga as linesFromItems,df as linkAttachments,aa as linkClaims,$u as linkRecordRefs,QC as linkTo,qC as linkToRow,ni as linkifyCitations,pf as linksToRead,rI as lintSkillPrompt,Sr as lintText,yU as listFeatures,ux as listLanes,VC as listRows,cC as localeWeekStart,ks as lockedSummary,Vy as looksLikeEcho,La as looksScanned,HP as lookupLabel,GP as lookupResult,ok as lowBandEnergy,ja as makeAccessEvent,qm as makeDispatchProvider,ed as makeEntry,jm as makeGroupDispatchExecutor,WO as makeJournalEntry,Qd as makeLedgerEntry,fF as makeNoteToolExecutor,Dm as makePromptedTranscript,Ku as makeRecordId,A as makeRef,Qi as makeSourceStore,qa as makeStorageTier,Nm as makeToolHub,qi as manifestText,Oc as mapInput,Mh as mapParts,sf as markUsed,Si as markdownUrl,Nb as maskSecretFields,$R as matchForForget,gR as matchIndexFor,YU as matchIssues,wI as matchSlashRecipe,vI as matchSlashSkill,GI as matchSlashTeam,cn as matchSummary,oC as matchesDateRange,_u as matchesTagFilter,BM as mcpBackoff,aR as mcpDispatchProvider,gM as mcpInventorySystem,uM as mcpProvider,LD as mcpServerFromCatalogItem,NM as mcpSharedSystem,cR as meetDecisions,is as meetReach,en as meetingEndedTrigger,AC as meetingInsights,xU as meetingNotesSkill,$s as meetingStartedTrigger,Uu as meetingTitlePrompt,af as memoryBlock,zR as memoryKey,uF as memoryToolProvider,lf as memoryToolSystem,ne as mentionAnswerPrefix,da as mentionsFrom,RM as mergeEndpointDestinations,Ce as mergeEngineResults,_h as mergeNote,Nr as mergeResearchLanes,oN as mergeSegments,ae as mergeSkillPrompt,bC as mergeStamped,k_ as mergeTranscript,OL as messagesAfter,y_ as messagesFor,gk as microphoneError,cL as minWindowFor,$l as missingCommandIn,Zl as missingCommandMessage,PA as missingStarters,Be as missingVars,rF as modelAllowed,xk as modelRows,Ek as modelSearchUrl,k as modelSummary,gC as momentBadge,Eb as moneyIn,Wn as monitorIntent,dU as monitorNeedsTools,pU as monitorProfile,CU as monitorPrompt,TU as monitorWindowMs,SC as monthGrid,L as moveQueued,it as multiSearch,tU as mutableRef,mC as nearbyDays,t_ as needForJob,Gf as needsBridge,vS as needsConfirmation,tg as needsRecheck,tf as needsWhere,DL as needsWhole,ry as newDeviceKey,VU as newIssueUrl,Og as newNoteImageId,v_ as newSteps,XP as newsAsk,Xs as nextFireAt,rP as nextSidelineIndex,zs as nextWakeAt,MO as nodeCodec,nS as nodeSatisfies,ey as nodeSealer,iE as normModelName,Fd as normalizeAgent,bc as normalizeBudget,jd as normalizeCall,N_ as normalizeConnection,nd as normalizeEngine,Rd as normalizeEngineSpec,PT as normalizeGate,Wc as normalizeGrants,PI as normalizeIntent,TT as normalizeJobPost,XR as normalizeMemory,ck as normalizeModel,$h as normalizeOrgPolicy,sD as normalizePath,eS as normalizePlatform,Ad as normalizePolicy,Cy as normalizePricing,rT as normalizeProject,sa as normalizeRecord,na as normalizeRecords,PD as normalizeRegistryEntry,MD as normalizeRegistryPage,SA as normalizeRequest,Sd as normalizeScm,Jf as normalizeSkill,yn as normalizeSpeech,Wu as normalizeStoredRecord,mt as normalizeSubject,iu as normalizeTag,su as normalizeTags,Vc as normalizeTeam,Tl as normalizeTopic,dl as normalizeTopics,gE as normalizeUsage,MI as normalizeWriterPrefs,$x as notFoundLines,Q as noteActionItems,j as noteActionLabel,Rh as noteConflictsIn,_g as noteImageId,Rg as noteImageIds,Ag as noteImageRef,fg as noteImageRefs,Vn as noteIntent,OC as noteSectionKind,tP as noteUnits,iS as npmInstallCommand,ZA as observeInbox,VN as observeSince,$A as observeStrip,En as occurrenceKey,Ys as occurrencesBetween,Pe as offTopic,QP as offeredSearch,Tb as offersIn,cm as oneLiner,CE as openAiTranscript,ty as openBlob,IP as openDecision,xs as openEntry,uO as openRecord,Ca as orderLines,Kf as originLabel,vf as originOf,ug as orphanNoteImages,ca as orphanRecords,YI as outlineOf,pm as overlapRank,lN as overlayEntries,jl as packageFromArgs,XF as packagesFromFiles,YP as pageAsk,XC as pageById,Af as pageInstruction,ob as pageKey,Pa as pageTextFromItems,zC as pagesOf,RD as paginateText,MN as paletteFor,Ma as paragraphsFromLines,GS as parallelEligible,re as parseAgentMention,Sb as parseAmount,qk as parseArgsInput,_S as parseAuthChallenge,wt as parseBriefText,zM as parseBringBack,yI as parseBugCommand,hn as parseClock,Pn as parseCommand,Js as parseCron,qg as parseDateQuery,xn as parseDuration,ul as parseEntities,$k as parseEnvInput,l_ as parseEvaluation,_p as parseFindings,Vo as parseFlowchart,GT as parseJobs,fR as parseJsonl,ZC as parseLink,zI as parseListItem,Qk as parseMcpConfig,CC as parseMeetingNotes,gg as parseMeetingText,FI as parseNewThread,Dn as parseNumberWords,pN as parseOmni,Sp as parsePlan,yr as parsePlanTasks,Hu as parseRecordId,Jn as parseRefinement,g_ as parseRemote,HT as parseReview,eb as parseSearchText,aN as parseSegmentName,YM as parseSideline,ES as parseSignInPrompt,te as parseSkillMention,eI as parseSkillVars,Xl as parseStructured,xl as parseSuggestions,pu as parseTagQuery,Ba as parseTimedText,bu as parseTitleResponse,km as parseToolCalls,pl as parseTopics,Io as parseWeather,Fn as parseWhen,ya as parseYouTubeUrl,Nh as partChars,Ch as partPrompt,ex as partQueries,Sk as partitionTtsModels,wx as partsOf,Zx as partsPlan,tb as passagesOf,Xe as patchApiEntries,ZF as pathAttachment,oD as pathAttachmentsOf,tk as pcmEnergy,C as pendingQueue,rm as permissionAllowed,em as permissionAnswer,sm as permissionIcon,ZE as permissionKeys,im as permissionLine,tF as permissionMode,qE as permissionRequestFromClaude,jE as permissionToolSpec,rn as personJoinedTrigger,di as phasesOf,on as phraseTrigger,va as pickCaptionTrack,nC as pickDay,UO as pickProfile,ge as pickResults,yC as pickSections,Wi as pinnedOrderOf,KL as placeItems,Bx as plainEvidence,vr as planAttribution,br as planBody,fL as planCompaction,VD as planEventPush,JN as planLabel,zN as planOf,Ur as planParts,at as planQueries,kL as planRetrieval,Dr as planSectionSystem,sO as planSync,kr as planTitleFor,VS as planToolRound,VL as planTurn,Ep as plannerPrompt,cM as pointsAtGateway,Qx as pointsBack,vO as policyFor,mF as policyHash,EF as policyLabel,Kd as poolFor,Ki as preferenceFor,BP as prefetchAttachment,qP as prefetchBudgetMs,wP as prefetchPlan,Bh as presenceBlock,bh as presenceDelta,Uh as presenceFor,My as priceUsage,NU as priorFindingsText,qp as priorWorkFor,ri as projectChain,iT as projectFromForm,lT as projectProgress,JD as projectYear,x as promoteQueued,CA as promoteRoles,Oi as promptEntries,Ry as promptTokensOf,ym as promptedToolsSystem,Fm as promptedTranscript,m_ as proposalFromNeeds,c_ as proposalToAgent,$t as propose,nf as pruneMemories,cb as qualifierAt,an as questionTrigger,$L as questionsIn,JC as quickRows,pb as quoteAround,Ib as quoteFormIn,_m as rankFused,Ee as rankLinkTargets,db as rankOffers,Or as rankResearchCards,hF as rankSkills,Rt as rankSubjects,Hx as rankedEvidence,Iy as rateFor,vh as reachOf,Gr as reachRank,Hr as reachSatisfies,He as readApiResponse,IS as readAuthServerMetadata,OS as readRegistration,fS as readResourceMetadata,$i as readSource,qM as readThread,CS as readTokenResponse,Fu as readableWhen,fT as readyJobs,ef as recall,tm as recallPermission,AU as recentFindings,BI as recipeInvocationText,uc as recipeParams,xc as recipeToolProvider,hc as recipeToolSpec,ZR as reconcile,Eo as reconcileEngines,xO as recordsFromBackup,T_ as recruitEvents,E_ as recruitForRun,d_ as recruitJob,Ja as redactAccessArgs,Sa as redactedTokensIn,Ea as redactionCost,iF as redactionTier,Ph as reduceNotes,$U as refineQueries,qn as refineSpokenCommand,zn as refinementFormat,Yn as refinementPrompt,jn as refinementStream,aU as refreshArgs,xS as registerMcpClient,uS as registrationRequest,gD as registryListUrl,ra as reject,om as rememberPermission,b as rememberRecent,Hn as reminderIntent,Su as removeTag,hP as renderContent,Xo as renderFlowchartSvg,Sg as renderMarkdown,eO as repairAnswerMarkup,li as repairCitedLinks,Kl as repairJson,PR as replaceAll,LR as replaceAllInRange,MR as replaceMatch,AR as replay,Gi as requirementsFor,Hi as requirementsForStep,Rm as rerankThrough,ZU as researchAsk,ib as researchBrief,sb as researchCall,fr as researchRelevance,ur as researchSnippet,wM as resetMcp,jg as resolveDateValue,fh as resolveNoteConflict,f as resolveRef,JM as resolveSidelineTarget,dN as resolveSince,_t as resolveSubjects,vd as resolveTeam,hN as resolveTheme,wl as responseFormat,GE as resultToolSpec,W_ as resumeTeam,ke as retryAfterMs,Hm as revealCut,Gm as revealStep,VT as reviewPrompt,Hl as rewriteJson,yD as rfc3339,pe as roleById,vA as roleCardId,py as rollupKey,DA as rosterRows,BT as roundBudget,fE as roundCap,Gh as roundCount,bT as roundJobs,Hh as roundMinutes,zS as roundSignature,aF as routeAllowed,fx as routeByRule,a_ as routeFor,ei as routeGraph,Ae as routeTeam,Kg as rowTime,Vp as runFromEvents,eR as runLanes,gc as runPlan,UT as runProject,Cc as runRecipe,nb as runResearch,KP as runResearchItem,bE as runResultQuery,Qp as runState,V_ as runTeam,WS as runToolRound,AE as runTurnLoop,Ax as runTurnPipeline,nE as runWithFailover,Ar as salientTerms,Ef as sameMemory,zi as sameModelKey,Vf as sameSkillOrigin,mu as sameTags,ol as sameUtterance,uk as sampleSeconds,Ok as sampleTooShort,vk as saveTimedOut,bk as saveVoiceFailure,rf as saysWhere,kO as scalePolicy,Kn as scheduleIntent,Yc as scmAllows,nh as scoreRuns,GU as scrubReportText,oy as sealBlob,Ls as sealEntry,IO as sealRecord,ze as searchApiChoices,Ds as searchEntries,Sc as searchFailureOf,mk as searchModels,ye as searchPolitely,lc as searchResultsToText,iM as searchSettings,$e as searchStatus,zu as searchTextFor,QF as secretReason,UC as sectionHash,EM as sectionOfRow,FC as sectionSpec,DC as sectionValue,_M as seedDestinations,$O as segmentBytes,eN as segmentEntries,tN as segmentName,nN as segmentsFor,PL as selectContext,ru as selectionStats,rC as setDateTerm,eM as setSettingValue,nF as settingLocked,$C as settingValue,SM as settingsGateOf,aM as settingsOpenMode,nM as settingsStatusAll,sM as settingsStatusOf,Qn as settleRefinement,$T as sha256,UE as shieldToolResult,lC as shiftMonth,Zi as shortUrl,yu as shouldAutoTitle,rN as shouldRotate,AM as shouldSeedDestinations,ay as shredBlob,aP as sidelinePath,lP as sidelineToolProvider,ng as signChallenge,mS as signInError,cS as signInFromError,pS as signInToolResult,Bi as signalsFrom,jR as similarity,FF as skillCatalogSystem,YA as skillChoices,HF as skillCreatorPrompt,bF as skillDiscoveryProvider,UF as skillEntry,yF as skillFileProvider,Bf as skillFiles,WF as skillFromDraft,xF as skillHandle,KF as skillIdFrom,WI as skillInvocationLabel,VI as skillInvocationOf,Wf as skillIsStale,MF as skillPackageFiles,CF as skillRunFromSkill,LF as skillToolSystem,Zf as skillVar,iI as skillVarGuidance,$f as skillVarPattern,KI as slashCommandInsert,bI as slashCommandItems,JR as slotOf,bd as slugAgentId,sp as slugTeamName,Wx as snapQuote,iD as sniffType,Qu as snippetOf,GA as soloTeam,Bg as sortRecords,wg as sortStamp,CM as sourceCitationSystem,pE as sourceGate,cE as sourceGuardFor,es as sourceId,oP as sourceOf,ss as sourcePolicyFor,mE as sourcePolicySettings,ns as sourceUrlsOf,Ei as sourcesFromToolText,rh as sourcesOf,_a as spanningQuestions,qy as speakStream,Zy as speakable,Lg as speakerBreakdown,kg as speakerLabeller,Cg as speakerStats,xg as speakerTimeline,Jp as spendOf,rR as spendRows,gh as splitForWindow,dh as splitNoteBlocks,JS as stableToolCallKey,aO as stampOf,sS as standaloneInstallCommand,Xx as standsOn,Yg as startOfDay,Mk as startRecording,Bd as starterAgents,MA as starterTeam,tp as starterTeams,Tx as stepAction,OE as stepResultText,dx as stepState,Tf as storyLinkOf,CO as streamCodec,Ig as stripNoteImageRefs,Nt as stripQualifiers,ct as subjectKey,pt as subjectTokens,Yx as subjectsOf,tI as substituteSkillVars,EA as subtaskFromRequest,fu as suggestExistingTags,gt as suggestMerges,oI as suggestSkillVar,Ll as suggestionsFormat,Pl as suggestionsPrompt,hl as suggestionsStream,ad as summarize,qd as summarizeEngine,Wk as summarizeRun,rr as summarizeSearch,dy as summarizeUsage,dC as summarySections,jO as supersedes,de as supportsSubagents,Aa as surveyCorpus,Uk as switchOutcome,Ah as syncNote,Xt as synthesisPrompt,NL as systemWithSummary,Ru as tagFacets,Ze as tagResults,Iu as tagsSearchText,mA as takeUp,cA as takeUpLine,_A as taskTree,vT as teamForRound,ip as teamFromForm,LA as teamHealth,HI as teamInvocationText,NA as teamLanes,OA as teamLine,xA as teamShape,Q_ as teamToolProvider,q_ as teamToolSpec,Z_ as teamToolTimeoutMs,HA as teamsWithSolos,vM as testMcpServer,lh as textKey,Hk as textToDict,xN as themeStylesheet,jM as threadManifest,AA as threadRows,ui as threadTitle,QM as threadToolProvider,gi as threadTree,Ii as threadsOf,Ra as thresholdSweep,ZN as tierFor,Nd as tierOf,wa as timedTextUrl,Gn as timerIntent,Zs as timerTrigger,hu as titleFromDate,xu as titleFromParticipants,Pu as titleFromSummary,Lu as titleFromTopics,WU as titleTerms,bs as toB64,fp as toBriefClaims,FP as toChatMessages,bD as toCloudEvent,GD as toCloudEventBatch,wD as toCloudEventLines,LN as toCssVars,Ju as toIndexEntry,vl as toJsonSchema,IR as toJsonl,Qr as toModelSchema,qr as toModelSchemas,DP as toMultimodalMessages,Jk as toSanitizedReport,Yu as toSearchRecord,qI as toggleLinePrefix,$I as toggleLink,Eu as toggleTag,ZI as toggleTask,QI as toggleWrap,MS as tokenExpired,gS as tokenRequest,kn as tokenize,XO as tombstone,bm as toolChannel,fm as toolDoc,jS as toolMadeProgress,Do as toolNeedFor,wL as toolPlan,PM as toolStatus,yS as toolTraits,UL as toolsWanted,Rr as topicTerms,tn as topicTrigger,cl as topicsFormat,ml as topicsPrompt,El as topicsSchema,_l as topicsStream,wS as traitsIndex,vm as transcriptFor,Wa as transcriptFromTracks,$ as triggerQueryAt,dc as trimDescription,sr as trimGraph,Fh as trimOverlap,wf as trustOf,lk as ttsArchOf,mx as turnFlow,cx as turnFlowChart,Sx as turnGroundingNote,Ni as turnsOf,Bl as unfence,Ms as unlockVault,sx as unsupportedFigures,nx as unsupportedNote,fb as unverifiedAmounts,Oe as unwrapRedirect,Wr as upcast,Xr as upcastAll,Sf as upcastMemory,Yf as upcastSkill,zf as upcastSkills,BA as upsertAgents,my as usageFromEvent,cy as usageFromOpenAi,vc as usageOf,Ey as usageRecord,Jm as validateAction,hd as validateAgent,Ub as validateBrowserAnnounce,kb as validateBrowserCall,bb as validateBrowserResult,Uc as validateBudget,zr as validateCapability,O_ as validateConnection,fd as validateEngineSpec,hs as validateEntry,m as validateEvent,_D as validateExtractRequest,AD as validateExtractResponse,MT as validateGate,Jr as validateInvocation,pT as validateJobPost,eT as validateProject,fc as validateRecipe,Ws as validateSchedule,Xf as validateSkill,Kc as validateTeam,zo as validateView,Jo as validateViewInvocation,qo as validateWidget,Zo as validateWidgetMessage,xM as vaultWidgetSystem,zk as verdict,td as verifyAttested,rd as verifyChain,eg as verifyEntitlement,cF as verifyPolicyToken,rg as verifySignedToken,qe as viaOf,ba as videoMetaFromPlayerResponse,Ye as viewApiEntries,jo as viewResult,Um as visiblePrefix,Ta as vocabularyDrift,sn as voiceCommandTrigger,yk as voiceListRows,Dk as voicePicker,zy as voiceSpeaker,Xy as voiceStep,Cn as wakeFor,ma as wantedPages,qL as wantsDecision,QL as wantsIntent,_N as wantsModel,hM as wantsVaultGuidance,mp as waves,WP as weatherFollowupPlace,pP as weatherFromSearch,VP as weatherPlace,cP as weatherToolProvider,fo as weatherUrl,$D as webCryptoSealer,Ck as webMedia,Ir as webQuery,JP as webRedoAsk,ab as webResearch,Ec as webSearchToolProvider,AS as wellKnownUrls,FA as whereItWorks,LM as widgetAuthoringSystem,et as widgetIcon,Se as wikiQueryAt,la as wikilinksIn,SL as windowOf,tD as withAbsolutePaths,kp as withBoardTool,Yk as withCost,eL as withFetchedMemo,Qm as withGuidance,Mm as withHint,Pm as withLead,wh as withPresence,hm as withPromptedTools,U as withRecent,vE as withResultShield,Bp as withRunCache,UP as withSourceTool,Dh as withStitching,IE as withToolSystem,$N as withinFreeLimit,dE as withinReach,xL as withoutOwnInstructions,qu as wordCount,Er as wordDiff,iA as workLogEvidence,tA as workLogFor,aA as workLogText,P_ as worktreeDirFor,bL as worldAnswered,vL as worldPlanned,SI as writerAffordance,RI as writerRequest,dI as writerTail};
package/link-fetch.js ADDED
@@ -0,0 +1 @@
1
+ import{createLinkEndpoint as M}from"./link-connect.js";import{noiseCrypto as Q}from"./link-noise.js";import{parsePairingCode as X,admissionToken as Y,toB64url as _,fromB64url as D,linkPathAllowed as Z}from"./link-protocol.js";import{relaySocketUrl as ee,tunnelSocketUrl as te}from"./link-routes.js";const I=1,re="chatpanel-link.v1",i=(e,s)=>Object.assign(new TypeError(`link: ${e}`),{code:s}),L=()=>{try{return new DOMException("The operation was aborted.","AbortError")}catch{return Object.assign(new Error("aborted"),{name:"AbortError"})}},U=e=>{try{return new URL(e).host}catch{return"the relay"}};function ne(e){if(!(e&&typeof e=="object"&&e.v===I&&typeof e.room=="string"&&typeof e.token=="string"&&typeof e.deviceKey=="string"&&typeof e.gatewayKey=="string"&&(typeof e.relay=="string"||typeof e.gw=="string")))throw i("the stored device state is not a ChatPanel Link device (pair again with a new code)","bad_state");return e}function oe(e){const s=e.gw&&te(e.gw,e.room),f=e.relay&&ee(e.relay,e.room);return e.route==="tailscale"||e.route==="cloudflare"?[s].filter(Boolean):e.route==="link"||e.route==="relay"?[f].filter(Boolean):[f,s].filter(Boolean)}const V=oe;function ae(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(0)}function ie(e){const s={};if(!e)return s;if(typeof e.forEach=="function"&&!Array.isArray(e))return e.forEach((f,g)=>{s[g]=f}),s;for(const[f,g]of Array.isArray(e)?e:Object.entries(e))g!=null&&(s[f]=String(g));return s}async function se(e){return e==null?null:typeof e=="string"||e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):typeof URLSearchParams<"u"&&e instanceof URLSearchParams?e.toString():new Uint8Array(await new Response(e).arrayBuffer())}async function de({pairing:e=null,state:s=null,store:f=null,name:g="Partner server",WebSocketImpl:T=globalThis.WebSocket,crypto:P=Q(),now:$=()=>Date.now(),connectTimeoutMs:F=15e3,keepaliveMs:x=25e3,setTimer:O=setTimeout,clearTimer:R=clearTimeout}={}){if(typeof T!="function")throw i("no WebSocket here — pass WebSocketImpl (the `ws` package on Node 20)","no_websocket");let b=s||(f?await f.load():null)||null;function C(n,t,{keyPair:r,psk:o=null,peerKey:c=null,laptopKey:k=null,onClose:d=()=>{}}){return new Promise((h,K)=>{let y=null,m=!1;const v=O(()=>l(i(`the gateway did not answer through ${U(n)} — is it running and online?`,"unreachable")),F);function l(a,p){if(!m)if(m=!0,R(v),a){try{y?.close(1e3,"done")}catch{}K(a)}else h(p)}const u=M({side:"phone",keyPair:r,psk:o,peerKey:c,laptopKey:k,name:String(g||"").slice(0,60),crypto:P,sendBytes:a=>{try{y.send(a)}catch{}},onSession:a=>l(null,{ws:y,endpoint:u,session:a}),onEnd:a=>{/^handshake/.test(String(a))&&l(i(`the gateway refused this device (${String(a).replace(/^handshake: /,"")})`,"refused"))}});try{y=new T(n,[re,t])}catch(a){l(i(`cannot open ${U(n)}: ${a?.message||a}`,"unreachable"));return}y.binaryType="arraybuffer",y.onmessage=a=>typeof a.data=="string"?u.onText(a.data):u.onBinary(ae(a.data)),y.onerror=()=>{},y.onclose=a=>{u.close("socket closed");const p=a?.code;d(p),l(p===4003||p===4004?i("the computer’s owner removed this device — pair again with a new code","revoked"):p===1008?i(`${U(n)} did not admit this device — the code expired or was used, or the device was removed`,"refused"):i(`${U(n)} closed the connection (${p||"no code"}) — is the gateway online?`,"unreachable"))}})}async function N(n){const t=X(n,{now:$()}),r=await P.generateKeyPair(),o=_(t.room),c=await Y(t.secret,t.room,"phone");let k=null;for(const d of V({relay:t.relay,gw:t.gw,room:o,route:t.route}))try{const h=await C(d,c,{keyPair:r,psk:t.secret,laptopKey:t.key});h.session.close("paired");try{h.ws.close(1e3,"paired")}catch{}return{v:I,route:t.route,relay:t.relay,gw:t.gw,room:o,token:c,deviceKey:_(r.raw),gatewayKey:_(t.key),pairedAt:$()}}catch(h){if(k=h,h?.code==="refused")break}throw k||i("the code names no way to reach the gateway","bad_code")}if(!b){if(!e)throw i("pass `pairing` (a cplink1. code from the computer’s owner) or a `store` holding an earlier pairing","not_paired");b=await N(e),f&&await f.save(b)}ne(b);const A=b;let j=null,w=null,E=null,q=!1;const W=n=>!!n&&!n.dead&&!n.session.closed;async function G(){j||=await P.keyPairFromPrivate(D(A.deviceKey));let n=null;for(const t of V(A)){const r={dead:!1};try{Object.assign(r,await C(t,A.token,{keyPair:j,peerKey:D(A.gatewayKey),onClose:c=>{r.dead=!0,R(r.keepalive),(c===4003||c===4004)&&(E=i("the computer’s owner removed this device — pair again with a new code","revoked"))}}));const o=()=>{if(!r.dead){try{r.ws.send("ping")}catch{}r.keepalive=O(o,x),r.keepalive?.unref?.()}};return r.keepalive=O(o,x),r.keepalive?.unref?.(),r}catch(o){if(n=o,o?.code==="revoked")throw E=o,o;if(o?.code==="refused")throw o}}throw n}async function H(n){if(q)throw i("this Link fetch was closed","closed");if(E)throw E;if(w){const r=await w.catch(()=>null);if(W(r))return r;w=null}const t=G();if(w=t,t.catch(()=>{w===t&&(w=null)}),!n)return t;if(n.aborted)throw L();return Promise.race([t,new Promise((r,o)=>n.addEventListener("abort",()=>o(L()),{once:!0}))])}async function z(n,t={}){const r=typeof Request<"u"&&n instanceof Request?n:null,o=new URL(r?r.url:String(n),"http://127.0.0.1"),c=String(t.method||r?.method||"GET").toUpperCase(),k=ie(t.headers??r?.headers),d=t.signal??r?.signal??null;if(d?.aborted)throw L();const h=o.pathname+o.search;if(!Z(h))throw i(`only the gateway's /v1/ API crosses Link (asked for ${o.pathname})`,"path");const K=t.body!==void 0?t.body:r&&c!=="GET"&&c!=="HEAD"?await r.arrayBuffer():null,y=await se(K),m=await H(d),v=new AbortController,l=()=>v.abort();d?.addEventListener?.("abort",l,{once:!0});let u;try{u=await m.session.request({method:c,path:h,headers:k,body:y,signal:v.signal})}catch(S){throw d?.removeEventListener?.("abort",l),d?.aborted?L():(m.session.closed&&(m.dead=!0),i(S?.message?.replace(/^link: /,"")||"the request failed","request"))}const a=u.body[Symbol.asyncIterator](),J=u.status===204||u.status===205||u.status===304||c==="HEAD"?null:new ReadableStream({async pull(S){try{const B=await a.next();B.done?(d?.removeEventListener?.("abort",l),S.close()):S.enqueue(B.value)}catch(B){d?.removeEventListener?.("abort",l),S.error(v.signal.aborted?L():i(B?.message?.replace(/^link: /,"")||"the response was cut off","stream"))}},cancel(){v.abort()}});return new Response(J,{status:u.status,headers:u.headers})}return Object.defineProperties(z,{deviceId:{value:A.room,enumerable:!0},revoked:{get:()=>E,enumerable:!0},close:{value:()=>{q=!0;const n=w;w=null,n?.then(t=>{t.dead=!0,R(t.keepalive),t.endpoint.close("closed");try{t.ws.close(1e3,"closed")}catch{}},()=>{})}}})}export{I as LINK_DEVICE_STATE_VERSION,ne as checkLinkDeviceState,de as createLinkFetch,oe as linkSocketUrls};
package/link-protocol.js CHANGED
@@ -1 +1 @@
1
- import{concatBytes as J}from"./link-noise.js";const C=1,U="chatpanel-link",P=6e4,G=44e3,W=Object.freeze(["GET","POST","PUT","PATCH","DELETE"]),Y=64,we=Object.freeze(["batch"]),re=2*P,V=Object.freeze({bytesPerSecond:9e5,byteBurst:6e6,framesPerSecond:90,frameBurst:800});function ne({bytesPerSecond:e,byteBurst:r,framesPerSecond:n,frameBurst:l}=V,{now:c=()=>Date.now(),sleep:u=a=>new Promise(s=>setTimeout(s,a))}={}){let a=r,s=l,d=c();return async E=>{for(;;){const p=c(),m=Math.max(0,p-d)/1e3;if(d=p,a=Math.min(r,a+m*e),s=Math.min(l,s+m*n),a>=E&&s>=1){a-=E,s-=1;return}const f=Math.max((E-a)/e,(1-s)/n)*1e3;await u(Math.max(1,Math.ceil(f)))}}}const _=new TextEncoder,I=new TextDecoder,q=Object.freeze({firstMs:0,windowMs:100,maxBytes:16e3});async function*fe(e,{firstMs:r=q.firstMs,windowMs:n=q.windowMs,maxBytes:l=q.maxBytes,setTimer:c=setTimeout,clearTimer:u=clearTimeout}={}){const a=e[Symbol.asyncIterator]();let s=[],d=0,E=!0,p=null;const m=()=>{const f=s.length===1?s[0]:J(...s);return s=[],d=0,E=!1,f};try{for(;;){if(p||=a.next(),!d){const h=await p;if(p=null,h.done)return;if(s.push(h.value),d+=h.value.length,E&&r<=0){yield m();continue}}let f=null;const g=new Promise(h=>{f=c(()=>h(null),E?r:n)});try{for(;d<l;){p||=a.next();const h=await Promise.race([p,g]);if(h===null)break;if(p=null,h.done){yield m();return}s.push(h.value),d+=h.value.length}}finally{u(f)}yield m()}}finally{p&&p.catch(()=>{});try{a.return?.()?.catch?.(()=>{})}catch{}}}function S(e){let r="";for(const n of e)r+=String.fromCharCode(n);return btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function oe(e){const r=String(e||"").replace(/-/g,"+").replace(/_/g,"/");if(!/^[A-Za-z0-9+/]*$/.test(r))throw new Error("link: not base64url");const n=atob(r+"=".repeat((4-r.length%4)%4));return Uint8Array.from(n,l=>l.charCodeAt(0))}const ie=e=>{let r="";for(const n of e)r+=String.fromCharCode(n);return btoa(r)},ae=e=>Uint8Array.from(atob(String(e||"")),r=>r.charCodeAt(0));function pe({relay:e=null,gw:r=null,room:n,key:l,secret:c,name:u=""}){const a=X({v:String(C),relay:e,gw:r,room:S(n),key:S(l),psk:S(c),name:u}),s=new URLSearchParams({v:String(C)});return a.relay&&s.set("relay",a.relay),s.set("room",S(a.room)),s.set("key",S(a.key)),s.set("psk",S(a.secret)),a.gw&&s.set("gw",a.gw),a.name&&s.set("name",a.name),`${U}:?${s.toString()}`}function ge(e){const r=String(e||"").trim();if(!r.startsWith(`${U}:?`))throw new Error("link: not a ChatPanel pairing code");const n=new URLSearchParams(r.slice(U.length+2));return X(Object.fromEntries(n.entries()))}function X(e){if(String(e.v)!==String(C))throw new Error(`link: pairing code version ${e.v} is not supported — update the app`);const r=(a,s)=>{let d;try{d=new URL(String(a))}catch{throw new Error(`link: the pairing code's ${s} address is not readable`)}if(d.protocol!=="https:"||d.username||d.password)throw new Error(`link: the ${s} must be an https address`);return d.origin},n=e.relay?r(e.relay,"relay"):null,l=e.gw?r(e.gw,"tunnel"):null;if(!n&&!l)throw new Error("link: the pairing code has no relay address");const c=(a,s)=>{let d;try{d=oe(e[a])}catch{throw new Error(`link: ${a} is not readable`)}if(d.length!==s)throw new Error(`link: ${a} must be ${s} bytes`);return d},u=String(e.name||"").replace(/[\u0000-\u001f\u007f<>]/g,"").trim().slice(0,64);return{relay:n,gw:l,room:c("room",16),key:c("key",32),secret:c("psk",32),name:u}}async function me(e,r,n,l=globalThis.crypto.subtle){if(n!=="laptop"&&n!=="phone")throw new Error("link: side is laptop or phone");const c=await l.importKey("raw",e,{name:"HMAC",hash:"SHA-256"},!1,["sign"]),u=await l.sign("HMAC",c,_.encode(`chatpanel-link admit v${C}|${S(r)}|${n}`));return S(new Uint8Array(u))}async function ye(e,r=globalThis.crypto.subtle){const n=new Uint8Array(await r.digest("SHA-256",_.encode(String(e))));return Array.from(n,l=>l.toString(16).padStart(2,"0")).join("")}const se=/^(authorization|cookie|set-cookie|www-authenticate|host|proxy-.*|x-forwarded-.*|forwarded|x-real-ip|cf-.*|tailscale-.*|x-chatpanel-device|x-chatpanel-token|content-length|connection|transfer-encoding|upgrade)$/i;function H(e={}){const r={};for(const[n,l]of Object.entries(e||{})){const c=String(n).toLowerCase();!/^[a-z0-9-]{1,64}$/.test(c)||se.test(c)||(r[c]=String(l).replace(/[\r\n]+/g," ").slice(0,2048))}return r}function Q(e){const r=String(e||"");if(!r.startsWith("/v1/")||r.length>2048)return!1;const n=r.split("?")[0];return!/(^|\/)\.\.?(\/|$)|%2e|%2f|%5c|\\|\/\//i.test(n)}const le=new Set(["req","body","end","res","cancel","error","ping","pong"]);function ce(e){const r=_.encode(JSON.stringify(e));if(r.length>P)throw new Error("link: frame too large");return r}function ue(e){if(!e.length)throw new Error("link: an empty batch");const r=e.reduce((c,u)=>c+u.length+1,1);if(r>P)throw new Error("link: batch too large");const n=new Uint8Array(r);n[0]=91;let l=1;return e.forEach((c,u)=>{n.set(c,l),l+=c.length,n[l++]=u===e.length-1?93:44}),n}function be(e){if(e.length>P)throw new Error("link: frame too large");let r;try{r=JSON.parse(I.decode(e))}catch{throw new Error("link: frame is not JSON")}return z(r)}function de(e,{batch:r=!1}={}){if(e.length>P)throw new Error("link: frame too large");let n;try{n=JSON.parse(I.decode(e))}catch{throw new Error("link: frame is not JSON")}if(!Array.isArray(n))return[z(n)];if(!r)throw new Error("link: a batch this session did not agree to");if(!n.length)throw new Error("link: an empty batch");return n.map(z)}function z(e){if(!e||typeof e!="object"||Array.isArray(e)||!le.has(e.t))throw new Error("link: unknown frame");if(e.t!=="ping"&&e.t!=="pong"&&!(Number.isInteger(e.id)&&e.id>0))throw new Error("link: frame without an id");if(e.t==="req"){if(!W.includes(e.method))throw new Error("link: method not allowed");if(!Q(e.path))throw new Error("link: path not allowed");e.headers=H(e.headers)}if(e.t==="res"&&!(Number.isInteger(e.status)&&e.status>=100&&e.status<600))throw new Error("link: bad status");if(e.t==="body"&&typeof e.data!="string")throw new Error("link: body without data");return e}function Z(){const e=[];let r=null,n=!1,l=null;const c=()=>{const u=r;r=null,u?.()};return{push(u){e.push(u),c()},end(){n=!0,c()},fail(u){l=u,n=!0,c()},async*[Symbol.asyncIterator](){for(;;){if(e.length){yield e.shift();continue}if(l)throw l;if(n)return;await new Promise(u=>{r=u})}},async bytes(){const u=[];for await(const a of this)u.push(a);return J(...u)},async text(){return I.decode(await this.bytes())}}}function Ee({transport:e,send:r,side:n,onRequest:l=null,onClose:c=()=>{},pace:u=V,now:a,sleep:s,batch:d=!1,defer:E=p=>setTimeout(p,0)}={}){if(!e||typeof r!="function")throw new Error("link: transport and send are required");if(n!=="phone"&&n!=="laptop")throw new Error("link: side is phone or laptop");let p=n==="phone"?1:2;const m=t=>t%2===(n==="phone"?1:0);let f=null;const g=new Map,h=new Map;let M=Promise.resolve();const B=u?ne(u,{...a?{now:a}:{},...s?{sleep:s}:{}}):null,K=t=>{const o=M.then(async()=>{if(f)return;const i=await e.encrypt(t);B&&await B(i.length),f||r(i)});return M=o.catch(()=>{}),o};let k=[],T=1,O=null,N=0;const D=()=>{if(O=null,!k.length||f){k=[],T=1;return}const t=k.length===1?k[0]:ue(k);k=[],T=1,N+=t.length,K(t).finally(()=>{N-=t.length}).catch(()=>{})},y=t=>{if(f)return Promise.reject(new Error(`link: session closed (${f})`));const o=ce(t);return d?(T+o.length+1>P&&D(),k.push(o),T+=o.length+1,O||(O=E(D)||!0),N>re?M:Promise.resolve()):K(o)},j=t=>{t?.catch?.(()=>{})};let R=Promise.resolve();const F=async(t,o)=>{for(let i=0;i<o.length;i+=G)await y({t:"body",id:t,data:ie(o.subarray(i,i+G))})};function $(t="closed"){if(f)return;f=t;const o=new Error(`link: session closed (${t})`);for(const i of g.values())i.reject?.(o),i.body?.fail(o);for(const i of h.values())i.body.fail(o);g.clear(),h.clear(),k=[],c(t)}async function ee(t){if(!l||h.size>=Y){j(y({t:"error",id:t.id,message:l?"too many open requests":"this side serves nothing"}));return}const o=Z(),i={body:o,cancelled:!1};h.set(t.id,i);let b=!1;const v={head:(w,L={})=>(b=!0,y({t:"res",id:t.id,status:w,headers:H(L)})),write:w=>i.cancelled?Promise.resolve():F(t.id,w instanceof Uint8Array?w:_.encode(String(w))),end:()=>(h.delete(t.id),i.cancelled?Promise.resolve():y({t:"end",id:t.id})),fail:w=>(h.delete(t.id),y({t:"error",id:t.id,message:String(w).slice(0,500)})),get cancelled(){return i.cancelled}};Promise.resolve().then(()=>l({method:t.method,path:t.path,headers:t.headers,body:o},v)).catch(w=>j(b?v.end():v.fail(w?.message||"the request failed")))}return{get closed(){return f},close:$,receive(t){const o=R.then(()=>this._receive(t)).catch(i=>$(`bad frame: ${i?.message||i}`));return R=o,o},async _receive(t){if(f)return;let o;try{o=de(await e.decrypt(t),{batch:d})}catch(i){$(/decrypt|operation|tag/i.test(String(i?.message||i?.name))?"tampered":`bad frame: ${i?.message}`);return}for(const i of o){if(f)return;await this._frame(i)}},async _frame(t){if(t.t==="ping"){j(y({t:"pong"}));return}if(t.t==="pong")return;if(t.t==="req"){if(m(t.id)){$("bad frame: a request in our id space");return}await ee(t);return}const o=m(t.id)?g.get(t.id):null,i=m(t.id)?null:h.get(t.id);if(t.t==="res"&&o)o.resolve({status:t.status,headers:t.headers||{},body:o.body});else if(t.t==="body"&&(o||i))(o||i).body.push(ae(t.data));else if(t.t==="end"&&o)o.body.end(),g.delete(t.id);else if(t.t==="end"&&i)i.body.end();else if(t.t==="error"&&o){const b=new Error(t.message||"the request failed");o.reject(b),o.body.fail(b),g.delete(t.id)}else t.t==="cancel"&&i&&(i.cancelled=!0,i.body.fail(new Error("cancelled")),h.delete(t.id))},request({method:t="GET",path:o,headers:i={},body:b=null,signal:v=null}={}){if(!W.includes(t))return Promise.reject(new Error("link: method not allowed"));if(!Q(o))return Promise.reject(new Error("link: path not allowed"));if(g.size>=Y)return Promise.reject(new Error("link: too many open requests"));const w=p;p+=2;const L=Z(),te=new Promise((x,A)=>g.set(w,{resolve:x,reject:A,body:L}));return v?.addEventListener?.("abort",()=>{const x=g.get(w);if(!x)return;g.delete(w);const A=new Error("aborted");x.reject(A),x.body.fail(A),y({t:"cancel",id:w}).catch(()=>{})},{once:!0}),(async()=>{await y({t:"req",id:w,method:t,path:o,headers:H(i)}),b!=null&&await F(w,b instanceof Uint8Array?b:_.encode(String(b))),await y({t:"end",id:w})})().catch(x=>{const A=g.get(w);A&&(A.reject(x),g.delete(w))}),te},ping:()=>y({t:"ping"})}}export{G as BODY_CHUNK_BYTES,we as LINK_CAPS,q as LINK_COALESCE,W as LINK_METHODS,V as LINK_PACE,U as LINK_SCHEME,C as LINK_VERSION,P as MAX_FRAME_BYTES,me as admissionToken,ye as admissionVerifier,fe as coalesceChunks,Ee as createLinkSession,be as decodeFrame,de as decodeFrames,ue as encodeBatch,ce as encodeFrame,oe as fromB64url,ne as linkPacer,Q as linkPathAllowed,pe as pairingUri,ge as parsePairingUri,H as sanitizeLinkHeaders,S as toB64url};
1
+ import{concatBytes as W}from"./link-noise.js";const C=1,H="chatpanel-link",_=6e4,X=44e3,Y=Object.freeze(["GET","POST","PUT","PATCH","DELETE"]),V=64,me=Object.freeze(["batch"]),se=2*_,Q=Object.freeze({bytesPerSecond:9e5,byteBurst:6e6,framesPerSecond:90,frameBurst:800});function le({bytesPerSecond:e,byteBurst:t,framesPerSecond:r,frameBurst:i}=Q,{now:d=()=>Date.now(),sleep:c=o=>new Promise(l=>setTimeout(l,o))}={}){let o=t,l=i,u=d();return async E=>{for(;;){const p=d(),m=Math.max(0,p-u)/1e3;if(u=p,o=Math.min(t,o+m*e),l=Math.min(i,l+m*r),o>=E&&l>=1){o-=E,l-=1;return}const f=Math.max((E-o)/e,(1-l)/r)*1e3;await c(Math.max(1,Math.ceil(f)))}}}const A=new TextEncoder,N=new TextDecoder,R=Object.freeze({firstMs:0,windowMs:100,maxBytes:16e3});async function*ye(e,{firstMs:t=R.firstMs,windowMs:r=R.windowMs,maxBytes:i=R.maxBytes,setTimer:d=setTimeout,clearTimer:c=clearTimeout}={}){const o=e[Symbol.asyncIterator]();let l=[],u=0,E=!0,p=null;const m=()=>{const f=l.length===1?l[0]:W(...l);return l=[],u=0,E=!1,f};try{for(;;){if(p||=o.next(),!u){const h=await p;if(p=null,h.done)return;if(l.push(h.value),u+=h.value.length,E&&t<=0){yield m();continue}}let f=null;const g=new Promise(h=>{f=d(()=>h(null),E?t:r)});try{for(;u<i;){p||=o.next();const h=await Promise.race([p,g]);if(h===null)break;if(p=null,h.done){yield m();return}l.push(h.value),u+=h.value.length}}finally{c(f)}yield m()}}finally{p&&p.catch(()=>{});try{o.return?.()?.catch?.(()=>{})}catch{}}}function b(e){let t="";for(const r of e)t+=String.fromCharCode(r);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function Z(e){const t=String(e||"").replace(/-/g,"+").replace(/_/g,"/");if(!/^[A-Za-z0-9+/]*$/.test(t))throw new Error("link: not base64url");const r=atob(t+"=".repeat((4-t.length%4)%4));return Uint8Array.from(r,i=>i.charCodeAt(0))}const ce=e=>{let t="";for(const r of e)t+=String.fromCharCode(r);return btoa(t)},de=e=>Uint8Array.from(atob(String(e||"")),t=>t.charCodeAt(0));function ke({relay:e=null,gw:t=null,room:r,key:i,secret:d,name:c=""}){const o=te({v:String(C),relay:e,gw:t,room:b(r),key:b(i),psk:b(d),name:c}),l=new URLSearchParams({v:String(C)});return o.relay&&l.set("relay",o.relay),l.set("room",b(o.room)),l.set("key",b(o.key)),l.set("psk",b(o.secret)),o.gw&&l.set("gw",o.gw),o.name&&l.set("name",o.name),`${H}:?${l.toString()}`}function ee(e){const t=String(e||"").trim();if(!t.startsWith(`${H}:?`))throw new Error("link: not a ChatPanel pairing code");const r=new URLSearchParams(t.slice(H.length+2));return te(Object.fromEntries(r.entries()))}function te(e){if(String(e.v)!==String(C))throw new Error(`link: pairing code version ${e.v} is not supported — update the app`);const t=(o,l)=>{let u;try{u=new URL(String(o))}catch{throw new Error(`link: the pairing code's ${l} address is not readable`)}if(u.protocol!=="https:"||u.username||u.password)throw new Error(`link: the ${l} must be an https address`);return u.origin},r=e.relay?t(e.relay,"relay"):null,i=e.gw?t(e.gw,"tunnel"):null;if(!r&&!i)throw new Error("link: the pairing code has no relay address");const d=(o,l)=>{let u;try{u=Z(e[o])}catch{throw new Error(`link: ${o} is not readable`)}if(u.length!==l)throw new Error(`link: ${o} must be ${l} bytes`);return u},c=String(e.name||"").replace(/[\u0000-\u001f\u007f<>]/g,"").trim().slice(0,64);return{relay:r,gw:i,room:d("room",16),key:d("key",32),secret:d("psk",32),name:c}}const O="cplink1.",re=["link","relay","tailscale","cloudflare"],M=e=>e==="tailscale"||e==="cloudflare";function Ee({uri:e,expiresAt:t,route:r=null}){const i=ee(e);if(!Number.isFinite(t)||t<=0)throw new Error("link: a pairing code needs its expiry");if(r!=null&&!re.includes(r))throw new Error(`link: unknown route "${r}"`);if(M(r)&&!i.gw)throw new Error("link: a tunnel route needs the tunnel address");if(r&&!M(r)&&!i.relay)throw new Error("link: a relay route needs the relay address");return O+b(A.encode(`${e}&exp=${Math.floor(t)}${r?`&route=${r}`:""}`))}function be(e,{now:t=Date.now()}={}){const r=String(e||"").trim();if(!r.startsWith(O))throw new Error(`link: not a ChatPanel Link code (it starts with ${O})`);let i;try{i=N.decode(Z(r.slice(O.length)))}catch{throw new Error("link: the code is not readable — copy all of it")}const d=new URLSearchParams(i.split("?")[1]||""),c=Number(d.get("exp"));if(!Number.isFinite(c)||c<=0)throw new Error("link: the code has no expiry — ask for a new one");const o=d.get("route")||null;if(o&&!re.includes(o))throw new Error(`link: the code names a route this version does not know (${o}) — update`);const l=ee(i);if(M(o)&&!l.gw)throw new Error("link: the code’s tunnel route has no tunnel address");if(o&&!M(o)&&!l.relay)throw new Error("link: the code’s relay route has no relay address");if(t>=c)throw Object.assign(new Error("link: this code expired — ask the computer’s owner for a new one"),{code:"expired"});return{...l,expiresAt:c,route:o}}async function xe(e,t,r,i=globalThis.crypto.subtle){if(r!=="laptop"&&r!=="phone")throw new Error("link: side is laptop or phone");const d=await i.importKey("raw",e,{name:"HMAC",hash:"SHA-256"},!1,["sign"]),c=await i.sign("HMAC",d,A.encode(`chatpanel-link admit v${C}|${b(t)}|${r}`));return b(new Uint8Array(c))}async function Se(e,t=globalThis.crypto.subtle){const r=new Uint8Array(await t.digest("SHA-256",A.encode(String(e))));return Array.from(r,i=>i.toString(16).padStart(2,"0")).join("")}const ue=/^(authorization|cookie|set-cookie|www-authenticate|host|proxy-.*|x-forwarded-.*|forwarded|x-real-ip|cf-.*|tailscale-.*|x-chatpanel-device|x-chatpanel-token|content-length|connection|transfer-encoding|upgrade)$/i;function z(e={}){const t={};for(const[r,i]of Object.entries(e||{})){const d=String(r).toLowerCase();!/^[a-z0-9-]{1,64}$/.test(d)||ue.test(d)||(t[d]=String(i).replace(/[\r\n]+/g," ").slice(0,2048))}return t}function ne(e){const t=String(e||"");if(!t.startsWith("/v1/")||t.length>2048)return!1;const r=t.split("?")[0];return!/(^|\/)\.\.?(\/|$)|%2e|%2f|%5c|\\|\/\//i.test(r)}const he=new Set(["req","body","end","res","cancel","error","ping","pong"]);function we(e){const t=A.encode(JSON.stringify(e));if(t.length>_)throw new Error("link: frame too large");return t}function fe(e){if(!e.length)throw new Error("link: an empty batch");const t=e.reduce((d,c)=>d+c.length+1,1);if(t>_)throw new Error("link: batch too large");const r=new Uint8Array(t);r[0]=91;let i=1;return e.forEach((d,c)=>{r.set(d,i),i+=d.length,r[i++]=c===e.length-1?93:44}),r}function Pe(e){if(e.length>_)throw new Error("link: frame too large");let t;try{t=JSON.parse(N.decode(e))}catch{throw new Error("link: frame is not JSON")}return B(t)}function pe(e,{batch:t=!1}={}){if(e.length>_)throw new Error("link: frame too large");let r;try{r=JSON.parse(N.decode(e))}catch{throw new Error("link: frame is not JSON")}if(!Array.isArray(r))return[B(r)];if(!t)throw new Error("link: a batch this session did not agree to");if(!r.length)throw new Error("link: an empty batch");return r.map(B)}function B(e){if(!e||typeof e!="object"||Array.isArray(e)||!he.has(e.t))throw new Error("link: unknown frame");if(e.t!=="ping"&&e.t!=="pong"&&!(Number.isInteger(e.id)&&e.id>0))throw new Error("link: frame without an id");if(e.t==="req"){if(!Y.includes(e.method))throw new Error("link: method not allowed");if(!ne(e.path))throw new Error("link: path not allowed");e.headers=z(e.headers)}if(e.t==="res"&&!(Number.isInteger(e.status)&&e.status>=100&&e.status<600))throw new Error("link: bad status");if(e.t==="body"&&typeof e.data!="string")throw new Error("link: body without data");return e}function oe(){const e=[];let t=null,r=!1,i=null;const d=()=>{const c=t;t=null,c?.()};return{push(c){e.push(c),d()},end(){r=!0,d()},fail(c){i=c,r=!0,d()},async*[Symbol.asyncIterator](){for(;;){if(e.length){yield e.shift();continue}if(i)throw i;if(r)return;await new Promise(c=>{t=c})}},async bytes(){const c=[];for await(const o of this)c.push(o);return W(...c)},async text(){return N.decode(await this.bytes())}}}function _e({transport:e,send:t,side:r,onRequest:i=null,onClose:d=()=>{},pace:c=Q,now:o,sleep:l,batch:u=!1,defer:E=p=>setTimeout(p,0)}={}){if(!e||typeof t!="function")throw new Error("link: transport and send are required");if(r!=="phone"&&r!=="laptop")throw new Error("link: side is phone or laptop");let p=r==="phone"?1:2;const m=n=>n%2===(r==="phone"?1:0);let f=null;const g=new Map,h=new Map;let U=Promise.resolve();const D=c?le(c,{...o?{now:o}:{},...l?{sleep:l}:{}}):null,K=n=>{const a=U.then(async()=>{if(f)return;const s=await e.encrypt(n);D&&await D(s.length),f||t(s)});return U=a.catch(()=>{}),a};let x=[],$=1,L=null,j=0;const F=()=>{if(L=null,!x.length||f){x=[],$=1;return}const n=x.length===1?x[0]:fe(x);x=[],$=1,j+=n.length,K(n).finally(()=>{j-=n.length}).catch(()=>{})},y=n=>{if(f)return Promise.reject(new Error(`link: session closed (${f})`));const a=we(n);return u?($+a.length+1>_&&F(),x.push(a),$+=a.length+1,L||(L=E(F)||!0),j>se?U:Promise.resolve()):K(a)},I=n=>{n?.catch?.(()=>{})};let J=Promise.resolve();const G=async(n,a)=>{for(let s=0;s<a.length;s+=X)await y({t:"body",id:n,data:ce(a.subarray(s,s+X))})};function T(n="closed"){if(f)return;f=n;const a=new Error(`link: session closed (${n})`);for(const s of g.values())s.reject?.(a),s.body?.fail(a);for(const s of h.values())s.body.fail(a);g.clear(),h.clear(),x=[],d(n)}async function ie(n){if(!i||h.size>=V){I(y({t:"error",id:n.id,message:i?"too many open requests":"this side serves nothing"}));return}const a=oe(),s={body:a,cancelled:!1};h.set(n.id,s);let k=!1;const v={head:(w,q={})=>(k=!0,y({t:"res",id:n.id,status:w,headers:z(q)})),write:w=>s.cancelled?Promise.resolve():G(n.id,w instanceof Uint8Array?w:A.encode(String(w))),end:()=>(h.delete(n.id),s.cancelled?Promise.resolve():y({t:"end",id:n.id})),fail:w=>(h.delete(n.id),y({t:"error",id:n.id,message:String(w).slice(0,500)})),get cancelled(){return s.cancelled}};Promise.resolve().then(()=>i({method:n.method,path:n.path,headers:n.headers,body:a},v)).catch(w=>I(k?v.end():v.fail(w?.message||"the request failed")))}return{get closed(){return f},close:T,receive(n){const a=J.then(()=>this._receive(n)).catch(s=>T(`bad frame: ${s?.message||s}`));return J=a,a},async _receive(n){if(f)return;let a;try{a=pe(await e.decrypt(n),{batch:u})}catch(s){T(/decrypt|operation|tag/i.test(String(s?.message||s?.name))?"tampered":`bad frame: ${s?.message}`);return}for(const s of a){if(f)return;await this._frame(s)}},async _frame(n){if(n.t==="ping"){I(y({t:"pong"}));return}if(n.t==="pong")return;if(n.t==="req"){if(m(n.id)){T("bad frame: a request in our id space");return}await ie(n);return}const a=m(n.id)?g.get(n.id):null,s=m(n.id)?null:h.get(n.id);if(n.t==="res"&&a)a.resolve({status:n.status,headers:n.headers||{},body:a.body});else if(n.t==="body"&&(a||s))(a||s).body.push(de(n.data));else if(n.t==="end"&&a)a.body.end(),g.delete(n.id);else if(n.t==="end"&&s)s.body.end();else if(n.t==="error"&&a){const k=new Error(n.message||"the request failed");a.reject(k),a.body.fail(k),g.delete(n.id)}else n.t==="cancel"&&s&&(s.cancelled=!0,s.body.fail(new Error("cancelled")),h.delete(n.id))},request({method:n="GET",path:a,headers:s={},body:k=null,signal:v=null}={}){if(!Y.includes(n))return Promise.reject(new Error("link: method not allowed"));if(!ne(a))return Promise.reject(new Error("link: path not allowed"));if(g.size>=V)return Promise.reject(new Error("link: too many open requests"));const w=p;p+=2;const q=oe(),ae=new Promise((S,P)=>g.set(w,{resolve:S,reject:P,body:q}));return v?.addEventListener?.("abort",()=>{const S=g.get(w);if(!S)return;g.delete(w);const P=new Error("aborted");S.reject(P),S.body.fail(P),y({t:"cancel",id:w}).catch(()=>{})},{once:!0}),(async()=>{await y({t:"req",id:w,method:n,path:a,headers:z(s)}),k!=null&&await G(w,k instanceof Uint8Array?k:A.encode(String(k))),await y({t:"end",id:w})})().catch(S=>{const P=g.get(w);P&&(P.reject(S),g.delete(w))}),ae},ping:()=>y({t:"ping"})}}export{X as BODY_CHUNK_BYTES,me as LINK_CAPS,R as LINK_COALESCE,Y as LINK_METHODS,Q as LINK_PACE,H as LINK_SCHEME,C as LINK_VERSION,_ as MAX_FRAME_BYTES,O as PAIRING_CODE_PREFIX,xe as admissionToken,Se as admissionVerifier,ye as coalesceChunks,_e as createLinkSession,Pe as decodeFrame,pe as decodeFrames,fe as encodeBatch,we as encodeFrame,Z as fromB64url,le as linkPacer,ne as linkPathAllowed,Ee as pairingCode,ke as pairingUri,be as parsePairingCode,ee as parsePairingUri,z as sanitizeLinkHeaders,b as toB64url};
package/link-routes.js CHANGED
@@ -1,2 +1,2 @@
1
- const o="https://link.chatpanel.net",s="/v1/link",h=`${s}/room/`,f=Object.freeze([Object.freeze({id:"link",kind:"relay",label:"ChatPanel Link",hosted:!0,summary:"Our relay at link.chatpanel.net carries the encrypted bytes. Nothing to set up."}),Object.freeze({id:"tailscale",kind:"tunnel",label:"Tailscale",summary:"Your own tailnet. Only your devices can reach it; the phone needs the Tailscale app."}),Object.freeze({id:"cloudflare",kind:"tunnel",label:"Cloudflare Tunnel",summary:"Your own Cloudflare Tunnel and a hostname you own."}),Object.freeze({id:"relay",kind:"relay",label:"Your own relay",summary:"A Link relay you run. Your server, your operations; ChatPanel only dials it."})]),c=e=>f.find(t=>t.id===e)||null,a=e=>{throw Object.assign(new Error(e),{code:"bad_route"})};function y(e,t){let n;try{n=new URL(String(e||"").trim())}catch{a(`${t}: not an address — it starts with https://`)}n.protocol!=="https:"&&a(`${t}: must be an https:// address`),(n.username||n.password)&&a(`${t}: no user name or password in the address`);const r=n.hostname.toLowerCase();return(r==="localhost"||/^[\d.]+$/.test(r)||r.includes(":"))&&a(`${t}: a name the phone can look up, not ${r}`),n.origin}function m({id:e="link",url:t=""}={}){const n=c(e);if(n||a(`unknown Link route "${e}"`),e==="link")return{id:e,url:o};const r=y(t,n.label),l=new URL(r).hostname;return e==="tailscale"&&!l.endsWith(".ts.net")&&a("Tailscale: the address `tailscale serve` prints ends in .ts.net"),e==="cloudflare"&&l.endsWith(".trycloudflare.com")&&a("Cloudflare Tunnel: a quick tunnel (trycloudflare.com) gets a new name on every start — use a named tunnel on your own hostname"),e==="relay"&&r===o?{id:"link",url:o}:{id:e,url:r}}function w(e={}){const t=e||{},n=t.relayUrl&&String(t.relayUrl).replace(/\/+$/,"")!==o?String(t.relayUrl):"",r=t.route||(n?"relay":"link");let l;try{l=m({id:r,url:r==="relay"?t.relayUrl||"":t.tunnelUrl||""})}catch(p){return{route:"link",relay:o,tunnel:null,problem:p.message}}const i=c(l.id).kind==="tunnel"?l.url:null,d=i?t.fallback===!1?null:o:l.url;return{route:l.id,relay:d,tunnel:i}}const u=e=>String(e).replace(/^https:/,"wss:").replace(/^http:/,"ws:"),g=(e,t)=>`${u(e)}/v1/room/${t}`,b=(e,t)=>`${u(e)}${h}${t}`;function $(e,{port:t=4320,url:n=""}={}){const r=`http://127.0.0.1:${Number(t)||4320}`,l=(()=>{try{return new URL(n).hostname}catch{return"link.example.com"}})();return e==="tailscale"?{commands:[`tailscale serve --bg --set-path=${s} ${r}${s}`],notes:["Run it on this computer, then paste the https://…ts.net address it prints (`tailscale serve status` shows it again).","On the phone: install Tailscale and sign in to the same tailnet. Use serve, not funnel: serve is reachable from your devices only."]}:e==="cloudflare"?{commands:["cloudflared tunnel create chatpanel-link",`cloudflared tunnel route dns chatpanel-link ${l}`,"cloudflared tunnel run chatpanel-link"],config:["tunnel: chatpanel-link","ingress:",` - hostname: ${l}`,` path: ^${s}/`,` service: ${r}`," - service: http_status:404"].join(`
2
- `),notes:["The config goes in ~/.cloudflared/config.yml (add the credentials-file line `tunnel create` prints). Only the Link path is mapped; everything else answers 404.","Cloudflare Access in front is an optional extra wall — the phone must then pass it, so leave it off unless you know you want it."]}:e==="relay"?{commands:[],notes:["Give the https address of your relay. It must speak the Link relay wire (rooms at /v1/room/<room>, the admission token as a WebSocket subprotocol)."]}:{commands:[],notes:[]}}const k=/^(cf-connecting-ip|cf-ray|cf-ipcountry|cf-visitor|cf-warp-tag-id|cdn-loop|x-forwarded-for|x-forwarded-host|x-forwarded-proto|x-real-ip|forwarded|tailscale-user-login|tailscale-user-name|tailscale-user-profile-pic|tailscale-headers-info|tailscale-app-capabilities|tailscale-funnel-request)$/i;function L(e={}){return(typeof e?.keys=="function"&&!Array.isArray(e)?[...e.keys()]:Object.keys(e||{})).find(n=>k.test(n))||null}export{o as DEFAULT_LINK_RELAY,f as LINK_ROUTES,s as LINK_TUNNEL_PATH,h as LINK_TUNNEL_ROOM_PATH,m as checkLinkRoute,w as linkPaths,c as linkRoute,g as relaySocketUrl,L as tunnelHeader,$ as tunnelSetup,b as tunnelSocketUrl};
1
+ const o="https://link.chatpanel.net",s="/v1/link",p=`${s}/room/`,y=Object.freeze([Object.freeze({id:"link",kind:"relay",label:"ChatPanel Link",hosted:!0,summary:"Our relay at link.chatpanel.net carries the encrypted bytes. Nothing to set up.",reach:"Reachable from anywhere; both sides dial out to our relay, which ChatPanel runs and pays for per message."}),Object.freeze({id:"tailscale",kind:"tunnel",label:"Tailscale",summary:"Your own tailnet. Only your devices can reach it; the phone needs the Tailscale app.",reach:"Reachable only from devices on your tailnet — a partner server must join it. No relay."}),Object.freeze({id:"cloudflare",kind:"tunnel",label:"Cloudflare Tunnel",summary:"Your own Cloudflare Tunnel and a hostname you own.",reach:"Reachable from anywhere at your hostname, through your own Cloudflare account. No relay."}),Object.freeze({id:"relay",kind:"relay",label:"Your own relay",summary:"A Link relay you run. Your server, your operations; ChatPanel only dials it.",reach:"Reachable from anywhere your relay is; you run it and carry its cost."})]),c=e=>y.find(t=>t.id===e)||null,l=e=>{throw Object.assign(new Error(e),{code:"bad_route"})};function f(e,t){let n;try{n=new URL(String(e||"").trim())}catch{l(`${t}: not an address — it starts with https://`)}n.protocol!=="https:"&&l(`${t}: must be an https:// address`),(n.username||n.password)&&l(`${t}: no user name or password in the address`);const r=n.hostname.toLowerCase();return(r==="localhost"||/^[\d.]+$/.test(r)||r.includes(":"))&&l(`${t}: a name the phone can look up, not ${r}`),n.origin}function m({id:e="link",url:t=""}={}){const n=c(e);if(n||l(`unknown Link route "${e}"`),e==="link")return{id:e,url:o};const r=f(t,n.label),a=new URL(r).hostname;return e==="tailscale"&&!a.endsWith(".ts.net")&&l("Tailscale: the address `tailscale serve` prints ends in .ts.net"),e==="cloudflare"&&a.endsWith(".trycloudflare.com")&&l("Cloudflare Tunnel: a quick tunnel (trycloudflare.com) gets a new name on every start — use a named tunnel on your own hostname"),e==="relay"&&r===o?{id:"link",url:o}:{id:e,url:r}}function w(e={}){const t=e||{},n=t.relayUrl&&String(t.relayUrl).replace(/\/+$/,"")!==o?String(t.relayUrl):"",r=t.route||(n?"relay":"link");let a;try{a=m({id:r,url:r==="relay"?t.relayUrl||"":t.tunnelUrl||""})}catch(d){return{route:"link",relay:o,tunnel:null,problem:d.message}}const i=c(a.id).kind==="tunnel"?a.url:null,h=i?t.fallback===!1?null:o:a.url;return{route:a.id,relay:h,tunnel:i}}const u=e=>String(e).replace(/^https:/,"wss:").replace(/^http:/,"ws:"),b=(e,t)=>`${u(e)}/v1/room/${t}`,g=(e,t)=>`${u(e)}${p}${t}`;function $(e,{port:t=4320,url:n=""}={}){const r=`http://127.0.0.1:${Number(t)||4320}`,a=(()=>{try{return new URL(n).hostname}catch{return"link.example.com"}})();return e==="tailscale"?{commands:[`tailscale serve --bg --set-path=${s} ${r}${s}`],notes:["Run it on this computer, then paste the https://…ts.net address it prints (`tailscale serve status` shows it again).","On the phone: install Tailscale and sign in to the same tailnet. Use serve, not funnel: serve is reachable from your devices only."]}:e==="cloudflare"?{commands:["cloudflared tunnel create chatpanel-link",`cloudflared tunnel route dns chatpanel-link ${a}`,"cloudflared tunnel run chatpanel-link"],config:["tunnel: chatpanel-link","ingress:",` - hostname: ${a}`,` path: ^${s}/`,` service: ${r}`," - service: http_status:404"].join(`
2
+ `),notes:["The config goes in ~/.cloudflared/config.yml (add the credentials-file line `tunnel create` prints). Only the Link path is mapped; everything else answers 404.","Cloudflare Access in front is an optional extra wall — the phone must then pass it, so leave it off unless you know you want it."]}:e==="relay"?{commands:[],notes:["Give the https address of your relay. It must speak the Link relay wire (rooms at /v1/room/<room>, the admission token as a WebSocket subprotocol)."]}:{commands:[],notes:[]}}const k=/^(cf-connecting-ip|cf-ray|cf-ipcountry|cf-visitor|cf-warp-tag-id|cdn-loop|x-forwarded-for|x-forwarded-host|x-forwarded-proto|x-real-ip|forwarded|tailscale-user-login|tailscale-user-name|tailscale-user-profile-pic|tailscale-headers-info|tailscale-app-capabilities|tailscale-funnel-request)$/i;function v(e={}){return(typeof e?.keys=="function"&&!Array.isArray(e)?[...e.keys()]:Object.keys(e||{})).find(n=>k.test(n))||null}export{o as DEFAULT_LINK_RELAY,y as LINK_ROUTES,s as LINK_TUNNEL_PATH,p as LINK_TUNNEL_ROOM_PATH,m as checkLinkRoute,w as linkPaths,c as linkRoute,b as relaySocketUrl,v as tunnelHeader,$ as tunnelSetup,g as tunnelSocketUrl};
package/link-scopes.js ADDED
@@ -0,0 +1 @@
1
+ const C=Object.freeze(["phone","partner"]),d=e=>e?.kind==="partner"?"partner":"phone",l=Object.freeze({models:Object.freeze({label:"see which models this computer offers",routes:Object.freeze([Object.freeze({method:"GET",path:/^\/v1\/models(?:\/|$|\?)/})])}),chat:Object.freeze({label:"chat with this computer’s API models (redacted, as every turn is) — not its coding agents",routes:Object.freeze([Object.freeze({method:"POST",path:/^\/v1\/chat\/completions(?:$|\?)/}),Object.freeze({method:"POST",path:/^\/v1\/messages(?:$|\?)/})])}),agents:Object.freeze({label:"also run this computer’s coding agents (Claude Code, Codex, …) as they run here — your Coding Agents settings, sandbox and permission mode decide what they may do",routes:Object.freeze([])}),files:Object.freeze({label:"put data, skills, subagents and instructions in its own folder, and read back what its agents write there — never files that configure the agent",routes:Object.freeze([Object.freeze({method:"GET",path:/^\/v1\/link\/files(?:\/|$|\?)/}),Object.freeze({method:"PUT",path:/^\/v1\/link\/files\/[^?]+$/}),Object.freeze({method:"DELETE",path:/^\/v1\/link\/files\/[^?]+$/})])})}),u=Object.freeze(Object.keys(l)),f=Object.freeze(["models","chat"]),i=e=>{throw Object.assign(new Error(e),{code:"bad_partner"})};function h(e=f){const t=(Array.isArray(e)?e:String(e??"").split(",")).map(n=>String(n||"").trim().toLowerCase()).filter(Boolean);if(!t.length)return[...f];for(const n of t)l[n]||i(`unknown scope "${n}" — one of ${u.join(", ")}`);return t.includes("agents")&&!t.includes("chat")&&i('"agents" widens "chat" — grant chat too (--scopes models,chat,agents)'),t.includes("files")&&!t.includes("agents")&&i('"files" is the agents’ folder — grant agents too (--scopes models,chat,agents,files)'),u.filter(n=>t.includes(n))}function g(e){const r=String(e??"").trim().replace(/\s+/g," ");return/^[A-Za-z0-9][A-Za-z0-9 ._-]{0,39}$/.test(r)||i("a partner name is 1–40 letters, digits, spaces, dots, dashes or underscores, starting with a letter or digit"),r}const S=e=>String(e||"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40)||"partner";function A(e,r){const t=String(r||"").replace(/[\\/]+$/,""),n=/^[A-Za-z]:\\/.test(t)?"\\":"/";return[t,".chatpanel","partners",S(e)].join(n)}function _(e,{name:r,home:t}={}){let n=String(e??"").trim();if(!n)return A(r,t);const o=String(t||"").replace(/[\\/]+$/,"");(n==="~"||n.startsWith("~/"))&&(n=o+n.slice(1)),/^(\/|[A-Za-z]:[\\/])/.test(n)||i("a partner folder is an absolute path (or starts with ~/)"),n.split(/[\\/]+/).includes("..")&&i('a partner folder may not contain ".."');const a=n.replace(/[\\/]+$/,"");return(!a||/^[A-Za-z]:$/.test(a)||a===o)&&i("a partner folder must be a folder of its own, not the whole disk or your home folder"),a}const m=e=>Array.isArray(e?.scopes)?e.scopes.filter(r=>l[r]):[];function z(e,{method:r="GET",path:t=""}={}){const n=String(r).toUpperCase(),o=String(t||"");return(Array.isArray(e)?e:[]).some(s=>l[s]?.routes.some(c=>c.method===n&&c.path.test(o)))}function R(e,r){if(!e||d(e)!=="partner")return!0;const t=m(e);return t.includes("chat")?r==="api"||t.includes("agents"):!1}const x=/^(content-type|accept|accept-language|anthropic-version|anthropic-beta|openai-beta|x-request-id|user-agent|x-chatpanel-destination|x-chatpanel-run)$/i;function P(e={}){const r={};for(const[t,n]of Object.entries(e||{}))x.test(t)&&(r[t.toLowerCase()]=String(n));return r}const E="x-chatpanel-link-device",y="x-chatpanel-link-kind",k="x-chatpanel-link-partner",b="x-chatpanel-link-scopes",$=/^x-chatpanel-link-/i;function T(e={}){const r={};for(const[t,n]of Object.entries(e||{}))$.test(t)||(r[t]=n);return r}function D(e){return d(e)!=="partner"?{}:{[y]:"partner",[k]:encodeURIComponent(String(e.partner?.name||e.name||"partner")),[b]:m(e).join(",")}}function I(e={}){const r=s=>{if(typeof e?.get=="function")return e.get(s);for(const[c,p]of Object.entries(e||{}))if(c.toLowerCase()===s)return Array.isArray(p)?p[0]:p},t=String(r(E)||""),n=String(r(y)||"");if(!t&&n!=="partner")return null;if(n!=="partner")return{device:t,kind:"phone"};let o="";try{o=decodeURIComponent(String(r(k)||""))}catch{o=""}const a=String(r(b)||"").split(",").map(s=>s.trim()).filter(s=>l[s]);return{device:t,kind:"partner",partner:o.slice(0,40)||"partner",scopes:a}}function N(e){return e?e.kind==="partner"?`partner:${e.partner}`:"phone":null}function L(e,r){const t={},n=String(r||"").replace(/[^A-Za-z0-9_-]/g,"").slice(0,40),o=typeof e?.thread?.id=="string"?e.thread.id:"",a=n&&o?`partner.${n}.${o}`:"";if(a&&/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/.test(a)){const s=typeof e.thread.title=="string"?e.thread.title:"";t.thread={id:a,...s?{title:s}:{}}}return e?.ephemeral===!0&&(t.ephemeral=!0),t}const O={link:"ChatPanel’s hosted relay — both sides dial out to it; it carries only ciphertext",relay:"your own relay — both sides dial out to it; it carries only ciphertext",tailscale:"your Tailscale tunnel door on this computer — no relay; the partner’s server must be on your tailnet",cloudflare:"your Cloudflare Tunnel door on this computer — no relay; reachable from anywhere at your hostname"};function F({partner:e,scopes:r,route:t="link",host:n="",folder:o=""}={}){const a=g(e),s=h(r),c=[`Partner "${a}" will reach this computer's gateway over ChatPanel Link, end-to-end encrypted.`,`Route: ${t} — its server connects to ${n||"(no host)"}: ${O[t]||t}.`,"It will be able to:",...s.map(p=>` • ${l[p].label}`),`Coding agents: ${s.includes("agents")?"YES — they run as they do here: your Coding Agents settings, sandbox and permission mode decide what they may do; the partner never answers their approval prompts":"no"}.`,...s.includes("agents")&&o?[`Its agents work in ${o} — its own skills (.claude/skills), subagents (.claude/agents) and instructions (CLAUDE.md, AGENTS.md) go there.`]:[],`Files: ${s.includes("files")?"YES — it may put data (data/), skills, subagents and instructions in that folder and read them back; never settings, hooks or MCP config":"no"}.`,"It will never reach pairing, settings, prefs, history, memory or the event log.","The code works once, within 10 minutes. Revoke it any time: chatpanel-gateway link revoke <id>, or Revoke in Settings › Link › Servers."];return{partner:a,scopes:s,agents:s.includes("agents"),route:t,host:n,...o?{folder:o}:{},lines:c}}function K(){return u.map(e=>({id:e,label:l[e].label,checked:f.includes(e),needs:e==="agents"?"chat":e==="files"?"agents":null}))}function U({name:e,scopes:r,route:t,relay:n,folder:o,confirm:a=!1}={}){const s={kind:"partner",partner:{name:g(e)},scopes:h(r)};return typeof o=="string"&&o.trim()&&(s.folder=o.trim().slice(0,1024)),t&&(s.route=String(t)),t==="relay"&&n&&(s.relay=String(n).trim()),a===!0&&(s.confirm=!0),s}const w=[/^data\/./,/^\.claude\/skills\/./,/^\.agents\/skills\/./,/^\.claude\/agents\/[^/]+\.md$/,/^(CLAUDE|AGENTS)\.md$/],v=/^(allowed-tools|allowed_tools|allowedTools|hooks|permissionMode|permission-mode|mcpServers|mcp-servers|mcp_servers)\s*:/m;function M(e,{listing:r=!1}={}){let t=String(e??"");try{t=decodeURIComponent(t)}catch{i("a file path is not valid URL encoding")}if(t=t.replace(/^\/+/,""),r&&(t===""||t==="."))return"";(!t||t.length>512||/[\\\u0000-\u001f]/.test(t))&&i("a file path is 1–512 characters, with forward slashes and no control characters");const n=t.split("/");n.some(a=>a===""||a==="."||a==="..")&&i('a file path is relative to the partner’s folder: no empty, "." or ".." parts');const o=n.join("/");return!w.some(a=>a.test(o))&&!(r&&/^(data|\.claude\/skills|\.claude\/agents|\.agents\/skills)$/.test(o))&&i(`a partner may hold files only under data/, .claude/skills/, .agents/skills/, .claude/agents/*.md, CLAUDE.md or AGENTS.md — not "${o}"`),o}const H=e=>w.some(r=>r.test(String(e||"")));function Z(e,r){if(!/^(\.claude\/skills\/|\.agents\/skills\/|\.claude\/agents\/)/.test(String(e||""))||!/\.md$/i.test(String(e)))return;const t=/^\uFEFF?---\r?\n([\s\S]*?)\r?\n---/.exec(String(r||"")),n=t?t[1]:"",o=v.exec(n);o&&i(`${e}: "${o[1]}" in its front matter would change what the agent may do — that is the owner’s Coding Agents settings, not a partner’s file`)}const j=Object.freeze([Object.freeze({id:"allow",label:"Allow once"}),Object.freeze({id:"allow_action",label:"Allow this for the conversation"}),Object.freeze({id:"allow_all",label:"Allow everything in this conversation"}),Object.freeze({id:"deny",label:"Deny"})]);function G(e){return e==="allow"?"allow":e==="allow_action"?"always":e==="allow_all"?"all":"deny"}function V(e={},{now:r=Date.now()}={}){const t=Math.max(0,Math.round(((Number(e.expiresAt)||0)-r)/1e3));return{id:String(e.id||""),title:String(e.title||`${e.partner||"A partner"}’s agent asks`),body:String(e.body||""),partner:String(e.partner||""),left:`${Math.floor(t/60)}:${String(t%60).padStart(2,"0")}`,decisions:j}}function Y(e=[]){const r=Array.isArray(e)?e:[];return{phones:r.filter(t=>d(t)==="phone"),partners:r.filter(t=>d(t)==="partner")}}function B(e={}){const r=Array.isArray(e.scopes)?e.scopes:[];return{id:e.id,title:`${e.partner?.name||e.name||"partner"} — partner server`,detail:`may ${r.filter(t=>t!=="agents"&&t!=="files").join(" and ")||"nothing"} · coding agents: ${r.includes("agents")?`yes${e.folder?`, in ${e.folder}`:""}`:"no"}${r.includes("files")?" · files: yes":""} · route: ${e.route||"?"}${e.host?` via ${e.host}`:""}`,warning:e.routeClosed?"Its tunnel door closed when this computer’s route changed — pair it again to move it.":""}}export{f as DEFAULT_PARTNER_SCOPES,E as LINK_DEVICE_HEADER,C as LINK_DEVICE_KINDS,y as LINK_KIND_HEADER,k as LINK_PARTNER_HEADER,b as LINK_SCOPES_HEADER,j as PARTNER_APPROVAL_DECISIONS,l as PARTNER_SCOPES,u as PARTNER_SCOPE_IDS,Z as checkPartnerFileText,_ as checkPartnerFolder,g as checkPartnerName,h as checkPartnerScopes,A as defaultPartnerFolder,F as describePartnerAccess,I as linkCallerOf,R as linkDestinationAllowed,d as linkDeviceKind,D as linkMarkHeaders,N as linkVia,V as partnerApprovalCard,G as partnerDecisionForDesk,B as partnerDeviceRow,M as partnerFilePath,S as partnerFolderSlug,P as partnerHeaders,z as partnerMay,H as partnerMayHold,U as partnerPairBody,L as partnerRunHint,K as partnerScopeChoices,Y as splitLinkDevices,T as withoutLinkMarks};
package/omni.js CHANGED
@@ -1 +1 @@
1
- const l=Object.freeze(["search","ask","subject","tag","command"]),f=Object.freeze([Object.freeze({mode:"search",prefix:"",hint:"search"}),Object.freeze({mode:"ask",prefix:"?",hint:"ask"}),Object.freeze({mode:"subject",prefix:"@",hint:"subject"}),Object.freeze({mode:"tag",prefix:"#",hint:"tag"}),Object.freeze({mode:"command",prefix:">",hint:"command"})]),m=new Map(f.filter(e=>e.prefix).map(e=>[e.prefix,e.mode])),u=new Set(["type","since","before","in","limit"]);function d(e){const n=String(e??""),r=n.trimStart(),o=r.slice(0,1),c=m.get(o)||"search",t=c==="search"?"":o;let s=t?r.slice(1):r;s=s.replace(/^\s+/,"");const{query:i,filters:a}=p(s);return{mode:c,prefix:t,query:i,filters:a,raw:n}}function p(e){const n={},r=[],o=String(e||"").match(/(?:[A-Za-z]+:)?"[^"]*"|\S+/g)||[];for(const c of o){const t=/^([a-z]+):(.*)$/i.exec(c);if(t&&u.has(t[1].toLowerCase())){const s=t[1].toLowerCase(),i=t[2].replace(/^"|"$/g,"");i&&(n[s]=i);continue}r.push(c.replace(/^"|"$/g,""))}return{query:r.join(" ").trim(),filters:n}}function x(e,n=Date.now()){const r=String(e||"").trim().toLowerCase();if(!r)return 0;if(r==="today"){const t=new Date(n);return t.setHours(0,0,0,0),t.getTime()}if(r==="yesterday"){const t=new Date(n);return t.setHours(0,0,0,0),t.getTime()-864e5}const o=/^(\d+)\s*([mhdw])$/.exec(r);if(o){const t=Number(o[1]),s={m:6e4,h:36e5,d:864e5,w:6048e5}[o[2]];return n-t*s}const c=Date.parse(r);return Number.isFinite(c)?c:0}function h(e){return!!e&&e.mode==="ask"}function b(e,{minChars:n=2}={}){return e?e.mode==="command"?e.query.length>=1:e.query.length>=n:!1}export{f as OMNI_GRAMMAR,l as OMNI_MODES,p as extractFilters,b as isActionable,d as parseOmni,x as resolveSince,h as wantsModel};
1
+ const d=Object.freeze(["search","ask","subject","tag","command"]),f=Object.freeze([Object.freeze({mode:"search",prefix:"",hint:"search"}),Object.freeze({mode:"ask",prefix:"?",hint:"ask"}),Object.freeze({mode:"subject",prefix:"@",hint:"subject"}),Object.freeze({mode:"tag",prefix:"#",hint:"tag"}),Object.freeze({mode:"command",prefix:">",hint:"command"})]),m=new Map(f.filter(e=>e.prefix).map(e=>[e.prefix,e.mode])),u=new Set(["type","since","before","date","in","limit"]);function l(e){const n=String(e??""),r=n.trimStart(),o=r.slice(0,1),c=m.get(o)||"search",t=c==="search"?"":o;let s=t?r.slice(1):r;s=s.replace(/^\s+/,"");const{query:i,filters:a}=p(s);return{mode:c,prefix:t,query:i,filters:a,raw:n}}function p(e){const n={},r=[],o=String(e||"").match(/(?:[A-Za-z]+:)?"[^"]*"|\S+/g)||[];for(const c of o){const t=/^([a-z]+):(.*)$/i.exec(c);if(t&&u.has(t[1].toLowerCase())){const s=t[1].toLowerCase(),i=t[2].replace(/^"|"$/g,"");i&&(n[s]=i);continue}r.push(c.replace(/^"|"$/g,""))}return{query:r.join(" ").trim(),filters:n}}function x(e,n=Date.now()){const r=String(e||"").trim().toLowerCase();if(!r)return 0;if(r==="today"){const t=new Date(n);return t.setHours(0,0,0,0),t.getTime()}if(r==="yesterday"){const t=new Date(n);return t.setHours(0,0,0,0),t.getTime()-864e5}const o=/^(\d+)\s*([mhdw])$/.exec(r);if(o){const t=Number(o[1]),s={m:6e4,h:36e5,d:864e5,w:6048e5}[o[2]];return n-t*s}const c=Date.parse(r);return Number.isFinite(c)?c:0}function h(e){return!!e&&e.mode==="ask"}function b(e,{minChars:n=2}={}){return e?e.mode==="command"?e.query.length>=1:e.query.length>=n:!1}export{f as OMNI_GRAMMAR,d as OMNI_MODES,p as extractFilters,b as isActionable,l as parseOmni,x as resolveSince,h as wantsModel};