@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.
Files changed (311) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/.claude-plugin/plugin.json +9 -4
  3. package/.github/workflows/ci.yml +10 -0
  4. package/.github/workflows/publish.yml +2 -2
  5. package/.mcp.json +1 -4
  6. package/CONTRIBUTING.md +3 -1
  7. package/README.md +69 -176
  8. package/dist/cli/agents.d.ts.map +1 -1
  9. package/dist/cli/agents.js +226 -18
  10. package/dist/cli/agents.js.map +1 -1
  11. package/dist/cli/analytics.d.ts +3 -0
  12. package/dist/cli/analytics.d.ts.map +1 -0
  13. package/dist/cli/analytics.js +133 -0
  14. package/dist/cli/analytics.js.map +1 -0
  15. package/dist/cli/auth.d.ts.map +1 -1
  16. package/dist/cli/auth.js +62 -17
  17. package/dist/cli/auth.js.map +1 -1
  18. package/dist/cli/billing.d.ts +3 -0
  19. package/dist/cli/billing.d.ts.map +1 -0
  20. package/dist/cli/billing.js +23 -0
  21. package/dist/cli/billing.js.map +1 -0
  22. package/dist/cli/campaigns.d.ts +3 -0
  23. package/dist/cli/campaigns.d.ts.map +1 -0
  24. package/dist/cli/campaigns.js +34 -0
  25. package/dist/cli/campaigns.js.map +1 -0
  26. package/dist/cli/chat.d.ts.map +1 -1
  27. package/dist/cli/chat.js +69 -102
  28. package/dist/cli/chat.js.map +1 -1
  29. package/dist/cli/config.d.ts.map +1 -1
  30. package/dist/cli/config.js +71 -27
  31. package/dist/cli/config.js.map +1 -1
  32. package/dist/cli/conversations.d.ts +3 -0
  33. package/dist/cli/conversations.d.ts.map +1 -0
  34. package/dist/cli/conversations.js +129 -0
  35. package/dist/cli/conversations.js.map +1 -0
  36. package/dist/cli/distribution.d.ts +3 -0
  37. package/dist/cli/distribution.d.ts.map +1 -0
  38. package/dist/cli/distribution.js +122 -0
  39. package/dist/cli/distribution.js.map +1 -0
  40. package/dist/cli/eval.d.ts.map +1 -1
  41. package/dist/cli/eval.js +315 -71
  42. package/dist/cli/eval.js.map +1 -1
  43. package/dist/cli/functions.d.ts.map +1 -1
  44. package/dist/cli/functions.js +109 -38
  45. package/dist/cli/functions.js.map +1 -1
  46. package/dist/cli/index.js +63 -54
  47. package/dist/cli/index.js.map +1 -1
  48. package/dist/cli/init.d.ts +27 -0
  49. package/dist/cli/init.d.ts.map +1 -0
  50. package/dist/cli/init.js +152 -0
  51. package/dist/cli/init.js.map +1 -0
  52. package/dist/cli/kb.d.ts.map +1 -1
  53. package/dist/cli/kb.js +141 -15
  54. package/dist/cli/kb.js.map +1 -1
  55. package/dist/cli/link.d.ts +21 -0
  56. package/dist/cli/link.d.ts.map +1 -0
  57. package/dist/cli/link.js +112 -0
  58. package/dist/cli/link.js.map +1 -0
  59. package/dist/cli/org.d.ts.map +1 -1
  60. package/dist/cli/org.js +79 -67
  61. package/dist/cli/org.js.map +1 -1
  62. package/dist/cli/platform.d.ts +3 -0
  63. package/dist/cli/platform.d.ts.map +1 -0
  64. package/dist/cli/platform.js +133 -0
  65. package/dist/cli/platform.js.map +1 -0
  66. package/dist/cli/tickets.d.ts +3 -0
  67. package/dist/cli/tickets.d.ts.map +1 -0
  68. package/dist/cli/tickets.js +125 -0
  69. package/dist/cli/tickets.js.map +1 -0
  70. package/dist/cli/utils/output.d.ts +15 -9
  71. package/dist/cli/utils/output.d.ts.map +1 -1
  72. package/dist/cli/utils/output.js +53 -46
  73. package/dist/cli/utils/output.js.map +1 -1
  74. package/dist/cli/voice.d.ts +3 -0
  75. package/dist/cli/voice.d.ts.map +1 -0
  76. package/dist/cli/voice.js +206 -0
  77. package/dist/cli/voice.js.map +1 -0
  78. package/dist/core/diff.d.ts +16 -0
  79. package/dist/core/diff.d.ts.map +1 -0
  80. package/dist/core/diff.js +57 -0
  81. package/dist/core/diff.js.map +1 -0
  82. package/dist/core/org-resolver.d.ts +37 -0
  83. package/dist/core/org-resolver.d.ts.map +1 -0
  84. package/dist/core/org-resolver.js +73 -0
  85. package/dist/core/org-resolver.js.map +1 -0
  86. package/dist/core/runtime.d.ts +36 -0
  87. package/dist/core/runtime.d.ts.map +1 -0
  88. package/dist/core/runtime.js +62 -0
  89. package/dist/core/runtime.js.map +1 -0
  90. package/dist/core/scope.d.ts +33 -0
  91. package/dist/core/scope.d.ts.map +1 -0
  92. package/dist/core/scope.js +37 -0
  93. package/dist/core/scope.js.map +1 -0
  94. package/dist/mcp/registry.d.ts +67 -0
  95. package/dist/mcp/registry.d.ts.map +1 -0
  96. package/dist/mcp/registry.js +195 -0
  97. package/dist/mcp/registry.js.map +1 -0
  98. package/dist/mcp/server.d.ts +9 -0
  99. package/dist/mcp/server.d.ts.map +1 -1
  100. package/dist/mcp/server.js +87 -2
  101. package/dist/mcp/server.js.map +1 -1
  102. package/dist/mcp/tool-meta.d.ts +21 -0
  103. package/dist/mcp/tool-meta.d.ts.map +1 -0
  104. package/dist/mcp/tool-meta.js +203 -0
  105. package/dist/mcp/tool-meta.js.map +1 -0
  106. package/dist/mcp/tools.d.ts +2 -1
  107. package/dist/mcp/tools.d.ts.map +1 -1
  108. package/dist/mcp/tools.js +1462 -215
  109. package/dist/mcp/tools.js.map +1 -1
  110. package/dist/sdk/agent-bundle.d.ts +99 -0
  111. package/dist/sdk/agent-bundle.d.ts.map +1 -0
  112. package/dist/sdk/agent-bundle.js +211 -0
  113. package/dist/sdk/agent-bundle.js.map +1 -0
  114. package/dist/sdk/agents.d.ts +54 -1
  115. package/dist/sdk/agents.d.ts.map +1 -1
  116. package/dist/sdk/agents.js +59 -5
  117. package/dist/sdk/agents.js.map +1 -1
  118. package/dist/sdk/analytics.d.ts +158 -0
  119. package/dist/sdk/analytics.d.ts.map +1 -0
  120. package/dist/sdk/analytics.js +185 -0
  121. package/dist/sdk/analytics.js.map +1 -0
  122. package/dist/sdk/auth.d.ts +34 -12
  123. package/dist/sdk/auth.d.ts.map +1 -1
  124. package/dist/sdk/auth.js +60 -77
  125. package/dist/sdk/auth.js.map +1 -1
  126. package/dist/sdk/billing.d.ts +25 -0
  127. package/dist/sdk/billing.d.ts.map +1 -0
  128. package/dist/sdk/billing.js +61 -0
  129. package/dist/sdk/billing.js.map +1 -0
  130. package/dist/sdk/campaigns.d.ts +35 -0
  131. package/dist/sdk/campaigns.d.ts.map +1 -0
  132. package/dist/sdk/campaigns.js +59 -0
  133. package/dist/sdk/campaigns.js.map +1 -0
  134. package/dist/sdk/chat.d.ts +25 -2
  135. package/dist/sdk/chat.d.ts.map +1 -1
  136. package/dist/sdk/chat.js +37 -10
  137. package/dist/sdk/chat.js.map +1 -1
  138. package/dist/sdk/client.d.ts +93 -5
  139. package/dist/sdk/client.d.ts.map +1 -1
  140. package/dist/sdk/client.js +362 -100
  141. package/dist/sdk/client.js.map +1 -1
  142. package/dist/sdk/config-change.d.ts +74 -0
  143. package/dist/sdk/config-change.d.ts.map +1 -0
  144. package/dist/sdk/config-change.js +117 -0
  145. package/dist/sdk/config-change.js.map +1 -0
  146. package/dist/sdk/config.d.ts.map +1 -1
  147. package/dist/sdk/config.js +2 -1
  148. package/dist/sdk/config.js.map +1 -1
  149. package/dist/sdk/conversations.d.ts +101 -0
  150. package/dist/sdk/conversations.d.ts.map +1 -0
  151. package/dist/sdk/conversations.js +155 -0
  152. package/dist/sdk/conversations.js.map +1 -0
  153. package/dist/sdk/credentials.d.ts +25 -0
  154. package/dist/sdk/credentials.d.ts.map +1 -0
  155. package/dist/sdk/credentials.js +44 -0
  156. package/dist/sdk/credentials.js.map +1 -0
  157. package/dist/sdk/distribution.d.ts +94 -0
  158. package/dist/sdk/distribution.d.ts.map +1 -0
  159. package/dist/sdk/distribution.js +100 -0
  160. package/dist/sdk/distribution.js.map +1 -0
  161. package/dist/sdk/eval.d.ts +81 -0
  162. package/dist/sdk/eval.d.ts.map +1 -1
  163. package/dist/sdk/eval.js +117 -0
  164. package/dist/sdk/eval.js.map +1 -1
  165. package/dist/sdk/functions.d.ts +14 -1
  166. package/dist/sdk/functions.d.ts.map +1 -1
  167. package/dist/sdk/functions.js +48 -5
  168. package/dist/sdk/functions.js.map +1 -1
  169. package/dist/sdk/index.d.ts +2 -0
  170. package/dist/sdk/index.d.ts.map +1 -1
  171. package/dist/sdk/index.js +2 -0
  172. package/dist/sdk/index.js.map +1 -1
  173. package/dist/sdk/jarvis-chat.d.ts +28 -0
  174. package/dist/sdk/jarvis-chat.d.ts.map +1 -0
  175. package/dist/sdk/jarvis-chat.js +117 -0
  176. package/dist/sdk/jarvis-chat.js.map +1 -0
  177. package/dist/sdk/kb.d.ts +69 -1
  178. package/dist/sdk/kb.d.ts.map +1 -1
  179. package/dist/sdk/kb.js +111 -24
  180. package/dist/sdk/kb.js.map +1 -1
  181. package/dist/sdk/orgs.d.ts +13 -0
  182. package/dist/sdk/orgs.d.ts.map +1 -0
  183. package/dist/sdk/orgs.js +59 -0
  184. package/dist/sdk/orgs.js.map +1 -0
  185. package/dist/sdk/platform.d.ts +62 -0
  186. package/dist/sdk/platform.d.ts.map +1 -0
  187. package/dist/sdk/platform.js +95 -0
  188. package/dist/sdk/platform.js.map +1 -0
  189. package/dist/sdk/session.d.ts +25 -0
  190. package/dist/sdk/session.d.ts.map +1 -0
  191. package/dist/sdk/session.js +69 -0
  192. package/dist/sdk/session.js.map +1 -0
  193. package/dist/sdk/skills.d.ts +46 -0
  194. package/dist/sdk/skills.d.ts.map +1 -0
  195. package/dist/sdk/skills.js +203 -0
  196. package/dist/sdk/skills.js.map +1 -0
  197. package/dist/sdk/test-chat.d.ts +52 -0
  198. package/dist/sdk/test-chat.d.ts.map +1 -0
  199. package/dist/sdk/test-chat.js +134 -0
  200. package/dist/sdk/test-chat.js.map +1 -0
  201. package/dist/sdk/tickets.d.ts +98 -0
  202. package/dist/sdk/tickets.d.ts.map +1 -0
  203. package/dist/sdk/tickets.js +91 -0
  204. package/dist/sdk/tickets.js.map +1 -0
  205. package/dist/sdk/types.d.ts +91 -6
  206. package/dist/sdk/types.d.ts.map +1 -1
  207. package/dist/sdk/voice.d.ts +147 -0
  208. package/dist/sdk/voice.d.ts.map +1 -0
  209. package/dist/sdk/voice.js +236 -0
  210. package/dist/sdk/voice.js.map +1 -0
  211. package/package.json +22 -3
  212. package/scripts/check-skills.mjs +25 -0
  213. package/skills/agent-builder/SKILL.md +89 -252
  214. package/skills/evaluations/SKILL.md +23 -234
  215. package/skills/evaluations/references/analysis.md +95 -0
  216. package/skills/evaluations/references/cli-reference.md +28 -0
  217. package/skills/evaluations/references/json-formats.md +100 -0
  218. package/src/cli/agents.ts +202 -22
  219. package/src/cli/analytics.ts +138 -0
  220. package/src/cli/auth.ts +56 -18
  221. package/src/cli/billing.ts +25 -0
  222. package/src/cli/campaigns.ts +33 -0
  223. package/src/cli/chat.ts +66 -115
  224. package/src/cli/config.ts +65 -31
  225. package/src/cli/conversations.ts +133 -0
  226. package/src/cli/distribution.ts +116 -0
  227. package/src/cli/eval.ts +254 -70
  228. package/src/cli/functions.ts +105 -39
  229. package/src/cli/index.ts +58 -55
  230. package/src/cli/init.ts +154 -0
  231. package/src/cli/kb.ts +120 -17
  232. package/src/cli/link.ts +117 -0
  233. package/src/cli/org.ts +81 -75
  234. package/src/cli/platform.ts +128 -0
  235. package/src/cli/tickets.ts +130 -0
  236. package/src/cli/utils/output.ts +51 -42
  237. package/src/cli/voice.ts +204 -0
  238. package/src/core/diff.ts +52 -0
  239. package/src/core/org-resolver.ts +113 -0
  240. package/src/core/runtime.ts +73 -0
  241. package/src/core/scope.ts +64 -0
  242. package/src/mcp/registry.ts +236 -0
  243. package/src/mcp/server.ts +84 -2
  244. package/src/mcp/tool-meta.ts +241 -0
  245. package/src/mcp/tools.ts +1529 -265
  246. package/src/sdk/agent-bundle.ts +245 -0
  247. package/src/sdk/agents.ts +74 -5
  248. package/src/sdk/analytics.ts +220 -0
  249. package/src/sdk/auth.ts +87 -107
  250. package/src/sdk/billing.ts +59 -0
  251. package/src/sdk/campaigns.ts +60 -0
  252. package/src/sdk/chat.ts +44 -10
  253. package/src/sdk/client.ts +373 -102
  254. package/src/sdk/config-change.ts +148 -0
  255. package/src/sdk/config.ts +2 -1
  256. package/src/sdk/conversations.ts +199 -0
  257. package/src/sdk/credentials.ts +53 -0
  258. package/src/sdk/distribution.ts +132 -0
  259. package/src/sdk/eval.ts +140 -0
  260. package/src/sdk/functions.ts +52 -6
  261. package/src/sdk/index.ts +2 -0
  262. package/src/sdk/jarvis-chat.ts +112 -0
  263. package/src/sdk/kb.ts +116 -29
  264. package/src/sdk/orgs.ts +62 -0
  265. package/src/sdk/platform.ts +115 -0
  266. package/src/sdk/session.ts +90 -0
  267. package/src/sdk/skills.ts +188 -0
  268. package/src/sdk/test-chat.ts +151 -0
  269. package/src/sdk/tickets.ts +120 -0
  270. package/src/sdk/types.ts +88 -6
  271. package/src/sdk/voice.ts +262 -0
  272. package/test/cli/entry.test.ts +34 -0
  273. package/test/cli/init.test.ts +66 -0
  274. package/test/cli/link.test.ts +57 -0
  275. package/test/core/org-resolver.test.ts +92 -0
  276. package/test/core/runtime.test.ts +30 -0
  277. package/test/core/scope.test.ts +93 -0
  278. package/test/harness.test.ts +24 -0
  279. package/test/helpers/config-home.ts +22 -0
  280. package/test/helpers/fake-middleware.ts +56 -0
  281. package/test/helpers/fetch-recorder.ts +75 -0
  282. package/test/helpers/jwt.ts +9 -0
  283. package/test/helpers/mcp-pair.ts +38 -0
  284. package/test/mcp/__snapshots__/tools-snapshot.test.ts.snap +145 -0
  285. package/test/mcp/askers.test.ts +60 -0
  286. package/test/mcp/elicit-timeout.test.ts +29 -0
  287. package/test/mcp/registry.test.ts +169 -0
  288. package/test/mcp/shaping.test.ts +41 -0
  289. package/test/mcp/tools-snapshot.test.ts +42 -0
  290. package/test/sdk/agents.test.ts +232 -0
  291. package/test/sdk/analytics.test.ts +89 -0
  292. package/test/sdk/auth.test.ts +70 -0
  293. package/test/sdk/billing.test.ts +47 -0
  294. package/test/sdk/campaigns.test.ts +43 -0
  295. package/test/sdk/client.test.ts +80 -0
  296. package/test/sdk/config-change.test.ts +142 -0
  297. package/test/sdk/conversations.test.ts +80 -0
  298. package/test/sdk/credentials.test.ts +33 -0
  299. package/test/sdk/distribution.test.ts +55 -0
  300. package/test/sdk/eval.test.ts +155 -0
  301. package/test/sdk/kb-upload.test.ts +50 -0
  302. package/test/sdk/kb.test.ts +95 -0
  303. package/test/sdk/orgs.test.ts +48 -0
  304. package/test/sdk/platform.test.ts +89 -0
  305. package/test/sdk/renewal.test.ts +115 -0
  306. package/test/sdk/session.test.ts +60 -0
  307. package/test/sdk/skills.test.ts +235 -0
  308. package/test/sdk/test-chat.test.ts +112 -0
  309. package/test/sdk/tickets.test.ts +42 -0
  310. package/test/sdk/voice.test.ts +147 -0
  311. 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
- uploadFile(kbId: string, filePath: string): Promise<unknown>;
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
@@ -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;IAOtD,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAOlE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnC,eAAe,CACnB,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACxC,OAAO,CAAC;QAAE,WAAW,EAAE,UAAU,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAO/E,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC;IAmB3E,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,GAAE,MAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAUlF,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsC5D,gBAAgB,CACpB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC,GACjC,OAAO,CAAC,UAAU,CAAC;IAOhB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/D,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAO1D,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBtD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOxD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;CAM9D"}
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
- return this.client.copilotPost('/organization/:org_id/knowledge-bases', input);
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
- sources: [{ url, crawl_mode: crawlMode }],
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
- async uploadFile(kbId, filePath) {
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 blob = new Blob([fileBuffer]);
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', blob, fileName);
54
- // Need a raw fetch since copilotPost sets Content-Type to JSON
55
- const hosts = this.client.getHosts();
56
- const orgId = this.client.getOrgId();
57
- const apiKey = this.client.getApiKey();
58
- const url_str = `${hosts.copilot}/organization/${orgId}/knowledge-bases/${kbId}/upload-urls`;
59
- const res = await fetch(url_str, {
60
- method: 'POST',
61
- headers: {
62
- 'Authorization': `Bearer ${apiKey}`,
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
- return this.client.copilotPost(`/organization/:org_id/knowledge-bases/${kbId}/import`, data);
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
@@ -1 +1 @@
1
- {"version":3,"file":"kb.js","sourceRoot":"","sources":["../../src/sdk/kb.ts"],"names":[],"mappings":"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"}
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"}
@@ -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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"}