@indemn/cli 1.6.0 → 1.7.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.
- package/.claude-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +9 -4
- package/.github/workflows/ci.yml +10 -0
- package/.github/workflows/publish.yml +2 -2
- package/.mcp.json +1 -4
- package/CONTRIBUTING.md +3 -1
- package/README.md +69 -176
- package/dist/cli/agents.d.ts.map +1 -1
- package/dist/cli/agents.js +226 -18
- package/dist/cli/agents.js.map +1 -1
- package/dist/cli/analytics.d.ts +3 -0
- package/dist/cli/analytics.d.ts.map +1 -0
- package/dist/cli/analytics.js +133 -0
- package/dist/cli/analytics.js.map +1 -0
- package/dist/cli/auth.d.ts.map +1 -1
- package/dist/cli/auth.js +62 -17
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/billing.d.ts +3 -0
- package/dist/cli/billing.d.ts.map +1 -0
- package/dist/cli/billing.js +23 -0
- package/dist/cli/billing.js.map +1 -0
- package/dist/cli/campaigns.d.ts +3 -0
- package/dist/cli/campaigns.d.ts.map +1 -0
- package/dist/cli/campaigns.js +34 -0
- package/dist/cli/campaigns.js.map +1 -0
- package/dist/cli/chat.d.ts.map +1 -1
- package/dist/cli/chat.js +69 -102
- package/dist/cli/chat.js.map +1 -1
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +71 -27
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/conversations.d.ts +3 -0
- package/dist/cli/conversations.d.ts.map +1 -0
- package/dist/cli/conversations.js +129 -0
- package/dist/cli/conversations.js.map +1 -0
- package/dist/cli/distribution.d.ts +3 -0
- package/dist/cli/distribution.d.ts.map +1 -0
- package/dist/cli/distribution.js +122 -0
- package/dist/cli/distribution.js.map +1 -0
- package/dist/cli/eval.d.ts.map +1 -1
- package/dist/cli/eval.js +315 -71
- package/dist/cli/eval.js.map +1 -1
- package/dist/cli/functions.d.ts.map +1 -1
- package/dist/cli/functions.js +109 -38
- package/dist/cli/functions.js.map +1 -1
- package/dist/cli/index.js +63 -54
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts +27 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +152 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/kb.d.ts.map +1 -1
- package/dist/cli/kb.js +141 -15
- package/dist/cli/kb.js.map +1 -1
- package/dist/cli/link.d.ts +21 -0
- package/dist/cli/link.d.ts.map +1 -0
- package/dist/cli/link.js +112 -0
- package/dist/cli/link.js.map +1 -0
- package/dist/cli/org.d.ts.map +1 -1
- package/dist/cli/org.js +79 -67
- package/dist/cli/org.js.map +1 -1
- package/dist/cli/platform.d.ts +3 -0
- package/dist/cli/platform.d.ts.map +1 -0
- package/dist/cli/platform.js +133 -0
- package/dist/cli/platform.js.map +1 -0
- package/dist/cli/tickets.d.ts +3 -0
- package/dist/cli/tickets.d.ts.map +1 -0
- package/dist/cli/tickets.js +125 -0
- package/dist/cli/tickets.js.map +1 -0
- package/dist/cli/utils/output.d.ts +15 -9
- package/dist/cli/utils/output.d.ts.map +1 -1
- package/dist/cli/utils/output.js +53 -46
- package/dist/cli/utils/output.js.map +1 -1
- package/dist/cli/voice.d.ts +3 -0
- package/dist/cli/voice.d.ts.map +1 -0
- package/dist/cli/voice.js +206 -0
- package/dist/cli/voice.js.map +1 -0
- package/dist/core/diff.d.ts +16 -0
- package/dist/core/diff.d.ts.map +1 -0
- package/dist/core/diff.js +57 -0
- package/dist/core/diff.js.map +1 -0
- package/dist/core/org-resolver.d.ts +37 -0
- package/dist/core/org-resolver.d.ts.map +1 -0
- package/dist/core/org-resolver.js +73 -0
- package/dist/core/org-resolver.js.map +1 -0
- package/dist/core/runtime.d.ts +36 -0
- package/dist/core/runtime.d.ts.map +1 -0
- package/dist/core/runtime.js +62 -0
- package/dist/core/runtime.js.map +1 -0
- package/dist/core/scope.d.ts +33 -0
- package/dist/core/scope.d.ts.map +1 -0
- package/dist/core/scope.js +37 -0
- package/dist/core/scope.js.map +1 -0
- package/dist/mcp/registry.d.ts +67 -0
- package/dist/mcp/registry.d.ts.map +1 -0
- package/dist/mcp/registry.js +195 -0
- package/dist/mcp/registry.js.map +1 -0
- package/dist/mcp/server.d.ts +9 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +87 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tool-meta.d.ts +21 -0
- package/dist/mcp/tool-meta.d.ts.map +1 -0
- package/dist/mcp/tool-meta.js +203 -0
- package/dist/mcp/tool-meta.js.map +1 -0
- package/dist/mcp/tools.d.ts +2 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +1462 -215
- package/dist/mcp/tools.js.map +1 -1
- package/dist/sdk/agent-bundle.d.ts +99 -0
- package/dist/sdk/agent-bundle.d.ts.map +1 -0
- package/dist/sdk/agent-bundle.js +211 -0
- package/dist/sdk/agent-bundle.js.map +1 -0
- package/dist/sdk/agents.d.ts +54 -1
- package/dist/sdk/agents.d.ts.map +1 -1
- package/dist/sdk/agents.js +59 -5
- package/dist/sdk/agents.js.map +1 -1
- package/dist/sdk/analytics.d.ts +158 -0
- package/dist/sdk/analytics.d.ts.map +1 -0
- package/dist/sdk/analytics.js +185 -0
- package/dist/sdk/analytics.js.map +1 -0
- package/dist/sdk/auth.d.ts +34 -12
- package/dist/sdk/auth.d.ts.map +1 -1
- package/dist/sdk/auth.js +60 -77
- package/dist/sdk/auth.js.map +1 -1
- package/dist/sdk/billing.d.ts +25 -0
- package/dist/sdk/billing.d.ts.map +1 -0
- package/dist/sdk/billing.js +61 -0
- package/dist/sdk/billing.js.map +1 -0
- package/dist/sdk/campaigns.d.ts +35 -0
- package/dist/sdk/campaigns.d.ts.map +1 -0
- package/dist/sdk/campaigns.js +59 -0
- package/dist/sdk/campaigns.js.map +1 -0
- package/dist/sdk/chat.d.ts +25 -2
- package/dist/sdk/chat.d.ts.map +1 -1
- package/dist/sdk/chat.js +37 -10
- package/dist/sdk/chat.js.map +1 -1
- package/dist/sdk/client.d.ts +93 -5
- package/dist/sdk/client.d.ts.map +1 -1
- package/dist/sdk/client.js +362 -100
- package/dist/sdk/client.js.map +1 -1
- package/dist/sdk/config-change.d.ts +74 -0
- package/dist/sdk/config-change.d.ts.map +1 -0
- package/dist/sdk/config-change.js +117 -0
- package/dist/sdk/config-change.js.map +1 -0
- package/dist/sdk/config.d.ts.map +1 -1
- package/dist/sdk/config.js +2 -1
- package/dist/sdk/config.js.map +1 -1
- package/dist/sdk/conversations.d.ts +101 -0
- package/dist/sdk/conversations.d.ts.map +1 -0
- package/dist/sdk/conversations.js +155 -0
- package/dist/sdk/conversations.js.map +1 -0
- package/dist/sdk/credentials.d.ts +25 -0
- package/dist/sdk/credentials.d.ts.map +1 -0
- package/dist/sdk/credentials.js +44 -0
- package/dist/sdk/credentials.js.map +1 -0
- package/dist/sdk/distribution.d.ts +94 -0
- package/dist/sdk/distribution.d.ts.map +1 -0
- package/dist/sdk/distribution.js +100 -0
- package/dist/sdk/distribution.js.map +1 -0
- package/dist/sdk/eval.d.ts +81 -0
- package/dist/sdk/eval.d.ts.map +1 -1
- package/dist/sdk/eval.js +117 -0
- package/dist/sdk/eval.js.map +1 -1
- package/dist/sdk/functions.d.ts +14 -1
- package/dist/sdk/functions.d.ts.map +1 -1
- package/dist/sdk/functions.js +48 -5
- package/dist/sdk/functions.js.map +1 -1
- package/dist/sdk/index.d.ts +2 -0
- package/dist/sdk/index.d.ts.map +1 -1
- package/dist/sdk/index.js +2 -0
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/jarvis-chat.d.ts +28 -0
- package/dist/sdk/jarvis-chat.d.ts.map +1 -0
- package/dist/sdk/jarvis-chat.js +117 -0
- package/dist/sdk/jarvis-chat.js.map +1 -0
- package/dist/sdk/kb.d.ts +69 -1
- package/dist/sdk/kb.d.ts.map +1 -1
- package/dist/sdk/kb.js +111 -24
- package/dist/sdk/kb.js.map +1 -1
- package/dist/sdk/orgs.d.ts +13 -0
- package/dist/sdk/orgs.d.ts.map +1 -0
- package/dist/sdk/orgs.js +59 -0
- package/dist/sdk/orgs.js.map +1 -0
- package/dist/sdk/platform.d.ts +62 -0
- package/dist/sdk/platform.d.ts.map +1 -0
- package/dist/sdk/platform.js +95 -0
- package/dist/sdk/platform.js.map +1 -0
- package/dist/sdk/session.d.ts +25 -0
- package/dist/sdk/session.d.ts.map +1 -0
- package/dist/sdk/session.js +69 -0
- package/dist/sdk/session.js.map +1 -0
- package/dist/sdk/skills.d.ts +46 -0
- package/dist/sdk/skills.d.ts.map +1 -0
- package/dist/sdk/skills.js +203 -0
- package/dist/sdk/skills.js.map +1 -0
- package/dist/sdk/test-chat.d.ts +52 -0
- package/dist/sdk/test-chat.d.ts.map +1 -0
- package/dist/sdk/test-chat.js +134 -0
- package/dist/sdk/test-chat.js.map +1 -0
- package/dist/sdk/tickets.d.ts +98 -0
- package/dist/sdk/tickets.d.ts.map +1 -0
- package/dist/sdk/tickets.js +91 -0
- package/dist/sdk/tickets.js.map +1 -0
- package/dist/sdk/types.d.ts +91 -6
- package/dist/sdk/types.d.ts.map +1 -1
- package/dist/sdk/voice.d.ts +147 -0
- package/dist/sdk/voice.d.ts.map +1 -0
- package/dist/sdk/voice.js +236 -0
- package/dist/sdk/voice.js.map +1 -0
- package/package.json +22 -3
- package/scripts/check-skills.mjs +25 -0
- package/skills/agent-builder/SKILL.md +89 -252
- package/skills/evaluations/SKILL.md +23 -234
- package/skills/evaluations/references/analysis.md +95 -0
- package/skills/evaluations/references/cli-reference.md +28 -0
- package/skills/evaluations/references/json-formats.md +100 -0
- package/src/cli/agents.ts +202 -22
- package/src/cli/analytics.ts +138 -0
- package/src/cli/auth.ts +56 -18
- package/src/cli/billing.ts +25 -0
- package/src/cli/campaigns.ts +33 -0
- package/src/cli/chat.ts +66 -115
- package/src/cli/config.ts +65 -31
- package/src/cli/conversations.ts +133 -0
- package/src/cli/distribution.ts +116 -0
- package/src/cli/eval.ts +254 -70
- package/src/cli/functions.ts +105 -39
- package/src/cli/index.ts +58 -55
- package/src/cli/init.ts +154 -0
- package/src/cli/kb.ts +120 -17
- package/src/cli/link.ts +117 -0
- package/src/cli/org.ts +81 -75
- package/src/cli/platform.ts +128 -0
- package/src/cli/tickets.ts +130 -0
- package/src/cli/utils/output.ts +51 -42
- package/src/cli/voice.ts +204 -0
- package/src/core/diff.ts +52 -0
- package/src/core/org-resolver.ts +113 -0
- package/src/core/runtime.ts +73 -0
- package/src/core/scope.ts +64 -0
- package/src/mcp/registry.ts +236 -0
- package/src/mcp/server.ts +84 -2
- package/src/mcp/tool-meta.ts +241 -0
- package/src/mcp/tools.ts +1529 -265
- package/src/sdk/agent-bundle.ts +245 -0
- package/src/sdk/agents.ts +74 -5
- package/src/sdk/analytics.ts +220 -0
- package/src/sdk/auth.ts +87 -107
- package/src/sdk/billing.ts +59 -0
- package/src/sdk/campaigns.ts +60 -0
- package/src/sdk/chat.ts +44 -10
- package/src/sdk/client.ts +373 -102
- package/src/sdk/config-change.ts +148 -0
- package/src/sdk/config.ts +2 -1
- package/src/sdk/conversations.ts +199 -0
- package/src/sdk/credentials.ts +53 -0
- package/src/sdk/distribution.ts +132 -0
- package/src/sdk/eval.ts +140 -0
- package/src/sdk/functions.ts +52 -6
- package/src/sdk/index.ts +2 -0
- package/src/sdk/jarvis-chat.ts +112 -0
- package/src/sdk/kb.ts +116 -29
- package/src/sdk/orgs.ts +62 -0
- package/src/sdk/platform.ts +115 -0
- package/src/sdk/session.ts +90 -0
- package/src/sdk/skills.ts +188 -0
- package/src/sdk/test-chat.ts +151 -0
- package/src/sdk/tickets.ts +120 -0
- package/src/sdk/types.ts +88 -6
- package/src/sdk/voice.ts +262 -0
- package/test/cli/entry.test.ts +34 -0
- package/test/cli/init.test.ts +66 -0
- package/test/cli/link.test.ts +57 -0
- package/test/core/org-resolver.test.ts +92 -0
- package/test/core/runtime.test.ts +30 -0
- package/test/core/scope.test.ts +93 -0
- package/test/harness.test.ts +24 -0
- package/test/helpers/config-home.ts +22 -0
- package/test/helpers/fake-middleware.ts +56 -0
- package/test/helpers/fetch-recorder.ts +75 -0
- package/test/helpers/jwt.ts +9 -0
- package/test/helpers/mcp-pair.ts +38 -0
- package/test/mcp/__snapshots__/tools-snapshot.test.ts.snap +145 -0
- package/test/mcp/askers.test.ts +60 -0
- package/test/mcp/elicit-timeout.test.ts +29 -0
- package/test/mcp/registry.test.ts +169 -0
- package/test/mcp/shaping.test.ts +41 -0
- package/test/mcp/tools-snapshot.test.ts +42 -0
- package/test/sdk/agents.test.ts +232 -0
- package/test/sdk/analytics.test.ts +89 -0
- package/test/sdk/auth.test.ts +70 -0
- package/test/sdk/billing.test.ts +47 -0
- package/test/sdk/campaigns.test.ts +43 -0
- package/test/sdk/client.test.ts +80 -0
- package/test/sdk/config-change.test.ts +142 -0
- package/test/sdk/conversations.test.ts +80 -0
- package/test/sdk/credentials.test.ts +33 -0
- package/test/sdk/distribution.test.ts +55 -0
- package/test/sdk/eval.test.ts +155 -0
- package/test/sdk/kb-upload.test.ts +50 -0
- package/test/sdk/kb.test.ts +95 -0
- package/test/sdk/orgs.test.ts +48 -0
- package/test/sdk/platform.test.ts +89 -0
- package/test/sdk/renewal.test.ts +115 -0
- package/test/sdk/session.test.ts +60 -0
- package/test/sdk/skills.test.ts +235 -0
- package/test/sdk/test-chat.test.ts +112 -0
- package/test/sdk/tickets.test.ts +42 -0
- package/test/sdk/voice.test.ts +147 -0
- package/vitest.config.ts +11 -0
package/dist/sdk/client.js
CHANGED
|
@@ -1,36 +1,84 @@
|
|
|
1
1
|
import Conf from 'conf';
|
|
2
2
|
import { chmodSync } from 'node:fs';
|
|
3
|
-
|
|
3
|
+
import { CliError, cliVersion, isDebug, SessionExpiredError } from '../core/runtime.js';
|
|
4
|
+
import { copilotAuthHeader, darwinAuthHeader, resolveCredential } from './credentials.js';
|
|
5
|
+
import { exchangeIdToken, needsRenewal, refreshIdToken, toStoredSession } from './session.js';
|
|
6
|
+
import { findLinkFile, resolveOrg } from '../core/org-resolver.js';
|
|
7
|
+
import { emitOrgResolved, getAskers, getOrgFlag, scopedOrg } from '../core/scope.js';
|
|
8
|
+
export const DEFAULT_HOSTS = {
|
|
4
9
|
dev: {
|
|
5
10
|
copilot: 'https://devcopilot.indemn.ai/api',
|
|
6
11
|
evaluations: 'https://devevaluations.indemn.ai',
|
|
7
12
|
middleware: 'https://devproxy.indemn.ai',
|
|
13
|
+
platform: 'https://devplatform.indemn.ai/api/v1',
|
|
8
14
|
},
|
|
9
15
|
production: {
|
|
10
16
|
copilot: 'https://copilot.indemn.ai/api',
|
|
11
17
|
evaluations: 'https://evaluations.indemn.ai',
|
|
12
18
|
middleware: 'https://proxy.indemn.ai',
|
|
19
|
+
platform: 'https://platform.indemn.ai/api/v1',
|
|
13
20
|
},
|
|
14
21
|
};
|
|
22
|
+
let clientKind = 'cli';
|
|
23
|
+
const RETRY_STATUSES = new Set([502, 503, 504]);
|
|
24
|
+
const RETRY_DELAYS_MS = [300, 600];
|
|
25
|
+
function isEnvironment(value) {
|
|
26
|
+
return value === 'dev' || value === 'production';
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The environment belongs to the credential. A saved login knows its own
|
|
30
|
+
* environment; an API key says it in its prefix. INDEMN_ENV is only read for a
|
|
31
|
+
* host-supplied session token (INDEMN_TOKEN), which carries no environment.
|
|
32
|
+
*/
|
|
33
|
+
export function resolveEnvironment(config, env = process.env) {
|
|
34
|
+
if (env.INDEMN_TOKEN && isEnvironment(env.INDEMN_ENV))
|
|
35
|
+
return env.INDEMN_ENV;
|
|
36
|
+
if (env.INDEMN_API_KEY?.startsWith('ind_live_'))
|
|
37
|
+
return 'production';
|
|
38
|
+
if (env.INDEMN_API_KEY?.startsWith('ind_dev_'))
|
|
39
|
+
return 'dev';
|
|
40
|
+
if (config && isEnvironment(config.environment))
|
|
41
|
+
return config.environment;
|
|
42
|
+
return 'dev';
|
|
43
|
+
}
|
|
44
|
+
function sleep(ms) {
|
|
45
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
46
|
+
}
|
|
47
|
+
/** One renewal at a time per process, shared by every client. */
|
|
48
|
+
let renewing = null;
|
|
15
49
|
export class IndemnClient {
|
|
16
|
-
|
|
17
|
-
|
|
50
|
+
explicitCredential;
|
|
51
|
+
orgOverride;
|
|
18
52
|
environment;
|
|
19
53
|
hosts;
|
|
54
|
+
resolvedOrg;
|
|
55
|
+
linkCache;
|
|
56
|
+
membershipCache;
|
|
57
|
+
ignoreLink;
|
|
20
58
|
constructor(opts) {
|
|
21
|
-
// Priority: explicit opts > env vars > config file
|
|
22
59
|
const config = IndemnClient.loadConfig();
|
|
23
|
-
|
|
24
|
-
this.
|
|
25
|
-
|
|
60
|
+
const env = opts?.environment || resolveEnvironment(config);
|
|
61
|
+
this.explicitCredential = opts?.token
|
|
62
|
+
? { kind: 'token', token: opts.token, source: 'env', environment: env }
|
|
63
|
+
: opts?.apiKey
|
|
64
|
+
? { kind: 'api_key', key: opts.apiKey, source: 'env', environment: env }
|
|
65
|
+
: null;
|
|
66
|
+
this.orgOverride = opts?.orgId;
|
|
67
|
+
this.ignoreLink = Boolean(opts?.ignoreLink);
|
|
68
|
+
this.environment = env;
|
|
26
69
|
const defaultHosts = DEFAULT_HOSTS[this.environment];
|
|
27
70
|
const configHosts = config?.hosts?.[this.environment];
|
|
28
71
|
this.hosts = {
|
|
29
72
|
copilot: process.env.INDEMN_COPILOT_URL || configHosts?.copilot || defaultHosts.copilot,
|
|
30
73
|
evaluations: process.env.INDEMN_EVALS_URL || configHosts?.evaluations || defaultHosts.evaluations,
|
|
31
74
|
middleware: process.env.INDEMN_MIDDLEWARE_URL || configHosts?.middleware || defaultHosts.middleware,
|
|
75
|
+
platform: process.env.INDEMN_PLATFORM_URL || configHosts?.platform || defaultHosts.platform,
|
|
32
76
|
};
|
|
33
77
|
}
|
|
78
|
+
/** Name the caller in the X-Indemn-Client header: the terminal CLI or the MCP server. */
|
|
79
|
+
static setClientKind(kind) {
|
|
80
|
+
clientKind = kind;
|
|
81
|
+
}
|
|
34
82
|
static getConfigStore() {
|
|
35
83
|
return new Conf({
|
|
36
84
|
projectName: 'indemn',
|
|
@@ -38,18 +86,21 @@ export class IndemnClient {
|
|
|
38
86
|
cwd: `${process.env.HOME}/.indemn`,
|
|
39
87
|
});
|
|
40
88
|
}
|
|
89
|
+
/** The saved login, or null. Read fresh on every request so a new login in another terminal is picked up. */
|
|
41
90
|
static loadConfig() {
|
|
42
91
|
try {
|
|
43
92
|
const store = IndemnClient.getConfigStore();
|
|
93
|
+
const session = store.get('session');
|
|
44
94
|
const apiKey = store.get('api_key');
|
|
45
|
-
if (!apiKey)
|
|
95
|
+
if (!session?.token && !apiKey)
|
|
46
96
|
return null;
|
|
47
97
|
return {
|
|
48
|
-
api_key: apiKey,
|
|
49
|
-
org_id: store.get('org_id', ''),
|
|
50
|
-
org_name: store.get('org_name', '') || undefined,
|
|
51
|
-
user_id: store.get('user_id', ''),
|
|
52
98
|
environment: store.get('environment', 'dev'),
|
|
99
|
+
user_id: store.get('user_id', ''),
|
|
100
|
+
email: store.get('email'),
|
|
101
|
+
session,
|
|
102
|
+
orgs: store.get('orgs'),
|
|
103
|
+
api_key: apiKey,
|
|
53
104
|
hosts: store.get('hosts', DEFAULT_HOSTS),
|
|
54
105
|
};
|
|
55
106
|
}
|
|
@@ -60,9 +111,12 @@ export class IndemnClient {
|
|
|
60
111
|
static saveConfig(config) {
|
|
61
112
|
const store = IndemnClient.getConfigStore();
|
|
62
113
|
for (const [key, value] of Object.entries(config)) {
|
|
63
|
-
|
|
114
|
+
if (value === undefined)
|
|
115
|
+
store.delete(key);
|
|
116
|
+
else
|
|
117
|
+
store.set(key, value);
|
|
64
118
|
}
|
|
65
|
-
// Restrict config file to owner-only (contains
|
|
119
|
+
// Restrict config file to owner-only (contains credentials)
|
|
66
120
|
try {
|
|
67
121
|
chmodSync(store.path, 0o600);
|
|
68
122
|
}
|
|
@@ -75,133 +129,341 @@ export class IndemnClient {
|
|
|
75
129
|
store.clear();
|
|
76
130
|
}
|
|
77
131
|
getEnvironment() { return this.environment; }
|
|
78
|
-
getOrgId() { return this.orgId; }
|
|
79
|
-
getApiKey() { return this.apiKey; }
|
|
80
132
|
getHosts() { return this.hosts; }
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
133
|
+
/** The credential for the next request. Never cached: the saved login may have been renewed or replaced. */
|
|
134
|
+
getCredential() {
|
|
135
|
+
return this.explicitCredential ?? resolveCredential(IndemnClient.loadConfig());
|
|
136
|
+
}
|
|
137
|
+
requireCredential() {
|
|
138
|
+
const cred = this.getCredential();
|
|
139
|
+
if (!cred)
|
|
140
|
+
throw new SessionExpiredError('Not logged in. Run `indemn login` first.');
|
|
141
|
+
return cred;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get a fresh copilot session with the saved Firebase refresh token, save
|
|
145
|
+
* it, and revoke the old one. Accounts with MFA are asked for the emailed
|
|
146
|
+
* code when a terminal or MCP host can ask; otherwise the person must log in.
|
|
147
|
+
*/
|
|
148
|
+
async renewSession() {
|
|
149
|
+
if (renewing)
|
|
150
|
+
return renewing;
|
|
151
|
+
renewing = (async () => {
|
|
152
|
+
const config = IndemnClient.loadConfig();
|
|
153
|
+
const old = config?.session;
|
|
154
|
+
if (!config || !old?.refresh_token) {
|
|
155
|
+
throw new SessionExpiredError('Session expired. Run `indemn login`, then retry.');
|
|
156
|
+
}
|
|
157
|
+
const { idToken, refreshToken } = await refreshIdToken(config.environment, old.refresh_token);
|
|
158
|
+
const { token } = await exchangeIdToken((path, body, headers) => this.copilotPostUnauth(path, body, headers), idToken, getAskers().mfaCode);
|
|
159
|
+
IndemnClient.saveConfig({ session: toStoredSession(token, refreshToken) });
|
|
160
|
+
try {
|
|
161
|
+
await this.send('copilot', 'POST', `${this.hosts.copilot}/auth/firebase/logout`, {
|
|
162
|
+
auth: false,
|
|
163
|
+
headers: { Authorization: `JWT ${old.token}` },
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
// Best effort: the old token expires within the hour anyway.
|
|
168
|
+
}
|
|
169
|
+
})().finally(() => {
|
|
170
|
+
renewing = null;
|
|
171
|
+
});
|
|
172
|
+
return renewing;
|
|
173
|
+
}
|
|
174
|
+
/** The credential for the next request, renewed first when a saved session is about to expire. */
|
|
175
|
+
async freshCredential() {
|
|
176
|
+
let cred = this.requireCredential();
|
|
177
|
+
if (cred.kind === 'token' && cred.source === 'config') {
|
|
178
|
+
const session = IndemnClient.loadConfig()?.session;
|
|
179
|
+
if (session && needsRenewal(session)) {
|
|
180
|
+
await this.renewSession();
|
|
181
|
+
cred = this.requireCredential();
|
|
182
|
+
}
|
|
84
183
|
}
|
|
184
|
+
return cred;
|
|
85
185
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
186
|
+
async authHeader() {
|
|
187
|
+
return copilotAuthHeader(await this.freshCredential());
|
|
188
|
+
}
|
|
189
|
+
// --- Organizations -------------------------------------------------------
|
|
190
|
+
/** The `.indemn/project.json` in effect for this working directory. */
|
|
191
|
+
getLink() {
|
|
192
|
+
if (this.ignoreLink)
|
|
193
|
+
return null;
|
|
194
|
+
if (this.linkCache === undefined)
|
|
195
|
+
this.linkCache = findLinkFile();
|
|
196
|
+
return this.linkCache;
|
|
197
|
+
}
|
|
198
|
+
/** Orgs the user belongs to: saved at login, else asked live from copilot. */
|
|
199
|
+
async memberships() {
|
|
200
|
+
if (this.membershipCache)
|
|
201
|
+
return this.membershipCache;
|
|
202
|
+
const cred = this.requireCredential();
|
|
203
|
+
const saved = cred.source === 'config' ? IndemnClient.loadConfig()?.orgs : undefined;
|
|
204
|
+
if (saved?.length) {
|
|
205
|
+
this.membershipCache = saved;
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
const res = await this.copilotGet('/organization');
|
|
209
|
+
this.membershipCache = (res.userOrganizations ?? []).map((o) => ({ id: String(o._id), name: o.name }));
|
|
210
|
+
}
|
|
211
|
+
return this.membershipCache;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* The org this client acts on. `explicit` is an MCP tool's org_id; the
|
|
215
|
+
* terminal passes --org through the scope module. Decided once per client.
|
|
216
|
+
*/
|
|
217
|
+
async resolveOrg(explicit, opts = {}) {
|
|
218
|
+
const run = async () => {
|
|
219
|
+
const resolved = await resolveOrg({
|
|
220
|
+
flag: explicit ?? this.orgOverride ?? getOrgFlag(),
|
|
221
|
+
envOrg: process.env.INDEMN_ORG_ID || undefined,
|
|
222
|
+
link: this.getLink(),
|
|
223
|
+
environment: this.environment,
|
|
224
|
+
memberships: () => this.memberships(),
|
|
225
|
+
ask: getAskers().chooseOrg,
|
|
226
|
+
});
|
|
227
|
+
const known = this.membershipCache ?? IndemnClient.loadConfig()?.orgs ?? [];
|
|
228
|
+
const name = known.find((o) => o.id === resolved.id)?.name ?? resolved.link?.org_name;
|
|
229
|
+
return { ...resolved, name };
|
|
230
|
+
};
|
|
231
|
+
if (explicit || opts.cache === false)
|
|
232
|
+
return run();
|
|
233
|
+
if (!this.resolvedOrg) {
|
|
234
|
+
this.resolvedOrg = run().then((org) => {
|
|
235
|
+
emitOrgResolved({ id: org.id, name: org.name, source: org.source, environment: this.environment });
|
|
236
|
+
return org;
|
|
237
|
+
});
|
|
238
|
+
this.resolvedOrg.catch(() => { this.resolvedOrg = undefined; });
|
|
239
|
+
}
|
|
240
|
+
return this.resolvedOrg;
|
|
241
|
+
}
|
|
242
|
+
/** Org id for the current call: an MCP call's scope first, then this client's resolution. */
|
|
243
|
+
async currentOrgId() {
|
|
244
|
+
return scopedOrg() ?? (await this.resolveOrg()).id;
|
|
245
|
+
}
|
|
246
|
+
/** What every MCP result reports as its origin. Never triggers a question. */
|
|
247
|
+
async getResultContext() {
|
|
248
|
+
const scoped = scopedOrg();
|
|
249
|
+
const settled = this.resolvedOrg ? await this.resolvedOrg.catch(() => undefined) : undefined;
|
|
250
|
+
const id = scoped ?? settled?.id;
|
|
251
|
+
const known = this.membershipCache ?? IndemnClient.loadConfig()?.orgs ?? [];
|
|
252
|
+
return { org_id: id, org_name: id ? known.find((o) => o.id === id)?.name : undefined, environment: this.environment };
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* In a linked folder with an agent list, refuse any agent that is not on
|
|
256
|
+
* the list before a request leaves the machine.
|
|
257
|
+
*/
|
|
258
|
+
assertAgentInScope(path) {
|
|
259
|
+
const link = this.getLink();
|
|
260
|
+
if (!link || link.agents.length === 0)
|
|
261
|
+
return;
|
|
262
|
+
const match = /\/bots\/([a-f0-9]{24})(?:\/|$|\?)/i.exec(path);
|
|
263
|
+
if (match && !link.agents.includes(match[1])) {
|
|
264
|
+
throw new CliError(`Agent ${match[1]} is not linked in ${link.path}. Linked agents: ${link.agents.join(', ')}. ` +
|
|
265
|
+
'Add it with `indemn link` or work from another folder.');
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
async buildCopilotUrl(path) {
|
|
269
|
+
let resolvedPath = path;
|
|
270
|
+
if (path.includes(':org_id')) {
|
|
271
|
+
resolvedPath = path.replace(':org_id', await this.currentOrgId());
|
|
272
|
+
}
|
|
273
|
+
this.assertAgentInScope(resolvedPath);
|
|
89
274
|
return `${this.hosts.copilot}${resolvedPath}`;
|
|
90
275
|
}
|
|
91
276
|
buildEvalsUrl(path) {
|
|
92
277
|
return `${this.hosts.evaluations}${path}`;
|
|
93
278
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
279
|
+
/**
|
|
280
|
+
* The one place every request goes through: client headers, credential,
|
|
281
|
+
* --debug tracing, and retries for reads only (a retried create could
|
|
282
|
+
* create twice).
|
|
283
|
+
*/
|
|
284
|
+
async send(backend, method, url, opts = {}) {
|
|
285
|
+
const headers = {
|
|
286
|
+
'User-Agent': `indemn-cli/${cliVersion()}`,
|
|
287
|
+
'X-Indemn-Client': clientKind,
|
|
288
|
+
...opts.headers,
|
|
289
|
+
};
|
|
290
|
+
let body;
|
|
291
|
+
if (opts.body instanceof FormData) {
|
|
292
|
+
body = opts.body;
|
|
293
|
+
}
|
|
294
|
+
else if (opts.body !== undefined) {
|
|
295
|
+
headers['Content-Type'] = 'application/json';
|
|
296
|
+
body = JSON.stringify(opts.body);
|
|
297
|
+
}
|
|
298
|
+
else if (method !== 'GET') {
|
|
299
|
+
headers['Content-Type'] = 'application/json';
|
|
300
|
+
}
|
|
301
|
+
if (backend === 'copilot' && opts.auth !== false) {
|
|
302
|
+
headers['Authorization'] = await this.authHeader();
|
|
303
|
+
}
|
|
304
|
+
const attempts = method === 'GET' ? RETRY_DELAYS_MS.length + 1 : 1;
|
|
305
|
+
for (let attempt = 0;; attempt++) {
|
|
306
|
+
const started = Date.now();
|
|
307
|
+
if (isDebug())
|
|
308
|
+
process.stderr.write(`[debug] → ${method} ${url}\n`);
|
|
309
|
+
try {
|
|
310
|
+
const res = await fetch(url, { method, headers, body });
|
|
311
|
+
if (isDebug())
|
|
312
|
+
process.stderr.write(`[debug] ← ${res.status} ${method} ${url} (${Date.now() - started} ms)\n`);
|
|
313
|
+
if (RETRY_STATUSES.has(res.status) && attempt + 1 < attempts) {
|
|
314
|
+
await sleep(RETRY_DELAYS_MS[attempt]);
|
|
315
|
+
continue;
|
|
316
|
+
}
|
|
317
|
+
return res;
|
|
318
|
+
}
|
|
319
|
+
catch (err) {
|
|
320
|
+
if (isDebug())
|
|
321
|
+
process.stderr.write(`[debug] ✗ ${method} ${url}: ${err.message}\n`);
|
|
322
|
+
if (attempt + 1 < attempts) {
|
|
323
|
+
await sleep(RETRY_DELAYS_MS[attempt]);
|
|
324
|
+
continue;
|
|
325
|
+
}
|
|
326
|
+
throw err;
|
|
102
327
|
}
|
|
103
328
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
329
|
+
}
|
|
330
|
+
withQuery(url, query) {
|
|
331
|
+
if (!query)
|
|
332
|
+
return url;
|
|
333
|
+
const u = new URL(url);
|
|
334
|
+
for (const [k, v] of Object.entries(query)) {
|
|
335
|
+
if (v !== undefined && v !== null)
|
|
336
|
+
u.searchParams.set(k, v);
|
|
337
|
+
}
|
|
338
|
+
return u.toString();
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* A copilot request with the session rules: renew before expiry, and on a
|
|
342
|
+
* 401 with a saved session renew once and retry once.
|
|
343
|
+
*/
|
|
344
|
+
async copilotRequest(method, path, opts = {}) {
|
|
345
|
+
const url = this.withQuery(await this.buildCopilotUrl(path), opts.query);
|
|
346
|
+
let res = await this.send('copilot', method, url, { body: opts.body });
|
|
347
|
+
const cred = this.getCredential();
|
|
348
|
+
if (res.status === 401 && cred?.kind === 'token' && cred.source === 'config') {
|
|
349
|
+
await this.renewSession();
|
|
350
|
+
res = await this.send('copilot', method, url, { body: opts.body });
|
|
351
|
+
}
|
|
110
352
|
return this.handleCopilotResponse(res);
|
|
111
353
|
}
|
|
354
|
+
/** A copilot request with any method (for PATCH and other routes without a helper). */
|
|
355
|
+
async copilotRequestRaw(method, path, body) {
|
|
356
|
+
return this.copilotRequest(method, path, { body });
|
|
357
|
+
}
|
|
358
|
+
/** A copilot request whose answer is a file or audio, returned as bytes. */
|
|
359
|
+
async copilotBinary(method, path, body) {
|
|
360
|
+
const res = await this.send('copilot', method, await this.buildCopilotUrl(path), { body });
|
|
361
|
+
if (res.status === 401)
|
|
362
|
+
throw new SessionExpiredError('Authentication failed. Run `indemn login` to re-authenticate.');
|
|
363
|
+
if (!res.ok)
|
|
364
|
+
throw new Error(`API error (${res.status}): ${await res.text()}`);
|
|
365
|
+
return { contentType: res.headers.get('content-type') ?? 'application/octet-stream', data: Buffer.from(await res.arrayBuffer()) };
|
|
366
|
+
}
|
|
367
|
+
// Copilot Server requests (with /api/ prefix and org_id injection)
|
|
368
|
+
async copilotGet(path, query) {
|
|
369
|
+
return this.copilotRequest('GET', path, { query });
|
|
370
|
+
}
|
|
112
371
|
async copilotPost(path, body) {
|
|
113
|
-
this.
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
'Content-Type': 'application/json',
|
|
119
|
-
},
|
|
120
|
-
body: body ? JSON.stringify(body) : undefined,
|
|
121
|
-
});
|
|
122
|
-
return this.handleCopilotResponse(res);
|
|
372
|
+
return this.copilotRequest('POST', path, { body });
|
|
373
|
+
}
|
|
374
|
+
/** Multipart upload (for example a knowledge-base file). */
|
|
375
|
+
async copilotPostForm(path, form) {
|
|
376
|
+
return this.copilotRequest('POST', path, { body: form });
|
|
123
377
|
}
|
|
124
378
|
async copilotPut(path, body) {
|
|
125
|
-
this.
|
|
126
|
-
const res = await fetch(this.buildCopilotUrl(path), {
|
|
127
|
-
method: 'PUT',
|
|
128
|
-
headers: {
|
|
129
|
-
'Authorization': `Bearer ${this.apiKey}`,
|
|
130
|
-
'Content-Type': 'application/json',
|
|
131
|
-
},
|
|
132
|
-
body: body ? JSON.stringify(body) : undefined,
|
|
133
|
-
});
|
|
134
|
-
return this.handleCopilotResponse(res);
|
|
379
|
+
return this.copilotRequest('PUT', path, { body });
|
|
135
380
|
}
|
|
136
381
|
async copilotDelete(path) {
|
|
137
|
-
this.
|
|
138
|
-
const res = await fetch(this.buildCopilotUrl(path), {
|
|
139
|
-
method: 'DELETE',
|
|
140
|
-
headers: {
|
|
141
|
-
'Authorization': `Bearer ${this.apiKey}`,
|
|
142
|
-
'Content-Type': 'application/json',
|
|
143
|
-
},
|
|
144
|
-
});
|
|
145
|
-
return this.handleCopilotResponse(res);
|
|
382
|
+
return this.copilotRequest('DELETE', path);
|
|
146
383
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
384
|
+
/**
|
|
385
|
+
* Darwin (the V2 platform) request: the same session token as copilot, sent
|
|
386
|
+
* as Bearer, with the org in X-Organization-Id. Darwin checks membership and
|
|
387
|
+
* roles itself. A 401 on a saved session renews once and retries once.
|
|
388
|
+
*/
|
|
389
|
+
async platformRequest(method, path, opts = {}) {
|
|
390
|
+
const base = this.hosts.platform;
|
|
391
|
+
if (!base)
|
|
392
|
+
throw new CliError('No V2 platform host is configured for this environment.');
|
|
393
|
+
const url = this.withQuery(`${base}${path}`, opts.query);
|
|
394
|
+
this.assertAgentInScope(path);
|
|
395
|
+
const headersFor = async () => {
|
|
396
|
+
const headers = { Authorization: darwinAuthHeader(await this.freshCredential()) };
|
|
397
|
+
if (opts.orgHeader !== false)
|
|
398
|
+
headers['X-Organization-Id'] = await this.currentOrgId();
|
|
399
|
+
return headers;
|
|
400
|
+
};
|
|
401
|
+
let res = await this.send('platform', method, url, { body: opts.body, headers: await headersFor() });
|
|
402
|
+
const cred = this.getCredential();
|
|
403
|
+
if (res.status === 401 && cred?.kind === 'token' && cred.source === 'config') {
|
|
404
|
+
await this.renewSession();
|
|
405
|
+
res = await this.send('platform', method, url, { body: opts.body, headers: await headersFor() });
|
|
406
|
+
}
|
|
407
|
+
if (res.status === 401)
|
|
408
|
+
throw new SessionExpiredError('The V2 platform rejected the session. Run `indemn login`, then retry.');
|
|
409
|
+
if (!res.ok) {
|
|
410
|
+
const text = await res.text();
|
|
411
|
+
let detail = text;
|
|
412
|
+
try {
|
|
413
|
+
detail = JSON.parse(text).detail ?? text;
|
|
154
414
|
}
|
|
415
|
+
catch { /* plain text */ }
|
|
416
|
+
if (res.status === 403)
|
|
417
|
+
throw new CliError(`Not allowed by the V2 platform: ${typeof detail === 'string' ? detail : JSON.stringify(detail)}`);
|
|
418
|
+
if (res.status === 404)
|
|
419
|
+
throw new CliError('Not found on the V2 platform.');
|
|
420
|
+
throw new CliError(`V2 platform error (${res.status}): ${typeof detail === 'string' ? detail : JSON.stringify(detail)}`);
|
|
155
421
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
422
|
+
if (res.status === 204)
|
|
423
|
+
return undefined;
|
|
424
|
+
return res.json();
|
|
425
|
+
}
|
|
426
|
+
// Evaluations Service requests (no /api/ prefix, no org_id, no auth)
|
|
427
|
+
async evalsGet(path, query) {
|
|
428
|
+
const res = await this.send('evaluations', 'GET', this.withQuery(this.buildEvalsUrl(path), query));
|
|
159
429
|
return this.handleEvalsResponse(res);
|
|
160
430
|
}
|
|
161
431
|
async evalsPost(path, body) {
|
|
162
|
-
const res = await
|
|
163
|
-
method: 'POST',
|
|
164
|
-
headers: { 'Content-Type': 'application/json' },
|
|
165
|
-
body: body ? JSON.stringify(body) : undefined,
|
|
166
|
-
});
|
|
432
|
+
const res = await this.send('evaluations', 'POST', this.buildEvalsUrl(path), { body });
|
|
167
433
|
return this.handleEvalsResponse(res);
|
|
168
434
|
}
|
|
169
435
|
async evalsPut(path, body) {
|
|
170
|
-
const res = await
|
|
171
|
-
method: 'PUT',
|
|
172
|
-
headers: { 'Content-Type': 'application/json' },
|
|
173
|
-
body: body ? JSON.stringify(body) : undefined,
|
|
174
|
-
});
|
|
436
|
+
const res = await this.send('evaluations', 'PUT', this.buildEvalsUrl(path), { body });
|
|
175
437
|
return this.handleEvalsResponse(res);
|
|
176
438
|
}
|
|
177
439
|
async evalsDelete(path) {
|
|
178
|
-
const res = await
|
|
179
|
-
method: 'DELETE',
|
|
180
|
-
headers: { 'Content-Type': 'application/json' },
|
|
181
|
-
});
|
|
440
|
+
const res = await this.send('evaluations', 'DELETE', this.buildEvalsUrl(path));
|
|
182
441
|
return this.handleEvalsResponse(res);
|
|
183
442
|
}
|
|
184
443
|
// Unauthenticated Copilot Server requests (for login flow)
|
|
185
444
|
async copilotPostUnauth(path, body, headers) {
|
|
186
|
-
const res = await
|
|
187
|
-
method: 'POST',
|
|
188
|
-
headers: {
|
|
189
|
-
'Content-Type': 'application/json',
|
|
190
|
-
...headers,
|
|
191
|
-
},
|
|
192
|
-
body: body ? JSON.stringify(body) : undefined,
|
|
193
|
-
});
|
|
445
|
+
const res = await this.send('copilot', 'POST', `${this.hosts.copilot}${path}`, { body, headers, auth: false });
|
|
194
446
|
return this.handleCopilotResponse(res);
|
|
195
447
|
}
|
|
196
448
|
async handleCopilotResponse(res) {
|
|
197
449
|
if (res.status === 401) {
|
|
198
|
-
throw new
|
|
450
|
+
throw new SessionExpiredError('Authentication failed. Run `indemn login` to re-authenticate.');
|
|
199
451
|
}
|
|
200
452
|
if (res.status === 403) {
|
|
201
453
|
throw new Error('Access denied. You may not have permission for this operation.');
|
|
202
454
|
}
|
|
203
455
|
if (res.status === 404) {
|
|
204
|
-
|
|
456
|
+
// Keep the server's reason: voice-service answers 404 with specific messages (no phone number, ...).
|
|
457
|
+
const text = await res.text().catch(() => '');
|
|
458
|
+
let reason = '';
|
|
459
|
+
try {
|
|
460
|
+
const b = JSON.parse(text);
|
|
461
|
+
reason = String(b.message ?? b.error ?? '');
|
|
462
|
+
}
|
|
463
|
+
catch {
|
|
464
|
+
reason = text.trim().startsWith('<') ? '' : text.slice(0, 200);
|
|
465
|
+
}
|
|
466
|
+
throw new Error(reason ? `Not found: ${reason}` : 'Resource not found.');
|
|
205
467
|
}
|
|
206
468
|
if (!res.ok) {
|
|
207
469
|
const text = await res.text();
|
|
@@ -211,7 +473,7 @@ export class IndemnClient {
|
|
|
211
473
|
// Copilot Server wraps responses in { success, data }
|
|
212
474
|
if (json.success !== undefined) {
|
|
213
475
|
if (!json.success) {
|
|
214
|
-
throw new Error(json.msg || 'API request failed');
|
|
476
|
+
throw new Error(json.msg || json.message || 'API request failed');
|
|
215
477
|
}
|
|
216
478
|
return (json.data !== undefined ? json.data : json);
|
|
217
479
|
}
|
package/dist/sdk/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/sdk/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/sdk/client.ts"],"names":[],"mappings":"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"}
|