@modelprofile.com/authswitch 6.2.0 → 6.3.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.
@@ -83,8 +83,8 @@ export class CodexPreuse {
83
83
  catch {
84
84
  throw new PreuseError(requestStarted
85
85
  ? 'Preuse did not complete. Tokens may already have been consumed; no automatic retry was made. Check the account status before trying again.'
86
- : 'Preuse was cancelled before the prompt was sent.');
86
+ : 'Preuse was cancelled before the prompt was sent.', requestStarted);
87
87
  }
88
88
  }
89
89
  }
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jb2RleHByZXVzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NsYXNzZXMuY29kZXhwcmV1c2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFHeEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVqRSxpR0FBaUc7QUFDakcsTUFBTSxPQUFPLFdBQVc7SUFDTztJQUE3QixZQUE2QixVQUF3QixVQUFVLENBQUMsS0FBSztRQUF4QyxZQUFPLEdBQVAsT0FBTyxDQUFpQztJQUFHLENBQUM7SUFFbEUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFjLEVBQUUsV0FBMkIsRUFBRSxVQUFpQztRQUM3RixxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEtBQUssU0FBUztZQUFFLE1BQU0sSUFBSSxXQUFXLENBQUMsdUdBQXVHLENBQUMsQ0FBQztRQUNuSyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVM7WUFBRSxNQUFNLElBQUksV0FBVyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDOUYsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU07WUFDOUIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNwRSxDQUFDLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxJQUFJLFdBQTJELENBQUM7UUFDaEUsSUFBSSxLQUF5RCxDQUFDO1FBQzlELElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ3pDLEtBQUssR0FBRyxFQUFFLElBQUks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
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jb2RleHByZXVzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NsYXNzZXMuY29kZXhwcmV1c2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFHeEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVqRSxpR0FBaUc7QUFDakcsTUFBTSxPQUFPLFdBQVc7SUFDTztJQUE3QixZQUE2QixVQUF3QixVQUFVLENBQUMsS0FBSztRQUF4QyxZQUFPLEdBQVAsT0FBTyxDQUFpQztJQUFHLENBQUM7SUFFbEUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFjLEVBQUUsV0FBMkIsRUFBRSxVQUFpQztRQUM3RixxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEtBQUssU0FBUztZQUFFLE1BQU0sSUFBSSxXQUFXLENBQUMsdUdBQXVHLENBQUMsQ0FBQztRQUNuSyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVM7WUFBRSxNQUFNLElBQUksV0FBVyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDOUYsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU07WUFDOUIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNwRSxDQUFDLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxJQUFJLFdBQTJELENBQUM7UUFDaEUsSUFBSSxLQUF5RCxDQUFDO1FBQzlELElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ3pDLEtBQUssR0FBRyxFQUFFLElBQUks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
@@ -1,8 +1,13 @@
1
1
  import * as plugins from './plugins.js';
2
2
  import { accountBadge, accountDetails, accountPlan, accountQuotaSummary, accountResets, accountState, accountUsageWindows, usageWindowName, until, readAccountRows } from './accounts.js';
3
+ import { defaultPreusePrompt, preuseAccounts, preuseCountsText, preuseTargets } from './preuse.js';
3
4
  import { plainText } from './formatting.js';
4
5
  import { AuthSwitchOperations, authSwitchMutationReplacesLogin } from './classes.operations.js';
5
6
  import { describeHarnessProcesses, describeStopOutcome } from './classes.harnessprocesses.js';
7
+ /** One account's preuse result, as the dashboard's activity log and footer report it. */
8
+ const preuseResultLine = (resultArg) => resultArg.outcome === 'completed'
9
+ ? `${plainText(resultArg.account.label)}: completed with ${plainText(resultArg.result.model)}, ${resultArg.result.totalTokens ?? 'unreported'} tokens.`
10
+ : `${plainText(resultArg.account.label)}: ${resultArg.reason}`;
6
11
  /** Owns account-management actions; terminal rendering and interaction belong to smartconsole. */
7
12
  export class AuthSwitchTui {
8
13
  harnesses;
@@ -189,6 +194,43 @@ export class AuthSwitchTui {
189
194
  if (showOutcome(outcome))
190
195
  ui.logs.append(`Now active: ${plainText(target.label)}${badge}`);
191
196
  };
197
+ /**
198
+ * Send one preuse prompt through each of these accounts, after one confirmation that names the cost.
199
+ *
200
+ * The prompt consumes the account's own quota, so nothing is sent before consent, the accounts run
201
+ * one at a time through the shared runner, and the footer follows the run account by account. Closing
202
+ * the dashboard aborts it before the next account starts. Nothing is switched, saved or written.
203
+ */
204
+ const preuse = async (screen, accountsArg) => {
205
+ if (!harness.preuseAccount) {
206
+ footer.setText(`${plainText(harness.label)} does not support preuse.`);
207
+ return;
208
+ }
209
+ if (!accountsArg.length) {
210
+ footer.setText('Select an account to preuse.');
211
+ return;
212
+ }
213
+ const message = accountsArg.length === 1
214
+ ? `Send one preuse prompt through ${plainText(accountsArg[0].label)}? This consumes its quota.`
215
+ : `Send one preuse prompt through each of these ${accountsArg.length} ${plainText(harness.label)} accounts? This consumes quota on every one of them.`;
216
+ if (!await screen.confirm(message, { confirmLabel: 'Preuse' }))
217
+ return;
218
+ if (screen.signal.aborted)
219
+ return;
220
+ const summary = await preuseAccounts(harness, accountsArg, { prompt: defaultPreusePrompt, signal: screen.signal }, event => {
221
+ if (event.kind === 'started')
222
+ footer.setText(`Preusing ${plainText(event.account.label)} (${event.index + 1}/${event.total})…`);
223
+ else {
224
+ const line = preuseResultLine(event.result);
225
+ ui.logs.append(line);
226
+ footer.setText(line);
227
+ }
228
+ void screen.invalidate();
229
+ });
230
+ // The prompts moved usage and reset deadlines, so the table is read again before the counts are shown.
231
+ await refresh(screen);
232
+ footer.setText(`Preuse: ${preuseCountsText(summary)}.`);
233
+ };
192
234
  const remove = async (screen) => {
193
235
  const selected = table.selected;
194
236
  if (!selected || (!selected.account.isStashed && selected.account.savedAt === null)) {
@@ -226,7 +268,7 @@ export class AuthSwitchTui {
226
268
  return ui.column([
227
269
  ui.text('authswitch · account management', { height: 1 }),
228
270
  this.harnesses.length > 1 ? ui.row([ui.panel('Harnesses', harnessTable, { width: 23 }), accountView]) : accountView,
229
- ui.text('Enter switch · a save · c save+clear · d remove · r refresh · g diagnose · Tab focus · q quit', { height: 2 }),
271
+ ui.text(`Enter switch · a save · c save+clear · d remove${harness.preuseAccount ? ' · p preuse · P preuse all' : ''} · r refresh · g diagnose · Tab focus · q quit`, { height: 2 }),
230
272
  footer,
231
273
  ]);
232
274
  },
@@ -237,10 +279,17 @@ export class AuthSwitchTui {
237
279
  a: screen => perform(screen, () => save(screen, true)),
238
280
  c: screen => perform(screen, () => save(screen, false)),
239
281
  d: screen => perform(screen, () => remove(screen)),
282
+ // The key map is fixed for the session while the harness selector can change the harness, so both
283
+ // preuse keys are always bound and the action itself reports a harness that does not support it.
284
+ p: screen => perform(screen, async () => {
285
+ const selected = table.selected?.account.id;
286
+ await preuse(screen, preuseTargets((await harness.readState()).accounts).filter(account => account.id === selected));
287
+ }),
288
+ P: screen => perform(screen, async () => { await preuse(screen, preuseTargets((await harness.readState()).accounts)); }),
240
289
  g: screen => perform(screen, async () => { showOutcome(await harness.diagnose()); }),
241
290
  },
242
291
  });
243
292
  return 0;
244
293
  }
245
294
  }
246
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy50dWkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jbGFzc2VzLnR1aS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDNU0sT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSwrQkFBK0IsRUFBNEIsTUFBTSx5QkFBeUIsQ0FBQztBQUMxSCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU5RixrR0FBa0c7QUFDbEcsTUFBTSxPQUFPLGFBQWE7SUFDSztJQUFxRDtJQUF5RDtJQUEzSSxZQUE2QixTQUFrQyxFQUFtQixHQUFzQyxFQUFtQixhQUFhLElBQUksb0JBQW9CLEVBQUU7UUFBckosY0FBUyxHQUFULFNBQVMsQ0FBeUI7UUFBbUIsUUFBRyxHQUFILEdBQUcsQ0FBbUM7UUFBbUIsZUFBVSxHQUFWLFVBQVUsQ0FBNkI7SUFBRyxDQUFDO0lBRS9LLEtBQUssQ0FBQyxHQUFHLENBQUMsWUFBMkI7UUFDMUMsSUFBSSxPQUFPLEdBQUcsWUFBWSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1lBQUMsT0FBTyxDQUFDLENBQUM7UUFBQyxDQUFDO1FBQzVFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FB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
295
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy50dWkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jbGFzc2VzLnR1aS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDNU0sT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQTZCLE1BQU0sYUFBYSxDQUFDO0FBQzlILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsK0JBQStCLEVBQTRCLE1BQU0seUJBQXlCLENBQUM7QUFDMUgsT0FBTyxFQUFFLHdCQUF3QixFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFOUYseUZBQXlGO0FBQ3pGLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxTQUErQixFQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxLQUFLLFdBQVc7SUFDckcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxTQUFTLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxZQUFZLFVBQVU7SUFDdkosQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBRWpFLGtHQUFrRztBQUNsRyxNQUFNLE9BQU8sYUFBYTtJQUNLO0lBQXFEO0lBQXlEO0lB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LENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDdkgsQ0FBQyxDQUFDO2dCQUNGLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUMsTUFBTSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4SCxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFLEdBQUcsV0FBVyxDQUFDLE1BQU0sT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDckY7U0FDRixDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7Q0FDRiJ9
@@ -1,6 +1,93 @@
1
- import type { IHarnessPreuseOptions } from './interfaces.harness.js';
1
+ import type { IAuthHarness, IHarnessAccount, IHarnessPreuseOptions, IHarnessPreuseResult, IHarnessUsageWindow } from './interfaces.harness.js';
2
2
  export declare const defaultPreusePrompt = "Write 2000 words about strawberries.";
3
- /** Only fixed local messages may cross the inference error boundary. */
3
+ /**
4
+ * Only fixed local messages may cross the inference error boundary.
5
+ *
6
+ * `requestStarted` says whether the prompt may already have reached the provider. False is a refusal that
7
+ * sent nothing -- an unsupported login, a missing credential, a model catalog that could not be read before
8
+ * the prompt -- so the account's quota is untouched. True, and any error that is not a `PreuseError` at all,
9
+ * means tokens may have been consumed, and such a request is never repeated automatically.
10
+ */
4
11
  export declare class PreuseError extends Error {
12
+ readonly requestStarted: boolean;
13
+ constructor(messageArg: string, requestStarted?: boolean);
5
14
  }
6
15
  export declare const validatePreuseOptions: (optionsArg: IHarnessPreuseOptions) => void;
16
+ /**
17
+ * What one account's turn in a run did.
18
+ *
19
+ * `skipped` is a refusal that sent nothing and consumed nothing, with the reason the adapter stated.
20
+ * `failed` and `interrupted` may both have consumed tokens, so neither is ever retried by the runner.
21
+ */
22
+ export type TPreuseOutcome = 'completed' | 'skipped' | 'failed' | 'interrupted';
23
+ /**
24
+ * The reset schedule read after a prompt completed.
25
+ *
26
+ * `reported` carries what the provider answered, which may be no window at all; `unavailable` is a lookup
27
+ * that failed, and `notRead` is a run the user interrupted before it asked. None of them says anything
28
+ * about the completed prompt, which is never repeated because its schedule could not be confirmed.
29
+ */
30
+ export type TPreuseSchedule = {
31
+ kind: 'reported';
32
+ windows: readonly IHarnessUsageWindow[];
33
+ } | {
34
+ kind: 'unavailable';
35
+ } | {
36
+ kind: 'notRead';
37
+ };
38
+ export type TPreuseAccountResult = {
39
+ account: IHarnessAccount;
40
+ outcome: 'completed';
41
+ result: IHarnessPreuseResult;
42
+ schedule: TPreuseSchedule;
43
+ } | {
44
+ account: IHarnessAccount;
45
+ outcome: Exclude<TPreuseOutcome, 'completed'>;
46
+ reason: string;
47
+ };
48
+ /** One account starting, and that account's result. A run reports nothing else, and never the generated prose. */
49
+ export type TPreuseRunEvent = {
50
+ kind: 'started';
51
+ index: number;
52
+ total: number;
53
+ account: IHarnessAccount;
54
+ } | {
55
+ kind: 'finished';
56
+ index: number;
57
+ total: number;
58
+ result: TPreuseAccountResult;
59
+ };
60
+ export interface IPreuseRunSummary {
61
+ results: readonly TPreuseAccountResult[];
62
+ counts: Readonly<Record<TPreuseOutcome, number>>;
63
+ /** Accounts an abort kept the run from reaching. Nothing was sent for them. */
64
+ notRun: readonly IHarnessAccount[];
65
+ }
66
+ /**
67
+ * Every account a run may preuse, in the order the harness lists them, each at most once.
68
+ *
69
+ * A harness reports an active login and that login's saved record as one account -- Codex keys both by
70
+ * email, the file harness merges the active login into its saved record by account id -- so the walk is
71
+ * the account list itself. The seen set keeps a repeated id from being charged twice regardless.
72
+ */
73
+ export declare const preuseTargets: (accountsArg: readonly IHarnessAccount[]) => IHarnessAccount[];
74
+ /**
75
+ * A run's counts in one line, for a command's closing line and for the dashboard footer.
76
+ *
77
+ * Completed accounts are always named, including none of them; every other count appears only when it
78
+ * happened, so a clean run reads as one fact rather than as four.
79
+ */
80
+ export declare const preuseCountsText: (summaryArg: IPreuseRunSummary) => string;
81
+ /**
82
+ * Send one preuse prompt through each account in turn, and report what each one did.
83
+ *
84
+ * Accounts run strictly one after another, each with exactly one inference request and no retry, because
85
+ * every request costs the account's own quota. An aborted signal stops the run before the next account
86
+ * starts, and an account already in flight is reported as interrupted: its tokens may be gone either way,
87
+ * which is why nothing is repeated. Nothing is switched, refreshed, stopped or written anywhere.
88
+ */
89
+ export declare const preuseAccounts: (harnessArg: IAuthHarness, accountsArg: readonly IHarnessAccount[], optionsArg: {
90
+ prompt: string;
91
+ model?: string;
92
+ signal: AbortSignal;
93
+ }, reportArg: (eventArg: TPreuseRunEvent) => void) => Promise<IPreuseRunSummary>;
package/dist_ts/preuse.js CHANGED
@@ -1,6 +1,19 @@
1
+ import { orderedUsageWindows } from './accounts.js';
1
2
  export const defaultPreusePrompt = 'Write 2000 words about strawberries.';
2
- /** Only fixed local messages may cross the inference error boundary. */
3
+ /**
4
+ * Only fixed local messages may cross the inference error boundary.
5
+ *
6
+ * `requestStarted` says whether the prompt may already have reached the provider. False is a refusal that
7
+ * sent nothing -- an unsupported login, a missing credential, a model catalog that could not be read before
8
+ * the prompt -- so the account's quota is untouched. True, and any error that is not a `PreuseError` at all,
9
+ * means tokens may have been consumed, and such a request is never repeated automatically.
10
+ */
3
11
  export class PreuseError extends Error {
12
+ requestStarted;
13
+ constructor(messageArg, requestStarted = false) {
14
+ super(messageArg);
15
+ this.requestStarted = requestStarted;
16
+ }
4
17
  }
5
18
  export const validatePreuseOptions = (optionsArg) => {
6
19
  if (typeof optionsArg.prompt !== 'string' || !optionsArg.prompt.trim() || Buffer.byteLength(optionsArg.prompt, 'utf8') > 16_384) {
@@ -10,4 +23,96 @@ export const validatePreuseOptions = (optionsArg) => {
10
23
  throw new PreuseError('The preuse model must be a valid model identifier of at most 128 characters.');
11
24
  }
12
25
  };
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvcHJldXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLHNDQUFzQyxDQUFDO0FBRTFFLHdFQUF3RTtBQUN4RSxNQUFNLE9BQU8sV0FBWSxTQUFRLEtBQUs7Q0FBRztBQUV6QyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFVBQWlDLEVBQVEsRUFBRTtJQUMvRSxJQUFJLE9BQU8sVUFBVSxDQUFDLE1BQU0sS0FBSyxRQUFRLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUNoSSxNQUFNLElBQUksV0FBVyxDQUFDLGlFQUFpRSxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUNELElBQUksVUFBVSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksQ0FBQyxPQUFPLFVBQVUsQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsc0NBQXNDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDL0ksTUFBTSxJQUFJLFdBQVcsQ0FBQyw4RUFBOEUsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7QUFDSCxDQUFDLENBQUMifQ==
26
+ /**
27
+ * Every account a run may preuse, in the order the harness lists them, each at most once.
28
+ *
29
+ * A harness reports an active login and that login's saved record as one account -- Codex keys both by
30
+ * email, the file harness merges the active login into its saved record by account id -- so the walk is
31
+ * the account list itself. The seen set keeps a repeated id from being charged twice regardless.
32
+ */
33
+ export const preuseTargets = (accountsArg) => {
34
+ const seen = new Set();
35
+ const targets = [];
36
+ for (const account of accountsArg) {
37
+ if (seen.has(account.id))
38
+ continue;
39
+ seen.add(account.id);
40
+ targets.push(account);
41
+ }
42
+ return targets;
43
+ };
44
+ /**
45
+ * A run's counts in one line, for a command's closing line and for the dashboard footer.
46
+ *
47
+ * Completed accounts are always named, including none of them; every other count appears only when it
48
+ * happened, so a clean run reads as one fact rather than as four.
49
+ */
50
+ export const preuseCountsText = (summaryArg) => [
51
+ `${summaryArg.counts.completed} completed`,
52
+ ...(summaryArg.counts.skipped ? [`${summaryArg.counts.skipped} skipped`] : []),
53
+ ...(summaryArg.counts.failed ? [`${summaryArg.counts.failed} failed`] : []),
54
+ ...(summaryArg.counts.interrupted ? [`${summaryArg.counts.interrupted} interrupted`] : []),
55
+ ...(summaryArg.notRun.length ? [`${summaryArg.notRun.length} not run`] : []),
56
+ ].join(', ');
57
+ /** An adapter's own fixed message, or the fixed local text for an error that crossed the boundary unnamed. */
58
+ const preuseReason = (errorArg) => errorArg instanceof PreuseError
59
+ ? errorArg.message
60
+ : 'Preuse failed. Tokens may already have been consumed; check account status before trying again.';
61
+ /**
62
+ * The account's reset schedule, read after its prompt completed, exactly as the single-account command reads it.
63
+ *
64
+ * The read never activates or writes a login, and its failure never turns a completed prompt into a failed
65
+ * one: there is nothing to undo and nothing worth repeating. An interrupted run does not ask at all.
66
+ */
67
+ const readPreuseSchedule = async (harnessArg, accountArg, signalArg) => {
68
+ if (signalArg.aborted)
69
+ return { kind: 'notRead' };
70
+ try {
71
+ const status = await harnessArg.readAccountStatus(accountArg.id, { signal: signalArg });
72
+ return { kind: 'reported', windows: orderedUsageWindows(status.summary?.usageWindows) };
73
+ }
74
+ catch {
75
+ return { kind: 'unavailable' };
76
+ }
77
+ };
78
+ /**
79
+ * Send one preuse prompt through each account in turn, and report what each one did.
80
+ *
81
+ * Accounts run strictly one after another, each with exactly one inference request and no retry, because
82
+ * every request costs the account's own quota. An aborted signal stops the run before the next account
83
+ * starts, and an account already in flight is reported as interrupted: its tokens may be gone either way,
84
+ * which is why nothing is repeated. Nothing is switched, refreshed, stopped or written anywhere.
85
+ */
86
+ export const preuseAccounts = async (harnessArg, accountsArg, optionsArg, reportArg) => {
87
+ const preuseAccount = harnessArg.preuseAccount?.bind(harnessArg);
88
+ if (!preuseAccount)
89
+ throw new PreuseError('This harness does not support preuse.');
90
+ validatePreuseOptions(optionsArg);
91
+ const results = [];
92
+ const counts = { completed: 0, skipped: 0, failed: 0, interrupted: 0 };
93
+ const notRun = [];
94
+ const total = accountsArg.length;
95
+ for (const [index, account] of accountsArg.entries()) {
96
+ if (optionsArg.signal.aborted) {
97
+ notRun.push(account);
98
+ continue;
99
+ }
100
+ reportArg({ kind: 'started', index, total, account });
101
+ let result;
102
+ try {
103
+ const completed = await preuseAccount(account.id, { prompt: optionsArg.prompt, model: optionsArg.model, signal: optionsArg.signal });
104
+ result = { account, outcome: 'completed', result: completed, schedule: await readPreuseSchedule(harnessArg, account, optionsArg.signal) };
105
+ }
106
+ catch (error) {
107
+ // A cancelled account is interrupted whether or not its prompt went out; its reason says which.
108
+ const outcome = optionsArg.signal.aborted ? 'interrupted'
109
+ : error instanceof PreuseError && !error.requestStarted ? 'skipped' : 'failed';
110
+ result = { account, outcome, reason: preuseReason(error) };
111
+ }
112
+ results.push(result);
113
+ counts[result.outcome]++;
114
+ reportArg({ kind: 'finished', index, total, result });
115
+ }
116
+ return { results, counts, notRun };
117
+ };
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvcHJldXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdwRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxzQ0FBc0MsQ0FBQztBQUUxRTs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxPQUFPLFdBQVksU0FBUSxLQUFLO0lBQ1k7SUFBaEQsWUFBWSxVQUFrQixFQUFrQixpQkFBaUIsS0FBSztRQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUE1QyxtQkFBYyxHQUFkLGNBQWMsQ0FBUTtJQUF1QixDQUFDO0NBQy9GO0FBRUQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxVQUFpQyxFQUFRLEVBQUU7SUFDL0UsSUFBSSxPQUFPLFVBQVUsQ0FBQyxNQUFNLEtBQUssUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDaEksTUFBTSxJQUFJLFdBQVcsQ0FBQyxpRUFBaUUsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFDRCxJQUFJLFVBQVUsQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLENBQUMsT0FBTyxVQUFVLENBQUMsS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9JLE1BQU0sSUFBSSxXQUFXLENBQUMsOEVBQThFLENBQUMsQ0FBQztJQUN4RyxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBc0NGOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLFdBQXVDLEVBQXFCLEVBQUU7SUFDMUYsTUFB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@modelprofile.com/authswitch",
3
- "version": "6.2.0",
3
+ "version": "6.3.0",
4
4
  "private": false,
5
5
  "description": "Manage Codex, OpenCode and Claude Code accounts with guided switching and live usage status",
6
6
  "main": "dist_ts/index.js",
package/readme.md CHANGED
@@ -28,8 +28,9 @@ Node.js 24 or newer is required.
28
28
 
29
29
  Run `authswitch`, `authswitch -i`, or `authswitch --interactive` for an interactive guide. Use the arrow keys and
30
30
  Enter to switch accounts, save the current login, list accounts and live status, check remote
31
- control, or remove a saved account. The guide shows the current account and returns
32
- to the menu after each successful action; choose **Back** in a submenu or **Exit** to finish.
31
+ control, preuse one or all accounts, or remove a saved account. The guide shows the current
32
+ account and returns to the menu after each successful action; choose **Back** in a submenu or
33
+ **Exit** to finish.
33
34
 
34
35
  Before showing the actions, the guide checks whether the current credential has a
35
36
  readable saved copy of its own account. A login without one gets an offer to save it
@@ -62,6 +63,7 @@ authswitch codex use [email] # activate one; prompts when no email is given
62
63
  authswitch opencode use [email] --stop # stop running OpenCode instances first
63
64
  authswitch opencode use [email] --keep-running # switch without stopping anything
64
65
  authswitch codex preuse <email> # send the default prompt without activating the account
66
+ authswitch codex preuse --all # the same for every Codex account, one account at a time
65
67
  authswitch watch # check usage every 2 minutes and switch when an account runs out
66
68
  authswitch claude watch --threshold 90 --dry-run # report what it would switch, for one harness
67
69
  authswitch codex current # print the account currently in use
@@ -381,12 +383,58 @@ to make the first token-consuming request for the next usage window:
381
383
  authswitch codex preuse alice@example.com
382
384
  authswitch codex preuse alice@example.com --prompt "Write 2000 words about strawberries."
383
385
  authswitch codex preuse alice@example.com --model gpt-5.5 --prompt "Describe a strawberry in one sentence."
386
+ authswitch codex preuse --all
387
+ authswitch codex preuse --all --model gpt-5.5
384
388
  ```
385
389
 
386
390
  The default prompt is `Write 2000 words about strawberries.` Without an account,
387
- an interactive terminal shows an account picker. Scripts must specify an account
388
- and, when multiple harnesses are registered, the harness. Active and saved
389
- accounts are supported, including an active login that has not been stashed.
391
+ an interactive terminal shows a picker of the harness's accounts, plus **All
392
+ accounts** when it has more than one and **Back**. Choosing one account runs it
393
+ exactly as naming it would; choosing **All accounts** confirms once and then runs
394
+ as `--all` does, table and exit status included. Scripts must specify an account
395
+ or `--all` and, when multiple harnesses are registered, the harness. Active and
396
+ saved accounts are supported, including an active login that has not been stashed.
397
+
398
+ `--all` preuses every account the harness lists, active and saved, each exactly
399
+ once -- an active login and its own saved record are one account -- and it cannot
400
+ be combined with an account reference. The accounts run strictly one after
401
+ another, never in parallel, each with one request and no retry, and each one is
402
+ reported as it goes. The run ends with a table and a counts line:
403
+
404
+ ```
405
+ [1/3] Preusing alice@example.com (Codex)…
406
+ Prompt completed with gpt-5.5. Tokens: 19 input, 2711 output, 2730 total.
407
+ [2/3] Preusing bob@example.com (Codex)…
408
+ Prompt completed with gpt-5.5. Tokens: 19 input, 2711 output, 2730 total.
409
+ [3/3] Preusing apikey:9f2 (Codex)…
410
+ Codex preuse requires a ChatGPT subscription login; API-key logins have no subscription reset window.
411
+
412
+ Preuse results
413
+ ┌────────────────────┬───────────┬─────────┬─────────────────────┬──────────────┐
414
+ │ Account │ Outcome │ Model │ Tokens in/out/total │ Next reset │
415
+ ├────────────────────┼───────────┼─────────┼─────────────────────┼──────────────┤
416
+ │ alice@example.com │ Completed │ gpt-5.5 │ 19/2711/2730 │ 5d 18h 53min │
417
+ │ bob@example.com │ Completed │ gpt-5.5 │ 19/2711/2730 │ 5d 18h 53min │
418
+ │ apikey:9f2 │ Skipped │ - │ - │ - │
419
+ └────────────────────┴───────────┴─────────┴─────────────────────┴──────────────┘
420
+ 2 completed, 1 skipped.
421
+ ```
422
+
423
+ `Next reset` is the lead window of the reset schedule read after that account's
424
+ prompt, the same window the single-account reset table lists first. An account
425
+ that sent no prompt has no model, token count or deadline of its own, and says so
426
+ rather than showing a zero. `Skipped` is a refusal the adapter stated before any
427
+ request -- an API-key login, a missing or expired credential, a model catalog
428
+ that could not be read -- so nothing was consumed for it. `Failed` and
429
+ `Interrupted` may both have consumed tokens and are never retried; `Not run` is
430
+ an account the interruption never reached.
431
+
432
+ The guide (`authswitch`, `authswitch -i`) offers **Preuse an account or all
433
+ accounts (consumes quota)** for a harness that supports it. It asks which account
434
+ or **All accounts**, confirms once and names what the prompt will be sent to, then
435
+ reports exactly as the command line does: one account's reset schedule, or the
436
+ results table for all of them. **Back** or a declined confirmation sends nothing,
437
+ and an account the adapter refuses returns to the menu rather than ending the guide.
390
438
 
391
439
  Codex inference uses the published FlexHarness models/providers packages and the
392
440
  selected ChatGPT login's access token and account ID. It selects the account's
@@ -395,21 +443,25 @@ low reasoning setting when the catalog provides one. API-key logins are rejected
395
443
  because they do not have ChatGPT subscription reset windows. Expired credentials
396
444
  must be renewed through Codex and saved again.
397
445
 
398
- Each invocation consumes quota and sends at most one inference request. It does
399
- not watch for resets or schedule future requests. No active login is switched,
446
+ Each invocation consumes quota and sends one inference request per account. It
447
+ does not watch for resets or schedule future requests. No active login is switched,
400
448
  credential refreshed or written, app-server restarted, or earned reset consumed.
401
449
  The prompt has no tools, files or conversation history. The generated prose is
402
450
  drained without being printed or stored; the command reports provider token
403
451
  counts and then reads the account's reset schedule. It does not infer that a
404
452
  timer started merely from a zero-percent usage reading or a successful response.
405
453
 
406
- Ctrl-C cancels the request. Codex preuse has a three-minute deadline, with a
407
- ten-second model-catalog limit. Failed or interrupted requests can have consumed
408
- tokens and are never retried automatically. A completed prompt exits with 0 even
409
- if the subsequent reset lookup fails, reporting that uncertainty separately;
410
- inference failure exits with 1, invalid arguments or unsupported harnesses with
411
- 2, and an interrupted prompt with 130. Check `authswitch list` before repeating
412
- an uncertain request. `--json` remains a list-only option.
454
+ Ctrl-C cancels the request, and in a `--all` run it stops the run before the next
455
+ account starts. Codex preuse has a three-minute deadline, with a ten-second
456
+ model-catalog limit. Failed or interrupted requests can have consumed tokens and
457
+ are never retried automatically. A completed prompt exits with 0 even if the
458
+ subsequent reset lookup fails, reporting that uncertainty separately; inference
459
+ failure exits with 1, invalid arguments or unsupported harnesses with 2, and an
460
+ interrupted prompt with 130. A named single account also exits 1 when it was
461
+ refused, because it is the account the command was asked to preuse; `--all` exits
462
+ 0 when every account either completed or was skipped for a stated reason. Check
463
+ `authswitch list` before repeating an uncertain request. `--json` remains a
464
+ list-only option.
413
465
 
414
466
  ### Watching usage and switching automatically
415
467
 
@@ -492,10 +544,18 @@ incrementally through each account's status API, without activating it.
492
544
  | `/`, `s`, `S` | Filter the table, cycle its sort column, reverse sorting |
493
545
  | `a` / `c` | Save the current login and keep it active / save and clear it |
494
546
  | `d` | Remove the selected saved copy, preserving the active login |
547
+ | `p` / `P` | Preuse the selected account / every account of this harness (consumes quota) |
495
548
  | `r` / `g` | Refresh status / run harness diagnostics |
496
549
  | `q` / Ctrl-C | Close and restore the terminal |
497
550
 
498
- Save, switch and removal actions require confirmation. Confirmations start on
551
+ The preuse keys appear in the key line only for a harness that supports preuse,
552
+ and each run states how many accounts it will consume quota on before it starts.
553
+ The footer follows the run account by account, the activity log keeps each
554
+ account's result, and the table is read again afterwards because the prompts
555
+ moved the usage it shows. Closing the dashboard stops the run before its next
556
+ account.
557
+
558
+ Save, switch, preuse and removal actions require confirmation. Confirmations start on
499
559
  Cancel; use Left/Right or Tab to select the action, then Enter. Switching first
500
560
  checks the current credential and offers to save an unsaved login. A declined,
501
561
  failed or unverified save prevents switching. Plain character shortcuts remain
@@ -993,7 +1053,15 @@ model identifier and cancellation signal; `IHarnessPreuseResult` returns the
993
1053
  selected model and optional input/output/total token counts. The adapter owns
994
1054
  credential selection and inference and must leave the active login unchanged.
995
1055
  Unsupported adapters reject the command before account selection. Prompt results
996
- never contain credentials or raw provider responses.
1056
+ never contain credentials or raw provider responses. A refusal that sent no
1057
+ request must be a `PreuseError` with `requestStarted` false, which is what a run
1058
+ over several accounts reports as skipped rather than failed; every other error,
1059
+ `PreuseError` or not, is treated as a request that may have consumed tokens.
1060
+ `preuseAccounts(harness, accounts, options, report)` is that run: it sends one
1061
+ prompt per account in turn, reports a `started` and a `finished` event for each,
1062
+ reads the account's reset schedule after a completed prompt, stops before the
1063
+ next account once the signal aborts, and returns the per-account results with
1064
+ their counts.
997
1065
 
998
1066
  Adapters can also return an optional `IHarnessAccountStatus.summary` with a
999
1067
  subscription plan and its live/stored provenance, labelled usage windows with
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@modelprofile.com/authswitch',
6
- version: '6.2.0',
6
+ version: '6.3.0',
7
7
  description: 'Manage Codex, OpenCode and Claude Code accounts with guided switching and live usage status'
8
8
  }