@indemn/cli 1.6.0 → 1.7.1

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 +62 -79
  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 +21 -4
  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 +89 -109
  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,94 @@
1
+ import type { IndemnClient } from './client.js';
2
+ export interface DistributionPath {
3
+ id: string;
4
+ host_name?: string;
5
+ path_name?: string;
6
+ path_expression?: string;
7
+ id_bot?: string;
8
+ bot_name?: string;
9
+ [key: string]: unknown;
10
+ }
11
+ export interface Distributions {
12
+ paths: DistributionPath[];
13
+ aiAgents?: Array<{
14
+ _id: string;
15
+ name: string;
16
+ }>;
17
+ hosts?: unknown[];
18
+ /** The org's embed code: one script tag for every path. */
19
+ scriptTag?: string;
20
+ }
21
+ export interface Template {
22
+ _id: string;
23
+ name: string;
24
+ description?: string;
25
+ category?: string[];
26
+ tags?: string[];
27
+ agent_id?: {
28
+ _id?: string;
29
+ name?: string;
30
+ id_organization?: string;
31
+ } | string;
32
+ [key: string]: unknown;
33
+ }
34
+ /** Web widget distributions (which website paths open which agent), templates and solutions. */
35
+ export declare class DistributionSDK {
36
+ private client;
37
+ constructor(client: IndemnClient);
38
+ list(): Promise<Distributions>;
39
+ /** Embed code and the website paths that open one agent. */
40
+ embed(agentId: string): Promise<{
41
+ scriptTag?: string;
42
+ paths: DistributionPath[];
43
+ }>;
44
+ /** Open an agent on a website path. The agent must be in the org. */
45
+ create(input: {
46
+ agentId: string;
47
+ host: string;
48
+ path: string;
49
+ pathExpression?: string;
50
+ greeting?: string;
51
+ allowUpload?: boolean;
52
+ }): Promise<unknown>;
53
+ /**
54
+ * Change a distribution. copilot's update is not scoped to the org and
55
+ * creates a document for an unknown id, so only ids from this org's list
56
+ * are accepted, and a new agent must be in the org.
57
+ */
58
+ update(id: string, changes: Record<string, unknown>): Promise<unknown>;
59
+ /** Templates are shared by every org on the platform. */
60
+ listTemplates(): Promise<Template[]>;
61
+ /** Publish an agent of this org as a template every org can see. */
62
+ createTemplate(input: {
63
+ agentId: string;
64
+ name: string;
65
+ description?: string;
66
+ category?: string[];
67
+ tags?: string[];
68
+ }): Promise<Template>;
69
+ /** Only templates made from an agent of this org may be changed from here. */
70
+ private ownTemplate;
71
+ updateTemplate(id: string, changes: {
72
+ name?: string;
73
+ description?: string;
74
+ category?: string[];
75
+ tags?: string[];
76
+ }): Promise<Template>;
77
+ deleteTemplate(id: string): Promise<unknown>;
78
+ /**
79
+ * A new agent in this org copied from a template (bot, prompt, model,
80
+ * skills and knowledge bases; not phone numbers, voice settings or
81
+ * distributions).
82
+ */
83
+ createFromTemplate(templateId: string, opts?: {
84
+ name?: string;
85
+ channels?: string[];
86
+ }): Promise<{
87
+ new_agent_id?: string;
88
+ new_agent_name?: string;
89
+ [k: string]: unknown;
90
+ }>;
91
+ /** Solutions the org has, with their connected systems (read-only). */
92
+ listSolutions(): Promise<unknown[]>;
93
+ }
94
+ //# sourceMappingURL=distribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distribution.d.ts","sourceRoot":"","sources":["../../src/sdk/distribution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ import { AgentsSDK } from './agents.js';
2
+ import { idOf } from './conversations.js';
3
+ import { CliError } from '../core/runtime.js';
4
+ /** Web widget distributions (which website paths open which agent), templates and solutions. */
5
+ export class DistributionSDK {
6
+ client;
7
+ constructor(client) {
8
+ this.client = client;
9
+ }
10
+ list() {
11
+ return this.client.copilotGet('/organization/:org_id/distributions');
12
+ }
13
+ /** Embed code and the website paths that open one agent. */
14
+ async embed(agentId) {
15
+ await new AgentsSDK(this.client).getAgent(agentId);
16
+ const d = await this.list();
17
+ return { scriptTag: d.scriptTag, paths: (d.paths ?? []).filter((p) => idOf(p.id_bot) === agentId) };
18
+ }
19
+ /** Open an agent on a website path. The agent must be in the org. */
20
+ async create(input) {
21
+ await new AgentsSDK(this.client).getAgent(input.agentId);
22
+ return this.client.copilotPost('/organization/:org_id/distributions', {
23
+ hostname: input.host,
24
+ pathname: input.path,
25
+ pathExpression: input.pathExpression ?? input.path,
26
+ id_bot: input.agentId,
27
+ aiAgentSettings: { betaRelease: false },
28
+ userCapabilities: { startConversation: true, endConversation: true, uploadAttachment: Boolean(input.allowUpload) },
29
+ ...(input.greeting ? { greetingMessage: input.greeting } : {}),
30
+ });
31
+ }
32
+ /**
33
+ * Change a distribution. copilot's update is not scoped to the org and
34
+ * creates a document for an unknown id, so only ids from this org's list
35
+ * are accepted, and a new agent must be in the org.
36
+ */
37
+ async update(id, changes) {
38
+ const existing = (await this.list()).paths.find((p) => String(p.id) === id);
39
+ if (!existing)
40
+ throw new CliError(`Distribution ${id} is not in this org. See \`indemn distributions list\`.`);
41
+ if (typeof changes.id_bot === 'string')
42
+ await new AgentsSDK(this.client).getAgent(changes.id_bot);
43
+ return this.client.copilotPut(`/organization/:org_id/distributions/${id}`, changes);
44
+ }
45
+ /** Templates are shared by every org on the platform. */
46
+ listTemplates() {
47
+ return this.client.copilotGet('/organization/:org_id/templates');
48
+ }
49
+ /** Publish an agent of this org as a template every org can see. */
50
+ async createTemplate(input) {
51
+ await new AgentsSDK(this.client).getAgent(input.agentId);
52
+ return this.client.copilotPost('/organization/:org_id/templates', {
53
+ agent_id: input.agentId, name: input.name, description: input.description, category: input.category, tags: input.tags,
54
+ });
55
+ }
56
+ /** Only templates made from an agent of this org may be changed from here. */
57
+ async ownTemplate(id) {
58
+ const t = (await this.listTemplates()).find((x) => String(x._id) === id);
59
+ if (!t)
60
+ throw new CliError(`Template ${id} not found.`);
61
+ const src = typeof t.agent_id === 'object' && t.agent_id ? t.agent_id : undefined;
62
+ const orgId = await this.client.currentOrgId();
63
+ if (!src || idOf(src.id_organization) !== orgId) {
64
+ throw new CliError(`Template "${t.name}" was made from an agent of another org; the CLI only changes templates of your own org.`);
65
+ }
66
+ return t;
67
+ }
68
+ async updateTemplate(id, changes) {
69
+ await this.ownTemplate(id);
70
+ return this.client.copilotPut(`/organization/:org_id/templates/${id}`, changes);
71
+ }
72
+ async deleteTemplate(id) {
73
+ await this.ownTemplate(id);
74
+ return this.client.copilotDelete(`/organization/:org_id/templates/${id}`);
75
+ }
76
+ /**
77
+ * A new agent in this org copied from a template (bot, prompt, model,
78
+ * skills and knowledge bases; not phone numbers, voice settings or
79
+ * distributions).
80
+ */
81
+ async createFromTemplate(templateId, opts = {}) {
82
+ const t = (await this.listTemplates()).find((x) => String(x._id) === templateId);
83
+ if (!t)
84
+ throw new CliError(`Template ${templateId} not found. See \`indemn templates list\`.`);
85
+ const source = typeof t.agent_id === 'object' && t.agent_id ? idOf(t.agent_id._id) : idOf(t.agent_id);
86
+ if (!source)
87
+ throw new CliError(`Template "${t.name}" has no source agent.`);
88
+ return this.client.copilotPost('/organization/:org_id/ai-studio/v2/bots/clone', {
89
+ source_id_bot: source,
90
+ ...(opts.name ? { agent_name: opts.name } : {}),
91
+ ...(opts.channels?.length ? { channels: opts.channels } : {}),
92
+ });
93
+ }
94
+ /** Solutions the org has, with their connected systems (read-only). */
95
+ async listSolutions() {
96
+ const res = await this.client.copilotGet('/organization/:org_id/solutions');
97
+ return res.solutions ?? [];
98
+ }
99
+ }
100
+ //# sourceMappingURL=distribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distribution.js","sourceRoot":"","sources":["../../src/sdk/distribution.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,87 @@ export declare class EvalSDK {
8
8
  getRunStatus(runId: string): Promise<EvaluationRun>;
9
9
  getRunResults(runId: string): Promise<EvaluationResult[]>;
10
10
  getBotContext(botId: string): Promise<BotContext>;
11
+ /**
12
+ * The evaluations service checks nothing about orgs. Before acting on an
13
+ * agent, confirm through copilot (which refuses other orgs' agents) that it
14
+ * belongs to the org this command acts on.
15
+ */
16
+ assertAgentInOrg(agentId: string): Promise<void>;
17
+ /** A run's agent must be in the org too, so results of other orgs are not read. */
18
+ getRunInOrg(runId: string): Promise<EvaluationRun>;
19
+ qualityMetrics(): Promise<Record<string, unknown>>;
20
+ trends(agentId: string, testSetId?: string, limit?: number): Promise<{
21
+ series: unknown[];
22
+ drift: unknown;
23
+ }>;
24
+ compareRuns(runA: string, runB: string): Promise<unknown>;
25
+ /** Server-rendered PDF report of a completed run; returns a link valid for 15 minutes. */
26
+ exportReport(runId: string, force?: boolean): Promise<{
27
+ download_url: string;
28
+ report_id: string;
29
+ }>;
30
+ downloadReport(reportId: string): Promise<{
31
+ download_url: string;
32
+ }>;
33
+ prodCalls(botId: string, opts?: {
34
+ search?: string;
35
+ limit?: number;
36
+ }): Promise<unknown[]>;
37
+ prodCall(sessionId: string): Promise<{
38
+ bot_id?: string;
39
+ [k: string]: unknown;
40
+ }>;
41
+ /** Turn an ingested voice call into a regression test item (test set "Regressions (review)"). */
42
+ promoteProdCall(sessionId: string): Promise<unknown>;
43
+ /** Grade a replayed conversation against a baseline one with the agent's stored evaluator. */
44
+ evaluateTranscript(input: {
45
+ agent_id: string;
46
+ baseline_transcript: Array<{
47
+ sender: 'user' | 'bot';
48
+ text: string;
49
+ }>;
50
+ replay_transcript: Array<{
51
+ sender: 'user' | 'bot';
52
+ text: string;
53
+ }>;
54
+ conversation_id?: string;
55
+ }): Promise<unknown>;
56
+ listDatasets(agentId?: string): Promise<unknown[]>;
57
+ getDataset(id: string): Promise<{
58
+ agent_id?: string;
59
+ [k: string]: unknown;
60
+ }>;
61
+ deleteDataset(id: string): Promise<unknown>;
62
+ listTestCases(datasetId: string): Promise<unknown[]>;
63
+ getTestCase(id: string): Promise<unknown>;
64
+ deleteTestCase(id: string): Promise<unknown>;
65
+ evaluatorTypes(): Promise<unknown[]>;
66
+ listEvaluatorConfigs(agentId?: string): Promise<unknown[]>;
67
+ getEvaluatorConfig(id: string): Promise<{
68
+ agent_id?: string;
69
+ [k: string]: unknown;
70
+ }>;
71
+ deleteEvaluatorConfig(id: string): Promise<unknown>;
11
72
  pollRunUntilComplete(runId: string, intervalMs?: number, timeoutMs?: number): Promise<EvaluationRun>;
12
73
  }
74
+ export interface GateOptions {
75
+ /** Fail when passed/total is below this (0..1). */
76
+ minPassRate?: number;
77
+ /** Fail when the run's p95 latency is above this. */
78
+ maxP95Ms?: number;
79
+ /** block: a failed run fails the gate (default). warn: judge on pass rate and latency only. */
80
+ errorPolicy?: 'block' | 'warn';
81
+ /** Also fail when any case had an infrastructure error. */
82
+ failOnError?: boolean;
83
+ }
84
+ /**
85
+ * The same verdict as the evaluations repo's scripts/eval_gate.py, plus an
86
+ * optional fail-on-error. pass rate = passed / total, so errored and
87
+ * unevaluated cases lower it.
88
+ */
89
+ export declare function gateVerdict(run: EvaluationRun, opts: GateOptions): {
90
+ pass: boolean;
91
+ passRate: number;
92
+ reasons: string[];
93
+ };
13
94
  //# sourceMappingURL=eval.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../src/sdk/eval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EACV,sBAAsB,EACtB,yBAAyB,EACzB,aAAa,EACb,gBAAgB,EAChB,UAAU,EACX,MAAM,YAAY,CAAC;AAEpB,qBAAa,OAAO;IACN,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,YAAY;IAElC,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAIpF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAKpD,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAInD,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAIzD,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAIjD,oBAAoB,CACxB,KAAK,EAAE,MAAM,EACb,UAAU,SAAO,EACjB,SAAS,SAAS,GACjB,OAAO,CAAC,aAAa,CAAC;CAmB1B"}
1
+ {"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../src/sdk/eval.ts"],"names":[],"mappings":"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"}
package/dist/sdk/eval.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { CliError, NeedsInputError, SessionExpiredError } from '../core/runtime.js';
1
2
  export class EvalSDK {
2
3
  client;
3
4
  constructor(client) {
@@ -19,6 +20,99 @@ export class EvalSDK {
19
20
  async getBotContext(botId) {
20
21
  return this.client.evalsGet(`/api/v1/bots/${botId}/context`);
21
22
  }
23
+ /**
24
+ * The evaluations service checks nothing about orgs. Before acting on an
25
+ * agent, confirm through copilot (which refuses other orgs' agents) that it
26
+ * belongs to the org this command acts on.
27
+ */
28
+ async assertAgentInOrg(agentId) {
29
+ const { AgentsSDK } = await import('./agents.js');
30
+ const agent = await new AgentsSDK(this.client).getAgent(agentId).catch((err) => {
31
+ // "Which org?" and "log in again" are not answers about the agent.
32
+ if (err instanceof NeedsInputError || err instanceof SessionExpiredError)
33
+ throw err;
34
+ return undefined;
35
+ });
36
+ if (!agent)
37
+ throw new CliError(`Agent ${agentId} is not in the organization this command acts on. Nothing was run.`);
38
+ }
39
+ /** A run's agent must be in the org too, so results of other orgs are not read. */
40
+ async getRunInOrg(runId) {
41
+ const run = await this.getRunStatus(runId);
42
+ if (run.agent_id)
43
+ await this.assertAgentInOrg(run.agent_id);
44
+ return run;
45
+ }
46
+ qualityMetrics() {
47
+ return this.client.evalsGet('/api/v1/evaluations/quality-metrics');
48
+ }
49
+ trends(agentId, testSetId, limit = 50) {
50
+ const q = { agent_id: agentId, limit: String(limit) };
51
+ if (testSetId)
52
+ q.test_set_id = testSetId;
53
+ return this.client.evalsGet('/api/v1/trends', q);
54
+ }
55
+ compareRuns(runA, runB) {
56
+ return this.client.evalsGet('/api/v1/trends/compare', { run_a: runA, run_b: runB });
57
+ }
58
+ /** Server-rendered PDF report of a completed run; returns a link valid for 15 minutes. */
59
+ exportReport(runId, force = false) {
60
+ return this.client.evalsPost(`/api/v1/runs/${runId}/export${force ? '?force=true' : ''}`);
61
+ }
62
+ downloadReport(reportId) {
63
+ return this.client.evalsGet(`/api/v1/reports/${reportId}/download`);
64
+ }
65
+ prodCalls(botId, opts = {}) {
66
+ const q = { bot_id: botId, limit: String(opts.limit ?? 50) };
67
+ if (opts.search)
68
+ q.search = opts.search;
69
+ return this.client.evalsGet('/api/v1/prod-calls', q);
70
+ }
71
+ prodCall(sessionId) {
72
+ return this.client.evalsGet(`/api/v1/prod-calls/${sessionId}`);
73
+ }
74
+ /** Turn an ingested voice call into a regression test item (test set "Regressions (review)"). */
75
+ promoteProdCall(sessionId) {
76
+ return this.client.evalsPost(`/api/v1/prod-calls/${sessionId}/promote`);
77
+ }
78
+ /** Grade a replayed conversation against a baseline one with the agent's stored evaluator. */
79
+ async evaluateTranscript(input) {
80
+ const res = await this.client.evalsPost('/api/v1/evaluate-transcript', input);
81
+ // The service reports internal errors with HTTP 200.
82
+ if (res && res.success === false && res.error)
83
+ throw new Error(`Transcript evaluation failed: ${res.error}`);
84
+ return res;
85
+ }
86
+ listDatasets(agentId) {
87
+ return this.client.evalsGet('/api/v1/datasets', agentId ? { agent_id: agentId } : undefined);
88
+ }
89
+ getDataset(id) {
90
+ return this.client.evalsGet(`/api/v1/datasets/${id}`);
91
+ }
92
+ deleteDataset(id) {
93
+ return this.client.evalsDelete(`/api/v1/datasets/${id}`);
94
+ }
95
+ listTestCases(datasetId) {
96
+ return this.client.evalsGet(`/api/v1/datasets/${datasetId}/test-cases`);
97
+ }
98
+ getTestCase(id) {
99
+ return this.client.evalsGet(`/api/v1/test-cases/${id}`);
100
+ }
101
+ deleteTestCase(id) {
102
+ return this.client.evalsDelete(`/api/v1/test-cases/${id}`);
103
+ }
104
+ evaluatorTypes() {
105
+ return this.client.evalsGet('/api/v1/evaluators/types');
106
+ }
107
+ listEvaluatorConfigs(agentId) {
108
+ return this.client.evalsGet('/api/v1/evaluator-configs', agentId ? { agent_id: agentId } : undefined);
109
+ }
110
+ getEvaluatorConfig(id) {
111
+ return this.client.evalsGet(`/api/v1/evaluator-configs/${id}`);
112
+ }
113
+ deleteEvaluatorConfig(id) {
114
+ return this.client.evalsDelete(`/api/v1/evaluator-configs/${id}`);
115
+ }
22
116
  async pollRunUntilComplete(runId, intervalMs = 5000, timeoutMs = 300000) {
23
117
  const startTime = Date.now();
24
118
  while (true) {
@@ -33,4 +127,27 @@ export class EvalSDK {
33
127
  }
34
128
  }
35
129
  }
130
+ /**
131
+ * The same verdict as the evaluations repo's scripts/eval_gate.py, plus an
132
+ * optional fail-on-error. pass rate = passed / total, so errored and
133
+ * unevaluated cases lower it.
134
+ */
135
+ export function gateVerdict(run, opts) {
136
+ const reasons = [];
137
+ const total = run.total ?? 0;
138
+ const passRate = total ? (run.passed ?? 0) / total : 0;
139
+ if ((opts.errorPolicy ?? 'block') === 'block' && run.status === 'failed')
140
+ reasons.push('run status=failed');
141
+ if (total === 0)
142
+ reasons.push('no cases evaluated');
143
+ if (opts.minPassRate !== undefined && total > 0 && passRate < opts.minPassRate) {
144
+ reasons.push(`pass rate ${passRate.toFixed(3)} < ${opts.minPassRate}`);
145
+ }
146
+ const p95 = run.latency?.p95_ms;
147
+ if (opts.maxP95Ms !== undefined && typeof p95 === 'number' && p95 > opts.maxP95Ms)
148
+ reasons.push(`p95 latency ${p95} > ${opts.maxP95Ms}`);
149
+ if (opts.failOnError && (run.errors ?? 0) > 0)
150
+ reasons.push(`${run.errors} case(s) errored`);
151
+ return { pass: reasons.length === 0, passRate, reasons };
152
+ }
36
153
  //# sourceMappingURL=eval.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"eval.js","sourceRoot":"","sources":["../../src/sdk/eval.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,OAAO;IACE;IAApB,YAAoB,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;IAAG,CAAC;IAE5C,KAAK,CAAC,iBAAiB,CAAC,KAA6B;QACnD,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAA4B,qBAAqB,EAAE,KAAK,CAAC,CAAC;IACxF,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAgB;QAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1D,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAkB,cAAc,EAAE,KAAK,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAa;QAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAgB,gBAAgB,KAAK,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAa;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAqB,gBAAgB,KAAK,UAAU,CAAC,CAAC;IACnF,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAa;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAa,gBAAgB,KAAK,UAAU,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,KAAa,EACb,UAAU,GAAG,IAAI,EACjB,SAAS,GAAG,MAAM;QAElB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAE3C,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC1D,OAAO,GAAG,CAAC;YACb,CAAC;YAED,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI,SAAS,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CACb,kBAAkB,KAAK,4BAA4B,SAAS,GAAG,IAAI,mBAAmB,GAAG,CAAC,MAAM,GAAG,CACpG,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"eval.js","sourceRoot":"","sources":["../../src/sdk/eval.ts"],"names":[],"mappings":"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"}
@@ -16,15 +16,28 @@ export declare class FunctionsSDK {
16
16
  type: string;
17
17
  description?: string;
18
18
  required?: boolean;
19
+ allowedValues?: string[];
19
20
  }): Promise<FunctionParameter>;
20
21
  updateParameter(agentId: string, funcId: string, paramId: string, param: {
21
22
  name?: string;
22
23
  type?: string;
23
24
  description?: string;
24
25
  required?: boolean;
26
+ allowedValues?: string[];
25
27
  }): Promise<FunctionParameter>;
26
28
  deleteParameter(agentId: string, funcId: string, paramId: string): Promise<void>;
27
- listMasterFunctions(): Promise<unknown[]>;
29
+ /** Skill templates; copilot filters by channel and assumes web when none is given (so voice ones are hidden). */
30
+ listMasterFunctions(channels?: string[]): Promise<unknown[]>;
31
+ /**
32
+ * Ask copilot to propose skills from a document (file) or pasted text.
33
+ * Nothing is created; pass the proposal to bulkCreate after review.
34
+ */
35
+ generateFromDoc(agentId: string, source: {
36
+ filePath?: string;
37
+ text?: string;
38
+ }): Promise<unknown>;
39
+ /** Create several skills at once. Names are checked first; copilot creates them without a transaction. */
40
+ bulkCreate(agentId: string, functions: Array<Record<string, unknown>>): Promise<BotFunction[]>;
28
41
  listLLMModels(): Promise<unknown[]>;
29
42
  }
30
43
  //# sourceMappingURL=functions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../src/sdk/functions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE3G,qBAAa,YAAY;IACX,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,YAAY;IAElC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAMtD,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;IAOjF,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;IAOjG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM9D,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAOjG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMlD,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAO/D,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAM7E,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAc1J,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAahL,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhF,mBAAmB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAMzC,aAAa,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;CAK1C"}
1
+ {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../src/sdk/functions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAO3G,qBAAa,YAAY;IACX,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,YAAY;IAElC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAMtD,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;IAQjF,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;IAQjG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM9D,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAOjG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMlD,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAO/D,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAM7E,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAepL,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAsB1M,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtF,iHAAiH;IAC3G,mBAAmB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAOlE;;;OAGG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAYtG,0GAA0G;IACpG,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAQ9F,aAAa,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;CAK1C"}
@@ -1,3 +1,9 @@
1
+ import { CliError } from '../core/runtime.js';
2
+ import { assertSkillNameAllowed } from './skills.js';
3
+ /** Allowed values as copilot stores them (quick-reply buttons); its parameter route parses them from a JSON string. */
4
+ function choices(values) {
5
+ return JSON.stringify(values.map((v) => ({ title: v, payload: v, type: 'postback' })));
6
+ }
1
7
  export class FunctionsSDK {
2
8
  client;
3
9
  constructor(client) {
@@ -7,9 +13,11 @@ export class FunctionsSDK {
7
13
  return this.client.copilotGet(`/organization/:org_id/ai-studio/bots/${agentId}/functions`);
8
14
  }
9
15
  async createFunction(agentId, input) {
16
+ assertSkillNameAllowed(input.name, input.type);
10
17
  return this.client.copilotPost(`/organization/:org_id/ai-studio/bots/${agentId}/functions`, input);
11
18
  }
12
19
  async updateFunction(agentId, funcId, input) {
20
+ assertSkillNameAllowed(input.name, input.type);
13
21
  return this.client.copilotPut(`/organization/:org_id/ai-studio/bots/${agentId}/functions/${funcId}`, input);
14
22
  }
15
23
  async deleteFunction(agentId, funcId) {
@@ -34,23 +42,58 @@ export class FunctionsSDK {
34
42
  type: param.type,
35
43
  description: param.description,
36
44
  is_required: param.required ?? false,
45
+ ...(param.allowedValues?.length ? { enums: choices(param.allowedValues), isEnumsEnabled: true } : {}),
37
46
  }];
38
47
  return this.client.copilotPost(`/organization/:org_id/ai-studio/bots/${agentId}/functions/${funcId}/parameters`, payload);
39
48
  }
40
49
  async updateParameter(agentId, funcId, paramId, param) {
41
- // Server uses POST upsert (no PUT /:id endpoint exists). Include the param id for upsert matching.
50
+ // Server uses POST upsert (no PUT /:id endpoint exists) and writes every field it is sent, clearing
51
+ // allowed values left out: start from the saved parameter so only the named fields change.
52
+ const current = (await this.listParameters(agentId, funcId)).find((p) => p._id === paramId);
53
+ if (!current)
54
+ throw new CliError(`Parameter ${paramId} is not on this skill.`);
42
55
  const payload = [{
43
56
  id: paramId,
44
- ...param,
45
- is_required: param.required ?? false,
57
+ name: param.name ?? current.name,
58
+ type: param.type ?? current.type,
59
+ description: param.description ?? current.description,
60
+ ...(param.description === undefined ? { descriptionOps: current.descriptionOps } : {}),
61
+ question_title: current.question_title,
62
+ is_required: param.required ?? current.is_required ?? false,
63
+ enums: param.allowedValues ? choices(param.allowedValues) : JSON.stringify(current.enums ?? []),
64
+ isEnumsEnabled: param.allowedValues ? param.allowedValues.length > 0 : (current.isEnumsEnabled ?? false),
46
65
  }];
47
66
  return this.client.copilotPost(`/organization/:org_id/ai-studio/bots/${agentId}/functions/${funcId}/parameters`, payload);
48
67
  }
49
68
  async deleteParameter(agentId, funcId, paramId) {
50
69
  await this.client.copilotDelete(`/organization/:org_id/ai-studio/bots/${agentId}/functions/${funcId}/parameters/${paramId}`);
51
70
  }
52
- async listMasterFunctions() {
53
- return this.client.copilotGet('/organization/:org_id/ai-studio/master-functions');
71
+ /** Skill templates; copilot filters by channel and assumes web when none is given (so voice ones are hidden). */
72
+ async listMasterFunctions(channels) {
73
+ return this.client.copilotGet('/organization/:org_id/ai-studio/master-functions', channels?.length ? { channel: channels.join(',') } : undefined);
74
+ }
75
+ /**
76
+ * Ask copilot to propose skills from a document (file) or pasted text.
77
+ * Nothing is created; pass the proposal to bulkCreate after review.
78
+ */
79
+ async generateFromDoc(agentId, source) {
80
+ const path = `/organization/:org_id/ai-studio/bots/${agentId}/functions/generate-from-doc`;
81
+ if (source.filePath) {
82
+ const { readFileSync } = await import('node:fs');
83
+ const { basename } = await import('node:path');
84
+ const form = new FormData();
85
+ form.append('file', new Blob([readFileSync(source.filePath)]), basename(source.filePath));
86
+ return this.client.copilotPostForm(path, form);
87
+ }
88
+ return this.client.copilotPost(path, { text: source.text });
89
+ }
90
+ /** Create several skills at once. Names are checked first; copilot creates them without a transaction. */
91
+ async bulkCreate(agentId, functions) {
92
+ for (const f of functions) {
93
+ const def = (f.function_definition ?? f);
94
+ assertSkillNameAllowed(def.name, def.type);
95
+ }
96
+ return this.client.copilotPost(`/organization/:org_id/ai-studio/bots/${agentId}/functions/bulk-create`, { functions });
54
97
  }
55
98
  async listLLMModels() {
56
99
  return this.client.copilotGet('/organization/:org_id/ai-studio/llm-models');
@@ -1 +1 @@
1
- {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../src/sdk/functions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../src/sdk/functions.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  export { IndemnClient } from './client.js';
2
+ export { OrgsSDK } from './orgs.js';
3
+ export { resolveCredential, copilotAuthHeader, darwinAuthHeader, type Credential } from './credentials.js';
2
4
  export { login, logout, whoami } from './auth.js';
3
5
  export { AgentsSDK } from './agents.js';
4
6
  export { ConfigSDK } from './config.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC3G,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,cAAc,YAAY,CAAC"}
package/dist/sdk/index.js CHANGED
@@ -1,4 +1,6 @@
1
1
  export { IndemnClient } from './client.js';
2
+ export { OrgsSDK } from './orgs.js';
3
+ export { resolveCredential, copilotAuthHeader, darwinAuthHeader } from './credentials.js';
2
4
  export { login, logout, whoami } from './auth.js';
3
5
  export { AgentsSDK } from './agents.js';
4
6
  export { ConfigSDK } from './config.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAmB,MAAM,kBAAkB,CAAC;AAC3G,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,cAAc,YAAY,CAAC"}