@intutic/cli 2.3.0 → 2.4.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.
@@ -0,0 +1,223 @@
1
+ /**
2
+ * `intutic budget set|keys|key|members|member` — the workspace caps, and the
3
+ * spend budgets and rate limits on virtual keys and members.
4
+ *
5
+ * Subcommands:
6
+ * - `intutic budget set [--daily <usd|default>] [--monthly <usd|default>] [--threshold <pct>]
7
+ * [--daily-enforcement hard|soft] [--monthly-enforcement hard|soft]`
8
+ * - `intutic budget keys [--json]`
9
+ * - `intutic budget key <keyId> [--daily <usd|none>] [--monthly <usd|none>]
10
+ * [--daily-enforcement hard|soft] [--monthly-enforcement hard|soft]
11
+ * [--rpm <n|none>] [--tpm <n|none>]`
12
+ * - `intutic budget members [--json]`
13
+ * - `intutic budget member <memberId|default> [--daily <usd|none>]
14
+ * [--monthly <usd|none>] [--daily-enforcement hard|soft]
15
+ * [--monthly-enforcement hard|soft]`
16
+ *
17
+ * Server side (services/control-plane/src/routes/budget.ts, routes/keys.ts):
18
+ * `PUT /api/v1/budget`, `GET /api/v1/budget/keys`, `PATCH /api/v1/keys/:id`,
19
+ * `GET /api/v1/budget/members`, `PUT /api/v1/budget/members/:memberId`. The
20
+ * writes need OWNER or ADMIN, and member budgets a plan with them; the
21
+ * server's refusal is printed as it says it.
22
+ *
23
+ * Every write here changes only what its flags name. `budget set` sends only
24
+ * those fields (the route is a partial update); the key and member writes
25
+ * read the subject's budgets first and send them back with the change,
26
+ * because those routes replace a subject's budgets whole.
27
+ *
28
+ * @module
29
+ */
30
+ import { log } from '../lib/logger.js';
31
+ import { fail, runApiCommand } from './apiCommand.js';
32
+ const usd = (n) => `$${n.toFixed(2)}`;
33
+ /** A dollar amount, or `none` (returned as `null`), or fails naming the flag. */
34
+ function amountOrNone(value, flag) {
35
+ if (value.trim().toLowerCase() === 'none')
36
+ return null;
37
+ const n = Number(value);
38
+ if (!Number.isFinite(n) || n <= 0)
39
+ fail(`${flag} must be a dollar amount above 0, or "none", got "${value}"`);
40
+ return n;
41
+ }
42
+ /** A whole number, or `none` (returned as `null`), or fails naming the flag. */
43
+ function countOrNone(value, flag) {
44
+ if (value.trim().toLowerCase() === 'none')
45
+ return null;
46
+ const n = Number(value);
47
+ if (!Number.isInteger(n) || n <= 0)
48
+ fail(`${flag} must be a positive whole number, or "none", got "${value}"`);
49
+ return n;
50
+ }
51
+ function enforcement(value, flag) {
52
+ if (value === undefined)
53
+ return undefined;
54
+ if (value !== 'hard' && value !== 'soft')
55
+ fail(`${flag} must be hard or soft, got "${value}"`);
56
+ return value;
57
+ }
58
+ /**
59
+ * `current` with the periods the flags name changed: `--daily none` removes
60
+ * the day budget, `--daily 5` sets it (keeping its enforcement unless
61
+ * `--daily-enforcement` says otherwise, hard for a new one), and an
62
+ * enforcement flag alone changes an existing budget's.
63
+ */
64
+ export function applyBudgetFlags(current, flags) {
65
+ const out = new Map(current.map((b) => [b.period, { ...b }]));
66
+ for (const [period, amount, mode, flag] of [
67
+ ['day', flags.daily, flags.dailyEnforcement, '--daily'],
68
+ ['month', flags.monthly, flags.monthlyEnforcement, '--monthly'],
69
+ ]) {
70
+ const how = enforcement(mode, `${flag}-enforcement`);
71
+ if (amount !== undefined) {
72
+ const limitUsd = amountOrNone(amount, flag);
73
+ if (limitUsd === null)
74
+ out.delete(period);
75
+ else
76
+ out.set(period, { period, limitUsd, enforcement: how ?? out.get(period)?.enforcement ?? 'hard' });
77
+ }
78
+ else if (how) {
79
+ const existing = out.get(period);
80
+ if (!existing)
81
+ fail(`${flag}-enforcement needs a ${period} budget: set one with ${flag} <usd>`);
82
+ existing.enforcement = how;
83
+ }
84
+ }
85
+ return [...out.values()].sort((a, b) => (a.period === b.period ? 0 : a.period === 'day' ? -1 : 1));
86
+ }
87
+ /** One budget list in words: `$5.00/day hard, $50.00/month soft`, or `none`. */
88
+ export function describeBudgets(budgets) {
89
+ if (budgets.length === 0)
90
+ return 'none';
91
+ return budgets.map((b) => `${usd(b.limitUsd)}/${b.period} ${b.enforcement}`).join(', ');
92
+ }
93
+ function describeRateLimit(r) {
94
+ const parts = [r.rpm ? `${r.rpm} requests/min` : '', r.tpm ? `${r.tpm} tokens/min` : ''].filter(Boolean);
95
+ return parts.length ? parts.join(', ') : 'none';
96
+ }
97
+ function hasBudgetFlags(flags) {
98
+ return [flags.daily, flags.monthly, flags.dailyEnforcement, flags.monthlyEnforcement].some((v) => v !== undefined);
99
+ }
100
+ /** A cap flag: a dollar amount (0 is no cap), or `default` (sent as `null`) to return to the default. */
101
+ function capOrDefault(value, flag) {
102
+ if (value === undefined)
103
+ return undefined;
104
+ if (value.trim().toLowerCase() === 'default')
105
+ return null;
106
+ const n = Number(value);
107
+ if (!(n >= 0))
108
+ fail(`${flag} must be a dollar amount (0 for no cap) or "default", got "${value}"`);
109
+ return n;
110
+ }
111
+ /**
112
+ * The `PUT /api/v1/budget` body for the flags given: only those, so a cap
113
+ * nobody named stays as it is — in particular a daily cap that was never
114
+ * saved stays on the default.
115
+ */
116
+ export function budgetSetBody(opts) {
117
+ const body = {};
118
+ const daily = capOrDefault(opts.daily, '--daily');
119
+ const monthly = capOrDefault(opts.monthly, '--monthly');
120
+ if (daily !== undefined)
121
+ body.daily_budget_usd = daily;
122
+ if (monthly !== undefined)
123
+ body.monthly_budget_usd = monthly;
124
+ if (opts.threshold !== undefined) {
125
+ const t = Number(opts.threshold);
126
+ if (!(Number.isInteger(t) && t >= 1 && t <= 100))
127
+ fail(`--threshold must be a whole percentage from 1 to 100, got "${opts.threshold}"`);
128
+ body.alert_threshold_pct = t;
129
+ }
130
+ const dailyEnforcement = enforcement(opts.dailyEnforcement, '--daily-enforcement');
131
+ const monthlyEnforcement = enforcement(opts.monthlyEnforcement, '--monthly-enforcement');
132
+ if (dailyEnforcement)
133
+ body.daily_enforcement = dailyEnforcement;
134
+ if (monthlyEnforcement)
135
+ body.monthly_enforcement = monthlyEnforcement;
136
+ if (Object.keys(body).length === 0) {
137
+ fail('Nothing to change: pass --daily, --monthly, --threshold, --daily-enforcement or --monthly-enforcement');
138
+ }
139
+ return body;
140
+ }
141
+ export async function runBudgetSet(opts) {
142
+ const body = budgetSetBody(opts);
143
+ await runApiCommand(opts, 'Failed to update the workspace budget', async (client) => {
144
+ await client.put('/api/v1/budget', body);
145
+ return client.get('/api/v1/budget');
146
+ }, (b) => {
147
+ log.success('Workspace budget updated');
148
+ log.field('Daily cap', `${usd(b.daily_budget_usd)} (${b.daily_enforcement})${b.daily_budget_is_default ? ', the default' : ''}`);
149
+ log.field('Monthly cap', `${usd(b.monthly_budget_usd)} (${b.monthly_enforcement})`);
150
+ log.field('Alert at', `${b.alert_threshold_pct}%`);
151
+ });
152
+ }
153
+ export async function runBudgetKeys(opts) {
154
+ await runApiCommand(opts, 'Failed to list key budgets', (client) => client.get('/api/v1/budget/keys'), (res) => {
155
+ log.header('Virtual key budgets');
156
+ if (res.keys.length === 0)
157
+ console.log(' No live keys.');
158
+ for (const k of res.keys) {
159
+ console.log(` ${k.keyPrefix}… ${k.label} (${k.keyId}, ${k.memberEmail})`);
160
+ console.log(` Spent today ${usd(k.spendTodayUsd)}, this month ${usd(k.spendThisMonthUsd)}`);
161
+ console.log(` Budgets: ${describeBudgets(k.budgets)} Rate limit: ${describeRateLimit(k.rateLimit)}`);
162
+ }
163
+ console.log(` Days reset at ${res.dayResetsAt}; months at ${res.monthResetsAt} (UTC).`);
164
+ });
165
+ }
166
+ export async function runBudgetKey(keyId, opts) {
167
+ const budgetsChange = hasBudgetFlags(opts);
168
+ if (!budgetsChange && opts.rpm === undefined && opts.tpm === undefined) {
169
+ fail('Nothing to change: pass --daily, --monthly, an enforcement flag, --rpm or --tpm');
170
+ }
171
+ const rateLimit = {};
172
+ if (opts.rpm !== undefined)
173
+ rateLimit.rpm = countOrNone(opts.rpm, '--rpm');
174
+ if (opts.tpm !== undefined)
175
+ rateLimit.tpm = countOrNone(opts.tpm, '--tpm');
176
+ await runApiCommand(opts, `Failed to update key ${keyId}`, async (client) => {
177
+ let budgets;
178
+ if (budgetsChange) {
179
+ const listed = await client.get('/api/v1/budget/keys');
180
+ const current = listed.keys.find((k) => k.keyId === keyId);
181
+ if (!current)
182
+ throw new Error(`no live key ${keyId} in this workspace`);
183
+ budgets = applyBudgetFlags(current.budgets, opts);
184
+ }
185
+ return client.patch(`/api/v1/keys/${keyId}`, {
186
+ ...(budgets ? { budgets } : {}),
187
+ ...(Object.keys(rateLimit).length ? { rateLimit } : {}),
188
+ });
189
+ }, (k) => {
190
+ log.success(`Key ${k.keyId} updated`);
191
+ log.field('Budgets', describeBudgets(k.budgets));
192
+ log.field('Rate limit', describeRateLimit(k.rateLimit));
193
+ });
194
+ }
195
+ export async function runBudgetMembers(opts) {
196
+ await runApiCommand(opts, 'Failed to list member budgets', (client) => client.get('/api/v1/budget/members'), (res) => {
197
+ log.header('Member budgets');
198
+ log.field('Default (every member without their own)', describeBudgets(res.defaultBudgets));
199
+ for (const m of res.members) {
200
+ console.log(` ${m.email} (${m.memberId})`);
201
+ console.log(` Spent today ${usd(m.spendTodayUsd)}, this month ${usd(m.spendThisMonthUsd)}`);
202
+ console.log(` Own: ${describeBudgets(m.budgets)} Applies: ${describeBudgets(m.effectiveBudgets)}`);
203
+ }
204
+ console.log(` Days reset at ${res.dayResetsAt}; months at ${res.monthResetsAt} (UTC).`);
205
+ });
206
+ }
207
+ export async function runBudgetMember(memberId, opts) {
208
+ if (!hasBudgetFlags(opts))
209
+ fail('Nothing to change: pass --daily, --monthly or an enforcement flag');
210
+ await runApiCommand(opts, `Failed to update the budgets of ${memberId}`, async (client) => {
211
+ const listed = await client.get('/api/v1/budget/members');
212
+ const current = memberId === 'default' ? listed.defaultBudgets : listed.members.find((m) => m.memberId === memberId)?.budgets;
213
+ if (!current)
214
+ throw new Error(`no active member ${memberId} in this workspace`);
215
+ return client.put(`/api/v1/budget/members/${encodeURIComponent(memberId)}`, {
216
+ budgets: applyBudgetFlags(current, opts),
217
+ });
218
+ }, (m) => {
219
+ log.success(m.memberId === 'default' ? 'Default member budget updated' : `Budgets of ${m.memberId} updated`);
220
+ log.field('Budgets', describeBudgets(m.budgets));
221
+ });
222
+ }
223
+ //# sourceMappingURL=budgetLimits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budgetLimits.js","sourceRoot":"","sources":["../../src/commands/budgetLimits.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,9 @@
4
4
  *
5
5
  * Subcommands:
6
6
  * - `intutic credentials list [--json]`
7
- * - `intutic credentials set <provider> --field key=value [--field key=value ...]`
7
+ * - `intutic credentials set <provider> --field key=value [--field-file key=path ...]`
8
8
  * - `intutic credentials unset <provider>`
9
+ * - `intutic credentials models <provider> [--json]`
9
10
  *
10
11
  * Server side: services/control-plane/src/routes/providerCredentials.ts.
11
12
  * `list` reports every provider in the shared registry
@@ -24,8 +25,11 @@ export declare function runCredentialsList(opts: CredentialsCliOpts): Promise<vo
24
25
  /** `intutic credentials set <provider>` */
25
26
  export declare function runCredentialsSet(provider: string, opts: CredentialsCliOpts & {
26
27
  field?: string[];
28
+ fieldFile?: string[];
27
29
  }): Promise<void>;
28
30
  /** `intutic credentials unset <provider>` */
29
31
  export declare function runCredentialsUnset(provider: string, opts: CredentialsCliOpts): Promise<void>;
32
+ /** `intutic credentials models <provider>` */
33
+ export declare function runCredentialsModels(provider: string, opts: CredentialsCliOpts): Promise<void>;
30
34
  export {};
31
35
  //# sourceMappingURL=credentials.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/commands/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAWH,UAAU,kBAAkB;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAoBD,iCAAiC;AACjC,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgChF;AAED,2CAA2C;AAC3C,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,kBAAkB,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC9C,OAAO,CAAC,IAAI,CAAC,CAyEf;AAED,6CAA6C;AAC7C,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,IAAI,CAAC,CAcf"}
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/commands/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAYH,UAAU,kBAAkB;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AA6CD,iCAAiC;AACjC,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgChF;AAED,2CAA2C;AAC3C,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,kBAAkB,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GACpE,OAAO,CAAC,IAAI,CAAC,CA2Hf;AAED,6CAA6C;AAC7C,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,IAAI,CAAC,CAcf;AAED,8CAA8C;AAC9C,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCpG"}
@@ -4,8 +4,9 @@
4
4
  *
5
5
  * Subcommands:
6
6
  * - `intutic credentials list [--json]`
7
- * - `intutic credentials set <provider> --field key=value [--field key=value ...]`
7
+ * - `intutic credentials set <provider> --field key=value [--field-file key=path ...]`
8
8
  * - `intutic credentials unset <provider>`
9
+ * - `intutic credentials models <provider> [--json]`
9
10
  *
10
11
  * Server side: services/control-plane/src/routes/providerCredentials.ts.
11
12
  * `list` reports every provider in the shared registry
@@ -19,9 +20,18 @@ import { log } from '../lib/logger.js';
19
20
  import { loadCredentials } from '../config/store.js';
20
21
  import { resolveControlPlaneUrl } from '../config/paths.js';
21
22
  import { createApiClient } from '../lib/api.js';
22
- import { PROVIDER_REGISTRY, getProviderDefinition } from '@intutic/shared-types';
23
+ import { readFileSync } from 'node:fs';
24
+ import { PROVIDER_REGISTRY, checkCloudCredentialFields, getProviderDefinition } from '@intutic/shared-types';
23
25
  import pc from 'picocolors';
24
26
  const NOT_AUTHENTICATED = 'Not authenticated. Run `intutic login` first.';
27
+ function requireProvider(provider) {
28
+ const def = getProviderDefinition(provider);
29
+ if (!def) {
30
+ log.error(`Unknown provider "${provider}". Must be one of: ${PROVIDER_REGISTRY.map((p) => p.id).join(', ')}`);
31
+ process.exit(1);
32
+ }
33
+ return def;
34
+ }
25
35
  async function getClient(opts) {
26
36
  const creds = await loadCredentials();
27
37
  if (!creds) {
@@ -58,7 +68,26 @@ export async function runCredentialsList(opts) {
58
68
  }
59
69
  /** `intutic credentials set <provider>` */
60
70
  export async function runCredentialsSet(provider, opts) {
61
- const fields = opts.field ?? [];
71
+ // `--field-file key=path` reads the value from a file: a Vertex AI
72
+ // service-account key is a multi-line JSON document no shell quotes well.
73
+ const fromFiles = [];
74
+ for (const f of opts.fieldFile ?? []) {
75
+ const idx = f.indexOf('=');
76
+ if (idx <= 0) {
77
+ log.error(`--field-file "${f}" is not in key=path form`);
78
+ process.exit(1);
79
+ }
80
+ let value;
81
+ try {
82
+ value = readFileSync(f.slice(idx + 1), 'utf8');
83
+ }
84
+ catch {
85
+ log.error(`--field-file ${f.slice(0, idx)}: could not read ${f.slice(idx + 1)}`);
86
+ process.exit(1);
87
+ }
88
+ fromFiles.push(`${f.slice(0, idx)}=${value}`);
89
+ }
90
+ const fields = [...(opts.field ?? []), ...fromFiles];
62
91
  if (fields.length === 0) {
63
92
  log.error('At least one --field key=value is required (e.g. --field apiKey=sk-ant-... for a single-key ' +
64
93
  'provider, or multiple --field flags for a multi-field one like Azure OpenAI).');
@@ -73,11 +102,7 @@ export async function runCredentialsSet(provider, opts) {
73
102
  // that has a missing field. The server (`providerCredentials.ts`) remains
74
103
  // the authoritative validator (length bounds, etc.) — this is a faster,
75
104
  // local UX check, not a replacement for it.
76
- const def = getProviderDefinition(provider);
77
- if (!def) {
78
- log.error(`Unknown provider "${provider}". Must be one of: ${PROVIDER_REGISTRY.map((p) => p.id).join(', ')}`);
79
- process.exit(1);
80
- }
105
+ const def = requireProvider(provider);
81
106
  const knownKeys = new Set(def.fields.map((f) => f.key));
82
107
  const body = {};
83
108
  for (const f of fields) {
@@ -99,14 +124,47 @@ export async function runCredentialsSet(provider, opts) {
99
124
  process.exit(1);
100
125
  }
101
126
  }
127
+ if (def.requiresOneOf && !def.requiresOneOf.some((set) => set.every((k) => body[k]))) {
128
+ log.error(`${def.displayName} requires one of: ${def.requiresOneOf.map((set) => set.map((k) => `--field ${k}=<value>`).join(' ')).join(' or ')}`);
129
+ process.exit(1);
130
+ }
131
+ const trimmed = Object.fromEntries(Object.entries(body).map(([k, v]) => [k, v.trim()]));
132
+ const cloudError = checkCloudCredentialFields(def.id, trimmed);
133
+ if (cloudError) {
134
+ log.error(cloudError);
135
+ process.exit(1);
136
+ }
102
137
  const client = await getClient(opts);
103
138
  try {
104
139
  const res = await client.put(`/api/v1/workspace/provider-credentials/${encodeURIComponent(provider)}`, body);
140
+ // Checked against the provider as soon as it is saved, server-side, so
141
+ // the operator learns now — not on the first failed request — whether
142
+ // the credential works. A failed check never undoes the save.
143
+ let verification = null;
144
+ try {
145
+ verification = await client.post(`/api/v1/workspace/provider-credentials/${encodeURIComponent(provider)}/verify`, {});
146
+ }
147
+ catch {
148
+ verification = null;
149
+ }
105
150
  if (opts.json) {
106
- console.log(JSON.stringify(res, null, 2));
151
+ console.log(JSON.stringify({ ...res, verification }, null, 2));
107
152
  return;
108
153
  }
109
154
  log.success(`${provider}: provisioned (…${res.lastFour ?? '????'}).`);
155
+ if (verification?.status === 'valid')
156
+ log.success(` Verified: ${verification.detail}`);
157
+ else if (verification?.status === 'invalid') {
158
+ log.warn(` ${verification.detail}. Check the values and run this command again.`);
159
+ }
160
+ else if (verification)
161
+ log.dim(` Not verified: ${verification.detail}`);
162
+ if (verification?.models) {
163
+ log.dim(` The key can reach ${verification.models.length} model${verification.models.length === 1 ? '' : 's'}; ` +
164
+ `\`intutic credentials models ${provider}\` lists them.`);
165
+ }
166
+ if (def.usageHint)
167
+ log.dim(` ${def.usageHint}`);
110
168
  if (!res.routingLive) {
111
169
  log.warn(`${provider} is stored but not yet routable — the proxy does not forward requests to it. ` +
112
170
  'Its credential is safe to have on file ahead of that support landing.');
@@ -131,4 +189,35 @@ export async function runCredentialsUnset(provider, opts) {
131
189
  process.exit(1);
132
190
  }
133
191
  }
192
+ /** `intutic credentials models <provider>` */
193
+ export async function runCredentialsModels(provider, opts) {
194
+ const def = requireProvider(provider);
195
+ const client = await getClient(opts);
196
+ try {
197
+ const res = await client.get(`/api/v1/workspace/provider-credentials/${encodeURIComponent(provider)}/models`);
198
+ if (opts.json) {
199
+ console.log(JSON.stringify(res, null, 2));
200
+ return;
201
+ }
202
+ // The list is recorded when a saved key is checked against the provider,
203
+ // so `null` means no check has listed models yet, not that the key
204
+ // reaches none.
205
+ if (!res.models) {
206
+ log.dim(`No models discovered for ${def.displayName} yet.`);
207
+ log.dim(` \`intutic credentials set ${provider} --field ...\` checks the key against the provider and records the models it can reach.`);
208
+ return;
209
+ }
210
+ log.header(`Intutic — ${def.displayName} models`);
211
+ if (res.checkedAt)
212
+ log.field('Checked', res.checkedAt);
213
+ log.field('Models', String(res.models.length));
214
+ console.log('');
215
+ for (const model of res.models)
216
+ console.log(` ${model}`);
217
+ }
218
+ catch (err) {
219
+ log.error(`Failed to list ${provider} models: ${err instanceof Error ? err.message : String(err)}`);
220
+ process.exit(1);
221
+ }
222
+ }
134
223
  //# sourceMappingURL=credentials.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/commands/credentials.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/commands/credentials.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * `intutic incidents` — the workspace's governance incidents, as on the
3
+ * dashboard's Findings › Incidents tab.
4
+ *
5
+ * Subcommands:
6
+ * - `intutic incidents list [--status] [--severity] [--type] [--page] [--limit] [--json]`
7
+ * - `intutic incidents show <incidentId> [--json]`
8
+ *
9
+ * Server side: `GET /api/v1/incidents` and `GET /api/v1/incidents/:id`
10
+ * (services/control-plane/src/routes/incidents.ts), OWNER, ADMIN and EM only.
11
+ * The list is ranked by review priority, not time, and bounded by a review
12
+ * budget; the CLI says so when the budget withholds incidents, as the
13
+ * dashboard does. `--severity` and `--type` are checked here before any
14
+ * request, against the same lists the control plane checks.
15
+ *
16
+ * @module
17
+ */
18
+ import { type ApiCommandOpts } from './apiCommand.js';
19
+ export interface IncidentListOpts extends ApiCommandOpts {
20
+ status?: string;
21
+ severity?: string;
22
+ type?: string;
23
+ page?: string;
24
+ limit?: string;
25
+ }
26
+ /** The route's query string for the given filters; fails on a severity or type the control plane would refuse. */
27
+ export declare function incidentQuery(opts: IncidentListOpts): string;
28
+ /** `intutic incidents list` */
29
+ export declare function runIncidentsList(opts: IncidentListOpts): Promise<void>;
30
+ /** `intutic incidents show <incidentId>` */
31
+ export declare function runIncidentsShow(incidentId: string, opts: ApiCommandOpts): Promise<void>;
32
+ //# sourceMappingURL=incidents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incidents.d.ts","sourceRoot":"","sources":["../../src/commands/incidents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,EAAoC,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAsBvF,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACtD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAKD,kHAAkH;AAClH,wBAAgB,aAAa,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAqB5D;AAMD,+BAA+B;AAC/B,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB5E;AAED,4CAA4C;AAC5C,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB9F"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * `intutic incidents` — the workspace's governance incidents, as on the
3
+ * dashboard's Findings › Incidents tab.
4
+ *
5
+ * Subcommands:
6
+ * - `intutic incidents list [--status] [--severity] [--type] [--page] [--limit] [--json]`
7
+ * - `intutic incidents show <incidentId> [--json]`
8
+ *
9
+ * Server side: `GET /api/v1/incidents` and `GET /api/v1/incidents/:id`
10
+ * (services/control-plane/src/routes/incidents.ts), OWNER, ADMIN and EM only.
11
+ * The list is ranked by review priority, not time, and bounded by a review
12
+ * budget; the CLI says so when the budget withholds incidents, as the
13
+ * dashboard does. `--severity` and `--type` are checked here before any
14
+ * request, against the same lists the control plane checks.
15
+ *
16
+ * @module
17
+ */
18
+ import pc from 'picocolors';
19
+ import { INCIDENT_TYPES, RiskLevel } from '@intutic/shared-types';
20
+ import { log } from '../lib/logger.js';
21
+ import { fail, positiveInt, runApiCommand } from './apiCommand.js';
22
+ /** Most severe first, as the dashboard lists them. */
23
+ const SEVERITIES = Object.values(RiskLevel).reverse();
24
+ /** The route's query string for the given filters; fails on a severity or type the control plane would refuse. */
25
+ export function incidentQuery(opts) {
26
+ const q = new URLSearchParams();
27
+ if (opts.status)
28
+ q.set('status', opts.status.toUpperCase());
29
+ if (opts.severity) {
30
+ const severity = opts.severity.toUpperCase();
31
+ if (!SEVERITIES.includes(severity))
32
+ fail(`--severity must be one of ${SEVERITIES.join(', ')}, got "${opts.severity}"`);
33
+ q.set('severity', severity);
34
+ }
35
+ if (opts.type) {
36
+ const type = opts.type.toUpperCase();
37
+ if (!INCIDENT_TYPES.includes(type))
38
+ fail(`--type must be one of ${INCIDENT_TYPES.join(', ')}, got "${opts.type}"`);
39
+ q.set('type', type);
40
+ }
41
+ if (opts.page !== undefined)
42
+ q.set('page', String(positiveInt(opts.page, '--page')));
43
+ if (opts.limit !== undefined) {
44
+ const limit = positiveInt(opts.limit, '--limit');
45
+ if (limit > 100)
46
+ fail(`--limit is at most 100, got ${limit}`);
47
+ q.set('limit', String(limit));
48
+ }
49
+ const s = q.toString();
50
+ return s ? `?${s}` : '';
51
+ }
52
+ function severityLabel(severity) {
53
+ return severity === 'CRITICAL' || severity === 'HIGH' ? pc.red(severity) : severity === 'MEDIUM' ? pc.yellow(severity) : severity;
54
+ }
55
+ /** `intutic incidents list` */
56
+ export async function runIncidentsList(opts) {
57
+ const path = `/api/v1/incidents${incidentQuery(opts)}`;
58
+ await runApiCommand(opts, 'Failed to list incidents', (client) => client.get(path), (res) => {
59
+ log.header('Intutic — Incidents');
60
+ if (res.data.length === 0) {
61
+ log.dim(' No incidents match.');
62
+ return;
63
+ }
64
+ for (const i of res.data) {
65
+ console.log(` ${i.incident_id} ${severityLabel(i.severity)} ${i.anomaly_type} ${i.resolution_status ?? 'OPEN'} ${pc.dim(i.created_at ?? '')}`);
66
+ log.dim(` ${i.description}`);
67
+ }
68
+ const { total, page, limit, audit } = res.meta;
69
+ log.dim(` Page ${page} of ${Math.max(1, Math.ceil(total / limit))}, ${total} matching, ranked by review priority.`);
70
+ if (audit?.overBudget) {
71
+ log.warn(`The review queue covers the ${audit.budget} most suspicious of ${audit.matched} matching incidents: ${audit.withheld} not shown.`);
72
+ }
73
+ });
74
+ }
75
+ /** `intutic incidents show <incidentId>` */
76
+ export async function runIncidentsShow(incidentId, opts) {
77
+ await runApiCommand(opts, `Failed to read incident ${incidentId}`, async (client) => (await client.get(`/api/v1/incidents/${encodeURIComponent(incidentId)}`)).data, (i) => {
78
+ log.header(`Intutic — Incident ${i.incident_id}`);
79
+ log.field('Type', i.anomaly_type);
80
+ log.field('Severity', severityLabel(i.severity));
81
+ log.field('Status', i.resolution_status ?? 'OPEN');
82
+ log.field('Created', i.created_at ?? '—');
83
+ if (i.resolved_at)
84
+ log.field('Resolved', `${i.resolved_at}${i.resolved_by ? ` by ${i.resolved_by}` : ''}`);
85
+ if (i.session_id)
86
+ log.field('Session', i.session_id);
87
+ if (i.trace_id)
88
+ log.field('Trace', i.trace_id);
89
+ log.field('Description', i.description);
90
+ if (i.escalation_chain)
91
+ log.field('Details', JSON.stringify(i.escalation_chain));
92
+ });
93
+ }
94
+ //# sourceMappingURL=incidents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incidents.js","sourceRoot":"","sources":["../../src/commands/incidents.ts"],"names":[],"mappings":"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"}
@@ -12,12 +12,13 @@
12
12
  * value with a 400 naming it, so the CLI stays correct as settings are added.
13
13
  * The MCP policy (`mcpDefaultPolicy`, `mcpHighRiskToolChange`, `mcpBudgets`,
14
14
  * `mcpInjectionAction`, `mcpAnomalyMode`, …), the group policy
15
- * (`sso_group_policy`), the PII detector actions (`piiDetectors`) and
16
- * `configBodyUpload` are all set this way.
15
+ * (`sso_group_policy`), the PII detector actions (`piiDetectors`), upstream
16
+ * retries and fallbacks (`upstreamRetry`) and `configBodyUpload` are all set
17
+ * this way.
17
18
  *
18
19
  * The structured settings with a schema in `@intutic/shared-types` are
19
- * checked here first, so a mistake in a budgets, group-policy or detector
20
- * file is reported with the path of the field at fault rather than only the
20
+ * checked here first, so a mistake in a budgets, group-policy, detector or
21
+ * retry file is reported with the path of the field at fault rather than only the
21
22
  * top-level key the server's 400 names.
22
23
  *
23
24
  * @module
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/commands/settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,EAAqC,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAOxF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAWnE;AAMD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAMtD;AAED,mCAAmC;AACnC,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BjG;AAED,2DAA2D;AAC3D,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,IAAI,EAAE,cAAc,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACvC,OAAO,CAAC,IAAI,CAAC,CAoBf"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/commands/settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AASH,OAAO,EAAqC,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAOxF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAYnE;AAMD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAMtD;AAED,mCAAmC;AACnC,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BjG;AAED,2DAA2D;AAC3D,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,IAAI,EAAE,cAAc,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACvC,OAAO,CAAC,IAAI,CAAC,CAoBf"}