@stackbone/sdk 0.1.0-alpha.6 → 0.1.0-alpha.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +96 -0
- package/README.md +266 -471
- package/agent-registry-BNXuj88Q.d.cts +198 -0
- package/agent-registry-BNXuj88Q.d.ts +198 -0
- package/call-connector-CYDw_yG5.d.cts +118 -0
- package/call-connector-CYDw_yG5.d.ts +118 -0
- package/connect.cjs +270 -0
- package/connect.cjs.map +1 -0
- package/connect.d.cts +94 -0
- package/connect.d.ts +94 -0
- package/connect.js +257 -0
- package/connect.js.map +1 -0
- package/eve.cjs +52 -0
- package/eve.cjs.map +1 -0
- package/eve.d.cts +41 -0
- package/eve.d.ts +41 -0
- package/eve.js +47 -0
- package/eve.js.map +1 -0
- package/index.cjs +435 -60
- package/index.cjs.map +1 -1
- package/index.d.cts +389 -81
- package/index.d.ts +389 -81
- package/index.js +430 -62
- package/index.js.map +1 -1
- package/observability/index.cjs +1 -268
- package/observability/index.cjs.map +1 -1
- package/observability/index.d.cts +1 -96
- package/observability/index.d.ts +1 -96
- package/observability/index.js +2 -264
- package/observability/index.js.map +1 -1
- package/package.json +47 -1
- package/stackbone-sdk-0.1.0-alpha.8.tgz +0 -0
- package/workflow.cjs +17444 -0
- package/workflow.cjs.map +1 -0
- package/workflow.d.cts +128 -0
- package/workflow.d.ts +128 -0
- package/workflow.js +17419 -0
- package/workflow.js.map +1 -0
- package/stackbone-sdk-0.1.0-alpha.6.tgz +0 -0
package/workflow.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/luxon@3.7.2/node_modules/luxon/src/errors.js","../../../node_modules/.pnpm/luxon@3.7.2/node_modules/luxon/src/impl/formats.js","../../../node_modules/.pnpm/luxon@3.7.2/node_modules/luxon/src/zone.js","../../../node_modules/.pnpm/luxon@3.7.2/node_modules/luxon/src/zones/systemZone.js","../../../node_modules/.pnpm/luxon@3.7.2/node_modules/luxon/src/zones/IANAZone.js","../../../node_modules/.pnpm/luxon@3.7.2/node_modules/luxon/src/impl/locale.js","../../../node_modules/.pnpm/luxon@3.7.2/node_modules/luxon/src/zones/fixedOffsetZone.js","../../../node_modules/.pnpm/luxon@3.7.2/node_modules/luxon/src/zones/invalidZone.js","../../../node_modules/.pnpm/luxon@3.7.2/node_modules/luxon/src/impl/zoneUtil.js","../../../node_modules/.pnpm/luxon@3.7.2/node_modules/luxon/src/impl/digits.js","../../../node_modules/.pnpm/luxon@3.7.2/node_modules/luxon/src/settings.js","../../../node_modules/.pnpm/luxon@3.7.2/node_modules/luxon/src/impl/invalid.js","../../../node_modules/.pnpm/luxon@3.7.2/node_modules/luxon/src/impl/conversions.js","../../../node_modules/.pnpm/luxon@3.7.2/node_modules/luxon/src/impl/util.js","../../../node_modules/.pnpm/luxon@3.7.2/node_modules/luxon/src/impl/english.js","../../../node_modules/.pnpm/luxon@3.7.2/node_modules/luxon/src/impl/formatter.js","../../../node_modules/.pnpm/luxon@3.7.2/node_modules/luxon/src/impl/regexParser.js","../../../node_modules/.pnpm/luxon@3.7.2/node_modules/luxon/src/duration.js","../../../node_modules/.pnpm/luxon@3.7.2/node_modules/luxon/src/interval.js","../../../node_modules/.pnpm/luxon@3.7.2/node_modules/luxon/src/info.js","../../../node_modules/.pnpm/luxon@3.7.2/node_modules/luxon/src/impl/diff.js","../../../node_modules/.pnpm/luxon@3.7.2/node_modules/luxon/src/impl/tokenParser.js","../../../node_modules/.pnpm/luxon@3.7.2/node_modules/luxon/src/datetime.js","../../../node_modules/.pnpm/luxon@3.7.2/node_modules/luxon/src/luxon.js","../../../node_modules/.pnpm/cron-parser@4.9.0/node_modules/cron-parser/lib/date.js","../../../node_modules/.pnpm/cron-parser@4.9.0/node_modules/cron-parser/lib/field_compactor.js","../../../node_modules/.pnpm/cron-parser@4.9.0/node_modules/cron-parser/lib/field_stringify.js","../../../node_modules/.pnpm/cron-parser@4.9.0/node_modules/cron-parser/lib/expression.js","../../../node_modules/.pnpm/cron-parser@4.9.0/node_modules/cron-parser/lib/parser.js","../../../libs/sdk/src/runtime/invocation-context.ts","../../../libs/sdk/src/config.ts","../../../libs/shared/validators/src/lib/common/json-object.ts","../../../libs/shared/validators/src/lib/organizations/organizations.ts","../../../libs/shared/validators/src/lib/connectors/connectors.ts","../../../libs/shared/validators/src/lib/agents/contract.ts","../../../libs/shared/validators/src/lib/agents/queue-jobs.ts","../../../libs/shared/validators/src/lib/common/utf8-byte-length.ts","../../../libs/shared/validators/src/lib/studio/studio-queues.ts","../../../libs/sdk/src/result.ts","../../../libs/sdk/src/contract/contract-handshake.ts","../../../libs/sdk/src/contract/capability-registry.ts","../../../libs/sdk/src/contract/module-gate.ts","../../../libs/sdk/src/lib/http-client.ts","../../../libs/sdk/src/surfaces/agent-local/approval/tool.ts","../../../libs/sdk/src/surfaces/agent-local/approval/verify.ts","../../../libs/sdk/src/surfaces/agent-local/approval/approval.ts","../../../libs/sdk/src/surfaces/agent-local/config/config.ts","../../../libs/sdk/src/surfaces/agent-local/database/lazy-client.ts","../../../libs/sdk/src/surfaces/agent-local/database/shared-handle.ts","../../../libs/sdk/src/surfaces/agent-local/database/database.ts","../../../libs/shared/prompt-compiler/src/lib/compile.ts","../../../libs/sdk/src/surfaces/agent-local/prompts/prompts.ts","../../../libs/shared/rag-core/src/lib/result.ts","../../../libs/shared/rag-core/src/lib/contract/rag-contract.ts","../../../libs/shared/rag-core/src/lib/contract/rag-ingest-role.ts","../../../libs/shared/rag-core/src/lib/parsing/chunker.ts","../../../libs/shared/rag-core/src/lib/parsing/parser.ts","../../../libs/shared/rag-core/src/lib/pipeline/errors.ts","../../../libs/shared/rag-core/src/lib/pipeline/sql.ts","../../../libs/shared/rag-core/src/lib/pipeline/pipeline.ts","../../../libs/shared/rag-core/src/lib/pipeline/jobs.ts","../../../libs/sdk/src/surfaces/agent-local/rag/embedder.ts","../../../libs/sdk/src/surfaces/agent-local/rag/rag.ts","../../../node_modules/.pnpm/libsodium@0.8.4/node_modules/libsodium/dist/modules-esm/libsodium.mjs","../../../node_modules/.pnpm/libsodium-wrappers@0.8.4/node_modules/libsodium-wrappers/dist/modules-esm/libsodium-wrappers.mjs","../../../libs/shared/crypto/src/lib/secret-cipher.ts","../../../libs/sdk/src/surfaces/agent-local/secrets/secrets.ts","../../../libs/sdk/src/runtime/workflow-scheduler.ts","../../../libs/sdk/src/surfaces/agent-local/workflows/schedule-workflow.ts","../../../libs/sdk/src/runtime/workflow-starter.ts","../../../libs/sdk/src/surfaces/agent-local/workflows/start-workflow.ts","../../../libs/sdk/src/surfaces/agent-local/workflows/start-workflow-and-wait.ts","../../../libs/sdk/src/surfaces/agent-local/workflows/workflows-accessor.ts","../../../libs/sdk/src/surfaces/external/agents/workflow-agent-transport.ts","../../../libs/sdk/src/surfaces/external/agents/lazy-agent.ts","../../../libs/sdk/src/surfaces/external/ai/ai.ts","../../../libs/sdk/src/surfaces/external/connect/connect-transport.ts","../../../libs/sdk/src/surfaces/external/connect/call-connector.ts","../../../libs/shared/s3-client/src/lib/create-s3-compat-client.ts","../../../libs/sdk/src/surfaces/external/storage/storage.ts","../../../libs/sdk/src/surfaces/pending/connections/connections.ts","../../../libs/sdk/src/surfaces/pending/memory/memory.ts","../../../libs/sdk/src/surfaces/pending/queues/queues.ts","../../../libs/sdk/src/client.ts","../../../libs/sdk/src/runtime/ambient-client.ts","../../../libs/sdk/src/surfaces/agent-local/approval/request-approval.ts","../../../libs/sdk/src/surfaces/external/agents/eve-agent.ts","../../../libs/sdk/src/surfaces/agent-local/workflows/ingest-documents.ts"],"names":["LuxonError","Error","constructor","reason","toMessage","InvalidIntervalError","InvalidDurationError","ConflictingSpecificationError","InvalidUnitError","unit","InvalidArgumentError","ZoneIsAbstractError","n","s","l","DATE_SHORT","year","month","day","DATE_MED","DATE_MED_WITH_WEEKDAY","weekday","DATE_FULL","DATE_HUGE","TIME_SIMPLE","hour","minute","TIME_WITH_SECONDS","second","TIME_WITH_SHORT_OFFSET","timeZoneName","TIME_WITH_LONG_OFFSET","TIME_24_SIMPLE","hourCycle","TIME_24_WITH_SECONDS","TIME_24_WITH_SHORT_OFFSET","TIME_24_WITH_LONG_OFFSET","DATETIME_SHORT","DATETIME_SHORT_WITH_SECONDS","DATETIME_MED","DATETIME_MED_WITH_SECONDS","DATETIME_MED_WITH_WEEKDAY","DATETIME_FULL","DATETIME_FULL_WITH_SECONDS","DATETIME_HUGE","DATETIME_HUGE_WITH_SECONDS","Zone","type","name","ianaName","isUniversal","offsetName","ts","opts","formatOffset","format","offset","equals","otherZone","isValid","singleton","SystemZone","instance","Intl","DateTimeFormat","resolvedOptions","timeZone","locale","parseZoneInfo","Date","getTimezoneOffset","dtfCache","Map","makeDTF","zoneName","dtf","get","undefined","hour12","era","set","typeToPos","hackyOffset","date","formatted","replace","parsed","exec","fMonth","fDay","fYear","fadOrBc","fHour","fMinute","fSecond","partsOffset","formatToParts","filled","i","length","value","pos","isUndefined","parseInt","ianaZoneCache","IANAZone","create","zone","resetCache","clear","isValidSpecifier","isValidZone","e","valid","NaN","isNaN","adOrBc","Math","abs","adjustedHour","asUTC","objToLocalTS","millisecond","asTS","over","intlLFCache","getCachedLF","locString","key","JSON","stringify","ListFormat","intlDTCache","getCachedDTF","intlNumCache","getCachedINF","inf","NumberFormat","intlRelCache","getCachedRTF","base","cacheKeyOpts","RelativeTimeFormat","sysLocaleCache","systemLocale","intlResolvedOptionsCache","getCachedIntResolvedOptions","weekInfoCache","getCachedWeekInfo","data","Locale","getWeekInfo","weekInfo","fallbackWeekSettings","parseLocaleString","localeStr","xIndex","indexOf","substring","uIndex","options","selectedStr","smaller","numberingSystem","calendar","intlConfigString","outputCalendar","includes","mapMonths","f","ms","dt","DateTime","utc","push","mapWeekdays","listStuff","loc","englishFn","intlFn","mode","listingMode","supportsFastNumbers","startsWith","PolyNumberFormatter","intl","forceSimple","padTo","floor","otherOpts","Object","keys","intlOpts","useGrouping","minimumIntegerDigits","fixed","roundTo","padStart","PolyDateFormatter","originalZone","z","gmtOffset","offsetZ","setZone","plus","minutes","map","join","toJSDate","parts","part","PolyRelFormatter","isEnglish","style","hasRelative","rtf","count","English","numeric","firstDay","minimalDays","weekend","fromOpts","weekSettings","defaultToEN","specifiedLocale","Settings","defaultLocale","localeR","numberingSystemR","defaultNumberingSystem","outputCalendarR","defaultOutputCalendar","weekSettingsR","validateWeekSettings","defaultWeekSettings","fromObject","numbering","parsedLocale","parsedNumberingSystem","parsedOutputCalendar","weekdaysCache","standalone","monthsCache","meridiemCache","eraCache","fastNumbersCached","fastNumbers","isActuallyEn","hasNoWeirdness","clone","alts","getOwnPropertyNames","redefaultToEN","redefaultToSystem","months","monthSpecialCase","formatStr","mapper","extract","dtFormatter","weekdays","meridiems","eras","field","df","results","matching","find","m","toLowerCase","numberFormatter","relFormatter","listFormatter","getWeekSettings","hasLocaleWeekInfo","getStartOfWeek","getMinDaysInFirstWeek","getWeekendDays","other","toString","FixedOffsetZone","utcInstance","parseSpecifier","r","match","signedOffset","InvalidZone","normalizeZone","input","defaultZone","isString","lowered","isNumber","numberingSystems","arab","arabext","bali","beng","deva","fullwide","gujr","hanidec","khmr","knda","laoo","limb","mlym","mong","mymr","orya","tamldec","telu","thai","tibt","latn","numberingSystemsUTF16","hanidecChars","split","parseDigits","str","code","charCodeAt","search","min","max","digitRegexCache","resetDigitRegexCache","digitRegex","append","ns","appendCache","regex","RegExp","now","twoDigitCutoffYear","throwOnInvalid","cutoffYear","t","resetCaches","Invalid","explanation","nonLeapLadder","leapLadder","unitOutOfRange","dayOfWeek","d","UTC","setUTCFullYear","getUTCFullYear","js","getUTCDay","computeOrdinal","isLeapYear","uncomputeOrdinal","ordinal","table","month0","findIndex","isoWeekdayToLocal","isoWeekday","startOfWeek","gregorianToWeek","gregObj","minDaysInFirstWeek","weekNumber","weekYear","weeksInWeekYear","timeObject","weekToGregorian","weekData","weekdayOfJan4","yearInDays","daysInYear","gregorianToOrdinal","gregData","ordinalToGregorian","ordinalData","usesLocalWeekValues","obj","hasLocaleWeekData","localWeekday","localWeekNumber","localWeekYear","hasIsoWeekData","hasInvalidWeekData","validYear","isInteger","validWeek","integerBetween","validWeekday","hasInvalidOrdinalData","validOrdinal","hasInvalidGregorianData","validMonth","validDay","daysInMonth","hasInvalidTimeData","validHour","validMinute","validSecond","validMillisecond","o","isDate","prototype","call","maybeArray","thing","Array","isArray","bestBy","arr","by","compare","reduce","best","next","pair","pick","a","k","hasOwnProperty","prop","settings","some","v","from","bottom","top","floorMod","x","isNeg","padded","parseInteger","string","parseFloating","parseFloat","parseMillis","fraction","number","digits","rounding","factor","ceil","trunc","round","RangeError","modMonth","modYear","firstWeekOffset","fwdlw","weekOffset","weekOffsetNext","untruncateYear","offsetFormat","modified","offHourStr","offMinuteStr","offHour","Number","offMin","offMinSigned","is","asNumber","numericValue","isFinite","normalizeObject","normalizer","normalized","u","hours","sign","monthsLong","monthsShort","monthsNarrow","weekdaysLong","weekdaysShort","weekdaysNarrow","erasLong","erasShort","erasNarrow","meridiemForDateTime","weekdayForDateTime","monthForDateTime","eraForDateTime","formatRelativeTime","narrow","units","years","quarters","weeks","days","seconds","lastable","isDay","isInPast","fmtValue","singular","lilUnits","fmtUnit","stringifyTokens","splits","tokenToString","token","literal","val","macroTokenToFormatOpts","D","Formats","DD","DDD","DDDD","tt","ttt","tttt","T","TT","TTT","TTTT","ff","fff","ffff","F","FF","FFF","FFFF","Formatter","parseFormat","fmt","current","currentFull","bracketed","c","charAt","test","formatOpts","systemLoc","formatWithSystemDefault","formatDateTime","formatDateTimeParts","formatInterval","interval","start","formatRange","end","num","p","signDisplay","formatDateTimeFromString","knownEnglish","useDateTimeFormatter","isOffsetFixed","allowZ","meridiem","maybeMacro","slice","quarter","formatDurationFromString","dur","invertLargest","signMode","tokenToField","lildur","info","mapped","inversionFactor","isNegativeDuration","largestUnit","tokens","realTokens","found","concat","collapsed","shiftTo","filter","durationInfo","values","ianaRegex","combineRegexes","regexes","full","source","combineExtractors","extractors","mergedVals","mergedZone","cursor","ex","parse","patterns","extractor","simpleParse","ret","offsetRegex","isoExtendedZone","isoTimeBaseRegex","isoTimeRegex","isoTimeExtensionRegex","isoYmdRegex","isoWeekRegex","isoOrdinalRegex","extractISOWeekData","extractISOOrdinalData","sqlYmdRegex","sqlTimeRegex","sqlTimeExtensionRegex","int","fallback","extractISOYmd","item","extractISOTime","milliseconds","extractISOOffset","local","fullOffset","extractIANAZone","isoTimeOnly","isoDuration","extractISODuration","yearStr","monthStr","weekStr","dayStr","hourStr","minuteStr","secondStr","millisecondsStr","hasNegativePrefix","negativeSeconds","maybeNegate","force","obsOffsets","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","fromStrings","weekdayStr","result","rfc2822","extractRFC2822","obsOffset","milOffset","preprocessRFC2822","trim","rfc1123","rfc850","ascii","extractRFC1123Or850","extractASCII","isoYmdWithTimeExtensionRegex","isoWeekWithTimeExtensionRegex","isoOrdinalWithTimeExtensionRegex","isoTimeCombinedRegex","extractISOYmdTimeAndOffset","extractISOWeekTimeAndOffset","extractISOOrdinalDateAndTime","extractISOTimeAndOffset","parseISODate","parseRFC2822Date","parseHTTPDate","parseISODuration","extractISOTimeOnly","parseISOTimeOnly","sqlYmdWithTimeExtensionRegex","sqlTimeCombinedRegex","extractISOTimeOffsetAndIANAZone","parseSQL","INVALID","lowOrderMatrix","casualMatrix","daysInYearAccurate","daysInMonthAccurate","accurateMatrix","orderedUnits","reverseUnits","reverse","conf","conversionAccuracy","matrix","Duration","durationToMillis","vals","_vals$milliseconds","sum","normalizeValues","reduceRight","previous","previousVal","conv","rollUp","removeZeroes","newVals","entries","config","accurate","invalid","isLuxonDuration","fromMillis","normalizeUnit","fromDurationLike","durationLike","isDuration","fromISO","text","fromISOTime","week","toFormat","fmtOpts","toHuman","showZeros","unitDisplay","listStyle","toObject","toISO","toISOTime","millis","toMillis","suppressMilliseconds","suppressSeconds","includePrefix","includeOffset","dateTime","toJSON","Symbol","for","invalidReason","valueOf","duration","minus","negate","mapUnits","fn","mixed","reconfigure","as","normalize","rescale","shiftToAll","built","accumulated","lastUnit","own","ak","negated","removeZeros","invalidExplanation","eq","v1","v2","validateStartEnd","Interval","isLuxonInterval","fromDateTimes","builtStart","friendlyDateTime","builtEnd","validateError","after","before","startIsValid","endIsValid","isInterval","lastDateTime","toDuration","startOf","useLocaleWeeks","diff","hasSame","isEmpty","isAfter","isBefore","contains","splitAt","dateTimes","sorted","sort","b","added","splitBy","idx","divideEqually","numberOfParts","overlaps","abutsStart","abutsEnd","engulfs","intersection","union","merge","intervals","final","sofar","xor","currentCount","ends","time","flattened","difference","toLocaleString","toISODate","dateFormat","separator","mapEndpoints","mapFn","Info","hasDST","proto","isValidIANAZone","locObj","getMinimumDaysInFirstWeek","getWeekendWeekdays","monthsFormat","weekdaysFormat","features","relative","localeWeek","dayDiff","earlier","later","utcDayStart","toUTC","keepLocalTime","highOrderDiffs","differs","lowestOrder","highWater","differ","remainingMillis","lowerOrderUnits","MISSING_FTP","intUnit","post","deser","NBSP","String","fromCharCode","spaceOrNBSP","spaceOrNBSPRegExp","fixListRegex","stripInsensitivities","oneOf","strings","startIndex","groups","h","simple","escapeToken","unitForToken","one","two","three","four","six","oneOrTwo","oneToThree","oneToSix","oneToNine","twoToFour","fourToSix","unitate","partTypeStyleToTokenVal","short","long","dayperiod","dayPeriod","hour24","tokenForPart","resolvedOpts","isSpace","actualType","buildRegex","re","handlers","matches","all","matchIndex","dateTimeFromMatches","toField","specificOffset","Z","q","M","G","y","S","dummyDateTimeCache","getDummyDateTime","maybeExpandMacroToken","formatOptsToTokens","expandMacroTokens","TokenParser","disqualifyingUnit","regexString","explainFromTokens","rawMatches","parser","parseFromTokens","formatter","MAX_DATE","unsupportedZone","possiblyCachedWeekData","possiblyCachedLocalWeekData","localWeekData","inst","old","fixOffset","localTS","tz","utcGuess","o2","o3","tsToObj","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","objToTS","adjustTime","oPre","millisToAdd","parseDataToDateTime","parsedZone","interpretationZone","toTechFormat","extended","precision","longFormat","extendedZone","showSeconds","defaultUnitValues","defaultWeekUnitValues","defaultOrdinalUnitValues","orderedWeekUnits","orderedOrdinalUnits","weeknumber","weeksnumber","weeknumbers","weekyear","weekyears","normalizeUnitWithLocalWeeks","guessOffsetForZone","zoneOffsetTs","offsetGuess","zoneOffsetGuessCache","quickDT","offsetProvis","diffRelative","calendary","lastOpts","argList","args","unchanged","ot","_zone","isLuxonDateTime","arguments","fromJSDate","zoneToUse","fromSeconds","tsNow","containsOrdinal","containsGregorYear","containsGregorMD","containsGregor","definiteWeekDef","useWeekData","defaultValues","objNow","foundFirst","higherOrderInvalid","gregorian","tsFinal","offsetFinal","fromRFC2822","fromHTTP","fromFormat","localeToUse","fromString","fromSQL","InvalidDateTimeError","isDateTime","parseFormatForOpts","localeOpts","tokenList","expandFormat","expanded","isWeekend","monthShort","monthLong","weekdayShort","weekdayLong","offsetNameShort","offsetNameLong","isInDST","getPossibleOffsets","dayMs","minuteMs","oEarlier","oLater","o1","ts1","ts2","c1","c2","isInLeapYear","weeksInLocalWeekYear","resolvedLocaleOptions","toLocal","keepCalendarTime","newTS","asObj","setLocale","settingWeekStuff","normalizedUnit","endOf","toLocaleParts","ext","toISOWeekDate","toRFC2822","toHTTP","toSQLDate","toSQLTime","includeZone","includeOffsetSpace","toSQL","toSeconds","toUnixInteger","toBSON","includeConfig","otherDateTime","durOpts","otherIsLater","diffed","diffNow","until","inputMs","adjustedToZone","toRelative","padding","toRelativeCalendar","every","fromFormatExplain","fromStringExplain","buildFormatParser","fromFormatParser","formatParser","dateTimeish","VERSION","luxon","require","CronDate","addYear","_date","addMonth","addDay","addHour","prev","addMinute","addSecond","subtractYear","subtractMonth","subtractDay","subtractHour","subtractMinute","subtractSecond","getDate","getFullYear","getDay","getMonth","getHours","getMinutes","getSeconds","getMilliseconds","getTime","_getUTC","toISOString","setDate","setFullYear","setDay","setMonth","setHours","setMinutes","setSeconds","setMilliseconds","toDate","isLastDayOfMonth","newDate","isLastWeekdayOfMonth","timestamp","dateOpts","module","exports","buildRange","completeRangeWithItem","range","step","finalizeCurrentRange","currentRange","currentItemRange","compactField","currentItem","stringifyField","ranges","singleRange","multiplier","_","index","LOOP_LIMIT","CronExpression","fields","_options","_utc","_tz","_currentDate","currentDate","_startDate","startDate","_endDate","endDate","_isIterator","iterator","_hasIterated","_nthDayOfWeek","nthDayOfWeek","_freezeFields","predefined","constraints","chars","aliases","jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec","sun","mon","tue","wed","thu","fri","sat","parseDefaults","standardValidCharacters","dayOfWeekValidCharacters","dayOfMonthValidCharacters","validCharacters","dayOfMonth","_isValidConstraintChar","char","_parseField","parseSequence","stack","handleResult","numResult","atoms","atom","parseRepeat","_sortCompareFn","repeatInterval","parseRange","repeatIndex","exists","aIsNumber","bIsNumber","localeCompare","_handleMaxDaysInMonth","mappedFields","freeze","_applyTimezoneShift","dateMathVerb","method","prevTime","currTime","previousHour","currentHour","_dstStart","_dstEnd","_findSchedule","matchSchedule","sequence","isNthDayMatch","adjustedDate","occurrence","isLInExpressions","expressions","expression","startTimestamp","stepCount","isLastWeekdayOfMonthMatch","dayOfMonthMatch","dayOfWeekMatch","isDayOfMonthWildcardMatch","isDayOfWeekWildcardMatch","schedule","done","hasNext","hasPrev","hasIterated","err","iterate","steps","callback","dates","reset","includeSeconds","resultArr","constraint","self","parseNthDay","nthValue","fieldsToExpression","validateConstraints","copy","j","ary","CronParser","_parseEntry","entry","command","parseExpression","parseString","blocks","response","variables","errors","block","parseFile","filePath","readFile","storage","AsyncLocalStorage","getInvocationContext","getStore","resolveConfig","env","process","stackboneApiUrl","agentJwt","installationId","approvalSigningKey","agentId","databaseUrl","secretKey","openrouterKey","openrouterBaseUrl","s3AccessKeyId","s3","accessKeyId","s3SecretAccessKey","secretAccessKey","s3Endpoint","endpoint","s3Bucket","bucket","s3Region","region","otelExporterOtlpEndpoint","otel","exporterOtlpEndpoint","requireContract","contractTtlMs","parseTtlMs","debug","ragEmbeddingModel","rag","embeddingModel","protocolRequired","raw","jsonObject","looseObject","SLUG_REGEX","organizationSlugSchema","object","slug","id","uuid","createdAt","iso","datetime","updatedAt","baseUrl","url","optional","tier","default","enum","managedSpendCapUsd","customConfigured","boolean","customLast4","nullable","apiKey","connectionAuthKindSchema","connectionHealthStatusSchema","automationDeliveryStatusSchema","connectorIdSchema","jsonataExpressionSchema","automationBaseFields","triggerConnectionId","triggerId","inputMapping","outputMapping","handlerName","actionConnectionId","actionId","enabled","strict","refine","message","path","disabledReason","connectorId","credentials","connectionResponseSchema","authKind","healthStatus","healthDetail","items","array","available","providerId","connectionId","connectorTriggerMetadataSchema","displayName","description","strategy","eventSchema","sampleData","connectorActionMetadataSchema","inputSchema","outputSchema","connectorMetadataSchema","version","logoUrl","authFieldsSchema","triggers","actions","agentConnectionSummarySchema","agentConnectionListResponseSchema","connector","action","connection","invokeConnectorActionResponseSchema","output","automationId","providerItemId","status","runId","attempt","MIN_SUPPORTED_CONTRACT_VERSION","CAPABILITIES","MODULE_CAPABILITIES","database","queues","secrets","approval","ai","prompts","connections","contractBuildNameSchema","contractResponseSchema","minSupported","capabilities","build","runtimeUrl","requireVersion","contract","error","meta","detected","required","requireCapability","capability","versionCheck","ENCODER","TextEncoder","utf8ByteLength","encode","QUEUE_NAME_REGEX","queueNameSchema","bullmqJobStatusSchema","journalTerminalStatusSchema","journalJobStatusSchema","jobStatusSchema","jobStatusFilterSchema","queueSummarySchema","is_dlq","pending","nonnegative","active","delayed","failed","jobCommonFields","queue","attempts","enqueued_at","dispatch_id","payload","bullmqJobSchema","next_run_at","started_at","finished_at","journalJobSchema","jobSchema","discriminatedUnion","limit","coerce","next_cursor","jobId","purged","retries","delay","message_id","MAX_JOB_ATTEMPTS","CRON_FIELD_COUNT","MAX_DELAY_MS","MAX_JOB_PAYLOAD_BYTES","boundedJobPayload","baseJobFields","deduplicationId","publishJobResponseSchema","messageId","cronExpressionSchema","isKnownTimeZone","validateCronAndTz","cron","issues","trimmed","isMacro","Boolean","shapeValid","tzValid","cronParser","superRefine","ctx","issue","addIssue","scheduleJobResponseSchema","scheduleId","unscheduleJobResponseSchema","removed","scheduleSummarySchema","listSchedulesResponseSchema","ok","notImplemented","scope","CONTRACT_PATH","createContractStore","resolved","cache","lastResolved","debugLogged","Set","ttl","normaliseBaseUrl","existing","expiresAt","promise","delete","fetchImpl","fetch","globalThis","bind","performHandshake","POSITIVE_INFINITY","maybeLogDebug","peek","cached","gatingEnabled","cause","body","cancel","json","safeParse","success","URL","protocol","host","has","add","console","warn","assertCapability","withGate","gate","gated","createModuleGate","store","warnedKeys","warningsFor","handshake","resolveContract","agentFloor","gateError","warningsByStore","WeakMap","warnings","RETRYABLE_STATUS","IDEMPOTENT_METHODS","HttpClient","timeout","retryCount","retryDelay","request","put","patch","req","responseSchema","errorMapping","resolveApiUrl","querystring","buildQuerystring","params","arrayParams","buildUrl","canRetry","toUpperCase","idempotent","maxAttempts","requestHeaders","Headers","headers","jwt","resolveAgentJwt","resolveInstallationId","serializeBody","lastError","sleepWithSignal","computeBackoff","signal","composeSignal","_rawBody","_callerSignal","_params","_arrayParams","_idempotent","_headers","passthrough","init","codeForStatus","statusText","parseResponse","sdkErr","mapFetchError","pow","jitter","random","endsWith","searchParams","out","invalidCode","prefix","FormData","ArrayBuffer","isView","validateOrFail","contentType","domainMeta","schema","validation","override","overrides","domainSuffix","transportSuffix","timeoutMs","callerSignal","aborted","controller","AbortController","timer","setTimeout","abort","onCallerAbort","addEventListener","once","clearTimeout","removeEventListener","Promise","resolve","reject","onAbort","createApprovalTool","facade","spec","parameters","openaiSpec","function","invoke","resolveGate","needsApproval","requestOpts","toRequest","requested","topic","approvalId","execute","tool","SIGNATURE_HEADER","DEFAULT_TOLERANCE_SECONDS","HEX_RE","verifyCallback","signingKey","resolveSigningKey","header","parseHeader","tolerance","toleranceSeconds","deltaSeconds","FUTURE_DRIFT_TOLERANCE_SECONDS","rawBody","readRawBody","expected","computeHmac","constantTimeEqual","signature","decision","isDecision","eqIdx","secret","crypto","subtle","importKey","hash","Buffer","Uint8Array","mismatch","DECISION_STATUSES","DEFAULT_APPROVAL_TIMEOUT_MS","DEFAULT_LIST_LIMIT","MAX_LIST_LIMIT","ApprovalFacade","_resolved","_getDatabase","validateRequest","sql","parseTimeoutMs","onTimeoutToFallback","onTimeout","callbackUrl","onDecide","rows","runShared","db","idempotencyKey","metadata","requestedByStepId","row","callback_url","timeout_at","created_at","cancelReason","toRecord","list","clampLimit","verify","shared","$client","record","ConfigFacade","loadPayload","getMany","getAll","createDrizzleClient","connectionString","postgres","drizzle","cachedHandle","cachedUrl","getDatabaseHandle","DatabaseNotConfiguredError","DATABASE_NOT_CONFIGURED_MESSAGE","POOL_TERMINATED_ERROR_CODES","isPoolTerminatedError","invalidatePoolHandle","runWithColdStartRetry","firstAttempt","retryAttempt","stderr","write","withColdStartRetry","assertGate","GateBlockedError","sdkError","createRetriableQueryBuilder","seed","rootCall","buildProxy","target","run","replayChain","Proxy","_t","then","catch","cb","finally","kind","apply","_this","last","parent","TypeError","retriable","DatabaseModule","_gate","_databaseUrl","query","select","insert","update","transaction","runSharedResult","first","PLACEHOLDER","compile","template","vars","missing","_match","extractVars","seen","ordered","matchAll","PG_UNDEFINED_TABLE","PG_UNIQUE_VIOLATION","PromptsFacade","keyError","validateKey","head","fetchHead","notFound","current_version","content","fetchVersionContent","rowToPrompt","mapReadError","prompt","compileTemplate","detail","begin","tx","isPgError","mapWriteError","nextVersion","deleted","notConfigured","toIso","updated_at","isOk","RAG_STORAGE_PREFIX","buildRagStorageKey","collection","documentName","CONTENT_TYPE_TO_EXTENSION","ragContentTypeExtension","RAG_INGEST_ROLE","ragIngestInputSchema","storageKey","documentId","chunks","DEFAULT_SIZE","DEFAULT_OVERLAP","RECURSIVE_SEPARATORS","SENTENCE_BOUNDARY","chunk","size","overlap","pieces","splitBySentence","splitRecursive","mergePieces","sepIdx","splitByLength","bufParts","bufLen","flush","closed","piece","candidateLen","seedText","tail","trimStart","PDF_MIME_TYPES","PDF_MAGIC","PDF_NO_TEXT_LAYER","PdfNoTextLayerError","mime","sniffMime","bytes","toUint8Array","resolveKind","extractText","mergePages","TextDecoder","decode","looksLikePdf","Blob","arrayBuffer","RAG_SCHEMA_MISSING_HINT","RAG_ERROR_CODES","isRagErrorCode","isTaggedError","toRagError","fallbackCode","hint","DEFAULT_NAMESPACE","contentHash","createHash","digest","createDocument","collectionId","ensureCollection","insertedDoc","appendChunks","placeholders","flatMap","chunkIdx","formatVector","embedding","unsafe","deleteByIds","ids","namespace","deleteByFilter","filterClause","retrieve","embStr","contentColumn","includeContent","metadataColumn","includeMetadata","topK","inserted","DEFAULT_TOP_K","RagPipeline","_sqlProvider","_embedder","_jobWriter","_progressBatchSize","deps","sqlProvider","embedder","jobWriter","progressBatchSize","ingest","validateIngest","isAutoEmbedIngest","embedded","embedAll","received","docId","client","totalChunks","onProgress","writer","started","needsBatching","batchSize","processed","cancelled","isCancelled","processedChunks","currentDocument","progress","complete","fail","idList","deleteWhere","resolveQueryEmbedding","retrieveRows","hit","score","isAutoEmbedRetrieve","embedOne","model","hasEmbedder","dims","createSqlJobWriter","DEFAULT_BATCH_SIZE","DEFAULT_CONCURRENCY","Embedder","_ai","_model","_batchSize","_concurrency","concurrency","texts","batches","worker","batchIndex","batch","embeddings","isUnsupportedModelError","forEach","firstError","DEFAULT_RAG_EMBEDDING_MODEL","RagModule","_testSqlOverride","_testJobWriterFactory","_getAi","testDeps","jobWriterFactory","resolveIngestModel","withPipeline","buildEmbedderForIngest","pipeline","ingestAsync","writerFactory","channel","createProgressChannel","requestWithHook","event","countChunks","close","facadeWriter","withPreallocatedJob","events","iterable","resolveRetrieveModel","buildEmbedderForRetrieve","chunkText","parseInput","ragOk","buffer","asyncIterator","shift","getAi","A","I","g","C","B","Q","E","w","U","J","Y","N","K","H","L","R","O","SECRET_CIPHER_VERSION","view","byteOffset","byteLength","decodeKey","base64","decoded","sodium","from_base64","base64_variants","ORIGINAL","crypto_secretbox_KEYBYTES","createSecretCipher","ready","keyBytes","encrypt","plaintext","nonce","randombytes_buf","crypto_secretbox_NONCEBYTES","ciphertext","crypto_secretbox_easy","from_string","decrypt","envelope","crypto_secretbox_open_easy","to_string","SecretsFacade","_cipher","cipher","names","getWorkflowScheduler","scheduleWorkflow","unschedule","listSchedules","getWorkflowStarter","startWorkflow","startWorkflowAndWait","startAndWait","workflows","agentRegistry","resolveAgentHost","registry","signWorkflowHeaders","createHmac","EVE_CLIENT_MODULE","buildEveClient","Client","seedSessionState","continuationToken","streamIndex","lazyAgentSession","getClient","seededState","real","opened","session","state","send","stream","lazyAgent","agent","AiModule","_openai","_chat","_embeddings","_images","_models","clientOverride","chat","completions","ChatCompletionsNamespace","EmbeddingsNamespace","images","ImagesNamespace","models","ModelsNamespace","resolveApiKey","missingKeyError","OpenAI","baseURL","resolveBaseUrl","defaultHeaders","STACKBONE_DEFAULT_HEADERS","_getClient","wrapCall","generate","messages","role","modalities","imageConfig","image_config","completion","extractImages","created","clientResult","Authorization","mapApiError","OPENROUTER_DEFAULT_BASE_URL","OPENROUTER_KEY_MISSING_MESSAGE","DATA_URL_RE","choices","rawImages","img","image_url","mimeType","b64Json","APIError","APIUserAbortError","APIConnectionTimeoutError","APIConnectionError","TIMESTAMP_HEADER","signBrokerHeaders","brokerBaseUrl","EXECUTE_PATH","connectorCallError","errorFromBody","callConnector","operation","principal","connectorHandle","_target","R2_ENDPOINT_HOST_SUFFIX","createS3CompatClient","S3Client","inferRegion","forcePathStyle","isR2Endpoint","hostnameOf","hostname","DEFAULT_SIGNED_URL_TTL_SECONDS","StorageModule","_s3","StorageBucket","S3_CREDENTIALS_MISSING_MESSAGE","S3_BUCKET_MISSING_MESSAGE","AGENT_ID_MISSING_MESSAGE","bucketName","resolveSettings","upload","fullKey","PutObjectCommand","Bucket","Key","Body","ContentType","Metadata","etag","stripEtag","ETag","toStorageError","download","GetObjectCommand","transformToByteArray","basePrefix","ListObjectsV2Command","Prefix","MaxKeys","ContinuationToken","stripPrefix","objects","Contents","itemKey","Size","LastModified","lastModified","nextCursor","IsTruncated","NextContinuationToken","remove","DeleteObjectCommand","getPublicUrl","encodeS3Key","getSignedUploadUrl","signUrl","getSignedDownloadUrl","failureMessage","buildCommand","expiresIn","getSignedUrl","normalisedKey","encodeURIComponent","aws","$metadata","httpStatusCode","$fault","CONNECTIONS_BASE","ERROR_MAPPING","ConnectionsModule","_http","MemoryModule","_content","_request","_query","_memoryId","deleteAll","history","endSession","_sessionId","QUEUES_BASE","QueuesModule","publish","StackboneClient","_database","_storage","_rag","_approval","_secrets","_config","_queues","_legacyConnections","_memory","_prompts","_httpClient","_contractStore","http","legacyConnections","memory","createClient","resolveAmbientClient","stackbone","Reflect","WORKFLOW_HOOK_RESUME_KIND","DEFAULT_FALLBACK","approvalHook","defineHook","TIMED_OUT","requestApproval","recordApproval","title","hook","timeoutArm","sleep","outcome","race","timedOut","context","resumeKind","hookToken","eveAgent","ingestDocuments","stage","stageContent","relKey"],"mappings":"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AE,CAAA,EAAE,CAAA,EAAE,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,IAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,IA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","file":"workflow.js","sourcesContent":["// these aren't really private, but nor are they really useful to document\n\n/**\n * @private\n */\nclass LuxonError extends Error {}\n\n/**\n * @private\n */\nexport class InvalidDateTimeError extends LuxonError {\n constructor(reason) {\n super(`Invalid DateTime: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidIntervalError extends LuxonError {\n constructor(reason) {\n super(`Invalid Interval: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidDurationError extends LuxonError {\n constructor(reason) {\n super(`Invalid Duration: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class ConflictingSpecificationError extends LuxonError {}\n\n/**\n * @private\n */\nexport class InvalidUnitError extends LuxonError {\n constructor(unit) {\n super(`Invalid unit ${unit}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidArgumentError extends LuxonError {}\n\n/**\n * @private\n */\nexport class ZoneIsAbstractError extends LuxonError {\n constructor() {\n super(\"Zone is an abstract class\");\n }\n}\n","/**\n * @private\n */\n\nconst n = \"numeric\",\n s = \"short\",\n l = \"long\";\n\nexport const DATE_SHORT = {\n year: n,\n month: n,\n day: n,\n};\n\nexport const DATE_MED = {\n year: n,\n month: s,\n day: n,\n};\n\nexport const DATE_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n};\n\nexport const DATE_FULL = {\n year: n,\n month: l,\n day: n,\n};\n\nexport const DATE_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n};\n\nexport const TIME_SIMPLE = {\n hour: n,\n minute: n,\n};\n\nexport const TIME_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const TIME_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s,\n};\n\nexport const TIME_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l,\n};\n\nexport const TIME_24_SIMPLE = {\n hour: n,\n minute: n,\n hourCycle: \"h23\",\n};\n\nexport const TIME_24_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n};\n\nexport const TIME_24_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n timeZoneName: s,\n};\n\nexport const TIME_24_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n timeZoneName: l,\n};\n\nexport const DATETIME_SHORT = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_SHORT_WITH_SECONDS = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const DATETIME_MED = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_MED_WITH_SECONDS = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const DATETIME_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_FULL = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n timeZoneName: s,\n};\n\nexport const DATETIME_FULL_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s,\n};\n\nexport const DATETIME_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n timeZoneName: l,\n};\n\nexport const DATETIME_HUGE_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l,\n};\n","import { ZoneIsAbstractError } from \"./errors.js\";\n\n/**\n * @interface\n */\nexport default class Zone {\n /**\n * The type of zone\n * @abstract\n * @type {string}\n */\n get type() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * The name of this zone.\n * @abstract\n * @type {string}\n */\n get name() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * The IANA name of this zone.\n * Defaults to `name` if not overwritten by a subclass.\n * @abstract\n * @type {string}\n */\n get ianaName() {\n return this.name;\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year.\n * @abstract\n * @type {boolean}\n */\n get isUniversal() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's common name (such as EST) at the specified timestamp\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the name\n * @param {Object} opts - Options to affect the format\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n * @param {string} opts.locale - What locale to return the offset name in.\n * @return {string}\n */\n offsetName(ts, opts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's value as a string\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to compute the offset\n * @return {number}\n */\n offset(ts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is equal to another zone\n * @abstract\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is valid.\n * @abstract\n * @type {boolean}\n */\n get isValid() {\n throw new ZoneIsAbstractError();\n }\n}\n","import { formatOffset, parseZoneInfo } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * Represents the local zone for this JavaScript environment.\n * @implements {Zone}\n */\nexport default class SystemZone extends Zone {\n /**\n * Get a singleton instance of the local zone\n * @return {SystemZone}\n */\n static get instance() {\n if (singleton === null) {\n singleton = new SystemZone();\n }\n return singleton;\n }\n\n /** @override **/\n get type() {\n return \"system\";\n }\n\n /** @override **/\n get name() {\n return new Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n return -new Date(ts).getTimezoneOffset();\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"system\";\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n","import { formatOffset, parseZoneInfo, isUndefined, objToLocalTS } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nconst dtfCache = new Map();\nfunction makeDTF(zoneName) {\n let dtf = dtfCache.get(zoneName);\n if (dtf === undefined) {\n dtf = new Intl.DateTimeFormat(\"en-US\", {\n hour12: false,\n timeZone: zoneName,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n era: \"short\",\n });\n dtfCache.set(zoneName, dtf);\n }\n return dtf;\n}\n\nconst typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n era: 3,\n hour: 4,\n minute: 5,\n second: 6,\n};\n\nfunction hackyOffset(dtf, date) {\n const formatted = dtf.format(date).replace(/\\u200E/g, \"\"),\n parsed = /(\\d+)\\/(\\d+)\\/(\\d+) (AD|BC),? (\\d+):(\\d+):(\\d+)/.exec(formatted),\n [, fMonth, fDay, fYear, fadOrBc, fHour, fMinute, fSecond] = parsed;\n return [fYear, fMonth, fDay, fadOrBc, fHour, fMinute, fSecond];\n}\n\nfunction partsOffset(dtf, date) {\n const formatted = dtf.formatToParts(date);\n const filled = [];\n for (let i = 0; i < formatted.length; i++) {\n const { type, value } = formatted[i];\n const pos = typeToPos[type];\n\n if (type === \"era\") {\n filled[pos] = value;\n } else if (!isUndefined(pos)) {\n filled[pos] = parseInt(value, 10);\n }\n }\n return filled;\n}\n\nconst ianaZoneCache = new Map();\n/**\n * A zone identified by an IANA identifier, like America/New_York\n * @implements {Zone}\n */\nexport default class IANAZone extends Zone {\n /**\n * @param {string} name - Zone name\n * @return {IANAZone}\n */\n static create(name) {\n let zone = ianaZoneCache.get(name);\n if (zone === undefined) {\n ianaZoneCache.set(name, (zone = new IANAZone(name)));\n }\n return zone;\n }\n\n /**\n * Reset local caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCache() {\n ianaZoneCache.clear();\n dtfCache.clear();\n }\n\n /**\n * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that.\n * @param {string} s - The string to check validity on\n * @example IANAZone.isValidSpecifier(\"America/New_York\") //=> true\n * @example IANAZone.isValidSpecifier(\"Sport~~blorp\") //=> false\n * @deprecated For backward compatibility, this forwards to isValidZone, better use `isValidZone()` directly instead.\n * @return {boolean}\n */\n static isValidSpecifier(s) {\n return this.isValidZone(s);\n }\n\n /**\n * Returns whether the provided string identifies a real zone\n * @param {string} zone - The string to check\n * @example IANAZone.isValidZone(\"America/New_York\") //=> true\n * @example IANAZone.isValidZone(\"Fantasia/Castle\") //=> false\n * @example IANAZone.isValidZone(\"Sport~~blorp\") //=> false\n * @return {boolean}\n */\n static isValidZone(zone) {\n if (!zone) {\n return false;\n }\n try {\n new Intl.DateTimeFormat(\"en-US\", { timeZone: zone }).format();\n return true;\n } catch (e) {\n return false;\n }\n }\n\n constructor(name) {\n super();\n /** @private **/\n this.zoneName = name;\n /** @private **/\n this.valid = IANAZone.isValidZone(name);\n }\n\n /**\n * The type of zone. `iana` for all instances of `IANAZone`.\n * @override\n * @type {string}\n */\n get type() {\n return \"iana\";\n }\n\n /**\n * The name of this zone (i.e. the IANA zone name).\n * @override\n * @type {string}\n */\n get name() {\n return this.zoneName;\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year:\n * Always returns false for all IANA zones.\n * @override\n * @type {boolean}\n */\n get isUniversal() {\n return false;\n }\n\n /**\n * Returns the offset's common name (such as EST) at the specified timestamp\n * @override\n * @param {number} ts - Epoch milliseconds for which to get the name\n * @param {Object} opts - Options to affect the format\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n * @param {string} opts.locale - What locale to return the offset name in.\n * @return {string}\n */\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale, this.name);\n }\n\n /**\n * Returns the offset's value as a string\n * @override\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n * @override\n * @param {number} ts - Epoch milliseconds for which to compute the offset\n * @return {number}\n */\n offset(ts) {\n if (!this.valid) return NaN;\n const date = new Date(ts);\n\n if (isNaN(date)) return NaN;\n\n const dtf = makeDTF(this.name);\n let [year, month, day, adOrBc, hour, minute, second] = dtf.formatToParts\n ? partsOffset(dtf, date)\n : hackyOffset(dtf, date);\n\n if (adOrBc === \"BC\") {\n year = -Math.abs(year) + 1;\n }\n\n // because we're using hour12 and https://bugs.chromium.org/p/chromium/issues/detail?id=1025564&can=2&q=%2224%3A00%22%20datetimeformat\n const adjustedHour = hour === 24 ? 0 : hour;\n\n const asUTC = objToLocalTS({\n year,\n month,\n day,\n hour: adjustedHour,\n minute,\n second,\n millisecond: 0,\n });\n\n let asTS = +date;\n const over = asTS % 1000;\n asTS -= over >= 0 ? over : 1000 + over;\n return (asUTC - asTS) / (60 * 1000);\n }\n\n /**\n * Return whether this Zone is equal to another zone\n * @override\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n return otherZone.type === \"iana\" && otherZone.name === this.name;\n }\n\n /**\n * Return whether this Zone is valid.\n * @override\n * @type {boolean}\n */\n get isValid() {\n return this.valid;\n }\n}\n","import { hasLocaleWeekInfo, hasRelative, padStart, roundTo, validateWeekSettings } from \"./util.js\";\nimport * as English from \"./english.js\";\nimport Settings from \"../settings.js\";\nimport DateTime from \"../datetime.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n// todo - remap caching\n\nlet intlLFCache = {};\nfunction getCachedLF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlLFCache[key];\n if (!dtf) {\n dtf = new Intl.ListFormat(locString, opts);\n intlLFCache[key] = dtf;\n }\n return dtf;\n}\n\nconst intlDTCache = new Map();\nfunction getCachedDTF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlDTCache.get(key);\n if (dtf === undefined) {\n dtf = new Intl.DateTimeFormat(locString, opts);\n intlDTCache.set(key, dtf);\n }\n return dtf;\n}\n\nconst intlNumCache = new Map();\nfunction getCachedINF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let inf = intlNumCache.get(key);\n if (inf === undefined) {\n inf = new Intl.NumberFormat(locString, opts);\n intlNumCache.set(key, inf);\n }\n return inf;\n}\n\nconst intlRelCache = new Map();\nfunction getCachedRTF(locString, opts = {}) {\n const { base, ...cacheKeyOpts } = opts; // exclude `base` from the options\n const key = JSON.stringify([locString, cacheKeyOpts]);\n let inf = intlRelCache.get(key);\n if (inf === undefined) {\n inf = new Intl.RelativeTimeFormat(locString, opts);\n intlRelCache.set(key, inf);\n }\n return inf;\n}\n\nlet sysLocaleCache = null;\nfunction systemLocale() {\n if (sysLocaleCache) {\n return sysLocaleCache;\n } else {\n sysLocaleCache = new Intl.DateTimeFormat().resolvedOptions().locale;\n return sysLocaleCache;\n }\n}\n\nconst intlResolvedOptionsCache = new Map();\nfunction getCachedIntResolvedOptions(locString) {\n let opts = intlResolvedOptionsCache.get(locString);\n if (opts === undefined) {\n opts = new Intl.DateTimeFormat(locString).resolvedOptions();\n intlResolvedOptionsCache.set(locString, opts);\n }\n return opts;\n}\n\nconst weekInfoCache = new Map();\nfunction getCachedWeekInfo(locString) {\n let data = weekInfoCache.get(locString);\n if (!data) {\n const locale = new Intl.Locale(locString);\n // browsers currently implement this as a property, but spec says it should be a getter function\n data = \"getWeekInfo\" in locale ? locale.getWeekInfo() : locale.weekInfo;\n // minimalDays was removed from WeekInfo: https://github.com/tc39/proposal-intl-locale-info/issues/86\n if (!(\"minimalDays\" in data)) {\n data = { ...fallbackWeekSettings, ...data };\n }\n weekInfoCache.set(locString, data);\n }\n return data;\n}\n\nfunction parseLocaleString(localeStr) {\n // I really want to avoid writing a BCP 47 parser\n // see, e.g. https://github.com/wooorm/bcp-47\n // Instead, we'll do this:\n\n // a) if the string has no -u extensions, just leave it alone\n // b) if it does, use Intl to resolve everything\n // c) if Intl fails, try again without the -u\n\n // private subtags and unicode subtags have ordering requirements,\n // and we're not properly parsing this, so just strip out the\n // private ones if they exist.\n const xIndex = localeStr.indexOf(\"-x-\");\n if (xIndex !== -1) {\n localeStr = localeStr.substring(0, xIndex);\n }\n\n const uIndex = localeStr.indexOf(\"-u-\");\n if (uIndex === -1) {\n return [localeStr];\n } else {\n let options;\n let selectedStr;\n try {\n options = getCachedDTF(localeStr).resolvedOptions();\n selectedStr = localeStr;\n } catch (e) {\n const smaller = localeStr.substring(0, uIndex);\n options = getCachedDTF(smaller).resolvedOptions();\n selectedStr = smaller;\n }\n\n const { numberingSystem, calendar } = options;\n return [selectedStr, numberingSystem, calendar];\n }\n}\n\nfunction intlConfigString(localeStr, numberingSystem, outputCalendar) {\n if (outputCalendar || numberingSystem) {\n if (!localeStr.includes(\"-u-\")) {\n localeStr += \"-u\";\n }\n\n if (outputCalendar) {\n localeStr += `-ca-${outputCalendar}`;\n }\n\n if (numberingSystem) {\n localeStr += `-nu-${numberingSystem}`;\n }\n return localeStr;\n } else {\n return localeStr;\n }\n}\n\nfunction mapMonths(f) {\n const ms = [];\n for (let i = 1; i <= 12; i++) {\n const dt = DateTime.utc(2009, i, 1);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction mapWeekdays(f) {\n const ms = [];\n for (let i = 1; i <= 7; i++) {\n const dt = DateTime.utc(2016, 11, 13 + i);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction listStuff(loc, length, englishFn, intlFn) {\n const mode = loc.listingMode();\n\n if (mode === \"error\") {\n return null;\n } else if (mode === \"en\") {\n return englishFn(length);\n } else {\n return intlFn(length);\n }\n}\n\nfunction supportsFastNumbers(loc) {\n if (loc.numberingSystem && loc.numberingSystem !== \"latn\") {\n return false;\n } else {\n return (\n loc.numberingSystem === \"latn\" ||\n !loc.locale ||\n loc.locale.startsWith(\"en\") ||\n getCachedIntResolvedOptions(loc.locale).numberingSystem === \"latn\"\n );\n }\n}\n\n/**\n * @private\n */\n\nclass PolyNumberFormatter {\n constructor(intl, forceSimple, opts) {\n this.padTo = opts.padTo || 0;\n this.floor = opts.floor || false;\n\n const { padTo, floor, ...otherOpts } = opts;\n\n if (!forceSimple || Object.keys(otherOpts).length > 0) {\n const intlOpts = { useGrouping: false, ...opts };\n if (opts.padTo > 0) intlOpts.minimumIntegerDigits = opts.padTo;\n this.inf = getCachedINF(intl, intlOpts);\n }\n }\n\n format(i) {\n if (this.inf) {\n const fixed = this.floor ? Math.floor(i) : i;\n return this.inf.format(fixed);\n } else {\n // to match the browser's numberformatter defaults\n const fixed = this.floor ? Math.floor(i) : roundTo(i, 3);\n return padStart(fixed, this.padTo);\n }\n }\n}\n\n/**\n * @private\n */\n\nclass PolyDateFormatter {\n constructor(dt, intl, opts) {\n this.opts = opts;\n this.originalZone = undefined;\n\n let z = undefined;\n if (this.opts.timeZone) {\n // Don't apply any workarounds if a timeZone is explicitly provided in opts\n this.dt = dt;\n } else if (dt.zone.type === \"fixed\") {\n // UTC-8 or Etc/UTC-8 are not part of tzdata, only Etc/GMT+8 and the like.\n // That is why fixed-offset TZ is set to that unless it is:\n // 1. Representing offset 0 when UTC is used to maintain previous behavior and does not become GMT.\n // 2. Unsupported by the browser:\n // - some do not support Etc/\n // - < Etc/GMT-14, > Etc/GMT+12, and 30-minute or 45-minute offsets are not part of tzdata\n const gmtOffset = -1 * (dt.offset / 60);\n const offsetZ = gmtOffset >= 0 ? `Etc/GMT+${gmtOffset}` : `Etc/GMT${gmtOffset}`;\n if (dt.offset !== 0 && IANAZone.create(offsetZ).valid) {\n z = offsetZ;\n this.dt = dt;\n } else {\n // Not all fixed-offset zones like Etc/+4:30 are present in tzdata so\n // we manually apply the offset and substitute the zone as needed.\n z = \"UTC\";\n this.dt = dt.offset === 0 ? dt : dt.setZone(\"UTC\").plus({ minutes: dt.offset });\n this.originalZone = dt.zone;\n }\n } else if (dt.zone.type === \"system\") {\n this.dt = dt;\n } else if (dt.zone.type === \"iana\") {\n this.dt = dt;\n z = dt.zone.name;\n } else {\n // Custom zones can have any offset / offsetName so we just manually\n // apply the offset and substitute the zone as needed.\n z = \"UTC\";\n this.dt = dt.setZone(\"UTC\").plus({ minutes: dt.offset });\n this.originalZone = dt.zone;\n }\n\n const intlOpts = { ...this.opts };\n intlOpts.timeZone = intlOpts.timeZone || z;\n this.dtf = getCachedDTF(intl, intlOpts);\n }\n\n format() {\n if (this.originalZone) {\n // If we have to substitute in the actual zone name, we have to use\n // formatToParts so that the timezone can be replaced.\n return this.formatToParts()\n .map(({ value }) => value)\n .join(\"\");\n }\n return this.dtf.format(this.dt.toJSDate());\n }\n\n formatToParts() {\n const parts = this.dtf.formatToParts(this.dt.toJSDate());\n if (this.originalZone) {\n return parts.map((part) => {\n if (part.type === \"timeZoneName\") {\n const offsetName = this.originalZone.offsetName(this.dt.ts, {\n locale: this.dt.locale,\n format: this.opts.timeZoneName,\n });\n return {\n ...part,\n value: offsetName,\n };\n } else {\n return part;\n }\n });\n }\n return parts;\n }\n\n resolvedOptions() {\n return this.dtf.resolvedOptions();\n }\n}\n\n/**\n * @private\n */\nclass PolyRelFormatter {\n constructor(intl, isEnglish, opts) {\n this.opts = { style: \"long\", ...opts };\n if (!isEnglish && hasRelative()) {\n this.rtf = getCachedRTF(intl, opts);\n }\n }\n\n format(count, unit) {\n if (this.rtf) {\n return this.rtf.format(count, unit);\n } else {\n return English.formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== \"long\");\n }\n }\n\n formatToParts(count, unit) {\n if (this.rtf) {\n return this.rtf.formatToParts(count, unit);\n } else {\n return [];\n }\n }\n}\n\nconst fallbackWeekSettings = {\n firstDay: 1,\n minimalDays: 4,\n weekend: [6, 7],\n};\n\n/**\n * @private\n */\nexport default class Locale {\n static fromOpts(opts) {\n return Locale.create(\n opts.locale,\n opts.numberingSystem,\n opts.outputCalendar,\n opts.weekSettings,\n opts.defaultToEN\n );\n }\n\n static create(locale, numberingSystem, outputCalendar, weekSettings, defaultToEN = false) {\n const specifiedLocale = locale || Settings.defaultLocale;\n // the system locale is useful for human-readable strings but annoying for parsing/formatting known formats\n const localeR = specifiedLocale || (defaultToEN ? \"en-US\" : systemLocale());\n const numberingSystemR = numberingSystem || Settings.defaultNumberingSystem;\n const outputCalendarR = outputCalendar || Settings.defaultOutputCalendar;\n const weekSettingsR = validateWeekSettings(weekSettings) || Settings.defaultWeekSettings;\n return new Locale(localeR, numberingSystemR, outputCalendarR, weekSettingsR, specifiedLocale);\n }\n\n static resetCache() {\n sysLocaleCache = null;\n intlDTCache.clear();\n intlNumCache.clear();\n intlRelCache.clear();\n intlResolvedOptionsCache.clear();\n weekInfoCache.clear();\n }\n\n static fromObject({ locale, numberingSystem, outputCalendar, weekSettings } = {}) {\n return Locale.create(locale, numberingSystem, outputCalendar, weekSettings);\n }\n\n constructor(locale, numbering, outputCalendar, weekSettings, specifiedLocale) {\n const [parsedLocale, parsedNumberingSystem, parsedOutputCalendar] = parseLocaleString(locale);\n\n this.locale = parsedLocale;\n this.numberingSystem = numbering || parsedNumberingSystem || null;\n this.outputCalendar = outputCalendar || parsedOutputCalendar || null;\n this.weekSettings = weekSettings;\n this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar);\n\n this.weekdaysCache = { format: {}, standalone: {} };\n this.monthsCache = { format: {}, standalone: {} };\n this.meridiemCache = null;\n this.eraCache = {};\n\n this.specifiedLocale = specifiedLocale;\n this.fastNumbersCached = null;\n }\n\n get fastNumbers() {\n if (this.fastNumbersCached == null) {\n this.fastNumbersCached = supportsFastNumbers(this);\n }\n\n return this.fastNumbersCached;\n }\n\n listingMode() {\n const isActuallyEn = this.isEnglish();\n const hasNoWeirdness =\n (this.numberingSystem === null || this.numberingSystem === \"latn\") &&\n (this.outputCalendar === null || this.outputCalendar === \"gregory\");\n return isActuallyEn && hasNoWeirdness ? \"en\" : \"intl\";\n }\n\n clone(alts) {\n if (!alts || Object.getOwnPropertyNames(alts).length === 0) {\n return this;\n } else {\n return Locale.create(\n alts.locale || this.specifiedLocale,\n alts.numberingSystem || this.numberingSystem,\n alts.outputCalendar || this.outputCalendar,\n validateWeekSettings(alts.weekSettings) || this.weekSettings,\n alts.defaultToEN || false\n );\n }\n }\n\n redefaultToEN(alts = {}) {\n return this.clone({ ...alts, defaultToEN: true });\n }\n\n redefaultToSystem(alts = {}) {\n return this.clone({ ...alts, defaultToEN: false });\n }\n\n months(length, format = false) {\n return listStuff(this, length, English.months, () => {\n // Workaround for \"ja\" locale: formatToParts does not label all parts of the month\n // as \"month\" and for this locale there is no difference between \"format\" and \"non-format\".\n // As such, just use format() instead of formatToParts() and take the whole string\n const monthSpecialCase = this.intl === \"ja\" || this.intl.startsWith(\"ja-\");\n format &= !monthSpecialCase;\n const intl = format ? { month: length, day: \"numeric\" } : { month: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.monthsCache[formatStr][length]) {\n const mapper = !monthSpecialCase\n ? (dt) => this.extract(dt, intl, \"month\")\n : (dt) => this.dtFormatter(dt, intl).format();\n this.monthsCache[formatStr][length] = mapMonths(mapper);\n }\n return this.monthsCache[formatStr][length];\n });\n }\n\n weekdays(length, format = false) {\n return listStuff(this, length, English.weekdays, () => {\n const intl = format\n ? { weekday: length, year: \"numeric\", month: \"long\", day: \"numeric\" }\n : { weekday: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.weekdaysCache[formatStr][length]) {\n this.weekdaysCache[formatStr][length] = mapWeekdays((dt) =>\n this.extract(dt, intl, \"weekday\")\n );\n }\n return this.weekdaysCache[formatStr][length];\n });\n }\n\n meridiems() {\n return listStuff(\n this,\n undefined,\n () => English.meridiems,\n () => {\n // In theory there could be aribitrary day periods. We're gonna assume there are exactly two\n // for AM and PM. This is probably wrong, but it's makes parsing way easier.\n if (!this.meridiemCache) {\n const intl = { hour: \"numeric\", hourCycle: \"h12\" };\n this.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map(\n (dt) => this.extract(dt, intl, \"dayperiod\")\n );\n }\n\n return this.meridiemCache;\n }\n );\n }\n\n eras(length) {\n return listStuff(this, length, English.eras, () => {\n const intl = { era: length };\n\n // This is problematic. Different calendars are going to define eras totally differently. What I need is the minimum set of dates\n // to definitely enumerate them.\n if (!this.eraCache[length]) {\n this.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map((dt) =>\n this.extract(dt, intl, \"era\")\n );\n }\n\n return this.eraCache[length];\n });\n }\n\n extract(dt, intlOpts, field) {\n const df = this.dtFormatter(dt, intlOpts),\n results = df.formatToParts(),\n matching = results.find((m) => m.type.toLowerCase() === field);\n return matching ? matching.value : null;\n }\n\n numberFormatter(opts = {}) {\n // this forcesimple option is never used (the only caller short-circuits on it, but it seems safer to leave)\n // (in contrast, the rest of the condition is used heavily)\n return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts);\n }\n\n dtFormatter(dt, intlOpts = {}) {\n return new PolyDateFormatter(dt, this.intl, intlOpts);\n }\n\n relFormatter(opts = {}) {\n return new PolyRelFormatter(this.intl, this.isEnglish(), opts);\n }\n\n listFormatter(opts = {}) {\n return getCachedLF(this.intl, opts);\n }\n\n isEnglish() {\n return (\n this.locale === \"en\" ||\n this.locale.toLowerCase() === \"en-us\" ||\n getCachedIntResolvedOptions(this.intl).locale.startsWith(\"en-us\")\n );\n }\n\n getWeekSettings() {\n if (this.weekSettings) {\n return this.weekSettings;\n } else if (!hasLocaleWeekInfo()) {\n return fallbackWeekSettings;\n } else {\n return getCachedWeekInfo(this.locale);\n }\n }\n\n getStartOfWeek() {\n return this.getWeekSettings().firstDay;\n }\n\n getMinDaysInFirstWeek() {\n return this.getWeekSettings().minimalDays;\n }\n\n getWeekendDays() {\n return this.getWeekSettings().weekend;\n }\n\n equals(other) {\n return (\n this.locale === other.locale &&\n this.numberingSystem === other.numberingSystem &&\n this.outputCalendar === other.outputCalendar\n );\n }\n\n toString() {\n return `Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`;\n }\n}\n","import { formatOffset, signedOffset } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * A zone with a fixed offset (meaning no DST)\n * @implements {Zone}\n */\nexport default class FixedOffsetZone extends Zone {\n /**\n * Get a singleton instance of UTC\n * @return {FixedOffsetZone}\n */\n static get utcInstance() {\n if (singleton === null) {\n singleton = new FixedOffsetZone(0);\n }\n return singleton;\n }\n\n /**\n * Get an instance with a specified offset\n * @param {number} offset - The offset in minutes\n * @return {FixedOffsetZone}\n */\n static instance(offset) {\n return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset);\n }\n\n /**\n * Get an instance of FixedOffsetZone from a UTC offset string, like \"UTC+6\"\n * @param {string} s - The offset string to parse\n * @example FixedOffsetZone.parseSpecifier(\"UTC+6\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC+06\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC-6:00\")\n * @return {FixedOffsetZone}\n */\n static parseSpecifier(s) {\n if (s) {\n const r = s.match(/^utc(?:([+-]\\d{1,2})(?::(\\d{2}))?)?$/i);\n if (r) {\n return new FixedOffsetZone(signedOffset(r[1], r[2]));\n }\n }\n return null;\n }\n\n constructor(offset) {\n super();\n /** @private **/\n this.fixed = offset;\n }\n\n /**\n * The type of zone. `fixed` for all instances of `FixedOffsetZone`.\n * @override\n * @type {string}\n */\n get type() {\n return \"fixed\";\n }\n\n /**\n * The name of this zone.\n * All fixed zones' names always start with \"UTC\" (plus optional offset)\n * @override\n * @type {string}\n */\n get name() {\n return this.fixed === 0 ? \"UTC\" : `UTC${formatOffset(this.fixed, \"narrow\")}`;\n }\n\n /**\n * The IANA name of this zone, i.e. `Etc/UTC` or `Etc/GMT+/-nn`\n *\n * @override\n * @type {string}\n */\n get ianaName() {\n if (this.fixed === 0) {\n return \"Etc/UTC\";\n } else {\n return `Etc/GMT${formatOffset(-this.fixed, \"narrow\")}`;\n }\n }\n\n /**\n * Returns the offset's common name at the specified timestamp.\n *\n * For fixed offset zones this equals to the zone name.\n * @override\n */\n offsetName() {\n return this.name;\n }\n\n /**\n * Returns the offset's value as a string\n * @override\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n return formatOffset(this.fixed, format);\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year:\n * Always returns true for all fixed offset zones.\n * @override\n * @type {boolean}\n */\n get isUniversal() {\n return true;\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n *\n * For fixed offset zones, this is constant and does not depend on a timestamp.\n * @override\n * @return {number}\n */\n offset() {\n return this.fixed;\n }\n\n /**\n * Return whether this Zone is equal to another zone (i.e. also fixed and same offset)\n * @override\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n return otherZone.type === \"fixed\" && otherZone.fixed === this.fixed;\n }\n\n /**\n * Return whether this Zone is valid:\n * All fixed offset zones are valid.\n * @override\n * @type {boolean}\n */\n get isValid() {\n return true;\n }\n}\n","import Zone from \"../zone.js\";\n\n/**\n * A zone that failed to parse. You should never need to instantiate this.\n * @implements {Zone}\n */\nexport default class InvalidZone extends Zone {\n constructor(zoneName) {\n super();\n /** @private */\n this.zoneName = zoneName;\n }\n\n /** @override **/\n get type() {\n return \"invalid\";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName() {\n return null;\n }\n\n /** @override **/\n formatOffset() {\n return \"\";\n }\n\n /** @override **/\n offset() {\n return NaN;\n }\n\n /** @override **/\n equals() {\n return false;\n }\n\n /** @override **/\n get isValid() {\n return false;\n }\n}\n","/**\n * @private\n */\n\nimport Zone from \"../zone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport InvalidZone from \"../zones/invalidZone.js\";\n\nimport { isUndefined, isString, isNumber } from \"./util.js\";\nimport SystemZone from \"../zones/systemZone.js\";\n\nexport function normalizeZone(input, defaultZone) {\n let offset;\n if (isUndefined(input) || input === null) {\n return defaultZone;\n } else if (input instanceof Zone) {\n return input;\n } else if (isString(input)) {\n const lowered = input.toLowerCase();\n if (lowered === \"default\") return defaultZone;\n else if (lowered === \"local\" || lowered === \"system\") return SystemZone.instance;\n else if (lowered === \"utc\" || lowered === \"gmt\") return FixedOffsetZone.utcInstance;\n else return FixedOffsetZone.parseSpecifier(lowered) || IANAZone.create(input);\n } else if (isNumber(input)) {\n return FixedOffsetZone.instance(input);\n } else if (typeof input === \"object\" && \"offset\" in input && typeof input.offset === \"function\") {\n // This is dumb, but the instanceof check above doesn't seem to really work\n // so we're duck checking it\n return input;\n } else {\n return new InvalidZone(input);\n }\n}\n","const numberingSystems = {\n arab: \"[\\u0660-\\u0669]\",\n arabext: \"[\\u06F0-\\u06F9]\",\n bali: \"[\\u1B50-\\u1B59]\",\n beng: \"[\\u09E6-\\u09EF]\",\n deva: \"[\\u0966-\\u096F]\",\n fullwide: \"[\\uFF10-\\uFF19]\",\n gujr: \"[\\u0AE6-\\u0AEF]\",\n hanidec: \"[〇|一|二|三|四|五|六|七|八|九]\",\n khmr: \"[\\u17E0-\\u17E9]\",\n knda: \"[\\u0CE6-\\u0CEF]\",\n laoo: \"[\\u0ED0-\\u0ED9]\",\n limb: \"[\\u1946-\\u194F]\",\n mlym: \"[\\u0D66-\\u0D6F]\",\n mong: \"[\\u1810-\\u1819]\",\n mymr: \"[\\u1040-\\u1049]\",\n orya: \"[\\u0B66-\\u0B6F]\",\n tamldec: \"[\\u0BE6-\\u0BEF]\",\n telu: \"[\\u0C66-\\u0C6F]\",\n thai: \"[\\u0E50-\\u0E59]\",\n tibt: \"[\\u0F20-\\u0F29]\",\n latn: \"\\\\d\",\n};\n\nconst numberingSystemsUTF16 = {\n arab: [1632, 1641],\n arabext: [1776, 1785],\n bali: [6992, 7001],\n beng: [2534, 2543],\n deva: [2406, 2415],\n fullwide: [65296, 65303],\n gujr: [2790, 2799],\n khmr: [6112, 6121],\n knda: [3302, 3311],\n laoo: [3792, 3801],\n limb: [6470, 6479],\n mlym: [3430, 3439],\n mong: [6160, 6169],\n mymr: [4160, 4169],\n orya: [2918, 2927],\n tamldec: [3046, 3055],\n telu: [3174, 3183],\n thai: [3664, 3673],\n tibt: [3872, 3881],\n};\n\nconst hanidecChars = numberingSystems.hanidec.replace(/[\\[|\\]]/g, \"\").split(\"\");\n\nexport function parseDigits(str) {\n let value = parseInt(str, 10);\n if (isNaN(value)) {\n value = \"\";\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n\n if (str[i].search(numberingSystems.hanidec) !== -1) {\n value += hanidecChars.indexOf(str[i]);\n } else {\n for (const key in numberingSystemsUTF16) {\n const [min, max] = numberingSystemsUTF16[key];\n if (code >= min && code <= max) {\n value += code - min;\n }\n }\n }\n }\n return parseInt(value, 10);\n } else {\n return value;\n }\n}\n\n// cache of {numberingSystem: {append: regex}}\nconst digitRegexCache = new Map();\nexport function resetDigitRegexCache() {\n digitRegexCache.clear();\n}\n\nexport function digitRegex({ numberingSystem }, append = \"\") {\n const ns = numberingSystem || \"latn\";\n\n let appendCache = digitRegexCache.get(ns);\n if (appendCache === undefined) {\n appendCache = new Map();\n digitRegexCache.set(ns, appendCache);\n }\n let regex = appendCache.get(append);\n if (regex === undefined) {\n regex = new RegExp(`${numberingSystems[ns]}${append}`);\n appendCache.set(append, regex);\n }\n\n return regex;\n}\n","import SystemZone from \"./zones/systemZone.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport Locale from \"./impl/locale.js\";\nimport DateTime from \"./datetime.js\";\n\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\nimport { validateWeekSettings } from \"./impl/util.js\";\nimport { resetDigitRegexCache } from \"./impl/digits.js\";\n\nlet now = () => Date.now(),\n defaultZone = \"system\",\n defaultLocale = null,\n defaultNumberingSystem = null,\n defaultOutputCalendar = null,\n twoDigitCutoffYear = 60,\n throwOnInvalid,\n defaultWeekSettings = null;\n\n/**\n * Settings contains static getters and setters that control Luxon's overall behavior. Luxon is a simple library with few options, but the ones it does have live here.\n */\nexport default class Settings {\n /**\n * Get the callback for returning the current timestamp.\n * @type {function}\n */\n static get now() {\n return now;\n }\n\n /**\n * Set the callback for returning the current timestamp.\n * The function should return a number, which will be interpreted as an Epoch millisecond count\n * @type {function}\n * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future\n * @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time\n */\n static set now(n) {\n now = n;\n }\n\n /**\n * Set the default time zone to create DateTimes in. Does not affect existing instances.\n * Use the value \"system\" to reset this value to the system's time zone.\n * @type {string}\n */\n static set defaultZone(zone) {\n defaultZone = zone;\n }\n\n /**\n * Get the default time zone object currently used to create DateTimes. Does not affect existing instances.\n * The default value is the system's time zone (the one set on the machine that runs this code).\n * @type {Zone}\n */\n static get defaultZone() {\n return normalizeZone(defaultZone, SystemZone.instance);\n }\n\n /**\n * Get the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultLocale() {\n return defaultLocale;\n }\n\n /**\n * Set the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultLocale(locale) {\n defaultLocale = locale;\n }\n\n /**\n * Get the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultNumberingSystem() {\n return defaultNumberingSystem;\n }\n\n /**\n * Set the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultNumberingSystem(numberingSystem) {\n defaultNumberingSystem = numberingSystem;\n }\n\n /**\n * Get the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultOutputCalendar() {\n return defaultOutputCalendar;\n }\n\n /**\n * Set the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultOutputCalendar(outputCalendar) {\n defaultOutputCalendar = outputCalendar;\n }\n\n /**\n * @typedef {Object} WeekSettings\n * @property {number} firstDay\n * @property {number} minimalDays\n * @property {number[]} weekend\n */\n\n /**\n * @return {WeekSettings|null}\n */\n static get defaultWeekSettings() {\n return defaultWeekSettings;\n }\n\n /**\n * Allows overriding the default locale week settings, i.e. the start of the week, the weekend and\n * how many days are required in the first week of a year.\n * Does not affect existing instances.\n *\n * @param {WeekSettings|null} weekSettings\n */\n static set defaultWeekSettings(weekSettings) {\n defaultWeekSettings = validateWeekSettings(weekSettings);\n }\n\n /**\n * Get the cutoff year for whether a 2-digit year string is interpreted in the current or previous century. Numbers higher than the cutoff will be considered to mean 19xx and numbers lower or equal to the cutoff will be considered 20xx.\n * @type {number}\n */\n static get twoDigitCutoffYear() {\n return twoDigitCutoffYear;\n }\n\n /**\n * Set the cutoff year for whether a 2-digit year string is interpreted in the current or previous century. Numbers higher than the cutoff will be considered to mean 19xx and numbers lower or equal to the cutoff will be considered 20xx.\n * @type {number}\n * @example Settings.twoDigitCutoffYear = 0 // all 'yy' are interpreted as 20th century\n * @example Settings.twoDigitCutoffYear = 99 // all 'yy' are interpreted as 21st century\n * @example Settings.twoDigitCutoffYear = 50 // '49' -> 2049; '50' -> 1950\n * @example Settings.twoDigitCutoffYear = 1950 // interpreted as 50\n * @example Settings.twoDigitCutoffYear = 2050 // ALSO interpreted as 50\n */\n static set twoDigitCutoffYear(cutoffYear) {\n twoDigitCutoffYear = cutoffYear % 100;\n }\n\n /**\n * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static get throwOnInvalid() {\n return throwOnInvalid;\n }\n\n /**\n * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static set throwOnInvalid(t) {\n throwOnInvalid = t;\n }\n\n /**\n * Reset Luxon's global caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCaches() {\n Locale.resetCache();\n IANAZone.resetCache();\n DateTime.resetCache();\n resetDigitRegexCache();\n }\n}\n","export default class Invalid {\n constructor(reason, explanation) {\n this.reason = reason;\n this.explanation = explanation;\n }\n\n toMessage() {\n if (this.explanation) {\n return `${this.reason}: ${this.explanation}`;\n } else {\n return this.reason;\n }\n }\n}\n","import {\n integerBetween,\n isLeapYear,\n timeObject,\n daysInYear,\n daysInMonth,\n weeksInWeekYear,\n isInteger,\n isUndefined,\n} from \"./util.js\";\nimport Invalid from \"./invalid.js\";\nimport { ConflictingSpecificationError } from \"../errors.js\";\n\nconst nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334],\n leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n\nfunction unitOutOfRange(unit, value) {\n return new Invalid(\n \"unit out of range\",\n `you specified ${value} (of type ${typeof value}) as a ${unit}, which is invalid`\n );\n}\n\nexport function dayOfWeek(year, month, day) {\n const d = new Date(Date.UTC(year, month - 1, day));\n\n if (year < 100 && year >= 0) {\n d.setUTCFullYear(d.getUTCFullYear() - 1900);\n }\n\n const js = d.getUTCDay();\n\n return js === 0 ? 7 : js;\n}\n\nfunction computeOrdinal(year, month, day) {\n return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1];\n}\n\nfunction uncomputeOrdinal(year, ordinal) {\n const table = isLeapYear(year) ? leapLadder : nonLeapLadder,\n month0 = table.findIndex((i) => i < ordinal),\n day = ordinal - table[month0];\n return { month: month0 + 1, day };\n}\n\nexport function isoWeekdayToLocal(isoWeekday, startOfWeek) {\n return ((isoWeekday - startOfWeek + 7) % 7) + 1;\n}\n\n/**\n * @private\n */\n\nexport function gregorianToWeek(gregObj, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const { year, month, day } = gregObj,\n ordinal = computeOrdinal(year, month, day),\n weekday = isoWeekdayToLocal(dayOfWeek(year, month, day), startOfWeek);\n\n let weekNumber = Math.floor((ordinal - weekday + 14 - minDaysInFirstWeek) / 7),\n weekYear;\n\n if (weekNumber < 1) {\n weekYear = year - 1;\n weekNumber = weeksInWeekYear(weekYear, minDaysInFirstWeek, startOfWeek);\n } else if (weekNumber > weeksInWeekYear(year, minDaysInFirstWeek, startOfWeek)) {\n weekYear = year + 1;\n weekNumber = 1;\n } else {\n weekYear = year;\n }\n\n return { weekYear, weekNumber, weekday, ...timeObject(gregObj) };\n}\n\nexport function weekToGregorian(weekData, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const { weekYear, weekNumber, weekday } = weekData,\n weekdayOfJan4 = isoWeekdayToLocal(dayOfWeek(weekYear, 1, minDaysInFirstWeek), startOfWeek),\n yearInDays = daysInYear(weekYear);\n\n let ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 7 + minDaysInFirstWeek,\n year;\n\n if (ordinal < 1) {\n year = weekYear - 1;\n ordinal += daysInYear(year);\n } else if (ordinal > yearInDays) {\n year = weekYear + 1;\n ordinal -= daysInYear(weekYear);\n } else {\n year = weekYear;\n }\n\n const { month, day } = uncomputeOrdinal(year, ordinal);\n return { year, month, day, ...timeObject(weekData) };\n}\n\nexport function gregorianToOrdinal(gregData) {\n const { year, month, day } = gregData;\n const ordinal = computeOrdinal(year, month, day);\n return { year, ordinal, ...timeObject(gregData) };\n}\n\nexport function ordinalToGregorian(ordinalData) {\n const { year, ordinal } = ordinalData;\n const { month, day } = uncomputeOrdinal(year, ordinal);\n return { year, month, day, ...timeObject(ordinalData) };\n}\n\n/**\n * Check if local week units like localWeekday are used in obj.\n * If so, validates that they are not mixed with ISO week units and then copies them to the normal week unit properties.\n * Modifies obj in-place!\n * @param obj the object values\n */\nexport function usesLocalWeekValues(obj, loc) {\n const hasLocaleWeekData =\n !isUndefined(obj.localWeekday) ||\n !isUndefined(obj.localWeekNumber) ||\n !isUndefined(obj.localWeekYear);\n if (hasLocaleWeekData) {\n const hasIsoWeekData =\n !isUndefined(obj.weekday) || !isUndefined(obj.weekNumber) || !isUndefined(obj.weekYear);\n\n if (hasIsoWeekData) {\n throw new ConflictingSpecificationError(\n \"Cannot mix locale-based week fields with ISO-based week fields\"\n );\n }\n if (!isUndefined(obj.localWeekday)) obj.weekday = obj.localWeekday;\n if (!isUndefined(obj.localWeekNumber)) obj.weekNumber = obj.localWeekNumber;\n if (!isUndefined(obj.localWeekYear)) obj.weekYear = obj.localWeekYear;\n delete obj.localWeekday;\n delete obj.localWeekNumber;\n delete obj.localWeekYear;\n return {\n minDaysInFirstWeek: loc.getMinDaysInFirstWeek(),\n startOfWeek: loc.getStartOfWeek(),\n };\n } else {\n return { minDaysInFirstWeek: 4, startOfWeek: 1 };\n }\n}\n\nexport function hasInvalidWeekData(obj, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const validYear = isInteger(obj.weekYear),\n validWeek = integerBetween(\n obj.weekNumber,\n 1,\n weeksInWeekYear(obj.weekYear, minDaysInFirstWeek, startOfWeek)\n ),\n validWeekday = integerBetween(obj.weekday, 1, 7);\n\n if (!validYear) {\n return unitOutOfRange(\"weekYear\", obj.weekYear);\n } else if (!validWeek) {\n return unitOutOfRange(\"week\", obj.weekNumber);\n } else if (!validWeekday) {\n return unitOutOfRange(\"weekday\", obj.weekday);\n } else return false;\n}\n\nexport function hasInvalidOrdinalData(obj) {\n const validYear = isInteger(obj.year),\n validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validOrdinal) {\n return unitOutOfRange(\"ordinal\", obj.ordinal);\n } else return false;\n}\n\nexport function hasInvalidGregorianData(obj) {\n const validYear = isInteger(obj.year),\n validMonth = integerBetween(obj.month, 1, 12),\n validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validMonth) {\n return unitOutOfRange(\"month\", obj.month);\n } else if (!validDay) {\n return unitOutOfRange(\"day\", obj.day);\n } else return false;\n}\n\nexport function hasInvalidTimeData(obj) {\n const { hour, minute, second, millisecond } = obj;\n const validHour =\n integerBetween(hour, 0, 23) ||\n (hour === 24 && minute === 0 && second === 0 && millisecond === 0),\n validMinute = integerBetween(minute, 0, 59),\n validSecond = integerBetween(second, 0, 59),\n validMillisecond = integerBetween(millisecond, 0, 999);\n\n if (!validHour) {\n return unitOutOfRange(\"hour\", hour);\n } else if (!validMinute) {\n return unitOutOfRange(\"minute\", minute);\n } else if (!validSecond) {\n return unitOutOfRange(\"second\", second);\n } else if (!validMillisecond) {\n return unitOutOfRange(\"millisecond\", millisecond);\n } else return false;\n}\n","/*\n This is just a junk drawer, containing anything used across multiple classes.\n Because Luxon is small(ish), this should stay small and we won't worry about splitting\n it up into, say, parsingUtil.js and basicUtil.js and so on. But they are divided up by feature area.\n*/\n\nimport { InvalidArgumentError } from \"../errors.js\";\nimport Settings from \"../settings.js\";\nimport { dayOfWeek, isoWeekdayToLocal } from \"./conversions.js\";\n\n/**\n * @private\n */\n\n// TYPES\n\nexport function isUndefined(o) {\n return typeof o === \"undefined\";\n}\n\nexport function isNumber(o) {\n return typeof o === \"number\";\n}\n\nexport function isInteger(o) {\n return typeof o === \"number\" && o % 1 === 0;\n}\n\nexport function isString(o) {\n return typeof o === \"string\";\n}\n\nexport function isDate(o) {\n return Object.prototype.toString.call(o) === \"[object Date]\";\n}\n\n// CAPABILITIES\n\nexport function hasRelative() {\n try {\n return typeof Intl !== \"undefined\" && !!Intl.RelativeTimeFormat;\n } catch (e) {\n return false;\n }\n}\n\nexport function hasLocaleWeekInfo() {\n try {\n return (\n typeof Intl !== \"undefined\" &&\n !!Intl.Locale &&\n (\"weekInfo\" in Intl.Locale.prototype || \"getWeekInfo\" in Intl.Locale.prototype)\n );\n } catch (e) {\n return false;\n }\n}\n\n// OBJECTS AND ARRAYS\n\nexport function maybeArray(thing) {\n return Array.isArray(thing) ? thing : [thing];\n}\n\nexport function bestBy(arr, by, compare) {\n if (arr.length === 0) {\n return undefined;\n }\n return arr.reduce((best, next) => {\n const pair = [by(next), next];\n if (!best) {\n return pair;\n } else if (compare(best[0], pair[0]) === best[0]) {\n return best;\n } else {\n return pair;\n }\n }, null)[1];\n}\n\nexport function pick(obj, keys) {\n return keys.reduce((a, k) => {\n a[k] = obj[k];\n return a;\n }, {});\n}\n\nexport function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport function validateWeekSettings(settings) {\n if (settings == null) {\n return null;\n } else if (typeof settings !== \"object\") {\n throw new InvalidArgumentError(\"Week settings must be an object\");\n } else {\n if (\n !integerBetween(settings.firstDay, 1, 7) ||\n !integerBetween(settings.minimalDays, 1, 7) ||\n !Array.isArray(settings.weekend) ||\n settings.weekend.some((v) => !integerBetween(v, 1, 7))\n ) {\n throw new InvalidArgumentError(\"Invalid week settings\");\n }\n return {\n firstDay: settings.firstDay,\n minimalDays: settings.minimalDays,\n weekend: Array.from(settings.weekend),\n };\n }\n}\n\n// NUMBERS AND STRINGS\n\nexport function integerBetween(thing, bottom, top) {\n return isInteger(thing) && thing >= bottom && thing <= top;\n}\n\n// x % n but takes the sign of n instead of x\nexport function floorMod(x, n) {\n return x - n * Math.floor(x / n);\n}\n\nexport function padStart(input, n = 2) {\n const isNeg = input < 0;\n let padded;\n if (isNeg) {\n padded = \"-\" + (\"\" + -input).padStart(n, \"0\");\n } else {\n padded = (\"\" + input).padStart(n, \"0\");\n }\n return padded;\n}\n\nexport function parseInteger(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseInt(string, 10);\n }\n}\n\nexport function parseFloating(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseFloat(string);\n }\n}\n\nexport function parseMillis(fraction) {\n // Return undefined (instead of 0) in these cases, where fraction is not set\n if (isUndefined(fraction) || fraction === null || fraction === \"\") {\n return undefined;\n } else {\n const f = parseFloat(\"0.\" + fraction) * 1000;\n return Math.floor(f);\n }\n}\n\nexport function roundTo(number, digits, rounding = \"round\") {\n const factor = 10 ** digits;\n switch (rounding) {\n case \"expand\":\n return number > 0\n ? Math.ceil(number * factor) / factor\n : Math.floor(number * factor) / factor;\n case \"trunc\":\n return Math.trunc(number * factor) / factor;\n case \"round\":\n return Math.round(number * factor) / factor;\n case \"floor\":\n return Math.floor(number * factor) / factor;\n case \"ceil\":\n return Math.ceil(number * factor) / factor;\n default:\n throw new RangeError(`Value rounding ${rounding} is out of range`);\n }\n}\n\n// DATE BASICS\n\nexport function isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nexport function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\nexport function daysInMonth(year, month) {\n const modMonth = floorMod(month - 1, 12) + 1,\n modYear = year + (month - modMonth) / 12;\n\n if (modMonth === 2) {\n return isLeapYear(modYear) ? 29 : 28;\n } else {\n return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1];\n }\n}\n\n// convert a calendar object to a local timestamp (epoch, but with the offset baked in)\nexport function objToLocalTS(obj) {\n let d = Date.UTC(\n obj.year,\n obj.month - 1,\n obj.day,\n obj.hour,\n obj.minute,\n obj.second,\n obj.millisecond\n );\n\n // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that\n if (obj.year < 100 && obj.year >= 0) {\n d = new Date(d);\n // set the month and day again, this is necessary because year 2000 is a leap year, but year 100 is not\n // so if obj.year is in 99, but obj.day makes it roll over into year 100,\n // the calculations done by Date.UTC are using year 2000 - which is incorrect\n d.setUTCFullYear(obj.year, obj.month - 1, obj.day);\n }\n return +d;\n}\n\n// adapted from moment.js: https://github.com/moment/moment/blob/000ac1800e620f770f4eb31b5ae908f6167b0ab2/src/lib/units/week-calendar-utils.js\nfunction firstWeekOffset(year, minDaysInFirstWeek, startOfWeek) {\n const fwdlw = isoWeekdayToLocal(dayOfWeek(year, 1, minDaysInFirstWeek), startOfWeek);\n return -fwdlw + minDaysInFirstWeek - 1;\n}\n\nexport function weeksInWeekYear(weekYear, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const weekOffset = firstWeekOffset(weekYear, minDaysInFirstWeek, startOfWeek);\n const weekOffsetNext = firstWeekOffset(weekYear + 1, minDaysInFirstWeek, startOfWeek);\n return (daysInYear(weekYear) - weekOffset + weekOffsetNext) / 7;\n}\n\nexport function untruncateYear(year) {\n if (year > 99) {\n return year;\n } else return year > Settings.twoDigitCutoffYear ? 1900 + year : 2000 + year;\n}\n\n// PARSING\n\nexport function parseZoneInfo(ts, offsetFormat, locale, timeZone = null) {\n const date = new Date(ts),\n intlOpts = {\n hourCycle: \"h23\",\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n };\n\n if (timeZone) {\n intlOpts.timeZone = timeZone;\n }\n\n const modified = { timeZoneName: offsetFormat, ...intlOpts };\n\n const parsed = new Intl.DateTimeFormat(locale, modified)\n .formatToParts(date)\n .find((m) => m.type.toLowerCase() === \"timezonename\");\n return parsed ? parsed.value : null;\n}\n\n// signedOffset('-5', '30') -> -330\nexport function signedOffset(offHourStr, offMinuteStr) {\n let offHour = parseInt(offHourStr, 10);\n\n // don't || this because we want to preserve -0\n if (Number.isNaN(offHour)) {\n offHour = 0;\n }\n\n const offMin = parseInt(offMinuteStr, 10) || 0,\n offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin;\n return offHour * 60 + offMinSigned;\n}\n\n// COERCION\n\nexport function asNumber(value) {\n const numericValue = Number(value);\n if (typeof value === \"boolean\" || value === \"\" || !Number.isFinite(numericValue))\n throw new InvalidArgumentError(`Invalid unit value ${value}`);\n return numericValue;\n}\n\nexport function normalizeObject(obj, normalizer) {\n const normalized = {};\n for (const u in obj) {\n if (hasOwnProperty(obj, u)) {\n const v = obj[u];\n if (v === undefined || v === null) continue;\n normalized[normalizer(u)] = asNumber(v);\n }\n }\n return normalized;\n}\n\n/**\n * Returns the offset's value as a string\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\nexport function formatOffset(offset, format) {\n const hours = Math.trunc(Math.abs(offset / 60)),\n minutes = Math.trunc(Math.abs(offset % 60)),\n sign = offset >= 0 ? \"+\" : \"-\";\n\n switch (format) {\n case \"short\":\n return `${sign}${padStart(hours, 2)}:${padStart(minutes, 2)}`;\n case \"narrow\":\n return `${sign}${hours}${minutes > 0 ? `:${minutes}` : \"\"}`;\n case \"techie\":\n return `${sign}${padStart(hours, 2)}${padStart(minutes, 2)}`;\n default:\n throw new RangeError(`Value format ${format} is out of range for property format`);\n }\n}\n\nexport function timeObject(obj) {\n return pick(obj, [\"hour\", \"minute\", \"second\", \"millisecond\"]);\n}\n","import * as Formats from \"./formats.js\";\nimport { pick } from \"./util.js\";\n\nfunction stringify(obj) {\n return JSON.stringify(obj, Object.keys(obj).sort());\n}\n\n/**\n * @private\n */\n\nexport const monthsLong = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nexport const monthsShort = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n];\n\nexport const monthsNarrow = [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"];\n\nexport function months(length) {\n switch (length) {\n case \"narrow\":\n return [...monthsNarrow];\n case \"short\":\n return [...monthsShort];\n case \"long\":\n return [...monthsLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"];\n case \"2-digit\":\n return [\"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"10\", \"11\", \"12\"];\n default:\n return null;\n }\n}\n\nexport const weekdaysLong = [\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n \"Sunday\",\n];\n\nexport const weekdaysShort = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\n\nexport const weekdaysNarrow = [\"M\", \"T\", \"W\", \"T\", \"F\", \"S\", \"S\"];\n\nexport function weekdays(length) {\n switch (length) {\n case \"narrow\":\n return [...weekdaysNarrow];\n case \"short\":\n return [...weekdaysShort];\n case \"long\":\n return [...weekdaysLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"];\n default:\n return null;\n }\n}\n\nexport const meridiems = [\"AM\", \"PM\"];\n\nexport const erasLong = [\"Before Christ\", \"Anno Domini\"];\n\nexport const erasShort = [\"BC\", \"AD\"];\n\nexport const erasNarrow = [\"B\", \"A\"];\n\nexport function eras(length) {\n switch (length) {\n case \"narrow\":\n return [...erasNarrow];\n case \"short\":\n return [...erasShort];\n case \"long\":\n return [...erasLong];\n default:\n return null;\n }\n}\n\nexport function meridiemForDateTime(dt) {\n return meridiems[dt.hour < 12 ? 0 : 1];\n}\n\nexport function weekdayForDateTime(dt, length) {\n return weekdays(length)[dt.weekday - 1];\n}\n\nexport function monthForDateTime(dt, length) {\n return months(length)[dt.month - 1];\n}\n\nexport function eraForDateTime(dt, length) {\n return eras(length)[dt.year < 0 ? 0 : 1];\n}\n\nexport function formatRelativeTime(unit, count, numeric = \"always\", narrow = false) {\n const units = {\n years: [\"year\", \"yr.\"],\n quarters: [\"quarter\", \"qtr.\"],\n months: [\"month\", \"mo.\"],\n weeks: [\"week\", \"wk.\"],\n days: [\"day\", \"day\", \"days\"],\n hours: [\"hour\", \"hr.\"],\n minutes: [\"minute\", \"min.\"],\n seconds: [\"second\", \"sec.\"],\n };\n\n const lastable = [\"hours\", \"minutes\", \"seconds\"].indexOf(unit) === -1;\n\n if (numeric === \"auto\" && lastable) {\n const isDay = unit === \"days\";\n switch (count) {\n case 1:\n return isDay ? \"tomorrow\" : `next ${units[unit][0]}`;\n case -1:\n return isDay ? \"yesterday\" : `last ${units[unit][0]}`;\n case 0:\n return isDay ? \"today\" : `this ${units[unit][0]}`;\n default: // fall through\n }\n }\n\n const isInPast = Object.is(count, -0) || count < 0,\n fmtValue = Math.abs(count),\n singular = fmtValue === 1,\n lilUnits = units[unit],\n fmtUnit = narrow\n ? singular\n ? lilUnits[1]\n : lilUnits[2] || lilUnits[1]\n : singular\n ? units[unit][0]\n : unit;\n return isInPast ? `${fmtValue} ${fmtUnit} ago` : `in ${fmtValue} ${fmtUnit}`;\n}\n\nexport function formatString(knownFormat) {\n // these all have the offsets removed because we don't have access to them\n // without all the intl stuff this is backfilling\n const filtered = pick(knownFormat, [\n \"weekday\",\n \"era\",\n \"year\",\n \"month\",\n \"day\",\n \"hour\",\n \"minute\",\n \"second\",\n \"timeZoneName\",\n \"hourCycle\",\n ]),\n key = stringify(filtered),\n dateTimeHuge = \"EEEE, LLLL d, yyyy, h:mm a\";\n switch (key) {\n case stringify(Formats.DATE_SHORT):\n return \"M/d/yyyy\";\n case stringify(Formats.DATE_MED):\n return \"LLL d, yyyy\";\n case stringify(Formats.DATE_MED_WITH_WEEKDAY):\n return \"EEE, LLL d, yyyy\";\n case stringify(Formats.DATE_FULL):\n return \"LLLL d, yyyy\";\n case stringify(Formats.DATE_HUGE):\n return \"EEEE, LLLL d, yyyy\";\n case stringify(Formats.TIME_SIMPLE):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_SECONDS):\n return \"h:mm:ss a\";\n case stringify(Formats.TIME_WITH_SHORT_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_LONG_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_24_SIMPLE):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_SECONDS):\n return \"HH:mm:ss\";\n case stringify(Formats.TIME_24_WITH_SHORT_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_LONG_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.DATETIME_SHORT):\n return \"M/d/yyyy, h:mm a\";\n case stringify(Formats.DATETIME_MED):\n return \"LLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL):\n return \"LLLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_HUGE):\n return dateTimeHuge;\n case stringify(Formats.DATETIME_SHORT_WITH_SECONDS):\n return \"M/d/yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_SECONDS):\n return \"LLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_WEEKDAY):\n return \"EEE, d LLL yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL_WITH_SECONDS):\n return \"LLLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_HUGE_WITH_SECONDS):\n return \"EEEE, LLLL d, yyyy, h:mm:ss a\";\n default:\n return dateTimeHuge;\n }\n}\n","import * as English from \"./english.js\";\nimport * as Formats from \"./formats.js\";\nimport { padStart } from \"./util.js\";\n\nfunction stringifyTokens(splits, tokenToString) {\n let s = \"\";\n for (const token of splits) {\n if (token.literal) {\n s += token.val;\n } else {\n s += tokenToString(token.val);\n }\n }\n return s;\n}\n\nconst macroTokenToFormatOpts = {\n D: Formats.DATE_SHORT,\n DD: Formats.DATE_MED,\n DDD: Formats.DATE_FULL,\n DDDD: Formats.DATE_HUGE,\n t: Formats.TIME_SIMPLE,\n tt: Formats.TIME_WITH_SECONDS,\n ttt: Formats.TIME_WITH_SHORT_OFFSET,\n tttt: Formats.TIME_WITH_LONG_OFFSET,\n T: Formats.TIME_24_SIMPLE,\n TT: Formats.TIME_24_WITH_SECONDS,\n TTT: Formats.TIME_24_WITH_SHORT_OFFSET,\n TTTT: Formats.TIME_24_WITH_LONG_OFFSET,\n f: Formats.DATETIME_SHORT,\n ff: Formats.DATETIME_MED,\n fff: Formats.DATETIME_FULL,\n ffff: Formats.DATETIME_HUGE,\n F: Formats.DATETIME_SHORT_WITH_SECONDS,\n FF: Formats.DATETIME_MED_WITH_SECONDS,\n FFF: Formats.DATETIME_FULL_WITH_SECONDS,\n FFFF: Formats.DATETIME_HUGE_WITH_SECONDS,\n};\n\n/**\n * @private\n */\n\nexport default class Formatter {\n static create(locale, opts = {}) {\n return new Formatter(locale, opts);\n }\n\n static parseFormat(fmt) {\n // white-space is always considered a literal in user-provided formats\n // the \" \" token has a special meaning (see unitForToken)\n\n let current = null,\n currentFull = \"\",\n bracketed = false;\n const splits = [];\n for (let i = 0; i < fmt.length; i++) {\n const c = fmt.charAt(i);\n if (c === \"'\") {\n // turn '' into a literal signal quote instead of just skipping the empty literal\n if (currentFull.length > 0 || bracketed) {\n splits.push({\n literal: bracketed || /^\\s+$/.test(currentFull),\n val: currentFull === \"\" ? \"'\" : currentFull,\n });\n }\n current = null;\n currentFull = \"\";\n bracketed = !bracketed;\n } else if (bracketed) {\n currentFull += c;\n } else if (c === current) {\n currentFull += c;\n } else {\n if (currentFull.length > 0) {\n splits.push({ literal: /^\\s+$/.test(currentFull), val: currentFull });\n }\n currentFull = c;\n current = c;\n }\n }\n\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed || /^\\s+$/.test(currentFull), val: currentFull });\n }\n\n return splits;\n }\n\n static macroTokenToFormatOpts(token) {\n return macroTokenToFormatOpts[token];\n }\n\n constructor(locale, formatOpts) {\n this.opts = formatOpts;\n this.loc = locale;\n this.systemLoc = null;\n }\n\n formatWithSystemDefault(dt, opts) {\n if (this.systemLoc === null) {\n this.systemLoc = this.loc.redefaultToSystem();\n }\n const df = this.systemLoc.dtFormatter(dt, { ...this.opts, ...opts });\n return df.format();\n }\n\n dtFormatter(dt, opts = {}) {\n return this.loc.dtFormatter(dt, { ...this.opts, ...opts });\n }\n\n formatDateTime(dt, opts) {\n return this.dtFormatter(dt, opts).format();\n }\n\n formatDateTimeParts(dt, opts) {\n return this.dtFormatter(dt, opts).formatToParts();\n }\n\n formatInterval(interval, opts) {\n const df = this.dtFormatter(interval.start, opts);\n return df.dtf.formatRange(interval.start.toJSDate(), interval.end.toJSDate());\n }\n\n resolvedOptions(dt, opts) {\n return this.dtFormatter(dt, opts).resolvedOptions();\n }\n\n num(n, p = 0, signDisplay = undefined) {\n // we get some perf out of doing this here, annoyingly\n if (this.opts.forceSimple) {\n return padStart(n, p);\n }\n\n const opts = { ...this.opts };\n\n if (p > 0) {\n opts.padTo = p;\n }\n if (signDisplay) {\n opts.signDisplay = signDisplay;\n }\n\n return this.loc.numberFormatter(opts).format(n);\n }\n\n formatDateTimeFromString(dt, fmt) {\n const knownEnglish = this.loc.listingMode() === \"en\",\n useDateTimeFormatter = this.loc.outputCalendar && this.loc.outputCalendar !== \"gregory\",\n string = (opts, extract) => this.loc.extract(dt, opts, extract),\n formatOffset = (opts) => {\n if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) {\n return \"Z\";\n }\n\n return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : \"\";\n },\n meridiem = () =>\n knownEnglish\n ? English.meridiemForDateTime(dt)\n : string({ hour: \"numeric\", hourCycle: \"h12\" }, \"dayperiod\"),\n month = (length, standalone) =>\n knownEnglish\n ? English.monthForDateTime(dt, length)\n : string(standalone ? { month: length } : { month: length, day: \"numeric\" }, \"month\"),\n weekday = (length, standalone) =>\n knownEnglish\n ? English.weekdayForDateTime(dt, length)\n : string(\n standalone ? { weekday: length } : { weekday: length, month: \"long\", day: \"numeric\" },\n \"weekday\"\n ),\n maybeMacro = (token) => {\n const formatOpts = Formatter.macroTokenToFormatOpts(token);\n if (formatOpts) {\n return this.formatWithSystemDefault(dt, formatOpts);\n } else {\n return token;\n }\n },\n era = (length) =>\n knownEnglish ? English.eraForDateTime(dt, length) : string({ era: length }, \"era\"),\n tokenToString = (token) => {\n // Where possible: https://cldr.unicode.org/translation/date-time/date-time-symbols\n switch (token) {\n // ms\n case \"S\":\n return this.num(dt.millisecond);\n case \"u\":\n // falls through\n case \"SSS\":\n return this.num(dt.millisecond, 3);\n // seconds\n case \"s\":\n return this.num(dt.second);\n case \"ss\":\n return this.num(dt.second, 2);\n // fractional seconds\n case \"uu\":\n return this.num(Math.floor(dt.millisecond / 10), 2);\n case \"uuu\":\n return this.num(Math.floor(dt.millisecond / 100));\n // minutes\n case \"m\":\n return this.num(dt.minute);\n case \"mm\":\n return this.num(dt.minute, 2);\n // hours\n case \"h\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12);\n case \"hh\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2);\n case \"H\":\n return this.num(dt.hour);\n case \"HH\":\n return this.num(dt.hour, 2);\n // offset\n case \"Z\":\n // like +6\n return formatOffset({ format: \"narrow\", allowZ: this.opts.allowZ });\n case \"ZZ\":\n // like +06:00\n return formatOffset({ format: \"short\", allowZ: this.opts.allowZ });\n case \"ZZZ\":\n // like +0600\n return formatOffset({ format: \"techie\", allowZ: this.opts.allowZ });\n case \"ZZZZ\":\n // like EST\n return dt.zone.offsetName(dt.ts, { format: \"short\", locale: this.loc.locale });\n case \"ZZZZZ\":\n // like Eastern Standard Time\n return dt.zone.offsetName(dt.ts, { format: \"long\", locale: this.loc.locale });\n // zone\n case \"z\":\n // like America/New_York\n return dt.zoneName;\n // meridiems\n case \"a\":\n return meridiem();\n // dates\n case \"d\":\n return useDateTimeFormatter ? string({ day: \"numeric\" }, \"day\") : this.num(dt.day);\n case \"dd\":\n return useDateTimeFormatter ? string({ day: \"2-digit\" }, \"day\") : this.num(dt.day, 2);\n // weekdays - standalone\n case \"c\":\n // like 1\n return this.num(dt.weekday);\n case \"ccc\":\n // like 'Tues'\n return weekday(\"short\", true);\n case \"cccc\":\n // like 'Tuesday'\n return weekday(\"long\", true);\n case \"ccccc\":\n // like 'T'\n return weekday(\"narrow\", true);\n // weekdays - format\n case \"E\":\n // like 1\n return this.num(dt.weekday);\n case \"EEE\":\n // like 'Tues'\n return weekday(\"short\", false);\n case \"EEEE\":\n // like 'Tuesday'\n return weekday(\"long\", false);\n case \"EEEEE\":\n // like 'T'\n return weekday(\"narrow\", false);\n // months - standalone\n case \"L\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\", day: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"LL\":\n // like 01, doesn't seem to work\n return useDateTimeFormatter\n ? string({ month: \"2-digit\", day: \"numeric\" }, \"month\")\n : this.num(dt.month, 2);\n case \"LLL\":\n // like Jan\n return month(\"short\", true);\n case \"LLLL\":\n // like January\n return month(\"long\", true);\n case \"LLLLL\":\n // like J\n return month(\"narrow\", true);\n // months - format\n case \"M\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"MM\":\n // like 01\n return useDateTimeFormatter\n ? string({ month: \"2-digit\" }, \"month\")\n : this.num(dt.month, 2);\n case \"MMM\":\n // like Jan\n return month(\"short\", false);\n case \"MMMM\":\n // like January\n return month(\"long\", false);\n case \"MMMMM\":\n // like J\n return month(\"narrow\", false);\n // years\n case \"y\":\n // like 2014\n return useDateTimeFormatter ? string({ year: \"numeric\" }, \"year\") : this.num(dt.year);\n case \"yy\":\n // like 14\n return useDateTimeFormatter\n ? string({ year: \"2-digit\" }, \"year\")\n : this.num(dt.year.toString().slice(-2), 2);\n case \"yyyy\":\n // like 0012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 4);\n case \"yyyyyy\":\n // like 000012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 6);\n // eras\n case \"G\":\n // like AD\n return era(\"short\");\n case \"GG\":\n // like Anno Domini\n return era(\"long\");\n case \"GGGGG\":\n return era(\"narrow\");\n case \"kk\":\n return this.num(dt.weekYear.toString().slice(-2), 2);\n case \"kkkk\":\n return this.num(dt.weekYear, 4);\n case \"W\":\n return this.num(dt.weekNumber);\n case \"WW\":\n return this.num(dt.weekNumber, 2);\n case \"n\":\n return this.num(dt.localWeekNumber);\n case \"nn\":\n return this.num(dt.localWeekNumber, 2);\n case \"ii\":\n return this.num(dt.localWeekYear.toString().slice(-2), 2);\n case \"iiii\":\n return this.num(dt.localWeekYear, 4);\n case \"o\":\n return this.num(dt.ordinal);\n case \"ooo\":\n return this.num(dt.ordinal, 3);\n case \"q\":\n // like 1\n return this.num(dt.quarter);\n case \"qq\":\n // like 01\n return this.num(dt.quarter, 2);\n case \"X\":\n return this.num(Math.floor(dt.ts / 1000));\n case \"x\":\n return this.num(dt.ts);\n default:\n return maybeMacro(token);\n }\n };\n\n return stringifyTokens(Formatter.parseFormat(fmt), tokenToString);\n }\n\n formatDurationFromString(dur, fmt) {\n const invertLargest = this.opts.signMode === \"negativeLargestOnly\" ? -1 : 1;\n const tokenToField = (token) => {\n switch (token[0]) {\n case \"S\":\n return \"milliseconds\";\n case \"s\":\n return \"seconds\";\n case \"m\":\n return \"minutes\";\n case \"h\":\n return \"hours\";\n case \"d\":\n return \"days\";\n case \"w\":\n return \"weeks\";\n case \"M\":\n return \"months\";\n case \"y\":\n return \"years\";\n default:\n return null;\n }\n },\n tokenToString = (lildur, info) => (token) => {\n const mapped = tokenToField(token);\n if (mapped) {\n const inversionFactor =\n info.isNegativeDuration && mapped !== info.largestUnit ? invertLargest : 1;\n let signDisplay;\n if (this.opts.signMode === \"negativeLargestOnly\" && mapped !== info.largestUnit) {\n signDisplay = \"never\";\n } else if (this.opts.signMode === \"all\") {\n signDisplay = \"always\";\n } else {\n // \"auto\" and \"negative\" are the same, but \"auto\" has better support\n signDisplay = \"auto\";\n }\n return this.num(lildur.get(mapped) * inversionFactor, token.length, signDisplay);\n } else {\n return token;\n }\n },\n tokens = Formatter.parseFormat(fmt),\n realTokens = tokens.reduce(\n (found, { literal, val }) => (literal ? found : found.concat(val)),\n []\n ),\n collapsed = dur.shiftTo(...realTokens.map(tokenToField).filter((t) => t)),\n durationInfo = {\n isNegativeDuration: collapsed < 0,\n // this relies on \"collapsed\" being based on \"shiftTo\", which builds up the object\n // in order\n largestUnit: Object.keys(collapsed.values)[0],\n };\n return stringifyTokens(tokens, tokenToString(collapsed, durationInfo));\n }\n}\n","import {\n untruncateYear,\n signedOffset,\n parseInteger,\n parseMillis,\n isUndefined,\n parseFloating,\n} from \"./util.js\";\nimport * as English from \"./english.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n/*\n * This file handles parsing for well-specified formats. Here's how it works:\n * Two things go into parsing: a regex to match with and an extractor to take apart the groups in the match.\n * An extractor is just a function that takes a regex match array and returns a { year: ..., month: ... } object\n * parse() does the work of executing the regex and applying the extractor. It takes multiple regex/extractor pairs to try in sequence.\n * Extractors can take a \"cursor\" representing the offset in the match to look at. This makes it easy to combine extractors.\n * combineExtractors() does the work of combining them, keeping track of the cursor through multiple extractions.\n * Some extractions are super dumb and simpleParse and fromStrings help DRY them.\n */\n\nconst ianaRegex = /[A-Za-z_+-]{1,256}(?::?\\/[A-Za-z0-9_+-]{1,256}(?:\\/[A-Za-z0-9_+-]{1,256})?)?/;\n\nfunction combineRegexes(...regexes) {\n const full = regexes.reduce((f, r) => f + r.source, \"\");\n return RegExp(`^${full}$`);\n}\n\nfunction combineExtractors(...extractors) {\n return (m) =>\n extractors\n .reduce(\n ([mergedVals, mergedZone, cursor], ex) => {\n const [val, zone, next] = ex(m, cursor);\n return [{ ...mergedVals, ...val }, zone || mergedZone, next];\n },\n [{}, null, 1]\n )\n .slice(0, 2);\n}\n\nfunction parse(s, ...patterns) {\n if (s == null) {\n return [null, null];\n }\n\n for (const [regex, extractor] of patterns) {\n const m = regex.exec(s);\n if (m) {\n return extractor(m);\n }\n }\n return [null, null];\n}\n\nfunction simpleParse(...keys) {\n return (match, cursor) => {\n const ret = {};\n let i;\n\n for (i = 0; i < keys.length; i++) {\n ret[keys[i]] = parseInteger(match[cursor + i]);\n }\n return [ret, null, cursor + i];\n };\n}\n\n// ISO and SQL parsing\nconst offsetRegex = /(?:([Zz])|([+-]\\d\\d)(?::?(\\d\\d))?)/;\nconst isoExtendedZone = `(?:${offsetRegex.source}?(?:\\\\[(${ianaRegex.source})\\\\])?)?`;\nconst isoTimeBaseRegex = /(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:[.,](\\d{1,30}))?)?)?/;\nconst isoTimeRegex = RegExp(`${isoTimeBaseRegex.source}${isoExtendedZone}`);\nconst isoTimeExtensionRegex = RegExp(`(?:[Tt]${isoTimeRegex.source})?`);\nconst isoYmdRegex = /([+-]\\d{6}|\\d{4})(?:-?(\\d\\d)(?:-?(\\d\\d))?)?/;\nconst isoWeekRegex = /(\\d{4})-?W(\\d\\d)(?:-?(\\d))?/;\nconst isoOrdinalRegex = /(\\d{4})-?(\\d{3})/;\nconst extractISOWeekData = simpleParse(\"weekYear\", \"weekNumber\", \"weekDay\");\nconst extractISOOrdinalData = simpleParse(\"year\", \"ordinal\");\nconst sqlYmdRegex = /(\\d{4})-(\\d\\d)-(\\d\\d)/; // dumbed-down version of the ISO one\nconst sqlTimeRegex = RegExp(\n `${isoTimeBaseRegex.source} ?(?:${offsetRegex.source}|(${ianaRegex.source}))?`\n);\nconst sqlTimeExtensionRegex = RegExp(`(?: ${sqlTimeRegex.source})?`);\n\nfunction int(match, pos, fallback) {\n const m = match[pos];\n return isUndefined(m) ? fallback : parseInteger(m);\n}\n\nfunction extractISOYmd(match, cursor) {\n const item = {\n year: int(match, cursor),\n month: int(match, cursor + 1, 1),\n day: int(match, cursor + 2, 1),\n };\n\n return [item, null, cursor + 3];\n}\n\nfunction extractISOTime(match, cursor) {\n const item = {\n hours: int(match, cursor, 0),\n minutes: int(match, cursor + 1, 0),\n seconds: int(match, cursor + 2, 0),\n milliseconds: parseMillis(match[cursor + 3]),\n };\n\n return [item, null, cursor + 4];\n}\n\nfunction extractISOOffset(match, cursor) {\n const local = !match[cursor] && !match[cursor + 1],\n fullOffset = signedOffset(match[cursor + 1], match[cursor + 2]),\n zone = local ? null : FixedOffsetZone.instance(fullOffset);\n return [{}, zone, cursor + 3];\n}\n\nfunction extractIANAZone(match, cursor) {\n const zone = match[cursor] ? IANAZone.create(match[cursor]) : null;\n return [{}, zone, cursor + 1];\n}\n\n// ISO time parsing\n\nconst isoTimeOnly = RegExp(`^T?${isoTimeBaseRegex.source}$`);\n\n// ISO duration parsing\n\nconst isoDuration =\n /^-?P(?:(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)Y)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)W)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)D)?(?:T(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)H)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20})(?:[.,](-?\\d{1,20}))?S)?)?)$/;\n\nfunction extractISODuration(match) {\n const [s, yearStr, monthStr, weekStr, dayStr, hourStr, minuteStr, secondStr, millisecondsStr] =\n match;\n\n const hasNegativePrefix = s[0] === \"-\";\n const negativeSeconds = secondStr && secondStr[0] === \"-\";\n\n const maybeNegate = (num, force = false) =>\n num !== undefined && (force || (num && hasNegativePrefix)) ? -num : num;\n\n return [\n {\n years: maybeNegate(parseFloating(yearStr)),\n months: maybeNegate(parseFloating(monthStr)),\n weeks: maybeNegate(parseFloating(weekStr)),\n days: maybeNegate(parseFloating(dayStr)),\n hours: maybeNegate(parseFloating(hourStr)),\n minutes: maybeNegate(parseFloating(minuteStr)),\n seconds: maybeNegate(parseFloating(secondStr), secondStr === \"-0\"),\n milliseconds: maybeNegate(parseMillis(millisecondsStr), negativeSeconds),\n },\n ];\n}\n\n// These are a little braindead. EDT *should* tell us that we're in, say, America/New_York\n// and not just that we're in -240 *right now*. But since I don't think these are used that often\n// I'm just going to ignore that\nconst obsOffsets = {\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n};\n\nfunction fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n const result = {\n year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr),\n month: English.monthsShort.indexOf(monthStr) + 1,\n day: parseInteger(dayStr),\n hour: parseInteger(hourStr),\n minute: parseInteger(minuteStr),\n };\n\n if (secondStr) result.second = parseInteger(secondStr);\n if (weekdayStr) {\n result.weekday =\n weekdayStr.length > 3\n ? English.weekdaysLong.indexOf(weekdayStr) + 1\n : English.weekdaysShort.indexOf(weekdayStr) + 1;\n }\n\n return result;\n}\n\n// RFC 2822/5322\nconst rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\\d\\d)(\\d\\d)))$/;\n\nfunction extractRFC2822(match) {\n const [\n ,\n weekdayStr,\n dayStr,\n monthStr,\n yearStr,\n hourStr,\n minuteStr,\n secondStr,\n obsOffset,\n milOffset,\n offHourStr,\n offMinuteStr,\n ] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n\n let offset;\n if (obsOffset) {\n offset = obsOffsets[obsOffset];\n } else if (milOffset) {\n offset = 0;\n } else {\n offset = signedOffset(offHourStr, offMinuteStr);\n }\n\n return [result, new FixedOffsetZone(offset)];\n}\n\nfunction preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, \" \")\n .replace(/(\\s\\s+)/g, \" \")\n .trim();\n}\n\n// http date\n\nconst rfc1123 =\n /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d\\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n rfc850 =\n /^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\\d\\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n ascii =\n /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \\d|\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) (\\d{4})$/;\n\nfunction extractRFC1123Or850(match) {\n const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nfunction extractASCII(match) {\n const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nconst isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex);\nconst isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex);\nconst isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex);\nconst isoTimeCombinedRegex = combineRegexes(isoTimeRegex);\n\nconst extractISOYmdTimeAndOffset = combineExtractors(\n extractISOYmd,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOWeekTimeAndOffset = combineExtractors(\n extractISOWeekData,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOOrdinalDateAndTime = combineExtractors(\n extractISOOrdinalData,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOTimeAndOffset = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\n/*\n * @private\n */\n\nexport function parseISODate(s) {\n return parse(\n s,\n [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset],\n [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime],\n [isoTimeCombinedRegex, extractISOTimeAndOffset]\n );\n}\n\nexport function parseRFC2822Date(s) {\n return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);\n}\n\nexport function parseHTTPDate(s) {\n return parse(\n s,\n [rfc1123, extractRFC1123Or850],\n [rfc850, extractRFC1123Or850],\n [ascii, extractASCII]\n );\n}\n\nexport function parseISODuration(s) {\n return parse(s, [isoDuration, extractISODuration]);\n}\n\nconst extractISOTimeOnly = combineExtractors(extractISOTime);\n\nexport function parseISOTimeOnly(s) {\n return parse(s, [isoTimeOnly, extractISOTimeOnly]);\n}\n\nconst sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex);\nconst sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex);\n\nconst extractISOTimeOffsetAndIANAZone = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\nexport function parseSQL(s) {\n return parse(\n s,\n [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]\n );\n}\n","import { InvalidArgumentError, InvalidDurationError, InvalidUnitError } from \"./errors.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport Invalid from \"./impl/invalid.js\";\nimport Locale from \"./impl/locale.js\";\nimport { parseISODuration, parseISOTimeOnly } from \"./impl/regexParser.js\";\nimport {\n asNumber,\n hasOwnProperty,\n isNumber,\n isUndefined,\n normalizeObject,\n roundTo,\n} from \"./impl/util.js\";\nimport Settings from \"./settings.js\";\nimport DateTime from \"./datetime.js\";\n\nconst INVALID = \"Invalid Duration\";\n\n// unit conversion constants\nexport const lowOrderMatrix = {\n weeks: {\n days: 7,\n hours: 7 * 24,\n minutes: 7 * 24 * 60,\n seconds: 7 * 24 * 60 * 60,\n milliseconds: 7 * 24 * 60 * 60 * 1000,\n },\n days: {\n hours: 24,\n minutes: 24 * 60,\n seconds: 24 * 60 * 60,\n milliseconds: 24 * 60 * 60 * 1000,\n },\n hours: { minutes: 60, seconds: 60 * 60, milliseconds: 60 * 60 * 1000 },\n minutes: { seconds: 60, milliseconds: 60 * 1000 },\n seconds: { milliseconds: 1000 },\n },\n casualMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: 52,\n days: 365,\n hours: 365 * 24,\n minutes: 365 * 24 * 60,\n seconds: 365 * 24 * 60 * 60,\n milliseconds: 365 * 24 * 60 * 60 * 1000,\n },\n quarters: {\n months: 3,\n weeks: 13,\n days: 91,\n hours: 91 * 24,\n minutes: 91 * 24 * 60,\n seconds: 91 * 24 * 60 * 60,\n milliseconds: 91 * 24 * 60 * 60 * 1000,\n },\n months: {\n weeks: 4,\n days: 30,\n hours: 30 * 24,\n minutes: 30 * 24 * 60,\n seconds: 30 * 24 * 60 * 60,\n milliseconds: 30 * 24 * 60 * 60 * 1000,\n },\n\n ...lowOrderMatrix,\n },\n daysInYearAccurate = 146097.0 / 400,\n daysInMonthAccurate = 146097.0 / 4800,\n accurateMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: daysInYearAccurate / 7,\n days: daysInYearAccurate,\n hours: daysInYearAccurate * 24,\n minutes: daysInYearAccurate * 24 * 60,\n seconds: daysInYearAccurate * 24 * 60 * 60,\n milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000,\n },\n quarters: {\n months: 3,\n weeks: daysInYearAccurate / 28,\n days: daysInYearAccurate / 4,\n hours: (daysInYearAccurate * 24) / 4,\n minutes: (daysInYearAccurate * 24 * 60) / 4,\n seconds: (daysInYearAccurate * 24 * 60 * 60) / 4,\n milliseconds: (daysInYearAccurate * 24 * 60 * 60 * 1000) / 4,\n },\n months: {\n weeks: daysInMonthAccurate / 7,\n days: daysInMonthAccurate,\n hours: daysInMonthAccurate * 24,\n minutes: daysInMonthAccurate * 24 * 60,\n seconds: daysInMonthAccurate * 24 * 60 * 60,\n milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1000,\n },\n ...lowOrderMatrix,\n };\n\n// units ordered by size\nconst orderedUnits = [\n \"years\",\n \"quarters\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\",\n];\n\nconst reverseUnits = orderedUnits.slice(0).reverse();\n\n// clone really means \"create another instance just like this one, but with these changes\"\nfunction clone(dur, alts, clear = false) {\n // deep merge for vals\n const conf = {\n values: clear ? alts.values : { ...dur.values, ...(alts.values || {}) },\n loc: dur.loc.clone(alts.loc),\n conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy,\n matrix: alts.matrix || dur.matrix,\n };\n return new Duration(conf);\n}\n\nfunction durationToMillis(matrix, vals) {\n let sum = vals.milliseconds ?? 0;\n for (const unit of reverseUnits.slice(1)) {\n if (vals[unit]) {\n sum += vals[unit] * matrix[unit][\"milliseconds\"];\n }\n }\n return sum;\n}\n\n// NB: mutates parameters\nfunction normalizeValues(matrix, vals) {\n // the logic below assumes the overall value of the duration is positive\n // if this is not the case, factor is used to make it so\n const factor = durationToMillis(matrix, vals) < 0 ? -1 : 1;\n\n orderedUnits.reduceRight((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n const previousVal = vals[previous] * factor;\n const conv = matrix[current][previous];\n\n // if (previousVal < 0):\n // lower order unit is negative (e.g. { years: 2, days: -2 })\n // normalize this by reducing the higher order unit by the appropriate amount\n // and increasing the lower order unit\n // this can never make the higher order unit negative, because this function only operates\n // on positive durations, so the amount of time represented by the lower order unit cannot\n // be larger than the higher order unit\n // else:\n // lower order unit is positive (e.g. { years: 2, days: 450 } or { years: -2, days: 450 })\n // in this case we attempt to convert as much as possible from the lower order unit into\n // the higher order one\n //\n // Math.floor takes care of both of these cases, rounding away from 0\n // if previousVal < 0 it makes the absolute value larger\n // if previousVal >= it makes the absolute value smaller\n const rollUp = Math.floor(previousVal / conv);\n vals[current] += rollUp * factor;\n vals[previous] -= rollUp * conv * factor;\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n\n // try to convert any decimals into smaller units if possible\n // for example for { years: 2.5, days: 0, seconds: 0 } we want to get { years: 2, days: 182, hours: 12 }\n orderedUnits.reduce((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n const fraction = vals[previous] % 1;\n vals[previous] -= fraction;\n vals[current] += fraction * matrix[previous][current];\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n}\n\n// Remove all properties with a value of 0 from an object\nfunction removeZeroes(vals) {\n const newVals = {};\n for (const [key, value] of Object.entries(vals)) {\n if (value !== 0) {\n newVals[key] = value;\n }\n }\n return newVals;\n}\n\n/**\n * A Duration object represents a period of time, like \"2 months\" or \"1 day, 1 hour\". Conceptually, it's just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime#plus} to add a Duration object to a DateTime, producing another DateTime.\n *\n * Here is a brief overview of commonly used methods and getters in Duration:\n *\n * * **Creation** To create a Duration, use {@link Duration.fromMillis}, {@link Duration.fromObject}, or {@link Duration.fromISO}.\n * * **Unit values** See the {@link Duration#years}, {@link Duration#months}, {@link Duration#weeks}, {@link Duration#days}, {@link Duration#hours}, {@link Duration#minutes}, {@link Duration#seconds}, {@link Duration#milliseconds} accessors.\n * * **Configuration** See {@link Duration#locale} and {@link Duration#numberingSystem} accessors.\n * * **Transformation** To create new Durations out of old ones use {@link Duration#plus}, {@link Duration#minus}, {@link Duration#normalize}, {@link Duration#set}, {@link Duration#reconfigure}, {@link Duration#shiftTo}, and {@link Duration#negate}.\n * * **Output** To convert the Duration into other representations, see {@link Duration#as}, {@link Duration#toISO}, {@link Duration#toFormat}, and {@link Duration#toJSON}\n *\n * There's are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation.\n */\nexport default class Duration {\n /**\n * @private\n */\n constructor(config) {\n const accurate = config.conversionAccuracy === \"longterm\" || false;\n let matrix = accurate ? accurateMatrix : casualMatrix;\n\n if (config.matrix) {\n matrix = config.matrix;\n }\n\n /**\n * @access private\n */\n this.values = config.values;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.conversionAccuracy = accurate ? \"longterm\" : \"casual\";\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.matrix = matrix;\n /**\n * @access private\n */\n this.isLuxonDuration = true;\n }\n\n /**\n * Create Duration from a number of milliseconds.\n * @param {number} count of milliseconds\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n static fromMillis(count, opts) {\n return Duration.fromObject({ milliseconds: count }, opts);\n }\n\n /**\n * Create a Duration from a JavaScript object with keys like 'years' and 'hours'.\n * If this object is empty then a zero milliseconds duration is returned.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.years\n * @param {number} obj.quarters\n * @param {number} obj.months\n * @param {number} obj.weeks\n * @param {number} obj.days\n * @param {number} obj.hours\n * @param {number} obj.minutes\n * @param {number} obj.seconds\n * @param {number} obj.milliseconds\n * @param {Object} [opts=[]] - options for creating this Duration\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the custom conversion system to use\n * @return {Duration}\n */\n static fromObject(obj, opts = {}) {\n if (obj == null || typeof obj !== \"object\") {\n throw new InvalidArgumentError(\n `Duration.fromObject: argument expected to be an object, got ${\n obj === null ? \"null\" : typeof obj\n }`\n );\n }\n\n return new Duration({\n values: normalizeObject(obj, Duration.normalizeUnit),\n loc: Locale.fromObject(opts),\n conversionAccuracy: opts.conversionAccuracy,\n matrix: opts.matrix,\n });\n }\n\n /**\n * Create a Duration from DurationLike.\n *\n * @param {Object | number | Duration} durationLike\n * One of:\n * - object with keys like 'years' and 'hours'.\n * - number representing milliseconds\n * - Duration instance\n * @return {Duration}\n */\n static fromDurationLike(durationLike) {\n if (isNumber(durationLike)) {\n return Duration.fromMillis(durationLike);\n } else if (Duration.isDuration(durationLike)) {\n return durationLike;\n } else if (typeof durationLike === \"object\") {\n return Duration.fromObject(durationLike);\n } else {\n throw new InvalidArgumentError(\n `Unknown duration argument ${durationLike} of type ${typeof durationLike}`\n );\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 duration string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the preset conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }\n * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 }\n * @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 }\n * @return {Duration}\n */\n static fromISO(text, opts) {\n const [parsed] = parseISODuration(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 time string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @example Duration.fromISOTime('11:22:33.444').toObject() //=> { hours: 11, minutes: 22, seconds: 33, milliseconds: 444 }\n * @example Duration.fromISOTime('11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @return {Duration}\n */\n static fromISOTime(text, opts) {\n const [parsed] = parseISOTimeOnly(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create an invalid Duration.\n * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Duration}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Duration is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDurationError(invalid);\n } else {\n return new Duration({ invalid });\n }\n }\n\n /**\n * @private\n */\n static normalizeUnit(unit) {\n const normalized = {\n year: \"years\",\n years: \"years\",\n quarter: \"quarters\",\n quarters: \"quarters\",\n month: \"months\",\n months: \"months\",\n week: \"weeks\",\n weeks: \"weeks\",\n day: \"days\",\n days: \"days\",\n hour: \"hours\",\n hours: \"hours\",\n minute: \"minutes\",\n minutes: \"minutes\",\n second: \"seconds\",\n seconds: \"seconds\",\n millisecond: \"milliseconds\",\n milliseconds: \"milliseconds\",\n }[unit ? unit.toLowerCase() : unit];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n }\n\n /**\n * Check if an object is a Duration. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDuration(o) {\n return (o && o.isLuxonDuration) || false;\n }\n\n /**\n * Get the locale of a Duration, such 'en-GB'\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens:\n * * `S` for milliseconds\n * * `s` for seconds\n * * `m` for minutes\n * * `h` for hours\n * * `d` for days\n * * `w` for weeks\n * * `M` for months\n * * `y` for years\n * Notes:\n * * Add padding by repeating the token, e.g. \"yy\" pads the years to two digits, \"hhhh\" pads the hours out to four digits\n * * Tokens can be escaped by wrapping with single quotes.\n * * The duration will be converted to the set of units in the format string using {@link Duration#shiftTo} and the Durations's conversion accuracy setting.\n * @param {string} fmt - the format string\n * @param {Object} opts - options\n * @param {boolean} [opts.floor=true] - floor numerical values\n * @param {'negative'|'all'|'negativeLargestOnly'} [opts.signMode=negative] - How to handle signs\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"y d s\") //=> \"1 6 2\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"yy dd sss\") //=> \"01 06 002\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"M S\") //=> \"12 518402000\"\n * @example Duration.fromObject({ days: 6, seconds: 2 }).toFormat(\"d s\", { signMode: \"all\" }) //=> \"+6 +2\"\n * @example Duration.fromObject({ days: -6, seconds: -2 }).toFormat(\"d s\", { signMode: \"all\" }) //=> \"-6 -2\"\n * @example Duration.fromObject({ days: -6, seconds: -2 }).toFormat(\"d s\", { signMode: \"negativeLargestOnly\" }) //=> \"-6 2\"\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n // reverse-compat since 1.2; we always round down now, never up, and we do it by default\n const fmtOpts = {\n ...opts,\n floor: opts.round !== false && opts.floor !== false,\n };\n return this.isValid\n ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a string representation of a Duration with all units included.\n * To modify its behavior, use `listStyle` and any Intl.NumberFormat option, though `unitDisplay` is especially relevant.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options\n * @param {Object} opts - Formatting options. Accepts the same keys as the options parameter of the native `Intl.NumberFormat` constructor, as well as `listStyle`.\n * @param {string} [opts.listStyle='narrow'] - How to format the merged list. Corresponds to the `style` property of the options parameter of the native `Intl.ListFormat` constructor.\n * @param {boolean} [opts.showZeros=true] - Show all units previously used by the duration even if they are zero\n * @example\n * ```js\n * var dur = Duration.fromObject({ months: 1, weeks: 0, hours: 5, minutes: 6 })\n * dur.toHuman() //=> '1 month, 0 weeks, 5 hours, 6 minutes'\n * dur.toHuman({ listStyle: \"long\" }) //=> '1 month, 0 weeks, 5 hours, and 6 minutes'\n * dur.toHuman({ unitDisplay: \"short\" }) //=> '1 mth, 0 wks, 5 hr, 6 min'\n * dur.toHuman({ showZeros: false }) //=> '1 month, 5 hours, 6 minutes'\n * ```\n */\n toHuman(opts = {}) {\n if (!this.isValid) return INVALID;\n\n const showZeros = opts.showZeros !== false;\n\n const l = orderedUnits\n .map((unit) => {\n const val = this.values[unit];\n if (isUndefined(val) || (val === 0 && !showZeros)) {\n return null;\n }\n return this.loc\n .numberFormatter({ style: \"unit\", unitDisplay: \"long\", ...opts, unit: unit.slice(0, -1) })\n .format(val);\n })\n .filter((n) => n);\n\n return this.loc\n .listFormatter({ type: \"conjunction\", style: opts.listStyle || \"narrow\", ...opts })\n .format(l);\n }\n\n /**\n * Returns a JavaScript object with this Duration's values.\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }\n * @return {Object}\n */\n toObject() {\n if (!this.isValid) return {};\n return { ...this.values };\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S'\n * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S'\n * @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M'\n * @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M'\n * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> 'PT0.006S'\n * @return {string}\n */\n toISO() {\n // we could use the formatter, but this is an easier way to get the minimum string\n if (!this.isValid) return null;\n\n let s = \"P\";\n if (this.years !== 0) s += this.years + \"Y\";\n if (this.months !== 0 || this.quarters !== 0) s += this.months + this.quarters * 3 + \"M\";\n if (this.weeks !== 0) s += this.weeks + \"W\";\n if (this.days !== 0) s += this.days + \"D\";\n if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0)\n s += \"T\";\n if (this.hours !== 0) s += this.hours + \"H\";\n if (this.minutes !== 0) s += this.minutes + \"M\";\n if (this.seconds !== 0 || this.milliseconds !== 0)\n // this will handle \"floating point madness\" by removing extra decimal places\n // https://stackoverflow.com/questions/588004/is-floating-point-math-broken\n s += roundTo(this.seconds + this.milliseconds / 1000, 3) + \"S\";\n if (s === \"P\") s += \"T0S\";\n return s;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration, formatted as a time of day.\n * Note that this will return null if the duration is invalid, negative, or equal to or greater than 24 hours.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example Duration.fromObject({ hours: 11 }).toISOTime() //=> '11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressMilliseconds: true }) //=> '11:00:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressSeconds: true }) //=> '11:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ includePrefix: true }) //=> 'T11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ format: 'basic' }) //=> '110000.000'\n * @return {string}\n */\n toISOTime(opts = {}) {\n if (!this.isValid) return null;\n\n const millis = this.toMillis();\n if (millis < 0 || millis >= 86400000) return null;\n\n opts = {\n suppressMilliseconds: false,\n suppressSeconds: false,\n includePrefix: false,\n format: \"extended\",\n ...opts,\n includeOffset: false,\n };\n\n const dateTime = DateTime.fromMillis(millis, { zone: \"UTC\" });\n return dateTime.toISOTime(opts);\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in debugging.\n * @return {string}\n */\n toString() {\n return this.toISO();\n }\n\n /**\n * Returns a string representation of this Duration appropriate for the REPL.\n * @return {string}\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n if (this.isValid) {\n return `Duration { values: ${JSON.stringify(this.values)} }`;\n } else {\n return `Duration { Invalid, reason: ${this.invalidReason} }`;\n }\n }\n\n /**\n * Returns an milliseconds value of this Duration.\n * @return {number}\n */\n toMillis() {\n if (!this.isValid) return NaN;\n\n return durationToMillis(this.matrix, this.values);\n }\n\n /**\n * Returns an milliseconds value of this Duration. Alias of {@link toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Make this Duration longer by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n plus(duration) {\n if (!this.isValid) return this;\n\n const dur = Duration.fromDurationLike(duration),\n result = {};\n\n for (const k of orderedUnits) {\n if (hasOwnProperty(dur.values, k) || hasOwnProperty(this.values, k)) {\n result[k] = dur.get(k) + this.get(k);\n }\n }\n\n return clone(this, { values: result }, true);\n }\n\n /**\n * Make this Duration shorter by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n minus(duration) {\n if (!this.isValid) return this;\n\n const dur = Duration.fromDurationLike(duration);\n return this.plus(dur.negate());\n }\n\n /**\n * Scale this Duration by the specified amount. Return a newly-constructed Duration.\n * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number.\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits(x => x * 2) //=> { hours: 2, minutes: 60 }\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits((x, u) => u === \"hours\" ? x * 2 : x) //=> { hours: 2, minutes: 30 }\n * @return {Duration}\n */\n mapUnits(fn) {\n if (!this.isValid) return this;\n const result = {};\n for (const k of Object.keys(this.values)) {\n result[k] = asNumber(fn(this.values[k], k));\n }\n return clone(this, { values: result }, true);\n }\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example Duration.fromObject({years: 2, days: 3}).get('years') //=> 2\n * @example Duration.fromObject({years: 2, days: 3}).get('months') //=> 0\n * @example Duration.fromObject({years: 2, days: 3}).get('days') //=> 3\n * @return {number}\n */\n get(unit) {\n return this[Duration.normalizeUnit(unit)];\n }\n\n /**\n * \"Set\" the values of specified units. Return a newly-constructed Duration.\n * @param {Object} values - a mapping of units to numbers\n * @example dur.set({ years: 2017 })\n * @example dur.set({ hours: 8, minutes: 30 })\n * @return {Duration}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const mixed = { ...this.values, ...normalizeObject(values, Duration.normalizeUnit) };\n return clone(this, { values: mixed });\n }\n\n /**\n * \"Set\" the locale and/or numberingSystem. Returns a newly-constructed Duration.\n * @example dur.reconfigure({ locale: 'en-GB' })\n * @return {Duration}\n */\n reconfigure({ locale, numberingSystem, conversionAccuracy, matrix } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem });\n const opts = { loc, matrix, conversionAccuracy };\n return clone(this, opts);\n }\n\n /**\n * Return the length of the duration in the specified unit.\n * @param {string} unit - a unit such as 'minutes' or 'days'\n * @example Duration.fromObject({years: 1}).as('days') //=> 365\n * @example Duration.fromObject({years: 1}).as('months') //=> 12\n * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5\n * @return {number}\n */\n as(unit) {\n return this.isValid ? this.shiftTo(unit).get(unit) : NaN;\n }\n\n /**\n * Reduce this Duration to its canonical representation in its current units.\n * Assuming the overall value of the Duration is positive, this means:\n * - excessive values for lower-order units are converted to higher-order units (if possible, see first and second example)\n * - negative lower-order units are converted to higher order units (there must be such a higher order unit, otherwise\n * the overall value would be negative, see third example)\n * - fractional values for higher-order units are converted to lower-order units (if possible, see fourth example)\n *\n * If the overall value is negative, the result of this method is equivalent to `this.negate().normalize().negate()`.\n * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }\n * @example Duration.fromObject({ days: 5000 }).normalize().toObject() //=> { days: 5000 }\n * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }\n * @example Duration.fromObject({ years: 2.5, days: 0, hours: 0 }).normalize().toObject() //=> { years: 2, days: 182, hours: 12 }\n * @return {Duration}\n */\n normalize() {\n if (!this.isValid) return this;\n const vals = this.toObject();\n normalizeValues(this.matrix, vals);\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Rescale units to its largest representation\n * @example Duration.fromObject({ milliseconds: 90000 }).rescale().toObject() //=> { minutes: 1, seconds: 30 }\n * @return {Duration}\n */\n rescale() {\n if (!this.isValid) return this;\n const vals = removeZeroes(this.normalize().shiftToAll().toObject());\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Convert this Duration into its representation in a different set of units.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 }\n * @return {Duration}\n */\n shiftTo(...units) {\n if (!this.isValid) return this;\n\n if (units.length === 0) {\n return this;\n }\n\n units = units.map((u) => Duration.normalizeUnit(u));\n\n const built = {},\n accumulated = {},\n vals = this.toObject();\n let lastUnit;\n\n for (const k of orderedUnits) {\n if (units.indexOf(k) >= 0) {\n lastUnit = k;\n\n let own = 0;\n\n // anything we haven't boiled down yet should get boiled to this unit\n for (const ak in accumulated) {\n own += this.matrix[ak][k] * accumulated[ak];\n accumulated[ak] = 0;\n }\n\n // plus anything that's already in this unit\n if (isNumber(vals[k])) {\n own += vals[k];\n }\n\n // only keep the integer part for now in the hopes of putting any decimal part\n // into a smaller unit later\n const i = Math.trunc(own);\n built[k] = i;\n accumulated[k] = (own * 1000 - i * 1000) / 1000;\n\n // otherwise, keep it in the wings to boil it later\n } else if (isNumber(vals[k])) {\n accumulated[k] = vals[k];\n }\n }\n\n // anything leftover becomes the decimal for the last unit\n // lastUnit must be defined since units is not empty\n for (const key in accumulated) {\n if (accumulated[key] !== 0) {\n built[lastUnit] +=\n key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key];\n }\n }\n\n normalizeValues(this.matrix, built);\n return clone(this, { values: built }, true);\n }\n\n /**\n * Shift this Duration to all available units.\n * Same as shiftTo(\"years\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", \"seconds\", \"milliseconds\")\n * @return {Duration}\n */\n shiftToAll() {\n if (!this.isValid) return this;\n return this.shiftTo(\n \"years\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\"\n );\n }\n\n /**\n * Return the negative of this Duration.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }\n * @return {Duration}\n */\n negate() {\n if (!this.isValid) return this;\n const negated = {};\n for (const k of Object.keys(this.values)) {\n negated[k] = this.values[k] === 0 ? 0 : -this.values[k];\n }\n return clone(this, { values: negated }, true);\n }\n\n /**\n * Removes all units with values equal to 0 from this Duration.\n * @example Duration.fromObject({ years: 2, days: 0, hours: 0, minutes: 0 }).removeZeros().toObject() //=> { years: 2 }\n * @return {Duration}\n */\n removeZeros() {\n if (!this.isValid) return this;\n const vals = removeZeroes(this.values);\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Get the years.\n * @type {number}\n */\n get years() {\n return this.isValid ? this.values.years || 0 : NaN;\n }\n\n /**\n * Get the quarters.\n * @type {number}\n */\n get quarters() {\n return this.isValid ? this.values.quarters || 0 : NaN;\n }\n\n /**\n * Get the months.\n * @type {number}\n */\n get months() {\n return this.isValid ? this.values.months || 0 : NaN;\n }\n\n /**\n * Get the weeks\n * @type {number}\n */\n get weeks() {\n return this.isValid ? this.values.weeks || 0 : NaN;\n }\n\n /**\n * Get the days.\n * @type {number}\n */\n get days() {\n return this.isValid ? this.values.days || 0 : NaN;\n }\n\n /**\n * Get the hours.\n * @type {number}\n */\n get hours() {\n return this.isValid ? this.values.hours || 0 : NaN;\n }\n\n /**\n * Get the minutes.\n * @type {number}\n */\n get minutes() {\n return this.isValid ? this.values.minutes || 0 : NaN;\n }\n\n /**\n * Get the seconds.\n * @return {number}\n */\n get seconds() {\n return this.isValid ? this.values.seconds || 0 : NaN;\n }\n\n /**\n * Get the milliseconds.\n * @return {number}\n */\n get milliseconds() {\n return this.isValid ? this.values.milliseconds || 0 : NaN;\n }\n\n /**\n * Returns whether the Duration is invalid. Invalid durations are returned by diff operations\n * on invalid DateTimes or Intervals.\n * @return {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this Duration became invalid, or null if the Duration is valid\n * @return {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Duration became invalid, or null if the Duration is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Equality check\n * Two Durations are equal iff they have the same units and the same values for each unit.\n * @param {Duration} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n if (!this.loc.equals(other.loc)) {\n return false;\n }\n\n function eq(v1, v2) {\n // Consider 0 and undefined as equal\n if (v1 === undefined || v1 === 0) return v2 === undefined || v2 === 0;\n return v1 === v2;\n }\n\n for (const u of orderedUnits) {\n if (!eq(this.values[u], other.values[u])) {\n return false;\n }\n }\n return true;\n }\n}\n","import DateTime, { friendlyDateTime } from \"./datetime.js\";\nimport Duration from \"./duration.js\";\nimport Settings from \"./settings.js\";\nimport { InvalidArgumentError, InvalidIntervalError } from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport * as Formats from \"./impl/formats.js\";\n\nconst INVALID = \"Invalid Interval\";\n\n// checks if the start is equal to or before the end\nfunction validateStartEnd(start, end) {\n if (!start || !start.isValid) {\n return Interval.invalid(\"missing or invalid start\");\n } else if (!end || !end.isValid) {\n return Interval.invalid(\"missing or invalid end\");\n } else if (end < start) {\n return Interval.invalid(\n \"end before start\",\n `The end of an interval must be after its start, but you had start=${start.toISO()} and end=${end.toISO()}`\n );\n } else {\n return null;\n }\n}\n\n/**\n * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them.\n *\n * Here is a brief overview of the most commonly used methods and getters in Interval:\n *\n * * **Creation** To create an Interval, use {@link Interval.fromDateTimes}, {@link Interval.after}, {@link Interval.before}, or {@link Interval.fromISO}.\n * * **Accessors** Use {@link Interval#start} and {@link Interval#end} to get the start and end.\n * * **Interrogation** To analyze the Interval, use {@link Interval#count}, {@link Interval#length}, {@link Interval#hasSame}, {@link Interval#contains}, {@link Interval#isAfter}, or {@link Interval#isBefore}.\n * * **Transformation** To create other Intervals out of this one, use {@link Interval#set}, {@link Interval#splitAt}, {@link Interval#splitBy}, {@link Interval#divideEqually}, {@link Interval.merge}, {@link Interval.xor}, {@link Interval#union}, {@link Interval#intersection}, or {@link Interval#difference}.\n * * **Comparison** To compare this Interval to another one, use {@link Interval#equals}, {@link Interval#overlaps}, {@link Interval#abutsStart}, {@link Interval#abutsEnd}, {@link Interval#engulfs}\n * * **Output** To convert the Interval into other representations, see {@link Interval#toString}, {@link Interval#toLocaleString}, {@link Interval#toISO}, {@link Interval#toISODate}, {@link Interval#toISOTime}, {@link Interval#toFormat}, and {@link Interval#toDuration}.\n */\nexport default class Interval {\n /**\n * @private\n */\n constructor(config) {\n /**\n * @access private\n */\n this.s = config.start;\n /**\n * @access private\n */\n this.e = config.end;\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.isLuxonInterval = true;\n }\n\n /**\n * Create an invalid Interval.\n * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Interval}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Interval is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidIntervalError(invalid);\n } else {\n return new Interval({ invalid });\n }\n }\n\n /**\n * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.\n * @param {DateTime|Date|Object} start\n * @param {DateTime|Date|Object} end\n * @return {Interval}\n */\n static fromDateTimes(start, end) {\n const builtStart = friendlyDateTime(start),\n builtEnd = friendlyDateTime(end);\n\n const validateError = validateStartEnd(builtStart, builtEnd);\n\n if (validateError == null) {\n return new Interval({\n start: builtStart,\n end: builtEnd,\n });\n } else {\n return validateError;\n }\n }\n\n /**\n * Create an Interval from a start DateTime and a Duration to extend to.\n * @param {DateTime|Date|Object} start\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static after(start, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(start);\n return Interval.fromDateTimes(dt, dt.plus(dur));\n }\n\n /**\n * Create an Interval from an end DateTime and a Duration to extend backwards to.\n * @param {DateTime|Date|Object} end\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static before(end, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(end);\n return Interval.fromDateTimes(dt.minus(dur), dt);\n }\n\n /**\n * Create an Interval from an ISO 8601 string.\n * Accepts `<start>/<end>`, `<start>/<duration>`, and `<duration>/<end>` formats.\n * @param {string} text - the ISO string to parse\n * @param {Object} [opts] - options to pass {@link DateTime#fromISO} and optionally {@link Duration#fromISO}\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {Interval}\n */\n static fromISO(text, opts) {\n const [s, e] = (text || \"\").split(\"/\", 2);\n if (s && e) {\n let start, startIsValid;\n try {\n start = DateTime.fromISO(s, opts);\n startIsValid = start.isValid;\n } catch (e) {\n startIsValid = false;\n }\n\n let end, endIsValid;\n try {\n end = DateTime.fromISO(e, opts);\n endIsValid = end.isValid;\n } catch (e) {\n endIsValid = false;\n }\n\n if (startIsValid && endIsValid) {\n return Interval.fromDateTimes(start, end);\n }\n\n if (startIsValid) {\n const dur = Duration.fromISO(e, opts);\n if (dur.isValid) {\n return Interval.after(start, dur);\n }\n } else if (endIsValid) {\n const dur = Duration.fromISO(s, opts);\n if (dur.isValid) {\n return Interval.before(end, dur);\n }\n }\n }\n return Interval.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n\n /**\n * Check if an object is an Interval. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isInterval(o) {\n return (o && o.isLuxonInterval) || false;\n }\n\n /**\n * Returns the start of the Interval\n * @type {DateTime}\n */\n get start() {\n return this.isValid ? this.s : null;\n }\n\n /**\n * Returns the end of the Interval. This is the first instant which is not part of the interval\n * (Interval is half-open).\n * @type {DateTime}\n */\n get end() {\n return this.isValid ? this.e : null;\n }\n\n /**\n * Returns the last DateTime included in the interval (since end is not part of the interval)\n * @type {DateTime}\n */\n get lastDateTime() {\n return this.isValid ? (this.e ? this.e.minus(1) : null) : null;\n }\n\n /**\n * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'.\n * @type {boolean}\n */\n get isValid() {\n return this.invalidReason === null;\n }\n\n /**\n * Returns an error code if this Interval is invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Interval became invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Returns the length of the Interval in the specified unit.\n * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in.\n * @return {number}\n */\n length(unit = \"milliseconds\") {\n return this.isValid ? this.toDuration(...[unit]).get(unit) : NaN;\n }\n\n /**\n * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part.\n * Unlike {@link Interval#length} this counts sections of the calendar, not periods of time, e.g. specifying 'day'\n * asks 'what dates are included in this interval?', not 'how many days long is this interval?'\n * @param {string} [unit='milliseconds'] - the unit of time to count.\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week; this operation will always use the locale of the start DateTime\n * @return {number}\n */\n count(unit = \"milliseconds\", opts) {\n if (!this.isValid) return NaN;\n const start = this.start.startOf(unit, opts);\n let end;\n if (opts?.useLocaleWeeks) {\n end = this.end.reconfigure({ locale: start.locale });\n } else {\n end = this.end;\n }\n end = end.startOf(unit, opts);\n return Math.floor(end.diff(start, unit).get(unit)) + (end.valueOf() !== this.end.valueOf());\n }\n\n /**\n * Returns whether this Interval's start and end are both in the same unit of time\n * @param {string} unit - the unit of time to check sameness on\n * @return {boolean}\n */\n hasSame(unit) {\n return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false;\n }\n\n /**\n * Return whether this Interval has the same start and end DateTimes.\n * @return {boolean}\n */\n isEmpty() {\n return this.s.valueOf() === this.e.valueOf();\n }\n\n /**\n * Return whether this Interval's start is after the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isAfter(dateTime) {\n if (!this.isValid) return false;\n return this.s > dateTime;\n }\n\n /**\n * Return whether this Interval's end is before the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isBefore(dateTime) {\n if (!this.isValid) return false;\n return this.e <= dateTime;\n }\n\n /**\n * Return whether this Interval contains the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n contains(dateTime) {\n if (!this.isValid) return false;\n return this.s <= dateTime && this.e > dateTime;\n }\n\n /**\n * \"Sets\" the start and/or end dates. Returns a newly-constructed Interval.\n * @param {Object} values - the values to set\n * @param {DateTime} values.start - the starting DateTime\n * @param {DateTime} values.end - the ending DateTime\n * @return {Interval}\n */\n set({ start, end } = {}) {\n if (!this.isValid) return this;\n return Interval.fromDateTimes(start || this.s, end || this.e);\n }\n\n /**\n * Split this Interval at each of the specified DateTimes\n * @param {...DateTime} dateTimes - the unit of time to count.\n * @return {Array}\n */\n splitAt(...dateTimes) {\n if (!this.isValid) return [];\n const sorted = dateTimes\n .map(friendlyDateTime)\n .filter((d) => this.contains(d))\n .sort((a, b) => a.toMillis() - b.toMillis()),\n results = [];\n let { s } = this,\n i = 0;\n\n while (s < this.e) {\n const added = sorted[i] || this.e,\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n i += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into smaller Intervals, each of the specified length.\n * Left over time is grouped into a smaller interval\n * @param {Duration|Object|number} duration - The length of each resulting interval.\n * @return {Array}\n */\n splitBy(duration) {\n const dur = Duration.fromDurationLike(duration);\n\n if (!this.isValid || !dur.isValid || dur.as(\"milliseconds\") === 0) {\n return [];\n }\n\n let { s } = this,\n idx = 1,\n next;\n\n const results = [];\n while (s < this.e) {\n const added = this.start.plus(dur.mapUnits((x) => x * idx));\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n idx += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into the specified number of smaller intervals.\n * @param {number} numberOfParts - The number of Intervals to divide the Interval into.\n * @return {Array}\n */\n divideEqually(numberOfParts) {\n if (!this.isValid) return [];\n return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts);\n }\n\n /**\n * Return whether this Interval overlaps with the specified Interval\n * @param {Interval} other\n * @return {boolean}\n */\n overlaps(other) {\n return this.e > other.s && this.s < other.e;\n }\n\n /**\n * Return whether this Interval's end is adjacent to the specified Interval's start.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsStart(other) {\n if (!this.isValid) return false;\n return +this.e === +other.s;\n }\n\n /**\n * Return whether this Interval's start is adjacent to the specified Interval's end.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsEnd(other) {\n if (!this.isValid) return false;\n return +other.e === +this.s;\n }\n\n /**\n * Returns true if this Interval fully contains the specified Interval, specifically if the intersect (of this Interval and the other Interval) is equal to the other Interval; false otherwise.\n * @param {Interval} other\n * @return {boolean}\n */\n engulfs(other) {\n if (!this.isValid) return false;\n return this.s <= other.s && this.e >= other.e;\n }\n\n /**\n * Return whether this Interval has the same start and end as the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n return this.s.equals(other.s) && this.e.equals(other.e);\n }\n\n /**\n * Return an Interval representing the intersection of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals.\n * Returns null if the intersection is empty, meaning, the intervals don't intersect.\n * @param {Interval} other\n * @return {Interval}\n */\n intersection(other) {\n if (!this.isValid) return this;\n const s = this.s > other.s ? this.s : other.s,\n e = this.e < other.e ? this.e : other.e;\n\n if (s >= e) {\n return null;\n } else {\n return Interval.fromDateTimes(s, e);\n }\n }\n\n /**\n * Return an Interval representing the union of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.\n * @param {Interval} other\n * @return {Interval}\n */\n union(other) {\n if (!this.isValid) return this;\n const s = this.s < other.s ? this.s : other.s,\n e = this.e > other.e ? this.e : other.e;\n return Interval.fromDateTimes(s, e);\n }\n\n /**\n * Merge an array of Intervals into an equivalent minimal set of Intervals.\n * Combines overlapping and adjacent Intervals.\n * The resulting array will contain the Intervals in ascending order, that is, starting with the earliest Interval\n * and ending with the latest.\n *\n * @param {Array} intervals\n * @return {Array}\n */\n static merge(intervals) {\n const [found, final] = intervals\n .sort((a, b) => a.s - b.s)\n .reduce(\n ([sofar, current], item) => {\n if (!current) {\n return [sofar, item];\n } else if (current.overlaps(item) || current.abutsStart(item)) {\n return [sofar, current.union(item)];\n } else {\n return [sofar.concat([current]), item];\n }\n },\n [[], null]\n );\n if (final) {\n found.push(final);\n }\n return found;\n }\n\n /**\n * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals.\n * @param {Array} intervals\n * @return {Array}\n */\n static xor(intervals) {\n let start = null,\n currentCount = 0;\n const results = [],\n ends = intervals.map((i) => [\n { time: i.s, type: \"s\" },\n { time: i.e, type: \"e\" },\n ]),\n flattened = Array.prototype.concat(...ends),\n arr = flattened.sort((a, b) => a.time - b.time);\n\n for (const i of arr) {\n currentCount += i.type === \"s\" ? 1 : -1;\n\n if (currentCount === 1) {\n start = i.time;\n } else {\n if (start && +start !== +i.time) {\n results.push(Interval.fromDateTimes(start, i.time));\n }\n\n start = null;\n }\n }\n\n return Interval.merge(results);\n }\n\n /**\n * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals.\n * @param {...Interval} intervals\n * @return {Array}\n */\n difference(...intervals) {\n return Interval.xor([this].concat(intervals))\n .map((i) => this.intersection(i))\n .filter((i) => i && !i.isEmpty());\n }\n\n /**\n * Returns a string representation of this Interval appropriate for debugging.\n * @return {string}\n */\n toString() {\n if (!this.isValid) return INVALID;\n return `[${this.s.toISO()} – ${this.e.toISO()})`;\n }\n\n /**\n * Returns a string representation of this Interval appropriate for the REPL.\n * @return {string}\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n if (this.isValid) {\n return `Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`;\n } else {\n return `Interval { Invalid, reason: ${this.invalidReason} }`;\n }\n }\n\n /**\n * Returns a localized string representing this Interval. Accepts the same options as the\n * Intl.DateTimeFormat constructor and any presets defined by Luxon, such as\n * {@link DateTime.DATE_FULL} or {@link DateTime.TIME_SIMPLE}. The exact behavior of this method\n * is browser-specific, but in general it will return an appropriate representation of the\n * Interval in the assigned locale. Defaults to the system's locale if no locale has been\n * specified.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {Object} [formatOpts=DateTime.DATE_SHORT] - Either a DateTime preset or\n * Intl.DateTimeFormat constructor options.\n * @param {Object} opts - Options to override the configuration of the start DateTime.\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(); //=> 11/7/2022 – 11/8/2022\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL); //=> November 7 – 8, 2022\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL, { locale: 'fr-FR' }); //=> 7–8 novembre 2022\n * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString(DateTime.TIME_SIMPLE); //=> 6:00 – 8:00 PM\n * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> Mon, Nov 07, 6:00 – 8:00 p\n * @return {string}\n */\n toLocaleString(formatOpts = Formats.DATE_SHORT, opts = {}) {\n return this.isValid\n ? Formatter.create(this.s.loc.clone(opts), formatOpts).formatInterval(this)\n : INVALID;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Interval.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime#toISO}\n * @return {string}\n */\n toISO(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISO(opts)}/${this.e.toISO(opts)}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of date of this Interval.\n * The time components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {string}\n */\n toISODate() {\n if (!this.isValid) return INVALID;\n return `${this.s.toISODate()}/${this.e.toISODate()}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of time of this Interval.\n * The date components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime#toISO}\n * @return {string}\n */\n toISOTime(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISOTime(opts)}/${this.e.toISOTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this Interval formatted according to the specified format\n * string. **You may not want this.** See {@link Interval#toLocaleString} for a more flexible\n * formatting tool.\n * @param {string} dateFormat - The format string. This string formats the start and end time.\n * See {@link DateTime#toFormat} for details.\n * @param {Object} opts - Options.\n * @param {string} [opts.separator = ' – '] - A separator to place between the start and end\n * representations.\n * @return {string}\n */\n toFormat(dateFormat, { separator = \" – \" } = {}) {\n if (!this.isValid) return INVALID;\n return `${this.s.toFormat(dateFormat)}${separator}${this.e.toFormat(dateFormat)}`;\n }\n\n /**\n * Return a Duration representing the time spanned by this interval.\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 }\n * @return {Duration}\n */\n toDuration(unit, opts) {\n if (!this.isValid) {\n return Duration.invalid(this.invalidReason);\n }\n return this.e.diff(this.s, unit, opts);\n }\n\n /**\n * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes\n * @param {function} mapFn\n * @return {Interval}\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC())\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 }))\n */\n mapEndpoints(mapFn) {\n return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e));\n }\n}\n","import DateTime from \"./datetime.js\";\nimport Settings from \"./settings.js\";\nimport Locale from \"./impl/locale.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\n\nimport { hasLocaleWeekInfo, hasRelative } from \"./impl/util.js\";\n\n/**\n * The Info class contains static methods for retrieving general time and date related data. For example, it has methods for finding out if a time zone has a DST, for listing the months in any supported locale, and for discovering which of Luxon features are available in the current environment.\n */\nexport default class Info {\n /**\n * Return whether the specified zone contains a DST.\n * @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone.\n * @return {boolean}\n */\n static hasDST(zone = Settings.defaultZone) {\n const proto = DateTime.now().setZone(zone).set({ month: 12 });\n\n return !zone.isUniversal && proto.offset !== proto.set({ month: 6 }).offset;\n }\n\n /**\n * Return whether the specified zone is a valid IANA specifier.\n * @param {string} zone - Zone to check\n * @return {boolean}\n */\n static isValidIANAZone(zone) {\n return IANAZone.isValidZone(zone);\n }\n\n /**\n * Converts the input into a {@link Zone} instance.\n *\n * * If `input` is already a Zone instance, it is returned unchanged.\n * * If `input` is a string containing a valid time zone name, a Zone instance\n * with that name is returned.\n * * If `input` is a string that doesn't refer to a known time zone, a Zone\n * instance with {@link Zone#isValid} == false is returned.\n * * If `input is a number, a Zone instance with the specified fixed offset\n * in minutes is returned.\n * * If `input` is `null` or `undefined`, the default zone is returned.\n * @param {string|Zone|number} [input] - the value to be converted\n * @return {Zone}\n */\n static normalizeZone(input) {\n return normalizeZone(input, Settings.defaultZone);\n }\n\n /**\n * Get the weekday on which the week starts according to the given locale.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @returns {number} the start of the week, 1 for Monday through 7 for Sunday\n */\n static getStartOfWeek({ locale = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale)).getStartOfWeek();\n }\n\n /**\n * Get the minimum number of days necessary in a week before it is considered part of the next year according\n * to the given locale.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @returns {number}\n */\n static getMinimumDaysInFirstWeek({ locale = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale)).getMinDaysInFirstWeek();\n }\n\n /**\n * Get the weekdays, which are considered the weekend according to the given locale\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @returns {number[]} an array of weekdays, 1 for Monday through 7 for Sunday\n */\n static getWeekendWeekdays({ locale = null, locObj = null } = {}) {\n // copy the array, because we cache it internally\n return (locObj || Locale.create(locale)).getWeekendDays().slice();\n }\n\n /**\n * Return an array of standalone month names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @example Info.months()[0] //=> 'January'\n * @example Info.months('short')[0] //=> 'Jan'\n * @example Info.months('numeric')[0] //=> '1'\n * @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.'\n * @example Info.months('numeric', { locale: 'ar' })[0] //=> '١'\n * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'Rabiʻ I'\n * @return {Array}\n */\n static months(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length);\n }\n\n /**\n * Return an array of format month names.\n * Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that\n * changes the string.\n * See {@link Info#months}\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @return {Array}\n */\n static monthsFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length, true);\n }\n\n /**\n * Return an array of standalone week names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the weekday representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @example Info.weekdays()[0] //=> 'Monday'\n * @example Info.weekdays('short')[0] //=> 'Mon'\n * @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.'\n * @example Info.weekdays('short', { locale: 'ar' })[0] //=> 'الاثنين'\n * @return {Array}\n */\n static weekdays(length = \"long\", { locale = null, numberingSystem = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length);\n }\n\n /**\n * Return an array of format week names.\n * Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that\n * changes the string.\n * See {@link Info#weekdays}\n * @param {string} [length='long'] - the length of the month representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale=null] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @return {Array}\n */\n static weekdaysFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length, true);\n }\n\n /**\n * Return an array of meridiems.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.meridiems() //=> [ 'AM', 'PM' ]\n * @example Info.meridiems({ locale: 'my' }) //=> [ 'နံနက်', 'ညနေ' ]\n * @return {Array}\n */\n static meridiems({ locale = null } = {}) {\n return Locale.create(locale).meridiems();\n }\n\n /**\n * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian.\n * @param {string} [length='short'] - the length of the era representation, such as \"short\" or \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.eras() //=> [ 'BC', 'AD' ]\n * @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ]\n * @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant Jésus-Christ', 'après Jésus-Christ' ]\n * @return {Array}\n */\n static eras(length = \"short\", { locale = null } = {}) {\n return Locale.create(locale, null, \"gregory\").eras(length);\n }\n\n /**\n * Return the set of available features in this environment.\n * Some features of Luxon are not available in all environments. For example, on older browsers, relative time formatting support is not available. Use this function to figure out if that's the case.\n * Keys:\n * * `relative`: whether this environment supports relative time formatting\n * * `localeWeek`: whether this environment supports different weekdays for the start of the week based on the locale\n * @example Info.features() //=> { relative: false, localeWeek: true }\n * @return {Object}\n */\n static features() {\n return { relative: hasRelative(), localeWeek: hasLocaleWeekInfo() };\n }\n}\n","import Duration from \"../duration.js\";\n\nfunction dayDiff(earlier, later) {\n const utcDayStart = (dt) => dt.toUTC(0, { keepLocalTime: true }).startOf(\"day\").valueOf(),\n ms = utcDayStart(later) - utcDayStart(earlier);\n return Math.floor(Duration.fromMillis(ms).as(\"days\"));\n}\n\nfunction highOrderDiffs(cursor, later, units) {\n const differs = [\n [\"years\", (a, b) => b.year - a.year],\n [\"quarters\", (a, b) => b.quarter - a.quarter + (b.year - a.year) * 4],\n [\"months\", (a, b) => b.month - a.month + (b.year - a.year) * 12],\n [\n \"weeks\",\n (a, b) => {\n const days = dayDiff(a, b);\n return (days - (days % 7)) / 7;\n },\n ],\n [\"days\", dayDiff],\n ];\n\n const results = {};\n const earlier = cursor;\n let lowestOrder, highWater;\n\n /* This loop tries to diff using larger units first.\n If we overshoot, we backtrack and try the next smaller unit.\n \"cursor\" starts out at the earlier timestamp and moves closer and closer to \"later\"\n as we use smaller and smaller units.\n highWater keeps track of where we would be if we added one more of the smallest unit,\n this is used later to potentially convert any difference smaller than the smallest higher order unit\n into a fraction of that smallest higher order unit\n */\n for (const [unit, differ] of differs) {\n if (units.indexOf(unit) >= 0) {\n lowestOrder = unit;\n\n results[unit] = differ(cursor, later);\n highWater = earlier.plus(results);\n\n if (highWater > later) {\n // we overshot the end point, backtrack cursor by 1\n results[unit]--;\n cursor = earlier.plus(results);\n\n // if we are still overshooting now, we need to backtrack again\n // this happens in certain situations when diffing times in different zones,\n // because this calculation ignores time zones\n if (cursor > later) {\n // keep the \"overshot by 1\" around as highWater\n highWater = cursor;\n // backtrack cursor by 1\n results[unit]--;\n cursor = earlier.plus(results);\n }\n } else {\n cursor = highWater;\n }\n }\n }\n\n return [cursor, results, highWater, lowestOrder];\n}\n\nexport default function (earlier, later, units, opts) {\n let [cursor, results, highWater, lowestOrder] = highOrderDiffs(earlier, later, units);\n\n const remainingMillis = later - cursor;\n\n const lowerOrderUnits = units.filter(\n (u) => [\"hours\", \"minutes\", \"seconds\", \"milliseconds\"].indexOf(u) >= 0\n );\n\n if (lowerOrderUnits.length === 0) {\n if (highWater < later) {\n highWater = cursor.plus({ [lowestOrder]: 1 });\n }\n\n if (highWater !== cursor) {\n results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor);\n }\n }\n\n const duration = Duration.fromObject(results, opts);\n\n if (lowerOrderUnits.length > 0) {\n return Duration.fromMillis(remainingMillis, opts)\n .shiftTo(...lowerOrderUnits)\n .plus(duration);\n } else {\n return duration;\n }\n}\n","import { parseMillis, isUndefined, untruncateYear, signedOffset, hasOwnProperty } from \"./util.js\";\nimport Formatter from \"./formatter.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport DateTime from \"../datetime.js\";\nimport { digitRegex, parseDigits } from \"./digits.js\";\nimport { ConflictingSpecificationError } from \"../errors.js\";\n\nconst MISSING_FTP = \"missing Intl.DateTimeFormat.formatToParts support\";\n\nfunction intUnit(regex, post = (i) => i) {\n return { regex, deser: ([s]) => post(parseDigits(s)) };\n}\n\nconst NBSP = String.fromCharCode(160);\nconst spaceOrNBSP = `[ ${NBSP}]`;\nconst spaceOrNBSPRegExp = new RegExp(spaceOrNBSP, \"g\");\n\nfunction fixListRegex(s) {\n // make dots optional and also make them literal\n // make space and non breakable space characters interchangeable\n return s.replace(/\\./g, \"\\\\.?\").replace(spaceOrNBSPRegExp, spaceOrNBSP);\n}\n\nfunction stripInsensitivities(s) {\n return s\n .replace(/\\./g, \"\") // ignore dots that were made optional\n .replace(spaceOrNBSPRegExp, \" \") // interchange space and nbsp\n .toLowerCase();\n}\n\nfunction oneOf(strings, startIndex) {\n if (strings === null) {\n return null;\n } else {\n return {\n regex: RegExp(strings.map(fixListRegex).join(\"|\")),\n deser: ([s]) =>\n strings.findIndex((i) => stripInsensitivities(s) === stripInsensitivities(i)) + startIndex,\n };\n }\n}\n\nfunction offset(regex, groups) {\n return { regex, deser: ([, h, m]) => signedOffset(h, m), groups };\n}\n\nfunction simple(regex) {\n return { regex, deser: ([s]) => s };\n}\n\nfunction escapeToken(value) {\n return value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n}\n\n/**\n * @param token\n * @param {Locale} loc\n */\nfunction unitForToken(token, loc) {\n const one = digitRegex(loc),\n two = digitRegex(loc, \"{2}\"),\n three = digitRegex(loc, \"{3}\"),\n four = digitRegex(loc, \"{4}\"),\n six = digitRegex(loc, \"{6}\"),\n oneOrTwo = digitRegex(loc, \"{1,2}\"),\n oneToThree = digitRegex(loc, \"{1,3}\"),\n oneToSix = digitRegex(loc, \"{1,6}\"),\n oneToNine = digitRegex(loc, \"{1,9}\"),\n twoToFour = digitRegex(loc, \"{2,4}\"),\n fourToSix = digitRegex(loc, \"{4,6}\"),\n literal = (t) => ({ regex: RegExp(escapeToken(t.val)), deser: ([s]) => s, literal: true }),\n unitate = (t) => {\n if (token.literal) {\n return literal(t);\n }\n switch (t.val) {\n // era\n case \"G\":\n return oneOf(loc.eras(\"short\"), 0);\n case \"GG\":\n return oneOf(loc.eras(\"long\"), 0);\n // years\n case \"y\":\n return intUnit(oneToSix);\n case \"yy\":\n return intUnit(twoToFour, untruncateYear);\n case \"yyyy\":\n return intUnit(four);\n case \"yyyyy\":\n return intUnit(fourToSix);\n case \"yyyyyy\":\n return intUnit(six);\n // months\n case \"M\":\n return intUnit(oneOrTwo);\n case \"MM\":\n return intUnit(two);\n case \"MMM\":\n return oneOf(loc.months(\"short\", true), 1);\n case \"MMMM\":\n return oneOf(loc.months(\"long\", true), 1);\n case \"L\":\n return intUnit(oneOrTwo);\n case \"LL\":\n return intUnit(two);\n case \"LLL\":\n return oneOf(loc.months(\"short\", false), 1);\n case \"LLLL\":\n return oneOf(loc.months(\"long\", false), 1);\n // dates\n case \"d\":\n return intUnit(oneOrTwo);\n case \"dd\":\n return intUnit(two);\n // ordinals\n case \"o\":\n return intUnit(oneToThree);\n case \"ooo\":\n return intUnit(three);\n // time\n case \"HH\":\n return intUnit(two);\n case \"H\":\n return intUnit(oneOrTwo);\n case \"hh\":\n return intUnit(two);\n case \"h\":\n return intUnit(oneOrTwo);\n case \"mm\":\n return intUnit(two);\n case \"m\":\n return intUnit(oneOrTwo);\n case \"q\":\n return intUnit(oneOrTwo);\n case \"qq\":\n return intUnit(two);\n case \"s\":\n return intUnit(oneOrTwo);\n case \"ss\":\n return intUnit(two);\n case \"S\":\n return intUnit(oneToThree);\n case \"SSS\":\n return intUnit(three);\n case \"u\":\n return simple(oneToNine);\n case \"uu\":\n return simple(oneOrTwo);\n case \"uuu\":\n return intUnit(one);\n // meridiem\n case \"a\":\n return oneOf(loc.meridiems(), 0);\n // weekYear (k)\n case \"kkkk\":\n return intUnit(four);\n case \"kk\":\n return intUnit(twoToFour, untruncateYear);\n // weekNumber (W)\n case \"W\":\n return intUnit(oneOrTwo);\n case \"WW\":\n return intUnit(two);\n // weekdays\n case \"E\":\n case \"c\":\n return intUnit(one);\n case \"EEE\":\n return oneOf(loc.weekdays(\"short\", false), 1);\n case \"EEEE\":\n return oneOf(loc.weekdays(\"long\", false), 1);\n case \"ccc\":\n return oneOf(loc.weekdays(\"short\", true), 1);\n case \"cccc\":\n return oneOf(loc.weekdays(\"long\", true), 1);\n // offset/zone\n case \"Z\":\n case \"ZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(?::(${two.source}))?`), 2);\n case \"ZZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(${two.source})?`), 2);\n // we don't support ZZZZ (PST) or ZZZZZ (Pacific Standard Time) in parsing\n // because we don't have any way to figure out what they are\n case \"z\":\n return simple(/[a-z_+-/]{1,256}?/i);\n // this special-case \"token\" represents a place where a macro-token expanded into a white-space literal\n // in this case we accept any non-newline white-space\n case \" \":\n return simple(/[^\\S\\n\\r]/);\n default:\n return literal(t);\n }\n };\n\n const unit = unitate(token) || {\n invalidReason: MISSING_FTP,\n };\n\n unit.token = token;\n\n return unit;\n}\n\nconst partTypeStyleToTokenVal = {\n year: {\n \"2-digit\": \"yy\",\n numeric: \"yyyyy\",\n },\n month: {\n numeric: \"M\",\n \"2-digit\": \"MM\",\n short: \"MMM\",\n long: \"MMMM\",\n },\n day: {\n numeric: \"d\",\n \"2-digit\": \"dd\",\n },\n weekday: {\n short: \"EEE\",\n long: \"EEEE\",\n },\n dayperiod: \"a\",\n dayPeriod: \"a\",\n hour12: {\n numeric: \"h\",\n \"2-digit\": \"hh\",\n },\n hour24: {\n numeric: \"H\",\n \"2-digit\": \"HH\",\n },\n minute: {\n numeric: \"m\",\n \"2-digit\": \"mm\",\n },\n second: {\n numeric: \"s\",\n \"2-digit\": \"ss\",\n },\n timeZoneName: {\n long: \"ZZZZZ\",\n short: \"ZZZ\",\n },\n};\n\nfunction tokenForPart(part, formatOpts, resolvedOpts) {\n const { type, value } = part;\n\n if (type === \"literal\") {\n const isSpace = /^\\s+$/.test(value);\n return {\n literal: !isSpace,\n val: isSpace ? \" \" : value,\n };\n }\n\n const style = formatOpts[type];\n\n // The user might have explicitly specified hour12 or hourCycle\n // if so, respect their decision\n // if not, refer back to the resolvedOpts, which are based on the locale\n let actualType = type;\n if (type === \"hour\") {\n if (formatOpts.hour12 != null) {\n actualType = formatOpts.hour12 ? \"hour12\" : \"hour24\";\n } else if (formatOpts.hourCycle != null) {\n if (formatOpts.hourCycle === \"h11\" || formatOpts.hourCycle === \"h12\") {\n actualType = \"hour12\";\n } else {\n actualType = \"hour24\";\n }\n } else {\n // tokens only differentiate between 24 hours or not,\n // so we do not need to check hourCycle here, which is less supported anyways\n actualType = resolvedOpts.hour12 ? \"hour12\" : \"hour24\";\n }\n }\n let val = partTypeStyleToTokenVal[actualType];\n if (typeof val === \"object\") {\n val = val[style];\n }\n\n if (val) {\n return {\n literal: false,\n val,\n };\n }\n\n return undefined;\n}\n\nfunction buildRegex(units) {\n const re = units.map((u) => u.regex).reduce((f, r) => `${f}(${r.source})`, \"\");\n return [`^${re}$`, units];\n}\n\nfunction match(input, regex, handlers) {\n const matches = input.match(regex);\n\n if (matches) {\n const all = {};\n let matchIndex = 1;\n for (const i in handlers) {\n if (hasOwnProperty(handlers, i)) {\n const h = handlers[i],\n groups = h.groups ? h.groups + 1 : 1;\n if (!h.literal && h.token) {\n all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups));\n }\n matchIndex += groups;\n }\n }\n return [matches, all];\n } else {\n return [matches, {}];\n }\n}\n\nfunction dateTimeFromMatches(matches) {\n const toField = (token) => {\n switch (token) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n case \"H\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"o\":\n return \"ordinal\";\n case \"L\":\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n case \"E\":\n case \"c\":\n return \"weekday\";\n case \"W\":\n return \"weekNumber\";\n case \"k\":\n return \"weekYear\";\n case \"q\":\n return \"quarter\";\n default:\n return null;\n }\n };\n\n let zone = null;\n let specificOffset;\n if (!isUndefined(matches.z)) {\n zone = IANAZone.create(matches.z);\n }\n\n if (!isUndefined(matches.Z)) {\n if (!zone) {\n zone = new FixedOffsetZone(matches.Z);\n }\n specificOffset = matches.Z;\n }\n\n if (!isUndefined(matches.q)) {\n matches.M = (matches.q - 1) * 3 + 1;\n }\n\n if (!isUndefined(matches.h)) {\n if (matches.h < 12 && matches.a === 1) {\n matches.h += 12;\n } else if (matches.h === 12 && matches.a === 0) {\n matches.h = 0;\n }\n }\n\n if (matches.G === 0 && matches.y) {\n matches.y = -matches.y;\n }\n\n if (!isUndefined(matches.u)) {\n matches.S = parseMillis(matches.u);\n }\n\n const vals = Object.keys(matches).reduce((r, k) => {\n const f = toField(k);\n if (f) {\n r[f] = matches[k];\n }\n\n return r;\n }, {});\n\n return [vals, zone, specificOffset];\n}\n\nlet dummyDateTimeCache = null;\n\nfunction getDummyDateTime() {\n if (!dummyDateTimeCache) {\n dummyDateTimeCache = DateTime.fromMillis(1555555555555);\n }\n\n return dummyDateTimeCache;\n}\n\nfunction maybeExpandMacroToken(token, locale) {\n if (token.literal) {\n return token;\n }\n\n const formatOpts = Formatter.macroTokenToFormatOpts(token.val);\n const tokens = formatOptsToTokens(formatOpts, locale);\n\n if (tokens == null || tokens.includes(undefined)) {\n return token;\n }\n\n return tokens;\n}\n\nexport function expandMacroTokens(tokens, locale) {\n return Array.prototype.concat(...tokens.map((t) => maybeExpandMacroToken(t, locale)));\n}\n\n/**\n * @private\n */\n\nexport class TokenParser {\n constructor(locale, format) {\n this.locale = locale;\n this.format = format;\n this.tokens = expandMacroTokens(Formatter.parseFormat(format), locale);\n this.units = this.tokens.map((t) => unitForToken(t, locale));\n this.disqualifyingUnit = this.units.find((t) => t.invalidReason);\n\n if (!this.disqualifyingUnit) {\n const [regexString, handlers] = buildRegex(this.units);\n this.regex = RegExp(regexString, \"i\");\n this.handlers = handlers;\n }\n }\n\n explainFromTokens(input) {\n if (!this.isValid) {\n return { input, tokens: this.tokens, invalidReason: this.invalidReason };\n } else {\n const [rawMatches, matches] = match(input, this.regex, this.handlers),\n [result, zone, specificOffset] = matches\n ? dateTimeFromMatches(matches)\n : [null, null, undefined];\n if (hasOwnProperty(matches, \"a\") && hasOwnProperty(matches, \"H\")) {\n throw new ConflictingSpecificationError(\n \"Can't include meridiem when specifying 24-hour format\"\n );\n }\n return {\n input,\n tokens: this.tokens,\n regex: this.regex,\n rawMatches,\n matches,\n result,\n zone,\n specificOffset,\n };\n }\n }\n\n get isValid() {\n return !this.disqualifyingUnit;\n }\n\n get invalidReason() {\n return this.disqualifyingUnit ? this.disqualifyingUnit.invalidReason : null;\n }\n}\n\nexport function explainFromTokens(locale, input, format) {\n const parser = new TokenParser(locale, format);\n return parser.explainFromTokens(input);\n}\n\nexport function parseFromTokens(locale, input, format) {\n const { result, zone, specificOffset, invalidReason } = explainFromTokens(locale, input, format);\n return [result, zone, specificOffset, invalidReason];\n}\n\nexport function formatOptsToTokens(formatOpts, locale) {\n if (!formatOpts) {\n return null;\n }\n\n const formatter = Formatter.create(locale, formatOpts);\n const df = formatter.dtFormatter(getDummyDateTime());\n const parts = df.formatToParts();\n const resolvedOpts = df.resolvedOptions();\n return parts.map((p) => tokenForPart(p, formatOpts, resolvedOpts));\n}\n","import Duration from \"./duration.js\";\nimport Interval from \"./interval.js\";\nimport Settings from \"./settings.js\";\nimport Info from \"./info.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport FixedOffsetZone from \"./zones/fixedOffsetZone.js\";\nimport Locale from \"./impl/locale.js\";\nimport {\n isUndefined,\n maybeArray,\n isDate,\n isNumber,\n bestBy,\n daysInMonth,\n daysInYear,\n isLeapYear,\n weeksInWeekYear,\n normalizeObject,\n roundTo,\n objToLocalTS,\n padStart,\n} from \"./impl/util.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\nimport diff from \"./impl/diff.js\";\nimport { parseRFC2822Date, parseISODate, parseHTTPDate, parseSQL } from \"./impl/regexParser.js\";\nimport {\n parseFromTokens,\n explainFromTokens,\n formatOptsToTokens,\n expandMacroTokens,\n TokenParser,\n} from \"./impl/tokenParser.js\";\nimport {\n gregorianToWeek,\n weekToGregorian,\n gregorianToOrdinal,\n ordinalToGregorian,\n hasInvalidGregorianData,\n hasInvalidWeekData,\n hasInvalidOrdinalData,\n hasInvalidTimeData,\n usesLocalWeekValues,\n isoWeekdayToLocal,\n} from \"./impl/conversions.js\";\nimport * as Formats from \"./impl/formats.js\";\nimport {\n InvalidArgumentError,\n ConflictingSpecificationError,\n InvalidUnitError,\n InvalidDateTimeError,\n} from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\n\nconst INVALID = \"Invalid DateTime\";\nconst MAX_DATE = 8.64e15;\n\nfunction unsupportedZone(zone) {\n return new Invalid(\"unsupported zone\", `the zone \"${zone.name}\" is not supported`);\n}\n\n// we cache week data on the DT object and this intermediates the cache\n/**\n * @param {DateTime} dt\n */\nfunction possiblyCachedWeekData(dt) {\n if (dt.weekData === null) {\n dt.weekData = gregorianToWeek(dt.c);\n }\n return dt.weekData;\n}\n\n/**\n * @param {DateTime} dt\n */\nfunction possiblyCachedLocalWeekData(dt) {\n if (dt.localWeekData === null) {\n dt.localWeekData = gregorianToWeek(\n dt.c,\n dt.loc.getMinDaysInFirstWeek(),\n dt.loc.getStartOfWeek()\n );\n }\n return dt.localWeekData;\n}\n\n// clone really means, \"make a new object with these modifications\". all \"setters\" really use this\n// to create a new object while only changing some of the properties\nfunction clone(inst, alts) {\n const current = {\n ts: inst.ts,\n zone: inst.zone,\n c: inst.c,\n o: inst.o,\n loc: inst.loc,\n invalid: inst.invalid,\n };\n return new DateTime({ ...current, ...alts, old: current });\n}\n\n// find the right offset a given local time. The o input is our guess, which determines which\n// offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST)\nfunction fixOffset(localTS, o, tz) {\n // Our UTC time is just a guess because our offset is just a guess\n let utcGuess = localTS - o * 60 * 1000;\n\n // Test whether the zone matches the offset for this ts\n const o2 = tz.offset(utcGuess);\n\n // If so, offset didn't change and we're done\n if (o === o2) {\n return [utcGuess, o];\n }\n\n // If not, change the ts by the difference in the offset\n utcGuess -= (o2 - o) * 60 * 1000;\n\n // If that gives us the local time we want, we're done\n const o3 = tz.offset(utcGuess);\n if (o2 === o3) {\n return [utcGuess, o2];\n }\n\n // If it's different, we're in a hole time. The offset has changed, but the we don't adjust the time\n return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];\n}\n\n// convert an epoch timestamp into a calendar object with the given offset\nfunction tsToObj(ts, offset) {\n ts += offset * 60 * 1000;\n\n const d = new Date(ts);\n\n return {\n year: d.getUTCFullYear(),\n month: d.getUTCMonth() + 1,\n day: d.getUTCDate(),\n hour: d.getUTCHours(),\n minute: d.getUTCMinutes(),\n second: d.getUTCSeconds(),\n millisecond: d.getUTCMilliseconds(),\n };\n}\n\n// convert a calendar object to a epoch timestamp\nfunction objToTS(obj, offset, zone) {\n return fixOffset(objToLocalTS(obj), offset, zone);\n}\n\n// create a new DT instance by adding a duration, adjusting for DSTs\nfunction adjustTime(inst, dur) {\n const oPre = inst.o,\n year = inst.c.year + Math.trunc(dur.years),\n month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3,\n c = {\n ...inst.c,\n year,\n month,\n day:\n Math.min(inst.c.day, daysInMonth(year, month)) +\n Math.trunc(dur.days) +\n Math.trunc(dur.weeks) * 7,\n },\n millisToAdd = Duration.fromObject({\n years: dur.years - Math.trunc(dur.years),\n quarters: dur.quarters - Math.trunc(dur.quarters),\n months: dur.months - Math.trunc(dur.months),\n weeks: dur.weeks - Math.trunc(dur.weeks),\n days: dur.days - Math.trunc(dur.days),\n hours: dur.hours,\n minutes: dur.minutes,\n seconds: dur.seconds,\n milliseconds: dur.milliseconds,\n }).as(\"milliseconds\"),\n localTS = objToLocalTS(c);\n\n let [ts, o] = fixOffset(localTS, oPre, inst.zone);\n\n if (millisToAdd !== 0) {\n ts += millisToAdd;\n // that could have changed the offset by going over a DST, but we want to keep the ts the same\n o = inst.zone.offset(ts);\n }\n\n return { ts, o };\n}\n\n// helper useful in turning the results of parsing into real dates\n// by handling the zone options\nfunction parseDataToDateTime(parsed, parsedZone, opts, format, text, specificOffset) {\n const { setZone, zone } = opts;\n if ((parsed && Object.keys(parsed).length !== 0) || parsedZone) {\n const interpretationZone = parsedZone || zone,\n inst = DateTime.fromObject(parsed, {\n ...opts,\n zone: interpretationZone,\n specificOffset,\n });\n return setZone ? inst : inst.setZone(zone);\n } else {\n return DateTime.invalid(\n new Invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ${format}`)\n );\n }\n}\n\n// if you want to output a technical format (e.g. RFC 2822), this helper\n// helps handle the details\nfunction toTechFormat(dt, format, allowZ = true) {\n return dt.isValid\n ? Formatter.create(Locale.create(\"en-US\"), {\n allowZ,\n forceSimple: true,\n }).formatDateTimeFromString(dt, format)\n : null;\n}\n\nfunction toISODate(o, extended, precision) {\n const longFormat = o.c.year > 9999 || o.c.year < 0;\n let c = \"\";\n if (longFormat && o.c.year >= 0) c += \"+\";\n c += padStart(o.c.year, longFormat ? 6 : 4);\n if (precision === \"year\") return c;\n if (extended) {\n c += \"-\";\n c += padStart(o.c.month);\n if (precision === \"month\") return c;\n c += \"-\";\n } else {\n c += padStart(o.c.month);\n if (precision === \"month\") return c;\n }\n c += padStart(o.c.day);\n return c;\n}\n\nfunction toISOTime(\n o,\n extended,\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone,\n precision\n) {\n let showSeconds = !suppressSeconds || o.c.millisecond !== 0 || o.c.second !== 0,\n c = \"\";\n switch (precision) {\n case \"day\":\n case \"month\":\n case \"year\":\n break;\n default:\n c += padStart(o.c.hour);\n if (precision === \"hour\") break;\n if (extended) {\n c += \":\";\n c += padStart(o.c.minute);\n if (precision === \"minute\") break;\n if (showSeconds) {\n c += \":\";\n c += padStart(o.c.second);\n }\n } else {\n c += padStart(o.c.minute);\n if (precision === \"minute\") break;\n if (showSeconds) {\n c += padStart(o.c.second);\n }\n }\n if (precision === \"second\") break;\n if (showSeconds && (!suppressMilliseconds || o.c.millisecond !== 0)) {\n c += \".\";\n c += padStart(o.c.millisecond, 3);\n }\n }\n\n if (includeOffset) {\n if (o.isOffsetFixed && o.offset === 0 && !extendedZone) {\n c += \"Z\";\n } else if (o.o < 0) {\n c += \"-\";\n c += padStart(Math.trunc(-o.o / 60));\n c += \":\";\n c += padStart(Math.trunc(-o.o % 60));\n } else {\n c += \"+\";\n c += padStart(Math.trunc(o.o / 60));\n c += \":\";\n c += padStart(Math.trunc(o.o % 60));\n }\n }\n\n if (extendedZone) {\n c += \"[\" + o.zone.ianaName + \"]\";\n }\n return c;\n}\n\n// defaults for unspecified units in the supported calendars\nconst defaultUnitValues = {\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n defaultWeekUnitValues = {\n weekNumber: 1,\n weekday: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n defaultOrdinalUnitValues = {\n ordinal: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n };\n\n// Units in the supported calendars, sorted by bigness\nconst orderedUnits = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"millisecond\"],\n orderedWeekUnits = [\n \"weekYear\",\n \"weekNumber\",\n \"weekday\",\n \"hour\",\n \"minute\",\n \"second\",\n \"millisecond\",\n ],\n orderedOrdinalUnits = [\"year\", \"ordinal\", \"hour\", \"minute\", \"second\", \"millisecond\"];\n\n// standardize case and plurality in units\nfunction normalizeUnit(unit) {\n const normalized = {\n year: \"year\",\n years: \"year\",\n month: \"month\",\n months: \"month\",\n day: \"day\",\n days: \"day\",\n hour: \"hour\",\n hours: \"hour\",\n minute: \"minute\",\n minutes: \"minute\",\n quarter: \"quarter\",\n quarters: \"quarter\",\n second: \"second\",\n seconds: \"second\",\n millisecond: \"millisecond\",\n milliseconds: \"millisecond\",\n weekday: \"weekday\",\n weekdays: \"weekday\",\n weeknumber: \"weekNumber\",\n weeksnumber: \"weekNumber\",\n weeknumbers: \"weekNumber\",\n weekyear: \"weekYear\",\n weekyears: \"weekYear\",\n ordinal: \"ordinal\",\n }[unit.toLowerCase()];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n}\n\nfunction normalizeUnitWithLocalWeeks(unit) {\n switch (unit.toLowerCase()) {\n case \"localweekday\":\n case \"localweekdays\":\n return \"localWeekday\";\n case \"localweeknumber\":\n case \"localweeknumbers\":\n return \"localWeekNumber\";\n case \"localweekyear\":\n case \"localweekyears\":\n return \"localWeekYear\";\n default:\n return normalizeUnit(unit);\n }\n}\n\n// cache offsets for zones based on the current timestamp when this function is\n// first called. When we are handling a datetime from components like (year,\n// month, day, hour) in a time zone, we need a guess about what the timezone\n// offset is so that we can convert into a UTC timestamp. One way is to find the\n// offset of now in the zone. The actual date may have a different offset (for\n// example, if we handle a date in June while we're in December in a zone that\n// observes DST), but we can check and adjust that.\n//\n// When handling many dates, calculating the offset for now every time is\n// expensive. It's just a guess, so we can cache the offset to use even if we\n// are right on a time change boundary (we'll just correct in the other\n// direction). Using a timestamp from first read is a slight optimization for\n// handling dates close to the current date, since those dates will usually be\n// in the same offset (we could set the timestamp statically, instead). We use a\n// single timestamp for all zones to make things a bit more predictable.\n//\n// This is safe for quickDT (used by local() and utc()) because we don't fill in\n// higher-order units from tsNow (as we do in fromObject, this requires that\n// offset is calculated from tsNow).\n/**\n * @param {Zone} zone\n * @return {number}\n */\nfunction guessOffsetForZone(zone) {\n if (zoneOffsetTs === undefined) {\n zoneOffsetTs = Settings.now();\n }\n\n // Do not cache anything but IANA zones, because it is not safe to do so.\n // Guessing an offset which is not present in the zone can cause wrong results from fixOffset\n if (zone.type !== \"iana\") {\n return zone.offset(zoneOffsetTs);\n }\n const zoneName = zone.name;\n let offsetGuess = zoneOffsetGuessCache.get(zoneName);\n if (offsetGuess === undefined) {\n offsetGuess = zone.offset(zoneOffsetTs);\n zoneOffsetGuessCache.set(zoneName, offsetGuess);\n }\n return offsetGuess;\n}\n\n// this is a dumbed down version of fromObject() that runs about 60% faster\n// but doesn't do any validation, makes a bunch of assumptions about what units\n// are present, and so on.\nfunction quickDT(obj, opts) {\n const zone = normalizeZone(opts.zone, Settings.defaultZone);\n if (!zone.isValid) {\n return DateTime.invalid(unsupportedZone(zone));\n }\n\n const loc = Locale.fromObject(opts);\n\n let ts, o;\n\n // assume we have the higher-order units\n if (!isUndefined(obj.year)) {\n for (const u of orderedUnits) {\n if (isUndefined(obj[u])) {\n obj[u] = defaultUnitValues[u];\n }\n }\n\n const invalid = hasInvalidGregorianData(obj) || hasInvalidTimeData(obj);\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n const offsetProvis = guessOffsetForZone(zone);\n [ts, o] = objToTS(obj, offsetProvis, zone);\n } else {\n ts = Settings.now();\n }\n\n return new DateTime({ ts, zone, loc, o });\n}\n\nfunction diffRelative(start, end, opts) {\n const round = isUndefined(opts.round) ? true : opts.round,\n rounding = isUndefined(opts.rounding) ? \"trunc\" : opts.rounding,\n format = (c, unit) => {\n c = roundTo(c, round || opts.calendary ? 0 : 2, opts.calendary ? \"round\" : rounding);\n const formatter = end.loc.clone(opts).relFormatter(opts);\n return formatter.format(c, unit);\n },\n differ = (unit) => {\n if (opts.calendary) {\n if (!end.hasSame(start, unit)) {\n return end.startOf(unit).diff(start.startOf(unit), unit).get(unit);\n } else return 0;\n } else {\n return end.diff(start, unit).get(unit);\n }\n };\n\n if (opts.unit) {\n return format(differ(opts.unit), opts.unit);\n }\n\n for (const unit of opts.units) {\n const count = differ(unit);\n if (Math.abs(count) >= 1) {\n return format(count, unit);\n }\n }\n return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]);\n}\n\nfunction lastOpts(argList) {\n let opts = {},\n args;\n if (argList.length > 0 && typeof argList[argList.length - 1] === \"object\") {\n opts = argList[argList.length - 1];\n args = Array.from(argList).slice(0, argList.length - 1);\n } else {\n args = Array.from(argList);\n }\n return [opts, args];\n}\n\n/**\n * Timestamp to use for cached zone offset guesses (exposed for test)\n */\nlet zoneOffsetTs;\n/**\n * Cache for zone offset guesses (exposed for test).\n *\n * This optimizes quickDT via guessOffsetForZone to avoid repeated calls of\n * zone.offset().\n */\nconst zoneOffsetGuessCache = new Map();\n\n/**\n * A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them.\n *\n * A DateTime comprises of:\n * * A timestamp. Each DateTime instance refers to a specific millisecond of the Unix epoch.\n * * A time zone. Each instance is considered in the context of a specific zone (by default the local system's zone).\n * * Configuration properties that effect how output strings are formatted, such as `locale`, `numberingSystem`, and `outputCalendar`.\n *\n * Here is a brief overview of the most commonly used functionality it provides:\n *\n * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link DateTime.local}, {@link DateTime.utc}, and (most flexibly) {@link DateTime.fromObject}. To create one from a standard string format, use {@link DateTime.fromISO}, {@link DateTime.fromHTTP}, and {@link DateTime.fromRFC2822}. To create one from a custom string format, use {@link DateTime.fromFormat}. To create one from a native JS date, use {@link DateTime.fromJSDate}.\n * * **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link DateTime#toObject}), use the {@link DateTime#year}, {@link DateTime#month},\n * {@link DateTime#day}, {@link DateTime#hour}, {@link DateTime#minute}, {@link DateTime#second}, {@link DateTime#millisecond} accessors.\n * * **Week calendar**: For ISO week calendar attributes, see the {@link DateTime#weekYear}, {@link DateTime#weekNumber}, and {@link DateTime#weekday} accessors.\n * * **Configuration** See the {@link DateTime#locale} and {@link DateTime#numberingSystem} accessors.\n * * **Transformation**: To transform the DateTime into other DateTimes, use {@link DateTime#set}, {@link DateTime#reconfigure}, {@link DateTime#setZone}, {@link DateTime#setLocale}, {@link DateTime.plus}, {@link DateTime#minus}, {@link DateTime#endOf}, {@link DateTime#startOf}, {@link DateTime#toUTC}, and {@link DateTime#toLocal}.\n * * **Output**: To convert the DateTime to other representations, use the {@link DateTime#toRelative}, {@link DateTime#toRelativeCalendar}, {@link DateTime#toJSON}, {@link DateTime#toISO}, {@link DateTime#toHTTP}, {@link DateTime#toObject}, {@link DateTime#toRFC2822}, {@link DateTime#toString}, {@link DateTime#toLocaleString}, {@link DateTime#toFormat}, {@link DateTime#toMillis} and {@link DateTime#toJSDate}.\n *\n * There's plenty others documented below. In addition, for more information on subtler topics like internationalization, time zones, alternative calendars, validity, and so on, see the external documentation.\n */\nexport default class DateTime {\n /**\n * @access private\n */\n constructor(config) {\n const zone = config.zone || Settings.defaultZone;\n\n let invalid =\n config.invalid ||\n (Number.isNaN(config.ts) ? new Invalid(\"invalid input\") : null) ||\n (!zone.isValid ? unsupportedZone(zone) : null);\n /**\n * @access private\n */\n this.ts = isUndefined(config.ts) ? Settings.now() : config.ts;\n\n let c = null,\n o = null;\n if (!invalid) {\n const unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone);\n\n if (unchanged) {\n [c, o] = [config.old.c, config.old.o];\n } else {\n // If an offset has been passed and we have not been called from\n // clone(), we can trust it and avoid the offset calculation.\n const ot = isNumber(config.o) && !config.old ? config.o : zone.offset(this.ts);\n c = tsToObj(this.ts, ot);\n invalid = Number.isNaN(c.year) ? new Invalid(\"invalid input\") : null;\n c = invalid ? null : c;\n o = invalid ? null : ot;\n }\n }\n\n /**\n * @access private\n */\n this._zone = zone;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.invalid = invalid;\n /**\n * @access private\n */\n this.weekData = null;\n /**\n * @access private\n */\n this.localWeekData = null;\n /**\n * @access private\n */\n this.c = c;\n /**\n * @access private\n */\n this.o = o;\n /**\n * @access private\n */\n this.isLuxonDateTime = true;\n }\n\n // CONSTRUCT\n\n /**\n * Create a DateTime for the current instant, in the system's time zone.\n *\n * Use Settings to override these default values if needed.\n * @example DateTime.now().toISO() //~> now in the ISO format\n * @return {DateTime}\n */\n static now() {\n return new DateTime({});\n }\n\n /**\n * Create a local DateTime\n * @param {number} [year] - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month, 1-indexed\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @example DateTime.local() //~> now\n * @example DateTime.local({ zone: \"America/New_York\" }) //~> now, in US east coast time\n * @example DateTime.local(2017) //~> 2017-01-01T00:00:00\n * @example DateTime.local(2017, 3) //~> 2017-03-01T00:00:00\n * @example DateTime.local(2017, 3, 12, { locale: \"fr\" }) //~> 2017-03-12T00:00:00, with a French locale\n * @example DateTime.local(2017, 3, 12, 5) //~> 2017-03-12T05:00:00\n * @example DateTime.local(2017, 3, 12, 5, { zone: \"utc\" }) //~> 2017-03-12T05:00:00, in UTC\n * @example DateTime.local(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00\n * @example DateTime.local(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10\n * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765\n * @return {DateTime}\n */\n static local() {\n const [opts, args] = lastOpts(arguments),\n [year, month, day, hour, minute, second, millisecond] = args;\n return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);\n }\n\n /**\n * Create a DateTime in UTC\n * @param {number} [year] - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @param {Object} options - configuration options for the DateTime\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} [options.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [options.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @param {string} [options.weekSettings] - the week settings to set on the resulting DateTime instance\n * @example DateTime.utc() //~> now\n * @example DateTime.utc(2017) //~> 2017-01-01T00:00:00Z\n * @example DateTime.utc(2017, 3) //~> 2017-03-01T00:00:00Z\n * @example DateTime.utc(2017, 3, 12) //~> 2017-03-12T00:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5) //~> 2017-03-12T05:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, { locale: \"fr\" }) //~> 2017-03-12T05:45:00Z with a French locale\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765, { locale: \"fr\" }) //~> 2017-03-12T05:45:10.765Z with a French locale\n * @return {DateTime}\n */\n static utc() {\n const [opts, args] = lastOpts(arguments),\n [year, month, day, hour, minute, second, millisecond] = args;\n\n opts.zone = FixedOffsetZone.utcInstance;\n return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);\n }\n\n /**\n * Create a DateTime from a JavaScript Date object. Uses the default zone.\n * @param {Date} date - a JavaScript Date object\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @return {DateTime}\n */\n static fromJSDate(date, options = {}) {\n const ts = isDate(date) ? date.valueOf() : NaN;\n if (Number.isNaN(ts)) {\n return DateTime.invalid(\"invalid input\");\n }\n\n const zoneToUse = normalizeZone(options.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n return new DateTime({\n ts: ts,\n zone: zoneToUse,\n loc: Locale.fromObject(options),\n });\n }\n\n /**\n * Create a DateTime from a number of milliseconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} milliseconds - a number of milliseconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @param {string} options.weekSettings - the week settings to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromMillis(milliseconds, options = {}) {\n if (!isNumber(milliseconds)) {\n throw new InvalidArgumentError(\n `fromMillis requires a numerical input, but received a ${typeof milliseconds} with value ${milliseconds}`\n );\n } else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) {\n // this isn't perfect because we can still end up out of range because of additional shifting, but it's a start\n return DateTime.invalid(\"Timestamp out of range\");\n } else {\n return new DateTime({\n ts: milliseconds,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options),\n });\n }\n }\n\n /**\n * Create a DateTime from a number of seconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} seconds - a number of seconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @param {string} options.weekSettings - the week settings to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromSeconds(seconds, options = {}) {\n if (!isNumber(seconds)) {\n throw new InvalidArgumentError(\"fromSeconds requires a numerical input\");\n } else {\n return new DateTime({\n ts: seconds * 1000,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options),\n });\n }\n }\n\n /**\n * Create a DateTime from a JavaScript object with keys like 'year' and 'hour' with reasonable defaults.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.year - a year, such as 1987\n * @param {number} obj.month - a month, 1-12\n * @param {number} obj.day - a day of the month, 1-31, depending on the month\n * @param {number} obj.ordinal - day of the year, 1-365 or 366\n * @param {number} obj.weekYear - an ISO week year\n * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year\n * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday\n * @param {number} obj.localWeekYear - a week year, according to the locale\n * @param {number} obj.localWeekNumber - a week number, between 1 and 52 or 53, depending on the year, according to the locale\n * @param {number} obj.localWeekday - a weekday, 1-7, where 1 is the first and 7 is the last day of the week, according to the locale\n * @param {number} obj.hour - hour of the day, 0-23\n * @param {number} obj.minute - minute of the hour, 0-59\n * @param {number} obj.second - second of the minute, 0-59\n * @param {number} obj.millisecond - millisecond of the second, 0-999\n * @param {Object} opts - options for creating this DateTime\n * @param {string|Zone} [opts.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone()\n * @param {string} [opts.locale='system\\'s locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25'\n * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01'\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'utc' }),\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'local' })\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'America/New_York' })\n * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13'\n * @example DateTime.fromObject({ localWeekYear: 2022, localWeekNumber: 1, localWeekday: 1 }, { locale: \"en-US\" }).toISODate() //=> '2021-12-26'\n * @return {DateTime}\n */\n static fromObject(obj, opts = {}) {\n obj = obj || {};\n const zoneToUse = normalizeZone(opts.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n const loc = Locale.fromObject(opts);\n const normalized = normalizeObject(obj, normalizeUnitWithLocalWeeks);\n const { minDaysInFirstWeek, startOfWeek } = usesLocalWeekValues(normalized, loc);\n\n const tsNow = Settings.now(),\n offsetProvis = !isUndefined(opts.specificOffset)\n ? opts.specificOffset\n : zoneToUse.offset(tsNow),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n\n // cases:\n // just a weekday -> this week's instance of that weekday, no worries\n // (gregorian data or ordinal) + (weekYear or weekNumber) -> error\n // (gregorian month or day) + ordinal -> error\n // otherwise just use weeks or ordinals or gregorian, depending on what's specified\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n const useWeekData = definiteWeekDef || (normalized.weekday && !containsGregor);\n\n // configure ourselves to deal with gregorian dates or week stuff\n let units,\n defaultValues,\n objNow = tsToObj(tsNow, offsetProvis);\n if (useWeekData) {\n units = orderedWeekUnits;\n defaultValues = defaultWeekUnitValues;\n objNow = gregorianToWeek(objNow, minDaysInFirstWeek, startOfWeek);\n } else if (containsOrdinal) {\n units = orderedOrdinalUnits;\n defaultValues = defaultOrdinalUnitValues;\n objNow = gregorianToOrdinal(objNow);\n } else {\n units = orderedUnits;\n defaultValues = defaultUnitValues;\n }\n\n // set default values for missing stuff\n let foundFirst = false;\n for (const u of units) {\n const v = normalized[u];\n if (!isUndefined(v)) {\n foundFirst = true;\n } else if (foundFirst) {\n normalized[u] = defaultValues[u];\n } else {\n normalized[u] = objNow[u];\n }\n }\n\n // make sure the values we have are in range\n const higherOrderInvalid = useWeekData\n ? hasInvalidWeekData(normalized, minDaysInFirstWeek, startOfWeek)\n : containsOrdinal\n ? hasInvalidOrdinalData(normalized)\n : hasInvalidGregorianData(normalized),\n invalid = higherOrderInvalid || hasInvalidTimeData(normalized);\n\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n // compute the actual time\n const gregorian = useWeekData\n ? weekToGregorian(normalized, minDaysInFirstWeek, startOfWeek)\n : containsOrdinal\n ? ordinalToGregorian(normalized)\n : normalized,\n [tsFinal, offsetFinal] = objToTS(gregorian, offsetProvis, zoneToUse),\n inst = new DateTime({\n ts: tsFinal,\n zone: zoneToUse,\n o: offsetFinal,\n loc,\n });\n\n // gregorian data + weekday serves only to validate\n if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) {\n return DateTime.invalid(\n \"mismatched weekday\",\n `you can't specify both a weekday of ${normalized.weekday} and a date of ${inst.toISO()}`\n );\n }\n\n if (!inst.isValid) {\n return DateTime.invalid(inst.invalid);\n }\n\n return inst;\n }\n\n /**\n * Create a DateTime from an ISO 8601 string\n * @param {string} text - the ISO string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} [opts.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [opts.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @param {string} [opts.weekSettings] - the week settings to set on the resulting DateTime instance\n * @example DateTime.fromISO('2016-05-25T09:08:34.123')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})\n * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'})\n * @example DateTime.fromISO('2016-W05-4')\n * @return {DateTime}\n */\n static fromISO(text, opts = {}) {\n const [vals, parsedZone] = parseISODate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"ISO 8601\", text);\n }\n\n /**\n * Create a DateTime from an RFC 2822 string\n * @param {string} text - the RFC 2822 string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT')\n * @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600')\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z')\n * @return {DateTime}\n */\n static fromRFC2822(text, opts = {}) {\n const [vals, parsedZone] = parseRFC2822Date(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"RFC 2822\", text);\n }\n\n /**\n * Create a DateTime from an HTTP header date\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @param {string} text - the HTTP header date\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods.\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sun Nov 6 08:49:37 1994')\n * @return {DateTime}\n */\n static fromHTTP(text, opts = {}) {\n const [vals, parsedZone] = parseHTTPDate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"HTTP\", opts);\n }\n\n /**\n * Create a DateTime from an input string and format string.\n * Defaults to en-US if no locale has been specified, regardless of the system's locale. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/parsing?id=table-of-tokens).\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see the link below for the formats)\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromFormat(text, fmt, opts = {}) {\n if (isUndefined(text) || isUndefined(fmt)) {\n throw new InvalidArgumentError(\"fromFormat requires an input string and a format\");\n }\n\n const { locale = null, numberingSystem = null } = opts,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n }),\n [vals, parsedZone, specificOffset, invalid] = parseFromTokens(localeToUse, text, fmt);\n if (invalid) {\n return DateTime.invalid(invalid);\n } else {\n return parseDataToDateTime(vals, parsedZone, opts, `format ${fmt}`, text, specificOffset);\n }\n }\n\n /**\n * @deprecated use fromFormat instead\n */\n static fromString(text, fmt, opts = {}) {\n return DateTime.fromFormat(text, fmt, opts);\n }\n\n /**\n * Create a DateTime from a SQL date, time, or datetime\n * Defaults to en-US if no locale has been specified, regardless of the system's locale\n * @param {string} text - the string to parse\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @example DateTime.fromSQL('2017-05-15')\n * @example DateTime.fromSQL('2017-05-15 09:12:34')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true })\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' })\n * @example DateTime.fromSQL('09:12:34.342')\n * @return {DateTime}\n */\n static fromSQL(text, opts = {}) {\n const [vals, parsedZone] = parseSQL(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"SQL\", text);\n }\n\n /**\n * Create an invalid DateTime.\n * @param {string} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent.\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {DateTime}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the DateTime is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDateTimeError(invalid);\n } else {\n return new DateTime({ invalid });\n }\n }\n\n /**\n * Check if an object is an instance of DateTime. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDateTime(o) {\n return (o && o.isLuxonDateTime) || false;\n }\n\n /**\n * Produce the format string for a set of options\n * @param formatOpts\n * @param localeOpts\n * @returns {string}\n */\n static parseFormatForOpts(formatOpts, localeOpts = {}) {\n const tokenList = formatOptsToTokens(formatOpts, Locale.fromObject(localeOpts));\n return !tokenList ? null : tokenList.map((t) => (t ? t.val : null)).join(\"\");\n }\n\n /**\n * Produce the the fully expanded format token for the locale\n * Does NOT quote characters, so quoted tokens will not round trip correctly\n * @param fmt\n * @param localeOpts\n * @returns {string}\n */\n static expandFormat(fmt, localeOpts = {}) {\n const expanded = expandMacroTokens(Formatter.parseFormat(fmt), Locale.fromObject(localeOpts));\n return expanded.map((t) => t.val).join(\"\");\n }\n\n static resetCache() {\n zoneOffsetTs = undefined;\n zoneOffsetGuessCache.clear();\n }\n\n // INFO\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example DateTime.local(2017, 7, 4).get('month'); //=> 7\n * @example DateTime.local(2017, 7, 4).get('day'); //=> 4\n * @return {number}\n */\n get(unit) {\n return this[unit];\n }\n\n /**\n * Returns whether the DateTime is valid. Invalid DateTimes occur when:\n * * The DateTime was created from invalid calendar information, such as the 13th month or February 30\n * * The DateTime was created by an operation on another invalid date\n * @type {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this DateTime is invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime\n *\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime\n *\n * @type {string}\n */\n get outputCalendar() {\n return this.isValid ? this.loc.outputCalendar : null;\n }\n\n /**\n * Get the time zone associated with this DateTime.\n * @type {Zone}\n */\n get zone() {\n return this._zone;\n }\n\n /**\n * Get the name of the time zone.\n * @type {string}\n */\n get zoneName() {\n return this.isValid ? this.zone.name : null;\n }\n\n /**\n * Get the year\n * @example DateTime.local(2017, 5, 25).year //=> 2017\n * @type {number}\n */\n get year() {\n return this.isValid ? this.c.year : NaN;\n }\n\n /**\n * Get the quarter\n * @example DateTime.local(2017, 5, 25).quarter //=> 2\n * @type {number}\n */\n get quarter() {\n return this.isValid ? Math.ceil(this.c.month / 3) : NaN;\n }\n\n /**\n * Get the month (1-12).\n * @example DateTime.local(2017, 5, 25).month //=> 5\n * @type {number}\n */\n get month() {\n return this.isValid ? this.c.month : NaN;\n }\n\n /**\n * Get the day of the month (1-30ish).\n * @example DateTime.local(2017, 5, 25).day //=> 25\n * @type {number}\n */\n get day() {\n return this.isValid ? this.c.day : NaN;\n }\n\n /**\n * Get the hour of the day (0-23).\n * @example DateTime.local(2017, 5, 25, 9).hour //=> 9\n * @type {number}\n */\n get hour() {\n return this.isValid ? this.c.hour : NaN;\n }\n\n /**\n * Get the minute of the hour (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30\n * @type {number}\n */\n get minute() {\n return this.isValid ? this.c.minute : NaN;\n }\n\n /**\n * Get the second of the minute (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52\n * @type {number}\n */\n get second() {\n return this.isValid ? this.c.second : NaN;\n }\n\n /**\n * Get the millisecond of the second (0-999).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654\n * @type {number}\n */\n get millisecond() {\n return this.isValid ? this.c.millisecond : NaN;\n }\n\n /**\n * Get the week year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 12, 31).weekYear //=> 2015\n * @type {number}\n */\n get weekYear() {\n return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN;\n }\n\n /**\n * Get the week number of the week year (1-52ish).\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2017, 5, 25).weekNumber //=> 21\n * @type {number}\n */\n get weekNumber() {\n return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN;\n }\n\n /**\n * Get the day of the week.\n * 1 is Monday and 7 is Sunday\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 11, 31).weekday //=> 4\n * @type {number}\n */\n get weekday() {\n return this.isValid ? possiblyCachedWeekData(this).weekday : NaN;\n }\n\n /**\n * Returns true if this date is on a weekend according to the locale, false otherwise\n * @returns {boolean}\n */\n get isWeekend() {\n return this.isValid && this.loc.getWeekendDays().includes(this.weekday);\n }\n\n /**\n * Get the day of the week according to the locale.\n * 1 is the first day of the week and 7 is the last day of the week.\n * If the locale assigns Sunday as the first day of the week, then a date which is a Sunday will return 1,\n * @returns {number}\n */\n get localWeekday() {\n return this.isValid ? possiblyCachedLocalWeekData(this).weekday : NaN;\n }\n\n /**\n * Get the week number of the week year according to the locale. Different locales assign week numbers differently,\n * because the week can start on different days of the week (see localWeekday) and because a different number of days\n * is required for a week to count as the first week of a year.\n * @returns {number}\n */\n get localWeekNumber() {\n return this.isValid ? possiblyCachedLocalWeekData(this).weekNumber : NaN;\n }\n\n /**\n * Get the week year according to the locale. Different locales assign week numbers (and therefor week years)\n * differently, see localWeekNumber.\n * @returns {number}\n */\n get localWeekYear() {\n return this.isValid ? possiblyCachedLocalWeekData(this).weekYear : NaN;\n }\n\n /**\n * Get the ordinal (meaning the day of the year)\n * @example DateTime.local(2017, 5, 25).ordinal //=> 145\n * @type {number|DateTime}\n */\n get ordinal() {\n return this.isValid ? gregorianToOrdinal(this.c).ordinal : NaN;\n }\n\n /**\n * Get the human readable short month name, such as 'Oct'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthShort //=> Oct\n * @type {string}\n */\n get monthShort() {\n return this.isValid ? Info.months(\"short\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable long month name, such as 'October'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthLong //=> October\n * @type {string}\n */\n get monthLong() {\n return this.isValid ? Info.months(\"long\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable short weekday, such as 'Mon'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon\n * @type {string}\n */\n get weekdayShort() {\n return this.isValid ? Info.weekdays(\"short\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the human readable long weekday, such as 'Monday'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday\n * @type {string}\n */\n get weekdayLong() {\n return this.isValid ? Info.weekdays(\"long\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the UTC offset of this DateTime in minutes\n * @example DateTime.now().offset //=> -240\n * @example DateTime.utc().offset //=> 0\n * @type {number}\n */\n get offset() {\n return this.isValid ? +this.o : NaN;\n }\n\n /**\n * Get the short human name for the zone's current offset, for example \"EST\" or \"EDT\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameShort() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"short\",\n locale: this.locale,\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get the long human name for the zone's current offset, for example \"Eastern Standard Time\" or \"Eastern Daylight Time\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameLong() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"long\",\n locale: this.locale,\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get whether this zone's offset ever changes, as in a DST.\n * @type {boolean}\n */\n get isOffsetFixed() {\n return this.isValid ? this.zone.isUniversal : null;\n }\n\n /**\n * Get whether the DateTime is in a DST.\n * @type {boolean}\n */\n get isInDST() {\n if (this.isOffsetFixed) {\n return false;\n } else {\n return (\n this.offset > this.set({ month: 1, day: 1 }).offset ||\n this.offset > this.set({ month: 5 }).offset\n );\n }\n }\n\n /**\n * Get those DateTimes which have the same local time as this DateTime, but a different offset from UTC\n * in this DateTime's zone. During DST changes local time can be ambiguous, for example\n * `2023-10-29T02:30:00` in `Europe/Berlin` can have offset `+01:00` or `+02:00`.\n * This method will return both possible DateTimes if this DateTime's local time is ambiguous.\n * @returns {DateTime[]}\n */\n getPossibleOffsets() {\n if (!this.isValid || this.isOffsetFixed) {\n return [this];\n }\n const dayMs = 86400000;\n const minuteMs = 60000;\n const localTS = objToLocalTS(this.c);\n const oEarlier = this.zone.offset(localTS - dayMs);\n const oLater = this.zone.offset(localTS + dayMs);\n\n const o1 = this.zone.offset(localTS - oEarlier * minuteMs);\n const o2 = this.zone.offset(localTS - oLater * minuteMs);\n if (o1 === o2) {\n return [this];\n }\n const ts1 = localTS - o1 * minuteMs;\n const ts2 = localTS - o2 * minuteMs;\n const c1 = tsToObj(ts1, o1);\n const c2 = tsToObj(ts2, o2);\n if (\n c1.hour === c2.hour &&\n c1.minute === c2.minute &&\n c1.second === c2.second &&\n c1.millisecond === c2.millisecond\n ) {\n return [clone(this, { ts: ts1 }), clone(this, { ts: ts2 })];\n }\n return [this];\n }\n\n /**\n * Returns true if this DateTime is in a leap year, false otherwise\n * @example DateTime.local(2016).isInLeapYear //=> true\n * @example DateTime.local(2013).isInLeapYear //=> false\n * @type {boolean}\n */\n get isInLeapYear() {\n return isLeapYear(this.year);\n }\n\n /**\n * Returns the number of days in this DateTime's month\n * @example DateTime.local(2016, 2).daysInMonth //=> 29\n * @example DateTime.local(2016, 3).daysInMonth //=> 31\n * @type {number}\n */\n get daysInMonth() {\n return daysInMonth(this.year, this.month);\n }\n\n /**\n * Returns the number of days in this DateTime's year\n * @example DateTime.local(2016).daysInYear //=> 366\n * @example DateTime.local(2013).daysInYear //=> 365\n * @type {number}\n */\n get daysInYear() {\n return this.isValid ? daysInYear(this.year) : NaN;\n }\n\n /**\n * Returns the number of weeks in this DateTime's year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2004).weeksInWeekYear //=> 53\n * @example DateTime.local(2013).weeksInWeekYear //=> 52\n * @type {number}\n */\n get weeksInWeekYear() {\n return this.isValid ? weeksInWeekYear(this.weekYear) : NaN;\n }\n\n /**\n * Returns the number of weeks in this DateTime's local week year\n * @example DateTime.local(2020, 6, {locale: 'en-US'}).weeksInLocalWeekYear //=> 52\n * @example DateTime.local(2020, 6, {locale: 'de-DE'}).weeksInLocalWeekYear //=> 53\n * @type {number}\n */\n get weeksInLocalWeekYear() {\n return this.isValid\n ? weeksInWeekYear(\n this.localWeekYear,\n this.loc.getMinDaysInFirstWeek(),\n this.loc.getStartOfWeek()\n )\n : NaN;\n }\n\n /**\n * Returns the resolved Intl options for this DateTime.\n * This is useful in understanding the behavior of formatting methods\n * @param {Object} opts - the same options as toLocaleString\n * @return {Object}\n */\n resolvedLocaleOptions(opts = {}) {\n const { locale, numberingSystem, calendar } = Formatter.create(\n this.loc.clone(opts),\n opts\n ).resolvedOptions(this);\n return { locale, numberingSystem, outputCalendar: calendar };\n }\n\n // TRANSFORM\n\n /**\n * \"Set\" the DateTime's zone to UTC. Returns a newly-constructed DateTime.\n *\n * Equivalent to {@link DateTime#setZone}('utc')\n * @param {number} [offset=0] - optionally, an offset from UTC in minutes\n * @param {Object} [opts={}] - options to pass to `setZone()`\n * @return {DateTime}\n */\n toUTC(offset = 0, opts = {}) {\n return this.setZone(FixedOffsetZone.instance(offset), opts);\n }\n\n /**\n * \"Set\" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime.\n *\n * Equivalent to `setZone('local')`\n * @return {DateTime}\n */\n toLocal() {\n return this.setZone(Settings.defaultZone);\n }\n\n /**\n * \"Set\" the DateTime's zone to specified zone. Returns a newly-constructed DateTime.\n *\n * By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link DateTime#plus}. You may wish to use {@link DateTime#toLocal} and {@link DateTime#toUTC} which provide simple convenience wrappers for commonly used zones.\n * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link DateTime#Zone} class.\n * @param {Object} opts - options\n * @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this.\n * @return {DateTime}\n */\n setZone(zone, { keepLocalTime = false, keepCalendarTime = false } = {}) {\n zone = normalizeZone(zone, Settings.defaultZone);\n if (zone.equals(this.zone)) {\n return this;\n } else if (!zone.isValid) {\n return DateTime.invalid(unsupportedZone(zone));\n } else {\n let newTS = this.ts;\n if (keepLocalTime || keepCalendarTime) {\n const offsetGuess = zone.offset(this.ts);\n const asObj = this.toObject();\n [newTS] = objToTS(asObj, offsetGuess, zone);\n }\n return clone(this, { ts: newTS, zone });\n }\n }\n\n /**\n * \"Set\" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime.\n * @param {Object} properties - the properties to set\n * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' })\n * @return {DateTime}\n */\n reconfigure({ locale, numberingSystem, outputCalendar } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem, outputCalendar });\n return clone(this, { loc });\n }\n\n /**\n * \"Set\" the locale. Returns a newly-constructed DateTime.\n * Just a convenient alias for reconfigure({ locale })\n * @example DateTime.local(2017, 5, 25).setLocale('en-GB')\n * @return {DateTime}\n */\n setLocale(locale) {\n return this.reconfigure({ locale });\n }\n\n /**\n * \"Set\" the values of specified units. Returns a newly-constructed DateTime.\n * You can only set units with this method; for \"setting\" metadata, see {@link DateTime#reconfigure} and {@link DateTime#setZone}.\n *\n * This method also supports setting locale-based week units, i.e. `localWeekday`, `localWeekNumber` and `localWeekYear`.\n * They cannot be mixed with ISO-week units like `weekday`.\n * @param {Object} values - a mapping of units to numbers\n * @example dt.set({ year: 2017 })\n * @example dt.set({ hour: 8, minute: 30 })\n * @example dt.set({ weekday: 5 })\n * @example dt.set({ year: 2005, ordinal: 234 })\n * @return {DateTime}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const normalized = normalizeObject(values, normalizeUnitWithLocalWeeks);\n const { minDaysInFirstWeek, startOfWeek } = usesLocalWeekValues(normalized, this.loc);\n\n const settingWeekStuff =\n !isUndefined(normalized.weekYear) ||\n !isUndefined(normalized.weekNumber) ||\n !isUndefined(normalized.weekday),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n let mixed;\n if (settingWeekStuff) {\n mixed = weekToGregorian(\n { ...gregorianToWeek(this.c, minDaysInFirstWeek, startOfWeek), ...normalized },\n minDaysInFirstWeek,\n startOfWeek\n );\n } else if (!isUndefined(normalized.ordinal)) {\n mixed = ordinalToGregorian({ ...gregorianToOrdinal(this.c), ...normalized });\n } else {\n mixed = { ...this.toObject(), ...normalized };\n\n // if we didn't set the day but we ended up on an overflow date,\n // use the last day of the right month\n if (isUndefined(normalized.day)) {\n mixed.day = Math.min(daysInMonth(mixed.year, mixed.month), mixed.day);\n }\n }\n\n const [ts, o] = objToTS(mixed, this.o, this.zone);\n return clone(this, { ts, o });\n }\n\n /**\n * Add a period of time to this DateTime and return the resulting DateTime\n *\n * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @example DateTime.now().plus(123) //~> in 123 milliseconds\n * @example DateTime.now().plus({ minutes: 15 }) //~> in 15 minutes\n * @example DateTime.now().plus({ days: 1 }) //~> this time tomorrow\n * @example DateTime.now().plus({ days: -1 }) //~> this time yesterday\n * @example DateTime.now().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min\n * @example DateTime.now().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min\n * @return {DateTime}\n */\n plus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration);\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * Subtract a period of time to this DateTime and return the resulting DateTime\n * See {@link DateTime#plus}\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n @return {DateTime}\n */\n minus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration).negate();\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * \"Set\" this DateTime to the beginning of a unit of time.\n * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week\n * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01'\n * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01'\n * @example DateTime.local(2014, 3, 3).startOf('week').toISODate(); //=> '2014-03-03', weeks always start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00'\n * @return {DateTime}\n */\n startOf(unit, { useLocaleWeeks = false } = {}) {\n if (!this.isValid) return this;\n\n const o = {},\n normalizedUnit = Duration.normalizeUnit(unit);\n switch (normalizedUnit) {\n case \"years\":\n o.month = 1;\n // falls through\n case \"quarters\":\n case \"months\":\n o.day = 1;\n // falls through\n case \"weeks\":\n case \"days\":\n o.hour = 0;\n // falls through\n case \"hours\":\n o.minute = 0;\n // falls through\n case \"minutes\":\n o.second = 0;\n // falls through\n case \"seconds\":\n o.millisecond = 0;\n break;\n case \"milliseconds\":\n break;\n // no default, invalid units throw in normalizeUnit()\n }\n\n if (normalizedUnit === \"weeks\") {\n if (useLocaleWeeks) {\n const startOfWeek = this.loc.getStartOfWeek();\n const { weekday } = this;\n if (weekday < startOfWeek) {\n o.weekNumber = this.weekNumber - 1;\n }\n o.weekday = startOfWeek;\n } else {\n o.weekday = 1;\n }\n }\n\n if (normalizedUnit === \"quarters\") {\n const q = Math.ceil(this.month / 3);\n o.month = (q - 1) * 3 + 1;\n }\n\n return this.set(o);\n }\n\n /**\n * \"Set\" this DateTime to the end (meaning the last millisecond) of a unit of time\n * @param {string} unit - The unit to go to the end of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week\n * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('week').toISO(); // => '2014-03-09T23:59:59.999-05:00', weeks start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00'\n * @return {DateTime}\n */\n endOf(unit, opts) {\n return this.isValid\n ? this.plus({ [unit]: 1 })\n .startOf(unit, opts)\n .minus(1)\n : this;\n }\n\n // OUTPUT\n\n /**\n * Returns a string representation of this DateTime formatted according to the specified format string.\n * **You may not want this.** See {@link DateTime#toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/formatting?id=table-of-tokens).\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\n * @param {string} fmt - the format string\n * @param {Object} opts - opts to override the configuration options on this DateTime\n * @example DateTime.now().toFormat('yyyy LLL dd') //=> '2017 Apr 22'\n * @example DateTime.now().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22'\n * @example DateTime.now().toFormat('yyyy LLL dd', { locale: \"fr\" }) //=> '2017 avr. 22'\n * @example DateTime.now().toFormat(\"HH 'hours and' mm 'minutes'\") //=> '20 hours and 55 minutes'\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`.\n * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation\n * of the DateTime in the assigned locale.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param formatOpts {Object} - Intl.DateTimeFormat constructor options and configuration options\n * @param {Object} opts - opts to override the configuration options on this DateTime\n * @example DateTime.now().toLocaleString(); //=> 4/20/2017\n * @example DateTime.now().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'\n * @example DateTime.now().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'\n * @example DateTime.now().toLocaleString(DateTime.DATE_FULL, { locale: 'fr' }); //=> '28 août 2022'\n * @example DateTime.now().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'\n * @example DateTime.now().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'\n * @example DateTime.now().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20'\n * @example DateTime.now().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM'\n * @example DateTime.now().toLocaleString({ hour: '2-digit', minute: '2-digit', hourCycle: 'h23' }); //=> '11:32'\n * @return {string}\n */\n toLocaleString(formatOpts = Formats.DATE_SHORT, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), formatOpts).formatDateTime(this)\n : INVALID;\n }\n\n /**\n * Returns an array of format \"parts\", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts\n * @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`.\n * @example DateTime.now().toLocaleParts(); //=> [\n * //=> { type: 'day', value: '25' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'month', value: '05' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'year', value: '1982' }\n * //=> ]\n */\n toLocaleParts(opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this)\n : [];\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.extendedZone=false] - add the time zone format extension\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @param {string} [opts.precision='milliseconds'] - truncate output to desired presicion: 'years', 'months', 'days', 'hours', 'minutes', 'seconds' or 'milliseconds'. When precision and suppressSeconds or suppressMilliseconds are used together, precision sets the maximum unit shown in the output, however seconds or milliseconds will still be suppressed if they are 0.\n * @example DateTime.utc(1983, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'\n * @example DateTime.now().toISO() //=> '2017-04-22T20:47:05.335-04:00'\n * @example DateTime.now().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335'\n * @example DateTime.now().toISO({ format: 'basic' }) //=> '20170422T204705.335-0400'\n * @example DateTime.now().toISO({ precision: 'day' }) //=> '2017-04-22Z'\n * @example DateTime.now().toISO({ precision: 'minute' }) //=> '2017-04-22T20:47Z'\n * @return {string|null}\n */\n toISO({\n format = \"extended\",\n suppressSeconds = false,\n suppressMilliseconds = false,\n includeOffset = true,\n extendedZone = false,\n precision = \"milliseconds\",\n } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n precision = normalizeUnit(precision);\n const ext = format === \"extended\";\n\n let c = toISODate(this, ext, precision);\n if (orderedUnits.indexOf(precision) >= 3) c += \"T\";\n c += toISOTime(\n this,\n ext,\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone,\n precision\n );\n return c;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's date component\n * @param {Object} opts - options\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @param {string} [opts.precision='day'] - truncate output to desired precision: 'years', 'months', or 'days'.\n * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25'\n * @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525'\n * @example DateTime.utc(1982, 5, 25).toISODate({ precision: 'month' }) //=> '1982-05'\n * @return {string|null}\n */\n toISODate({ format = \"extended\", precision = \"day\" } = {}) {\n if (!this.isValid) {\n return null;\n }\n return toISODate(this, format === \"extended\", normalizeUnit(precision));\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's week date\n * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2'\n * @return {string}\n */\n toISOWeekDate() {\n return toTechFormat(this, \"kkkk-'W'WW-c\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's time component\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.extendedZone=true] - add the time zone format extension\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @param {string} [opts.precision='milliseconds'] - truncate output to desired presicion: 'hours', 'minutes', 'seconds' or 'milliseconds'. When precision and suppressSeconds or suppressMilliseconds are used together, precision sets the maximum unit shown in the output, however seconds or milliseconds will still be suppressed if they are 0.\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime() //=> '07:34:19.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34, seconds: 0, milliseconds: 0 }).toISOTime({ suppressSeconds: true }) //=> '07:34Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ format: 'basic' }) //=> '073419.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ includePrefix: true }) //=> 'T07:34:19.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34, second: 56 }).toISOTime({ precision: 'minute' }) //=> '07:34Z'\n * @return {string}\n */\n toISOTime({\n suppressMilliseconds = false,\n suppressSeconds = false,\n includeOffset = true,\n includePrefix = false,\n extendedZone = false,\n format = \"extended\",\n precision = \"milliseconds\",\n } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n precision = normalizeUnit(precision);\n let c = includePrefix && orderedUnits.indexOf(precision) >= 3 ? \"T\" : \"\";\n return (\n c +\n toISOTime(\n this,\n format === \"extended\",\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone,\n precision\n )\n );\n }\n\n /**\n * Returns an RFC 2822-compatible string representation of this DateTime\n * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000'\n * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400'\n * @return {string}\n */\n toRFC2822() {\n return toTechFormat(this, \"EEE, dd LLL yyyy HH:mm:ss ZZZ\", false);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in HTTP headers. The output is always expressed in GMT.\n * Specifically, the string conforms to RFC 1123.\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT'\n * @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT'\n * @return {string}\n */\n toHTTP() {\n return toTechFormat(this.toUTC(), \"EEE, dd LLL yyyy HH:mm:ss 'GMT'\");\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Date\n * @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13'\n * @return {string|null}\n */\n toSQLDate() {\n if (!this.isValid) {\n return null;\n }\n return toISODate(this, true);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Time\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n * @example DateTime.utc().toSQL() //=> '05:15:16.345'\n * @example DateTime.now().toSQL() //=> '05:15:16.345 -04:00'\n * @example DateTime.now().toSQL({ includeOffset: false }) //=> '05:15:16.345'\n * @example DateTime.now().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York'\n * @return {string}\n */\n toSQLTime({ includeOffset = true, includeZone = false, includeOffsetSpace = true } = {}) {\n let fmt = \"HH:mm:ss.SSS\";\n\n if (includeZone || includeOffset) {\n if (includeOffsetSpace) {\n fmt += \" \";\n }\n if (includeZone) {\n fmt += \"z\";\n } else if (includeOffset) {\n fmt += \"ZZ\";\n }\n }\n\n return toTechFormat(this, fmt, true);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n * @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z'\n * @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York'\n * @return {string}\n */\n toSQL(opts = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return `${this.toSQLDate()} ${this.toSQLTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for debugging\n * @return {string}\n */\n toString() {\n return this.isValid ? this.toISO() : INVALID;\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for the REPL.\n * @return {string}\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n if (this.isValid) {\n return `DateTime { ts: ${this.toISO()}, zone: ${this.zone.name}, locale: ${this.locale} }`;\n } else {\n return `DateTime { Invalid, reason: ${this.invalidReason} }`;\n }\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime. Alias of {@link DateTime#toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime.\n * @return {number}\n */\n toMillis() {\n return this.isValid ? this.ts : NaN;\n }\n\n /**\n * Returns the epoch seconds (including milliseconds in the fractional part) of this DateTime.\n * @return {number}\n */\n toSeconds() {\n return this.isValid ? this.ts / 1000 : NaN;\n }\n\n /**\n * Returns the epoch seconds (as a whole number) of this DateTime.\n * @return {number}\n */\n toUnixInteger() {\n return this.isValid ? Math.floor(this.ts / 1000) : NaN;\n }\n\n /**\n * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns a BSON serializable equivalent to this DateTime.\n * @return {Date}\n */\n toBSON() {\n return this.toJSDate();\n }\n\n /**\n * Returns a JavaScript object with this DateTime's year, month, day, and so on.\n * @param opts - options for generating the object\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n * @example DateTime.now().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 }\n * @return {Object}\n */\n toObject(opts = {}) {\n if (!this.isValid) return {};\n\n const base = { ...this.c };\n\n if (opts.includeConfig) {\n base.outputCalendar = this.outputCalendar;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n return base;\n }\n\n /**\n * Returns a JavaScript Date equivalent to this DateTime.\n * @return {Date}\n */\n toJSDate() {\n return new Date(this.isValid ? this.ts : NaN);\n }\n\n // COMPARE\n\n /**\n * Return the difference between two DateTimes as a Duration.\n * @param {DateTime} otherDateTime - the DateTime to compare this one to\n * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example\n * var i1 = DateTime.fromISO('1982-05-25T09:45'),\n * i2 = DateTime.fromISO('1983-10-14T10:30');\n * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 }\n * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 }\n * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 }\n * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 }\n * @return {Duration}\n */\n diff(otherDateTime, unit = \"milliseconds\", opts = {}) {\n if (!this.isValid || !otherDateTime.isValid) {\n return Duration.invalid(\"created by diffing an invalid DateTime\");\n }\n\n const durOpts = { locale: this.locale, numberingSystem: this.numberingSystem, ...opts };\n\n const units = maybeArray(unit).map(Duration.normalizeUnit),\n otherIsLater = otherDateTime.valueOf() > this.valueOf(),\n earlier = otherIsLater ? this : otherDateTime,\n later = otherIsLater ? otherDateTime : this,\n diffed = diff(earlier, later, units, durOpts);\n\n return otherIsLater ? diffed.negate() : diffed;\n }\n\n /**\n * Return the difference between this DateTime and right now.\n * See {@link DateTime#diff}\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n diffNow(unit = \"milliseconds\", opts = {}) {\n return this.diff(DateTime.now(), unit, opts);\n }\n\n /**\n * Return an Interval spanning between this DateTime and another DateTime\n * @param {DateTime} otherDateTime - the other end point of the Interval\n * @return {Interval|DateTime}\n */\n until(otherDateTime) {\n return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this;\n }\n\n /**\n * Return whether this DateTime is in the same unit of time as another DateTime.\n * Higher-order units must also be identical for this function to return `true`.\n * Note that time zones are **ignored** in this comparison, which compares the **local** calendar time. Use {@link DateTime#setZone} to convert one of the dates if needed.\n * @param {DateTime} otherDateTime - the other DateTime\n * @param {string} unit - the unit of time to check sameness on\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week; only the locale of this DateTime is used\n * @example DateTime.now().hasSame(otherDT, 'day'); //~> true if otherDT is in the same current calendar day\n * @return {boolean}\n */\n hasSame(otherDateTime, unit, opts) {\n if (!this.isValid) return false;\n\n const inputMs = otherDateTime.valueOf();\n const adjustedToZone = this.setZone(otherDateTime.zone, { keepLocalTime: true });\n return (\n adjustedToZone.startOf(unit, opts) <= inputMs && inputMs <= adjustedToZone.endOf(unit, opts)\n );\n }\n\n /**\n * Equality check\n * Two DateTimes are equal if and only if they represent the same millisecond, have the same zone and location, and are both valid.\n * To compare just the millisecond values, use `+dt1 === +dt2`.\n * @param {DateTime} other - the other DateTime\n * @return {boolean}\n */\n equals(other) {\n return (\n this.isValid &&\n other.isValid &&\n this.valueOf() === other.valueOf() &&\n this.zone.equals(other.zone) &&\n this.loc.equals(other.loc)\n );\n }\n\n /**\n * Returns a string representation of a this time relative to now, such as \"in two days\". Can only internationalize if your\n * platform supports Intl.RelativeTimeFormat. Rounds towards zero by default.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} [options.style=\"long\"] - the style of units, must be \"long\", \"short\", or \"narrow\"\n * @param {string|string[]} options.unit - use a specific unit or array of units; if omitted, or an array, the method will pick the best unit. Use an array or one of \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", or \"seconds\"\n * @param {boolean} [options.round=true] - whether to round the numbers in the output.\n * @param {string} [options.rounding=\"trunc\"] - rounding method to use when rounding the numbers in the output. Can be \"trunc\" (toward zero), \"expand\" (away from zero), \"round\", \"floor\", or \"ceil\".\n * @param {number} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelative() //=> \"in 1 day\"\n * @example DateTime.now().setLocale(\"es\").toRelative({ days: 1 }) //=> \"dentro de 1 día\"\n * @example DateTime.now().plus({ days: 1 }).toRelative({ locale: \"fr\" }) //=> \"dans 23 heures\"\n * @example DateTime.now().minus({ days: 2 }).toRelative() //=> \"2 days ago\"\n * @example DateTime.now().minus({ days: 2 }).toRelative({ unit: \"hours\" }) //=> \"48 hours ago\"\n * @example DateTime.now().minus({ hours: 36 }).toRelative({ round: false }) //=> \"1.5 days ago\"\n */\n toRelative(options = {}) {\n if (!this.isValid) return null;\n const base = options.base || DateTime.fromObject({}, { zone: this.zone }),\n padding = options.padding ? (this < base ? -options.padding : options.padding) : 0;\n let units = [\"years\", \"months\", \"days\", \"hours\", \"minutes\", \"seconds\"];\n let unit = options.unit;\n if (Array.isArray(options.unit)) {\n units = options.unit;\n unit = undefined;\n }\n return diffRelative(base, this.plus(padding), {\n ...options,\n numeric: \"always\",\n units,\n unit,\n });\n }\n\n /**\n * Returns a string representation of this date relative to today, such as \"yesterday\" or \"next month\".\n * Only internationalizes on platforms that supports Intl.RelativeTimeFormat.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of \"years\", \"quarters\", \"months\", \"weeks\", or \"days\"\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar() //=> \"tomorrow\"\n * @example DateTime.now().setLocale(\"es\").plus({ days: 1 }).toRelative() //=> \"\"mañana\"\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar({ locale: \"fr\" }) //=> \"demain\"\n * @example DateTime.now().minus({ days: 2 }).toRelativeCalendar() //=> \"2 days ago\"\n */\n toRelativeCalendar(options = {}) {\n if (!this.isValid) return null;\n\n return diffRelative(options.base || DateTime.fromObject({}, { zone: this.zone }), this, {\n ...options,\n numeric: \"auto\",\n units: [\"years\", \"months\", \"days\"],\n calendary: true,\n });\n }\n\n /**\n * Return the min of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum\n * @return {DateTime} the min DateTime, or undefined if called with no argument\n */\n static min(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"min requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, (i) => i.valueOf(), Math.min);\n }\n\n /**\n * Return the max of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum\n * @return {DateTime} the max DateTime, or undefined if called with no argument\n */\n static max(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"max requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, (i) => i.valueOf(), Math.max);\n }\n\n // MISC\n\n /**\n * Explain how a string would be parsed by fromFormat()\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see description)\n * @param {Object} options - options taken by fromFormat()\n * @return {Object}\n */\n static fromFormatExplain(text, fmt, options = {}) {\n const { locale = null, numberingSystem = null } = options,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n });\n return explainFromTokens(localeToUse, text, fmt);\n }\n\n /**\n * @deprecated use fromFormatExplain instead\n */\n static fromStringExplain(text, fmt, options = {}) {\n return DateTime.fromFormatExplain(text, fmt, options);\n }\n\n /**\n * Build a parser for `fmt` using the given locale. This parser can be passed\n * to {@link DateTime.fromFormatParser} to a parse a date in this format. This\n * can be used to optimize cases where many dates need to be parsed in a\n * specific format.\n *\n * @param {String} fmt - the format the string is expected to be in (see\n * description)\n * @param {Object} options - options used to set locale and numberingSystem\n * for parser\n * @returns {TokenParser} - opaque object to be used\n */\n static buildFormatParser(fmt, options = {}) {\n const { locale = null, numberingSystem = null } = options,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n });\n return new TokenParser(localeToUse, fmt);\n }\n\n /**\n * Create a DateTime from an input string and format parser.\n *\n * The format parser must have been created with the same locale as this call.\n *\n * @param {String} text - the string to parse\n * @param {TokenParser} formatParser - parser from {@link DateTime.buildFormatParser}\n * @param {Object} opts - options taken by fromFormat()\n * @returns {DateTime}\n */\n static fromFormatParser(text, formatParser, opts = {}) {\n if (isUndefined(text) || isUndefined(formatParser)) {\n throw new InvalidArgumentError(\n \"fromFormatParser requires an input string and a format parser\"\n );\n }\n const { locale = null, numberingSystem = null } = opts,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n });\n\n if (!localeToUse.equals(formatParser.locale)) {\n throw new InvalidArgumentError(\n `fromFormatParser called with a locale of ${localeToUse}, ` +\n `but the format parser was created for ${formatParser.locale}`\n );\n }\n\n const { result, zone, specificOffset, invalidReason } = formatParser.explainFromTokens(text);\n\n if (invalidReason) {\n return DateTime.invalid(invalidReason);\n } else {\n return parseDataToDateTime(\n result,\n zone,\n opts,\n `format ${formatParser.format}`,\n text,\n specificOffset\n );\n }\n }\n\n // FORMAT PRESETS\n\n /**\n * {@link DateTime#toLocaleString} format like 10/14/1983\n * @type {Object}\n */\n static get DATE_SHORT() {\n return Formats.DATE_SHORT;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED() {\n return Formats.DATE_MED;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Fri, Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED_WITH_WEEKDAY() {\n return Formats.DATE_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983'\n * @type {Object}\n */\n static get DATE_FULL() {\n return Formats.DATE_FULL;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Tuesday, October 14, 1983'\n * @type {Object}\n */\n static get DATE_HUGE() {\n return Formats.DATE_HUGE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_SIMPLE() {\n return Formats.TIME_SIMPLE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SECONDS() {\n return Formats.TIME_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SHORT_OFFSET() {\n return Formats.TIME_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_LONG_OFFSET() {\n return Formats.TIME_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_SIMPLE() {\n return Formats.TIME_24_SIMPLE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SECONDS() {\n return Formats.TIME_24_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 EDT', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SHORT_OFFSET() {\n return Formats.TIME_24_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_LONG_OFFSET() {\n return Formats.TIME_24_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT() {\n return Formats.DATETIME_SHORT;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT_WITH_SECONDS() {\n return Formats.DATETIME_SHORT_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED() {\n return Formats.DATETIME_MED;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_SECONDS() {\n return Formats.DATETIME_MED_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Fri, 14 Oct 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_WEEKDAY() {\n return Formats.DATETIME_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL() {\n return Formats.DATETIME_FULL;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL_WITH_SECONDS() {\n return Formats.DATETIME_FULL_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE() {\n return Formats.DATETIME_HUGE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE_WITH_SECONDS() {\n return Formats.DATETIME_HUGE_WITH_SECONDS;\n }\n}\n\n/**\n * @private\n */\nexport function friendlyDateTime(dateTimeish) {\n if (DateTime.isDateTime(dateTimeish)) {\n return dateTimeish;\n } else if (dateTimeish && dateTimeish.valueOf && isNumber(dateTimeish.valueOf())) {\n return DateTime.fromJSDate(dateTimeish);\n } else if (dateTimeish && typeof dateTimeish === \"object\") {\n return DateTime.fromObject(dateTimeish);\n } else {\n throw new InvalidArgumentError(\n `Unknown datetime argument: ${dateTimeish}, of type ${typeof dateTimeish}`\n );\n }\n}\n","import DateTime from \"./datetime.js\";\nimport Duration from \"./duration.js\";\nimport Interval from \"./interval.js\";\nimport Info from \"./info.js\";\nimport Zone from \"./zone.js\";\nimport FixedOffsetZone from \"./zones/fixedOffsetZone.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport InvalidZone from \"./zones/invalidZone.js\";\nimport SystemZone from \"./zones/systemZone.js\";\nimport Settings from \"./settings.js\";\n\nconst VERSION = \"3.7.2\";\n\nexport {\n VERSION,\n DateTime,\n Duration,\n Interval,\n Info,\n Zone,\n FixedOffsetZone,\n IANAZone,\n InvalidZone,\n SystemZone,\n Settings,\n};\n","'use strict';\n\nvar luxon = require('luxon');\n\nCronDate.prototype.addYear = function() {\n this._date = this._date.plus({ years: 1 });\n};\n\nCronDate.prototype.addMonth = function() {\n this._date = this._date.plus({ months: 1 }).startOf('month');\n};\n\nCronDate.prototype.addDay = function() {\n this._date = this._date.plus({ days: 1 }).startOf('day');\n};\n\nCronDate.prototype.addHour = function() {\n var prev = this._date;\n this._date = this._date.plus({ hours: 1 }).startOf('hour');\n if (this._date <= prev) {\n this._date = this._date.plus({ hours: 1 });\n }\n};\n\nCronDate.prototype.addMinute = function() {\n var prev = this._date;\n this._date = this._date.plus({ minutes: 1 }).startOf('minute');\n if (this._date < prev) {\n this._date = this._date.plus({ hours: 1 });\n }\n};\n\nCronDate.prototype.addSecond = function() {\n var prev = this._date;\n this._date = this._date.plus({ seconds: 1 }).startOf('second');\n if (this._date < prev) {\n this._date = this._date.plus({ hours: 1 });\n }\n};\n\nCronDate.prototype.subtractYear = function() {\n this._date = this._date.minus({ years: 1 });\n};\n\nCronDate.prototype.subtractMonth = function() {\n this._date = this._date\n .minus({ months: 1 })\n .endOf('month')\n .startOf('second');\n};\n\nCronDate.prototype.subtractDay = function() {\n this._date = this._date\n .minus({ days: 1 })\n .endOf('day')\n .startOf('second');\n};\n\nCronDate.prototype.subtractHour = function() {\n var prev = this._date;\n this._date = this._date\n .minus({ hours: 1 })\n .endOf('hour')\n .startOf('second');\n if (this._date >= prev) {\n this._date = this._date.minus({ hours: 1 });\n }\n};\n\nCronDate.prototype.subtractMinute = function() {\n var prev = this._date;\n this._date = this._date.minus({ minutes: 1 })\n .endOf('minute')\n .startOf('second');\n if (this._date > prev) {\n this._date = this._date.minus({ hours: 1 });\n }\n};\n\nCronDate.prototype.subtractSecond = function() {\n var prev = this._date;\n this._date = this._date\n .minus({ seconds: 1 })\n .startOf('second');\n if (this._date > prev) {\n this._date = this._date.minus({ hours: 1 });\n }\n};\n\nCronDate.prototype.getDate = function() {\n return this._date.day;\n};\n\nCronDate.prototype.getFullYear = function() {\n return this._date.year;\n};\n\nCronDate.prototype.getDay = function() {\n var weekday = this._date.weekday;\n return weekday == 7 ? 0 : weekday;\n};\n\nCronDate.prototype.getMonth = function() {\n return this._date.month - 1;\n};\n\nCronDate.prototype.getHours = function() {\n return this._date.hour;\n};\n\nCronDate.prototype.getMinutes = function() {\n return this._date.minute;\n};\n\nCronDate.prototype.getSeconds = function() {\n return this._date.second;\n};\n\nCronDate.prototype.getMilliseconds = function() {\n return this._date.millisecond;\n};\n\nCronDate.prototype.getTime = function() {\n return this._date.valueOf();\n};\n\nCronDate.prototype.getUTCDate = function() {\n return this._getUTC().day;\n};\n\nCronDate.prototype.getUTCFullYear = function() {\n return this._getUTC().year;\n};\n\nCronDate.prototype.getUTCDay = function() {\n var weekday = this._getUTC().weekday;\n return weekday == 7 ? 0 : weekday;\n};\n\nCronDate.prototype.getUTCMonth = function() {\n return this._getUTC().month - 1;\n};\n\nCronDate.prototype.getUTCHours = function() {\n return this._getUTC().hour;\n};\n\nCronDate.prototype.getUTCMinutes = function() {\n return this._getUTC().minute;\n};\n\nCronDate.prototype.getUTCSeconds = function() {\n return this._getUTC().second;\n};\n\nCronDate.prototype.toISOString = function() {\n return this._date.toUTC().toISO();\n};\n\nCronDate.prototype.toJSON = function() {\n return this._date.toJSON();\n};\n\nCronDate.prototype.setDate = function(d) {\n this._date = this._date.set({ day: d });\n};\n\nCronDate.prototype.setFullYear = function(y) {\n this._date = this._date.set({ year: y });\n};\n\nCronDate.prototype.setDay = function(d) {\n this._date = this._date.set({ weekday: d });\n};\n\nCronDate.prototype.setMonth = function(m) {\n this._date = this._date.set({ month: m + 1 });\n};\n\nCronDate.prototype.setHours = function(h) {\n this._date = this._date.set({ hour: h });\n};\n\nCronDate.prototype.setMinutes = function(m) {\n this._date = this._date.set({ minute: m });\n};\n\nCronDate.prototype.setSeconds = function(s) {\n this._date = this._date.set({ second: s });\n};\n\nCronDate.prototype.setMilliseconds = function(s) {\n this._date = this._date.set({ millisecond: s });\n};\n\nCronDate.prototype._getUTC = function() {\n return this._date.toUTC();\n};\n\nCronDate.prototype.toString = function() {\n return this.toDate().toString();\n};\n\nCronDate.prototype.toDate = function() {\n return this._date.toJSDate();\n};\n\nCronDate.prototype.isLastDayOfMonth = function() {\n //next day\n var newDate = this._date.plus({ days: 1 }).startOf('day');\n return this._date.month !== newDate.month;\n};\n\n/**\n * Returns true when the current weekday is the last occurrence of this weekday\n * for the present month.\n */\nCronDate.prototype.isLastWeekdayOfMonth = function() {\n // Check this by adding 7 days to the current date and seeing if it's\n // a different month\n var newDate = this._date.plus({ days: 7 }).startOf('day');\n return this._date.month !== newDate.month;\n};\n\nfunction CronDate (timestamp, tz) {\n var dateOpts = { zone: tz };\n if (!timestamp) {\n this._date = luxon.DateTime.local();\n } else if (timestamp instanceof CronDate) {\n this._date = timestamp._date;\n } else if (timestamp instanceof Date) {\n this._date = luxon.DateTime.fromJSDate(timestamp, dateOpts);\n } else if (typeof timestamp === 'number') {\n this._date = luxon.DateTime.fromMillis(timestamp, dateOpts);\n } else if (typeof timestamp === 'string') {\n this._date = luxon.DateTime.fromISO(timestamp, dateOpts);\n this._date.isValid || (this._date = luxon.DateTime.fromRFC2822(timestamp, dateOpts));\n this._date.isValid || (this._date = luxon.DateTime.fromSQL(timestamp, dateOpts));\n // RFC2822-like format without the required timezone offset (used in tests)\n this._date.isValid || (this._date = luxon.DateTime.fromFormat(timestamp, 'EEE, d MMM yyyy HH:mm:ss', dateOpts));\n }\n\n if (!this._date || !this._date.isValid) {\n throw new Error('CronDate: unhandled timestamp: ' + JSON.stringify(timestamp));\n }\n \n if (tz && tz !== this._date.zoneName) {\n this._date = this._date.setZone(tz);\n }\n}\n\nmodule.exports = CronDate;\n","'use strict';\n\nfunction buildRange(item) {\n return {\n start: item,\n count: 1\n };\n}\n\nfunction completeRangeWithItem(range, item) {\n range.end = item;\n range.step = item - range.start;\n range.count = 2;\n}\n\nfunction finalizeCurrentRange(results, currentRange, currentItemRange) {\n if (currentRange) {\n // Two elements do not form a range so split them into 2 single elements\n if (currentRange.count === 2) {\n results.push(buildRange(currentRange.start));\n results.push(buildRange(currentRange.end));\n } else {\n results.push(currentRange);\n }\n }\n if (currentItemRange) {\n results.push(currentItemRange);\n }\n}\n\nfunction compactField(arr) {\n var results = [];\n var currentRange = undefined;\n\n for (var i = 0; i < arr.length; i++) {\n var currentItem = arr[i];\n if (typeof currentItem !== 'number') {\n // String elements can't form a range\n finalizeCurrentRange(results, currentRange, buildRange(currentItem));\n currentRange = undefined;\n } else if (!currentRange) {\n // Start a new range\n currentRange = buildRange(currentItem);\n } else if (currentRange.count === 1) {\n // Guess that the current item starts a range\n completeRangeWithItem(currentRange, currentItem);\n } else {\n if (currentRange.step === currentItem - currentRange.end) {\n // We found another item that matches the current range\n currentRange.count++;\n currentRange.end = currentItem;\n } else if (currentRange.count === 2) { // The current range can't be continued\n // Break the first item of the current range into a single element, and try to start a new range with the second item\n results.push(buildRange(currentRange.start));\n currentRange = buildRange(currentRange.end);\n completeRangeWithItem(currentRange, currentItem);\n } else {\n // Persist the current range and start a new one with current item\n finalizeCurrentRange(results, currentRange);\n currentRange = buildRange(currentItem);\n }\n }\n }\n\n finalizeCurrentRange(results, currentRange);\n\n return results;\n}\n\nmodule.exports = compactField;\n","'use strict';\n\nvar compactField = require('./field_compactor');\n\nfunction stringifyField(arr, min, max) {\n var ranges = compactField(arr);\n if (ranges.length === 1) {\n var singleRange = ranges[0];\n var step = singleRange.step;\n if (step === 1 && singleRange.start === min && singleRange.end === max) {\n return '*';\n }\n if (step !== 1 && singleRange.start === min && singleRange.end === max - step + 1) {\n return '*/' + step;\n }\n }\n\n var result = [];\n for (var i = 0, l = ranges.length; i < l; ++i) {\n var range = ranges[i];\n if (range.count === 1) {\n result.push(range.start);\n continue;\n }\n\n var step = range.step;\n if (range.step === 1) {\n result.push(range.start + '-' + range.end);\n continue;\n }\n\n var multiplier = range.start == 0 ? range.count - 1 : range.count;\n if (range.step * multiplier > range.end) {\n result = result.concat(\n Array\n .from({ length: range.end - range.start + 1 })\n .map(function (_, index) {\n var value = range.start + index;\n if ((value - range.start) % range.step === 0) {\n return value;\n }\n return null;\n })\n .filter(function (value) {\n return value != null;\n })\n );\n } else if (range.end === max - range.step + 1) {\n result.push(range.start + '/' + range.step);\n } else {\n result.push(range.start + '-' + range.end + '/' + range.step);\n }\n }\n\n return result.join(',');\n}\n\nmodule.exports = stringifyField;\n","'use strict';\n\n// Load Date class extensions\nvar CronDate = require('./date');\n\nvar stringifyField = require('./field_stringify');\n\n/**\n * Cron iteration loop safety limit\n */\nvar LOOP_LIMIT = 10000;\n\n/**\n * Construct a new expression parser\n *\n * Options:\n * currentDate: iterator start date\n * endDate: iterator end date\n *\n * @constructor\n * @private\n * @param {Object} fields Expression fields parsed values\n * @param {Object} options Parser options\n */\nfunction CronExpression (fields, options) {\n this._options = options;\n this._utc = options.utc || false;\n this._tz = this._utc ? 'UTC' : options.tz;\n this._currentDate = new CronDate(options.currentDate, this._tz);\n this._startDate = options.startDate ? new CronDate(options.startDate, this._tz) : null;\n this._endDate = options.endDate ? new CronDate(options.endDate, this._tz) : null;\n this._isIterator = options.iterator || false;\n this._hasIterated = false;\n this._nthDayOfWeek = options.nthDayOfWeek || 0;\n this.fields = CronExpression._freezeFields(fields);\n}\n\n/**\n * Field mappings\n * @type {Array}\n */\nCronExpression.map = [ 'second', 'minute', 'hour', 'dayOfMonth', 'month', 'dayOfWeek' ];\n\n/**\n * Prefined intervals\n * @type {Object}\n */\nCronExpression.predefined = {\n '@yearly': '0 0 1 1 *',\n '@monthly': '0 0 1 * *',\n '@weekly': '0 0 * * 0',\n '@daily': '0 0 * * *',\n '@hourly': '0 * * * *'\n};\n\n/**\n * Fields constraints\n * @type {Array}\n */\nCronExpression.constraints = [\n { min: 0, max: 59, chars: [] }, // Second\n { min: 0, max: 59, chars: [] }, // Minute\n { min: 0, max: 23, chars: [] }, // Hour\n { min: 1, max: 31, chars: ['L'] }, // Day of month\n { min: 1, max: 12, chars: [] }, // Month\n { min: 0, max: 7, chars: ['L'] }, // Day of week\n];\n\n/**\n * Days in month\n * @type {number[]}\n */\nCronExpression.daysInMonth = [\n 31,\n 29,\n 31,\n 30,\n 31,\n 30,\n 31,\n 31,\n 30,\n 31,\n 30,\n 31\n];\n\n/**\n * Field aliases\n * @type {Object}\n */\nCronExpression.aliases = {\n month: {\n jan: 1,\n feb: 2,\n mar: 3,\n apr: 4,\n may: 5,\n jun: 6,\n jul: 7,\n aug: 8,\n sep: 9,\n oct: 10,\n nov: 11,\n dec: 12\n },\n\n dayOfWeek: {\n sun: 0,\n mon: 1,\n tue: 2,\n wed: 3,\n thu: 4,\n fri: 5,\n sat: 6\n }\n};\n\n/**\n * Field defaults\n * @type {Array}\n */\nCronExpression.parseDefaults = [ '0', '*', '*', '*', '*', '*' ];\n\nCronExpression.standardValidCharacters = /^[,*\\d/-]+$/;\nCronExpression.dayOfWeekValidCharacters = /^[?,*\\dL#/-]+$/;\nCronExpression.dayOfMonthValidCharacters = /^[?,*\\dL/-]+$/;\nCronExpression.validCharacters = {\n second: CronExpression.standardValidCharacters,\n minute: CronExpression.standardValidCharacters,\n hour: CronExpression.standardValidCharacters,\n dayOfMonth: CronExpression.dayOfMonthValidCharacters,\n month: CronExpression.standardValidCharacters,\n dayOfWeek: CronExpression.dayOfWeekValidCharacters,\n};\n\nCronExpression._isValidConstraintChar = function _isValidConstraintChar(constraints, value) {\n if (typeof value !== 'string') {\n return false;\n }\n\n return constraints.chars.some(function(char) {\n return value.indexOf(char) > -1;\n });\n};\n\n/**\n * Parse input interval\n *\n * @param {String} field Field symbolic name\n * @param {String} value Field value\n * @param {Array} constraints Range upper and lower constraints\n * @return {Array} Sequence of sorted values\n * @private\n */\nCronExpression._parseField = function _parseField (field, value, constraints) {\n // Replace aliases\n switch (field) {\n case 'month':\n case 'dayOfWeek':\n var aliases = CronExpression.aliases[field];\n\n value = value.replace(/[a-z]{3}/gi, function(match) {\n match = match.toLowerCase();\n\n if (typeof aliases[match] !== 'undefined') {\n return aliases[match];\n } else {\n throw new Error('Validation error, cannot resolve alias \"' + match + '\"');\n }\n });\n break;\n }\n\n // Check for valid characters.\n if (!(CronExpression.validCharacters[field].test(value))) {\n throw new Error('Invalid characters, got value: ' + value);\n }\n\n // Replace '*' and '?'\n if (value.indexOf('*') !== -1) {\n value = value.replace(/\\*/g, constraints.min + '-' + constraints.max);\n } else if (value.indexOf('?') !== -1) {\n value = value.replace(/\\?/g, constraints.min + '-' + constraints.max);\n }\n\n //\n // Inline parsing functions\n //\n // Parser path:\n // - parseSequence\n // - parseRepeat\n // - parseRange\n\n /**\n * Parse sequence\n *\n * @param {String} val\n * @return {Array}\n * @private\n */\n function parseSequence (val) {\n var stack = [];\n\n function handleResult (result) {\n if (result instanceof Array) { // Make sequence linear\n for (var i = 0, c = result.length; i < c; i++) {\n var value = result[i];\n\n if (CronExpression._isValidConstraintChar(constraints, value)) {\n stack.push(value);\n continue;\n }\n // Check constraints\n if (typeof value !== 'number' || Number.isNaN(value) || value < constraints.min || value > constraints.max) {\n throw new Error(\n 'Constraint error, got value ' + value + ' expected range ' +\n constraints.min + '-' + constraints.max\n );\n }\n\n stack.push(value);\n }\n } else { // Scalar value\n\n if (CronExpression._isValidConstraintChar(constraints, result)) {\n stack.push(result);\n return;\n }\n\n var numResult = +result;\n\n // Check constraints\n if (Number.isNaN(numResult) || numResult < constraints.min || numResult > constraints.max) {\n throw new Error(\n 'Constraint error, got value ' + result + ' expected range ' +\n constraints.min + '-' + constraints.max\n );\n }\n\n if (field === 'dayOfWeek') {\n numResult = numResult % 7;\n }\n\n stack.push(numResult);\n }\n }\n\n var atoms = val.split(',');\n if (!atoms.every(function (atom) {\n return atom.length > 0;\n })) {\n throw new Error('Invalid list value format');\n }\n\n if (atoms.length > 1) {\n for (var i = 0, c = atoms.length; i < c; i++) {\n handleResult(parseRepeat(atoms[i]));\n }\n } else {\n handleResult(parseRepeat(val));\n }\n\n stack.sort(CronExpression._sortCompareFn);\n\n return stack;\n }\n\n /**\n * Parse repetition interval\n *\n * @param {String} val\n * @return {Array}\n */\n function parseRepeat (val) {\n var repeatInterval = 1;\n var atoms = val.split('/');\n\n if (atoms.length > 2) {\n throw new Error('Invalid repeat: ' + val);\n }\n\n if (atoms.length > 1) {\n if (atoms[0] == +atoms[0]) {\n atoms = [atoms[0] + '-' + constraints.max, atoms[1]];\n }\n return parseRange(atoms[0], atoms[atoms.length - 1]);\n }\n\n return parseRange(val, repeatInterval);\n }\n\n /**\n * Parse range\n *\n * @param {String} val\n * @param {Number} repeatInterval Repetition interval\n * @return {Array}\n * @private\n */\n function parseRange (val, repeatInterval) {\n var stack = [];\n var atoms = val.split('-');\n\n if (atoms.length > 1 ) {\n // Invalid range, return value\n if (atoms.length < 2) {\n return +val;\n }\n\n if (!atoms[0].length) {\n if (!atoms[1].length) {\n throw new Error('Invalid range: ' + val);\n }\n\n return +val;\n }\n\n // Validate range\n var min = +atoms[0];\n var max = +atoms[1];\n\n if (Number.isNaN(min) || Number.isNaN(max) ||\n min < constraints.min || max > constraints.max) {\n throw new Error(\n 'Constraint error, got range ' +\n min + '-' + max +\n ' expected range ' +\n constraints.min + '-' + constraints.max\n );\n } else if (min > max) {\n throw new Error('Invalid range: ' + val);\n }\n\n // Create range\n var repeatIndex = +repeatInterval;\n\n if (Number.isNaN(repeatIndex) || repeatIndex <= 0) {\n throw new Error('Constraint error, cannot repeat at every ' + repeatIndex + ' time.');\n }\n\n // JS DOW is in range of 0-6 (SUN-SAT) but we also support 7 in the expression\n // Handle case when range contains 7 instead of 0 and translate this value to 0\n if (field === 'dayOfWeek' && max % 7 === 0) {\n stack.push(0);\n }\n\n for (var index = min, count = max; index <= count; index++) {\n var exists = stack.indexOf(index) !== -1;\n if (!exists && repeatIndex > 0 && (repeatIndex % repeatInterval) === 0) {\n repeatIndex = 1;\n stack.push(index);\n } else {\n repeatIndex++;\n }\n }\n return stack;\n }\n\n return Number.isNaN(+val) ? val : +val;\n }\n\n return parseSequence(value);\n};\n\nCronExpression._sortCompareFn = function(a, b) {\n var aIsNumber = typeof a === 'number';\n var bIsNumber = typeof b === 'number';\n\n if (aIsNumber && bIsNumber) {\n return a - b;\n }\n\n if (!aIsNumber && bIsNumber) {\n return 1;\n }\n\n if (aIsNumber && !bIsNumber) {\n return -1;\n }\n\n return a.localeCompare(b);\n};\n\nCronExpression._handleMaxDaysInMonth = function(mappedFields) {\n // Filter out any day of month value that is larger than given month expects\n if (mappedFields.month.length === 1) {\n var daysInMonth = CronExpression.daysInMonth[mappedFields.month[0] - 1];\n\n if (mappedFields.dayOfMonth[0] > daysInMonth) {\n throw new Error('Invalid explicit day of month definition');\n }\n\n return mappedFields.dayOfMonth\n .filter(function(dayOfMonth) {\n return dayOfMonth === 'L' ? true : dayOfMonth <= daysInMonth;\n })\n .sort(CronExpression._sortCompareFn);\n }\n};\n\nCronExpression._freezeFields = function(fields) {\n for (var i = 0, c = CronExpression.map.length; i < c; ++i) {\n var field = CronExpression.map[i]; // Field name\n var value = fields[field];\n fields[field] = Object.freeze(value);\n }\n return Object.freeze(fields);\n};\n\nCronExpression.prototype._applyTimezoneShift = function(currentDate, dateMathVerb, method) {\n if ((method === 'Month') || (method === 'Day')) {\n var prevTime = currentDate.getTime();\n currentDate[dateMathVerb + method]();\n var currTime = currentDate.getTime();\n if (prevTime === currTime) {\n // Jumped into a not existent date due to a DST transition\n if ((currentDate.getMinutes() === 0) &&\n (currentDate.getSeconds() === 0)) {\n currentDate.addHour();\n } else if ((currentDate.getMinutes() === 59) &&\n (currentDate.getSeconds() === 59)) {\n currentDate.subtractHour();\n }\n }\n } else {\n var previousHour = currentDate.getHours();\n currentDate[dateMathVerb + method]();\n var currentHour = currentDate.getHours();\n var diff = currentHour - previousHour;\n if (diff === 2) {\n // Starting DST\n if (this.fields.hour.length !== 24) {\n // Hour is specified\n this._dstStart = currentHour;\n }\n } else if ((diff === 0) &&\n (currentDate.getMinutes() === 0) &&\n (currentDate.getSeconds() === 0)) {\n // Ending DST\n if (this.fields.hour.length !== 24) {\n // Hour is specified\n this._dstEnd = currentHour;\n }\n }\n }\n};\n\n\n/**\n * Find next or previous matching schedule date\n *\n * @return {CronDate}\n * @private\n */\nCronExpression.prototype._findSchedule = function _findSchedule (reverse) {\n\n /**\n * Match field value\n *\n * @param {String} value\n * @param {Array} sequence\n * @return {Boolean}\n * @private\n */\n function matchSchedule (value, sequence) {\n for (var i = 0, c = sequence.length; i < c; i++) {\n if (sequence[i] >= value) {\n return sequence[i] === value;\n }\n }\n\n return sequence[0] === value;\n }\n\n /**\n * Helps determine if the provided date is the correct nth occurence of the\n * desired day of week.\n *\n * @param {CronDate} date\n * @param {Number} nthDayOfWeek\n * @return {Boolean}\n * @private\n */\n function isNthDayMatch(date, nthDayOfWeek) {\n if (nthDayOfWeek < 6) {\n if (\n date.getDate() < 8 &&\n nthDayOfWeek === 1 // First occurence has to happen in first 7 days of the month\n ) {\n return true;\n }\n\n var offset = date.getDate() % 7 ? 1 : 0; // Math is off by 1 when dayOfWeek isn't divisible by 7\n var adjustedDate = date.getDate() - (date.getDate() % 7); // find the first occurance\n var occurrence = Math.floor(adjustedDate / 7) + offset;\n\n return occurrence === nthDayOfWeek;\n }\n\n return false;\n }\n\n /**\n * Helper function that checks if 'L' is in the array\n *\n * @param {Array} expressions\n */\n function isLInExpressions(expressions) {\n return expressions.length > 0 && expressions.some(function(expression) {\n return typeof expression === 'string' && expression.indexOf('L') >= 0;\n });\n }\n\n\n // Whether to use backwards directionality when searching\n reverse = reverse || false;\n var dateMathVerb = reverse ? 'subtract' : 'add';\n\n var currentDate = new CronDate(this._currentDate, this._tz);\n var startDate = this._startDate;\n var endDate = this._endDate;\n\n // Find matching schedule\n var startTimestamp = currentDate.getTime();\n var stepCount = 0;\n\n function isLastWeekdayOfMonthMatch(expressions) {\n return expressions.some(function(expression) {\n // There might be multiple expressions and not all of them will contain\n // the \"L\".\n if (!isLInExpressions([expression])) {\n return false;\n }\n\n // The first character represents the weekday\n var weekday = Number.parseInt(expression[0]) % 7;\n\n if (Number.isNaN(weekday)) {\n throw new Error('Invalid last weekday of the month expression: ' + expression);\n }\n\n return currentDate.getDay() === weekday && currentDate.isLastWeekdayOfMonth();\n });\n }\n\n while (stepCount < LOOP_LIMIT) {\n stepCount++;\n\n // Validate timespan\n if (reverse) {\n if (startDate && (currentDate.getTime() - startDate.getTime() < 0)) {\n throw new Error('Out of the timespan range');\n }\n } else {\n if (endDate && (endDate.getTime() - currentDate.getTime()) < 0) {\n throw new Error('Out of the timespan range');\n }\n }\n\n // Day of month and week matching:\n //\n // \"The day of a command's execution can be specified by two fields --\n // day of month, and day of week. If both\t fields\t are restricted (ie,\n // aren't *), the command will be run when either field matches the cur-\n // rent time. For example, \"30 4 1,15 * 5\" would cause a command to be\n // run at 4:30 am on the 1st and 15th of each month, plus every Friday.\"\n //\n // http://unixhelp.ed.ac.uk/CGI/man-cgi?crontab+5\n //\n\n var dayOfMonthMatch = matchSchedule(currentDate.getDate(), this.fields.dayOfMonth);\n if (isLInExpressions(this.fields.dayOfMonth)) {\n dayOfMonthMatch = dayOfMonthMatch || currentDate.isLastDayOfMonth();\n }\n var dayOfWeekMatch = matchSchedule(currentDate.getDay(), this.fields.dayOfWeek);\n if (isLInExpressions(this.fields.dayOfWeek)) {\n dayOfWeekMatch = dayOfWeekMatch || isLastWeekdayOfMonthMatch(this.fields.dayOfWeek);\n }\n var isDayOfMonthWildcardMatch = this.fields.dayOfMonth.length >= CronExpression.daysInMonth[currentDate.getMonth()];\n var isDayOfWeekWildcardMatch = this.fields.dayOfWeek.length === CronExpression.constraints[5].max - CronExpression.constraints[5].min + 1;\n var currentHour = currentDate.getHours();\n\n // Add or subtract day if select day not match with month (according to calendar)\n if (!dayOfMonthMatch && (!dayOfWeekMatch || isDayOfWeekWildcardMatch)) {\n this._applyTimezoneShift(currentDate, dateMathVerb, 'Day');\n continue;\n }\n\n // Add or subtract day if not day of month is set (and no match) and day of week is wildcard\n if (!isDayOfMonthWildcardMatch && isDayOfWeekWildcardMatch && !dayOfMonthMatch) {\n this._applyTimezoneShift(currentDate, dateMathVerb, 'Day');\n continue;\n }\n\n // Add or subtract day if not day of week is set (and no match) and day of month is wildcard\n if (isDayOfMonthWildcardMatch && !isDayOfWeekWildcardMatch && !dayOfWeekMatch) {\n this._applyTimezoneShift(currentDate, dateMathVerb, 'Day');\n continue;\n }\n\n // Add or subtract day if day of week & nthDayOfWeek are set (and no match)\n if (\n this._nthDayOfWeek > 0 &&\n !isNthDayMatch(currentDate, this._nthDayOfWeek)\n ) {\n this._applyTimezoneShift(currentDate, dateMathVerb, 'Day');\n continue;\n }\n\n // Match month\n if (!matchSchedule(currentDate.getMonth() + 1, this.fields.month)) {\n this._applyTimezoneShift(currentDate, dateMathVerb, 'Month');\n continue;\n }\n\n // Match hour\n if (!matchSchedule(currentHour, this.fields.hour)) {\n if (this._dstStart !== currentHour) {\n this._dstStart = null;\n this._applyTimezoneShift(currentDate, dateMathVerb, 'Hour');\n continue;\n } else if (!matchSchedule(currentHour - 1, this.fields.hour)) {\n currentDate[dateMathVerb + 'Hour']();\n continue;\n }\n } else if (this._dstEnd === currentHour) {\n if (!reverse) {\n this._dstEnd = null;\n this._applyTimezoneShift(currentDate, 'add', 'Hour');\n continue;\n }\n }\n\n // Match minute\n if (!matchSchedule(currentDate.getMinutes(), this.fields.minute)) {\n this._applyTimezoneShift(currentDate, dateMathVerb, 'Minute');\n continue;\n }\n\n // Match second\n if (!matchSchedule(currentDate.getSeconds(), this.fields.second)) {\n this._applyTimezoneShift(currentDate, dateMathVerb, 'Second');\n continue;\n }\n\n // Increase a second in case in the first iteration the currentDate was not\n // modified\n if (startTimestamp === currentDate.getTime()) {\n if ((dateMathVerb === 'add') || (currentDate.getMilliseconds() === 0)) {\n this._applyTimezoneShift(currentDate, dateMathVerb, 'Second');\n } else {\n currentDate.setMilliseconds(0);\n }\n\n continue;\n }\n\n break;\n }\n\n if (stepCount >= LOOP_LIMIT) {\n throw new Error('Invalid expression, loop limit exceeded');\n }\n\n this._currentDate = new CronDate(currentDate, this._tz);\n this._hasIterated = true;\n\n return currentDate;\n};\n\n/**\n * Find next suitable date\n *\n * @public\n * @return {CronDate|Object}\n */\nCronExpression.prototype.next = function next () {\n var schedule = this._findSchedule();\n\n // Try to return ES6 compatible iterator\n if (this._isIterator) {\n return {\n value: schedule,\n done: !this.hasNext()\n };\n }\n\n return schedule;\n};\n\n/**\n * Find previous suitable date\n *\n * @public\n * @return {CronDate|Object}\n */\nCronExpression.prototype.prev = function prev () {\n var schedule = this._findSchedule(true);\n\n // Try to return ES6 compatible iterator\n if (this._isIterator) {\n return {\n value: schedule,\n done: !this.hasPrev()\n };\n }\n\n return schedule;\n};\n\n/**\n * Check if next suitable date exists\n *\n * @public\n * @return {Boolean}\n */\nCronExpression.prototype.hasNext = function() {\n var current = this._currentDate;\n var hasIterated = this._hasIterated;\n\n try {\n this._findSchedule();\n return true;\n } catch (err) {\n return false;\n } finally {\n this._currentDate = current;\n this._hasIterated = hasIterated;\n }\n};\n\n/**\n * Check if previous suitable date exists\n *\n * @public\n * @return {Boolean}\n */\nCronExpression.prototype.hasPrev = function() {\n var current = this._currentDate;\n var hasIterated = this._hasIterated;\n\n try {\n this._findSchedule(true);\n return true;\n } catch (err) {\n return false;\n } finally {\n this._currentDate = current;\n this._hasIterated = hasIterated;\n }\n};\n\n/**\n * Iterate over expression iterator\n *\n * @public\n * @param {Number} steps Numbers of steps to iterate\n * @param {Function} callback Optional callback\n * @return {Array} Array of the iterated results\n */\nCronExpression.prototype.iterate = function iterate (steps, callback) {\n var dates = [];\n\n if (steps >= 0) {\n for (var i = 0, c = steps; i < c; i++) {\n try {\n var item = this.next();\n dates.push(item);\n\n // Fire the callback\n if (callback) {\n callback(item, i);\n }\n } catch (err) {\n break;\n }\n }\n } else {\n for (var i = 0, c = steps; i > c; i--) {\n try {\n var item = this.prev();\n dates.push(item);\n\n // Fire the callback\n if (callback) {\n callback(item, i);\n }\n } catch (err) {\n break;\n }\n }\n }\n\n return dates;\n};\n\n/**\n * Reset expression iterator state\n *\n * @public\n */\nCronExpression.prototype.reset = function reset (newDate) {\n this._currentDate = new CronDate(newDate || this._options.currentDate);\n};\n\n/**\n * Stringify the expression\n *\n * @public\n * @param {Boolean} [includeSeconds] Should stringify seconds\n * @return {String}\n */\nCronExpression.prototype.stringify = function stringify(includeSeconds) {\n var resultArr = [];\n for (var i = includeSeconds ? 0 : 1, c = CronExpression.map.length; i < c; ++i) {\n var field = CronExpression.map[i];\n var value = this.fields[field];\n var constraint = CronExpression.constraints[i];\n\n if (field === 'dayOfMonth' && this.fields.month.length === 1) {\n constraint = { min: 1, max: CronExpression.daysInMonth[this.fields.month[0] - 1] };\n } else if (field === 'dayOfWeek') {\n // Prefer 0-6 range when serializing day of week field\n constraint = { min: 0, max: 6 };\n value = value[value.length - 1] === 7 ? value.slice(0, -1) : value;\n }\n\n resultArr.push(stringifyField(value, constraint.min, constraint.max));\n }\n return resultArr.join(' ');\n};\n\n/**\n * Parse input expression (async)\n *\n * @public\n * @param {String} expression Input expression\n * @param {Object} [options] Parsing options\n */\nCronExpression.parse = function parse(expression, options) {\n var self = this;\n if (typeof options === 'function') {\n options = {};\n }\n\n function parse (expression, options) {\n if (!options) {\n options = {};\n }\n\n if (typeof options.currentDate === 'undefined') {\n options.currentDate = new CronDate(undefined, self._tz);\n }\n\n // Is input expression predefined?\n if (CronExpression.predefined[expression]) {\n expression = CronExpression.predefined[expression];\n }\n\n // Split fields\n var fields = [];\n var atoms = (expression + '').trim().split(/\\s+/);\n\n if (atoms.length > 6) {\n throw new Error('Invalid cron expression');\n }\n\n // Resolve fields\n var start = (CronExpression.map.length - atoms.length);\n for (var i = 0, c = CronExpression.map.length; i < c; ++i) {\n var field = CronExpression.map[i]; // Field name\n var value = atoms[atoms.length > c ? i : i - start]; // Field value\n\n if (i < start || !value) { // Use default value\n fields.push(CronExpression._parseField(\n field,\n CronExpression.parseDefaults[i],\n CronExpression.constraints[i]\n )\n );\n } else {\n var val = field === 'dayOfWeek' ? parseNthDay(value) : value;\n\n fields.push(CronExpression._parseField(\n field,\n val,\n CronExpression.constraints[i]\n )\n );\n }\n }\n\n var mappedFields = {};\n for (var i = 0, c = CronExpression.map.length; i < c; i++) {\n var key = CronExpression.map[i];\n mappedFields[key] = fields[i];\n }\n\n var dayOfMonth = CronExpression._handleMaxDaysInMonth(mappedFields);\n mappedFields.dayOfMonth = dayOfMonth || mappedFields.dayOfMonth;\n return new CronExpression(mappedFields, options);\n\n /**\n * Parses out the # special character for the dayOfWeek field & adds it to options.\n *\n * @param {String} val\n * @return {String}\n * @private\n */\n function parseNthDay(val) {\n var atoms = val.split('#');\n if (atoms.length > 1) {\n var nthValue = +atoms[atoms.length - 1];\n if(/,/.test(val)) {\n throw new Error('Constraint error, invalid dayOfWeek `#` and `,` '\n + 'special characters are incompatible');\n }\n if(/\\//.test(val)) {\n throw new Error('Constraint error, invalid dayOfWeek `#` and `/` '\n + 'special characters are incompatible');\n }\n if(/-/.test(val)) {\n throw new Error('Constraint error, invalid dayOfWeek `#` and `-` '\n + 'special characters are incompatible');\n }\n if (atoms.length > 2 || Number.isNaN(nthValue) || (nthValue < 1 || nthValue > 5)) {\n throw new Error('Constraint error, invalid dayOfWeek occurrence number (#)');\n }\n\n options.nthDayOfWeek = nthValue;\n return atoms[0];\n }\n return val;\n }\n }\n\n return parse(expression, options);\n};\n\n/**\n * Convert cron fields back to Cron Expression\n *\n * @public\n * @param {Object} fields Input fields\n * @param {Object} [options] Parsing options\n * @return {Object}\n */\nCronExpression.fieldsToExpression = function fieldsToExpression(fields, options) {\n function validateConstraints (field, values, constraints) {\n if (!values) {\n throw new Error('Validation error, Field ' + field + ' is missing');\n }\n if (values.length === 0) {\n throw new Error('Validation error, Field ' + field + ' contains no values');\n }\n for (var i = 0, c = values.length; i < c; i++) {\n var value = values[i];\n\n if (CronExpression._isValidConstraintChar(constraints, value)) {\n continue;\n }\n\n // Check constraints\n if (typeof value !== 'number' || Number.isNaN(value) || value < constraints.min || value > constraints.max) {\n throw new Error(\n 'Constraint error, got value ' + value + ' expected range ' +\n constraints.min + '-' + constraints.max\n );\n }\n }\n }\n\n var mappedFields = {};\n for (var i = 0, c = CronExpression.map.length; i < c; ++i) {\n var field = CronExpression.map[i]; // Field name\n var values = fields[field];\n validateConstraints(\n field,\n values,\n CronExpression.constraints[i]\n );\n var copy = [];\n var j = -1;\n while (++j < values.length) {\n copy[j] = values[j];\n }\n values = copy.sort(CronExpression._sortCompareFn)\n .filter(function(item, pos, ary) {\n return !pos || item !== ary[pos - 1];\n });\n if (values.length !== copy.length) {\n throw new Error('Validation error, Field ' + field + ' contains duplicate values');\n }\n mappedFields[field] = values;\n }\n var dayOfMonth = CronExpression._handleMaxDaysInMonth(mappedFields);\n mappedFields.dayOfMonth = dayOfMonth || mappedFields.dayOfMonth;\n return new CronExpression(mappedFields, options || {});\n};\n\nmodule.exports = CronExpression;\n","'use strict';\n\nvar CronExpression = require('./expression');\n\nfunction CronParser() {}\n\n/**\n * Parse crontab entry\n *\n * @private\n * @param {String} entry Crontab file entry/line\n */\nCronParser._parseEntry = function _parseEntry (entry) {\n var atoms = entry.split(' ');\n\n if (atoms.length === 6) {\n return {\n interval: CronExpression.parse(entry)\n };\n } else if (atoms.length > 6) {\n return {\n interval: CronExpression.parse(\n atoms.slice(0, 6).join(' ')\n ),\n command: atoms.slice(6, atoms.length)\n };\n } else {\n throw new Error('Invalid entry: ' + entry);\n }\n};\n\n/**\n * Wrapper for CronExpression.parser method\n *\n * @public\n * @param {String} expression Input expression\n * @param {Object} [options] Parsing options\n * @return {Object}\n */\nCronParser.parseExpression = function parseExpression (expression, options) {\n return CronExpression.parse(expression, options);\n};\n\n/**\n * Wrapper for CronExpression.fieldsToExpression method\n *\n * @public\n * @param {Object} fields Input fields\n * @param {Object} [options] Parsing options\n * @return {Object}\n */\nCronParser.fieldsToExpression = function fieldsToExpression (fields, options) {\n return CronExpression.fieldsToExpression(fields, options);\n};\n\n/**\n * Parse content string\n *\n * @public\n * @param {String} data Crontab content\n * @return {Object}\n */\nCronParser.parseString = function parseString (data) {\n var blocks = data.split('\\n');\n\n var response = {\n variables: {},\n expressions: [],\n errors: {}\n };\n\n for (var i = 0, c = blocks.length; i < c; i++) {\n var block = blocks[i];\n var matches = null;\n var entry = block.trim(); // Remove surrounding spaces\n\n if (entry.length > 0) {\n if (entry.match(/^#/)) { // Comment\n continue;\n } else if ((matches = entry.match(/^(.*)=(.*)$/))) { // Variable\n response.variables[matches[1]] = matches[2];\n } else { // Expression?\n var result = null;\n\n try {\n result = CronParser._parseEntry('0 ' + entry);\n response.expressions.push(result.interval);\n } catch (err) {\n response.errors[entry] = err;\n }\n }\n }\n }\n\n return response;\n};\n\n/**\n * Parse crontab file\n *\n * @public\n * @param {String} filePath Path to file\n * @param {Function} callback\n */\nCronParser.parseFile = function parseFile (filePath, callback) {\n require('fs').readFile(filePath, function(err, data) {\n if (err) {\n callback(err);\n return;\n }\n\n return callback(null, CronParser.parseString(data.toString()));\n });\n};\n\nmodule.exports = CronParser;\n","// Process-wide invocation context, propagated with `AsyncLocalStorage`.\n//\n// The runtime request handler wraps each `capability.run(...)` in this context\n// (see `@stackbone/agent-server`'s `request-handler`), so any code running\n// inside an invoke — the creator's handler, the SDK's own loggers, a stray\n// `console.log` — can recover the active `invocationId` / `runId` without the\n// handler having to thread them through every call.\n//\n// Why an ALS and not a plain module variable: the agent process serves invokes\n// concurrently (the node:http adapter does not serialise requests). A single\n// mutable \"current invocation\" would be clobbered the moment two invokes\n// overlap. `AsyncLocalStorage` keeps a separate store per async call tree, so\n// each invoke's logs stay correlated to the right run even under concurrency.\n//\n// `invocationId` is the value the canonical logs call `trace_id` (the control\n// plane mints it once per invoke and threads it through the envelope); `runId`\n// is the run the invoke belongs to.\n\nimport { AsyncLocalStorage } from 'node:async_hooks';\n\nexport interface InvocationContext {\n /** The envelope's `invocationId` — surfaced on log lines as `trace_id`. */\n readonly invocationId: string;\n /** The run this invoke belongs to — surfaced on log lines as `run_id`. */\n readonly runId: string;\n /**\n * The handler this invoke routed to — `invoke` for a direct entry or the\n * named job handler (e.g. `demo-log-job`) the dispatcher delivered to.\n * Surfaced on log lines as `handler` so the Studio logs trail can tell which\n * entrypoint emitted each line. Optional so a caller that binds a context\n * without routing info (older tests, lifecycle hooks) still type-checks.\n */\n readonly handler?: string;\n /**\n * The projected `run_steps.id` of the workflow step currently executing, when\n * the runtime can attribute the active async tree to one step. The\n * workflow-HITL helper reads it so an approval row can be anchored to the\n * exact step that requested it (`approvals.requested_by_step_id`, A6).\n *\n * GAP (2026-06-20): no caller populates this yet. The emulator binds the\n * invocation context once per WHOLE flow dispatch (see the runtime-mount\n * `flowPost` wrap), not per step, and the Workflow World runs as a FLAT tree\n * whose events carry `writer: null` / `executionContext: null`, so the\n * per-step World id is not visible at the point a `\"use step\"` runs. The seam\n * is threaded end-to-end (context → ambient approval client → INSERT) so the\n * column is stamped the moment a step id becomes available, without another\n * surface change. Until then it stays `undefined` and the column stays NULL.\n */\n readonly requestedByStepId?: string;\n}\n\nconst storage = new AsyncLocalStorage<InvocationContext>();\n\n/**\n * Runs `fn` with `context` bound as the active invocation. The context stays\n * available to every synchronous and asynchronous continuation rooted in this\n * call (i.e. across `await`s inside `fn`). Returns whatever `fn` returns.\n */\nexport function runWithInvocationContext<T>(context: InvocationContext, fn: () => T): T {\n return storage.run(context, fn);\n}\n\n/**\n * Returns the active invocation context, or `undefined` when called outside any\n * invoke (process boot, lifecycle events, tests that don't set one up).\n */\nexport function getInvocationContext(): InvocationContext | undefined {\n return storage.getStore();\n}\n\n/**\n * Ergonomic wrapper for callers that already hold a single correlation id and\n * want to bind it as the active run/trace for `fn` — the durable workflow step\n * call-site is the first such caller (F5): it knows the projected `run_id` and\n * the World run id, and wraps a step's execution so the step's logs and SDK\n * operations correlate to its run.\n *\n * It does NOT generate ids — that stays a caller concern, exactly like\n * `runWithInvocationContext`. `runId` and `invocationId` default to the single\n * `id` you pass, so `runWithCallerId(runId, fn)` binds a context where the run\n * and trace share that id; pass distinct values (e.g. the World run id as the\n * trace) via the options form.\n */\nexport function runWithCallerId<T>(\n id: string,\n fn: () => T,\n options?: { readonly invocationId?: string; readonly handler?: string },\n): T {\n const context: InvocationContext = {\n runId: id,\n invocationId: options?.invocationId ?? id,\n // Only attach `handler` when supplied: `exactOptionalPropertyTypes` forbids\n // an explicit `undefined` on an optional property.\n ...(options?.handler !== undefined ? { handler: options.handler } : {}),\n };\n return runWithInvocationContext(context, fn);\n}\n","/**\n * Optional overrides accepted by `createClient`. All fields are optional;\n * the resolver applies the precedence rule (`config.xxx` first, env var\n * fallback) and produces a fully typed `ResolvedConfig` so downstream\n * modules never have to know the env-var names or the order of precedence.\n */\nexport interface ClientConfig {\n /** Ed25519 JWT signed by the control plane. Falls back to `STACKBONE_AGENT_JWT`. */\n agentJwt?: string;\n /** Stackbone control plane base URL used by the facade HttpClient. Falls back to `STACKBONE_API_URL`. */\n stackboneApiUrl?: string;\n /** Stable agent identifier injected at provisioning. Falls back to `STACKBONE_AGENT_ID`. Used as the multi-tenant key prefix in `client.storage`. */\n agentId?: string;\n /**\n * Postgres connection string consumed by `client.rag` and the platform\n * observability exporter. Falls back to `STACKBONE_POSTGRES_URL` — the same\n * env var `client.database` reads, so a single connection string covers\n * every SDK consumer that talks to the agent's Postgres.\n */\n databaseUrl?: string;\n /**\n * Per-agent encryption key (base64, 32 bytes) used to decrypt the agent's\n * own application secrets read directly from `stackbone_platform.secrets`.\n * Falls back to `STACKBONE_SECRET_KEY` — the per-agent key the saga/harness\n * inject into the runtime env. This is the ONLY new env channel the\n * agent-owned-secrets split adds; the deliberate no-generic-env-channel\n * stance is preserved.\n */\n secretKey?: string;\n openrouterKey?: string;\n openrouterBaseUrl?: string;\n llamaParseApiKey?: string;\n /** mem0 API key for the long-term memory backend (`client.memory`). Falls back to `MEM0_API_KEY`. */\n mem0ApiKey?: string;\n /** mem0 API base URL. Falls back to `MEM0_BASE_URL` (defaults to mem0 cloud when unset). */\n mem0BaseUrl?: string;\n /** HMAC key the control plane uses to sign approval-decision callbacks. Falls back to `STACKBONE_APPROVAL_SIGNING_KEY`. */\n approvalSigningKey?: string;\n /**\n * Identifies the install the agent runs inside. Sent as the\n * `X-Stackbone-Installation-Id` header when the SDK talks to the control\n * plane. Falls back to `STACKBONE_INSTALLATION_ID`.\n * TODO(studio-v1): remove once `STACKBONE_AGENT_JWT` carries the install id\n * and `apps/api` derives it from the bearer instead of an explicit header.\n */\n installationId?: string;\n s3?: {\n /** Falls back to `STACKBONE_S3_ACCESS_KEY`. */\n accessKeyId?: string;\n /** Falls back to `STACKBONE_S3_SECRET_KEY`. */\n secretAccessKey?: string;\n /** Falls back to `STACKBONE_S3_ENDPOINT`. */\n endpoint?: string;\n /** Physical R2/S3 bucket scoped to the agent. Falls back to `STACKBONE_S3_BUCKET`. */\n bucket?: string;\n /** AWS region. Falls back to `STACKBONE_S3_REGION`, defaults to `'auto'` (R2/MinIO). */\n region?: string;\n };\n otel?: {\n exporterOtlpEndpoint?: string;\n resourceAttributes?: string;\n };\n /**\n * RAG-related defaults parsed from `agent.yaml.rag` by the CLI/orchestrator\n * and forwarded here. The SDK never reads `agent.yaml` itself — keeping\n * filesystem ownership in the CLI. Defaults follow ADR\n * `2026-06-05-rag` (D2/D6).\n */\n rag?: {\n /**\n * Embedding model used by `client.rag.ingest`/`retrieve` when the caller\n * omits `model`. Defaults to `openai/text-embedding-3-small`.\n */\n embeddingModel?: string;\n };\n /**\n * Creator-side floor on the negotiated Stackbone Agent Protocol contract\n * version. Sourced from `agent.yaml.protocol.required` by the\n * CLI/orchestrator (the SDK never reads `agent.yaml` itself). When set and\n * the datapath's negotiated `contract.version` is below this value, every\n * gated module call returns `SdkError('contract_version_unsupported',\n * { detected, required })` — independent of per-module capability gating.\n * When omitted, the SDK uses `MIN_SUPPORTED_CONTRACT_VERSION` as the\n * implicit floor (i.e. behaviour matches slice F5).\n */\n protocolRequired?: number;\n}\n\n/**\n * Fully-resolved, typed snapshot the SDK consumes. The resolver is the **only**\n * place in the library that touches `process.env`; every downstream module\n * reads from typed fields here instead of consulting the environment itself.\n *\n * Precedence rule: `config.xxx` (passed to `createClient`) wins over\n * `process.env['XXX']`. Required env vars surface as `string | undefined` —\n * the resolver never throws when a var is missing; whether a missing value\n * is fatal is a per-surface decision (some error at construction, others\n * lazily on first use).\n *\n * Construction is a snapshot. Tests that mutated `process.env` between\n * `createClient()` and the first module access used to observe the new value\n * through the old `env` channel; they now pass overrides via `createClient`\n * or rebuild a new `ResolvedConfig` after mutating `process.env`. Snapshot\n * semantics make the SDK easier to reason about — one read, one source.\n *\n * Note: there is intentionally no `env` channel. Reading\n * `resolved.env['SOMETHING']` is a type error. Adding a new env-driven\n * setting means adding a typed field here and resolving it in\n * `resolveConfig`.\n */\nexport interface ResolvedConfig {\n /** The frozen creator-supplied options (untouched, for debug introspection). */\n readonly config: Readonly<ClientConfig>;\n\n // ----- Control plane -----\n /** Resolved from `config.stackboneApiUrl` ?? `STACKBONE_API_URL`. */\n readonly stackboneApiUrl: string | undefined;\n /** Resolved from `config.agentJwt` ?? `STACKBONE_AGENT_JWT`. */\n readonly agentJwt: string | undefined;\n /** Resolved from `config.installationId` ?? `STACKBONE_INSTALLATION_ID`. */\n readonly installationId: string | undefined;\n /** Resolved from `config.approvalSigningKey` ?? `STACKBONE_APPROVAL_SIGNING_KEY`. */\n readonly approvalSigningKey: string | undefined;\n\n // ----- Agent identity / Postgres -----\n /** Resolved from `config.agentId` ?? `STACKBONE_AGENT_ID`. */\n readonly agentId: string | undefined;\n /** Resolved from `config.databaseUrl` ?? `STACKBONE_POSTGRES_URL`. Shared by `client.database`, `client.rag`, and the platform observability hooks in `@stackbone/sdk/observability`. */\n readonly databaseUrl: string | undefined;\n /**\n * Resolved from `config.secretKey` ?? `STACKBONE_SECRET_KEY`. The per-agent\n * base64 encryption key `client.secrets` uses to decrypt rows read straight\n * out of `stackbone_platform.secrets`.\n */\n readonly secretKey: string | undefined;\n\n // ----- OpenRouter (client.ai) -----\n /** Resolved from `config.openrouterKey` ?? `OPENROUTER_API_KEY`. */\n readonly openrouterKey: string | undefined;\n /** Resolved from `config.openrouterBaseUrl` ?? `OPENROUTER_BASE_URL`. `undefined` means use the OpenRouter default. */\n readonly openrouterBaseUrl: string | undefined;\n\n // ----- S3 / R2 / MinIO (client.storage) -----\n /** Resolved from `config.s3.accessKeyId` ?? `STACKBONE_S3_ACCESS_KEY`. */\n readonly s3AccessKeyId: string | undefined;\n /** Resolved from `config.s3.secretAccessKey` ?? `STACKBONE_S3_SECRET_KEY`. */\n readonly s3SecretAccessKey: string | undefined;\n /** Resolved from `config.s3.endpoint` ?? `STACKBONE_S3_ENDPOINT`. */\n readonly s3Endpoint: string | undefined;\n /** Resolved from `config.s3.bucket` ?? `STACKBONE_S3_BUCKET`. */\n readonly s3Bucket: string | undefined;\n /** Resolved from `config.s3.region` ?? `STACKBONE_S3_REGION` ?? `'auto'`. Always defined. */\n readonly s3Region: string;\n\n // ----- OpenTelemetry -----\n /** Resolved from `config.otel.exporterOtlpEndpoint` ?? `OTEL_EXPORTER_OTLP_ENDPOINT`. */\n readonly otelExporterOtlpEndpoint: string | undefined;\n\n // ----- Contract handshake / runtime knobs -----\n /**\n * `true` unless `STACKBONE_REQUIRE_CONTRACT=0` is set. Consulted by the\n * contract gate to decide whether a `capability_unavailable` /\n * `contract_version_unsupported` error becomes a hard failure or a logged\n * warning (escape-hatch path).\n */\n readonly requireContract: boolean;\n /**\n * Parsed `STACKBONE_CONTRACT_TTL_MS`. `undefined` (default) means cached\n * handshakes never expire within the process lifetime; a positive integer\n * caps the cache entry's `expiresAt`.\n */\n readonly contractTtlMs: number | undefined;\n /**\n * `true` only when `STACKBONE_DEBUG=1` is set. Consulted by the handshake\n * to emit a one-shot debug line per (store, baseUrl) tuple after a\n * successful negotiation.\n */\n readonly debug: boolean;\n\n // ----- RAG defaults -----\n /**\n * Embedding model parsed by the CLI from `agent.yaml.rag.embeddingModel`\n * and forwarded as `config.rag.embeddingModel`. Same value, surfaced\n * directly so consumers don't reach through the nested object.\n */\n readonly ragEmbeddingModel: string | undefined;\n\n // ----- Protocol negotiation -----\n /**\n * Forwarded from `config.protocolRequired`. The CLI sources it from\n * `agent.yaml.protocol.required`; there is no env-var fallback today.\n */\n readonly protocolRequired: number | undefined;\n}\n\n/**\n * Single seam in the SDK for reading `process.env`. Every downstream module\n * accepts a `ResolvedConfig` and reads typed fields off it — they MUST NOT\n * touch `process.env` directly. Adding a new env-driven setting means\n * extending `ResolvedConfig` and resolving it here.\n *\n * The result is a snapshot, not a live view: mutating `process.env` after\n * this returns will not change the resolved values. Callers that need to\n * pick up env-var rotation must build a new `ResolvedConfig` (most easily\n * by constructing a new `StackboneClient`).\n */\nexport function resolveConfig(config: ClientConfig): ResolvedConfig {\n const env = process.env;\n return Object.freeze({\n config: Object.freeze({ ...config }),\n\n // Control plane.\n stackboneApiUrl: config.stackboneApiUrl ?? env['STACKBONE_API_URL'],\n agentJwt: config.agentJwt ?? env['STACKBONE_AGENT_JWT'],\n installationId: config.installationId ?? env['STACKBONE_INSTALLATION_ID'],\n approvalSigningKey: config.approvalSigningKey ?? env['STACKBONE_APPROVAL_SIGNING_KEY'],\n\n // Agent identity / Postgres.\n agentId: config.agentId ?? env['STACKBONE_AGENT_ID'],\n databaseUrl: config.databaseUrl ?? env['STACKBONE_POSTGRES_URL'],\n secretKey: config.secretKey ?? env['STACKBONE_SECRET_KEY'],\n\n // OpenRouter.\n openrouterKey: config.openrouterKey ?? env['OPENROUTER_API_KEY'],\n openrouterBaseUrl: config.openrouterBaseUrl ?? env['OPENROUTER_BASE_URL'],\n\n // S3 / R2 / MinIO.\n s3AccessKeyId: config.s3?.accessKeyId ?? env['STACKBONE_S3_ACCESS_KEY'],\n s3SecretAccessKey: config.s3?.secretAccessKey ?? env['STACKBONE_S3_SECRET_KEY'],\n s3Endpoint: config.s3?.endpoint ?? env['STACKBONE_S3_ENDPOINT'],\n s3Bucket: config.s3?.bucket ?? env['STACKBONE_S3_BUCKET'],\n s3Region: config.s3?.region ?? env['STACKBONE_S3_REGION'] ?? 'auto',\n\n // OpenTelemetry.\n otelExporterOtlpEndpoint:\n config.otel?.exporterOtlpEndpoint ?? env['OTEL_EXPORTER_OTLP_ENDPOINT'],\n\n // Contract handshake / runtime knobs (env-only today).\n requireContract: env['STACKBONE_REQUIRE_CONTRACT'] !== '0',\n contractTtlMs: parseTtlMs(env['STACKBONE_CONTRACT_TTL_MS']),\n debug: env['STACKBONE_DEBUG'] === '1',\n\n // RAG defaults.\n ragEmbeddingModel: config.rag?.embeddingModel,\n\n // Protocol negotiation.\n protocolRequired: config.protocolRequired,\n });\n}\n\n/**\n * Parses `STACKBONE_CONTRACT_TTL_MS` once at resolve time. Anything missing,\n * empty, non-numeric or non-positive collapses to `undefined` (the\n * \"cache forever within the process\" default consumers expect).\n */\nfunction parseTtlMs(raw: string | undefined): number | undefined {\n if (raw === undefined || raw === '') return undefined;\n const n = Number.parseInt(raw, 10);\n if (!Number.isFinite(n) || n <= 0) return undefined;\n return n;\n}\n","// Centralizes the orval workaround for \"open JSON object\" fields.\n//\n// Why `z.looseObject({})` instead of `z.unknown()` / `z.record(z.unknown())`:\n// nestjs-zod emits OpenAPI 3.1 fragments for those schemas, including a\n// `propertyNames` clause that orval (our frontend client generator) currently\n// rejects. `z.looseObject({})` round-trips through nestjs-zod as a flat\n// open object in the emitted spec, which orval consumes cleanly while\n// preserving the \"any JSON object\" runtime contract.\n//\n// TODO: once orval supports OpenAPI 3.1 (incl. `propertyNames`), migrate\n// every call site of `jsonObject()` to `z.unknown()` / `z.record(z.unknown())`\n// and delete this helper. Until then, this is the single source of truth —\n// do not inline `z.looseObject({})` at call sites.\nimport { z } from 'zod';\n\nexport const jsonObject = () => z.looseObject({});\n","import { z } from 'zod';\n\n// Slug shape mirrors the runtime contract enforced by OrganizationService:\n// lowercase ASCII letters/digits separated by single hyphens, no leading or\n// trailing hyphen, 1..63 chars. Used by GET /api/v1/organizations/:slug.\nconst SLUG_REGEX = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;\n\nexport const organizationSlugSchema = z\n .string()\n .min(1, 'slug must not be empty')\n .max(63, 'slug must be 63 chars or fewer')\n .regex(SLUG_REGEX, 'slug must be lowercase alphanumeric with single hyphens');\n\n// Same shape as organization slugs — the agent table uses an\n// (organization_id, slug) UNIQUE so slugs only need to be unique per\n// organization.\nexport const agentSlugSchema = organizationSlugSchema;\n\nexport const getOrganizationParamsSchema = z.object({\n slug: organizationSlugSchema,\n});\n\nexport type GetOrganizationParams = z.infer<typeof getOrganizationParamsSchema>;\n\n// Shared response shape for GET /api/v1/organizations/me and\n// GET /api/v1/organizations/:slug. Lives here (and not next to the controller)\n// so apps/cli can validate the same JSON without depending on libs/contract/api-client\n// (Angular HttpClient-only). Ownership is derived from\n// `organization_member.role = 'owner'` and surfaced through the members\n// endpoint (`GET /api/v1/organizations/:slug/members`).\nexport const organizationResponseSchema = z.object({\n id: z.uuid(),\n slug: organizationSlugSchema,\n name: z.string(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\n\nexport type OrganizationResponse = z.infer<typeof organizationResponseSchema>;\n\n// Response shape for `GET /api/v1/organizations/:slug/integrations/openrouter/dev-key`.\n// Deliberately returns the PLAINTEXT OpenRouter key to an authenticated member\n// of the organization so the CLI can seed it into the local emulator's secrets\n// when the creator has no `OPENROUTER_API_KEY` of their own. This is the ONE\n// endpoint allowed to surface the secret in a response body — the guard +\n// `organization:read` capability gate every caller, and a non-member collapses\n// to 404. `baseUrl` is optional so the CLI can point the SDK at the right\n// OpenRouter host when the control plane runs against a non-default base URL.\nexport const organizationOpenrouterDevKeyResponseSchema = z.object({\n key: z.string(),\n baseUrl: z.url().optional(),\n});\nexport type OrganizationOpenrouterDevKeyResponse = z.infer<\n typeof organizationOpenrouterDevKeyResponseSchema\n>;\n\n// Request body for `POST /api/v1/organizations`. `tier` is fixed to `'free'`\n// in MVP — paid creation goes through Stripe Checkout on an existing org.\n// When `name` is omitted the service falls back to \"Organization de <email>\"\n// for parity with `createForUser`.\nexport const createOrganizationRequestSchema = z.object({\n name: z.string().trim().min(1).max(120).optional(),\n tier: z.literal('free').default('free'),\n});\nexport type CreateOrganizationRequest = z.infer<typeof createOrganizationRequestSchema>;\n\n// Status of the org's OpenRouter key configuration, surfaced by\n// `GET /api/v1/organizations/:slug/integrations/openrouter/key-status`.\n// `mode` is `'custom'` when a bring-your-own org key is configured (it WINS\n// over the auto-minted managed key for both dev and production), otherwise\n// `'managed'`. `managedSpendCapUsd` is the per-install spend cap of the\n// managed key at the org's tier. `customConfigured` mirrors `mode === 'custom'`\n// and `customLast4` exposes only the last 4 chars of the custom key (or `null`\n// when none is set) — the custom key value itself is WRITE-ONLY and is never\n// returned by any endpoint.\nexport const organizationOpenrouterKeyStatusResponseSchema = z.object({\n mode: z.enum(['managed', 'custom']),\n managedSpendCapUsd: z.number(),\n customConfigured: z.boolean(),\n customLast4: z.string().nullable(),\n});\nexport type OrganizationOpenrouterKeyStatusResponse = z.infer<\n typeof organizationOpenrouterKeyStatusResponseSchema\n>;\n\n// Request body for `PUT /api/v1/organizations/:slug/integrations/openrouter/custom-key`.\n// The pasted key is verified against OpenRouter before it is persisted and is\n// never returned afterwards. `apiKey` must look like an OpenRouter key\n// (`sk-or-…`, at least 20 chars).\nexport const setOrganizationOpenrouterCustomKeyRequestSchema = z.object({\n apiKey: z\n .string()\n .min(20, 'apiKey must be at least 20 characters')\n .startsWith('sk-or-', 'apiKey must be an OpenRouter key (starts with \"sk-or-\")'),\n});\nexport type SetOrganizationOpenrouterCustomKeyRequest = z.infer<\n typeof setOrganizationOpenrouterCustomKeyRequestSchema\n>;\n","import { z } from 'zod';\nimport { jsonObject } from '../common/json-object';\nimport { organizationSlugSchema } from '../organizations/organizations';\n\n// Shared Zod shapes for the connectors / connections / automations domain. The\n// DB enums in `@stackbone/db-core` are the source of truth for the string sets;\n// these schemas re-declare the same literals at the wire boundary (the two\n// scopes never import each other — validators is a leaf) and are unit-checked to\n// stay in lock-step.\n\n// How a workspace connection holds its credential. Mirrors\n// `CONNECTION_AUTH_KINDS` in the schema.\nexport const connectionAuthKindSchema = z.enum(['api_key', 'oauth2']);\nexport type ConnectionAuthKind = z.infer<typeof connectionAuthKindSchema>;\n\n// Operator-facing connection health. Mirrors `CONNECTION_HEALTH_STATUSES`.\nexport const connectionHealthStatusSchema = z.enum(['active', 'expiring', 'error', 'revoked']);\nexport type ConnectionHealthStatus = z.infer<typeof connectionHealthStatusSchema>;\n\n// Lifecycle of one trigger firing. Mirrors `AUTOMATION_DELIVERY_STATUSES`.\nexport const automationDeliveryStatusSchema = z.enum([\n 'received',\n 'mapped',\n 'invoked',\n 'acted',\n 'succeeded',\n 'failed',\n 'dead',\n]);\nexport type AutomationDeliveryStatus = z.infer<typeof automationDeliveryStatusSchema>;\n\n// Catalog identifiers (connector / trigger / action ids) are short lowercase\n// slugs. Bounded so a malformed id surfaces a field-level 400 instead of\n// flowing into a join key.\nexport const connectorIdSchema = z\n .string()\n .min(1)\n .max(64)\n .regex(/^[a-z0-9][a-z0-9_-]*$/, 'must be a lowercase slug');\n\n// A JSONata mapping expression, written by the operator and treated as\n// untrusted input. The byte cap is a first-line guard; evaluation limits\n// (timeout, output size) are enforced by the mapping engine at run time.\nexport const jsonataExpressionSchema = z.string().min(1).max(10_000);\n\n// Common automation fields shared by create and update. Both trigger and action\n// sides are optional here; the cross-field rule that at least one side must be\n// present is applied by the create schema (an update is a partial patch).\nconst automationBaseFields = {\n name: z.string().min(1).max(200),\n // Trigger side.\n triggerConnectionId: z.uuid().nullable().optional(),\n triggerId: connectorIdSchema.nullable().optional(),\n // Mapping (JSONata source text).\n inputMapping: jsonataExpressionSchema.nullable().optional(),\n outputMapping: jsonataExpressionSchema.nullable().optional(),\n // Named agent handler; omitted / null → the agent's default handler.\n handlerName: z.string().min(1).max(200).nullable().optional(),\n // Action side.\n actionConnectionId: z.uuid().nullable().optional(),\n actionId: connectorIdSchema.nullable().optional(),\n};\n\n// POST automation — operator (or recipe seed) creates an automation. At least\n// one side must be configured: a row with neither a trigger nor an action is\n// meaningless and the DB rejects it too.\nexport const createAutomationRequestSchema = z\n .object({\n ...automationBaseFields,\n // Optional: defaults to enabled. A recipe may seed a paused automation.\n enabled: z.boolean().optional(),\n })\n .strict()\n .refine((value) => value.triggerId != null || value.actionId != null, {\n message: 'an automation needs at least a trigger or an action',\n path: ['triggerId'],\n });\nexport type CreateAutomationRequest = z.infer<typeof createAutomationRequestSchema>;\n\n// PATCH automation — partial edit. Every field optional (including `name`,\n// which is required on create); the enable/disable flip carries its own reason\n// so the cascade-disable notice is preserved.\nexport const updateAutomationRequestSchema = z\n .object({\n ...automationBaseFields,\n name: z.string().min(1).max(200).optional(),\n enabled: z.boolean().optional(),\n // Why the automation is being disabled (manual pause vs cascade). Only\n // meaningful alongside `enabled: false`.\n disabledReason: z.string().min(1).max(500).nullable().optional(),\n })\n .strict();\nexport type UpdateAutomationRequest = z.infer<typeof updateAutomationRequestSchema>;\n\n// --- Workspace connections --------------------------------------------------\n// Wire shapes backing `/api/v1/organizations/:slug/connections`. Only `api_key`\n// connections are created through the HTTP endpoint; `oauth2` connections are\n// minted by the OAuth callback flow, so the create body carries no auth-kind\n// discriminator — it is always an api_key credential.\n\n// Path params for the connection collection (POST/GET) — just the org slug.\nexport const connectionInOrganizationCollectionParamsSchema = z.object({\n slug: organizationSlugSchema,\n});\nexport type ConnectionInOrganizationCollectionParams = z.infer<\n typeof connectionInOrganizationCollectionParamsSchema\n>;\n\n// Path params for a single connection (DELETE) — org slug + connection id.\nexport const connectionInOrganizationParamsSchema = z.object({\n slug: organizationSlugSchema,\n id: z.uuid(),\n});\nexport type ConnectionInOrganizationParams = z.infer<typeof connectionInOrganizationParamsSchema>;\n\n// POST connection — create an `api_key` connection. `connectorId` picks the\n// catalog connector; `name` is the operator-facing label; `credentials` is the\n// open object validated against the connector's declared auth field shape\n// (never the same for two connectors), so it stays a generic JSON object here\n// and the service narrows it against `CONNECTOR_CATALOG`.\nexport const createConnectionRequestSchema = z\n .object({\n connectorId: connectorIdSchema,\n name: z.string().min(1).max(200),\n credentials: jsonObject(),\n })\n .strict();\nexport type CreateConnectionRequest = z.infer<typeof createConnectionRequestSchema>;\n\n// One connection as returned to the operator. NEVER carries credential\n// material — not even masked. Only the connector id, label, auth kind and the\n// health surface the UI renders.\nexport const connectionResponseSchema = z\n .object({\n id: z.uuid(),\n connectorId: connectorIdSchema,\n name: z.string(),\n authKind: connectionAuthKindSchema,\n healthStatus: connectionHealthStatusSchema,\n healthDetail: z.string().nullable(),\n createdAt: z.iso.datetime(),\n })\n .strict();\nexport type ConnectionResponse = z.infer<typeof connectionResponseSchema>;\n\nexport const connectionListResponseSchema = z.object({\n items: z.array(connectionResponseSchema),\n});\nexport type ConnectionListResponse = z.infer<typeof connectionListResponseSchema>;\n\n// --- OAuth connect flow (oauth2 connectors: Gmail, Outlook) -----------------\n\n// Path params for the OAuth connect routes — org slug + the catalog connector id.\nexport const oauthConnectionParamsSchema = z.object({\n slug: organizationSlugSchema,\n connectorId: connectorIdSchema,\n});\nexport type OAuthConnectionParams = z.infer<typeof oauthConnectionParamsSchema>;\n\n// Whether a connector's OAuth connect is available in this deployment, and why\n// not when it is not. The connect UI reads this to offer the OAuth button or\n// render the unavailable reason (e.g. no provider app configured in self-host).\nexport const oauthAvailabilityResponseSchema = z\n .object({\n connectorId: connectorIdSchema,\n available: z.boolean(),\n // The OAuth provider the connector authenticates against (google/microsoft),\n // present only when available.\n providerId: z.string().nullable(),\n // Human-readable, actionable reason when not available; null when available.\n reason: z.string().nullable(),\n })\n .strict();\nexport type OAuthAvailabilityResponse = z.infer<typeof oauthAvailabilityResponseSchema>;\n\n// POST finalize — turn the member's completed OAuth link into the workspace's\n// `oauth2` connection. The plugin already persisted the linked account; this body\n// drives one of two explicit intents:\n// - re-connect: `connectionId` names the existing oauth2 connection to re-point\n// at the freshly linked account (its health is reset). `name` is ignored.\n// - connect a new account: no `connectionId` → a brand-new connection row is\n// inserted; `name` is its operator-facing label (defaulted + de-duplicated\n// server-side when omitted).\nexport const finalizeOAuthConnectionRequestSchema = z\n .object({\n name: z.string().min(1).max(200).optional(),\n // The existing oauth2 connection to re-point. Omitted → connect a new account.\n connectionId: z.uuid().optional(),\n })\n .strict();\nexport type FinalizeOAuthConnectionRequest = z.infer<typeof finalizeOAuthConnectionRequestSchema>;\n\n// --- Connector catalog ------------------------------------------------------\n// Static metadata derived from `CONNECTOR_CATALOG`, served at `/v1/connectors`.\n// Feeds the connections UI (auth field shapes) and the automations editor\n// (trigger/action JSON Schemas + sample data). `schema`/`sampleData` are open\n// JSON objects — they are the connector's Zod derived to JSON Schema and the\n// mandatory sample payload, both of arbitrary shape.\n\nexport const connectorTriggerMetadataSchema = z.object({\n id: connectorIdSchema,\n displayName: z.string(),\n description: z.string().nullable(),\n strategy: z.enum(['webhook', 'polling']),\n eventSchema: jsonObject(),\n sampleData: jsonObject(),\n});\nexport type ConnectorTriggerMetadata = z.infer<typeof connectorTriggerMetadataSchema>;\n\nexport const connectorActionMetadataSchema = z.object({\n id: connectorIdSchema,\n displayName: z.string(),\n description: z.string().nullable(),\n inputSchema: jsonObject(),\n outputSchema: jsonObject(),\n sampleData: jsonObject(),\n});\nexport type ConnectorActionMetadata = z.infer<typeof connectorActionMetadataSchema>;\n\nexport const connectorMetadataSchema = z.object({\n id: connectorIdSchema,\n version: z.string(),\n displayName: z.string(),\n description: z.string().nullable(),\n logoUrl: z.string().nullable(),\n authKind: connectionAuthKindSchema,\n // For `api_key` connectors: the JSON Schema of the credential fields the\n // operator fills in the connect form. Null for `oauth2` (no fields to fill;\n // the connect happens through the OAuth flow).\n authFieldsSchema: jsonObject().nullable(),\n triggers: z.array(connectorTriggerMetadataSchema),\n actions: z.array(connectorActionMetadataSchema),\n});\nexport type ConnectorMetadata = z.infer<typeof connectorMetadataSchema>;\n\nexport const connectorCatalogResponseSchema = z.object({\n items: z.array(connectorMetadataSchema),\n});\nexport type ConnectorCatalogResponse = z.infer<typeof connectorCatalogResponseSchema>;\n\n// --- Agent connections proxy (`client.connections`) -------------------------\n// Wire shapes backing the agent → control-plane proxy at\n// `/api/v1/agent/connections/*`. The agent authenticates with its agent JWT\n// (install → organization scoping is server-side); the control plane runs the\n// connector action with credentials resolved in memory, so NO credential\n// material ever crosses this boundary.\n\n// One workspace connection as seen by the AGENT. Same credential-free projection\n// the operator surface returns, minus the operator-only `createdAt` timestamp:\n// the agent only needs to know which connections exist (connector id, label,\n// auth kind, health) to adapt its behavior.\nexport const agentConnectionSummarySchema = z\n .object({\n id: z.uuid(),\n connectorId: connectorIdSchema,\n name: z.string(),\n authKind: connectionAuthKindSchema,\n healthStatus: connectionHealthStatusSchema,\n })\n .strict();\nexport type AgentConnectionSummary = z.infer<typeof agentConnectionSummarySchema>;\n\nexport const agentConnectionListResponseSchema = z\n .object({\n items: z.array(agentConnectionSummarySchema),\n })\n .strict();\nexport type AgentConnectionListResponse = z.infer<typeof agentConnectionListResponseSchema>;\n\n// POST .../agent/connections/invoke — run a connector action imperatively from\n// agent code. `connector` + `action` are catalog slugs; `args` is the OPAQUE\n// action input, validated server-side against the action's own Zod input schema\n// (the executor fails fast with per-field detail before any network call). The\n// proxy resolves the workspace's connection for that connector in memory.\nexport const invokeConnectorActionRequestSchema = z\n .object({\n connector: connectorIdSchema,\n action: connectorIdSchema,\n // Opaque action input — the wire schema does not constrain its shape; the\n // executor narrows it against the connector's declared input schema.\n args: jsonObject(),\n // Optional connection selector: a connection id OR a unique connection name\n // (both surfaced by `client.connections.list`). Disambiguates when the\n // workspace holds several connections of the same connector. Omitted → the\n // proxy resolves the sole connection, or fails `connections_ambiguous` when\n // there is more than one. Additive: existing single-connection agents send\n // no selector and behave exactly as before.\n connection: z.string().min(1).max(200).optional(),\n })\n .strict();\nexport type InvokeConnectorActionRequest = z.infer<typeof invokeConnectorActionRequestSchema>;\n\n// The validated action output, returned verbatim from the connector's declared\n// output schema. Every catalog action's output schema is a JSON object (e.g.\n// Telegram's `{ messageId, date }`), so `output` is an open JSON object the agent\n// narrows in its own code. `jsonObject()` (not `z.unknown()`) keeps the emitted\n// OpenAPI orval-safe — the same workaround `args` uses.\nexport const invokeConnectorActionResponseSchema = z\n .object({\n output: jsonObject(),\n })\n .strict();\nexport type InvokeConnectorActionResponse = z.infer<typeof invokeConnectorActionResponseSchema>;\n\n// One execution-history record returned to the UI. `steps` is the opaque\n// journal (raw event, mapped payload, invoke, action result, error) — an open\n// JSON object the front end renders generically.\nexport const automationDeliveryResponseSchema = z\n .object({\n id: z.uuid(),\n automationId: z.uuid(),\n providerItemId: z.string(),\n status: automationDeliveryStatusSchema,\n steps: jsonObject(),\n runId: z.string().nullable(),\n attempt: z.number().int().min(0),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n })\n .strict();\nexport type AutomationDeliveryResponse = z.infer<typeof automationDeliveryResponseSchema>;\n","import { z } from 'zod';\n\n// --- Stackbone Agent Protocol (Studio handshake) --------------------------------\n// Normative spec: docs/arquitectura/specs/stackbone-agent-protocol-v1.md.\n// Both the Hono emulator (libs/runtime/agent-emulator/) and apps/api expose\n// `GET /api/contract` returning this exact shape so the Studio UI can detect\n// version drift between the backend it is talking to and its own minimum\n// supported version. Bumps are documented in\n// docs/arquitectura/specs/stackbone-agent-protocol-changelog.md.\n\n/**\n * Monotonically increasing integer that identifies the wire-level revision of\n * the Stackbone Agent Protocol the backend (cloud `apps/api` or local\n * emulator) currently speaks. Append-only history (the only source of truth —\n * the markdown changelog mirrors this list manually):\n *\n * - v1 (initial): handshake shape frozen, `capabilities` reserved but empty.\n * - v9 (RAG consolidation, ADR 2026-05-10): client.database hosts the RAG\n * pipeline; older agents are pinned out of the RAG explorer via\n * `MIN_SUPPORTED_RAG_EXPLORER_CONTRACT_VERSION`.\n * - v10 (#23): `capabilities` becomes a populated, gated set. The\n * SDK now refuses module calls when their required capability is missing\n * from the handshake. No older datapaths are dropped (`MIN_SUPPORTED`\n * stays at 1) — the gating is purely additive on `capabilities`.\n * - v11 (agent-jobs-dispatcher-bullmq, ADR 2026-05-30): the agent job system\n * moves to BullMQ. The `queues` module's required capability is renamed\n * `queues.pgmq` -> `queues.jobs`. Renaming a capability string is a breaking\n * change (the SDK, Studio and emulator hardcode the old name), so it bumps\n * the version even though `MIN_SUPPORTED` stays at 1 (no older endpoint is\n * deleted — the rename is mechanical and lockstep).\n * - v12 (drop the never-shipped `events` surface): the `client.events` /\n * `client.connections` SDK stubs are removed and the `events.bus` capability\n * is deleted from the allowlist. Removing a capability string is a breaking\n * change per the membership rule below, so it bumps the version even though\n * `MIN_SUPPORTED` stays at 1 (the surface was always a `not_implemented`\n * stub — no live datapath is dropped).\n * - v13 (connectors-connections-automations): `client.connections` returns as a\n * REAL, capability-gated SDK surface backed by a control-plane proxy (list the\n * workspace's connections; invoke a connector action). The `connections.actions`\n * capability is added to the allowlist. Per the membership rule below, adding a\n * capability is additive and would not normally bump the version — but the\n * v12 note removed `connections` from the wire vocabulary, so reintroducing it\n * is a deliberate, lockstep contract change and bumps the version. No older\n * datapath is dropped (`MIN_SUPPORTED` stays at 1); old CLIs simply do not\n * advertise the capability and the SDK gates the surface off for them.\n *\n * Bumping this constant is a breaking simultaneous change: the SDK and Studio\n * upgrade in lockstep. There is no per-request negotiation.\n */\nexport const STACKBONE_CONTRACT_VERSION = 13 as const;\n\n/**\n * Floor of the protocol version range the SDK and Studio still execute\n * against. Bumped only when we deliberately want to break older datapaths;\n * additive changes (new capabilities, new endpoints) MUST NOT raise this.\n *\n * Today (v10) the floor stays at v1 because v10 is purely additive: it gates\n * new behaviour on `capabilities` membership without dropping any older wire\n * format. The first time we delete or rename an existing endpoint we raise\n * this together with `STACKBONE_CONTRACT_VERSION` in the same release.\n */\nexport const MIN_SUPPORTED_CONTRACT_VERSION = 1 as const;\n\n// RAG-explorer-specific gate. ADR `2026-06-05-rag`\n// §D7: Studio hides the RAG explorer (and refuses to fetch `/api/rag/*`)\n// when the negotiated `contract.version` is below this number. The agent\n// shell (`MIN_SUPPORTED_CONTRACT_VERSION`) stays at the lower floor so the\n// rest of Studio keeps working against older agents.\nexport const MIN_SUPPORTED_RAG_EXPLORER_CONTRACT_VERSION = 9 as const;\n\n/**\n * Full set of dot-namespaced capability identifiers the Stackbone Agent\n * Protocol recognises. The array doubles as the runtime allowlist for the\n * `Capability` enum used by `contractResponseSchema` and as the source of\n * truth for `MODULE_CAPABILITIES` below.\n *\n * Membership is intentionally additive — adding an entry does NOT bump\n * `STACKBONE_CONTRACT_VERSION` (per spec §3.2), but removing or renaming\n * one is a breaking change and DOES.\n */\nexport const CAPABILITIES = [\n 'database.postgres_direct',\n 'database.drizzle',\n 'rag.basic',\n 'rag.async_ingest',\n // `queues.jobs`: the BullMQ-backed agent job system (ADR 2026-05-30).\n // Renamed from the previous `queues.pgmq`; the rename bumps\n // STACKBONE_CONTRACT_VERSION to 11.\n 'queues.jobs',\n 'secrets.read_write',\n 'config.read_write',\n 'approval.fire_and_forget',\n 'storage.s3',\n 'ai.openrouter',\n // `prompts.basic`: the versioned prompt catalog + Mustache-subset compile\n // (feature sdk_prompts_versioned_catalog). Additive — adding this entry does\n // NOT bump STACKBONE_CONTRACT_VERSION per the membership rule above.\n 'prompts.basic',\n // `connections.actions`: the agent → control-plane connectors proxy\n // (feature connectors-connections-automations). Role-based naming per repo\n // convention. `client.legacyConnections.list()` / `.invoke(connector, action, args)`\n // run against the proxy; the agent container never sees a credential. The\n // v13 bump reintroduces this capability after v12 removed it. The capability\n // string stays `connections.actions` (it names the wire domain, not the\n // renamed SDK accessor).\n 'connections.actions',\n] as const satisfies readonly string[];\n\n/**\n * Compile-time alias: any capability identifier the wire schema accepts.\n * Consumers (SDK modules, Studio guards) MUST type capability arguments as\n * `Capability` so the compiler refuses unknown literals; the runtime check\n * lives in `contractResponseSchema` via `z.enum(CAPABILITIES)`.\n */\nexport type Capability = (typeof CAPABILITIES)[number];\n\n/**\n * Maps every SDK module identifier (`client.<module>`) to the single\n * `Capability` its surface depends on for the MVP. The SDK's gating layer\n * looks up the required capability here — adding a module means adding a\n * row, and changing a module's required capability (e.g. `database` moving\n * from `postgres_direct` to `drizzle` once #29 lands) is the only reason to\n * edit this map.\n */\nexport const MODULE_CAPABILITIES = {\n database: 'database.postgres_direct',\n rag: 'rag.basic',\n queues: 'queues.jobs',\n secrets: 'secrets.read_write',\n config: 'config.read_write',\n approval: 'approval.fire_and_forget',\n storage: 'storage.s3',\n ai: 'ai.openrouter',\n // `client.prompts` is an AGENT-LOCAL surface (reads the agent DB directly,\n // like secrets/config), so the SDK does NOT build a ModuleGate for it. The\n // row is still declared here because the table is shared with the cloud\n // contract / Studio capability advertisement.\n prompts: 'prompts.basic',\n // `client.legacyConnections` is a control-plane PROXY surface (like queues):\n // the agent POSTs to `/api/v1/agent/connections/*` with its agent JWT and the\n // control plane runs the connector action with credentials resolved in\n // memory. Gated against `connections.actions`. The map key stays `connections`\n // (it is the module id shared with the cloud contract, not the SDK accessor).\n connections: 'connections.actions',\n} as const satisfies Record<string, Capability>;\n\n// Identifies which backend served the handshake. Both values are surfaced in\n// the response body so support can diagnose drift between local and cloud\n// without an extra hop.\nexport const contractBuildNameSchema = z.enum(['stackbone-cli', 'stackbone-api']);\nexport type ContractBuildName = z.infer<typeof contractBuildNameSchema>;\n\nexport const contractResponseSchema = z.object({\n version: z.number().int().min(1),\n minSupported: z.number().int().min(1),\n // `z.enum(CAPABILITIES)` rejects any string outside the union at runtime,\n // mirroring the compile-time guarantee of the `Capability` type.\n capabilities: z.array(z.enum(CAPABILITIES)),\n build: z.object({\n name: contractBuildNameSchema,\n version: z.string().min(1),\n }),\n // Public base URL where THIS install's agent runtime is actually reachable —\n // the active `stackbone dev` tunnel for local installs, the deterministic Fly\n // app URL for cloud installs. Host only, no path: callers append `/invoke`,\n // `/health`, `/schema`. Lets the Studio contract viewer surface every\n // handler's real URL instead of the control-plane proxy.\n //\n // Optional + nullable on purpose: only the PER-INSTALL handshake\n // (`/v1/.../installations/:id/contract`) populates it, because only it has an\n // install in scope. The global `/api/contract` and older/local emulators omit\n // it; `null` means \"no reachable runtime\" (e.g. a local dev session that is\n // currently offline).\n runtimeUrl: z.url().nullable().optional(),\n});\nexport type ContractResponse = z.infer<typeof contractResponseSchema>;\n\n/**\n * Error envelope returned by the contract gating helpers below. Structurally\n * compatible with `SdkError` from `@stackbone/sdk` (`{ code, message, meta? }`)\n * — kept local because `libs/shared/validators` is a leaf package and must not\n * depend on the SDK. The SDK widens these errors back into `SdkError` when\n * propagating them to user code.\n */\nexport interface ContractCheckError {\n code: 'contract_version_unsupported' | 'capability_unavailable';\n message: string;\n meta?: Record<string, unknown>;\n}\n\n/**\n * Discriminated result mirroring the `{ data, error }` envelope every other\n * SDK method returns. Narrowing on `error` refines `data` to the success\n * payload (here: `void`).\n */\nexport type ContractCheckResult =\n | { data: undefined; error: null }\n | { data: null; error: ContractCheckError };\n\n/**\n * Validates that the negotiated `contract.version` is at or above the\n * version the SDK still executes against. Pure, table-driven, never throws.\n *\n * Used by Studio's boot-time guard (`/api/contract` → if drift, render the\n * upgrade banner instead of the protected screen) and by every gated SDK\n * module before it dispatches its first call.\n */\nexport function requireVersion(contract: ContractResponse): ContractCheckResult {\n if (contract.version < MIN_SUPPORTED_CONTRACT_VERSION) {\n return {\n data: null,\n error: {\n code: 'contract_version_unsupported',\n message: `Stackbone Agent Protocol version ${contract.version} is below the minimum supported (${MIN_SUPPORTED_CONTRACT_VERSION}). Upgrade the CLI or the control plane.`,\n meta: {\n detected: contract.version,\n required: MIN_SUPPORTED_CONTRACT_VERSION,\n },\n },\n };\n }\n return { data: undefined, error: null };\n}\n\n/**\n * Validates that the negotiated contract both (a) meets the version floor\n * and (b) advertises the requested capability. Returns\n * `contract_version_unsupported` first if the version check fails so the SDK\n * never falls through to a misleading \"capability missing\" message when the\n * actual problem is a stale datapath. Pure, never throws.\n */\nexport function requireCapability(\n capability: Capability,\n contract: ContractResponse,\n): ContractCheckResult {\n const versionCheck = requireVersion(contract);\n if (versionCheck.error) {\n return versionCheck;\n }\n if (!contract.capabilities.includes(capability)) {\n return {\n data: null,\n error: {\n code: 'capability_unavailable',\n message: `Capability \"${capability}\" is not advertised by the negotiated Stackbone Agent Protocol contract.`,\n meta: {\n capability,\n available: contract.capabilities,\n },\n },\n };\n }\n return { data: undefined, error: null };\n}\n","// `cron-parser` is CommonJS (`module.exports = CronParser`). A named import\n// (`import { parseExpression }`) breaks in the browser dev server: Vite's\n// CJS→ESM interop can't detect `parseExpression` as a named export from that\n// assignment shape, so the served module only exposes `default` and the named\n// binding throws \"does not provide an export named 'parseExpression'\". The\n// default import is always the full `module.exports` object, so we reach\n// `parseExpression` as a runtime property — works in Node, esbuild and Vite.\nimport cronParser from 'cron-parser';\nimport { z } from 'zod';\nimport { jsonObject } from '../common/json-object';\nimport { utf8ByteLength } from '../common/utf8-byte-length';\nimport { queueNameSchema } from '../studio/studio-queues';\n\n// Agent → control plane job-enqueue contract (ADR 2026-05-30). The agent never\n// touches Redis: it calls `client.queues.publish(...)` / `schedule(...)`, which\n// POST an authenticated request to the core. The core's BullMQ dispatcher\n// (libs/runtime/job-dispatcher) owns the queue + the clock; these schemas describe the\n// wire shape of those POST bodies and their responses.\n//\n// `payload` is opaque on purpose — the \"end user\" lives inside it; the core\n// never has to understand the agent's domain (PRD user story 5).\n\n// Platform default for automatic retries with backoff. A job may override it\n// with `retries` (PRD user story 8); the dispatcher clamps to a sane ceiling.\nexport const DEFAULT_JOB_ATTEMPTS = 3;\nexport const MAX_JOB_ATTEMPTS = 20;\n\n// A standard cron expression is exactly five whitespace-separated fields\n// (minute hour day-of-month month day-of-week). Six-field crons add a seconds\n// field, which would allow sub-minute schedules — we cap granularity at 60s.\n// Named macros (`@hourly`, `@daily`, `@weekly`, `@monthly`, `@yearly`) are also\n// accepted as shorthands for a 5-field schedule; see `validateCronAndTz`.\nexport const CRON_FIELD_COUNT = 5;\n\n// Contract-level ceiling on a deferred publish: 30 days. A `delay` past this is\n// almost always a unit mistake (seconds-vs-ms) and would pin a BullMQ delayed\n// job in Redis for an unbounded stretch. Stateful per-install quotas / rate\n// limits are out of scope here — this is just the wire bound.\nexport const MAX_DELAY_MS = 30 * 24 * 60 * 60 * 1000; // 30 days\n\n// Contract-level ceiling on the opaque job `payload`, measured as the UTF-8 byte\n// size of its JSON encoding. This is the precise per-payload bound and the one\n// that produces a clear field-level 400.\nexport const MAX_JOB_PAYLOAD_BYTES = 100 * 1024; // 100kb\n\n// Outer HTTP body ceiling for the agent-jobs routes. It must stay strictly\n// LOOSER than MAX_JOB_PAYLOAD_BYTES: the express body parser counts the whole\n// request envelope (`name`, `retries`, `deduplicationId`, JSON punctuation),\n// not just `payload`, so an equal limit would reject a payload-legal body with\n// a raw 413 before the schema can give the precise message. The slack covers a\n// maximal envelope. apps/api/src/main.ts derives its `express.json({ limit })`\n// from this so the two never drift.\nexport const MAX_JOB_REQUEST_BYTES = MAX_JOB_PAYLOAD_BYTES + 16 * 1024; // 116kb\n\n// One shared, size-bounded payload schema so publish and schedule inherit the\n// exact same cap (and message). The byte size is the JSON UTF-8 encoding, which\n// is what the express.json body parser actually counts against its `limit`.\n// `utf8ByteLength` (TextEncoder, not Node's `Buffer`) keeps this leaf validator\n// isomorphic — it is bundled into the browser apps (studio, web) which have no\n// `node` types.\nconst boundedJobPayload = jsonObject().refine(\n (payload) => utf8ByteLength(JSON.stringify(payload)) <= MAX_JOB_PAYLOAD_BYTES,\n { message: `payload exceeds the ${MAX_JOB_PAYLOAD_BYTES}-byte limit` },\n);\n\n// Shared bits every enqueue shares: the opaque job `name` (e.g. `send-email`),\n// the opaque `payload`, and an optional `retries` override.\nconst baseJobFields = {\n // The job name the agent chose. Surfaced in the Studio inspector and used as\n // the BullMQ job name. Same character class as a queue name so it stays a\n // clean Redis-keyed identifier.\n name: queueNameSchema,\n payload: boundedJobPayload,\n // Per-job override of the platform retry default. Omitted → DEFAULT_JOB_ATTEMPTS.\n retries: z.number().int().min(0).max(MAX_JOB_ATTEMPTS).optional(),\n};\n\n// POST .../queues/publish — fire-and-forget or deferred (`delay` ms) job.\nexport const publishJobRequestSchema = z\n .object({\n ...baseJobFields,\n // Deferred delivery in milliseconds. Omitted / 0 → immediate. Capped at\n // MAX_DELAY_MS (30 days) so a unit slip can't pin a delayed job indefinitely.\n delay: z.number().int().min(0).max(MAX_DELAY_MS).optional(),\n // Optional idempotency hint. When set the dispatcher uses it as the BullMQ\n // job id so a duplicate publish with the same key collapses to one job.\n deduplicationId: z.string().min(1).max(255).optional(),\n })\n .strict();\nexport type PublishJobRequest = z.infer<typeof publishJobRequestSchema>;\n\nexport const publishJobResponseSchema = z\n .object({\n // The BullMQ job id the dispatcher minted (or the dedupe id when supplied).\n messageId: z.string(),\n })\n .strict();\nexport type PublishJobResponse = z.infer<typeof publishJobResponseSchema>;\n\n// Cron expression accepted on the wire. The length cap is a first-line guard;\n// the real pattern check lives in `validateCronAndTz` (applied via superRefine\n// on the schedule schema) so an invalid pattern surfaces as a structured 400\n// here instead of a generic 500 from BullMQ when it registers the scheduler.\nexport const cronExpressionSchema = z.string().min(1).max(120);\n\n// Where a cron/tz validation failure attaches its Zod issue.\ninterface CronTzIssue {\n path: 'cron' | 'tz';\n message: string;\n}\n\n// Is `tz` a timezone the runtime actually understands? Validated by construction\n// rather than against `Intl.supportedValuesOf('timeZone')`: that allowlist omits\n// 'UTC', 'GMT' and the whole `Etc/*` family — including the platform's own\n// default (DEFAULT_SCHEDULE_TZ = 'UTC') — even though `Intl.DateTimeFormat` and\n// cron-parser both accept them. `Intl.DateTimeFormat` throws a RangeError only on\n// a genuinely unknown zone, so it agrees with what the dispatcher will accept.\nfunction isKnownTimeZone(tz: string): boolean {\n try {\n new Intl.DateTimeFormat('en-US', { timeZone: tz });\n return true;\n } catch {\n return false;\n }\n}\n\n// Single source of truth for cron + timezone validation. Returns the issues to\n// attach (empty when valid) so the schema's superRefine can map them onto the\n// right field path. Pure: no throwing, no side effects.\nexport function validateCronAndTz(cron: string, tz?: string): CronTzIssue[] {\n const issues: CronTzIssue[] = [];\n\n // A leading `@` marks a named macro (`@hourly`, `@daily`, `@weekly`,\n // `@monthly`, `@yearly`) — shorthand for a standard 5-field schedule, none of\n // which fire sub-minute. Accept those without the field-count check and let\n // `parseExpression` below confirm the exact alias (it rejects `@every …` and\n // `@reboot`, which could be sub-minute or unsupported). A non-macro must be\n // exactly five fields: trim the edges and collapse internal whitespace so\n // \" 0 9 * * * \" counts as 5, and a six-field sub-minute cron (\"* * * * * *\")\n // is rejected.\n const trimmed = cron.trim();\n const isMacro = trimmed.startsWith('@');\n const fields = trimmed.split(/\\s+/).filter(Boolean);\n const shapeValid = isMacro || fields.length === CRON_FIELD_COUNT;\n if (!shapeValid) {\n issues.push({\n path: 'cron',\n message: `cron must have exactly ${CRON_FIELD_COUNT} fields (minute hour day month weekday) or a macro (@hourly, @daily, @weekly, @monthly, @yearly); sub-minute schedules are not allowed`,\n });\n }\n\n const tzValid = tz === undefined || isKnownTimeZone(tz);\n if (!tzValid) {\n issues.push({ path: 'tz', message: `unknown IANA timezone: ${tz}` });\n }\n\n // Validate the actual cron pattern only when the shape and tz are sound.\n // parseExpression also throws on a bad tz, so running it with a known-bad tz\n // would mislabel a perfectly valid cron as invalid (the failure has no field\n // path of its own). Gating on `tzValid` keeps a bad tz a tz-only error.\n if (shapeValid && tzValid) {\n try {\n cronParser.parseExpression(trimmed, tz === undefined ? undefined : { tz }).next();\n } catch {\n issues.push({ path: 'cron', message: `invalid cron expression: ${cron}` });\n }\n }\n\n return issues;\n}\n\n// POST .../queues/schedule — register / update a dynamic per-user cron job\n// (PRD user stories 3/4). `name` is unique per installation: re-scheduling with\n// the same name updates the schedule in place (no duplicates).\nexport const scheduleJobRequestSchema = z\n .object({\n ...baseJobFields,\n cron: cronExpressionSchema,\n // IANA timezone the cron pattern is evaluated in. Defaults to UTC.\n tz: z.string().min(1).max(64).optional(),\n })\n .strict()\n .superRefine((value, ctx) => {\n for (const issue of validateCronAndTz(value.cron, value.tz)) {\n ctx.addIssue({ code: 'custom', path: [issue.path], message: issue.message });\n }\n });\nexport type ScheduleJobRequest = z.infer<typeof scheduleJobRequestSchema>;\n\nexport const scheduleJobResponseSchema = z\n .object({\n // The scheduler id (unique per installation) the dispatcher upserted.\n scheduleId: z.string(),\n name: z.string(),\n cron: z.string(),\n tz: z.string(),\n })\n .strict();\nexport type ScheduleJobResponse = z.infer<typeof scheduleJobResponseSchema>;\n\n// POST .../queues/unschedule — cancel a previously registered schedule by name.\nexport const unscheduleJobRequestSchema = z\n .object({\n name: queueNameSchema,\n })\n .strict();\nexport type UnscheduleJobRequest = z.infer<typeof unscheduleJobRequestSchema>;\n\nexport const unscheduleJobResponseSchema = z\n .object({\n name: z.string(),\n // True when a schedule with that name existed and was removed; false when\n // nothing matched (the call stays idempotent either way).\n removed: z.boolean(),\n })\n .strict();\nexport type UnscheduleJobResponse = z.infer<typeof unscheduleJobResponseSchema>;\n\n// GET .../queues/schedules — list the installation's active cron schedules.\nexport const scheduleSummarySchema = z\n .object({\n scheduleId: z.string(),\n name: z.string(),\n cron: z.string(),\n tz: z.string(),\n // Next planned fire time (ISO), null when BullMQ has not computed one yet.\n next_run_at: z.iso.datetime().nullable(),\n })\n .strict();\nexport type ScheduleSummary = z.infer<typeof scheduleSummarySchema>;\n\nexport const listSchedulesResponseSchema = z\n .object({\n items: z.array(scheduleSummarySchema),\n })\n .strict();\nexport type ListSchedulesResponse = z.infer<typeof listSchedulesResponseSchema>;\n","// UTF-8 byte length of a string, the unit every wire-size cap is measured in\n// (the express body parser counts bytes, not code units, against its `limit`).\n//\n// `TextEncoder` is universal (Node + browser), so this keeps `validators` a\n// leaf package the Angular frontend can bundle without reaching for Node's\n// `Buffer`. The encoder is stateless for `encode`, so a single module-level\n// instance is reused across calls instead of allocating one per validation.\nconst ENCODER = new TextEncoder();\n\nexport function utf8ByteLength(value: string): number {\n return ENCODER.encode(value).length;\n}\n","import { z } from 'zod';\nimport { jsonObject } from '../common/json-object';\n\n// Studio Queues Inspector after the BullMQ migration (ADR 2026-05-30). The\n// agent job system runs on a single engine — BullMQ over the core's Redis —\n// in all three environments (cloud, self-host, emulator). The inspector\n// therefore COMBINES two sources behind one wire shape:\n//\n// - BullMQ (Redis in the core): the operational truth for in-flight state\n// (`pending` / `active` / `delayed`) and for *dispatch* failures\n// (`failed`) — jobs that never reached the agent (the Machine didn't wake,\n// timeout, network down). These rows carry `source: 'bullmq'`.\n// - The agent's reduced `_queue_jobs` journal: an append-only record of the\n// executions that actually ran inside the agent (`done` / `failed`),\n// written by the runtime wrapper around each job. These rows carry\n// `source: 'journal'` and are read on demand (so the panel does not wake\n// the agent's database on every open).\n//\n// `queueKindSchema` (`pgmq` / `qstash`) is GONE: there is no longer a per-queue\n// backend choice to surface. Where a row came from is the per-row `source`\n// discriminator, and `dispatch_id` correlates a journal execution back to its\n// BullMQ job. The wire shape stays identical across the three environments;\n// only injected configuration (Redis URL, agent URL, HMAC key) differs.\n\n// BullMQ queue name accepted on the wire. Unlike pgmq (whose queue name became\n// a Postgres table suffix `pgmq.q_<name>`, so it had to satisfy unquoted\n// Postgres identifier rules), a BullMQ queue is a plain Redis-keyed name that\n// allows hyphens and dots (e.g. `send-email`, `agent.notifications`). We still\n// bound the shape (non-empty, length-capped, no whitespace or `:` so it cannot\n// collide with BullMQ's own key separator) so the inspector path stays clean.\nconst QUEUE_NAME_REGEX = /^[A-Za-z0-9_.-]+$/;\nexport const queueNameSchema = z\n .string()\n .min(1)\n .max(128)\n .regex(QUEUE_NAME_REGEX, 'queue name must be a BullMQ queue identifier ([A-Za-z0-9_.-])');\nexport type QueueName = z.infer<typeof queueNameSchema>;\n\n// Where an inspector row was read from. Lets the Studio UI mark in-flight /\n// dispatch-failure rows (BullMQ) apart from real execution rows (the agent\n// journal) without changing the resource hooks.\nexport const jobSourceSchema = z.enum(['bullmq', 'journal']);\nexport type JobSource = z.infer<typeof jobSourceSchema>;\n\n// Combined job status the UI can render:\n// pending — BullMQ: waiting to be dispatched (immediate, queued).\n// active — BullMQ: a worker is dispatching it to the agent's `/invoke`.\n// delayed — BullMQ: scheduled for a future time (`publish({ delay })` or a\n// cron scheduler's next run) or backing off between retries.\n// running — journal: the handler is executing inside the agent right now —\n// the wrapper wrote the started row (`started_at` set) but has not\n// yet recorded a terminal outcome (DB `status` is NULL). Distinct\n// from BullMQ `active` (the dispatcher pushing the invoke); this is\n// the in-agent execution leg.\n// lost — journal only, DERIVED at read time (never a DB column value): the\n// run's lease expired — its `heartbeat_at` went stale past the grace\n// window (the Machine died / froze mid-handler), so the reaper marked\n// it `failed` with `error = 'lost'`, or a NULL row sat overdue before\n// the reaper ran. Surfaced apart from a plain `failed` so the\n// inspector can show \"the agent stopped reporting\" vs. \"the handler\n// returned an error\".\n// failed — exhausted retries — either a dispatch failure (BullMQ row) or an\n// application error the agent returned (also recorded in the\n// journal). Shown in Studio with a manual retry.\n// done — journal only: the job ran to completion inside the agent.\n// The old pgmq buckets (`in_flight`, `archived`) are gone: BullMQ exposes the\n// real lifecycle states and the journal carries the execution leg.\n//\n// status is NOT orthogonal to `source`: each source owns its own subset (the\n// two enums below). `jobStatusSchema` is the *union* of both subsets, used only\n// where the source is not yet known — the query `status` filter and the\n// retry/discard action response. The per-row `jobSchema` discriminates on\n// `source` so an illegal pairing (`{ source:'journal', status:'pending' }` or\n// `{ source:'bullmq', status:'done' }`) is unrepresentable.\n\n// BullMQ never reports a completed job (`publish` drops it on success); the\n// live lifecycle plus the dispatch-failure bucket is all the inspector reads.\nexport const bullmqJobStatusSchema = z.enum(['pending', 'active', 'delayed', 'failed']);\nexport type BullmqJobStatus = z.infer<typeof bullmqJobStatusSchema>;\n\n// The journal's persisted state is a TRI-state, not a binary one. The DB column\n// `_queue_jobs.status` is `done` / `failed` (terminal) OR NULL while the job is\n// in-flight (`recordStarted` ran, `recordFinished` has not). Modelling it as\n// just `done|failed` forced the readers to coerce NULL → `failed`, mislabelling\n// a legitimately in-flight execution as a failure. So the journal status is\n// split into two schemas with different jobs:\n//\n// - `journalTerminalStatusSchema` (`done`|`failed`) — the *terminal* subset.\n// It is what the wrapper writes (`recordFinished` only ever records a\n// terminal outcome), what the query `status` filter can select (a SQL\n// `WHERE status = $1` can never match the NULL in-flight rows, so exposing\n// `running` as a filter would always return empty), and what the\n// source-agnostic action response carries.\n// - `journalJobStatusSchema` (`done`|`failed`|`running`|`lost`) — the *row*\n// subset a read can carry. The reader maps the DB NULL to `running` so an\n// in-flight journal row surfaces honestly instead of as a phantom `failed`,\n// and DERIVES `lost` (never a DB column value) when the run's lease expired —\n// the reaper's `failed` + `error = 'lost'`, or a NULL row gone overdue past\n// the heartbeat grace. `lost` lives only on the row subset, not the terminal\n// subset (the wrapper never writes it) nor the filter subset (it is derived,\n// so no `WHERE status = 'lost'` can match a row).\nexport const journalTerminalStatusSchema = z.enum(['done', 'failed']);\nexport type JournalTerminalStatus = z.infer<typeof journalTerminalStatusSchema>;\n\nexport const journalJobStatusSchema = z.enum([\n ...journalTerminalStatusSchema.options,\n 'running',\n 'lost',\n]);\nexport type JournalJobStatus = z.infer<typeof journalJobStatusSchema>;\n\n// Union of every status either source can carry on a ROW. Kept for the\n// source-agnostic per-row surfaces; the discriminated `jobSchema` ties each\n// status to its source instead of using this flat enum.\nexport const jobStatusSchema = z.enum([\n ...bullmqJobStatusSchema.options,\n ...journalJobStatusSchema.options,\n]);\nexport type JobStatus = z.infer<typeof jobStatusSchema>;\n\n// The status values the query `status` filter accepts. NOT the row union: the\n// journal `running` state lives only as a NULL in the DB, so a `WHERE status =\n// 'running'` filter could never match a row. Filtering is therefore restricted\n// to the terminal + BullMQ-live states; `running` rows arrive only on an\n// unfiltered page.\nexport const jobStatusFilterSchema = z.enum([\n ...bullmqJobStatusSchema.options,\n ...journalTerminalStatusSchema.options,\n]);\nexport type JobStatusFilter = z.infer<typeof jobStatusFilterSchema>;\n\nexport const queueSummarySchema = z\n .object({\n name: z.string(),\n // `is_dlq: true` flags queues whose name follows the `*-dlq` / `*_dlq`\n // convention. Studio renders them under a \"Dead-letter\" subgroup; the\n // server-side actions (retry/discard) are unchanged.\n is_dlq: z.boolean(),\n // BullMQ live counts. `failed` is the dispatch-failure / exhausted-retry\n // bucket the inspector surfaces for manual retry. Completed jobs are not\n // counted here — their record lives in the agent journal.\n pending: z.number().int().nonnegative(),\n active: z.number().int().nonnegative(),\n delayed: z.number().int().nonnegative(),\n failed: z.number().int().nonnegative(),\n })\n .strict();\nexport type QueueSummary = z.infer<typeof queueSummarySchema>;\n\nexport const queueListResponseSchema = z.object({\n items: z.array(queueSummarySchema),\n});\nexport type QueueListResponse = z.infer<typeof queueListResponseSchema>;\n\n// Per-job row. `id` is the BullMQ job id for `source: 'bullmq'` rows and the\n// journal row id for `source: 'journal'` rows — opaque strings either way (no\n// longer a pgmq numeric `msg_id`). Composite job-action URLs\n// (POST /api/jobs/:queue/:jobId/...) carry the queue separately so the row id\n// stays clean.\n//\n// A job row is a `z.discriminatedUnion` on `source`, NOT a flat object. The two\n// sources have genuinely different shapes — different status subsets and\n// different timestamp guarantees — and a plain object would let illegal states\n// (a `done` BullMQ row, a `pending` journal row, a journal execution with no\n// `started_at`) validate by accident. The union pushes those invariants into\n// the type so they are impossible at compile-time and rejected at runtime, and\n// lets the service mappers drop their `as JobStatus` casts.\n\n// Fields shared by both sources. `enqueued_at` is the sort key the merged page\n// orders on; for journal rows it is the execution start (the journal has no\n// separate enqueue column).\nconst jobCommonFields = {\n id: z.string(),\n queue: z.string(),\n // Opaque job name the agent chose at publish time (e.g. `send-email`).\n // Null for legacy/anonymous rows that predate named jobs.\n name: z.string().nullable(),\n // BullMQ `attemptsMade` for in-flight rows; the journal's recorded attempt\n // count for execution rows.\n attempts: z.number().int().nonnegative(),\n enqueued_at: z.iso.datetime(),\n // Failure reason: the BullMQ `failedReason` (dispatch failure) or the\n // application error the agent returned (also persisted in the journal).\n error: z.string().nullable(),\n // Correlation key between a BullMQ job and its journal execution row.\n // BullMQ rows carry their own id here; journal rows carry the originating\n // BullMQ job id. Null when uncorrelated.\n dispatch_id: z.string().nullable(),\n payload: jsonObject(),\n} as const;\n\n// BullMQ-source row: a live in-flight job or a dispatch failure. It carries no\n// completed status (`publish` drops successes) and no execution window — BullMQ\n// tracks dispatch, not what ran inside the agent, so `started_at`/`finished_at`\n// are nullable (a dispatch failure never reached the agent).\nexport const bullmqJobSchema = z\n .object({\n ...jobCommonFields,\n source: z.literal('bullmq'),\n status: bullmqJobStatusSchema,\n // When the job is next expected to run: BullMQ `delay`/next-retry timestamp\n // for `delayed`/`pending` rows, null when it runs immediately.\n next_run_at: z.iso.datetime().nullable(),\n // BullMQ does not own an execution window; null until/unless the journal\n // correlates one. A dispatch failure has neither.\n started_at: z.iso.datetime().nullable(),\n finished_at: z.iso.datetime().nullable(),\n })\n .strict();\nexport type BullmqJob = z.infer<typeof bullmqJobSchema>;\n\n// Journal-source row: an execution that ran inside the agent. Its status is\n// `done`|`failed` once terminal, or `running` while in-flight (the wrapper\n// wrote the started row but has not recorded the outcome yet — DB `status` is\n// NULL). It ALWAYS has a `started_at` (the moment the execution began) and\n// never carries a live `next_run_at` (the journal has no scheduling state).\n// `finished_at` is null for a `running` row and set once the wrapper closes it.\nexport const journalJobSchema = z\n .object({\n ...jobCommonFields,\n source: z.literal('journal'),\n status: journalJobStatusSchema,\n // A journal row has no live scheduling state, so `next_run_at` is always\n // null. Modelled as a nullable date-time pinned to null (rather than a bare\n // `z.null()`) so it emits the `anyOf:[date-time, null]` shape the OpenAPI\n // 3.0 downgrader already collapses to `nullable: true` — a standalone\n // `{ type: 'null' }` is not valid OpenAPI 3.0 and orval rejects it.\n next_run_at: z.iso\n .datetime()\n .nullable()\n .refine((value) => value === null, {\n message: 'a journal row never carries a live next_run_at',\n }),\n started_at: z.iso.datetime(),\n finished_at: z.iso.datetime().nullable(),\n })\n .strict();\nexport type JournalJob = z.infer<typeof journalJobSchema>;\n\nexport const jobSchema = z.discriminatedUnion('source', [bullmqJobSchema, journalJobSchema]);\nexport type Job = z.infer<typeof jobSchema>;\n\n// `queue` is mandatory: a BullMQ queue scopes its jobs, so we cannot list \"all\n// jobs\" without picking one. The Studio sidebar always has a queue selected\n// before the table renders.\nexport const listJobsQuerySchema = z.object({\n queue: queueNameSchema,\n // Filter by the BullMQ-live or journal-terminal states only. The journal\n // `running` row exists in the DB as a NULL status, so a `WHERE status =\n // 'running'` filter could never match it — it is reachable only on an\n // unfiltered page, never as a filter value.\n status: jobStatusFilterSchema.optional(),\n cursor: z.string().optional(),\n limit: z.coerce.number().int().min(1).max(200).default(50),\n});\nexport type ListJobsQuery = z.infer<typeof listJobsQuerySchema>;\n\nexport const jobListResponseSchema = z.object({\n items: z.array(jobSchema),\n next_cursor: z.string().nullable(),\n});\nexport type JobListResponse = z.infer<typeof jobListResponseSchema>;\n\n// Job-action URLs share the same `(queue, jobId)` shape so the controller can\n// route both `retry` (re-enqueue a failed job) and `discard` (drop it) through\n// the same params DTO. The path segment is named `jobId` (not `id`) because the\n// surrounding install path already binds `:id` to the installation UUID.\n// BullMQ job ids are opaque strings, so this is a non-empty string — not the\n// numeric-only regex pgmq required.\nexport const jobActionParamsSchema = z.object({\n queue: queueNameSchema,\n jobId: z.string().min(1, 'job id must be a non-empty BullMQ job id'),\n});\nexport type JobActionParams = z.infer<typeof jobActionParamsSchema>;\n\nexport const jobActionResponseSchema = z.object({\n // Echoes the job id the action operated on. Retry re-enqueues the same job;\n // discard only drops it.\n id: z.string(),\n queue: z.string(),\n status: jobStatusSchema,\n});\nexport type JobActionResponse = z.infer<typeof jobActionResponseSchema>;\n\n// --- CLI queues surface (peek / purge / push) --------------------------------\n//\n// The Stackbone CLI drives the same single per-install BullMQ queue the Studio\n// inspector reads. These three surfaces reuse the existing primitives so the CLI\n// sees the SAME row shape Studio does:\n// - peek: a non-destructive look at the head of the queue (the jobs about to\n// run). Rows are `bullmqJobSchema` — identical to the BullMQ-source rows in\n// `jobListResponseSchema`, never a new shape.\n// - purge: drop every removable job (active jobs stay — a worker holds them).\n// - push: enqueue a job by name (the BullMQ job name = the handler), reusing\n// the dispatcher publish path.\n\n// A peek returns BullMQ rows ONLY (the head of the live queue), so it reuses the\n// `bullmqJobSchema` member of the job row union rather than the source-agnostic\n// `jobSchema` — the CLI never peeks the journal.\nexport const peekQueueResponseSchema = z.object({\n items: z.array(bullmqJobSchema),\n});\nexport type PeekQueueResponse = z.infer<typeof peekQueueResponseSchema>;\n\n// A purge reports how many jobs it removed. Active jobs cannot be removed (a\n// worker holds the lock), so `purged` counts only the removable buckets\n// (waiting + prioritized + delayed + failed).\nexport const purgeQueueResponseSchema = z.object({\n purged: z.number().int().nonnegative(),\n});\nexport type PurgeQueueResponse = z.infer<typeof purgeQueueResponseSchema>;\n\n// Push enqueues a one-shot job. `payload` is the opaque JSON body the agent's\n// handler receives; `retries` / `delay` map straight onto the dispatcher's\n// publish options (retries = extra executions after the first; delay = ms to\n// defer delivery). The job NAME comes from the `:name` path param, not the body.\nexport const pushJobRequestSchema = z.object({\n payload: jsonObject(),\n retries: z.number().int().nonnegative().optional(),\n delay: z.number().int().nonnegative().optional(),\n});\nexport type PushJobRequest = z.infer<typeof pushJobRequestSchema>;\n\n// Push echoes the minted BullMQ job id and the queue (the job name) it landed\n// in, so the CLI can correlate the enqueue with a later peek/list.\nexport const pushJobResponseSchema = z.object({\n message_id: z.string(),\n queue: queueNameSchema,\n});\nexport type PushJobResponse = z.infer<typeof pushJobResponseSchema>;\n\n// Path param for the CLI peek / purge / push routes: the BullMQ queue/handler\n// name. Named `name` (the install path already binds `:id` to the install UUID).\nexport const queueNameParamsSchema = z.object({\n name: queueNameSchema,\n});\nexport type QueueNameParams = z.infer<typeof queueNameParamsSchema>;\n\n// Optional `limit` for peek: how many head-of-queue jobs to return. Clamped to a\n// small max so a peek stays a cheap glance, not a full list (that is the `/jobs`\n// endpoint). Defaults to 10.\nexport const peekQueueQuerySchema = z.object({\n limit: z.coerce.number().int().min(1).max(50).default(10),\n});\nexport type PeekQueueQuery = z.infer<typeof peekQueueQuerySchema>;\n","import { type SdkErrorCode } from './errors/codes';\n\n/**\n * Uniform error envelope returned by every SDK method. `cause` and `meta` are\n * optional escape hatches so wrappers can attach upstream errors / context\n * without breaking the public shape.\n *\n * `code` is typed against the catalog declared in `errors/codes.ts` — the\n * compiler refuses any literal that isn't part of the documented inventory.\n * Adding a new code is a single-file edit there; ALL throw sites then update\n * automatically through the union.\n */\nexport interface SdkError {\n code: SdkErrorCode;\n message: string;\n cause?: unknown;\n meta?: Record<string, unknown>;\n}\n\n/**\n * Discriminated result the entire SDK returns. Narrowing on `result.error`\n * automatically refines `result.data` to `T`.\n */\nexport type Result<T> = { data: T; error: null } | { data: null; error: SdkError };\n\nexport function ok<T>(data: T): Result<T> {\n return { data, error: null };\n}\n\nexport function err<T = never>(error: SdkError): Result<T> {\n return { data: null, error };\n}\n\nexport function notImplemented<T = never>(scope: string): Result<T> {\n return {\n data: null,\n error: {\n code: 'not_implemented',\n message: `${scope} is not implemented yet`,\n },\n };\n}\n\nexport type { SdkErrorCode } from './errors/codes';\n","import { type ContractResponse, contractResponseSchema } from '@stackbone/validators';\n\nimport { type ResolvedConfig, resolveConfig } from '../config';\nimport { err, ok, type Result } from '../result';\n\n/**\n * Optional injection seam for tests. Production callers rely on the global\n * `fetch` implementation; specs hand in a `vi.fn()` so we can assert\n * single-flight, cache hits and error mapping without real HTTP.\n */\nexport interface ContractHandshakeOptions {\n fetch?: typeof fetch;\n /** Test-only clock override consulted by the TTL eviction path. */\n now?: () => number;\n}\n\n/**\n * Per-client handshake store. Each `StackboneClient` owns one instance and\n * passes it (via `createModuleGate`) to every surface that gates, so two\n * clients constructed in the same process do NOT share cache state.\n *\n * Shape stays narrow on purpose: surfaces only need `get()`; the synchronous\n * `peek()` is consumed by `client.contract`; `gatingEnabled()` is the\n * `STACKBONE_REQUIRE_CONTRACT` escape-hatch read consulted by the gate.\n *\n * Cache, single-flight, TTL eviction and debug-log bookkeeping all live on\n * the instance — no module-level Maps, no `__resetForTests` helpers — so\n * specs start clean simply by constructing a fresh store.\n */\nexport interface ContractStore {\n /**\n * Resolves the contract for `baseUrl`. Single-flight per normalised baseUrl;\n * caches the resolved Result (including errors) until the TTL (if set)\n * elapses.\n */\n get(\n baseUrl: string | undefined,\n options?: ContractHandshakeOptions,\n ): Promise<Result<ContractResponse>>;\n\n /**\n * Synchronous read-only accessor consulted by `client.contract`. Returns\n * the most recently resolved successful `ContractResponse` for the given\n * baseUrl, or `null` if no successful handshake has resolved yet.\n */\n peek(baseUrl: string | undefined): ContractResponse | null;\n\n /**\n * Mirrors `resolved.requireContract` — `false` only when the creator opted\n * out (i.e. `STACKBONE_REQUIRE_CONTRACT=0` at resolve time). Kept on the\n * store so the module-gate consults a single seam instead of reaching back\n * into the resolver.\n */\n gatingEnabled(): boolean;\n}\n\ninterface CacheEntry {\n /**\n * Single-flight: the in-flight Promise is what gets cached, so two\n * concurrent first-callers share one fetch.\n */\n promise: Promise<Result<ContractResponse>>;\n /** Wall-clock millis at which the entry should be evicted. `Infinity` when no TTL is configured. */\n expiresAt: number;\n}\n\nconst CONTRACT_PATH = '/api/contract';\n\n/**\n * Builds a fresh `ContractStore`. The factory is the SDK-internal contract\n * — `createClient()` instantiates one per client (passing its\n * `ResolvedConfig`) and threads it through `createModuleGate(...)` to every\n * gated surface. Tests that drive a handshake without a full client\n * construct a store the same way; the resolver call below defaults to an\n * empty config (i.e. it still reads `process.env` once at store\n * construction, mirroring the old behaviour for ad-hoc test stores).\n *\n * The store reads the runtime knobs (`requireContract`, `contractTtlMs`,\n * `debug`) from `resolved` exactly once and caches them on the closure —\n * mirroring the snapshot semantics of `ResolvedConfig` itself.\n */\nexport function createContractStore(resolved: ResolvedConfig = resolveConfig({})): ContractStore {\n const cache = new Map<string, CacheEntry>();\n const lastResolved = new Map<string, Result<ContractResponse>>();\n const debugLogged = new Set<string>();\n const ttl = resolved.contractTtlMs;\n const debug = resolved.debug;\n const requireContract = resolved.requireContract;\n\n async function get(\n baseUrl: string | undefined,\n options: ContractHandshakeOptions = {},\n ): Promise<Result<ContractResponse>> {\n if (!baseUrl || baseUrl.trim() === '') {\n // The base URL may not have been resolvable when the client was built\n // (e.g. tests rebuild the client after setting `STACKBONE_API_URL`).\n // Returning a fresh synchronous error each time avoids freezing the\n // empty state.\n return err({\n code: 'contract_unreachable',\n message:\n 'STACKBONE_API_URL is not set — cannot perform the Stackbone Agent Protocol handshake.',\n meta: { reason: 'no_base_url' },\n });\n }\n\n const key = normaliseBaseUrl(baseUrl);\n const now = options.now ?? Date.now;\n\n const existing = cache.get(key);\n if (existing && existing.expiresAt > now()) {\n return existing.promise;\n }\n\n if (existing) {\n // Lazy eviction: TTL elapsed since the last resolution.\n cache.delete(key);\n }\n\n const fetchImpl = options.fetch ?? globalThis.fetch.bind(globalThis);\n const promise = performHandshake(key, fetchImpl);\n const expiresAt = ttl === undefined ? Number.POSITIVE_INFINITY : now() + ttl;\n cache.set(key, { promise, expiresAt });\n\n const result = await promise;\n lastResolved.set(key, result);\n if (!result.error && debug) {\n maybeLogDebug(debugLogged, key, result.data);\n }\n return result;\n }\n\n function peek(baseUrl: string | undefined): ContractResponse | null {\n if (!baseUrl || baseUrl.trim() === '') return null;\n const key = normaliseBaseUrl(baseUrl);\n const cached = lastResolved.get(key);\n if (!cached || cached.error) return null;\n return cached.data;\n }\n\n function gatingEnabled(): boolean {\n return requireContract;\n }\n\n return { get, peek, gatingEnabled };\n}\n\nasync function performHandshake(\n baseUrl: string,\n fetchImpl: typeof fetch,\n): Promise<Result<ContractResponse>> {\n const url = `${baseUrl}${CONTRACT_PATH}`;\n let response: Response;\n try {\n response = await fetchImpl(url, { method: 'GET' });\n } catch (cause) {\n return err({\n code: 'contract_unreachable',\n message: `Failed to reach ${url}: ${cause instanceof Error ? cause.message : String(cause)}`,\n cause,\n meta: { baseUrl },\n });\n }\n\n if (response.status === 404) {\n await response.body?.cancel();\n return err({\n code: 'contract_unreachable',\n message: `${url} responded 404 — the datapath is not Stackbone-shaped.`,\n meta: { baseUrl, reason: 'endpoint_missing' },\n });\n }\n\n if (response.status >= 500) {\n await response.body?.cancel();\n return err({\n code: 'contract_unreachable',\n message: `${url} responded ${response.status} — the datapath errored serving the contract.`,\n meta: { baseUrl, reason: 'datapath_error', status: response.status },\n });\n }\n\n let payload: unknown;\n try {\n payload = await response.json();\n } catch (cause) {\n return err({\n code: 'contract_malformed',\n message: `${url} returned a body that is not valid JSON.`,\n cause,\n meta: { baseUrl, issues: [] },\n });\n }\n\n const parsed = contractResponseSchema.safeParse(payload);\n if (!parsed.success) {\n return err({\n code: 'contract_malformed',\n message: `${url} returned a payload that does not match the contract schema.`,\n meta: { baseUrl, issues: parsed.error.issues },\n });\n }\n\n return ok(parsed.data);\n}\n\n/**\n * Normalises a baseUrl so the cache key collapses cosmetic differences:\n * lowercases the URL parser's `origin` (scheme + host + port) and drops a\n * trailing slash. Path components are intentionally ignored — the SDK only\n * accepts an _origin_ baseUrl today.\n *\n * Falls back to a string-level normalisation if `URL` rejects the input.\n */\nfunction normaliseBaseUrl(baseUrl: string): string {\n try {\n const parsed = new URL(baseUrl);\n return `${parsed.protocol.toLowerCase()}//${parsed.host.toLowerCase()}`;\n } catch {\n return baseUrl.trim().toLowerCase().replace(/\\/+$/, '');\n }\n}\n\n/**\n * Per-(store, baseUrl) one-shot debug warning. The caller has already\n * decided debug logging is on (via `resolved.debug`) — this helper only\n * dedupes so each baseUrl logs at most once per store lifetime.\n */\nfunction maybeLogDebug(debugLogged: Set<string>, key: string, contract: ContractResponse): void {\n if (debugLogged.has(key)) return;\n debugLogged.add(key);\n console.warn(\n `[stackbone] contract handshake ok: baseUrl=${key} version=${contract.version} capabilities=${contract.capabilities.length}`,\n );\n}\n","import {\n type ContractResponse,\n MODULE_CAPABILITIES,\n requireCapability,\n} from '@stackbone/validators';\n\nimport { err, type Result } from '../result';\n\n/**\n * Gating membership rule (Option B from the SDK audit):\n *\n * A surface gates iff `MODULE_CAPABILITIES` (in `@stackbone/validators`)\n * advertises a row for its module id.\n *\n * `MODULE_CAPABILITIES` is the single source of truth — `ModuleId =\n * keyof typeof MODULE_CAPABILITIES`, so the compiler refuses calls to\n * `createModuleGate(...)` for any module not in the table. Adding a new\n * surface to gating means:\n *\n * 1. Declare its required `Capability` in `CAPABILITIES`.\n * 2. Add the `<module>: '<capability>'` row to `MODULE_CAPABILITIES`.\n * 3. Wire `createModuleGate('<module>', resolved, store)` in the surface\n * constructor (or in `client.ts` if the surface is exposed on\n * `client.X`).\n *\n * The surfaces currently outside the gate map document the reason in their\n * own file (see `pending/memory/memory.ts`, `pending/connections/\n * connections.ts`, `pending/prompts/prompts.ts`, `external/observability/\n * observability.ts`). Today none of them need a wire-level protocol\n * capability — the runtime either does not yet exist, talks to a non-\n * Stackbone partner, or stays local (JSONL) — so they intentionally do\n * NOT consult the gate. When that changes, the criterion above kicks in.\n *\n * Agent-local data surfaces — `database`, `rag`, and now `secrets`, `config`\n * and `approval` — are likewise NOT wired to the control-plane handshake\n * gate: they operate directly against the agent's own\n * `stackbone_platform.*` tables, so there is no control-plane datapath to\n * negotiate. `secrets`/`config`/`approval` still carry rows in\n * `MODULE_CAPABILITIES` (the table is shared with the cloud contract), but\n * the SDK no longer builds a `ModuleGate` for them in `client.ts`.\n */\nexport type ModuleId = keyof typeof MODULE_CAPABILITIES;\n\n/**\n * Pure, table-driven gate. Looks up the module's required capability in the\n * shared `MODULE_CAPABILITIES` map, then delegates the actual version +\n * capability check to `requireCapability` from `@stackbone/validators`.\n *\n * Consumed by `createModuleGate` (slices #4/#5); intentionally not surfaced\n * from `libs/sdk/src/index.ts` (the SDK's only public contract surface\n * remains `client.contract`).\n */\nexport function assertCapability(module: ModuleId, contract: ContractResponse): Result<undefined> {\n const capability = MODULE_CAPABILITIES[module];\n const result = requireCapability(capability, contract);\n if (result.error) {\n // `ContractCheckError` is structurally compatible with `SdkError`\n // (`{ code, message, meta? }`), so the widening is just a type cast.\n return err(result.error);\n }\n return { data: undefined, error: null };\n}\n","import { type ContractResponse, MODULE_CAPABILITIES } from '@stackbone/validators';\n\nimport { type ResolvedConfig } from '../config';\nimport { err, ok, type Result } from '../result';\n\nimport { assertCapability, type ModuleId } from './capability-registry';\nimport {\n type ContractHandshakeOptions,\n type ContractStore,\n createContractStore,\n} from './contract-handshake';\n\n/**\n * Async predicate every gated SDK module awaits before forwarding to its\n * underlying implementation. Returns ok when the negotiated contract clears\n * the module's gate (or the escape hatch suppresses a gating error); returns\n * an error envelope otherwise — the caller propagates it back as the public\n * `Result<T>` of the method.\n *\n * Test seam — every gated module exposes an optional `gate` constructor\n * argument that defaults to `createModuleGate(<id>, resolved, store)`. Specs\n * inject a stub returning a synthetic `Result<undefined>` to exercise the\n * gating paths (ok / `contract_version_unsupported` / `capability_unavailable`\n * / `contract_unreachable`) without driving a real handshake.\n */\nexport type ModuleGate = () => Promise<Result<undefined>>;\n\n/**\n * Runs a gated surface call: awaits the module `gate`, short-circuits with the\n * gate's error envelope when it errors, and otherwise delegates to `fn` and\n * returns its `Result<T>` verbatim.\n *\n * Every gated facade method (`client.ai.*`, `client.storage.*`,\n * `client.queues.*`, `client.rag.*`, ...) wraps its body in this helper so the\n * \"await the gate, propagate the gate error\" boilerplate lives in exactly one\n * place. Behaviourally identical to the hand-written\n * `const g = await gate(); if (g.error) return err(g.error); ...body...` shape\n * it replaces — `fn` only runs once the gate clears, and both the gate error\n * and the body's own `Result` pass through untouched.\n */\nexport async function withGate<T>(\n gate: ModuleGate,\n fn: () => Promise<Result<T>>,\n): Promise<Result<T>> {\n const gated = await gate();\n if (gated.error) return err(gated.error);\n return fn();\n}\n\n/**\n * Options accepted by `createModuleGate`. `fetch`/`now` only flow through to\n * the default `store.get(...)` resolver and are ignored when\n * `resolveContract` is supplied.\n *\n * `resolveContract` is the unit-test seam: lets a spec hand back a synthetic\n * (or even schema-invalid) `Result<ContractResponse>` without going through\n * the wire-level Zod parse — that is how the \"version below the SDK floor\"\n * path is tested even though the wire schema enforces `version >= 1`.\n */\nexport interface ModuleGateOptions extends ContractHandshakeOptions {\n resolveContract?: () => Promise<Result<ContractResponse>>;\n}\n\n/**\n * Builds the lazy contract-gate every facade method consults before\n * forwarding to the underlying call. The returned function:\n *\n * 1. Resolves the configured baseUrl from `resolved` (config first, then\n * `STACKBONE_API_URL`).\n * 2. Awaits the contract — by default `store.get(baseUrl)`\n * (single-flight, cached per baseUrl, lazy on first invocation). Tests\n * inject `resolveContract` to bypass the wire schema.\n * 3. On `contract_unreachable` / `contract_malformed`, returns the error.\n * These are reachability failures and remain hard errors regardless of\n * `STACKBONE_REQUIRE_CONTRACT` — the agent literally cannot tell what it\n * is talking to.\n * 4. On a successfully resolved contract, runs `assertCapability(module, c)`.\n * If it errors and `STACKBONE_REQUIRE_CONTRACT=0`, logs a single warning\n * per (store, baseUrl, capability) tuple to stderr and returns ok so the\n * underlying call proceeds. Otherwise returns the error.\n *\n * `store` is the per-client handshake cache. `createClient()` instantiates\n * one with `createContractStore()` and threads it into every gated surface\n * via this factory; two `StackboneClient` instances do NOT share cache\n * state.\n *\n * When omitted (used by callers building a one-off gate outside a client —\n * notably the integration spec) we allocate a fresh store; that store has\n * the same lifetime as the gate itself.\n */\nexport function createModuleGate(\n module: ModuleId,\n resolved: ResolvedConfig,\n store: ContractStore = createContractStore(resolved),\n options: ModuleGateOptions = {},\n): ModuleGate {\n /**\n * Per-store suppression-warning bookkeeping. The escape-hatch warning is\n * a property of the (store, baseUrl, capability) tuple — keeping the Set\n * on the store means two clients can each warn once without stepping on\n * each other, and a fresh store (e.g. a new test) starts with no\n * suppression history.\n */\n const warnedKeys = warningsFor(store);\n\n return async () => {\n const baseUrl = resolved.stackboneApiUrl;\n const handshake = options.resolveContract\n ? await options.resolveContract()\n : await store.get(baseUrl, options);\n if (handshake.error) {\n // Reachability failures cannot be suppressed — we don't know what the\n // datapath is, so refusing the call is the only safe answer.\n return err(handshake.error);\n }\n\n // Agent-side floor (F6): when the creator declared `agent.yaml.protocol.required`,\n // the SDK enforces it BEFORE the per-module capability check. This way the\n // creator's declared minimum wins over a misleading `capability_unavailable`\n // when the datapath happens to advertise the capability under an older\n // protocol version the agent does not support.\n const agentFloor = resolved.protocolRequired;\n const gateError =\n agentFloor !== undefined && handshake.data.version < agentFloor\n ? ({\n code: 'contract_version_unsupported',\n message: `Stackbone Agent Protocol version ${handshake.data.version} is below the minimum required by this agent (${agentFloor}). Upgrade the datapath or lower agent.yaml.protocol.required.`,\n meta: { detected: handshake.data.version, required: agentFloor },\n } as const)\n : assertCapability(module, handshake.data).error;\n\n if (gateError === null) {\n return ok(undefined);\n }\n\n if (store.gatingEnabled()) {\n return err(gateError);\n }\n\n // STACKBONE_REQUIRE_CONTRACT=0 — escape hatch. We still ran the\n // handshake (so `client.contract` is populated) and we still computed\n // the gate; we just don't propagate the error and we warn loudly enough\n // that the creator notices in dev. We always reference the module's\n // required capability (via `MODULE_CAPABILITIES`) so the warning is\n // identical for both `contract_version_unsupported` (no `capability` in\n // meta) and `capability_unavailable` paths.\n const capability = MODULE_CAPABILITIES[module];\n const key = `${baseUrl ?? ''}::${capability}`;\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n console.warn(\n `[stackbone] STACKBONE_REQUIRE_CONTRACT=0 — suppressing ${gateError.code} for ${capability}; ` +\n `the underlying ${module} call may fail downstream.`,\n );\n }\n return ok(undefined);\n };\n}\n\n/**\n * Per-store map of suppression-warning Sets, keyed by store identity. Two\n * gates pinned to the same store share their warning bookkeeping (so a\n * single client warns once per capability regardless of how many gated\n * surfaces fire); two stores get independent Sets, which is the property\n * that lets specs start clean by constructing a fresh store.\n *\n * `WeakMap` so the Set is collected together with its store when the\n * client goes out of scope.\n */\nconst warningsByStore = new WeakMap<ContractStore, Set<string>>();\n\nfunction warningsFor(store: ContractStore): Set<string> {\n let warnings = warningsByStore.get(store);\n if (!warnings) {\n warnings = new Set<string>();\n warningsByStore.set(store, warnings);\n }\n return warnings;\n}\n","import { type ResolvedConfig } from '../config';\nimport { type SdkErrorCode, type SdkErrorPrefix } from '../errors/codes';\nimport { err, ok, type Result, type SdkError } from '../result';\n\n/** Subset of `RequestInit['body']` we serialize without modification. */\ntype SerializedBody = NonNullable<RequestInit['body']>;\n\n/**\n * Per-status overrides facades attach when an HTTP status carries a\n * non-canonical meaning for the endpoint — e.g. a `POST` whose `409` means\n * \"already exists\" instead of the default \"conflict\". Keys are HTTP statuses,\n * values are domain codes the transport should surface verbatim (no prefix\n * concatenation — the override is the final code).\n *\n * The value is typed against the catalog (`SdkErrorCode`) so an endpoint\n * cannot smuggle a wire code that isn't in the documented inventory.\n */\nexport type ErrorOverrides = Record<number, SdkErrorCode>;\n\n/**\n * Tells the transport how to remap HTTP status codes onto the surface's\n * domain code prefix. `404 → '<prefix>_not_found'`, `401 → '<prefix>_unauthorized'`,\n * etc. Endpoint-specific overrides win over the canonical mapping.\n *\n * `prefix` is constrained to `SdkErrorPrefix` (the catalog's prefix tuple) so\n * an unknown surface name doesn't compile — keeps the wire codes the\n * transport emits inside the typed inventory.\n */\nexport interface ErrorMapping {\n /** Prefix concatenated with `_not_found`, `_unauthorized`, …. Required for any domain remap. */\n prefix: SdkErrorPrefix;\n /** Per-status final code that overrides the canonical mapping. */\n overrides?: ErrorOverrides;\n}\n\nexport interface RequestOptions extends Omit<RequestInit, 'body' | 'signal'> {\n /** Scalar query params. `undefined` values are dropped, others get coerced via `String()`. */\n params?: Record<string, string | number | boolean | undefined>;\n /**\n * Repeated string-array params validated and serialised by the transport.\n * Empty arrays / blank elements reject upstream with `<prefix>_invalid_request`\n * (falls back to `http_invalid_request` when no `errorMapping` is set). Each\n * array is joined with `,` to match the canonical control-plane shape.\n */\n arrayParams?: Record<string, readonly string[]>;\n body?: SerializedBody | Record<string, unknown> | unknown[] | null;\n signal?: AbortSignal;\n /** Allow retrying non-idempotent requests (POST, PATCH). Off by default to prevent duplicate writes. */\n idempotent?: boolean;\n}\n\n/**\n * Shape every facade method ideally collapses into: \"POST to /path with this\n * body, validate against this schema, surface errors as `<prefix>_*`\". The\n * transport handles validation, HTTP→domain remapping, querystring assembly\n * and the `Result` envelope so facades stay tiny orchestrators.\n *\n * `arrayParams` keys default to `errorMapping.prefix` for the validation\n * error code (e.g. an empty `names: []` becomes `secrets_invalid_request`).\n */\nexport interface TransportRequest<T> extends RequestOptions {\n method: string;\n path: string;\n /**\n * Zod schema (or any object with a `.safeParse()` method) the parsed body\n * must validate against. On failure the transport surfaces\n * `<prefix>_invalid_response` (or `http_invalid_response` if no prefix is\n * configured) with the schema issues attached to `meta.issues`.\n */\n responseSchema?: ResponseSchema<T>;\n /** HTTP→domain remapping. Omit to let `http_*` codes flow through unchanged. */\n errorMapping?: ErrorMapping;\n}\n\n/**\n * Minimal contract the transport needs from a schema — `safeParse`. Compatible\n * with Zod (`z.object(…).safeParse(value)`) and any hand-rolled validator that\n * follows the same shape. Avoids leaking Zod's full surface into the transport\n * signature.\n */\nexport interface ResponseSchema<T> {\n safeParse(\n input: unknown,\n ): { success: true; data: T } | { success: false; error: { issues: unknown } };\n}\n\nexport interface HttpClientOptions {\n /** Default 30_000. Set to 0 to disable. */\n timeout?: number;\n /** Default 3. Set to 0 to disable. */\n retryCount?: number;\n /** Initial backoff in ms; doubles each attempt with ±15% jitter. Default 500. */\n retryDelay?: number;\n /** Override the global fetch (useful for tests). */\n fetch?: typeof fetch;\n}\n\nconst RETRYABLE_STATUS = new Set([500, 502, 503, 504]);\nconst IDEMPOTENT_METHODS = new Set(['GET', 'HEAD', 'PUT', 'DELETE', 'OPTIONS']);\n\n/**\n * Shared HTTP client used by every facade that talks to the Stackbone\n * control plane. Wraps `fetch` with timeout, exponential backoff with jitter,\n * idempotent-only retries, response validation (Zod-compatible schemas) and\n * a uniform `Result` envelope so facades never throw at the SDK boundary.\n *\n * Each facade tells the transport its error prefix (`'secrets'`, `'config'`,\n * `'approval'`) so 404/401/403/429/5xx remap to surface-specific codes —\n * `secrets_not_found`, `approval_unauthorized`, etc. Endpoint-specific\n * remaps (e.g. `409 → 'secrets_already_exists'`) flow through\n * `errorMapping.overrides`. Transport-level failures (network, timeout,\n * parse) keep the `http_*` prefix the README contract documents.\n *\n * Reads `STACKBONE_API_URL` and `STACKBONE_AGENT_JWT` lazily on every request so\n * env-var rotation is picked up without restarting the client.\n */\nexport class HttpClient {\n private readonly timeout: number;\n private readonly retryCount: number;\n private readonly retryDelay: number;\n private readonly fetchImpl: typeof fetch;\n\n constructor(\n private readonly resolved: ResolvedConfig,\n options: HttpClientOptions = {},\n ) {\n this.timeout = options.timeout ?? 30_000;\n this.retryCount = options.retryCount ?? 3;\n this.retryDelay = options.retryDelay ?? 500;\n this.fetchImpl = options.fetch ?? globalThis.fetch.bind(globalThis);\n }\n\n /**\n * Convenience for `request({ method: 'GET', path, ... })`. Kept so legacy\n * callers (tests, pending facades) keep compiling — the deep work happens\n * in `request()`.\n */\n get<T>(path: string, options?: RequestOptions): Promise<Result<T>> {\n return this.request<T>({ method: 'GET', path, ...options });\n }\n\n post<T>(\n path: string,\n body?: RequestOptions['body'],\n options?: RequestOptions,\n ): Promise<Result<T>> {\n return this.request<T>({\n method: 'POST',\n path,\n ...options,\n ...(body !== undefined && { body }),\n });\n }\n\n put<T>(\n path: string,\n body?: RequestOptions['body'],\n options?: RequestOptions,\n ): Promise<Result<T>> {\n return this.request<T>({\n method: 'PUT',\n path,\n ...options,\n ...(body !== undefined && { body }),\n });\n }\n\n patch<T>(\n path: string,\n body?: RequestOptions['body'],\n options?: RequestOptions,\n ): Promise<Result<T>> {\n return this.request<T>({\n method: 'PATCH',\n path,\n ...options,\n ...(body !== undefined && { body }),\n });\n }\n\n delete<T>(path: string, options?: RequestOptions): Promise<Result<T>> {\n return this.request<T>({ method: 'DELETE', path, ...options });\n }\n\n /**\n * The transport entry point every facade should target. Handles base-URL\n * resolution, header injection, body/querystring serialisation, retry +\n * timeout, response validation and HTTP→domain error remapping.\n */\n async request<T>(req: TransportRequest<T>): Promise<Result<T>> {\n const { method, path, responseSchema, errorMapping, ...options } = req;\n const baseUrl = resolveApiUrl(this.resolved);\n if (!baseUrl) {\n return err({\n code: 'stackbone_api_url_missing',\n message:\n 'Cannot reach the Stackbone control plane — set `STACKBONE_API_URL` in the container or pass `stackboneApiUrl` to `createClient({...})`.',\n });\n }\n\n const querystring = buildQuerystring(options.params, options.arrayParams, errorMapping);\n if (querystring.error) return err(querystring.error);\n\n const url = buildUrl(baseUrl, path, querystring.data);\n const canRetry = IDEMPOTENT_METHODS.has(method.toUpperCase()) || options.idempotent === true;\n const maxAttempts = canRetry ? this.retryCount : 0;\n\n const requestHeaders = new Headers(options.headers);\n const jwt = resolveAgentJwt(this.resolved);\n if (jwt && !requestHeaders.has('Authorization')) {\n requestHeaders.set('Authorization', `Bearer ${jwt}`);\n }\n const installationId = resolveInstallationId(this.resolved);\n if (installationId && !requestHeaders.has('X-Stackbone-Installation-Id')) {\n requestHeaders.set('X-Stackbone-Installation-Id', installationId);\n }\n const body = serializeBody(method, options.body, requestHeaders);\n\n let lastError: SdkError | null = null;\n\n for (let attempt = 0; attempt <= maxAttempts; attempt++) {\n if (attempt > 0) {\n try {\n await sleepWithSignal(this.computeBackoff(attempt), options.signal);\n } catch {\n return err({ code: 'http_aborted', message: 'Request aborted by caller' });\n }\n }\n\n const { signal, cancel } = composeSignal(this.timeout, options.signal);\n const {\n body: _rawBody,\n signal: _callerSignal,\n params: _params,\n arrayParams: _arrayParams,\n idempotent: _idempotent,\n headers: _headers,\n ...passthrough\n } = options;\n const init: RequestInit = {\n ...passthrough,\n method,\n headers: requestHeaders,\n };\n if (body !== undefined) init.body = body;\n if (signal) init.signal = signal;\n\n try {\n const response = await this.fetchImpl(url, init);\n cancel();\n\n if (RETRYABLE_STATUS.has(response.status) && attempt < maxAttempts) {\n await response.body?.cancel();\n lastError = {\n code: codeForStatus(response.status, errorMapping),\n message: `Server error: ${response.status} ${response.statusText}`,\n meta: { status: response.status },\n };\n continue;\n }\n\n return await parseResponse<T>(response, responseSchema, errorMapping);\n } catch (raw) {\n cancel();\n const sdkErr = mapFetchError(raw, this.timeout, options.signal);\n if (sdkErr.code === 'http_aborted' || sdkErr.code === 'http_timeout') {\n // Caller cancelled or timeout consumed all attempts — surface immediately.\n return err(sdkErr);\n }\n if (attempt < maxAttempts) {\n lastError = sdkErr;\n continue;\n }\n return err(sdkErr);\n }\n }\n\n return err(\n lastError ?? {\n code: 'http_request_failed',\n message: 'Request failed after all retry attempts',\n },\n );\n }\n\n private computeBackoff(attempt: number): number {\n const base = this.retryDelay * Math.pow(2, attempt - 1);\n const jitter = base * (0.85 + Math.random() * 0.3);\n return Math.round(jitter);\n }\n}\n\nfunction resolveApiUrl(resolved: ResolvedConfig): string | undefined {\n return resolved.stackboneApiUrl;\n}\n\nfunction resolveAgentJwt(resolved: ResolvedConfig): string | undefined {\n return resolved.agentJwt;\n}\n\nfunction resolveInstallationId(resolved: ResolvedConfig): string | undefined {\n return resolved.installationId;\n}\n\nfunction buildUrl(baseUrl: string, path: string, params: Record<string, string>): string {\n const url = new URL(path, baseUrl.endsWith('/') ? baseUrl : `${baseUrl}/`);\n for (const [key, value] of Object.entries(params)) {\n url.searchParams.append(key, value);\n }\n return url.toString();\n}\n\n/**\n * Merges scalar `params` and validated `arrayParams` into a flat\n * `Record<string, string>` the URL builder can consume. Empty / blank-element\n * arrays short-circuit with `<prefix>_invalid_request` (or\n * `http_invalid_request` when no prefix is configured) — that is the\n * \"validate request shape\" job the transport now owns end-to-end.\n */\nfunction buildQuerystring(\n params: Record<string, string | number | boolean | undefined> | undefined,\n arrayParams: Record<string, readonly string[]> | undefined,\n errorMapping: ErrorMapping | undefined,\n): Result<Record<string, string>> {\n const out: Record<string, string> = {};\n\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined) continue;\n out[key] = String(value);\n }\n }\n\n if (arrayParams) {\n const invalidCode: SdkErrorCode = errorMapping?.prefix\n ? (`${errorMapping.prefix}_invalid_request` as SdkErrorCode)\n : 'http_invalid_request';\n for (const [field, values] of Object.entries(arrayParams)) {\n if (!Array.isArray(values) || values.length === 0) {\n return err({\n code: invalidCode,\n message: `\\`${field}\\` must be a non-empty array.`,\n });\n }\n if (values.some((v) => typeof v !== 'string' || !v.trim())) {\n return err({\n code: invalidCode,\n message: `\\`${field}[*]\\` must be non-empty strings.`,\n });\n }\n out[field] = values.join(',');\n }\n }\n\n return ok(out);\n}\n\nfunction serializeBody(\n method: string,\n body: RequestOptions['body'] | undefined,\n headers: Headers,\n): SerializedBody | undefined {\n if (body === undefined || body === null) return undefined;\n if (method === 'GET' || method === 'HEAD') return undefined;\n if (typeof FormData !== 'undefined' && body instanceof FormData) return body;\n if (typeof body === 'string' || body instanceof ArrayBuffer || ArrayBuffer.isView(body)) {\n return body as SerializedBody;\n }\n if (!headers.has('Content-Type')) {\n headers.set('Content-Type', 'application/json;charset=UTF-8');\n }\n return JSON.stringify(body);\n}\n\nasync function parseResponse<T>(\n response: Response,\n responseSchema: ResponseSchema<T> | undefined,\n errorMapping: ErrorMapping | undefined,\n): Promise<Result<T>> {\n if (response.status === 204) {\n if (!responseSchema) return ok(undefined as T);\n // A schema on a 204 means the caller expects a body — `undefined`\n // won't validate. Run it through `safeParse` so the contract is\n // explicit instead of silently coercing.\n return validateOrFail<T>(undefined, responseSchema, errorMapping, { status: 204 });\n }\n\n const contentType = response.headers.get('content-type');\n let parsed: unknown;\n try {\n parsed = contentType?.includes('json') ? await response.json() : await response.text();\n } catch (e) {\n return err({\n code: 'http_parse_error',\n message: `Failed to parse response body: ${e instanceof Error ? e.message : String(e)}`,\n cause: e,\n meta: { status: response.status },\n });\n }\n\n if (!response.ok) {\n const message =\n parsed &&\n typeof parsed === 'object' &&\n 'message' in parsed &&\n typeof parsed.message === 'string'\n ? parsed.message\n : `Request failed: ${response.statusText}`;\n return err({\n code: codeForStatus(response.status, errorMapping),\n message,\n meta: domainMeta(response.status, parsed, errorMapping),\n });\n }\n\n if (!responseSchema) return ok(parsed as T);\n return validateOrFail<T>(parsed, responseSchema, errorMapping, { status: response.status });\n}\n\nfunction validateOrFail<T>(\n parsed: unknown,\n schema: ResponseSchema<T>,\n errorMapping: ErrorMapping | undefined,\n meta: Record<string, unknown>,\n): Result<T> {\n const validation = schema.safeParse(parsed);\n if (validation.success) return ok(validation.data);\n const code: SdkErrorCode = errorMapping?.prefix\n ? (`${errorMapping.prefix}_invalid_response` as SdkErrorCode)\n : 'http_invalid_response';\n return err({\n code,\n message: 'Response body did not match the expected shape.',\n meta: { ...meta, issues: validation.error.issues },\n });\n}\n\n/**\n * Canonical HTTP→domain mapping. With no `errorMapping` the transport keeps\n * the README-documented `http_*` codes; with a mapping it concatenates the\n * prefix and applies endpoint-specific overrides (`409 →\n * 'secrets_already_exists'`).\n *\n * Domain mapping (prefix set): 401 → `<prefix>_unauthorized`, 403 → forbidden,\n * 404 → not_found, 408 → timeout, 429 → rate_limited, 5xx → unavailable,\n * 4xx generic → invalid_request.\n *\n * Transport mapping (no prefix): keeps the existing `http_unauthorized`,\n * `http_forbidden`, `http_not_found`, `http_timeout`, `http_rate_limited`,\n * `http_server_error` for 5xx, `http_client_error` for generic 4xx — the\n * shape the README has been advertising since alpha.0.\n */\n/**\n * Domain-suffix mapping. Each surface that gets `<prefix>_<reason>` emits a\n * fixed inventory of `<reason>` strings; the catalog declares them per\n * prefix. The tuple here is the exhaustive set the transport produces — the\n * exhaustiveness test in `http-client.spec.ts` asserts every emitted code is\n * still in `SDK_ERROR_CODES`.\n */\nconst DOMAIN_REASONS = [\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'timeout',\n 'rate_limited',\n 'unavailable',\n 'invalid_request',\n 'invalid_response',\n] as const;\ntype DomainReason = (typeof DOMAIN_REASONS)[number];\n\nconst TRANSPORT_REASONS = [\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'timeout',\n 'rate_limited',\n 'server_error',\n 'client_error',\n 'request_failed',\n 'invalid_request',\n 'invalid_response',\n 'aborted',\n 'network_error',\n 'parse_error',\n] as const;\ntype TransportReason = (typeof TRANSPORT_REASONS)[number];\n\n/**\n * Maps `(status, errorMapping)` to the wire-level code surfaced on the\n * `Result.error.code`. The return type is `SdkErrorCode` so callers (the\n * retry-loop bookkeeper, `parseResponse`, the contract test) can't compose\n * a code that isn't in the catalog by accident.\n *\n * Internally the function builds the `<prefix>_<reason>` string from two\n * typed tuples (`SdkErrorPrefix` × `DomainReason` | `TransportReason`); the\n * compiler accepts the concatenation as `SdkErrorCode` because every\n * combination it can produce is listed in `errors/codes.ts`.\n */\nfunction codeForStatus(status: number, errorMapping: ErrorMapping | undefined): SdkErrorCode {\n const override = errorMapping?.overrides?.[status];\n if (override) return override;\n\n if (errorMapping?.prefix) {\n return `${errorMapping.prefix}_${domainSuffix(status)}` as SdkErrorCode;\n }\n return `http_${transportSuffix(status)}` as const;\n}\n\nfunction domainSuffix(status: number): DomainReason {\n if (status === 401) return 'unauthorized';\n if (status === 403) return 'forbidden';\n if (status === 404) return 'not_found';\n if (status === 408) return 'timeout';\n if (status === 429) return 'rate_limited';\n if (status >= 500) return 'unavailable';\n if (status >= 400) return 'invalid_request';\n return 'invalid_request';\n}\n\nfunction transportSuffix(status: number): TransportReason {\n if (status === 401) return 'unauthorized';\n if (status === 403) return 'forbidden';\n if (status === 404) return 'not_found';\n if (status === 408) return 'timeout';\n if (status === 429) return 'rate_limited';\n if (status >= 500) return 'server_error';\n if (status >= 400) return 'client_error';\n return 'request_failed';\n}\n\n/**\n * @internal — exposed solely for the contract test that asserts the SDK\n * error catalog is exhaustive over every `<prefix>_<reason>` HttpClient can\n * emit. Not re-exported from the library barrel.\n */\nexport const __HTTP_CLIENT_ERROR_REASONS_FOR_TESTING = {\n DOMAIN_REASONS,\n TRANSPORT_REASONS,\n} as const;\n\n/**\n * Carries the raw status / body through every error meta payload, regardless\n * of remapping. This keeps the escape hatches the README promised: callers\n * can still pattern-match on `meta.status` even after the code is remapped\n * to the surface-specific prefix.\n */\nfunction domainMeta(\n status: number,\n parsed: unknown,\n errorMapping: ErrorMapping | undefined,\n): Record<string, unknown> {\n const meta: Record<string, unknown> = { status, body: parsed };\n if (errorMapping?.prefix) meta['prefix'] = errorMapping.prefix;\n return meta;\n}\n\nfunction mapFetchError(\n raw: unknown,\n timeoutMs: number,\n callerSignal: AbortSignal | undefined,\n): SdkError {\n if (\n raw &&\n typeof raw === 'object' &&\n 'name' in raw &&\n (raw as { name: string }).name === 'AbortError'\n ) {\n if (callerSignal?.aborted) {\n return { code: 'http_aborted', message: 'Request aborted by caller', cause: raw };\n }\n return {\n code: 'http_timeout',\n message: `Request timed out after ${timeoutMs}ms`,\n cause: raw,\n };\n }\n return {\n code: 'http_network_error',\n message: raw instanceof Error ? raw.message : String(raw),\n cause: raw,\n };\n}\n\n/**\n * Composes the SDK's timeout signal with the caller's signal so either can\n * abort the in-flight request. `cancel()` clears the timeout when the\n * request settles to avoid keeping a dangling timer alive.\n */\nfunction composeSignal(\n timeoutMs: number,\n callerSignal: AbortSignal | undefined,\n): { signal: AbortSignal | undefined; cancel: () => void } {\n if (timeoutMs <= 0 && !callerSignal) return { signal: undefined, cancel: () => undefined };\n const controller = new AbortController();\n let timer: ReturnType<typeof setTimeout> | undefined;\n if (timeoutMs > 0) {\n timer = setTimeout(() => controller.abort(), timeoutMs);\n }\n let onCallerAbort: (() => void) | undefined;\n if (callerSignal) {\n if (callerSignal.aborted) {\n controller.abort(callerSignal.reason);\n } else {\n onCallerAbort = () => controller.abort(callerSignal.reason);\n callerSignal.addEventListener('abort', onCallerAbort, { once: true });\n }\n }\n return {\n signal: controller.signal,\n cancel: () => {\n if (timer !== undefined) clearTimeout(timer);\n if (onCallerAbort && callerSignal) callerSignal.removeEventListener('abort', onCallerAbort);\n },\n };\n}\n\n/**\n * Pre-flight guard facades use BEFORE consulting the contract gate. Mirrors\n * the validation `request()` runs on `arrayParams`, but lives at the facade\n * layer so an empty/malformed batch never triggers a contract handshake.\n * Returns `null` when the input is valid so callers can `if (invalid)`\n * short-circuit cleanly.\n */\nexport function validateStringArray(\n values: unknown,\n field: string,\n errorCode: SdkErrorCode,\n): Result<never> | null {\n if (!Array.isArray(values) || values.length === 0) {\n return err({ code: errorCode, message: `\\`${field}\\` must be a non-empty array.` });\n }\n if (values.some((v) => typeof v !== 'string' || !v.trim())) {\n return err({ code: errorCode, message: `\\`${field}[*]\\` must be non-empty strings.` });\n }\n return null;\n}\n\nasync function sleepWithSignal(ms: number, signal: AbortSignal | undefined): Promise<void> {\n if (signal?.aborted) throw signal.reason ?? new Error('aborted');\n return new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n if (signal && onAbort) signal.removeEventListener('abort', onAbort);\n resolve();\n }, ms);\n const onAbort = signal\n ? () => {\n clearTimeout(timer);\n reject(signal.reason ?? new Error('aborted'));\n }\n : undefined;\n if (signal && onAbort) signal.addEventListener('abort', onAbort, { once: true });\n });\n}\n","import { err, ok, type Result } from '../../../result';\n\nimport { type ApprovalFacade, type ApprovalRequestOptions } from './approval';\n\nexport interface ApprovalToolSpec<I, O> {\n name: string;\n description: string;\n parameters: Record<string, unknown>;\n needsApproval?: boolean | ((input: I) => boolean | Promise<boolean>);\n /**\n * Maps the LLM input to the approval request fields. `topic` and `payload`\n * default to the tool name and the raw input respectively when omitted;\n * `onDecide` must always be supplied so the control plane knows where to\n * deliver the eventual decision.\n */\n toRequest: (\n input: I,\n ) => Omit<ApprovalRequestOptions<I>, 'payload' | 'topic'> &\n Partial<Pick<ApprovalRequestOptions<I>, 'payload' | 'topic'>>;\n execute: (input: I) => Promise<O> | O;\n}\n\nexport interface OpenAIToolSpec {\n type: 'function';\n function: {\n name: string;\n description: string;\n parameters: Record<string, unknown>;\n };\n}\n\nexport type ToolInvokeResult<O> =\n | { status: 'pending'; approvalId: string; expiresAt: string }\n | { status: 'ok'; result: O };\n\nexport interface ApprovalTool<I, O> {\n name: string;\n description: string;\n parameters: Record<string, unknown>;\n openaiSpec(): OpenAIToolSpec;\n invoke(input: I): Promise<Result<ToolInvokeResult<O>>>;\n}\n\nexport function createApprovalTool<I, O>(\n facade: ApprovalFacade,\n spec: ApprovalToolSpec<I, O>,\n): ApprovalTool<I, O> {\n return {\n name: spec.name,\n description: spec.description,\n parameters: spec.parameters,\n openaiSpec(): OpenAIToolSpec {\n return {\n type: 'function',\n function: {\n name: spec.name,\n description: spec.description,\n parameters: spec.parameters,\n },\n };\n },\n async invoke(input: I): Promise<Result<ToolInvokeResult<O>>> {\n if (await resolveGate(spec.needsApproval, input)) {\n const requestOpts = spec.toRequest(input);\n const requested = await facade.request<I>({\n ...requestOpts,\n topic: requestOpts.topic ?? `tool:${spec.name}`,\n payload: requestOpts.payload ?? input,\n });\n if (requested.error) return requested;\n return ok({\n status: 'pending',\n approvalId: requested.data.approvalId,\n expiresAt: requested.data.expiresAt,\n });\n }\n try {\n return ok({ status: 'ok', result: await spec.execute(input) });\n } catch (raw) {\n return err({\n code: 'approval_tool_execute_failed',\n message: raw instanceof Error ? raw.message : String(raw),\n cause: raw,\n meta: { tool: spec.name },\n });\n }\n },\n };\n}\n\nasync function resolveGate<I>(\n needsApproval: ApprovalToolSpec<I, unknown>['needsApproval'],\n input: I,\n): Promise<boolean> {\n if (needsApproval === undefined || needsApproval === false) return false;\n if (needsApproval === true) return true;\n return Boolean(await needsApproval(input));\n}\n","import { type ResolvedConfig } from '../../../config';\nimport { err, ok, type Result } from '../../../result';\n\nimport { DECISION_STATUSES, type Decision, type DecisionStatus } from './approval';\n\nexport interface VerifyOptions {\n /** Override the signing key resolved from `STACKBONE_APPROVAL_SIGNING_KEY` / `approvalSigningKey`. */\n signingKey?: string;\n /** Reject signatures whose timestamp is older than this (seconds). Default 300. */\n toleranceSeconds?: number;\n /** Inject a clock for tests. Defaults to `Date.now`. */\n now?: () => number;\n}\n\nconst SIGNATURE_HEADER = 'stackbone-signature';\nconst DEFAULT_TOLERANCE_SECONDS = 300;\nconst FUTURE_DRIFT_TOLERANCE_SECONDS = 30;\nconst HEX_RE = /^[0-9a-f]+$/i;\n\n/**\n * Header format follows the Stripe-style convention used elsewhere in\n * the platform: `t=<unix>,v1=<hex>`. HMAC-SHA256 is computed over\n * `${timestamp}.${rawBody}` with the agent's approval signing key. We\n * compare the digest in constant time and reject timestamps outside\n * `toleranceSeconds` to bound replay risk.\n */\nexport async function verifyCallback<T = unknown>(\n request: Request,\n resolved: ResolvedConfig,\n options: VerifyOptions = {},\n): Promise<Result<Decision<T>>> {\n const signingKey = resolveSigningKey(resolved, options.signingKey);\n if (!signingKey) {\n return err({\n code: 'approval_signing_key_missing',\n message:\n 'Cannot verify callback — set `STACKBONE_APPROVAL_SIGNING_KEY` in the container or pass `approvalSigningKey` to `createClient({...})`.',\n });\n }\n\n const header = request.headers.get(SIGNATURE_HEADER);\n if (!header) {\n return err({\n code: 'approval_invalid_signature',\n message: `Missing ${SIGNATURE_HEADER} header.`,\n });\n }\n\n const parsed = parseHeader(header);\n if (!parsed) {\n return err({\n code: 'approval_invalid_signature',\n message: 'Malformed signature header. Expected `t=<unix>,v1=<hex>`.',\n });\n }\n\n // Use a signed delta so we reject far-future timestamps (replay) while\n // still allowing the small positive clock drift typical between hosts.\n const tolerance = options.toleranceSeconds ?? DEFAULT_TOLERANCE_SECONDS;\n const now = (options.now ?? Date.now)();\n const deltaSeconds = now / 1000 - parsed.timestamp;\n if (deltaSeconds > tolerance || deltaSeconds < -FUTURE_DRIFT_TOLERANCE_SECONDS) {\n return err({\n code: 'approval_signature_expired',\n message: `Signature timestamp is outside the ${tolerance}s tolerance window.`,\n meta: { deltaSeconds, toleranceSeconds: tolerance },\n });\n }\n\n const rawBody = await readRawBody(request);\n const expected = await computeHmac(signingKey, `${parsed.timestamp}.${rawBody}`);\n if (!constantTimeEqual(expected, parsed.signature)) {\n return err({\n code: 'approval_invalid_signature',\n message: 'Signature does not match the request body.',\n });\n }\n\n let decision: Decision<T>;\n try {\n decision = JSON.parse(rawBody) as Decision<T>;\n } catch (e) {\n return err({\n code: 'approval_invalid_payload',\n message: `Callback body is not valid JSON: ${e instanceof Error ? e.message : String(e)}`,\n cause: e,\n });\n }\n\n if (!isDecision(decision)) {\n return err({\n code: 'approval_invalid_payload',\n message: 'Callback body is not a Decision<T> object.',\n });\n }\n\n return ok(decision);\n}\n\nfunction resolveSigningKey(resolved: ResolvedConfig, override?: string): string | undefined {\n return override ?? resolved.approvalSigningKey;\n}\n\nfunction parseHeader(header: string): { timestamp: number; signature: string } | null {\n let timestamp: number | undefined;\n let signature: string | undefined;\n for (const part of header.split(',')) {\n const eqIdx = part.indexOf('=');\n if (eqIdx === -1) continue;\n const key = part.slice(0, eqIdx).trim();\n const value = part.slice(eqIdx + 1).trim();\n if (!value) continue;\n if (key === 't') {\n const parsed = Number.parseInt(value, 10);\n if (Number.isFinite(parsed)) timestamp = parsed;\n } else if (key === 'v1') {\n if (HEX_RE.test(value)) signature = value.toLowerCase();\n }\n }\n if (timestamp === undefined || signature === undefined) return null;\n return { timestamp, signature };\n}\n\n/** `request.text()` consumes the body; clone upstream if you need to re-read it. */\nasync function readRawBody(request: Request): Promise<string> {\n return request.text();\n}\n\nconst ENCODER = new TextEncoder();\n\n/** @internal — exposed so the test suite can sign fixtures without forking the algorithm. */\nexport async function computeHmac(secret: string, message: string): Promise<string> {\n const key = await crypto.subtle.importKey(\n 'raw',\n ENCODER.encode(secret),\n { name: 'HMAC', hash: 'SHA-256' },\n false,\n ['sign'],\n );\n const signature = await crypto.subtle.sign('HMAC', key, ENCODER.encode(message));\n return Buffer.from(new Uint8Array(signature)).toString('hex');\n}\n\nfunction constantTimeEqual(a: string, b: string): boolean {\n if (a.length !== b.length) return false;\n let mismatch = 0;\n for (let i = 0; i < a.length; i++) {\n mismatch |= a.charCodeAt(i) ^ b.charCodeAt(i);\n }\n return mismatch === 0;\n}\n\nfunction isDecision(value: unknown): value is Decision<unknown> {\n if (!value || typeof value !== 'object') return false;\n const status = (value as { status?: unknown }).status;\n return DECISION_STATUSES.includes(status as DecisionStatus);\n}\n","import { type Sql } from 'postgres';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { err, ok, type Result } from '../../../result';\nimport { type DatabaseModule } from '../database/database';\n\nimport { createApprovalTool, type ApprovalToolSpec, type ApprovalTool } from './tool';\nimport { verifyCallback, type VerifyOptions } from './verify';\n\nexport type ApprovalTopic = string;\n\nexport const DECISION_STATUSES = ['approved', 'rejected', 'timed_out', 'cancelled'] as const;\nexport type DecisionStatus = (typeof DECISION_STATUSES)[number];\nexport type ApprovalStatus = 'pending' | DecisionStatus;\n\nexport type Decision<T = unknown> =\n | {\n status: 'approved' | 'rejected';\n payload: T;\n approver: ApproverInfo;\n decidedAt: string;\n reason?: string;\n }\n | { status: 'timed_out'; decidedAt: string }\n | { status: 'cancelled'; decidedAt: string; reason?: string };\n\nexport interface ApproverInfo {\n id: string;\n email: string;\n name?: string;\n}\n\nexport interface ApprovalRequestOptions<T = unknown> {\n topic: ApprovalTopic;\n payload: T;\n title?: string;\n description?: string;\n /** Path on the agent the control plane will POST the decision to (resolved against the agent's public URL server-side). */\n onDecide: string;\n /** ISO 8601 duration (`'24h'`) or milliseconds. Default 24h. */\n timeout?: string | number;\n onTimeout?: 'reject' | 'approve' | 'ignore';\n approver?: string;\n /** Same `(topic, idempotencyKey)` returns the same `approvalId` instead of creating a new one. */\n idempotencyKey?: string;\n metadata?: Record<string, unknown>;\n /**\n * The PROJECTED `runs.id` this approval belongs to, joined into the inbox so\n * the pause appears against its run. Used by the workflow-HITL helper\n * (`requestApproval`), which reads it from the invocation context (F5). Stays\n * `NULL` for the legacy fire-and-forget agent-approval path. The column is a\n * FK to `stackbone_platform.runs(id)` (`ON DELETE SET NULL`).\n */\n runId?: string;\n /**\n * The projected `run_steps.id` of the workflow step that requested this\n * approval, anchoring the pause to the exact step (`requested_by_step_id`,\n * A6). The workflow-HITL helper (`requestApproval`) reads it from the\n * invocation context (F5); stays `NULL` when no step id is available (the\n * common case today — see `InvocationContext.requestedByStepId`). The column\n * is a FK to `stackbone_platform.run_steps(id)` (`ON DELETE SET NULL`).\n */\n requestedByStepId?: string;\n}\n\nexport interface ApprovalRequest {\n approvalId: string;\n status: 'pending';\n callbackUrl: string;\n expiresAt: string;\n}\n\nexport interface ApprovalRecord<T = unknown> {\n approvalId: string;\n topic: ApprovalTopic;\n status: ApprovalStatus;\n payload: T;\n decision?: Decision<T>;\n createdAt: string;\n expiresAt: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface ApprovalListOptions {\n status?: ApprovalStatus;\n topic?: ApprovalTopic;\n cursor?: string;\n /** 1..100. Default 50. */\n limit?: number;\n}\n\nexport interface ApprovalListResult<T = unknown> {\n items: ApprovalRecord<T>[];\n nextCursor?: string;\n}\n\nconst DEFAULT_APPROVAL_TIMEOUT_MS = 24 * 60 * 60 * 1000;\nconst DEFAULT_LIST_LIMIT = 50;\nconst MAX_LIST_LIMIT = 100;\n\n/**\n * `client.approval` — AGENT-LOCAL. The HITL pause is recorded directly in the\n * agent's own `stackbone_platform.approvals` table over the shared\n * `client.database` pool; there is no control-plane POST anymore. The RESUME\n * half stays Studio-driven: a human decides in Studio, the control plane signs\n * an HMAC callback to `callbackUrl`, and the agent reconciles it with\n * `verify()` (local crypto — see `verify.ts`).\n *\n * The write populates only the columns the cloud `create()` used to set\n * (topic/payload/callback_url/idempotency_key/fallback/metadata/timeout_at),\n * plus `run_id` / `requested_by_step_id` when the workflow-HITL helper supplies\n * them from the invocation context (F5/A6). `schema` was sourced from a DTO\n * field the SDK options object does not carry, so it stays NULL.\n * `workspace_id`/`agent_id` stay NULL exactly as they were on the control-plane\n * path — the idempotency `ON CONFLICT` relies on `workspace_id` being NULL with\n * `NULLS NOT DISTINCT` (migration 0008).\n */\nexport class ApprovalFacade {\n constructor(\n private readonly _resolved: ResolvedConfig,\n /** Lazy accessor for `client.database` — reaches the shared `Sql` via `.shared().$client`. */\n private readonly _getDatabase: () => DatabaseModule,\n ) {}\n\n async request<T = unknown>(options: ApprovalRequestOptions<T>): Promise<Result<ApprovalRequest>> {\n const validation = validateRequest(options);\n if (validation) return validation;\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n\n const timeoutMs = parseTimeoutMs(options.timeout) ?? DEFAULT_APPROVAL_TIMEOUT_MS;\n const fallback = onTimeoutToFallback(options.onTimeout);\n // Today the decide endpoint resolves the absolute URL at dispatch time, so\n // the raw path is enough — symmetric with the old cloud `create()`.\n const callbackUrl = options.onDecide;\n\n try {\n const rows = await this._getDatabase().runShared(\n (db) => db<InsertedRow[]>`\n INSERT INTO stackbone_platform.approvals (\n topic, payload, callback_url, idempotency_key,\n fallback, metadata, run_id, requested_by_step_id, timeout_at\n ) VALUES (\n ${options.topic},\n ${JSON.stringify(options.payload ?? {})}::jsonb,\n ${callbackUrl},\n ${options.idempotencyKey ?? null},\n ${fallback},\n ${JSON.stringify(options.metadata ?? {})}::jsonb,\n ${options.runId ?? null}::uuid,\n ${options.requestedByStepId ?? null}::uuid,\n now() + (${timeoutMs}::int * interval '1 millisecond')\n )\n ON CONFLICT (workspace_id, topic, idempotency_key)\n WHERE idempotency_key IS NOT NULL\n DO UPDATE SET topic = EXCLUDED.topic\n RETURNING id, callback_url,\n to_char(created_at AT TIME ZONE 'UTC', 'YYYY-MM-DD\"T\"HH24:MI:SS.MS\"Z\"') AS created_at,\n to_char(timeout_at AT TIME ZONE 'UTC', 'YYYY-MM-DD\"T\"HH24:MI:SS.MS\"Z\"') AS timeout_at\n `,\n );\n const row = rows[0];\n if (!row) {\n return err({ code: 'approval_persist_failed', message: 'Failed to persist approval.' });\n }\n return ok({\n approvalId: row.id,\n status: 'pending',\n callbackUrl: row.callback_url ?? '',\n expiresAt: row.timeout_at ?? row.created_at,\n });\n } catch (cause) {\n return err({\n code: 'approval_persist_failed',\n message: 'Failed to write the approval to the agent database.',\n cause,\n });\n }\n }\n\n async cancel(approvalId: string, reason?: string): Promise<Result<void>> {\n if (!approvalId) {\n return err({ code: 'approval_invalid_request', message: '`approvalId` is required.' });\n }\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n try {\n const patch = reason ? { cancelReason: reason } : {};\n await this._getDatabase().runShared(\n (db) => db`\n UPDATE stackbone_platform.approvals\n SET status = 'cancelled',\n decided_at = now(),\n metadata = metadata || ${JSON.stringify(patch)}::jsonb\n WHERE id = ${approvalId}::uuid AND status = 'pending'\n `,\n );\n return ok(undefined);\n } catch (cause) {\n return err({\n code: 'approval_cancel_failed',\n message: `Failed to cancel approval \\`${approvalId}\\`.`,\n cause,\n });\n }\n }\n\n async get<T = unknown>(approvalId: string): Promise<Result<ApprovalRecord<T>>> {\n if (!approvalId) {\n return err({ code: 'approval_invalid_request', message: '`approvalId` is required.' });\n }\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n try {\n const rows = await this._getDatabase().runShared(\n (db) => db<ApprovalRow[]>`\n SELECT id, topic, status, payload, metadata,\n to_char(created_at AT TIME ZONE 'UTC', 'YYYY-MM-DD\"T\"HH24:MI:SS.MS\"Z\"') AS created_at,\n to_char(timeout_at AT TIME ZONE 'UTC', 'YYYY-MM-DD\"T\"HH24:MI:SS.MS\"Z\"') AS timeout_at\n FROM stackbone_platform.approvals\n WHERE id = ${approvalId}::uuid\n LIMIT 1\n `,\n );\n const row = rows[0];\n if (!row) {\n return err({\n code: 'approval_not_found',\n message: `Approval \\`${approvalId}\\` not found.`,\n meta: { approvalId },\n });\n }\n return ok(toRecord<T>(row));\n } catch (cause) {\n return err({\n code: 'approval_unavailable',\n message: `Failed to read approval \\`${approvalId}\\`.`,\n cause,\n });\n }\n }\n\n async list<T = unknown>(\n options: ApprovalListOptions = {},\n ): Promise<Result<ApprovalListResult<T>>> {\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n const limit = clampLimit(options.limit);\n try {\n const rows = await this._getDatabase().runShared(\n (db) => db<ApprovalRow[]>`\n SELECT id, topic, status, payload, metadata,\n to_char(created_at AT TIME ZONE 'UTC', 'YYYY-MM-DD\"T\"HH24:MI:SS.MS\"Z\"') AS created_at,\n to_char(timeout_at AT TIME ZONE 'UTC', 'YYYY-MM-DD\"T\"HH24:MI:SS.MS\"Z\"') AS timeout_at\n FROM stackbone_platform.approvals\n WHERE (${options.status ?? null}::text IS NULL OR status = ${options.status ?? null})\n AND (${options.topic ?? null}::text IS NULL OR topic = ${options.topic ?? null})\n ORDER BY created_at DESC, id DESC\n LIMIT ${limit}\n `,\n );\n return ok({ items: rows.map((row) => toRecord<T>(row)) });\n } catch (cause) {\n return err({\n code: 'approval_unavailable',\n message: 'Failed to list approvals.',\n cause,\n });\n }\n }\n\n /**\n * Local crypto verification — does not touch the database, so it has the same\n * shape it had on the control-plane surface. Auditing rule: a method gates\n * iff it issues a datapath call; this one never does.\n */\n verify<T = unknown>(request: Request, options?: VerifyOptions): Promise<Result<Decision<T>>> {\n return verifyCallback<T>(request, this._resolved, options);\n }\n\n /**\n * Pure factory — returns an `ApprovalTool` whose `invoke()` ultimately calls\n * back into `ApprovalFacade.request`.\n */\n tool<I, O>(spec: ApprovalToolSpec<I, O>): ApprovalTool<I, O> {\n return createApprovalTool(this, spec);\n }\n\n private sql(): Result<Sql> {\n try {\n return ok(this._getDatabase().shared().$client);\n } catch (cause) {\n const code = (cause as { code?: string } | null)?.code;\n if (code === 'database_not_configured') {\n return err({\n code: 'database_not_configured',\n message: (cause as Error).message,\n cause,\n });\n }\n return err({\n code: 'approval_unavailable',\n message: 'Agent database handle unavailable.',\n cause,\n });\n }\n }\n}\n\ninterface InsertedRow {\n id: string;\n callback_url: string | null;\n created_at: string;\n timeout_at: string | null;\n}\n\ninterface ApprovalRow {\n id: string;\n topic: string;\n status: ApprovalStatus;\n payload: unknown;\n metadata: Record<string, unknown> | null;\n created_at: string;\n timeout_at: string | null;\n}\n\nfunction toRecord<T>(row: ApprovalRow): ApprovalRecord<T> {\n const record: ApprovalRecord<T> = {\n approvalId: row.id,\n topic: row.topic,\n status: row.status,\n payload: row.payload as T,\n createdAt: row.created_at,\n expiresAt: row.timeout_at ?? row.created_at,\n };\n if (row.metadata) record.metadata = row.metadata;\n return record;\n}\n\nfunction validateRequest(options: ApprovalRequestOptions): Result<ApprovalRequest> | null {\n if (!options.topic?.trim()) {\n return err({ code: 'approval_invalid_request', message: '`topic` is required.' });\n }\n if (!options.onDecide?.trim()) {\n return err({ code: 'approval_invalid_request', message: '`onDecide` is required.' });\n }\n return null;\n}\n\nfunction clampLimit(limit?: number): number {\n if (limit === undefined) return DEFAULT_LIST_LIMIT;\n if (!Number.isFinite(limit) || limit <= 0) return DEFAULT_LIST_LIMIT;\n return Math.min(Math.floor(limit), MAX_LIST_LIMIT);\n}\n\nfunction onTimeoutToFallback(\n onTimeout: ApprovalRequestOptions['onTimeout'],\n): 'approve' | 'reject' | 'timeout' | null {\n if (onTimeout === 'approve') return 'approve';\n if (onTimeout === 'reject') return 'reject';\n if (onTimeout === 'ignore') return 'timeout';\n return null;\n}\n\n/**\n * Parses the `timeout` option into milliseconds. Accepts a raw number of ms or\n * a compact duration string (`'24h'`, `'90m'`, `'30s'`, `'7d'`). Returns `null`\n * for anything unparseable so the caller falls back to the 24h default.\n */\nfunction parseTimeoutMs(timeout: ApprovalRequestOptions['timeout']): number | null {\n if (typeof timeout === 'number') {\n return Number.isFinite(timeout) && timeout > 0 ? Math.floor(timeout) : null;\n }\n if (typeof timeout !== 'string') return null;\n const match = /^(\\d+)\\s*(ms|s|m|h|d)$/i.exec(timeout.trim());\n if (!match) return null;\n const value = Number.parseInt(match[1] as string, 10);\n const unit = (match[2] as string).toLowerCase();\n const factor: Record<string, number> = {\n ms: 1,\n s: 1000,\n m: 60_000,\n h: 3_600_000,\n d: 86_400_000,\n };\n return value * (factor[unit] ?? 1);\n}\n\nexport type { VerifyOptions } from './verify';\nexport type { ApprovalToolSpec, ApprovalTool } from './tool';\n","import { type Sql } from 'postgres';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { err, ok, type Result } from '../../../result';\nimport { type DatabaseModule } from '../database/database';\n\nimport { type ConfigRegistry } from './config-registry';\n\n// `client.config` explicit read — AGENT-LOCAL. Reads the singleton\n// `stackbone_platform.agent_config` row (id = 1) over the shared\n// `client.database` pool and returns the requested key out of its JSON\n// payload. This converges the SDK's explicit `client.config.get()` onto the\n// same agent-DB read path the runtime harness uses to auto-inject `ctx.config`\n// per invoke (`neon-agent-config.ts`). No control-plane HTTP anymore.\n\ninterface AgentConfigRow {\n payload: Record<string, unknown> | null;\n}\n\n/**\n * The effective shape of the agent's config, derived from the augmentable\n * `ConfigRegistry`. The tuple wrap (`[X] extends [never]`) defeats the\n * conditional-type distributivity that a bare `keyof ConfigRegistry extends\n * never` would trigger:\n *\n * - empty registry -> `Record<string, unknown>` (today's loose behavior:\n * any key, value `unknown`);\n * - augmented registry -> `ConfigRegistry` itself (strict keys + value types).\n */\ntype ConfigShape = [keyof ConfigRegistry] extends [never]\n ? Record<string, unknown>\n : ConfigRegistry;\n\nexport class ConfigFacade {\n constructor(\n private readonly _resolved: ResolvedConfig,\n /** Lazy accessor for `client.database` — see `SecretsFacade`. */\n private readonly _getDatabase: () => DatabaseModule,\n ) {\n // `_resolved` is retained for symmetry with the other facades and future\n // config-namespacing needs; the agent config row is global per agent DB.\n void this._resolved;\n }\n\n async get<K extends keyof ConfigShape>(key: K): Promise<Result<ConfigShape[K]>> {\n if (!String(key).trim()) {\n return err({ code: 'config_invalid_request', message: '`key` is required.' });\n }\n const payload = await this.loadPayload();\n if (payload.error) return err(payload.error);\n if (!payload.data || !(key in payload.data)) {\n return err({\n code: 'config_not_found',\n message: `Config key \\`${String(key)}\\` is not set for this agent.`,\n meta: { key },\n });\n }\n return ok(payload.data[key as string] as ConfigShape[K]);\n }\n\n /**\n * Keys absent from the agent's config come back as omissions in the\n * response — the returned map only contains entries the agent DB actually\n * has, so callers must access fields with `?.` (the return type is\n * `Partial<T>`).\n */\n async getMany<K extends keyof ConfigShape>(\n keys: K[],\n ): Promise<Result<Partial<Pick<ConfigShape, K>>>> {\n if (!Array.isArray(keys) || keys.length === 0) {\n return err({ code: 'config_invalid_request', message: '`keys` must be a non-empty array.' });\n }\n const payload = await this.loadPayload();\n if (payload.error) return err(payload.error);\n const out: Record<string, unknown> = {};\n for (const key of keys) {\n if (payload.data && (key as string) in payload.data)\n out[key as string] = payload.data[key as string];\n }\n return ok(out as Partial<Pick<ConfigShape, K>>);\n }\n\n /**\n * Returns the agent's entire config payload as one typed object. An\n * absent/null `agent_config` row resolves to `ok({})` — an empty config is\n * \"no config set\", consistent with the facade reading the singleton row.\n * Reads stay an unvalidated SELECT (no AJV on the read path).\n */\n async getAll(): Promise<Result<ConfigShape>> {\n const payload = await this.loadPayload();\n if (payload.error) return err(payload.error);\n return ok((payload.data ?? {}) as ConfigShape);\n }\n\n private async loadPayload(): Promise<Result<Record<string, unknown> | null>> {\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n try {\n const rows = await this._getDatabase().runShared(\n (db) => db<AgentConfigRow[]>`\n SELECT payload FROM stackbone_platform.agent_config WHERE id = 1\n `,\n );\n return ok(rows[0]?.payload ?? null);\n } catch (cause) {\n return err({\n code: 'config_unavailable',\n message: 'Failed to read agent config from the agent database.',\n cause,\n });\n }\n }\n\n private sql(): Result<Sql> {\n try {\n return ok(this._getDatabase().shared().$client);\n } catch (cause) {\n const code = (cause as { code?: string } | null)?.code;\n if (code === 'database_not_configured') {\n return err({\n code: 'database_not_configured',\n message: (cause as Error).message,\n cause,\n });\n }\n return err({\n code: 'config_unavailable',\n message: 'Agent database handle unavailable.',\n cause,\n });\n }\n }\n}\n","import { drizzle, type PostgresJsDatabase } from 'drizzle-orm/postgres-js';\nimport postgres, { type Sql } from 'postgres';\n\n/**\n * Public surface a creator can use through `client.database`. We pin it to the\n * `postgres-js` Drizzle wrapper because that is the only driver `@stackbone/sdk`\n * ships and the only one `STACKBONE_POSTGRES_URL` is contracted to point at.\n *\n * Re-exporting Drizzle's own type instead of inventing a structural alias keeps\n * the surface 1:1 with what `drizzle-orm` documents and what `@stackbone/sdk/db`\n * re-exports — so types flow end to end without translation.\n */\nexport type DrizzleClient = PostgresJsDatabase<Record<string, never>> & { $client: Sql };\n\n/**\n * Default factory used by `DatabaseModule`. Spied on in tests via\n * `vi.spyOn(lazyClient, 'createDrizzleClient')` to assert the proxy stays lazy\n * and to swap the real connection out for a fake builder. Tweaking the\n * `postgres()` options here (pool size, prepare flag, etc.) keeps that surface\n * in one place — for now we let the postgres-js defaults stand.\n *\n * Cold-start reconnect: after a Fly Machines `auto_stop_machines=suspend` the\n * pool's sockets may be dead. The first query then surfaces a postgres-js\n * `CONNECTION_TERMINATED`/`CONNECTION_ENDED`/`ECONNRESET`. `client.database`\n * traps that case in `internal.ts` (see `runWithColdStartRetry`), invalidates\n * the cached handle, calls `createDrizzleClient` again to rebuild the pool\n * against `STACKBONE_POSTGRES_URL`, and replays the query exactly once.\n */\nexport function createDrizzleClient(connectionString: string): DrizzleClient {\n const sql = postgres(connectionString);\n // `drizzle(sql)` returns `PostgresJsDatabase & { $client: Sql }`; the cast\n // pins the public alias so internal sibling modules (e.g. `client.rag`) can\n // reach the underlying postgres-js `Sql` via `handle.$client` and share the\n // same pool instead of opening their own.\n return drizzle(sql) as DrizzleClient;\n}\n","import { type ModuleGate } from '../../../contract/module-gate';\nimport { type SdkErrorCode } from '../../../errors/codes';\nimport { type SdkError } from '../../../result';\n\nimport { createDrizzleClient, type DrizzleClient } from './lazy-client';\n\n/**\n * Implementation of the **shared-handles pattern** for the agent's\n * Postgres pool. Cross-surface consumers (RAG today, memory / queues\n * tomorrow) do NOT import from this file — they reach the shared handle\n * through the canonical public accessor `database.shared()` on the live\n * `client.database` surface, which delegates here. See the SDK README +\n * CHANGELOG for the pattern itself.\n *\n * This file is intentionally NOT re-exported from `libs/sdk/src/index.ts`\n * nor from `libs/sdk/src/db/index.ts`. It also has no sibling-relative\n * importers anymore — that was the old escape hatch and the source of\n * the friction P4 removed. The one in-repo importer outside this folder\n * is the test seam `__resetDatabaseHandleForTesting`.\n *\n * Single-pool invariant: an agent process opens at most one `postgres()`\n * pool against the resolved `databaseUrl`. The first reader (whichever\n * side calls `database.shared()` / `database.raw()` / a query-builder verb\n * first) builds the pool; every subsequent caller reuses it. Checked by\n * `nx test sdk` via `shared-handle.spec.ts` which asserts\n * `createDrizzleClient` is invoked exactly once across many callers.\n *\n * Connection string ownership: `DatabaseModule` reads\n * `ResolvedConfig.databaseUrl` (resolved exactly once when the client was\n * built) and passes it in through `getDatabaseHandle(url)`. The first call\n * pins that URL on the module-level cache; subsequent callers (including\n * the cold-start retry path) reuse it. The resolver is the single seam\n * that reads `process.env['STACKBONE_POSTGRES_URL']`.\n */\nlet cachedHandle: DrizzleClient | null = null;\nlet cachedUrl: string | undefined;\n\n/**\n * Implementation detail of `DatabaseModule.shared()` — returns the\n * process-wide Drizzle handle bound to the resolved `databaseUrl`. The\n * first call constructs the underlying `postgres()` pool; subsequent\n * calls return the same Drizzle instance — and therefore reuse the same\n * pool.\n *\n * `connectionString` is the resolved URL the caller already pulled from\n * `ResolvedConfig.databaseUrl`. Passing `undefined` (no explicit value\n * and no cached URL from a previous call) raises\n * `SdkError('database_not_configured')`, matching the public\n * `client.database` setup-bug shape. Cross-surface consumers should call\n * `client.database.shared()` instead of importing this function directly.\n */\nexport function getDatabaseHandle(connectionString?: string): DrizzleClient {\n if (cachedHandle) return cachedHandle;\n const url = connectionString ?? cachedUrl;\n if (!url) {\n throw new DatabaseNotConfiguredError();\n }\n cachedUrl = url;\n cachedHandle = createDrizzleClient(url);\n return cachedHandle;\n}\n\nconst DATABASE_NOT_CONFIGURED_MESSAGE =\n 'Cannot reach the agent database — set `STACKBONE_POSTGRES_URL` in the container or run `stackbone dev` to spin up a local emulator.';\n\n/**\n * Mirrors `DatabaseModule`'s setup-bug error so internal callers see the same\n * `code`/`message` contract as the public `client.database` surface.\n */\nclass DatabaseNotConfiguredError extends Error implements SdkError {\n readonly code = 'database_not_configured';\n\n constructor() {\n super(DATABASE_NOT_CONFIGURED_MESSAGE);\n this.name = 'DatabaseNotConfiguredError';\n }\n}\n\n/**\n * Test-only reset hook for the process-wide singleton. Imported by spec\n * files in this folder and by `rag/shared-pool.spec.ts` to clear the\n * cache between tests; it is intentionally not re-exported from\n * `libs/sdk/src/index.ts` nor `libs/sdk/src/db/index.ts` (same as\n * everything else in this implementation file). The name is loud on\n * purpose so a production caller would have to mean it.\n */\nexport function __resetDatabaseHandleForTesting(): void {\n cachedHandle = null;\n cachedUrl = undefined;\n}\n\n// postgres-js connection codes raised when the underlying socket died (Fly\n// Machines suspended us between queries). SQLSTATE-shaped application errors\n// are excluded — rebuilding the pool only fixes broken sockets.\nconst POOL_TERMINATED_ERROR_CODES = new Set([\n 'CONNECTION_ENDED',\n 'CONNECTION_CLOSED',\n 'CONNECTION_DESTROYED',\n 'CONNECTION_TERMINATED',\n 'ECONNRESET',\n]);\n\nexport function isPoolTerminatedError(error: unknown): boolean {\n if (!error || typeof error !== 'object') return false;\n const code = (error as { code?: unknown }).code;\n return typeof code === 'string' && POOL_TERMINATED_ERROR_CODES.has(code);\n}\n\n/**\n * Drops the cached pool handle so the next `getDatabaseHandle` call rebuilds\n * it against the same `cachedUrl`. The throw-based `runWithColdStartRetry`\n * does this inline; surfaces whose driver swallows the dead-socket error into\n * a `Result.err` (today: `client.rag`, whose `RagPipeline` returns rather than\n * throws) call this to invalidate the pool before replaying. Unlike\n * `__resetDatabaseHandleForTesting` it preserves `cachedUrl`, so the rebuild\n * reuses the resolved connection string instead of re-reading the env.\n */\nexport function invalidatePoolHandle(): void {\n cachedHandle = null;\n}\n\n// Runs `firstAttempt`; on a postgres-js connection-terminated rejection,\n// rebuilds the singleton pool once and runs `retryAttempt` against the fresh\n// handle. Non-pool errors pass through. If retry also fails, surfaces the\n// original error verbatim — single retry, no looping. One stderr line per\n// retry so operators see cold-start frequency in production.\nasync function runWithColdStartRetry<T>(\n firstAttempt: () => Promise<T> | T,\n retryAttempt: () => Promise<T> | T,\n): Promise<T> {\n try {\n return await firstAttempt();\n } catch (error) {\n if (!isPoolTerminatedError(error)) throw error;\n process.stderr.write(\n `[stackbone/sdk] database cold-start reconnect: rebuilding pool after ${\n (error as { code?: string }).code ?? 'unknown'\n }\\n`,\n );\n cachedHandle = null;\n try {\n return await retryAttempt();\n } catch {\n throw error;\n }\n }\n}\n\n// Thunk-shaped wrapper consumed by `client.database.transaction(...)` and\n// any future internal caller that does not flow through the chainable proxy.\n// `gate` is awaited before the first attempt; on failure, the gate's\n// `SdkError` is thrown as an `Error & { code, message, meta? }` so the\n// surface matches the synchronous `DatabaseNotConfiguredError` and the rest\n// of the SDK's `database` API (which throws on misuse rather than returning\n// `Result`).\nexport function withColdStartRetry<T>(\n attempt: () => Promise<T> | T,\n gate?: ModuleGate,\n): Promise<T> {\n if (!gate) return runWithColdStartRetry(attempt, attempt);\n return (async () => {\n await assertGate(gate);\n return runWithColdStartRetry(attempt, attempt);\n })();\n}\n\n/**\n * Awaits `gate()` and throws an `Error & SdkError` when the contract handshake\n * blocks the call. Mirrors the shape of `DatabaseNotConfiguredError` so the\n * `client.database` surface stays consistent: setup-bug and gating errors\n * both throw a tagged `Error` with `code` / `message` / `meta`.\n */\nasync function assertGate(gate: ModuleGate): Promise<void> {\n const result = await gate();\n if (result.error === null) return;\n throw new GateBlockedError(result.error);\n}\n\nclass GateBlockedError extends Error implements SdkError {\n readonly code: SdkErrorCode;\n readonly meta?: Record<string, unknown>;\n override readonly cause?: unknown;\n\n constructor(sdkError: SdkError) {\n super(sdkError.message);\n this.name = 'GateBlockedError';\n this.code = sdkError.code;\n if (sdkError.meta) this.meta = sdkError.meta;\n if (sdkError.cause !== undefined) this.cause = sdkError.cause;\n }\n}\n\n// Chainable thenable proxy over a Drizzle query builder. `db.select().from(t)`\n// records the chain; only the terminal `then`/`catch`/`finally` triggers\n// execution. `seed` is the builder primed by the initial `handle.select(...)`\n// call so happy-path spies fire once; on retry we discard `seed`, rebuild the\n// pool, ask `rootCall` for a fresh builder, and replay the chain.\ntype ChainStep = { kind: 'call'; key: string; args: unknown[] } | { kind: 'get'; key: string };\n\nexport function createRetriableQueryBuilder(\n seed: unknown,\n rootCall: (handle: DrizzleClient) => unknown,\n gate?: ModuleGate,\n): unknown {\n return buildProxy([], seed, rootCall, gate);\n}\n\nfunction buildProxy(\n steps: ChainStep[],\n seed: unknown,\n rootCall: (handle: DrizzleClient) => unknown,\n gate: ModuleGate | undefined,\n): unknown {\n const target = function () {\n /* proxy traps every operation */\n };\n const run = async (): Promise<unknown> => {\n if (gate) await assertGate(gate);\n return runWithColdStartRetry(\n () => replayChain(seed, steps),\n () => replayChain(rootCall(getDatabaseHandle()), steps),\n );\n };\n return new Proxy(target, {\n get(_t, key) {\n if (key === 'then') {\n return (resolve: (v: unknown) => unknown, reject?: (e: unknown) => unknown) =>\n run().then(resolve, reject);\n }\n if (key === 'catch') {\n return (reject: (e: unknown) => unknown) => run().catch(reject);\n }\n if (key === 'finally') {\n return (cb: () => void) => run().finally(cb);\n }\n return buildProxy([...steps, { kind: 'get', key: String(key) }], seed, rootCall, gate);\n },\n apply(_t, _this, args) {\n // Previous step was the property access that produced this callable;\n // promote it from `get` to `call` carrying the args so replay invokes\n // the right method on the rebuilt handle.\n const last = steps[steps.length - 1];\n if (!last || last.kind !== 'get') {\n return buildProxy([...steps, { kind: 'call', key: '', args }], seed, rootCall, gate);\n }\n const next: ChainStep[] = [...steps.slice(0, -1), { kind: 'call', key: last.key, args }];\n return buildProxy(next, seed, rootCall, gate);\n },\n });\n}\n\nfunction replayChain(seed: unknown, steps: ChainStep[]): unknown {\n let current: unknown = seed;\n for (const step of steps) {\n if (current === null || current === undefined) return current;\n if (step.kind === 'get') {\n current = (current as Record<string, unknown>)[step.key];\n continue;\n }\n const parent = current as Record<string, unknown>;\n const fn = parent[step.key];\n if (typeof fn !== 'function') {\n throw new TypeError(\n `[stackbone/sdk] cold-start retry could not replay \"${step.key}\": not a function on the rebuilt handle`,\n );\n }\n current = (fn as (...a: unknown[]) => unknown).apply(parent, step.args);\n }\n return current;\n}\n","import { type Sql } from 'postgres';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { createModuleGate, type ModuleGate } from '../../../contract/module-gate';\n\nimport { type DrizzleClient } from './lazy-client';\nimport {\n createRetriableQueryBuilder,\n getDatabaseHandle,\n invalidatePoolHandle,\n isPoolTerminatedError,\n withColdStartRetry,\n} from './shared-handle';\n\n// Tiny helper: prime the singleton handle with `rootCall(handle)`, hand the\n// resulting builder + factory to the proxy. Keeps the per-verb declarations\n// short and consistent. When a `gate` is provided, it is awaited at the\n// terminal `await` of the chainable proxy and throws a tagged\n// `GateBlockedError` (carrying `code` / `message` / `meta`) when the\n// negotiated contract refuses the call. The connection URL was resolved\n// once at `resolveConfig` time and is threaded down to the singleton on\n// first call; the retry path inside `createRetriableQueryBuilder` reuses\n// the URL already cached on the singleton.\nfunction retriable(\n rootCall: (handle: DrizzleClient) => unknown,\n databaseUrl: string | undefined,\n gate?: ModuleGate,\n): unknown {\n return createRetriableQueryBuilder(rootCall(getDatabaseHandle(databaseUrl)), rootCall, gate);\n}\n\n/**\n * `client.database` is a lazy wrapper over a `drizzle()` instance bound to\n * the resolved `databaseUrl` (config first, then `STACKBONE_POSTGRES_URL`\n * at `resolveConfig` time). The underlying postgres-js connection and the\n * Drizzle facade are constructed on the first method call so partner SDKs\n * only pay the cost when the agent actually touches the database.\n *\n * Native Drizzle methods (`select`, `insert`, `update`, `delete`, `transaction`,\n * `execute`) are exposed verbatim — we explicitly avoid wrapping them in a\n * Result envelope here. Drizzle already throws on misuse and returns typed rows\n * on success; mirroring its API keeps the contract identical to what the\n * `@stackbone/sdk/db` re-exports document, so creators write idiomatic Drizzle.\n *\n * Missing `STACKBONE_POSTGRES_URL` raises `SdkError('database_not_configured')`\n * with an actionable hint that points to `stackbone dev`. This is a creator\n * setup bug, not something the agent's code can recover from at runtime.\n *\n * Methods are declared with their full Drizzle generic signatures (rather than\n * `(...args) => Drizzle[k](...args)` arrow properties) so the inferred row\n * types from `pgTable(...)` flow end-to-end into the caller, which is the\n * promise the `@stackbone/sdk/db` re-export makes.\n *\n * The actual `postgres()` pool and the Drizzle handle are owned by the\n * module-internal singleton in `./shared-handle.ts`. The shared handle is\n * exposed to other SDK surfaces (RAG today, memory / queues tomorrow)\n * through the `shared()` method below — the **canonical accessor** of\n * the SDK's shared-handles pattern. Same instance every call → one pool\n * per agent process. See `shared-handle.spec.ts` for the invariant.\n */\nexport class DatabaseModule {\n private readonly _gate: ModuleGate | undefined;\n private readonly _databaseUrl: string | undefined;\n\n // The connection URL is resolved exactly once at `resolveConfig` time and\n // threaded down to `getDatabaseHandle` on first access; the singleton\n // caches it for the cold-start retry path. The resolver is the single\n // seam that touches `process.env` for this value.\n constructor(\n resolved: ResolvedConfig,\n /**\n * Test seam — see `ModuleGate`. Defaults to the lazy contract gate.\n * The gate is awaited at the terminal `await` of every Drizzle chain\n * (`select/insert/update/delete/execute/transaction`); when it returns\n * an error, a tagged `GateBlockedError` is thrown so callers see the\n * same `Error & { code, message, meta }` surface as the existing\n * `database_not_configured` setup-bug.\n */\n gate?: ModuleGate,\n ) {\n this._gate = gate ?? createModuleGate('database', resolved);\n this._databaseUrl = resolved.databaseUrl;\n }\n\n /**\n * Escape hatch — returns Drizzle's relational query builder verbatim. The\n * contract gate does NOT fire here because the surface is a synchronous\n * accessor; the user can still bypass the gate via `client.database.raw()`\n * for the same reason. Audit: `query` and `raw()` are intentionally\n * ungated escape hatches; the standard `select/insert/update/delete/\n * execute/transaction` path is fully gated.\n */\n get query(): DrizzleClient['query'] {\n return getDatabaseHandle(this._databaseUrl).query;\n }\n\n // Each query-builder verb invokes Drizzle eagerly (handle construction is\n // observable to tests) and wraps the result in a chainable thenable proxy.\n // Intermediate hops (`from`, `where`, ...) are recorded; only the terminal\n // `await` runs the chain, so a stale pool after a Fly Machines suspend\n // rebuilds and replays the chain exactly once via `createRetriableQueryBuilder`.\n // The contract gate is awaited at the same terminal step.\n select: DrizzleClient['select'] = ((...args: Parameters<DrizzleClient['select']>) =>\n retriable((h) => h.select(...args), this._databaseUrl, this._gate)) as DrizzleClient['select'];\n\n insert: DrizzleClient['insert'] = ((...args: Parameters<DrizzleClient['insert']>) =>\n retriable((h) => h.insert(...args), this._databaseUrl, this._gate)) as DrizzleClient['insert'];\n\n update: DrizzleClient['update'] = ((...args: Parameters<DrizzleClient['update']>) =>\n retriable((h) => h.update(...args), this._databaseUrl, this._gate)) as DrizzleClient['update'];\n\n delete: DrizzleClient['delete'] = ((...args: Parameters<DrizzleClient['delete']>) =>\n retriable((h) => h.delete(...args), this._databaseUrl, this._gate)) as DrizzleClient['delete'];\n\n // `execute()` returns Drizzle's `PgRaw` thenable for raw SQL — same\n // chainable proxy treatment as the query-builder verbs above.\n execute: DrizzleClient['execute'] = ((...args: Parameters<DrizzleClient['execute']>) =>\n retriable(\n (h) => h.execute(...args),\n this._databaseUrl,\n this._gate,\n )) as DrizzleClient['execute'];\n\n // `transaction()` takes a creator-supplied callback and returns a promise,\n // so it goes through the thunk-shaped wrapper. Any cold start mid-tx\n // rebuilds and replays the whole transaction; postgres-js will not commit\n // a half-baked tx. The contract gate fires before the first attempt.\n transaction: DrizzleClient['transaction'] = ((\n ...args: Parameters<DrizzleClient['transaction']>\n ) =>\n withColdStartRetry(\n () => getDatabaseHandle(this._databaseUrl).transaction(...args),\n this._gate,\n )) as DrizzleClient['transaction'];\n\n /**\n * Cross-surface raw-SQL runner carrying the SAME cold-start resilience the\n * query-builder verbs above get. Sibling agent-local surfaces (`approval`,\n * `config`, `secrets`, `prompts`) that issue tagged-template queries over the\n * shared postgres-js `Sql` MUST execute them through this instead of caching\n * `shared().$client` once and calling it directly. Otherwise a dead pooled\n * socket — Fly Machines suspending the Machine between invokes, or a\n * WSL2/Docker localhost relay dropping an idle connection during a long LLM\n * step — surfaces as an unretried `CONNECTION_ENDED`/`ECONNRESET`. That is\n * exactly the asymmetry that let `client.approval.request` fail while the\n * `client.database.insert` right before it recovered.\n *\n * `fn` receives a FRESH `$client` on each attempt, so the single retry runs\n * against the rebuilt pool. Whole-operation granularity is replayed as a\n * unit — pass a multi-statement `sql.begin(...)` transaction or a helper that\n * fires several queries and the replay re-runs all of it; postgres-js never\n * commits a half-applied tx, so that is safe. SQLSTATE application errors\n * pass straight through without a retry. Like `shared()`/`raw()`, the\n * contract gate is intentionally NOT consulted here — gating surfaces gate at\n * their own call sites.\n */\n runShared<T>(fn: (sql: Sql) => Promise<T> | T): Promise<T> {\n return withColdStartRetry(() => fn(getDatabaseHandle(this._databaseUrl).$client));\n }\n\n /**\n * `Result`-shaped sibling of `runShared` for surfaces whose driver swallows\n * the dead-socket error into a returned `Result.err.cause` instead of\n * throwing it — today only `client.rag`, whose `RagPipeline` returns a\n * `Result` rather than throwing. `attempt` runs once; if it comes back with a\n * pool-terminated `cause`, the pool is rebuilt and `attempt` replays exactly\n * once, then its result (success or the fresh error) is returned verbatim.\n * The `Result` contract is preserved end to end: a still-dead socket on the\n * replay surfaces as the surface's own `Result.err`, never as a raw throw.\n */\n async runSharedResult<T extends { error?: { cause?: unknown } | null }>(\n attempt: () => Promise<T>,\n ): Promise<T> {\n const first = await attempt();\n if (!first.error || !isPoolTerminatedError(first.error.cause)) return first;\n process.stderr.write(\n `[stackbone/sdk] database cold-start reconnect: rebuilding pool after ${\n (first.error.cause as { code?: string }).code ?? 'unknown'\n }\\n`,\n );\n invalidatePoolHandle();\n return attempt();\n }\n\n /**\n * Canonical accessor for the **shared-handles pattern**. Returns the\n * process-wide Drizzle handle backing `client.database`. Cross-surface\n * SDK consumers (RAG today, memory / queues tomorrow) call this — never\n * the implementation-detail singleton in `./shared-handle.ts` — to\n * ensure they share the one `postgres()` pool the agent process owns\n * against `STACKBONE_POSTGRES_URL`.\n *\n * Contract: same input → same instance. Calling `shared()` twice in the\n * same process returns the same reference; the underlying postgres-js\n * `Sql` is reachable as `shared().$client` for callers (e.g. RAG) that\n * need the template-tag function instead of the Drizzle facade.\n *\n * Like `raw()`, this is a synchronous accessor and intentionally does\n * NOT consult the contract gate — surfaces that gate behaviour gate it\n * at their own call sites (`pipeline.ingest`, etc.), not at handle\n * acquisition. Configuration errors (`database_not_configured`) throw\n * with the same tagged `Error` shape every other `client.database`\n * surface uses.\n */\n shared(): DrizzleClient {\n return getDatabaseHandle(this._databaseUrl);\n }\n\n /**\n * Escape hatch for **creator** callers that want the raw Drizzle handle\n * (e.g. to pass it to a library that expects `PostgresJsDatabase`).\n * Functionally identical to `shared()` — both return the same singleton\n * and trigger the same lazy initialisation — but kept under a distinct\n * name because the audiences differ: `shared()` is consumed by other\n * SDK surfaces and documents the cross-surface contract; `raw()` is\n * documented as the creator's escape hatch out of the structured\n * `select/insert/...` surface. Reading either intentionally does NOT\n * consult the contract gate; the caller is opting out of the SDK's\n * structured surface.\n */\n raw(): DrizzleClient {\n return this.shared();\n }\n}\n","// `@stackbone/prompt-compiler` — the deliberately minimal Mustache-subset\n// template engine shared by the SDK (`client.prompts.compile`), the cloud\n// `POST .../prompts/:key/preview` endpoint, the emulator's equivalent route,\n// and (eventually) Studio's in-browser preview pane.\n//\n// THE WHOLE SYNTAX is `{{var}}`, where `var` matches\n// `[a-zA-Z_][a-zA-Z0-9_]*` with optional surrounding whitespace inside the\n// braces (`{{ var }}`). NOTHING ELSE is special:\n// - `{{#if x}}` / `{{/if}}` / `{{#each}}` — conditionals/loops are NOT\n// parsed; they pass through verbatim as literal text.\n// - `{{!comment}}`, `{{> partial}}`, `{{var | filter}}`, `{{a.b}}` — every\n// one of these fails the strict `var` pattern, so the whole `{{...}}`\n// token is left untouched in the output.\n//\n// This is the law per the prompts PRD: prompts stay reviewable artefacts and\n// the engine has no expression surface to reason about for security. The\n// `treats {{#if}} as a literal` test enforces it — any future power\n// (conditionals, loops, helpers) requires a new ADR and a contract bump.\n//\n// Zero runtime dependencies. No `mustache`, no `handlebars`, no parser\n// generator — a single regex match loop and `String(value)` coercion.\n\n/** A `{{var}}` placeholder name: a JS-identifier-like token. */\nconst PLACEHOLDER = /\\{\\{\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\}\\}/g;\n\nexport interface CompileOk {\n ok: true;\n output: string;\n}\n\nexport type CompileError =\n | { code: 'missing_var'; name: string }\n | { code: 'invalid_syntax'; detail: string };\n\nexport interface CompileFail {\n ok: false;\n error: CompileError;\n}\n\nexport type CompileResult = CompileOk | CompileFail;\n\n/**\n * Substitute every `{{var}}` in `template` with `String(vars[var])`.\n *\n * - A placeholder whose name is absent from `vars` (or maps to `undefined`)\n * fails fast with `{ ok: false, error: { code: 'missing_var', name } }`.\n * This is what surfaces a typo to the creator immediately instead of\n * sending an LLM call with a literal `{{name}}` in it.\n * - Extra keys in `vars` that the template never references are silently\n * ignored, so a creator can pass a generic context object.\n * - Values are coerced with `String(value)`: numbers, booleans and `null`\n * stringify per JS defaults (`null` -> `\"null\"`); objects become\n * `[object Object]` (creators stringify their own objects).\n */\nexport function compile(template: string, vars: Record<string, unknown>): CompileResult {\n let missing: string | null = null;\n const output = template.replace(PLACEHOLDER, (_match, name: string) => {\n if (missing !== null) return _match;\n const value = vars[name];\n // `undefined` (key absent or explicitly undefined) is a missing var. We\n // record the first miss and stop substituting meaningfully; the caller\n // sees the error, not a half-rendered string.\n if (value === undefined) {\n missing = name;\n return _match;\n }\n return String(value);\n });\n\n if (missing !== null) {\n return { ok: false, error: { code: 'missing_var', name: missing } };\n }\n return { ok: true, output };\n}\n\n/**\n * List the distinct `{{var}}` names referenced by `template`, in first-seen\n * order with no duplicates. Used for validation and for Studio's diff view\n * (\"which vars were added/removed between versions\"). Pure; never throws.\n */\nexport function extractVars(template: string): string[] {\n const seen = new Set<string>();\n const ordered: string[] = [];\n for (const match of template.matchAll(PLACEHOLDER)) {\n const name = match[1];\n if (name !== undefined && !seen.has(name)) {\n seen.add(name);\n ordered.push(name);\n }\n }\n return ordered;\n}\n","import { compile as compileTemplate, extractVars } from '@stackbone/prompt-compiler';\nimport { type Sql } from 'postgres';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { err, ok, type Result } from '../../../result';\nimport { type DatabaseModule } from '../database/database';\n\n// `client.prompts` — AGENT-LOCAL. The agent reads its own prompts straight out\n// of `stackbone_platform.prompts` / `prompt_versions` (the canonical agent-DB\n// store, migration 0013) over the shared `client.database` pool and compiles\n// them with the zero-dependency `@stackbone/prompt-compiler` (Mustache subset:\n// `{{var}}` only). There is no control-plane HTTP round-trip — the agent owns\n// its data, exactly like `client.secrets` and `client.config`.\n//\n// Connection ownership: like `client.rag` / `client.secrets`, this surface\n// reaches the underlying `postgres-js` `Sql` through\n// `client.database.shared().$client`, so the agent process opens exactly one\n// pool against `STACKBONE_POSTGRES_URL`.\n//\n// Soft delete: `delete(key)` stamps `deleted_at` and keeps the rows; reads\n// filter `deleted_at IS NULL` and return `prompts_not_found` for a removed key.\n//\n// Schema gating: a `42P01` (relation does not exist) from any read/write means\n// the prompts migration has not been applied — the facade surfaces\n// `prompts_not_configured` with a \"run `stackbone db migrate up`\" hint instead\n// of a raw Postgres error.\n\nconst PG_UNDEFINED_TABLE = '42P01';\nconst PG_UNIQUE_VIOLATION = '23505';\n\n/**\n * A prompt's current/active state. Key-based (workspace-unique). `template` is\n * the current version's content; `version` is the live version number.\n */\nexport interface Prompt {\n key: string;\n name: string;\n description: string | null;\n /** The current version's content. */\n template: string;\n /** The live version number. The first `create` produces version `1`. */\n version: number;\n /** `{{var}}` names referenced by the current version. */\n variables: readonly string[];\n metadata: Record<string, unknown> | null;\n /** ISO 8601 UTC timestamp. */\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface GetPromptOptions {\n /** Pin a specific version. Omitted -> current/latest. */\n version?: number;\n}\n\nexport interface ListPromptsOptions {\n /** 1..100. Default 50. */\n limit?: number;\n}\n\nexport interface ListPromptsResult {\n /** Current version of each (non-deleted) prompt. */\n items: readonly Prompt[];\n}\n\nexport interface CreatePromptRequest {\n key: string;\n name: string;\n /** The version-1 content. */\n template: string;\n description?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface UpdatePromptOptions {\n /** New content. Appends a new immutable version. */\n template?: string;\n name?: string;\n description?: string | null;\n /** Replaces the prompt-head metadata. */\n metadata?: Record<string, unknown>;\n}\n\nexport interface DeletePromptOptions {\n /** Reserved for future per-version deletes; ignored today (soft-deletes the key). */\n version?: number;\n}\n\nexport interface DeletePromptResult {\n key: string;\n /** Number of prompt heads soft-deleted (0 or 1). */\n deleted: number;\n}\n\nexport interface CompilePromptResult {\n /** The rendered string. */\n output: string;\n /** The version the compile ran against. */\n version: number;\n}\n\ninterface PromptHeadRow {\n key: string;\n name: string;\n description: string | null;\n current_version: number;\n metadata: Record<string, unknown> | null;\n created_at: string | Date;\n updated_at: string | Date;\n content: string;\n}\n\ninterface VersionContentRow {\n version: number;\n content: string;\n}\n\nexport class PromptsFacade {\n constructor(\n private readonly _resolved: ResolvedConfig,\n /**\n * Lazy accessor for `client.database`. The facade pulls the shared\n * `postgres-js` `Sql` via `getDatabase().shared().$client` — never\n * reaching into a sibling module's implementation file.\n */\n private readonly _getDatabase: () => DatabaseModule,\n ) {\n // `_resolved` is retained for symmetry with the other agent-local facades.\n void this._resolved;\n }\n\n async get(key: string, options?: GetPromptOptions): Promise<Result<Prompt>> {\n const keyError = validateKey(key);\n if (keyError) return err(keyError);\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n\n try {\n const head = await this._getDatabase().runShared((db) => fetchHead(db, key));\n if (!head) {\n return err(notFound(key));\n }\n if (options?.version !== undefined && options.version !== head.current_version) {\n const content = await this._getDatabase().runShared((db) =>\n fetchVersionContent(db, key, options.version as number),\n );\n if (content === null) {\n return err({\n code: 'prompts_not_found',\n message: `Prompt \\`${key}\\` has no version ${options.version}.`,\n meta: { key, version: options.version },\n });\n }\n return ok(rowToPrompt(head, content.version, content.content));\n }\n return ok(rowToPrompt(head, head.current_version, head.content));\n } catch (cause) {\n return this.mapReadError(cause, key);\n }\n }\n\n async compile(\n key: string,\n variables: Record<string, unknown>,\n options?: GetPromptOptions,\n ): Promise<Result<CompilePromptResult>> {\n const prompt = await this.get(key, options);\n if (prompt.error) return err(prompt.error);\n const result = compileTemplate(prompt.data.template, variables ?? {});\n if (!result.ok) {\n if (result.error.code === 'missing_var') {\n return err({\n code: 'prompts_missing_var',\n message: `Prompt \\`${key}\\` references {{${result.error.name}}} but no value was provided.`,\n meta: { key, name: result.error.name },\n });\n }\n return err({\n code: 'prompts_invalid_request',\n message: `Prompt \\`${key}\\` failed to compile: ${result.error.detail}.`,\n meta: { key },\n });\n }\n return ok({ output: result.output, version: prompt.data.version });\n }\n\n async list(options?: ListPromptsOptions): Promise<Result<ListPromptsResult>> {\n const limit = clampLimit(options?.limit);\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n try {\n const rows = await this._getDatabase().runShared(\n (db) => db<PromptHeadRow[]>`\n SELECT p.key, p.name, p.description, p.current_version, p.metadata,\n p.created_at, p.updated_at, v.content\n FROM stackbone_platform.prompts p\n JOIN stackbone_platform.prompt_versions v\n ON v.prompt_key = p.key AND v.version = p.current_version\n WHERE p.deleted_at IS NULL\n ORDER BY p.key\n LIMIT ${limit}\n `,\n );\n return ok({\n items: rows.map((row) => rowToPrompt(row, row.current_version, row.content)),\n });\n } catch (cause) {\n return this.mapReadError(cause);\n }\n }\n\n async create(request: CreatePromptRequest): Promise<Result<Prompt>> {\n const keyError = validateKey(request?.key);\n if (keyError) return err(keyError);\n if (!request.name?.trim()) {\n return err({ code: 'prompts_invalid_request', message: '`name` is required.' });\n }\n if (!request.template) {\n return err({ code: 'prompts_invalid_request', message: '`template` is required.' });\n }\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n\n const variables = extractVars(request.template);\n try {\n const head = await this._getDatabase().runShared((db) =>\n db.begin(async (tx) => {\n await tx`\n INSERT INTO stackbone_platform.prompts\n (key, name, description, current_version, metadata)\n VALUES (\n ${request.key},\n ${request.name},\n ${request.description ?? null},\n 1,\n ${request.metadata ? JSON.stringify(request.metadata) : null}::jsonb\n )\n `;\n await tx`\n INSERT INTO stackbone_platform.prompt_versions\n (prompt_key, version, content, vars_extracted)\n VALUES (\n ${request.key}, 1, ${request.template}, ${JSON.stringify(variables)}::jsonb\n )\n `;\n const rows = await tx<PromptHeadRow[]>`\n SELECT p.key, p.name, p.description, p.current_version, p.metadata,\n p.created_at, p.updated_at, v.content\n FROM stackbone_platform.prompts p\n JOIN stackbone_platform.prompt_versions v\n ON v.prompt_key = p.key AND v.version = p.current_version\n WHERE p.key = ${request.key}\n `;\n return rows[0];\n }),\n );\n if (!head) {\n return err({ code: 'prompts_unavailable', message: 'Prompt create returned no row.' });\n }\n return ok(rowToPrompt(head, head.current_version, head.content));\n } catch (cause) {\n if (isPgError(cause, PG_UNIQUE_VIOLATION)) {\n return err({\n code: 'prompts_already_exists',\n message: `Prompt \\`${request.key}\\` already exists.`,\n meta: { key: request.key },\n });\n }\n return this.mapWriteError(cause, request.key);\n }\n }\n\n async update(key: string, options: UpdatePromptOptions): Promise<Result<Prompt>> {\n const keyError = validateKey(key);\n if (keyError) return err(keyError);\n if (\n options?.template === undefined &&\n options?.name === undefined &&\n options?.description === undefined &&\n options?.metadata === undefined\n ) {\n return err({\n code: 'prompts_invalid_request',\n message: 'at least one of template, name, description or metadata is required.',\n });\n }\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n\n try {\n const head = await this._getDatabase().runShared((db) =>\n db.begin(async (tx) => {\n // Serialize concurrent updates to the same key so two parallel writers\n // can never read the same `MAX(version)` and both insert the next\n // number. `pg_advisory_xact_lock` is released at COMMIT/ROLLBACK.\n await tx`SELECT pg_advisory_xact_lock(hashtext(${`prompts:${key}`}))`;\n\n const existing = await tx<PromptHeadRow[]>`\n SELECT p.key, p.name, p.description, p.current_version, p.metadata,\n p.created_at, p.updated_at, v.content\n FROM stackbone_platform.prompts p\n JOIN stackbone_platform.prompt_versions v\n ON v.prompt_key = p.key AND v.version = p.current_version\n WHERE p.key = ${key} AND p.deleted_at IS NULL\n LIMIT 1\n `;\n const current = existing[0];\n if (!current) return null;\n\n let nextVersion = current.current_version;\n if (options.template !== undefined) {\n nextVersion = current.current_version + 1;\n const variables = extractVars(options.template);\n await tx`\n INSERT INTO stackbone_platform.prompt_versions\n (prompt_key, version, content, vars_extracted)\n VALUES (\n ${key}, ${nextVersion}, ${options.template},\n ${JSON.stringify(variables)}::jsonb\n )\n `;\n }\n\n await tx`\n UPDATE stackbone_platform.prompts\n SET current_version = ${nextVersion},\n name = ${options.name ?? current.name},\n description = ${\n options.description !== undefined ? options.description : current.description\n },\n metadata = COALESCE(${\n options.metadata !== undefined ? JSON.stringify(options.metadata) : null\n }::jsonb, metadata),\n updated_at = now()\n WHERE key = ${key}\n `;\n\n const rows = await tx<PromptHeadRow[]>`\n SELECT p.key, p.name, p.description, p.current_version, p.metadata,\n p.created_at, p.updated_at, v.content\n FROM stackbone_platform.prompts p\n JOIN stackbone_platform.prompt_versions v\n ON v.prompt_key = p.key AND v.version = p.current_version\n WHERE p.key = ${key}\n `;\n return rows[0] ?? null;\n }),\n );\n\n if (head === null) {\n return err(notFound(key));\n }\n return ok(rowToPrompt(head, head.current_version, head.content));\n } catch (cause) {\n return this.mapWriteError(cause, key);\n }\n }\n\n async delete(key: string, _options?: DeletePromptOptions): Promise<Result<DeletePromptResult>> {\n const keyError = validateKey(key);\n if (keyError) return err(keyError);\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n try {\n const rows = await this._getDatabase().runShared(\n (db) => db<{ key: string }[]>`\n UPDATE stackbone_platform.prompts\n SET deleted_at = now(), updated_at = now()\n WHERE key = ${key} AND deleted_at IS NULL\n RETURNING key\n `,\n );\n const deleted = rows.length;\n if (deleted === 0) {\n return err(notFound(key));\n }\n return ok({ key, deleted });\n } catch (cause) {\n return this.mapWriteError(cause, key);\n }\n }\n\n private sql(): Result<Sql> {\n try {\n return ok(this._getDatabase().shared().$client);\n } catch (cause) {\n const code = (cause as { code?: string } | null)?.code;\n if (code === 'database_not_configured') {\n return err({\n code: 'database_not_configured',\n message: (cause as Error).message,\n cause,\n });\n }\n return err({\n code: 'prompts_unavailable',\n message: 'Agent database handle unavailable.',\n cause,\n });\n }\n }\n\n private mapReadError(cause: unknown, key?: string): Result<never> {\n if (isPgError(cause, PG_UNDEFINED_TABLE)) {\n return err(notConfigured());\n }\n return err({\n code: 'prompts_unavailable',\n message: key\n ? `Failed to read prompt \\`${key}\\` from the agent database.`\n : 'Failed to read prompts from the agent database.',\n cause,\n });\n }\n\n private mapWriteError(cause: unknown, key: string): Result<never> {\n if (isPgError(cause, PG_UNDEFINED_TABLE)) {\n return err(notConfigured());\n }\n return err({\n code: 'prompts_unavailable',\n message: `Failed to write prompt \\`${key}\\` to the agent database.`,\n cause,\n });\n }\n}\n\nfunction notFound(key: string): {\n code: 'prompts_not_found';\n message: string;\n meta: { key: string };\n} {\n return {\n code: 'prompts_not_found',\n message: `Prompt \\`${key}\\` is not registered for this agent.`,\n meta: { key },\n };\n}\n\nfunction notConfigured(): { code: 'prompts_not_configured'; message: string } {\n return {\n code: 'prompts_not_configured',\n message:\n 'The prompts schema is not applied for this agent. Run `stackbone db migrate up` to create it.',\n };\n}\n\nfunction validateKey(key: string): { code: 'prompts_invalid_request'; message: string } | null {\n if (typeof key !== 'string' || !key.trim()) {\n return { code: 'prompts_invalid_request', message: '`key` is required.' };\n }\n return null;\n}\n\nfunction clampLimit(limit: number | undefined): number {\n if (limit === undefined) return 50;\n if (!Number.isFinite(limit) || limit < 1) return 1;\n return Math.min(Math.trunc(limit), 100);\n}\n\nfunction isPgError(cause: unknown, code: string): boolean {\n return (cause as { code?: string } | null)?.code === code;\n}\n\nfunction rowToPrompt(row: PromptHeadRow, version: number, template: string): Prompt {\n return {\n key: row.key,\n name: row.name,\n description: row.description,\n template,\n version,\n variables: extractVars(template),\n metadata: row.metadata,\n createdAt: toIso(row.created_at),\n updatedAt: toIso(row.updated_at),\n };\n}\n\nasync function fetchHead(sql: Sql, key: string): Promise<PromptHeadRow | undefined> {\n const rows = await sql<PromptHeadRow[]>`\n SELECT p.key, p.name, p.description, p.current_version, p.metadata,\n p.created_at, p.updated_at, v.content\n FROM stackbone_platform.prompts p\n JOIN stackbone_platform.prompt_versions v\n ON v.prompt_key = p.key AND v.version = p.current_version\n WHERE p.key = ${key} AND p.deleted_at IS NULL\n LIMIT 1\n `;\n return rows[0];\n}\n\nasync function fetchVersionContent(\n sql: Sql,\n key: string,\n version: number,\n): Promise<VersionContentRow | null> {\n const rows = await sql<VersionContentRow[]>`\n SELECT version, content\n FROM stackbone_platform.prompt_versions\n WHERE prompt_key = ${key} AND version = ${version}\n LIMIT 1\n `;\n return rows[0] ?? null;\n}\n\nfunction toIso(value: string | Date): string {\n return value instanceof Date ? value.toISOString() : new Date(value).toISOString();\n}\n","// Self-contained Result envelope for `@stackbone/rag-core`. This lib is a\n// `scope:shared` LEAF — it must not import the SDK's own `Result`/`SdkError`\n// types (that would couple a leaf to `scope:sdk`). The shapes here are\n// structurally identical to the SDK envelope, and `RagErrorCode` is a strict\n// subset of the SDK's `SdkErrorCode` catalog, so a `RagError` produced here is\n// assignable to the SDK's `SdkError` without a cast at the facade boundary.\n\n/**\n * The error codes the RAG ingestion core can emit. Every entry here also\n * exists in the SDK's `SdkErrorCode` catalog (the `rag_*` family plus\n * `rag_schema_missing`), so the SDK facade re-exposes these verbatim.\n */\nexport type RagErrorCode =\n | 'rag_dim_mismatch'\n | 'rag_embedding_failed'\n | 'rag_embedding_model_unsupported'\n | 'rag_error'\n | 'rag_ingest_cancelled'\n | 'rag_invalid_request'\n | 'rag_job_insert_failed'\n | 'rag_jobs_error'\n | 'rag_schema_missing';\n\n/**\n * Uniform error envelope returned by every RAG core method. `cause` and `meta`\n * are optional escape hatches so callers can attach upstream errors / context\n * without breaking the public shape. Mirrors the SDK's `SdkError`.\n */\nexport interface RagError {\n code: RagErrorCode;\n message: string;\n cause?: unknown;\n meta?: Record<string, unknown>;\n}\n\n/**\n * Structural error envelope an injected port (the `sqlProvider` thunk, the\n * `EmbeddingsPort`) may carry. Widened to `code: string` so the SDK can inject\n * its own `SdkError` (whose code catalog is a superset of `RagErrorCode`)\n * without a cast. The pipeline forwards such errors verbatim through its output\n * Result, which is why the public `Result<T, E>` is generic over the injected\n * error type.\n */\nexport interface PortError {\n code: string;\n message: string;\n cause?: unknown;\n meta?: Record<string, unknown>;\n}\n\n/**\n * Discriminated result the RAG core returns. Narrowing on `result.error`\n * automatically refines `result.data` to `T`. The error type defaults to the\n * core's own `RagError`; injected ports and the pipeline's public methods\n * widen it to the caller's error envelope so a forwarded `sqlProvider` /\n * embeddings-port error survives verbatim.\n */\nexport type Result<T, E extends PortError = RagError> =\n | { data: T; error: null }\n | { data: null; error: E };\n\nexport function ok<T, E extends PortError = RagError>(data: T): Result<T, E> {\n return { data, error: null };\n}\n\nexport function err<T = never, E extends PortError = RagError>(error: E): Result<T, E> {\n return { data: null, error };\n}\n\n/**\n * Type guard that narrows a `Result<T, E>` to its success branch. Needed\n * because `E` is generic: TS cannot treat `{ error: null } | { error: E }` as a\n * discriminated union (the `E` branch isn't a literal), so a bare `if\n * (r.error)` check leaves `r.data` as `T | null`. Routing through this guard\n * restores the `T` narrowing.\n */\nexport function isOk<T, E extends PortError>(\n result: Result<T, E>,\n): result is { data: T; error: null } {\n return result.error === null;\n}\n","// Shared RAG control-surface contract: the typed read/cancel errors, the\n// reserved object-storage prefix, and the write-path document-validation\n// helpers. Both the local agent emulator (`scope:runtime`) and the Studio\n// control plane (`scope:platform`) import these from this `scope:shared` leaf so\n// the local datapath and the cloud surface stay byte-for-byte identical — there\n// is exactly one definition of each error class (`instanceof` checks straddle\n// both backends), one reserved prefix, and one validation rulebook.\n//\n// `@stackbone/validators` is itself a `scope:shared` leaf, so importing the\n// `RagJobStatus` type and the supported-content-type enum from it does not break\n// the module-boundary rules.\nimport {\n ragSupportedContentTypeSchema,\n type RagJobStatus,\n type RagSupportedContentType,\n} from '@stackbone/validators';\nimport { STUDIO_RAG_MAX_FILE_BYTES } from '../limits';\n\n// --- Read / cancel surface errors -------------------------------------------\n// Thrown by the RAG read handlers (emulator) and `RagService` (Studio) and\n// caught by `instanceof` in the controllers + emulator route layer. Single\n// definition so the class identity is shared across both backends.\n\n/** A `filter` query string was not a JSON object. Maps to a 400. */\nexport class RagInvalidFilterError extends Error {\n constructor(message = 'rag_invalid_filter') {\n super(message);\n this.name = 'RagInvalidFilterError';\n }\n}\n\n/** A query embedding had the wrong number of dimensions. Maps to a 400. */\nexport class RagDimensionMismatchError extends Error {\n readonly expected: number;\n readonly received: number;\n constructor(expected: number, received: number) {\n super(`rag_dim_mismatch: expected ${expected}, received ${received}`);\n this.name = 'RagDimensionMismatchError';\n this.expected = expected;\n this.received = received;\n }\n}\n\n/**\n * Raised when any of the canonical RAG tables is missing (PG 42P01). The\n * controller / route renders the same empty state the RAG tab shows before the\n * agent's first ingest, instead of an opaque 500.\n */\nexport class RagSchemaMissingError extends Error {\n constructor() {\n super('rag_schema_missing');\n this.name = 'RagSchemaMissingError';\n }\n}\n\n/** A named collection does not exist. Maps to a 404. */\nexport class RagCollectionNotFoundError extends Error {\n constructor(name: string) {\n super(`rag_collection_not_found: ${name}`);\n this.name = 'RagCollectionNotFoundError';\n }\n}\n\n/** No ingest job matched the supplied id. Maps to a 404. */\nexport class RagJobNotFoundError extends Error {\n constructor() {\n super('rag_job_not_found');\n this.name = 'RagJobNotFoundError';\n }\n}\n\n/** An ingest job is in a terminal state and cannot be cancelled. Maps to a 409. */\nexport class RagJobNotCancelableError extends Error {\n readonly state: RagJobStatus;\n constructor(state: RagJobStatus) {\n super(`rag_job_not_cancelable: ${state}`);\n this.name = 'RagJobNotCancelableError';\n this.state = state;\n }\n}\n\n// --- Reserved object-storage prefix -----------------------------------------\n\n/**\n * Object-storage prefix (relative to the `<agentId>/` scope) reserved for\n * managed RAG ingestion. Originals uploaded through the managed RAG panel land\n * under `<agentId>/rag/...`. Kept as `'rag/'` to match the SDK's\n * `client.storage.from('rag')` convention — the SAME physical namespace, never\n * a separate bucket. The Storage explorer treats this prefix as read-only;\n * the managed `*ManagedObject` seams deliberately bypass that lock.\n */\nexport const RAG_STORAGE_PREFIX = 'rag/';\n\n/** Build the managed storage key for a document under a collection. */\nexport function buildRagStorageKey(collection: string, documentName: string): string {\n return `${RAG_STORAGE_PREFIX}${collection}/${documentName}`;\n}\n\n// --- Write-path document validation -----------------------------------------\n// Shared by the emulator write handlers and `RagWriteService` so the up-front\n// upload guards run identically on both sides. The helpers return discriminated\n// results rather than throwing, so each backend keeps its own existing public\n// error classes (the controllers map those to HTTP status codes by identity).\n\n/** Supported source-file extensions keyed by content type. */\nconst CONTENT_TYPE_TO_EXTENSION: Record<string, string> = {\n 'text/plain': '.txt',\n 'text/markdown': '.md',\n 'application/pdf': '.pdf',\n};\n\n/**\n * Derive the stored-object extension for a content type. Unknown types yield an\n * empty string (the original is still stored, just without an extension).\n */\nexport function ragContentTypeExtension(contentType: string): string {\n return CONTENT_TYPE_TO_EXTENSION[contentType] ?? '';\n}\n\n/** Result of {@link resolveRagContentType}. */\nexport type ResolveContentTypeResult =\n | { ok: true; contentType: RagSupportedContentType }\n | { ok: false; reason: 'unsupported_type'; candidate: string };\n\n/**\n * Re-validate the declared content type against the multipart part's own MIME\n * type. Prefers a supported part MIME type; falls back to the declared type\n * when the part MIME is generic/absent; rejects otherwise so a `.exe` renamed to\n * `.pdf` is caught.\n */\nexport function resolveRagContentType(\n declared: string,\n mimetype: string,\n): ResolveContentTypeResult {\n const candidate = mimetype && mimetype !== 'application/octet-stream' ? mimetype : declared;\n const parsed = ragSupportedContentTypeSchema.safeParse(candidate);\n if (parsed.success) return { ok: true, contentType: parsed.data };\n const declaredParsed = ragSupportedContentTypeSchema.safeParse(declared);\n if (declaredParsed.success && (!mimetype || mimetype === 'application/octet-stream')) {\n return { ok: true, contentType: declaredParsed.data };\n }\n return { ok: false, reason: 'unsupported_type', candidate };\n}\n\n/** Result of {@link validateRagUploadFile}. */\nexport type ValidateUploadResult = { ok: true } | { ok: false; reason: 'too_large' };\n\n/** Reject an upload whose size exceeds the shared ingest cap. */\nexport function validateRagUploadFile(size: number): ValidateUploadResult {\n if (size > STUDIO_RAG_MAX_FILE_BYTES) return { ok: false, reason: 'too_large' };\n return { ok: true };\n}\n","// The well-known contract for the reserved `rag-ingest` workflow role.\n//\n// RAG ingestion runs as a durable World workflow identified by a single reserved\n// ROLE: `rag-ingest`. The platform ships a default workflow; a creator may\n// replace it by dropping `workflows/rag-ingest.workflow.ts` into their workspace.\n// Both the default and any override are addressed by ROLE, never by a hardcoded\n// workflow id, and BOTH must honour the input/output contract below.\n//\n// This shape is the single source of truth shared across the seams that resolve\n// or validate the role:\n// - the platform default workflow declares an `inputSchema`/`outputSchema`\n// matching it (defined inline in workspace code, kept in step with this),\n// - the build/boot contract validator (F2) fails LOUDLY when a creator override\n// declares schemas incompatible with it,\n// - the `ingestDocuments()` SDK helper (F3) validates its arguments against the\n// input shape before triggering,\n// - the emulator upload handler (F1) passes exactly this input to `start()`.\n//\n// The uploaded file NEVER travels in the input — only its `storageKey` does (the\n// original is staged in workspace storage first), so a large document never hits\n// the trigger body-size limit.\nimport { z } from 'zod';\n\n/**\n * The reserved role name. Resolved by file convention: a workspace's\n * `workflows/rag-ingest.workflow.ts` (or the seeded platform default) builds to a\n * workflow named `rag-ingest`, so the role IS the workflow name everywhere it is\n * triggered (UI, CLI, `ingestDocuments`).\n */\nexport const RAG_INGEST_ROLE = 'rag-ingest';\n\n/**\n * The minimal input the `rag-ingest` workflow receives. Extra fields are\n * tolerated so an override may accept more than the contract requires; the three\n * named fields are mandatory and non-empty.\n */\nexport const ragIngestInputSchema = z.object({\n /** Destination collection. */\n collection: z.string().min(1),\n /** Where the staged original lives in workspace storage (under the `rag/` prefix). */\n storageKey: z.string().min(1),\n /** Source MIME type (`text/plain` | `text/markdown` | `application/pdf`). */\n contentType: z.string().min(1),\n});\n\n/** The output the `rag-ingest` workflow returns: the created/replaced document + chunk count. */\nexport const ragIngestOutputSchema = z.object({\n /** The document row created (or replaced) by the ingest. */\n documentId: z.string().min(1),\n /** How many chunks were persisted. */\n chunks: z.number().int().nonnegative(),\n});\n\n/** Input the `rag-ingest` workflow receives. See {@link ragIngestInputSchema}. */\nexport type RagIngestInput = z.infer<typeof ragIngestInputSchema>;\n/** Output the `rag-ingest` workflow returns. See {@link ragIngestOutputSchema}. */\nexport type RagIngestOutput = z.infer<typeof ragIngestOutputSchema>;\n\n// --- Contract validation (the override safety net) --------------------------\n// At build/boot the runtime validates that the ACTIVE `rag-ingest` workflow —\n// the platform default OR a creator override — declares input/output schemas\n// COMPATIBLE with the well-known contract, and fails LOUDLY otherwise. This is\n// the file-based override's guardrail: a creator who reshapes the workflow but\n// breaks the contract finds out at boot, not in production.\n//\n// The check is STRUCTURAL over the harvested JSON Schema (the `z.toJSONSchema`\n// shape the workflow build folds onto the manifest), not a deep schema-equality:\n// each well-known field must be present, REQUIRED, and of a compatible JSON type;\n// extra fields an override declares are allowed.\n\n/** The result of {@link validateRagIngestContract}. */\nexport interface RagIngestContractCheck {\n ok: boolean;\n /** One human-readable line per violation (empty when `ok`). */\n problems: string[];\n}\n\n/** Accepted JSON-Schema `type`s per well-known field. `chunks` allows number/integer. */\nconst REQUIRED_INPUT_FIELDS: Record<string, readonly string[]> = {\n collection: ['string'],\n storageKey: ['string'],\n contentType: ['string'],\n};\nconst REQUIRED_OUTPUT_FIELDS: Record<string, readonly string[]> = {\n documentId: ['string'],\n chunks: ['number', 'integer'],\n};\n\nconst asObjectSchema = (\n schema: unknown,\n): { properties: Record<string, unknown>; required: string[] } | null => {\n if (!schema || typeof schema !== 'object') return null;\n const s = schema as Record<string, unknown>;\n const properties =\n s['properties'] && typeof s['properties'] === 'object'\n ? (s['properties'] as Record<string, unknown>)\n : {};\n const required = Array.isArray(s['required']) ? (s['required'] as unknown[]).map(String) : [];\n return { properties, required };\n};\n\nconst checkFields = (\n half: 'input' | 'output',\n schema: unknown,\n fields: Record<string, readonly string[]>,\n problems: string[],\n): void => {\n const obj = asObjectSchema(schema);\n if (!obj) {\n problems.push(\n `the rag-ingest ${half} schema is not declared (export an \\`${half}Schema\\` z.object that matches the contract).`,\n );\n return;\n }\n for (const [field, types] of Object.entries(fields)) {\n const prop = obj.properties[field];\n if (!prop || typeof prop !== 'object') {\n problems.push(`the rag-ingest ${half} is missing the required \\`${field}\\` field.`);\n continue;\n }\n if (!obj.required.includes(field)) {\n problems.push(`the rag-ingest ${half} field \\`${field}\\` must be required, not optional.`);\n }\n const type = (prop as Record<string, unknown>)['type'];\n if (typeof type !== 'string' || !types.includes(type)) {\n problems.push(\n `the rag-ingest ${half} field \\`${field}\\` must be of type ${types.join('/')} (got ${\n typeof type === 'string' ? type : 'unknown'\n }).`,\n );\n }\n }\n};\n\n/**\n * Validate a harvested input/output JSON Schema pair against the well-known\n * `rag-ingest` contract. Returns `ok` plus a list of human-readable problems.\n * The caller (the workflow build) aborts loudly when `!ok`, naming the workflow.\n */\nexport function validateRagIngestContract(schema: {\n input: unknown;\n output: unknown;\n}): RagIngestContractCheck {\n const problems: string[] = [];\n checkFields('input', schema.input, REQUIRED_INPUT_FIELDS, problems);\n checkFields('output', schema.output, REQUIRED_OUTPUT_FIELDS, problems);\n return { ok: problems.length === 0, problems };\n}\n","export type ChunkStrategy = 'recursive' | 'sentence';\n\nexport interface ChunkOptions {\n /** Splitter algorithm. Default `recursive`. */\n strategy?: ChunkStrategy;\n /** Target characters per chunk. Default 512. */\n size?: number;\n /** Characters of overlap between consecutive chunks. Default 64. */\n overlap?: number;\n}\n\nconst DEFAULT_SIZE = 512;\nconst DEFAULT_OVERLAP = 64;\n\nconst RECURSIVE_SEPARATORS = ['\\n\\n', '\\n', ' ', ''] as const;\n\nconst SENTENCE_BOUNDARY = /(?<=[.!?])\\s+(?=[A-ZÀ-ſ])/g;\n\nexport function chunk(text: string, options: ChunkOptions = {}): string[] {\n const size = options.size ?? DEFAULT_SIZE;\n const overlap = options.overlap ?? DEFAULT_OVERLAP;\n const strategy = options.strategy ?? 'recursive';\n\n if (size <= 0) throw new Error('chunk: `size` must be > 0');\n if (overlap < 0) throw new Error('chunk: `overlap` must be >= 0');\n if (overlap >= size) throw new Error('chunk: `overlap` must be < `size`');\n\n const trimmed = text.trim();\n if (!trimmed) return [];\n\n const pieces = strategy === 'sentence' ? splitBySentence(trimmed) : splitRecursive(trimmed, size);\n return mergePieces(pieces, size, overlap);\n}\n\n/**\n * `sepIdx` skips separators that have already failed for the parent fragment —\n * once `\\n\\n` produced no split, the recursive call on each part doesn't need\n * to retry it.\n */\nfunction splitRecursive(text: string, size: number, sepIdx = 0): string[] {\n if (text.length <= size) return [text];\n for (let idx = sepIdx; idx < RECURSIVE_SEPARATORS.length; idx++) {\n const sep = RECURSIVE_SEPARATORS[idx] as string;\n if (sep === '') return splitByLength(text, size);\n const parts = text.split(sep);\n if (parts.length === 1) continue;\n const out: string[] = [];\n for (const part of parts) {\n if (!part) continue;\n if (part.length <= size) out.push(part);\n else out.push(...splitRecursive(part, size, idx + 1));\n }\n return out;\n }\n return splitByLength(text, size);\n}\n\nfunction splitByLength(text: string, size: number): string[] {\n const out: string[] = [];\n for (let i = 0; i < text.length; i += size) out.push(text.slice(i, i + size));\n return out;\n}\n\nfunction splitBySentence(text: string): string[] {\n return text.split(SENTENCE_BOUNDARY).filter((s) => s.trim().length > 0);\n}\n\n/**\n * Greedy pack into chunks up to `size`, carrying the trailing `overlap`\n * characters of the previous chunk into the next. Avoids O(n²) string\n * concatenation by buffering parts and joining once per chunk.\n */\nfunction mergePieces(pieces: string[], size: number, overlap: number): string[] {\n const out: string[] = [];\n let bufParts: string[] = [];\n let bufLen = 0;\n\n const flush = (): string => {\n const closed = bufParts.join(' ');\n out.push(closed);\n bufParts = [];\n bufLen = 0;\n return closed;\n };\n\n const seed = (text: string): void => {\n bufParts = [text];\n bufLen = text.length;\n };\n\n for (const piece of pieces) {\n if (!piece) continue;\n if (piece.length > size) {\n if (bufLen > 0) flush();\n for (const slice of splitByLength(piece, size)) out.push(slice);\n continue;\n }\n const candidateLen = bufLen === 0 ? piece.length : bufLen + 1 + piece.length;\n if (candidateLen <= size) {\n bufParts.push(piece);\n bufLen = candidateLen;\n continue;\n }\n const closed = flush();\n if (overlap > 0) {\n const seedText = `${tail(closed, overlap)} ${piece}`.trimStart();\n if (seedText.length > size) {\n for (const slice of splitByLength(seedText, size)) out.push(slice);\n } else {\n seed(seedText);\n }\n } else {\n seed(piece);\n }\n }\n if (bufLen > 0) flush();\n return out;\n}\n\nfunction tail(text: string, n: number): string {\n return text.length <= n ? text : text.slice(text.length - n);\n}\n","import { extractText } from 'unpdf';\n\nexport interface ParseOptions {\n /** MIME type override. If omitted, the parser sniffs the input (Blob.type or PDF magic bytes). */\n mime?: string;\n}\n\nexport type ParseInput = Blob | string | Uint8Array | ArrayBuffer;\n\nconst PDF_MIME_TYPES = new Set(['application/pdf', 'application/x-pdf']);\nconst PDF_MAGIC = [0x25, 0x50, 0x44, 0x46];\n\n/**\n * Stable discriminator carried by {@link PdfNoTextLayerError}. Callers (the SDK\n * `client.rag.parse` facade, the Studio-managed ingest path) can detect this\n * specific failure with `error.code === PDF_NO_TEXT_LAYER` instead of matching\n * on the message string.\n */\nexport const PDF_NO_TEXT_LAYER = 'pdf_no_text_layer' as const;\n\n/**\n * Thrown when a `.pdf` parses successfully but yields no extractable text — the\n * hallmark of a scanned document or an image-only export with no text layer.\n * unpdf's `extractText` cannot recover text from rasterised pages, and we do\n * NOT run OCR, so this is a terminal, actionable error: the caller must supply\n * a PDF whose text was generated by software (a real text layer) rather than a\n * photo/scan of a page.\n */\nexport class PdfNoTextLayerError extends Error {\n /** Stable machine-readable discriminator — see {@link PDF_NO_TEXT_LAYER}. */\n readonly code = PDF_NO_TEXT_LAYER;\n\n constructor() {\n super(\n 'parse: the PDF has no extractable text — it looks like a scanned or ' +\n 'image-only document with no text layer. OCR is not supported; re-export ' +\n 'the file with a real text layer (selectable text) before ingesting it.',\n );\n this.name = 'PdfNoTextLayerError';\n }\n}\n\n/**\n * Markdown is returned verbatim — no HTML rendering, no frontmatter stripping.\n * PDFs are flattened to one string with newlines between pages (no OCR).\n */\nexport async function parse(input: ParseInput, options: ParseOptions = {}): Promise<string> {\n if (typeof input === 'string') return input;\n\n const mime = (options.mime ?? sniffMime(input))?.toLowerCase();\n const bytes = await toUint8Array(input);\n const kind = resolveKind(mime, bytes);\n\n switch (kind) {\n case 'pdf': {\n const { text } = await extractText(bytes, { mergePages: true });\n // A scanned / image-only PDF parses fine but yields no text layer. unpdf\n // has nothing to return and we do not run OCR, so reject with a typed,\n // actionable error instead of silently ingesting an empty document.\n if (text.trim() === '') throw new PdfNoTextLayerError();\n return text;\n }\n case 'text':\n return new TextDecoder().decode(bytes);\n case 'unsupported':\n throw new Error(\n `parse: unsupported MIME type \\`${mime}\\`. Supported: text/*, application/pdf.`,\n );\n }\n}\n\nfunction resolveKind(mime: string | undefined, bytes: Uint8Array): 'pdf' | 'text' | 'unsupported' {\n if (mime) {\n if (PDF_MIME_TYPES.has(mime)) return 'pdf';\n if (mime.startsWith('text/')) return 'text';\n return 'unsupported';\n }\n return looksLikePdf(bytes) ? 'pdf' : 'text';\n}\n\nasync function toUint8Array(input: Exclude<ParseInput, string>): Promise<Uint8Array> {\n if (input instanceof Uint8Array) return input;\n if (input instanceof Blob) return new Uint8Array(await input.arrayBuffer());\n return new Uint8Array(input);\n}\n\nfunction sniffMime(input: Exclude<ParseInput, string>): string | undefined {\n if (input instanceof Blob && input.type) return input.type;\n return undefined;\n}\n\nfunction looksLikePdf(bytes: Uint8Array): boolean {\n if (bytes.length < PDF_MAGIC.length) return false;\n return PDF_MAGIC.every((b, i) => bytes[i] === b);\n}\n","import { type RagError, type RagErrorCode } from '../result';\n\n// Postgres error code for `relation does not exist`. The canonical RAG schema\n// (`stackbone_platform.rag_*`) is provisioned by the platform migrator, so a\n// missing relation here means those migrations were never applied to this\n// database — surface an actionable hint instead of a raw Postgres error.\nexport const PG_UNDEFINED_TABLE = '42P01';\n\nexport const RAG_SCHEMA_MISSING_HINT =\n 'the platform RAG schema (stackbone_platform.rag_*) is not provisioned on this database';\n\n/** The RAG error codes the core may pass through verbatim from a tagged cause. */\nconst RAG_ERROR_CODES: ReadonlySet<string> = new Set<RagErrorCode>([\n 'rag_dim_mismatch',\n 'rag_embedding_failed',\n 'rag_embedding_model_unsupported',\n 'rag_error',\n 'rag_ingest_cancelled',\n 'rag_invalid_request',\n 'rag_job_insert_failed',\n 'rag_jobs_error',\n 'rag_schema_missing',\n]);\n\nfunction isRagErrorCode(code: string): code is RagErrorCode {\n return RAG_ERROR_CODES.has(code);\n}\n\nexport function isTaggedError(\n cause: unknown,\n): cause is Error & { code?: string; meta?: Record<string, unknown> } {\n return cause instanceof Error;\n}\n\n/**\n * Maps an arbitrary thrown value into the error envelope used by every RAG\n * entrypoint. Special-cases `42P01` so missing schema flows through as\n * `rag_schema_missing` with the canonical hint regardless of whether the\n * caller is the pipeline or the jobs writer.\n *\n * `fallbackCode` is constrained to `RagErrorCode`, so every call site has to\n * choose from the catalog — typos no longer compile. The same constraint\n * applies to `cause.code`: when the upstream error already carries a RAG\n * catalog code (e.g. `'rag_dim_mismatch'` thrown from `sql.ts`), the helper\n * surfaces it verbatim; anything else collapses into `fallbackCode` so a raw\n * upstream string can never leak past the core boundary.\n */\nexport function toRagError(\n cause: unknown,\n message: string,\n fallbackCode: RagErrorCode = 'rag_error',\n): RagError {\n if (isTaggedError(cause) && cause.code === PG_UNDEFINED_TABLE) {\n return {\n code: 'rag_schema_missing',\n message: `RAG tables are not installed — ${RAG_SCHEMA_MISSING_HINT}.`,\n cause,\n meta: { hint: RAG_SCHEMA_MISSING_HINT },\n };\n }\n if (isTaggedError(cause)) {\n const code: RagErrorCode =\n cause.code !== undefined && isRagErrorCode(cause.code) ? cause.code : fallbackCode;\n const error: RagError = {\n code,\n message: `${message}: ${cause.message}`,\n cause,\n };\n if (cause.meta) error.meta = cause.meta;\n return error;\n }\n return { code: fallbackCode, message, cause };\n}\n","import { createHash } from 'node:crypto';\n\nimport type { Sql, TransactionSql } from 'postgres';\n\n// Canonical-schema persistence for the RAG ingest pipeline. Every write lands\n// in the platform-owned `stackbone_platform.rag_*` tables (defined in\n// `../schema/schema.ts`, provisioned by `@stackbone/platform-schema` migration\n// `0014_rag.sql`): a single `stackbone_platform.rag_documents` row per ingested\n// document and one `stackbone_platform.rag_chunks` row per chunk.\n//\n// Names are schema-qualified because the pipeline shares the agent's DB\n// connection (whose `search_path` is the creator's `public`); the platform\n// tables are not on that path, so every statement spells out the schema. The\n// pipeline never runs `CREATE TABLE` — a missing schema surfaces as Postgres\n// `42P01`, mapped to `rag_schema_missing` upstream.\n//\n// Dimension assumption: the chunk `embedding` column is pinned to\n// `vector(1536)` (text-embedding-3-small). A non-1536 model is NOT validated\n// here — a mismatch surfaces as a raw INSERT error from Postgres, which is\n// acceptable for the MVP (frozen decision).\n\n/**\n * Default collection name used when an ingest/retrieve/delete request omits an\n * explicit `collection`. The canonical schema keys documents on a collection\n * (there is no `namespace` column), so this is the single bucket pre-collection\n * callers land in. Kept as `'default'` for back-compat with the public API's\n * `namespace` field, which now feeds the collection name.\n */\nexport const DEFAULT_NAMESPACE = 'default';\n\nexport interface IngestRow {\n /** Logical document id surfaced to the public API. Stored as `documents.source`. */\n docId: string;\n /** Contiguous chunk index from 0. Stored as `chunks.ordinal`. */\n chunkIdx: number;\n /** Collection name the document belongs to. Resolved to a `collection_id`. */\n namespace: string;\n content: string;\n embedding: number[];\n metadata: Record<string, unknown>;\n}\n\nexport interface RetrieveRow {\n docId: string;\n chunkIdx: number;\n content: string | null;\n metadata: Record<string, unknown> | null;\n score: number;\n}\n\n/**\n * Stable content hash of the source bytes. The same file always produces the\n * same hash so the platform can dedup a document within a collection. We hash\n * the raw bytes (sha256, hex) — for the precomputed/auto-embed pipeline the\n * \"source bytes\" are the UTF-8 concatenation of the chunk contents in order,\n * which reconstructs the parsed text the chunker split.\n */\nexport function contentHash(source: Buffer | string): string {\n const bytes = typeof source === 'string' ? Buffer.from(source, 'utf8') : source;\n return createHash('sha256').update(bytes).digest('hex');\n}\n\nexport interface CreatedDocument {\n /** The `stackbone_platform.rag_documents.id` chunks are appended to. */\n documentId: string;\n}\n\n/**\n * Creates the `stackbone_platform.rag_documents` row for a document, atomically, and\n * returns its id so the pipeline can stream chunk batches into it.\n *\n * Within a single transaction it:\n * 1. upserts the `stackbone_platform.rag_collections` row for the collection name,\n * 2. deletes any pre-existing document with the same `source` in that collection\n * (cascading its chunks) so a re-ingest with the same `docId` replaces it,\n * 3. inserts one `stackbone_platform.rag_documents` row carrying the computed\n * `content_hash` (NOT NULL) and the document `metadata`.\n *\n * The `content_hash` MUST be derived from the source bytes so the same file\n * always produces the same hash (see `contentHash`).\n */\nexport async function createDocument(\n sql: Sql,\n args: {\n collection: string;\n source: string;\n contentHash: string;\n metadata: Record<string, unknown>;\n },\n): Promise<CreatedDocument> {\n return sql.begin(async (tx) => {\n const collectionId = await ensureCollection(tx, args.collection);\n await tx`\n DELETE FROM stackbone_platform.rag_documents\n WHERE collection_id = ${collectionId} AND source = ${args.source}\n `;\n // Serialize the jsonb metadata with `JSON.stringify(...)::jsonb`, NOT\n // postgres-js's native `sql.json(...)` helper. In production the `Sql` here\n // is the one owned by the SDK's Drizzle handle (`shared().$client`), and\n // Drizzle overrides postgres-js's jsonb type serializer — which is exactly\n // what `sql.json()` relies on. Through that client `sql.json(obj)` binds the\n // raw object and postgres-js throws `ERR_INVALID_ARG_TYPE` at parameter time.\n // The explicit string + `::jsonb` cast round-trips correctly on both a plain\n // and a Drizzle-wrapped client (and mirrors `appendChunks` below).\n const insertedDoc = await tx<{ id: string }[]>`\n INSERT INTO stackbone_platform.rag_documents (collection_id, source, content_hash, metadata)\n VALUES (${collectionId}, ${args.source}, ${args.contentHash}, ${JSON.stringify(args.metadata)}::jsonb)\n RETURNING id\n `;\n const documentId = insertedDoc[0]?.id;\n if (!documentId) {\n throw new Error('stackbone_platform.rag_documents insert returned no row');\n }\n return { documentId };\n }) as Promise<CreatedDocument>;\n}\n\n/**\n * Bulk-inserts a contiguous batch of chunk rows for one document via multi-row\n * VALUES. Embeddings are pinned to `vector(1536)` on the column (a non-1536\n * model surfaces a raw INSERT error — acceptable for the MVP); the placeholders\n * cast each parameter to `vector` / `jsonb` so postgres-js sends the right\n * types. Does NOT delete pre-existing rows — call `createDocument` first.\n */\nexport async function appendChunks(\n sql: Sql | TransactionSql,\n documentId: string,\n rows: IngestRow[],\n): Promise<number> {\n if (rows.length === 0) return 0;\n const placeholders = rows\n .map((_, i) => {\n const base = i * 5;\n return `($${base + 1}, $${base + 2}, $${base + 3}, $${base + 4}::vector, $${base + 5}::jsonb)`;\n })\n .join(',');\n const params = rows.flatMap((row) => [\n documentId,\n row.chunkIdx,\n row.content,\n formatVector(row.embedding),\n JSON.stringify(row.metadata),\n ]);\n await sql.unsafe(\n `INSERT INTO stackbone_platform.rag_chunks (document_id, ordinal, content, embedding, metadata) VALUES ${placeholders}`,\n params,\n );\n return rows.length;\n}\n\nexport async function deleteByIds(sql: Sql, ids: string[], namespace: string): Promise<number> {\n if (ids.length === 0) return 0;\n const result = await sql`\n DELETE FROM stackbone_platform.rag_documents d\n USING stackbone_platform.rag_collections c\n WHERE d.collection_id = c.id\n AND c.name = ${namespace}\n AND d.source = ANY(${ids})\n `;\n return result.count ?? 0;\n}\n\nexport async function deleteByFilter(\n sql: Sql,\n filter: Record<string, unknown>,\n namespace: string,\n): Promise<number> {\n const filterClause =\n Object.keys(filter).length > 0 ? sql`AND d.metadata @> ${sql.json(filter as never)}` : sql``;\n const result = await sql`\n DELETE FROM stackbone_platform.rag_documents d\n USING stackbone_platform.rag_collections c\n WHERE d.collection_id = c.id\n AND c.name = ${namespace}\n ${filterClause}\n `;\n return result.count ?? 0;\n}\n\nexport interface RetrieveParams {\n embedding: number[];\n topK: number;\n filter?: Record<string, unknown>;\n namespace: string;\n includeContent: boolean;\n includeMetadata: boolean;\n}\n\nexport async function retrieve(sql: Sql, params: RetrieveParams): Promise<RetrieveRow[]> {\n const embStr = formatVector(params.embedding);\n const filterClause =\n params.filter && Object.keys(params.filter).length > 0\n ? sql`AND ch.metadata @> ${sql.json(params.filter as never)}`\n : sql``;\n const contentColumn = params.includeContent ? sql`ch.content` : sql`NULL AS content`;\n const metadataColumn = params.includeMetadata ? sql`ch.metadata` : sql`NULL AS metadata`;\n return sql<RetrieveRow[]>`\n SELECT\n d.source AS \"docId\",\n ch.ordinal AS \"chunkIdx\",\n ${contentColumn},\n ${metadataColumn},\n 1 - (ch.embedding <=> ${embStr}::vector) AS score\n FROM stackbone_platform.rag_chunks ch\n INNER JOIN stackbone_platform.rag_documents d ON d.id = ch.document_id\n INNER JOIN stackbone_platform.rag_collections c ON c.id = d.collection_id\n WHERE c.name = ${params.namespace} ${filterClause}\n ORDER BY ch.embedding <=> ${embStr}::vector\n LIMIT ${params.topK}\n `;\n}\n\n// One round-trip: ON CONFLICT DO UPDATE always returns the id whether the row\n// was inserted or already existed.\nasync function ensureCollection(sql: Sql | TransactionSql, name: string): Promise<string> {\n const inserted = await sql<{ id: string }[]>`\n INSERT INTO stackbone_platform.rag_collections (name) VALUES (${name})\n ON CONFLICT (name) DO UPDATE SET name = EXCLUDED.name\n RETURNING id\n `;\n const row = inserted[0];\n if (!row) {\n throw new Error(`stackbone_platform.rag_collections upsert returned no row for ${name}`);\n }\n return row.id;\n}\n\nfunction formatVector(embedding: number[]): string {\n return `[${embedding.join(',')}]`;\n}\n","import { type Sql } from 'postgres';\n\nimport { err, isOk, ok, type PortError, type RagError, type Result } from '../result';\n\nimport { type EmbeddingsPort } from './embeddings-port';\nimport { toRagError } from './errors';\nimport { type IngestJobWriter, type RagIngestProgress } from './jobs';\nimport {\n appendChunks,\n contentHash,\n createDocument,\n DEFAULT_NAMESPACE,\n deleteByFilter,\n deleteByIds,\n retrieve as retrieveRows,\n} from './sql';\n\nexport interface IngestChunk {\n content: string;\n embedding: number[];\n}\n\ninterface IngestRequestBase {\n /** Document identifier — re-ingesting with the same `id` replaces all its chunks atomically. */\n id: string;\n metadata?: Record<string, unknown>;\n /**\n * Optional precomputed `content_hash` for the document. When set it is stored\n * verbatim on the `stackbone_platform.rag_documents` row instead of the default (a hash\n * of the chunk-text concatenation). A file-ingest caller passes the hash of the\n * ORIGINAL bytes here so the persisted hash matches the upstream upload-time\n * dedup check; the SDK omits it and falls back to the text hash.\n */\n contentHash?: string;\n /** Logical namespace for separation. Default `'default'`. */\n namespace?: string;\n /**\n * Canonical collection name used by the `stackbone_platform.rag_jobs` writer (F07)\n * to bind the row to a `stackbone_platform.rag_collections` parent. Optional for\n * back-compat with pre-F07 callers — when absent, no job row is written\n * and progress is delivered only via `onProgress` (if any).\n */\n collection?: string;\n /**\n * Optional sink for streaming progress events. Fired in addition to (and\n * before) the matching `IngestJobWriter` call so synchronous `ingest`\n * consumers can observe progress without paying the SQL writer cost.\n */\n onProgress?: (event: RagIngestProgress) => void | Promise<void>;\n}\n\nexport interface IngestRequestPrecomputed extends IngestRequestBase {\n chunks: IngestChunk[];\n}\n\nexport interface IngestRequestAutoEmbed extends IngestRequestBase {\n chunks: string[];\n /** Embedding model id. When set, the pipeline calls the configured embeddings port. */\n model: string;\n /**\n * Items per embeddings request. Consumed by the facade when it builds the\n * embeddings port; ignored by the pipeline itself (the port is fully\n * configured at construction time).\n */\n batchSize?: number;\n}\n\nexport type IngestRequest = IngestRequestPrecomputed | IngestRequestAutoEmbed;\n\nexport interface IngestResponse {\n id: string;\n chunks: number;\n}\n\nexport interface DeleteOptions {\n namespace?: string;\n}\n\nexport interface DeleteResponse {\n deleted: number;\n}\n\ninterface RetrieveRequestBase {\n topK?: number;\n filter?: Record<string, unknown>;\n namespace?: string;\n includeContent?: boolean;\n includeMetadata?: boolean;\n}\n\nexport interface RetrieveRequestPrecomputed extends RetrieveRequestBase {\n embedding: number[];\n}\n\nexport interface RetrieveRequestAutoEmbed extends RetrieveRequestBase {\n text: string;\n /** Must match the model used at ingest time. */\n model: string;\n}\n\nexport type RetrieveRequest = RetrieveRequestPrecomputed | RetrieveRequestAutoEmbed;\n\nexport interface RetrieveHit {\n id: string;\n chunkIdx: number;\n content?: string;\n metadata?: Record<string, unknown>;\n score: number;\n}\n\nconst DEFAULT_TOP_K = 5;\n\nexport interface RagPipelineDeps<E extends PortError = RagError> {\n /**\n * Provides the postgres-js `Sql` to bind queries to. Called lazily, after\n * input validation and any auto-embed step, so that callers whose request\n * is rejected upstream never trigger a pool build.\n *\n * Pass `() => ok($client)` of the shared Drizzle handle for normal\n * operation, or a thunk that yields a transaction-bound `Sql` from\n * `client.database.transaction(...)` to enrol RAG writes in the caller's\n * transaction. May return a `Result.err` (e.g. `database_not_configured`)\n * which the pipeline forwards verbatim — hence the generic injected error\n * `E`, widened by the SDK facade to its own `SdkError`.\n */\n sqlProvider: () => Result<Sql, E>;\n /**\n * Optional embeddings port for auto-embed ingest/retrieve. Required when\n * callers pass a `model` to `ingest`/`retrieve`; precomputed-vector calls\n * work without one.\n */\n embedder?: EmbeddingsPort<E>;\n /**\n * Optional `stackbone_platform.rag_jobs` writer. When present, every `ingest`\n * call allocates a job row, emits `started`/`progress`/`completed`/`failed`\n * events through it, and polls `isCancelled` between chunk batches. The\n * facade wires this with the shared `client.database` pool for\n * `ingestAsync`; sync `ingest` callers may also opt in. ADR §D9 locks\n * the event shape.\n */\n jobWriter?: IngestJobWriter;\n /**\n * How many persisted chunks to accumulate before firing a `progress`\n * event and re-checking cancellation. Default `1` so small ingests still\n * surface granular feedback; large ingests can raise this to amortise\n * writer overhead. Always emits at least one event per request.\n */\n progressBatchSize?: number;\n}\n\n/**\n * `RagPipeline` — owns the parse → chunk → embed → persist flow for a single\n * RAG operation. The `client.rag` facade builds one bound to the shared\n * `client.database` pool; integration tests build one bound to a dockerized\n * Postgres with a deterministic fake embeddings port.\n *\n * The pipeline is a deep module: its public surface (`ingest`, `retrieve`,\n * `delete`, `deleteWhere`) is small and stable; everything underneath\n * (validation, batching, transaction shape, error mapping) is implementation\n * detail.\n */\nexport class RagPipeline<E extends PortError = RagError> {\n private readonly _sqlProvider: () => Result<Sql, E>;\n private readonly _embedder: EmbeddingsPort<E> | undefined;\n private readonly _jobWriter: IngestJobWriter | undefined;\n private readonly _progressBatchSize: number | undefined;\n\n constructor(deps: RagPipelineDeps<E>) {\n this._sqlProvider = deps.sqlProvider;\n this._embedder = deps.embedder;\n this._jobWriter = deps.jobWriter;\n this._progressBatchSize =\n deps.progressBatchSize !== undefined ? Math.max(1, deps.progressBatchSize) : undefined;\n }\n\n async ingest(request: IngestRequest): Promise<Result<IngestResponse, RagError | E>> {\n const validation = validateIngest(request, this._embedder !== undefined);\n if (validation.error) return err(validation.error);\n\n // The canonical schema keys documents on a collection, not a namespace.\n // Prefer the explicit `collection`; fall back to `namespace` (which still\n // defaults to 'default') so pre-collection callers keep working.\n const collection = request.collection ?? request.namespace ?? DEFAULT_NAMESPACE;\n const metadata = request.metadata ?? {};\n\n let chunks: IngestChunk[];\n if (isAutoEmbedIngest(request)) {\n // Validation above guarantees the embeddings port is present.\n const embedded = await (this._embedder as EmbeddingsPort).embedAll(request.chunks);\n if (embedded.error) return err(embedded.error);\n if (embedded.data.length !== request.chunks.length) {\n return err({\n code: 'rag_embedding_failed',\n message: `Embedding API returned ${embedded.data.length} vectors for ${request.chunks.length} chunks.`,\n meta: { expected: request.chunks.length, received: embedded.data.length },\n });\n }\n chunks = request.chunks.map((content, i) => ({\n content,\n embedding: embedded.data[i] as number[],\n }));\n } else {\n chunks = request.chunks;\n }\n\n const rows = chunks.map((c, idx) => ({\n docId: request.id,\n chunkIdx: idx,\n namespace: collection,\n content: c.content,\n embedding: c.embedding,\n metadata,\n }));\n // Content hash is derived from the source bytes so the same file always\n // produces the same hash. A file-ingest caller (the managed-ingest worker)\n // passes the hash of the ORIGINAL bytes via `request.contentHash` so the\n // persisted hash matches its upload-time dedup check; otherwise fall back to\n // the in-order UTF-8 concatenation of the chunk contents, which reconstructs\n // the parsed text the chunker split.\n const hash = request.contentHash ?? contentHash(chunks.map((c) => c.content).join(''));\n\n const sql = this._sqlProvider();\n if (!isOk(sql)) return err(sql.error);\n const client = sql.data;\n\n const totalChunks = rows.length;\n const onProgress = request.onProgress;\n const writer = this._jobWriter;\n let jobId: string | null = null;\n\n if (writer && request.collection) {\n const started = await writer.start({\n collection: request.collection,\n source: request.id,\n totalChunks,\n });\n if (started.error) return err(started.error);\n jobId = started.data.jobId;\n }\n\n await onProgress?.({ type: 'started', jobId: jobId ?? request.id, totalChunks });\n\n try {\n // Create (replacing any prior version of) the document row atomically and\n // get its id; embeddings are pinned to vector(1536) on the chunks table —\n // no model-dimension validation here (frozen decision), a mismatch\n // surfaces as a raw INSERT error from Postgres.\n const { documentId } = await createDocument(client, {\n collection,\n source: request.id,\n contentHash: hash,\n metadata,\n });\n // When neither a job writer nor an onProgress hook is configured, keep\n // the original single-INSERT behaviour for back-compat with pre-F07\n // callers (sql-level row-count assertions in `pipeline.spec.ts`).\n const needsBatching = Boolean(writer || onProgress);\n const batchSize = this._progressBatchSize ?? (needsBatching ? 1 : rows.length || 1);\n let processed = 0;\n for (let offset = 0; offset < rows.length; offset += batchSize) {\n if (writer && jobId) {\n const cancelled = await writer.isCancelled({ jobId });\n if (cancelled) {\n return err({\n code: 'rag_ingest_cancelled',\n message: `Ingest job ${jobId} was cancelled after ${processed}/${totalChunks} chunks.`,\n meta: { jobId, processedChunks: processed, totalChunks },\n });\n }\n }\n const slice = rows.slice(offset, offset + batchSize);\n await appendChunks(client, documentId, slice);\n processed += slice.length;\n const currentDocument = { source: request.id, ordinal: processed - 1 };\n await onProgress?.({\n type: 'progress',\n jobId: jobId ?? request.id,\n processedChunks: processed,\n totalChunks,\n currentDocument,\n });\n if (writer && jobId) {\n await writer.progress({\n jobId,\n processedChunks: processed,\n totalChunks,\n currentDocument,\n });\n }\n }\n await onProgress?.({ type: 'completed', jobId: jobId ?? request.id, totalChunks });\n if (writer && jobId) await writer.complete({ jobId, totalChunks });\n return ok({ id: request.id, chunks: rows.length });\n } catch (cause) {\n const mapped = toRagError(cause, 'Ingest failed');\n await onProgress?.({ type: 'failed', jobId: jobId ?? request.id, error: mapped.message });\n if (writer && jobId) await writer.fail({ jobId, error: mapped.message });\n return err(mapped);\n }\n }\n\n async delete(\n ids: string | string[],\n options?: DeleteOptions,\n ): Promise<Result<DeleteResponse, RagError | E>> {\n const namespace = options?.namespace ?? DEFAULT_NAMESPACE;\n const idList = Array.isArray(ids) ? ids : [ids];\n if (idList.length === 0) return ok({ deleted: 0 });\n const sql = this._sqlProvider();\n if (!isOk(sql)) return err(sql.error);\n try {\n const deleted = await deleteByIds(sql.data, idList, namespace);\n return ok({ deleted });\n } catch (cause) {\n return err(toRagError(cause, 'Delete failed'));\n }\n }\n\n async deleteWhere(\n filter: Record<string, unknown>,\n options?: DeleteOptions,\n ): Promise<Result<DeleteResponse, RagError | E>> {\n const namespace = options?.namespace ?? DEFAULT_NAMESPACE;\n const sql = this._sqlProvider();\n if (!isOk(sql)) return err(sql.error);\n try {\n const deleted = await deleteByFilter(sql.data, filter, namespace);\n return ok({ deleted });\n } catch (cause) {\n return err(toRagError(cause, 'Delete by filter failed'));\n }\n }\n\n async retrieve(request: RetrieveRequest): Promise<Result<RetrieveHit[], RagError | E>> {\n const resolved = await this.resolveQueryEmbedding(request);\n if (!isOk(resolved)) return err(resolved.error);\n\n const includeContent = request.includeContent ?? true;\n const includeMetadata = request.includeMetadata ?? true;\n\n const params: Parameters<typeof retrieveRows>[1] = {\n embedding: resolved.data,\n topK: request.topK ?? DEFAULT_TOP_K,\n namespace: request.namespace ?? DEFAULT_NAMESPACE,\n includeContent,\n includeMetadata,\n };\n if (request.filter) params.filter = request.filter;\n\n const sql = this._sqlProvider();\n if (!isOk(sql)) return err(sql.error);\n\n try {\n const rows = await retrieveRows(sql.data, params);\n return ok(\n rows.map((row) => {\n const hit: RetrieveHit = {\n id: row.docId,\n chunkIdx: row.chunkIdx,\n score: Number(row.score),\n };\n if (includeContent && row.content !== null) hit.content = row.content;\n if (includeMetadata && row.metadata !== null) hit.metadata = row.metadata;\n return hit;\n }),\n );\n } catch (cause) {\n return err(toRagError(cause, 'Retrieve failed'));\n }\n }\n\n private async resolveQueryEmbedding(\n request: RetrieveRequest,\n ): Promise<Result<number[], RagError | E>> {\n if (isAutoEmbedRetrieve(request)) {\n if (!request.text) {\n return err({ code: 'rag_invalid_request', message: '`text` is required.' });\n }\n if (!this._embedder) {\n return err({\n code: 'rag_invalid_request',\n message: '`model` was supplied but no embeddings port is configured on the pipeline.',\n });\n }\n const embedded = await this._embedder.embedOne(request.text);\n if (!isOk(embedded)) return err(embedded.error);\n return ok(embedded.data);\n }\n if (!Array.isArray(request.embedding) || request.embedding.length === 0) {\n return err({\n code: 'rag_invalid_request',\n message: '`embedding` is required and must be a non-empty array.',\n });\n }\n return ok(request.embedding);\n }\n}\n\nexport function isAutoEmbedIngest(request: IngestRequest): request is IngestRequestAutoEmbed {\n return 'model' in request && typeof request.model === 'string';\n}\n\nexport function isAutoEmbedRetrieve(request: RetrieveRequest): request is RetrieveRequestAutoEmbed {\n return 'model' in request && typeof request.model === 'string';\n}\n\nfunction validateIngest(request: IngestRequest, hasEmbedder: boolean): Result<true> {\n if (!request.id) return err({ code: 'rag_invalid_request', message: '`id` is required.' });\n if (!Array.isArray(request.chunks) || request.chunks.length === 0) {\n return err({\n code: 'rag_invalid_request',\n message: '`chunks` must contain at least one item.',\n });\n }\n if (isAutoEmbedIngest(request)) {\n if (!hasEmbedder) {\n return err({\n code: 'rag_invalid_request',\n message: '`model` was supplied but no embeddings port is configured on the pipeline.',\n });\n }\n for (let i = 0; i < request.chunks.length; i++) {\n const c = request.chunks[i];\n if (typeof c !== 'string' || c.length === 0) {\n return err({\n code: 'rag_invalid_request',\n message: `chunks[${i}] must be a non-empty string when \\`model\\` is provided.`,\n });\n }\n }\n return ok(true);\n }\n const dims = request.chunks[0]?.embedding.length ?? 0;\n if (dims === 0) {\n return err({\n code: 'rag_invalid_request',\n message:\n 'First chunk has no embedding — pass `model` to auto-embed or include precomputed embeddings.',\n });\n }\n for (let i = 0; i < request.chunks.length; i++) {\n const c = request.chunks[i];\n if (!c || !c.content || !Array.isArray(c.embedding) || c.embedding.length === 0) {\n return err({\n code: 'rag_invalid_request',\n message: `chunks[${i}] must include non-empty content and embedding.`,\n });\n }\n if (c.embedding.length !== dims) {\n return err({\n code: 'rag_invalid_request',\n message: `chunks[${i}].embedding has ${c.embedding.length} dims but chunks[0] has ${dims}.`,\n });\n }\n }\n return ok(true);\n}\n","// F07 — `stackbone_platform.rag_jobs` writer + streaming progress events.\n//\n// `RagPipeline` is intentionally agnostic about *where* job lifecycle goes:\n// it calls into an `IngestJobWriter` whenever one is supplied, and the\n// concrete implementation in `RagModule` plugs the writer that talks to the\n// canonical `stackbone_platform.rag_jobs` table via the shared `client.database`\n// pool. Tests pass an in-memory writer that records the event sequence and\n// can simulate cancellation between batches.\n//\n// Event shape is locked by ADR `2026-06-05-rag` §D9.\n\nimport { type Sql } from 'postgres';\n\nimport { err, ok, type Result } from '../result';\n\nimport { toRagError } from './errors';\n\nexport type RagIngestProgress =\n | { type: 'started'; jobId: string; totalChunks: number }\n | {\n type: 'progress';\n jobId: string;\n processedChunks: number;\n totalChunks: number;\n currentDocument?: { source: string; ordinal: number };\n }\n | { type: 'completed'; jobId: string; totalChunks: number }\n | { type: 'failed'; jobId: string; error: string };\n\nexport interface IngestJobStartArgs {\n collection: string;\n source: string;\n totalChunks: number;\n}\n\nexport interface IngestJobProgressArgs {\n jobId: string;\n processedChunks: number;\n totalChunks: number;\n currentDocument?: { source: string; ordinal: number };\n}\n\nexport interface IngestJobCompleteArgs {\n jobId: string;\n totalChunks: number;\n}\n\nexport interface IngestJobFailArgs {\n jobId: string;\n error: string;\n}\n\nexport interface IngestJobWriter {\n /**\n * Allocates a `stackbone_platform.rag_jobs` row in `running` state and returns its\n * id. Caller is expected to surface this id to the user before any\n * progress event fires so a `client.rag.ingestAsync` consumer can\n * immediately address the job (e.g. `POST /api/rag/jobs/:jobId/cancel`).\n */\n start(args: IngestJobStartArgs): Promise<Result<{ jobId: string }>>;\n /** Idempotent — last write wins on `progress` jsonb. */\n progress(args: IngestJobProgressArgs): Promise<void>;\n /** Marks the row terminal (status='succeeded'). */\n complete(args: IngestJobCompleteArgs): Promise<void>;\n /** Marks the row terminal (status='failed') and stores the error message. */\n fail(args: IngestJobFailArgs): Promise<void>;\n /**\n * Polled between chunk batches. Returning `true` makes the pipeline abort\n * with `rag_ingest_cancelled`, leaving the row in whatever terminal state\n * the writer transitions it to next (typically `cancelled`).\n */\n isCancelled(args: { jobId: string }): Promise<boolean>;\n}\n\ninterface CollectionRow {\n id: string;\n}\n\ninterface JobRow {\n id: string;\n status: 'queued' | 'running' | 'succeeded' | 'failed' | 'cancelled';\n}\n\n/**\n * Writer bound to the shared `client.database` pool. Resolves the\n * `stackbone_platform.rag_collections.id` for the requested collection name (creating\n * the row on the fly so an `ingestAsync` against a brand-new collection\n * doesn't 404 on the FK). Cancellation is observed by re-reading the row's\n * status — the `/api/rag/jobs/:jobId/cancel` handler from F06 flips it to\n * `cancelled` from outside the pipeline.\n */\nexport function createSqlJobWriter(sql: Sql): IngestJobWriter {\n return {\n async start({ collection, totalChunks }): Promise<Result<{ jobId: string }>> {\n try {\n const collectionId = await ensureCollection(sql, collection);\n const inserted = await sql<JobRow[]>`\n INSERT INTO stackbone_platform.rag_jobs (collection_id, status, progress)\n VALUES (${collectionId}, 'running', ${sql.json({ totalChunks, processedChunks: 0 })})\n RETURNING id, status\n `;\n const row = inserted[0];\n if (!row) {\n return err({\n code: 'rag_job_insert_failed',\n message: 'Job row insert returned no rows.',\n });\n }\n return ok({ jobId: row.id });\n } catch (cause) {\n return err(toRagError(cause, 'Job start failed', 'rag_jobs_error'));\n }\n },\n async progress({ jobId, processedChunks, totalChunks, currentDocument }): Promise<void> {\n const payload = currentDocument\n ? { totalChunks, processedChunks, currentDocument }\n : { totalChunks, processedChunks };\n await sql`\n UPDATE stackbone_platform.rag_jobs\n SET progress = ${sql.json(payload)}, updated_at = now()\n WHERE id = ${jobId}\n `;\n },\n async complete({ jobId, totalChunks }): Promise<void> {\n await sql`\n UPDATE stackbone_platform.rag_jobs\n SET status = 'succeeded',\n progress = ${sql.json({ totalChunks, processedChunks: totalChunks })},\n updated_at = now()\n WHERE id = ${jobId} AND status NOT IN ('cancelled', 'succeeded', 'failed')\n `;\n },\n async fail({ jobId, error }): Promise<void> {\n await sql`\n UPDATE stackbone_platform.rag_jobs\n SET status = 'failed', error = ${error}, updated_at = now()\n WHERE id = ${jobId} AND status NOT IN ('cancelled', 'succeeded', 'failed')\n `;\n },\n async isCancelled({ jobId }): Promise<boolean> {\n const rows = await sql<Pick<JobRow, 'status'>[]>`\n SELECT status FROM stackbone_platform.rag_jobs WHERE id = ${jobId} LIMIT 1\n `;\n return rows[0]?.status === 'cancelled';\n },\n };\n}\n\n// One round-trip: ON CONFLICT DO UPDATE always returns the id whether the row\n// was inserted or already existed.\nasync function ensureCollection(sql: Sql, name: string): Promise<string> {\n const inserted = await sql<CollectionRow[]>`\n INSERT INTO stackbone_platform.rag_collections (name) VALUES (${name})\n ON CONFLICT (name) DO UPDATE SET name = EXCLUDED.name\n RETURNING id\n `;\n const row = inserted[0];\n if (!row) {\n throw new Error(`stackbone_platform.rag_collections upsert returned no row for ${name}`);\n }\n return row.id;\n}\n","import { type EmbeddingsPort } from '@stackbone/rag-core';\n\nimport { err, ok, type Result, type SdkError } from '../../../result';\nimport { type AiModule } from '../../external/ai/ai';\n\nconst DEFAULT_BATCH_SIZE = 128;\nconst DEFAULT_CONCURRENCY = 4;\n\nexport interface EmbedderOptions {\n ai: AiModule;\n model: string;\n batchSize?: number;\n /** Maximum parallel batches in flight. Default 4. */\n concurrency?: number;\n}\n\n/**\n * `Embedder` — thin adapter around `client.ai.embeddings.create(...)` that\n * batches calls up to the model's batch limit, runs a bounded number of\n * batches concurrently, and maps provider errors into the canonical\n * `rag_embedding_failed` `SdkError` shape consumed by `RagPipeline`.\n *\n * The class is decoupled from postgres and from `client.rag` so the ingestion\n * pipeline can be unit-tested with a deterministic fake `Embedder` that\n * returns fixed vectors per input string.\n *\n * It is the SDK-side adapter for `@stackbone/rag-core`'s `EmbeddingsPort`:\n * by declaring `implements EmbeddingsPort<SdkError>` the structural contract\n * the pipeline relies on (`embedOne` / `embedAll` returning a `Result`\n * envelope) becomes explicit, so `client.rag` can pass an `Embedder` straight\n * into the shared pipeline. The `AiModule` ownership — and all batching /\n * bounded-concurrency semantics — stay here in the adapter; the shared lib\n * constructs no `AiModule` and only ever calls the two port methods.\n */\nexport class Embedder implements EmbeddingsPort<SdkError> {\n private readonly _ai: AiModule;\n private readonly _model: string;\n private readonly _batchSize: number;\n private readonly _concurrency: number;\n\n constructor(options: EmbedderOptions) {\n const batchSize = options.batchSize ?? DEFAULT_BATCH_SIZE;\n if (!Number.isInteger(batchSize) || batchSize <= 0) {\n throw new Error('Embedder: `batchSize` must be a positive integer.');\n }\n this._ai = options.ai;\n this._model = options.model;\n this._batchSize = batchSize;\n this._concurrency = options.concurrency ?? DEFAULT_CONCURRENCY;\n }\n\n get model(): string {\n return this._model;\n }\n\n async embedOne(text: string): Promise<Result<number[]>> {\n const result = await this.embedAll([text]);\n if (result.error) return err(result.error);\n const first = result.data[0];\n if (!first) {\n return err({\n code: 'rag_embedding_failed',\n message: 'Embedding API returned no vector for the input text.',\n });\n }\n return ok(first);\n }\n\n async embedAll(texts: string[]): Promise<Result<number[][]>> {\n if (texts.length === 0) return ok([]);\n\n const batches: string[][] = [];\n for (let i = 0; i < texts.length; i += this._batchSize) {\n batches.push(texts.slice(i, i + this._batchSize));\n }\n\n const out: number[][] = new Array(texts.length);\n let cursor = 0;\n\n const worker = async (): Promise<SdkError | null> => {\n while (cursor < batches.length) {\n const batchIndex = cursor++;\n const batch = batches[batchIndex] as string[];\n const result = await this._ai.embeddings.create({ model: this._model, input: batch });\n if (result.error) {\n const meta = { ...(result.error.meta ?? {}), batchIndex, model: this._model };\n if (isUnsupportedModelError(result.error)) {\n return {\n code: 'rag_embedding_model_unsupported',\n message: `Embedding model \\`${this._model}\\` is not available through the configured AI client: ${result.error.message}`,\n cause: result.error,\n meta,\n };\n }\n return {\n code: 'rag_embedding_failed',\n message: `Embedding batch ${batchIndex} failed: ${result.error.message}`,\n cause: result.error,\n meta,\n };\n }\n const offset = batchIndex * this._batchSize;\n result.data.data.forEach((item, j) => {\n out[offset + j] = item.embedding;\n });\n }\n return null;\n };\n\n const errors = await Promise.all(\n Array.from({ length: Math.min(this._concurrency, batches.length) }, () => worker()),\n );\n const firstError = errors.find((e) => e !== null);\n if (firstError) return err(firstError);\n return ok(out);\n }\n}\n\n/**\n * Detects underlying `client.ai` errors that mean \"the embedding model is not\n * available through the configured AI client\" — typically OpenRouter 404 for\n * an unknown model id, or a 400/422 validation error rejecting the model\n * field. The pipeline maps these to the canonical\n * `rag_embedding_model_unsupported` error so creators get an actionable hint\n * instead of a raw provider error. ADR `2026-06-05-rag` §D2.\n */\nfunction isUnsupportedModelError(error: SdkError): boolean {\n const status = (error.meta as { status?: number } | undefined)?.status;\n if (status === 404) return true;\n if (error.code === 'ai_validation_error') return true;\n return false;\n}\n","import {\n chunk as chunkText,\n createSqlJobWriter,\n isAutoEmbedIngest,\n isAutoEmbedRetrieve,\n isTaggedError,\n ok as ragOk,\n parse as parseInput,\n RagPipeline,\n toRagError,\n type ChunkOptions,\n type DeleteOptions,\n type DeleteResponse,\n type IngestRequest,\n type IngestRequestAutoEmbed,\n type IngestResponse,\n type IngestJobWriter,\n type ParseInput,\n type ParseOptions,\n type RagIngestProgress,\n type Result as RagCoreResult,\n type RetrieveHit,\n type RetrieveRequest,\n type RetrieveRequestAutoEmbed,\n} from '@stackbone/rag-core';\nimport { type Sql } from 'postgres';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { createModuleGate, type ModuleGate, withGate } from '../../../contract/module-gate';\nimport { err, ok, type Result, type SdkError } from '../../../result';\nimport { type AiModule } from '../../external/ai/ai';\nimport { type DatabaseModule } from '../database/database';\n\nimport { Embedder } from './embedder';\n\nexport type {\n DeleteOptions,\n DeleteResponse,\n IngestChunk,\n IngestRequest,\n IngestRequestAutoEmbed,\n IngestRequestPrecomputed,\n IngestResponse,\n RetrieveHit,\n RetrieveRequest,\n RetrieveRequestAutoEmbed,\n RetrieveRequestPrecomputed,\n RagIngestProgress,\n} from '@stackbone/rag-core';\n\n/**\n * Handle returned by `client.rag.ingestAsync`. The job id is allocated\n * synchronously against `stackbone_rag_jobs` so the caller can track / cancel\n * the work via the `/api/rag/jobs/:jobId/*` surface; `events` is a streaming\n * channel of progress events (ADR §D9 shape); `result` settles when the\n * pipeline finishes (or fails / is cancelled).\n */\nexport interface IngestAsyncHandle {\n jobId: string;\n events: AsyncIterable<RagIngestProgress>;\n result: Promise<Result<IngestResponse>>;\n}\n\nconst DEFAULT_BATCH_SIZE = 128;\n\n/**\n * Default embedding model when neither the call site nor the resolved\n * `ClientConfig.rag.embeddingModel` (parsed by the CLI from `agent.yaml.rag`)\n * specifies one. Frozen by ADR `2026-06-05-rag`\n * §D2 — kept in sync with `DEFAULT_RAG_EMBEDDING_MODEL` in `@stackbone/validators`.\n */\nexport const DEFAULT_RAG_EMBEDDING_MODEL = 'openai/text-embedding-3-small';\n\n/**\n * `client.rag` — `pgvector`-backed retrieval. Two shapes per write/read:\n * pass `model` to let the SDK embed for you; pass embeddings precomputed for\n * provider/dimension/batching control.\n *\n * Implementation note: `RagModule` is a thin facade over `RagPipeline`. The\n * pipeline owns parse → chunk → embed → persist; the facade resolves the\n * shared `client.database` pool, builds an `Embedder` on demand, and maps\n * configuration errors. See ADR `2026-06-05-rag`.\n *\n * Connection ownership: this module never opens its own postgres pool. It\n * reaches the underlying `postgres-js` `Sql` through the **shared-handles\n * pattern** — `client.database.shared().$client` — so an agent that\n * touches both surfaces still opens exactly one connection pool against\n * `STACKBONE_POSTGRES_URL`. RAG is the canonical first cross-surface\n * consumer; memory and queues will adopt the same accessor when they\n * land.\n *\n * Schema readiness: the canonical schema (`stackbone_platform.rag_*`) is\n * provisioned by the platform migrator, present on every install. When an\n * operation still hits `42P01 relation does not exist`, the pipeline returns\n * `SdkError('rag_schema_missing')` with an actionable hint.\n */\n/**\n * Test-only seams accepted by `RagModule`. Production callers leave these\n * unset — they are injected by `ingest-async.spec.ts` to substitute the\n * shared-pool lookup and the SQL-backed job writer.\n */\nexport interface RagModuleTestDeps {\n /**\n * Replaces the `client.database.shared().$client` lookup used by\n * `ingestAsync`. Tests can plug a fake `Sql` here without standing up\n * the database surface.\n */\n sqlProvider?: () => Result<Sql>;\n /** Builds an `IngestJobWriter` from the resolved SQL. Defaults to `createSqlJobWriter`. */\n jobWriterFactory?: (sql: Sql) => IngestJobWriter;\n}\n\nexport class RagModule {\n private readonly _gate: ModuleGate;\n private readonly _testSqlOverride?: () => Result<Sql>;\n private readonly _testJobWriterFactory?: (sql: Sql) => IngestJobWriter;\n\n constructor(\n private readonly _resolved: ResolvedConfig,\n /**\n * Lazy accessor for `client.database`. RAG calls `getDatabase().shared()`\n * to reach the process-wide Drizzle handle (and its `$client` Sql) via\n * the shared-handles pattern — never reaches into a sibling module's\n * implementation file.\n */\n private readonly _getDatabase: () => DatabaseModule,\n /**\n * Lazy accessor for `client.ai`. RAG calls `getAi()` for the embeddings\n * namespace; the `Embedder` adapter reaches the shared OpenAI client\n * through the same `client.ai.embeddings.create` public surface, so\n * RAG never instantiates a parallel `OpenAI` client.\n */\n private readonly _getAi: () => AiModule,\n /** Test seam — see `ModuleGate`. Defaults to the lazy contract gate. */\n gate?: ModuleGate,\n testDeps?: RagModuleTestDeps,\n ) {\n this._gate = gate ?? createModuleGate('rag', _resolved);\n if (testDeps?.sqlProvider) this._testSqlOverride = testDeps.sqlProvider;\n if (testDeps?.jobWriterFactory) this._testJobWriterFactory = testDeps.jobWriterFactory;\n }\n\n async ingest(request: IngestRequest): Promise<Result<IngestResponse>> {\n return withGate(this._gate, async () => {\n const resolved = resolveIngestModel(request, this._resolved);\n return this.withPipeline(buildEmbedderForIngest(resolved, this._getAi), (pipeline) =>\n pipeline.ingest(resolved),\n );\n });\n }\n\n /**\n * Asynchronous ingest. Allocates a `stackbone_rag_jobs` row, returns the\n * job id immediately, and exposes both an `AsyncIterable` of streaming\n * progress events and the final `Result` so callers can `await` either\n * surface — typical webhook handlers consume `events` and ignore `result`,\n * tests `await result` directly. Cancellation is observed by flipping the\n * row's status (e.g. via `POST /api/rag/jobs/:jobId/cancel`); the worker\n * polls between chunk batches and bails out with `rag_ingest_cancelled`.\n *\n * Connection ownership: the `IngestJobWriter` is bound to the same SQL\n * pulled off the shared `client.database.shared()` handle, so a single\n * agent that issues `ingestAsync` and `client.database.select` in\n * flight still opens exactly one pool against\n * `STACKBONE_POSTGRES_URL`.\n */\n async ingestAsync(request: IngestRequest): Promise<Result<IngestAsyncHandle>> {\n const collection = request.collection;\n if (!collection) {\n return err({\n code: 'rag_invalid_request',\n message: '`collection` is required for ingestAsync.',\n });\n }\n return withGate(this._gate, async () => {\n const sql = this._testSqlOverride ? this._testSqlOverride() : this.sql();\n if (sql.error) return err(sql.error);\n\n const writerFactory = this._testJobWriterFactory ?? createSqlJobWriter;\n const writer: IngestJobWriter = writerFactory(sql.data);\n const channel = createProgressChannel();\n const resolved = resolveIngestModel(request, this._resolved);\n const requestWithHook: IngestRequest = {\n ...resolved,\n onProgress: (event) => channel.push(event),\n } as IngestRequest;\n\n // Allocate the job row up-front so the caller has a stable id before we\n // hand back the handle. The pipeline will reuse the same writer (and\n // therefore the same row) when `request.collection` is set.\n const started = await writer.start({\n collection,\n source: request.id,\n totalChunks: countChunks(resolved),\n });\n if (started.error) {\n channel.close();\n return err(started.error);\n }\n const jobId = started.data.jobId;\n const facadeWriter = withPreallocatedJob(writer, jobId);\n\n const embedder = buildEmbedderForIngest(resolved, this._getAi);\n const pipeline = new RagPipeline({\n sqlProvider: () => sql,\n ...(embedder && { embedder }),\n jobWriter: facadeWriter,\n });\n\n const result = pipeline\n .ingest(requestWithHook)\n .then((r) => {\n channel.close();\n return r;\n })\n .catch((cause: unknown) => {\n channel.close();\n return err<IngestResponse>(toRagError(cause, 'Ingest failed'));\n });\n\n return ok({ jobId, events: channel.iterable, result });\n });\n }\n\n async delete(ids: string | string[], options?: DeleteOptions): Promise<Result<DeleteResponse>> {\n return withGate(this._gate, async () =>\n this.withPipeline(null, (pipeline) => pipeline.delete(ids, options)),\n );\n }\n\n async deleteWhere(\n filter: Record<string, unknown>,\n options?: DeleteOptions,\n ): Promise<Result<DeleteResponse>> {\n return withGate(this._gate, async () =>\n this.withPipeline(null, (pipeline) => pipeline.deleteWhere(filter, options)),\n );\n }\n\n async retrieve(request: RetrieveRequest): Promise<Result<RetrieveHit[]>> {\n return withGate(this._gate, async () => {\n const resolved = resolveRetrieveModel(request, this._resolved);\n return this.withPipeline(buildEmbedderForRetrieve(resolved, this._getAi), (pipeline) =>\n pipeline.retrieve(resolved),\n );\n });\n }\n\n /**\n * Drops the legacy ad-hoc RAG tables (`rag_chunks` / `_rag_meta`) that\n * pre-feature-30 agents provisioned on first ingest. Kept for backwards\n * compatibility so an old agent can clean those up after upgrading. The\n * canonical RAG schema (`stackbone_platform.rag_*`) is owned by the platform\n * migrator — this method never touches it.\n */\n async reset(): Promise<Result<void>> {\n return withGate(this._gate, async () => {\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n try {\n await this._getDatabase().runShared(async (db) => {\n await db`DROP TABLE IF EXISTS rag_chunks`;\n await db`DROP TABLE IF EXISTS _rag_meta`;\n });\n return ok(undefined);\n } catch (cause) {\n return err(toRagError(cause, 'Reset failed'));\n }\n });\n }\n\n /**\n * Pure helper — exposed verbatim from the chunker. No DB, no AI, no\n * datapath traffic, so it is intentionally NOT gated.\n */\n chunk(text: string, options?: ChunkOptions): string[] {\n return chunkText(text, options);\n }\n\n /**\n * Pure helper — exposed verbatim from the parser. No DB, no AI, no\n * datapath traffic, so it is intentionally NOT gated.\n */\n parse(input: ParseInput, options?: ParseOptions): Promise<string> {\n return parseInput(input, options);\n }\n\n /**\n * Resolves the postgres-js `Sql` to use for this operation. Goes through\n * the **shared-handles pattern** — `client.database.shared().$client` —\n * to pull the postgres-js template-tag function off the same Drizzle\n * handle the rest of the SDK uses. Single pool per agent process.\n * Future cross-module transaction propagation plugs a tx-bound `Sql`\n * into the pipeline at the same call site, replacing the pool-bound\n * one without touching the rest of RAG.\n *\n * Configuration errors (`STACKBONE_POSTGRES_URL` unset) flow up as a\n * `Result.err` with the same `database_not_configured` shape\n * `client.database` raises, instead of throwing through the public\n * surface.\n */\n private sql(): Result<Sql> {\n try {\n return ok(this._getDatabase().shared().$client);\n } catch (cause) {\n if (isTaggedError(cause) && cause.code === 'database_not_configured') {\n return err({\n code: 'database_not_configured',\n message: cause.message,\n cause,\n });\n }\n return err(toRagError(cause, 'Database handle unavailable'));\n }\n }\n\n private async withPipeline<T>(\n embedder: Embedder | null,\n run: (pipeline: RagPipeline<SdkError>) => Promise<RagCoreResult<T, SdkError>>,\n ): Promise<Result<T>> {\n // Cold-start resilience, in parity with `client.database`. Unlike the\n // throw-based sibling surfaces, rag-core never throws a dead-socket error —\n // it folds it into `Result.err.cause` via `toRagError` — so we replay\n // through the `Result`-shaped retry. A fresh `RagPipeline` is built on\n // replay so its `sqlProvider` re-resolves the rebuilt pool. See\n // `DatabaseModule.runSharedResult`.\n return this._getDatabase().runSharedResult(async () => {\n const pipeline = new RagPipeline<SdkError>({\n sqlProvider: () => this.sql(),\n ...(embedder && { embedder }),\n });\n // `RagPipeline<SdkError>` emits `RagCoreResult<T, RagError | SdkError>`.\n // `RagError`'s code catalog is a strict subset of `SdkErrorCode`, so the\n // envelope is wire-identical to the SDK's own `Result<T>`; TS just won't\n // collapse the cross-module union on its own. The boundary is sound.\n return (await run(pipeline)) as Result<T>;\n });\n }\n}\n\nfunction countChunks(request: IngestRequest): number {\n return Array.isArray(request.chunks) ? request.chunks.length : 0;\n}\n\n/**\n * Wraps an `IngestJobWriter` so the pipeline reuses an already-allocated job\n * row instead of inserting a new one. The facade pre-allocates so it can hand\n * the `jobId` back to the caller before launching the pipeline.\n */\nfunction withPreallocatedJob(writer: IngestJobWriter, jobId: string): IngestJobWriter {\n return {\n async start() {\n return ragOk({ jobId });\n },\n progress: writer.progress.bind(writer),\n complete: writer.complete.bind(writer),\n fail: writer.fail.bind(writer),\n isCancelled: writer.isCancelled.bind(writer),\n };\n}\n\ninterface ProgressChannel {\n push(event: RagIngestProgress): void;\n close(): void;\n iterable: AsyncIterable<RagIngestProgress>;\n}\n\n/**\n * Tiny single-consumer pull-channel. Buffers events when the consumer hasn't\n * started iterating yet (typical for `ingestAsync` callers that grab the\n * handle and `for await` later), and resolves a pending `next()` promise\n * synchronously when an event arrives mid-iteration.\n */\nfunction createProgressChannel(): ProgressChannel {\n const buffer: RagIngestProgress[] = [];\n let pending: ((value: IteratorResult<RagIngestProgress>) => void) | null = null;\n let closed = false;\n return {\n push(event) {\n if (pending) {\n const resolve = pending;\n pending = null;\n resolve({ value: event, done: false });\n return;\n }\n buffer.push(event);\n },\n close() {\n closed = true;\n if (pending) {\n const resolve = pending;\n pending = null;\n resolve({ value: undefined as never, done: true });\n }\n },\n iterable: {\n [Symbol.asyncIterator]() {\n return {\n next(): Promise<IteratorResult<RagIngestProgress>> {\n if (buffer.length > 0) {\n return Promise.resolve({ value: buffer.shift() as RagIngestProgress, done: false });\n }\n if (closed) return Promise.resolve({ value: undefined as never, done: true });\n return new Promise((resolve) => {\n pending = resolve;\n });\n },\n };\n },\n },\n };\n}\n\nfunction buildEmbedderForIngest(request: IngestRequest, getAi: () => AiModule): Embedder | null {\n if (!isAutoEmbedIngest(request)) return null;\n return new Embedder({\n ai: getAi(),\n model: request.model,\n batchSize: request.batchSize ?? DEFAULT_BATCH_SIZE,\n });\n}\n\nfunction buildEmbedderForRetrieve(\n request: RetrieveRequest,\n getAi: () => AiModule,\n): Embedder | null {\n if (!isAutoEmbedRetrieve(request)) return null;\n return new Embedder({ ai: getAi(), model: request.model });\n}\n\n/**\n * Inject the configured embedding model when the caller supplied string\n * chunks but omitted `model`. Precomputed-embedding requests are passed\n * through untouched. Source of the default: `agent.yaml.rag.embeddingModel`\n * (parsed by the CLI into `ResolvedConfig.config.rag.embeddingModel`),\n * falling back to the ADR-frozen `DEFAULT_RAG_EMBEDDING_MODEL`.\n */\nfunction resolveIngestModel(request: IngestRequest, resolved: ResolvedConfig): IngestRequest {\n if (isAutoEmbedIngest(request)) return request;\n if (!Array.isArray(request.chunks) || request.chunks.length === 0) return request;\n if (typeof request.chunks[0] !== 'string') return request;\n const model = resolved.ragEmbeddingModel ?? DEFAULT_RAG_EMBEDDING_MODEL;\n return { ...(request as unknown as IngestRequestAutoEmbed), model };\n}\n\nfunction resolveRetrieveModel(request: RetrieveRequest, resolved: ResolvedConfig): RetrieveRequest {\n if (isAutoEmbedRetrieve(request)) return request;\n if (typeof (request as unknown as RetrieveRequestAutoEmbed).text !== 'string') return request;\n const model = resolved.ragEmbeddingModel ?? DEFAULT_RAG_EMBEDDING_MODEL;\n return { ...(request as unknown as RetrieveRequestAutoEmbed), model };\n}\n","async function A(A={}){var I,g=A,C=!!globalThis.window,B=!!globalThis.WorkerGlobalScope,Q=(globalThis.process?.versions?.node&&globalThis.process,import.meta.url);if(C||B){try{new URL(\".\",Q).href}catch{}B&&(I=A=>{var I=new XMLHttpRequest;return I.open(\"GET\",A,!1),I.responseType=\"arraybuffer\",I.send(null),new Uint8Array(I.response)})}(function(){}).bind();var E,i,D,F,o,w,h,S,y,k,c,M=function(){}.bind(),U=!1,G=!1;function J(){var A=d.buffer;h=new Int8Array(A),o=new Int16Array(A),g.HEAPU8=c=new Uint8Array(A),new Uint16Array(A),w=new Int32Array(A),k=new Uint32Array(A),S=new Float32Array(A),y=new Float64Array(A)}function Y(A){g.onAbort?.(A),M(A=`Aborted(${A})`),U=!0,A+=\". Build with -sASSERTIONS for more info.\";var I=new WebAssembly.RuntimeError(A);throw D?.(I),I}for(var N=A=>{for(;A.length>0;)A.shift()(g)},K=[],H=A=>K.push(A),a=[],f=A=>a.push(A),s=globalThis.TextDecoder&&new TextDecoder,L=(A,I,g)=>A?((A,I=0,g,C)=>{var B=((A,I,g,C)=>{var B=I+g;if(C)return B;for(;A[I]&&!(I>=B);)++I;return I})(A,I,g,C);if(B-I>16&&A.buffer&&s)return s.decode(A.subarray(I,B));for(var Q=\"\";I<B;){var E=A[I++];if(128&E){var i=63&A[I++];if(192!=(224&E)){var D=63&A[I++];if((E=224==(240&E)?(15&E)<<12|i<<6|D:(7&E)<<18|i<<12|D<<6|63&A[I++])<65536)Q+=String.fromCharCode(E);else{var F=E-65536;Q+=String.fromCharCode(55296|F>>10,56320|1023&F)}}else Q+=String.fromCharCode((31&E)<<6|i)}else Q+=String.fromCharCode(E)}return Q})(c,A,I,g):\"\",R=[],p=(A,I)=>Math.ceil(A/I)*I,t=A=>{var I=(A-d.buffer.byteLength+65535)/65536|0;try{return d.grow(I),J(),1}catch(A){}},n=new Uint8Array(123),q=25;q>=0;--q)n[48+q]=52+q,n[65+q]=q,n[97+q]=26+q;if(n[43]=62,n[47]=63,g.noExitRuntime&&g.noExitRuntime,g.print&&g.print,g.printErr&&(M=g.printErr),g.wasmBinary&&(E=g.wasmBinary),g.arguments&&g.arguments,g.thisProgram&&g.thisProgram,g.preInit)for(\"function\"==typeof g.preInit&&(g.preInit=[g.preInit]);g.preInit.length>0;)g.preInit.shift()();g.setValue=function(A,I,g=\"i8\"){switch(g.endsWith(\"*\")&&(g=\"*\"),g){case\"i1\":case\"i8\":h[A]=I;break;case\"i16\":o[A>>1]=I;break;case\"i32\":w[A>>2]=I;break;case\"i64\":Y(\"to do setValue(i64) use WASM_BIGINT\");case\"float\":S[A>>2]=I;break;case\"double\":y[A>>3]=I;break;case\"*\":k[A>>2]=I;break;default:Y(`invalid type for setValue: ${g}`)}},g.getValue=function(A,I=\"i8\"){switch(I.endsWith(\"*\")&&(I=\"*\"),I){case\"i1\":case\"i8\":return h[A];case\"i16\":return o[A>>1];case\"i32\":return w[A>>2];case\"i64\":Y(\"to do getValue(i64) use WASM_BIGINT\");case\"float\":return S[A>>2];case\"double\":return y[A>>3];case\"*\":return k[A>>2];default:Y(`invalid type for getValue: ${I}`)}},g.UTF8ToString=L;var d,O,r={40216:()=>g.getRandomValue(),40252:()=>{if(void 0===g.getRandomValue)try{var A=\"object\"==typeof window?window:self,I=void 0!==A.crypto?A.crypto:A.msCrypto;I=void 0===I?B:I;var C=function(){var A=new Uint32Array(1);return I.getRandomValues(A),A[0]>>>0};C(),g.getRandomValue=C}catch(A){try{var B=require(\"crypto\"),Q=function(){var A=B.randomBytes(4);return(A[0]<<24|A[1]<<16|A[2]<<8|A[3])>>>0};Q(),g.getRandomValue=Q}catch(A){throw\"No secure random number generator found\"}}}},e={a:(A,I,g,C)=>Y(`Assertion failed: ${L(A)}, at: `+[I?L(I):\"unknown filename\",g,C?L(C):\"unknown function\"]),c:()=>Y(\"\"),b:(A,I,g)=>((A,I,g)=>{var C=((A,I)=>{var g;for(R.length=0;g=c[A++];){var C=105!=g;I+=(C&=112!=g)&&I%8?4:0,R.push(112==g?k[I>>2]:105==g?w[I>>2]:y[I>>3]),I+=C?8:4}return R})(I,g);return r[A](...C)})(A,I,g),d:A=>{var I=c.length,g=2147483648;if((A>>>=0)>g)return!1;for(var C=1;C<=4;C*=2){var B=I*(1+.2/C);B=Math.min(B,A+100663296);var Q=Math.min(g,p(Math.max(A,B),65536));if(t(Q))return!0}return!1}};return O=await async function(){function A(A,I){return function(A){g._crypto_aead_aegis128l_keybytes=A.f,g._crypto_aead_aegis128l_nsecbytes=A.g,g._crypto_aead_aegis128l_npubbytes=A.h,g._crypto_aead_aegis128l_abytes=A.i,g._crypto_aead_aegis128l_messagebytes_max=A.j,g._crypto_aead_aegis128l_keygen=A.k,g._crypto_aead_aegis128l_encrypt=A.l,g._crypto_aead_aegis128l_encrypt_detached=A.m,g._crypto_aead_aegis128l_decrypt=A.n,g._crypto_aead_aegis128l_decrypt_detached=A.o,g._crypto_aead_aegis256_keybytes=A.p,g._crypto_aead_aegis256_nsecbytes=A.q,g._crypto_aead_aegis256_npubbytes=A.r,g._crypto_aead_aegis256_abytes=A.s,g._crypto_aead_aegis256_messagebytes_max=A.t,g._crypto_aead_aegis256_keygen=A.u,g._crypto_aead_aegis256_encrypt=A.v,g._crypto_aead_aegis256_encrypt_detached=A.w,g._crypto_aead_aegis256_decrypt=A.x,g._crypto_aead_aegis256_decrypt_detached=A.y,g._crypto_aead_aes256gcm_is_available=A.z,g._crypto_aead_chacha20poly1305_encrypt_detached=A.A,g._crypto_aead_chacha20poly1305_encrypt=A.B,g._crypto_aead_chacha20poly1305_ietf_encrypt_detached=A.C,g._crypto_aead_chacha20poly1305_ietf_encrypt=A.D,g._crypto_aead_chacha20poly1305_decrypt_detached=A.E,g._crypto_aead_chacha20poly1305_decrypt=A.F,g._crypto_aead_chacha20poly1305_ietf_decrypt_detached=A.G,g._crypto_aead_chacha20poly1305_ietf_decrypt=A.H,g._crypto_aead_chacha20poly1305_ietf_keybytes=A.I,g._crypto_aead_chacha20poly1305_ietf_npubbytes=A.J,g._crypto_aead_chacha20poly1305_ietf_nsecbytes=A.K,g._crypto_aead_chacha20poly1305_ietf_abytes=A.L,g._crypto_aead_chacha20poly1305_ietf_messagebytes_max=A.M,g._crypto_aead_chacha20poly1305_ietf_keygen=A.N,g._crypto_aead_chacha20poly1305_keybytes=A.O,g._crypto_aead_chacha20poly1305_npubbytes=A.P,g._crypto_aead_chacha20poly1305_nsecbytes=A.Q,g._crypto_aead_chacha20poly1305_abytes=A.R,g._crypto_aead_chacha20poly1305_messagebytes_max=A.S,g._crypto_aead_chacha20poly1305_keygen=A.T,g._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=A.U,g._crypto_aead_xchacha20poly1305_ietf_encrypt=A.V,g._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=A.W,g._crypto_aead_xchacha20poly1305_ietf_decrypt=A.X,g._crypto_aead_xchacha20poly1305_ietf_keybytes=A.Y,g._crypto_aead_xchacha20poly1305_ietf_npubbytes=A.Z,g._crypto_aead_xchacha20poly1305_ietf_nsecbytes=A._,g._crypto_aead_xchacha20poly1305_ietf_abytes=A.$,g._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=A.aa,g._crypto_aead_xchacha20poly1305_ietf_keygen=A.ba,g._crypto_auth_bytes=A.ca,g._crypto_auth_keybytes=A.da,g._crypto_auth=A.ea,g._crypto_auth_verify=A.fa,g._crypto_auth_keygen=A.ga,g._crypto_box_seedbytes=A.ha,g._crypto_box_publickeybytes=A.ia,g._crypto_box_secretkeybytes=A.ja,g._crypto_box_beforenmbytes=A.ka,g._crypto_box_noncebytes=A.la,g._crypto_box_macbytes=A.ma,g._crypto_box_messagebytes_max=A.na,g._crypto_box_seed_keypair=A.oa,g._crypto_box_keypair=A.pa,g._crypto_box_beforenm=A.qa,g._crypto_box_detached_afternm=A.ra,g._crypto_box_detached=A.sa,g._crypto_box_easy_afternm=A.ta,g._crypto_box_easy=A.ua,g._crypto_box_open_detached_afternm=A.va,g._crypto_box_open_detached=A.wa,g._crypto_box_open_easy_afternm=A.xa,g._crypto_box_open_easy=A.ya,g._crypto_box_seal=A.za,g._crypto_box_seal_open=A.Aa,g._crypto_box_sealbytes=A.Ba,g._crypto_generichash_bytes_min=A.Ca,g._crypto_generichash_bytes_max=A.Da,g._crypto_generichash_bytes=A.Ea,g._crypto_generichash_keybytes_min=A.Fa,g._crypto_generichash_keybytes_max=A.Ga,g._crypto_generichash_keybytes=A.Ha,g._crypto_generichash_statebytes=A.Ia,g._crypto_generichash=A.Ja,g._crypto_generichash_init=A.Ka,g._crypto_generichash_update=A.La,g._crypto_generichash_final=A.Ma,g._crypto_generichash_keygen=A.Na,g._crypto_hash_bytes=A.Oa,g._crypto_hash=A.Pa,g._crypto_hash_sha3256_bytes=A.Qa,g._crypto_hash_sha3256_statebytes=A.Ra,g._crypto_hash_sha3256_init=A.Sa,g._crypto_hash_sha3256_update=A.Ta,g._crypto_hash_sha3256_final=A.Ua,g._crypto_hash_sha3256=A.Va,g._crypto_hash_sha3512_bytes=A.Wa,g._crypto_hash_sha3512_statebytes=A.Xa,g._crypto_hash_sha3512_init=A.Ya,g._crypto_hash_sha3512_update=A.Za,g._crypto_hash_sha3512_final=A._a,g._crypto_hash_sha3512=A.$a,g._crypto_ipcrypt_bytes=A.ab,g._crypto_ipcrypt_keybytes=A.bb,g._crypto_ipcrypt_nd_keybytes=A.cb,g._crypto_ipcrypt_nd_tweakbytes=A.db,g._crypto_ipcrypt_nd_inputbytes=A.eb,g._crypto_ipcrypt_nd_outputbytes=A.fb,g._crypto_ipcrypt_ndx_keybytes=A.gb,g._crypto_ipcrypt_ndx_tweakbytes=A.hb,g._crypto_ipcrypt_ndx_inputbytes=A.ib,g._crypto_ipcrypt_ndx_outputbytes=A.jb,g._crypto_ipcrypt_pfx_keybytes=A.kb,g._crypto_ipcrypt_pfx_bytes=A.lb,g._crypto_ipcrypt_keygen=A.mb,g._crypto_ipcrypt_nd_keygen=A.nb,g._crypto_ipcrypt_ndx_keygen=A.ob,g._crypto_ipcrypt_pfx_keygen=A.pb,g._crypto_ipcrypt_encrypt=A.qb,g._crypto_ipcrypt_decrypt=A.rb,g._crypto_ipcrypt_nd_encrypt=A.sb,g._crypto_ipcrypt_nd_decrypt=A.tb,g._crypto_ipcrypt_ndx_encrypt=A.ub,g._crypto_ipcrypt_ndx_decrypt=A.vb,g._crypto_ipcrypt_pfx_encrypt=A.wb,g._crypto_ipcrypt_pfx_decrypt=A.xb,g._crypto_kdf_bytes_min=A.yb,g._crypto_kdf_bytes_max=A.zb,g._crypto_kdf_contextbytes=A.Ab,g._crypto_kdf_keybytes=A.Bb,g._crypto_kdf_derive_from_key=A.Cb,g._crypto_kdf_keygen=A.Db,g._crypto_kdf_hkdf_sha256_extract_init=A.Eb,g._crypto_kdf_hkdf_sha256_extract_update=A.Fb,g._crypto_kdf_hkdf_sha256_extract_final=A.Gb,g._crypto_kdf_hkdf_sha256_extract=A.Hb,g._crypto_kdf_hkdf_sha256_keygen=A.Ib,g._crypto_kdf_hkdf_sha256_expand=A.Jb,g._crypto_kdf_hkdf_sha256_keybytes=A.Kb,g._crypto_kdf_hkdf_sha256_bytes_min=A.Lb,g._crypto_kdf_hkdf_sha256_bytes_max=A.Mb,g._crypto_kdf_hkdf_sha256_statebytes=A.Nb,g._crypto_kdf_hkdf_sha512_extract_init=A.Ob,g._crypto_kdf_hkdf_sha512_extract_update=A.Pb,g._crypto_kdf_hkdf_sha512_extract_final=A.Qb,g._crypto_kdf_hkdf_sha512_extract=A.Rb,g._crypto_kdf_hkdf_sha512_keygen=A.Sb,g._crypto_kdf_hkdf_sha512_expand=A.Tb,g._crypto_kdf_hkdf_sha512_keybytes=A.Ub,g._crypto_kdf_hkdf_sha512_bytes_min=A.Vb,g._crypto_kdf_hkdf_sha512_bytes_max=A.Wb,g._crypto_kdf_hkdf_sha512_statebytes=A.Xb,g._crypto_kem_publickeybytes=A.Yb,g._crypto_kem_secretkeybytes=A.Zb,g._crypto_kem_ciphertextbytes=A._b,g._crypto_kem_sharedsecretbytes=A.$b,g._crypto_kem_seedbytes=A.ac,g._crypto_kem_primitive=A.bc,g._crypto_kem_seed_keypair=A.cc,g._crypto_kem_keypair=A.dc,g._crypto_kem_enc=A.ec,g._crypto_kem_dec=A.fc,g._crypto_kem_mlkem768_publickeybytes=A.gc,g._crypto_kem_mlkem768_secretkeybytes=A.hc,g._crypto_kem_mlkem768_ciphertextbytes=A.ic,g._crypto_kem_mlkem768_sharedsecretbytes=A.jc,g._crypto_kem_mlkem768_seedbytes=A.kc,g._crypto_kem_mlkem768_seed_keypair=A.lc,g._crypto_kem_mlkem768_keypair=A.mc,g._crypto_kem_mlkem768_enc=A.nc,g._crypto_kem_mlkem768_enc_deterministic=A.oc,g._crypto_kem_mlkem768_dec=A.pc,g._crypto_kem_xwing_publickeybytes=A.qc,g._crypto_kem_xwing_secretkeybytes=A.rc,g._crypto_kem_xwing_ciphertextbytes=A.sc,g._crypto_kem_xwing_sharedsecretbytes=A.tc,g._crypto_kem_xwing_seedbytes=A.uc,g._crypto_kem_xwing_seed_keypair=A.vc,g._crypto_kem_xwing_keypair=A.wc,g._crypto_kem_xwing_enc_deterministic=A.xc,g._crypto_kem_xwing_enc=A.yc,g._crypto_kem_xwing_dec=A.zc,g._crypto_kx_seed_keypair=A.Ac,g._crypto_kx_keypair=A.Bc,g._crypto_kx_client_session_keys=A.Cc,g._crypto_kx_server_session_keys=A.Dc,g._crypto_kx_publickeybytes=A.Ec,g._crypto_kx_secretkeybytes=A.Fc,g._crypto_kx_seedbytes=A.Gc,g._crypto_kx_sessionkeybytes=A.Hc,g._crypto_scalarmult_base=A.Ic,g._crypto_scalarmult=A.Jc,g._crypto_scalarmult_bytes=A.Kc,g._crypto_scalarmult_scalarbytes=A.Lc,g._crypto_secretbox_keybytes=A.Mc,g._crypto_secretbox_noncebytes=A.Nc,g._crypto_secretbox_macbytes=A.Oc,g._crypto_secretbox_messagebytes_max=A.Pc,g._crypto_secretbox_keygen=A.Qc,g._crypto_secretbox_detached=A.Rc,g._crypto_secretbox_easy=A.Sc,g._crypto_secretbox_open_detached=A.Tc,g._crypto_secretbox_open_easy=A.Uc,g._crypto_secretstream_xchacha20poly1305_keygen=A.Vc,g._crypto_secretstream_xchacha20poly1305_init_push=A.Wc,g._crypto_secretstream_xchacha20poly1305_init_pull=A.Xc,g._crypto_secretstream_xchacha20poly1305_rekey=A.Yc,g._crypto_secretstream_xchacha20poly1305_push=A.Zc,g._crypto_secretstream_xchacha20poly1305_pull=A._c,g._crypto_secretstream_xchacha20poly1305_statebytes=A.$c,g._crypto_secretstream_xchacha20poly1305_abytes=A.ad,g._crypto_secretstream_xchacha20poly1305_headerbytes=A.bd,g._crypto_secretstream_xchacha20poly1305_keybytes=A.cd,g._crypto_secretstream_xchacha20poly1305_messagebytes_max=A.dd,g._crypto_secretstream_xchacha20poly1305_tag_message=A.ed,g._crypto_secretstream_xchacha20poly1305_tag_push=A.fd,g._crypto_secretstream_xchacha20poly1305_tag_rekey=A.gd,g._crypto_secretstream_xchacha20poly1305_tag_final=A.hd,g._crypto_shorthash_bytes=A.id,g._crypto_shorthash_keybytes=A.jd,g._crypto_shorthash=A.kd,g._crypto_shorthash_keygen=A.ld,g._crypto_sign_statebytes=A.md,g._crypto_sign_bytes=A.nd,g._crypto_sign_seedbytes=A.od,g._crypto_sign_publickeybytes=A.pd,g._crypto_sign_secretkeybytes=A.qd,g._crypto_sign_messagebytes_max=A.rd,g._crypto_sign_seed_keypair=A.sd,g._crypto_sign_keypair=A.td,g._crypto_sign=A.ud,g._crypto_sign_open=A.vd,g._crypto_sign_detached=A.wd,g._crypto_sign_verify_detached=A.xd,g._crypto_sign_init=A.yd,g._crypto_sign_update=A.zd,g._crypto_sign_final_create=A.Ad,g._crypto_sign_final_verify=A.Bd,g._crypto_sign_ed25519_pk_to_curve25519=A.Cd,g._crypto_sign_ed25519_sk_to_curve25519=A.Dd,g._crypto_xof_shake128_blockbytes=A.Ed,g._crypto_xof_shake128_statebytes=A.Fd,g._crypto_xof_shake128_domain_standard=A.Gd,g._crypto_xof_shake128=A.Hd,g._crypto_xof_shake128_init=A.Id,g._crypto_xof_shake128_init_with_domain=A.Jd,g._crypto_xof_shake128_update=A.Kd,g._crypto_xof_shake128_squeeze=A.Ld,g._crypto_xof_shake256_blockbytes=A.Md,g._crypto_xof_shake256_statebytes=A.Nd,g._crypto_xof_shake256_domain_standard=A.Od,g._crypto_xof_shake256=A.Pd,g._crypto_xof_shake256_init=A.Qd,g._crypto_xof_shake256_init_with_domain=A.Rd,g._crypto_xof_shake256_update=A.Sd,g._crypto_xof_shake256_squeeze=A.Td,g._crypto_xof_turboshake128_blockbytes=A.Ud,g._crypto_xof_turboshake128_statebytes=A.Vd,g._crypto_xof_turboshake128_domain_standard=A.Wd,g._crypto_xof_turboshake128=A.Xd,g._crypto_xof_turboshake128_init=A.Yd,g._crypto_xof_turboshake128_init_with_domain=A.Zd,g._crypto_xof_turboshake128_update=A._d,g._crypto_xof_turboshake128_squeeze=A.$d,g._crypto_xof_turboshake256_blockbytes=A.ae,g._crypto_xof_turboshake256_statebytes=A.be,g._crypto_xof_turboshake256_domain_standard=A.ce,g._crypto_xof_turboshake256=A.de,g._crypto_xof_turboshake256_init=A.ee,g._crypto_xof_turboshake256_init_with_domain=A.fe,g._crypto_xof_turboshake256_update=A.ge,g._crypto_xof_turboshake256_squeeze=A.he,g._randombytes_random=A.ie,g._randombytes_stir=A.je,g._randombytes_uniform=A.ke,g._randombytes_buf=A.le,g._randombytes_buf_deterministic=A.me,g._randombytes_seedbytes=A.ne,g._randombytes_close=A.oe,g._randombytes=A.pe,g._sodium_bin2hex=A.qe,g._sodium_hex2bin=A.re,g._sodium_base64_encoded_len=A.se,g._sodium_bin2base64=A.te,g._sodium_base642bin=A.ue,g._sodium_ip2bin=A.ve,g._sodium_bin2ip=A.we,g._sodium_init=A.xe,g._sodium_pad=A.ye,g._sodium_unpad=A.ze,g._sodium_version_string=A.Ae,g._sodium_library_version_major=A.Be,g._sodium_library_version_minor=A.Ce,g._sodium_library_minimal=A.De,g._malloc=A.Ee,g._free=A.Fe,A.dynCall_iiiji,A.dynCall_iiij,A.dynCall_iijii,A.dynCall_iiijiji,A.dynCall_iiijiii,d=A.e,A.__indirect_function_table}(O=A.exports),J(),O}var C={a:e};return g.instantiateWasm?new Promise((I,B)=>{g.instantiateWasm(C,(g,C)=>{I(A(g))})}):(F??=(A=>{for(var I,g,C=0,B=0,Q=295748,E=new Uint8Array(221811-(\"=\"==A[295746])-(\"=\"==A[295747]));C<Q;C+=4,B+=3)I=n[A.charCodeAt(C+1)],g=n[A.charCodeAt(C+2)],E[B]=n[A.charCodeAt(C)]<<2|I>>4,E[B+1]=I<<4|g>>2,E[B+2]=g<<6|n[A.charCodeAt(C+3)];return E})(\"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IgMgATQCGCIGfnwgAigCCCIsrCINIAE0AhAiB358IAIoAgwiLawiECABKAIMIi5BAXSsIhV+fCACKAIQIi+sIhEgATQCCCIIfnwgAigCFCIwrCIWIAEoAgQiMUEBdKwiF358IAIoAhgiMqwiICABNAIAIgl+fCACKAIcIjNBE2ysIgwgASgCJCI0QQF0rCIYfnwgAigCICI1QRNsrCIEIAE0AiAiCn58IAIoAiQiAkETbKwiBSABKAIcIgFBAXSsIhl+fCAHIAt+IAMgK6wiGn58IA0gLqwiG358IAggEH58IBEgMawiHH58IAkgFn58IDJBE2ysIg4gNKwiHX58IAogDH58IAQgAawiHn58IAUgBn58IAsgFX4gAyAHfnwgCCANfnwgECAXfnwgCSARfnwgMEETbKwiHyAYfnwgCiAOfnwgDCAZfnwgBCAGfnwgBSAUfnwiIkKAgIAQfCIjQhqHfCIkQoCAgAh8IiVCGYd8IhIgEkKAgIAQfCITQoCAgOAPg30+AhggACALIBd+IAMgCH58IAkgDX58IC1BE2ysIg8gGH58IAogL0ETbKwiEn58IBkgH358IAYgDn58IAwgFH58IAQgB358IAUgFX58IAkgC34gAyAcfnwgLEETbKwiISAdfnwgCiAPfnwgEiAefnwgBiAffnwgDiAafnwgByAMfnwgBCAbfnwgBSAIfnwgKkETbKwgGH4gAyAJfnwgCiAhfnwgDyAZfnwgBiASfnwgFCAffnwgByAOfnwgDCAVfnwgBCAIfnwgBSAXfnwiIUKAgIAQfCImQhqHfCInQoCAgAh8IihCGYd8Ig8gD0KAgIAQfCIpQoCAgOAPg30+AgggACAGIAt+IAMgHn58IA0gGn58IAcgEH58IBEgG358IAggFn58IBwgIH58IAkgM6wiD358IAQgHX58IAUgCn58IBNCGod8IhMgE0KAgIAIfCITQoCAgPAPg30+AhwgACAIIAt+IAMgG358IA0gHH58IAkgEH58IBIgHX58IAogH358IA4gHn58IAYgDH58IAQgGn58IAUgB358IClCGod8IgQgBEKAgIAIfCIEQoCAgPAPg30+AgwgACALIBl+IAMgCn58IAYgDX58IBAgFH58IAcgEX58IBUgFn58IAggIH58IA8gF358IAkgNawiDH58IAUgGH58IBNCGYd8IgUg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IAZSDQALCyAAIAsgDCAMQYAFaiINEDsgASAFp2ohASACIAV9IgJC/wBWBEADQCAAIAEgDCANEDsgAUGAAWohASACQoABfSICQv8AVg0ACwsCQCACUA0AIAJCA4MhBEIAIQdCACEDIAJCBFoEQCACQvwAgyEFQgAhAgNAIAsgA6ciAGogACABai0AADoAACALIABBAXIiDWogASANai0AADoAACALIABBAnIiDWogASANai0AADoAACALIABBA3IiAGogACABai0AADoAACADQgR8IQMgAkIEfCICIAVSDQALIARQDQELA0AgCyADpyIAaiAAIAFqLQAAOgAAIANCAXwhAyAHQgF8IgcgBFINAAsLIAxBwAUQBwwBCyACQgODIQVCACEDIAJCBFoEQCACQnyDIQIDQCALIAMgBHynaiABIAOnai0AADoAACALIANCAYQiBiAEfKdqIAEgBqdqLQAAOgAAIAsgA0IChCIGIAR8p2ogASAGp2otAAA6AAAgCyADQgOEIgYgBHynaiABIAanai0AADoAACADQgR8IQMgCUIEfCIJIAJSDQALIAVQDQELA0AgCyADIAR8p2ogASADp2otAAA6AAAgA0IBfCEDIAdCAXwiByAFUg0ACwsgDEHABWokAEEAC6UFAQN/IwBBsAFrIgIkACACIAEoAAA2AgBBBCEDIAIgASgABDYCBCACIAEoAAg2AgggAiABKAAMIgE2AgwDQCACIANBAnRqIgQgA0EDcQR/IAEFIANBAnZB8IgCai0AACABQRh3IgFBCHZB/wFxQYCrAmotAABBCHQgAUH/AXFBgKsCai0AAHIgAUEQdkH/AXFBgKsCai0AAEEQdHIgAUEYdkGAqwJqLQAAQRh0cnMLIARBEGsoAgBzIgE2AgAgA0EBaiIDQSxHDQALIAAgAigCADYCACAAIAIoAgQ2AgQgACACKAIINgIIIAAgAigCDDYCDCAAIAIoAhA2AhAgACACKAIUNgIUIAAgAigCGDYCGCAAIAIoAhw2AhwgACACKAIgNgIgIAAgAigCJDYCJCAAIAIoAig2AiggACACKAIsNgIsIAAgAigCMDYCMCAAIAIoAjQ2AjQgACACKAI4NgI4IAAgAigCPDYCPCAAQUBrIAIoAkA2AgAgACACKAJENgJEIAAgAigCSDYCSCAAIAIoAkw2AkwgACACKAJQNgJQIAAgAigCVDYCVCAAIAIoAlg2AlggACACKAJcNgJcIAAgAigCYDYCYCAAIAIoAmQ2AmQgACACKAJoNgJoIAAgAigCbDYCbCAAIAIoAnA2AnAgACACKAJ0NgJ0IAAgAigCeDYCeCAAIAIoAnw2AnwgACACKAKAATYCgAEgACACKAKEATYChAEgACACKAKIATYCiAEgACACKAKMATYCjAEgACACKAKQATYCkAEgACACKAKUATYClAEgACACKAKYATYCmAEgACACKAKcATYCnAEgACACKAKgATYCoAEgACACKAKkATYCpAEgACACKAKoATYCqAEgACACKAKsATYCrAEgAkGwAWokAAufBAETfyABKAIoIQIgASgCBCEDIAEoAiwhBCABKAIIIQUgASgCMCEGIAEoAgwhByABKAI0IQggASgCECEJIAEoAjghCiABKAIUIQsgASgCPCEMIAEoAhghDSABQUBrIg4oAgAhDyABKAIcIRAgASgCRCERIAEoAiAhEiABKAJIIRMgASgCACEUIAAgASgCJCABKAJMajYCJCAAIBIgE2o2AiAgACAQIBFqNgIcIAAgDSAPajYCGCAAIAsgDGo2AhQgACAJIApqNgIQIAAgByAIajYCDCAAIAUgBmo2AgggACADIARqNgIEIAAgAiAUajYCACABKAIoIQIgASgCBCEDIAEoAiwhBCABKAIIIQUgASgCMCEGIAEoAgwhByABKAI0IQggASgCECEJIAEoAjghCiABKAIUIQsgASgCPCEMIAEoAhghDSAOKAIAIQ4gASgCHCEPIAEoAkQhECABKAIgIREgASgCSCESIAEoAgAhEyAAIAEoAkwgASgCJGs2AkwgACASIBFrNgJIIAAgECAPazYCRCAAQUBrIA4gDWs2AgAgACAMIAtrNgI8IAAgCiAJazYCOCAAIAggB2s2AjQgACAGIAVrNgIwIAAgBCADazYCLCAAIAIgE2s2AiggACABKQJQNwJQIAAgASkCWDcCWCAAIAEpAmA3AmAgACABKQJoNwJoIAAgASkCcDcCcCAAQfgAaiABQfgAakGgCxAGC/AJAR5/IAEoAighAyABKAIEIQQgASgCLCEFIAEoAgghBiABKAIwIQcgASgCDCEIIAEoAjQhCSABKAIQIQogASgCOCELIAEoAhQhDCABKAI8IQ0gASgCGCEOIAFBQGsiDygCACEQIAEoAhwhESABKAJEIRIgASgCICETIAEoAkghFCABKAIAIRUgACABKAIkIAEoAkxqNgIkIAAgEyAUajYCICAAIBEgEmo2AhwgACAOIBBqNgIYIAAgDCANajYCFCAAIAogC2o2AhAgACAIIAlqNgIMIAAgBiAHajYCCCAAIAQgBWo2AgQgACADIBVqNgIAIAEoAighBSABKAIEIQMgASgCLCEGIAEoAgghByABKAIwIQggASgCDCEJIAEoAjQhCiABKAIQIQsgASgCOCEMIAEoAhQhDSABKAI8IQ4gASgCGCEQIA8oAgAhDyABKAIcIQQgASgCRCERIAEoAiAhEiABKAJIIRMgASgCACEUIAAgASgCTCABKAIkazYCTCAAIBMgEms2AkggACARIARrNgJEIABBQGsiBCAPIBBrNgIAIAAgDiANazYCPCAAIAwgC2s2AjggACAKIAlrNgI0IAAgCCAHazYCMCAAIAYgA2s2AiwgAEEoaiIDIAUgFGs2AgAgAEHQAGogACACEAYgAyADIAJBKGoQBiAAQfgAaiACQfgAaiABQfgAahAGIAAgAUHQAGogAkHQAGoQBiAAKAIEIRUgACgCCCEWIAAoAgwhFyAAKAIQIRggACgCFCEZIAAoAhghGiAAKAIcIRsgACgCICEcIAAoAiQhHSADKAIAIQEgACgCUCECIAAoAiwhBSAAKAJUIQYgACgCMCEHIAAoAlghCCAAKAI0IQkgACgCXCEKIAAoAjghCyAAKAJgIQwgACgCPCENIAAoAmQhDiAEKAIAIQ8gACgCaCEQIAAoAkQhESAAKAJsIRIgACgCSCETIAAoAnAhFCAAKAIAIR4gACAAKAJMIh8gACgCdCIgajYCTCAAIBMgFGo2AkggACARIBJqNgJEIAQgDyAQajYCACAAIA0gDmo2AjwgACALIAxqNgI4IAAgCSAKajYCNCAAIAcgCGo2AjAgACAFIAZqNgIsIAMgASACajYCACAAICAgH2s2AiQgACAUIBNrNgIgIAAgEiARazYCHCAAIBAgD2s2AhggACAOIA1rNgIUIAAgDCALazYCECAAIAogCWs2AgwgACAIIAdrNgIIIAAgBiAFazYCBCAAIAIgAWs2AgAgACAdQQF0IgEgACgCnAEiAms2ApwBIAAgHEEBdCIDIAAoApgB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QQA2AuABIABBADoA7AFBfwVBAAsgBQRAIAAoAuABIQMDQCAAKALkASIEIANGBEAgABAOIABBADYC4AEgACgC5AEhBEEAIQMLIAAgASAGaiADIAQgA2siAyAFIAZrIgQgAyAESRsiBBANIAAgACgC4AEgBGoiAzYC4AEgBCAGaiIGIAVJDQALCwvoAQIGfwJ+An8gAkIAUgRAIABB4AFqIQggAEHgAGohBCAAKADgAiEFIABBQGshBgNAIAQgBWohB0GAAiAFayIDrSIJIAJaBEAgAqciAwRAIAcgASAD/AoAAAsgACAAKADgAiADajYA4AJBAAwDCyADBEAgByABIAP8CgAACyAAIAAoAOACIANqNgDgAiAGIAYpAAAiCkKAAXw3AAAgACAAKQBIIApC/35WrXw3AEggACAEEDwgBCAIQYAB/AoAACAAIAAoAOACQYABayIFNgDgAiABIANqIQEgAiAJfSICQgBSDQALC0EACwvoBAEJfyAAIAEoAiAiBSABKAIcIgYgASgCGCIHIAEoAhQiCCABKAIQIgkgASgCDCIKIAEoAggiBCABKAIEIgMgASgCACICIAEoAiQiAUETbEGAgIAIakEZdmpBGnVqQRl1akEadWpBGXVqQRp1akEZdWpBGnVqQRl1akEadSABakEZdUETbCACaiICOgAAIAAgAkEQdjoAAiAAIAJBCHY6AAEgACADIAJBGnVqIgNBDnY6AAUgACADQQZ2OgAEIAAgAkEYdkEDcSADQQJ0cjoAAyAAIAQgA0EZdWoiAkENdjoACCAAIAJBBXY6AAcgACACQQN0IANBgICADnFBFnZyOgAGIAAgCiACQRp1aiIEQQt2OgALIAAgBEEDdjoACiAAIARBBXQgAkGAgIAfcUEVdnI6AAkgACAJIARBGXVqIgJBEnY6AA8gACACQQp2OgAOIAAgAkECdjoADSAAIAggAkEadWoiAzoAECAAIAJBBnQgBEGAgOAPcUETdnI6AAwgACADQRB2OgASIAAgA0EIdjoAESAAIAcgA0EZdWoiAkEPdjoAFSAAIAJBB3Y6ABQgACADQRh2QQFxIAJBAXRyOgATIAAgBiACQRp1aiIDQQ12OgAYIAAgA0EFdjoAFyAAIANBA3QgAkGAgIAccUEXdnI6ABYgACAFIANBGXVqIgJBDHY6ABsgACACQQR2OgAa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LQAAczoAACADQQRqIQMgCEEEaiIIIAJHDQALIAdFDQELA0AgBEFAayADaiIAIAAtAAAgASADai0AAHM6AAAgA0EBaiEDIApBAWoiCiAHRw0ACwsgCSAEQUBrIgBCgAEQEBogAEGAARAHIARBwAAQByAEQcABaiQAQQAPCxAKAAuVAQEBfyMAQdABayIDJAAgA0IANwNIIANCADcDQCADQZCtAikDADcDACADQZitAikDADcDCCADQaCtAikDADcDECADQaitAikDADcDGCADQbCtAikDADcDICADQbitAikDADcDKCADQcCtAikDADcDMCADQcitAikDADcDOCADIAEgAhAQGiADIAAQHCADQdABaiQAQQALVwIBfwF+AkBBsLkCKAIAIgGtIACtQgd8Qvj///8fg3wiAkL/////D1gEQCACpyIAPwBBEHRNDQEgABADDQELQdDAAkEwNgIAQX8PC0GwuQIgADYCACABCzoBAn8jAEEgayIDJABBfyEEIAMgAiABEClFBEAgAEGguQIgAxBfIANBIBAHQQAhBAsgA0EgaiQAIAQLBABBbwuiAwIDfwF+IwBB4AJrIgYkACAGIAQgBRBfAn8CQAJAIAAgAksgAyAAIAJrrVZxRQRAIAAgAk8NASADIAIgAGutWA0BCyADpyIFBEAgACACIAX8CgAACyAGQgA3AzggBkIANwMwIAZCADcDKCAGQgA3AyBCICADIANCIFobIQkgA0IgViEFIAAhAgwBCyAGQgA3AzggBkIANwMwIAZCADcDKCAGQgA3AyBCICADIANCIFobIQkgA0IgViEFIANCAFINAEEBDAELIAmnIgcEQCAGQUBrIAIgB/wKAAALQQALIQggBkEgaiIHIAcgCUIgfCAEQRBqIgRCACAGQdS5AigCABEPABogBkHgAGogB0G8uQIoAgARAQAaAkAgCA0AIAmnIgdFDQAgACAGQUBrIAf8CgAACyAGQSBqQcAAEAcgBQRAIAAgCaciBWogAiAFaiADIAl9IARCASAGQdS5AigCABEPABoLIAZBIBAHIAZB4ABqIgIgACADQcC5AigCABEAABogAiABQcS5AigCABEBABogAkGAAhAHIAZB4AJqJABBAAuHGAEOf0H/ACECA0AgACABQQF0aiIDIAMuAQQiBCADLgEAIgZqIgXBQb+dAWxBGnVB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IAEgA6dqLQAAOgAAIANCAXwhAyAHQgF8IgcgBlINAAsLIAAgCyAMIAxBgAJqIg0QTyABIAWnaiEBIAIgBX0iAkI/VgRAA0AgACABIAwgDRBPIAFBQGshASACQkB8IgJCP1YNAAsLAkAgAlANACACQgODIQRCACEHQgAhAyACQgRaBEAgAkI8gyEFQgAhAgNAIAsgA6ciAGogACABai0AADoAACALIABBAXIiDWogASANai0AADoAACALIABBAnIiDWogASANai0AADoAACALIABBA3IiAGogACABai0AADoAACADQgR8IQMgAkIEfCICIAVSDQALIARQDQELA0AgCyADpyIAaiAAIAFqLQAAOgAAIANCAXwhAyAHQgF8IgcgBFINAAsLIAxBoAIQBwwBCyACQgODIQVCACEDIAJCBFoEQCACQnyDIQIDQCALIAMgBHynaiABIAOnai0AADoAACALIANCAYQiBiAEfKdqIAEgBqdqLQAAOgAAIAsgA0IChCIGIAR8p2ogASAGp2otAAA6AAAgCyADQgOEIgYgBHynaiABIAanai0AADoAACADQgR8IQMgCUIEfCIJIAJSDQALIAVQDQELA0AgCyADIAR8p2ogASADp2otAAA6AAAgA0IBfCEDIAdCAXwiByAFUg0ACwsgDEGgAmokAAsEAEEYC+kDAQJ/QX8hBQJAIAJBwABLDQAgA0HBAGsiBEFASQ0AAkAgAUEAIAIbRQRAIARB/wFxQb8BTQRAEAoACyAAQUBrQQBBpQL8CwAgAEL5wvibkaOz8NsANwA4IABC6/qG2r+19sEfNwAwIABCn9j52cKR2oKbfzcAKCAAQtGFmu/6z5SH0QA3ACAgAELx7fT4paf9p6V/NwAYIABCq/DT9K/uvLc8NwAQIABCu86qptjQ67O7fzcACCAAIAOtQoiS95X/zPmE6gCFNwAADAELAn8jAEGAAWsiBCQAAkAgA0HBAGtB/wFxQb8BTQ0AIAFFDQAgAkHBAGtB/wFxQb8BTQ0AIABBQGtBAEGlAvwLACAAQvnC+JuRo7Pw2wA3ADggAELr+obav7X2wR83ADAgAEKf2PnZwpHagpt/NwAoIABC0YWa7/rPlIfRADcAICAAQvHt9Pilp/2npX83ABggAEKr8NP0r+68tzw3ABAgAEK7zqqm2NDrs7t/NwAIIAAgA60g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GiABKAAUIRsgASgAGCEcIAEoABwhLCABKAAgIS0gASgAJCEuIAEoACghLyABKAAsITAgASgAMCExIAEoADQhMiABKAA4ITMgASgAPCE0IAUgASgAACAIICpqczYAACAFIDQgECAdanM2ADwgBSAzIBcgHmpzNgA4IAUgMiASIBhqczYANCAFIDEgDSATanM2ADAgBSAwIBEgH2pzNgAsIAUgLyAMICBqczYAKCAFIC4gDyAhanM2ACQgBSAtIAsgImpzNgAgIAUgLCAHICNqczYAHCAFIBwgBiAkanM2ABggBSAbIAIgJWpzNgAUIAUgGiAEICZqczYAECAFIBkgFCAnanM2AAwgBSAVIA4gKGpzNgAIIAUgFiAKIClqczYABCASIBNBAWoiE0VqIRIgA0LAAFgEQCADQj9YBEAgA6chAUEAIQQDQCAEICtqIAQgBWotAAA6AAAgBEEBaiIEIAFJDQALCyAAIBI2AjQgACATNgIwBSABQUBrIQEgBUFAayECIANCQHwhAwwBCwsLCAAgAEEQEBUL0QYBCn8jAEGgAmsiAiQAIAAoABwhBCAAKAAYIQUgACgAFCEGIAAoABAhByAAKAAEIQggACgACCEJIAAoAAwhCiAAKAAAIQsgAiABKQJ4NwOYAiACIAEpAnA3A5ACIAIgASkCYDcD8AEgAiABKQJoNwP4ASACIAEpAnA3A+ABIAIgASkCeDcD6AEgAkGAAmoiAyACQfABaiACQeABahAFIAEgAikCiAI3AnggASACKQKAAjcCcCACIAEpAlA3A9ABIAIgASkCWDcD2AEgAiABKQJgNwPAASACIAEpAmg3A8gBIAMgAkHQAWogAkHAAWoQBSABIAIpAogCNwJoIAEgAikCgAI3AmAgAiABQUBrIgApAgA3A7ABIAIgASkCSDcDuAEgAiABKQJQNwOgASACIAEpAlg3A6gBIAMgAkGwAWogAkGgAWoQBSABIAIpAogCNwJYIAEgAikCgAI3AlAgAiABKQIwNwOQASACIAEpAjg3A5gBIAIgACkCADcDgAEgAiABKQJINwOIASADIAJBkAFqIAJBgAFqEAUgASACKQKIAjcCSCAAIAIpAoACNwIAIAIgASkCIDcDcCACIAEpAig3A3ggAiABKQIwNwNgIAIgASkCODcDaCADIAJB8ABqIAJB4ABqEAUgASAC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IiAKIAUgBBAGIAJBkANqIgEgByADEAYgAkG4A2oiBiADIAQQBiAFIAoQIiAKIAUgBBAGIAEgByADEAYgBiADIAQQBiAFIAoQIiAKIAUgBBAGIAEgByADEAYgBiADIAQQBiAFIAoQIiAAIAUgBBAGIAggByADEAYgCSADIAQQBiALIAUgBxAGQQAhAQNAIAJBCGoiBiABQQF2IAJBoAJqIAFqLAAAEHYgAkGAAWoiBSAAIAYQWSAAIAUgBBAGIAggByADEAYgCSADIAQQBiALIAUgBxAGIAFBPkkgAUECaiEBDQALIAJB4ANqJAALYgEDfyMAQbABayICJAAgAkHgAGoiAyABQdAAahBEIAJBMGoiBCABIAMQBiACIAFBKGogAxAGIAAgAhAaIAJBkAFqIAQQGiAAIAAtAB8gAi0AkAFBB3RzOgAfIAJBsAFqJAALyggBA38jAEHAAWsiAiQAIAJBkAFqIgQgARAEIAJB4ABqIgMgBBAEIAMgAxAEIAMgASADEAYgBCAEIAMQBiACQTBqIgEgBBAEIAMgAyABEAYgASADEAQgASABEAQgASABEAQgASABEAQgASABEAQgAyABIAMQBiABIAMQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEgAxAGIAIgARAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAEgAiABEAYgASABEAQgASABEAQgASABEAQgASABEAQgASABEAQgASABEAQgASABEAQgASABEAQgASABEAQgASABEAQgAyABIAMQBiABIAMQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEgAxAGIAIgARAEQQEhAQNAIAIgAhAEIAFBAWoiAUHkAEcNAAsgAkEwaiIBIAIgARAGIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAJB4ABqIgMgASADEAYgAyADEAQgAyADEAQgAyADEAQgAyADEAQgAyADEAQgACADIAJBkAFqEAYgAkHAAWokAAv8AgIDfwF+IwBB4ABrIgYkACAGIAQgBRBfIAZBIGoiBUIgIARBEGoiBCAGQdC5AigCABERABoCfyACIAEgAyAFQbi5AigCABEWAARAIAZBIBAHQX8MAQsCQCAARQRAIAZBIBAHIAZBIGpBwAAQBwwBCwJAAkACQAJAIAAgAUkgAyABIABrrVZxRQRAIAAgAU0NASADIAAgAWutWA0BCyADpyICBEAgACABIAL8CgAACyAAIQEMAQsgA1ANAQsgBkFAayEFQiAgAyADQiBaGyIJpyICRSIHRQRAIAUgASAC/AoAAAsgBkEgaiIIIAggCUIgfCAEQgAgBkHUuQIoAgARDwAaIAdFBEAgACAFIAL8CgAACyAGQSBqQcAAEAcgA0IhVA0BIAAgAmogASACaiADIAl9IARCASAGQdS5AigCABEPABoMAQsgBkEgaiIAIABCICAEQgAgBkHUuQIoAgARDwAaIABBwAAQBwsg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BEAgAxAOIANBADYC4AEgAygC5AEhBEEAIQULIAMgASAGaiAFIAQgBWsiBSAHIAZrIgQgBCAFSxsiBBANIAMgAygC4AEgBGoiBTYC4AEgBCAGaiIGIAdJDQALCyADIAAQNhogA0GAAhAHIANBgAJqJABBAAuxAQEBfyMAQRBrIgIgADYCDCACIAE2AghBACEAIAJBADsBBgNAIAIgAi8BBiACKAIMIABqLQAAIAIoAgggAGotAABzcjsBBiACIAIvAQYgAEEBciIBIAIoAgxqLQAAIAIoAgggAWotAABzcjsBBiAAQQJqIgBBIEcNAAsgAiACLwEGOwEGIAIgAi8BBkEBazsBBiACQeDEAi8BAEECdiACLwEGQQ92czsBBiACLwEGQQFrCzQBAX8jAEEgayICJAAgACACEGUgAEHoAGoiACACQiAQNyAAIAEQZSACQSAQByACQSBqJAAL4gcBCX8jAEHgAGsiAyQAAkACQCACQcEATwRAIABCADcDICAAQeCzAikDADcDACAAQeizAikDADcDCCAAQfCzAikDADcDECAAQfizAikDADcDGCAAIAEgAq0QNyAAIAMQZUEgIQIgAyEBDAELIAENACACDQELIABCADcDICAAQeCzAikDADcDACAAQeizAikDADcDCCAAQfCzAikDADcDECAAQfizAikDADcDGCADQrbs2LHjxo2bNjcDWCADQrbs2LHjxo2bNjcDUCADQrbs2LHjxo2bNjcDSCADQrbs2LHjxo2bNjcDQCADQrbs2LHjxo2bNjcDOCADQrbs2LHjxo2bNjcDMCADQrbs2LHjxo2bNjcDKCADQrbs2LHjxo2bNjcDIAJAIAJFDQAgAkEDcSEJIAJBBE8EQCACQfwAcSEGA0AgA0EgaiIHIARqIgUgBS0AACABIARqLQAAczoAACAHIARBAXIiBWoiCyALLQAAIAEgBWotAABzOgAAIAcgBEECciIFaiILIAstAAAgASAFai0AAHM6AAAgByAEQQNyIgVqIgcgBy0AACABIAVqLQAAczoAACAEQQRqIQQgCEEEaiIIIAZHDQALIAlFDQELA0AgA0EgaiAEaiIIIAgtAAAgASAEai0AAHM6AAAgBEEBaiEEIApBAWoiCiAJRw0ACwsgACADQSBqQsAAEDcgAEHoAGoiCSIAQgA3AyAgAEHgswIpAwA3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EAghAyAAIAAoAmwQCDYCbCAAIAM2AmggACACNgJkIAAgATYCYCAAKAJwEAghASAAKAJ0EAghAiAAKAJ4EAghAyAAIAAoAnwQCDYCfCAAIAM2AnggACACNgJ0IAAgATYCcCAAKAKAARAIIQEgACgChAEQCCECIAAoAogBEAghAyAAIAAoAowBEAg2AowBIAAgAzYCiAEgACACNgKEASAAIAE2AoABIAAoApABEAghASAAKAKUARAIIQIgACgCmAEQCCEDIAAgACgCnAEQCDYCnAEgACADNgKYASAAIAI2ApQBIAAgATYCkAEL9xICFX4DfyAAIAAoACwiFkEFdkH///8Aca0gACgAPEEDdq0iAkKDoVZ+IAAzACogADEALEIQhkKAgPwAg4R8IgtCgIBAfSIIQhWHfCIBQoOhVn4gADUAMUIHiEL///8AgyIDQtOMQ34gACgAFyIXQRh2rSAAMQAbQgiGhCAAMQAcQhCGhEICiEL///8Ag3wgACgANCIYQQR2Qf///wBxrSIEQuf2J358IBZBGHatIAAxADBCCIaEIAAxADFCEIaEQgKIQv///wCDIgVC0asIfnwgADUAOUIGiEL///8AgyIGQpPYKH58IBhBGHatIAAxADhCCIaEIAAxADlCEIaEQgGIQv///wCDIglCmNocfnwiB3wgB0KAgEB9IhFCgICAf4N9IBdBBXZB////AHGtIANC5/YnfnwgBEKY2hx+fCAFQtOMQ358IAlCk9gofnwgA0KY2hx+IAAzABUgADEAF0IQhkKAgPwAg4R8IARCk9gofnwgBULn9id+fCIHQoCAQH0iCkIViHwiDEKAgEB9Ig1CFYd8Ig8gD0KAgEB9Ig9CgICAf4N9IAwgAULRqwh+fCANQoCAgH+DfSALIAhCgICAf4N9IAJC0asIfiAAKAAkIhZBGHatIAAxAChCCIaEIAAxAClCEIaEQgOIfCAGQoOhVn58IBZBBnZB////AHGtIAJC04xDfnwgBkLRqwh+fCAJQoOhVn58IgxCgIBAfSINQhWHfCIIQoCAQH0iDkIVh3wiC0KDoVZ+fCAHIApCgICA////A4N9IANCk9gofiAAKAAPIhZBGHatIAAxABNCCIaEIAAxABRCEIaEQgOIfCAFQpjaHH58IBZBBnZB////AHGtIAVCk9gofnwiCkKAgEB9IhJCFYh8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IAAoAgQiGq0hCSAaQQVsrSEQIBlBBWytIQ4gGEEFbK0hDCAXQQVsrSEKIAA1AgAhCANAIAEoAANBAnZB////H3EgFWqtIgMgDX4gASgAAEH///8fcSARaq0iBCAPfnwgASgABkEEdkH///8fcSAUaq0iBSALfnwgASgACUEGdiATaq0iBiAJfnwgEiAWaiABKAAMQQh2aq0iByAIfnwgAyALfiAEIA1+fCAFIAl+fCAGIAh+fCAHIAp+fCADIAl+IAQgC358IAUgCH58IAYgCn58IAcgDH58IAMgCH4gBCAJfnwgBSAKfnwgBiAMfnwgByAOfnwgAyAKfiAEIAh+fCAFIAx+fCAGIA5+fCAHIBB+fCIDQhqIQv////8Pg3wiBEIaiEL/////D4N8IgVCGohC/////w+DfCIGQhqIQv////8Pg3wiB0IaiKdBBWwgA6dB////H3FqIhFBGnYgBKdB////H3FqIRUgBadB////H3EhFCAGp0H///8fcSETIAenQf///x9xIRIgEUH///8fcSERIAFBEGohASACQhB9IgJCD1YNAAsgACASNgIkIAAgEzYCICAAIBQ2AhwgACAVNgIYIAAgETYCFAvvJgEnfyMAQdAEayIdJABBfyENIABBIGohCEEgIQpBASEFA0AgCkEBayIJQfAUai0AACIHIAggCWotAAAiCXNBAWtBCHUgBXEiBiAIIApBAmsiCmotAAAiDCAKQfAUai0AACIOa0EIdXEgCSAHa0EIdSAFcSALcnIhCyAMIA5zQQFrQQh1IAZxIQUgCg0ACwJAIAtFDQAgABBYDQAgAy0AH0F/c0H/AHEgAy0AASADLQACIAMtAAMgAy0ABCADLQAFIAMtAAYgAy0AByADLQAIIAMtAAkgAy0ACiADLQALIAMtAAwgAy0ADSADLQAOIAMtAA8gAy0AECADLQARIAMtABIgAy0AEyADLQAUIAMtABUgAy0AFiADLQAXIAMtABggAy0AGSADLQAaIAMtABsgAy0AHCADLQAeIAMtAB1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcUH/AXNyQQFrQewBIAMtAABrcUF/c0EIdkEBcUUNACADEFgNACAdQYABaiIKIAMQeQ0AIB1BgANqIgsQJSAEBEAgC0HguAJCIhAQGgsgCyAAQiAQEBogCyADQiAQ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HCAAIAcgCSAKc3M2ABggACAOIAsgDHNzNgAUIAAgASAGIAhzczYAEAwBCyABRQ0AIABBACAB/AsACyAFQeABaiQAC6UGARR/IwBB4AFrIgMkACACKAIQIQUgAkFAayIEKAIAIQkgAigCUCEKIAIoAiAhCyACKAIwIQwgASgABCEGIAIoAhQhDSACKAJEIQ4gAigCVCEPIAIoAiQhECACKAI0IREgASgACCEHIAIoAhghEiACKAJIIRMgAigCWCEUIAIoAighFSACKAI4IRYgASgAACEIIAAgASgADCIBIAIoAiwgAigCPHEgAigCHCACKAJcIAIoAkxzc3NzNgAMIAAgByAVIBZxIBIgEyAUc3NzczYACCAAIAYgECARcSANIA4gD3Nzc3M2AAQgACAIIAsgDHEgBSAJIApzc3NzNgAAIAMgAikCWDcD2AEgAyACKQJQNwPQASADIAQpAgA3A7ABIAMgAikCSDcDuAEgAyACKQJQNwOgASADIAIpAlg3A6gBIANBwAFqIgAgA0GwAWogA0GgAWoQBSACIAMpAsgBNwJYIAIgAykCwAE3AlAgAyACKQIwNwOQASADIAIpAjg3A5gBIAMgBCkCADcDgAEgAyACKQJINwOIASAAIANBkAFqIANBgAFqEAUgAiADKQLIATcCSCAEIAMpAsABNwIAIAMgAikCIDcDcCADIAIpAig3A3ggAyACKQIwNwNgIAMgAikCODcDaCAAIANB8ABqIANB4ABqEAUgAiADKQLIATcCOCACIAMpAsABNwIwIAMgAikCEDcDUCADIAIpAhg3A1ggAyACKQIgNwNAIAMgAikCKDcDSCAAIANB0ABqIANBQGsQBSACIAMpAsgBNwIoIAIgAykCwAE3AiAgAyACKQIANwMwIAMgAikCCDcDOCADIAIpAhA3AyAgAyACKQIYNwMoIAAgA0EwaiADQSBqEAUgAiADKQLIATcCGCACIAMpAsABNwIQIAMgAykD0AE3AxAgAyADKQPYATcDGCADIAIpAgA3AwAgAyACKQIINwMIIAAgA0EQaiADEAUgAygCwAEhACADKALEASEEIAMoAsgBIQUgAiABIAMoAswBczYCDCACIAUgB3M2AgggAiAEIAZzNgIEIAIgACAIczYCACADQeABaiQAC6UJAQ1/IwBBoANrIgIkACAAKAAQIQYgACgAFCEHIAAoABghCCAAKAAcIQkgACgABCEEIAAoAAghBSAAKAAMIQogACgAACELIAIgASkCWDcDmAMgAiABKQJQNwOQAyACIAFBQGsiACkCADcD8AIgAiABKQJINwP4AiACIAEpAlA3A+ACIAIgASkCWDcD6AIgAkGAA2oiAyACQfACaiACQeACahAFIAEgAikCiAM3AlggASACKQKAAzcCUCACIAEpAjA3A9ACIAIgASkCODcD2AIgAiAAKQIANwPAAiACIAEpAkg3A8gCIAMgAkHQAmogAkHAAmoQBSABIAIpAogDNwJIIAAgAikCgAM3AgAgAiABKQIgNwOwAiACIAEpAig3A7gCIAIgASkCMDcDoAIgAiABKQI4NwOoAiADIAJBsAJqIAJBoAJqEAUgASACKQKIAzcCOCABIAIpAoADNwIwIAIgASkCEDcDkAIgAiABKQIYNwOYAiACIAEpAiA3A4ACIAIgASkCKDcDiAIgAyACQZACaiACQYACahAFIAEgAikCiAM3AiggASACKQKAAzcCICACIAEpAgA3A/ABIAIgASkCCDcD+AEgAiABKQIQNwPgASACIAEpAhg3A+gBIAMgAkHwAWogAkHgAWoQBSABIAIpAogDNwIYIAEgAikCgAM3AhAgAiACKQOQAzcD0AEgAiACKQOYAzcD2AEgAiABKQIANwPAASACIAEpAgg3A8gBIAMgAkHQAWogAkHAAWoQBSACKAKAAyEMIAIoAoQDIQ0gAigCiAMhDiABIAogAigCjANzNgIMIAEgBSAOczYCCCABIAQgDXM2AgQgASALIAxzNgIAIAIgASkCWDcDmAMgAiABKQJQNwOQAyACIAApAgA3A7ABIAIgASkCSDcDuAEgAiABKQJQNwOgASACIAEpAlg3A6gBIAMgAkGwAWogAkGgAWoQBSABIAIpAogDNwJYIAEgAikCgAM3AlAgAiABKQIwNwOQASACIAEpAjg3A5gBIAIgACkCADcDgAEgAiABKQJINwOIASADIAJBkAFqIAJBgAFqEAUgASACKQKIAzcCSCAAIAIpAoADNwIAIAIgASkCIDcDcCACIAEpAig3A3ggAiABKQIwNwNgIAIgASkCODcDaCADIAJB8ABqIAJB4ABqEAUgASACKQKIAzcCOCABIAIpAoADNwIwIAIgASkCEDcDUCACIAEpAhg3A1ggAiABKQIgNwNAIAIgASkCKDcDSCADIAJB0ABqIAJBQGsQBSABIAIpAogDNwIoIAEgAikCgAM3AiAgAiABKQIANwMwIAIgASkCCDcDOCACIAEpAhA3AyAgAiABKQIYNwMoIAMgAkEwaiACQSBqEAUgASACKQKIAzcCGCABIAIpAoADNwIQIAIgAikDkAM3AxAgAiACKQOYAzcDGCACIAEpAgA3AwAgAiABKQIINwMIIAMgAkEQaiACEAUgAigCgAMhACACKAKEAyEEIAIoAogDIQUgASAJIAIoAowDczYCDCABIAUgCHM2AgggASAEIAdzNgIEIAEgACAGczYCACACQaADaiQAC94UARV/IwBBoAZrIgMkACABKAAEIQggASgACCEJIAEoAAwhCiABKAAQIQsgASgAFCEMIAEoABghDSABKAAcIQ4gACgABCEPIAAoAAghECAAKAAMIREgACgAECESIAAoABQhEyAAKAAYIRQgACgAHCEVIAEoAAAhFiACQUBrIgEgACgAACIAQYCChBBzNgIAIAJClcTcyYWy+rziADcCOCACQoCChJCwoIGEDTcCMCACQqCixJG0rq2UXTcCKCACQtv74KjVzfCXcTcCICACIAAgFnMiFjYCACACIBVB8+qi6X1zNgJcIAIgFEGgosSRBHM2AlggAiATQe2Ev4l/czYCVCACIBJB2/vgqAVzNgJQIAIgEUGQ0+eTBnM2AkwgAiAQQZXE3MkFczYCSCACIA9Bg4qg6ABzNgJEIAIgDiAVcyIONgIcIAIgDSAUcyINNgIYIAIgDCATcyIMNgIUIAIgCyAScyILNgIQIAIgCiARcyIKNgIMIAIgCSAQcyIJNgIIIAIgCCAPcyIXNgIEQQAhCANAIAMgAikCWDcDmAYgAyACKQJQNwOQBiADIAEpAgA3A/AFIAMgASkCCDcD+AUgAyACKQJQNwPgBSADIAIpAlg3A+gFIANBgAZqIgQgA0HwBWogA0HgBWoQBSACIAMpAogGNwJYIAIgAykCgAY3AlAgAyACKQIwNwPQBSADIAIpAjg3A9gFIAMgASkCADcDwAUgAyABKQIINwPIBSAEIANB0AVqIANBwAVqEAUgASADKQKIBjcCCCABIAMpAoAGNwIAIAMgAikCIDcDsAUgAyACKQIoNwO4BSADIAIpAjA3A6AFIAMgAikCODcDqAUgBCADQbAFaiADQaAFahAFIAIgAykCiAY3AjggAiADKQKABjcCMCADIAIpAhA3A5AFIAMgAikCGDcDmAUgAyACKQIgNwOABSADIAIpAig3A4gFIAQgA0GQBWogA0GABWoQBSACIAMpAogGNwIoIAIgAykCgAY3AiAgAyACKQIANwPwBCADIAIpAgg3A/gEIAMgAikCEDcD4AQgAyACKQIYNwPoBCAEIANB8ARqIANB4ARqEAUgAiADKQKIBjcCGCACIAMpAoAGNwIQIAMgAykDkAY3A9AEIAMgAykDmAY3A9gEIAMgAikCADcDwAQgAyACKQIINwPIBCAEIANB0ARqIANBwARqEAUgAygCgAYhBSADKAKEBiEGIAMoAogGIQcgAiADKAKMBiARczYCDCACIAcgEHM2AgggAiAGIA9zNgIEIAIgACAFczYCACADIAIpAlg3A5gGIAMgAikCUDcDkAYgAyABKQIANwOwBCADIAEpAgg3A7gEIAMgAikCWDcDqAQgAyACKQJQNwOgBCAEIANBsARqIANBoARqEAUgAiADKQKIBjcCWCACIAMpAoAGNwJQIAMgAikCMDcDkAQgAyACKQI4NwOYBCADIAEpAgA3A4AEIAMgASkCCDcDiAQgBCADQZAEaiADQYAEahAFIAEgAykCiAY3AgggASADKQKABjcCACADIAIpAiA3A/ADIAMgAikCKDcD+AMgAyACKQIwNwPgAyADIAIpAjg3A+gDIAQgA0HwA2ogA0HgA2oQBSACIAMpAogGNwI4IAIgAykCgAY3AjAgAyACKQIQNwPQAyADIAIpAhg3A9gDIAMgAikCIDcDwAMgAyACKQIoNwPIAyAEIANB0ANqIANBwANqEAUgAiADKQKIBjcCKCACIAMpAoAGNwIgIAMgAikCADcDsAMgAyACKQIINwO4AyADIAIpAhA3A6ADIAMgAikCGDcDqAMgBCADQbADaiADQaADahAFIAIgAykCiAY3AhggAiADKQKABjcCECADIAMpA5AGNwOQAyADIAMpA5gGNwOYAyADIAIpAgA3A4ADIAMgAikCCDcDiAMgBCADQZADaiADQYADahAFIAMoAoAGIQUgAygChAYhBiADKAKIBiEHIAIgAygCjAYgFXM2AgwgAiAHIBRzNgIIIAIgBiATczYCBCACIAUgEnM2AgAgAyACKQJYNwOYBiADIAIpAlA3A5AGIAMgASkCADcD8AIgAyABKQIINwP4AiADIAIpAlg3A+gCIAMgAikCUDcD4AIgBCADQfACaiADQeACahAFIAIgAykCiAY3AlggAiADKQKABjcCUCADIAIpAjA3A9ACIAMgAikCODcD2AIgAyABKQIANwPAAiADIAEpAgg3A8gCIAQgA0HQAmogA0HAAmoQBSABIAMpAogGNwIIIAEgAykCgAY3AgAgAyACKQIgNwOwAiADIAIpAig3A7gCIAMgAikCMDcDoAIgAyACKQI4NwOoAiAEIANBsAJqIANBoAJqEAUgAiADKQKIBjcCOCACIAMpAoAGNwIwIAMgAikCEDcDkAIgAyACKQIYNwOYAiADIAIpAiA3A4ACIAMgAikCKDcDiAIgBCADQZACaiADQYACahAFIAIgAykCiAY3AiggAiADKQKABjcCICADIAIpAgA3A/ABIAMgAikCCDcD+AEgAyACKQIQNwPgASADIAIpAhg3A+gBIAQgA0HwAWogA0HgAWoQBSACIAMpAogGNwIYIAIgAykCgAY3AhAgAyADKQOQBjcD0AEgAyADKQOYBjcD2AEgAyACKQIANwPAASADIAIpAgg3A8gBIAQgA0HQAWogA0HAAWoQBSADKAKABiEFIAMoAoQGIQYgAygCiAYhByACIAMoAowGIApzNgIMIAIgByAJczYCCCACIAYgF3M2AgQgAiAFIBZzNgIAIAMgAikCWDcDmAYgAyACKQJQNwOQBiADIAEpAgA3A7ABIAMgASkCCDcDuAEgAyACKQJYNwOoASADIAIpAlA3A6ABIAQgA0GwAWogA0GgAWoQBSACIAMpAogGNwJYIAIgAykCgAY3AlAgAyACKQIwNwOQASADIAIpAjg3A5gBIAMgASkCADcDgAEgAyABKQIINwOIASAEIANBkAFqIANBgAFqEAUgASADKQKIBjcCCCABIAMpAoAGNwIAIAMgAikCIDcDcCADIAIpAig3A3ggAyACKQIwNwNgIAMgAikCODcDaCAEIANB8ABqIANB4ABqEAUgAiADKQKIBjcCOCACIAMpAoAGNwIwIAMgAikCEDcDUCADIAIpAhg3A1ggAyACKQIgNwNAIAMgAikCKDcDSCAEIANB0ABqIANBQGsQBSACIAMpAogGNwIoIAIgAykCgAY3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BSACIAMpAogCNwJYIAIgAykCgAI3AlAgAyACKQIwNwOQASADIAIpAjg3A5gBIAMgACkCADcDgAEgAyACKQJINwOIASAEIANBkAFqIANBgAFqEAUgAiADKQKIAjcCSCAAIAMpAoACNwIAIAMgAikCIDcDcCADIAIpAig3A3ggAyACKQIwNwNgIAMgAikCODcDaCAEIANB8ABqIANB4ABqEAUgAiADKQKIAjcCOCACIAMpAoACNwIwIAMgAikCEDcDUCADIAIpAhg3A1ggAyACKQIgNwNAIAMgAikCKDcDSCAEIANB0ABqIANBQGsQBSACIAMpAogCNwIoIAIgAykCgAI3AiAgAyACKQIANwMwIAMgAikCCDcDOCADIAIpAhA3AyAgAyACKQIYNwMoIAQgA0EwaiADQSBqEAUgAiADKQKIAjcCGCACIAMpAoACNwIQIAMgAykDkAI3AxAgAyADKQOYAjcDGCADIAIpAgA3AwAgAyACKQIINwMIIAQgA0EQaiADEAUgAiADKQKIAjcCCCACIAMpAoACNwIAIAIgByACKAIMczYCDCACIAYgAigCCHM2AgggAiAFIAIoAgRzNgIEIAIgECACKAIAczYCACAAIAggACgCAHM2AgAgAiALIAIoAkRzNgJEIAIgDiACKAJIczYCSCACIAEgAigCTHM2AkwgA0GgAmokAAuZDQESfyMAQaAEayICJAAgACgAPCEEIAAoADghBSAAKAA0IQYgACgAMCEHIAAoACAhCCAAKAAkIQkgACgAKCEKIAAoACwhCyAAKAAcIQwgACgAGCENIAAoABQhDiAAKAAQIQ8gACgABCEQIAAoAAghESAAKAAMIRIgACgAACETIAIgASkCeDcDmAQgAiABKQJwNwOQBCACIAEpAmA3A/ADIAIgASkCaDcD+AMgAiABKQJwNwPgAyACIAEpAng3A+gDIAJBgARqIgMgAkHwA2ogAkHgA2oQBSABIAIpAogENwJ4IAEgAikCgAQ3AnAgAiABKQJQNwPQAyACIAEpAlg3A9gDIAIgASkCYDcDwAMgAiABKQJoNwPIAyADIAJB0ANqIAJBwANqEAUgASACKQKIBDcCaCABIAIpAoAENwJgIAIgAUFAayIAKQIANwOwAyACIAEpAkg3A7gDIAIgASkCUDcDoAMgAiABKQJYNwOoAyADIAJBsANqIAJBoANqEAUgASACKQKIBDcCWCABIAIpAoAENwJQIAIgASkCMDcDkAMgAiABKQI4NwOYAyACIAApAgA3A4ADIAIgASkCSDcDiAMgAyACQZADaiACQYADahAFIAEgAikCiAQ3AkggACACKQKABDcCACACIAEpAiA3A/ACIAIgASkCKDcD+AIgAiABKQIwNwPgAiACIAEpAjg3A+gCIAMgAkHwAmogAkHgAmoQBSABIAIpAogENwI4IAEgAikCgAQ3AjAgAiABKQIQNwPQAiACIAEpAhg3A9gCIAIgASkCIDcDwAIgAiABKQIoNwPIAiADIAJB0AJqIAJBwAJqEAUgASACKQKIBDcCKCABIAIpAoAENwIgIAIgASkCADcDsAIgAiABKQIINwO4AiACIAEpAhA3A6ACIAIgASkCGDcDqAIgAyACQbACaiACQaACahAFIAEgAikCiAQ3AhggASACKQKABDcCECACIAIpA5AENwOQAiACIAIpA5gENwOYAiACIAEpAgA3A4ACIAIgASkCCDcDiAIgAyACQZACaiACQYACahAFIAEgAikCiAQ3AgggASACKQKABDcCACABIBIgASgCDHM2AgwgASARIAEoAghzNgIIIAEgECABKAIEczYCBCABIBMgASgCAHM2AgAgACAPIAAoAgBzNgIAIAEgDiABKAJEczYCRCABIA0gASgCSHM2AkggASAMIAEoAkxzNgJMIAIgASkCeDcDmAQgAiABKQJwNwOQBCACIAEpAmA3A/ABIAIgASkCaDcD+AEgAiABKQJwNwPgASACIAEpAng3A+gBIAMgAkHwAWogAkHgAWoQBSABIAIpAogENwJ4IAEgAikCgAQ3AnAgAiABKQJQNwPQASACIAEpAlg3A9gBIAIgASkCYDcDwAEgAiABKQJoNwPIASADIAJB0AFqIAJBwAFqEAUgASACKQKIBDcCaCABIAIpAoAENwJgIAIgACkCADcDsAEgAiABKQJINwO4ASACIAEpAlA3A6ABIAIgASkCWDcDqAEgAyACQbABaiACQaABahAFIAEgAikCiAQ3AlggASACKQKABDcCUCACIAEpAjA3A5ABIAIgASkCODcDmAEgAiAAKQIANwOAASACIAEpAkg3A4gBIAMgAkGQAWogAkGAAWoQBSABIAIpAogENwJIIAAgAikCgAQ3AgAgAiABKQIgNwNwIAIgASkCKDcDeCACIAEpAjA3A2AgAiABKQI4NwNoIAMgAkHwAGogAkHgAGoQBSABIAIpAogENwI4IAEgAikCgAQ3AjAgAiABKQIQNwNQIAIgASkCGDcDWCACIAEpAiA3A0AgAiABKQIoNwNIIAMgAkHQAGogAkFAaxAFIAEgAikCiAQ3AiggASACKQKABDcCICACIAEpAgA3AzAgAiABKQIINwM4IAIgASkCEDcDICACIAEpAhg3AyggAyACQTBqIAJBIGoQBSABIAIpAogENwIYIAEgAikCgAQ3AhAgAiACKQOQBDcDECACIAIpA5gENwMYIAIgASkCADcDACACIAEpAgg3AwggAyACQRBqIAIQBSABIAIpAogENwIIIAEgAikCgAQ3AgAgASALIAEoAgxzNgIMIAEgCiABKAIIczYCCCABIAkgASgCBHM2AgQgASAIIAEoAgBzNgIAIAAgByAAKAIAczYCACABIAYgASgCRHM2AkQgASAFIAEoAkhzNgJIIAEgBCABKAJMczYCTCACQaAEaiQAC5wJAQt/IwBBoAJrIgMkACABKAAEIQogASgACCELIAEoAAwhDCAAKAAEIQYgACgACCEHIAAoAAwhCCABKAAAIQ0gAiAAKAAAIgFBgIKEEHMiADYCcCACIAFB2/vgqAVzNgJgIAIgADYCUCACQUBrIgAgASANcyIFNgIAIAJCoKLEkbSurZRdNwI4IAJC2/vgqNXN8JdxNwIwIAJClcTcyYWy+rziADcCKCACQoCChJCwoIGEDTcCICACQqCixJG0rq2UXTcCGCACQtv74KjVzfCXcTcCECACIAU2AgAgAiAIQZDT55MGcyIFNgJ8IAIgB0GVxNzJBXMiBDYCeCACIAZBg4qg6ABzIgk2AnQgAiAIQfPqoul9czYCbCACIAdBoKLEkQRzNgJoIAIgBkHthL+Jf3M2AmQgAiAFNgJcIAIgBDYCWCACIAk2AlQgAiAIIAxzIgU2AkwgAiAHIAtzIgQ2AkggAiAGIApzIgk2AkQgAiAFNgIMIAIgBDYCCCACIAk2AgRBACEFA0AgAyACKQJ4NwOYAiADIAIpAnA3A5ACIAMgAikCYDcD8AEgAyACKQJoNwP4ASADIAIpAnA3A+ABIAMgAikCeDcD6AEgA0GAAmoiBCADQfABaiADQeABahAFIAIgAykCiAI3AnggAiADKQKAAjcCcCADIAIpAlA3A9ABIAMgAikCWDcD2AEgAyACKQJgNwPAASADIAIpAmg3A8gBIAQgA0HQAWogA0HAAWoQBSACIAMpAogCNwJoIAIgAykCgAI3AmAgAyAAKQIANwOwASADIAApAgg3A7gBIAMgAikCUDcDoAEgAyACKQJYNwOoASAEIANBsAFqIANBoAFqEAUgAiADKQKIAjcCWCACIAMpAoACNwJQIAMgAikCMDcDkAEgAyACKQI4NwOYASADIAApAgA3A4ABIAMgACkCCDcDiAEgBCADQZABaiADQYABahAFIAAgAykCiAI3AgggACADKQKAAjcCACADIAIpAiA3A3AgAyACKQIoNwN4IAMgAikCMDcDYCADIAIpAjg3A2ggBCADQfAAaiADQeAAahAFIAIgAykCiAI3AjggAiADKQKAAjcCMCADIAIpAhA3A1AgAyACKQIYNwNYIAMgAikCIDcDQCADIAIpAig3A0ggBCADQdAAaiADQUBrEAUgAiADKQKIAjcCKCACIAMpAoACNwIgIAMgAikCADcDMCADIAIpAgg3AzggAyACKQIQNwMgIAMgAikCGDcDKCAEIANBMGogA0EgahAFIAIgAykCiAI3AhggAiADKQKAAjcCECADIAMpA5ACNwMQIAMgAykDmAI3AxggAyACKQIANwMAIAMgAikCCDcDCCAEIANBEGogAxAFIAIgAykCiAI3AgggAiADKQKAAjcCACACIAIoAgwgDHM2AgwgAiACKAIIIAtzNgIIIAIgAigCBCAKczYCBCACIAIoAgAgDXM2AgAgACAAKAIAIAFzNgIAIAIgAigCRCAGczYCRCACIAIoAkggB3M2AkggAiACKAJMIAhzNgJMIAVBAWoiBUEKRw0ACyADQaACaiQAC7UFAQl/IwBBgAFrIgMkAEHixAItAAAhBCAAQgA3AgQgAEEBNgIAIABCADcCDCAAQgA3AhQgAEIANwIcIABCgICAgBA3AiQgAEEsakEAQcwA/AsAIAAgAUHAB2xBkBVqIgFB4sQCLQAAQQJ2IAIgAkEAIARBAnYgAkGAAXFBB3ZzIgRrcUEBdGsiAkEBc0H/AXFBAWtBH3ZzEB0gACABQfgAakHixAItAABBAnYgAkECc0H/AXFBAWtBH3ZzEB0gACABQfABakHixAItAABBAnYgAkEDc0H/AXFBAWtBH3ZzEB0gACABQegCakHixAItAABBAnYgAkEEc0H/AXFBAWtBH3ZzEB0gACABQeADakHixAItAABBAnYgAkEFc0H/AXFBAWtBH3ZzEB0gACABQdgEakHixAItAABBAnYgAkEGc0H/AXFBAWtBH3ZzEB0gACABQdAFakHixAItAABBAnYgAkEHc0H/AXFBAWtBH3ZzEB0gACABQcgGakHixAItAABBAnYgAkEIc0H/AXFBAWtBH3ZzEB0gAyAAKQJINwMoIAMgAEFAaykCADcDICADIAApAjg3AxggAyAAKQIwNwMQIAMgACkCKDcDCCADIAApAgA3AzAgAyAAKQIINwM4IAMgACkCEDcDQCADIAApAhg3A0ggAyAAKQIgNwNQIAAoAlAhASAAKAJUIQIgACgCWCEFIAAoAlwhBiAAKAJgIQcgACgCZCEIIAAoAmghCSAAKAJsIQogACgCcCELIANBACAAKAJ0azYCfCADQQAgC2s2AnggA0EAIAprNgJ0IANBACAJazYCcCADQQAgCGs2AmwgA0EAIAdrNgJoIANBACAGazYCZCADQQAgBWs2AmAgA0EAIAJrNgJcIANBACABazYCWCAAIANBCGogBBAdIANBgAFqJAAL8AkBHn8gASgCKCEDIAEoAgQhBCABKAIsIQUgASgCCCEGIAEoAjAhByABKAIMIQggASgCNCEJIAEoAhAhCiABKAI4IQsgASgCFCEMIAEoAjwhDSABKAIYIQ4gAUFAayIPKAIAIRAgASgCHCERIAEoAkQhEiABKAIgIRMgASgCSCEUIAEoAgAhFSAAIAEoAiQgASgCTGo2AiQgACATIBRqNgIgIAAgESASajYCHCAAIA4gEGo2AhggACAMIA1qNgIUIAAgCiALajYCECAAIAggCWo2AgwgACAGIAdqNgIIIAAgBCAFajYCBCAAIAMgFWo2AgAgASgCKCEFIAEoAgQhAyABKAIsIQYgASgCCCEHIAEoAjAhCCABKAIMIQkgASgCNCEKIAEoAhAhCyABKAI4IQwgASgCFCENIAEoAjwhDiABKAIYIRAgDygCACEPIAEoAhwhBCABKAJEIREgASgCICESIAEoAkghEyABKAIAIRQgACABKAJMIAEoAiRrNgJMIAAgEyASazYCSCAAIBEgBGs2AkQgAEFAayIEIA8gEGs2AgAgACAOIA1rNgI8IAAgDCALazYCOCAAIAogCWs2AjQgACAIIAdrNgIwIAAgBiADazYCLCAAQShqIgMgBSAUazYCACAAQdAAaiAAIAJBKGoQBiADIAMgAhAGIABB+ABqIAJB+ABqIAFB+ABqEAYgACABQdAAaiACQdAAahAGIAAoAgQhFSAAKAIIIRYgACgCDCEXIAAoAhAhGCAAKAIUIRkgACgCGCEaIAAoAhwhGyAAKAIgIRwgACgCJCEdIAMoAgAhASAAKAJQIQIgACgCLCEFIAAoAlQhBiAAKAIwIQcgACgCWCEIIAAoAjQhCSAAKAJcIQogACgCOCELIAAoAmAhDCAAKAI8IQ0gACgCZCEOIAQoAgAhDyAAKAJoIRAgACgCRCERIAAoAmwhEiAAKAJIIRMgACgCcCEUIAAoAgAhHiAAIAAoAkwiHyAAKAJ0IiBqNgJMIAAgEyAUajYCSCAAIBEgEmo2AkQgBCAPIBBqNgIAIAAgDSAOajYCPCAAIAsgDGo2AjggACAJIApqNgI0IAAgByAIajYCMCAAIAUgBmo2AiwgAyABIAJqNgIAIAAgICAfazYCJCAAIBQgE2s2AiAgACASIBFrNgIcIAAgECAPazYCGCAAIA4gDWs2AhQgACAMIAtrNgIQIAAgCiAJazYCDCAAIAggB2s2AgggACAGIAVrNgIEIAAgAiABazYCACAAIAAoApwBIgEgHUEBdCICajYCnAEgACAAKAKYASIDIBxBAXQiBGo2ApgBIAAgACgClAEiBSAbQQF0IgZqNgKUASAAIAAoApABIgcgGkEBdCIIajYCkAEgACAAKAKMASIJIBlBAXQiCmo2AowBIAAgACgCiAEiCyAYQQF0IgxqNgKIASAAIAAoAoQBIg0gF0EBdCIOajYChAEgACAAKAKAASIPIBZBAXQiEGo2AoABIAAgACgCfCIRIBVBAXQiEmo2AnwgACAAKAJ4IhMgHkEBdCIUajYCeCAAIAQgA2s2AnAgACAGIAVrNgJsIAAgCCAHazYCaCAAIAogCWs2AmQgACAMIAtrNgJgIAAgDiANazYCXCAAIBAgD2s2AlggACASIBFrNgJUIAAgFCATazYCUCAAIAIgAWs2AnQLEgAgACABIAKtIAOtQiCGhBAYC64OARd/IwBBwAJrIgMkACAAQShqIgkgARCAASAAQgA3AlQgAEEBNgJQIABCADcCXCAAQgA3AmQgAEIANwJsIABBADYCdCADQfABaiIIIAkQBCADQcABaiIGIAhBwAoQBkF/IQogAyADKALwAUEBayILNgLwASADIAMoAsABQQFqNgLAASADKAL0ASEMIAMoAvgBIQ0gAygC/AEhDiADKAKAAiEPIAMoAoQCIRAgAygCiAIhESADKAKMAiESIAMoApACIRMgAygClAIhFCADQZABaiIHIAYQBCAHIAcgBhAGIAAgBxAEIAAgACAGEAYgACAAIAgQBiMAQZABayIEJAAgBEHgAGoiBSAAEAQgBEEwaiICIAUQBCACIAIQBCACIAAgAhAGIAUgBSACEAYgBSAFEAQgBSACIAUQBiACIAUQBCACIAIQBCACIAIQBCACIAIQBCACIAIQBCAFIAIgBRAGIAIgBRAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAiAFEAYgBCACEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgAiAEIAIQBiACIAIQBCACIAIQBCACIAIQBCACIAIQBCACIAIQBCACIAIQBCACIAIQBCACIAIQBCACIAIQBCACIAIQBCAFIAIgBRAGIAIgBRAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAiAFEAYgBCACEARBASECA0AgBCAEEAQgAkEBaiICQeQARw0ACyAEQTBqIgIgBCACEAYgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgBEHgAGoiBSACIAUQBiAFIAUQBCAFIAUQBCAAIAUgABAGIARBkAFqJAAgACAAIAcQBiAAIAAgCBAGIANB4ABqIgIgABAEIAIgAiAGEAYgAyADKAKEASICIBRrNgJUIAMgAygCgAEiBCATazYCUCADIAMoAnwiBSASazYCTCADIAMoAngiBiARazYCSCADIAMoAnQiByAQazYCRCADIAMoAnAiCCAPazYCQCADIAMoAmwiFSAOazYCPCADIAMoAmgiFiANazYCOCADIAMoAmQiFyAMazYCNCADIAMoAmAiGCALazYCMCADIANBMGoQGgJAIANBIBAoRQRAIAMgAiAUajYCJCADIAQgE2o2AiAgAyAFIBJqNgIcIAMgBiARajYCGCADIAcgEGo2AhQgAyAIIA9qNgIQIAMgDiAVajYCDCADIA0gFmo2AgggAyAMIBdqNgIEIAMgCyAYajYCACADQaACaiICIAMQGiACQSAQKEUNASAAIABB8AoQBgsgA0GgAmogABAaIAMtAKACQQFxIAEtAB9BB3ZGBEAgAEEAIAAoAgBrNgIAIABBACAAKAIkazYCJCAAQQAgACgCIGs2AiAgAEEAIAAoAhxrNgIcIABBACAAKAIYazYCGCAAQQAgACgCFGs2AhQgAEEAIAAoAhBrNgIQIABBACAAKAIMazYCDCAAQQAgACgCCGs2AgggAEEAIAAoAgRrNgIECyAAQfgAaiAAIAkQ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ACADIAApAgA3A9ABIAMgACkCCDcD2AEgAyACQUBrKQIANwPAASADIAIpAkg3A8gBIAEgA0HQAWogA0HAAWoQBSAAIAMpAsgCNwIIIAAgAykCwAI3AgAgAyAAKQIANwOwASADIAApAgg3A7gBIAMgAikCUDcDoAEgAyACKQJYNwOoASABIANBsAFqIANBoAFqEAUgACADKQLIAjcCCCAAIAMpAsACNwIAIAMgACkCADcDkAEgAyAAKQIINwOYASADIAIpAmA3A4ABIAMgAikCaDcDiAEgASADQZABaiADQYABahAFIAAgAykCyAI3AgggACADKQLAAjcCACADIAApAgA3A3AgAyAAKQIINwN4IAMgAikCcDcDYCADIAIpAng3A2ggASADQfAAaiADQeAAahAFIAAgAykCyAI3AgggACADKQLAAjcCACADIAApAgA3A1AgAyAAKQIINwNYIAMgAikCgAE3A0AgAyACKQKIATcDSCABIANB0ABqIANBQGsQBSAAIAMpAsgCNwIIIAAgAykCwAI3AgAgAyAAKQIANwMwIAMgACkCCDcDOCADIAIpApABNwMgIAMgAikCmAE3AyggASADQTBqIANBIGoQBSAAIAMpAsgCNwIIIAAgAykCwAI3AgAgAyAAKQIANwMQIAMgACkCCDcDGCADIAIpAqABNwMAIAMgAikCqAE3AwggASADQRBqIAMQISAAIAMpAsgCNwIIIAAgAykCwAI3AgAgA0HQAmokAAuwAwEFfyMAQaAfayIDJAAgA0GgHWoiBEHgACACQiAQSRogAyADKQPYHTcDmB0gAyADKQPQHTcDkB0gAyADKQPIHTcDiB0gAyADKQPAHTcDgB0gAyADKQO4HTcD+BwgAyADKQOwHTcD8BwgAyADKQOoHTcD6BwgAyADKQOgHTcD4BwgAyADKQPgHTcDICADIAMpA+gdNwMoIAMgAykD8B03AzAgAyADKQP4HTcDOCADQcATaiADQeAAaiIGIANB4BxqIgUQNRogA0FAayADQSBqIgdBzLkCKAIAEQEAGiAEQeAAEAcgBUHAABAHQX8hAiAFIAEgBhCRAUUEQCADIAcgAUHACGoiBBApBH8gBQUgA0GgHWoiAUEAQcgB/AsAIAFBADoA7AEgAUEgNgLoASABQoCAgICAETcD4AEgASADQeAcaiICQiAQGBog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CiALKQI4NwOYASAKIBApAgA3A4ABIAogCykCSDcDiAEgASAKQZABaiAKQYABahAFIAsgCikC2AE3AkggECAKKQLQATcCACAKIAspAiA3A3AgCiALKQIoNwN4IAogCykCMDcDYCAKIAspAjg3A2ggASAKQfAAaiAKQeAAahAFIAsgCikC2AE3AjggCyAKKQLQATcCMCAKIAspAhA3A1AgCiALKQIYNwNYIAogCykCIDcDQCAKIAspAig3A0ggASAKQdAAaiAKQUBrEAUgCyAKKQLYATcCKCALIAopAtABNwIgIAogCykCADcDMCAKIAspAgg3AzggCiALKQIQNwMgIAogCykCGDcDKCABIApBMGogCkEgahAFIAsgCikC2AE3AhggCyAKKQLQATcCECAKIAopA+ABNwMQIAogCikD6AE3AxggCiALKQIANwMAIAogCykCCDcDCCABIApBEGogChAFIAooAtABIQcgCigC1AEhBSAKKALYASEBIAsgCCAKKALcAXM2AgwgCyABIAxzNgIIIAsgBSANczYCBCALIAcgD3M2AgAgCkHwAWokAAsgCUGAA2ogBCAGrSACrSAJQbADahBrQX8hBwJAAkACQAJ/AkACQCAEQRBrDhEAAwMDAwMDAwMDAwMDAwMDAQMLIAlBgANqIAMQKwwBCyAJQYADaiADEEwLIgdFDQELIABFDQEgAkUNASAAQQAgAvwLAAwBC0EAIQcLIAlBoARqJAAgBwvaAQEDfyMAQRBrIgUkAAJAAkAgA0UEQEF/IQEMAQsCfyADIANBAWsiBnFFBEAgBiACQX9zIgdxDAELIAJBf3MhByAGIAIgA3BrCyIGIAdPDQEgBCACIAZqIgJNBEBBfyEBDAELIAAEQCAAIAJBAWo2AgALIAEgAmohAEEAIQEgBUEAOgAPQQAhAgNAIAAgAmsiBCAELQAAIAUtAA9xIAIgBnNBAWtBGHYiBEGAAXFyOgAAIAUgBS0ADyAEcjoADyACQQFqIgIgA0cNAAsLIAVBEGokACABDwsQCgALogwCBX8CfiMAQZAEayIJJAAgCCAHIAlBkANqEG5BACEIIAZBH0sEQEEgIQcDQCAFIAhqIAlBkANqEG0gByIIQSBqIgcgBk0NAAsLIAYgCEEQciIHTwRAA0AgBSAIaiIIKAAAIQsgCCgABCEMIAgoAAghDSAI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AGogBBBAIAGnIgZBA3EhB0EAIQMgAUIEWgRAIAZBPHEhCEEAIQYDQCAAIANqIARBIGoiCSIFIANqLQAAOgAAIAAgA0EBciIKaiAFIApqLQAAOgAAIAAgA0ECciIFaiAFIAlqLQAAOgAAIAAgA0EDciIFaiAEQSBqIAVqLQAAOgAAIANBBGohAyAGQQRqIgYgCEcNAAsgB0UNAQsDQCAAIANqIARBIGogA2otAAA6AAAgA0EBaiEDIAJBAWoiAiAHRw0ACwsgBEEgakHAABAHIARBIBAHCyAEQfAAaiQAQQALhgYBFH8jAEGwAmsiAiQAIAAgAS0AADoAACAAIAEtAAE6AAEgACABLQACOgACIAAgAS0AAzoAAyAAIAEtAAQ6AAQgACABLQAFOgAFIAAgAS0ABjoABiAAIAEtAAc6AAcgACABLQAIOgAIIAAgAS0ACToACSAAIAEtAAo6AAogACABLQALOgALIAAgAS0ADDoADCAAIAEtAA06AA0gACABLQAOOgAOIAAgAS0ADzoADyAAIAEtABA6ABAgACABLQAROgARIAAgAS0AEjoAEiAAIAEtABM6ABMgACABLQAUOgAUIAAgAS0AFToAFSAAIAEtABY6ABYgACABLQAXOgAXIAAgAS0AGDoAGCAAIAEtABk6ABkgACABLQAaOgAaIAAgAS0AGzoAGyAAIAEtABw6ABwgACABLQAdOgAdIAAgAS0AHjoAHiABLQAfIQEgACAALQAAQfgBcToAACAAIAFBP3FBwAByOgAfIAJBMGogABBCIAIoAoABIQEgAigCWCEDIAIoAoQBIQQgAigCXCEFIAIoAogBIQYgAigCYCEHIAIoAowBIQggAigCZCEJIAIoApABIQogAigCaCELIAIoApQBIQwgAigCbCENIAIoApgBIQ4gAigCcCEPIAIoApwBIRAgAigCdCERIAIoAqABIRIgAigCeCETIAIgAigCfCIUIAIoAqQBIhVqNgKkAiACIBIgE2o2AqACIAIgECARajYCnAIgAiAOIA9qNgKYAiACIAwgDWo2ApQCIAIgCiALajYCkAIgAiAIIAlqNgKMAiACIAYgB2o2AogCIAIgBCAFajYChAIgAiABIANqNgKAAiACIBUgFGs2AvQBIAIgEiATazYC8AEgAiAQIBFrNgLsASACIA4gD2s2AugBIAIgDCAN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AsQBIAMgBCAMajYCwAEgAyAHIA9qNgLMASADQeAAaiIaIANBMGoiDCADQfABaiIFEAYgA0HAAWoiBCAEIAMQBiAMIAMQBCADIAUQBCADKALAASECIAMoAmAhBiADKALEASEKIAMoAmQhByADKALIASEIIAMoAmghCSADKALMASELIAMoAmwhDSADKALQASEXIAMoAnAhDiADKALUASEPIAMoAnQhECADKALYASEUIAMoAnghESADKALcASESIAMoAnwhEyADKALgASEVIAMoAoABIRggAyADKALkASIZIAMoAoQBIhtqNgK0ASADIBUgGGo2ArABIAMgEiATajYCrAEgAyARIBRqNgKoASADIA8gEGo2AqQBIAMgDiAXajYCoAEgAyALIA1qNgKcASADIAggCWo2ApgBIAMgByAKajYClAEgAyACIAZqNgKQASADIBsgGWs2AuQBIAMgGCAVazYC4AEgAyATIBJrNgLcASADIBEgFGs2AtgBIAMgECAPazYC1AEgAyAOIBdrNgLQASADIA0gC2s2AswBIAMgCSAIazYCyAEgAyAHIAprNgLEASADIAYgAms2AsABIAUgAyAMEAYgAygCSCECIAMoAhghDiADKAJEIQYgAygCFCEPIAMoAkAhCiADKAIQIRAgAygCPCEHIAMoAgwhFCADKAI4IQggAygCCCERIAMoAjQhCSADKAIEIRIgAygCVCELIAMoAiQhEyADKAIwIQ0gAygCACEVIAMoAkwhFyADKAIcIRggAyADKAIgIAMoAlAiGWsiGzYCICADIBggF2siGDYCHCADIBUgDWsiFTYCACADIBMgC2siEzYCJCADIBIgCWsiEjYCBCADIBEgCGsiETYCCCADIBQgB2siFDYCDCADIBAgCmsiEDYCECADIA8gBmsiDzYCFCADIA4gAmsiDjYCGCAEIAQQBCADQZABaiIcIBwQBCADIBkgG6xCwrYHfiAYrELCtgd+IkBCgICACHwiQkIZh3wiQSBBQoCAgBB8IkFCgICA4A+DfadqNgJQIAMgAiAOrELCtgd+IA+sQsK2B34iRkKAgIAIfCJHQhmHfCJDIENCgICAEHwiQ0KAgIDgD4N9p2o2AkggAyAKIBCsQsK2B34gFKxCwrYHfiJIQoCAgAh8IklCGYd8IkQgREKAgIAQfCJEQoCAgOAPg32najYCQCADIAggEaxCwrYHfiASrELCtgd+IkpCgICACHwiS0IZh3wiRSBFQoCAgBB8IkVCgICA4A+DfadqNgI4IAMgCyATrELCtgd+IkwgQUIaiHwgTEKAgIAIfCJBQoCAgPAPg32najYCVCADIBcgQ0IaiCBAfCBCQoCAgPAPg32najYCTCADIAYgREIaiCBGfCBHQoCAgPAPg32najYCRCADIAcgRUIaiCBIfCBJQoCAgPAPg32najYCPCADIAkgSiBLQoCAgPAPg30gQUIZh0ITfiAVrELCtgd+fCJAQoCAgBB8IkJCGoh8p2o2AjQgAyANIEAgQkKAgIDgD4N9p2o2AjAgAUEBayECIBogA0GgAmogBBAGIAQgAyAMEAYgAQ0ACyADKAKQASEXIAMoAvABIQIgAygClAEhDiADKAL0ASEMIAMoApgBIQ8gAygC+AEhBiADKAKcASEQIAMoAvwBIQogAygCoAEhFCADKAKAAiEHIAMoAqQBIREgAygChAIhCCADKAKoASESIAMoAogCIQkgAygCrAEhEyADKAKMAiELIAMoArABIRUgAygCkAIhDSADQQAgFmsiASADKAKUAiIWIAMoArQBc3EgFnM2ApQCIAMgDSANIBVzIAFxczYCkAIgAyALIAsgE3MgAXFzNgKMAiADIAkgCSAScyABcXM2AogCIAMgCCAIIBFzIAFxczYChAIgAyAHIAcgFHMgAXFzNgKAAiADIAogCiAQcyABcXM2AvwBIAMgBiAGIA9zIAFxczYC+AEgAyAMIAwgDnMgAXFzNgL0ASADIAIgAiAXcyABcXM2AvABIAMoAsABIQIgAygCYCENIAMoAsQBIRYgAygCZCEXIAMoAsgBIQwgAygCaCEOIAMoAswBIQYgAygCbCEPIAMoAtABIQogAygCcCEQIAMoAtQBIQcgAygCdCEUIAMoAtgBIQggAygCeCERIAMoAtwBIQkgAygCfCESIAMoAuABIQsgAygCgAEhEyADIAMoAuQBIhUgAygChAFzIAFxIBVzNgLkASADIAsgCyATcyABcXM2AuABIAMgCSAJIBJzIAFxczYC3AEgAyAIIAggEXMgAXFzNgLYASADIAcgByAUcyABcXM2AtQBIAMgCiAKIBBzIAFxczYC0AEgAyAGIAYgD3MgAXFzNgLMASADIAwgDCAOcyABcXM2AsgB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JyAFLQADczoAJyAAIAAtACggBS0ABHM6ACggACAALQApIAUtAAVzOgApIAAgAC0AKiAFLQAGczoAKiAAIAAtACsgBS0AB3M6ACsgCRBxAkAgB0ECcUUEQCAJQQQQKEUNAQsgBSAAKQAYNwP4AiAFIAApABA3A/ACIAUgACkACDcD6AIgBSAAKQAANwPgAiAFIAApACQ3A4ADIAVB4AJqIgEgAUIoIAlBACAAQfS5AigCABEOABogACAFKQP4AjcAGCAAIAUpA/ACNwAQIAAgBSkD6AI3AAggACAFKQPgAjcAACAFKQOAAyEKIABBATYAICAAIAo3ACQLIAIEQCACIAs3AwALQQAhDSADRQ0AIAMgBzoAAAsgBUGQA2okACANDAELEAoACwvhBQECfgJ/IAStIAWtQiCGhCEKIAetIAitQiCGhCELIwBBgANrIgQkACACBEAgAkIANwMACyAKQu////8PVARAIARBEGoiCELAACAAQSBqIgcgABAmIARB0ABqIgUgCEG8uQIoAgARAQAaIAhBwAAQByAFIAYgC0HAuQIoAgARAAAaIAVB0LMCQgAgC31CD4NBwLkCKAIAEQAAGiAEQgA3AxAgBEIANwNIIARCADcDQCAEQgA3AzggBEIANwMwIARCADcDKCAEQgA3AyAgBEIANwMYIAQgCToAECAIIAhCwAAgB0EBIAAQJyAFIAhCwABBwLkCKAIAEQAAGiABIAQtABA6AAAgAUEBaiIBIAMgCiAHQQIgABAnIAUgASAKQcC5AigCABEAABogBUHQswIgCkIPg0HAuQIoAgARAAAaIAQgCzcDCCAFIARBCGoiA0IIQcC5AigCABEAABogBCAKQkB9NwMIIAUgA0IIQcC5AigCABEAABogBSABIAqnaiIBQcS5AigCABEBABogBUGAAhAHIAAgAC0AJCABLQAAczoAJCAAIAAtACUgAS0AAXM6ACUgACAALQAmIAEtAAJzOgAmIAAgAC0AJyABLQADczoAJyAAIAAtACggAS0ABHM6ACggACAALQApIAEtAAVzOgApIAAgAC0AKiABLQAGczoAKiAAIAAtACsgAS0AB3M6ACsgBxBxAkAgCUECcUUEQCAHQQQQKEUNAQsgBCAAKQAYNwPoAiAEIAApABA3A+ACIAQgACkACDcD2AIgBCAAKQAANwPQAiAEIAAp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C6dqQRBrIAYgDCAJIAoQgwEhAgsgAQRAIAFCACALQhB9IAIbNwMACyACCyUAIAAgAiADrSAErUIghoQgBSAGIAetIAitQiCGhCAJIAoQgwELWQECfgJ/IAatIAetQiCGhCEMIAOtIAStQiCGhCILQvD///8PVARAIAAgACALp2pBACACIAsgBSAMIAkgChCEARogAQRAIAEgC0IQfDcDAAtBAAwBCxAKAAsLJwAgACABIAIgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCiALEIQBC1kBAn4CfyAGrSAHrUIghoQhDCADrSAErUIghoQiC0Lw////D1QEQCAAIAAgC6dqQQAgAiALIAUgDCAJIAoQhQEaIAEEQCABIAtCEHw3AwALQQAMAQsQCgALCycAIAAgASACIAMgBK0gBa1CIIaEIAYgB60gCK1CIIaEIAogCxCFAQtZAQJ+IAetIAitQiCGhCELQX8hAQJAIAOtIAStQiCGhCIMQt////8PVg0AIAtC3////w9WDQAgACACIAynIAVBICAGIAunIAkgCkHkuQIoAgARCgAhAQsgAQuAAQEDfiAHrSAIrUIghoQhDEF/IQICQCAErSAFrUIghoQiC0IgVA0AIAtCIH0iDULf////D1YNACAMQt////8PVg0AIAAgAyANpyADIAunakEga0EgIAYgDKcgCSAKQeS5AigCABEKACECCyABBEAgAUIAIAtCIH0gAhs3AwALIAILYAECfiAErSAFrUIghoQhDCAHrSAIrUIghoQhDSACBEAgAkIgNwMACyANQuD///8PVCAMQt////8PWHFFBEAQCgALIAAgAUEgIAMgDKcgBiANpyAKIAtB4LkCKAIAEQoAC3YBAn4CfyAGrSAHrUIghoQhCwJAIAOtIAStQiCGhCIMQuD///8PWg0AIAtC4P///w9aDQAgACAAIAynIgNqQSAgAiADIAUgC6cgCSAKQeC5AigCABEKACEAIAEEQCABQgAgDEIgfCAAGzcDAAsgAAwBCxAKAAsLWQECfiAHrSAIrUIghoQhC0F/IQECQCADrSAErUIghoQiDELf////D1YNACALQt////8PVg0AIAAgAiAMpyAFQSAgBiALpyAJIApB3LkCKAIAEQoAIQELIAELgAEBA34gB60gCK1CIIaEIQxBfyECAkAgBK0gBa1CIIaE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//8HSw0AIAEgA0EBdE0NAEEAIQEgAwR/A0AgACABQQF0aiIEIAEgAmotAAAiBUEPcSIGQQh0IAZB9v8DakGAsgNxakGArgFqQQh2OgABIAQgBUEEdiIEIARB9v8DakEIdkHZAXFqQdcAajoAACABQQFqIgEgA0cNAAsgA0EBdAVBAAsgAGpBADoAACAADwsQCgALCgAgACABIAIQMQsIACAAIAEQWwtaAQF/IwBBQGoiAyQAIAMgAkIgEC8aIAEgAykDGDcAGCABIAMpAxA3ABAgASADKQMINwAIIAEgAykDADcAACADQcAAEAcgACABQcy5AigCABEBACADQUBrJAALCwAgACABIAIQgQELCwAgACABIAIQigELCwAgACABIAIQiwELCQAgACABEI0BCwsAIAAgASACEI4BCwUAQcMICwQAQQwLJwEBfyMAQUBqIgMkACAAIAMQHCABIANCwAAgAkEBEF0gA0FAayQACykBAX8jAEFAaiIEJAAgACAEEBwgASACIARCwAAgA0EBEF4gBEFAayQACwgAIAAQJUEAC7sBAgJ/A34jAEHAAWsiAiQAIAJBIBAVIAEgAkIgEC8aIAEgAS0AAEH4AXE6AAAgASABLQAfQT9xQcAAcjoAHyACQSBqIgMgARBCIAAgAxBDIAEgAikDGDcAGCABIAIpAxA3ABAgASACKQMINwAIIAEgAikDADcAACAAKQAAIQQgACkACCEFIAApABAhBiABIAApABg3ADggASAGNwAwIAEgBTcAKCABIAQ3ACAgAkEgEAcgAkHAAWokAEEAC7YBAgF/A34jAEGgAWsiAyQAIAEgAkIgEC8aIAEgAS0AAEH4AXE6AAAgASABLQAfQT9xQcAAcjoAHyADIAEQQiAAIAMQQyACKQAAIQQgAikACCEFIAIpABAhBiABIAIpABg3ABggASAGNwAQIAEgBTcACCABIAQ3AAAgACkAACEEIAApAAghBSAAKQAQIQYgASAAKQAYNwA4IAEgBjcAMCABIAU3ACggASAENwAgIANBoAFqJABBAAsFAEG/fwsKACAAIAEQYEEAC20BAX8jAEFAaiICJAAgAiABQiAQLxogAiACLQAAQfgBcToAACACIAItAB9BP3FBwAByOgAfIAAgAikDEDcAECAAIAIpAwg3AAggACACKQMANwAAIAAgAikDGDcAGCACQcAAEAcgAkFAayQAQQALohYCFX8ofiMAQYACayIDJABBfyETAkAgARBYDQAgA0HgAGoiBCABEHkNACMAQYAQayICJAAgAkGABWoiASAEEBIgAiAEKQIgNwPgAiACIAQpAhg3A9gCIAIgBCkCEDcD0AIgAiAEKQIINwPIAiACIAQpAgA3A8ACIAIgBCkCKDcD6AIgAiAEKQIwNwPwAiACIAQpAjg3A/gCIAIgBEFAaykCADcDgAMgAiAEKQJINwOIAyACIAQpAlA3A5ADIAIgBCkCWDcDmAMgAiAEKQJgNwOgAyACIAQpAmg3A6gDIAIgBCkCcDcDsAMgAkHgA2oiBSACQcACaiIJECIgAkGgAWoiBCAFIAJB2ARqIgYQBiACQcgBaiACQYgEaiIHIAJBsARqIggQBiACQfABaiAIIAYQBiACQZgCaiAFIAcQBiAFIAQgARATIAkgBSAGEAYgAkHoAmoiCiAHIAgQBiACQZADaiILIAggBhAGIAJBuANqIgwgBSAHEAYgAkGgBmoiASAJEBIgBSAEIAEQEyAJIAUgBhAGIAogByAIEAYgCyAIIAYQBiAMIAUgBxAGIAJBwAdqIgEgCRASIAUgBCABEBMgCSAFIAYQBiAKIAcgCBAGIAsgCCAGEAYgDCAFIAcQBiACQeAIaiIBIAkQEiAFIAQgARATIAkgBSAGEAYgCiAHIAgQBiALIAggBhAGIAwgBSAHEAYgAkGACmoiASAJEBIgBSAEIAEQEyAJIAUgBhAGIAogByAIEAYgCyAIIAYQBiAMIAUgBxAGIAJBoAtqIgEgCRASIAUgBCABEBMgCSAFIAYQBiAKIAcgCBAGIAsgCCAGEAYgDCAFIAcQBiACQcAMaiIBIAkQEiAFIAQgARATIAkgBSAGEAYgCiAHIAgQBiALIAggBhAGIAwgBSAHEAYgAkHgDWogCRASIAJCADcDICACQgA3AxggAkIANwMQIAJCADcDCCACQgA3AwAgAkIANwIsIAJBATYCKCACQgA3AjQgAkIANwI8IAJCADcCRCACQoCAgIAQNwJMIAJB1ABqQQBBzAD8CwAgAkH4AGohCSACQdgPaiEPIAJBsA9qIRAgAkHQAGohDSACQShqIQ5B/AEhBANAIAIgAikDIDcDqA8gAiACKQMYNwOgDyACIAIpAxA3A5gPIAIgAikDCDcDkA8gAiACKQMANwOIDyAQIA4pAiA3AiAgECAOKQIYNwIYIBAgDikCEDcCECAQIA4pAgg3AgggECAOKQIANwIAIA8gDSkCIDcCICAPIA0pAhg3AhggDyANKQIQNwIQIA8gDSkCCDcCCCAPIA0pAgA3AgAgBCIBQZCFAmosAAAhESACQeADaiIFIAJBiA9qECICQCARQQBKBEAgAkHAAmoiBCAFIAYQBiAKIAcgCBAGIAsgCCAGEAYgDCAFIAcQBiAFIAQgAkGABWogEUH+AXFBAXZBoAFsahATDAELIBFBAE4NACACQcACaiIEIAJB4ANqIgUgBhAGIAogByAIEAYgCyAIIAYQBiAMIAUgBxAGIAUgBCACQYAFakEAIBFrQf4BcUEBdkGgAWxqEHcLIAIgAkHgA2oiEiAGEAYgDiAHIAgQBiANIAggBhAGIAkgEiAHEAYgAUEBayEEIAENAAsgAigCKCEUIAIoAlAhFSACKAIsIRYgAigCVCEGIAIoAjAhByACKAJYIQggAigCNCEKIAIoAlwhCyACKAI4IQwgAigCYCENIAIoAjwhDiACKAJkIQ8gAigCQCEQIAIoAmghESACKAJEIQUgAigCbCEJIAIoAkghBCACKAJwIQEgAiACKAJMIAIoAnRrNgKkBSACIAQgAWs2AqAFIAIgBSAJazYCnAUgAiAQIBFrNgKYBSACIA4gD2s2ApQFIAIgDCANazYCkAUgAiAKIAtrNgKMBSACIAcgCGs2AogFIAIgFiAGazYChAUgAiAUIBVrNgKABSASIAIQGiASQSAQKCEEIBIgAkGABWoQGiASQSAQKCACQYAQaiQAIARxRQ0AQQAhEyADQQAgAygCrAEiBms2AiQgA0EAIAMoAqgBIgxrNgIgIANBACADKAKkASIHazYCHCADQQAgAygCoAEiBWs2AhggA0EAIAMoApwBIghrNgIUIANBACADKAKYASIJazYCECADQQAgAygClAEiCms2AgwgA0EAIAMoApABIgRrNgIIIANBACADKAKMASILazYCBCADQQEgAygCiAEiAWs2AgAgAyADEEQgAyADKAIEIg2sIh8gCEEBdKwiKX4gAzQCACIZIAWsIhp+fCADKAIIIg6sIiEgCawiG358IAMoAgwiD6wiIyAKQQF0rCIqfnwgAygCECIQrCIlIASsIhx+fCADKAIUIhGsIisgC0EBdKwiLH58IAMoAhgiBawiNSABQQFqrCIdfnwgAygCHCIJQRNsrCIkIAZBAXSsIi1+fCADKAIgIgRBE2ysIiIgDKwiHn58IAMoAiQiAUETbKwiICAHQQF0rCIufnwgGyAffiAZIAisIi9+fCAhIAqsIjB+fCAcICN+fCAlIAusIjF+fCAdICt+fCAFQRNsrCImIAasIjJ+fCAeICR+fCAiIAesIjN+fCAaICB+fCAfICp+IBkgG358IBwgIX58ICMgLH58IB0gJX58IBFBE2ysIjQgLX58IB4gJn58ICQgLn58IBogIn58ICAgKX58IjdCgICAEHwiOEIah3wiOUKAgIAIfCI6QhmHfCIXIBdCgICAEHwiJ0KAgIDgD4N9PgJIIAMgHyAsfiAZIBx+fCAdICF+fCAPQRNsrCIYIC1+fCAQQRNsrCIoIB5+fCAuIDR+fCAaICZ+fCAkICl+fCAbICJ+fCAgICp+fCAdIB9+IBkgMX58IA5BE2ysIhcgMn58IBggHn58ICggM358IBogNH58ICYgL358IBsgJH58ICIgMH58IBwgIH58IA1BE2ysIC1+IBkgHX58IBcgHn58IBggLn58IBogKH58ICkgNH58IBsgJn58ICQgKn58IBwgIn58ICAgLH58IjtCgICAEHwiPEIah3wiPUKAgIAIfCI+QhmHfCIXIBdCgICAEHwiGEKAgIDgD4N9PgI4IAMgGiAffiAZIDN+fCAhIC9+fCAbICN+fCAlIDB+fCAcICt+fCAxIDV+fCAJrCI2IB1+fCAiIDJ+fCAeICB+fCAnQhqHfCIXIBdCgICACHwiJ0KAgIDwD4N9PgJMIAMgHCAffiAZIDB+fCAhIDF+fCAdICN+fCAoIDJ+fCAeIDR+fCAmIDN+fCAaICR+fCAiIC9+fCAbICB+fCAYQhqHfCIXIBdCgICACHwiGEKAgIDwD4N9PgI8IAMgHyAufiAZIB5+fCAaICF+fCAjICl+fCAbICV+fCAqICt+fCAcIDV+fCAsIDZ+fCAErCIoIB1+fCAgIC1+fCAnQhmHfCIXIBdCgICAEHwiJ0KAgIDgD4N9PgJQIAMgOSA6QoCAgPAPg30gNyA4QoCAgGCDfSAYQhmHfCIYQoCAgBB8IhdCGoh8PgJEIAMgGCAXQoCAgOAPg30+AkAgAyAeIB9+IBkgMn58ICEgM358IBogI358ICUgL358IBsgK358IDAgNX58IBwgNn58ICggMX58IAGsIB1+fCAnQhqHfCIXIBdCgICACHwiF0KAgIDwD4N9PgJUIAMgPSA+QoCAgPAPg30gOyA8QoCAgGCDfSAXQhmHQhN+fCIYQoCAgBB8IhdCGoh8PgI0IAMgGCAXQoCAgOAPg30+AjAgACADQTBqEBoLIANBgAJqJAAgEwsLACAAIAEgAhCGAQsEAEEECwQAQRoLBQBBrwoLDAAgACABIAIQYkEACxIAIAAgASACQZS6AigCABEEAAsSACAAIAEgAkGQugIoAgARBAALEgAgACABIAJBjLoCKAIAEQQACxQAIAAgASACIANBiLoCKAIAEQsACxIAIAAgASACQYS6AigCABEEAAsUACAAIAEgAiADQYC6AigCABELAAsSACAAIAEgAkH8uQIoAgARBAALtAEBAX8gACABKAAAQf///x9xNgIAIAAgASgAA0ECdkGD/v8fcTYCBCAAIAEoAAZBBHZB/4H/H3E2AgggACABKAAJQQZ2Qf//wB9xNgIMIAEoAAwhAiAAQgA3AhQgAEIANwIcIABBADYCJCAAIAJBCHZB//8/cTYCECAAIAEoABA2AiggACABKAAUNgIsIAAgASgAGDYCMCABKAAcIQEgAEEAOgBQIABCADcDOCAAIAE2AjRBAAvFKAELfyMAQRBrIgokAAJAAkACQAJAAkACQAJAAkACQAJAIABB9AFNBEBB1MACKAIAIgRBECAAQQtqQfgDcSAAQQtJGyIGQQN2IgB2IgFBA3EEQAJAIAFBf3NBAXEgAGoiA0EDdCIBQfzAAmoiACABKAKEwQIiAigCCCIFRgRAQdTAAiAEQX4gA3dxNgIADAELIAUgADYCDCAAIAU2AggLIAJBCGohACACIAFBA3I2AgQgASACaiIBIAEoAgRBAXI2AgQMCwsgBkHcwAIoAgAiCE0NASABBEACQEECIAB0IgJBACACa3IgASAAdHFoIgNBA3QiAUH8wAJqIgIgASgChMECIgAoAggiBUYEQEHUwAIgBEF+IAN3cSIENgIADAELIAUgAjYCDCACIAU2AggLIAAgBkEDcjYCBCAAIAZqIgcgASAGayIFQQFyNgIEIAAgAWogBTYCACAIBEAgCEF4cUH8wAJqIQFB6MACKAIAIQIC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QZAIaiEUIANBgAhqIRUgA0GgCGohFkEAIQdBACEIA0AgAyADKAKMByACczYCrAUgAyANQf8BcSATQRh0IhcgD0H/AXFBEHRyIA5B/wFxQQh0cnIiBCADKAKIB3M2AqgFIAMgCkH/AXEgEkEYdCIYIAxB/wFxQRB0ciALQf8BcUEIdHJyIgkgAygChAdzNgKkBSADIBFB/wFxIAZBGHQiGSAIQf8BcUEQdHIgB0H/AXFBCHRyciIQIAMoAoAHczYCoAUgAyADKALcBSACczYCnAUgAyADKALYBSAEczYCmAUgAyADKALUBSAJczYClAUgAyADKALQBSAQczYCkAUgAyADKQOoBTcD+AQgAyADKQOgBTcD8AQgAyADKQKYBzcD6AQgAyADKQKQBzcD4AQgA0GABWoiBCADQfAEaiADQeAEahAFIAMgAykCiAU3A6gFIAMgAykCgAU3A6AFIAMgAykDkAU3A9AEIAMgAykDmAU3A9gEIAMgAykC4AU3A8AEIAMgAykC6AU3A8gEIAQgA0HQBGogA0HABGoQBSADIAMpAogFNwOYBSADIAMpAoAFNwOQBSADIAMpA6AFNwOwBCADIAMpA6gFNwO4BCADIAMpAqAHNwOgBCADIAMpAqgHNwOoBCAEIANBsARqIANBoARqEAUgAyADKQKIBTcDqAUgAyADKQKABTcDoAUgAyADKQOQBTcDkAQgAyADKQOYBTcDmAQgAyADKQLwBTcDgAQgAyADKQL4BTcDiAQgBCADQZAEaiADQYAEahAFIAMgAykCiAU3A5gFIAMgAykCgAU3A5AFIAMgAykDoAU3A/ADIAMgAykDqAU3A/gDIAMgAykCsAc3A+ADIAMgAykCuAc3A+gDIAQgA0HwA2ogA0HgA2oQBSADIAMpAogFNwOoBSADIAMpAoAFNwOgBSADIAMpA5AFNwPQAyADIAMpA5gFNwPYAyADIAMpAoAGNwPAAyADIAMpAogGNwPIAyAEIANB0ANqIANBwANqEAUgAyADKQKIBTcDmAUgAyADKQKABTcDkAUgAyADKQOgBTcDsAMgAyADKQOoBTcDuAMgAyADKQLABzcDoAMgAyADKQLIBzcDqAMgBCADQbADaiADQaADahAFIAMgAykCiAU3A6gFIAMgAykCgAU3A6AFIAMgAykDkAU3A5ADIAMgAykDmAU3A5gDIAMgAykCkAY3A4ADIAMgAykCmAY3A4gDIAQgA0GQA2ogA0GAA2oQBSADIAMpAogFNwOYBSADIAMpAoAFNwOQBSADIAMpA6AFNwPwAiADIAMpA6gFNwP4AiADIAMpAtAHNwPgAiADIAMpAtgHNwPoAiAEIANB8AJqIANB4AJqEAUgAyADKQKIBTcDqAUgAyADKQKABTcDoAUgAyADKQOQBTcD0AIgAyADKQOYBTcD2AIgAyADKQKgBjcDwAIgAyADKQKoBjcDyAIgBCADQdACaiADQcACahAFIAMgAykCiAU3A5gFIAMgAykCgAU3A5AFIAMgAykDoAU3A7ACIAMgAykDqAU3A7gCIAMgAykC4Ac3A6ACIAMgAykC6Ac3A6gCIAQgA0GwAmogA0GgAmoQBSADIAMpAogFNwOoBSADIAMpAoAFNwOgBSADIAMpA5AFNwOQAiADIAMpA5gFNwOYAiADIAMpArAGNwOAAiADIAMpArgGNwOIAiAEIANBkAJqIANBgAJqEAUgAyADKQKIBTcDmAUgAyADKQKABTcDkAUgAyADKQOgBTcD8AEgAyADKQOoBTcD+AEgAyADKQLwBzcD4AEgAyADKQL4BzcD6AEgBCADQfABaiADQeABahAFIAMgAykCiAU3A6gFIAMgAykCgAU3A6AFIAMgAykDkAU3A9ABIAMgAykDmAU3A9gBIAMgAykCwAY3A8ABIAMgAykCyAY3A8gBIAQgA0HQAWogA0HAAWoQBSADIAMpAogFNwOYBSADIAMpAoAFNwOQBSADIAMpA6AFNwOwASADIAMpA6gFNwO4ASADIBUpAgA3A6ABIAMgFSkCCDcDqAEgBCADQbABaiADQaABahAFIAMgAykCiAU3A6gFIAMgAykCgAU3A6AFIAMgAykDkAU3A5ABIAMgAykDmAU3A5gBIAMgAykC0AY3A4ABIAMgAykC2AY3A4gBIAQgA0GQAWogA0GAAWoQBSADIAMpAogFNwOYBSADIAMpAoAFNwOQBSADIAMpA6AFNwNwIAMgAykDqAU3A3ggAyAUKQIANwNgIAMgFCkCCDcDaCAEIANB8ABqIANB4ABqEAUgAyADKQKIBTcDqAUgAyADKQKABTcDoAUgAyADKQOQBTcDUCADIAMpA5gFNwNYIAMgAykC4AY3A0AgAyADKQLoBjcDSCAEIANB0ABq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BzcD6AMgBCADQfADaiADQeADahAFIAMgAykCiAU3A6gFIAMgAykCgAU3A6AFIAMgAykDkAU3A9ADIAMgAykDmAU3A9gDIAMgAykCgAY3A8ADIAMgAykCiAY3A8gDIAQgA0HQA2ogA0HAA2oQBSADIAMpAogFNwOYBSADIAMpAoAFNwOQBSADIAMpA6AFNwOwAyADIAMpA6gFNwO4AyADIAMpAsAHNwOgAyADIAMpAsgHNwOoAyAEIANBsANqIANBoANqEAUgAyADKQKIBTcDqAUgAyADKQKABTcDoAUgAyADKQOQBTcDkAMgAyADKQOYBTcDmAMgAyADKQKQBjcDgAMgAyADKQKYBjcDiAMgBCADQZADaiADQYADahAFIAMgAykCiAU3A5gFIAMgAykCgAU3A5AFIAMgAykDoAU3A/ACIAMgAykDqAU3A/gCIAMgAykC0Ac3A+ACIAMgAykC2Ac3A+gCIAQgA0HwAmogA0HgAmoQBSADIAMpAogFNwOoBSADIAMpAoAFNwOgBSADIAMpA5AFNwPQAiADIAMpA5gFNwPYAiADIAMpAqAGNwPAAiADIAMpAqgGNwPIAiAEIANB0AJqIANBwAJqEAUgAyADKQKIBTcDmAUgAyADKQKABTcDkAUgAyADKQOgBTcDsAIgAyADKQOoBTcDuAIgAyADKQLgBzcDoAIgAyADKQLoBzcDqAIgBCADQbACaiADQaACahAFIAMgAykCiAU3A6gFIAMgAykCgAU3A6AFIAMgAykDkAU3A5ACIAMgAykDmAU3A5gCIAMgAykCsAY3A4ACIAMgAykCuAY3A4gCIAQgA0GQAmogA0GAAmoQBSADIAMpAogFNwOYBSADIAMpAoAFNwOQBSADIAMpA6AFNwPwASADIAMpA6gFNwP4ASADIAMpAvAHNwPgASADIAMpAvgHNwPoASAEIANB8AFqIANB4AFqEAUgAyADKQKIBTcDqAUgAyADKQKABTcDoAUgAyADKQOQBTcD0AEgAyADKQOYBTcD2AEgAyADKQLABjcDwAEgAyADKQLIBjcDyAEgBCADQdABaiADQcABahAFIAMgAykCiAU3A5gFIAMgAykCgAU3A5AFIAMgAykDoAU3A7ABIAMgAykDqAU3A7gBIAMgFSkCADcDoAEgAyAVKQIINwOoASAEIANBsAFqIANBoAFqEAUg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AiAEIAMtAAdB2gBzOgDHAiAEIAMtAAhB2gBzOgDIAiAEIAMtAAlB2gBzOgDJAiAEIAMtAApB2gBzOgDKAiAEIAMtAAtB2gBzOgDLAiAEIAMtAAxB2gBzOgDMAiAEIAMtAA1B2gBzOgDNAiAEIAMtAA5B2gBzOgDOAiAEIAMtAA9B2gBzOgDPAiAJIARBwAJqEBELIAAgAikACDcACCAAIAIpAAA3AAAgBEHgBWogAiAEQYAEahCJASABKAAIIQIgASgADCEDIAEoAAAhBSAEIAQoAuQFIgYgASgABCAEKALUAnNzNgLUBSAEIAQoAuAFIgEgBSAEKALQAnNzNgLQBSAEIAQoAuwFIgUgAyAEKALcAnNzNgLcBSAEIAQoAugFIgMgAiAEKALYAnNzNgLYBSAEIAQpA9AFNwOwAiAEIAQpA9gFNwO4AiAEIAQpA+gCNwOoAiAEIAQpA+ACNwOgAiAEQcAFaiICIARBsAJqIARBoAJqEAUgBCAEKQLIBSIKNwPYBSAEIAQpAsAFIgs3A9AFIAQgCzcDkAIgBCAKNwOYAiAEIAQpA/ACNwOAAiAEIAQpA/gCNwOIAiACIARBkAJqIARBgAJqEAUgBCAEKQLIBSIKNwPYBSAEIAQpAsAFIgs3A9AFIAQgCzcD8AEgBCAKNwP4ASAEIAQpA4ADNwPgASAEIAQpA4gDNwPoASACIARB8AFqIARB4AFqEAUgBCAEKQLIBSIKNwPYBSAEIAQpAsAFIgs3A9AFIAQgCzcD0AEgBCAKNwPYASAEIAQpA5ADNwPAASAEIAQpA5gDNwPIASACIARB0AFqIARBwAFqEAUgBCAEKQLIBSIKNwPYBSAEIAQpAsAFIgs3A9AFIAQgCzcDsAEgBCAKNwO4ASAEIAQpAqADNwOgASAEIAQpAqgDNwOoASACIARBsAFqIARBoAFqEAUgBCAEKQLIBSIKNwPYBSAEIAQpAsAFIgs3A9AFIAQgCzcDkAEgBCAKNwOYASAEIAQpA7ADNwOAASAEIAQpA7gDNwOIASACIARBkAFqIARBgAFqEAUgBCAEKQLIBSIKNwPYBSAEIAQpAsAFIgs3A9AFIAQgCzcDcCAEIAo3A3ggBCAEKQPAAzcDYCAEIAQpA8gDNwNoIAIgBEHwAGogBEHgAGoQBSAEIAQpAsgFIgo3A9gFIAQgBCkCwAUiCzcD0AUgBCALNwNQIAQgCjcDWCAEIAQpA9ADNwNAIAQgBCkD2AM3A0ggAiAEQdAAaiAEQUBrEAUgBCAEKQLIBSIKNwPYBSAEIAQpAsAFIgs3A9AFIAQgCzcDMCAEIAo3AzggBCAEKQPgAzcDICAEIAQpA+gDNwMoIAIgBEEwaiAEQSBqEAUgBCAFIAQoAvwDczYCvAUgBCADIAQoAvgDczYCuAUgBCAGIAQoAvQDczYCtAUgBCABIAQoAvADczYCsAUgBCAEKQLIBSIKNwPYBSAEIAQpAsAFIgs3A9AFIAQgCzcDECAEIAo3AxggBCAEKQK4BTcDCCAEIAQpArAFNwMAIAIgBEEQaiAEECEgBCAEKQLIBSIKNwPYBSAEIAQpAsAFIgs3A9AFIAAgCjcAGCAAIAs3ABAgBEHwBWokAAvZDgIHfwJ+IwBBkAZrIgMkACADQdACaiIEIAIQESADIAEvAAAiAjYC0AQgAyABLwACIgY2AtQEIAMgAS8ABCIHNgLYBCADIAEvAAYiCDYC3AQgAyADKQLQBDcDwAIgAyADKQLYBDcDyAIgAyADKALAAhAINgLABCADIAMoAsQCEAg2AsQEIAMgAygCyAIQCDYCyAQgAyADKALMAhAINgLMBCADQeAEaiIFIARBsAH8CgAAIAUQViABKAAQIQQgASgAFCEFIAEoAAghCSADIAYgASgADCADKAKEBnNzNgK0BCADIAIgCSADKAKABnNzNgKwBCADIAggBSADKAKMBnNzNgK8BCADIAcgBCADKAKIBnNzNgK4BCADIAMoAsQEIAMoAvQFczYClAQgAyADKALABCADKALwBXM2ApAEIAMoAvgFIQEgAygCyAQhBCADIAMoAswEIAMoAvwFczYCnAQgAyABIARzNgKYBCADIAMpA7gENwO4AiADIAMpA7AENwOwAiADIAMpApgENwOoAiADIAMpApAENwOgAiADQaAEaiIBIANBsAJqIANBoAJqEAsgAyADKQKoBCIKNwO4BCADIAMpAqAEIgs3A7AEIAMgAygCxAQgAygC5AVzNgKUBCADIAMoAsAEIAMoAuAFczYCkAQgAyADKALMBCADKALsBXM2ApwEIAMgAygCyAQgAygC6AVzNgKYBCADIAo3A5gCIAMgCzcDkAIgAyADKQKYBDcDiAIgAyADKQKQBDcDgAIgASADQZACaiADQYACahALIAMgAykCqAQiCjcDuAQgAyADKQKgBCILNwOwBCADIAMoAsQEIAMoAtQFczYClAQgAyADKALABCADKALQBXM2ApAEIAMgAygCzAQgAygC3AVzNgKcBCADIAMoAsgEIAMoAtgFczYCmAQgAyAKNwP4ASADIAs3A/ABIAMgAykCmAQ3A+gBIAMgAykCkAQ3A+ABIAEgA0HwAWogA0HgAWoQCyADIAMpAqgEIgo3A7gEIAMgAykCoAQiCzcDsAQgAyADKALEBCADKALEBXM2ApQEIAMgAygCwAQgAygCwAVzNgKQBCADIAMoAswEIAMoAswFczYCnAQgAyADKALIBCADKALIBXM2ApgEIAMgCjcD2AEgAyALNwPQASADIAMpApgENwPIASADIAMpApAENwPAASABIANB0AFqIANBwAFqEAsgAyADKQKoBCIKNwO4BCADIAMpAqAEIgs3A7AEIAMgAygCxAQgAygCtAVzNgKUBCADIAMoAsAEIAMoArAFczYCkAQgAyADKALMBCADKAK8BXM2ApwEIAMgAygCyAQgAygCuAVzNgKYBCADIAo3A7gBIAMgCzcDsAEgAyADKQKYBDcDqAEgAyADKQKQBDcDoAEgASADQbABaiADQaABahALIAMgAykCqAQiCjcDuAQgAyADKQKgBCILNwOwBCADIAMoAsQEIAMoAqQFczYClAQgAyADKALABCADKAKgBXM2ApAEIAMgAygCzAQgAygCrAVzNgKcBCADIAMoAsgEIAMoAqgFczYCmAQgAyAKNwOYASADIAs3A5ABIAMgAykCmAQ3A4gBIAMgAykCkAQ3A4ABIAEgA0GQAWogA0GAAWoQCyADIAMpAqgEIgo3A7gEIAMgAykCoAQiCzcDsAQgAyADKALEBCADKAKUBXM2ApQEIAMgAygCwAQgAygCkAVzNgKQBCADIAMoAswEIAMoApwFczYCnAQgAyADKALIBCADKAKYBXM2ApgEIAMgCjcDeCADIAs3A3AgAyADKQKYBDcDaCADIAMpApAENwNgIAEgA0HwAGogA0HgAGoQCyADIAMpAqgEIgo3A7gEIAMgAykCoAQiCzcDsAQgAyADKALEBCADKAKEBXM2ApQEIAMgAygCwAQgAygCgAVzNgKQBCADIAMoAswEIAMoAowFczYCnAQgAyADKALIBCAD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KCAEIAQpAoAENwMgIAEgBEEwaiAEQSBqEAUgBCAFIAQoAuwDczYC/AMgBCADIAQoAugDczYC+AMgBCACIAQoAuQDczYC9AMgBCAGIAQoAuADczYC8AMgBCAEKQKYBCIKNwOoBCAEIAQpApAEIgs3A6AEIAQgCzcDECAEIAo3AxggBCAEKQL4AzcDCCAEIAQpAvADNwMAIAEgBEEQaiAEECEgBCAEKQKYBCIKNwOoBCAEIAQpApAEIgs3A6AEIAAgCjcAECAAIAs3AAggBEGwBGokAAvZBwIDfwJ+IwBBwAVrIgMkACADQcACaiIEIAIQESADQZAEaiICIARBsAH8CgAAIAIQViABKAAIIQIgASgADCEEIAEoAAAhBSADIAMoArQFIAEoAARzNgKEBCADIAUgAygCsAVzNgKABCADIAQgAygCvAVzNgKMBCADIAIgAygCuAVzNgKIBCADIAMpA6AFNwOgAiADIAMpA6gFNwOoAiADIAMpA4AENwOwAiADIAMpA4gENwO4AiADQfADaiIBIANBsAJqIANBoAJqEAsgAyADKQL4AyIGNwOIBCADIAMpAvADIgc3A4AEIAMgBzcDkAIgAyAGNwOYAiADIAMpA5AFNwOAAiADIAMpA5gFNwOIAiABIANBkAJqIANBgAJqEAsgAyADKQL4AyIGNwOIBCADIAMpAvADIgc3A4AEIAMgBzcD8AEgAyAGNwP4ASADIAMpA4AFNwPgASADIAMpA4gFNwPoASABIANB8AFqIANB4AFqEAsgAyADKQL4AyIGNwOIBCADIAMpAvADIgc3A4AEIAMgBzcD0AEgAyAGNwPYASADIAMpA/AENwPAASADIAMpA/gENwPIASABIANB0AFqIANBwAFqEAsgAyADKQL4AyIGNwOIBCADIAMpAvADIgc3A4AEIAMgBzcDsAEgAyAGNwO4ASADIAMpA+AENwOgASADIAMpA+gENwOoASABIANBsAFqIANBoAFqEAsgAyADKQL4AyIGNwOIBCADIAMpAvADIgc3A4AEIAMgBzcDkAEgAyAGNwOYASADIAMpA9AENwOAASADIAMpA9gENwOIASABIANBkAFqIANBgAFqEAsgAyADKQL4AyIGNwOIBCADIAMpAvADIgc3A4AEIAMgBzcDcCADIAY3A3ggAyADKQPABDcDYCADIAMpA8gENwNo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AL3irP9xQtb/yj4t/2ZACP9OrhD+hXVE/wBBsBMLAQEAQdATC7ABJuiVj8KyJ7BFw/SJ8u+Y8NXfrAXTxjM5sTgCiG1T/AXHF2pwPU3YT7o8C3YNEGcPKiBT+iw5zMZOx/13kqwDeuz///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f+3T9VwaYxJY1pz3ot753hQAQY8VC/zwARCFO4wBvfEk//glwwFg3DcAt0w+/8NCPQAyTKQB4aRM/0w9o/91Ph8AUZFA/3ZBDgCic9b/BoouAHzm9P8Kio8ANBrCALj0TACBjykBvvQT/3uqev9igUQAedWTAFZlHv+hZ5sAjFlD/+/lvgFDC7UAxvCJ/u5FvP/qcTz/Jf85/0Wytv6A0LMAdhp9/gMH1v/xMk3/VcvF/9OH+v8ZMGT/u9W0/hFYaQBT0Z4BBXNiAASuPP6rN27/2bUR/xS8qgCSnGb+V9au/3J6mwHpLKoAfwjvAdbs6gCvBdsAMWo9/wZC0P8Cam7/UeoT/9drwP9Dl+4AEyps/+VVcQEyRIf/EWoJADJnAf9QAagBI5ge/xCouQE4Wej/ZdL8ACn6RwDMqk//Di7v/1BN7wC91kv/EY35ACZQTP++VXUAVuSqAJzY0AHDz6T/lkJM/6/hEP+NUGIBTNvyAMaicgAu2pgAmyvx/pugaP+yCfz+ZG7UAA4FpwDp76P/HJedAWWSCv/+nkb+R/nkAFgeMgBEOqD/vxhoAYFCgf/AMlX/CLOK/yb6yQBzUKAAg+ZxAH1YkwBaRMcA/UyeABz/dgBx+v4AQksuAObaKwDleLoBlEQrAIh87gG7a8X/VDX2/zN0/v8zu6UAAhGvAEJUoAH3Oh4AI0E1/kXsvwAthvUBo3vdACBuFP80F6UAutZHAOmwYADy7zYBOVmKAFMAVP+IoGQAXI54/mh8vgC1sT7/+ilVAJiCKgFg/PYAl5c//u+FPgAgOJwALae9/46FswGDVtMAu7OW/vqqDv9EcRX/3ro7/0IH8QFFBkgAVpxs/jenWQBtNNv+DbAX/8Qsav/vlUf/pIx9/5+tAQAzKecAkT4hAIpvXQG5U0UAkHMuAGGXEP8Y5BoA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zLwm/vVzNP+/cUn+v2xF/xZF9QEXy7IAqmOqAEH4bwAlbJn/QCVFAABYPv5ZlJD/v0TgAfEnNQApy+3/kX7C/90q/f8ZY5cAYf3fAUpzMf8Gr0j/O7DLAHy3+QHk5GMAgQzP/qjAw//MsBD+mOqrAE0lVf8heIf/jsLjAR/WOgDVu33/6C48/750Kv6XshP/Mz7t/szswQDC6DwArCKd/70QuP5nA1//jekk/ikZC/8Vw6YAdvUtAEPVlf+fDBL/u6TjAaAZBQAMTsMBK8XhADCOKf7Emzz/38cSAZGInAD8dan+keLuAO8XawBttbz/5nAx/kmq7f/nt+P/UNwUAMJrfwF/zWUALjTFAdKrJP9YA1r/OJeNAGC7//8qTsgA/kZGAfR9qADMRIoBfNdGAGZCyP4RNOQAddyP/sv4ewA4Eq7/upek/zPo0AGg5Cv/+R0ZAUS+PwANAAAAAP8AAAAA9QAAAAAAAPsAAAAAAAD9AAAAAPMAAAAABwAAAAAAAwAAAADzAAAAAAUAAAAAAAAAAAsAAAAAAAsAAAAA8wAAAAAAAP0AAAAAAP8AAAAAAwAAAAD1AAAAAAAAAA8AAAAAAP8AAAAA/wAAAAAHAAAAAAUAQYyHAgsBAQBBsIcCCwEBAEHQhwILgSvg63p8O0G4rhZW4/rxn8Rq2gmN65wysf2GYgUWX0m4AF+clbyjUIwksdCxVZyD71sERFzEWByOhtgiTt3QnxFX7P///////////////////////////////////////3/t////////////////////////////////////////f+7///////////////////////////////////////9/AAECBAgQIECAGzYAAAAAAMZjY6X4fHyE7nd3mfZ7e43/8vIN1mtrvd5vb7GRxcVUYDAwUAIBAQPOZ2epVisrfef+/hm119diTaur5ux2dpqPyspFH4KCnYnJyUD6fX2H7/r6FbJZWeuOR0fJ+/DwC0Gtreyz1NRnX6Ki/UWvr+ojnJy/U6Sk9+RycpabwMBbdbe3wuH9/Rw9k5OuTCYmamw2Nlp+Pz9B9ff3AoPMzE9oNDRcUaWl9NHl5TT58fEI4nFxk6vY2HNiMTFTKhUVPwgEBAyVx8dSRiMjZZ3Dw14wGBgoN5aWoQoFBQ8vmpq1DgcHCSQSEjYb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\"),A((await async function(A,g,C){return async function(A,g){try{var C=await async function(A){return function(A){if(ArrayBuffer.isView(A))return A;if(A==F&&E)return new Uint8Array(E);if(I)return I(A);throw\"both async and sync fetching of the wasm failed\"}(A)}(A);return await WebAssembly.instantiate(C,g)}catch(A){M(`failed to asynchronously prepare wasm: ${A}`),Y(A)}}(g,C)}(0,F,C)).instance))}(),function(){function A(){g.calledRun=!0,U||(G=!0,i?.(g),g.onRuntimeInitialized?.(),function(){if(g.postRun)for(\"function\"==typeof g.postRun&&(g.postRun=[g.postRun]);g.postRun.length;)H(g.postRun.shift());N(K)}())}!function(){if(g.preRun)for(\"function\"==typeof g.preRun&&(g.preRun=[g.preRun]);g.preRun.length;)f(g.preRun.shift());N(a)}(),g.setStatus?(g.setStatus(\"Running...\"),setTimeout(()=>{setTimeout(()=>g.setStatus(\"\"),1),A()},1)):A()}(),G?g:new Promise((A,I)=>{i=A,D=I})}export default A;\n","import e from\"libsodium\";let r;const t={};if(void 0===globalThis.crypto||\"function\"!=typeof globalThis.crypto.getRandomValues)throw new Error(\"globalThis.crypto.getRandomValues is not available. The ESM build of libsodium requires a secure random source (available in all browsers and Node.js 19+).\");const a=\"function\"==typeof(_=e)?_:null!=_&&\"function\"==typeof _.default?_.default:null;var _;const n=function(e){return null!=e&&void 0!==e.ready?e:null!=e&&null!=e.default&&void 0!==e.default.ready?e.default:null}(e),s=(null!=a?a({getRandomValue:function(){var e=new Uint32Array(1);return globalThis.crypto.getRandomValues(e),e[0]>>>0}}):null!=n?n.ready.then(function(){return n}):Promise.reject(new Error(\"Unsupported libsodium ESM export shape\"))).then(function(e){r=e,t.libsodium=r,function(){if(r._sodium_init()<0)throw new Error(\"libsodium was not correctly initialized.\");for(var e=[\"crypto_aead_aegis128l_decrypt\",\"crypto_aead_aegis128l_decrypt_detached\",\"crypto_aead_aegis128l_encrypt\",\"crypto_aead_aegis128l_encrypt_detached\",\"crypto_aead_aegis128l_keygen\",\"crypto_aead_aegis256_decrypt\",\"crypto_aead_aegis256_decrypt_detached\",\"crypto_aead_aegis256_encrypt\",\"crypto_aead_aegis256_encrypt_detached\",\"crypto_aead_aegis256_keygen\",\"crypto_aead_chacha20poly1305_decrypt\",\"crypto_aead_chacha20poly1305_decrypt_detached\",\"crypto_aead_chacha20poly1305_encrypt\",\"crypto_aead_chacha20poly1305_encrypt_detached\",\"crypto_aead_chacha20poly1305_ietf_decrypt\",\"crypto_aead_chacha20poly1305_ietf_decrypt_detached\",\"crypto_aead_chacha20poly1305_ietf_encrypt\",\"crypto_aead_chacha20poly1305_ietf_encrypt_detached\",\"crypto_aead_chacha20poly1305_ietf_keygen\",\"crypto_aead_chacha20poly1305_keygen\",\"crypto_aead_xchacha20poly1305_ietf_decrypt\",\"crypto_aead_xchacha20poly1305_ietf_decrypt_detached\",\"crypto_aead_xchacha20poly1305_ietf_encrypt\",\"crypto_aead_xchacha20poly1305_ietf_encrypt_detached\",\"crypto_aead_xchacha20poly1305_ietf_keygen\",\"crypto_auth\",\"crypto_auth_hmacsha256\",\"crypto_auth_hmacsha256_final\",\"crypto_auth_hmacsha256_init\",\"crypto_auth_hmacsha256_keygen\",\"crypto_auth_hmacsha256_update\",\"crypto_auth_hmacsha256_verify\",\"crypto_auth_hmacsha512\",\"crypto_auth_hmacsha512256\",\"crypto_auth_hmacsha512256_final\",\"crypto_auth_hmacsha512256_init\",\"crypto_auth_hmacsha512256_keygen\",\"crypto_auth_hmacsha512256_update\",\"crypto_auth_hmacsha512256_verify\",\"crypto_auth_hmacsha512_final\",\"crypto_auth_hmacsha512_init\",\"crypto_auth_hmacsha512_keygen\",\"crypto_auth_hmacsha512_update\",\"crypto_auth_hmacsha512_verify\",\"crypto_auth_keygen\",\"crypto_auth_verify\",\"crypto_box_beforenm\",\"crypto_box_curve25519xchacha20poly1305_beforenm\",\"crypto_box_curve25519xchacha20poly1305_detached\",\"crypto_box_curve25519xchacha20poly1305_detached_afternm\",\"crypto_box_curve25519xchacha20poly1305_easy\",\"crypto_box_curve25519xchacha20poly1305_easy_afternm\",\"crypto_box_curve25519xchacha20poly1305_keypair\",\"crypto_box_curve25519xchacha20poly1305_open_detached\",\"crypto_box_curve25519xchacha20poly1305_open_detached_afternm\",\"crypto_box_curve25519xchacha20poly1305_open_easy\",\"crypto_box_curve25519xchacha20poly1305_open_easy_afternm\",\"crypto_box_curve25519xchacha20poly1305_seal\",\"crypto_box_curve25519xchacha20poly1305_seal_open\",\"crypto_box_curve25519xchacha20poly1305_seed_keypair\",\"crypto_box_detached\",\"crypto_box_easy\",\"crypto_box_easy_afternm\",\"crypto_box_keypair\",\"crypto_box_open_detached\",\"crypto_box_open_easy\",\"crypto_box_open_easy_afternm\",\"crypto_box_seal\",\"crypto_box_seal_open\",\"crypto_box_seed_keypair\",\"crypto_core_ed25519_add\",\"crypto_core_ed25519_from_hash\",\"crypto_core_ed25519_from_uniform\",\"crypto_core_ed25519_is_valid_point\",\"crypto_core_ed25519_random\",\"crypto_core_ed25519_scalar_add\",\"crypto_core_ed25519_scalar_complement\",\"crypto_core_ed25519_scalar_invert\",\"crypto_core_ed25519_scalar_mul\",\"crypto_core_ed25519_scalar_negate\",\"crypto_core_ed25519_scalar_random\",\"crypto_core_ed25519_scalar_reduce\",\"crypto_core_ed25519_scalar_sub\",\"crypto_core_ed25519_sub\",\"crypto_core_hchacha20\",\"crypto_core_hsalsa20\",\"crypto_core_ristretto255_add\",\"crypto_core_ristretto255_from_hash\",\"crypto_core_ristretto255_is_valid_point\",\"crypto_core_ristretto255_random\",\"crypto_core_ristretto255_scalar_add\",\"crypto_core_ristretto255_scalar_complement\",\"crypto_core_ristretto255_scalar_invert\",\"crypto_core_ristretto255_scalar_mul\",\"crypto_core_ristretto255_scalar_negate\",\"crypto_core_ristretto255_scalar_random\",\"crypto_core_ristretto255_scalar_reduce\",\"crypto_core_ristretto255_scalar_sub\",\"crypto_core_ristretto255_sub\",\"crypto_generichash\",\"crypto_generichash_blake2b_salt_personal\",\"crypto_generichash_final\",\"crypto_generichash_init\",\"crypto_generichash_keygen\",\"crypto_generichash_update\",\"crypto_hash\",\"crypto_hash_sha256\",\"crypto_hash_sha256_final\",\"crypto_hash_sha256_init\",\"crypto_hash_sha256_update\",\"crypto_hash_sha3256\",\"crypto_hash_sha3256_final\",\"crypto_hash_sha3256_init\",\"crypto_hash_sha3256_update\",\"crypto_hash_sha3512\",\"crypto_hash_sha3512_final\",\"crypto_hash_sha3512_init\",\"crypto_hash_sha3512_update\",\"crypto_hash_sha512\",\"crypto_hash_sha512_final\",\"crypto_hash_sha512_init\",\"crypto_hash_sha512_update\",\"crypto_ipcrypt_decrypt\",\"crypto_ipcrypt_encrypt\",\"crypto_ipcrypt_keygen\",\"crypto_ipcrypt_nd_decrypt\",\"crypto_ipcrypt_nd_encrypt\",\"crypto_ipcrypt_nd_keygen\",\"crypto_ipcrypt_ndx_decrypt\",\"crypto_ipcrypt_ndx_encrypt\",\"crypto_ipcrypt_ndx_keygen\",\"crypto_ipcrypt_pfx_decrypt\",\"crypto_ipcrypt_pfx_encrypt\",\"crypto_ipcrypt_pfx_keygen\",\"crypto_kdf_derive_from_key\",\"crypto_kdf_keygen\",\"crypto_kem_dec\",\"crypto_kem_enc\",\"crypto_kem_keypair\",\"crypto_kem_mlkem768_dec\",\"crypto_kem_mlkem768_enc\",\"crypto_kem_mlkem768_enc_deterministic\",\"crypto_kem_mlkem768_keypair\",\"crypto_kem_mlkem768_seed_keypair\",\"crypto_kem_primitive\",\"crypto_kem_seed_keypair\",\"crypto_kem_xwing_dec\",\"crypto_kem_xwing_enc\",\"crypto_kem_xwing_enc_deterministic\",\"crypto_kem_xwing_keypair\",\"crypto_kem_xwing_seed_keypair\",\"crypto_kx_client_session_keys\",\"crypto_kx_keypair\",\"crypto_kx_seed_keypair\",\"crypto_kx_server_session_keys\",\"crypto_onetimeauth\",\"crypto_onetimeauth_final\",\"crypto_onetimeauth_init\",\"crypto_onetimeauth_keygen\",\"crypto_onetimeauth_update\",\"crypto_onetimeauth_verify\",\"crypto_pwhash\",\"crypto_pwhash_scryptsalsa208sha256\",\"crypto_pwhash_scryptsalsa208sha256_ll\",\"crypto_pwhash_scryptsalsa208sha256_str\",\"crypto_pwhash_scryptsalsa208sha256_str_verify\",\"crypto_pwhash_str\",\"crypto_pwhash_str_needs_rehash\",\"crypto_pwhash_str_verify\",\"crypto_scalarmult\",\"crypto_scalarmult_base\",\"crypto_scalarmult_ed25519\",\"crypto_scalarmult_ed25519_base\",\"crypto_scalarmult_ed25519_base_noclamp\",\"crypto_scalarmult_ed25519_noclamp\",\"crypto_scalarmult_ristretto255\",\"crypto_scalarmult_ristretto255_base\",\"crypto_secretbox_detached\",\"crypto_secretbox_easy\",\"crypto_secretbox_keygen\",\"crypto_secretbox_open_detached\",\"crypto_secretbox_open_easy\",\"crypto_secretstream_xchacha20poly1305_init_pull\",\"crypto_secretstream_xchacha20poly1305_init_push\",\"crypto_secretstream_xchacha20poly1305_keygen\",\"crypto_secretstream_xchacha20poly1305_pull\",\"crypto_secretstream_xchacha20poly1305_push\",\"crypto_secretstream_xchacha20poly1305_rekey\",\"crypto_shorthash\",\"crypto_shorthash_keygen\",\"crypto_shorthash_siphashx24\",\"crypto_sign\",\"crypto_sign_detached\",\"crypto_sign_ed25519_pk_to_curve25519\",\"crypto_sign_ed25519_sk_to_curve25519\",\"crypto_sign_ed25519_sk_to_pk\",\"crypto_sign_ed25519_sk_to_seed\",\"crypto_sign_final_create\",\"crypto_sign_final_verify\",\"crypto_sign_init\",\"crypto_sign_keypair\",\"crypto_sign_open\",\"crypto_sign_seed_keypair\",\"crypto_sign_update\",\"crypto_sign_verify_detached\",\"crypto_stream_chacha20\",\"crypto_stream_chacha20_ietf_xor\",\"crypto_stream_chacha20_ietf_xor_ic\",\"crypto_stream_chacha20_keygen\",\"crypto_stream_chacha20_xor\",\"crypto_stream_chacha20_xor_ic\",\"crypto_stream_keygen\",\"crypto_stream_xchacha20_keygen\",\"crypto_stream_xchacha20_xor\",\"crypto_stream_xchacha20_xor_ic\",\"crypto_xof_shake128\",\"crypto_xof_shake128_init\",\"crypto_xof_shake128_init_with_domain\",\"crypto_xof_shake128_squeeze\",\"crypto_xof_shake128_update\",\"crypto_xof_shake256\",\"crypto_xof_shake256_init\",\"crypto_xof_shake256_init_with_domain\",\"crypto_xof_shake256_squeeze\",\"crypto_xof_shake256_update\",\"crypto_xof_turboshake128\",\"crypto_xof_turboshake128_init\",\"crypto_xof_turboshake128_init_with_domain\",\"crypto_xof_turboshake128_squeeze\",\"crypto_xof_turboshake128_update\",\"crypto_xof_turboshake256\",\"crypto_xof_turboshake256_init\",\"crypto_xof_turboshake256_init_with_domain\",\"crypto_xof_turboshake256_squeeze\",\"crypto_xof_turboshake256_update\",\"randombytes_buf\",\"randombytes_buf_deterministic\",\"randombytes_close\",\"randombytes_random\",\"randombytes_set_implementation\",\"randombytes_stir\",\"randombytes_uniform\",\"sodium_bin2ip\",\"sodium_ip2bin\",\"sodium_version_string\"],a=[C,R,P,X,D,G,F,V,q,H,z,W,j,J,Q,Z,$,ee,re,te,ae,_e,ne,se,ce,pe,oe,he,ye,ie,le,ue,de,ve,ge,be,fe,me,ke,xe,Ee,Te,Se,we,Ye,Be,Ke,Ae,Ie,Me,Ne,Le,Ue,Oe,Ce,Re,Pe,Xe,De,Ge,Fe,Ve,qe,He,ze,We,je,Je,Qe,Ze,$e,er,rr,tr,ar,_r,nr,sr,cr,pr,or,hr,yr,ir,lr,ur,dr,vr,gr,br,fr,mr,kr,xr,Er,Tr,Sr,wr,Yr,Br,Kr,Ar,Ir,Mr,Nr,Lr,Ur,Or,Cr,Rr,Pr,Xr,Dr,Gr,Fr,Vr,qr,Hr,zr,Wr,jr,Jr,Qr,Zr,$r,et,rt,tt,at,_t,nt,st,ct,pt,ot,ht,yt,it,lt,ut,dt,vt,gt,bt,ft,mt,kt,xt,Et,Tt,St,wt,Yt,Bt,Kt,At,It,Mt,Nt,Lt,Ut,Ot,Ct,Rt,Pt,Xt,Dt,Gt,Ft,Vt,qt,Ht,zt,Wt,jt,Jt,Qt,Zt,$t,ea,ra,ta,aa,_a,na,sa,ca,pa,oa,ha,ya,ia,la,ua,da,va,ga,ba,fa,ma,ka,xa,Ea,Ta,Sa,wa,Ya,Ba,Ka,Aa,Ia,Ma,Na,La,Ua,Oa,Ca,Ra,Pa,Xa,Da,Ga,Fa,Va,qa,Ha,za,Wa,ja,Ja,Qa,Za,$a,e_,r_,t_,a_,__,n_,s_,c_,p_,o_,h_,y_],_=0;_<a.length;_++)\"function\"==typeof r[\"_\"+e[_]]&&(t[e[_]]=a[_]);var n=[\"SODIUM_LIBRARY_VERSION_MAJOR\",\"SODIUM_LIBRARY_VERSION_MINOR\",\"crypto_aead_aegis128l_ABYTES\",\"crypto_aead_aegis128l_KEYBYTES\",\"crypto_aead_aegis128l_MESSAGEBYTES_MAX\",\"crypto_aead_aegis128l_NPUBBYTES\",\"crypto_aead_aegis128l_NSECBYTES\",\"crypto_aead_aegis256_ABYTES\",\"crypto_aead_aegis256_KEYBYTES\",\"crypto_aead_aegis256_MESSAGEBYTES_MAX\",\"crypto_aead_aegis256_NPUBBYTES\",\"crypto_aead_aegis256_NSECBYTES\",\"crypto_aead_aes256gcm_ABYTES\",\"crypto_aead_aes256gcm_KEYBYTES\",\"crypto_aead_aes256gcm_MESSAGEBYTES_MAX\",\"crypto_aead_aes256gcm_NPUBBYTES\",\"crypto_aead_aes256gcm_NSECBYTES\",\"crypto_aead_chacha20poly1305_ABYTES\",\"crypto_aead_chacha20poly1305_IETF_ABYTES\",\"crypto_aead_chacha20poly1305_IETF_KEYBYTES\",\"crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX\",\"crypto_aead_chacha20poly1305_IETF_NPUBBYTES\",\"crypto_aead_chacha20poly1305_IETF_NSECBYTES\",\"crypto_aead_chacha20poly1305_KEYBYTES\",\"crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX\",\"crypto_aead_chacha20poly1305_NPUBBYTES\",\"crypto_aead_chacha20poly1305_NSECBYTES\",\"crypto_aead_chacha20poly1305_ietf_ABYTES\",\"crypto_aead_chacha20poly1305_ietf_KEYBYTES\",\"crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX\",\"crypto_aead_chacha20poly1305_ietf_NPUBBYTES\",\"crypto_aead_chacha20poly1305_ietf_NSECBYTES\",\"crypto_aead_xchacha20poly1305_IETF_ABYTES\",\"crypto_aead_xchacha20poly1305_IETF_KEYBYTES\",\"crypto_aead_xchacha20poly1305_IETF_MESSAGEBYTES_MAX\",\"crypto_aead_xchacha20poly1305_IETF_NPUBBYTES\",\"crypto_aead_xchacha20poly1305_IETF_NSECBYTES\",\"crypto_aead_xchacha20poly1305_ietf_ABYTES\",\"crypto_aead_xchacha20poly1305_ietf_KEYBYTES\",\"crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX\",\"crypto_aead_xchacha20poly1305_ietf_NPUBBYTES\",\"crypto_aead_xchacha20poly1305_ietf_NSECBYTES\",\"crypto_auth_BYTES\",\"crypto_auth_KEYBYTES\",\"crypto_auth_hmacsha256_BYTES\",\"crypto_auth_hmacsha256_KEYBYTES\",\"crypto_auth_hmacsha512256_BYTES\",\"crypto_auth_hmacsha512256_KEYBYTES\",\"crypto_auth_hmacsha512_BYTES\",\"crypto_auth_hmacsha512_KEYBYTES\",\"crypto_box_BEFORENMBYTES\",\"crypto_box_MACBYTES\",\"crypto_box_MESSAGEBYTES_MAX\",\"crypto_box_NONCEBYTES\",\"crypto_box_PUBLICKEYBYTES\",\"crypto_box_SEALBYTES\",\"crypto_box_SECRETKEYBYTES\",\"crypto_box_SEEDBYTES\",\"crypto_box_curve25519xchacha20poly1305_BEFORENMBYTES\",\"crypto_box_curve25519xchacha20poly1305_MACBYTES\",\"crypto_box_curve25519xchacha20poly1305_MESSAGEBYTES_MAX\",\"crypto_box_curve25519xchacha20poly1305_NONCEBYTES\",\"crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES\",\"crypto_box_curve25519xchacha20poly1305_SEALBYTES\",\"crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES\",\"crypto_box_curve25519xchacha20poly1305_SEEDBYTES\",\"crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES\",\"crypto_box_curve25519xsalsa20poly1305_MACBYTES\",\"crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX\",\"crypto_box_curve25519xsalsa20poly1305_NONCEBYTES\",\"crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES\",\"crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES\",\"crypto_box_curve25519xsalsa20poly1305_SEEDBYTES\",\"crypto_core_ed25519_BYTES\",\"crypto_core_ed25519_HASHBYTES\",\"crypto_core_ed25519_NONREDUCEDSCALARBYTES\",\"crypto_core_ed25519_SCALARBYTES\",\"crypto_core_ed25519_UNIFORMBYTES\",\"crypto_core_hchacha20_CONSTBYTES\",\"crypto_core_hchacha20_INPUTBYTES\",\"crypto_core_hchacha20_KEYBYTES\",\"crypto_core_hchacha20_OUTPUTBYTES\",\"crypto_core_hsalsa20_CONSTBYTES\",\"crypto_core_hsalsa20_INPUTBYTES\",\"crypto_core_hsalsa20_KEYBYTES\",\"crypto_core_hsalsa20_OUTPUTBYTES\",\"crypto_core_ristretto255_BYTES\",\"crypto_core_ristretto255_HASHBYTES\",\"crypto_core_ristretto255_NONREDUCEDSCALARBYTES\",\"crypto_core_ristretto255_SCALARBYTES\",\"crypto_core_salsa2012_CONSTBYTES\",\"crypto_core_salsa2012_INPUTBYTES\",\"crypto_core_salsa2012_KEYBYTES\",\"crypto_core_salsa2012_OUTPUTBYTES\",\"crypto_core_salsa208_CONSTBYTES\",\"crypto_core_salsa208_INPUTBYTES\",\"crypto_core_salsa208_KEYBYTES\",\"crypto_core_salsa208_OUTPUTBYTES\",\"crypto_core_salsa20_CONSTBYTES\",\"crypto_core_salsa20_INPUTBYTES\",\"crypto_core_salsa20_KEYBYTES\",\"crypto_core_salsa20_OUTPUTBYTES\",\"crypto_generichash_BYTES\",\"crypto_generichash_BYTES_MAX\",\"crypto_generichash_BYTES_MIN\",\"crypto_generichash_KEYBYTES\",\"crypto_generichash_KEYBYTES_MAX\",\"crypto_generichash_KEYBYTES_MIN\",\"crypto_generichash_blake2b_BYTES\",\"crypto_generichash_blake2b_BYTES_MAX\",\"crypto_generichash_blake2b_BYTES_MIN\",\"crypto_generichash_blake2b_KEYBYTES\",\"crypto_generichash_blake2b_KEYBYTES_MAX\",\"crypto_generichash_blake2b_KEYBYTES_MIN\",\"crypto_generichash_blake2b_PERSONALBYTES\",\"crypto_generichash_blake2b_SALTBYTES\",\"crypto_hash_BYTES\",\"crypto_hash_sha256_BYTES\",\"crypto_hash_sha3256_BYTES\",\"crypto_hash_sha3512_BYTES\",\"crypto_hash_sha512_BYTES\",\"crypto_ipcrypt_BYTES\",\"crypto_ipcrypt_KEYBYTES\",\"crypto_ipcrypt_NDX_INPUTBYTES\",\"crypto_ipcrypt_NDX_KEYBYTES\",\"crypto_ipcrypt_NDX_OUTPUTBYTES\",\"crypto_ipcrypt_NDX_TWEAKBYTES\",\"crypto_ipcrypt_ND_INPUTBYTES\",\"crypto_ipcrypt_ND_KEYBYTES\",\"crypto_ipcrypt_ND_OUTPUTBYTES\",\"crypto_ipcrypt_ND_TWEAKBYTES\",\"crypto_ipcrypt_PFX_BYTES\",\"crypto_ipcrypt_PFX_KEYBYTES\",\"crypto_kdf_BYTES_MAX\",\"crypto_kdf_BYTES_MIN\",\"crypto_kdf_CONTEXTBYTES\",\"crypto_kdf_KEYBYTES\",\"crypto_kdf_blake2b_BYTES_MAX\",\"crypto_kdf_blake2b_BYTES_MIN\",\"crypto_kdf_blake2b_CONTEXTBYTES\",\"crypto_kdf_blake2b_KEYBYTES\",\"crypto_kdf_hkdf_sha256_BYTES_MAX\",\"crypto_kdf_hkdf_sha256_BYTES_MIN\",\"crypto_kdf_hkdf_sha256_KEYBYTES\",\"crypto_kdf_hkdf_sha512_BYTES_MAX\",\"crypto_kdf_hkdf_sha512_BYTES_MIN\",\"crypto_kdf_hkdf_sha512_KEYBYTES\",\"crypto_kem_CIPHERTEXTBYTES\",\"crypto_kem_PUBLICKEYBYTES\",\"crypto_kem_SECRETKEYBYTES\",\"crypto_kem_SEEDBYTES\",\"crypto_kem_SHAREDSECRETBYTES\",\"crypto_kem_mlkem768_CIPHERTEXTBYTES\",\"crypto_kem_mlkem768_PUBLICKEYBYTES\",\"crypto_kem_mlkem768_SECRETKEYBYTES\",\"crypto_kem_mlkem768_SEEDBYTES\",\"crypto_kem_mlkem768_SHAREDSECRETBYTES\",\"crypto_kem_xwing_CIPHERTEXTBYTES\",\"crypto_kem_xwing_PUBLICKEYBYTES\",\"crypto_kem_xwing_SECRETKEYBYTES\",\"crypto_kem_xwing_SEEDBYTES\",\"crypto_kem_xwing_SHAREDSECRETBYTES\",\"crypto_kx_PUBLICKEYBYTES\",\"crypto_kx_SECRETKEYBYTES\",\"crypto_kx_SEEDBYTES\",\"crypto_kx_SESSIONKEYBYTES\",\"crypto_onetimeauth_BYTES\",\"crypto_onetimeauth_KEYBYTES\",\"crypto_onetimeauth_poly1305_BYTES\",\"crypto_onetimeauth_poly1305_KEYBYTES\",\"crypto_pwhash_ALG_ARGON2I13\",\"crypto_pwhash_ALG_ARGON2ID13\",\"crypto_pwhash_ALG_DEFAULT\",\"crypto_pwhash_BYTES_MAX\",\"crypto_pwhash_BYTES_MIN\",\"crypto_pwhash_MEMLIMIT_INTERACTIVE\",\"crypto_pwhash_MEMLIMIT_MAX\",\"crypto_pwhash_MEMLIMIT_MIN\",\"crypto_pwhash_MEMLIMIT_MODERATE\",\"crypto_pwhash_MEMLIMIT_SENSITIVE\",\"crypto_pwhash_OPSLIMIT_INTERACTIVE\",\"crypto_pwhash_OPSLIMIT_MAX\",\"crypto_pwhash_OPSLIMIT_MIN\",\"crypto_pwhash_OPSLIMIT_MODERATE\",\"crypto_pwhash_OPSLIMIT_SENSITIVE\",\"crypto_pwhash_PASSWD_MAX\",\"crypto_pwhash_PASSWD_MIN\",\"crypto_pwhash_SALTBYTES\",\"crypto_pwhash_STRBYTES\",\"crypto_pwhash_argon2i_BYTES_MAX\",\"crypto_pwhash_argon2i_BYTES_MIN\",\"crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE\",\"crypto_pwhash_argon2i_MEMLIMIT_MAX\",\"crypto_pwhash_argon2i_MEMLIMIT_MIN\",\"crypto_pwhash_argon2i_MEMLIMIT_MODERATE\",\"crypto_pwhash_argon2i_MEMLIMIT_SENSITIVE\",\"crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE\",\"crypto_pwhash_argon2i_OPSLIMIT_MAX\",\"crypto_pwhash_argon2i_OPSLIMIT_MIN\",\"crypto_pwhash_argon2i_OPSLIMIT_MODERATE\",\"crypto_pwhash_argon2i_OPSLIMIT_SENSITIVE\",\"crypto_pwhash_argon2i_PASSWD_MAX\",\"crypto_pwhash_argon2i_PASSWD_MIN\",\"crypto_pwhash_argon2i_SALTBYTES\",\"crypto_pwhash_argon2i_STRBYTES\",\"crypto_pwhash_argon2id_BYTES_MAX\",\"crypto_pwhash_argon2id_BYTES_MIN\",\"crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE\",\"crypto_pwhash_argon2id_MEMLIMIT_MAX\",\"crypto_pwhash_argon2id_MEMLIMIT_MIN\",\"crypto_pwhash_argon2id_MEMLIMIT_MODERATE\",\"crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE\",\"crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE\",\"crypto_pwhash_argon2id_OPSLIMIT_MAX\",\"crypto_pwhash_argon2id_OPSLIMIT_MIN\",\"crypto_pwhash_argon2id_OPSLIMIT_MODERATE\",\"crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE\",\"crypto_pwhash_argon2id_PASSWD_MAX\",\"crypto_pwhash_argon2id_PASSWD_MIN\",\"crypto_pwhash_argon2id_SALTBYTES\",\"crypto_pwhash_argon2id_STRBYTES\",\"crypto_pwhash_scryptsalsa208sha256_BYTES_MAX\",\"crypto_pwhash_scryptsalsa208sha256_BYTES_MIN\",\"crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE\",\"crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX\",\"crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN\",\"crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE\",\"crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE\",\"crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX\",\"crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN\",\"crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE\",\"crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX\",\"crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN\",\"crypto_pwhash_scryptsalsa208sha256_SALTBYTES\",\"crypto_pwhash_scryptsalsa208sha256_STRBYTES\",\"crypto_scalarmult_BYTES\",\"crypto_scalarmult_SCALARBYTES\",\"crypto_scalarmult_curve25519_BYTES\",\"crypto_scalarmult_curve25519_SCALARBYTES\",\"crypto_scalarmult_ed25519_BYTES\",\"crypto_scalarmult_ed25519_SCALARBYTES\",\"crypto_scalarmult_ristretto255_BYTES\",\"crypto_scalarmult_ristretto255_SCALARBYTES\",\"crypto_secretbox_KEYBYTES\",\"crypto_secretbox_MACBYTES\",\"crypto_secretbox_MESSAGEBYTES_MAX\",\"crypto_secretbox_NONCEBYTES\",\"crypto_secretbox_xchacha20poly1305_KEYBYTES\",\"crypto_secretbox_xchacha20poly1305_MACBYTES\",\"crypto_secretbox_xchacha20poly1305_MESSAGEBYTES_MAX\",\"crypto_secretbox_xchacha20poly1305_NONCEBYTES\",\"crypto_secretbox_xsalsa20poly1305_KEYBYTES\",\"crypto_secretbox_xsalsa20poly1305_MACBYTES\",\"crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX\",\"crypto_secretbox_xsalsa20poly1305_NONCEBYTES\",\"crypto_secretstream_xchacha20poly1305_ABYTES\",\"crypto_secretstream_xchacha20poly1305_HEADERBYTES\",\"crypto_secretstream_xchacha20poly1305_KEYBYTES\",\"crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX\",\"crypto_secretstream_xchacha20poly1305_TAG_FINAL\",\"crypto_secretstream_xchacha20poly1305_TAG_MESSAGE\",\"crypto_secretstream_xchacha20poly1305_TAG_PUSH\",\"crypto_secretstream_xchacha20poly1305_TAG_REKEY\",\"crypto_shorthash_BYTES\",\"crypto_shorthash_KEYBYTES\",\"crypto_shorthash_siphash24_BYTES\",\"crypto_shorthash_siphash24_KEYBYTES\",\"crypto_shorthash_siphashx24_BYTES\",\"crypto_shorthash_siphashx24_KEYBYTES\",\"crypto_sign_BYTES\",\"crypto_sign_MESSAGEBYTES_MAX\",\"crypto_sign_PUBLICKEYBYTES\",\"crypto_sign_SECRETKEYBYTES\",\"crypto_sign_SEEDBYTES\",\"crypto_sign_ed25519_BYTES\",\"crypto_sign_ed25519_MESSAGEBYTES_MAX\",\"crypto_sign_ed25519_PUBLICKEYBYTES\",\"crypto_sign_ed25519_SECRETKEYBYTES\",\"crypto_sign_ed25519_SEEDBYTES\",\"crypto_stream_KEYBYTES\",\"crypto_stream_MESSAGEBYTES_MAX\",\"crypto_stream_NONCEBYTES\",\"crypto_stream_chacha20_IETF_KEYBYTES\",\"crypto_stream_chacha20_IETF_MESSAGEBYTES_MAX\",\"crypto_stream_chacha20_IETF_NONCEBYTES\",\"crypto_stream_chacha20_KEYBYTES\",\"crypto_stream_chacha20_MESSAGEBYTES_MAX\",\"crypto_stream_chacha20_NONCEBYTES\",\"crypto_stream_chacha20_ietf_KEYBYTES\",\"crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX\",\"crypto_stream_chacha20_ietf_NONCEBYTES\",\"crypto_stream_salsa2012_KEYBYTES\",\"crypto_stream_salsa2012_MESSAGEBYTES_MAX\",\"crypto_stream_salsa2012_NONCEBYTES\",\"crypto_stream_salsa208_KEYBYTES\",\"crypto_stream_salsa208_MESSAGEBYTES_MAX\",\"crypto_stream_salsa208_NONCEBYTES\",\"crypto_stream_salsa20_KEYBYTES\",\"crypto_stream_salsa20_MESSAGEBYTES_MAX\",\"crypto_stream_salsa20_NONCEBYTES\",\"crypto_stream_xchacha20_KEYBYTES\",\"crypto_stream_xchacha20_MESSAGEBYTES_MAX\",\"crypto_stream_xchacha20_NONCEBYTES\",\"crypto_stream_xsalsa20_KEYBYTES\",\"crypto_stream_xsalsa20_MESSAGEBYTES_MAX\",\"crypto_stream_xsalsa20_NONCEBYTES\",\"crypto_verify_16_BYTES\",\"crypto_verify_32_BYTES\",\"crypto_verify_64_BYTES\",\"crypto_xof_shake128_BLOCKBYTES\",\"crypto_xof_shake128_STATEBYTES\",\"crypto_xof_shake256_BLOCKBYTES\",\"crypto_xof_shake256_STATEBYTES\",\"crypto_xof_turboshake128_BLOCKBYTES\",\"crypto_xof_turboshake128_STATEBYTES\",\"crypto_xof_turboshake256_BLOCKBYTES\",\"crypto_xof_turboshake256_STATEBYTES\"];for(_=0;_<n.length;_++)\"function\"==typeof(c=r[\"_\"+n[_].toLowerCase()])&&(t[n[_]]=c());var s=[\"SODIUM_VERSION_STRING\",\"crypto_kem_PRIMITIVE\",\"crypto_pwhash_STRPREFIX\",\"crypto_pwhash_argon2i_STRPREFIX\",\"crypto_pwhash_argon2id_STRPREFIX\",\"crypto_pwhash_scryptsalsa208sha256_STRPREFIX\"];for(_=0;_<s.length;_++){var c;\"function\"==typeof(c=r[\"_\"+s[_].toLowerCase()])&&(t[s[_]]=r.UTF8ToString(c()))}}();var a=new Uint8Array([98,97,108,108,115]),_=t.randombytes_buf(t.crypto_secretbox_NONCEBYTES),n=t.randombytes_buf(t.crypto_secretbox_KEYBYTES),s=t.crypto_secretbox_easy(a,_,n),c=t.crypto_secretbox_open_easy(s,_,n);if(!t.memcmp(a,c))throw new Error(\"Initialization self-test failed\")});function c(){return Object.keys(t).sort()}function p(e){if(!(e instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can be incremented\");for(var r=256,t=0,a=e.length;t<a;t++)r>>=8,r+=e[t],e[t]=255&r}function o(e,r){if(!(e instanceof Uint8Array&&r instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can be added\");var t=e.length,a=0,_=0;if(r.length!==e.length)throw new TypeError(\"Arguments must have the same length\");for(_=0;_<t;_++)a>>=8,a+=e[_]+r[_],e[_]=255&a}function h(e){if(!(e instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can be checked\");for(var r=0,t=0,a=e.length;t<a;t++)r|=e[t];return 0===r}function y(e){if(!(e instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can be wiped\");for(var r=0,t=e.length;r<t;r++)e[r]=0}function i(e,r){if(!(e instanceof Uint8Array&&r instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can be compared\");if(e.length!==r.length)throw new TypeError(\"Only instances of identical length can be compared\");for(var t=0,a=0,_=e.length;a<_;a++)t|=e[a]^r[a];return 0===t}function l(e,r){if(!(e instanceof Uint8Array&&r instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can be compared\");if(e.length!==r.length)throw new TypeError(\"Only instances of identical length can be compared\");for(var t=0,a=1,_=e.length;_-- >0;)t|=r[_]-e[_]>>8&a,a&=(r[_]^e[_])-1>>8;return t+t+a-1}function u(e,t){if(!(e instanceof Uint8Array))throw new TypeError(\"buffer must be a Uint8Array\");if((t|=0)<=0)throw new Error(\"block size must be > 0\");var a,_=[],n=A(4),s=1,c=0,p=0|e.length,o=new B(p+t);_.push(n),_.push(o.address);for(var h=o.address,y=o.address+p+t;h<y;h++)r.HEAPU8[h]=e[c],c+=s=1&~((65535&((p-=s)>>>48|p>>>32|p>>>16|p))-1>>16);return 0!==r._sodium_pad(n,o.address,e.length,t,o.length)&&N(_,\"internal error\"),o.length=r.getValue(n,\"i32\"),a=o.to_Uint8Array(),M(_),a}function d(e,t){if(!(e instanceof Uint8Array))throw new TypeError(\"buffer must be a Uint8Array\");if((t|=0)<=0)throw new Error(\"block size must be > 0\");var a=[],_=K(e),n=A(4);return a.push(_),a.push(n),0!==r._sodium_unpad(n,_,e.length,t)&&N(a,\"unsupported/invalid padding\"),e=(e=new Uint8Array(e)).subarray(0,r.getValue(n,\"i32\")),M(a),e}function v(e){if(\"function\"==typeof TextEncoder)return(new TextEncoder).encode(e);e=unescape(encodeURIComponent(e));for(var r=new Uint8Array(e.length),t=0,a=e.length;t<a;t++)r[t]=e.charCodeAt(t);return r}function g(e){if(\"function\"==typeof TextDecoder)return new TextDecoder(\"utf-8\",{fatal:!0}).decode(e);var r=8192,t=Math.ceil(e.length/r);if(t<=1)try{return decodeURIComponent(escape(String.fromCharCode.apply(null,e)))}catch(e){throw new TypeError(\"The encoded data was not valid.\")}for(var a=\"\",_=0,n=0;n<t;n++){var s=Array.prototype.slice.call(e,n*r+_,(n+1)*r+_);if(0!==s.length){var c,p=s.length,o=0;do{var h=s[--p];h>=240?(o=4,c=!0):h>=224?(o=3,c=!0):h>=192?(o=2,c=!0):h<128&&(o=1,c=!0)}while(!c);for(var y=o-(s.length-p),i=0;i<y;i++)_--,s.pop();a+=g(s)}}return a}function b(e){var t,a=[],_=new B((e=O(a,e,\"input\")).length/2),n=K(e),s=A(4);return a.push(n),a.push(_.address),a.push(s),0!==r._sodium_hex2bin(_.address,_.length,n,e.length,0,0,s)&&N(a,\"invalid input\"),r.getValue(s,\"i32\")-n!==e.length&&N(a,\"incomplete input\"),t=_.to_Uint8Array(),M(a),t}function f(e){e=O(null,e,\"input\");for(var r,t,a,_=\"\",n=0;n<e.length;n++)a=87+(t=15&e[n])+(t-10>>8&-39)<<8|87+(r=e[n]>>>4)+(r-10>>8&-39),_+=String.fromCharCode(255&a)+String.fromCharCode(a>>>8);return _}var m={ORIGINAL:1,ORIGINAL_NO_PADDING:3,URLSAFE:5,URLSAFE_NO_PADDING:7};function k(e){if(void 0===e)return m.URLSAFE_NO_PADDING;if(e!==m.ORIGINAL&&e!==m.ORIGINAL_NO_PADDING&&e!==m.URLSAFE&&e!==m.URLSAFE_NO_PADDING)throw new Error(\"unsupported base64 variant\");return e}function x(e,t){t=k(t);var a,_=[],n=new B(3*(e=O(_,e,\"input\")).length/4),s=K(e),c=A(4),p=A(4);return _.push(s),_.push(n.address),_.push(c),_.push(p),0!==r._sodium_base642bin(n.address,n.length,s,e.length,0,c,p,t)&&N(_,\"invalid input\"),r.getValue(p,\"i32\")-s!==e.length&&N(_,\"incomplete input\"),n.length=r.getValue(c,\"i32\"),a=n.to_Uint8Array(),M(_),a}function E(e,t){t=k(t);var a=[];e=O(a,e,\"input\");var _,n=0|Math.floor(e.length/3),s=e.length-3*n,c=4*n+(0!==s?2&t?2+(s>>>1):4:0),p=new B(c+1),o=K(e);return a.push(o),a.push(p.address),0===r._sodium_bin2base64(p.address,p.length,o,e.length,t)&&N(a,\"conversion failed\"),p.length=c,_=g(p.to_Uint8Array()),M(a),_}function T(){return[\"uint8array\",\"text\",\"hex\",\"base64\"]}function S(e,r){var t=r||\"uint8array\";if(!w(t))throw new Error(t+\" output format is not available\");if(e instanceof B){if(\"uint8array\"===t)return e.to_Uint8Array();if(\"text\"===t)return g(e.to_Uint8Array());if(\"hex\"===t)return f(e.to_Uint8Array());if(\"base64\"===t)return E(e.to_Uint8Array(),m.URLSAFE_NO_PADDING);throw new Error('What is output format \"'+t+'\"?')}if(\"object\"==typeof e){for(var a=Object.keys(e),_={},n=0;n<a.length;n++)_[a[n]]=S(e[a[n]],t);return _}if(\"string\"==typeof e)return e;throw new TypeError(\"Cannot format output\")}function w(e){for(var r=[\"uint8array\",\"text\",\"hex\",\"base64\"],t=0;t<r.length;t++)if(r[t]===e)return!0;return!1}function Y(e){if(e){if(\"string\"!=typeof e)throw new TypeError(\"When defined, the output format must be a string\");if(!w(e))throw new Error(e+\" is not a supported output format\")}}function B(e){this.length=e,this.address=A(e)}function K(e){var t=A(e.length);return r.HEAPU8.set(e,t),t}function A(e){var t=r._malloc(e);if(0===t)throw{message:\"_malloc() failed\",length:e};return t}function I(e){r._free(e)}function M(e){if(e)for(var r=0;r<e.length;r++)I(e[r])}function N(e,r){throw M(e),new Error(r)}function L(e,r){throw M(e),new TypeError(r)}function U(e,r,t){null==r&&L(e,t+\" cannot be null or undefined\")}function O(e,r,t){return U(e,r,t),r instanceof Uint8Array?r:\"string\"==typeof r?v(r):void L(e,\"unsupported input type for \"+t)}function C(e,t,a,_,n,s){var c=[];Y(s);var p=null;null!=e&&(p=K(e=O(c,e,\"secret_nonce\")),e.length,c.push(p)),t=O(c,t,\"ciphertext\");var o,h=r._crypto_aead_aegis128l_abytes(),y=t.length;y<h&&L(c,\"ciphertext is too short\"),o=K(t),c.push(o);var i=null,l=0;null!=a&&(i=K(a=O(c,a,\"additional_data\")),l=a.length,c.push(i)),_=O(c,_,\"public_nonce\");var u,d=0|r._crypto_aead_aegis128l_npubbytes();_.length!==d&&L(c,\"invalid public_nonce length\"),u=K(_),c.push(u),n=O(c,n,\"key\");var v,g=0|r._crypto_aead_aegis128l_keybytes();n.length!==g&&L(c,\"invalid key length\"),v=K(n),c.push(v);var b=new B(y-r._crypto_aead_aegis128l_abytes()|0),f=b.address;if(c.push(f),0===r._crypto_aead_aegis128l_decrypt(f,null,p,o,y,0,i,l,0,u,v)){var m=S(b,s);return M(c),m}N(c,\"ciphertext cannot be decrypted using that key\")}function R(e,t,a,_,n,s,c){var p=[];Y(c);var o=null;null!=e&&(o=K(e=O(p,e,\"secret_nonce\")),e.length,p.push(o));var h=K(t=O(p,t,\"ciphertext\")),y=t.length;p.push(h),a=O(p,a,\"mac\");var i,l=0|r._crypto_aead_aegis128l_abytes();a.length!==l&&L(p,\"invalid mac length\"),i=K(a),p.push(i);var u=null,d=0;null!=_&&(u=K(_=O(p,_,\"additional_data\")),d=_.length,p.push(u)),n=O(p,n,\"public_nonce\");var v,g=0|r._crypto_aead_aegis128l_npubbytes();n.length!==g&&L(p,\"invalid public_nonce length\"),v=K(n),p.push(v),s=O(p,s,\"key\");var b,f=0|r._crypto_aead_aegis128l_keybytes();s.length!==f&&L(p,\"invalid key length\"),b=K(s),p.push(b);var m=new B(0|y),k=m.address;if(p.push(k),0===r._crypto_aead_aegis128l_decrypt_detached(k,o,h,y,0,i,u,d,0,v,b)){var x=S(m,c);return M(p),x}N(p,\"ciphertext cannot be decrypted using that key\")}function P(e,t,a,_,n,s){var c=[];Y(s);var p=K(e=O(c,e,\"message\")),o=e.length;c.push(p);var h=null,y=0;null!=t&&(h=K(t=O(c,t,\"additional_data\")),y=t.length,c.push(h));var i=null;null!=a&&(i=K(a=O(c,a,\"secret_nonce\")),a.length,c.push(i)),_=O(c,_,\"public_nonce\");var l,u=0|r._crypto_aead_aegis128l_npubbytes();_.length!==u&&L(c,\"invalid public_nonce length\"),l=K(_),c.push(l),n=O(c,n,\"key\");var d,v=0|r._crypto_aead_aegis128l_keybytes();n.length!==v&&L(c,\"invalid key length\"),d=K(n),c.push(d);var g=new B(o+r._crypto_aead_aegis128l_abytes()|0),b=g.address;if(c.push(b),0===r._crypto_aead_aegis128l_encrypt(b,null,p,o,0,h,y,0,i,l,d)){var f=S(g,s);return M(c),f}N(c,\"invalid usage\")}function X(e,t,a,_,n,s){var c=[];Y(s);var p=K(e=O(c,e,\"message\")),o=e.length;c.push(p);var h=null,y=0;null!=t&&(h=K(t=O(c,t,\"additional_data\")),y=t.length,c.push(h));var i=null;null!=a&&(i=K(a=O(c,a,\"secret_nonce\")),a.length,c.push(i)),_=O(c,_,\"public_nonce\");var l,u=0|r._crypto_aead_aegis128l_npubbytes();_.length!==u&&L(c,\"invalid public_nonce length\"),l=K(_),c.push(l),n=O(c,n,\"key\");var d,v=0|r._crypto_aead_aegis128l_keybytes();n.length!==v&&L(c,\"invalid key length\"),d=K(n),c.push(d);var g=new B(0|o),b=g.address;c.push(b);var f=new B(0|r._crypto_aead_aegis128l_abytes()),m=f.address;if(c.push(m),0===r._crypto_aead_aegis128l_encrypt_detached(b,m,null,p,o,0,h,y,0,i,l,d)){var k=S({ciphertext:g,mac:f},s);return M(c),k}N(c,\"invalid usage\")}function D(e){var t=[];Y(e);var a=new B(0|r._crypto_aead_aegis128l_keybytes()),_=a.address;t.push(_),r._crypto_aead_aegis128l_keygen(_);var n=S(a,e);return M(t),n}function G(e,t,a,_,n,s){var c=[];Y(s);var p=null;null!=e&&(p=K(e=O(c,e,\"secret_nonce\")),e.length,c.push(p)),t=O(c,t,\"ciphertext\");var o,h=r._crypto_aead_aegis256_abytes(),y=t.length;y<h&&L(c,\"ciphertext is too short\"),o=K(t),c.push(o);var i=null,l=0;null!=a&&(i=K(a=O(c,a,\"additional_data\")),l=a.length,c.push(i)),_=O(c,_,\"public_nonce\");var u,d=0|r._crypto_aead_aegis256_npubbytes();_.length!==d&&L(c,\"invalid public_nonce length\"),u=K(_),c.push(u),n=O(c,n,\"key\");var v,g=0|r._crypto_aead_aegis256_keybytes();n.length!==g&&L(c,\"invalid key length\"),v=K(n),c.push(v);var b=new B(y-r._crypto_aead_aegis256_abytes()|0),f=b.address;if(c.push(f),0===r._crypto_aead_aegis256_decrypt(f,null,p,o,y,0,i,l,0,u,v)){var m=S(b,s);return M(c),m}N(c,\"ciphertext cannot be decrypted using that key\")}function F(e,t,a,_,n,s,c){var p=[];Y(c);var o=null;null!=e&&(o=K(e=O(p,e,\"secret_nonce\")),e.length,p.push(o));var h=K(t=O(p,t,\"ciphertext\")),y=t.length;p.push(h),a=O(p,a,\"mac\");var i,l=0|r._crypto_aead_aegis256_abytes();a.length!==l&&L(p,\"invalid mac length\"),i=K(a),p.push(i);var u=null,d=0;null!=_&&(u=K(_=O(p,_,\"additional_data\")),d=_.length,p.push(u)),n=O(p,n,\"public_nonce\");var v,g=0|r._crypto_aead_aegis256_npubbytes();n.length!==g&&L(p,\"invalid public_nonce length\"),v=K(n),p.push(v),s=O(p,s,\"key\");var b,f=0|r._crypto_aead_aegis256_keybytes();s.length!==f&&L(p,\"invalid key length\"),b=K(s),p.push(b);var m=new B(0|y),k=m.address;if(p.push(k),0===r._crypto_aead_aegis256_decrypt_detached(k,o,h,y,0,i,u,d,0,v,b)){var x=S(m,c);return M(p),x}N(p,\"ciphertext cannot be decrypted using that key\")}function V(e,t,a,_,n,s){var c=[];Y(s);var p=K(e=O(c,e,\"message\")),o=e.length;c.push(p);var h=null,y=0;null!=t&&(h=K(t=O(c,t,\"additional_data\")),y=t.length,c.push(h));var i=null;null!=a&&(i=K(a=O(c,a,\"secret_nonce\")),a.length,c.push(i)),_=O(c,_,\"public_nonce\");var l,u=0|r._crypto_aead_aegis256_npubbytes();_.length!==u&&L(c,\"invalid public_nonce length\"),l=K(_),c.push(l),n=O(c,n,\"key\");var d,v=0|r._crypto_aead_aegis256_keybytes();n.length!==v&&L(c,\"invalid key length\"),d=K(n),c.push(d);var g=new B(o+r._crypto_aead_aegis256_abytes()|0),b=g.address;if(c.push(b),0===r._crypto_aead_aegis256_encrypt(b,null,p,o,0,h,y,0,i,l,d)){var f=S(g,s);return M(c),f}N(c,\"invalid usage\")}function q(e,t,a,_,n,s){var c=[];Y(s);var p=K(e=O(c,e,\"message\")),o=e.length;c.push(p);var h=null,y=0;null!=t&&(h=K(t=O(c,t,\"additional_data\")),y=t.length,c.push(h));var i=null;null!=a&&(i=K(a=O(c,a,\"secret_nonce\")),a.length,c.push(i)),_=O(c,_,\"public_nonce\");var l,u=0|r._crypto_aead_aegis256_npubbytes();_.length!==u&&L(c,\"invalid public_nonce length\"),l=K(_),c.push(l),n=O(c,n,\"key\");var d,v=0|r._crypto_aead_aegis256_keybytes();n.length!==v&&L(c,\"invalid key length\"),d=K(n),c.push(d);var g=new B(0|o),b=g.address;c.push(b);var f=new B(0|r._crypto_aead_aegis256_abytes()),m=f.address;if(c.push(m),0===r._crypto_aead_aegis256_encrypt_detached(b,m,null,p,o,0,h,y,0,i,l,d)){var k=S({ciphertext:g,mac:f},s);return M(c),k}N(c,\"invalid usage\")}function H(e){var t=[];Y(e);var a=new B(0|r._crypto_aead_aegis256_keybytes()),_=a.address;t.push(_),r._crypto_aead_aegis256_keygen(_);var n=S(a,e);return M(t),n}function z(e,t,a,_,n,s){var c=[];Y(s);var p=null;null!=e&&(p=K(e=O(c,e,\"secret_nonce\")),e.length,c.push(p)),t=O(c,t,\"ciphertext\");var o,h=r._crypto_aead_chacha20poly1305_abytes(),y=t.length;y<h&&L(c,\"ciphertext is too short\"),o=K(t),c.push(o);var i=null,l=0;null!=a&&(i=K(a=O(c,a,\"additional_data\")),l=a.length,c.push(i)),_=O(c,_,\"public_nonce\");var u,d=0|r._crypto_aead_chacha20poly1305_npubbytes();_.length!==d&&L(c,\"invalid public_nonce length\"),u=K(_),c.push(u),n=O(c,n,\"key\");var v,g=0|r._crypto_aead_chacha20poly1305_keybytes();n.length!==g&&L(c,\"invalid key length\"),v=K(n),c.push(v);var b=new B(y-r._crypto_aead_chacha20poly1305_abytes()|0),f=b.address;if(c.push(f),0===r._crypto_aead_chacha20poly1305_decrypt(f,null,p,o,y,0,i,l,0,u,v)){var m=S(b,s);return M(c),m}N(c,\"ciphertext cannot be decrypted using that key\")}function W(e,t,a,_,n,s,c){var p=[];Y(c);var o=null;null!=e&&(o=K(e=O(p,e,\"secret_nonce\")),e.length,p.push(o));var h=K(t=O(p,t,\"ciphertext\")),y=t.length;p.push(h),a=O(p,a,\"mac\");var i,l=0|r._crypto_box_macbytes();a.length!==l&&L(p,\"invalid mac length\"),i=K(a),p.push(i);var u=null,d=0;null!=_&&(u=K(_=O(p,_,\"additional_data\")),d=_.length,p.push(u)),n=O(p,n,\"public_nonce\");var v,g=0|r._crypto_aead_chacha20poly1305_npubbytes();n.length!==g&&L(p,\"invalid public_nonce length\"),v=K(n),p.push(v),s=O(p,s,\"key\");var b,f=0|r._crypto_aead_chacha20poly1305_keybytes();s.length!==f&&L(p,\"invalid key length\"),b=K(s),p.push(b);var m=new B(0|y),k=m.address;if(p.push(k),0===r._crypto_aead_chacha20poly1305_decrypt_detached(k,o,h,y,0,i,u,d,0,v,b)){var x=S(m,c);return M(p),x}N(p,\"ciphertext cannot be decrypted using that key\")}function j(e,t,a,_,n,s){var c=[];Y(s);var p=K(e=O(c,e,\"message\")),o=e.length;c.push(p);var h=null,y=0;null!=t&&(h=K(t=O(c,t,\"additional_data\")),y=t.length,c.push(h));var i=null;null!=a&&(i=K(a=O(c,a,\"secret_nonce\")),a.length,c.push(i)),_=O(c,_,\"public_nonce\");var l,u=0|r._crypto_aead_chacha20poly1305_npubbytes();_.length!==u&&L(c,\"invalid public_nonce length\"),l=K(_),c.push(l),n=O(c,n,\"key\");var d,v=0|r._crypto_aead_chacha20poly1305_keybytes();n.length!==v&&L(c,\"invalid key length\"),d=K(n),c.push(d);var g=new B(o+r._crypto_aead_chacha20poly1305_abytes()|0),b=g.address;if(c.push(b),0===r._crypto_aead_chacha20poly1305_encrypt(b,null,p,o,0,h,y,0,i,l,d)){var f=S(g,s);return M(c),f}N(c,\"invalid usage\")}function J(e,t,a,_,n,s){var c=[];Y(s);var p=K(e=O(c,e,\"message\")),o=e.length;c.push(p);var h=null,y=0;null!=t&&(h=K(t=O(c,t,\"additional_data\")),y=t.length,c.push(h));var i=null;null!=a&&(i=K(a=O(c,a,\"secret_nonce\")),a.length,c.push(i)),_=O(c,_,\"public_nonce\");var l,u=0|r._crypto_aead_chacha20poly1305_npubbytes();_.length!==u&&L(c,\"invalid public_nonce length\"),l=K(_),c.push(l),n=O(c,n,\"key\");var d,v=0|r._crypto_aead_chacha20poly1305_keybytes();n.length!==v&&L(c,\"invalid key length\"),d=K(n),c.push(d);var g=new B(0|o),b=g.address;c.push(b);var f=new B(0|r._crypto_aead_chacha20poly1305_abytes()),m=f.address;if(c.push(m),0===r._crypto_aead_chacha20poly1305_encrypt_detached(b,m,null,p,o,0,h,y,0,i,l,d)){var k=S({ciphertext:g,mac:f},s);return M(c),k}N(c,\"invalid usage\")}function Q(e,t,a,_,n,s){var c=[];Y(s);var p=null;null!=e&&(p=K(e=O(c,e,\"secret_nonce\")),e.length,c.push(p)),t=O(c,t,\"ciphertext\");var o,h=r._crypto_aead_chacha20poly1305_ietf_abytes(),y=t.length;y<h&&L(c,\"ciphertext is too short\"),o=K(t),c.push(o);var i=null,l=0;null!=a&&(i=K(a=O(c,a,\"additional_data\")),l=a.length,c.push(i)),_=O(c,_,\"public_nonce\");var u,d=0|r._crypto_aead_chacha20poly1305_ietf_npubbytes();_.length!==d&&L(c,\"invalid public_nonce length\"),u=K(_),c.push(u),n=O(c,n,\"key\");var v,g=0|r._crypto_aead_chacha20poly1305_ietf_keybytes();n.length!==g&&L(c,\"invalid key length\"),v=K(n),c.push(v);var b=new B(y-r._crypto_aead_chacha20poly1305_ietf_abytes()|0),f=b.address;if(c.push(f),0===r._crypto_aead_chacha20poly1305_ietf_decrypt(f,null,p,o,y,0,i,l,0,u,v)){var m=S(b,s);return M(c),m}N(c,\"ciphertext cannot be decrypted using that key\")}function Z(e,t,a,_,n,s,c){var p=[];Y(c);var o=null;null!=e&&(o=K(e=O(p,e,\"secret_nonce\")),e.length,p.push(o));var h=K(t=O(p,t,\"ciphertext\")),y=t.length;p.push(h),a=O(p,a,\"mac\");var i,l=0|r._crypto_box_macbytes();a.length!==l&&L(p,\"invalid mac length\"),i=K(a),p.push(i);var u=null,d=0;null!=_&&(u=K(_=O(p,_,\"additional_data\")),d=_.length,p.push(u)),n=O(p,n,\"public_nonce\");var v,g=0|r._crypto_aead_chacha20poly1305_ietf_npubbytes();n.length!==g&&L(p,\"invalid public_nonce length\"),v=K(n),p.push(v),s=O(p,s,\"key\");var b,f=0|r._crypto_aead_chacha20poly1305_ietf_keybytes();s.length!==f&&L(p,\"invalid key length\"),b=K(s),p.push(b);var m=new B(0|y),k=m.address;if(p.push(k),0===r._crypto_aead_chacha20poly1305_ietf_decrypt_detached(k,o,h,y,0,i,u,d,0,v,b)){var x=S(m,c);return M(p),x}N(p,\"ciphertext cannot be decrypted using that key\")}function $(e,t,a,_,n,s){var c=[];Y(s);var p=K(e=O(c,e,\"message\")),o=e.length;c.push(p);var h=null,y=0;null!=t&&(h=K(t=O(c,t,\"additional_data\")),y=t.length,c.push(h));var i=null;null!=a&&(i=K(a=O(c,a,\"secret_nonce\")),a.length,c.push(i)),_=O(c,_,\"public_nonce\");var l,u=0|r._crypto_aead_chacha20poly1305_ietf_npubbytes();_.length!==u&&L(c,\"invalid public_nonce length\"),l=K(_),c.push(l),n=O(c,n,\"key\");var d,v=0|r._crypto_aead_chacha20poly1305_ietf_keybytes();n.length!==v&&L(c,\"invalid key length\"),d=K(n),c.push(d);var g=new B(o+r._crypto_aead_chacha20poly1305_ietf_abytes()|0),b=g.address;if(c.push(b),0===r._crypto_aead_chacha20poly1305_ietf_encrypt(b,null,p,o,0,h,y,0,i,l,d)){var f=S(g,s);return M(c),f}N(c,\"invalid usage\")}function ee(e,t,a,_,n,s){var c=[];Y(s);var p=K(e=O(c,e,\"message\")),o=e.length;c.push(p);var h=null,y=0;null!=t&&(h=K(t=O(c,t,\"additional_data\")),y=t.length,c.push(h));var i=null;null!=a&&(i=K(a=O(c,a,\"secret_nonce\")),a.length,c.push(i)),_=O(c,_,\"public_nonce\");var l,u=0|r._crypto_aead_chacha20poly1305_ietf_npubbytes();_.length!==u&&L(c,\"invalid public_nonce length\"),l=K(_),c.push(l),n=O(c,n,\"key\");var d,v=0|r._crypto_aead_chacha20poly1305_ietf_keybytes();n.length!==v&&L(c,\"invalid key length\"),d=K(n),c.push(d);var g=new B(0|o),b=g.address;c.push(b);var f=new B(0|r._crypto_aead_chacha20poly1305_ietf_abytes()),m=f.address;if(c.push(m),0===r._crypto_aead_chacha20poly1305_ietf_encrypt_detached(b,m,null,p,o,0,h,y,0,i,l,d)){var k=S({ciphertext:g,mac:f},s);return M(c),k}N(c,\"invalid usage\")}function re(e){var t=[];Y(e);var a=new B(0|r._crypto_aead_chacha20poly1305_ietf_keybytes()),_=a.address;t.push(_),r._crypto_aead_chacha20poly1305_ietf_keygen(_);var n=S(a,e);return M(t),n}function te(e){var t=[];Y(e);var a=new B(0|r._crypto_aead_chacha20poly1305_keybytes()),_=a.address;t.push(_),r._crypto_aead_chacha20poly1305_keygen(_);var n=S(a,e);return M(t),n}function ae(e,t,a,_,n,s){var c=[];Y(s);var p=null;null!=e&&(p=K(e=O(c,e,\"secret_nonce\")),e.length,c.push(p)),t=O(c,t,\"ciphertext\");var o,h=r._crypto_aead_xchacha20poly1305_ietf_abytes(),y=t.length;y<h&&L(c,\"ciphertext is too short\"),o=K(t),c.push(o);var i=null,l=0;null!=a&&(i=K(a=O(c,a,\"additional_data\")),l=a.length,c.push(i)),_=O(c,_,\"public_nonce\");var u,d=0|r._crypto_aead_xchacha20poly1305_ietf_npubbytes();_.length!==d&&L(c,\"invalid public_nonce length\"),u=K(_),c.push(u),n=O(c,n,\"key\");var v,g=0|r._crypto_aead_xchacha20poly1305_ietf_keybytes();n.length!==g&&L(c,\"invalid key length\"),v=K(n),c.push(v);var b=new B(y-r._crypto_aead_xchacha20poly1305_ietf_abytes()|0),f=b.address;if(c.push(f),0===r._crypto_aead_xchacha20poly1305_ietf_decrypt(f,null,p,o,y,0,i,l,0,u,v)){var m=S(b,s);return M(c),m}N(c,\"ciphertext cannot be decrypted using that key\")}function _e(e,t,a,_,n,s,c){var p=[];Y(c);var o=null;null!=e&&(o=K(e=O(p,e,\"secret_nonce\")),e.length,p.push(o));var h=K(t=O(p,t,\"ciphertext\")),y=t.length;p.push(h),a=O(p,a,\"mac\");var i,l=0|r._crypto_box_macbytes();a.length!==l&&L(p,\"invalid mac length\"),i=K(a),p.push(i);var u=null,d=0;null!=_&&(u=K(_=O(p,_,\"additional_data\")),d=_.length,p.push(u)),n=O(p,n,\"public_nonce\");var v,g=0|r._crypto_aead_xchacha20poly1305_ietf_npubbytes();n.length!==g&&L(p,\"invalid public_nonce length\"),v=K(n),p.push(v),s=O(p,s,\"key\");var b,f=0|r._crypto_aead_xchacha20poly1305_ietf_keybytes();s.length!==f&&L(p,\"invalid key length\"),b=K(s),p.push(b);var m=new B(0|y),k=m.address;if(p.push(k),0===r._crypto_aead_xchacha20poly1305_ietf_decrypt_detached(k,o,h,y,0,i,u,d,0,v,b)){var x=S(m,c);return M(p),x}N(p,\"ciphertext cannot be decrypted using that key\")}function ne(e,t,a,_,n,s){var c=[];Y(s);var p=K(e=O(c,e,\"message\")),o=e.length;c.push(p);var h=null,y=0;null!=t&&(h=K(t=O(c,t,\"additional_data\")),y=t.length,c.push(h));var i=null;null!=a&&(i=K(a=O(c,a,\"secret_nonce\")),a.length,c.push(i)),_=O(c,_,\"public_nonce\");var l,u=0|r._crypto_aead_xchacha20poly1305_ietf_npubbytes();_.length!==u&&L(c,\"invalid public_nonce length\"),l=K(_),c.push(l),n=O(c,n,\"key\");var d,v=0|r._crypto_aead_xchacha20poly1305_ietf_keybytes();n.length!==v&&L(c,\"invalid key length\"),d=K(n),c.push(d);var g=new B(o+r._crypto_aead_xchacha20poly1305_ietf_abytes()|0),b=g.address;if(c.push(b),0===r._crypto_aead_xchacha20poly1305_ietf_encrypt(b,null,p,o,0,h,y,0,i,l,d)){var f=S(g,s);return M(c),f}N(c,\"invalid usage\")}function se(e,t,a,_,n,s){var c=[];Y(s);var p=K(e=O(c,e,\"message\")),o=e.length;c.push(p);var h=null,y=0;null!=t&&(h=K(t=O(c,t,\"additional_data\")),y=t.length,c.push(h));var i=null;null!=a&&(i=K(a=O(c,a,\"secret_nonce\")),a.length,c.push(i)),_=O(c,_,\"public_nonce\");var l,u=0|r._crypto_aead_xchacha20poly1305_ietf_npubbytes();_.length!==u&&L(c,\"invalid public_nonce length\"),l=K(_),c.push(l),n=O(c,n,\"key\");var d,v=0|r._crypto_aead_xchacha20poly1305_ietf_keybytes();n.length!==v&&L(c,\"invalid key length\"),d=K(n),c.push(d);var g=new B(0|o),b=g.address;c.push(b);var f=new B(0|r._crypto_aead_xchacha20poly1305_ietf_abytes()),m=f.address;if(c.push(m),0===r._crypto_aead_xchacha20poly1305_ietf_encrypt_detached(b,m,null,p,o,0,h,y,0,i,l,d)){var k=S({ciphertext:g,mac:f},s);return M(c),k}N(c,\"invalid usage\")}function ce(e){var t=[];Y(e);var a=new B(0|r._crypto_aead_xchacha20poly1305_ietf_keybytes()),_=a.address;t.push(_),r._crypto_aead_xchacha20poly1305_ietf_keygen(_);var n=S(a,e);return M(t),n}function pe(e,t,a){var _=[];Y(a);var n=K(e=O(_,e,\"message\")),s=e.length;_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_auth_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_auth_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_auth(h,n,s,0,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function oe(e,t,a){var _=[];Y(a);var n=K(e=O(_,e,\"message\")),s=e.length;_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_auth_hmacsha256_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_auth_hmacsha256_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_auth_hmacsha256(h,n,s,0,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function he(e,t){var a=[];Y(t),U(a,e,\"state_address\");var _=new B(0|r._crypto_auth_hmacsha256_bytes()),n=_.address;if(a.push(n),!(0|r._crypto_auth_hmacsha256_final(e,n))){var s=(r._free(e),S(_,t));return M(a),s}N(a,\"invalid usage\")}function ye(e,t){var a=[];Y(t);var _=null,n=0;null!=e&&(_=K(e=O(a,e,\"key\")),n=e.length,a.push(_));var s=new B(208).address;if(!(0|r._crypto_auth_hmacsha256_init(s,_,n))){var c=s;return M(a),c}N(a,\"invalid usage\")}function ie(e){var t=[];Y(e);var a=new B(0|r._crypto_auth_hmacsha256_keybytes()),_=a.address;t.push(_),r._crypto_auth_hmacsha256_keygen(_);var n=S(a,e);return M(t),n}function le(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_auth_hmacsha256_update(e,n,s)&&N(_,\"invalid usage\"),M(_)}function ue(e,t,a){var _=[];e=O(_,e,\"tag\");var n,s=0|r._crypto_auth_hmacsha256_bytes();e.length!==s&&L(_,\"invalid tag length\"),n=K(e),_.push(n);var c=K(t=O(_,t,\"message\")),p=t.length;_.push(c),a=O(_,a,\"key\");var o,h=0|r._crypto_auth_hmacsha256_keybytes();a.length!==h&&L(_,\"invalid key length\"),o=K(a),_.push(o);var y=!(0|r._crypto_auth_hmacsha256_verify(n,c,p,0,o));return M(_),y}function de(e,t,a){var _=[];Y(a);var n=K(e=O(_,e,\"message\")),s=e.length;_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_auth_hmacsha512_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_auth_hmacsha512_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_auth_hmacsha512(h,n,s,0,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function ve(e,t,a){var _=[];Y(a);var n=K(e=O(_,e,\"message\")),s=e.length;_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_auth_hmacsha512256_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_auth_hmacsha512256_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_auth_hmacsha512256(h,n,s,0,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function ge(e,t){var a=[];Y(t),U(a,e,\"state_address\");var _=new B(0|r._crypto_auth_hmacsha512256_bytes()),n=_.address;if(a.push(n),!(0|r._crypto_auth_hmacsha512256_final(e,n))){var s=(r._free(e),S(_,t));return M(a),s}N(a,\"invalid usage\")}function be(e,t){var a=[];Y(t);var _=null,n=0;null!=e&&(_=K(e=O(a,e,\"key\")),n=e.length,a.push(_));var s=new B(416).address;if(!(0|r._crypto_auth_hmacsha512256_init(s,_,n))){var c=s;return M(a),c}N(a,\"invalid usage\")}function fe(e){var t=[];Y(e);var a=new B(0|r._crypto_auth_hmacsha512256_keybytes()),_=a.address;t.push(_),r._crypto_auth_hmacsha512256_keygen(_);var n=S(a,e);return M(t),n}function me(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_auth_hmacsha512256_update(e,n,s)&&N(_,\"invalid usage\"),M(_)}function ke(e,t,a){var _=[];e=O(_,e,\"tag\");var n,s=0|r._crypto_auth_hmacsha512256_bytes();e.length!==s&&L(_,\"invalid tag length\"),n=K(e),_.push(n);var c=K(t=O(_,t,\"message\")),p=t.length;_.push(c),a=O(_,a,\"key\");var o,h=0|r._crypto_auth_hmacsha512256_keybytes();a.length!==h&&L(_,\"invalid key length\"),o=K(a),_.push(o);var y=!(0|r._crypto_auth_hmacsha512256_verify(n,c,p,0,o));return M(_),y}function xe(e,t){var a=[];Y(t),U(a,e,\"state_address\");var _=new B(0|r._crypto_auth_hmacsha512_bytes()),n=_.address;if(a.push(n),!(0|r._crypto_auth_hmacsha512_final(e,n))){var s=(r._free(e),S(_,t));return M(a),s}N(a,\"invalid usage\")}function Ee(e,t){var a=[];Y(t);var _=null,n=0;null!=e&&(_=K(e=O(a,e,\"key\")),n=e.length,a.push(_));var s=new B(416).address;if(!(0|r._crypto_auth_hmacsha512_init(s,_,n))){var c=s;return M(a),c}N(a,\"invalid usage\")}function Te(e){var t=[];Y(e);var a=new B(0|r._crypto_auth_hmacsha512_keybytes()),_=a.address;t.push(_),r._crypto_auth_hmacsha512_keygen(_);var n=S(a,e);return M(t),n}function Se(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_auth_hmacsha512_update(e,n,s)&&N(_,\"invalid usage\"),M(_)}function we(e,t,a){var _=[];e=O(_,e,\"tag\");var n,s=0|r._crypto_auth_hmacsha512_bytes();e.length!==s&&L(_,\"invalid tag length\"),n=K(e),_.push(n);var c=K(t=O(_,t,\"message\")),p=t.length;_.push(c),a=O(_,a,\"key\");var o,h=0|r._crypto_auth_hmacsha512_keybytes();a.length!==h&&L(_,\"invalid key length\"),o=K(a),_.push(o);var y=!(0|r._crypto_auth_hmacsha512_verify(n,c,p,0,o));return M(_),y}function Ye(e){var t=[];Y(e);var a=new B(0|r._crypto_auth_keybytes()),_=a.address;t.push(_),r._crypto_auth_keygen(_);var n=S(a,e);return M(t),n}function Be(e,t,a){var _=[];e=O(_,e,\"tag\");var n,s=0|r._crypto_auth_bytes();e.length!==s&&L(_,\"invalid tag length\"),n=K(e),_.push(n);var c=K(t=O(_,t,\"message\")),p=t.length;_.push(c),a=O(_,a,\"key\");var o,h=0|r._crypto_auth_keybytes();a.length!==h&&L(_,\"invalid key length\"),o=K(a),_.push(o);var y=!(0|r._crypto_auth_verify(n,c,p,0,o));return M(_),y}function Ke(e,t,a){var _=[];Y(a),e=O(_,e,\"publicKey\");var n,s=0|r._crypto_box_publickeybytes();e.length!==s&&L(_,\"invalid publicKey length\"),n=K(e),_.push(n),t=O(_,t,\"privateKey\");var c,p=0|r._crypto_box_secretkeybytes();t.length!==p&&L(_,\"invalid privateKey length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_box_beforenmbytes()),h=o.address;if(_.push(h),!(0|r._crypto_box_beforenm(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function Ae(e,t,a){var _=[];Y(a),e=O(_,e,\"publicKey\");var n,s=0|r._crypto_box_curve25519xchacha20poly1305_publickeybytes();e.length!==s&&L(_,\"invalid publicKey length\"),n=K(e),_.push(n),t=O(_,t,\"privateKey\");var c,p=0|r._crypto_box_curve25519xchacha20poly1305_secretkeybytes();t.length!==p&&L(_,\"invalid privateKey length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_box_curve25519xchacha20poly1305_beforenmbytes()),h=o.address;if(_.push(h),!(0|r._crypto_box_curve25519xchacha20poly1305_beforenm(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function Ie(e,t,a,_,n){var s=[];Y(n);var c=K(e=O(s,e,\"message\")),p=e.length;s.push(c),t=O(s,t,\"nonce\");var o,h=0|r._crypto_box_curve25519xchacha20poly1305_noncebytes();t.length!==h&&L(s,\"invalid nonce length\"),o=K(t),s.push(o),a=O(s,a,\"publicKey\");var y,i=0|r._crypto_box_curve25519xchacha20poly1305_publickeybytes();a.length!==i&&L(s,\"invalid publicKey length\"),y=K(a),s.push(y),_=O(s,_,\"privateKey\");var l,u=0|r._crypto_box_curve25519xchacha20poly1305_secretkeybytes();_.length!==u&&L(s,\"invalid privateKey length\"),l=K(_),s.push(l);var d=new B(0|p),v=d.address;s.push(v);var g=new B(0|r._crypto_box_curve25519xchacha20poly1305_macbytes()),b=g.address;if(s.push(b),!(0|r._crypto_box_curve25519xchacha20poly1305_detached(v,b,c,p,0,o,y,l))){var f=S({ciphertext:d,mac:g},n);return M(s),f}N(s,\"invalid usage\")}function Me(e,t,a,_){var n=[];Y(_);var s=K(e=O(n,e,\"message\")),c=e.length;n.push(s),t=O(n,t,\"nonce\");var p,o=0|r._crypto_box_curve25519xchacha20poly1305_noncebytes();t.length!==o&&L(n,\"invalid nonce length\"),p=K(t),n.push(p),a=O(n,a,\"sharedKey\");var h,y=0|r._crypto_box_curve25519xchacha20poly1305_beforenmbytes();a.length!==y&&L(n,\"invalid sharedKey length\"),h=K(a),n.push(h);var i=new B(0|c),l=i.address;n.push(l);var u=new B(0|r._crypto_box_curve25519xchacha20poly1305_macbytes()),d=u.address;if(n.push(d),!(0|r._crypto_box_curve25519xchacha20poly1305_detached_afternm(l,d,s,c,0,p,h))){var v=S({ciphertext:i,mac:u},_);return M(n),v}N(n,\"invalid usage\")}function Ne(e,t,a,_,n){var s=[];Y(n);var c=K(e=O(s,e,\"message\")),p=e.length;s.push(c),t=O(s,t,\"nonce\");var o,h=0|r._crypto_box_curve25519xchacha20poly1305_noncebytes();t.length!==h&&L(s,\"invalid nonce length\"),o=K(t),s.push(o),a=O(s,a,\"publicKey\");var y,i=0|r._crypto_box_curve25519xchacha20poly1305_publickeybytes();a.length!==i&&L(s,\"invalid publicKey length\"),y=K(a),s.push(y),_=O(s,_,\"privateKey\");var l,u=0|r._crypto_box_curve25519xchacha20poly1305_secretkeybytes();_.length!==u&&L(s,\"invalid privateKey length\"),l=K(_),s.push(l);var d=new B(p+r._crypto_box_curve25519xchacha20poly1305_macbytes()|0),v=d.address;if(s.push(v),!(0|r._crypto_box_curve25519xchacha20poly1305_easy(v,c,p,0,o,y,l))){var g=S(d,n);return M(s),g}N(s,\"invalid usage\")}function Le(e,t,a,_){var n=[];Y(_);var s=K(e=O(n,e,\"message\")),c=e.length;n.push(s),t=O(n,t,\"nonce\");var p,o=0|r._crypto_box_curve25519xchacha20poly1305_noncebytes();t.length!==o&&L(n,\"invalid nonce length\"),p=K(t),n.push(p),a=O(n,a,\"sharedKey\");var h,y=0|r._crypto_box_curve25519xchacha20poly1305_beforenmbytes();a.length!==y&&L(n,\"invalid sharedKey length\"),h=K(a),n.push(h);var i=new B(c+r._crypto_box_curve25519xchacha20poly1305_macbytes()|0),l=i.address;if(n.push(l),!(0|r._crypto_box_curve25519xchacha20poly1305_easy_afternm(l,s,c,0,p,h))){var u=S(i,_);return M(n),u}N(n,\"invalid usage\")}function Ue(e){var t=[];Y(e);var a=new B(0|r._crypto_box_curve25519xchacha20poly1305_publickeybytes()),_=a.address;t.push(_);var n=new B(0|r._crypto_box_curve25519xchacha20poly1305_secretkeybytes()),s=n.address;t.push(s),r._crypto_box_curve25519xchacha20poly1305_keypair(_,s);var c=S({publicKey:a,privateKey:n,keyType:\"curve25519\"},e);return M(t),c}function Oe(e,t,a,_,n,s){var c=[];Y(s);var p=K(e=O(c,e,\"ciphertext\")),o=e.length;c.push(p),t=O(c,t,\"mac\");var h,y=0|r._crypto_box_curve25519xchacha20poly1305_macbytes();t.length!==y&&L(c,\"invalid mac length\"),h=K(t),c.push(h),a=O(c,a,\"nonce\");var i,l=0|r._crypto_box_curve25519xchacha20poly1305_noncebytes();a.length!==l&&L(c,\"invalid nonce length\"),i=K(a),c.push(i),_=O(c,_,\"publicKey\");var u,d=0|r._crypto_box_curve25519xchacha20poly1305_publickeybytes();_.length!==d&&L(c,\"invalid publicKey length\"),u=K(_),c.push(u),n=O(c,n,\"privateKey\");var v,g=0|r._crypto_box_curve25519xchacha20poly1305_secretkeybytes();n.length!==g&&L(c,\"invalid privateKey length\"),v=K(n),c.push(v);var b=new B(0|o),f=b.address;if(c.push(f),!(0|r._crypto_box_curve25519xchacha20poly1305_open_detached(f,p,h,o,0,i,u,v))){var m=S(b,s);return M(c),m}N(c,\"incorrect key pair for the given ciphertext\")}function Ce(e,t,a,_,n){var s=[];Y(n);var c=K(e=O(s,e,\"ciphertext\")),p=e.length;s.push(c),t=O(s,t,\"mac\");var o,h=0|r._crypto_box_curve25519xchacha20poly1305_macbytes();t.length!==h&&L(s,\"invalid mac length\"),o=K(t),s.push(o),a=O(s,a,\"nonce\");var y,i=0|r._crypto_box_curve25519xchacha20poly1305_noncebytes();a.length!==i&&L(s,\"invalid nonce length\"),y=K(a),s.push(y),_=O(s,_,\"sharedKey\");var l,u=0|r._crypto_box_curve25519xchacha20poly1305_beforenmbytes();_.length!==u&&L(s,\"invalid sharedKey length\"),l=K(_),s.push(l);var d=new B(0|p),v=d.address;if(s.push(v),!(0|r._crypto_box_curve25519xchacha20poly1305_open_detached_afternm(v,c,o,p,0,y,l))){var g=S(d,n);return M(s),g}N(s,\"incorrect secret key for the given ciphertext\")}function Re(e,t,a,_,n){var s=[];Y(n),e=O(s,e,\"ciphertext\");var c,p=r._crypto_box_curve25519xchacha20poly1305_macbytes(),o=e.length;o<p&&L(s,\"ciphertext is too short\"),c=K(e),s.push(c),t=O(s,t,\"nonce\");var h,y=0|r._crypto_box_curve25519xchacha20poly1305_noncebytes();t.length!==y&&L(s,\"invalid nonce length\"),h=K(t),s.push(h),a=O(s,a,\"publicKey\");var i,l=0|r._crypto_box_curve25519xchacha20poly1305_publickeybytes();a.length!==l&&L(s,\"invalid publicKey length\"),i=K(a),s.push(i),_=O(s,_,\"privateKey\");var u,d=0|r._crypto_box_curve25519xchacha20poly1305_secretkeybytes();_.length!==d&&L(s,\"invalid privateKey length\"),u=K(_),s.push(u);var v=new B(o-r._crypto_box_curve25519xchacha20poly1305_macbytes()|0),g=v.address;if(s.push(g),!(0|r._crypto_box_curve25519xchacha20poly1305_open_easy(g,c,o,0,h,i,u))){var b=S(v,n);return M(s),b}N(s,\"incorrect key pair for the given ciphertext\")}function Pe(e,t,a,_){var n=[];Y(_);var s=K(e=O(n,e,\"ciphertext\")),c=e.length;n.push(s),t=O(n,t,\"nonce\");var p,o=0|r._crypto_box_curve25519xchacha20poly1305_noncebytes();t.length!==o&&L(n,\"invalid nonce length\"),p=K(t),n.push(p),a=O(n,a,\"sharedKey\");var h,y=0|r._crypto_box_curve25519xchacha20poly1305_beforenmbytes();a.length!==y&&L(n,\"invalid sharedKey length\"),h=K(a),n.push(h);var i=new B(c-r._crypto_box_curve25519xchacha20poly1305_macbytes()|0),l=i.address;if(n.push(l),!(0|r._crypto_box_curve25519xchacha20poly1305_open_easy_afternm(l,s,c,0,p,h))){var u=S(i,_);return M(n),u}N(n,\"incorrect secret key for the given ciphertext\")}function Xe(e,t,a){var _=[];Y(a);var n=K(e=O(_,e,\"message\")),s=e.length;_.push(n),t=O(_,t,\"publicKey\");var c,p=0|r._crypto_box_curve25519xchacha20poly1305_publickeybytes();t.length!==p&&L(_,\"invalid publicKey length\"),c=K(t),_.push(c);var o=new B(s+r._crypto_box_curve25519xchacha20poly1305_sealbytes()|0),h=o.address;_.push(h),r._crypto_box_curve25519xchacha20poly1305_seal(h,n,s,0,c);var y=S(o,a);return M(_),y}function De(e,t,a,_){var n=[];Y(_),e=O(n,e,\"ciphertext\");var s,c=r._crypto_box_curve25519xchacha20poly1305_sealbytes(),p=e.length;p<c&&L(n,\"ciphertext is too short\"),s=K(e),n.push(s),t=O(n,t,\"publicKey\");var o,h=0|r._crypto_box_curve25519xchacha20poly1305_publickeybytes();t.length!==h&&L(n,\"invalid publicKey length\"),o=K(t),n.push(o),a=O(n,a,\"secretKey\");var y,i=0|r._crypto_box_curve25519xchacha20poly1305_secretkeybytes();a.length!==i&&L(n,\"invalid secretKey length\"),y=K(a),n.push(y);var l=new B(p-r._crypto_box_curve25519xchacha20poly1305_sealbytes()|0),u=l.address;n.push(u),r._crypto_box_curve25519xchacha20poly1305_seal_open(u,s,p,0,o,y);var d=S(l,_);return M(n),d}function Ge(e,t){var a=[];Y(t),e=O(a,e,\"seed\");var _,n=0|r._crypto_box_curve25519xchacha20poly1305_seedbytes();e.length!==n&&L(a,\"invalid seed length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_box_curve25519xchacha20poly1305_publickeybytes()),c=s.address;a.push(c);var p=new B(0|r._crypto_box_curve25519xchacha20poly1305_secretkeybytes()),o=p.address;if(a.push(o),!(0|r._crypto_box_curve25519xchacha20poly1305_seed_keypair(c,o,_))){var h={publicKey:S(s,t),privateKey:S(p,t),keyType:\"x25519\"};return M(a),h}N(a,\"invalid usage\")}function Fe(e,t,a,_,n){var s=[];Y(n);var c=K(e=O(s,e,\"message\")),p=e.length;s.push(c),t=O(s,t,\"nonce\");var o,h=0|r._crypto_box_noncebytes();t.length!==h&&L(s,\"invalid nonce length\"),o=K(t),s.push(o),a=O(s,a,\"publicKey\");var y,i=0|r._crypto_box_publickeybytes();a.length!==i&&L(s,\"invalid publicKey length\"),y=K(a),s.push(y),_=O(s,_,\"privateKey\");var l,u=0|r._crypto_box_secretkeybytes();_.length!==u&&L(s,\"invalid privateKey length\"),l=K(_),s.push(l);var d=new B(0|p),v=d.address;s.push(v);var g=new B(0|r._crypto_box_macbytes()),b=g.address;if(s.push(b),!(0|r._crypto_box_detached(v,b,c,p,0,o,y,l))){var f=S({ciphertext:d,mac:g},n);return M(s),f}N(s,\"invalid usage\")}function Ve(e,t,a,_,n){var s=[];Y(n);var c=K(e=O(s,e,\"message\")),p=e.length;s.push(c),t=O(s,t,\"nonce\");var o,h=0|r._crypto_box_noncebytes();t.length!==h&&L(s,\"invalid nonce length\"),o=K(t),s.push(o),a=O(s,a,\"publicKey\");var y,i=0|r._crypto_box_publickeybytes();a.length!==i&&L(s,\"invalid publicKey length\"),y=K(a),s.push(y),_=O(s,_,\"privateKey\");var l,u=0|r._crypto_box_secretkeybytes();_.length!==u&&L(s,\"invalid privateKey length\"),l=K(_),s.push(l);var d=new B(p+r._crypto_box_macbytes()|0),v=d.address;if(s.push(v),!(0|r._crypto_box_easy(v,c,p,0,o,y,l))){var g=S(d,n);return M(s),g}N(s,\"invalid usage\")}function qe(e,t,a,_){var n=[];Y(_);var s=K(e=O(n,e,\"message\")),c=e.length;n.push(s),t=O(n,t,\"nonce\");var p,o=0|r._crypto_box_noncebytes();t.length!==o&&L(n,\"invalid nonce length\"),p=K(t),n.push(p),a=O(n,a,\"sharedKey\");var h,y=0|r._crypto_box_beforenmbytes();a.length!==y&&L(n,\"invalid sharedKey length\"),h=K(a),n.push(h);var i=new B(c+r._crypto_box_macbytes()|0),l=i.address;if(n.push(l),!(0|r._crypto_box_easy_afternm(l,s,c,0,p,h))){var u=S(i,_);return M(n),u}N(n,\"invalid usage\")}function He(e){var t=[];Y(e);var a=new B(0|r._crypto_box_publickeybytes()),_=a.address;t.push(_);var n=new B(0|r._crypto_box_secretkeybytes()),s=n.address;if(t.push(s),!(0|r._crypto_box_keypair(_,s))){var c={publicKey:S(a,e),privateKey:S(n,e),keyType:\"x25519\"};return M(t),c}N(t,\"internal error\")}function ze(e,t,a,_,n,s){var c=[];Y(s);var p=K(e=O(c,e,\"ciphertext\")),o=e.length;c.push(p),t=O(c,t,\"mac\");var h,y=0|r._crypto_box_macbytes();t.length!==y&&L(c,\"invalid mac length\"),h=K(t),c.push(h),a=O(c,a,\"nonce\");var i,l=0|r._crypto_box_noncebytes();a.length!==l&&L(c,\"invalid nonce length\"),i=K(a),c.push(i),_=O(c,_,\"publicKey\");var u,d=0|r._crypto_box_publickeybytes();_.length!==d&&L(c,\"invalid publicKey length\"),u=K(_),c.push(u),n=O(c,n,\"privateKey\");var v,g=0|r._crypto_box_secretkeybytes();n.length!==g&&L(c,\"invalid privateKey length\"),v=K(n),c.push(v);var b=new B(0|o),f=b.address;if(c.push(f),!(0|r._crypto_box_open_detached(f,p,h,o,0,i,u,v))){var m=S(b,s);return M(c),m}N(c,\"incorrect key pair for the given ciphertext\")}function We(e,t,a,_,n){var s=[];Y(n),e=O(s,e,\"ciphertext\");var c,p=r._crypto_box_macbytes(),o=e.length;o<p&&L(s,\"ciphertext is too short\"),c=K(e),s.push(c),t=O(s,t,\"nonce\");var h,y=0|r._crypto_box_noncebytes();t.length!==y&&L(s,\"invalid nonce length\"),h=K(t),s.push(h),a=O(s,a,\"publicKey\");var i,l=0|r._crypto_box_publickeybytes();a.length!==l&&L(s,\"invalid publicKey length\"),i=K(a),s.push(i),_=O(s,_,\"privateKey\");var u,d=0|r._crypto_box_secretkeybytes();_.length!==d&&L(s,\"invalid privateKey length\"),u=K(_),s.push(u);var v=new B(o-r._crypto_box_macbytes()|0),g=v.address;if(s.push(g),!(0|r._crypto_box_open_easy(g,c,o,0,h,i,u))){var b=S(v,n);return M(s),b}N(s,\"incorrect key pair for the given ciphertext\")}function je(e,t,a,_){var n=[];Y(_);var s=K(e=O(n,e,\"ciphertext\")),c=e.length;n.push(s),t=O(n,t,\"nonce\");var p,o=0|r._crypto_box_noncebytes();t.length!==o&&L(n,\"invalid nonce length\"),p=K(t),n.push(p),a=O(n,a,\"sharedKey\");var h,y=0|r._crypto_box_beforenmbytes();a.length!==y&&L(n,\"invalid sharedKey length\"),h=K(a),n.push(h);var i=new B(c-r._crypto_box_macbytes()|0),l=i.address;if(n.push(l),!(0|r._crypto_box_open_easy_afternm(l,s,c,0,p,h))){var u=S(i,_);return M(n),u}N(n,\"incorrect secret key for the given ciphertext\")}function Je(e,t,a){var _=[];Y(a);var n=K(e=O(_,e,\"message\")),s=e.length;_.push(n),t=O(_,t,\"publicKey\");var c,p=0|r._crypto_box_publickeybytes();t.length!==p&&L(_,\"invalid publicKey length\"),c=K(t),_.push(c);var o=new B(s+r._crypto_box_sealbytes()|0),h=o.address;if(_.push(h),!(0|r._crypto_box_seal(h,n,s,0,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function Qe(e,t,a,_){var n=[];Y(_),e=O(n,e,\"ciphertext\");var s,c=r._crypto_box_sealbytes(),p=e.length;p<c&&L(n,\"ciphertext is too short\"),s=K(e),n.push(s),t=O(n,t,\"publicKey\");var o,h=0|r._crypto_box_publickeybytes();t.length!==h&&L(n,\"invalid publicKey length\"),o=K(t),n.push(o),a=O(n,a,\"privateKey\");var y,i=0|r._crypto_box_secretkeybytes();a.length!==i&&L(n,\"invalid privateKey length\"),y=K(a),n.push(y);var l=new B(p-r._crypto_box_sealbytes()|0),u=l.address;if(n.push(u),!(0|r._crypto_box_seal_open(u,s,p,0,o,y))){var d=S(l,_);return M(n),d}N(n,\"incorrect key pair for the given ciphertext\")}function Ze(e,t){var a=[];Y(t),e=O(a,e,\"seed\");var _,n=0|r._crypto_box_seedbytes();e.length!==n&&L(a,\"invalid seed length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_box_publickeybytes()),c=s.address;a.push(c);var p=new B(0|r._crypto_box_secretkeybytes()),o=p.address;if(a.push(o),!(0|r._crypto_box_seed_keypair(c,o,_))){var h={publicKey:S(s,t),privateKey:S(p,t),keyType:\"x25519\"};return M(a),h}N(a,\"invalid usage\")}function $e(e,t,a){var _=[];Y(a),e=O(_,e,\"p\");var n,s=0|r._crypto_core_ed25519_bytes();e.length!==s&&L(_,\"invalid p length\"),n=K(e),_.push(n),t=O(_,t,\"q\");var c,p=0|r._crypto_core_ed25519_bytes();t.length!==p&&L(_,\"invalid q length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_core_ed25519_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_core_ed25519_add(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"input is an invalid element\")}function er(e,t){var a=[];Y(t);var _=K(e=O(a,e,\"r\"));e.length,a.push(_);var n=new B(0|r._crypto_core_ed25519_bytes()),s=n.address;if(a.push(s),!(0|r._crypto_core_ed25519_from_hash(s,_))){var c=S(n,t);return M(a),c}N(a,\"invalid usage\")}function rr(e,t){var a=[];Y(t);var _=K(e=O(a,e,\"r\"));e.length,a.push(_);var n=new B(0|r._crypto_core_ed25519_bytes()),s=n.address;if(a.push(s),!(0|r._crypto_core_ed25519_from_uniform(s,_))){var c=S(n,t);return M(a),c}N(a,\"invalid usage\")}function tr(e,t){var a=[];Y(t),e=O(a,e,\"repr\");var _,n=0|r._crypto_core_ed25519_bytes();e.length!==n&&L(a,\"invalid repr length\"),_=K(e),a.push(_);var s=1==(0|r._crypto_core_ed25519_is_valid_point(_));return M(a),s}function ar(e){var t=[];Y(e);var a=new B(0|r._crypto_core_ed25519_bytes()),_=a.address;t.push(_),r._crypto_core_ed25519_random(_);var n=S(a,e);return M(t),n}function _r(e,t,a){var _=[];Y(a),e=O(_,e,\"x\");var n,s=0|r._crypto_core_ed25519_scalarbytes();e.length!==s&&L(_,\"invalid x length\"),n=K(e),_.push(n),t=O(_,t,\"y\");var c,p=0|r._crypto_core_ed25519_scalarbytes();t.length!==p&&L(_,\"invalid y length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_core_ed25519_scalarbytes()),h=o.address;_.push(h),r._crypto_core_ed25519_scalar_add(h,n,c);var y=S(o,a);return M(_),y}function nr(e,t){var a=[];Y(t),e=O(a,e,\"s\");var _,n=0|r._crypto_core_ed25519_scalarbytes();e.length!==n&&L(a,\"invalid s length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_core_ed25519_scalarbytes()),c=s.address;a.push(c),r._crypto_core_ed25519_scalar_complement(c,_);var p=S(s,t);return M(a),p}function sr(e,t){var a=[];Y(t),e=O(a,e,\"s\");var _,n=0|r._crypto_core_ed25519_scalarbytes();e.length!==n&&L(a,\"invalid s length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_core_ed25519_scalarbytes()),c=s.address;if(a.push(c),!(0|r._crypto_core_ed25519_scalar_invert(c,_))){var p=S(s,t);return M(a),p}N(a,\"invalid reciprocate\")}function cr(e,t,a){var _=[];Y(a),e=O(_,e,\"x\");var n,s=0|r._crypto_core_ed25519_scalarbytes();e.length!==s&&L(_,\"invalid x length\"),n=K(e),_.push(n),t=O(_,t,\"y\");var c,p=0|r._crypto_core_ed25519_scalarbytes();t.length!==p&&L(_,\"invalid y length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_core_ed25519_scalarbytes()),h=o.address;_.push(h),r._crypto_core_ed25519_scalar_mul(h,n,c);var y=S(o,a);return M(_),y}function pr(e,t){var a=[];Y(t),e=O(a,e,\"s\");var _,n=0|r._crypto_core_ed25519_scalarbytes();e.length!==n&&L(a,\"invalid s length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_core_ed25519_scalarbytes()),c=s.address;a.push(c),r._crypto_core_ed25519_scalar_negate(c,_);var p=S(s,t);return M(a),p}function or(e){var t=[];Y(e);var a=new B(0|r._crypto_core_ed25519_scalarbytes()),_=a.address;t.push(_),r._crypto_core_ed25519_scalar_random(_);var n=S(a,e);return M(t),n}function hr(e,t){var a=[];Y(t),e=O(a,e,\"sample\");var _,n=0|r._crypto_core_ed25519_nonreducedscalarbytes();e.length!==n&&L(a,\"invalid sample length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_core_ed25519_scalarbytes()),c=s.address;a.push(c),r._crypto_core_ed25519_scalar_reduce(c,_);var p=S(s,t);return M(a),p}function yr(e,t,a){var _=[];Y(a),e=O(_,e,\"x\");var n,s=0|r._crypto_core_ed25519_scalarbytes();e.length!==s&&L(_,\"invalid x length\"),n=K(e),_.push(n),t=O(_,t,\"y\");var c,p=0|r._crypto_core_ed25519_scalarbytes();t.length!==p&&L(_,\"invalid y length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_core_ed25519_scalarbytes()),h=o.address;_.push(h),r._crypto_core_ed25519_scalar_sub(h,n,c);var y=S(o,a);return M(_),y}function ir(e,t,a){var _=[];Y(a),e=O(_,e,\"p\");var n,s=0|r._crypto_core_ed25519_bytes();e.length!==s&&L(_,\"invalid p length\"),n=K(e),_.push(n),t=O(_,t,\"q\");var c,p=0|r._crypto_core_ed25519_bytes();t.length!==p&&L(_,\"invalid q length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_core_ed25519_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_core_ed25519_sub(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"input is an invalid element\")}function lr(e,t,a,_){var n=[];Y(_),e=O(n,e,\"input\");var s,c=0|r._crypto_core_hchacha20_inputbytes();e.length!==c&&L(n,\"invalid input length\"),s=K(e),n.push(s),t=O(n,t,\"privateKey\");var p,o=0|r._crypto_core_hchacha20_keybytes();t.length!==o&&L(n,\"invalid privateKey length\"),p=K(t),n.push(p);var h=null;null!=a&&(h=K(a=O(n,a,\"constant\")),a.length,n.push(h));var y=new B(0|r._crypto_core_hchacha20_outputbytes()),i=y.address;if(n.push(i),!(0|r._crypto_core_hchacha20(i,s,p,h))){var l=S(y,_);return M(n),l}N(n,\"invalid usage\")}function ur(e,t,a,_){var n=[];Y(_),e=O(n,e,\"input\");var s,c=0|r._crypto_core_hsalsa20_inputbytes();e.length!==c&&L(n,\"invalid input length\"),s=K(e),n.push(s),t=O(n,t,\"privateKey\");var p,o=0|r._crypto_core_hsalsa20_keybytes();t.length!==o&&L(n,\"invalid privateKey length\"),p=K(t),n.push(p);var h=null;null!=a&&(h=K(a=O(n,a,\"constant\")),a.length,n.push(h));var y=new B(0|r._crypto_core_hsalsa20_outputbytes()),i=y.address;if(n.push(i),!(0|r._crypto_core_hsalsa20(i,s,p,h))){var l=S(y,_);return M(n),l}N(n,\"invalid usage\")}function dr(e,t,a){var _=[];Y(a),e=O(_,e,\"p\");var n,s=0|r._crypto_core_ristretto255_bytes();e.length!==s&&L(_,\"invalid p length\"),n=K(e),_.push(n),t=O(_,t,\"q\");var c,p=0|r._crypto_core_ristretto255_bytes();t.length!==p&&L(_,\"invalid q length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_core_ristretto255_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_core_ristretto255_add(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"input is an invalid element\")}function vr(e,t){var a=[];Y(t);var _=K(e=O(a,e,\"r\"));e.length,a.push(_);var n=new B(0|r._crypto_core_ristretto255_bytes()),s=n.address;if(a.push(s),!(0|r._crypto_core_ristretto255_from_hash(s,_))){var c=S(n,t);return M(a),c}N(a,\"invalid usage\")}function gr(e,t){var a=[];Y(t),e=O(a,e,\"repr\");var _,n=0|r._crypto_core_ristretto255_bytes();e.length!==n&&L(a,\"invalid repr length\"),_=K(e),a.push(_);var s=1==(0|r._crypto_core_ristretto255_is_valid_point(_));return M(a),s}function br(e){var t=[];Y(e);var a=new B(0|r._crypto_core_ristretto255_bytes()),_=a.address;t.push(_),r._crypto_core_ristretto255_random(_);var n=S(a,e);return M(t),n}function fr(e,t,a){var _=[];Y(a),e=O(_,e,\"x\");var n,s=0|r._crypto_core_ristretto255_scalarbytes();e.length!==s&&L(_,\"invalid x length\"),n=K(e),_.push(n),t=O(_,t,\"y\");var c,p=0|r._crypto_core_ristretto255_scalarbytes();t.length!==p&&L(_,\"invalid y length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_core_ristretto255_scalarbytes()),h=o.address;_.push(h),r._crypto_core_ristretto255_scalar_add(h,n,c);var y=S(o,a);return M(_),y}function mr(e,t){var a=[];Y(t),e=O(a,e,\"s\");var _,n=0|r._crypto_core_ristretto255_scalarbytes();e.length!==n&&L(a,\"invalid s length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_core_ristretto255_scalarbytes()),c=s.address;a.push(c),r._crypto_core_ristretto255_scalar_complement(c,_);var p=S(s,t);return M(a),p}function kr(e,t){var a=[];Y(t),e=O(a,e,\"s\");var _,n=0|r._crypto_core_ristretto255_scalarbytes();e.length!==n&&L(a,\"invalid s length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_core_ristretto255_scalarbytes()),c=s.address;if(a.push(c),!(0|r._crypto_core_ristretto255_scalar_invert(c,_))){var p=S(s,t);return M(a),p}N(a,\"invalid reciprocate\")}function xr(e,t,a){var _=[];Y(a),e=O(_,e,\"x\");var n,s=0|r._crypto_core_ristretto255_scalarbytes();e.length!==s&&L(_,\"invalid x length\"),n=K(e),_.push(n),t=O(_,t,\"y\");var c,p=0|r._crypto_core_ristretto255_scalarbytes();t.length!==p&&L(_,\"invalid y length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_core_ristretto255_scalarbytes()),h=o.address;_.push(h),r._crypto_core_ristretto255_scalar_mul(h,n,c);var y=S(o,a);return M(_),y}function Er(e,t){var a=[];Y(t),e=O(a,e,\"s\");var _,n=0|r._crypto_core_ristretto255_scalarbytes();e.length!==n&&L(a,\"invalid s length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_core_ristretto255_scalarbytes()),c=s.address;a.push(c),r._crypto_core_ristretto255_scalar_negate(c,_);var p=S(s,t);return M(a),p}function Tr(e){var t=[];Y(e);var a=new B(0|r._crypto_core_ristretto255_scalarbytes()),_=a.address;t.push(_),r._crypto_core_ristretto255_scalar_random(_);var n=S(a,e);return M(t),n}function Sr(e,t){var a=[];Y(t),e=O(a,e,\"sample\");var _,n=0|r._crypto_core_ristretto255_nonreducedscalarbytes();e.length!==n&&L(a,\"invalid sample length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_core_ristretto255_scalarbytes()),c=s.address;a.push(c),r._crypto_core_ristretto255_scalar_reduce(c,_);var p=S(s,t);return M(a),p}function wr(e,t,a){var _=[];Y(a),e=O(_,e,\"x\");var n,s=0|r._crypto_core_ristretto255_scalarbytes();e.length!==s&&L(_,\"invalid x length\"),n=K(e),_.push(n),t=O(_,t,\"y\");var c,p=0|r._crypto_core_ristretto255_scalarbytes();t.length!==p&&L(_,\"invalid y length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_core_ristretto255_scalarbytes()),h=o.address;_.push(h),r._crypto_core_ristretto255_scalar_sub(h,n,c);var y=S(o,a);return M(_),y}function Yr(e,t,a){var _=[];Y(a),e=O(_,e,\"p\");var n,s=0|r._crypto_core_ristretto255_bytes();e.length!==s&&L(_,\"invalid p length\"),n=K(e),_.push(n),t=O(_,t,\"q\");var c,p=0|r._crypto_core_ristretto255_bytes();t.length!==p&&L(_,\"invalid q length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_core_ristretto255_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_core_ristretto255_sub(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"input is an invalid element\")}function Br(e,t,a,_){var n=[];Y(_),U(n,e,\"hash_length\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(n,\"hash_length must be an unsigned integer\");var s=K(t=O(n,t,\"message\")),c=t.length;n.push(s);var p=null,o=0;null!=a&&(p=K(a=O(n,a,\"key\")),o=a.length,n.push(p));var h=new B(e|=0),y=h.address;if(n.push(y),!(0|r._crypto_generichash(y,e,s,c,0,p,o))){var i=S(h,_);return M(n),i}N(n,\"invalid usage\")}function Kr(e,t,a,_,n){var s=[];Y(n),U(s,e,\"subkey_len\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(s,\"subkey_len must be an unsigned integer\");var c=null,p=0;null!=t&&(c=K(t=O(s,t,\"key\")),p=t.length,s.push(c));var o=null,h=0;null!=a&&(a=O(s,a,\"id\"),h=0|r._crypto_generichash_blake2b_saltbytes(),a.length!==h&&L(s,\"invalid id length\"),o=K(a),s.push(o));var y=null,i=0;null!=_&&(_=O(s,_,\"ctx\"),i=0|r._crypto_generichash_blake2b_personalbytes(),_.length!==i&&L(s,\"invalid ctx length\"),y=K(_),s.push(y));var l=new B(0|e),u=l.address;if(s.push(u),!(0|r._crypto_generichash_blake2b_salt_personal(u,e,null,0,0,c,p,o,y))){var d=S(l,n);return M(s),d}N(s,\"invalid usage\")}function Ar(e,t,a){var _=[];Y(a),U(_,e,\"state_address\"),U(_,t,\"hash_length\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&L(_,\"hash_length must be an unsigned integer\");var n=new B(t|=0),s=n.address;if(_.push(s),!(0|r._crypto_generichash_final(e,s,t))){var c=(r._free(e),S(n,a));return M(_),c}N(_,\"invalid usage\")}function Ir(e,t,a){var _=[];Y(a);var n=null,s=0;null!=e&&(n=K(e=O(_,e,\"key\")),s=e.length,_.push(n)),U(_,t,\"hash_length\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&L(_,\"hash_length must be an unsigned integer\");var c=new B(357).address;if(!(0|r._crypto_generichash_init(c,n,s,t))){var p=c;return M(_),p}N(_,\"invalid usage\")}function Mr(e){var t=[];Y(e);var a=new B(0|r._crypto_generichash_keybytes()),_=a.address;t.push(_),r._crypto_generichash_keygen(_);var n=S(a,e);return M(t),n}function Nr(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_generichash_update(e,n,s)&&N(_,\"invalid usage\"),M(_)}function Lr(e,t){var a=[];Y(t);var _=K(e=O(a,e,\"message\")),n=e.length;a.push(_);var s=new B(0|r._crypto_hash_bytes()),c=s.address;if(a.push(c),!(0|r._crypto_hash(c,_,n,0))){var p=S(s,t);return M(a),p}N(a,\"invalid usage\")}function Ur(e,t){var a=[];Y(t);var _=K(e=O(a,e,\"message\")),n=e.length;a.push(_);var s=new B(0|r._crypto_hash_sha256_bytes()),c=s.address;if(a.push(c),!(0|r._crypto_hash_sha256(c,_,n,0))){var p=S(s,t);return M(a),p}N(a,\"invalid usage\")}function Or(e,t){var a=[];Y(t),U(a,e,\"state_address\");var _=new B(0|r._crypto_hash_sha256_bytes()),n=_.address;if(a.push(n),!(0|r._crypto_hash_sha256_final(e,n))){var s=(r._free(e),S(_,t));return M(a),s}N(a,\"invalid usage\")}function Cr(e){var t=[];Y(e);var a=new B(104).address;if(!(0|r._crypto_hash_sha256_init(a))){var _=a;return M(t),_}N(t,\"invalid usage\")}function Rr(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_hash_sha256_update(e,n,s)&&N(_,\"invalid usage\"),M(_)}function Pr(e,t){var a=[];Y(t);var _=K(e=O(a,e,\"message\")),n=e.length;a.push(_);var s=new B(0|r._crypto_hash_sha3256_bytes()),c=s.address;if(a.push(c),!(0|r._crypto_hash_sha3256(c,_,n))){var p=S(s,t);return M(a),p}N(a,\"invalid usage\")}function Xr(e,t){var a=[];Y(t),U(a,e,\"state_address\");var _=new B(0|r._crypto_hash_sha3256_bytes()),n=_.address;if(a.push(n),!(0|r._crypto_hash_sha3256_final(e,n))){var s=(r._free(e),S(_,t));return M(a),s}N(a,\"invalid usage\")}function Dr(e){var t=[];Y(e);var a=new B(256).address;if(!(0|r._crypto_hash_sha3256_init(a))){var _=a;return M(t),_}N(t,\"invalid usage\")}function Gr(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_hash_sha3256_update(e,n,s)&&N(_,\"invalid usage\"),M(_)}function Fr(e,t){var a=[];Y(t);var _=K(e=O(a,e,\"message\")),n=e.length;a.push(_);var s=new B(0|r._crypto_hash_sha3512_bytes()),c=s.address;if(a.push(c),!(0|r._crypto_hash_sha3512(c,_,n))){var p=S(s,t);return M(a),p}N(a,\"invalid usage\")}function Vr(e,t){var a=[];Y(t),U(a,e,\"state_address\");var _=new B(0|r._crypto_hash_sha3512_bytes()),n=_.address;if(a.push(n),!(0|r._crypto_hash_sha3512_final(e,n))){var s=(r._free(e),S(_,t));return M(a),s}N(a,\"invalid usage\")}function qr(e){var t=[];Y(e);var a=new B(256).address;if(!(0|r._crypto_hash_sha3512_init(a))){var _=a;return M(t),_}N(t,\"invalid usage\")}function Hr(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_hash_sha3512_update(e,n,s)&&N(_,\"invalid usage\"),M(_)}function zr(e,t){var a=[];Y(t);var _=K(e=O(a,e,\"message\")),n=e.length;a.push(_);var s=new B(0|r._crypto_hash_sha512_bytes()),c=s.address;if(a.push(c),!(0|r._crypto_hash_sha512(c,_,n,0))){var p=S(s,t);return M(a),p}N(a,\"invalid usage\")}function Wr(e,t){var a=[];Y(t),U(a,e,\"state_address\");var _=new B(0|r._crypto_hash_sha512_bytes()),n=_.address;if(a.push(n),!(0|r._crypto_hash_sha512_final(e,n))){var s=(r._free(e),S(_,t));return M(a),s}N(a,\"invalid usage\")}function jr(e){var t=[];Y(e);var a=new B(208).address;if(!(0|r._crypto_hash_sha512_init(a))){var _=a;return M(t),_}N(t,\"invalid usage\")}function Jr(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_hash_sha512_update(e,n,s)&&N(_,\"invalid usage\"),M(_)}function Qr(e,t,a){var _=[];Y(a),e=O(_,e,\"input\");var n,s=0|r._crypto_ipcrypt_bytes();e.length!==s&&L(_,\"invalid input length\"),n=K(e),_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_ipcrypt_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_ipcrypt_bytes()),h=o.address;_.push(h),r._crypto_ipcrypt_decrypt(h,n,c);var y=S(o,a);return M(_),y}function Zr(e,t,a){var _=[];Y(a),e=O(_,e,\"input\");var n,s=0|r._crypto_ipcrypt_bytes();e.length!==s&&L(_,\"invalid input length\"),n=K(e),_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_ipcrypt_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_ipcrypt_bytes()),h=o.address;_.push(h),r._crypto_ipcrypt_encrypt(h,n,c);var y=S(o,a);return M(_),y}function $r(e){var t=[];Y(e);var a=new B(0|r._crypto_ipcrypt_keybytes()),_=a.address;t.push(_),r._crypto_ipcrypt_keygen(_);var n=S(a,e);return M(t),n}function et(e,t,a){var _=[];Y(a),e=O(_,e,\"input\");var n,s=0|r._crypto_ipcrypt_nd_outputbytes();e.length!==s&&L(_,\"invalid input length\"),n=K(e),_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_ipcrypt_nd_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_ipcrypt_nd_inputbytes()),h=o.address;_.push(h),r._crypto_ipcrypt_nd_decrypt(h,n,c);var y=S(o,a);return M(_),y}function rt(e,t,a,_){var n=[];Y(_),e=O(n,e,\"input\");var s,c=0|r._crypto_ipcrypt_nd_inputbytes();e.length!==c&&L(n,\"invalid input length\"),s=K(e),n.push(s),t=O(n,t,\"tweak\");var p,o=0|r._crypto_ipcrypt_nd_tweakbytes();t.length!==o&&L(n,\"invalid tweak length\"),p=K(t),n.push(p),a=O(n,a,\"key\");var h,y=0|r._crypto_ipcrypt_nd_keybytes();a.length!==y&&L(n,\"invalid key length\"),h=K(a),n.push(h);var i=new B(0|r._crypto_ipcrypt_nd_outputbytes()),l=i.address;n.push(l),r._crypto_ipcrypt_nd_encrypt(l,s,p,h);var u=S(i,_);return M(n),u}function tt(e){var t=[];Y(e);var a=new B(0|r._crypto_ipcrypt_nd_keybytes()),_=a.address;t.push(_),r._crypto_ipcrypt_nd_keygen(_);var n=S(a,e);return M(t),n}function at(e,t,a){var _=[];Y(a),e=O(_,e,\"input\");var n,s=0|r._crypto_ipcrypt_ndx_outputbytes();e.length!==s&&L(_,\"invalid input length\"),n=K(e),_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_ipcrypt_ndx_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_ipcrypt_ndx_inputbytes()),h=o.address;_.push(h),r._crypto_ipcrypt_ndx_decrypt(h,n,c);var y=S(o,a);return M(_),y}function _t(e,t,a,_){var n=[];Y(_),e=O(n,e,\"input\");var s,c=0|r._crypto_ipcrypt_ndx_inputbytes();e.length!==c&&L(n,\"invalid input length\"),s=K(e),n.push(s),t=O(n,t,\"tweak\");var p,o=0|r._crypto_ipcrypt_ndx_tweakbytes();t.length!==o&&L(n,\"invalid tweak length\"),p=K(t),n.push(p),a=O(n,a,\"key\");var h,y=0|r._crypto_ipcrypt_ndx_keybytes();a.length!==y&&L(n,\"invalid key length\"),h=K(a),n.push(h);var i=new B(0|r._crypto_ipcrypt_ndx_outputbytes()),l=i.address;n.push(l),r._crypto_ipcrypt_ndx_encrypt(l,s,p,h);var u=S(i,_);return M(n),u}function nt(e){var t=[];Y(e);var a=new B(0|r._crypto_ipcrypt_ndx_keybytes()),_=a.address;t.push(_),r._crypto_ipcrypt_ndx_keygen(_);var n=S(a,e);return M(t),n}function st(e,t,a){var _=[];Y(a),e=O(_,e,\"input\");var n,s=0|r._crypto_ipcrypt_pfx_bytes();e.length!==s&&L(_,\"invalid input length\"),n=K(e),_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_ipcrypt_pfx_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_ipcrypt_pfx_bytes()),h=o.address;_.push(h),r._crypto_ipcrypt_pfx_decrypt(h,n,c);var y=S(o,a);return M(_),y}function ct(e,t,a){var _=[];Y(a),e=O(_,e,\"input\");var n,s=0|r._crypto_ipcrypt_pfx_bytes();e.length!==s&&L(_,\"invalid input length\"),n=K(e),_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_ipcrypt_pfx_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_ipcrypt_pfx_bytes()),h=o.address;_.push(h),r._crypto_ipcrypt_pfx_encrypt(h,n,c);var y=S(o,a);return M(_),y}function pt(e){var t=[];Y(e);var a=new B(0|r._crypto_ipcrypt_pfx_keybytes()),_=a.address;t.push(_),r._crypto_ipcrypt_pfx_keygen(_);var n=S(a,e);return M(t),n}function ot(e,t,a,_,n){var s=[];Y(n),U(s,e,\"subkey_len\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(s,\"subkey_len must be an unsigned integer\"),U(s,t,\"subkey_id\");var c,p=0;if(\"bigint\"==typeof t&&t>=BigInt(0)){const e=t>>BigInt(32);e>BigInt(4294967295)&&L(s,\"subkey_id cannot be more than 64 bits\"),p=Number(e),c=Number(t&BigInt(4294967295))}else\"number\"==typeof t&&(0|t)===t&&t>=0?c=t:L(s,\"subkey_id must be an unsigned integer or bigint\");\"string\"!=typeof a&&L(s,\"ctx must be a string\"),(a=v(a+\"\\0\")).length-1!==r._crypto_kdf_contextbytes()&&L(s,\"invalid ctx length\");var o=K(a);a.length,s.push(o),_=O(s,_,\"key\");var h,y=0|r._crypto_kdf_keybytes();_.length!==y&&L(s,\"invalid key length\"),h=K(_),s.push(h);var i=new B(0|e),l=i.address;s.push(l),r._crypto_kdf_derive_from_key(l,e,c,p,o,h);var u=S(i,n);return M(s),u}function ht(e){var t=[];Y(e);var a=new B(0|r._crypto_kdf_keybytes()),_=a.address;t.push(_),r._crypto_kdf_keygen(_);var n=S(a,e);return M(t),n}function yt(e,t,a){var _=[];Y(a),e=O(_,e,\"ciphertext\");var n,s=0|r._crypto_kem_ciphertextbytes();e.length!==s&&L(_,\"invalid ciphertext length\"),n=K(e),_.push(n),t=O(_,t,\"privateKey\");var c,p=0|r._crypto_kem_secretkeybytes();t.length!==p&&L(_,\"invalid privateKey length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_kem_sharedsecretbytes()),h=o.address;if(_.push(h),!(0|r._crypto_kem_dec(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function it(e,t){var a=[];Y(t),e=O(a,e,\"publicKey\");var _,n=0|r._crypto_kem_publickeybytes();e.length!==n&&L(a,\"invalid publicKey length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_kem_ciphertextbytes()),c=s.address;a.push(c);var p=new B(0|r._crypto_kem_sharedsecretbytes()),o=p.address;if(a.push(o),!(0|r._crypto_kem_enc(c,o,_))){var h=S({ciphertext:s,sharedSecret:p},t);return M(a),h}N(a,\"invalid usage\")}function lt(e){var t=[];Y(e);var a=new B(0|r._crypto_kem_publickeybytes()),_=a.address;t.push(_);var n=new B(0|r._crypto_kem_secretkeybytes()),s=n.address;if(t.push(s),!(0|r._crypto_kem_keypair(_,s))){var c={publicKey:S(a,e),privateKey:S(n,e),keyType:\"xwing\"};return M(t),c}N(t,\"internal error\")}function ut(e,t,a){var _=[];Y(a),e=O(_,e,\"ciphertext\");var n,s=0|r._crypto_kem_mlkem768_ciphertextbytes();e.length!==s&&L(_,\"invalid ciphertext length\"),n=K(e),_.push(n),t=O(_,t,\"privateKey\");var c,p=0|r._crypto_kem_mlkem768_secretkeybytes();t.length!==p&&L(_,\"invalid privateKey length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_kem_mlkem768_sharedsecretbytes()),h=o.address;if(_.push(h),!(0|r._crypto_kem_mlkem768_dec(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function dt(e,t){var a=[];Y(t),e=O(a,e,\"publicKey\");var _,n=0|r._crypto_kem_mlkem768_publickeybytes();e.length!==n&&L(a,\"invalid publicKey length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_kem_mlkem768_ciphertextbytes()),c=s.address;a.push(c);var p=new B(0|r._crypto_kem_mlkem768_sharedsecretbytes()),o=p.address;if(a.push(o),!(0|r._crypto_kem_mlkem768_enc(c,o,_))){var h=S({ciphertext:s,sharedSecret:p},t);return M(a),h}N(a,\"invalid usage\")}function vt(e,t,a){var _=[];Y(a),e=O(_,e,\"publicKey\");var n,s,c=0|r._crypto_kem_mlkem768_publickeybytes();e.length!==c&&L(_,\"invalid publicKey length\"),n=K(e),_.push(n),32!==(t=O(_,t,\"seed\")).length&&L(_,\"invalid seed length\"),s=K(t),_.push(s);var p=new B(0|r._crypto_kem_mlkem768_ciphertextbytes()),o=p.address;_.push(o);var h=new B(0|r._crypto_kem_mlkem768_sharedsecretbytes()),y=h.address;if(_.push(y),!(0|r._crypto_kem_mlkem768_enc_deterministic(o,y,n,s))){var i=S({ciphertext:p,sharedSecret:h},a);return M(_),i}N(_,\"invalid usage\")}function gt(e){var t=[];Y(e);var a=new B(0|r._crypto_kem_mlkem768_publickeybytes()),_=a.address;t.push(_);var n=new B(0|r._crypto_kem_mlkem768_secretkeybytes()),s=n.address;if(t.push(s),!(0|r._crypto_kem_mlkem768_keypair(_,s))){var c={publicKey:S(a,e),privateKey:S(n,e),keyType:\"ml-kem-768\"};return M(t),c}N(t,\"internal error\")}function bt(e,t){var a=[];Y(t),e=O(a,e,\"seed\");var _,n=0|r._crypto_kem_mlkem768_seedbytes();e.length!==n&&L(a,\"invalid seed length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_kem_mlkem768_publickeybytes()),c=s.address;a.push(c);var p=new B(0|r._crypto_kem_mlkem768_secretkeybytes()),o=p.address;if(a.push(o),!(0|r._crypto_kem_mlkem768_seed_keypair(c,o,_))){var h={publicKey:S(s,t),privateKey:S(p,t),keyType:\"ml-kem-768\"};return M(a),h}N(a,\"invalid usage\")}function ft(){var e=r._crypto_kem_primitive(),t=r.UTF8ToString(e);return M([]),t}function mt(e,t){var a=[];Y(t),e=O(a,e,\"seed\");var _,n=0|r._crypto_kem_seedbytes();e.length!==n&&L(a,\"invalid seed length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_kem_publickeybytes()),c=s.address;a.push(c);var p=new B(0|r._crypto_kem_secretkeybytes()),o=p.address;if(a.push(o),!(0|r._crypto_kem_seed_keypair(c,o,_))){var h={publicKey:S(s,t),privateKey:S(p,t),keyType:\"xwing\"};return M(a),h}N(a,\"invalid usage\")}function kt(e,t,a){var _=[];Y(a),e=O(_,e,\"ciphertext\");var n,s=0|r._crypto_kem_xwing_ciphertextbytes();e.length!==s&&L(_,\"invalid ciphertext length\"),n=K(e),_.push(n),t=O(_,t,\"privateKey\");var c,p=0|r._crypto_kem_xwing_secretkeybytes();t.length!==p&&L(_,\"invalid privateKey length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_kem_xwing_sharedsecretbytes()),h=o.address;if(_.push(h),!(0|r._crypto_kem_xwing_dec(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function xt(e,t){var a=[];Y(t),e=O(a,e,\"publicKey\");var _,n=0|r._crypto_kem_xwing_publickeybytes();e.length!==n&&L(a,\"invalid publicKey length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_kem_xwing_ciphertextbytes()),c=s.address;a.push(c);var p=new B(0|r._crypto_kem_xwing_sharedsecretbytes()),o=p.address;if(a.push(o),!(0|r._crypto_kem_xwing_enc(c,o,_))){var h=S({ciphertext:s,sharedSecret:p},t);return M(a),h}N(a,\"invalid usage\")}function Et(e,t,a){var _=[];Y(a),e=O(_,e,\"publicKey\");var n,s,c=0|r._crypto_kem_xwing_publickeybytes();e.length!==c&&L(_,\"invalid publicKey length\"),n=K(e),_.push(n),64!==(t=O(_,t,\"seed\")).length&&L(_,\"invalid seed length\"),s=K(t),_.push(s);var p=new B(0|r._crypto_kem_xwing_ciphertextbytes()),o=p.address;_.push(o);var h=new B(0|r._crypto_kem_xwing_sharedsecretbytes()),y=h.address;if(_.push(y),!(0|r._crypto_kem_xwing_enc_deterministic(o,y,n,s))){var i=S({ciphertext:p,sharedSecret:h},a);return M(_),i}N(_,\"invalid usage\")}function Tt(e){var t=[];Y(e);var a=new B(0|r._crypto_kem_xwing_publickeybytes()),_=a.address;t.push(_);var n=new B(0|r._crypto_kem_xwing_secretkeybytes()),s=n.address;if(t.push(s),!(0|r._crypto_kem_xwing_keypair(_,s))){var c={publicKey:S(a,e),privateKey:S(n,e),keyType:\"xwing\"};return M(t),c}N(t,\"internal error\")}function St(e,t){var a=[];Y(t),e=O(a,e,\"seed\");var _,n=0|r._crypto_kem_xwing_seedbytes();e.length!==n&&L(a,\"invalid seed length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_kem_xwing_publickeybytes()),c=s.address;a.push(c);var p=new B(0|r._crypto_kem_xwing_secretkeybytes()),o=p.address;if(a.push(o),!(0|r._crypto_kem_xwing_seed_keypair(c,o,_))){var h={publicKey:S(s,t),privateKey:S(p,t),keyType:\"xwing\"};return M(a),h}N(a,\"invalid usage\")}function wt(e,t,a,_){var n=[];Y(_),e=O(n,e,\"clientPublicKey\");var s,c=0|r._crypto_kx_publickeybytes();e.length!==c&&L(n,\"invalid clientPublicKey length\"),s=K(e),n.push(s),t=O(n,t,\"clientSecretKey\");var p,o=0|r._crypto_kx_secretkeybytes();t.length!==o&&L(n,\"invalid clientSecretKey length\"),p=K(t),n.push(p),a=O(n,a,\"serverPublicKey\");var h,y=0|r._crypto_kx_publickeybytes();a.length!==y&&L(n,\"invalid serverPublicKey length\"),h=K(a),n.push(h);var i=new B(0|r._crypto_kx_sessionkeybytes()),l=i.address;n.push(l);var u=new B(0|r._crypto_kx_sessionkeybytes()),d=u.address;if(n.push(d),!(0|r._crypto_kx_client_session_keys(l,d,s,p,h))){var v=S({sharedRx:i,sharedTx:u},_);return M(n),v}N(n,\"invalid usage\")}function Yt(e){var t=[];Y(e);var a=new B(0|r._crypto_kx_publickeybytes()),_=a.address;t.push(_);var n=new B(0|r._crypto_kx_secretkeybytes()),s=n.address;if(t.push(s),!(0|r._crypto_kx_keypair(_,s))){var c={publicKey:S(a,e),privateKey:S(n,e),keyType:\"x25519\"};return M(t),c}N(t,\"internal error\")}function Bt(e,t){var a=[];Y(t),e=O(a,e,\"seed\");var _,n=0|r._crypto_kx_seedbytes();e.length!==n&&L(a,\"invalid seed length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_kx_publickeybytes()),c=s.address;a.push(c);var p=new B(0|r._crypto_kx_secretkeybytes()),o=p.address;if(a.push(o),!(0|r._crypto_kx_seed_keypair(c,o,_))){var h={publicKey:S(s,t),privateKey:S(p,t),keyType:\"x25519\"};return M(a),h}N(a,\"internal error\")}function Kt(e,t,a,_){var n=[];Y(_),e=O(n,e,\"serverPublicKey\");var s,c=0|r._crypto_kx_publickeybytes();e.length!==c&&L(n,\"invalid serverPublicKey length\"),s=K(e),n.push(s),t=O(n,t,\"serverSecretKey\");var p,o=0|r._crypto_kx_secretkeybytes();t.length!==o&&L(n,\"invalid serverSecretKey length\"),p=K(t),n.push(p),a=O(n,a,\"clientPublicKey\");var h,y=0|r._crypto_kx_publickeybytes();a.length!==y&&L(n,\"invalid clientPublicKey length\"),h=K(a),n.push(h);var i=new B(0|r._crypto_kx_sessionkeybytes()),l=i.address;n.push(l);var u=new B(0|r._crypto_kx_sessionkeybytes()),d=u.address;if(n.push(d),!(0|r._crypto_kx_server_session_keys(l,d,s,p,h))){var v=S({sharedRx:i,sharedTx:u},_);return M(n),v}N(n,\"invalid usage\")}function At(e,t,a){var _=[];Y(a);var n=K(e=O(_,e,\"message\")),s=e.length;_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_onetimeauth_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_onetimeauth_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_onetimeauth(h,n,s,0,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function It(e,t){var a=[];Y(t),U(a,e,\"state_address\");var _=new B(0|r._crypto_onetimeauth_bytes()),n=_.address;if(a.push(n),!(0|r._crypto_onetimeauth_final(e,n))){var s=(r._free(e),S(_,t));return M(a),s}N(a,\"invalid usage\")}function Mt(e,t){var a=[];Y(t);var _=null;null!=e&&(_=K(e=O(a,e,\"key\")),e.length,a.push(_));var n=new B(144).address;if(!(0|r._crypto_onetimeauth_init(n,_))){var s=n;return M(a),s}N(a,\"invalid usage\")}function Nt(e){var t=[];Y(e);var a=new B(0|r._crypto_onetimeauth_keybytes()),_=a.address;t.push(_),r._crypto_onetimeauth_keygen(_);var n=S(a,e);return M(t),n}function Lt(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_onetimeauth_update(e,n,s)&&N(_,\"invalid usage\"),M(_)}function Ut(e,t,a){var _=[];e=O(_,e,\"hash\");var n,s=0|r._crypto_onetimeauth_bytes();e.length!==s&&L(_,\"invalid hash length\"),n=K(e),_.push(n);var c=K(t=O(_,t,\"message\")),p=t.length;_.push(c),a=O(_,a,\"key\");var o,h=0|r._crypto_onetimeauth_keybytes();a.length!==h&&L(_,\"invalid key length\"),o=K(a),_.push(o);var y=!(0|r._crypto_onetimeauth_verify(n,c,p,0,o));return M(_),y}function Ot(e,t,a,_,n,s,c){var p=[];Y(c),U(p,e,\"keyLength\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(p,\"keyLength must be an unsigned integer\");var o=K(t=O(p,t,\"password\")),h=t.length;p.push(o),a=O(p,a,\"salt\");var y,i=0|r._crypto_pwhash_saltbytes();a.length!==i&&L(p,\"invalid salt length\"),y=K(a),p.push(y),U(p,_,\"opsLimit\"),(\"number\"!=typeof _||(0|_)!==_||_<0)&&L(p,\"opsLimit must be an unsigned integer\"),U(p,n,\"memLimit\"),(\"number\"!=typeof n||(0|n)!==n||n<0)&&L(p,\"memLimit must be an unsigned integer\"),U(p,s,\"algorithm\"),(\"number\"!=typeof s||(0|s)!==s||s<0)&&L(p,\"algorithm must be an unsigned integer\");var l=new B(0|e),u=l.address;if(p.push(u),!(0|r._crypto_pwhash(u,e,0,o,h,0,y,_,0,n,s))){var d=S(l,c);return M(p),d}N(p,\"invalid usage\")}function Ct(e,t,a,_,n,s){var c=[];Y(s),U(c,e,\"keyLength\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(c,\"keyLength must be an unsigned integer\");var p=K(t=O(c,t,\"password\")),o=t.length;c.push(p),a=O(c,a,\"salt\");var h,y=0|r._crypto_pwhash_scryptsalsa208sha256_saltbytes();a.length!==y&&L(c,\"invalid salt length\"),h=K(a),c.push(h),U(c,_,\"opsLimit\"),(\"number\"!=typeof _||(0|_)!==_||_<0)&&L(c,\"opsLimit must be an unsigned integer\"),U(c,n,\"memLimit\"),(\"number\"!=typeof n||(0|n)!==n||n<0)&&L(c,\"memLimit must be an unsigned integer\");var i=new B(0|e),l=i.address;if(c.push(l),!(0|r._crypto_pwhash_scryptsalsa208sha256(l,e,0,p,o,0,h,_,0,n))){var u=S(i,s);return M(c),u}N(c,\"invalid usage\")}function Rt(e,t,a,_,n,s,c){var p=[];Y(c);var o=K(e=O(p,e,\"password\")),h=e.length;p.push(o);var y=K(t=O(p,t,\"salt\")),i=t.length;p.push(y),U(p,a,\"opsLimit\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&L(p,\"opsLimit must be an unsigned integer\"),U(p,_,\"r\"),(\"number\"!=typeof _||(0|_)!==_||_<0)&&L(p,\"r must be an unsigned integer\"),U(p,n,\"p\"),(\"number\"!=typeof n||(0|n)!==n||n<0)&&L(p,\"p must be an unsigned integer\"),U(p,s,\"keyLength\"),(\"number\"!=typeof s||(0|s)!==s||s<0)&&L(p,\"keyLength must be an unsigned integer\");var l=new B(0|s),u=l.address;if(p.push(u),!(0|r._crypto_pwhash_scryptsalsa208sha256_ll(o,h,y,i,a,0,_,n,u,s))){var d=S(l,c);return M(p),d}N(p,\"invalid usage\")}function Pt(e,t,a,_){var n=[];Y(_);var s=K(e=O(n,e,\"password\")),c=e.length;n.push(s),U(n,t,\"opsLimit\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&L(n,\"opsLimit must be an unsigned integer\"),U(n,a,\"memLimit\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&L(n,\"memLimit must be an unsigned integer\");var p=new B(0|r._crypto_pwhash_scryptsalsa208sha256_strbytes()).address;if(n.push(p),!(0|r._crypto_pwhash_scryptsalsa208sha256_str(p,s,c,0,t,0,a))){var o=r.UTF8ToString(p);return M(n),o}N(n,\"invalid usage\")}function Xt(e,t,a){var _=[];Y(a),\"string\"!=typeof e&&L(_,\"hashed_password must be a string\");var n=K(e=v(e+\"\\0\"));e.length,_.push(n);var s=K(t=O(_,t,\"password\")),c=t.length;_.push(s);var p=!(0|r._crypto_pwhash_scryptsalsa208sha256_str_verify(n,s,c,0));return M(_),p}function Dt(e,t,a,_){var n=[];Y(_);var s=K(e=O(n,e,\"password\")),c=e.length;n.push(s),U(n,t,\"opsLimit\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&L(n,\"opsLimit must be an unsigned integer\"),U(n,a,\"memLimit\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&L(n,\"memLimit must be an unsigned integer\");var p=new B(0|r._crypto_pwhash_strbytes()).address;if(n.push(p),!(0|r._crypto_pwhash_str(p,s,c,0,t,0,a))){var o=r.UTF8ToString(p);return M(n),o}N(n,\"invalid usage\")}function Gt(e,t,a,_){var n=[];Y(_),\"string\"!=typeof e&&L(n,\"hashed_password must be a string\");var s=K(e=v(e+\"\\0\"));e.length,n.push(s),U(n,t,\"opsLimit\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&L(n,\"opsLimit must be an unsigned integer\"),U(n,a,\"memLimit\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&L(n,\"memLimit must be an unsigned integer\");var c=!!(0|r._crypto_pwhash_str_needs_rehash(s,t,0,a));return M(n),c}function Ft(e,t,a){var _=[];Y(a),\"string\"!=typeof e&&L(_,\"hashed_password must be a string\");var n=K(e=v(e+\"\\0\"));e.length,_.push(n);var s=K(t=O(_,t,\"password\")),c=t.length;_.push(s);var p=!(0|r._crypto_pwhash_str_verify(n,s,c,0));return M(_),p}function Vt(e,t,a){var _=[];Y(a),e=O(_,e,\"privateKey\");var n,s=0|r._crypto_scalarmult_scalarbytes();e.length!==s&&L(_,\"invalid privateKey length\"),n=K(e),_.push(n),t=O(_,t,\"publicKey\");var c,p=0|r._crypto_scalarmult_bytes();t.length!==p&&L(_,\"invalid publicKey length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_scalarmult_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_scalarmult(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"weak public key\")}function qt(e,t){var a=[];Y(t),e=O(a,e,\"privateKey\");var _,n=0|r._crypto_scalarmult_scalarbytes();e.length!==n&&L(a,\"invalid privateKey length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_scalarmult_bytes()),c=s.address;if(a.push(c),!(0|r._crypto_scalarmult_base(c,_))){var p=S(s,t);return M(a),p}N(a,\"unknown error\")}function Ht(e,t,a){var _=[];Y(a),e=O(_,e,\"n\");var n,s=0|r._crypto_scalarmult_ed25519_scalarbytes();e.length!==s&&L(_,\"invalid n length\"),n=K(e),_.push(n),t=O(_,t,\"p\");var c,p=0|r._crypto_scalarmult_ed25519_bytes();t.length!==p&&L(_,\"invalid p length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_scalarmult_ed25519_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_scalarmult_ed25519(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"invalid point or scalar is 0\")}function zt(e,t){var a=[];Y(t),e=O(a,e,\"scalar\");var _,n=0|r._crypto_scalarmult_ed25519_scalarbytes();e.length!==n&&L(a,\"invalid scalar length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_scalarmult_ed25519_bytes()),c=s.address;if(a.push(c),!(0|r._crypto_scalarmult_ed25519_base(c,_))){var p=S(s,t);return M(a),p}N(a,\"scalar is 0\")}function Wt(e,t){var a=[];Y(t),e=O(a,e,\"scalar\");var _,n=0|r._crypto_scalarmult_ed25519_scalarbytes();e.length!==n&&L(a,\"invalid scalar length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_scalarmult_ed25519_bytes()),c=s.address;if(a.push(c),!(0|r._crypto_scalarmult_ed25519_base_noclamp(c,_))){var p=S(s,t);return M(a),p}N(a,\"scalar is 0\")}function jt(e,t,a){var _=[];Y(a),e=O(_,e,\"n\");var n,s=0|r._crypto_scalarmult_ed25519_scalarbytes();e.length!==s&&L(_,\"invalid n length\"),n=K(e),_.push(n),t=O(_,t,\"p\");var c,p=0|r._crypto_scalarmult_ed25519_bytes();t.length!==p&&L(_,\"invalid p length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_scalarmult_ed25519_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_scalarmult_ed25519_noclamp(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"invalid point or scalar is 0\")}function Jt(e,t,a){var _=[];Y(a),e=O(_,e,\"scalar\");var n,s=0|r._crypto_scalarmult_ristretto255_scalarbytes();e.length!==s&&L(_,\"invalid scalar length\"),n=K(e),_.push(n),t=O(_,t,\"element\");var c,p=0|r._crypto_scalarmult_ristretto255_bytes();t.length!==p&&L(_,\"invalid element length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_scalarmult_ristretto255_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_scalarmult_ristretto255(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"result is identity element\")}function Qt(e,t){var a=[];Y(t),e=O(a,e,\"scalar\");var _,n=0|r._crypto_core_ristretto255_scalarbytes();e.length!==n&&L(a,\"invalid scalar length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_core_ristretto255_bytes()),c=s.address;if(a.push(c),!(0|r._crypto_scalarmult_ristretto255_base(c,_))){var p=S(s,t);return M(a),p}N(a,\"scalar is 0\")}function Zt(e,t,a,_){var n=[];Y(_);var s=K(e=O(n,e,\"message\")),c=e.length;n.push(s),t=O(n,t,\"nonce\");var p,o=0|r._crypto_secretbox_noncebytes();t.length!==o&&L(n,\"invalid nonce length\"),p=K(t),n.push(p),a=O(n,a,\"key\");var h,y=0|r._crypto_secretbox_keybytes();a.length!==y&&L(n,\"invalid key length\"),h=K(a),n.push(h);var i=new B(0|c),l=i.address;n.push(l);var u=new B(0|r._crypto_secretbox_macbytes()),d=u.address;if(n.push(d),!(0|r._crypto_secretbox_detached(l,d,s,c,0,p,h))){var v=S({mac:u,cipher:i},_);return M(n),v}N(n,\"invalid usage\")}function $t(e,t,a,_){var n=[];Y(_);var s=K(e=O(n,e,\"message\")),c=e.length;n.push(s),t=O(n,t,\"nonce\");var p,o=0|r._crypto_secretbox_noncebytes();t.length!==o&&L(n,\"invalid nonce length\"),p=K(t),n.push(p),a=O(n,a,\"key\");var h,y=0|r._crypto_secretbox_keybytes();a.length!==y&&L(n,\"invalid key length\"),h=K(a),n.push(h);var i=new B(c+r._crypto_secretbox_macbytes()|0),l=i.address;if(n.push(l),!(0|r._crypto_secretbox_easy(l,s,c,0,p,h))){var u=S(i,_);return M(n),u}N(n,\"invalid usage\")}function ea(e){var t=[];Y(e);var a=new B(0|r._crypto_secretbox_keybytes()),_=a.address;t.push(_),r._crypto_secretbox_keygen(_);var n=S(a,e);return M(t),n}function ra(e,t,a,_,n){var s=[];Y(n);var c=K(e=O(s,e,\"ciphertext\")),p=e.length;s.push(c),t=O(s,t,\"mac\");var o,h=0|r._crypto_secretbox_macbytes();t.length!==h&&L(s,\"invalid mac length\"),o=K(t),s.push(o),a=O(s,a,\"nonce\");var y,i=0|r._crypto_secretbox_noncebytes();a.length!==i&&L(s,\"invalid nonce length\"),y=K(a),s.push(y),_=O(s,_,\"key\");var l,u=0|r._crypto_secretbox_keybytes();_.length!==u&&L(s,\"invalid key length\"),l=K(_),s.push(l);var d=new B(0|p),v=d.address;if(s.push(v),!(0|r._crypto_secretbox_open_detached(v,c,o,p,0,y,l))){var g=S(d,n);return M(s),g}N(s,\"wrong secret key for the given ciphertext\")}function ta(e,t,a,_){var n=[];Y(_),e=O(n,e,\"ciphertext\");var s,c=r._crypto_secretbox_macbytes(),p=e.length;p<c&&L(n,\"ciphertext is too short\"),s=K(e),n.push(s),t=O(n,t,\"nonce\");var o,h=0|r._crypto_secretbox_noncebytes();t.length!==h&&L(n,\"invalid nonce length\"),o=K(t),n.push(o),a=O(n,a,\"key\");var y,i=0|r._crypto_secretbox_keybytes();a.length!==i&&L(n,\"invalid key length\"),y=K(a),n.push(y);var l=new B(p-r._crypto_secretbox_macbytes()|0),u=l.address;if(n.push(u),!(0|r._crypto_secretbox_open_easy(u,s,p,0,o,y))){var d=S(l,_);return M(n),d}N(n,\"wrong secret key for the given ciphertext\")}function aa(e,t,a){var _=[];Y(a),e=O(_,e,\"header\");var n,s=0|r._crypto_secretstream_xchacha20poly1305_headerbytes();e.length!==s&&L(_,\"invalid header length\"),n=K(e),_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_secretstream_xchacha20poly1305_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(52).address;if(!(0|r._crypto_secretstream_xchacha20poly1305_init_pull(o,n,c))){var h=o;return M(_),h}N(_,\"invalid usage\")}function _a(e,t){var a=[];Y(t),e=O(a,e,\"key\");var _,n=0|r._crypto_secretstream_xchacha20poly1305_keybytes();e.length!==n&&L(a,\"invalid key length\"),_=K(e),a.push(_);var s=new B(52).address,c=new B(0|r._crypto_secretstream_xchacha20poly1305_headerbytes()),p=c.address;if(a.push(p),!(0|r._crypto_secretstream_xchacha20poly1305_init_push(s,p,_))){var o={state:s,header:S(c,t)};return M(a),o}N(a,\"invalid usage\")}function na(e){var t=[];Y(e);var a=new B(0|r._crypto_secretstream_xchacha20poly1305_keybytes()),_=a.address;t.push(_),r._crypto_secretstream_xchacha20poly1305_keygen(_);var n=S(a,e);return M(t),n}function sa(e,t,a,_){var n=[];Y(_),U(n,e,\"state_address\"),t=O(n,t,\"cipher\");var s,c=r._crypto_secretstream_xchacha20poly1305_abytes(),p=t.length;p<c&&L(n,\"cipher is too short\"),s=K(t),n.push(s);var o=null,h=0;null!=a&&(o=K(a=O(n,a,\"ad\")),h=a.length,n.push(o));var y=new B(p-r._crypto_secretstream_xchacha20poly1305_abytes()|0),i=y.address;n.push(i);var l,u=(l=A(1),n.push(l),(u=0===r._crypto_secretstream_xchacha20poly1305_pull(e,i,0,l,s,p,0,o,h)&&{tag:r.HEAPU8[l],message:y})&&{message:S(u.message,_),tag:u.tag});return M(n),u}function ca(e,t,a,_,n){var s=[];Y(n),U(s,e,\"state_address\");var c=K(t=O(s,t,\"message_chunk\")),p=t.length;s.push(c);var o=null,h=0;null!=a&&(o=K(a=O(s,a,\"ad\")),h=a.length,s.push(o)),U(s,_,\"tag\"),(\"number\"!=typeof _||(0|_)!==_||_<0)&&L(s,\"tag must be an unsigned integer\");var y=new B(p+r._crypto_secretstream_xchacha20poly1305_abytes()|0),i=y.address;if(s.push(i),!(0|r._crypto_secretstream_xchacha20poly1305_push(e,i,0,c,p,0,o,h,0,_))){var l=S(y,n);return M(s),l}N(s,\"invalid usage\")}function pa(e,t){var a=[];return Y(t),U(a,e,\"state_address\"),r._crypto_secretstream_xchacha20poly1305_rekey(e),M(a),!0}function oa(e,t,a){var _=[];Y(a);var n=K(e=O(_,e,\"message\")),s=e.length;_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_shorthash_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_shorthash_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_shorthash(h,n,s,0,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function ha(e){var t=[];Y(e);var a=new B(0|r._crypto_shorthash_keybytes()),_=a.address;t.push(_),r._crypto_shorthash_keygen(_);var n=S(a,e);return M(t),n}function ya(e,t,a){var _=[];Y(a);var n=K(e=O(_,e,\"message\")),s=e.length;_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_shorthash_siphashx24_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_shorthash_siphashx24_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_shorthash_siphashx24(h,n,s,0,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function ia(e,t,a){var _=[];Y(a);var n=K(e=O(_,e,\"message\")),s=e.length;_.push(n),t=O(_,t,\"privateKey\");var c,p=0|r._crypto_sign_secretkeybytes();t.length!==p&&L(_,\"invalid privateKey length\"),c=K(t),_.push(c);var o=new B(e.length+r._crypto_sign_bytes()|0),h=o.address;if(_.push(h),!(0|r._crypto_sign(h,null,n,s,0,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function la(e,t,a){var _=[];Y(a);var n=K(e=O(_,e,\"message\")),s=e.length;_.push(n),t=O(_,t,\"privateKey\");var c,p=0|r._crypto_sign_secretkeybytes();t.length!==p&&L(_,\"invalid privateKey length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_sign_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_sign_detached(h,null,n,s,0,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function ua(e,t){var a=[];Y(t),e=O(a,e,\"edPk\");var _,n=0|r._crypto_sign_publickeybytes();e.length!==n&&L(a,\"invalid edPk length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_scalarmult_scalarbytes()),c=s.address;if(a.push(c),!(0|r._crypto_sign_ed25519_pk_to_curve25519(c,_))){var p=S(s,t);return M(a),p}N(a,\"invalid key\")}function da(e,t){var a=[];Y(t),e=O(a,e,\"edSk\");var _,n=0|r._crypto_sign_secretkeybytes();e.length!==n&&L(a,\"invalid edSk length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_scalarmult_scalarbytes()),c=s.address;if(a.push(c),!(0|r._crypto_sign_ed25519_sk_to_curve25519(c,_))){var p=S(s,t);return M(a),p}N(a,\"invalid key\")}function va(e,t){var a=[];Y(t),e=O(a,e,\"privateKey\");var _,n=0|r._crypto_sign_secretkeybytes();e.length!==n&&L(a,\"invalid privateKey length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_sign_publickeybytes()),c=s.address;if(a.push(c),!(0|r._crypto_sign_ed25519_sk_to_pk(c,_))){var p=S(s,t);return M(a),p}N(a,\"invalid key\")}function ga(e,t){var a=[];Y(t),e=O(a,e,\"privateKey\");var _,n=0|r._crypto_sign_secretkeybytes();e.length!==n&&L(a,\"invalid privateKey length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_sign_seedbytes()),c=s.address;if(a.push(c),!(0|r._crypto_sign_ed25519_sk_to_seed(c,_))){var p=S(s,t);return M(a),p}N(a,\"invalid key\")}function ba(e,t,a){var _=[];Y(a),U(_,e,\"state_address\"),t=O(_,t,\"privateKey\");var n,s=0|r._crypto_sign_secretkeybytes();t.length!==s&&L(_,\"invalid privateKey length\"),n=K(t),_.push(n);var c=new B(0|r._crypto_sign_bytes()),p=c.address;if(_.push(p),!(0|r._crypto_sign_final_create(e,p,null,n))){var o=(r._free(e),S(c,a));return M(_),o}N(_,\"invalid usage\")}function fa(e,t,a,_){var n=[];Y(_),U(n,e,\"state_address\"),t=O(n,t,\"signature\");var s,c=0|r._crypto_sign_bytes();t.length!==c&&L(n,\"invalid signature length\"),s=K(t),n.push(s),a=O(n,a,\"publicKey\");var p,o=0|r._crypto_sign_publickeybytes();a.length!==o&&L(n,\"invalid publicKey length\"),p=K(a),n.push(p);var h=!(0|r._crypto_sign_final_verify(e,s,p));return M(n),h}function ma(e){var t=[];Y(e);var a=new B(208).address;if(!(0|r._crypto_sign_init(a))){var _=a;return M(t),_}N(t,\"internal error\")}function ka(e){var t=[];Y(e);var a=new B(0|r._crypto_sign_publickeybytes()),_=a.address;t.push(_);var n=new B(0|r._crypto_sign_secretkeybytes()),s=n.address;if(t.push(s),!(0|r._crypto_sign_keypair(_,s))){var c={publicKey:S(a,e),privateKey:S(n,e),keyType:\"ed25519\"};return M(t),c}N(t,\"internal error\")}function xa(e,t,a){var _=[];Y(a),e=O(_,e,\"signedMessage\");var n,s=r._crypto_sign_bytes(),c=e.length;c<s&&L(_,\"signedMessage is too short\"),n=K(e),_.push(n),t=O(_,t,\"publicKey\");var p,o=0|r._crypto_sign_publickeybytes();t.length!==o&&L(_,\"invalid publicKey length\"),p=K(t),_.push(p);var h=new B(c-r._crypto_sign_bytes()|0),y=h.address;if(_.push(y),!(0|r._crypto_sign_open(y,null,n,c,0,p))){var i=S(h,a);return M(_),i}N(_,\"incorrect signature for the given public key\")}function Ea(e,t){var a=[];Y(t),e=O(a,e,\"seed\");var _,n=0|r._crypto_sign_seedbytes();e.length!==n&&L(a,\"invalid seed length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_sign_publickeybytes()),c=s.address;a.push(c);var p=new B(0|r._crypto_sign_secretkeybytes()),o=p.address;if(a.push(o),!(0|r._crypto_sign_seed_keypair(c,o,_))){var h={publicKey:S(s,t),privateKey:S(p,t),keyType:\"ed25519\"};return M(a),h}N(a,\"invalid usage\")}function Ta(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_sign_update(e,n,s,0)&&N(_,\"invalid usage\"),M(_)}function Sa(e,t,a){var _=[];e=O(_,e,\"signature\");var n,s=0|r._crypto_sign_bytes();e.length!==s&&L(_,\"invalid signature length\"),n=K(e),_.push(n);var c=K(t=O(_,t,\"message\")),p=t.length;_.push(c),a=O(_,a,\"publicKey\");var o,h=0|r._crypto_sign_publickeybytes();a.length!==h&&L(_,\"invalid publicKey length\"),o=K(a),_.push(o);var y=!(0|r._crypto_sign_verify_detached(n,c,p,0,o));return M(_),y}function wa(e,t,a,_){var n=[];Y(_),U(n,e,\"outLength\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(n,\"outLength must be an unsigned integer\"),t=O(n,t,\"key\");var s,c=0|r._crypto_stream_chacha20_keybytes();t.length!==c&&L(n,\"invalid key length\"),s=K(t),n.push(s),a=O(n,a,\"nonce\");var p,o=0|r._crypto_stream_chacha20_noncebytes();a.length!==o&&L(n,\"invalid nonce length\"),p=K(a),n.push(p);var h=new B(0|e),y=h.address;n.push(y),r._crypto_stream_chacha20(y,e,0,p,s);var i=S(h,_);return M(n),i}function Ya(e,t,a,_){var n=[];Y(_);var s=K(e=O(n,e,\"input_message\")),c=e.length;n.push(s),t=O(n,t,\"nonce\");var p,o=0|r._crypto_stream_chacha20_ietf_noncebytes();t.length!==o&&L(n,\"invalid nonce length\"),p=K(t),n.push(p),a=O(n,a,\"key\");var h,y=0|r._crypto_stream_chacha20_ietf_keybytes();a.length!==y&&L(n,\"invalid key length\"),h=K(a),n.push(h);var i=new B(0|c),l=i.address;if(n.push(l),0===r._crypto_stream_chacha20_ietf_xor(l,s,c,0,p,h)){var u=S(i,_);return M(n),u}N(n,\"invalid usage\")}function Ba(e,t,a,_,n){var s=[];Y(n);var c=K(e=O(s,e,\"input_message\")),p=e.length;s.push(c),t=O(s,t,\"nonce\");var o,h=0|r._crypto_stream_chacha20_ietf_noncebytes();t.length!==h&&L(s,\"invalid nonce length\"),o=K(t),s.push(o),U(s,a,\"nonce_increment\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&L(s,\"nonce_increment must be an unsigned integer\"),_=O(s,_,\"key\");var y,i=0|r._crypto_stream_chacha20_ietf_keybytes();_.length!==i&&L(s,\"invalid key length\"),y=K(_),s.push(y);var l=new B(0|p),u=l.address;if(s.push(u),0===r._crypto_stream_chacha20_ietf_xor_ic(u,c,p,0,o,a,y)){var d=S(l,n);return M(s),d}N(s,\"invalid usage\")}function Ka(e){var t=[];Y(e);var a=new B(0|r._crypto_stream_chacha20_keybytes()),_=a.address;t.push(_),r._crypto_stream_chacha20_keygen(_);var n=S(a,e);return M(t),n}function Aa(e,t,a,_){var n=[];Y(_);var s=K(e=O(n,e,\"input_message\")),c=e.length;n.push(s),t=O(n,t,\"nonce\");var p,o=0|r._crypto_stream_chacha20_noncebytes();t.length!==o&&L(n,\"invalid nonce length\"),p=K(t),n.push(p),a=O(n,a,\"key\");var h,y=0|r._crypto_stream_chacha20_keybytes();a.length!==y&&L(n,\"invalid key length\"),h=K(a),n.push(h);var i=new B(0|c),l=i.address;if(n.push(l),0===r._crypto_stream_chacha20_xor(l,s,c,0,p,h)){var u=S(i,_);return M(n),u}N(n,\"invalid usage\")}function Ia(e,t,a,_,n){var s=[];Y(n);var c=K(e=O(s,e,\"input_message\")),p=e.length;s.push(c),t=O(s,t,\"nonce\");var o,h=0|r._crypto_stream_chacha20_noncebytes();t.length!==h&&L(s,\"invalid nonce length\"),o=K(t),s.push(o),U(s,a,\"nonce_increment\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&L(s,\"nonce_increment must be an unsigned integer\"),_=O(s,_,\"key\");var y,i=0|r._crypto_stream_chacha20_keybytes();_.length!==i&&L(s,\"invalid key length\"),y=K(_),s.push(y);var l=new B(0|p),u=l.address;if(s.push(u),0===r._crypto_stream_chacha20_xor_ic(u,c,p,0,o,a,0,y)){var d=S(l,n);return M(s),d}N(s,\"invalid usage\")}function Ma(e){var t=[];Y(e);var a=new B(0|r._crypto_stream_keybytes()),_=a.address;t.push(_),r._crypto_stream_keygen(_);var n=S(a,e);return M(t),n}function Na(e){var t=[];Y(e);var a=new B(0|r._crypto_stream_xchacha20_keybytes()),_=a.address;t.push(_),r._crypto_stream_xchacha20_keygen(_);var n=S(a,e);return M(t),n}function La(e,t,a,_){var n=[];Y(_);var s=K(e=O(n,e,\"input_message\")),c=e.length;n.push(s),t=O(n,t,\"nonce\");var p,o=0|r._crypto_stream_xchacha20_noncebytes();t.length!==o&&L(n,\"invalid nonce length\"),p=K(t),n.push(p),a=O(n,a,\"key\");var h,y=0|r._crypto_stream_xchacha20_keybytes();a.length!==y&&L(n,\"invalid key length\"),h=K(a),n.push(h);var i=new B(0|c),l=i.address;if(n.push(l),0===r._crypto_stream_xchacha20_xor(l,s,c,0,p,h)){var u=S(i,_);return M(n),u}N(n,\"invalid usage\")}function Ua(e,t,a,_,n){var s=[];Y(n);var c=K(e=O(s,e,\"input_message\")),p=e.length;s.push(c),t=O(s,t,\"nonce\");var o,h=0|r._crypto_stream_xchacha20_noncebytes();t.length!==h&&L(s,\"invalid nonce length\"),o=K(t),s.push(o),U(s,a,\"nonce_increment\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&L(s,\"nonce_increment must be an unsigned integer\"),_=O(s,_,\"key\");var y,i=0|r._crypto_stream_xchacha20_keybytes();_.length!==i&&L(s,\"invalid key length\"),y=K(_),s.push(y);var l=new B(0|p),u=l.address;if(s.push(u),0===r._crypto_stream_xchacha20_xor_ic(u,c,p,0,o,a,0,y)){var d=S(l,n);return M(s),d}N(s,\"invalid usage\")}function Oa(e,t,a){var _=[];Y(a),U(_,e,\"out_length\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(_,\"out_length must be an unsigned integer\");var n=K(t=O(_,t,\"message\")),s=t.length;_.push(n);var c=new B(e|=0),p=c.address;if(_.push(p),!(0|r._crypto_xof_shake128(p,e,n,s,0))){var o=S(c,a);return M(_),o}N(_,\"invalid usage\")}function Ca(e){var t=[];Y(e);var a=new B(256).address;if(!(0|r._crypto_xof_shake128_init(a))){var _=a;return M(t),_}N(t,\"invalid usage\")}function Ra(e,t){var a=[];Y(t),U(a,e,\"domain\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(a,\"domain must be an unsigned integer\");var _=new B(256).address;if(!(0|r._crypto_xof_shake128_init_with_domain(_,e))){var n=_;return M(a),n}N(a,\"invalid usage\")}function Pa(e,t,a){var _=[];Y(a),U(_,e,\"state_address\"),U(_,t,\"out_length\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&L(_,\"out_length must be an unsigned integer\");var n=new B(t|=0),s=n.address;if(_.push(s),!(0|r._crypto_xof_shake128_squeeze(e,s,t))){var c=S(n,a);return M(_),c}N(_,\"invalid usage\")}function Xa(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_xof_shake128_update(e,n,s,0)&&N(_,\"invalid usage\"),M(_)}function Da(e,t,a){var _=[];Y(a),U(_,e,\"out_length\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(_,\"out_length must be an unsigned integer\");var n=K(t=O(_,t,\"message\")),s=t.length;_.push(n);var c=new B(e|=0),p=c.address;if(_.push(p),!(0|r._crypto_xof_shake256(p,e,n,s,0))){var o=S(c,a);return M(_),o}N(_,\"invalid usage\")}function Ga(e){var t=[];Y(e);var a=new B(256).address;if(!(0|r._crypto_xof_shake256_init(a))){var _=a;return M(t),_}N(t,\"invalid usage\")}function Fa(e,t){var a=[];Y(t),U(a,e,\"domain\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(a,\"domain must be an unsigned integer\");var _=new B(256).address;if(!(0|r._crypto_xof_shake256_init_with_domain(_,e))){var n=_;return M(a),n}N(a,\"invalid usage\")}function Va(e,t,a){var _=[];Y(a),U(_,e,\"state_address\"),U(_,t,\"out_length\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&L(_,\"out_length must be an unsigned integer\");var n=new B(t|=0),s=n.address;if(_.push(s),!(0|r._crypto_xof_shake256_squeeze(e,s,t))){var c=S(n,a);return M(_),c}N(_,\"invalid usage\")}function qa(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_xof_shake256_update(e,n,s,0)&&N(_,\"invalid usage\"),M(_)}function Ha(e,t,a){var _=[];Y(a),U(_,e,\"out_length\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(_,\"out_length must be an unsigned integer\");var n=K(t=O(_,t,\"message\")),s=t.length;_.push(n);var c=new B(e|=0),p=c.address;if(_.push(p),!(0|r._crypto_xof_turboshake128(p,e,n,s,0))){var o=S(c,a);return M(_),o}N(_,\"invalid usage\")}function za(e){var t=[];Y(e);var a=new B(256).address;if(!(0|r._crypto_xof_turboshake128_init(a))){var _=a;return M(t),_}N(t,\"invalid usage\")}function Wa(e,t){var a=[];Y(t),U(a,e,\"domain\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(a,\"domain must be an unsigned integer\");var _=new B(256).address;if(!(0|r._crypto_xof_turboshake128_init_with_domain(_,e))){var n=_;return M(a),n}N(a,\"invalid usage\")}function ja(e,t,a){var _=[];Y(a),U(_,e,\"state_address\"),U(_,t,\"out_length\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&L(_,\"out_length must be an unsigned integer\");var n=new B(t|=0),s=n.address;if(_.push(s),!(0|r._crypto_xof_turboshake128_squeeze(e,s,t))){var c=S(n,a);return M(_),c}N(_,\"invalid usage\")}function Ja(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_xof_turboshake128_update(e,n,s,0)&&N(_,\"invalid usage\"),M(_)}function Qa(e,t,a){var _=[];Y(a),U(_,e,\"out_length\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(_,\"out_length must be an unsigned integer\");var n=K(t=O(_,t,\"message\")),s=t.length;_.push(n);var c=new B(e|=0),p=c.address;if(_.push(p),!(0|r._crypto_xof_turboshake256(p,e,n,s,0))){var o=S(c,a);return M(_),o}N(_,\"invalid usage\")}function Za(e){var t=[];Y(e);var a=new B(256).address;if(!(0|r._crypto_xof_turboshake256_init(a))){var _=a;return M(t),_}N(t,\"invalid usage\")}function $a(e,t){var a=[];Y(t),U(a,e,\"domain\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(a,\"domain must be an unsigned integer\");var _=new B(256).address;if(!(0|r._crypto_xof_turboshake256_init_with_domain(_,e))){var n=_;return M(a),n}N(a,\"invalid usage\")}function e_(e,t,a){var _=[];Y(a),U(_,e,\"state_address\"),U(_,t,\"out_length\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&L(_,\"out_length must be an unsigned integer\");var n=new B(t|=0),s=n.address;if(_.push(s),!(0|r._crypto_xof_turboshake256_squeeze(e,s,t))){var c=S(n,a);return M(_),c}N(_,\"invalid usage\")}function r_(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_xof_turboshake256_update(e,n,s,0)&&N(_,\"invalid usage\"),M(_)}function t_(e,t){var a=[];Y(t),U(a,e,\"length\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(a,\"length must be an unsigned integer\");var _=new B(0|e),n=_.address;a.push(n),r._randombytes_buf(n,e);var s=S(_,t);return M(a),s}function a_(e,t,a){var _=[];Y(a),U(_,e,\"length\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(_,\"length must be an unsigned integer\"),t=O(_,t,\"seed\");var n,s=0|r._randombytes_seedbytes();t.length!==s&&L(_,\"invalid seed length\"),n=K(t),_.push(n);var c=new B(0|e),p=c.address;_.push(p),r._randombytes_buf_deterministic(p,e,n);var o=S(c,a);return M(_),o}function __(e){Y(e),r._randombytes_close()}function n_(e){Y(e);var t=r._randombytes_random()>>>0;return M([]),t}function s_(e,t){var a=[];Y(t);for(var _=r._malloc(24),n=0;n<6;n++)r.setValue(_+4*n,r.Runtime.addFunction(e[[\"implementation_name\",\"random\",\"stir\",\"uniform\",\"buf\",\"close\"][n]]),\"i32\");0|r._randombytes_set_implementation(_)&&N(a,\"unsupported implementation\"),M(a)}function c_(e){Y(e),r._randombytes_stir()}function p_(e,t){var a=[];Y(t),U(a,e,\"upper_bound\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(a,\"upper_bound must be an unsigned integer\");var _=r._randombytes_uniform(e)>>>0;return M(a),_}function o_(e){var t,a=[];16!==(e=O(a,e,\"bin\")).length&&L(a,\"invalid bin length\"),t=K(e),a.push(t);var _=new B(46).address;if(a.push(_),0!==r._sodium_bin2ip(_,46,t)){var n=r.UTF8ToString(_);return M(a),n}N(a,\"conversion failed\")}function h_(e,t){var a=[];Y(t),\"string\"!=typeof e&&L(a,\"ip must be a string\");var _=K(e=v(e+\"\\0\")),n=e.length-1;a.push(_);var s=new B(16),c=s.address;if(a.push(c),!(0|r._sodium_ip2bin(c,_,n))){var p=S(s,t);return M(a),p}N(a,\"invalid IP address\")}function y_(){var e=r._sodium_version_string(),t=r.UTF8ToString(e);return M([]),t}B.prototype.to_Uint8Array=function(){var e=new Uint8Array(this.length);return e.set(r.HEAPU8.subarray(this.address,this.address+this.length)),e},t.add=o,t.base64_variants=m,t.compare=l,t.from_base64=x,t.from_hex=b,t.from_string=v,t.increment=p,t.is_zero=h,t.memcmp=i,t.memzero=y,t.output_formats=T,t.pad=u,t.unpad=d,t.ready=s,t.symbols=c,t.to_base64=E,t.to_hex=f,t.to_string=g;export default t;export{s as ready,o as add,l as compare,x as from_base64,b as from_hex,v as from_string,p as increment,h as is_zero,i as memcmp,y as memzero,u as pad,d as unpad,c as symbols,E as to_base64,f as to_hex,g as to_string,T as output_formats,m as base64_variants,r as libsodium};\n","import sodium from 'libsodium-wrappers';\n\n// Versioned envelope for at-rest secrets. The `version` field carries 'v1'\n// today; rotating the key or swapping the algorithm bumps to 'v2' without\n// touching existing rows. A cipher instance only knows how to read/write the\n// version it owns — older versions get migrated lazily when read.\nexport const SECRET_CIPHER_VERSION = 'v1';\n\n// The encrypted envelope this lib PRODUCES. nonce/ciphertext are framework-free\n// Uint8Array so the cipher stays SDK-consumable (no Node Buffer dependency in\n// the public output). Callers that need a Node Buffer (e.g. the drizzle/\n// postgres-js `bytea` write path in apps/api) convert with `Buffer.from(...)`\n// at their own boundary.\nexport interface EncryptedSecret {\n version: typeof SECRET_CIPHER_VERSION;\n nonce: Uint8Array;\n ciphertext: Uint8Array;\n}\n\n// The envelope this lib ACCEPTS on decrypt. nonce/ciphertext are typed as\n// ArrayBufferView so a Node Buffer read straight off a `bytea` column (Buffer\n// is an ArrayBufferView) decrypts without any conversion at the call site.\nexport interface DecryptableSecret {\n version: string;\n nonce: ArrayBufferView;\n ciphertext: ArrayBufferView;\n}\n\nexport interface SecretCipher {\n encrypt(plaintext: string): EncryptedSecret;\n decrypt(envelope: DecryptableSecret): string;\n}\n\n// libsodium reads keys/nonces/ciphertext as Uint8Array. A Node Buffer is a\n// Uint8Array view over a (possibly larger) pooled ArrayBuffer, so it must be\n// re-wrapped to honour its byteOffset/byteLength rather than handing libsodium\n// the whole backing buffer.\nfunction toUint8Array(view: ArrayBufferView): Uint8Array {\n return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n}\n\n/**\n * Decode a base64-encoded 32-byte key into a Uint8Array suitable for\n * `createSecretCipher`. Throws if it does not decode to exactly\n * `crypto_secretbox_KEYBYTES` (32) bytes.\n *\n * IMPORTANT: `sodium.ready` MUST have resolved before calling this, because it\n * reaches into the libsodium WASM module (`sodium.from_base64`,\n * `sodium.crypto_secretbox_KEYBYTES`). Calling it before the WASM has loaded\n * throws an opaque `Cannot read properties of undefined (reading '_malloc')`.\n * Prefer passing the base64 string straight to `createSecretCipher`, which\n * awaits `sodium.ready` and only then decodes — see `createSecretCipher`.\n */\nexport function decodeKey(base64: string): Uint8Array {\n const decoded = sodium.from_base64(base64, sodium.base64_variants.ORIGINAL);\n if (decoded.length !== sodium.crypto_secretbox_KEYBYTES) {\n throw new Error(\n `secret key must decode to ${sodium.crypto_secretbox_KEYBYTES} bytes (got ${decoded.length}). Generate with \\`openssl rand -base64 32\\`.`,\n );\n }\n return decoded;\n}\n\n/**\n * Build a key-parameterized libsodium `crypto_secretbox` cipher.\n *\n * The 32-byte `key` is a constructor argument — there is no global master key\n * and no framework coupling. `sodium.ready` (the async WASM load) is awaited\n * once here so the returned `encrypt`/`decrypt` are synchronous and safe to\n * call immediately.\n *\n * The key may be a raw `Uint8Array` OR a base64 string. Passing the base64\n * string is the SAFE option for boot-time callers: any base64 decode (which\n * touches the libsodium WASM module) happens INSIDE this function, AFTER\n * `await sodium.ready` has resolved. Decoding the key yourself with\n * `decodeKey(...)` and passing the bytes is only safe once `sodium.ready` has\n * already resolved somewhere in the process — on a cold boot it throws an\n * opaque WASM error, because `decodeKey`'s argument is evaluated before this\n * function gets a chance to await `sodium.ready`.\n */\nexport async function createSecretCipher(key: Uint8Array | string): Promise<SecretCipher> {\n await sodium.ready;\n // Decode a base64 key only AFTER `sodium.ready` so the WASM module is loaded\n // (decodeKey reaches into libsodium). This is the regression the boot-time\n // ordering bug exposed: an eager `decodeKey(raw)` argument ran before ready.\n const keyBytes = typeof key === 'string' ? decodeKey(key) : key;\n if (keyBytes.length !== sodium.crypto_secretbox_KEYBYTES) {\n throw new Error(\n `secret cipher key must be ${sodium.crypto_secretbox_KEYBYTES} bytes (got ${keyBytes.length}).`,\n );\n }\n\n return {\n encrypt(plaintext: string): EncryptedSecret {\n const nonce = sodium.randombytes_buf(sodium.crypto_secretbox_NONCEBYTES);\n const ciphertext = sodium.crypto_secretbox_easy(\n sodium.from_string(plaintext),\n nonce,\n keyBytes,\n );\n return {\n version: SECRET_CIPHER_VERSION,\n nonce,\n ciphertext,\n };\n },\n\n decrypt(envelope: DecryptableSecret): string {\n if (envelope.version !== SECRET_CIPHER_VERSION) {\n throw new Error(`Unsupported secret version: ${envelope.version}`);\n }\n const plaintext = sodium.crypto_secretbox_open_easy(\n toUint8Array(envelope.ciphertext),\n toUint8Array(envelope.nonce),\n keyBytes,\n );\n return sodium.to_string(plaintext);\n },\n };\n}\n","import { createSecretCipher, type SecretCipher } from '@stackbone/crypto';\nimport { type Sql } from 'postgres';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { err, ok, type Result } from '../../../result';\nimport { type DatabaseModule } from '../database/database';\n\n// `client.secrets` — AGENT-LOCAL. The agent reads its own secrets straight out\n// of `stackbone_platform.secrets` (the canonical agent-DB store) over the\n// shared `client.database` pool and decrypts them with the per-agent key\n// (`STACKBONE_SECRET_KEY`) via `@stackbone/crypto`. There is no control-plane\n// HTTP round-trip anymore: the agent owns its data.\n//\n// The agent legitimately reads `is_system` rows too — the saga writes platform\n// credentials (OpenRouter / R2) as `is_system = true`, and an agent needs them\n// at runtime even though Studio hides them from the creator. So this facade\n// does NOT filter on `is_system`.\n//\n// Connection ownership: like `client.rag`, this surface reaches the underlying\n// `postgres-js` `Sql` through `client.database.shared().$client` so the agent\n// process opens exactly one pool against `STACKBONE_POSTGRES_URL`.\n\ninterface SecretEnvelopeRow {\n version: string;\n nonce: Uint8Array;\n ciphertext: Uint8Array;\n}\n\nexport class SecretsFacade {\n private _cipher?: SecretCipher;\n\n constructor(\n private readonly _resolved: ResolvedConfig,\n /**\n * Lazy accessor for `client.database`. The facade pulls the shared\n * `postgres-js` `Sql` via `getDatabase().shared().$client` — never\n * reaching into a sibling module's implementation file.\n */\n private readonly _getDatabase: () => DatabaseModule,\n ) {}\n\n async get(name: string): Promise<Result<string>> {\n if (!name.trim()) {\n return err({ code: 'secrets_invalid_request', message: '`name` is required.' });\n }\n const cipher = await this.cipher();\n if (cipher.error) return err(cipher.error);\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n\n let rows: SecretEnvelopeRow[];\n try {\n rows = await this._getDatabase().runShared(\n (db) => db<SecretEnvelopeRow[]>`\n SELECT version, nonce, ciphertext\n FROM stackbone_platform.secrets\n WHERE name = ${name}\n LIMIT 1\n `,\n );\n } catch (cause) {\n return err({\n code: 'secrets_unavailable',\n message: `Failed to read secret \\`${name}\\` from the agent database.`,\n cause,\n });\n }\n const row = rows[0];\n if (!row) {\n return err({\n code: 'secrets_not_found',\n message: `Secret \\`${name}\\` is not registered for this agent.`,\n meta: { name },\n });\n }\n try {\n return ok(cipher.data.decrypt(row));\n } catch (cause) {\n return err({\n code: 'secrets_decrypt_failed',\n message: `Failed to decrypt secret \\`${name}\\`.`,\n cause,\n });\n }\n }\n\n /**\n * Names absent from the agent come back as omissions in the response — the\n * returned map only contains entries the agent DB actually has. Callers that\n * need \"all-or-nothing\" semantics should diff the keys.\n */\n async getMany(names: string[]): Promise<Result<Record<string, string>>> {\n if (!Array.isArray(names) || names.length === 0) {\n return err({\n code: 'secrets_invalid_request',\n message: '`names` must be a non-empty array.',\n });\n }\n const cipher = await this.cipher();\n if (cipher.error) return err(cipher.error);\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n\n let rows: (SecretEnvelopeRow & { name: string })[];\n try {\n rows = await this._getDatabase().runShared(\n (db) => db<(SecretEnvelopeRow & { name: string })[]>`\n SELECT name, version, nonce, ciphertext\n FROM stackbone_platform.secrets\n WHERE name = ANY(${names})\n `,\n );\n } catch (cause) {\n return err({\n code: 'secrets_unavailable',\n message: 'Failed to read secrets from the agent database.',\n cause,\n });\n }\n const values: Record<string, string> = {};\n for (const row of rows) {\n try {\n values[row.name] = cipher.data.decrypt(row);\n } catch (cause) {\n return err({\n code: 'secrets_decrypt_failed',\n message: `Failed to decrypt secret \\`${row.name}\\`.`,\n cause,\n });\n }\n }\n return ok(values);\n }\n\n // Built once per facade, after `sodium.ready`. The base64 key is handed\n // straight to `createSecretCipher` (it awaits the WASM load before decoding).\n private async cipher(): Promise<Result<SecretCipher>> {\n if (this._cipher) return ok(this._cipher);\n const key = this._resolved.secretKey;\n if (!key) {\n return err({\n code: 'secrets_not_configured',\n message: 'Cannot read agent secrets — `STACKBONE_SECRET_KEY` is not set in the container.',\n });\n }\n try {\n this._cipher = await createSecretCipher(key);\n return ok(this._cipher);\n } catch (cause) {\n return err({\n code: 'secrets_not_configured',\n message: 'Failed to build the per-agent secret cipher from `STACKBONE_SECRET_KEY`.',\n cause,\n });\n }\n }\n\n private sql(): Result<Sql> {\n try {\n return ok(this._getDatabase().shared().$client);\n } catch (cause) {\n const code = (cause as { code?: string } | null)?.code;\n if (code === 'database_not_configured') {\n return err({\n code: 'database_not_configured',\n message: (cause as Error).message,\n cause,\n });\n }\n return err({\n code: 'secrets_unavailable',\n message: 'Agent database handle unavailable.',\n cause,\n });\n }\n }\n}\n","// The ambient workflow SCHEDULER — the runtime-injected bridge the imperative\n// cron helpers (`scheduleWorkflow` / `unschedule` / `listSchedules`) reach.\n//\n// Recurring background work is reoriented onto workflows: a scheduled trigger is\n// a BullMQ repeatable that calls `start(name, input)` on each tick, producing an\n// independent run (the same projection `startWorkflow` gets). There are two\n// flavours, both backed by the SAME repeatable-jobs engine the runtime owns:\n//\n// - DECLARATIVE (the default): a workflow declares `export const schedules =\n// [{ cron, input }]` next to its `inputSchema`/`outputSchema`; the build\n// harvests it into the manifest and the runtime reconciles it on deploy/boot.\n// Authors never call the imperative API for these.\n// - IMPERATIVE (dynamic): `scheduleWorkflow(name, input, cron)` registers a\n// repeatable at run time; `unschedule(name)` cancels it; `listSchedules()`\n// lists the active triggers (declarative + dynamic). Dynamic schedules are\n// namespaced apart from the declarative set so deploy/boot reconciliation\n// never prunes them.\n//\n// The runtime builds an `AmbientWorkflowScheduler` on first dispatch (it owns the\n// repeatable-jobs queue on the World's Redis) and plants it here with\n// `setWorkflowScheduler()` — the same injection shape as the workflow starter.\n\n/** One active scheduled trigger, as `listSchedules()` reports it. */\nexport interface ScheduledWorkflow {\n /** The workflow this trigger starts on each tick. */\n readonly name: string;\n /** The cron expression driving the cadence. */\n readonly cron: string;\n /** The input each tick passes to the workflow. */\n readonly input: unknown;\n /** `'declarative'` (harvested from the workflow, reconciled on boot) or\n * `'dynamic'` (registered at run time via `scheduleWorkflow`). */\n readonly source: 'declarative' | 'dynamic';\n}\n\n/** The runtime-injected bridge the imperative cron helpers reach. */\nexport interface WorkflowScheduler {\n /** Register (or upsert) a DYNAMIC repeatable trigger that starts `name` with\n * `input` on the `cron` cadence. Idempotent by `name`. */\n schedule(name: string, input: unknown, cron: string): Promise<void>;\n /** Cancel a dynamic trigger by `name`. Resolves whether or not one existed. */\n unschedule(name: string): Promise<void>;\n /** List the active triggers — declarative + dynamic. */\n listSchedules(): Promise<ScheduledWorkflow[]>;\n}\n\nlet current: WorkflowScheduler | undefined;\n\n/** Plant (or clear, with `undefined`) the ambient scheduler. The runtime calls\n * this on first dispatch; tests pass a fake. Last write wins. */\nexport function setWorkflowScheduler(scheduler: WorkflowScheduler | undefined): void {\n current = scheduler;\n}\n\n/** Return the bound ambient scheduler, or throw a clear error when none is bound\n * (the imperative cron API was reached outside a running workflow runtime). */\nexport function getWorkflowScheduler(): WorkflowScheduler {\n if (!current) {\n throw new Error(\n 'No workflow scheduler is bound. `scheduleWorkflow` / `unschedule` / ' +\n '`listSchedules` can only be called inside a running workflow runtime — ' +\n 'the runtime binds the scheduler on its first dispatch.',\n );\n }\n return current;\n}\n","// Imperative workflow cron helpers — `scheduleWorkflow` / `unschedule` /\n// `listSchedules` from `@stackbone/sdk/workflow`.\n//\n// import { scheduleWorkflow, unschedule, listSchedules } from '@stackbone/sdk/workflow';\n//\n// await scheduleWorkflow('reconcile', { scope: 'daily' }, '0 3 * * *'); // 03:00 daily\n// const active = await listSchedules();\n// await unschedule('reconcile');\n//\n// These register DYNAMIC repeatable triggers at run time (each tick starts the\n// named workflow with its own independent run). For schedules that ship with the\n// workspace, prefer the DECLARATIVE form — `export const schedules = [{ cron,\n// input }]` next to the workflow — which the build harvests and the runtime\n// reconciles on deploy/boot, with no imperative call. Dynamic schedules are\n// namespaced apart so a deploy never prunes them.\n//\n// Thin shims over the ambient `WorkflowScheduler` the runtime injects on first\n// dispatch (`setWorkflowScheduler`). Unlike the trigger helpers these are NOT\n// `\"use step\"` — they are imperative management ops (idempotent upserts), not\n// per-run durable work.\n\nimport { getWorkflowScheduler, type ScheduledWorkflow } from '../../../runtime/workflow-scheduler';\nimport type { WorkflowName } from './workflow-registry';\n\nexport type { ScheduledWorkflow } from '../../../runtime/workflow-scheduler';\n\n/**\n * Register (or upsert) a dynamic recurring trigger that starts the workflow named\n * `name` with `input` on the `cron` cadence. Idempotent by `name` — calling it\n * again replaces the cadence/input. `name` is narrowed to the workspace's\n * declared workflows once `stackbone dev` has generated `.stackbone/workflows.d.ts`.\n */\nexport async function scheduleWorkflow(\n name: WorkflowName,\n input: unknown,\n cron: string,\n): Promise<void> {\n return getWorkflowScheduler().schedule(name as string, input, cron);\n}\n\n/**\n * Cancel a dynamic scheduled trigger by `name`. Resolves whether or not a trigger\n * existed. Does not touch declarative schedules (those are owned by the workflow's\n * `export const schedules` and reconciled on deploy/boot).\n */\nexport async function unschedule(name: WorkflowName): Promise<void> {\n return getWorkflowScheduler().unschedule(name as string);\n}\n\n/**\n * List the active scheduled triggers — both declarative (harvested from workflows)\n * and dynamic (registered via {@link scheduleWorkflow}) — so an operator can see\n * what recurring work is registered.\n */\nexport async function listSchedules(): Promise<ScheduledWorkflow[]> {\n return getWorkflowScheduler().listSchedules();\n}\n","// The ambient workflow STARTER — the runtime-injected bridge the workflow\n// trigger helpers (`startWorkflow` / `startWorkflowAndWait`) reach from inside a\n// running workflow.\n//\n// The trigger helpers must, from inside a `\"use workflow\"` body or a `\"use step\"`,\n// (1) resolve a workflow NAME to its runnable ref against the workspace manifest,\n// (2) validate the input against the target's declared schema, (3) enqueue the\n// start onto the World's `flows` queue with its own independent run, and — for\n// the blocking variant — (4) await the child's terminal output and validate it.\n// All of that is I/O over the World + the project's built validators, so it lives\n// in the RUNTIME, not in the peer-free SDK surface.\n//\n// The runtime builds a `WorkflowStarter` on first dispatch (it closes over the\n// `name → ref` registry, the live input/output validators, the WDK `start`\n// primitive, and the run projection) and plants it here with\n// `setWorkflowStarter()` — the SAME injection shape `setWorld()` uses to plant\n// the World into `@workflow/core`. The helpers then stay thin shims that call\n// `getWorkflowStarter()`.\n//\n// Why a module-level holder is safe: `@stackbone/sdk` is kept EXTERNAL by every\n// runtime bundler (one copy → one `AsyncLocalStorage`), so the runtime, the\n// workflow body, and every `\"use step\"` resolve THIS module instance. The\n// starter the runtime sets is therefore the one the helper reads — the same\n// realm-sharing the invocation-context ALS relies on.\n\n/**\n * Queue-level options for a workflow trigger.\n *\n * NOTE: `delaySeconds` and `idempotencyKey` are typed for forward-compatibility\n * but NOT wired in v1. The native WDK `start()` primitive (the sanctioned\n * trigger path) does not expose queue-level delay or dedup — those live one\n * layer down on the World's raw producer, and reaching it means re-implementing\n * run creation against `@workflow/core` internals. Deferred to a follow-up when\n * the WDK exposes them. Within-run idempotency already comes from `\"use step\"`\n * memoization, so a step replay never double-enqueues.\n */\nexport interface WorkflowTriggerOptions {\n /** Defer the triggered start by N seconds. Reserved — not wired in v1. */\n readonly delaySeconds?: number;\n /** Dedup key so a retry does not start the target twice. Reserved — not wired in v1. */\n readonly idempotencyKey?: string;\n}\n\n/** What a fire-and-forget trigger resolves to: the started child run's id. */\nexport interface WorkflowStartHandle {\n /** The independent run id of the workflow that was started. */\n readonly runId: string;\n}\n\n/**\n * The runtime-injected bridge the trigger helpers reach. Built by the runtime on\n * first dispatch (closing over the name→ref registry, the validators, the WDK\n * `start` primitive, and the run projection) and planted with\n * {@link setWorkflowStarter}.\n */\nexport interface WorkflowStarter {\n /**\n * Fire-and-forget: resolve `name`, validate `input`, enqueue the start on the\n * `flows` queue, and resolve with the new independent run's id. Does NOT wait\n * for the started workflow to finish.\n */\n start(name: string, input: unknown, opts?: WorkflowTriggerOptions): Promise<WorkflowStartHandle>;\n /**\n * Durable sub-workflow: resolve `name`, validate `input`, start the run, then\n * suspend until it reaches a terminal state and resolve with its terminal\n * output (validated against the target's declared output schema). Backed by the\n * WDK's native `Run.returnValue` poll-until-terminal primitive.\n */\n startAndWait(name: string, input: unknown, opts?: WorkflowTriggerOptions): Promise<unknown>;\n}\n\nlet current: WorkflowStarter | undefined;\n\n/**\n * Plant (or clear, with `undefined`) the ambient starter. The runtime calls this\n * on first dispatch with the bridge it built; tests pass a fake. Idempotent —\n * the last write wins.\n */\nexport function setWorkflowStarter(starter: WorkflowStarter | undefined): void {\n current = starter;\n}\n\n/**\n * Return the bound ambient starter, or throw a clear error when none is bound —\n * which means a trigger helper was called OUTSIDE a running workflow (the\n * runtime binds the starter only on first dispatch).\n */\nexport function getWorkflowStarter(): WorkflowStarter {\n if (!current) {\n throw new Error(\n 'No workflow starter is bound. `startWorkflow` / `startWorkflowAndWait` can ' +\n 'only be called from inside a running workflow — the runtime binds the ' +\n 'starter on its first dispatch.',\n );\n }\n return current;\n}\n","// `startWorkflow()` — start another workflow BY NAME from inside a running\n// workflow, fire-and-forget.\n//\n// import { startWorkflow } from '@stackbone/sdk/workflow';\n//\n// // decompose a large flow: hand a slice off to its own independent run\n// const { runId } = await startWorkflow('reconcile', { invoiceId });\n// // returns immediately — `reconcile` runs as its OWN run (its own runId,\n// // steps, and runs row); this workflow does not wait for it.\n//\n// The target runs with its own independent run via the runtime's run-level\n// projection (`trigger = 'workflow'`). The helper is a thin shim over the\n// ambient `WorkflowStarter` the runtime injects on first dispatch\n// (`setWorkflowStarter`), which owns name resolution, input validation against\n// the target's declared schema (fail-fast, before enqueuing), and the enqueue\n// onto the World's `flows` queue. See `runtime/workflow-starter.ts`.\n//\n// `\"use step\"` marks the enqueue as a durable, replay-safe step for the\n// eve/Workflow builder (a no-op string literal under the plain SDK build), so a\n// crash-resume of the parent does not re-enqueue the child — the same directive\n// `requestApproval`'s sub-step carries.\n\nimport {\n getWorkflowStarter,\n type WorkflowStartHandle,\n type WorkflowTriggerOptions,\n} from '../../../runtime/workflow-starter';\nimport type { WorkflowName } from './workflow-registry';\n\n/** Options for {@link startWorkflow}. See {@link WorkflowTriggerOptions}. */\nexport type StartWorkflowOptions = WorkflowTriggerOptions;\nexport type { WorkflowStartHandle } from '../../../runtime/workflow-starter';\n\n/**\n * Start the workflow named `name` with its own independent run and return its\n * `{ runId }` immediately — fire-and-forget. The input is validated against the\n * target's declared input schema BEFORE the run is enqueued; a name that does\n * not resolve, or input that violates the schema, rejects without starting\n * anything.\n *\n * `name` is typed `WorkflowName` — a loose `string` by default, narrowed to the\n * workspace's declared workflow names once `stackbone dev` has generated\n * `.stackbone/workflows.d.ts` (see `workflow-registry.ts`), so a typo becomes a\n * compile error.\n *\n * MUST be called from inside a running workflow (the runtime binds the starter on\n * first dispatch); calling it elsewhere throws.\n *\n * DURABILITY: the enqueue runs in a `\"use step\"`, so once it completes a parent\n * restart resumes with the memoized `{ runId }` and does NOT re-enqueue. A crash\n * WHILE the step is mid-flight re-runs it (at-least-once) — the same shape the\n * eve-agent-from-step path has; for fire-and-forget fan-out this is acceptable.\n * Use {@link startWorkflowAndWait} when you need the child's result.\n */\nexport async function startWorkflow(\n name: WorkflowName,\n input: unknown,\n opts?: StartWorkflowOptions,\n): Promise<WorkflowStartHandle> {\n 'use step';\n return getWorkflowStarter().start(name as string, input, opts);\n}\n","// `startWorkflowAndWait()` — run another workflow BY NAME as a durable\n// sub-routine from inside a running workflow.\n//\n// import { startWorkflowAndWait } from '@stackbone/sdk/workflow';\n//\n// // need the other workflow's result to continue:\n// const summary = await startWorkflowAndWait<Summary>('summarize', { docId });\n// // the caller suspends durably until `summarize` finishes, then resumes with\n// // its validated output.\n//\n// The target runs as its OWN independent run (its own runId, steps, runs row);\n// this workflow blocks until that run reaches a terminal state and receives its\n// output, validated against the target's declared output schema. Built on the\n// WDK's native `Run.returnValue` (poll-until-terminal + decode) — exposed through\n// the ambient `WorkflowStarter` the runtime injects on first dispatch.\n//\n// DURABILITY: like `eveAgent(...).send()` (a workflow step that blocks on another\n// entity and returns its result), this is a `\"use step\"`. The result is memoized,\n// so once the await completes a parent restart resumes with the stored output. A\n// crash WHILE the child is still running re-runs the step — the same at-least-once\n// shape the eve-agent-from-step path has.\n\nimport { getWorkflowStarter, type WorkflowTriggerOptions } from '../../../runtime/workflow-starter';\nimport type { WorkflowName } from './workflow-registry';\n\n/** Options for {@link startWorkflowAndWait}. See {@link WorkflowTriggerOptions}. */\nexport type StartWorkflowAndWaitOptions = WorkflowTriggerOptions;\n\n/**\n * Start the workflow named `name` with its own independent run and durably wait\n * for it to finish, returning its terminal output (validated against the\n * target's declared output schema). Use this when one workflow needs another's\n * result to continue.\n *\n * The input is validated against the target's declared input schema BEFORE the\n * run is enqueued; a name that does not resolve, or input that violates the\n * schema, rejects without starting anything. `TOutput` lets the caller name the\n * expected output shape (defaults to `unknown`).\n *\n * `name` is typed `WorkflowName` — narrowed to the workspace's declared workflow\n * names once `stackbone dev` has generated `.stackbone/workflows.d.ts`. MUST be\n * called from inside a running workflow.\n */\nexport async function startWorkflowAndWait<TOutput = unknown>(\n name: WorkflowName,\n input: unknown,\n opts?: StartWorkflowAndWaitOptions,\n): Promise<TOutput> {\n 'use step';\n return (await getWorkflowStarter().startAndWait(name as string, input, opts)) as TOutput;\n}\n","// `stackbone.workflows` — the namespaced home for the peer-free workflow\n// trigger + schedule helpers on the ambient client's main barrel.\n//\n// import { stackbone } from '@stackbone/sdk';\n//\n// const { runId } = await stackbone.workflows.start('reconcile', { invoiceId });\n// const summary = await stackbone.workflows.startAndWait<Summary>('summarize', { docId });\n// await stackbone.workflows.schedule('digest', { scope: 'all' }, '0 9 * * *');\n//\n// These five helpers were originally loose named exports on the\n// `@stackbone/sdk/workflow` subpath. They import NO `workflow` / `eve` peer —\n// they are thin shims over the ambient `WorkflowStarter` / `WorkflowScheduler`\n// the runtime injects on first dispatch — so, exactly like `stackbone.connection`\n// and `stackbone.agent`, they belong under one unified `stackbone.*` namespace on\n// the main barrel. The peer-BOUND workflow-authoring API (`requestApproval`,\n// `defineHook`, `sleep`) stays on the subpath: it eager-loads `workflow`, so it\n// cannot move onto the peer-free main barrel.\n//\n// This is an ALIAS object — each member references the SAME underlying function,\n// so `startWorkflow` / `startWorkflowAndWait` keep their `\"use step\"` durability\n// (the directive lives on the function declaration, not the call site) and the\n// subpath's now-`@deprecated` exports delegate to the identical implementation.\n\nimport type { ScheduledWorkflow } from '../../../runtime/workflow-scheduler';\nimport type { WorkflowStartHandle } from '../../../runtime/workflow-starter';\nimport { scheduleWorkflow, unschedule, listSchedules } from './schedule-workflow';\nimport { startWorkflow, type StartWorkflowOptions } from './start-workflow';\nimport { startWorkflowAndWait, type StartWorkflowAndWaitOptions } from './start-workflow-and-wait';\nimport type { WorkflowName } from './workflow-registry';\n\n/**\n * The shape of `stackbone.workflows` — the namespaced workflow trigger + schedule\n * surface. Every `name` is typed `WorkflowName` (a loose `string` until\n * `stackbone dev` generates `.stackbone/workflows.d.ts`, then the closed set of\n * declared workflow names — a typo is a compile error).\n */\nexport interface WorkflowsAccessor {\n /**\n * Start another workflow BY NAME as its own independent run, fire-and-forget;\n * resolves to `{ runId }` immediately. Durable `\"use step\"`. MUST be called from\n * inside a running workflow. See {@link startWorkflow}.\n */\n start(\n name: WorkflowName,\n input: unknown,\n opts?: StartWorkflowOptions,\n ): Promise<WorkflowStartHandle>;\n /**\n * Run another workflow BY NAME as a durable sub-routine: suspend until it\n * reaches a terminal state, then return its output validated against the\n * target's declared output schema. See {@link startWorkflowAndWait}.\n */\n startAndWait<TOutput = unknown>(\n name: WorkflowName,\n input: unknown,\n opts?: StartWorkflowAndWaitOptions,\n ): Promise<TOutput>;\n /**\n * Register (or upsert) a DYNAMIC recurring trigger that starts `name` on the\n * `cron` cadence. Idempotent by `name`. Prefer the declarative `export const\n * schedules` for cadences that ship with the workspace. See {@link scheduleWorkflow}.\n */\n schedule(name: WorkflowName, input: unknown, cron: string): Promise<void>;\n /** Cancel a dynamic scheduled trigger by `name`. See {@link unschedule}. */\n unschedule(name: WorkflowName): Promise<void>;\n /** List active triggers (declarative + dynamic). See {@link listSchedules}. */\n listSchedules(): Promise<ScheduledWorkflow[]>;\n}\n\n/**\n * The singleton `stackbone.workflows` accessor. A plain object of aliases to the\n * underlying free functions — it holds no client state (the helpers reach the\n * runtime-injected starter/scheduler seams directly), so the same instance is\n * safe to share across the process, just like `stackbone.connection` /\n * `stackbone.agent`.\n */\nexport const workflows: WorkflowsAccessor = {\n start: startWorkflow,\n startAndWait: startWorkflowAndWait,\n schedule: scheduleWorkflow,\n unschedule,\n listSchedules,\n};\n","// Peer-free transport for the workflow→agent hop.\n//\n// Both the eager `eveAgent()` helper (on the `@stackbone/sdk/workflow` subpath)\n// and the lazy `stackbone.agent(id)` member (on the main barrel) resolve a sibling\n// agent's URL from the same emulator-injected env and sign each request with the\n// same shared-secret scheme. This module holds ONLY that env-reading + signing\n// logic — it imports NO `eve` peer, so it is safe to reach from the main barrel\n// without pulling the optional `eve/client` peer into it.\n//\n// The eve `Client` itself is the one thing that DOES need the peer; it stays out\n// of here (the eager helper imports it statically, the lazy member `import()`s it\n// on first async use).\n\nimport { createHmac } from 'node:crypto';\n\n/**\n * Read the `{ \"<agent-name>\": \"<url>\" }` map the emulator injects on the workflow\n * process's env. Absent → the workflow is not running under the emulator, which is\n * the only thing that wires the map; surface that plainly.\n */\nexport function agentRegistry(): Record<string, string> {\n const raw = process.env['AGENT_URLS'];\n if (!raw) {\n throw new Error(\n 'AGENT_URLS is not set. The emulator injects it; run this workflow through `stackbone dev`.',\n );\n }\n return JSON.parse(raw) as Record<string, string>;\n}\n\n/**\n * Resolve a sibling agent's URL by name, or throw a message listing the known\n * names. Shared by both the eager and the lazy resolver so the unknown-name error\n * is identical on both paths.\n */\nexport function resolveAgentHost(name: string): string {\n const registry = agentRegistry();\n const host = registry[name];\n if (!host) {\n throw new Error(`Unknown agent \"${name}\". Known agents: ${Object.keys(registry).join(', ')}`);\n }\n return host;\n}\n\n/**\n * Sign a workflow→agent call so the agent's channel AuthFn accepts it. The\n * signature is `hex(HMAC-SHA256(HMAC_SECRET, timestamp))` over the RAW timestamp\n * string, carried under headers distinct from RT-01's so the agent's auth walk can\n * tell the two schemes apart. This MUST stay byte-identical to the agent's\n * `hmacWorkflowAuth` verifier (same algorithm, same raw-string input, same header\n * names, 5-minute drift window) — do not sign a number/Buffer, bind the body, or\n * rename the headers.\n */\nexport function signWorkflowHeaders(): Record<string, string> {\n const secret = process.env['HMAC_SECRET'] ?? '';\n const timestamp = String(Date.now());\n const signature = createHmac('sha256', secret).update(timestamp).digest('hex');\n return {\n 'x-stackbone-timestamp': timestamp,\n 'x-stackbone-workflow-signature': signature,\n };\n}\n","// `stackbone.agent(id)` — the namespaced, peer-free-at-import sibling-agent member.\n//\n// This is the lazy twin of `eveAgent()`. It addresses a sibling eve agent by name\n// and returns eve's `Client` API, but it imports NO `eve` peer at module load:\n// the main `@stackbone/sdk` barrel reaches this module, and a tool-only agent that\n// never installed the optional `eve` peer must still be able to import the barrel\n// and use the peer-free surfaces.\n//\n// The trick is a chain of thin, SYNCHRONOUS handles that mirror eve's own shape\n// (`client.session(...)` is sync, returning a session whose `send` / `stream` are\n// the already-async leaves). Selecting the agent and opening a session pull no\n// peer. Only the leaf, already-async call (`session.send(...)`, `session.stream()`)\n// does `await import('eve/client')`, builds the real `Client`, and delegates — so\n// the eve cost is paid exactly when, and only when, a turn is actually sent. Any\n// caller that reaches that leaf is, by definition, an eve/workflow agent that has\n// the peer installed.\n//\n// State (continuation token, session id, stream cursor) is preserved across turns\n// because each lazy session memoises ONE real eve `ClientSession`, built on first\n// async use from the same `host` + per-request signing the eager `eveAgent` uses.\n// So `stackbone.agent('x').session()` is observably identical to the eager path.\n\nimport type { AgentName } from './agent-registry';\nimport type {\n EveClient,\n EveClientSession,\n EveMessageResponse,\n EveSessionState,\n EveStreamEvent,\n SendTurnInput,\n} from './eve-client-types';\nimport { resolveAgentHost, signWorkflowHeaders } from './workflow-agent-transport';\n\n/**\n * The eve `Client` surface a lazy agent handle exposes. Narrowed to the\n * `session(...)` factory the workflow→agent path uses; the returned session is the\n * lazy `LazyAgentSession` below (structurally compatible with eve's `ClientSession`).\n */\nexport interface LazyAgentClient {\n session(state?: EveSessionState | string): LazyAgentSession;\n}\n\n/**\n * The eve `ClientSession` surface a lazy agent session exposes — a DROP-IN twin of\n * eve's native `ClientSession`, so a workflow written against the eager `eveAgent`\n * path keeps compiling verbatim when it swaps to `stackbone.agent`. `send` /\n * `stream` are the async leaves that resolve the `eve` peer on first use;\n * everything above them (selecting the agent, opening the session) stays\n * synchronous and peer-free. `send` returns eve's `MessageResponse<TOutput>` (so\n * `.result()` and `for await...of` both work), and `state` exposes the advanced\n * cursor a workflow persists between turns — readable once a turn has built the\n * real session.\n */\nexport interface LazyAgentSession {\n /**\n * Current session cursor (continuation token, session id, stream cursor), read\n * to persist + resume across turns. A DROP-IN twin of eve's `ClientSession.state`,\n * which is readable from construction: before the first `send` / `stream` it\n * echoes the seed passed to `session(state)` (a bare continuation-token string\n * normalizes to `{ continuationToken, streamIndex: 0 }`, an absent seed to the\n * initial `{ streamIndex: 0 }`), and after a turn it exposes the advanced cursor\n * off the real eve session. Never throws.\n */\n readonly state: EveSessionState;\n send<TOutput = unknown>(input: SendTurnInput<TOutput>): Promise<EveMessageResponse<TOutput>>;\n stream(options?: { startIndex?: number }): AsyncIterable<EveStreamEvent>;\n}\n\n/**\n * `stackbone.agent` — select a sibling eve agent by its verbatim id and get a lazy\n * eve `Client`. A declared name (a key of the augmented `AgentRegistry`)\n * autocompletes and a typo is a compile error; with no generated registry the name\n * is a loose `string` (checked at runtime against `AGENT_URLS`). Same id-keyed\n * selection style — and same `AgentName` type — as the deprecated `eveAgent(...)`.\n */\nexport interface AgentAccessor {\n (name: AgentName): LazyAgentClient;\n}\n\n/**\n * The eve `Client` package entrypoint, addressed as a runtime `string` rather than\n * a static literal. Routing the dynamic `import()` through a variable specifier is\n * deliberate: it keeps the optional `eve` peer fully OUT of the type graph the main\n * barrel exposes to consumers (`apps/api`, `agent-server`, …), which compile under\n * a `moduleResolution` that cannot see the SDK-local `eve/client` shim. Only the\n * eager `eve-agent.ts` (on the `/workflow` subpath, where `eve` is always present)\n * imports the literal `'eve/client'` for its real types.\n */\nconst EVE_CLIENT_MODULE = 'eve/client';\n\n/** The shape of the `eve/client` module we touch — just its `Client` constructor. */\ninterface EveClientModule {\n Client: new (options: unknown) => EveClient;\n}\n\n/**\n * Build the real eve `Client` for an agent name, resolving the `eve/client` peer\n * lazily via dynamic import. Called only from a leaf async method, so the import\n * cost lands exactly when a turn is sent — never at module load. The `host` and the\n * per-request `headers` signer are byte-identical to the eager `eveAgent`, so the\n * underlying signed request is the same.\n */\nasync function buildEveClient(name: string): Promise<EveClient> {\n const host = resolveAgentHost(name);\n const { Client } = (await import(EVE_CLIENT_MODULE)) as EveClientModule;\n return new Client({ host, headers: () => signWorkflowHeaders() });\n}\n\n/**\n * Normalize the resume seed exactly as eve's `Client.session(state)` does, but\n * peer-free, so the lazy session can echo `state` synchronously before the first\n * turn the way eve's `ClientSession` exposes its seeded cursor from construction: a\n * bare continuation-token string becomes `{ continuationToken, streamIndex: 0 }`, an\n * object passes through, and an absent seed becomes the initial `{ streamIndex: 0 }`.\n */\nfunction seedSessionState(seed: EveSessionState | string | undefined): EveSessionState {\n if (typeof seed === 'string') return { continuationToken: seed, streamIndex: 0 };\n return seed ?? { streamIndex: 0 };\n}\n\n/**\n * Wrap one eve `ClientSession` behind a lazy session whose `send` / `stream`\n * resolve the SAME real session on first use and delegate. The real session is\n * memoised (`real` + the resolved `opened` handle) so its conversation state\n * (continuation token, cursor) carries across turns exactly as a directly-held eve\n * session would. The async leaves return eve's native shapes verbatim (`send` →\n * `MessageResponse<TOutput>`, `stream` → the event iterable). `state` is a drop-in\n * twin of eve's: before the first turn it echoes the seeded cursor, after a turn it\n * reads the advanced cursor off the resolved real session.\n *\n * If the first build/open REJECTS (a missing peer, an unresolved agent url), the\n * memoised promise is dropped rather than cached forever, so a later `send` /\n * `stream` can rebuild — a transient first-turn failure must not permanently poison\n * the handle (the eager `eveAgent` path can likewise retry a failed turn against a\n * live client).\n */\nfunction lazyAgentSession(\n getClient: () => Promise<EveClient>,\n seed: EveSessionState | string | undefined,\n): LazyAgentSession {\n const seededState = seedSessionState(seed);\n let real: Promise<EveClientSession> | undefined;\n // The resolved real session, captured once it builds, so the synchronous\n // `state` getter can read the live cursor without re-awaiting.\n let opened: EveClientSession | undefined;\n const session = (): Promise<EveClientSession> => {\n real ??= getClient()\n .then((client) => client.session(seed))\n .then((s) => {\n opened = s;\n return s;\n })\n .catch((error: unknown) => {\n real = undefined;\n throw error;\n });\n return real;\n };\n return {\n get state(): EveSessionState {\n return opened ? opened.state : seededState;\n },\n async send<TOutput = unknown>(\n input: SendTurnInput<TOutput>,\n ): Promise<EveMessageResponse<TOutput>> {\n return (await session()).send<TOutput>(input);\n },\n async *stream(options?: { startIndex?: number }): AsyncIterable<EveStreamEvent> {\n yield* (await session()).stream(options);\n },\n };\n}\n\n/**\n * Select a sibling eve agent by name and get a lazy `Client`. The returned handle's\n * `session(...)` is synchronous and peer-free; the eve peer is resolved on the first\n * async leaf of a session it returns. ONE real eve `Client` is built lazily per\n * handle and SHARED across every session it opens — mirroring the eager `eveAgent`,\n * which returns a single `Client` a creator reuses across `.session()` calls. A\n * failed build is not cached, so the next session/turn retries it.\n */\nfunction lazyAgent(name: string): LazyAgentClient {\n let client: Promise<EveClient> | undefined;\n const getClient = (): Promise<EveClient> => {\n client ??= buildEveClient(name).catch((error: unknown) => {\n client = undefined;\n throw error;\n });\n return client;\n };\n return {\n session(state?: EveSessionState | string): LazyAgentSession {\n return lazyAgentSession(getClient, state);\n },\n };\n}\n\n/**\n * `stackbone.agent` — the ambient client's namespaced sibling-agent member.\n */\nexport const agent: AgentAccessor = ((name: AgentName) =>\n lazyAgent(name as string)) as AgentAccessor;\n","import OpenAI from 'openai';\nimport type {\n ChatCompletion,\n ChatCompletionChunk,\n ChatCompletionCreateParamsNonStreaming,\n ChatCompletionCreateParamsStreaming,\n CreateEmbeddingResponse,\n EmbeddingCreateParams,\n} from 'openai/resources';\nimport type { Stream } from 'openai/streaming';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { createModuleGate, type ModuleGate, withGate } from '../../../contract/module-gate';\nimport { type SdkErrorCode } from '../../../errors/codes';\nimport { err, ok, type Result, type SdkError } from '../../../result';\n\n/**\n * Public surface behind `client.ai`. Wraps the official `openai` SDK with a\n * `baseURL` override pointing to OpenRouter, so 300+ models are reachable\n * with a single, OpenAI-compatible API.\n *\n * Lazy: the underlying `OpenAI` client is built on the first method call\n * (or the first time a sub-namespace is touched) so env vars mutated after\n * `createClient()` are still picked up — same pattern as `DatabaseModule`.\n *\n * Error model: every method returns `Result<T>`. Upstream `APIError`s are\n * mapped to `SdkError` with stable `ai_*` codes. For streaming, the\n * `Result` envelope only covers connection establishment; once the stream\n * is open, mid-flight errors propagate through the iterator — callers must\n * wrap their `for await` loop in `try/catch`. Aborts via `signal.abort()`\n * surface as `ai_aborted` in non-streaming requests; in streaming, the\n * iterator simply terminates (the upstream SDK swallows the abort).\n *\n * Test override: pass `clientOverride` to inject a pre-built `OpenAI`\n * instance (or a stand-in) instead of letting the module build one. The\n * override flows to all four namespaces — `models.list()` included —\n * and to the cross-surface `shared()` accessor.\n *\n * Shared-handles pattern: `shared(): Result<OpenAI>` is the canonical\n * accessor cross-surface SDK consumers (RAG today, memory tomorrow) use\n * to reach the single OpenRouter client. Same instance every call; one\n * credential, one base URL, one retry policy, one error shape. See\n * README + CHANGELOG.\n */\nexport class AiModule {\n private _openai: OpenAI | null = null;\n private _chat: { completions: ChatCompletionsNamespace } | null = null;\n private _embeddings: EmbeddingsNamespace | null = null;\n private _images: ImagesNamespace | null = null;\n private _models: ModelsNamespace | null = null;\n private readonly _gate: ModuleGate;\n\n constructor(\n private readonly _resolved: ResolvedConfig,\n clientOverride?: OpenAI,\n /** Test seam — see `ModuleGate`. Defaults to the lazy contract gate. */\n gate?: ModuleGate,\n ) {\n if (clientOverride) this._openai = clientOverride;\n this._gate = gate ?? createModuleGate('ai', _resolved);\n }\n\n get chat(): { completions: ChatCompletionsNamespace } {\n this._chat ??= {\n completions: new ChatCompletionsNamespace(() => this.shared(), this._gate),\n };\n return this._chat;\n }\n\n get embeddings(): EmbeddingsNamespace {\n this._embeddings ??= new EmbeddingsNamespace(() => this.shared(), this._gate);\n return this._embeddings;\n }\n\n get images(): ImagesNamespace {\n this._images ??= new ImagesNamespace(() => this.shared(), this._gate);\n return this._images;\n }\n\n get models(): ModelsNamespace {\n this._models ??= new ModelsNamespace(() => this.shared(), this._gate);\n return this._models;\n }\n\n /**\n * Canonical accessor for the **shared-handles pattern** on the AI\n * surface. Returns the lazily-constructed OpenRouter-flavoured `OpenAI`\n * client backing `client.ai`. Cross-surface SDK consumers (RAG today,\n * memory tomorrow) call this — never instantiate a parallel `OpenAI`\n * client — to keep credential resolution, base-URL routing, retry /\n * timeout policy, and token accounting on a single instance.\n *\n * Contract: same input → same instance. Calling `shared()` twice in\n * the same process (with the same `ResolvedConfig`) returns the same\n * reference. The Result envelope surfaces `openrouter_key_missing`\n * when `OPENROUTER_API_KEY` is unset, matching the rest of the\n * `client.ai.*` API; the gate is intentionally NOT consulted here\n * (surfaces that gate behaviour gate it at their own call sites).\n *\n * The constructor's `clientOverride` flows through this accessor too,\n * so tests that inject a fake `OpenAI` see consistent behaviour across\n * `chat / embeddings / images / models` and any cross-surface\n * consumer.\n */\n shared(): Result<OpenAI> {\n if (this._openai) return ok(this._openai);\n const apiKey = resolveApiKey(this._resolved);\n if (!apiKey) return missingKeyError();\n this._openai = new OpenAI({\n apiKey,\n baseURL: resolveBaseUrl(this._resolved),\n defaultHeaders: STACKBONE_DEFAULT_HEADERS,\n });\n return ok(this._openai);\n }\n}\n\nclass ChatCompletionsNamespace {\n constructor(\n private readonly _getClient: () => Result<OpenAI>,\n private readonly _gate: ModuleGate,\n ) {}\n\n create(\n params: ChatCompletionCreateParamsStreaming,\n options?: RequestOptions,\n ): Promise<Result<Stream<ChatCompletionChunk>>>;\n create(\n params: ChatCompletionCreateParamsNonStreaming,\n options?: RequestOptions,\n ): Promise<Result<ChatCompletion>>;\n async create(\n params: ChatCompletionCreateParamsNonStreaming | ChatCompletionCreateParamsStreaming,\n options?: RequestOptions,\n ): Promise<Result<ChatCompletion | Stream<ChatCompletionChunk>>> {\n return withGate(this._gate, async () =>\n wrapCall(this._getClient, params.model, (client) =>\n client.chat.completions.create(params, { signal: options?.signal }),\n ),\n );\n }\n}\n\nclass EmbeddingsNamespace {\n constructor(\n private readonly _getClient: () => Result<OpenAI>,\n private readonly _gate: ModuleGate,\n ) {}\n\n async create(\n params: EmbeddingCreateParams,\n options?: RequestOptions,\n ): Promise<Result<CreateEmbeddingResponse>> {\n return withGate(this._gate, async () => {\n const model = typeof params.model === 'string' ? params.model : undefined;\n return wrapCall(this._getClient, model, (client) =>\n client.embeddings.create(params, { signal: options?.signal }),\n );\n });\n }\n}\n\nexport interface ImageGenerateParams {\n model: string;\n prompt: string;\n /** Forwarded to OpenRouter as `image_config`. Use for aspect ratio, size, etc. */\n imageConfig?: Record<string, unknown>;\n}\n\nexport interface ImagesResponse {\n created: number;\n data: GeneratedImage[];\n}\n\nexport interface GeneratedImage {\n /** Original `data:image/...;base64,...` URL as returned by OpenRouter. */\n url: string;\n /** Base64 payload extracted from the data URL. */\n b64Json?: string;\n /** MIME type parsed from the data URL prefix. */\n mimeType?: string;\n}\n\nclass ImagesNamespace {\n constructor(\n private readonly _getClient: () => Result<OpenAI>,\n private readonly _gate: ModuleGate,\n ) {}\n\n /**\n * OpenRouter does not implement the OpenAI `/v1/images/generations`\n * endpoint. Image models are reached via `/v1/chat/completions` with\n * `modalities: ['image']`, and the resulting image is returned as a\n * non-standard `message.images[]` array of base64 data URLs. This method\n * encapsulates that quirk and surfaces an OpenAI-shaped response so\n * agent code does not need to know.\n *\n * If the model does not return any images (wrong model, content policy,\n * etc.) this returns an `ai_no_image_generated` error rather than an\n * empty success — surfacing the failure to the caller instead of\n * silently producing zero images.\n */\n async generate(\n params: ImageGenerateParams,\n options?: RequestOptions,\n ): Promise<Result<ImagesResponse>> {\n return withGate(this._gate, async () => {\n const body: OpenRouterImageRequest = {\n model: params.model,\n messages: [{ role: 'user', content: params.prompt }],\n modalities: ['image', 'text'],\n ...(params.imageConfig ? { image_config: params.imageConfig } : {}),\n };\n const completion = await wrapCall(this._getClient, params.model, (client) =>\n client.chat.completions.create(body as ChatCompletionCreateParamsNonStreaming, {\n signal: options?.signal,\n }),\n );\n if (completion.error) return completion;\n const data = extractImages(completion.data);\n if (data.length === 0) {\n return err({\n code: 'ai_no_image_generated',\n message: `Model ${params.model} did not return any images. Make sure the model supports image output via OpenRouter.`,\n meta: { model: params.model },\n });\n }\n return ok({ created: completion.data.created, data });\n });\n }\n}\n\nexport interface OpenRouterModel {\n id: string;\n name?: string;\n description?: string;\n context_length?: number;\n pricing?: Record<string, unknown>;\n architecture?: Record<string, unknown>;\n supported_parameters?: string[];\n}\n\nexport interface ModelsListResponse {\n data: OpenRouterModel[];\n}\n\nclass ModelsNamespace {\n constructor(\n private readonly _getClient: () => Result<OpenAI>,\n private readonly _gate: ModuleGate,\n ) {}\n\n /**\n * Calls `GET ${baseURL}/models` directly with `fetch` — the upstream\n * `openai.models.list()` parses the response into OpenAI's `Model` type\n * which discards OpenRouter-specific fields (`pricing`, `context_length`,\n * `supported_parameters`, `architecture`). Going through `fetch` keeps\n * the full payload.\n *\n * Reuses the cached `OpenAI` instance (built lazily by `AiModule`) so\n * the resolved `apiKey` and `baseURL` are consistent with the rest of\n * the namespaces — and any `clientOverride` injected for tests applies\n * here too.\n */\n async list(options?: RequestOptions): Promise<Result<ModelsListResponse>> {\n return withGate(this._gate, async () => {\n const clientResult = this._getClient();\n if (clientResult.error) return clientResult;\n const { apiKey, baseURL } = clientResult.data;\n const baseUrl = baseURL.replace(/\\/+$/, '');\n const init: RequestInit = {\n headers: {\n Authorization: `Bearer ${apiKey}`,\n ...STACKBONE_DEFAULT_HEADERS,\n },\n };\n if (options?.signal) init.signal = options.signal;\n try {\n const response = await fetch(`${baseUrl}/models`, init);\n if (!response.ok) {\n const body = (await response.json().catch(() => ({}))) as {\n error?: { message?: string };\n };\n return err({\n code: codeForStatus(response.status),\n message: body.error?.message ?? `HTTP ${response.status}`,\n meta: { status: response.status },\n });\n }\n const json = (await response.json()) as ModelsListResponse;\n return ok(json);\n } catch (raw) {\n return err(mapApiError(raw));\n }\n });\n }\n}\n\ninterface RequestOptions {\n signal?: AbortSignal;\n}\n\ninterface OpenRouterImageRequest {\n model: string;\n messages: ChatCompletionCreateParamsNonStreaming['messages'];\n modalities: ('text' | 'audio' | 'image')[];\n image_config?: Record<string, unknown>;\n}\n\nconst STACKBONE_DEFAULT_HEADERS = {\n 'HTTP-Referer': 'https://stackbone.ai',\n 'X-Title': 'Stackbone Agent Platform',\n} as const;\n\nconst OPENROUTER_DEFAULT_BASE_URL = 'https://openrouter.ai/api/v1';\n\nconst OPENROUTER_KEY_MISSING_MESSAGE =\n 'Cannot reach OpenRouter — set `OPENROUTER_API_KEY` in the container or pass `openrouterKey` to `createClient({...})`.';\n\nfunction missingKeyError<T = never>(): Result<T> {\n return err({\n code: 'openrouter_key_missing',\n message: OPENROUTER_KEY_MISSING_MESSAGE,\n });\n}\n\nfunction resolveApiKey(resolved: ResolvedConfig): string | undefined {\n return resolved.openrouterKey;\n}\n\nfunction resolveBaseUrl(resolved: ResolvedConfig): string {\n return resolved.openrouterBaseUrl ?? OPENROUTER_DEFAULT_BASE_URL;\n}\n\nasync function wrapCall<T>(\n getClient: () => Result<OpenAI>,\n model: string | undefined,\n fn: (client: OpenAI) => Promise<T>,\n): Promise<Result<T>> {\n const clientResult = getClient();\n if (clientResult.error) return clientResult;\n try {\n return ok(await fn(clientResult.data));\n } catch (raw) {\n return err(mapApiError(raw, model));\n }\n}\n\ninterface OpenRouterImageItem {\n type?: string;\n image_url?: { url?: string };\n}\n\nconst DATA_URL_RE = /^data:(image\\/[a-zA-Z0-9.+-]+);base64,(.*)$/;\n\nfunction extractImages(completion: ChatCompletion): GeneratedImage[] {\n const message = completion.choices[0]?.message as\n | (ChatCompletion['choices'][number]['message'] & {\n images?: OpenRouterImageItem[];\n })\n | undefined;\n const rawImages = message?.images ?? [];\n const out: GeneratedImage[] = [];\n for (const img of rawImages) {\n const url = img?.image_url?.url;\n if (!url) continue;\n const match = DATA_URL_RE.exec(url);\n if (match && match[1] && match[2]) {\n out.push({ url, mimeType: match[1], b64Json: match[2] });\n } else {\n out.push({ url });\n }\n }\n return out;\n}\n\n/**\n * OpenRouter HTTP statuses surface as `ai_*` codes from the catalog. This is\n * the `ai` surface's local equivalent of the `<prefix>_<reason>` mapping\n * `HttpClient` runs for the control-plane facades — `client.ai` talks to\n * OpenRouter directly via the upstream OpenAI SDK, so the transport is not\n * involved, but the wire-level shape stays inside the same catalog.\n */\nfunction codeForStatus(status: number): SdkErrorCode {\n if (status === 401) return 'ai_unauthorized';\n if (status === 402) return 'ai_credits_exhausted';\n if (status === 403) return 'ai_forbidden';\n if (status === 408) return 'ai_timeout';\n if (status === 422 || status === 400) return 'ai_validation_error';\n if (status === 429) return 'ai_rate_limited';\n if (status === 451) return 'ai_moderation_blocked';\n return 'ai_provider_error';\n}\n\nfunction mapApiError(raw: unknown, model?: string): SdkError {\n if (raw instanceof OpenAI.APIError) {\n const meta: Record<string, unknown> = { status: raw.status };\n if (model) meta['model'] = model;\n if (raw.code != null) meta['openrouterCode'] = raw.code;\n if (raw.type != null) meta['openrouterType'] = raw.type;\n\n if (raw instanceof OpenAI.APIUserAbortError) {\n return { code: 'ai_aborted', message: raw.message, cause: raw, meta };\n }\n if (raw instanceof OpenAI.APIConnectionTimeoutError) {\n return { code: 'ai_timeout', message: raw.message, cause: raw, meta };\n }\n if (raw instanceof OpenAI.APIConnectionError) {\n return { code: 'ai_network_error', message: raw.message, cause: raw, meta };\n }\n return {\n code: raw.status != null ? codeForStatus(raw.status) : 'ai_provider_error',\n message: raw.message,\n cause: raw,\n meta,\n };\n }\n return {\n code: 'ai_network_error',\n message: raw instanceof Error ? raw.message : String(raw),\n cause: raw,\n };\n}\n","// Shared transport primitives for the Stackbone Connect runtime calls (feature\n// 74). Both the connection-auth ADAPTER (`connect.ts` — the eve `getToken`/`evict`\n// strategy) and the direct workflow→connector CALL helper (`call-connector.ts`)\n// hit the SAME agent-facing broker under `STACKBONE_API_URL` with the SAME HMAC\n// scheme-A signature, so the signing algorithm, header names, and env contract\n// live here ONCE. Duplicating the HMAC in two places risks the two diverging\n// (one signing the raw string, the other a number/Buffer) and the broker's\n// constant-time verifier would then reject one of them.\n//\n// This module is a PLAIN node module: it statically imports nothing but\n// `node:crypto`, so it is safe for the eve-importing `connect.ts` AND the\n// eve-free `call-connector.ts` to share.\n\nimport { createHmac } from 'node:crypto';\n\n/**\n * WHO a connector call is made on behalf of — the scoping principal the broker\n * keys its credential cache/grant against. A STRUCTURAL mirror of the broker\n * contract's `@stackbone/connect-contract` `Principal` union (app / user /\n * client-credentials / jwt-bearer); defined locally rather than imported so the\n * SDK connect surface stays a self-contained leaf (the sibling eve adapter follows\n * the same discipline — it never pulls the platform contract into the published\n * SDK tarball). It is structurally compatible, so a value typed against the\n * contract's `Principal` is assignable here and vice-versa.\n */\nexport type Principal =\n | { readonly type: 'app' }\n | {\n readonly type: 'user';\n readonly id: string;\n readonly issuer: string;\n readonly attributes?: Readonly<Record<string, string | readonly string[]>>;\n }\n | { readonly type: 'client-credentials'; readonly serviceAccountId: string }\n | { readonly type: 'jwt-bearer'; readonly subject: string; readonly issuer: string };\n\n/** The header the agent-facing broker request stamps the raw timestamp under. */\nexport const TIMESTAMP_HEADER = 'x-stackbone-timestamp';\n/** The header the agent-facing broker request stamps the HMAC signature under. */\nexport const SIGNATURE_HEADER = 'x-stackbone-workflow-signature';\n\n/**\n * Sign an agent-facing broker request so the broker's HMAC verifier accepts it.\n * The signature is `hex(HMAC-SHA256(HMAC_SECRET, timestamp))` over the RAW\n * timestamp string. This MUST stay byte-identical to the agent's\n * `hmacWorkflowAuth` verifier and the emulator's `verifyTokenRequestSignature`\n * (same algorithm, same raw-string input, same header names, 5-minute drift\n * window on the verifier) — do not sign a number/Buffer, bind the body, or\n * rename the headers. An empty secret produces a signature the fail-closed\n * verifier rejects, which is the correct behaviour for a misconfigured runtime.\n */\nexport function signBrokerHeaders(): Record<string, string> {\n const secret = process.env['HMAC_SECRET'] ?? '';\n const timestamp = String(Date.now());\n const signature = createHmac('sha256', secret).update(timestamp).digest('hex');\n return {\n [TIMESTAMP_HEADER]: timestamp,\n [SIGNATURE_HEADER]: signature,\n };\n}\n\n/**\n * Resolve the base URL of the Stackbone Connect broker. The runtime injects it on\n * the agent / workflow process's env (never hardcode a host — the broker is\n * deployable per env: cloud / emulator / self-host). The trailing slash(es) are\n * trimmed so callers append `/api/connect/...` without doubling the separator.\n */\nexport function brokerBaseUrl(): string {\n const url = process.env['STACKBONE_API_URL'];\n if (!url) {\n throw new Error(\n 'STACKBONE_API_URL is not set. The Stackbone runtime injects the broker base URL; run this agent through `stackbone dev`.',\n );\n }\n return url.replace(/\\/+$/, '');\n}\n\n/**\n * Read the install id the broker request asserts as its scoping claim. The\n * emulator (and, in production, the client's VM) injects it on the process's env;\n * absent → the caller is not running under a Stackbone runtime.\n */\nexport function installationId(): string {\n const id = process.env['STACKBONE_INSTALLATION_ID'];\n if (!id) {\n throw new Error(\n 'STACKBONE_INSTALLATION_ID is not set. The Stackbone runtime injects it; run this agent through `stackbone dev`.',\n );\n }\n return id;\n}\n","// `callConnector()` / `connection()` — call a Stackbone Connect connector DIRECTLY\n// from a workflow, with NO agent in the loop (feature 74).\n//\n// A workflow `\"use step\"` often needs to perform a single provider action (send a\n// Slack message, create a GitHub issue) without spinning up an agent turn. This\n// helper POSTs the action to the agent-facing broker `POST /api/connect/execute`\n// (the emulator in `stackbone dev`, the client's VM in production) which runs ONE\n// `ConnectActionExecutor.execute` against the provider on the caller's behalf and\n// returns the operation output.\n//\n// It is a PLAIN HMAC fetch client: unlike the sibling `connect.ts` (the eve\n// connection-auth ADAPTER), this file imports NO eve types — a workflow that calls\n// a connector directly need not author an eve connection. It shares the SAME\n// transport (HMAC scheme A + env contract) as the adapter via `connect-transport`,\n// so the broker's one verifier accepts both byte-for-byte.\n//\n// CALLER IDENTITY — HMAC scheme A (install identity), byte-identical to\n// `surfaces/external/agents/eve-agent.ts signWorkflowHeaders()`: the request\n// carries `hex(HMAC-SHA256(HMAC_SECRET, String(Date.now())))` over the RAW\n// timestamp string under `x-stackbone-timestamp` + `x-stackbone-workflow-signature`.\n// HMAC proves POSSESSION of the shared per-workspace secret, NOT which install is\n// calling, so the body ALSO carries the explicit `installationId`\n// (`STACKBONE_INSTALLATION_ID`) + connector + operation + principal scoping claims.\n\nimport {\n brokerBaseUrl,\n installationId,\n signBrokerHeaders,\n type Principal,\n} from './connect-transport';\n\n/** The broker route the direct connector call POSTs to (under `STACKBONE_API_URL`). */\nconst EXECUTE_PATH = '/api/connect/execute';\n\n/** Options accepted by `callConnector` / `connection(...).call`. */\nexport interface CallConnectorOptions {\n /**\n * WHO the connector call is made on behalf of. Defaults to `{ type: 'app' }`\n * (the agent's own service-account credential). A `user` principal scopes the\n * broker token issuer to that end user; `client-credentials` / `jwt-bearer` are\n * the broker's M2M auth modes.\n */\n readonly principal?: Principal;\n}\n\n/**\n * The broker's `POST /api/connect/execute` success envelope. The executor's\n * operation output rides under `output` (arbitrary JSON the provider returned).\n */\ninterface ExecuteSuccessBody {\n readonly ok: true;\n readonly output: unknown;\n}\n\n/** The broker's error envelope — discriminated by the string `code`, never a class. */\ninterface ExecuteErrorBody {\n readonly ok: false;\n readonly error: { readonly code: string; readonly message?: string };\n}\n\n/**\n * An `Error` carrying the broker's machine-readable `code` so a workflow matches\n * the failure BY CODE STRING (never `instanceof` — under bundling the SDK and the\n * workflow can hold different class identities; the code is the stable signal).\n */\nexport interface ConnectorCallError extends Error {\n /** The broker error code (`invalid_args`, `credential_error`, `timeout`, …). */\n readonly code: string;\n}\n\n/**\n * Build the `ConnectorCallError` thrown on a broker error. The `code` is carried\n * as an own property so `err.code` reads back the broker taxonomy.\n */\nfunction connectorCallError(code: string, message: string): ConnectorCallError {\n const error = new Error(message) as Error & { code: string };\n error.code = code;\n return error;\n}\n\n/**\n * Read the broker's `{ ok: false, error: { code, message } }` envelope off a\n * non-2xx (or `ok: false`) response, tolerating an empty / non-JSON body (a proxy\n * 502 may carry no JSON). Falls back to a `credential_error` keyed off the HTTP\n * status when no structured code is present.\n */\nfunction errorFromBody(status: number, body: ExecuteErrorBody | null): ConnectorCallError {\n if (body && body.ok === false && body.error && typeof body.error.code === 'string') {\n return connectorCallError(\n body.error.code,\n body.error.message ??\n `Stackbone Connect broker rejected the call (code \"${body.error.code}\").`,\n );\n }\n return connectorCallError('credential_error', `Stackbone Connect broker responded ${status}.`);\n}\n\n/**\n * Call a Stackbone Connect connector operation directly from a workflow.\n *\n * POSTs `{ connector, operation, args, principal, installationId }` to the\n * agent-facing broker (`POST /api/connect/execute`) with HMAC scheme-A headers.\n * On `{ ok: true, output }` it returns the operation `output`; on\n * `{ ok: false, error }` (or any non-2xx) it THROWS a `ConnectorCallError` whose\n * `.code` is the broker error code and `.message` the broker message.\n *\n * ```ts\n * const channels = await callConnector('slack', 'conversations.list');\n * await callConnector('slack', 'chat.postMessage', { channel: 'C123', text: 'hi' });\n * ```\n *\n * @param connector The connect connector id registered in Studio.\n * @param operation The operation / tool id to run on that connector.\n * @param args The operation arguments (path/query/body params). Defaults `{}`.\n * @param opts Optional `{ principal }` — defaults to `{ type: 'app' }`.\n */\nexport async function callConnector(\n connector: string,\n operation: string,\n args?: Readonly<Record<string, unknown>>,\n opts?: CallConnectorOptions,\n): Promise<unknown> {\n const principal: Principal = opts?.principal ?? { type: 'app' };\n // Resolve the env-derived URL + install id BEFORE the fetch try-block so a\n // missing `STACKBONE_API_URL` / `STACKBONE_INSTALLATION_ID` surfaces its own\n // explicit error instead of being swallowed into the transport `execute_failed`.\n const url = `${brokerBaseUrl()}${EXECUTE_PATH}`;\n const body = JSON.stringify({\n connector,\n operation,\n args: args ?? {},\n principal,\n installationId: installationId(),\n });\n\n let response: Response;\n try {\n response = await fetch(url, {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n ...signBrokerHeaders(),\n },\n body,\n });\n } catch (cause) {\n // Network / transport failure → a retryable execute failure surfaced by code.\n throw connectorCallError(\n 'execute_failed',\n `Stackbone Connect broker is unreachable: ${\n cause instanceof Error ? cause.message : String(cause)\n }`,\n );\n }\n\n const parsed = (await response.json().catch(() => null)) as\n | ExecuteSuccessBody\n | ExecuteErrorBody\n | null;\n\n if (!response.ok || (parsed && parsed.ok === false)) {\n throw errorFromBody(response.status, (parsed as ExecuteErrorBody | null) ?? null);\n }\n\n if (!parsed || parsed.ok !== true) {\n // 2xx but a body that is neither `{ ok: true }` nor a structured error —\n // treat as a malformed broker response rather than silently returning it.\n throw connectorCallError(\n 'invalid_output',\n 'Stackbone Connect broker returned a malformed execute response.',\n );\n }\n\n return parsed.output;\n}\n\n/** The dynamic escape hatch present on every `connection(id)` handle. */\nexport interface ConnectorHandle {\n /**\n * Run ANY operation on this connector by id — the untyped escape hatch, always\n * available (use it for an operation id that is not a JS identifier, e.g. a\n * dotted `chat.postMessage`, or a connector with no generated types). Sugar for\n * `callConnector(id, operation, args, opts)`.\n */\n call(\n operation: string,\n args?: Readonly<Record<string, unknown>>,\n opts?: CallConnectorOptions,\n ): Promise<unknown>;\n}\n\n/**\n * Augmentable registry of TYPED connector operations, keyed by the VERBATIM\n * connector id (`'stub-mail'`, `'slack'`). The Stackbone Connect type generator\n * (`stackbone dev` writes `.stackbone/connect.d.ts`) MERGES one member per connector\n * into this interface via a `declare module` augmentation, each a map of the\n * connector's operations → typed `(args) => Promise<output>`, derived from the\n * introspected JSON Schema. Empty by default — with no generated types,\n * `connection(id)` offers only the dynamic `.call(...)`.\n *\n * Same id-keyed-registry mechanism as `eveAgent`'s `AgentRegistry`: the selection\n * style is unified — address an entity by its verbatim id, get a typed handle.\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-interface, @typescript-eslint/no-empty-object-type\nexport interface StackboneConnections {}\n\n/**\n * The typed handle for a connector id: its generated operations (when the id is a\n * known key of `StackboneConnections`) intersected with the dynamic `.call` escape\n * hatch (always present). An unknown id resolves to just `ConnectorHandle`.\n */\nexport type ConnectorOf<Id extends string> = (Id extends keyof StackboneConnections\n ? StackboneConnections[Id]\n : unknown) &\n ConnectorHandle;\n\n/**\n * The exported `connection`: select a connector by its verbatim id and get a typed\n * handle. A known id (a key of the generated `StackboneConnections`) yields its\n * typed operations + `.call`; any other string yields the dynamic `ConnectorHandle`.\n */\nexport interface ConnectionAccessor {\n <Id extends keyof StackboneConnections>(id: Id): ConnectorOf<Id>;\n (id: string): ConnectorHandle;\n}\n\n/**\n * Build the per-id handle: a `Proxy` where `.call` is the dynamic escape hatch and\n * EVERY other property is treated as an operation id, dispatched verbatim to\n * `callConnector(id, operation, args, opts)`. So `connection('stub-mail').sendMail(a)`\n * is `callConnector('stub-mail', 'sendMail', a)` — the typed operations and the\n * dynamic `.call` hit the same broker path, with zero per-connector runtime code.\n */\nconst connectorHandle = (id: string): ConnectorHandle =>\n new Proxy(Object.create(null) as ConnectorHandle, {\n get(_target, prop) {\n // Never look thenable (an accidental `await connection(id)` must not hang).\n if (typeof prop !== 'string' || prop === 'then') return undefined;\n if (prop === 'call') {\n return (\n operation: string,\n args?: Readonly<Record<string, unknown>>,\n opts?: CallConnectorOptions,\n ): Promise<unknown> => callConnector(id, operation, args, opts);\n }\n return (args?: Readonly<Record<string, unknown>>, opts?: CallConnectorOptions): Promise<unknown> =>\n callConnector(id, prop, args, opts);\n },\n });\n\n/**\n * Call Stackbone Connect connectors. Select by verbatim id, then call an operation —\n * typed when `.stackbone/connect.d.ts` is generated, dynamic via `.call` always:\n *\n * ```ts\n * await connection('stub-mail').sendMail({ to, subject, body }); // typed\n * await connection('slack').call('chat.postMessage', { ... }); // dynamic escape hatch\n * ```\n *\n * Mirrors `eveAgent('agent-name')`: one id-keyed selection style across the SDK.\n */\nexport const connection: ConnectionAccessor = ((id: string) =>\n connectorHandle(id)) as ConnectionAccessor;\n","import { S3Client } from '@aws-sdk/client-s3';\n\nexport interface S3CompatClientOptions {\n /** S3-compatible endpoint URL (R2 account endpoint or a MinIO host). */\n endpoint: string;\n accessKeyId: string;\n secretAccessKey: string;\n /**\n * Overrides the endpoint-based region inference when supplied. Cloudflare R2\n * pins `'auto'`; an AWS-style backend (or MinIO that rejects `'auto'`) wants a\n * literal AWS region. When omitted the region is inferred from the endpoint.\n */\n region?: string;\n}\n\n// Cloudflare R2 account endpoints always live under this apex host\n// (`https://<accountId>.r2.cloudflarestorage.com`). Matching the suffix — not a\n// bare `r2` substring — keeps a non-R2 host like `https://r2.example.com` out\n// of the `'auto'` branch.\nconst R2_ENDPOINT_HOST_SUFFIX = '.r2.cloudflarestorage.com';\n\n/**\n * The single S3/R2-compatible client factory. Behind this seam it always sets\n * `forcePathStyle: true` (R2 and MinIO do not support virtual-host buckets),\n * infers the region from the endpoint when the caller does not pin one, and\n * shapes the flat `accessKeyId` / `secretAccessKey` pair into the SDK's\n * `credentials` object.\n *\n * Region inference: `'auto'` when the endpoint is a Cloudflare R2 account\n * endpoint (`*.r2.cloudflarestorage.com`), otherwise `'us-east-1'`. Call sites\n * that need a specific region (e.g. studio pins `'auto'`, the emulator pins\n * `'us-east-1'`) pass it explicitly via `options.region`.\n */\nexport function createS3CompatClient(options: S3CompatClientOptions): S3Client {\n return new S3Client({\n endpoint: options.endpoint,\n region: options.region ?? inferRegion(options.endpoint),\n forcePathStyle: true,\n credentials: {\n accessKeyId: options.accessKeyId,\n secretAccessKey: options.secretAccessKey,\n },\n });\n}\n\n/**\n * Builds the canonical Cloudflare R2 account endpoint for an account id. The\n * resulting URL is recognised by `createS3CompatClient` as an R2 endpoint, so a\n * client built from it infers region `'auto'`.\n */\nexport function r2Endpoint(accountId: string): string {\n return `https://${accountId}.r2.cloudflarestorage.com`;\n}\n\n// `'auto'` for Cloudflare R2, `'us-east-1'` for everything else (MinIO in dev,\n// generic S3-compatible backends). R2 is detected by the host suffix, parsed\n// out of the endpoint URL so a path or trailing slash never trips the check.\nfunction inferRegion(endpoint: string): string {\n return isR2Endpoint(endpoint) ? 'auto' : 'us-east-1';\n}\n\nfunction isR2Endpoint(endpoint: string): boolean {\n const host = hostnameOf(endpoint);\n return host !== undefined && host.endsWith(R2_ENDPOINT_HOST_SUFFIX);\n}\n\n// Parse the hostname out of the endpoint. Falls back to `undefined` for a\n// non-URL string so a malformed endpoint is simply treated as non-R2 rather\n// than throwing inside the factory.\nfunction hostnameOf(endpoint: string): string | undefined {\n try {\n return new URL(endpoint).hostname;\n } catch {\n return undefined;\n }\n}\n","import {\n DeleteObjectCommand,\n GetObjectCommand,\n ListObjectsV2Command,\n PutObjectCommand,\n type ListObjectsV2CommandOutput,\n type S3Client,\n} from '@aws-sdk/client-s3';\nimport { getSignedUrl } from '@aws-sdk/s3-request-presigner';\nimport { createS3CompatClient } from '@stackbone/s3-client';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { createModuleGate, type ModuleGate, withGate } from '../../../contract/module-gate';\nimport { err, ok, type Result, type SdkError } from '../../../result';\n\nexport interface StorageObject {\n key: string;\n size: number;\n lastModified?: Date;\n etag?: string;\n}\n\nexport interface UploadOptions {\n contentType?: string;\n metadata?: Record<string, string>;\n}\n\nexport interface ListOptions {\n prefix?: string;\n /** Maximum number of objects to return per page. Must be > 0. */\n limit?: number;\n cursor?: string;\n}\n\nexport interface SignedUrlOptions {\n /** Seconds until the URL expires. Defaults to 3600 (1h). */\n expiresIn?: number;\n /** Only honoured by `getSignedUploadUrl` — pinned into the signature so the uploader must send a matching `Content-Type`. */\n contentType?: string;\n}\n\nexport interface SignedUrl {\n url: string;\n expiresAt: Date;\n}\n\nexport type StorageBody = Blob | Uint8Array | string;\n\ninterface S3Settings {\n client: S3Client;\n endpoint: string;\n bucket: string;\n agentId: string;\n}\n\ninterface ResolvedKey extends S3Settings {\n /** Multi-tenant key sent to S3 — `${agentId}/${bucketName}/${userKey}`. */\n fullKey: string;\n}\n\nconst DEFAULT_SIGNED_URL_TTL_SECONDS = 3600;\n\n/**\n * Public surface behind `client.storage`. Wraps `@aws-sdk/client-s3` against\n * R2 (prod) or MinIO (dev). Exposes a bucket-scoped API via `from(bucket)`.\n *\n * Multi-tenancy: every key is prefixed with `agentId/bucket/` before hitting\n * S3. Credentials are scoped to the agent's physical bucket (env `S3_BUCKET`),\n * and the `bucket` argument is a logical namespace the agent uses to organise\n * its own objects. The full prefixed key is an internal detail — public\n * methods accept and return the user-facing key (without prefix). Metadata\n * tracking in `_storage_objects` (Neon) is out-of-scope for this iteration.\n *\n * Memory note: `download()` materialises the whole object as a `Blob` in\n * memory. For agents that need to stream large objects, prefer\n * `getSignedDownloadUrl()` and `fetch()` the URL directly to consume the\n * stream incrementally.\n */\nexport class StorageModule {\n private _s3: S3Client | null = null;\n private readonly _gate: ModuleGate;\n\n constructor(\n private readonly _resolved: ResolvedConfig,\n /** Test seam — see `ModuleGate`. Defaults to the lazy contract gate. */\n gate?: ModuleGate,\n ) {\n this._gate = gate ?? createModuleGate('storage', _resolved);\n }\n\n from(bucket: string): StorageBucket {\n return new StorageBucket(bucket, () => this.settings(), this._gate);\n }\n\n private settings(): Result<S3Settings> {\n const accessKeyId = this._resolved.s3AccessKeyId;\n const secretAccessKey = this._resolved.s3SecretAccessKey;\n const endpoint = this._resolved.s3Endpoint;\n const bucket = this._resolved.s3Bucket;\n const agentId = this._resolved.agentId;\n const region = this._resolved.s3Region;\n\n if (!accessKeyId || !secretAccessKey || !endpoint) {\n return err({\n code: 's3_credentials_missing',\n message: S3_CREDENTIALS_MISSING_MESSAGE,\n });\n }\n if (!bucket) {\n return err({ code: 's3_bucket_missing', message: S3_BUCKET_MISSING_MESSAGE });\n }\n if (!agentId) {\n return err({ code: 'agent_id_missing', message: AGENT_ID_MISSING_MESSAGE });\n }\n\n // `region` is resolved from the agent's config (defaulting to `'auto'`),\n // so pass it explicitly — the factory only infers a region when none is\n // given.\n this._s3 ??= createS3CompatClient({\n endpoint,\n region,\n accessKeyId,\n secretAccessKey,\n });\n return ok({ client: this._s3, endpoint, bucket, agentId });\n }\n}\n\nexport class StorageBucket {\n constructor(\n private readonly bucketName: string,\n private readonly resolveSettings: () => Result<S3Settings>,\n private readonly gate: ModuleGate,\n ) {}\n\n async upload(\n key: string,\n body: StorageBody,\n options?: UploadOptions,\n ): Promise<Result<{ key: string; etag?: string }>> {\n return withGate(this.gate, async () => {\n const resolved = this.resolve(key);\n if (resolved.error) return err(resolved.error);\n const { client, bucket, fullKey } = resolved.data;\n try {\n const response = await client.send(\n new PutObjectCommand({\n Bucket: bucket,\n Key: fullKey,\n Body: body,\n ContentType: options?.contentType,\n Metadata: options?.metadata,\n }),\n );\n const etag = stripEtag(response.ETag);\n return ok(etag === undefined ? { key } : { key, etag });\n } catch (cause) {\n return err(toStorageError('Upload failed', cause));\n }\n });\n }\n\n async download(key: string): Promise<Result<Blob>> {\n return withGate(this.gate, async () => {\n const resolved = this.resolve(key);\n if (resolved.error) return err(resolved.error);\n const { client, bucket, fullKey } = resolved.data;\n try {\n const response = await client.send(new GetObjectCommand({ Bucket: bucket, Key: fullKey }));\n const body = response.Body;\n if (!body) {\n return err({\n code: 's3_empty_response',\n message: `S3 returned an empty body for ${fullKey}`,\n });\n }\n const bytes = await body.transformToByteArray();\n // `transformToByteArray` returns a plain ArrayBuffer-backed Uint8Array.\n // Its generic upper bound (`ArrayBufferLike`) includes `SharedArrayBuffer`,\n // which `BlobPart` rejects, so narrow it for the Blob slot.\n return ok(\n new Blob([bytes as Uint8Array<ArrayBuffer>], {\n type: response.ContentType ?? 'application/octet-stream',\n }),\n );\n } catch (cause) {\n return err(toStorageError('Download failed', cause));\n }\n });\n }\n\n async list(\n options?: ListOptions,\n ): Promise<Result<{ objects: readonly StorageObject[]; nextCursor?: string }>> {\n return withGate(this.gate, async () => {\n const resolved = this.resolve(options?.prefix ?? '');\n if (resolved.error) return err(resolved.error);\n const { client, bucket, agentId, fullKey: basePrefix } = resolved.data;\n const limit = options?.limit;\n if (limit !== undefined && limit <= 0) {\n return err({\n code: 's3_invalid_argument',\n message: '`limit` must be a positive integer',\n });\n }\n try {\n const response: ListObjectsV2CommandOutput = await client.send(\n new ListObjectsV2Command({\n Bucket: bucket,\n Prefix: basePrefix,\n ...(limit !== undefined ? { MaxKeys: limit } : {}),\n ...(options?.cursor ? { ContinuationToken: options.cursor } : {}),\n }),\n );\n const stripPrefix = `${agentId}/${this.bucketName}/`;\n const objects: StorageObject[] = (response.Contents ?? []).map((item) => {\n const itemKey = item.Key?.startsWith(stripPrefix)\n ? item.Key.slice(stripPrefix.length)\n : (item.Key ?? '');\n const obj: StorageObject = { key: itemKey, size: item.Size ?? 0 };\n if (item.LastModified) obj.lastModified = item.LastModified;\n const etag = stripEtag(item.ETag);\n if (etag) obj.etag = etag;\n return obj;\n });\n const nextCursor =\n response.IsTruncated && response.NextContinuationToken\n ? response.NextContinuationToken\n : undefined;\n return ok(nextCursor === undefined ? { objects } : { objects, nextCursor });\n } catch (cause) {\n return err(toStorageError('List failed', cause));\n }\n });\n }\n\n async remove(key: string): Promise<Result<{ key: string }>> {\n return withGate(this.gate, async () => {\n const resolved = this.resolve(key);\n if (resolved.error) return err(resolved.error);\n const { client, bucket, fullKey } = resolved.data;\n try {\n await client.send(new DeleteObjectCommand({ Bucket: bucket, Key: fullKey }));\n return ok({ key });\n } catch (cause) {\n return err(toStorageError('Delete failed', cause));\n }\n });\n }\n\n /**\n * Returns the canonical S3-style URL for an object. Pure URL-builder — no\n * S3 round-trip — so this method intentionally bypasses the contract gate.\n * Whether the URL is publicly fetchable depends on the bucket policy; for\n * private buckets, use `getSignedDownloadUrl` instead.\n */\n getPublicUrl(key: string): Result<string> {\n const resolved = this.resolve(key);\n if (resolved.error) return err(resolved.error);\n const { endpoint, bucket, fullKey } = resolved.data;\n const base = endpoint.replace(/\\/+$/, '');\n return ok(`${base}/${bucket}/${encodeS3Key(fullKey)}`);\n }\n\n async getSignedUploadUrl(key: string, options?: SignedUrlOptions): Promise<Result<SignedUrl>> {\n return this.signUrl(\n key,\n options,\n 'Signing upload URL failed',\n ({ bucket, fullKey }) =>\n new PutObjectCommand({ Bucket: bucket, Key: fullKey, ContentType: options?.contentType }),\n );\n }\n\n async getSignedDownloadUrl(key: string, options?: SignedUrlOptions): Promise<Result<SignedUrl>> {\n return this.signUrl(\n key,\n options,\n 'Signing download URL failed',\n ({ bucket, fullKey }) => new GetObjectCommand({ Bucket: bucket, Key: fullKey }),\n );\n }\n\n private async signUrl(\n key: string,\n options: SignedUrlOptions | undefined,\n failureMessage: string,\n buildCommand: (args: {\n bucket: string;\n fullKey: string;\n }) => PutObjectCommand | GetObjectCommand,\n ): Promise<Result<SignedUrl>> {\n return withGate(this.gate, async () => {\n const resolved = this.resolve(key);\n if (resolved.error) return err(resolved.error);\n const { client, bucket, fullKey } = resolved.data;\n const expiresIn = options?.expiresIn ?? DEFAULT_SIGNED_URL_TTL_SECONDS;\n try {\n const url = await getSignedUrl(client, buildCommand({ bucket, fullKey }), { expiresIn });\n return ok({ url, expiresAt: new Date(Date.now() + expiresIn * 1000) });\n } catch (cause) {\n return err(toStorageError(failureMessage, cause));\n }\n });\n }\n\n /**\n * Resolves S3 settings, validates the user key, and prefixes it with\n * `${agentId}/${bucketName}/`. Rejects path-traversal segments (`..`) so a\n * caller-controlled key cannot escape the agent's namespace.\n */\n private resolve(key: string): Result<ResolvedKey> {\n const settings = this.resolveSettings();\n if (settings.error) return err(settings.error);\n const normalisedKey = key.replace(/^\\/+/, '');\n if (/(^|\\/)\\.\\.(\\/|$)/.test(normalisedKey)) {\n return err({\n code: 's3_invalid_key',\n message: `Invalid storage key: path traversal segments are not allowed (received \"${key}\")`,\n });\n }\n const { agentId } = settings.data;\n const fullKey = normalisedKey\n ? `${agentId}/${this.bucketName}/${normalisedKey}`\n : `${agentId}/${this.bucketName}/`;\n return ok({ ...settings.data, fullKey });\n }\n}\n\nconst S3_CREDENTIALS_MISSING_MESSAGE =\n 'Cannot reach object storage — set `STACKBONE_S3_ACCESS_KEY`, `STACKBONE_S3_SECRET_KEY`, and `STACKBONE_S3_ENDPOINT` in the container or pass `s3` to `createClient({...})`.';\nconst S3_BUCKET_MISSING_MESSAGE =\n 'No storage bucket configured — set `STACKBONE_S3_BUCKET` in the container or pass `s3.bucket` to `createClient({...})`.';\nconst AGENT_ID_MISSING_MESSAGE =\n 'No agent identity configured — set `STACKBONE_AGENT_ID` in the container or pass `agentId` to `createClient({...})`.';\n\nfunction stripEtag(etag: string | undefined): string | undefined {\n return etag?.replace(/^\"|\"$/g, '');\n}\n\nfunction encodeS3Key(key: string): string {\n return key.split('/').map(encodeURIComponent).join('/');\n}\n\ninterface AwsServiceErrorShape {\n $metadata?: { httpStatusCode?: number };\n $fault?: 'client' | 'server';\n}\n\nfunction toStorageError(message: string, cause: unknown): SdkError {\n if (cause instanceof Error) {\n const aws = cause as Error & AwsServiceErrorShape;\n const meta: Record<string, unknown> = { name: aws.name };\n if (aws.$metadata?.httpStatusCode !== undefined) {\n meta['httpStatusCode'] = aws.$metadata.httpStatusCode;\n }\n if (aws.$fault) meta['fault'] = aws.$fault;\n return {\n code: 's3_error',\n message: `${message}: ${cause.message}`,\n cause,\n meta,\n };\n }\n return { code: 's3_error', message, cause };\n}\n","import {\n type AgentConnectionListResponse,\n agentConnectionListResponseSchema,\n type InvokeConnectorActionResponse,\n invokeConnectorActionResponseSchema,\n} from '@stackbone/validators';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { createModuleGate, type ModuleGate, withGate } from '../../../contract/module-gate';\nimport { type ErrorMapping, type HttpClient } from '../../../lib/http-client';\nimport { type Result } from '../../../result';\n\n/**\n * Base path of the control-plane connectors proxy implemented by the agent\n * connections module (`apps/api/src/modules/agent-connections`). Relative to the\n * configured `STACKBONE_API_URL` (the `HttpClient` resolves it against the base\n * URL), so the wire path is `${STACKBONE_API_URL}/api/v1/agent/connections/*`.\n */\nconst CONNECTIONS_BASE = 'api/v1/agent/connections';\n\n/**\n * Every connections method remaps HTTP statuses onto `connections_*` domain\n * codes. The 409 override surfaces the ambiguous-connection case (several\n * connections of the same connector and no selector) as `connections_ambiguous`\n * instead of the generic `connections_invalid_request` the 4xx default would\n * give; the candidate list rides through on `error.meta.body`.\n */\nconst ERROR_MAPPING: ErrorMapping = {\n prefix: 'connections',\n overrides: { 409: 'connections_ambiguous' },\n};\n\n/** Options for `invoke`. */\nexport interface InvokeOptions {\n /**\n * Selector to disambiguate when the workspace holds several connections of the\n * same connector. Accepts a connection **id** or a unique **name** (both are\n * returned by `list()`). Omitted → the proxy resolves the sole connection, or\n * fails `connections_ambiguous` when there is more than one.\n */\n connection?: string;\n}\n\n/**\n * `client.legacyConnections` — the agent's handle on the workspace's connector\n * connections under the legacy connector model. The credentials never enter the\n * agent container: each method\n * makes an authenticated call to the control plane (the connector executor owns\n * the resolved credential, in a platform process).\n *\n * - `list` returns the workspace's connections (connector id, label, auth kind,\n * health) — never any credential material — so the agent can adapt to what the\n * customer has connected.\n * - `invoke(connector, action, args)` runs a connector action imperatively. The\n * control plane resolves the workspace's connection for `connector`, validates\n * `args` against the action's input schema, executes it, and returns the\n * validated output verbatim. `args` is opaque — the SDK forwards it untouched.\n *\n * Authentication reuses the existing `STACKBONE_AGENT_JWT` channel injected at\n * provisioning (the `HttpClient` attaches the bearer + install header), so the\n * control plane scopes every call to the agent's own install → organization.\n *\n * Contract gating: every method awaits the `connections.actions` module gate\n * before touching the network, so a stale datapath / missing capability surfaces\n * as a gating error rather than a failed request.\n */\nexport class ConnectionsModule {\n private readonly _gate: ModuleGate;\n\n constructor(\n resolved: ResolvedConfig,\n private readonly _http: HttpClient,\n /** Test seam — see `ModuleGate`. Defaults to the lazy contract gate. */\n gate?: ModuleGate,\n ) {\n this._gate = gate ?? createModuleGate('connections', resolved);\n }\n\n /** List the workspace's connections (no credentials). */\n async list(): Promise<Result<AgentConnectionListResponse>> {\n return withGate(this._gate, async () =>\n this._http.request<AgentConnectionListResponse>({\n method: 'GET',\n path: `${CONNECTIONS_BASE}`,\n responseSchema: agentConnectionListResponseSchema,\n errorMapping: ERROR_MAPPING,\n }),\n );\n }\n\n /**\n * Invoke a connector action against the workspace's connection for that\n * connector. `args` is forwarded opaquely; the control plane validates it\n * against the action's own input schema and returns the validated output.\n *\n * When the workspace holds several connections of the same connector, pass\n * `{ connection }` (a connection id or unique name) to pick one; omitting it\n * with more than one connection fails `connections_ambiguous`.\n */\n async invoke(\n connector: string,\n action: string,\n args: unknown,\n opts?: InvokeOptions,\n ): Promise<Result<InvokeConnectorActionResponse>> {\n return withGate(this._gate, async () => {\n // Drop the selector when absent so the strict request schema sees the same\n // wire shape published single-connection agents have always sent.\n const body: Record<string, unknown> = { connector, action, args };\n if (opts?.connection !== undefined) body['connection'] = opts.connection;\n\n return this._http.request<InvokeConnectorActionResponse>({\n method: 'POST',\n path: `${CONNECTIONS_BASE}/invoke`,\n body,\n responseSchema: invokeConnectorActionResponseSchema,\n errorMapping: ERROR_MAPPING,\n });\n });\n }\n}\n","import type { ChatCompletionMessageParam } from 'openai/resources';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { notImplemented, type Result } from '../../../result';\n\n/**\n * Where a memory lives. Default `'user'`. `'session'` is short-lived and\n * collapsed (or dropped) by `endSession()`; `'agent'` is shared across every\n * user of the agent.\n */\nexport type MemoryScope = 'user' | 'session' | 'agent';\n\n/**\n * Either raw text or an OpenAI-shaped conversation. The future mem0 backend\n * accepts both: strings ingest verbatim, message arrays are summarised into\n * one or more facts.\n */\nexport type MemoryContent = string | ChatCompletionMessageParam[];\n\nexport interface AddMemoryRequest {\n userId: string;\n /** Conversation/session bucket. Required when `scope: 'session'`. */\n sessionId?: string;\n /** Default `'user'`. */\n scope?: MemoryScope;\n metadata?: Record<string, unknown>;\n}\n\nexport interface MemoryItem {\n id: string;\n content: string;\n userId: string;\n sessionId?: string;\n scope: MemoryScope;\n metadata?: Record<string, unknown>;\n /** ISO 8601 UTC timestamp. */\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface SearchMemoryOptions {\n userId?: string;\n sessionId?: string;\n /** 1..100. Default 10. */\n limit?: number;\n /** Minimum cosine similarity in [0, 1]. Hits below this are dropped. */\n threshold?: number;\n /** Metadata predicates AND-ed to the semantic match. */\n filters?: Record<string, unknown>;\n /** Restrict the search to a subset of scopes. Default: every scope. */\n includeScopes?: readonly MemoryScope[];\n}\n\nexport interface MemoryHit extends MemoryItem {\n /** Cosine similarity in [0, 1]. */\n score: number;\n}\n\nexport interface ListMemoryRequest {\n userId: string;\n /** 1..100. Default 50. */\n limit?: number;\n cursor?: string;\n}\n\nexport interface ListMemoryResult {\n items: readonly MemoryItem[];\n nextCursor?: string;\n}\n\nexport interface UpdateMemoryOptions {\n content?: string;\n /** Shallow-merged onto the existing metadata (mem0 semantics). */\n metadata?: Record<string, unknown>;\n}\n\nexport interface DeleteAllMemoryRequest {\n userId: string;\n}\n\nexport type MemoryHistoryEvent = 'created' | 'updated' | 'accessed' | 'deleted';\n\nexport interface MemoryHistoryEntry {\n id: string;\n memoryId: string;\n event: MemoryHistoryEvent;\n /** ISO 8601 UTC timestamp. */\n at: string;\n /** Identifier of who triggered the event (user id, agent id, etc.). */\n actor?: string;\n /** Content snapshot before the event. Only set for `updated`/`deleted`. */\n before?: string;\n /** Content snapshot after the event. Only set for `created`/`updated`. */\n after?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface EndSessionOptions {\n /** Persist session-scoped facts to long-term (`'user'`) memory before closing. Default `true`. */\n persist?: boolean;\n}\n\nexport interface EndSessionResult {\n sessionId: string;\n /** Number of session memories promoted to long-term storage. `0` when `persist: false`. */\n persisted: number;\n}\n\n/**\n * `client.memory` — long-term memory for the agent. The first iteration is a\n * scaffolding placeholder: every method returns `not_implemented`. The real\n * backend will be mem0 (`mem0ApiKey` / `MEM0_API_KEY`) and the public surface\n * defined here is the contract callers can already type against.\n *\n * Contract gating: not gated. Memory targets mem0 (a non-Stackbone partner),\n * so there is no Stackbone Agent Protocol capability to assert against. No\n * entry in `MODULE_CAPABILITIES` per the rule documented in\n * `contract/capability-registry.ts`. When/if the runtime moves to a\n * Stackbone-served backend we add the capability and wire the gate.\n */\nexport class MemoryModule {\n constructor(_resolved: ResolvedConfig) {\n // Constructor signature accepts ResolvedConfig for parity with the gated\n // surfaces. Runtime is not built yet (see class header comment).\n }\n\n async add(_content: MemoryContent, _request: AddMemoryRequest): Promise<Result<MemoryItem>> {\n return notImplemented('memory.add');\n }\n\n async search(\n _query: string,\n _options?: SearchMemoryOptions,\n ): Promise<Result<readonly MemoryHit[]>> {\n return notImplemented('memory.search');\n }\n\n async delete(_memoryId: string): Promise<Result<{ id: string }>> {\n return notImplemented('memory.delete');\n }\n\n async deleteAll(_request: DeleteAllMemoryRequest): Promise<Result<{ deleted: number }>> {\n return notImplemented('memory.deleteAll');\n }\n\n async get(_memoryId: string): Promise<Result<MemoryItem>> {\n return notImplemented('memory.get');\n }\n\n async list(_request: ListMemoryRequest): Promise<Result<ListMemoryResult>> {\n return notImplemented('memory.list');\n }\n\n async update(_memoryId: string, _options: UpdateMemoryOptions): Promise<Result<MemoryItem>> {\n return notImplemented('memory.update');\n }\n\n async history(_memoryId: string): Promise<Result<readonly MemoryHistoryEntry[]>> {\n return notImplemented('memory.history');\n }\n\n async endSession(\n _sessionId: string,\n _options?: EndSessionOptions,\n ): Promise<Result<EndSessionResult>> {\n return notImplemented('memory.endSession');\n }\n}\n","import {\n type ListSchedulesResponse,\n listSchedulesResponseSchema,\n type PublishJobResponse,\n publishJobResponseSchema,\n type ScheduleJobResponse,\n scheduleJobResponseSchema,\n type UnscheduleJobResponse,\n unscheduleJobResponseSchema,\n} from '@stackbone/validators';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { createModuleGate, type ModuleGate, withGate } from '../../../contract/module-gate';\nimport { type ErrorMapping, type HttpClient } from '../../../lib/http-client';\nimport { type Result } from '../../../result';\n\n/**\n * Base path of the control-plane job-enqueue surface implemented by the\n * BullMQ dispatcher (`apps/api/src/modules/agent-jobs`). Relative to the\n * configured `STACKBONE_API_URL` (the `HttpClient` resolves it against the\n * base URL), so the wire path is `${STACKBONE_API_URL}/api/v1/agent/queues/*`.\n */\nconst QUEUES_BASE = 'api/v1/agent/queues';\n\n/** Every queues method remaps HTTP statuses onto `queues_*` domain codes. */\nconst ERROR_MAPPING: ErrorMapping = { prefix: 'queues' };\n\n/**\n * Enqueue a one-shot (or deferred) job. The opaque `payload` is whatever the\n * agent's `receive` handler expects — the core never inspects it.\n */\nexport interface PublishRequest {\n /** Opaque job name (e.g. `send-email`). Surfaced in the Studio inspector. */\n name: string;\n /** Opaque job payload — JSON-serialisable; the core forwards it untouched. */\n payload: unknown;\n /** Per-job override of the platform retry default. Omitted → platform default. */\n retries?: number;\n /** Deferred delivery in milliseconds. Omitted / 0 → immediate. */\n delay?: number;\n /** Idempotency hint — a duplicate publish with the same key collapses to one job. */\n deduplicationId?: string;\n}\n\n/** Register / update a dynamic per-installation cron schedule. */\nexport interface ScheduleRequest {\n /** Schedule name, unique per install. Re-scheduling the same name updates it in place. */\n name: string;\n /** Opaque payload delivered on every fire. */\n payload: unknown;\n /** Cron expression evaluated by the dispatcher. */\n cron: string;\n /** IANA timezone the cron pattern runs in. Defaults to UTC. */\n tz?: string;\n /** Per-job override of the platform retry default. */\n retries?: number;\n}\n\n/** Cancel a previously registered schedule by name. */\nexport interface UnscheduleRequest {\n name: string;\n}\n\n/**\n * `client.queues` — the agent's handle on the BullMQ-backed job system. The\n * agent never touches Redis: each method makes an authenticated call to the\n * control plane (the dispatcher owns the queue + the clock).\n *\n * - `publish` enqueues a one-shot job (optionally deferred via `delay`, with a\n * per-job `retries` override and an optional `deduplicationId`).\n * - `schedule` / `unschedule` manage dynamic per-user cron schedules.\n * - `listSchedules` lists the install's active schedules.\n *\n * Authentication reuses the existing `STACKBONE_AGENT_JWT` channel injected at\n * provisioning (the `HttpClient` attaches the bearer + install header), so the\n * core scopes every enqueue to the agent's own install.\n *\n * Contract gating: every method awaits the `queues.jobs` module gate before\n * touching the network, so a stale datapath / missing capability surfaces as\n * a gating error rather than a failed POST.\n *\n * @deprecated CLASSIC v2 ONLY. This enqueues a job that wakes a `defineAgent`\n * handler over the scale-to-zero agent-jobs dispatcher — the path being retired\n * with `/invoke`. In runtime v3 (eve + workflows) a background job IS \"start a\n * workflow\": from a workflow use `startWorkflow(name, input)` /\n * `startWorkflowAndWait(name, input)` and `scheduleWorkflow(name, input, cron)`\n * from `@stackbone/sdk/workflow`, which run on the World's `flows` queue with\n * their own observable runs. `client.queues.*` keeps working while cloud +\n * self-host remain on classic v2; it disappears when v3 reaches production.\n */\nexport class QueuesModule {\n private readonly _gate: ModuleGate;\n\n constructor(\n resolved: ResolvedConfig,\n private readonly _http: HttpClient,\n /** Test seam — see `ModuleGate`. Defaults to the lazy contract gate. */\n gate?: ModuleGate,\n ) {\n this._gate = gate ?? createModuleGate('queues', resolved);\n }\n\n /** @deprecated Classic v2 only. Prefer `startWorkflow(name, input)` from\n * `@stackbone/sdk/workflow` (a job → a workflow run on the World). */\n async publish(request: PublishRequest): Promise<Result<PublishJobResponse>> {\n return withGate(this._gate, async () => {\n // Drop undefined knobs so the strict request schema on the core sees only\n // the fields the caller actually set.\n const body: Record<string, unknown> = { name: request.name, payload: request.payload };\n if (request.retries !== undefined) body['retries'] = request.retries;\n if (request.delay !== undefined) body['delay'] = request.delay;\n if (request.deduplicationId !== undefined) body['deduplicationId'] = request.deduplicationId;\n\n return this._http.request<PublishJobResponse>({\n method: 'POST',\n path: `${QUEUES_BASE}/publish`,\n body,\n responseSchema: publishJobResponseSchema,\n errorMapping: ERROR_MAPPING,\n });\n });\n }\n\n /** @deprecated Classic v2 only. Prefer `scheduleWorkflow(name, input, cron)`\n * from `@stackbone/sdk/workflow` (a cron → a workflow run on the World). */\n async schedule(request: ScheduleRequest): Promise<Result<ScheduleJobResponse>> {\n return withGate(this._gate, async () => {\n const body: Record<string, unknown> = {\n name: request.name,\n payload: request.payload,\n cron: request.cron,\n };\n if (request.tz !== undefined) body['tz'] = request.tz;\n if (request.retries !== undefined) body['retries'] = request.retries;\n\n return this._http.request<ScheduleJobResponse>({\n method: 'POST',\n path: `${QUEUES_BASE}/schedule`,\n body,\n responseSchema: scheduleJobResponseSchema,\n errorMapping: ERROR_MAPPING,\n });\n });\n }\n\n /** @deprecated Classic v2 only. Prefer `unschedule(name)` from\n * `@stackbone/sdk/workflow`. */\n async unschedule(request: UnscheduleRequest): Promise<Result<UnscheduleJobResponse>> {\n return withGate(this._gate, async () =>\n this._http.request<UnscheduleJobResponse>({\n method: 'POST',\n path: `${QUEUES_BASE}/unschedule`,\n body: { name: request.name },\n responseSchema: unscheduleJobResponseSchema,\n errorMapping: ERROR_MAPPING,\n }),\n );\n }\n\n /** @deprecated Classic v2 only. Prefer `listSchedules()` from\n * `@stackbone/sdk/workflow`. */\n async listSchedules(): Promise<Result<ListSchedulesResponse>> {\n return withGate(this._gate, async () =>\n this._http.request<ListSchedulesResponse>({\n method: 'GET',\n path: `${QUEUES_BASE}/schedules`,\n responseSchema: listSchedulesResponseSchema,\n errorMapping: ERROR_MAPPING,\n }),\n );\n }\n}\n","import type { ContractResponse } from '@stackbone/validators';\n\nimport { type ClientConfig, resolveConfig, type ResolvedConfig } from './config';\nimport { type ContractStore, createContractStore } from './contract/contract-handshake';\nimport { createModuleGate } from './contract/module-gate';\nimport { HttpClient } from './lib/http-client';\nimport { ApprovalFacade } from './surfaces/agent-local/approval/approval';\nimport { ConfigFacade } from './surfaces/agent-local/config/config';\nimport { DatabaseModule } from './surfaces/agent-local/database/database';\nimport { PromptsFacade } from './surfaces/agent-local/prompts/prompts';\nimport { RagModule } from './surfaces/agent-local/rag/rag';\nimport { SecretsFacade } from './surfaces/agent-local/secrets/secrets';\nimport {\n workflows,\n type WorkflowsAccessor,\n} from './surfaces/agent-local/workflows/workflows-accessor';\nimport { agent, type AgentAccessor } from './surfaces/external/agents/lazy-agent';\nimport { AiModule } from './surfaces/external/ai/ai';\nimport { connection, type ConnectionAccessor } from './surfaces/external/connect/call-connector';\nimport { StorageModule } from './surfaces/external/storage/storage';\nimport { ConnectionsModule } from './surfaces/pending/connections/connections';\nimport { MemoryModule } from './surfaces/pending/memory/memory';\nimport { QueuesModule } from './surfaces/pending/queues/queues';\n\n/**\n * The live agent surfaces exposed to the creator's code through a single\n * `createClient()` entry point. The folder layout under `src/surfaces/`\n * groups each surface by where its state lives:\n *\n * - `surfaces/agent-local/` — Postgres branch owned by the agent\n * (`database`, `rag`, `secrets`, `config`, `approval`). `secrets`,\n * `config` and `approval` moved here from the control plane: the agent now\n * reads its secrets/config and records HITL pauses directly against its own\n * `stackbone_platform.*` tables (decrypting secrets with the per-agent key),\n * with no control-plane round-trip. The approval RESUME callback stays\n * Studio-signed and is reconciled locally by `approval.verify()`.\n * - `surfaces/external/` — managed partner SDKs the SDK wraps directly\n * (`ai` / OpenRouter, `storage` / S3 + R2 / MinIO). Observability is not a\n * creator surface: agent code observes runs through the handler-scoped\n * `ctx.logger` (and plain `console.*`, which the wrapper captures and\n * correlates), while the platform primitives live in the\n * `@stackbone/sdk/observability` subpath the runtime wires directly.\n * - `surfaces/control-plane/` — thin HTTP calls to Stackbone's control\n * plane (none today after secrets/config/approval moved agent-local).\n * - `surfaces/pending/` — public surface is stable but the runtime is\n * not built yet. They are wired as live `client.X` accessors so MVP\n * agent code can be authored against the eventual contract today; each\n * method returns `Result<{ error: { code: \"not_implemented\" } }>` until\n * the backing runtime ships. Today: queues, memory.\n *\n * Each accessor builds its surface on first access and caches it — env\n * vars and partner SDK init costs are paid only when the agent actually\n * touches that surface.\n *\n * Capability gating: every surface listed in `MODULE_CAPABILITIES` builds\n * its `ModuleGate` against the per-client `ContractStore` owned by this\n * instance — two clients constructed in the same process do NOT share\n * handshake cache or suppression-warning state. See\n * `contract/capability-registry.ts` for the membership rule.\n */\nexport class StackboneClient {\n private _database?: DatabaseModule;\n private _storage?: StorageModule;\n private _ai?: AiModule;\n private _rag?: RagModule;\n private _approval?: ApprovalFacade;\n private _secrets?: SecretsFacade;\n private _config?: ConfigFacade;\n private _queues?: QueuesModule;\n private _legacyConnections?: ConnectionsModule;\n private _memory?: MemoryModule;\n private _prompts?: PromptsFacade;\n private _httpClient?: HttpClient;\n private readonly _contractStore: ContractStore;\n\n constructor(private readonly resolved: ResolvedConfig) {\n this._contractStore = createContractStore(resolved);\n }\n\n private http(): HttpClient {\n this._httpClient ??= new HttpClient(this.resolved);\n return this._httpClient;\n }\n\n get database(): DatabaseModule {\n this._database ??= new DatabaseModule(\n this.resolved,\n createModuleGate('database', this.resolved, this._contractStore),\n );\n return this._database;\n }\n\n get storage(): StorageModule {\n this._storage ??= new StorageModule(\n this.resolved,\n createModuleGate('storage', this.resolved, this._contractStore),\n );\n return this._storage;\n }\n\n get ai(): AiModule {\n this._ai ??= new AiModule(\n this.resolved,\n undefined,\n createModuleGate('ai', this.resolved, this._contractStore),\n );\n return this._ai;\n }\n\n get rag(): RagModule {\n this._rag ??= new RagModule(\n this.resolved,\n () => this.database,\n () => this.ai,\n createModuleGate('rag', this.resolved, this._contractStore),\n );\n return this._rag;\n }\n\n get approval(): ApprovalFacade {\n this._approval ??= new ApprovalFacade(this.resolved, () => this.database);\n return this._approval;\n }\n\n get secrets(): SecretsFacade {\n this._secrets ??= new SecretsFacade(this.resolved, () => this.database);\n return this._secrets;\n }\n\n get config(): ConfigFacade {\n this._config ??= new ConfigFacade(this.resolved, () => this.database);\n return this._config;\n }\n\n /**\n * Live surface — the agent's handle on the BullMQ-backed job system.\n * `publish` / `schedule` / `unschedule` / `listSchedules` make authenticated\n * calls to the control-plane dispatcher (`/api/v1/agent/queues/*`); the\n * agent never touches Redis. Gated against `queues.jobs` so the\n * handshake-blocked / capability-missing paths are exercised the same way\n * as the other gated surfaces.\n */\n get queues(): QueuesModule {\n this._queues ??= new QueuesModule(\n this.resolved,\n this.http(),\n createModuleGate('queues', this.resolved, this._contractStore),\n );\n return this._queues;\n }\n\n /**\n * Legacy surface — the agent's handle on the workspace's connector connections\n * under the OLD connector model. `list` / `invoke(connector, action, args)` make\n * authenticated calls to the control-plane connectors proxy\n * (`/api/v1/agent/connections/*`); the credentials never enter the agent\n * container. Gated against `connections.actions` so the handshake-blocked /\n * capability-missing paths are exercised the same way as the other gated\n * surfaces.\n *\n * Named `legacyConnections` (not `connections`) so it no longer sits one letter\n * from the new peer-free `connection(id)` entrypoint above — the two connector\n * entrypoints are now unambiguous. Behaviour is unchanged from the old\n * `connections` member.\n */\n get legacyConnections(): ConnectionsModule {\n this._legacyConnections ??= new ConnectionsModule(\n this.resolved,\n this.http(),\n createModuleGate('connections', this.resolved, this._contractStore),\n );\n return this._legacyConnections;\n }\n\n /**\n * Peer-free connector entrypoint — `stackbone.connection(id)` selects a Stackbone\n * Connect connector by its verbatim id and returns a typed handle whose generated\n * operations (`.sendMail({ ... })`, typed via the `StackboneConnections` registry)\n * and dynamic `.call(operation, args)` escape hatch both resolve to the same broker\n * call (`POST /api/connect/execute`, HMAC scheme A). It is a plain HMAC fetch — it\n * imports NO `eve` peer — so it is wired directly onto the client with no lazy\n * loading and pulls no new peer into the main barrel.\n *\n * This is the namespaced form of the top-level `connection(...)` export (now\n * `@deprecated`); both delegate to the same implementation. Distinct from the\n * plural `connections` surface above, which is the control-plane connectors proxy\n * (`list` / `invoke`).\n */\n get connection(): ConnectionAccessor {\n return connection;\n }\n\n /**\n * Namespaced sibling-agent entrypoint — `stackbone.agent(id)` selects a sibling\n * eve agent by its verbatim name and returns a lazy eve `Client`, so a workflow\n * step delegates with `stackbone.agent('support').session().send({ ... })`. The\n * name is typed against the augmentable `AgentRegistry` (declared names\n * autocomplete, a typo is a compile error).\n *\n * Peer isolation is load-bearing: selecting the agent and opening a session are\n * synchronous and import NO `eve` peer — only the session's already-async leaves\n * (`send` / `stream`) resolve `eve/client` via dynamic import on first use. So a\n * tool-only agent that imports `@stackbone/sdk` and never calls `agent(...)` never\n * eager-loads the optional `eve` peer and cannot crash-loop on a missing dep.\n *\n * This is the namespaced form of the top-level `eveAgent(...)` export (now\n * `@deprecated`) on the `@stackbone/sdk/workflow` subpath; both produce the same\n * signed workflow→agent call and the same eve `Client` API.\n */\n get agent(): AgentAccessor {\n return agent;\n }\n\n /**\n * Namespaced workflow trigger + schedule surface — `stackbone.workflows.start(...)`\n * / `.startAndWait(...)` / `.schedule(...)` / `.unschedule(...)` / `.listSchedules()`.\n * Start another workflow by name (fire-and-forget or durable sub-routine) and\n * manage dynamic cron triggers, all from inside a running workflow.\n *\n * These are peer-free shims over the ambient `WorkflowStarter` / `WorkflowScheduler`\n * the runtime injects on first dispatch — they import NO `workflow` / `eve` peer,\n * so (like `connection` / `agent`) they are wired directly onto the client and\n * pull nothing new into the main barrel. This is the namespaced form of the loose\n * `startWorkflow(...)` / `scheduleWorkflow(...)` exports (now `@deprecated`) on the\n * `@stackbone/sdk/workflow` subpath; both delegate to the same implementation, so\n * `start` / `startAndWait` keep their `\"use step\"` durability. The peer-bound\n * authoring API (`requestApproval` / `defineHook` / `sleep`) stays on that subpath.\n */\n get workflows(): WorkflowsAccessor {\n return workflows;\n }\n\n /**\n * Pending surface — runtime not built. Every method returns\n * `not_implemented`. Mem0 is a third-party integration, not a Stackbone\n * Agent Protocol capability, so this surface is intentionally not gated.\n */\n get memory(): MemoryModule {\n this._memory ??= new MemoryModule(this.resolved);\n return this._memory;\n }\n\n /**\n * Live agent-local surface — reads prompts from `stackbone_platform.prompts`\n * in the agent DB over the shared `client.database` pool and compiles\n * templates with the local `@stackbone/prompt-compiler`. Constructed with\n * the same `(resolved, () => this.database)` shape as `secrets`/`config`;\n * like them it is NOT wired to the control-plane handshake gate (it talks to\n * the agent's own tables, not a control-plane datapath).\n */\n get prompts(): PromptsFacade {\n this._prompts ??= new PromptsFacade(this.resolved, () => this.database);\n return this._prompts;\n }\n\n /**\n * Read-only view of the most recently resolved Stackbone Agent Protocol\n * contract for this client's `stackboneApiUrl`. Returns `null` until a\n * handshake has resolved successfully (the handshake fires lazily on the\n * first gated module call — slices #4/#5). Synchronous, never throws,\n * performs no fetches.\n *\n * Backed by this client's own `ContractStore`, so two `StackboneClient`\n * instances see independent `client.contract` views even when they point\n * at the same baseUrl.\n */\n get contract(): ContractResponse | null {\n return this._contractStore.peek(this.resolved.stackboneApiUrl);\n }\n}\n\nexport function createClient(config: ClientConfig = {}): StackboneClient {\n return new StackboneClient(resolveConfig(config));\n}\n","// The ambient, process-scoped Stackbone client.\n//\n// `stackbone` is the handle the creator imports and uses directly from any eve\n// tool or workflow step:\n//\n// import { stackbone } from '@stackbone/sdk';\n// await stackbone.storage.put(...);\n// await stackbone.rag.retrieve(...);\n//\n// It is the same process-scoped client the classic runtime already built from\n// the environment (`createClient()`), now reachable through an ambient handle\n// and resolved lazily. No `createClient()`, no credential wiring.\n//\n// Laziness is load-bearing on two fronts:\n//\n// 1. `package.json` declares `\"sideEffects\": false`, so this module must NOT\n// construct a client at import time — a bundler may drop the side effect, and\n// constructing eagerly would read `process.env` before the runtime has seeded\n// the SDK env contract (the eve subprocess / emulator process inject it just\n// before the creator's code loads). We build the client on FIRST property\n// access instead.\n//\n// 2. The underlying `StackboneClient` already builds each surface lazily on\n// first access and caches it, so the ambient handle inherits per-surface lazy\n// env resolution for free: touching `stackbone.storage` resolves config from\n// the environment exactly once, the first time that surface is used.\n//\n// All env reading funnels through `resolveConfig` (the single interceptable\n// seam) because the ambient client delegates to `createClient()` arg-less.\n\nimport { type StackboneClient, createClient } from '../client';\n\nlet cached: StackboneClient | undefined;\n\nfunction resolveAmbientClient(): StackboneClient {\n // Arg-less `createClient()` → `resolveConfig({})` reads the environment once,\n // here on first surface access, and the resulting snapshot is memoised for the\n // life of the process (snapshot semantics: env rotation needs a rebuild).\n cached ??= createClient();\n return cached;\n}\n\n/**\n * The ambient, lazily-resolved Stackbone client. A `Proxy` over the cached\n * `StackboneClient`: every property access (the surface accessors\n * `storage` / `rag` / `queues` / `database` / `secrets` / `config` / `ai` /\n * `approval` / `legacyConnections` / `memory` / `prompts` / `contract`, the\n * peer-free connector entrypoint `connection(id)`, the sibling-agent entrypoint\n * `agent(id)`, plus the peer-free `workflows` trigger/schedule surface) is\n * forwarded to the singleton, which is created on the\n * first such access. Because each `StackboneClient` accessor is itself lazy +\n * cached, repeated access returns the same surface instance (one client, one\n * pool, per process). `connection` and `agent` are plain function members (no\n * lazy surface build) — the Proxy binds them to the real client and forwards them\n * like any other member. `agent` is special only in that the eve peer it needs is\n * resolved lazily on the first async turn, NOT at member access.\n *\n * No surface is constructed and no env var is read at import time. A surface op\n * that needs a genuinely-absent required env var (e.g. `STACKBONE_POSTGRES_URL`\n * for an agent-local op) fails with the surface's actionable, coded error\n * (`database_not_configured` etc.), never a silent `undefined`.\n */\nexport const stackbone: StackboneClient = new Proxy({} as StackboneClient, {\n get(_target, prop) {\n const client = resolveAmbientClient();\n // Pass the real client as the receiver (NOT the Proxy) so a getter's `this`\n // resolves its private cache on the client itself — using the Proxy as the\n // receiver would re-enter this trap on `this._database` and yield undefined.\n const value = Reflect.get(client as object, prop, client);\n // Bind methods to the real client so `this` resolves correctly when a\n // consumer destructures or detaches a surface accessor result.\n return typeof value === 'function' ? value.bind(client) : value;\n },\n has(_target, prop) {\n return Reflect.has(resolveAmbientClient() as object, prop);\n },\n});\n\n/**\n * Test-only seam: drops the cached ambient client so the next surface access\n * re-resolves config from the current `process.env`. Production code never\n * needs this — `resolveConfig` is a snapshot and the process env is set up once\n * before the creator's code runs. Specs use it to vary the environment between\n * assertions.\n */\nexport function __resetAmbientClient(): void {\n cached = undefined;\n}\n","// `requestApproval()` — the default, workflow-level Human-in-the-Loop helper.\n//\n// A workflow step that needs human intervention PAUSES the workflow with a\n// native Workflow SDK hook and resumes generically by token. This helper wraps\n// the three moving parts so the creator writes one line:\n//\n// import { requestApproval } from '@stackbone/sdk';\n//\n// const decision = await requestApproval({\n// token: `refund-${orderId}`,\n// topic: 'refund',\n// payload: { orderId, amount },\n// title: 'Approve this refund?',\n// timeout: '24h',\n// fallback: 'reject',\n// });\n// if (decision.status !== 'approved') return { skipped: true };\n// await doSideEffect(...); // gated: never runs without a fresh human decision\n//\n// What it composes:\n//\n// 1. A SHARED, module-level `defineHook` — ONE hook for the whole module so it\n// registers a single stable `workflowId`. Each approval discriminates\n// itself by the `token` passed to `hook.create({ token })`; the token is\n// also the resume key (the host resumes the run with `resumeHook(token)`\n// without ever holding the creator's hook object).\n// 2. A sub-step (`recordApproval`, carrying the `\"use step\"` directive) that\n// writes the row in `stackbone_platform.approvals` via the F1 ambient\n// client (`stackbone.approval.request`). The row carries `run_id` = the\n// PROJECTED `runs.id` read from the invocation context (F5) so the run\n// appears in the approvals inbox, plus a `resumeKind` discriminator and the\n// `hookToken` in `metadata` (jsonb — no migration) so the inbox/inspection\n// can resume the parked hook.\n// 3. `Promise.race([hook.create({ token }), sleep(timeout)])` — the race vs.\n// `sleep` IS the timeout + fallback model. If the human decides first, the\n// hook arm wins; if the timeout elapses first, the `fallback`\n// ('reject' | 'approve') is applied and the workflow continues.\n//\n// HARD RESTRICTION: neither this helper nor the raw `defineHook` may run inside\n// a `\"use step\"` block — `.create()` is a WORKFLOW primitive (it suspends the\n// run). All I/O and side-effects live in sub-steps; the gate lives in the\n// workflow body. See the `defineHook` re-export note in the SDK barrel.\n//\n// `'workflow'` is a PEER dependency kept EXTERNAL by the SDK build — the\n// creator's eve workspace resolves it at runtime. The hook state lives in Redis,\n// so the run is resumable from another process (the resume itself is the runtime\n// seam, not this helper).\n\n// `workflow` is the eve Workflow SDK peer dependency, resolved at runtime by the\n// creator's workspace and kept external by the SDK build (see `workflow-peer.d.ts`).\nimport { defineHook, sleep } from 'workflow';\n\nimport { getInvocationContext } from '../../../runtime/invocation-context';\nimport { stackbone } from '../../../runtime/ambient-client';\n\n/**\n * Discriminator stored in `approvals.metadata.resumeKind` so the inbox /\n * run-inspection knows a parked Workflow hook (resumed by token) backs this\n * approval — as opposed to the legacy fire-and-forget HMAC-callback approval.\n */\nexport const WORKFLOW_HOOK_RESUME_KIND = 'workflow_hook' as const;\n\n/** Fallback applied when the timeout elapses before a human decides. */\nexport type ApprovalFallback = 'approve' | 'reject';\n\nexport interface RequestApprovalOptions<TPayload = unknown> {\n /**\n * The hook resume key — unique per approval within a run. The host resumes the\n * parked run by this token (`resumeHook(token, ...)`), so it must be stable\n * and unguessable for the lifetime of the pause.\n */\n token: string;\n /** Approval category, mirrored to `approvals.topic`. */\n topic: string;\n /** The data the human reviews, mirrored to `approvals.payload`. */\n payload: TPayload;\n /** Human-readable title surfaced in the inbox / run inspection. */\n title?: string;\n /** ISO 8601 duration (`'24h'`) or milliseconds. Passed to `sleep`. */\n timeout?: string | number;\n /** Decision applied when the timeout wins the race. Default `'reject'`. */\n fallback?: ApprovalFallback;\n}\n\n/**\n * The decision the gated step branches on. `status === 'approved'` is the only\n * green light for the side-effect; `timedOut` is `true` only when the fallback\n * was applied because no human decided before the timeout.\n */\nexport interface ApprovalDecision<TPayload = unknown> {\n status: 'approved' | 'rejected';\n /** The payload the human attached when approving/rejecting, if any. */\n payload?: TPayload;\n /** `true` when this decision is the timeout fallback, not a human decision. */\n timedOut: boolean;\n}\n\nconst DEFAULT_FALLBACK: ApprovalFallback = 'reject';\n\n/**\n * One shared hook for the whole module → a single stable `workflowId`. The\n * per-approval `token` (passed to `.create({ token })`) is what discriminates\n * and resumes each pause.\n */\nconst approvalHook = defineHook({ name: 'stackbone.requestApproval' });\n\n/** Sentinel the `sleep` arm of the race resolves to, distinct from any hook payload. */\nconst TIMED_OUT = Symbol('stackbone.requestApproval.timedOut');\n\n/**\n * The raw decision shape a resumed hook yields. The Workflow SDK passes whatever\n * the host supplied to `resumeHook(token, payload)`; we treat a `'rejected'`\n * marker (or an explicit `{ status: 'rejected' }`) as a rejection and everything\n * else as an approval, so the creator stays in control of the resume payload.\n */\ninterface ResumedHookValue<TPayload = unknown> {\n decision?: 'approved' | 'rejected';\n status?: 'approved' | 'rejected';\n payload?: TPayload;\n}\n\n/**\n * Workflow-level HITL helper. PAUSES the workflow durably on a hook and returns\n * a decision the caller gates the side-effect on. MUST be called from the\n * workflow body, never inside a `\"use step\"` block.\n */\nexport async function requestApproval<TPayload = unknown>(\n options: RequestApprovalOptions<TPayload>,\n): Promise<ApprovalDecision<TPayload>> {\n const fallback = options.fallback ?? DEFAULT_FALLBACK;\n\n // Sub-step: persist the approvals row so the run shows up in the inbox. The\n // INSERT is the only I/O and stays in a `\"use step\"` so it replays cleanly on\n // crash-resume; the hook gate below is a workflow primitive and stays out.\n await recordApproval({\n token: options.token,\n topic: options.topic,\n payload: options.payload,\n ...(options.title !== undefined ? { title: options.title } : {}),\n ...(options.timeout !== undefined ? { timeout: options.timeout } : {}),\n fallback,\n });\n\n // Pause the run on the hook, racing the human decision against the timeout.\n // `sleep` resolves to the TIMED_OUT sentinel so the two arms are\n // distinguishable regardless of what the hook resolves to.\n const hook = approvalHook.create({ token: options.token });\n const timeoutArm = sleep(options.timeout).then(() => TIMED_OUT);\n const outcome = (await Promise.race([hook, timeoutArm])) as\n | ResumedHookValue<TPayload>\n | typeof TIMED_OUT;\n\n if (outcome === TIMED_OUT) {\n return { status: fallback === 'approve' ? 'approved' : 'rejected', timedOut: true };\n }\n\n const status = outcome.status ?? outcome.decision ?? 'approved';\n const decision: ApprovalDecision<TPayload> = {\n status: status === 'rejected' ? 'rejected' : 'approved',\n timedOut: false,\n };\n if (outcome.payload !== undefined) decision.payload = outcome.payload;\n return decision;\n}\n\ninterface RecordApprovalArgs<TPayload> {\n token: string;\n topic: string;\n payload: TPayload;\n title?: string;\n timeout?: string | number;\n fallback: ApprovalFallback;\n}\n\n/**\n * Sub-step that writes the `approvals` row via the ambient client. The\n * `\"use step\"` directive marks this for the eve/Workflow builder so the INSERT\n * is a durable, replay-safe step (a no-op string literal under the plain SDK\n * build). The row binds `run_id` to the projected `runs.id` from the invocation\n * context (F5) and stamps the resume discriminator + hook token in `metadata`.\n *\n * When the invocation context also carries the active workflow step id\n * (`requestedByStepId`), it is forwarded so the row anchors to the exact step\n * that requested the approval (`approvals.requested_by_step_id`, A6). No caller\n * populates that id today — see `InvocationContext.requestedByStepId` — so the\n * column stays NULL until the runtime can attribute a `\"use step\"` to a World\n * step; the plumbing is in place to stamp it the moment that lands.\n */\nasync function recordApproval<TPayload>(args: RecordApprovalArgs<TPayload>): Promise<void> {\n 'use step';\n const context = getInvocationContext();\n const runId = context?.runId;\n const requestedByStepId = context?.requestedByStepId;\n await stackbone.approval.request({\n topic: args.topic,\n payload: args.payload,\n // Resume is by hook token, not an HMAC callback — point `onDecide` at the\n // host's by-token resume seam so the stored `callback_url` is meaningful.\n onDecide: `/workflows/hooks/${args.token}/resume`,\n ...(args.title !== undefined ? { title: args.title } : {}),\n ...(args.timeout !== undefined ? { timeout: args.timeout } : {}),\n onTimeout: args.fallback,\n ...(runId !== undefined ? { runId } : {}),\n ...(requestedByStepId !== undefined ? { requestedByStepId } : {}),\n metadata: { resumeKind: WORKFLOW_HOOK_RESUME_KIND, hookToken: args.token },\n });\n}\n","// `eveAgent()` — address a sibling eve agent BY NAME from inside a workflow.\n//\n// A multi-agent workspace has several agents, so a single `EVE_AGENT_URL` is not\n// enough. The emulator (and, in production, the client's VM) injects an\n// `AGENT_URLS` map of `{ \"<agent-name>\": \"<url>\" }` and the shared signing key\n// `HMAC_SECRET` onto the workflow process's env. A workflow `\"use step\"` asks for\n// an agent by the same name its folder has under `agents/` and this helper\n// resolves it to an eve `Client`, ready to open a session and stream a turn.\n//\n// The workflow→agent hop is a CO-LOCATED trust boundary (the workflow runtime and\n// the agent both run inside the dev emulator / the client's VM). eve's `Client`\n// resolves `headers` per request but WITHOUT request context (no method/path) and\n// serializes the turn body internally, so the canonical body-bound RT-01\n// signature the chat proxy uses cannot be produced here. Instead, each request\n// proves possession of the shared `HMAC_SECRET` with a timestamp-bound bearer\n// under a header distinct from RT-01's; the agent's `hmacWorkflowAuth` verifies it\n// inside a 5-minute drift window.\n//\n// `eve/client`'s `Client` is returned AS-IS (a thin wrapper, no Stackbone facade):\n// the creator drives it with eve's own API (`.session()`, `.send()`, …). The\n// `eve` package is an OPTIONAL peer dependency kept external by the SDK build —\n// only creators who author workflows install it — and the type comes from the\n// `eve-client-peer.d.ts` shim so the SDK compiles without `eve` installed.\n\nimport { Client } from 'eve/client';\n\nimport type { AgentName } from './agent-registry';\nimport { resolveAgentHost, signWorkflowHeaders } from './workflow-agent-transport';\n\n/**\n * Resolve a sibling eve agent by name and return its `Client`, AS-IS. The name is\n * the agent's folder name under `agents/`; the URL comes from the emulator-injected\n * `AGENT_URLS` map. The `headers` resolver runs fresh per request, so every\n * session-create and stream GET carries a current timestamp (always inside the\n * 5-minute drift window).\n *\n * `name` is typed `AgentName` — a loose `string` by default, but narrowed to the\n * workspace's declared agent names once `stackbone dev` has generated\n * `.stackbone/agents.d.ts` from `stackbone.config.ts` (see `agent-registry.ts`),\n * so a typo becomes a compile error and the editor autocompletes the real names.\n *\n * @deprecated Prefer the namespaced `stackbone.agent(id)` from the main\n * `@stackbone/sdk` barrel — same signed call, same eve `Client`, one unified\n * namespace, and the `eve` peer is pulled lazily only on first use. This top-level\n * export still works and resolves the peer eagerly (it lives on the\n * `@stackbone/sdk/workflow` subpath, which already imports the peer).\n */\nexport function eveAgent(name: AgentName): Client {\n const host = resolveAgentHost(name as string);\n return new Client({ host, headers: () => signWorkflowHeaders() });\n}\n","// `ingestDocuments()` — ingest a document into RAG from inside a workflow,\n// simply and durably, through the reserved `rag-ingest` ROLE (never a hardcoded\n// workflow id).\n//\n// import { ingestDocuments } from '@stackbone/sdk/workflow';\n//\n// // the simple form: hand it the text, it stages + ingests durably\n// const { documentId, chunks } = await ingestDocuments({\n// collection: 'docs',\n// content: markdownText,\n// contentType: 'text/markdown',\n// });\n//\n// // or, when the original is ALREADY staged (the UI/CLI upload path), pass the key\n// await ingestDocuments({ collection: 'docs', storageKey, contentType: 'text/plain' });\n//\n// Two input shapes, one durable path:\n// - `{ content }` — the helper STAGES the content to workspace storage (in a\n// durable step, keyed by content hash so a replay is\n// idempotent), then triggers the workflow with that key.\n// - `{ storageKey }`— the original is already staged; the helper triggers\n// directly.\n// Either way it resolves the `rag-ingest` ROLE to a workflow name and DELEGATES to\n// feature 75's `startWorkflowAndWait` as a durable sub-workflow — it does not\n// target a hardcoded workflow id nor reimplement enqueue/await. The file NEVER\n// travels in the workflow input (only its storage key does), so a large document\n// never hits the trigger body-size limit. Because the indirection is by ROLE, a\n// creator's override of the ingest workflow is inherited here for free.\n//\n// MUST be called from a workflow body (it builds on `startWorkflowAndWait` + the\n// ambient `stackbone` client, both bound by the runtime on dispatch).\n\nimport {\n buildRagStorageKey,\n contentHash,\n RAG_INGEST_ROLE,\n RAG_STORAGE_PREFIX,\n ragContentTypeExtension,\n ragIngestInputSchema,\n} from '@stackbone/rag-core';\nimport type { RagIngestInput, RagIngestOutput } from '@stackbone/rag-core';\n\nimport { stackbone } from '../../../runtime/ambient-client';\nimport { startWorkflowAndWait } from './start-workflow-and-wait';\n\nexport type { RagIngestInput, RagIngestOutput } from '@stackbone/rag-core';\n\n/** Content the helper stages on the caller's behalf (text or raw bytes). */\nexport type IngestContent = string | Uint8Array;\n\n/** The two input shapes {@link ingestDocuments} accepts. */\nexport type IngestDocumentsArgs =\n | {\n collection: string;\n contentType: string;\n /** Inline content to stage + ingest. Mutually exclusive with `storageKey`. */\n content: IngestContent;\n storageKey?: never;\n }\n | {\n collection: string;\n contentType: string;\n /** A pre-staged original under the `rag/` prefix. Mutually exclusive with `content`. */\n storageKey: string;\n content?: never;\n };\n\n/** Options for {@link ingestDocuments}. */\nexport interface IngestDocumentsOptions {\n /**\n * @internal Test seam — override how inline content is staged to storage,\n * returning the resulting storage key. Production callers omit it (the default\n * stages through the ambient `stackbone.storage`).\n */\n stage?: (collection: string, content: IngestContent, contentType: string) => Promise<string>;\n}\n\n/**\n * Ingest a document into RAG by running the reserved `rag-ingest` workflow as a\n * durable sub-workflow, returning its `{ documentId, chunks }` output. Pass\n * `content` to have the helper stage it for you, or `storageKey` when it is\n * already staged. The workflow input is validated against the well-known contract\n * before triggering; an invalid call rejects without starting anything.\n */\nexport async function ingestDocuments(\n args: IngestDocumentsArgs,\n opts: IngestDocumentsOptions = {},\n): Promise<RagIngestOutput> {\n if (!args.collection) throw new Error('ingestDocuments: `collection` is required.');\n if (!args.contentType) throw new Error('ingestDocuments: `contentType` is required.');\n\n const storageKey =\n args.storageKey !== undefined\n ? args.storageKey\n : await (opts.stage ?? stageContent)(args.collection, args.content, args.contentType);\n\n // Validate the final workflow input against the well-known contract — a bad\n // shape rejects here, before the run is enqueued.\n const input: RagIngestInput = ragIngestInputSchema.parse({\n collection: args.collection,\n storageKey,\n contentType: args.contentType,\n });\n return startWorkflowAndWait<RagIngestOutput>(RAG_INGEST_ROLE, input);\n}\n\n// Default staging: write the content to workspace storage under the reserved\n// `rag/` prefix, keyed by the content hash so a crash-replay re-stages to the SAME\n// key (idempotent — the workflow's `persist` then replaces the document in place).\n// `\"use step\"` makes the upload a durable, replay-safe step.\nasync function stageContent(\n collection: string,\n content: IngestContent,\n contentType: string,\n): Promise<string> {\n 'use step';\n\n const bytes = typeof content === 'string' ? new TextEncoder().encode(content) : content;\n const documentName = `${contentHash(Buffer.from(bytes))}${ragContentTypeExtension(contentType)}`;\n const storageKey = buildRagStorageKey(collection, documentName);\n // `stackbone.storage.from('rag')` re-adds the `rag/` prefix, so upload under the\n // key WITHOUT it; the workflow's download step strips `rag/` symmetrically.\n const relKey = storageKey.slice(RAG_STORAGE_PREFIX.length);\n const result = await stackbone.storage.from('rag').upload(relKey, bytes, { contentType });\n if (result.error) {\n throw new Error(`ingestDocuments: failed to stage content — ${result.error.message}`);\n }\n return storageKey;\n}\n"]}
|