@cortexkit/opencode-anthropic-auth 1.17.0 → 1.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/cli.js +1 -1
- package/dist/fable-fallback.d.ts +3 -2
- package/dist/{index-y2n9h7p6.js → index-1ets4bf8.js} +1 -1
- package/dist/{index-f5r96vyv.js → index-9aeag0wm.js} +1 -1
- package/dist/index-h0pmqm96.js +422 -0
- package/dist/{index-63keqwnf.js → index-k5enth8h.js} +1 -1
- package/dist/{index-am5pq04s.js → index-kckdabb4.js} +1 -1
- package/dist/index-xjvcfyt6.js +2 -0
- package/dist/index.js +12 -12
- package/dist/{logger-ywfmddsw.js → logger-whpn7rjx.js} +1 -1
- package/dist/rpc/port-file.js +1 -1
- package/dist/rpc/rpc-client.js +1 -1
- package/dist/rpc/rpc-dir.js +1 -1
- package/dist/sidebar-state.d.ts +12 -0
- package/dist/sidebar-state.js +1 -1
- package/dist/transform.d.ts +1 -0
- package/dist/tui-preferences.js +1 -1
- package/package.json +2 -2
- package/src/sidebar-state.ts +26 -1
- package/src/tui-compiled/sidebar-state.ts +26 -1
- package/dist/index-gj7emmj5.js +0 -2
- package/dist/index-xvfesm3w.js +0 -422
package/dist/sidebar-state.d.ts
CHANGED
|
@@ -44,6 +44,12 @@ export interface FableRecoverySidebarState {
|
|
|
44
44
|
mode: 'opus' | 'fable';
|
|
45
45
|
remaining: number;
|
|
46
46
|
changedAt: number;
|
|
47
|
+
/**
|
|
48
|
+
* The model id the user originally requested (e.g. 'claude-fable-5' or
|
|
49
|
+
* 'claude-opus-5'). Optional for backward compatibility with pre-Opus-5
|
|
50
|
+
* state files; older recoveries default to Fable 5 in the summary.
|
|
51
|
+
*/
|
|
52
|
+
requestedModelId?: string;
|
|
47
53
|
}
|
|
48
54
|
export interface SidebarState {
|
|
49
55
|
main: {
|
|
@@ -112,6 +118,12 @@ export declare function resolveActiveAccount(state: SidebarState): {
|
|
|
112
118
|
quota: AccountQuota | null;
|
|
113
119
|
};
|
|
114
120
|
export declare function formatScopedQuotaLabel(title: string): string;
|
|
121
|
+
/**
|
|
122
|
+
* Pretty label for a recoverable-refusal source model (Fable 5 or Opus 5).
|
|
123
|
+
* Falls back to the raw id for unrecognized ids so the sidebar never goes
|
|
124
|
+
* blank on a future model that has not yet been cataloged here.
|
|
125
|
+
*/
|
|
126
|
+
export declare function formatFallbackModelLabel(modelId: string | undefined): string;
|
|
115
127
|
export declare function getFableRecoverySummary(state: SidebarState, sessionId: string): string | undefined;
|
|
116
128
|
export declare function getCollapsedQuotaSummary(quota: AccountQuota | null): {
|
|
117
129
|
fiveHourUsedPercent: number | null;
|
package/dist/sidebar-state.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q}from"./index-
|
|
1
|
+
import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r}from"./index-xjvcfyt6.js";import"./index-h0pmqm96.js";import"./index-1ets4bf8.js";import"./index-9aeag0wm.js";export{i as setSidebarState,k as resolveActiveAccount,c as normalizeSidebarState,a as getSidebarStateFile,h as getSidebarState,f as getInitialSidebarRoutingTestHooks,n as getFableRecoverySummary,o as getCollapsedQuotaSummary,l as formatScopedQuotaLabel,m as formatFallbackModelLabel,j as drainSidebarWrites,r as computeQuotaPacing,d as __setSidebarStateWriteTestHooks,e as __setInitialSidebarRoutingTestHooks,g as __acquireSidebarStateLockForTest,q as SEVEN_DAY_MS,p as FIVE_HOUR_MS,b as DEFAULT_SIDEBAR_STATE};
|
package/dist/transform.d.ts
CHANGED
|
@@ -92,5 +92,6 @@ export declare function createStrippedStream(response: Response, options?: {
|
|
|
92
92
|
perf?: RewritePerfCallback;
|
|
93
93
|
onContentFilter?: () => boolean | undefined;
|
|
94
94
|
onComplete?: (finishReason: string) => void;
|
|
95
|
+
contentFilterModel?: unknown;
|
|
95
96
|
}): Response;
|
|
96
97
|
export {};
|
package/dist/tui-preferences.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{sc as c,tc as C,uc as h}from"./index-9aeag0wm.js";var m=C((v,k)=>{(function(Q){if(typeof k==="object"&&typeof k.exports==="object"){var J=Q(h,v);if(J!==void 0)k.exports=J}else if(typeof define==="function"&&define.amd)define(["require","exports","./impl/format","./impl/edit","./impl/scanner","./impl/parser"],Q)})(function(Q,J){Object.defineProperty(J,"__esModule",{value:!0}),J.applyEdits=J.modify=J.format=J.printParseErrorCode=J.ParseErrorCode=J.stripComments=J.visit=J.getNodeValue=J.getNodePath=J.findNodeAtOffset=J.findNodeAtLocation=J.parseTree=J.parse=J.getLocation=J.SyntaxKind=J.ScanError=J.createScanner=void 0;let X=Q("./impl/format"),Z=Q("./impl/edit"),$=Q("./impl/scanner"),G=Q("./impl/parser");J.createScanner=$.createScanner;var V;(function(z){z[z.None=0]="None",z[z.UnexpectedEndOfComment=1]="UnexpectedEndOfComment",z[z.UnexpectedEndOfString=2]="UnexpectedEndOfString",z[z.UnexpectedEndOfNumber=3]="UnexpectedEndOfNumber",z[z.InvalidUnicode=4]="InvalidUnicode",z[z.InvalidEscapeCharacter=5]="InvalidEscapeCharacter",z[z.InvalidCharacter=6]="InvalidCharacter"})(V||(J.ScanError=V={}));var Y;(function(z){z[z.OpenBraceToken=1]="OpenBraceToken",z[z.CloseBraceToken=2]="CloseBraceToken",z[z.OpenBracketToken=3]="OpenBracketToken",z[z.CloseBracketToken=4]="CloseBracketToken",z[z.CommaToken=5]="CommaToken",z[z.ColonToken=6]="ColonToken",z[z.NullKeyword=7]="NullKeyword",z[z.TrueKeyword=8]="TrueKeyword",z[z.FalseKeyword=9]="FalseKeyword",z[z.StringLiteral=10]="StringLiteral",z[z.NumericLiteral=11]="NumericLiteral",z[z.LineCommentTrivia=12]="LineCommentTrivia",z[z.BlockCommentTrivia=13]="BlockCommentTrivia",z[z.LineBreakTrivia=14]="LineBreakTrivia",z[z.Trivia=15]="Trivia",z[z.Unknown=16]="Unknown",z[z.EOF=17]="EOF"})(Y||(J.SyntaxKind=Y={})),J.getLocation=G.getLocation,J.parse=G.parse,J.parseTree=G.parseTree,J.findNodeAtLocation=G.findNodeAtLocation,J.findNodeAtOffset=G.findNodeAtOffset,J.getNodePath=G.getNodePath,J.getNodeValue=G.getNodeValue,J.visit=G.visit,J.stripComments=G.stripComments;var L;(function(z){z[z.InvalidSymbol=1]="InvalidSymbol",z[z.InvalidNumberFormat=2]="InvalidNumberFormat",z[z.PropertyNameExpected=3]="PropertyNameExpected",z[z.ValueExpected=4]="ValueExpected",z[z.ColonExpected=5]="ColonExpected",z[z.CommaExpected=6]="CommaExpected",z[z.CloseBraceExpected=7]="CloseBraceExpected",z[z.CloseBracketExpected=8]="CloseBracketExpected",z[z.EndOfFileExpected=9]="EndOfFileExpected",z[z.InvalidCommentToken=10]="InvalidCommentToken",z[z.UnexpectedEndOfComment=11]="UnexpectedEndOfComment",z[z.UnexpectedEndOfString=12]="UnexpectedEndOfString",z[z.UnexpectedEndOfNumber=13]="UnexpectedEndOfNumber",z[z.InvalidUnicode=14]="InvalidUnicode",z[z.InvalidEscapeCharacter=15]="InvalidEscapeCharacter",z[z.InvalidCharacter=16]="InvalidCharacter"})(L||(J.ParseErrorCode=L={}));function B(z){switch(z){case 1:return"InvalidSymbol";case 2:return"InvalidNumberFormat";case 3:return"PropertyNameExpected";case 4:return"ValueExpected";case 5:return"ColonExpected";case 6:return"CommaExpected";case 7:return"CloseBraceExpected";case 8:return"CloseBracketExpected";case 9:return"EndOfFileExpected";case 10:return"InvalidCommentToken";case 11:return"UnexpectedEndOfComment";case 12:return"UnexpectedEndOfString";case 13:return"UnexpectedEndOfNumber";case 14:return"InvalidUnicode";case 15:return"InvalidEscapeCharacter";case 16:return"InvalidCharacter"}return"<unknown ParseErrorCode>"}J.printParseErrorCode=B;function j(z,H,N){return X.format(z,H,N)}J.format=j;function A(z,H,N,R){return Z.setProperty(z,H,N,R)}J.modify=A;function O(z,H){let N=H.slice(0).sort((U,D)=>{let T=U.offset-D.offset;if(T===0)return U.length-D.length;return T}),R=z.length;for(let U=N.length-1;U>=0;U--){let D=N[U];if(D.offset+D.length<=R)z=Z.applyEdit(z,D);else throw Error("Overlapping edit");R=D.offset}return z}J.applyEdits=O})});var q=c(m(),1);import{watch as y}from"node:fs";import{mkdir as S,readFile as w,rename as E,writeFile as p}from"node:fs/promises";import{homedir as l}from"node:os";import{basename as x,dirname as P,join as _}from"node:path";import{clearTimeout as F,setTimeout as f}from"node:timers";var i="OPENCODE_TUI_PREFERENCES_FILE",s="tui-preferences.jsonc";function b(){let Q=process.env[i];if(Q)return Q;let J=process.env.OPENCODE_CONFIG_DIR||_(process.env.XDG_CONFIG_HOME||_(l(),".config"),"opencode");return _(J,s)}function I(Q){return typeof Q==="object"&&Q!==null&&!Array.isArray(Q)}async function Vz(){try{let Q=await w(b(),"utf8"),J=[],X=q.parse(Q,J,{allowTrailingComma:!0});if(J.length>0)return{};return I(X)?X:{}}catch{return{}}}var d="anthropic-auth",n=160,u={forceToTop:!1,order:n,startCollapsed:!1,rememberCollapsed:!0,collapsed:null,pollMs:1500,refreshDebounceMs:200,header:{label:"CLAUDE",showVersion:!0},sections:{quota:!0,fallbackAccounts:!0,routing:!0,cache:!0,health:!0,pacing:!0},appearance:{barWidth:10,barFilledChar:"█",barEmptyChar:"░",warnThreshold:50,errorThreshold:80}};function W(Q,J){return typeof Q==="boolean"?Q:J}function M(Q,J,X,Z){if(typeof Q!=="number"||!Number.isFinite(Q))return J;return Math.min(Math.max(Math.round(Q),X),Z)}function a(Q,J,X){if(typeof Q!=="string"||Q.length===0)return J;return Q.slice(0,X)}function K(Q,J){if(typeof Q!=="string")return J;return[...Q][0]??J}function Yz(Q){let J=Q[d];if(!I(J))return structuredClone(u);let X=u,Z=I(J.header)?J.header:{},$=I(J.sections)?J.sections:{},G=I(J.appearance)?J.appearance:{},V=M(G.warnThreshold,X.appearance.warnThreshold,0,99),Y=Math.max(M(G.errorThreshold,X.appearance.errorThreshold,0,100),Math.min(V+1,100));return{forceToTop:W(J.forceToTop,X.forceToTop),order:M(J.order,X.order,-1e4,1e4),startCollapsed:W(J.startCollapsed,X.startCollapsed),rememberCollapsed:W(J.rememberCollapsed,X.rememberCollapsed),collapsed:typeof J.collapsed==="boolean"?J.collapsed:null,pollMs:M(J.pollMs,X.pollMs,500,30000),refreshDebounceMs:M(J.refreshDebounceMs,X.refreshDebounceMs,50,5000),header:{label:a(Z.label,X.header.label,20),showVersion:W(Z.showVersion,X.header.showVersion)},sections:{quota:W($.quota,X.sections.quota),fallbackAccounts:W($.fallbackAccounts,X.sections.fallbackAccounts),routing:W($.routing,X.sections.routing),cache:W($.cache,X.sections.cache),health:W($.health,X.sections.health),pacing:W($.pacing,X.sections.pacing)},appearance:{barWidth:M(G.barWidth,X.appearance.barWidth,4,40),barFilledChar:K(G.barFilledChar,X.appearance.barFilledChar),barEmptyChar:K(G.barEmptyChar,X.appearance.barEmptyChar),warnThreshold:V,errorThreshold:Y}}}var t=-1e5;function Hz(Q,J,X){let Z=Q[J];if(!I(Z))return X;if(Z.forceToTop===!0)return t+Object.keys(Q).indexOf(J);return M(Z.order,X,-1e4,1e4)}var o=`// Shared preferences for opencode TUI plugins.
|
|
2
2
|
// One top-level key per plugin (short name). See each plugin's README for
|
|
3
3
|
// its supported settings. This file is safe to hand-edit; plugins update
|
|
4
4
|
// individual keys in place and preserve comments.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cortexkit/opencode-anthropic-auth",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.18.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"@opencode-ai/plugin": "*"
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"@cortexkit/anthropic-auth-core": "1.
|
|
64
|
+
"@cortexkit/anthropic-auth-core": "1.18.0",
|
|
65
65
|
"@opentui/core": "0.4.3",
|
|
66
66
|
"@opentui/solid": "0.4.3",
|
|
67
67
|
"jsonc-parser": "^3.3.1",
|
package/src/sidebar-state.ts
CHANGED
|
@@ -42,6 +42,12 @@ export interface FableRecoverySidebarState {
|
|
|
42
42
|
mode: 'opus' | 'fable'
|
|
43
43
|
remaining: number
|
|
44
44
|
changedAt: number
|
|
45
|
+
/**
|
|
46
|
+
* The model id the user originally requested (e.g. 'claude-fable-5' or
|
|
47
|
+
* 'claude-opus-5'). Optional for backward compatibility with pre-Opus-5
|
|
48
|
+
* state files; older recoveries default to Fable 5 in the summary.
|
|
49
|
+
*/
|
|
50
|
+
requestedModelId?: string
|
|
45
51
|
}
|
|
46
52
|
|
|
47
53
|
export interface SidebarState {
|
|
@@ -287,6 +293,10 @@ export function normalizeSidebarState(raw: unknown): SidebarState {
|
|
|
287
293
|
mode: recovery.mode,
|
|
288
294
|
remaining: Math.max(0, Math.floor(recovery.remaining)),
|
|
289
295
|
changedAt: recovery.changedAt,
|
|
296
|
+
requestedModelId:
|
|
297
|
+
typeof recovery.requestedModelId === 'string'
|
|
298
|
+
? recovery.requestedModelId
|
|
299
|
+
: undefined,
|
|
290
300
|
},
|
|
291
301
|
]
|
|
292
302
|
})
|
|
@@ -677,6 +687,19 @@ export function formatScopedQuotaLabel(title: string) {
|
|
|
677
687
|
return /^fable$/i.test(label) ? 'Fa' : label
|
|
678
688
|
}
|
|
679
689
|
|
|
690
|
+
/**
|
|
691
|
+
* Pretty label for a recoverable-refusal source model (Fable 5 or Opus 5).
|
|
692
|
+
* Falls back to the raw id for unrecognized ids so the sidebar never goes
|
|
693
|
+
* blank on a future model that has not yet been cataloged here.
|
|
694
|
+
*/
|
|
695
|
+
export function formatFallbackModelLabel(modelId: string | undefined): string {
|
|
696
|
+
if (modelId === 'claude-fable-5' || modelId?.startsWith('claude-fable-5-'))
|
|
697
|
+
return 'Fable 5'
|
|
698
|
+
if (modelId === 'claude-opus-5' || modelId?.startsWith('claude-opus-5-'))
|
|
699
|
+
return 'Opus 5'
|
|
700
|
+
return modelId ?? 'Fable 5'
|
|
701
|
+
}
|
|
702
|
+
|
|
680
703
|
export function getFableRecoverySummary(
|
|
681
704
|
state: SidebarState,
|
|
682
705
|
sessionId: string,
|
|
@@ -685,7 +708,9 @@ export function getFableRecoverySummary(
|
|
|
685
708
|
(candidate) => candidate.sessionId === sessionId,
|
|
686
709
|
)
|
|
687
710
|
if (!recovery) return undefined
|
|
688
|
-
if (recovery.mode === 'fable')
|
|
711
|
+
if (recovery.mode === 'fable') {
|
|
712
|
+
return `${formatFallbackModelLabel(recovery.requestedModelId)} · restored`
|
|
713
|
+
}
|
|
689
714
|
return `Opus 4.8 · ${recovery.remaining} left`
|
|
690
715
|
}
|
|
691
716
|
|
|
@@ -42,6 +42,12 @@ export interface FableRecoverySidebarState {
|
|
|
42
42
|
mode: 'opus' | 'fable'
|
|
43
43
|
remaining: number
|
|
44
44
|
changedAt: number
|
|
45
|
+
/**
|
|
46
|
+
* The model id the user originally requested (e.g. 'claude-fable-5' or
|
|
47
|
+
* 'claude-opus-5'). Optional for backward compatibility with pre-Opus-5
|
|
48
|
+
* state files; older recoveries default to Fable 5 in the summary.
|
|
49
|
+
*/
|
|
50
|
+
requestedModelId?: string
|
|
45
51
|
}
|
|
46
52
|
|
|
47
53
|
export interface SidebarState {
|
|
@@ -287,6 +293,10 @@ export function normalizeSidebarState(raw: unknown): SidebarState {
|
|
|
287
293
|
mode: recovery.mode,
|
|
288
294
|
remaining: Math.max(0, Math.floor(recovery.remaining)),
|
|
289
295
|
changedAt: recovery.changedAt,
|
|
296
|
+
requestedModelId:
|
|
297
|
+
typeof recovery.requestedModelId === 'string'
|
|
298
|
+
? recovery.requestedModelId
|
|
299
|
+
: undefined,
|
|
290
300
|
},
|
|
291
301
|
]
|
|
292
302
|
})
|
|
@@ -677,6 +687,19 @@ export function formatScopedQuotaLabel(title: string) {
|
|
|
677
687
|
return /^fable$/i.test(label) ? 'Fa' : label
|
|
678
688
|
}
|
|
679
689
|
|
|
690
|
+
/**
|
|
691
|
+
* Pretty label for a recoverable-refusal source model (Fable 5 or Opus 5).
|
|
692
|
+
* Falls back to the raw id for unrecognized ids so the sidebar never goes
|
|
693
|
+
* blank on a future model that has not yet been cataloged here.
|
|
694
|
+
*/
|
|
695
|
+
export function formatFallbackModelLabel(modelId: string | undefined): string {
|
|
696
|
+
if (modelId === 'claude-fable-5' || modelId?.startsWith('claude-fable-5-'))
|
|
697
|
+
return 'Fable 5'
|
|
698
|
+
if (modelId === 'claude-opus-5' || modelId?.startsWith('claude-opus-5-'))
|
|
699
|
+
return 'Opus 5'
|
|
700
|
+
return modelId ?? 'Fable 5'
|
|
701
|
+
}
|
|
702
|
+
|
|
680
703
|
export function getFableRecoverySummary(
|
|
681
704
|
state: SidebarState,
|
|
682
705
|
sessionId: string,
|
|
@@ -685,7 +708,9 @@ export function getFableRecoverySummary(
|
|
|
685
708
|
(candidate) => candidate.sessionId === sessionId,
|
|
686
709
|
)
|
|
687
710
|
if (!recovery) return undefined
|
|
688
|
-
if (recovery.mode === 'fable')
|
|
711
|
+
if (recovery.mode === 'fable') {
|
|
712
|
+
return `${formatFallbackModelLabel(recovery.requestedModelId)} · restored`
|
|
713
|
+
}
|
|
689
714
|
return `Opus 4.8 · ${recovery.remaining} left`
|
|
690
715
|
}
|
|
691
716
|
|
package/dist/index-gj7emmj5.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{ic as Q}from"./index-y2n9h7p6.js";import{randomUUID as f}from"node:crypto";import{mkdir as P,readFile as D,rename as b,rm as O,rmdir as T,stat as U,unlink as p,writeFile as E}from"node:fs/promises";import{tmpdir as k}from"node:os";import{dirname as S,join as W}from"node:path";var F="OPENCODE_ANTHROPIC_AUTH_SIDEBAR_STATE_FILE",m=W(k(),"opencode-anthropic-auth"),y=W(m,"sidebar-state.json");function R(){return process.env[F]||y}var C={main:{quota:null},fallbacks:[],activeId:void 0,route:"main",relay:null,fastMode:!1,lastUpdated:0};function N(J){return J!==null&&typeof J==="object"&&!Array.isArray(J)}function q(J){if(!N(J))return;let $=Number(J.usedPercent),V=Number(J.remainingPercent);if(!Number.isFinite($)||!Number.isFinite(V))return;return{usedPercent:$,remainingPercent:V,resetsAt:typeof J.resetsAt==="string"?J.resetsAt:void 0}}function I(J){if(!N(J))return null;let $={},V=q(J.five_hour),x=q(J.seven_day);if(V)$.five_hour=V;if(x)$.seven_day=x;if(Array.isArray(J.scoped)){let G=J.scoped.map((X)=>{if(!N(X))return;let Z=q(X);if(!Z)return;if(typeof X.id!=="string"||!X.id.trim())return;if(typeof X.title!=="string"||!X.title.trim())return;if(typeof X.modelName!=="string"||!X.modelName.trim())return;let j=typeof X.modelId==="string"&&X.modelId.trim()?X.modelId.trim():void 0;return{...Z,id:X.id.trim(),title:X.title.trim(),...j&&{modelId:j},modelName:X.modelName.trim()}}).filter((X)=>X!=null);$.scoped=G}if(N(J.extraUsage)){let G=L(J.extraUsage.used),X=L(J.extraUsage.limit);if(G&&X&&typeof J.extraUsage.exhausted==="boolean")$.extraUsage={used:G,limit:X,...typeof J.extraUsage.utilizationPercent==="number"&&Number.isFinite(J.extraUsage.utilizationPercent)&&{utilizationPercent:J.extraUsage.utilizationPercent},...typeof J.extraUsage.severity==="string"&&{severity:J.extraUsage.severity},exhausted:J.extraUsage.exhausted}}if(typeof J.bindingWindow==="string"&&J.bindingWindow.trim())$.bindingWindow=J.bindingWindow.trim();if(typeof J.fallbackAdvised==="boolean")$.fallbackAdvised=J.fallbackAdvised;return Object.keys($).length?$:null}function L(J){if(!N(J))return;if(!Number.isInteger(J.amountMinor)||typeof J.currency!=="string"||!/^[A-Za-z]{3}$/.test(J.currency.trim())||!Number.isInteger(J.exponent)||J.exponent<0||J.exponent>20)return;return{amountMinor:J.amountMinor,currency:J.currency.trim(),exponent:J.exponent}}function w(J){if(!N(J))return{...C};let $={quota:null};if(N(J.main)){let Z=J.main;if($.quota=I(Z.quota),typeof Z.tierLabel==="string"&&Z.tierLabel.trim())$.tierLabel=Z.tierLabel.trim();if(typeof Z.quotaBackedOff==="boolean")$.quotaBackedOff=Z.quotaBackedOff;if(typeof Z.quotaBackoffUntil==="number")$.quotaBackoffUntil=Z.quotaBackoffUntil;if(typeof Z.refreshBackedOff==="boolean")$.refreshBackedOff=Z.refreshBackedOff;if(typeof Z.refreshBackoffUntil==="number")$.refreshBackoffUntil=Z.refreshBackoffUntil}let V=Array.isArray(J.fallbacks)?J.fallbacks.filter(N).filter((Z)=>typeof Z.id==="string").map((Z)=>({id:Z.id,label:typeof Z.label==="string"?Z.label:void 0,quota:I(Z.quota),enabled:typeof Z.enabled==="boolean"?Z.enabled:!1,needsReauth:typeof Z.needsReauth==="boolean"?Z.needsReauth:!1,tierLabel:typeof Z.tierLabel==="string"&&Z.tierLabel.trim()?Z.tierLabel.trim():void 0})):[],x=null;if(N(J.relay)){let Z=J.relay;if(typeof Z.enabled==="boolean"&&typeof Z.transport==="string")x={enabled:Z.enabled,transport:Z.transport}}let G;if(N(J.cacheKeep)){let Z=J.cacheKeep;if(typeof Z.enabled==="boolean")G={enabled:Z.enabled,window:typeof Z.window==="string"?Z.window:void 0,trackedSessions:typeof Z.trackedSessions==="number"?Z.trackedSessions:void 0}}let X=Array.isArray(J.fableRecoveries)?J.fableRecoveries.filter(N).flatMap((Z)=>{if(typeof Z.sessionId!=="string"||Z.mode!=="opus"&&Z.mode!=="fable"||typeof Z.remaining!=="number"||!Number.isFinite(Z.remaining)||typeof Z.changedAt!=="number"||!Number.isFinite(Z.changedAt))return[];return[{sessionId:Z.sessionId,mode:Z.mode,remaining:Math.max(0,Math.floor(Z.remaining)),changedAt:Z.changedAt}]}):[];return{main:$,fallbacks:V,activeId:typeof J.activeId==="string"?J.activeId:void 0,route:typeof J.route==="string"?J.route:C.route,relay:x,fastMode:typeof J.fastMode==="boolean"?J.fastMode:C.fastMode,cacheKeep:G,fableRecoveries:X.length>0?X:void 0,lastUpdated:typeof J.lastUpdated==="number"?J.lastUpdated:0}}var h=Promise.resolve(),v=1000,d=2000,c=5,u=15,z=null;function $J(J){z=J}var _=null;function VJ(J){_=J}function XJ(){return _}function l(J){return new Promise(($)=>setTimeout($,J))}async function A(J){let $=`${J}.lock`,V=z?.lockBudgetMs??v,x=z?.lockRetryMinMs??c,G=z?.lockRetryMaxMs??u,X=Date.now()+V;while(!0){try{await P($);let Y=f(),K=W($,Y);return await E(K,"",{encoding:"utf8",mode:384,flag:"wx"}),await z?.onLockAcquired?.($),{ownsLock:async()=>{try{return await U(K),!0}catch{return!1}},release:async()=>{try{await p(K)}catch{return}await z?.beforeReleaseDirectoryRemoval?.($),await T($).catch(()=>{})}}}catch(Y){if(Y.code!=="EEXIST")return Q.trace("sidebar","state lock unavailable; write skipped",{stateFile:J,error:Y instanceof Error?Y.message:String(Y)}),null}try{let Y=await U($);if(Date.now()-Y.mtimeMs>d){await z?.afterStaleLockStat?.($);let K=`${$}.evict-${process.pid}-${f()}`;try{await b($,K)}catch(B){if(B.code==="ENOENT")continue;throw B}await z?.onStaleLockClaimed?.($),await O(K,{recursive:!0,force:!0}).catch(()=>{});continue}}catch(Y){if(Y.code==="ENOENT")continue;return Q.trace("sidebar","state lock inspection failed; write skipped",{stateFile:J,error:Y instanceof Error?Y.message:String(Y)}),null}let Z=X-Date.now();if(Z<=0)return Q.warn("sidebar","lock budget exhausted, write skipped",{stateFile:J,budgetMs:V}),null;let j=x+Math.floor(Math.random()*(G-x+1));await l(Math.min(j,Z))}}async function xJ(J){return(await A(J))?.release??null}async function n(J,$,V){let x=`${J}.${process.pid}.${f()}.tmp`;await E(x,JSON.stringify($),{encoding:"utf8",mode:384});try{if(!await V())return Q.trace("sidebar","state lock lost before rename; write aborted",{stateFile:J}),await O(x,{force:!0}).catch(()=>{}),"lock-lost-before-rename";if(await z?.beforeRename?.(J,x),!await V())return Q.trace("sidebar","state lock lost before rename; write aborted",{stateFile:J}),await O(x,{force:!0}).catch(()=>{}),"lock-lost-before-rename";if(await b(x,J),await z?.afterRename?.(J),!await V())return"lock-lost-after-rename";return"written"}catch(G){throw await O(x,{force:!0}).catch(()=>{}),G}}async function M(J=R()){try{let $=await D(J,"utf8");return w(JSON.parse($))}catch{return C}}async function YJ(J,$=R(),V={}){return h=h.then(async()=>{await P(S($),{recursive:!0});for(let x=0;x<2;x++){let G=x===1,X=await A($);if(!X){if(G)Q.warn("sidebar","post-rename repair lock unavailable; write skipped",{stateFile:$});return}let Z=J,j;try{if(V.routingAuthoritative===!1){let Y=await M($),K=await V.resolvePreservedRouting?.(Y);if(K){let B=K.state??J;Z={...B,activeId:K.activeId,route:K.route,lastUpdated:Math.max(B.lastUpdated,Y.lastUpdated)}}await z?.afterMergeRead?.($)}else if(G){let Y=await M($);Z={...Y,activeId:J.activeId,route:J.route,relay:J.relay,fastMode:J.fastMode,cacheKeep:J.cacheKeep,lastUpdated:Math.max(Y.lastUpdated,J.lastUpdated)}}j=await n($,Z,X.ownsLock)}finally{await X.release()}if(j==="lock-lost-after-rename"){if(G){Q.warn("sidebar","post-rename repair lost lock; write skipped",{stateFile:$});return}Q.warn("sidebar","state lock lost after rename; repairing write",{stateFile:$});continue}if(j==="lock-lost-before-rename")return;V.onRoutingResolved?.({activeId:Z.activeId,route:Z.route});return}}).catch(()=>{}),h}async function GJ(){return h}function jJ(J){let $=J.activeId;if($&&$!=="main"){let V=J.fallbacks?.find((x)=>x.enabled&&x.id===$);if(V)return{id:V.id,name:V.label??V.id,quota:V.quota}}return{id:"main",name:"main",quota:J.main?.quota??null}}function i(J){let $=J.replace(/\s+only$/i,"").trim();return/^fable$/i.test($)?"Fa":$}function KJ(J,$){let V=J.fableRecoveries?.find((x)=>x.sessionId===$);if(!V)return;if(V.mode==="fable")return"Fable 5 · restored";return`Opus 4.8 · ${V.remaining} left`}function zJ(J){let $=J?.five_hour?.usedPercent??null,V=J?.seven_day?.usedPercent??null,x=J?.scoped??[],G=x.map((j)=>j.usedPercent);if($==null&&V==null&&x.length===0)return{fiveHourUsedPercent:$,sevenDayUsedPercent:V,scopedUsedPercents:G,text:null};let X=x.map((j)=>`${i(j.title)}: ${Math.round(j.usedPercent)}%`),Z=$==null&&V==null?[]:[`5h: ${$==null?"—":`${Math.round($)}%`}`,`7d: ${V==null?"—":`${Math.round(V)}%`}`];return{fiveHourUsedPercent:$,sevenDayUsedPercent:V,scopedUsedPercents:G,text:[...Z,...X].join(" ")}}var NJ=18000000,QJ=604800000,s=300000,o=0.01,a=1;function BJ(J,$,V){if(!J.resetsAt)return null;let x=new Date(J.resetsAt).getTime();if(!Number.isFinite(x))return null;let G=x-$,X=V-G;if(X<s)return null;if(X<$*o)return null;if(X>=$)return null;let Z=J.usedPercent,j=Math.min(Math.max(X/$*100,0),100),Y=Z-j,K=Math.abs(Y)<a?"on-pace":Y>0?"deficit":"reserve",B=null;if(Z>0){let g=X*100/Z,H=G+g;if(H<x)B=new Date(H).toISOString()}return{pacePercent:j,deltaPercent:Y,state:K,runsOutAt:B}}
|
|
2
|
-
export{R as a,C as b,w as c,$J as d,VJ as e,XJ as f,xJ as g,M as h,YJ as i,GJ as j,jJ as k,i as l,KJ as m,zJ as n,NJ as o,QJ as p,BJ as q};
|