@indemn/cli 1.7.8 → 1.7.10

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.
@@ -5,12 +5,12 @@
5
5
  "name": "Indemn",
6
6
  "email": "support@indemn.com"
7
7
  },
8
- "version": "1.7.8",
8
+ "version": "1.7.10",
9
9
  "plugins": [
10
10
  {
11
11
  "name": "indemn-cli",
12
12
  "description": "Manage Indemn AI agents \u2014 create, configure, evaluate, and chat with agents programmatically",
13
- "version": "1.7.8",
13
+ "version": "1.7.10",
14
14
  "author": {
15
15
  "name": "Indemn",
16
16
  "email": "support@indemn.com"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "indemn-cli",
3
- "version": "1.7.8",
3
+ "version": "1.7.10",
4
4
  "description": "Manage Indemn AI agents \u2014 create, configure, evaluate, and chat with agents programmatically",
5
5
  "author": {
6
6
  "name": "Indemn",
package/.mcp.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "indemn": {
3
3
  "command": "npx",
4
- "args": ["-y", "@indemn/cli@1.7.7", "mcp", "serve"]
4
+ "args": ["-y", "@indemn/cli@1.7.9", "mcp", "serve"]
5
5
  }
6
6
  }
package/README.md CHANGED
@@ -40,7 +40,7 @@ indemn unlink
40
40
 
41
41
  - **Every chat is a test conversation.** `indemn chat` and the MCP `chat_with_agent` mark the conversation as a test, show the tester's name in the dashboard, and read the stored conversation back before the first message; if it was stored as live or in another org, nothing is sent.
42
42
  - **Changes ask first.** Deleting, importing, replacing a prompt or model, changing lifecycle, attaching numbers and starting paid runs show what would happen and ask. Scripts pass `--yes`. Published agents also need `--confirm-published`, and an agent whose status cannot be read is treated as published. Changing a skill or the webhook of an agent that may be live asks first too. MCP tools return a dry run until the user agrees; hosts that support elicitation ask the user directly.
43
- - **Read-only areas.** Billing and campaigns are read-only. Phone numbers are bought only after a person confirms that exact number (`agents numbers buy`, or the approval form in MCP; an AI cannot confirm a purchase itself); searching is free. Shared V2 catalogs (components, connectors) are read-only.
43
+ - **Read-only areas.** Billing is read-only. Campaigns are read-only in the terminal; the MCP tools also create and change campaigns, touchpoints, templates, template skills and books (each change approved, in orgs with Solutions on; never sending or deleting). Phone numbers are bought only after a person confirms that exact number (`agents numbers buy`, or the approval form in MCP; an AI cannot confirm a purchase itself); searching is free. Shared V2 catalogs (components, connectors) are read-only.
44
44
  - **Exit codes.** 0 success, 1 error, 2 a choice is needed, 3 log in again.
45
45
 
46
46
  ## Commands
@@ -58,7 +58,7 @@ indemn unlink
58
58
  | Analytics and settings | `analytics metrics\|performance\|volume\|handoffs\|feedback\|conversations\|charts\|chart`, `org config get\|timezone\|business-hours\|holidays`, `audit list` |
59
59
  | Tickets | `tickets list\|get\|create\|update\|assign\|resolve\|link\|archive`, `tickets rules list\|create\|update\|delete` |
60
60
  | Billing (read-only) | `billing status\|invoices\|usage-forecast\|plans` |
61
- | Campaigns (read-only) | `campaigns list\|get\|counts\|forecast\|next-touchpoints\|versions`, `campaigns templates list\|get\|skills` |
61
+ | Campaigns | `campaigns list\|get\|counts\|forecast\|next-touchpoints\|versions`, `campaigns templates list\|get\|skills` (terminal: read-only); MCP: `save_campaign`, `set_touchpoint`, `publish_campaign`, `set_campaign_status`, `save_campaign_template`, `save_template_skill`, `save_book` |
62
62
  | Evaluations | `eval run\|status\|results\|list\|trends\|compare\|report\|export\|metrics\|transcript\|prod-calls\|datasets\|evaluators`, `rubric ...`, `testset ...` |
63
63
  | V2 platform and Jarvis | `platform agents\|templates\|components\|connectors\|bindings\|scenarios\|simulations\|org-evaluations`, `jarvis chat`, `jarvis jobs create\|list\|get` |
64
64
 
@@ -1 +1 @@
1
- {"version":3,"file":"tool-meta.d.ts","sourceRoot":"","sources":["../../src/mcp/tool-meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,eAAe,CAAC;IAC7B,6EAA6E;IAC7E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;IACrD,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mGAAmG;IACnG,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAkBD,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CA4O9C,CAAC"}
1
+ {"version":3,"file":"tool-meta.d.ts","sourceRoot":"","sources":["../../src/mcp/tool-meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,eAAe,CAAC;IAC7B,6EAA6E;IAC7E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;IACrD,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mGAAmG;IACnG,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA6BD,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAqR9C,CAAC"}
@@ -6,6 +6,15 @@ const write = (title, extra = {}) => ({
6
6
  title,
7
7
  annotations: { title, readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false, ...extra },
8
8
  });
9
+ /** The parts a call changes, in words: "audience, channel policy". */
10
+ const parts = (a, keys) => keys.filter((k) => a[k] !== undefined && a[k] !== '').map((k) => k.replace(/_/g, ' ')).join(', ');
11
+ /** A book change with its new values, so the person sees what they approve: "field map to Company → account.name". */
12
+ const bookChanges = (a) => [
13
+ a.source !== undefined && `source to ${a.source?.kind ?? JSON.stringify(a.source)}`,
14
+ Array.isArray(a.field_map) && `field map to ${a.field_map.map((m) => `${m.source_path} → ${m.schema_key}`).join(', ')}`,
15
+ Array.isArray(a.identity_keys) && `identity keys to ${a.identity_keys.join(', ')}`,
16
+ a.display && `display to ${['primary', 'secondary'].filter((k) => Array.isArray(a.display[k])).map((k) => `${k} ${a.display[k].join(', ')}`).join('; ')}`,
17
+ ].filter(Boolean).join('; ');
9
18
  /** Overwrites or removes something that cannot be restored from the tool itself. */
10
19
  const destroy = (title, extra = {}) => ({
11
20
  title,
@@ -22,6 +31,11 @@ export const TOOL_META = {
22
31
  describe: (a) => `This will create a new organization "${a.name}" on the sandbox plan (its trial, then the plan's monthly price, invoiced to the support account).`,
23
32
  },
24
33
  list_org_members: { ...read('List organization members'), paginate: true },
34
+ invite_org_member: {
35
+ ...write('Invite organization member'),
36
+ guard: true,
37
+ describe: (a) => `This will invite ${a.email} to the organization as ${{ admin: 'Administrator', agent: 'Agent', member: 'Member' }[String(a.role)] ?? a.role}. Without an Indemn account they get an email to sign up; with one they join at once.`,
38
+ },
25
39
  list_channels: read('List channels'),
26
40
  // Agents
27
41
  list_agents: { ...read('List agents'), paginate: true },
@@ -182,8 +196,44 @@ export const TOOL_META = {
182
196
  delete_ticket_rule: { ...destroy('Delete ticket rule'), guard: true, describe: (a) => `This will delete ticket rule ${a.rule_id}; agents stop opening tickets for it.` },
183
197
  // Billing (read-only)
184
198
  get_billing: read('Billing status, invoices, usage or plans'),
185
- // Campaigns (read-only)
186
- get_campaigns: read('Read campaigns and templates'),
199
+ // Campaigns: each change is approved on a card; nothing here sends a message, and nothing deletes.
200
+ get_campaigns: read('Read campaigns, templates and books'),
201
+ save_campaign: {
202
+ ...write('Create or change campaign'), guard: true,
203
+ describe: (a) => a.campaign_id
204
+ ? `This will change the ${parts(a, ['audience', 'escalation_policy', 'channel_policy'])} in the draft of campaign ${a.campaign_id} (it takes effect when the campaign is published).`
205
+ : `This will create campaign "${a.name}" as a draft; it sends nothing until it is published and started.`,
206
+ },
207
+ set_touchpoint: {
208
+ ...write('Add or change touchpoint', { idempotentHint: true }), guard: true,
209
+ describe: (a) => `This will add or change touchpoint "${a.key}" in the draft of campaign ${a.campaign_id}${a.channel ? ` (${a.channel})` : ''}${a.terminal_action === 'send' ? '. It is set to SEND to customers directly once the campaign is published and running' : ''}.`,
210
+ },
211
+ publish_campaign: { ...write('Publish campaign'), guard: true, describe: (a) => `This will publish the draft of campaign ${a.campaign_id} as its next version; if it is running, it uses it from its next run.` },
212
+ set_campaign_status: {
213
+ ...write('Start, pause or archive campaign'), guard: true,
214
+ describe: (a) => a.status === 'running'
215
+ ? `This will START campaign ${a.campaign_id}: it enrols the matching records of its book and runs its touchpoints (touchpoints set to send reach real customers).`
216
+ : a.status === 'archived' ? `This will archive campaign ${a.campaign_id} for good: it cannot be started again.`
217
+ : `This will pause campaign ${a.campaign_id}: its touchpoints stop until it is started again.`,
218
+ },
219
+ save_campaign_template: {
220
+ ...write('Create or change campaign template'), guard: true,
221
+ describe: (a) => a.template_id
222
+ ? `This will save a new version of template ${a.template_id} (${parts(a, ['subject', 'body', 'html', 'uses_variables', 'skills', 'selection_tags'])}); touchpoints keep the version they are set to until it is set again.`
223
+ : `This will create ${a.channel} template "${a.name}".`,
224
+ },
225
+ save_template_skill: {
226
+ ...write('Create or change template skill'), guard: true,
227
+ describe: (a) => a.template_skill_id
228
+ ? `This will change template skill ${a.template_skill_id} (${parts(a, ['name', 'instructions'])}); templates using it write with it from their campaigns' next run.`
229
+ : `This will create template skill "${a.name}".`,
230
+ },
231
+ save_book: {
232
+ ...write('Create or change book'), guard: true,
233
+ describe: (a) => a.book_id
234
+ ? `This will change book ${a.book_id}: ${bookChanges(a)}.`
235
+ : `This will create book "${a.name}" for this solution.`,
236
+ },
187
237
  // V2 platform and Jarvis (Darwin)
188
238
  platform_list: read('List V2 platform items'),
189
239
  platform_get: read('Get a V2 platform item'),
@@ -1 +1 @@
1
- {"version":3,"file":"tool-meta.js","sourceRoot":"","sources":["../../src/mcp/tool-meta.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-meta.js","sourceRoot":"","sources":["../../src/mcp/tool-meta.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA0BrD,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AA6I9D,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,QAAQ,CAuxE/E"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA0BrD,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAkJ9D,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,QAAQ,CAg8E/E"}
package/dist/mcp/tools.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod/v3';
2
- import { currentAccess, orgDenial, refreshAccess, roleIn, usableSomewhere } from '../sdk/access.js';
2
+ import { currentAccess, inviteDenial, inviteProject, orgDenial, refreshAccess, roleIn, usableSomewhere } from '../sdk/access.js';
3
3
  import { AgentInsightsSDK, AgentsSDK } from '../sdk/agents.js';
4
4
  import { createAgentFromSkeleton, exportAgent, importAgent, missingSkeletonFields, parseModel, } from '../sdk/agent-bundle.js';
5
5
  import { getAskers } from '../core/scope.js';
@@ -23,7 +23,7 @@ import { exchange, openTestChat } from '../sdk/test-chat.js';
23
23
  import { ConversationsSDK, conversationToTestSet, conversationUrl, isCliConversation, isTestConversation, projectOfAgent } from '../sdk/conversations.js';
24
24
  import { exportEvalMarkdown, exportEvalReport, exportAgentCard } from '../report/export.js';
25
25
  import { createRegistry } from './registry.js';
26
- import { OrgsSDK } from '../sdk/orgs.js';
26
+ import { INVITE_ROLES, OrgsSDK } from '../sdk/orgs.js';
27
27
  import { whoami } from '../sdk/auth.js';
28
28
  import { NeedsInputError, SessionExpiredError } from '../core/runtime.js';
29
29
  // A REST skill's authentication as flat fields: for a nested object Gemini writes calls Google rejects.
@@ -155,6 +155,10 @@ const skillDefinition = z.preprocess(parseJsonText, z.object({
155
155
  description: z.string().optional(), required: z.boolean().optional(),
156
156
  }).passthrough()).optional(),
157
157
  }).passthrough());
158
+ // Campaigns are on for an org only when Indemn has turned Solutions on: the dashboard hides them otherwise, and the
159
+ // campaigns service does not check it, so these tools ask first (before any approval card).
160
+ const CAMPAIGN_TOOLS = new Set(['get_campaigns', 'save_campaign', 'set_touchpoint', 'publish_campaign', 'set_campaign_status', 'save_campaign_template', 'save_template_skill', 'save_book']);
161
+ const SOLUTIONS_OFF = 'Campaigns are off for this organization: Solutions is not turned on (the dashboard hides campaigns too). Indemn staff can turn it on with set_org_admin_settings (solutions: true); anyone else asks the Indemn team to turn it on.';
158
162
  export function registerTools(server, client) {
159
163
  // Role awareness: the folder's linked org (or INDEMN_ORG_ID) narrows what counts; otherwise any org.
160
164
  const orgInView = () => process.env.INDEMN_ORG_ID || client.getLink()?.org_id || undefined;
@@ -164,6 +168,13 @@ export function registerTools(server, client) {
164
168
  visible: (name) => usableSomewhere(name, currentAccess(client), orgInView()),
165
169
  // Refuse early only when the saved access still says no after asking again (it may be stale).
166
170
  deny: async (name, orgId) => {
171
+ if (name === 'invite_org_member')
172
+ return inviteDenial((await refreshAccess(client)) ?? currentAccess(client), orgId);
173
+ if (CAMPAIGN_TOOLS.has(name) && orgId) {
174
+ const on = await client.copilotGet(`/organization/${orgId}/configurations`).then((c) => c?.enableSolutions === true, () => false);
175
+ if (!on)
176
+ return SOLUTIONS_OFF;
177
+ }
167
178
  if (!orgDenial(name, currentAccess(client), orgId))
168
179
  return null;
169
180
  return orgDenial(name, await refreshAccess(client), orgId);
@@ -207,7 +218,12 @@ export function registerTools(server, client) {
207
218
  add(args.ticket_id, null, (id) => tickets.get(id).then((t) => { const x = t; return label([x.ticket_ref, x.title].filter(Boolean).join(' ')); })),
208
219
  add(args.rule_id, null, (id) => tickets.listRules({ includeTrashed: true }).then((rules) => label(rules.find((r) => (r._id ?? r.id) === id)?.name))),
209
220
  add(args.distribution_id, null, (id) => distribution.list().then((d) => { const p = (d.paths ?? []).find((x) => x.id === id); return label(p ? `${p.path_name ?? ''} (${p.host_name ?? '*'}${p.path_expression ?? ''})`.trim() : undefined); })),
210
- add(args.template_id, null, (id) => distribution.listTemplates().then((ts) => label(ts.find((t) => t._id === id)?.name))),
221
+ // A website template, else a campaign template.
222
+ add(args.template_id, null, (id) => distribution.listTemplates().then((ts) => label(ts.find((t) => t._id === id)?.name))
223
+ .then((l) => l.name ? l : new CampaignsSDK(client).template(id).then((t) => label(t.name), () => l))),
224
+ add(args.campaign_id, 'campaign', (id) => new CampaignsSDK(client).get(id)),
225
+ add(args.book_id, 'book', (id) => new CampaignsSDK(client).book(id)),
226
+ add(args.template_skill_id, 'template skill', (id) => new CampaignsSDK(client).templateSkill(id)),
211
227
  add(args.owner_id, null, (id) => orgs.listMembers().then((ms) => { const m = ms.find((x) => x.user_id === id); return label(m?.name ?? m?.email); })),
212
228
  agentId && typeof args.function_id === 'string' ? add(args.parameter_id, null, (id) => skillOf(agentId, String(args.function_id)).then((s) => functions.listParameters(agentId, s._id)).then((ps) => label(ps.find((p) => p._id === id)?.name))) : undefined,
213
229
  add(orgId, null, (id) => client.copilotGet(`/organization/${id}`).then((r) => r.organization)),
@@ -258,6 +274,20 @@ export function registerTools(server, client) {
258
274
  return error(err);
259
275
  }
260
276
  });
277
+ reg.tool('invite_org_member', 'Invite someone to the organization by email, as the dashboard\'s Invite user page does. Only owners and admins can invite. Roles: admin (manages agents, knowledge bases, conversations, teammates and organization settings; not billing), agent (handles live conversations, with full AI Studio access; cannot manage teammates or settings) or member (tests and reviews agents and sees conversations). Ask for the role if the person did not say one; there is no owner role here. Someone without an Indemn account gets an email to sign up; an existing account joins at once. The host asks the person to approve.', {
278
+ email: z.string().trim().email().describe('Email address of the person to invite'),
279
+ role: z.enum(INVITE_ROLES).describe('admin, agent or member'),
280
+ }, async (args) => {
281
+ try {
282
+ const project = inviteProject(currentAccess(client) ?? await refreshAccess(client), await client.currentOrgId());
283
+ if (!project)
284
+ throw new Error('Could not find a project in this organization where you are an owner or admin. Nothing was sent.');
285
+ return success(await orgs.inviteMember(project.project_id, args.email, args.role));
286
+ }
287
+ catch (err) {
288
+ return error(err);
289
+ }
290
+ });
261
291
  reg.tool('list_channels', 'List the channels an agent can be published on, such as WEB or VOICE.', {}, async () => {
262
292
  try {
263
293
  return success(await orgs.listChannels());
@@ -1713,9 +1743,9 @@ export function registerTools(server, client) {
1713
1743
  return error(err);
1714
1744
  }
1715
1745
  });
1716
- reg.tool('get_campaigns', 'Read-only campaigns: list, one campaign (campaign_id), its counts / forecast / next-touchpoints / versions, templates, one template (template_id, versions: true for subject and body), or template skills.', {
1717
- what: z.enum(['list', 'campaign', 'counts', 'forecast', 'next-touchpoints', 'versions', 'templates', 'template', 'template-skills']),
1718
- campaign_id: z.string().optional(), template_id: z.string().optional(), versions: z.boolean().optional(),
1746
+ reg.tool('get_campaigns', 'Read campaigns: list, one campaign (campaign_id, with its draft and touchpoints), its counts / forecast / next-touchpoints / versions, templates, one template (template_id, versions: true for subject and body), template skills, books, or one book (book_id).', {
1747
+ what: z.enum(['list', 'campaign', 'counts', 'forecast', 'next-touchpoints', 'versions', 'templates', 'template', 'template-skills', 'books', 'book']),
1748
+ campaign_id: z.string().optional(), template_id: z.string().optional(), book_id: z.string().optional(), versions: z.boolean().optional(),
1719
1749
  status: z.string().optional(), solution_id: z.string().optional(), channel: z.string().optional(),
1720
1750
  days: z.number().int().min(1).max(365).optional(), limit: z.number().int().min(1).max(500).optional(),
1721
1751
  }, async (args) => {
@@ -1729,6 +1759,8 @@ export function registerTools(server, client) {
1729
1759
  case 'templates': return success(await c.templates({ channel: args.channel, solutionId: args.solution_id, limit: args.limit }));
1730
1760
  case 'template': return success(await c.template(need(args.template_id, 'template_id'), Boolean(args.versions)));
1731
1761
  case 'template-skills': return success(await c.templateSkills(args.solution_id));
1762
+ case 'books': return success(await c.books({ solutionId: args.solution_id, limit: args.limit }));
1763
+ case 'book': return success(await c.book(need(args.book_id, 'book_id')));
1732
1764
  default: return success(await c.detail(need(args.campaign_id, 'campaign_id'), args.what, args.days));
1733
1765
  }
1734
1766
  }
@@ -1736,6 +1768,109 @@ export function registerTools(server, client) {
1736
1768
  return error(err);
1737
1769
  }
1738
1770
  });
1771
+ // Campaigns configuration: every change is approved on a card. Nothing here sends a message, runs a book sync or
1772
+ // deletes (CampaignsSDK WRITABLE); a campaign ends archived. A save_* tool given an id changes that item, else creates.
1773
+ const campaigns = new CampaignsSDK(client);
1774
+ // Only the tool's own arguments reach the service: not confirm/org_id, and not the "" or null a model fills unused
1775
+ // fields with (an empty value never blanks a saved field).
1776
+ const own = (args) => Object.fromEntries(Object.entries(args).filter(([k, v]) => k !== 'confirm' && k !== 'org_id' && v !== '' && v !== null));
1777
+ const lacking = (a, keys) => keys.filter((k) => a[k] === undefined);
1778
+ // `problem` is checked before the card: a call that cannot work is answered at once, without asking or sending.
1779
+ const campaignTool = (name, description, shape, run, problem = () => null) => reg.tool(name, description, shape, async (args) => {
1780
+ try {
1781
+ const a = own(args);
1782
+ const p = problem(a);
1783
+ if (p)
1784
+ throw new Error(p);
1785
+ return success(await run(a));
1786
+ }
1787
+ catch (err) {
1788
+ return error(err);
1789
+ }
1790
+ }, { guardWhen: async (args) => problem(own(args)) === null });
1791
+ // A create and then a change: if the change is refused, the item exists, so it is changed with its id next time.
1792
+ const thenChange = async (what, made, change) => {
1793
+ try {
1794
+ return await change();
1795
+ }
1796
+ catch (err) {
1797
+ throw new Error(`The ${what} was created (id ${made.id}), but ${err instanceof Error ? err.message : String(err)}. Change it with its id; do not create it again.`);
1798
+ }
1799
+ };
1800
+ const rule = (what) => jsonObject().describe(`${what}: a rule as an object or JSON text, e.g. {"all":[{"field":"status","op":"eq","value":"active"},{"field":"derived.days_out","op":"lte","value":60}]}. Ops: eq ne lt lte gt gte in nin exists missing contains; all / any / not combine rules.`);
1801
+ const DRAFT_PARTS = ['audience', 'escalation_policy', 'channel_policy'];
1802
+ campaignTool('save_campaign', "Create a campaign (no campaign_id) as a draft for a solution's book, or change a campaign's draft: its audience (which records belong) and escalation and channel policies; what is not given stays. Touchpoints are set with set_touchpoint. Nothing is sent until the campaign is published (publish_campaign) and started (set_campaign_status running). Find the solution with list_solutions and its book with get_campaigns (what: books).", {
1803
+ campaign_id: z.string().optional().describe('The campaign to change; leave out to create one'),
1804
+ solution_id: z.string().optional(), book_id: z.string().optional(), name: z.string().optional(),
1805
+ campaign_type: z.string().optional().describe('To create: e.g. renewal, outreach'),
1806
+ entry: z.enum(['rolling', 'cohort']).optional().describe('To create: rolling (records join as they match, the default) or cohort (a fixed set, with closes)'),
1807
+ closes: z.string().optional().describe('To create a cohort campaign: ISO date it closes'),
1808
+ audience: rule('Which records belong').optional(),
1809
+ escalation_policy: jsonObject().optional().describe('e.g. {"after":{"touches_exhausted":true},"on_hard_failure":"escalate_immediately","then":"create_work_item","assign_to":null}'),
1810
+ channel_policy: jsonObject().optional().describe('e.g. {"quiet_hours":null,"max_per_record_per_window":null}'),
1811
+ }, async ({ campaign_id, audience, escalation_policy, channel_policy, ...create }) => {
1812
+ const parts = { audience, escalation_policy, channel_policy };
1813
+ if (campaign_id)
1814
+ return campaigns.updateDraft(campaign_id, parts);
1815
+ const made = await campaigns.createCampaign(create);
1816
+ return DRAFT_PARTS.some((k) => parts[k] !== undefined) ? thenChange('campaign', made, async () => ({ ...made, draft: await campaigns.updateDraft(made.id, parts) })) : made;
1817
+ }, (a) => a.campaign_id
1818
+ ? (DRAFT_PARTS.some((k) => a[k] !== undefined) ? null : 'Nothing to change: give audience, escalation_policy or channel_policy (a campaign is not renamed here).')
1819
+ : (lacking(a, ['solution_id', 'book_id', 'name', 'campaign_type']).length ? `To create a campaign also give ${lacking(a, ['solution_id', 'book_id', 'name', 'campaign_type']).join(', ')}; to change one, give its campaign_id.` : null));
1820
+ campaignTool('set_touchpoint', "Add a touchpoint to a campaign's draft, or change the one with the same key (only the fields given change). when is a trigger rule: days before the due date ({\"field\":\"derived.days_out\",\"op\":\"lte\",\"value\":45}), a day of the month (calendar.day_of_month), days without a reply (silence.days) or an inbound intent (intent). terminal_action draft (the default) prepares the message for a person to review; send sends it to the customer, so use send only when the person asks for it. A template given without a version is pinned to its latest.", {
1821
+ campaign_id: z.string(),
1822
+ key: z.string().trim().min(1).describe('Unique in the campaign, e.g. t2_reminder_45'),
1823
+ when: rule('When it fires').optional(),
1824
+ channel: z.enum(['email', 'voice', 'sms']).optional(),
1825
+ terminal_action: z.enum(['draft', 'send']).optional(),
1826
+ order: z.number().int().optional(),
1827
+ template_id: z.string().optional(), template_version_n: z.number().int().optional(),
1828
+ grouping: jsonObject().optional().describe('e.g. {"key":"insured_account","recipient":"resolved"} (key: record, insured_account or fixed_recipient)'),
1829
+ required_variables: jsonArray(z.string()).optional(),
1830
+ }, async ({ campaign_id, ...touchpoint }) => campaigns.setTouchpoint(campaign_id, touchpoint));
1831
+ campaignTool('publish_campaign', "Publish a campaign's draft as its next version (refused, with every problem listed, while it has no audience or touchpoint). A running campaign uses the new version from its next run.", { campaign_id: z.string(), change_summary: z.string().optional() }, async (a) => campaigns.publish(a.campaign_id, a.change_summary));
1832
+ campaignTool('set_campaign_status', 'Start (running), pause (paused) or archive (archived, for good) a campaign. Starting needs a published version; it then enrols the matching records of its book and runs its touchpoints. Campaigns are never deleted: asked to delete one, offer to archive it and say it is archived, not deleted.', { campaign_id: z.string(), status: z.enum(['running', 'paused', 'archived']) }, async (a) => campaigns.setStatus(a.campaign_id, a.status));
1833
+ const TEMPLATE_PARTS = ['subject', 'body', 'html', 'uses_variables', 'skills', 'selection_tags'];
1834
+ campaignTool('save_campaign_template', 'Create a campaign message template (no template_id), or change one: a change is saved as its new version, made from the latest one with the fields given. Touchpoints keep the version they are set to until set_touchpoint sets the template again.', {
1835
+ template_id: z.string().optional().describe('The template to change; leave out to create one'),
1836
+ solution_id: z.string().optional(), name: z.string().optional(), channel: z.enum(['email', 'voice', 'sms']).optional(),
1837
+ subject: z.string().optional().describe('Email subject. Placeholders: {{ record.<book field> }}, e.g. {{ record.policy.number }}, or contact.*, campaign.*, enrollment.*'),
1838
+ body: z.string().optional().describe('Message text, with placeholders as in subject'),
1839
+ html: z.string().optional(),
1840
+ uses_variables: jsonArray(z.string()).optional().describe('Every placeholder key the template uses, e.g. ["record.policy.number","contact.first_name"] (the service refuses an undeclared one)'),
1841
+ skills: jsonObject().optional(), selection_tags: jsonObject().optional(),
1842
+ change_summary: z.string().optional(),
1843
+ }, async ({ template_id, solution_id, name, channel, ...content }) => template_id
1844
+ ? campaigns.updateTemplate(template_id, content)
1845
+ : campaigns.createTemplate({ solution_id, name, channel, ...content }), (a) => a.template_id
1846
+ ? (TEMPLATE_PARTS.some((k) => a[k] !== undefined) ? null : `Nothing to change: give ${TEMPLATE_PARTS.join(', ')}.`)
1847
+ : (lacking(a, ['solution_id', 'name', 'channel', 'body']).length ? `To create a template also give ${lacking(a, ['solution_id', 'name', 'channel', 'body']).join(', ')}; to change one, give its template_id.` : null));
1848
+ campaignTool('save_template_skill', "Create a template skill (no template_skill_id): writing instructions a template uses when its message is composed. Or change one's name or instructions; templates using it write with the new text from their campaigns' next run, with no publish.", {
1849
+ template_skill_id: z.string().optional().describe('The skill to change; leave out to create one'),
1850
+ solution_id: z.string().optional(), key: z.string().optional().describe('To create: unique in the solution, e.g. friendly_tone'),
1851
+ name: z.string().optional(), instructions: z.string().optional(),
1852
+ }, async ({ template_skill_id, solution_id, key, name, instructions }) => template_skill_id
1853
+ ? campaigns.updateTemplateSkill(template_skill_id, { name, instructions })
1854
+ : campaigns.createTemplateSkill({ solution_id, key, name, instructions }), (a) => a.template_skill_id
1855
+ ? (a.name !== undefined || a.instructions !== undefined ? null : 'Nothing to change: give name or instructions.')
1856
+ : (lacking(a, ['solution_id', 'key', 'name', 'instructions']).length ? `To create a template skill also give ${lacking(a, ['solution_id', 'key', 'name', 'instructions']).join(', ')}; to change one, give its template_skill_id.` : null));
1857
+ const BOOK_PARTS = ['source', 'field_map', 'identity_keys', 'display'];
1858
+ campaignTool('save_book', "Create a solution's book, the records a campaign works from (no book_id; a solution has one book, so look with get_campaigns what: books first). Or change a book's source, field map (which source column fills which field), identity keys (what makes a record unique; only while it has no records) or display (fields shown for a record); each part given replaces the book's. Keys are the book's schema keys, e.g. policy.number, insured.name.", {
1859
+ book_id: z.string().optional().describe('The book to change; leave out to create one'),
1860
+ solution_id: z.string().optional(), name: z.string().optional(),
1861
+ schema_id: z.string().optional().describe("To create: the entity schema; left out, the solution type's default fields"),
1862
+ source: jsonObject().optional().describe('{"kind":"upload"} (records uploaded as CSV in the dashboard) or {"kind":"connection","integration_id":"…"}'),
1863
+ field_map: jsonArray(jsonObject()).optional().describe('e.g. [{"schema_key":"policy.number","source_path":"Policy #"}]'),
1864
+ identity_keys: jsonArray(z.string()).optional().describe('e.g. ["policy.number"]'),
1865
+ display: jsonObject().optional().describe('e.g. {"primary":["policy.number"],"secondary":["insured.name"]}'),
1866
+ }, async ({ book_id, solution_id, name, schema_id, source, ...parts }) => {
1867
+ if (book_id)
1868
+ return campaigns.updateBook(book_id, { source, ...parts });
1869
+ const made = await campaigns.createBook({ solution_id, name, schema_id, source });
1870
+ return Object.keys(parts).length ? thenChange('book', made, () => campaigns.updateBook(made.id, parts)) : made;
1871
+ }, (a) => a.book_id
1872
+ ? (BOOK_PARTS.some((k) => a[k] !== undefined) ? null : `Nothing to change: give ${BOOK_PARTS.join(', ')}.`)
1873
+ : (lacking(a, ['solution_id', 'name']).length ? `To create a book also give ${lacking(a, ['solution_id', 'name']).join(', ')}; to change one, give its book_id.` : null));
1739
1874
  const platform = new PlatformSDK(client);
1740
1875
  const platformResource = z.enum(['agents', 'templates', 'components', 'connectors', 'connector-bindings', 'scenarios']);
1741
1876
  reg.tool('platform_list', 'List V2 platform items: agents, templates, components, connectors (shared catalogs), connector-bindings, scenarios (agent_id filters scenarios).', { resource: platformResource, agent_id: z.string().optional() }, async (args) => {