@modelprofile.com/authswitch 2.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.smartconfig.json +34 -0
- package/cli.js +21 -0
- package/dist_ts/00_commitinfo_data.d.ts +8 -0
- package/dist_ts/00_commitinfo_data.js +9 -0
- package/dist_ts/accounts.d.ts +31 -0
- package/dist_ts/accounts.js +74 -0
- package/dist_ts/classes.accountlist.d.ts +17 -0
- package/dist_ts/classes.accountlist.js +214 -0
- package/dist_ts/classes.claudecodeharness.d.ts +34 -0
- package/dist_ts/classes.claudecodeharness.js +123 -0
- package/dist_ts/classes.claudestatus.d.ts +8 -0
- package/dist_ts/classes.claudestatus.js +139 -0
- package/dist_ts/classes.cli.d.ts +31 -0
- package/dist_ts/classes.cli.js +584 -0
- package/dist_ts/classes.codexauth.d.ts +35 -0
- package/dist_ts/classes.codexauth.js +184 -0
- package/dist_ts/classes.codexdaemon.d.ts +38 -0
- package/dist_ts/classes.codexdaemon.js +122 -0
- package/dist_ts/classes.codexharness.d.ts +35 -0
- package/dist_ts/classes.codexharness.js +199 -0
- package/dist_ts/classes.codexhome.d.ts +25 -0
- package/dist_ts/classes.codexhome.js +60 -0
- package/dist_ts/classes.codexpreuse.d.ts +8 -0
- package/dist_ts/classes.codexpreuse.js +90 -0
- package/dist_ts/classes.codexstatus.d.ts +20 -0
- package/dist_ts/classes.codexstatus.js +304 -0
- package/dist_ts/classes.codexswitcher.d.ts +61 -0
- package/dist_ts/classes.codexswitcher.js +226 -0
- package/dist_ts/classes.credentialstore.d.ts +32 -0
- package/dist_ts/classes.credentialstore.js +115 -0
- package/dist_ts/classes.fileharness.d.ts +47 -0
- package/dist_ts/classes.fileharness.js +119 -0
- package/dist_ts/classes.login.d.ts +42 -0
- package/dist_ts/classes.login.js +102 -0
- package/dist_ts/classes.opencodeharness.d.ts +34 -0
- package/dist_ts/classes.opencodeharness.js +125 -0
- package/dist_ts/classes.operations.d.ts +44 -0
- package/dist_ts/classes.operations.js +97 -0
- package/dist_ts/classes.remotecontrol.d.ts +46 -0
- package/dist_ts/classes.remotecontrol.js +169 -0
- package/dist_ts/classes.service.d.ts +47 -0
- package/dist_ts/classes.service.js +142 -0
- package/dist_ts/classes.stashstore.d.ts +63 -0
- package/dist_ts/classes.stashstore.js +192 -0
- package/dist_ts/classes.tui.d.ts +11 -0
- package/dist_ts/classes.tui.js +195 -0
- package/dist_ts/formatting.d.ts +8 -0
- package/dist_ts/formatting.js +13 -0
- package/dist_ts/helpers.d.ts +39 -0
- package/dist_ts/helpers.js +92 -0
- package/dist_ts/index.d.ts +22 -0
- package/dist_ts/index.js +27 -0
- package/dist_ts/interfaces.d.ts +145 -0
- package/dist_ts/interfaces.harness.d.ts +130 -0
- package/dist_ts/interfaces.harness.js +2 -0
- package/dist_ts/interfaces.js +2 -0
- package/dist_ts/interfaces.list.d.ts +19 -0
- package/dist_ts/interfaces.list.js +2 -0
- package/dist_ts/plugins.d.ts +14 -0
- package/dist_ts/plugins.js +18 -0
- package/dist_ts/preuse.d.ts +6 -0
- package/dist_ts/preuse.js +13 -0
- package/license.md +21 -0
- package/package.json +53 -0
- package/readme.md +502 -0
- package/ts/00_commitinfo_data.ts +8 -0
- package/ts/accounts.ts +78 -0
- package/ts/classes.accountlist.ts +211 -0
- package/ts/classes.claudecodeharness.ts +111 -0
- package/ts/classes.claudestatus.ts +99 -0
- package/ts/classes.cli.ts +479 -0
- package/ts/classes.codexauth.ts +199 -0
- package/ts/classes.codexdaemon.ts +137 -0
- package/ts/classes.codexharness.ts +233 -0
- package/ts/classes.codexhome.ts +68 -0
- package/ts/classes.codexpreuse.ts +76 -0
- package/ts/classes.codexstatus.ts +257 -0
- package/ts/classes.codexswitcher.ts +272 -0
- package/ts/classes.credentialstore.ts +101 -0
- package/ts/classes.fileharness.ts +120 -0
- package/ts/classes.login.ts +103 -0
- package/ts/classes.opencodeharness.ts +114 -0
- package/ts/classes.operations.ts +101 -0
- package/ts/classes.remotecontrol.ts +208 -0
- package/ts/classes.service.ts +152 -0
- package/ts/classes.stashstore.ts +223 -0
- package/ts/classes.tui.ts +138 -0
- package/ts/formatting.ts +14 -0
- package/ts/helpers.ts +109 -0
- package/ts/index.ts +28 -0
- package/ts/interfaces.harness.ts +112 -0
- package/ts/interfaces.list.ts +19 -0
- package/ts/interfaces.ts +158 -0
- package/ts/plugins.ts +20 -0
- package/ts/preuse.ts +15 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import type { TAuthLoginPrompt, TAuthLoginFlow } from './classes.login.js';
|
|
2
|
+
export interface IHarnessLoginProvider {
|
|
3
|
+
providerId: string;
|
|
4
|
+
label: string;
|
|
5
|
+
flows: TAuthLoginFlow[];
|
|
6
|
+
}
|
|
7
|
+
export interface IHarnessLoginOptions {
|
|
8
|
+
providerId: string;
|
|
9
|
+
flow: TAuthLoginFlow;
|
|
10
|
+
}
|
|
11
|
+
export interface IHarnessLoginResult {
|
|
12
|
+
outcome: IHarnessOutcome;
|
|
13
|
+
account?: Pick<IHarnessAccount, 'id' | 'label' | 'slotId'>;
|
|
14
|
+
}
|
|
15
|
+
export interface IHarnessLoginHandle {
|
|
16
|
+
readonly prompt: TAuthLoginPrompt;
|
|
17
|
+
/** Completion saves the new account without activating it. No credentials cross this interface. */
|
|
18
|
+
readonly completion: Promise<IHarnessLoginResult>;
|
|
19
|
+
cancel(): Promise<void>;
|
|
20
|
+
close(): Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
/** Account IDs are opaque and scoped to one harness. Credentials never cross this interface. */
|
|
23
|
+
export interface IHarnessAccount {
|
|
24
|
+
id: string;
|
|
25
|
+
label: string;
|
|
26
|
+
/** Accounts in different slots can be active together (for example OpenCode providers). */
|
|
27
|
+
slotId?: string;
|
|
28
|
+
isActive: boolean;
|
|
29
|
+
isStashed: boolean;
|
|
30
|
+
savedAt: string | null;
|
|
31
|
+
details: string[];
|
|
32
|
+
}
|
|
33
|
+
export interface IHarnessState {
|
|
34
|
+
accounts: IHarnessAccount[];
|
|
35
|
+
/** Explains why an active login cannot be saved, when applicable. */
|
|
36
|
+
saveUnavailableReason: string | null;
|
|
37
|
+
}
|
|
38
|
+
export interface IHarnessAccountStatus {
|
|
39
|
+
/** Provider-reported facts, already labelled with their units and provenance. */
|
|
40
|
+
facts: IHarnessStatusFact[];
|
|
41
|
+
/** Missing/failed information is explicit and never represented as zero usage. */
|
|
42
|
+
problems: string[];
|
|
43
|
+
/** Optional structured data for shared presentation; never parse the display facts. */
|
|
44
|
+
summary?: IHarnessStatusSummary;
|
|
45
|
+
}
|
|
46
|
+
export interface IHarnessStatusFact {
|
|
47
|
+
label: string;
|
|
48
|
+
value: string;
|
|
49
|
+
/** Optional display group; ungrouped adapters use Additional information. */
|
|
50
|
+
section?: string;
|
|
51
|
+
/** The fact duplicates this structured field; omit it only when that field is displayed. */
|
|
52
|
+
summaryKey?: 'subscription' | 'billing' | 'usageWindows' | 'resets' | 'resetDetails';
|
|
53
|
+
}
|
|
54
|
+
export interface IHarnessStatusSummary {
|
|
55
|
+
/** A plan name does not imply an active billing status. */
|
|
56
|
+
subscription?: {
|
|
57
|
+
plan: string;
|
|
58
|
+
source: 'live' | 'stored';
|
|
59
|
+
};
|
|
60
|
+
/** Live billing information only. Never infer these fields from a plan or entitlement expiry. */
|
|
61
|
+
billing?: {
|
|
62
|
+
hasActiveSubscription?: boolean;
|
|
63
|
+
autoRenew?: boolean;
|
|
64
|
+
renewsAt?: string;
|
|
65
|
+
cancelsAt?: string;
|
|
66
|
+
expiresAt?: string;
|
|
67
|
+
};
|
|
68
|
+
/** Missing windows are unknown, not unused. Times are ISO 8601 UTC. */
|
|
69
|
+
usageWindows?: {
|
|
70
|
+
label: string;
|
|
71
|
+
/** Feature-specific quotas do not determine the general account summary. Omission means account. */
|
|
72
|
+
scope?: 'account' | 'feature';
|
|
73
|
+
durationSeconds: number;
|
|
74
|
+
usedPercent: number;
|
|
75
|
+
resetAt: string | null;
|
|
76
|
+
}[];
|
|
77
|
+
resets?: {
|
|
78
|
+
available: number;
|
|
79
|
+
/** May be a partial list. Omission means the detail lookup was unavailable. */
|
|
80
|
+
details?: {
|
|
81
|
+
status: string;
|
|
82
|
+
kind: string;
|
|
83
|
+
expiresAt: string | null;
|
|
84
|
+
}[];
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
export interface IHarnessOutcome {
|
|
88
|
+
lines: string[];
|
|
89
|
+
problems: string[];
|
|
90
|
+
}
|
|
91
|
+
/** A single text-only inference request. Credentials remain inside the adapter. */
|
|
92
|
+
export interface IHarnessPreuseOptions {
|
|
93
|
+
prompt: string;
|
|
94
|
+
model?: string;
|
|
95
|
+
signal?: AbortSignal;
|
|
96
|
+
}
|
|
97
|
+
export interface IHarnessPreuseResult {
|
|
98
|
+
model: string;
|
|
99
|
+
inputTokens?: number;
|
|
100
|
+
outputTokens?: number;
|
|
101
|
+
totalTokens?: number;
|
|
102
|
+
}
|
|
103
|
+
export type THarnessResult<T> = T | Promise<T>;
|
|
104
|
+
/** Each adapter owns its credential storage, account matching, status API and process lifecycle. */
|
|
105
|
+
export interface IAuthHarness {
|
|
106
|
+
readonly id: string;
|
|
107
|
+
readonly label: string;
|
|
108
|
+
readonly loginHint: string;
|
|
109
|
+
readonly diagnosticsLabel: string;
|
|
110
|
+
readState(): THarnessResult<IHarnessState>;
|
|
111
|
+
readAccountStatus(accountIdArg: string): Promise<IHarnessAccountStatus>;
|
|
112
|
+
readonly loginProviders?: IHarnessLoginProvider[];
|
|
113
|
+
beginLogin?(options: IHarnessLoginOptions): Promise<IHarnessLoginHandle>;
|
|
114
|
+
/** Optional quota-consuming capability; never changes the active login. */
|
|
115
|
+
preuseAccount?(accountIdArg: string, optionsArg: IHarnessPreuseOptions): Promise<IHarnessPreuseResult>;
|
|
116
|
+
resolveAccount(referenceArg: string): THarnessResult<{
|
|
117
|
+
id: string;
|
|
118
|
+
} | {
|
|
119
|
+
candidates: string[];
|
|
120
|
+
}>;
|
|
121
|
+
saveCurrent(optionsArg: {
|
|
122
|
+
keepActive: boolean;
|
|
123
|
+
accountId?: string;
|
|
124
|
+
}): THarnessResult<IHarnessOutcome>;
|
|
125
|
+
/** Preserve and verify the outgoing credential even when invoked without the interactive guide. */
|
|
126
|
+
switchAccount(accountIdArg: string): THarnessResult<IHarnessOutcome>;
|
|
127
|
+
/** Remove the saved copy only, preserving the active login. */
|
|
128
|
+
removeAccount(accountIdArg: string): THarnessResult<IHarnessOutcome>;
|
|
129
|
+
diagnose(): THarnessResult<IHarnessOutcome>;
|
|
130
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { IHarnessAccount, IHarnessAccountStatus } from './interfaces.harness.js';
|
|
2
|
+
/** Credential-free, versioned output of list --json. Missing status fields stay omitted. */
|
|
3
|
+
export interface IAccountList {
|
|
4
|
+
schemaVersion: 2;
|
|
5
|
+
generatedAt: string;
|
|
6
|
+
complete: boolean;
|
|
7
|
+
harnesses: IHarnessAccountList[];
|
|
8
|
+
}
|
|
9
|
+
export interface IHarnessAccountList {
|
|
10
|
+
id: string;
|
|
11
|
+
label: string;
|
|
12
|
+
loginHint: string;
|
|
13
|
+
saveUnavailableReason: string | null;
|
|
14
|
+
accounts: (IHarnessAccount & {
|
|
15
|
+
status: IHarnessAccountStatus;
|
|
16
|
+
})[];
|
|
17
|
+
/** A state lookup failure is distinct from an empty account list. */
|
|
18
|
+
problems: string[];
|
|
19
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import * as os from 'node:os';
|
|
3
|
+
import * as path from 'node:path';
|
|
4
|
+
import * as childProcess from 'node:child_process';
|
|
5
|
+
import * as crypto from 'node:crypto';
|
|
6
|
+
import { DatabaseSync } from 'node:sqlite';
|
|
7
|
+
export { childProcess, crypto, fs, os, path, DatabaseSync };
|
|
8
|
+
import * as smartconsole from '@push.rocks/smartconsole';
|
|
9
|
+
export { smartconsole };
|
|
10
|
+
import * as flexModels from '@modelprofile.com/flexharness-models';
|
|
11
|
+
import * as flexOpenAi from '@modelprofile.com/flexharness-providers/openai';
|
|
12
|
+
import * as flexAuth from '@modelprofile.com/flexharness-providers/auth';
|
|
13
|
+
import * as flexAccounts from '@modelprofile.com/flexharness-providers/accounts';
|
|
14
|
+
export { flexModels, flexOpenAi, flexAuth, flexAccounts };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Node native modules
|
|
2
|
+
import * as fs from 'node:fs';
|
|
3
|
+
import * as os from 'node:os';
|
|
4
|
+
import * as path from 'node:path';
|
|
5
|
+
import * as childProcess from 'node:child_process';
|
|
6
|
+
import * as crypto from 'node:crypto';
|
|
7
|
+
import { DatabaseSync } from 'node:sqlite';
|
|
8
|
+
export { childProcess, crypto, fs, os, path, DatabaseSync };
|
|
9
|
+
// @push.rocks modules
|
|
10
|
+
import * as smartconsole from '@push.rocks/smartconsole';
|
|
11
|
+
export { smartconsole };
|
|
12
|
+
// @modelprofile.com modules
|
|
13
|
+
import * as flexModels from '@modelprofile.com/flexharness-models';
|
|
14
|
+
import * as flexOpenAi from '@modelprofile.com/flexharness-providers/openai';
|
|
15
|
+
import * as flexAuth from '@modelprofile.com/flexharness-providers/auth';
|
|
16
|
+
import * as flexAccounts from '@modelprofile.com/flexharness-providers/accounts';
|
|
17
|
+
export { flexModels, flexOpenAi, flexAuth, flexAccounts };
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0JBQXNCO0FBQ3RCLE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxZQUFZLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxLQUFLLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQztBQUU1RCxzQkFBc0I7QUFDdEIsT0FBTyxLQUFLLFlBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLENBQUM7QUFFeEIsNEJBQTRCO0FBQzVCLE9BQU8sS0FBSyxVQUFVLE1BQU0sc0NBQXNDLENBQUM7QUFDbkUsT0FBTyxLQUFLLFVBQVUsTUFBTSxnREFBZ0QsQ0FBQztBQUM3RSxPQUFPLEtBQUssUUFBUSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3pFLE9BQU8sS0FBSyxZQUFZLE1BQU0sa0RBQWtELENBQUM7QUFDakYsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFDIn0=
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { IHarnessPreuseOptions } from './interfaces.harness.js';
|
|
2
|
+
export declare const defaultPreusePrompt = "Write 2000 words about strawberries.";
|
|
3
|
+
/** Only fixed local messages may cross the inference error boundary. */
|
|
4
|
+
export declare class PreuseError extends Error {
|
|
5
|
+
}
|
|
6
|
+
export declare const validatePreuseOptions: (optionsArg: IHarnessPreuseOptions) => void;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const defaultPreusePrompt = 'Write 2000 words about strawberries.';
|
|
2
|
+
/** Only fixed local messages may cross the inference error boundary. */
|
|
3
|
+
export class PreuseError extends Error {
|
|
4
|
+
}
|
|
5
|
+
export const validatePreuseOptions = (optionsArg) => {
|
|
6
|
+
if (typeof optionsArg.prompt !== 'string' || !optionsArg.prompt.trim() || Buffer.byteLength(optionsArg.prompt, 'utf8') > 16_384) {
|
|
7
|
+
throw new PreuseError('The preuse prompt must contain between 1 and 16384 UTF-8 bytes.');
|
|
8
|
+
}
|
|
9
|
+
if (optionsArg.model !== undefined && (typeof optionsArg.model !== 'string' || !/^[a-zA-Z0-9][a-zA-Z0-9._:/-]{0,127}$/.test(optionsArg.model))) {
|
|
10
|
+
throw new PreuseError('The preuse model must be a valid model identifier of at most 128 characters.');
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvcHJldXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLHNDQUFzQyxDQUFDO0FBRTFFLHdFQUF3RTtBQUN4RSxNQUFNLE9BQU8sV0FBWSxTQUFRLEtBQUs7Q0FBRztBQUV6QyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFVBQWlDLEVBQVEsRUFBRTtJQUMvRSxJQUFJLE9BQU8sVUFBVSxDQUFDLE1BQU0sS0FBSyxRQUFRLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUNoSSxNQUFNLElBQUksV0FBVyxDQUFDLGlFQUFpRSxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUNELElBQUksVUFBVSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksQ0FBQyxPQUFPLFVBQVUsQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsc0NBQXNDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDL0ksTUFBTSxJQUFJLFdBQVcsQ0FBQyw4RUFBOEUsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7QUFDSCxDQUFDLENBQUMifQ==
|
package/license.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Task Venture Capital GmbH
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@modelprofile.com/authswitch",
|
|
3
|
+
"version": "2.1.2",
|
|
4
|
+
"private": false,
|
|
5
|
+
"description": "Manage Codex, OpenCode and Claude Code accounts with guided switching and live usage status",
|
|
6
|
+
"main": "dist_ts/index.js",
|
|
7
|
+
"typings": "dist_ts/index.d.ts",
|
|
8
|
+
"type": "module",
|
|
9
|
+
"author": "Task Venture Capital GmbH",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "git+https://code.foss.global/modelprofile.com/authswitch.git"
|
|
14
|
+
},
|
|
15
|
+
"homepage": "https://code.foss.global/modelprofile.com/authswitch",
|
|
16
|
+
"bugs": {
|
|
17
|
+
"url": "https://community.foss.global/"
|
|
18
|
+
},
|
|
19
|
+
"engines": {
|
|
20
|
+
"node": ">=24"
|
|
21
|
+
},
|
|
22
|
+
"bin": {
|
|
23
|
+
"authswitch": "./cli.js"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"@git.zone/tsbuild": "^4.4.3",
|
|
27
|
+
"@git.zone/tsrun": "^2.0.6",
|
|
28
|
+
"@git.zone/tstest": "^6.0.0",
|
|
29
|
+
"@types/node": "^26.4.1"
|
|
30
|
+
},
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"@modelprofile.com/flexharness-models": "^7.0.1",
|
|
33
|
+
"@modelprofile.com/flexharness-providers": "^7.0.1",
|
|
34
|
+
"@push.rocks/smartconsole": "^1.1.0"
|
|
35
|
+
},
|
|
36
|
+
"files": [
|
|
37
|
+
"ts/**/*",
|
|
38
|
+
"dist_ts/**/*",
|
|
39
|
+
"cli.js",
|
|
40
|
+
".smartconfig.json",
|
|
41
|
+
"readme.md"
|
|
42
|
+
],
|
|
43
|
+
"browserslist": [
|
|
44
|
+
"last 1 chrome versions"
|
|
45
|
+
],
|
|
46
|
+
"publishConfig": {
|
|
47
|
+
"access": "public"
|
|
48
|
+
},
|
|
49
|
+
"scripts": {
|
|
50
|
+
"test": "(tstest test/ --verbose)",
|
|
51
|
+
"build": "(tsbuild)"
|
|
52
|
+
}
|
|
53
|
+
}
|