@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
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { IndemnClient } from './client.js';
|
|
2
|
+
export interface JarvisToolEvent {
|
|
3
|
+
name: string;
|
|
4
|
+
status: 'running' | 'success' | 'error';
|
|
5
|
+
error?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface JarvisReply {
|
|
8
|
+
conversation_id: string;
|
|
9
|
+
reply: string;
|
|
10
|
+
tools: JarvisToolEvent[];
|
|
11
|
+
}
|
|
12
|
+
/** wss://<platform host>/ws, derived from the REST base (…/api/v1), or INDEMN_PLATFORM_WS_URL. */
|
|
13
|
+
export declare function jarvisSocketUrl(client: IndemnClient): string;
|
|
14
|
+
/**
|
|
15
|
+
* One Jarvis turn over Darwin's WebSocket, as the dashboard does it: a
|
|
16
|
+
* conversation from POST /conversations gives the thread; the reply streams
|
|
17
|
+
* as jarvis_chunk messages and ends at the first one with done: true (or at an
|
|
18
|
+
* error message). The session token is sent too, so the chat keeps working
|
|
19
|
+
* once Darwin starts checking it.
|
|
20
|
+
*/
|
|
21
|
+
export declare function jarvisChat(client: IndemnClient, message: string, opts?: {
|
|
22
|
+
conversationId?: string;
|
|
23
|
+
context?: Record<string, unknown>;
|
|
24
|
+
timeoutMs?: number;
|
|
25
|
+
onText?: (text: string) => void;
|
|
26
|
+
onTool?: (t: JarvisToolEvent) => void;
|
|
27
|
+
}): Promise<JarvisReply>;
|
|
28
|
+
//# sourceMappingURL=jarvis-chat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jarvis-chat.d.ts","sourceRoot":"","sources":["../../src/sdk/jarvis-chat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED,kGAAkG;AAClG,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAS5D;AAYD;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe,KAAK,IAAI,CAAA;CAAO,GACpK,OAAO,CAAC,WAAW,CAAC,CA8DtB"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { darwinAuthHeader } from './credentials.js';
|
|
2
|
+
import { CliError } from '../core/runtime.js';
|
|
3
|
+
/** wss://<platform host>/ws, derived from the REST base (…/api/v1), or INDEMN_PLATFORM_WS_URL. */
|
|
4
|
+
export function jarvisSocketUrl(client) {
|
|
5
|
+
if (process.env.INDEMN_PLATFORM_WS_URL)
|
|
6
|
+
return process.env.INDEMN_PLATFORM_WS_URL;
|
|
7
|
+
const base = client.getHosts().platform;
|
|
8
|
+
if (!base)
|
|
9
|
+
throw new CliError('No V2 platform host is configured for this environment.');
|
|
10
|
+
const u = new URL(base);
|
|
11
|
+
u.protocol = u.protocol === 'http:' ? 'ws:' : 'wss:';
|
|
12
|
+
u.pathname = '/ws';
|
|
13
|
+
u.search = '';
|
|
14
|
+
return u.toString();
|
|
15
|
+
}
|
|
16
|
+
function userIdFromToken(token) {
|
|
17
|
+
try {
|
|
18
|
+
const claims = JSON.parse(Buffer.from(token.split('.')[1] ?? '', 'base64url').toString('utf8'));
|
|
19
|
+
if (claims._id)
|
|
20
|
+
return claims._id;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
// fall through
|
|
24
|
+
}
|
|
25
|
+
throw new CliError('The session token has no user id; log in again with `indemn login`.');
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* One Jarvis turn over Darwin's WebSocket, as the dashboard does it: a
|
|
29
|
+
* conversation from POST /conversations gives the thread; the reply streams
|
|
30
|
+
* as jarvis_chunk messages and ends at the first one with done: true (or at an
|
|
31
|
+
* error message). The session token is sent too, so the chat keeps working
|
|
32
|
+
* once Darwin starts checking it.
|
|
33
|
+
*/
|
|
34
|
+
export async function jarvisChat(client, message, opts = {}) {
|
|
35
|
+
const cred = client.getCredential();
|
|
36
|
+
if (!cred)
|
|
37
|
+
throw new CliError('Not logged in. Run `indemn login` first.');
|
|
38
|
+
const authorization = darwinAuthHeader(cred);
|
|
39
|
+
const token = authorization.slice('Bearer '.length);
|
|
40
|
+
const orgId = await client.currentOrgId();
|
|
41
|
+
const conversationId = opts.conversationId ?? (await client.platformRequest('POST', '/conversations', {
|
|
42
|
+
body: { title: message.slice(0, 60) },
|
|
43
|
+
})).conversation_id;
|
|
44
|
+
const url = new URL(jarvisSocketUrl(client));
|
|
45
|
+
url.searchParams.set('client_id', `indemn-cli-${Date.now()}-${Math.random().toString(16).slice(2, 8)}`);
|
|
46
|
+
url.searchParams.set('user_id', userIdFromToken(token));
|
|
47
|
+
url.searchParams.set('organization_id', orgId);
|
|
48
|
+
return new Promise((resolve, reject) => {
|
|
49
|
+
const WS = globalThis.WebSocket;
|
|
50
|
+
// Node's WebSocket (undici) accepts headers in its init object; browsers would ignore it.
|
|
51
|
+
const socket = new WS(url.toString(), { headers: { Authorization: authorization } });
|
|
52
|
+
let reply = '';
|
|
53
|
+
const tools = new Map();
|
|
54
|
+
let settled = false;
|
|
55
|
+
const finish = (err) => {
|
|
56
|
+
if (settled)
|
|
57
|
+
return;
|
|
58
|
+
settled = true;
|
|
59
|
+
clearTimeout(timer);
|
|
60
|
+
clearInterval(ping);
|
|
61
|
+
try {
|
|
62
|
+
socket.close();
|
|
63
|
+
}
|
|
64
|
+
catch { /* already closed */ }
|
|
65
|
+
if (err)
|
|
66
|
+
reject(err);
|
|
67
|
+
else
|
|
68
|
+
resolve({ conversation_id: conversationId, reply, tools: [...tools.values()] });
|
|
69
|
+
};
|
|
70
|
+
const timer = setTimeout(() => finish(new CliError(`Jarvis did not finish within ${Math.round((opts.timeoutMs ?? 180_000) / 1000)} s.`)), opts.timeoutMs ?? 180_000);
|
|
71
|
+
const ping = setInterval(() => {
|
|
72
|
+
try {
|
|
73
|
+
socket.send(JSON.stringify({ type: 'ping', payload: {} }));
|
|
74
|
+
}
|
|
75
|
+
catch { /* not open yet */ }
|
|
76
|
+
}, 15_000);
|
|
77
|
+
socket.addEventListener('open', () => {
|
|
78
|
+
socket.send(JSON.stringify({ type: 'jarvis', payload: { content: message, thread_id: conversationId, ...(opts.context ? { context: opts.context } : {}) } }));
|
|
79
|
+
});
|
|
80
|
+
socket.addEventListener('message', (ev) => {
|
|
81
|
+
let msg;
|
|
82
|
+
try {
|
|
83
|
+
msg = JSON.parse(String(ev.data));
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
const p = msg.payload ?? {};
|
|
89
|
+
if (msg.type === 'jarvis_chunk') {
|
|
90
|
+
if (p.content) {
|
|
91
|
+
reply += p.content;
|
|
92
|
+
opts.onText?.(p.content);
|
|
93
|
+
}
|
|
94
|
+
if (p.done)
|
|
95
|
+
finish();
|
|
96
|
+
}
|
|
97
|
+
else if (msg.type === 'jarvis_tool' && p.tool_call) {
|
|
98
|
+
// Darwin sends "start" twice per tool with different ids; key by name while running.
|
|
99
|
+
const name = String(p.tool_call.name ?? 'tool');
|
|
100
|
+
const status = p.tool_call.status === 'error' ? 'error' : p.tool_call.status === 'success' ? 'success' : 'running';
|
|
101
|
+
const evt = { name, status, ...(p.tool_call.error ? { error: String(p.tool_call.error) } : {}) };
|
|
102
|
+
const key = status === 'running' ? `${name}#running` : `${name}#${p.tool_call.id}`;
|
|
103
|
+
if (status !== 'running')
|
|
104
|
+
tools.delete(`${name}#running`);
|
|
105
|
+
if (!tools.has(key))
|
|
106
|
+
opts.onTool?.(evt);
|
|
107
|
+
tools.set(key, evt);
|
|
108
|
+
}
|
|
109
|
+
else if (msg.type === 'error') {
|
|
110
|
+
finish(new CliError(`Jarvis: ${p.message ?? 'error'}`));
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
socket.addEventListener('error', () => finish(new CliError('Could not reach Jarvis on the V2 platform.')));
|
|
114
|
+
socket.addEventListener('close', () => finish(new CliError('The Jarvis connection closed before the reply finished; any action it was taking may or may not have completed.')));
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=jarvis-chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jarvis-chat.js","sourceRoot":"","sources":["../../src/sdk/jarvis-chat.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk/kb.d.ts
CHANGED
|
@@ -18,13 +18,81 @@ export declare class KBSDK {
|
|
|
18
18
|
pages: number;
|
|
19
19
|
}>;
|
|
20
20
|
addDataSource(kbId: string, input: AddDataSourceInput): Promise<DataSource>;
|
|
21
|
+
/**
|
|
22
|
+
* Import a website the way the dashboard does: "selected" imports the given page (the source url
|
|
23
|
+
* is its site), "full" crawls the whole site from url. copilot fails without the full source shape.
|
|
24
|
+
*/
|
|
21
25
|
scrapeUrl(kbId: string, url: string, crawlMode?: string): Promise<unknown>;
|
|
22
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Add a document to a knowledge base the way the dashboard does: upload it
|
|
28
|
+
* to the org's file store for a signed link, then ask the knowledge base to
|
|
29
|
+
* import from that link. (The upload-urls route is only for a CSV of website
|
|
30
|
+
* addresses.) Pass qna: true for a file of question/answer rows.
|
|
31
|
+
*/
|
|
32
|
+
uploadFile(kbId: string, filePath: string, opts?: {
|
|
33
|
+
qna?: boolean;
|
|
34
|
+
}): Promise<unknown>;
|
|
23
35
|
updateDataSource(kbId: string, sourceId: string, input: Partial<AddDataSourceInput>): Promise<DataSource>;
|
|
24
36
|
deleteDataSource(kbId: string, sourceId: string): Promise<void>;
|
|
37
|
+
/** Knowledge bases linked to an agent: [{ id (KB id), name, type, connectedBots }]. */
|
|
38
|
+
listMappings(agentId: string): Promise<Array<{
|
|
39
|
+
id: string;
|
|
40
|
+
name?: string;
|
|
41
|
+
type?: string;
|
|
42
|
+
connectedBots?: Array<{
|
|
43
|
+
id: string;
|
|
44
|
+
id_mapping: string;
|
|
45
|
+
}>;
|
|
46
|
+
}>>;
|
|
25
47
|
linkKB(agentId: string, kbIds: string[]): Promise<unknown>;
|
|
26
48
|
unlinkKB(agentId: string, kbId: string): Promise<void>;
|
|
27
49
|
exportKB(kbId: string, format: string): Promise<unknown>;
|
|
28
50
|
importKB(kbId: string, data: unknown): Promise<unknown>;
|
|
51
|
+
/** The text chunks the agent actually retrieves from one data source. */
|
|
52
|
+
chunks(kbId: string, sourceId: string): Promise<{
|
|
53
|
+
id: string;
|
|
54
|
+
type?: string;
|
|
55
|
+
source?: string;
|
|
56
|
+
status?: string;
|
|
57
|
+
stats?: unknown;
|
|
58
|
+
chunks: string[];
|
|
59
|
+
}>;
|
|
60
|
+
/** Crawl a URL source again (asynchronous). URL sources only. */
|
|
61
|
+
reimport(kbId: string, sourceId: string, jsScript?: string): Promise<unknown>;
|
|
62
|
+
/**
|
|
63
|
+
* Crawl and file-import status. copilot has no status route, so this reads
|
|
64
|
+
* the KB's non-manual sources and their scrape jobs.
|
|
65
|
+
*/
|
|
66
|
+
scrapeStatus(kbId: string): Promise<Array<{
|
|
67
|
+
id?: string;
|
|
68
|
+
source?: string;
|
|
69
|
+
status?: string;
|
|
70
|
+
job_status?: string;
|
|
71
|
+
error?: string;
|
|
72
|
+
completed_at?: string;
|
|
73
|
+
}>>;
|
|
74
|
+
/** Questions the agents could not answer (0-based pages). */
|
|
75
|
+
gaps(opts?: {
|
|
76
|
+
agentId?: string;
|
|
77
|
+
kbId?: string;
|
|
78
|
+
page?: number;
|
|
79
|
+
limit?: number;
|
|
80
|
+
includeTest?: boolean;
|
|
81
|
+
dismissed?: boolean;
|
|
82
|
+
resolved?: boolean;
|
|
83
|
+
}): Promise<unknown>;
|
|
84
|
+
/** Unanswered questions grouped by theme, most frequent first. */
|
|
85
|
+
gapClusters(opts?: {
|
|
86
|
+
status?: 'open' | 'resolved' | 'dismissed';
|
|
87
|
+
days?: number;
|
|
88
|
+
page?: number;
|
|
89
|
+
limit?: number;
|
|
90
|
+
}): Promise<unknown>;
|
|
91
|
+
/** Could the org's knowledge answer this question? Returns the best matching chunks. */
|
|
92
|
+
check(question: string): Promise<{
|
|
93
|
+
answerable?: boolean;
|
|
94
|
+
top_score?: number;
|
|
95
|
+
sources?: unknown[];
|
|
96
|
+
}>;
|
|
29
97
|
}
|
|
30
98
|
//# sourceMappingURL=kb.d.ts.map
|
package/dist/sdk/kb.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kb.d.ts","sourceRoot":"","sources":["../../src/sdk/kb.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AAEpB,qBAAa,KAAK;IACJ,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,YAAY;IAElC,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAMnC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAQzC,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"kb.d.ts","sourceRoot":"","sources":["../../src/sdk/kb.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk/kb.js
CHANGED
|
@@ -12,7 +12,10 @@ export class KBSDK {
|
|
|
12
12
|
return Array.isArray(result) ? result[0] : result;
|
|
13
13
|
}
|
|
14
14
|
async createKB(input) {
|
|
15
|
-
|
|
15
|
+
// copilot validates the type case-insensitively but stores it raw, and only
|
|
16
|
+
// the uppercase values (QNA, URL, FILE) are valid afterwards.
|
|
17
|
+
const type = input.type;
|
|
18
|
+
return this.client.copilotPost('/organization/:org_id/knowledge-bases', { ...input, ...(type ? { type: type.toUpperCase() } : {}) });
|
|
16
19
|
}
|
|
17
20
|
async updateKB(id, input) {
|
|
18
21
|
return this.client.copilotPut(`/organization/:org_id/knowledge-bases/${id}`, input);
|
|
@@ -34,41 +37,61 @@ export class KBSDK {
|
|
|
34
37
|
// Text/QnA type
|
|
35
38
|
return this.client.copilotPost(`/organization/:org_id/knowledge-bases/${kbId}/data-source`, { type: 'text', payload: { question: input.question, answer: input.answer, isManual: true } });
|
|
36
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Import a website the way the dashboard does: "selected" imports the given page (the source url
|
|
42
|
+
* is its site), "full" crawls the whole site from url. copilot fails without the full source shape.
|
|
43
|
+
*/
|
|
37
44
|
async scrapeUrl(kbId, url, crawlMode = 'full') {
|
|
45
|
+
const selected = crawlMode === 'selected';
|
|
46
|
+
let site = url;
|
|
47
|
+
if (selected) {
|
|
48
|
+
try {
|
|
49
|
+
site = new URL(url).origin;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
site = url;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
38
55
|
return this.client.copilotPost(`/organization/:org_id/knowledge-bases/${kbId}/import`, {
|
|
39
56
|
type: 'url',
|
|
40
|
-
|
|
57
|
+
manual: false,
|
|
58
|
+
sources: [{ url: site, crawl_mode: selected ? 'selected' : 'full', selected_urls: selected ? [url] : [], exclude_urls: [], js_script: '' }],
|
|
41
59
|
});
|
|
42
60
|
}
|
|
43
|
-
|
|
61
|
+
/**
|
|
62
|
+
* Add a document to a knowledge base the way the dashboard does: upload it
|
|
63
|
+
* to the org's file store for a signed link, then ask the knowledge base to
|
|
64
|
+
* import from that link. (The upload-urls route is only for a CSV of website
|
|
65
|
+
* addresses.) Pass qna: true for a file of question/answer rows.
|
|
66
|
+
*/
|
|
67
|
+
async uploadFile(kbId, filePath, opts = {}) {
|
|
44
68
|
const fs = await import('fs');
|
|
45
69
|
const path = await import('path');
|
|
46
70
|
if (!fs.existsSync(filePath)) {
|
|
47
71
|
throw new Error(`File not found: ${filePath}`);
|
|
48
72
|
}
|
|
49
|
-
const fileBuffer = fs.readFileSync(filePath);
|
|
50
73
|
const fileName = path.basename(filePath);
|
|
51
|
-
const
|
|
74
|
+
const ext = path.extname(fileName).slice(1).toLowerCase();
|
|
75
|
+
const allowed = ['pdf', 'docx', 'doc', 'txt', 'csv', 'xls', 'xlsx', 'json'];
|
|
76
|
+
if (!allowed.includes(ext)) {
|
|
77
|
+
throw new Error(`Unsupported file type ".${ext}". Knowledge bases accept: ${allowed.join(', ')}.`);
|
|
78
|
+
}
|
|
79
|
+
const size = fs.statSync(filePath).size;
|
|
80
|
+
if (size > 10 * 1024 * 1024) {
|
|
81
|
+
throw new Error(`${fileName} is ${(size / 1024 / 1024).toFixed(1)} MB; the limit is 10 MB.`);
|
|
82
|
+
}
|
|
52
83
|
const formData = new FormData();
|
|
53
|
-
formData.append('file',
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
},
|
|
64
|
-
body: formData,
|
|
84
|
+
formData.append('file', new Blob([fs.readFileSync(filePath)]), fileName);
|
|
85
|
+
const stored = await this.client.copilotPostForm('/organization/:org_id/files/upload-org?generateSignedUrl=true', formData);
|
|
86
|
+
// The import service must fetch the file, so it needs the signed link.
|
|
87
|
+
const url = stored?.signedUrl ?? stored?.data?.signedUrl ?? stored?.url ?? stored?.data?.url;
|
|
88
|
+
if (!url)
|
|
89
|
+
throw new Error(`Uploading ${fileName} returned no file link; nothing was imported.`);
|
|
90
|
+
return this.importKB(kbId, {
|
|
91
|
+
type: 'file',
|
|
92
|
+
sources: [{ name: fileName, file_type: ext, url }],
|
|
93
|
+
...(opts.qna ? { is_qna_import: true } : {}),
|
|
65
94
|
});
|
|
66
|
-
if (!res.ok) {
|
|
67
|
-
const text = await res.text();
|
|
68
|
-
throw new Error(`Upload failed (${res.status}): ${text}`);
|
|
69
|
-
}
|
|
70
|
-
const json = await res.json();
|
|
71
|
-
return json.data || json;
|
|
72
95
|
}
|
|
73
96
|
async updateDataSource(kbId, sourceId, input) {
|
|
74
97
|
return this.client.copilotPut(`/organization/:org_id/knowledge-bases/${kbId}/data-source/${sourceId}`, { payload: { question: input.question, answer: input.answer, isManual: true } });
|
|
@@ -76,6 +99,10 @@ export class KBSDK {
|
|
|
76
99
|
async deleteDataSource(kbId, sourceId) {
|
|
77
100
|
await this.client.copilotDelete(`/organization/:org_id/knowledge-bases/${kbId}/data-source/${sourceId}`);
|
|
78
101
|
}
|
|
102
|
+
/** Knowledge bases linked to an agent: [{ id (KB id), name, type, connectedBots }]. */
|
|
103
|
+
async listMappings(agentId) {
|
|
104
|
+
return this.client.copilotGet(`/organization/:org_id/ai-studio/bots/${agentId}/mappings`);
|
|
105
|
+
}
|
|
79
106
|
async linkKB(agentId, kbIds) {
|
|
80
107
|
return this.client.copilotPost(`/organization/:org_id/ai-studio/bots/${agentId}/mappings`, { id_kb: kbIds });
|
|
81
108
|
}
|
|
@@ -96,7 +123,67 @@ export class KBSDK {
|
|
|
96
123
|
return this.client.copilotPost(`/organization/:org_id/knowledge-bases/${kbId}/export`, { type: format });
|
|
97
124
|
}
|
|
98
125
|
async importKB(kbId, data) {
|
|
99
|
-
|
|
126
|
+
const result = await this.client.copilotPost(`/organization/:org_id/knowledge-bases/${kbId}/import`, data);
|
|
127
|
+
assertJobStarted(result, 'Import');
|
|
128
|
+
return result;
|
|
129
|
+
}
|
|
130
|
+
/** The text chunks the agent actually retrieves from one data source. */
|
|
131
|
+
async chunks(kbId, sourceId) {
|
|
132
|
+
return this.client.copilotGet(`/organization/:org_id/knowledge-bases/${kbId}/data-source/${sourceId}/chunks`);
|
|
133
|
+
}
|
|
134
|
+
/** Crawl a URL source again (asynchronous). URL sources only. */
|
|
135
|
+
async reimport(kbId, sourceId, jsScript) {
|
|
136
|
+
const result = await this.client.copilotPut(`/organization/:org_id/knowledge-bases/${kbId}/data-source/${sourceId}/re-import`, jsScript ? { js_script: jsScript } : {});
|
|
137
|
+
assertJobStarted(result, 'Re-import');
|
|
138
|
+
return result;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Crawl and file-import status. copilot has no status route, so this reads
|
|
142
|
+
* the KB's non-manual sources and their scrape jobs.
|
|
143
|
+
*/
|
|
144
|
+
async scrapeStatus(kbId) {
|
|
145
|
+
const kb = await this.getKB(kbId);
|
|
146
|
+
return (kb.fileWebSources ?? []).map((s) => ({
|
|
147
|
+
id: s._id ? String(s._id) : undefined,
|
|
148
|
+
source: s.source,
|
|
149
|
+
status: s.status,
|
|
150
|
+
job_status: s.source_details?.id_scrape_request?.status,
|
|
151
|
+
error: s.error_message ?? s.source_details?.id_scrape_request?.message,
|
|
152
|
+
completed_at: s.source_details?.id_scrape_request?.completed_at ?? undefined,
|
|
153
|
+
}));
|
|
154
|
+
}
|
|
155
|
+
/** Questions the agents could not answer (0-based pages). */
|
|
156
|
+
async gaps(opts = {}) {
|
|
157
|
+
const query = {
|
|
158
|
+
page: String(opts.page ?? 0),
|
|
159
|
+
limit: String(Math.min(opts.limit ?? 20, 100)),
|
|
160
|
+
isDismissed: String(Boolean(opts.dismissed)),
|
|
161
|
+
isTestMode: String(Boolean(opts.includeTest)),
|
|
162
|
+
};
|
|
163
|
+
if (opts.agentId)
|
|
164
|
+
query.id_bot = opts.agentId;
|
|
165
|
+
if (opts.kbId)
|
|
166
|
+
query.id_kb = opts.kbId;
|
|
167
|
+
if (opts.resolved)
|
|
168
|
+
query.view = 'resolved';
|
|
169
|
+
return this.client.copilotGet('/organization/:org_id/knowledge-bases/unanswered/embeddings', query);
|
|
170
|
+
}
|
|
171
|
+
/** Unanswered questions grouped by theme, most frequent first. */
|
|
172
|
+
async gapClusters(opts = {}) {
|
|
173
|
+
const query = { status: opts.status ?? 'open', page: String(opts.page ?? 0), limit: String(Math.min(opts.limit ?? 50, 100)) };
|
|
174
|
+
if (opts.days)
|
|
175
|
+
query.days = String(opts.days);
|
|
176
|
+
return this.client.copilotGet('/organization/:org_id/knowledge-bases/unanswered/clusters', query);
|
|
177
|
+
}
|
|
178
|
+
/** Could the org's knowledge answer this question? Returns the best matching chunks. */
|
|
179
|
+
async check(question) {
|
|
180
|
+
return this.client.copilotGet('/organization/:org_id/knowledge-bases/unanswered/kb-check', { query: question });
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/** copilot answers import and re-import with success:true even when they fail; the job status tells the truth. */
|
|
184
|
+
function assertJobStarted(result, what) {
|
|
185
|
+
if (result && result.status === 'error') {
|
|
186
|
+
throw new Error(`${what} failed: ${result.message ?? 'no reason given'}`);
|
|
100
187
|
}
|
|
101
188
|
}
|
|
102
189
|
//# sourceMappingURL=kb.js.map
|
package/dist/sdk/kb.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kb.js","sourceRoot":"","sources":["../../src/sdk/kb.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,KAAK;IACI;IAApB,YAAoB,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;IAAG,CAAC;IAE5C,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAC3B,uCAAuC,CACxC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,EAAU;QACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CACzC,yCAAyC,EAAE,EAAE,CAC9C,CAAC;QACF,wDAAwD;QACxD,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAoB;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAC5B,uCAAuC,EACvC,KAAK,
|
|
1
|
+
{"version":3,"file":"kb.js","sourceRoot":"","sources":["../../src/sdk/kb.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { IndemnClient } from './client.js';
|
|
2
|
+
import type { Channel, OrgMember, OrgSummary } from './types.js';
|
|
3
|
+
export declare class OrgsSDK {
|
|
4
|
+
private client;
|
|
5
|
+
constructor(client: IndemnClient);
|
|
6
|
+
/** Orgs the logged-in person belongs to or created. Also refreshes the list saved at login. */
|
|
7
|
+
listOrganizations(): Promise<OrgSummary[]>;
|
|
8
|
+
/** People with owner, admin or agent roles in the org, one row per person. */
|
|
9
|
+
listMembers(): Promise<OrgMember[]>;
|
|
10
|
+
/** Channels an agent can be published on (WEB, VOICE, ...). */
|
|
11
|
+
listChannels(): Promise<Channel[]>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=orgs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orgs.d.ts","sourceRoot":"","sources":["../../src/sdk/orgs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AASjE,qBAAa,OAAO;IACN,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,YAAY;IAExC,+FAA+F;IACzF,iBAAiB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAOhD,8EAA8E;IACxE,WAAW,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAkCzC,+DAA+D;IACzD,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;CAIzC"}
|
package/dist/sdk/orgs.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { IndemnClient } from './client.js';
|
|
2
|
+
export class OrgsSDK {
|
|
3
|
+
client;
|
|
4
|
+
constructor(client) {
|
|
5
|
+
this.client = client;
|
|
6
|
+
}
|
|
7
|
+
/** Orgs the logged-in person belongs to or created. Also refreshes the list saved at login. */
|
|
8
|
+
async listOrganizations() {
|
|
9
|
+
const res = await this.client.copilotGet('/organization');
|
|
10
|
+
const orgs = (res.userOrganizations ?? []).map((o) => ({ id: String(o._id), name: o.name }));
|
|
11
|
+
if (this.client.getCredential()?.source === 'config')
|
|
12
|
+
IndemnClient.saveConfig({ orgs });
|
|
13
|
+
return orgs;
|
|
14
|
+
}
|
|
15
|
+
/** People with owner, admin or agent roles in the org, one row per person. */
|
|
16
|
+
async listMembers() {
|
|
17
|
+
let rows;
|
|
18
|
+
try {
|
|
19
|
+
const res = await this.client.copilotGet('/organization/:org_id/projects-users');
|
|
20
|
+
rows = res.projectUsers ?? [];
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
// copilot answers "not found" with success:false when the org has no such members.
|
|
24
|
+
if (err instanceof Error && /not found for the given organization/i.test(err.message))
|
|
25
|
+
return [];
|
|
26
|
+
throw err;
|
|
27
|
+
}
|
|
28
|
+
const byUser = new Map();
|
|
29
|
+
for (const row of rows) {
|
|
30
|
+
const user = typeof row.id_user === 'object' && row.id_user ? row.id_user : { _id: String(row.id_user ?? '') };
|
|
31
|
+
const id = String(user._id ?? '');
|
|
32
|
+
if (!id)
|
|
33
|
+
continue;
|
|
34
|
+
const project = typeof row.id_project === 'object' && row.id_project ? row.id_project.name : undefined;
|
|
35
|
+
const existing = byUser.get(id);
|
|
36
|
+
if (existing) {
|
|
37
|
+
if (project && !existing.projects.includes(project))
|
|
38
|
+
existing.projects.push(project);
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
const name = [('firstname' in user ? user.firstname : ''), ('lastname' in user ? user.lastname : '')].filter(Boolean).join(' ');
|
|
42
|
+
byUser.set(id, {
|
|
43
|
+
user_id: id,
|
|
44
|
+
email: 'email' in user ? user.email : undefined,
|
|
45
|
+
name: name || undefined,
|
|
46
|
+
role: row.role,
|
|
47
|
+
status: row.status,
|
|
48
|
+
projects: project ? [project] : [],
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
return [...byUser.values()];
|
|
52
|
+
}
|
|
53
|
+
/** Channels an agent can be published on (WEB, VOICE, ...). */
|
|
54
|
+
async listChannels() {
|
|
55
|
+
const channels = await this.client.copilotGet('/organization/:org_id/ai-studio/channels');
|
|
56
|
+
return channels.map((c) => ({ _id: String(c._id), name: c.name, type: c.type, description: c.description }));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=orgs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orgs.js","sourceRoot":"","sources":["../../src/sdk/orgs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { IndemnClient } from './client.js';
|
|
2
|
+
/** Collections of the V2 platform (Darwin) the CLI can read. */
|
|
3
|
+
export type PlatformResource = 'agents' | 'templates' | 'components' | 'connectors' | 'connector-bindings' | 'scenarios';
|
|
4
|
+
export interface JarvisJob {
|
|
5
|
+
job_id: string;
|
|
6
|
+
status: 'pending' | 'running' | 'completed' | 'failed';
|
|
7
|
+
bot_ids?: string[];
|
|
8
|
+
progress?: {
|
|
9
|
+
completed?: number;
|
|
10
|
+
total?: number;
|
|
11
|
+
results?: Array<{
|
|
12
|
+
bot_id: string;
|
|
13
|
+
bot_name?: string;
|
|
14
|
+
success: boolean;
|
|
15
|
+
error?: string;
|
|
16
|
+
}>;
|
|
17
|
+
};
|
|
18
|
+
[key: string]: unknown;
|
|
19
|
+
}
|
|
20
|
+
/** The V2 platform (Darwin): V2 agents, templates, scenarios, simulations and Jarvis jobs, all checked by Darwin against your org and role. */
|
|
21
|
+
export declare class PlatformSDK {
|
|
22
|
+
private client;
|
|
23
|
+
constructor(client: IndemnClient);
|
|
24
|
+
list(resource: PlatformResource, query?: Record<string, string>): Promise<unknown[]>;
|
|
25
|
+
get(resource: PlatformResource, id: string): Promise<Record<string, unknown>>;
|
|
26
|
+
create(resource: PlatformResource, body: Record<string, unknown>): Promise<unknown>;
|
|
27
|
+
update(resource: PlatformResource, id: string, body: Record<string, unknown>): Promise<unknown>;
|
|
28
|
+
remove(resource: PlatformResource, id: string): Promise<unknown>;
|
|
29
|
+
/** Checks a template's graph: components exist and edges point at real nodes. */
|
|
30
|
+
validateTemplate(id: string): Promise<{
|
|
31
|
+
valid: boolean;
|
|
32
|
+
errors: string[];
|
|
33
|
+
warnings: string[];
|
|
34
|
+
}>;
|
|
35
|
+
/** Validates input against a connector's schema and previews the request; never calls the connector. */
|
|
36
|
+
testConnector(id: string, input: Record<string, unknown>): Promise<unknown>;
|
|
37
|
+
/** Run scenarios against a V2 agent. Darwin does not check the agent's org here, so the agent is read first (that read is org-checked). */
|
|
38
|
+
runSimulation(agentId: string, scenarioIds?: string[]): Promise<unknown>;
|
|
39
|
+
simulationJobs(filter?: {
|
|
40
|
+
agentId?: string;
|
|
41
|
+
status?: string;
|
|
42
|
+
}): Promise<unknown[]>;
|
|
43
|
+
simulationJob(id: string): Promise<unknown>;
|
|
44
|
+
simulationResults(filter?: {
|
|
45
|
+
agentId?: string;
|
|
46
|
+
resultId?: string;
|
|
47
|
+
limit?: number;
|
|
48
|
+
}): Promise<unknown>;
|
|
49
|
+
/** Which agents of the org have a baseline evaluation, and which are stale. */
|
|
50
|
+
orgEvaluations(): Promise<unknown>;
|
|
51
|
+
/** Ask Jarvis to generate baseline evaluations for up to 50 agents (Darwin checks they are in the org). */
|
|
52
|
+
createJarvisJob(botIds: string[]): Promise<JarvisJob>;
|
|
53
|
+
jarvisJobs(status?: string): Promise<JarvisJob[]>;
|
|
54
|
+
jarvisJob(id: string): Promise<JarvisJob>;
|
|
55
|
+
/** Poll a Jarvis job until it completes (Darwin never marks jobs failed; per-agent failures are in progress.results). */
|
|
56
|
+
waitForJarvisJob(id: string, opts?: {
|
|
57
|
+
intervalMs?: number;
|
|
58
|
+
timeoutMs?: number;
|
|
59
|
+
onProgress?: (j: JarvisJob) => void;
|
|
60
|
+
}): Promise<JarvisJob>;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=platform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/sdk/platform.ts"],"names":[],"mappings":"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"}
|