looply-cli 0.5.9 → 0.5.11
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/.src-hash +1 -1
- package/dist/account-failover.d.ts +30 -0
- package/dist/account-failover.d.ts.map +1 -0
- package/dist/account-failover.js +32 -0
- package/dist/account-failover.js.map +1 -0
- package/dist/autonomy-controller.d.ts +23 -1
- package/dist/autonomy-controller.d.ts.map +1 -1
- package/dist/autonomy-controller.js +50 -9
- package/dist/autonomy-controller.js.map +1 -1
- package/dist/autonomy-store.d.ts +33 -1
- package/dist/autonomy-store.d.ts.map +1 -1
- package/dist/autonomy-store.js +58 -8
- package/dist/autonomy-store.js.map +1 -1
- package/dist/autonomy-tick.d.ts +23 -1
- package/dist/autonomy-tick.d.ts.map +1 -1
- package/dist/autonomy-tick.js +80 -14
- package/dist/autonomy-tick.js.map +1 -1
- package/dist/bin.d.ts.map +1 -1
- package/dist/bin.js +25 -5
- package/dist/bin.js.map +1 -1
- package/dist/branch-delivery-wiring.d.ts.map +1 -1
- package/dist/branch-delivery-wiring.js +6 -1
- package/dist/branch-delivery-wiring.js.map +1 -1
- package/dist/branch-delivery.d.ts +135 -6
- package/dist/branch-delivery.d.ts.map +1 -1
- package/dist/branch-delivery.js +540 -80
- package/dist/branch-delivery.js.map +1 -1
- package/dist/branch-replay.d.ts +45 -0
- package/dist/branch-replay.d.ts.map +1 -0
- package/dist/branch-replay.js +123 -0
- package/dist/branch-replay.js.map +1 -0
- package/dist/commit-ownership.d.ts +102 -0
- package/dist/commit-ownership.d.ts.map +1 -0
- package/dist/commit-ownership.js +97 -0
- package/dist/commit-ownership.js.map +1 -0
- package/dist/coordinator-state.d.ts.map +1 -1
- package/dist/coordinator-state.js +21 -1
- package/dist/coordinator-state.js.map +1 -1
- package/dist/daemon-cmd.d.ts.map +1 -1
- package/dist/daemon-cmd.js +53 -4
- package/dist/daemon-cmd.js.map +1 -1
- package/dist/daemon.d.ts +10 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +31 -5
- package/dist/daemon.js.map +1 -1
- package/dist/deliver-cmd.d.ts +18 -0
- package/dist/deliver-cmd.d.ts.map +1 -1
- package/dist/deliver-cmd.js +71 -5
- package/dist/deliver-cmd.js.map +1 -1
- package/dist/delivery-settings-cache.d.ts +15 -1
- package/dist/delivery-settings-cache.d.ts.map +1 -1
- package/dist/delivery-settings-cache.js +31 -3
- package/dist/delivery-settings-cache.js.map +1 -1
- package/dist/environment-hold.d.ts +69 -0
- package/dist/environment-hold.d.ts.map +1 -0
- package/dist/environment-hold.js +120 -0
- package/dist/environment-hold.js.map +1 -0
- package/dist/gate.d.ts.map +1 -1
- package/dist/gate.js +15 -1
- package/dist/gate.js.map +1 -1
- package/dist/github-api.d.ts +19 -0
- package/dist/github-api.d.ts.map +1 -1
- package/dist/github-api.js +26 -0
- package/dist/github-api.js.map +1 -1
- package/dist/goal-adaptive.d.ts +1 -0
- package/dist/goal-adaptive.d.ts.map +1 -1
- package/dist/goal-adaptive.js +26 -13
- package/dist/goal-adaptive.js.map +1 -1
- package/dist/goal-compile.d.ts +37 -0
- package/dist/goal-compile.d.ts.map +1 -1
- package/dist/goal-compile.js +25 -1
- package/dist/goal-compile.js.map +1 -1
- package/dist/goal-replay.d.ts +83 -0
- package/dist/goal-replay.d.ts.map +1 -0
- package/dist/goal-replay.js +121 -0
- package/dist/goal-replay.js.map +1 -0
- package/dist/goal-reproof.d.ts +5 -0
- package/dist/goal-reproof.d.ts.map +1 -1
- package/dist/goal-reproof.js +11 -4
- package/dist/goal-reproof.js.map +1 -1
- package/dist/grant-pause.d.ts +48 -0
- package/dist/grant-pause.d.ts.map +1 -0
- package/dist/grant-pause.js +103 -0
- package/dist/grant-pause.js.map +1 -0
- package/dist/grant-reconcile.d.ts +8 -2
- package/dist/grant-reconcile.d.ts.map +1 -1
- package/dist/grant-reconcile.js +9 -2
- package/dist/grant-reconcile.js.map +1 -1
- package/dist/grant-waiting-wiring.d.ts +49 -0
- package/dist/grant-waiting-wiring.d.ts.map +1 -0
- package/dist/grant-waiting-wiring.js +77 -0
- package/dist/grant-waiting-wiring.js.map +1 -0
- package/dist/model-transport.d.ts +13 -0
- package/dist/model-transport.d.ts.map +1 -1
- package/dist/model-transport.js +70 -9
- package/dist/model-transport.js.map +1 -1
- package/dist/planner-timeouts.d.ts +14 -0
- package/dist/planner-timeouts.d.ts.map +1 -0
- package/dist/planner-timeouts.js +51 -0
- package/dist/planner-timeouts.js.map +1 -0
- package/dist/provider-accounts-cmd.d.ts +58 -0
- package/dist/provider-accounts-cmd.d.ts.map +1 -0
- package/dist/provider-accounts-cmd.js +247 -0
- package/dist/provider-accounts-cmd.js.map +1 -0
- package/dist/provider-accounts.d.ts +157 -0
- package/dist/provider-accounts.d.ts.map +1 -0
- package/dist/provider-accounts.js +423 -0
- package/dist/provider-accounts.js.map +1 -0
- package/dist/provider-cmd.d.ts +3 -0
- package/dist/provider-cmd.d.ts.map +1 -1
- package/dist/provider-cmd.js +25 -0
- package/dist/provider-cmd.js.map +1 -1
- package/dist/provider-limit.d.ts +6 -0
- package/dist/provider-limit.d.ts.map +1 -1
- package/dist/provider-limit.js +12 -0
- package/dist/provider-limit.js.map +1 -1
- package/dist/provider-state.d.ts +3 -0
- package/dist/provider-state.d.ts.map +1 -1
- package/dist/provider-state.js +4 -1
- package/dist/provider-state.js.map +1 -1
- package/dist/run-cmd.d.ts +12 -1
- package/dist/run-cmd.d.ts.map +1 -1
- package/dist/run-cmd.js +187 -15
- package/dist/run-cmd.js.map +1 -1
- package/dist/run-refusal-marks.d.ts +7 -1
- package/dist/run-refusal-marks.d.ts.map +1 -1
- package/dist/run-refusal-marks.js +4 -0
- package/dist/run-refusal-marks.js.map +1 -1
- package/dist/server-client.d.ts +33 -2
- package/dist/server-client.d.ts.map +1 -1
- package/dist/server-client.js +33 -1
- package/dist/server-client.js.map +1 -1
- package/dist/spend-ledger.d.ts +7 -0
- package/dist/spend-ledger.d.ts.map +1 -1
- package/dist/spend-ledger.js +1 -0
- package/dist/spend-ledger.js.map +1 -1
- package/dist/start-attempts.d.ts +4 -2
- package/dist/start-attempts.d.ts.map +1 -1
- package/dist/start-attempts.js +6 -1
- package/dist/start-attempts.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ACCOUNT_READINESS_TTL_MS = exports.ACCOUNTS_USAGE = void 0;
|
|
4
|
+
exports.parseAccountFlags = parseAccountFlags;
|
|
5
|
+
exports.isAccountsCommand = isAccountsCommand;
|
|
6
|
+
exports.checkAccount = checkAccount;
|
|
7
|
+
exports.accountsCommand = accountsCommand;
|
|
8
|
+
exports.nodeAccountsDeps = nodeAccountsDeps;
|
|
9
|
+
exports.refreshAccountReadiness = refreshAccountReadiness;
|
|
10
|
+
const node_os_1 = require("node:os");
|
|
11
|
+
const core_1 = require("@looply/core");
|
|
12
|
+
const provider_accounts_1 = require("./provider-accounts");
|
|
13
|
+
/**
|
|
14
|
+
* `looply provider login --name <n>`, `looply provider accounts`, `looply provider remove --name <n>`.
|
|
15
|
+
*
|
|
16
|
+
* Several AI accounts on one machine, each in its own profile directory. The
|
|
17
|
+
* login is the provider's own flow, run in the person's terminal; Looply keeps
|
|
18
|
+
* the directory's path and reads back only "logged in", the auth method and
|
|
19
|
+
* the plan name.
|
|
20
|
+
*
|
|
21
|
+
* ⚠️ A PERSONAL CLAUDE PRO OR MAX SUBSCRIPTION IS FOR ITS OWNER'S OWN USE. Only
|
|
22
|
+
* an API-key or a Team/Enterprise account may be shared with a workspace; the
|
|
23
|
+
* machine refuses the rest (see core `policyProblemFor`).
|
|
24
|
+
*/
|
|
25
|
+
exports.ACCOUNTS_USAGE = [
|
|
26
|
+
'looply provider login --name <name> [--provider claude|codex] [--label "<text>"]',
|
|
27
|
+
' sign in a named AI account, in its own profile on this machine',
|
|
28
|
+
'looply provider accounts every AI account on this machine: ready, resting, usage, settings',
|
|
29
|
+
'looply provider remove --name <name> forget a named account (its profile folder is left in place)',
|
|
30
|
+
].join('\n');
|
|
31
|
+
function parseAccountFlags(args) {
|
|
32
|
+
const f = {};
|
|
33
|
+
for (let i = 0; i < args.length; i++) {
|
|
34
|
+
const a = args[i];
|
|
35
|
+
const take = () => {
|
|
36
|
+
const eq = a.indexOf('=');
|
|
37
|
+
if (eq !== -1)
|
|
38
|
+
return a.slice(eq + 1);
|
|
39
|
+
i += 1;
|
|
40
|
+
return args[i];
|
|
41
|
+
};
|
|
42
|
+
if (a === '--name' || a.startsWith('--name='))
|
|
43
|
+
f.name = take();
|
|
44
|
+
else if (a === '--provider' || a.startsWith('--provider='))
|
|
45
|
+
f.provider = take();
|
|
46
|
+
else if (a === '--label' || a.startsWith('--label='))
|
|
47
|
+
f.label = take();
|
|
48
|
+
else {
|
|
49
|
+
f.bad = a;
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return f;
|
|
54
|
+
}
|
|
55
|
+
/** Whether `looply provider <verb> <args>` is an accounts command (and not the original single-profile one). */
|
|
56
|
+
function isAccountsCommand(verb, args) {
|
|
57
|
+
if (verb === 'accounts' || verb === 'remove')
|
|
58
|
+
return true;
|
|
59
|
+
return verb === 'login' && args.some((a) => a === '--name' || a.startsWith('--name=') || a === '--provider' || a.startsWith('--provider='));
|
|
60
|
+
}
|
|
61
|
+
function envFor(entry) {
|
|
62
|
+
return entry.provider === 'codex' ? { CODEX_HOME: entry.profileDir } : { CLAUDE_CONFIG_DIR: entry.profileDir };
|
|
63
|
+
}
|
|
64
|
+
function loginLine(exe, entry, platform) {
|
|
65
|
+
const [k, v] = Object.entries(envFor(entry))[0];
|
|
66
|
+
const args = entry.provider === 'codex' ? 'login' : 'auth login';
|
|
67
|
+
return platform === 'win32' ? `$env:${k}="${v}"; & "${exe}" ${args}` : `${k}="${v}" "${exe}" ${args}`;
|
|
68
|
+
}
|
|
69
|
+
/** Ask one account whether it is logged in, and remember the answer for the choosing and the heartbeat. */
|
|
70
|
+
function checkAccount(entry, deps) {
|
|
71
|
+
let auth;
|
|
72
|
+
if (entry.provider === 'codex') {
|
|
73
|
+
auth = deps.checkCodex(entry.profileDir);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
const exe = deps.claudeExecutable();
|
|
77
|
+
if (exe === null) {
|
|
78
|
+
auth = { ok: false, reason: 'not_installed', because: 'Claude Code is not installed — run `looply provider install`' };
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
const r = deps.checkClaude(exe, entry.profileDir);
|
|
82
|
+
auth = r.ok
|
|
83
|
+
? { ok: true, authMethod: r.method, plan: (0, provider_accounts_1.planOf)(r.plan) }
|
|
84
|
+
: {
|
|
85
|
+
ok: false,
|
|
86
|
+
reason: r.reason === 'unauthenticated' ? 'not_logged_in' : r.reason === 'no_executable' ? 'not_installed' : 'unknown',
|
|
87
|
+
because: r.because,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
(0, provider_accounts_1.recordAccountReadiness)(entry.name, auth.ok
|
|
92
|
+
? { ready: true, reason: null, authMethod: auth.authMethod, plan: auth.plan }
|
|
93
|
+
: { ready: false, reason: auth.reason }, deps.now(), deps.home);
|
|
94
|
+
return auth;
|
|
95
|
+
}
|
|
96
|
+
function fmtTokens(n) {
|
|
97
|
+
return n >= 1_000_000 ? `${(n / 1_000_000).toFixed(1)}M` : n >= 1000 ? `${(n / 1000).toFixed(1)}k` : String(n);
|
|
98
|
+
}
|
|
99
|
+
async function accountsCommand(verb, args, deps) {
|
|
100
|
+
const flags = parseAccountFlags(args);
|
|
101
|
+
if (flags.bad !== undefined) {
|
|
102
|
+
deps.err(`looply provider ${verb}: ${JSON.stringify(flags.bad)} — no idea what that means\n\n${exports.ACCOUNTS_USAGE}`);
|
|
103
|
+
return 64;
|
|
104
|
+
}
|
|
105
|
+
switch (verb) {
|
|
106
|
+
case 'login': {
|
|
107
|
+
const name = flags.name ?? core_1.DEFAULT_ACCOUNT_NAME;
|
|
108
|
+
const provider = (flags.provider ?? 'claude');
|
|
109
|
+
if (provider !== 'claude' && provider !== 'codex') {
|
|
110
|
+
deps.err(`looply provider login: --provider must be claude or codex, not ${JSON.stringify(flags.provider)}`);
|
|
111
|
+
return 64;
|
|
112
|
+
}
|
|
113
|
+
let entry;
|
|
114
|
+
try {
|
|
115
|
+
entry = (0, provider_accounts_1.addAccount)({ name, provider, ...(flags.label !== undefined ? { label: flags.label } : {}) }, deps.home);
|
|
116
|
+
}
|
|
117
|
+
catch (e) {
|
|
118
|
+
deps.err(`looply provider login: ${e.message}`);
|
|
119
|
+
return 1;
|
|
120
|
+
}
|
|
121
|
+
const exe = provider === 'codex' ? deps.codexExecutable() : deps.claudeExecutable();
|
|
122
|
+
if (exe === null) {
|
|
123
|
+
deps.err(provider === 'codex'
|
|
124
|
+
? 'looply provider login: codex is not installed on this machine. Install it (npm i -g @openai/codex), then run this again.'
|
|
125
|
+
: 'looply provider login: Claude Code is not installed yet — run `looply provider install` first.');
|
|
126
|
+
return 1;
|
|
127
|
+
}
|
|
128
|
+
deps.out(`provider: account "${entry.name}" (${provider}) — its own profile at ${entry.profileDir}`);
|
|
129
|
+
if (!deps.interactive) {
|
|
130
|
+
deps.err('looply provider login: signing in needs a terminal. Run this in one:');
|
|
131
|
+
deps.err(` ${loginLine(exe, entry, deps.platform)}`);
|
|
132
|
+
return 1;
|
|
133
|
+
}
|
|
134
|
+
const code = await deps.login(exe, provider === 'codex' ? ['login'] : ['auth', 'login'], envFor(entry));
|
|
135
|
+
const after = checkAccount(entry, deps);
|
|
136
|
+
if (after.ok) {
|
|
137
|
+
deps.out(`provider: "${entry.name}" is signed in (${after.authMethod ?? 'unknown method'}${after.plan ? `, ${after.plan} plan` : ''}).`);
|
|
138
|
+
if (after.plan === 'pro' || after.plan === 'max' || after.authMethod === 'claude.ai' || after.authMethod === 'chatgpt') {
|
|
139
|
+
deps.out(` ${core_1.PERSONAL_NOT_SHAREABLE}`);
|
|
140
|
+
}
|
|
141
|
+
deps.out(' Its owner chooses who may use it, for which projects and roles, in AutoRyn → AI accounts.');
|
|
142
|
+
return 0;
|
|
143
|
+
}
|
|
144
|
+
deps.err(`provider: "${entry.name}" is still not signed in${code === 0 ? '' : ` (exit ${code})`} — ${after.because}`);
|
|
145
|
+
return 1;
|
|
146
|
+
}
|
|
147
|
+
case 'remove': {
|
|
148
|
+
if (flags.name === undefined) {
|
|
149
|
+
deps.err(`looply provider remove: say which account: --name <name>\n\n${exports.ACCOUNTS_USAGE}`);
|
|
150
|
+
return 64;
|
|
151
|
+
}
|
|
152
|
+
try {
|
|
153
|
+
const removed = (0, provider_accounts_1.removeAccount)(flags.name, deps.home);
|
|
154
|
+
if (!removed) {
|
|
155
|
+
deps.err(`looply provider remove: there is no account named "${flags.name}" on this machine`);
|
|
156
|
+
return 1;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
catch (e) {
|
|
160
|
+
deps.err(`looply provider remove: ${e.message}`);
|
|
161
|
+
return 1;
|
|
162
|
+
}
|
|
163
|
+
deps.out(`provider: forgot account "${flags.name}". Its profile folder was left in place; delete it yourself to sign it out for good.`);
|
|
164
|
+
return 0;
|
|
165
|
+
}
|
|
166
|
+
case 'accounts': {
|
|
167
|
+
for (const e of (0, provider_accounts_1.readAccounts)(deps.home))
|
|
168
|
+
checkAccount(e, deps);
|
|
169
|
+
const policies = new Map((0, provider_accounts_1.readAccountPolicies)(deps.home).map((p) => [p.name, p]));
|
|
170
|
+
const reports = (0, provider_accounts_1.accountReports)(deps.home, deps.now());
|
|
171
|
+
deps.out(`provider: ${reports.length} AI account${reports.length === 1 ? '' : 's'} on this machine`);
|
|
172
|
+
for (const r of reports) {
|
|
173
|
+
const p = policies.get(r.name);
|
|
174
|
+
const state = !r.ready
|
|
175
|
+
? `NOT READY (${r.reason})`
|
|
176
|
+
: r.restingUntil !== null
|
|
177
|
+
? `resting until ${r.restingUntil}`
|
|
178
|
+
: 'ready';
|
|
179
|
+
deps.out(` ${r.name.padEnd(16)} ${r.provider.padEnd(6)} ${state}` +
|
|
180
|
+
`${r.plan ? ` · ${r.plan}` : r.authMethod ? ` · ${r.authMethod}` : ''}` +
|
|
181
|
+
` · today ${fmtTokens(r.usage.dayTokens)} / week ${fmtTokens(r.usage.weekTokens)} tokens`);
|
|
182
|
+
if (r.label !== r.name)
|
|
183
|
+
deps.out(` ${''.padEnd(16)} label: ${r.label}`);
|
|
184
|
+
if (r.restingBecause)
|
|
185
|
+
deps.out(` ${''.padEnd(16)} ${r.restingBecause}`);
|
|
186
|
+
if (p === undefined) {
|
|
187
|
+
deps.out(` ${''.padEnd(16)} no settings yet: usable for all work on this machine`);
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
deps.out(` ${''.padEnd(16)} ${p.enabled ? '' : 'OFF · '}${p.sharing === 'workspace' ? 'the whole workspace' : `only ${p.ownerLabel ?? 'its owner'}`}` +
|
|
191
|
+
` · priority ${p.priority}` +
|
|
192
|
+
`${p.projects.length ? ` · ${p.projects.length} project(s)` : ''}` +
|
|
193
|
+
`${p.roles.length ? ` · roles ${p.roles.join(', ')}` : ''}` +
|
|
194
|
+
`${p.dailyTokenCap !== null ? ` · daily cap ${fmtTokens(p.dailyTokenCap)}` : ''}` +
|
|
195
|
+
`${p.weeklyTokenCap !== null ? ` · weekly cap ${fmtTokens(p.weeklyTokenCap)}` : ''}`);
|
|
196
|
+
}
|
|
197
|
+
if (r.policyRefused)
|
|
198
|
+
deps.out(` ${''.padEnd(16)} refused: ${r.policyRefused}`);
|
|
199
|
+
}
|
|
200
|
+
return 0;
|
|
201
|
+
}
|
|
202
|
+
default:
|
|
203
|
+
deps.err(`looply provider: unknown action ${JSON.stringify(verb)}\n\n${exports.ACCOUNTS_USAGE}`);
|
|
204
|
+
return 64;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
/* istanbul ignore next — real processes; the logic is above */
|
|
208
|
+
function nodeAccountsDeps(base) {
|
|
209
|
+
return {
|
|
210
|
+
home: (0, node_os_1.homedir)(),
|
|
211
|
+
platform: process.platform,
|
|
212
|
+
interactive: Boolean(process.stdin.isTTY && process.stdout.isTTY),
|
|
213
|
+
now: () => Date.now(),
|
|
214
|
+
claudeExecutable: base.claudeExecutable,
|
|
215
|
+
checkClaude: base.checkClaude,
|
|
216
|
+
checkCodex: (profileDir) => (0, provider_accounts_1.checkCodexAuth)(profileDir, { executable: base.codexExecutable() }),
|
|
217
|
+
codexExecutable: base.codexExecutable,
|
|
218
|
+
login: base.login,
|
|
219
|
+
out: (line) => process.stdout.write(`${line}\n`),
|
|
220
|
+
err: (line) => process.stderr.write(`${line}\n`),
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
/** How long one account's readiness answer is trusted, machine-wide, before a daemon asks again. */
|
|
224
|
+
exports.ACCOUNT_READINESS_TTL_MS = 5 * 60_000;
|
|
225
|
+
/**
|
|
226
|
+
* Ask each account whose last answer is older than the TTL whether it is
|
|
227
|
+
* logged in. Machine-wide: with many daemons on one machine, the first to find
|
|
228
|
+
* a stale answer refreshes it and the others read it.
|
|
229
|
+
*/
|
|
230
|
+
function refreshAccountReadiness(deps) {
|
|
231
|
+
const states = (0, provider_accounts_1.readAccountStates)(deps.home);
|
|
232
|
+
let asked = 0;
|
|
233
|
+
for (const e of (0, provider_accounts_1.readAccounts)(deps.home)) {
|
|
234
|
+
const at = states[e.name]?.checkedAt;
|
|
235
|
+
if (typeof at === 'number' && deps.now() - at < exports.ACCOUNT_READINESS_TTL_MS)
|
|
236
|
+
continue;
|
|
237
|
+
try {
|
|
238
|
+
checkAccount(e, deps);
|
|
239
|
+
asked += 1;
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
/* one account that cannot be asked never stops the others */
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
return asked;
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=provider-accounts-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-accounts-cmd.js","sourceRoot":"","sources":["../src/provider-accounts-cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { type AccountNotReadyReason, type AccountPlan, type AccountPolicy, type AccountProvider, type AccountReport, type AccountRole } from '@looply/core';
|
|
2
|
+
/**
|
|
3
|
+
* SEVERAL NAMED AI ACCOUNTS ON ONE MACHINE.
|
|
4
|
+
*
|
|
5
|
+
* Each account is a provider login in its OWN profile directory, made by the
|
|
6
|
+
* provider's own login flow (`looply provider login --name <n>`). Looply stores
|
|
7
|
+
* the directory's PATH, never what is in it — the rule `provider-state.ts`
|
|
8
|
+
* established for the single profile, kept for many.
|
|
9
|
+
*
|
|
10
|
+
* ~/.looply/provider-profile the account named `default` (the legacy profile)
|
|
11
|
+
* ~/.looply/provider-profiles/<name> every other account
|
|
12
|
+
* ~/.looply/provider-accounts.json which accounts exist (name, provider, label)
|
|
13
|
+
* ~/.looply/provider-accounts-state.json resting until, readiness, plan — shared by every daemon here
|
|
14
|
+
* ~/.looply/provider-accounts-remote.json what the accounts' owners set, as last pulled
|
|
15
|
+
*
|
|
16
|
+
* ⚠️ MACHINE STATE, NOT PROJECT STATE: resolved from the daemon's home, never
|
|
17
|
+
* from `.looply/config.yaml`, which sits in a worktree the model may edit.
|
|
18
|
+
*
|
|
19
|
+
* ⚠️ WHAT CROSSES TO THE SERVER: the name, a label, the provider kind, the
|
|
20
|
+
* auth method and plan name, readiness, resting until, token usage. Never an
|
|
21
|
+
* email, an organisation id or a credential.
|
|
22
|
+
*/
|
|
23
|
+
export declare const ACCOUNTS_FILE = "provider-accounts.json";
|
|
24
|
+
export declare const ACCOUNTS_STATE_FILE = "provider-accounts-state.json";
|
|
25
|
+
export declare const ACCOUNTS_REMOTE_FILE = "provider-accounts-remote.json";
|
|
26
|
+
export declare const PROFILES_DIR = "provider-profiles";
|
|
27
|
+
export interface AccountEntry {
|
|
28
|
+
name: string;
|
|
29
|
+
provider: AccountProvider;
|
|
30
|
+
label: string;
|
|
31
|
+
/** The provider's profile directory: `CLAUDE_CONFIG_DIR` for claude, `CODEX_HOME` for codex. */
|
|
32
|
+
profileDir: string;
|
|
33
|
+
}
|
|
34
|
+
export interface AccountState {
|
|
35
|
+
restingUntil?: number;
|
|
36
|
+
restingBecause?: string;
|
|
37
|
+
ready?: boolean;
|
|
38
|
+
reason?: AccountNotReadyReason | null;
|
|
39
|
+
authMethod?: string | null;
|
|
40
|
+
plan?: AccountPlan | null;
|
|
41
|
+
checkedAt?: number;
|
|
42
|
+
}
|
|
43
|
+
/** Where an account's provider profile lives. `default` is the legacy single profile. */
|
|
44
|
+
export declare function accountProfileDir(name: string, home?: string): string;
|
|
45
|
+
/**
|
|
46
|
+
* Every account on this machine. The legacy profile is always the claude
|
|
47
|
+
* account `default`, so a machine nobody configured behaves exactly as before.
|
|
48
|
+
*/
|
|
49
|
+
export declare function readAccounts(home?: string): AccountEntry[];
|
|
50
|
+
/** Add (or relabel) a named account. Its profile directory is made; nothing is put in it. */
|
|
51
|
+
export declare function addAccount(input: {
|
|
52
|
+
name: string;
|
|
53
|
+
provider: AccountProvider;
|
|
54
|
+
label?: string;
|
|
55
|
+
}, home?: string): AccountEntry;
|
|
56
|
+
/** Forget a named account. Its profile directory (and the login in it) is left where it is. */
|
|
57
|
+
export declare function removeAccount(name: string, home?: string): boolean;
|
|
58
|
+
export declare function readAccountStates(home?: string): Record<string, AccountState>;
|
|
59
|
+
/** The account answered with a usage limit: it rests until `until`. Read by every daemon here. */
|
|
60
|
+
export declare function markAccountResting(name: string, until: number, because: string, home?: string): void;
|
|
61
|
+
/** What a readiness check found, kept so a call need not ask every account every time. */
|
|
62
|
+
export declare function recordAccountReadiness(name: string, r: {
|
|
63
|
+
ready: boolean;
|
|
64
|
+
reason: AccountNotReadyReason | null;
|
|
65
|
+
authMethod?: string | null;
|
|
66
|
+
plan?: AccountPlan | null;
|
|
67
|
+
}, now: number, home?: string): void;
|
|
68
|
+
export interface RemoteAccountPolicies {
|
|
69
|
+
policies: AccountPolicy[];
|
|
70
|
+
updatedAt: string | null;
|
|
71
|
+
fetchedAt: string;
|
|
72
|
+
}
|
|
73
|
+
export declare function readAccountPolicies(home?: string): AccountPolicy[];
|
|
74
|
+
/** Pull this machine's account policies (`GET /v1/machine/accounts`) into the cache. */
|
|
75
|
+
export declare function makeAccountPoliciesPull(deps: {
|
|
76
|
+
fetch: () => Promise<unknown>;
|
|
77
|
+
log: (line: string) => void;
|
|
78
|
+
home?: string;
|
|
79
|
+
now?: () => number;
|
|
80
|
+
}): () => Promise<'updated' | 'unchanged' | 'failed'>;
|
|
81
|
+
/** Tokens (input + output) each account used in the last 24 hours and 7 days. */
|
|
82
|
+
export declare function accountUsage(home?: string, now?: number): Map<string, {
|
|
83
|
+
dayTokens: number;
|
|
84
|
+
weekTokens: number;
|
|
85
|
+
}>;
|
|
86
|
+
export interface AccountCallInput {
|
|
87
|
+
role: AccountRole;
|
|
88
|
+
projectId: string | null;
|
|
89
|
+
requesterRef: string | null;
|
|
90
|
+
provider?: AccountProvider;
|
|
91
|
+
now: number;
|
|
92
|
+
/** Accounts already found unusable during this call (e.g. not logged in). */
|
|
93
|
+
skip?: readonly string[];
|
|
94
|
+
}
|
|
95
|
+
export type AccountChoice = {
|
|
96
|
+
kind: 'account';
|
|
97
|
+
entry: AccountEntry;
|
|
98
|
+
resting: boolean;
|
|
99
|
+
} | {
|
|
100
|
+
kind: 'none';
|
|
101
|
+
because: string;
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Which account one model call uses.
|
|
105
|
+
*
|
|
106
|
+
* - the first usable account by priority;
|
|
107
|
+
* - else, when the only thing in the way is that accounts are RESTING, the one
|
|
108
|
+
* that rests the shortest: its call meets the limit again and the run waits
|
|
109
|
+
* it out (`provider-limit.ts`), exactly as with one account;
|
|
110
|
+
* - else, when every account is simply not logged in, the first by priority, so
|
|
111
|
+
* the launch says "log in" in the words it always did;
|
|
112
|
+
* - else no account, with every reason: the owners' settings allow none for this work.
|
|
113
|
+
*/
|
|
114
|
+
export declare function chooseAccountForCall(input: AccountCallInput, home?: string): AccountChoice;
|
|
115
|
+
/** Whether any account other than `except` could take a call of this kind right now. */
|
|
116
|
+
export declare function anotherAccountUsable(input: AccountCallInput & {
|
|
117
|
+
except: string;
|
|
118
|
+
}, home?: string): string | null;
|
|
119
|
+
/**
|
|
120
|
+
* Every account, as the heartbeat reports it. Readiness is what was last
|
|
121
|
+
* checked (`refreshAccountReadiness`); nothing here starts a process.
|
|
122
|
+
*/
|
|
123
|
+
export declare function accountReports(home?: string, now?: number): AccountReport[];
|
|
124
|
+
export type AccountAuth = {
|
|
125
|
+
ok: true;
|
|
126
|
+
authMethod: string | null;
|
|
127
|
+
plan: AccountPlan | null;
|
|
128
|
+
} | {
|
|
129
|
+
ok: false;
|
|
130
|
+
reason: AccountNotReadyReason;
|
|
131
|
+
because: string;
|
|
132
|
+
};
|
|
133
|
+
export declare function planOf(x: unknown): AccountPlan | null;
|
|
134
|
+
export interface CodexDeps {
|
|
135
|
+
run?: (exe: string, argv: readonly string[], env: Record<string, string>) => {
|
|
136
|
+
status: number;
|
|
137
|
+
out: string;
|
|
138
|
+
};
|
|
139
|
+
executable?: string | null;
|
|
140
|
+
}
|
|
141
|
+
/** `codex` on PATH, or null. Codex is installed by its owner; Looply does not install it. */
|
|
142
|
+
export declare function codexExecutable(env?: NodeJS.ProcessEnv): string | null;
|
|
143
|
+
/**
|
|
144
|
+
* Is a codex account logged in? `codex login status` in its own `CODEX_HOME`
|
|
145
|
+
* answers with exit 0 when it is, and names "API key" or "ChatGPT".
|
|
146
|
+
*
|
|
147
|
+
* ⚠️ NEVER RUN END TO END ON THIS PROJECT'S MACHINES: the codex preset is
|
|
148
|
+
* declared but no Looply run has used it yet. Readiness is what this checks.
|
|
149
|
+
*/
|
|
150
|
+
export declare function checkCodexAuth(profileDir: string, deps?: CodexDeps): AccountAuth;
|
|
151
|
+
/** Who asked for the work a run is bound to (`requestedBy.ref` on its goal), or null. */
|
|
152
|
+
export declare function requesterRefOf(goal: {
|
|
153
|
+
requestedBy?: {
|
|
154
|
+
ref?: unknown;
|
|
155
|
+
} | null;
|
|
156
|
+
} | undefined | null): string | null;
|
|
157
|
+
//# sourceMappingURL=provider-accounts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-accounts.d.ts","sourceRoot":"","sources":["../src/provider-accounts.ts"],"names":[],"mappings":"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"}
|