@wrongstack/webui 1.0.1 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/AgentRosterView-CoD9SgNh.js +12 -0
- package/dist/assets/AnalyticsDashboard-SAH8yxTa.js +1 -0
- package/dist/assets/AudienceMemoryPanel-C_JHPr_q.js +3 -0
- package/dist/assets/ChangesView-BRdNlV9e.js +1 -0
- package/dist/assets/{ChimeraReviewsView-BZ3kmsEA.js → ChimeraReviewsView-B8ecsRM9.js} +1 -1
- package/dist/assets/ChronicleDashboard-B2qq4Ax7.js +1 -0
- package/dist/assets/CodeEditor-B-zhjWYw.js +2 -0
- package/dist/assets/CodeMap-BgOJwRYK.js +1 -0
- package/dist/assets/CronJobsPanel-CsbjBcuL.js +1 -0
- package/dist/assets/{DeadCodeScanPanel-CcPRcYm0.js → DeadCodeScanPanel-CSr2alPo.js} +1 -1
- package/dist/assets/{DebugDashboard-B-aDaDrO.js → DebugDashboard-Ctw40UDW.js} +1 -1
- package/dist/assets/DesignGalleryView-DFMq7qzt.js +1 -0
- package/dist/assets/{GoalView-CBDc5nCD.js → GoalView-CHO3i5LQ.js} +1 -1
- package/dist/assets/KanbanView-DxCgCuzq.js +3 -0
- package/dist/assets/MailboxDetailView-CjOZymFt.js +1 -0
- package/dist/assets/{MemoryDrawer-CyN_6CRo.js → MemoryDrawer-DlTa24j0.js} +1 -1
- package/dist/assets/MemoryManager-BvhuaBnp.js +1 -0
- package/dist/assets/ProcessMonitor-BB1j59e7.js +1 -0
- package/dist/assets/{PromptJournalView-C6O40uTv.js → PromptJournalView-BxhsHl73.js} +1 -1
- package/dist/assets/QueuePanel-SirB3W9f.js +1 -0
- package/dist/assets/RefreshDebugView-DVUmjUXS.js +1 -0
- package/dist/assets/RepositoryHistoryView-Cr-UBUel.js +2 -0
- package/dist/assets/{RequirementIntakeView-BpFyFOlB.js → RequirementIntakeView-BkztR0C2.js} +1 -1
- package/dist/assets/SageTabs-Bb04xdXQ.js +2 -0
- package/dist/assets/{SddFlowGraph-CJjawf9r.js → SddFlowGraph-dcuamshO.js} +1 -1
- package/dist/assets/SddHub-E6nNmKTl.js +2 -0
- package/dist/assets/SessionInspectView-M3HH5k-z.js +1 -0
- package/dist/assets/SessionList-BkRdBhqJ.js +1 -0
- package/dist/assets/SessionsDashboard-BW_sONY5.js +1 -0
- package/dist/assets/SetupScreen-CoQOGYNC.js +1 -0
- package/dist/assets/SkillDetailView-3YHXo_2F.js +3 -0
- package/dist/assets/TechStackView-Bs8OpeDl.js +2 -0
- package/dist/assets/TerminalPanel-Mv04uw-A.js +1 -0
- package/dist/assets/{activity-CCW2-qSA.js → activity-B9cZQdVv.js} +2 -2
- package/dist/assets/{activity-Dt348P4m.js → activity-ByjzcTzj.js} +2 -2
- package/dist/assets/{activity-87Kr1xrI.js → activity-ClXUH80G.js} +2 -2
- package/dist/assets/{activity-CmzV075e.js → activity-DBsqMkAC.js} +2 -2
- package/dist/assets/{activity-D2D6_ljD.js → activity-DFMEXTAP.js} +2 -2
- package/dist/assets/{activity-CXLMCm4J.js → activity-KXlU1-QD.js} +2 -2
- package/dist/assets/{activity-FxWZooaS.js → activity-PRYzlsxa.js} +2 -2
- package/dist/assets/{button-rqi3MczV.js → button-Bv5PYkY5.js} +1 -1
- package/dist/assets/{css.worker-DRH2OcAG.js → css.worker-NNelxtRr.js} +6 -6
- package/dist/assets/{dialog-xJxaQi60.js → dialog-DyGu9hTX.js} +1 -1
- package/dist/assets/{empty-state-BxilAuC3.js → empty-state-Dy__H8vX.js} +1 -1
- package/dist/assets/{html.worker-DQLddT9h.js → html.worker-B4rXkk6r.js} +6 -6
- package/dist/assets/i18n-CEYnEdVi.js +2 -0
- package/dist/assets/index-VSjrOYGx.css +1 -0
- package/dist/assets/index-r9OdFrxf.js +176 -0
- package/dist/assets/{input-ClZR-odw.js → input-DdFYcw53.js} +1 -1
- package/dist/assets/{json.worker-D_Dqrls5.js → json.worker-izi4BK3w.js} +4 -4
- package/dist/assets/{markdown-BP6Z3HKc.js → markdown-BzXmcdZg.js} +15 -15
- package/dist/assets/{monaco-_kWjHrlo.js → monaco-LhToOuuW.js} +59 -59
- package/dist/assets/{monaco-theme-Dmx6JuoU.js → monaco-theme-BOzs6u2L.js} +1 -1
- package/dist/assets/{react-core-BNmTiJ-I.js → react-core-D0Ec-185.js} +1 -1
- package/dist/assets/{roster-ws-B4xVrXos.js → roster-ws-BDcOlcE2.js} +1 -1
- package/dist/assets/settings-AxDNIcz1.js +1 -0
- package/dist/assets/settings-BcejxgTD.js +1 -0
- package/dist/assets/settings-CAfe70nd.js +1 -0
- package/dist/assets/settings-CxqeEzzD.js +1 -0
- package/dist/assets/settings-D90wMI-3.js +1 -0
- package/dist/assets/settings-DKSmPD2M.js +1 -0
- package/dist/assets/settings-DWXLaAFN.js +1 -0
- package/dist/assets/{shared-D8dubdNH.js → shared-hOwESeA9.js} +1 -1
- package/dist/assets/{ts.worker-DkYoA6bF.js → ts.worker-Dj4vg72D.js} +114 -114
- package/dist/assets/ui-store-vtaLeTKu.js +1 -0
- package/dist/assets/{utils-BpBOwXlT.js → utils-YeTxmVPQ.js} +1 -1
- package/dist/assets/{vector-memory-panel-BwPPCCbh.js → vector-memory-panel-BK3Q4TEg.js} +1 -1
- package/dist/assets/vendor-CkMYDhDf.js +125 -0
- package/dist/assets/ws-client-BG2ZSPmv.js +22 -0
- package/dist/assets/xterm-DA3G7037.js +16 -0
- package/dist/assets/xyflow-BlkaZTzI.js +7 -0
- package/dist/components/CodeMapVisuals.d.ts +10 -0
- package/dist/components/ContextBreakdownModal.d.ts +1 -1
- package/dist/components/CustomRosterPanel.d.ts +1 -0
- package/dist/components/FallbackModal.d.ts +1 -1
- package/dist/components/QuotaChip.d.ts +21 -0
- package/dist/components/RepositoryHistoryView.d.ts +21 -0
- package/dist/components/SettingsPanel/OAuthLoginSection.d.ts +4 -5
- package/dist/components/SettingsPanel/YoloConfirmList.d.ts +21 -0
- package/dist/components/codemap-model.d.ts +21 -1
- package/dist/hooks/ws-handlers/session-execution-handlers.d.ts +8 -0
- package/dist/hooks/ws-handlers/session-handlers.d.ts +1 -1
- package/dist/index.html +13 -22
- package/dist/index.js +13165 -11545
- package/dist/lib/bug-hunt-message.d.ts +3 -0
- package/dist/lib/view-navigation.d.ts +1 -1
- package/dist/lib/ws-client-domain-methods.d.ts +21 -3
- package/dist/stores/bug-hunt-run-store.d.ts +44 -0
- package/dist/stores/index.d.ts +3 -0
- package/dist/stores/local-prefs.d.ts +9 -0
- package/dist/stores/provider-quota-store.d.ts +69 -0
- package/dist/stores/types.d.ts +1 -0
- package/dist/stores/ui-store-types.d.ts +1 -1
- package/dist/types/client-message.d.ts +24 -0
- package/dist/types/connections.d.ts +1 -1
- package/dist/types/protocol-core.d.ts +13 -0
- package/dist/types/server-message-files.d.ts +57 -0
- package/dist/types/server-message.d.ts +4 -4
- package/dist/types/system.d.ts +18 -1
- package/package.json +9 -9
- package/dist/assets/AgentRosterView-BXURTwLP.js +0 -12
- package/dist/assets/AnalyticsDashboard-yAGcObTd.js +0 -1
- package/dist/assets/AudienceMemoryPanel-BwtB_jYJ.js +0 -3
- package/dist/assets/ChangesView-BgC27G9n.js +0 -1
- package/dist/assets/ChronicleDashboard-DVor6J-y.js +0 -1
- package/dist/assets/CodeEditor-Dk2WJQks.js +0 -2
- package/dist/assets/CodeMap-CjWRQ37U.js +0 -1
- package/dist/assets/ConfirmModal-C_KAUjBK.js +0 -1
- package/dist/assets/CronJobsPanel-CGq8lhRJ.js +0 -1
- package/dist/assets/DesignGalleryView-Ex3zW5ci.js +0 -1
- package/dist/assets/KanbanView-azjPGLmM.js +0 -3
- package/dist/assets/MailboxDetailView-BXW9zqle.js +0 -1
- package/dist/assets/MemoryManager-BLu0rLEm.js +0 -1
- package/dist/assets/ModelPicker-CXQR8UbH.js +0 -1
- package/dist/assets/ProcessMonitor-CBIQkbLx.js +0 -1
- package/dist/assets/QueuePanel-CutrvgTH.js +0 -1
- package/dist/assets/RefreshDebugView-DDFD26EI.js +0 -1
- package/dist/assets/SageTabs-Cx299O-q.js +0 -2
- package/dist/assets/SddHub-CmSlkvkM.js +0 -2
- package/dist/assets/SessionInspectView-CtrlRlJu.js +0 -1
- package/dist/assets/SessionList-BWoK6Ro5.js +0 -1
- package/dist/assets/SessionsDashboard-7C6Fj9pK.js +0 -1
- package/dist/assets/SetupScreen-IzaqHJ_O.js +0 -1
- package/dist/assets/SkillDetailView-C5nOcysX.js +0 -3
- package/dist/assets/TechStackView-DkNjeYPK.js +0 -2
- package/dist/assets/TerminalPanel-CTr-KAnH.js +0 -1
- package/dist/assets/chat-store-BbBGSliF.js +0 -1
- package/dist/assets/codemap-activity-store-CWi-Yd9Z.js +0 -1
- package/dist/assets/codemap-index-store-3M7F08K_.js +0 -1
- package/dist/assets/i18n-tRUjoMoU.js +0 -2
- package/dist/assets/index-BnpuNJ9u.js +0 -144
- package/dist/assets/index-CWYymMpa.css +0 -1
- package/dist/assets/mailbox-store-yydAVjyj.js +0 -1
- package/dist/assets/settings-B1vpPbTt.js +0 -1
- package/dist/assets/settings-BZnHCnGT.js +0 -1
- package/dist/assets/settings-BcB2BIE2.js +0 -1
- package/dist/assets/settings-D9AQ5wLT2.js +0 -1
- package/dist/assets/settings-DiVpBZQ2.js +0 -1
- package/dist/assets/settings-DwbEJvxt.js +0 -1
- package/dist/assets/settings-WuyKla3E.js +0 -1
- package/dist/assets/stores-B7GcARdp.js +0 -7
- package/dist/assets/ui-store-CLXDcLPI.js +0 -1
- package/dist/assets/useWebSocket-L5s7ggJm.js +0 -27
- package/dist/assets/vendor-BshlG0z-.js +0 -125
- package/dist/assets/view-navigation-CvWJeGMc.js +0 -1
- package/dist/assets/ws-client-BR51gfnV.js +0 -22
- package/dist/assets/xterm-BWzBEEhg.js +0 -18
- package/dist/assets/xyflow-BNn76cbK.js +0 -7
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
export interface BugHuntSummary {
|
|
2
2
|
scope: string;
|
|
3
3
|
maxBugs: 1 | 2 | 3;
|
|
4
|
+
currentRound: number;
|
|
4
5
|
}
|
|
6
|
+
/** The compact user turn for rounds after the full builtin prompt. */
|
|
7
|
+
export declare function buildBugHuntContinuation(summary: BugHuntSummary): string;
|
|
5
8
|
/** Adds durable display metadata without changing the instruction sent to the agent. */
|
|
6
9
|
export declare function buildBugHuntMessage(instruction: string, summary: BugHuntSummary): string;
|
|
7
10
|
/** Recognizes a persisted Bug Hunter run and recovers its compact display data. */
|
|
@@ -8,7 +8,7 @@ export type PanelMainView = 'chat' | 'files' | 'skill' | 'changes' | 'mailbox' |
|
|
|
8
8
|
* A standalone main view with its own activity-bar icon (or a slot in the "…"
|
|
9
9
|
* utilities menu). Selecting one collapses the side panel.
|
|
10
10
|
*/
|
|
11
|
-
export type MainView = 'goal' | 'kanban' | 'sddhub' | 'settings' | 'memory' | 'roster' | 'codemap' | 'techstack' | 'chronicle' | 'intake' | 'prompts' | 'chimera';
|
|
11
|
+
export type MainView = 'goal' | 'kanban' | 'sddhub' | 'settings' | 'memory' | 'roster' | 'codemap' | 'techstack' | 'chronicle' | 'intake' | 'prompts' | 'chimera' | 'history';
|
|
12
12
|
/**
|
|
13
13
|
* A view with no bar affordance at all — reached from the command palette, a
|
|
14
14
|
* deep link, or another view's action. Diagnostics and drill-downs live here.
|
|
@@ -11,11 +11,28 @@ interface WsClientDomainHost {
|
|
|
11
11
|
declare const domainMethods: {
|
|
12
12
|
getGitInfo(this: WsClientDomainHost): void;
|
|
13
13
|
getGitChanges(this: WsClientDomainHost): void;
|
|
14
|
+
getGitHistory(this: WsClientDomainHost, options?: {
|
|
15
|
+
ref?: string | undefined;
|
|
16
|
+
limit?: number | undefined;
|
|
17
|
+
skip?: number | undefined;
|
|
18
|
+
}): void;
|
|
19
|
+
getGitCommitDetail(this: WsClientDomainHost, hash: string): void;
|
|
20
|
+
getGitCommitFileDiff(this: WsClientDomainHost, hash: string, path: string, previousPath?: string): void;
|
|
14
21
|
getGitDiff(this: WsClientDomainHost, path: string): void;
|
|
15
22
|
stageGit(this: WsClientDomainHost, paths: string | string[]): void;
|
|
16
23
|
unstageGit(this: WsClientDomainHost, paths: string | string[]): void;
|
|
17
24
|
discardGit(this: WsClientDomainHost, paths: string | string[]): void;
|
|
18
25
|
commitGit(this: WsClientDomainHost, message: string): void;
|
|
26
|
+
/**
|
|
27
|
+
* Ask for the current plan-quota readings.
|
|
28
|
+
*
|
|
29
|
+
* Sent once per connection. Quota is pushed as it changes, so a tab that was
|
|
30
|
+
* open all along needs nothing — but one that connects mid-session has missed
|
|
31
|
+
* every push, and the server will not re-fetch from the provider (that costs
|
|
32
|
+
* a request against the very budget being checked). This replays what the
|
|
33
|
+
* server already holds.
|
|
34
|
+
*/
|
|
35
|
+
getProviderQuota(this: WsClientDomainHost): void;
|
|
19
36
|
getProviderStatus(this: WsClientDomainHost): void;
|
|
20
37
|
getProviderAuditHistory(this: WsClientDomainHost, count?: number | undefined): void;
|
|
21
38
|
retryProviderModel(this: WsClientDomainHost, providerId: string, model: string): void;
|
|
@@ -58,9 +75,10 @@ declare const domainMethods: {
|
|
|
58
75
|
setActiveKey(this: WsClientDomainHost, providerId: string, label: string): void;
|
|
59
76
|
addProvider(this: WsClientDomainHost, id: string, family: string, baseUrl?: string | undefined, apiKey?: string, models?: string[] | undefined, customModels?: Record<string, ProviderCustomModelWire> | undefined): void;
|
|
60
77
|
removeProvider(this: WsClientDomainHost, providerId: string): void;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
78
|
+
listOAuthProviders(this: WsClientDomainHost): void;
|
|
79
|
+
startOAuth(this: WsClientDomainHost, kind: string, providerId?: string): void;
|
|
80
|
+
submitOAuthCode(this: WsClientDomainHost, kind: string, input: string): void;
|
|
81
|
+
cancelOAuth(this: WsClientDomainHost, kind: string): void;
|
|
64
82
|
probeProvider(this: WsClientDomainHost, providerId: string, timeoutMs?: number): void;
|
|
65
83
|
clearProviderModels(this: WsClientDomainHost, providerId: string): void;
|
|
66
84
|
undoProviderClear(this: WsClientDomainHost, providerId: string, previousModels: string[]): void;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export interface BugHuntRun {
|
|
2
|
+
scope: string;
|
|
3
|
+
totalRounds: 1 | 2 | 3;
|
|
4
|
+
/** The round currently running, or most recently completed when inactive. */
|
|
5
|
+
currentRound: number;
|
|
6
|
+
/** `null` after recovery; the next completion then claims the resumed run. */
|
|
7
|
+
requestId: string | null;
|
|
8
|
+
}
|
|
9
|
+
interface BugHuntRunState {
|
|
10
|
+
runs: Record<string, BugHuntRun>;
|
|
11
|
+
start(sessionId: string, run: BugHuntRun): void;
|
|
12
|
+
/** Whether a result with a request id belongs to the active round. */
|
|
13
|
+
ownsRequest(sessionId: string, requestId?: string): boolean;
|
|
14
|
+
/** Claim one completed round and reserve the next send against duplicate results. */
|
|
15
|
+
advance(sessionId: string, requestId?: string): BugHuntRun | null;
|
|
16
|
+
setRequestId(sessionId: string, requestId: string): void;
|
|
17
|
+
stop(sessionId: string, requestId?: string): void;
|
|
18
|
+
recover(sessionId: string, run: Omit<BugHuntRun, 'requestId'>): void;
|
|
19
|
+
clear(sessionId: string): void;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Session-keyed state for WebUI's one-bug-per-turn hunt loop. Persistence lets
|
|
23
|
+
* a refreshed page recover the active budget; every submitted round also
|
|
24
|
+
* carries durable chat-journal metadata for session replay.
|
|
25
|
+
*/
|
|
26
|
+
export declare const useBugHuntRunStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<BugHuntRunState>, "persist" | "setState"> & {
|
|
27
|
+
setState(partial: BugHuntRunState | Partial<BugHuntRunState> | ((state: BugHuntRunState) => BugHuntRunState | Partial<BugHuntRunState>), replace?: false | undefined): unknown;
|
|
28
|
+
setState(state: BugHuntRunState | ((state: BugHuntRunState) => BugHuntRunState), replace: true): unknown;
|
|
29
|
+
persist: {
|
|
30
|
+
setOptions: (options: Partial<import("zustand/middleware").PersistOptions<BugHuntRunState, {
|
|
31
|
+
runs: Record<string, BugHuntRun>;
|
|
32
|
+
}, unknown>>) => void;
|
|
33
|
+
clearStorage: () => void;
|
|
34
|
+
rehydrate: () => Promise<void> | void;
|
|
35
|
+
hasHydrated: () => boolean;
|
|
36
|
+
onHydrate: (fn: (state: BugHuntRunState) => void) => () => void;
|
|
37
|
+
onFinishHydration: (fn: (state: BugHuntRunState) => void) => () => void;
|
|
38
|
+
getOptions: () => Partial<import("zustand/middleware").PersistOptions<BugHuntRunState, {
|
|
39
|
+
runs: Record<string, BugHuntRun>;
|
|
40
|
+
}, unknown>>;
|
|
41
|
+
};
|
|
42
|
+
}>;
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=bug-hunt-run-store.d.ts.map
|
package/dist/stores/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export type { BugHuntRun } from './bug-hunt-run-store.js';
|
|
2
|
+
export { useBugHuntRunStore } from './bug-hunt-run-store.js';
|
|
1
3
|
export { useChatStore } from './chat-store.js';
|
|
2
4
|
export type { ChimeraReportNotice } from './chimera-reports-store.js';
|
|
3
5
|
export { useChimeraReportsStore } from './chimera-reports-store.js';
|
|
@@ -36,6 +38,7 @@ export { useMonitorStore } from './monitor-store.js';
|
|
|
36
38
|
export type { AppNotification, NotificationAction, NotificationStoreState, NotificationVariant, } from './notification-store.js';
|
|
37
39
|
export { toast, useNotificationStore, useToastStore, } from './notification-store.js';
|
|
38
40
|
export { type BackgroundStyle, DEFAULT_WAIT_THRESHOLD_MS, useOfficeMapStore, WAIT_THRESHOLD_PRESETS, } from './office-map-store.js';
|
|
41
|
+
export { formatQuotaResetIn, type QuotaCredits, type QuotaSnapshot, type QuotaWindow, quotaWindowLabel, selectWorstQuotaWindow, useProviderQuotaStore, } from './provider-quota-store.js';
|
|
39
42
|
export { type ProviderAuditEntry, type ProviderHealthEntry, type ProviderHealthState, useProviderStatusStore, } from './provider-status-store.js';
|
|
40
43
|
export { type SddBoardFeedEntry, type SddBoardSnapshotUI, type SddBoardStatus, type SddBoardSummary, type SddLifecycleResultUI, useSddBoardStore, } from './sdd-board-store.js';
|
|
41
44
|
export { type SddWizardPhase, type SddWizardSnapshot, useSddWizardStore, } from './sdd-wizard-store.js';
|
|
@@ -18,6 +18,15 @@ export interface LocalPrefs {
|
|
|
18
18
|
autoProceedMaxIterations: number;
|
|
19
19
|
/** YOLO mode — bypass tool confirmations */
|
|
20
20
|
yolo: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Which kinds of damage still prompt while YOLO is on, keyed by
|
|
23
|
+
* `DestructiveKind`. A missing key means "still asks" — the fail-closed
|
|
24
|
+
* reading — so an older client that omits a newer kind cannot un-gate it.
|
|
25
|
+
*
|
|
26
|
+
* Machine-level, NOT session-scoped: unlike `yolo` (a per-tab mode), this
|
|
27
|
+
* answers what the agent may destroy unattended anywhere.
|
|
28
|
+
*/
|
|
29
|
+
yoloConfirm: Record<string, boolean>;
|
|
21
30
|
/** Maximum agent iterations per run */
|
|
22
31
|
maxIterations: number;
|
|
23
32
|
/** Chime on run completion */
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zustand store for subscription plan quota — the browser mirror of the
|
|
3
|
+
* server-side store in `@wrongstack/core/quota`.
|
|
4
|
+
*
|
|
5
|
+
* Metered providers (ChatGPT/Codex today, any plan-backed login next) report
|
|
6
|
+
* how much of their rolling budget is spent on the responses to requests the
|
|
7
|
+
* agent already makes. The server broadcasts every reading as `provider.quota`;
|
|
8
|
+
* a tab that connected mid-session asks once with `provider.quota.get`, because
|
|
9
|
+
* the reading is never re-fetched from the provider — asking a metered plan how
|
|
10
|
+
* much you have spent costs a request against the very budget you are checking.
|
|
11
|
+
*
|
|
12
|
+
* Deliberately global rather than per-session: a plan belongs to the account,
|
|
13
|
+
* not to a conversation. Every tab shows the same numbers, and a reading that
|
|
14
|
+
* arrived while another tab was in the foreground stays valid here.
|
|
15
|
+
*
|
|
16
|
+
* The shape mirrors `ProviderQuotaSnapshot` exactly. It is redeclared rather
|
|
17
|
+
* than imported: this bundle is browser-only and pulling a Node-side entry in
|
|
18
|
+
* for four field names is how `node:fs` ends up in the Vite graph.
|
|
19
|
+
*/
|
|
20
|
+
export interface QuotaWindow {
|
|
21
|
+
id: string;
|
|
22
|
+
label?: string | undefined;
|
|
23
|
+
usedPercent: number;
|
|
24
|
+
windowMinutes?: number | undefined;
|
|
25
|
+
/** Absolute reset time in epoch **seconds**. */
|
|
26
|
+
resetsAt?: number | undefined;
|
|
27
|
+
}
|
|
28
|
+
export interface QuotaCredits {
|
|
29
|
+
hasCredits: boolean;
|
|
30
|
+
unlimited: boolean;
|
|
31
|
+
balance?: string | undefined;
|
|
32
|
+
}
|
|
33
|
+
export interface QuotaSnapshot {
|
|
34
|
+
providerId: string;
|
|
35
|
+
meterId: string;
|
|
36
|
+
meterLabel?: string | undefined;
|
|
37
|
+
planLabel?: string | undefined;
|
|
38
|
+
windows: QuotaWindow[];
|
|
39
|
+
credits?: QuotaCredits | undefined;
|
|
40
|
+
reachedWindowId?: string | undefined;
|
|
41
|
+
note?: string | undefined;
|
|
42
|
+
capturedAt: number;
|
|
43
|
+
}
|
|
44
|
+
interface ProviderQuotaState {
|
|
45
|
+
/** Every known meter, keyed `providerId\0meterId`. */
|
|
46
|
+
meters: Record<string, QuotaSnapshot>;
|
|
47
|
+
/** Merge readings for one provider (a `provider.quota` push). */
|
|
48
|
+
apply: (snapshots: readonly QuotaSnapshot[]) => void;
|
|
49
|
+
clear: () => void;
|
|
50
|
+
}
|
|
51
|
+
export declare const useProviderQuotaStore: import("zustand").UseBoundStore<import("zustand").StoreApi<ProviderQuotaState>>;
|
|
52
|
+
/**
|
|
53
|
+
* The window a one-line surface should show: the most-consumed one across every
|
|
54
|
+
* provider and meter, ties broken toward the sooner reset.
|
|
55
|
+
*
|
|
56
|
+
* Same rule as the TUI chip. A status bar has room for one number, and the one
|
|
57
|
+
* that matters is the one nearest to cutting the user off — not the first
|
|
58
|
+
* provider to report.
|
|
59
|
+
*/
|
|
60
|
+
export declare function selectWorstQuotaWindow(meters: Record<string, QuotaSnapshot>): {
|
|
61
|
+
snapshot: QuotaSnapshot;
|
|
62
|
+
window: QuotaWindow;
|
|
63
|
+
} | undefined;
|
|
64
|
+
/** `5h` / `7d` / the window's own label / its id. */
|
|
65
|
+
export declare function quotaWindowLabel(window: QuotaWindow): string;
|
|
66
|
+
/** Compact `4h 12m` / `38m` / `45s` countdown, or undefined when unknown/past. */
|
|
67
|
+
export declare function formatQuotaResetIn(window: QuotaWindow | undefined, now?: number): string | undefined;
|
|
68
|
+
export {};
|
|
69
|
+
//# sourceMappingURL=provider-quota-store.d.ts.map
|
package/dist/stores/types.d.ts
CHANGED
|
@@ -56,6 +56,7 @@ export interface ChatMessage {
|
|
|
56
56
|
bugHunt?: {
|
|
57
57
|
scope: string;
|
|
58
58
|
maxBugs: 1 | 2 | 3;
|
|
59
|
+
currentRound: number;
|
|
59
60
|
} | undefined;
|
|
60
61
|
/** The same treatment for a built-in performance ratchet round: the full
|
|
61
62
|
* prompt goes to the agent, the transcript shows the mode, scope, and the
|
|
@@ -20,7 +20,7 @@ export declare function coerceActivity(value: unknown): Activity;
|
|
|
20
20
|
* bucket, which makes that class of drift a compile error.
|
|
21
21
|
* See docs/audit/webui-full-review-2026-09-03.md B-02.
|
|
22
22
|
*/
|
|
23
|
-
export declare const VIEWS: readonly ['chat', 'settings', 'memory', 'roster', 'context', 'goal', 'kanban', 'sddhub', 'files', 'changes', 'sessions', 'session-inspect', 'setup', 'skill', 'mailbox', 'debug', 'design-gallery', 'refresh-debug', 'analytics', 'codemap', 'techstack', 'chronicle', 'intake', 'deadcode', 'prompts', 'chimera'];
|
|
23
|
+
export declare const VIEWS: readonly ['chat', 'settings', 'memory', 'roster', 'context', 'goal', 'kanban', 'sddhub', 'files', 'changes', 'history', 'sessions', 'session-inspect', 'setup', 'skill', 'mailbox', 'debug', 'design-gallery', 'refresh-debug', 'analytics', 'codemap', 'techstack', 'chronicle', 'intake', 'deadcode', 'prompts', 'chimera'];
|
|
24
24
|
export type View = (typeof VIEWS)[number];
|
|
25
25
|
/** Coerce an arbitrary value onto the current view union. Used by migrate
|
|
26
26
|
* when reading from localStorage so a stale value (e.g. 'context', a view
|
|
@@ -620,6 +620,8 @@ export type WSClientMessageCore = WSUserMessage | {
|
|
|
620
620
|
providerId: string;
|
|
621
621
|
timeoutMs?: number | undefined;
|
|
622
622
|
};
|
|
623
|
+
} | {
|
|
624
|
+
type: 'auth.oauth.list';
|
|
623
625
|
} | {
|
|
624
626
|
type: 'auth.oauth.start';
|
|
625
627
|
payload: {
|
|
@@ -637,6 +639,8 @@ export type WSClientMessageCore = WSUserMessage | {
|
|
|
637
639
|
payload: {
|
|
638
640
|
kind: OAuthKind;
|
|
639
641
|
};
|
|
642
|
+
} | {
|
|
643
|
+
type: 'provider.quota.get';
|
|
640
644
|
} | {
|
|
641
645
|
type: 'provider.status.get';
|
|
642
646
|
} | {
|
|
@@ -1014,6 +1018,26 @@ export type WSClientMessageCore = WSUserMessage | {
|
|
|
1014
1018
|
type: 'git.info';
|
|
1015
1019
|
} | {
|
|
1016
1020
|
type: 'git.changes';
|
|
1021
|
+
} | {
|
|
1022
|
+
type: 'git.history';
|
|
1023
|
+
payload?: {
|
|
1024
|
+
ref?: string;
|
|
1025
|
+
limit?: number;
|
|
1026
|
+
skip?: number;
|
|
1027
|
+
path?: string;
|
|
1028
|
+
};
|
|
1029
|
+
} | {
|
|
1030
|
+
type: 'git.commit_detail';
|
|
1031
|
+
payload: {
|
|
1032
|
+
hash: string;
|
|
1033
|
+
};
|
|
1034
|
+
} | {
|
|
1035
|
+
type: 'git.commit_file_diff';
|
|
1036
|
+
payload: {
|
|
1037
|
+
hash: string;
|
|
1038
|
+
path: string;
|
|
1039
|
+
previousPath?: string | undefined;
|
|
1040
|
+
};
|
|
1017
1041
|
} | {
|
|
1018
1042
|
type: 'git.diff';
|
|
1019
1043
|
payload: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export type ConnectionHealthStatus = 'healthy' | 'degraded' | 'offline' | 'unavailable' | 'error';
|
|
2
2
|
export interface ConnectionHealthService {
|
|
3
|
-
id: 'webui' | 'chronicle' | 'codebase-index' | 'sage' | 'kanban' | 'mailbox' | 'governance';
|
|
3
|
+
id: 'webui' | 'session-catalog' | 'chronicle' | 'codebase-index' | 'sage' | 'kanban' | 'mailbox' | 'governance';
|
|
4
4
|
label: string;
|
|
5
5
|
status: ConnectionHealthStatus;
|
|
6
6
|
required: boolean;
|
|
@@ -285,6 +285,19 @@ export interface WSProviderStatusChanged {
|
|
|
285
285
|
lastAgentId?: string | null | undefined;
|
|
286
286
|
};
|
|
287
287
|
}
|
|
288
|
+
/**
|
|
289
|
+
* `provider.quota` — subscription plan readings, pushed on every metered
|
|
290
|
+
* response and replayed on `provider.quota.get`. `providerId` is present on a
|
|
291
|
+
* push (it names the provider that just reported) and absent on a replay,
|
|
292
|
+
* which carries every provider at once.
|
|
293
|
+
*/
|
|
294
|
+
export interface WSProviderQuota {
|
|
295
|
+
type: 'provider.quota';
|
|
296
|
+
payload: {
|
|
297
|
+
providerId?: string | undefined;
|
|
298
|
+
snapshots: unknown[];
|
|
299
|
+
};
|
|
300
|
+
}
|
|
288
301
|
export interface WSProviderStatusSnapshot {
|
|
289
302
|
type: 'provider.status.snapshot';
|
|
290
303
|
payload: Record<string, unknown>;
|
|
@@ -122,6 +122,63 @@ export type WSFilesGitServerMessage = {
|
|
|
122
122
|
repoPrefix?: string | undefined;
|
|
123
123
|
error?: string | undefined;
|
|
124
124
|
};
|
|
125
|
+
} | {
|
|
126
|
+
type: 'git.history';
|
|
127
|
+
payload: {
|
|
128
|
+
commits: Array<{
|
|
129
|
+
hash: string;
|
|
130
|
+
parents: string[];
|
|
131
|
+
author: string;
|
|
132
|
+
email: string;
|
|
133
|
+
authoredAt: string;
|
|
134
|
+
subject: string;
|
|
135
|
+
refs: string[];
|
|
136
|
+
}>;
|
|
137
|
+
refs: Array<{
|
|
138
|
+
name: string;
|
|
139
|
+
shortName: string;
|
|
140
|
+
kind: 'local' | 'remote' | 'tag';
|
|
141
|
+
hash: string;
|
|
142
|
+
current: boolean;
|
|
143
|
+
}>;
|
|
144
|
+
currentBranch: string;
|
|
145
|
+
repoRoot: string;
|
|
146
|
+
hasMore: boolean;
|
|
147
|
+
skip: number;
|
|
148
|
+
error?: string | undefined;
|
|
149
|
+
};
|
|
150
|
+
} | {
|
|
151
|
+
type: 'git.commit_detail';
|
|
152
|
+
payload: {
|
|
153
|
+
hash: string;
|
|
154
|
+
fullHash?: string | undefined;
|
|
155
|
+
parents?: string[] | undefined;
|
|
156
|
+
author?: string | undefined;
|
|
157
|
+
email?: string | undefined;
|
|
158
|
+
authoredAt?: string | undefined;
|
|
159
|
+
body?: string | undefined;
|
|
160
|
+
files?: Array<{
|
|
161
|
+
path: string;
|
|
162
|
+
previousPath?: string | undefined;
|
|
163
|
+
added: number;
|
|
164
|
+
deleted: number;
|
|
165
|
+
binary?: boolean | undefined;
|
|
166
|
+
}> | undefined;
|
|
167
|
+
truncated?: boolean | undefined;
|
|
168
|
+
error?: string | undefined;
|
|
169
|
+
};
|
|
170
|
+
} | {
|
|
171
|
+
type: 'git.commit_file_diff';
|
|
172
|
+
payload: {
|
|
173
|
+
hash: string;
|
|
174
|
+
path: string;
|
|
175
|
+
previousPath?: string | undefined;
|
|
176
|
+
oldText?: string | undefined;
|
|
177
|
+
newText?: string | undefined;
|
|
178
|
+
binary?: boolean | undefined;
|
|
179
|
+
tooLarge?: boolean | undefined;
|
|
180
|
+
error?: string | undefined;
|
|
181
|
+
};
|
|
125
182
|
} | {
|
|
126
183
|
type: 'git.diff';
|
|
127
184
|
payload: {
|
|
@@ -2,7 +2,7 @@ import type { ChronicleFacet, ChronicleFacetValue, ChronicleGraphResult, Chronic
|
|
|
2
2
|
import type { WSCollabAnnotationAdded, WSCollabAnnotationResolved, WSCollabEvent, WSCollabInjectionGranted, WSCollabParticipantJoined, WSCollabParticipantLeft, WSCollabPauseGranted, WSCollabPauseReleased, WSCollabState } from './collab.js';
|
|
3
3
|
import type { AutoHealStatusEvent, ConnectionsHealthReport, ServiceActionResult } from './connections.js';
|
|
4
4
|
import type { WSAgentStatusChanged, WSAgentTimelineMessage, WSEternalIteration, WSGoalAssessResult, WSGoalLifecycle, WSGoalList, WSGoalProgress, WSGoalState, WSKanbanResult, WSKanbanTaskActivity, WSModesList, WSWorktreeCleanupResult, WSWorktreeDiffResult, WSWorktreeEvent, WSWorktreeMergeResult, WSWorktreeOrphans, WSWorktreeState } from './goal-kanban-worktree.js';
|
|
5
|
-
import type { WSCodeMapToolExecuted, WSCodeMapToolStarted, WSIterationCompleted, WSIterationLimitReached, WSIterationStarted, WSProviderActiveBlocked, WSProviderAuditHistory, WSProviderError, WSProviderFallback, WSProviderFallbackPending, WSProviderResponse, WSProviderRetry, WSProviderStatusChanged, WSProviderStatusSnapshot, WSProviderStreamError, WSRunResult, WSSessionEnd, WSSessionResumeProgress, WSSessionRunState, WSSessionStart, WSTextDelta, WSThinkingDelta, WSToolExecuted, WSToolProgress, WSToolUseStart } from './protocol-core.js';
|
|
5
|
+
import type { WSCodeMapToolExecuted, WSCodeMapToolStarted, WSIterationCompleted, WSIterationLimitReached, WSIterationStarted, WSProviderActiveBlocked, WSProviderAuditHistory, WSProviderError, WSProviderFallback, WSProviderFallbackPending, WSProviderQuota, WSProviderResponse, WSProviderRetry, WSProviderStatusChanged, WSProviderStatusSnapshot, WSProviderStreamError, WSRunResult, WSSessionEnd, WSSessionResumeProgress, WSSessionRunState, WSSessionStart, WSTextDelta, WSThinkingDelta, WSToolExecuted, WSToolProgress, WSToolUseStart } from './protocol-core.js';
|
|
6
6
|
import type { WSCompactionFailed, WSContextCompacted, WSContextDebug, WSContextEditorApplied, WSContextEditorSnapshot, WSContextEditorValidation, WSContextMaxContext, WSContextModeChanged, WSContextModesList, WSContextPct, WSContextRepaired, WSDelegateCompleted, WSDelegateStarted, WSError, WSMemoryList, WSSessionStats, WSTokenCostEstimateUnavailable, WSTokenThreshold, WSToolConfirmNeeded, WSToolLoopDetected, WSToolsList, WSTopicAdviceResult, WSTrustPersisted } from './runtime.js';
|
|
7
7
|
import type { WSMemorySageBackfillRecoverable, WSMemorySageCandidateResolve, WSMemorySageDelete, WSMemorySageForFile, WSMemorySageGet, WSMemorySageGraph, WSMemorySageList, WSMemorySageListCandidates, WSMemorySageListPage, WSMemorySageRecover, WSMemorySageRemember, WSMemorySageSearchBreakdown, WSMemorySageUpdate } from './sage.js';
|
|
8
8
|
import type { WSChimeraServerMessage } from './server-message-chimera.js';
|
|
@@ -11,8 +11,8 @@ import type { WSFleetServerMessage } from './server-message-fleet.js';
|
|
|
11
11
|
import type { WSMcpServerMessage } from './server-message-mcp.js';
|
|
12
12
|
import type { WSSystemMiscServerMessage } from './server-message-system.js';
|
|
13
13
|
import type { WSDesignList, WSDesignMaterialize, WSDesignSet, WSDesignState, WSDesignSwap, WSDesignTune, WSDesignUse, WSDesignVerify, WSSkillContent, WSSkillsCreated, WSSkillsEdited, WSSkillsExported, WSSkillsInstalled, WSSkillsList, WSSkillsUninstalled, WSSkillsUpdated } from './skills-design.js';
|
|
14
|
-
import type { WSAuthOAuthStatus, WSCatalogModelSearchResult, WSCompletionResult, WSDiagGet, WSFilesList, WSKeyOperationResult, WSModelSwitchResult, WSProviderCatalog, WSProviderModels, WSProviderProbe, WSSavedProviders, WSSessionInspect, WSSessionsList, WSSideEffects, WSStatsGet, WSTodosCleared, WSTodosUpdated } from './system.js';
|
|
15
|
-
export type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSThinkingDelta | WSToolUseStart | WSToolProgress | WSToolExecuted | WSCodeMapToolStarted | WSCodeMapToolExecuted | WSIterationStarted | WSIterationCompleted | WSIterationLimitReached | WSProviderResponse | WSProviderRetry | WSProviderAuditHistory | WSProviderError | WSProviderFallback | WSProviderFallbackPending | WSProviderStatusChanged | WSProviderStatusSnapshot | WSProviderActiveBlocked | WSProviderStreamError | WSRunResult | WSSessionRunState | WSSessionResumeProgress | WSSessionStats | WSError | WSToolConfirmNeeded | WSTrustPersisted | WSToolLoopDetected | WSDelegateStarted | WSDelegateCompleted | WSContextDebug | WSContextCompacted | WSCompactionFailed | WSContextRepaired | WSContextEditorSnapshot | WSContextEditorValidation | WSContextEditorApplied | WSContextPct | WSTopicAdviceResult | WSContextMaxContext | WSTokenThreshold | WSTokenCostEstimateUnavailable | WSContextModesList | WSContextModeChanged | WSToolsList | WSMemoryList | WSMemorySageList | WSMemorySageListPage | WSMemorySageListCandidates | WSMemorySageGet | WSMemorySageGraph | WSMemorySageSearchBreakdown | WSMemorySageUpdate | WSMemorySageRemember | WSMemorySageDelete | WSMemorySageRecover | WSMemorySageCandidateResolve | WSMemorySageBackfillRecoverable | WSMemorySageForFile | WSSkillsList | WSSkillContent | WSDesignList | WSDesignUse | WSDesignState | WSDesignSet | WSDesignTune | WSDesignSwap | WSDesignMaterialize | WSDesignVerify | WSSkillsInstalled | WSSkillsUninstalled | WSSkillsUpdated | WSSkillsCreated | WSSkillsEdited | WSSkillsExported | WSDiagGet | WSStatsGet | {
|
|
14
|
+
import type { WSAuthOAuthProviders, WSAuthOAuthStatus, WSCatalogModelSearchResult, WSCompletionResult, WSDiagGet, WSFilesList, WSKeyOperationResult, WSModelSwitchResult, WSProviderCatalog, WSProviderModels, WSProviderProbe, WSSavedProviders, WSSessionInspect, WSSessionsList, WSSideEffects, WSStatsGet, WSTodosCleared, WSTodosUpdated } from './system.js';
|
|
15
|
+
export type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSThinkingDelta | WSToolUseStart | WSToolProgress | WSToolExecuted | WSCodeMapToolStarted | WSCodeMapToolExecuted | WSIterationStarted | WSIterationCompleted | WSIterationLimitReached | WSProviderResponse | WSProviderRetry | WSProviderAuditHistory | WSProviderError | WSProviderFallback | WSProviderFallbackPending | WSProviderStatusChanged | WSProviderQuota | WSProviderStatusSnapshot | WSProviderActiveBlocked | WSProviderStreamError | WSRunResult | WSSessionRunState | WSSessionResumeProgress | WSSessionStats | WSError | WSToolConfirmNeeded | WSTrustPersisted | WSToolLoopDetected | WSDelegateStarted | WSDelegateCompleted | WSContextDebug | WSContextCompacted | WSCompactionFailed | WSContextRepaired | WSContextEditorSnapshot | WSContextEditorValidation | WSContextEditorApplied | WSContextPct | WSTopicAdviceResult | WSContextMaxContext | WSTokenThreshold | WSTokenCostEstimateUnavailable | WSContextModesList | WSContextModeChanged | WSToolsList | WSMemoryList | WSMemorySageList | WSMemorySageListPage | WSMemorySageListCandidates | WSMemorySageGet | WSMemorySageGraph | WSMemorySageSearchBreakdown | WSMemorySageUpdate | WSMemorySageRemember | WSMemorySageDelete | WSMemorySageRecover | WSMemorySageCandidateResolve | WSMemorySageBackfillRecoverable | WSMemorySageForFile | WSSkillsList | WSSkillContent | WSDesignList | WSDesignUse | WSDesignState | WSDesignSet | WSDesignTune | WSDesignSwap | WSDesignMaterialize | WSDesignVerify | WSSkillsInstalled | WSSkillsUninstalled | WSSkillsUpdated | WSSkillsCreated | WSSkillsEdited | WSSkillsExported | WSDiagGet | WSStatsGet | {
|
|
16
16
|
type: 'connections.health_result';
|
|
17
17
|
payload: ConnectionsHealthReport;
|
|
18
18
|
} | {
|
|
@@ -62,7 +62,7 @@ export type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSTh
|
|
|
62
62
|
payload: {
|
|
63
63
|
message: string;
|
|
64
64
|
};
|
|
65
|
-
} | WSSessionsList | WSSessionInspect | WSProviderCatalog | WSCatalogModelSearchResult | WSProviderModels | WSSavedProviders | WSProviderProbe | WSKeyOperationResult | WSModelSwitchResult | WSAuthOAuthStatus | WSFilesList | WSFilesGitServerMessage | WSCompletionResult | WSTodosUpdated | WSTodosCleared | WSModesList | WSGoalState | WSGoalProgress | WSGoalLifecycle | WSGoalList | WSGoalAssessResult | WSEternalIteration | WSAgentTimelineMessage | WSAgentStatusChanged | WSKanbanResult | WSKanbanTaskActivity | WSWorktreeState | WSWorktreeEvent | WSWorktreeOrphans | WSWorktreeCleanupResult | WSWorktreeMergeResult | WSWorktreeDiffResult | WSCollabState | WSCollabParticipantJoined | WSCollabParticipantLeft | WSCollabEvent | WSCollabAnnotationAdded | WSCollabAnnotationResolved | WSCollabPauseGranted | WSCollabPauseReleased | WSCollabInjectionGranted | WSSideEffects | WSMcpServerMessage | WSChimeraServerMessage | WSFleetServerMessage | WSSystemMiscServerMessage;
|
|
65
|
+
} | WSSessionsList | WSSessionInspect | WSProviderCatalog | WSCatalogModelSearchResult | WSProviderModels | WSSavedProviders | WSProviderProbe | WSKeyOperationResult | WSModelSwitchResult | WSAuthOAuthStatus | WSAuthOAuthProviders | WSFilesList | WSFilesGitServerMessage | WSCompletionResult | WSTodosUpdated | WSTodosCleared | WSModesList | WSGoalState | WSGoalProgress | WSGoalLifecycle | WSGoalList | WSGoalAssessResult | WSEternalIteration | WSAgentTimelineMessage | WSAgentStatusChanged | WSKanbanResult | WSKanbanTaskActivity | WSWorktreeState | WSWorktreeEvent | WSWorktreeOrphans | WSWorktreeCleanupResult | WSWorktreeMergeResult | WSWorktreeDiffResult | WSCollabState | WSCollabParticipantJoined | WSCollabParticipantLeft | WSCollabEvent | WSCollabAnnotationAdded | WSCollabAnnotationResolved | WSCollabPauseGranted | WSCollabPauseReleased | WSCollabInjectionGranted | WSSideEffects | WSMcpServerMessage | WSChimeraServerMessage | WSFleetServerMessage | WSSystemMiscServerMessage;
|
|
66
66
|
export type { WSChimeraServerMessage } from './server-message-chimera.js';
|
|
67
67
|
export type { WSFilesGitServerMessage } from './server-message-files.js';
|
|
68
68
|
export type { WSFleetServerMessage } from './server-message-fleet.js';
|
package/dist/types/system.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ModelProvenance } from '@wrongstack/core/types';
|
|
1
2
|
import type { SessionScopedPayload } from './protocol-core.js';
|
|
2
3
|
export interface WSDiagGet {
|
|
3
4
|
type: 'diag.get';
|
|
@@ -163,6 +164,7 @@ export interface ProviderCatalogModelMatch {
|
|
|
163
164
|
maxOutput?: number | undefined;
|
|
164
165
|
inputCost?: number | undefined;
|
|
165
166
|
outputCost?: number | undefined;
|
|
167
|
+
provenance?: ModelProvenance | undefined;
|
|
166
168
|
capabilities: string[];
|
|
167
169
|
}
|
|
168
170
|
export interface WSCatalogModelSearchResult {
|
|
@@ -184,6 +186,7 @@ export interface WSProviderModels {
|
|
|
184
186
|
contextWindow?: number | undefined;
|
|
185
187
|
inputCost?: number | undefined;
|
|
186
188
|
outputCost?: number | undefined;
|
|
189
|
+
provenance?: ModelProvenance | undefined;
|
|
187
190
|
capabilities: string[];
|
|
188
191
|
}>;
|
|
189
192
|
};
|
|
@@ -284,7 +287,21 @@ export interface WSModelSwitchResult {
|
|
|
284
287
|
};
|
|
285
288
|
}
|
|
286
289
|
/** Which subscription OAuth login a flow is running. */
|
|
287
|
-
export type OAuthKind =
|
|
290
|
+
export type OAuthKind = string;
|
|
291
|
+
export interface OAuthProviderMetadata {
|
|
292
|
+
id: string;
|
|
293
|
+
providerId: string;
|
|
294
|
+
label: string;
|
|
295
|
+
description?: string | undefined;
|
|
296
|
+
aliases?: readonly string[] | undefined;
|
|
297
|
+
interactionTypes: readonly ('browser' | 'device_code')[];
|
|
298
|
+
}
|
|
299
|
+
export interface WSAuthOAuthProviders {
|
|
300
|
+
type: 'auth.oauth.providers';
|
|
301
|
+
payload: {
|
|
302
|
+
providers: OAuthProviderMetadata[];
|
|
303
|
+
};
|
|
304
|
+
}
|
|
288
305
|
/**
|
|
289
306
|
* Progress for an in-flight subscription OAuth login, broadcast in reply to
|
|
290
307
|
* `auth.oauth.start` / `auth.oauth.code`. `phase` drives the UI:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wrongstack/webui",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Browser-based WebUI for WrongStack — React + Vite frontend. The WebSocket backend lives in the separate @wrongstack/webui-server package (extracted in PR #018b to remove the CLI -> @wrongstack/webui/server cross-package edge).",
|
|
6
6
|
"keywords": [
|
|
@@ -57,12 +57,12 @@
|
|
|
57
57
|
"@radix-ui/react-tabs": "^1.1.21",
|
|
58
58
|
"@tanstack/react-virtual": "^3.14.10",
|
|
59
59
|
"@uiw/react-textarea-code-editor": "^3.1.1",
|
|
60
|
-
"@wrongstack/core": "1.0.
|
|
61
|
-
"@wrongstack/kanban": "1.0.
|
|
62
|
-
"@wrongstack/plugins": "1.0.
|
|
63
|
-
"@wrongstack/providers": "1.0.
|
|
64
|
-
"@wrongstack/tools": "1.0.
|
|
65
|
-
"@wrongstack/webui-protocol": "1.0.
|
|
60
|
+
"@wrongstack/core": "1.0.4",
|
|
61
|
+
"@wrongstack/kanban": "1.0.4",
|
|
62
|
+
"@wrongstack/plugins": "1.0.4",
|
|
63
|
+
"@wrongstack/providers": "1.0.4",
|
|
64
|
+
"@wrongstack/tools": "1.0.4",
|
|
65
|
+
"@wrongstack/webui-protocol": "1.0.4",
|
|
66
66
|
"@xterm/addon-fit": "^0.11.0",
|
|
67
67
|
"@xterm/xterm": "^6.0.0",
|
|
68
68
|
"@xyflow/react": "^12.11.3",
|
|
@@ -98,8 +98,8 @@
|
|
|
98
98
|
"@types/ws": "^8.18.1",
|
|
99
99
|
"@vitejs/plugin-react": "^6.1.0",
|
|
100
100
|
"@vitest/coverage-v8": "^4.1.11",
|
|
101
|
-
"@wrongstack/sdd": "1.0.
|
|
102
|
-
"@wrongstack/webui-server": "1.0.
|
|
101
|
+
"@wrongstack/sdd": "1.0.4",
|
|
102
|
+
"@wrongstack/webui-server": "1.0.4",
|
|
103
103
|
"jsdom": "^30.0.1",
|
|
104
104
|
"tailwindcss": "^4.3.3",
|
|
105
105
|
"typescript": "^7.0.2",
|