@arbol-ai/cli 3.24.0 → 3.26.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 (3) hide show
  1. package/README.md +4 -1
  2. package/dist/index.js +1282 -115
  3. package/package.json +4 -4
package/dist/index.js CHANGED
@@ -12276,7 +12276,7 @@ var commands = {
12276
12276
  confirmation: null,
12277
12277
  hidden: false
12278
12278
  },
12279
- "nueva-eps affiliations lookup": {
12279
+ "nuevaeps affiliations lookup": {
12280
12280
  operation: "nueva-eps.affiliations.lookup",
12281
12281
  sdkPath: [
12282
12282
  "nuevaEps",
@@ -12520,7 +12520,7 @@ var commands = {
12520
12520
  confirmation: null,
12521
12521
  hidden: false
12522
12522
  },
12523
- "nueva-eps connections delete": {
12523
+ "nuevaeps connections delete": {
12524
12524
  operation: "nueva-eps.connections.delete",
12525
12525
  sdkPath: [
12526
12526
  "nuevaEps",
@@ -12549,7 +12549,7 @@ var commands = {
12549
12549
  confirmation: "Remove a provider connection. This cannot be undone.",
12550
12550
  hidden: false
12551
12551
  },
12552
- "nueva-eps connections get": {
12552
+ "nuevaeps connections get": {
12553
12553
  operation: "nueva-eps.connections.get",
12554
12554
  sdkPath: [
12555
12555
  "nuevaEps",
@@ -12578,7 +12578,7 @@ var commands = {
12578
12578
  confirmation: null,
12579
12579
  hidden: false
12580
12580
  },
12581
- "nueva-eps connections list": {
12581
+ "nuevaeps connections list": {
12582
12582
  operation: "nueva-eps.connections.list",
12583
12583
  sdkPath: [
12584
12584
  "nuevaEps",
@@ -12652,7 +12652,7 @@ var commands = {
12652
12652
  confirmation: null,
12653
12653
  hidden: false
12654
12654
  },
12655
- "nueva-eps connections verify": {
12655
+ "nuevaeps connections verify": {
12656
12656
  operation: "nueva-eps.connections.verify",
12657
12657
  sdkPath: [
12658
12658
  "nuevaEps",
@@ -14366,7 +14366,7 @@ var commands = {
14366
14366
  confirmation: null,
14367
14367
  hidden: false
14368
14368
  },
14369
- "policia-colombia judicial-records lookup": {
14369
+ "policiacolombia judicial-records lookup": {
14370
14370
  operation: "policia-colombia.judicialRecords.lookup",
14371
14371
  sdkPath: [
14372
14372
  "policiaColombia",
@@ -18154,6 +18154,92 @@ var commands = {
18154
18154
  "open",
18155
18155
  "closed"
18156
18156
  ]
18157
+ },
18158
+ {
18159
+ name: "sentiment",
18160
+ flag: "sentiment",
18161
+ kind: "string",
18162
+ required: false,
18163
+ description: "Comma-separated sentiments of the analysis."
18164
+ },
18165
+ {
18166
+ name: "toolName",
18167
+ flag: "tool-name",
18168
+ kind: "string",
18169
+ required: false,
18170
+ description: "Conversations where the Agent called this tool: its exact name, as the transcript's tool parts show it (`toolName`). `count_conversations` with `groupBy=tool` lists the names with how many conversations used each."
18171
+ },
18172
+ {
18173
+ name: "toolStatus",
18174
+ flag: "tool-status",
18175
+ kind: "string",
18176
+ required: false,
18177
+ description: "With `toolName`, a call of that tool ended this way; alone, a call of any tool did (`failed`: conversations where a tool failed).",
18178
+ choices: [
18179
+ "completed",
18180
+ "failed",
18181
+ "denied"
18182
+ ]
18183
+ },
18184
+ {
18185
+ name: "factDefinition",
18186
+ flag: "fact-definition",
18187
+ kind: "string",
18188
+ required: false,
18189
+ description: "Conversations whose current fact of this definition (its `key`) is known: about the conversation, or about its contact for a contact definition. With `factValue`, equal to that value."
18190
+ },
18191
+ {
18192
+ name: "factValue",
18193
+ flag: "fact-value",
18194
+ kind: "string",
18195
+ required: false,
18196
+ description: "With `factDefinition`: an option's key or label, a text (ignoring case), a number, a date (YYYY-MM-DD) or `true`/`false`."
18197
+ },
18198
+ {
18199
+ name: "assessment",
18200
+ flag: "assessment",
18201
+ kind: "string",
18202
+ required: false,
18203
+ description: "The conversation's yes/no assessments: `failed`, at least one answered no; `passed`, at least one answered and every answered one yes.",
18204
+ choices: [
18205
+ "failed",
18206
+ "passed"
18207
+ ]
18208
+ },
18209
+ {
18210
+ name: "messagesMin",
18211
+ flag: "messages-min",
18212
+ kind: "integer",
18213
+ required: false,
18214
+ description: "At least this many messages."
18215
+ },
18216
+ {
18217
+ name: "messagesMax",
18218
+ flag: "messages-max",
18219
+ kind: "integer",
18220
+ required: false,
18221
+ description: "At most this many messages."
18222
+ },
18223
+ {
18224
+ name: "durationMin",
18225
+ flag: "duration-min",
18226
+ kind: "integer",
18227
+ required: false,
18228
+ description: "Calls of at least this many seconds."
18229
+ },
18230
+ {
18231
+ name: "durationMax",
18232
+ flag: "duration-max",
18233
+ kind: "integer",
18234
+ required: false,
18235
+ description: "Calls of at most this many seconds."
18236
+ },
18237
+ {
18238
+ name: "groupBy",
18239
+ flag: "group-by",
18240
+ kind: "string",
18241
+ required: false,
18242
+ description: "`outcome`, `status`, `channel` (type), `agent`, `sentiment`, `tool` (each Agent tool and the conversations that used it), `toolError` (failed calls, of `toolName` when given, by error) or `fact:<definition key>` (the current value of that definition, such as the reason for contact)."
18157
18243
  }
18158
18244
  ],
18159
18245
  inputSchema: {
@@ -18296,12 +18382,89 @@ var commands = {
18296
18382
  type: "string"
18297
18383
  }
18298
18384
  ]
18385
+ },
18386
+ sentiment: {
18387
+ description: "Comma-separated sentiments of the analysis.",
18388
+ pattern: "^(positive|neutral|negative)(,(positive|neutral|negative))*$",
18389
+ type: "string"
18390
+ },
18391
+ toolName: {
18392
+ description: "Conversations where the Agent called this tool: its exact name, as the transcript's tool parts show it (`toolName`). `count_conversations` with `groupBy=tool` lists the names with how many conversations used each.",
18393
+ maxLength: 128,
18394
+ minLength: 1,
18395
+ type: "string"
18396
+ },
18397
+ toolStatus: {
18398
+ description: "With `toolName`, a call of that tool ended this way; alone, a call of any tool did (`failed`: conversations where a tool failed).",
18399
+ anyOf: [
18400
+ {
18401
+ const: "completed",
18402
+ type: "string"
18403
+ },
18404
+ {
18405
+ const: "failed",
18406
+ type: "string"
18407
+ },
18408
+ {
18409
+ const: "denied",
18410
+ type: "string"
18411
+ }
18412
+ ]
18413
+ },
18414
+ factDefinition: {
18415
+ description: "Conversations whose current fact of this definition (its `key`) is known: about the conversation, or about its contact for a contact definition. With `factValue`, equal to that value.",
18416
+ pattern: "^[a-z][a-z0-9_]{0,63}$",
18417
+ type: "string"
18418
+ },
18419
+ factValue: {
18420
+ description: "With `factDefinition`: an option's key or label, a text (ignoring case), a number, a date (YYYY-MM-DD) or `true`/`false`.",
18421
+ maxLength: 500,
18422
+ minLength: 1,
18423
+ type: "string"
18424
+ },
18425
+ assessment: {
18426
+ description: "The conversation's yes/no assessments: `failed`, at least one answered no; `passed`, at least one answered and every answered one yes.",
18427
+ anyOf: [
18428
+ {
18429
+ const: "failed",
18430
+ type: "string"
18431
+ },
18432
+ {
18433
+ const: "passed",
18434
+ type: "string"
18435
+ }
18436
+ ]
18437
+ },
18438
+ messagesMin: {
18439
+ description: "At least this many messages.",
18440
+ minimum: 0,
18441
+ type: "integer"
18442
+ },
18443
+ messagesMax: {
18444
+ description: "At most this many messages.",
18445
+ minimum: 0,
18446
+ type: "integer"
18447
+ },
18448
+ durationMin: {
18449
+ description: "Calls of at least this many seconds.",
18450
+ minimum: 0,
18451
+ type: "integer"
18452
+ },
18453
+ durationMax: {
18454
+ description: "Calls of at most this many seconds.",
18455
+ minimum: 0,
18456
+ type: "integer"
18457
+ },
18458
+ groupBy: {
18459
+ description: "`outcome`, `status`, `channel` (type), `agent`, `sentiment`, `tool` (each Agent tool and the conversations that used it), `toolError` (failed calls, of `toolName` when given, by error) or `fact:<definition key>` (the current value of that definition, such as the reason for contact).",
18460
+ pattern: "^(outcome|status|channel|agent|sentiment|tool|toolError|fact:[a-z][a-z0-9_]{0,63})$",
18461
+ type: "string"
18299
18462
  }
18300
18463
  },
18301
18464
  additionalProperties: false
18302
18465
  },
18303
18466
  title: "Count conversations",
18304
- description: "Count the conversations `list_conversations` returns for the same filters (every filter it takes, without `sort`), up to 10,000: `capped` then says at least that many match. Use it to answer how many conversations match instead of paging through the list; for volumes per day, Agent or outcome use `get_report`.",
18467
+ description: "Count the conversations `list_conversations` returns for the same filters (every filter it takes, without `sort`), up to 10,000: `capped` then says at least that many match. `averageMessageCount` is their average length. `groupBy` also divides them, largest group first, each with its outcomes: by `outcome`, `status`, `channel`, `agent`, `sentiment`, `tool` (which Agent tools they used, and in how many a tool failed), `toolError` (why calls of `toolName` failed) or `fact:<definition key>` (such as the reason for contact). Use it to answer how many conversations match, or how they divide, instead of paging through the list; for volumes per day use `get_report`.",
18305
18468
  effect: "read",
18306
18469
  confirmation: null,
18307
18470
  hidden: false
@@ -18611,6 +18774,85 @@ var commands = {
18611
18774
  "closed"
18612
18775
  ]
18613
18776
  },
18777
+ {
18778
+ name: "sentiment",
18779
+ flag: "sentiment",
18780
+ kind: "string",
18781
+ required: false,
18782
+ description: "Comma-separated sentiments of the analysis."
18783
+ },
18784
+ {
18785
+ name: "toolName",
18786
+ flag: "tool-name",
18787
+ kind: "string",
18788
+ required: false,
18789
+ description: "Conversations where the Agent called this tool: its exact name, as the transcript's tool parts show it (`toolName`). `count_conversations` with `groupBy=tool` lists the names with how many conversations used each."
18790
+ },
18791
+ {
18792
+ name: "toolStatus",
18793
+ flag: "tool-status",
18794
+ kind: "string",
18795
+ required: false,
18796
+ description: "With `toolName`, a call of that tool ended this way; alone, a call of any tool did (`failed`: conversations where a tool failed).",
18797
+ choices: [
18798
+ "completed",
18799
+ "failed",
18800
+ "denied"
18801
+ ]
18802
+ },
18803
+ {
18804
+ name: "factDefinition",
18805
+ flag: "fact-definition",
18806
+ kind: "string",
18807
+ required: false,
18808
+ description: "Conversations whose current fact of this definition (its `key`) is known: about the conversation, or about its contact for a contact definition. With `factValue`, equal to that value."
18809
+ },
18810
+ {
18811
+ name: "factValue",
18812
+ flag: "fact-value",
18813
+ kind: "string",
18814
+ required: false,
18815
+ description: "With `factDefinition`: an option's key or label, a text (ignoring case), a number, a date (YYYY-MM-DD) or `true`/`false`."
18816
+ },
18817
+ {
18818
+ name: "assessment",
18819
+ flag: "assessment",
18820
+ kind: "string",
18821
+ required: false,
18822
+ description: "The conversation's yes/no assessments: `failed`, at least one answered no; `passed`, at least one answered and every answered one yes.",
18823
+ choices: [
18824
+ "failed",
18825
+ "passed"
18826
+ ]
18827
+ },
18828
+ {
18829
+ name: "messagesMin",
18830
+ flag: "messages-min",
18831
+ kind: "integer",
18832
+ required: false,
18833
+ description: "At least this many messages."
18834
+ },
18835
+ {
18836
+ name: "messagesMax",
18837
+ flag: "messages-max",
18838
+ kind: "integer",
18839
+ required: false,
18840
+ description: "At most this many messages."
18841
+ },
18842
+ {
18843
+ name: "durationMin",
18844
+ flag: "duration-min",
18845
+ kind: "integer",
18846
+ required: false,
18847
+ description: "Calls of at least this many seconds."
18848
+ },
18849
+ {
18850
+ name: "durationMax",
18851
+ flag: "duration-max",
18852
+ kind: "integer",
18853
+ required: false,
18854
+ description: "Calls of at most this many seconds."
18855
+ },
18614
18856
  {
18615
18857
  name: "sort",
18616
18858
  flag: "sort",
@@ -18791,6 +19033,78 @@ var commands = {
18791
19033
  }
18792
19034
  ]
18793
19035
  },
19036
+ sentiment: {
19037
+ description: "Comma-separated sentiments of the analysis.",
19038
+ pattern: "^(positive|neutral|negative)(,(positive|neutral|negative))*$",
19039
+ type: "string"
19040
+ },
19041
+ toolName: {
19042
+ description: "Conversations where the Agent called this tool: its exact name, as the transcript's tool parts show it (`toolName`). `count_conversations` with `groupBy=tool` lists the names with how many conversations used each.",
19043
+ maxLength: 128,
19044
+ minLength: 1,
19045
+ type: "string"
19046
+ },
19047
+ toolStatus: {
19048
+ description: "With `toolName`, a call of that tool ended this way; alone, a call of any tool did (`failed`: conversations where a tool failed).",
19049
+ anyOf: [
19050
+ {
19051
+ const: "completed",
19052
+ type: "string"
19053
+ },
19054
+ {
19055
+ const: "failed",
19056
+ type: "string"
19057
+ },
19058
+ {
19059
+ const: "denied",
19060
+ type: "string"
19061
+ }
19062
+ ]
19063
+ },
19064
+ factDefinition: {
19065
+ description: "Conversations whose current fact of this definition (its `key`) is known: about the conversation, or about its contact for a contact definition. With `factValue`, equal to that value.",
19066
+ pattern: "^[a-z][a-z0-9_]{0,63}$",
19067
+ type: "string"
19068
+ },
19069
+ factValue: {
19070
+ description: "With `factDefinition`: an option's key or label, a text (ignoring case), a number, a date (YYYY-MM-DD) or `true`/`false`.",
19071
+ maxLength: 500,
19072
+ minLength: 1,
19073
+ type: "string"
19074
+ },
19075
+ assessment: {
19076
+ description: "The conversation's yes/no assessments: `failed`, at least one answered no; `passed`, at least one answered and every answered one yes.",
19077
+ anyOf: [
19078
+ {
19079
+ const: "failed",
19080
+ type: "string"
19081
+ },
19082
+ {
19083
+ const: "passed",
19084
+ type: "string"
19085
+ }
19086
+ ]
19087
+ },
19088
+ messagesMin: {
19089
+ description: "At least this many messages.",
19090
+ minimum: 0,
19091
+ type: "integer"
19092
+ },
19093
+ messagesMax: {
19094
+ description: "At most this many messages.",
19095
+ minimum: 0,
19096
+ type: "integer"
19097
+ },
19098
+ durationMin: {
19099
+ description: "Calls of at least this many seconds.",
19100
+ minimum: 0,
19101
+ type: "integer"
19102
+ },
19103
+ durationMax: {
19104
+ description: "Calls of at most this many seconds.",
19105
+ minimum: 0,
19106
+ type: "integer"
19107
+ },
18794
19108
  sort: {
18795
19109
  default: "started",
18796
19110
  description: "`started` (newest first), `last_message` (most recent activity first) or `changed`: the changed feed, oldest change first, with deleted conversations as tombstones; a forward page's `pageInfo.nextCursor` is always a position to save and poll from.",
@@ -18813,7 +19127,7 @@ var commands = {
18813
19127
  additionalProperties: false
18814
19128
  },
18815
19129
  title: "List conversations",
18816
- description: "Find calls, WhatsApp chats and web chats. Filter by `contactId` (as counterpart or subject), `agentId`, `channelId`, `channelType`, `status`, `conversationDirection`, `origin`, `outcome`, `handling` (`ai` or `team`: whether the AI takes part; `escalated`: handed to the team by the AI), `worker` (`ai` or `team`: who answers it now), `campaignId`, `profileId`, `requestedBy` and start time (`startedAfter`, `startedBefore`); `q` searches participant identities (names, profile names, usernames, phones, emails and documents), visible messages, titles, summaries and exact conversation references; `count_conversations` counts every match. Each item already carries its title, summary, outcome, sentiment and workers, often enough to answer. `sort`: `started` (newest first), `last_message` (latest activity first) or `changed`, the feed of status, outcome and analysis changes, oldest first, that systems poll from a saved `pageInfo.nextCursor` (a deleted conversation appears once with `deletedAt`). Next: `get_conversation` for a transcript.",
19130
+ description: "Find calls, WhatsApp chats and web chats. Filter by `contactId` (as counterpart or subject), `agentId`, `channelId`, `channelType`, `status`, `conversationDirection`, `origin`, `outcome`, `sentiment`, `handling` (`ai` or `team`: whether the AI takes part; `escalated`: handed to the team by the AI), `worker` (`ai` or `team`: who answers it now), the Agent's tools (`toolName`, `toolStatus`: which tool it called and how the call ended), a captured fact (`factDefinition`, `factValue`), `assessment` (`failed` or `passed`), length (`messagesMin`, `messagesMax`, `durationMin`, `durationMax`), `campaignId`, `profileId`, `requestedBy` and start time (`startedAfter`, `startedBefore`); `q` searches participant identities (names, profile names, usernames, phones, emails and documents), visible messages, titles, summaries and exact conversation references; `count_conversations` counts every match. Each item already carries its title, summary, outcome, sentiment, workers and tool calls (how many, how many failed, the latest failure), often enough to answer. `sort`: `started` (newest first), `last_message` (latest activity first) or `changed`, the feed of status, outcome and analysis changes, oldest first, that systems poll from a saved `pageInfo.nextCursor` (a deleted conversation appears once with `deletedAt`). Next: `get_conversation` for a transcript.",
18817
19131
  effect: "read",
18818
19132
  confirmation: null,
18819
19133
  hidden: false
@@ -23275,7 +23589,7 @@ var commands = {
23275
23589
  confirmation: null,
23276
23590
  hidden: false
23277
23591
  },
23278
- "salud-total affiliations lookup": {
23592
+ "saludtotal affiliations lookup": {
23279
23593
  operation: "salud-total.affiliations.lookup",
23280
23594
  sdkPath: [
23281
23595
  "saludTotal",
@@ -23341,7 +23655,7 @@ var commands = {
23341
23655
  confirmation: null,
23342
23656
  hidden: false
23343
23657
  },
23344
- "salud-total authorizations lookup": {
23658
+ "saludtotal authorizations lookup": {
23345
23659
  operation: "salud-total.authorizations.lookup",
23346
23660
  sdkPath: [
23347
23661
  "saludTotal",
@@ -23457,7 +23771,7 @@ var commands = {
23457
23771
  confirmation: null,
23458
23772
  hidden: false
23459
23773
  },
23460
- "salud-total filings lookup": {
23774
+ "saludtotal filings lookup": {
23461
23775
  operation: "salud-total.filings.lookup",
23462
23776
  sdkPath: [
23463
23777
  "saludTotal",
@@ -23573,7 +23887,7 @@ var commands = {
23573
23887
  confirmation: null,
23574
23888
  hidden: false
23575
23889
  },
23576
- "salud-total invoices lookup": {
23890
+ "saludtotal invoices lookup": {
23577
23891
  operation: "salud-total.invoices.lookup",
23578
23892
  sdkPath: [
23579
23893
  "saludTotal",
@@ -23635,7 +23949,7 @@ var commands = {
23635
23949
  confirmation: null,
23636
23950
  hidden: false
23637
23951
  },
23638
- "salud-total notices count": {
23952
+ "saludtotal notices count": {
23639
23953
  operation: "salud-total.notices.count",
23640
23954
  sdkPath: [
23641
23955
  "saludTotal",
@@ -73695,7 +74009,7 @@ var schemaComponents = {
73695
74009
  type: "string"
73696
74010
  },
73697
74011
  resourceType: {
73698
- description: "What changed: `contact`, `contact_point`, `contact_identifier`, `agent`, `agent_tool` (its id is the Agent's), `channel`, `definition`, `knowledge_document`, `campaign`, `suppression`, `bulletin`, `provider_account`, `fact`, `task` (a person cancelled or retried it).",
74012
+ description: "What changed: `contact`, `contact_point`, `contact_identifier`, `agent`, `agent_tool` (its id is the Agent's), `channel`, `definition`, `knowledge_document`, `campaign`, `suppression`, `bulletin`, `conversation_view`, `provider_account`, `fact`, `task` (a person cancelled or retried it).",
73699
74013
  type: "string"
73700
74014
  },
73701
74015
  sourceId: {
@@ -75230,6 +75544,7 @@ var schemaComponents = {
75230
75544
  "updatedAt",
75231
75545
  "version",
75232
75546
  "workers",
75547
+ "toolCalls",
75233
75548
  "analysisErrorCode",
75234
75549
  "facts"
75235
75550
  ],
@@ -75811,6 +76126,9 @@ var schemaComponents = {
75811
76126
  description: "Who works the conversation for the organization."
75812
76127
  }
75813
76128
  },
76129
+ toolCalls: {
76130
+ $ref: "#/components/schemas/RaizConversationToolCalls"
76131
+ },
75814
76132
  analysisErrorCode: {
75815
76133
  anyOf: [
75816
76134
  {
@@ -75851,6 +76169,55 @@ var schemaComponents = {
75851
76169
  }
75852
76170
  }
75853
76171
  },
76172
+ RaizConversationCount: {
76173
+ additionalProperties: false,
76174
+ type: "object",
76175
+ required: [
76176
+ "capped",
76177
+ "count",
76178
+ "averageMessageCount",
76179
+ "groups"
76180
+ ],
76181
+ properties: {
76182
+ capped: {
76183
+ description: "True when the count reached 10000: at least that many match.",
76184
+ type: "boolean"
76185
+ },
76186
+ count: {
76187
+ description: "How many match the filters, counted up to 10000.",
76188
+ maximum: 1e4,
76189
+ minimum: 0,
76190
+ type: "integer"
76191
+ },
76192
+ averageMessageCount: {
76193
+ anyOf: [
76194
+ {
76195
+ description: "The average number of messages of the counted conversations; null when none matches.",
76196
+ minimum: 0,
76197
+ type: "number"
76198
+ },
76199
+ {
76200
+ type: "null"
76201
+ }
76202
+ ]
76203
+ },
76204
+ groups: {
76205
+ anyOf: [
76206
+ {
76207
+ description: "With `groupBy`: the counted conversations by group, largest first, at most 100. A conversation counts once per group; with `tool`, once in each tool it used.",
76208
+ maxItems: 100,
76209
+ type: "array",
76210
+ items: {
76211
+ $ref: "#/components/schemas/RaizConversationGroup"
76212
+ }
76213
+ },
76214
+ {
76215
+ type: "null"
76216
+ }
76217
+ ]
76218
+ }
76219
+ }
76220
+ },
75854
76221
  RaizConversationDiagnostics: {
75855
76222
  additionalProperties: false,
75856
76223
  type: "object",
@@ -75998,6 +76365,90 @@ var schemaComponents = {
75998
76365
  }
75999
76366
  }
76000
76367
  },
76368
+ RaizConversationGroup: {
76369
+ additionalProperties: false,
76370
+ type: "object",
76371
+ required: [
76372
+ "count",
76373
+ "failed",
76374
+ "key",
76375
+ "label",
76376
+ "outcomes"
76377
+ ],
76378
+ properties: {
76379
+ count: {
76380
+ description: "Conversations in the group.",
76381
+ minimum: 0,
76382
+ type: "integer"
76383
+ },
76384
+ failed: {
76385
+ anyOf: [
76386
+ {
76387
+ description: "For `tool`: conversations where a call of the tool failed. Null for other groupings.",
76388
+ minimum: 0,
76389
+ type: "integer"
76390
+ },
76391
+ {
76392
+ type: "null"
76393
+ }
76394
+ ]
76395
+ },
76396
+ key: {
76397
+ anyOf: [
76398
+ {
76399
+ description: "The group's value: an outcome, status, channel type, Agent id, sentiment, tool name, error code (or message, when a failure has no code) or fact value (an option's key or the text). Null: conversations without one (not analyzed, no Agent, no value).",
76400
+ type: "string"
76401
+ },
76402
+ {
76403
+ type: "null"
76404
+ }
76405
+ ]
76406
+ },
76407
+ label: {
76408
+ anyOf: [
76409
+ {
76410
+ description: "The value's name when the records have one: the Agent's name, the option's label, the most frequent error message.",
76411
+ type: "string"
76412
+ },
76413
+ {
76414
+ type: "null"
76415
+ }
76416
+ ]
76417
+ },
76418
+ outcomes: {
76419
+ $ref: "#/components/schemas/RaizConversationOutcomeCounts"
76420
+ }
76421
+ }
76422
+ },
76423
+ RaizConversationOutcomeCounts: {
76424
+ additionalProperties: false,
76425
+ type: "object",
76426
+ required: [
76427
+ "failure",
76428
+ "pending",
76429
+ "success",
76430
+ "unknown"
76431
+ ],
76432
+ properties: {
76433
+ failure: {
76434
+ minimum: 0,
76435
+ type: "integer"
76436
+ },
76437
+ pending: {
76438
+ description: "Not analyzed yet.",
76439
+ minimum: 0,
76440
+ type: "integer"
76441
+ },
76442
+ success: {
76443
+ minimum: 0,
76444
+ type: "integer"
76445
+ },
76446
+ unknown: {
76447
+ minimum: 0,
76448
+ type: "integer"
76449
+ }
76450
+ }
76451
+ },
76001
76452
  RaizConversationPage: {
76002
76453
  additionalProperties: false,
76003
76454
  type: "object",
@@ -76025,6 +76476,454 @@ var schemaComponents = {
76025
76476
  }
76026
76477
  }
76027
76478
  },
76479
+ RaizConversationToolCalls: {
76480
+ additionalProperties: false,
76481
+ type: "object",
76482
+ required: [
76483
+ "count",
76484
+ "failed",
76485
+ "lastFailure"
76486
+ ],
76487
+ properties: {
76488
+ count: {
76489
+ description: "The Agent's tool calls in the conversation.",
76490
+ minimum: 0,
76491
+ type: "integer"
76492
+ },
76493
+ failed: {
76494
+ description: "How many of them failed.",
76495
+ minimum: 0,
76496
+ type: "integer"
76497
+ },
76498
+ lastFailure: {
76499
+ anyOf: [
76500
+ {
76501
+ $ref: "#/components/schemas/RaizConversationToolFailure",
76502
+ description: "The conversation's latest failed tool call; null when none failed."
76503
+ },
76504
+ {
76505
+ type: "null"
76506
+ }
76507
+ ]
76508
+ }
76509
+ }
76510
+ },
76511
+ RaizConversationToolFailure: {
76512
+ additionalProperties: false,
76513
+ type: "object",
76514
+ required: [
76515
+ "errorCode",
76516
+ "errorMessage",
76517
+ "toolName"
76518
+ ],
76519
+ properties: {
76520
+ errorCode: {
76521
+ anyOf: [
76522
+ {
76523
+ type: "string"
76524
+ },
76525
+ {
76526
+ type: "null"
76527
+ }
76528
+ ]
76529
+ },
76530
+ errorMessage: {
76531
+ anyOf: [
76532
+ {
76533
+ description: "What the tool answered when it failed, up to 500 characters; the transcript has all of it.",
76534
+ type: "string"
76535
+ },
76536
+ {
76537
+ type: "null"
76538
+ }
76539
+ ]
76540
+ },
76541
+ toolName: {
76542
+ type: "string"
76543
+ }
76544
+ }
76545
+ },
76546
+ RaizConversationView: {
76547
+ additionalProperties: false,
76548
+ type: "object",
76549
+ required: [
76550
+ "columns",
76551
+ "createdAt",
76552
+ "filters",
76553
+ "groupBy",
76554
+ "id",
76555
+ "layout",
76556
+ "mine",
76557
+ "name",
76558
+ "position",
76559
+ "shared",
76560
+ "sort",
76561
+ "updatedAt",
76562
+ "version"
76563
+ ],
76564
+ properties: {
76565
+ columns: {
76566
+ description: "The client's own column keys, in the order it shows them; empty for its default columns.",
76567
+ maxItems: 24,
76568
+ type: "array",
76569
+ items: {
76570
+ maxLength: 64,
76571
+ minLength: 1,
76572
+ pattern: "^[A-Za-z][A-Za-z0-9_.:-]*$",
76573
+ type: "string"
76574
+ }
76575
+ },
76576
+ createdAt: {
76577
+ description: "An instant in RFC 3339 format, in UTC.",
76578
+ format: "date-time",
76579
+ type: "string"
76580
+ },
76581
+ filters: {
76582
+ $ref: "#/components/schemas/RaizConversationViewFilters",
76583
+ description: "The filters of `list_conversations` under the same names, passed to it and to `count_conversations` as they are (resolve `period` to `startedAfter` first)."
76584
+ },
76585
+ groupBy: {
76586
+ anyOf: [
76587
+ {
76588
+ description: "How the view groups its conversations: `outcome`, `status`, `channel`, `agent`, `sentiment`, `tool` or `fact:<definition key>` (such as the reason for contact); `count_conversations` takes the same value as `groupBy`.",
76589
+ pattern: "^(outcome|status|channel|agent|sentiment|tool|fact:[a-z][a-z0-9_]{0,63})$",
76590
+ type: "string"
76591
+ },
76592
+ {
76593
+ type: "null"
76594
+ }
76595
+ ]
76596
+ },
76597
+ id: {
76598
+ description: "Saved view id.",
76599
+ examples: [
76600
+ "cvw_01m45h8q2rf3t9w6y7z0b1c2d3"
76601
+ ],
76602
+ pattern: "^cvw_(?:[0-7][0-9a-hjkmnp-tv-z]{25}|(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))$",
76603
+ type: "string"
76604
+ },
76605
+ layout: {
76606
+ description: "`table`: rows with columns; `reading`: the list beside one conversation, to read them one after another.",
76607
+ anyOf: [
76608
+ {
76609
+ const: "table",
76610
+ type: "string"
76611
+ },
76612
+ {
76613
+ const: "reading",
76614
+ type: "string"
76615
+ }
76616
+ ]
76617
+ },
76618
+ mine: {
76619
+ description: "The caller saved it.",
76620
+ type: "boolean"
76621
+ },
76622
+ name: {
76623
+ type: "string"
76624
+ },
76625
+ position: {
76626
+ description: "Where the view goes in the list of views, lowest first; views with the same position keep the order they were saved in.",
76627
+ maximum: 1e5,
76628
+ minimum: 0,
76629
+ type: "integer"
76630
+ },
76631
+ shared: {
76632
+ description: "`true`: everyone in the organization sees and can change it; `false`: only the person who saved it.",
76633
+ type: "boolean"
76634
+ },
76635
+ sort: {
76636
+ description: "`started` (newest first) or `last_message` (latest activity first).",
76637
+ anyOf: [
76638
+ {
76639
+ const: "started",
76640
+ type: "string"
76641
+ },
76642
+ {
76643
+ const: "last_message",
76644
+ type: "string"
76645
+ }
76646
+ ]
76647
+ },
76648
+ updatedAt: {
76649
+ description: "An instant in RFC 3339 format, in UTC.",
76650
+ format: "date-time",
76651
+ type: "string"
76652
+ },
76653
+ version: {
76654
+ minimum: 1,
76655
+ type: "integer"
76656
+ }
76657
+ }
76658
+ },
76659
+ RaizConversationViewFilters: {
76660
+ additionalProperties: false,
76661
+ type: "object",
76662
+ properties: {
76663
+ agentId: {
76664
+ description: "Agent id.",
76665
+ examples: [
76666
+ "agt_01m45h8q2rf3t9w6y7z0b1c2d3"
76667
+ ],
76668
+ pattern: "^agt_(?:[0-7][0-9a-hjkmnp-tv-z]{25}|(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))$",
76669
+ type: "string"
76670
+ },
76671
+ campaignId: {
76672
+ description: "Attempts of this campaign.",
76673
+ examples: [
76674
+ "cmp_01m45h8q2rf3t9w6y7z0b1c2d3"
76675
+ ],
76676
+ pattern: "^cmp_(?:[0-7][0-9a-hjkmnp-tv-z]{25}|(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))$",
76677
+ type: "string"
76678
+ },
76679
+ channelId: {
76680
+ description: "Channel id.",
76681
+ examples: [
76682
+ "chn_01m45h8q2rf3t9w6y7z0b1c2d3"
76683
+ ],
76684
+ pattern: "^(?:chn_(?:[0-7][0-9a-hjkmnp-tv-z]{25}|(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))|(?:agc)_(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))$",
76685
+ type: "string"
76686
+ },
76687
+ channelType: {
76688
+ description: "Comma-separated channel types.",
76689
+ pattern: "^(voice|whatsapp|web)(,(voice|whatsapp|web))*$",
76690
+ type: "string"
76691
+ },
76692
+ contactId: {
76693
+ description: "Conversations with this contact as counterpart or subject. A merged duplicate's id lists the survivor's.",
76694
+ examples: [
76695
+ "cnt_01m45h8q2rf3t9w6y7z0b1c2d3"
76696
+ ],
76697
+ pattern: "^cnt_(?:[0-7][0-9a-hjkmnp-tv-z]{25}|(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))$",
76698
+ type: "string"
76699
+ },
76700
+ conversationDirection: {
76701
+ description: "`inbound`: the contact started it; `outbound`: the organization did. It matches each conversation's `direction` (the query field `direction` pages the list).",
76702
+ anyOf: [
76703
+ {
76704
+ const: "inbound",
76705
+ type: "string"
76706
+ },
76707
+ {
76708
+ const: "outbound",
76709
+ type: "string"
76710
+ }
76711
+ ]
76712
+ },
76713
+ handling: {
76714
+ description: "`ai`: conversations the AI takes part in (calls and web chats, and WhatsApp conversations the AI handles or answered). `team`: WhatsApp conversations the organization's people handle on their own. `escalated`: conversations the AI handed to the team (a request it could not resolve, a contact who asked for a person, or a spent budget), also once the team gave them back to the AI; the ones `conversations_daily` counts in `escalatedCount`. A trial is not one, nor a conversation that opens while the AI is still paused for the number after an earlier handoff.",
76715
+ anyOf: [
76716
+ {
76717
+ const: "ai",
76718
+ type: "string"
76719
+ },
76720
+ {
76721
+ const: "team",
76722
+ type: "string"
76723
+ },
76724
+ {
76725
+ const: "escalated",
76726
+ type: "string"
76727
+ }
76728
+ ]
76729
+ },
76730
+ worker: {
76731
+ description: "Who works the conversation now. `ai`: calls and web chats, open WhatsApp conversations the AI answers (assigned to it and not paused), and closed ones the AI answered. `team`: open WhatsApp conversations the organization's people answer (not assigned to the AI, or paused) and closed ones they answered. Unlike `handling`, a conversation the AI answered and then handed to people is `team` while open.",
76732
+ anyOf: [
76733
+ {
76734
+ const: "ai",
76735
+ type: "string"
76736
+ },
76737
+ {
76738
+ const: "team",
76739
+ type: "string"
76740
+ }
76741
+ ]
76742
+ },
76743
+ origin: {
76744
+ description: "Comma-separated origins.",
76745
+ pattern: "^(inbound|manual|api|campaign|import|test)(,(inbound|manual|api|campaign|import|test))*$",
76746
+ type: "string"
76747
+ },
76748
+ outcome: {
76749
+ description: "Comma-separated outcomes of the analysis.",
76750
+ pattern: "^(success|failure|unknown)(,(success|failure|unknown))*$",
76751
+ type: "string"
76752
+ },
76753
+ metadataReference: {
76754
+ description: "Conversations whose `metadata.reference` is exactly this value: the reference a caller gave `createConversation`, to find a conversation whose answer it did not receive.",
76755
+ maxLength: 500,
76756
+ minLength: 1,
76757
+ type: "string"
76758
+ },
76759
+ profileId: {
76760
+ description: "Conversations started from this communication profile.",
76761
+ examples: [
76762
+ "prf_01m45h8q2rf3t9w6y7z0b1c2d3"
76763
+ ],
76764
+ pattern: "^prf_(?:[0-7][0-9a-hjkmnp-tv-z]{25}|(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))$",
76765
+ type: "string"
76766
+ },
76767
+ q: {
76768
+ description: "Search participant names, channel profile names, usernames, phones, emails, identity documents, visible message text, conversation ids and exact external references. Ignores accents/case and phone/document formatting. Also searches titles and summaries with Spanish stemming (quoted phrases, `or` and `-word` apply there). Attachments without stored transcription and tool payloads are not searched.",
76769
+ maxLength: 200,
76770
+ minLength: 1,
76771
+ type: "string"
76772
+ },
76773
+ requestedBy: {
76774
+ description: "Conversations started with `createConversation` by this token subject (exact match): a machine client reads its own requests with `<client id>@clients`.",
76775
+ maxLength: 255,
76776
+ minLength: 1,
76777
+ type: "string"
76778
+ },
76779
+ startedAfter: {
76780
+ description: "Started at or after this instant (RFC 3339).",
76781
+ format: "date-time",
76782
+ type: "string"
76783
+ },
76784
+ startedBefore: {
76785
+ description: "Started before this instant (RFC 3339).",
76786
+ format: "date-time",
76787
+ type: "string"
76788
+ },
76789
+ status: {
76790
+ anyOf: [
76791
+ {
76792
+ const: "open",
76793
+ type: "string"
76794
+ },
76795
+ {
76796
+ const: "closed",
76797
+ type: "string"
76798
+ }
76799
+ ]
76800
+ },
76801
+ sentiment: {
76802
+ description: "Comma-separated sentiments of the analysis.",
76803
+ pattern: "^(positive|neutral|negative)(,(positive|neutral|negative))*$",
76804
+ type: "string"
76805
+ },
76806
+ toolName: {
76807
+ description: "Conversations where the Agent called this tool: its exact name, as the transcript's tool parts show it (`toolName`). `count_conversations` with `groupBy=tool` lists the names with how many conversations used each.",
76808
+ maxLength: 128,
76809
+ minLength: 1,
76810
+ type: "string"
76811
+ },
76812
+ toolStatus: {
76813
+ description: "With `toolName`, a call of that tool ended this way; alone, a call of any tool did (`failed`: conversations where a tool failed).",
76814
+ anyOf: [
76815
+ {
76816
+ const: "completed",
76817
+ type: "string"
76818
+ },
76819
+ {
76820
+ const: "failed",
76821
+ type: "string"
76822
+ },
76823
+ {
76824
+ const: "denied",
76825
+ type: "string"
76826
+ }
76827
+ ]
76828
+ },
76829
+ factDefinition: {
76830
+ description: "Conversations whose current fact of this definition (its `key`) is known: about the conversation, or about its contact for a contact definition. With `factValue`, equal to that value.",
76831
+ pattern: "^[a-z][a-z0-9_]{0,63}$",
76832
+ type: "string"
76833
+ },
76834
+ factValue: {
76835
+ description: "With `factDefinition`: an option's key or label, a text (ignoring case), a number, a date (YYYY-MM-DD) or `true`/`false`.",
76836
+ maxLength: 500,
76837
+ minLength: 1,
76838
+ type: "string"
76839
+ },
76840
+ assessment: {
76841
+ description: "The conversation's yes/no assessments: `failed`, at least one answered no; `passed`, at least one answered and every answered one yes.",
76842
+ anyOf: [
76843
+ {
76844
+ const: "failed",
76845
+ type: "string"
76846
+ },
76847
+ {
76848
+ const: "passed",
76849
+ type: "string"
76850
+ }
76851
+ ]
76852
+ },
76853
+ messagesMin: {
76854
+ description: "At least this many messages.",
76855
+ minimum: 0,
76856
+ type: "integer"
76857
+ },
76858
+ messagesMax: {
76859
+ description: "At most this many messages.",
76860
+ minimum: 0,
76861
+ type: "integer"
76862
+ },
76863
+ durationMin: {
76864
+ description: "Calls of at least this many seconds.",
76865
+ minimum: 0,
76866
+ type: "integer"
76867
+ },
76868
+ durationMax: {
76869
+ description: "Calls of at most this many seconds.",
76870
+ minimum: 0,
76871
+ type: "integer"
76872
+ },
76873
+ period: {
76874
+ description: "Conversations started today or in the last 7, 30, 90 or 365 days when the view opens, in the organization's time zone. Use it instead of `startedAfter`/`startedBefore` for a view that keeps moving with the calendar.",
76875
+ anyOf: [
76876
+ {
76877
+ const: "today",
76878
+ type: "string"
76879
+ },
76880
+ {
76881
+ const: "7d",
76882
+ type: "string"
76883
+ },
76884
+ {
76885
+ const: "30d",
76886
+ type: "string"
76887
+ },
76888
+ {
76889
+ const: "90d",
76890
+ type: "string"
76891
+ },
76892
+ {
76893
+ const: "365d",
76894
+ type: "string"
76895
+ }
76896
+ ]
76897
+ }
76898
+ }
76899
+ },
76900
+ RaizConversationViewPage: {
76901
+ additionalProperties: false,
76902
+ type: "object",
76903
+ required: [
76904
+ "data",
76905
+ "object",
76906
+ "pageInfo"
76907
+ ],
76908
+ properties: {
76909
+ data: {
76910
+ description: "Items admitted by this resource contract within the verified organization.",
76911
+ type: "array",
76912
+ items: {
76913
+ $ref: "#/components/schemas/RaizConversationView"
76914
+ }
76915
+ },
76916
+ object: {
76917
+ description: "Discriminator for a resource list response.",
76918
+ const: "list",
76919
+ type: "string"
76920
+ },
76921
+ pageInfo: {
76922
+ $ref: "#/components/schemas/PageInfo",
76923
+ description: "Opaque navigation cursors for this page’s stable keyset order."
76924
+ }
76925
+ }
76926
+ },
76028
76927
  RaizConversationWorker: {
76029
76928
  anyOf: [
76030
76929
  {
@@ -77185,6 +78084,7 @@ var schemaComponents = {
77185
78084
  required: [
77186
78085
  "id",
77187
78086
  "key",
78087
+ "kind",
77188
78088
  "name",
77189
78089
  "valueType"
77190
78090
  ],
@@ -77200,6 +78100,27 @@ var schemaComponents = {
77200
78100
  key: {
77201
78101
  type: "string"
77202
78102
  },
78103
+ kind: {
78104
+ description: "What the definition captures: an `attribute` (a datum), an `assessment` (a yes/no check of the conversation), a `category` (a classification such as the reason for contact) or a `metric`.",
78105
+ anyOf: [
78106
+ {
78107
+ const: "attribute",
78108
+ type: "string"
78109
+ },
78110
+ {
78111
+ const: "assessment",
78112
+ type: "string"
78113
+ },
78114
+ {
78115
+ const: "category",
78116
+ type: "string"
78117
+ },
78118
+ {
78119
+ const: "metric",
78120
+ type: "string"
78121
+ }
78122
+ ]
78123
+ },
77203
78124
  name: {
77204
78125
  type: "string"
77205
78126
  },
@@ -77754,11 +78675,127 @@ var schemaComponents = {
77754
78675
  ],
77755
78676
  properties: {
77756
78677
  code: {
77757
- const: "CONTACT_UNREACHABLE",
78678
+ const: "CONTACT_UNREACHABLE",
78679
+ type: "string"
78680
+ },
78681
+ message: {
78682
+ const: "The contact has no phone number. Give the destination number in `to`.",
78683
+ type: "string"
78684
+ },
78685
+ retryable: {
78686
+ const: false,
78687
+ type: "boolean"
78688
+ },
78689
+ data: {
78690
+ additionalProperties: false,
78691
+ type: "object",
78692
+ properties: {}
78693
+ }
78694
+ }
78695
+ },
78696
+ {
78697
+ additionalProperties: false,
78698
+ type: "object",
78699
+ required: [
78700
+ "code",
78701
+ "message",
78702
+ "retryable",
78703
+ "data"
78704
+ ],
78705
+ properties: {
78706
+ code: {
78707
+ const: "CONVERSATION_CLOSED",
78708
+ type: "string"
78709
+ },
78710
+ message: {
78711
+ const: "The conversation is closed. Start a new conversation to write again.",
78712
+ type: "string"
78713
+ },
78714
+ retryable: {
78715
+ const: false,
78716
+ type: "boolean"
78717
+ },
78718
+ data: {
78719
+ additionalProperties: false,
78720
+ type: "object",
78721
+ properties: {}
78722
+ }
78723
+ }
78724
+ },
78725
+ {
78726
+ additionalProperties: false,
78727
+ type: "object",
78728
+ required: [
78729
+ "code",
78730
+ "message",
78731
+ "retryable",
78732
+ "data"
78733
+ ],
78734
+ properties: {
78735
+ code: {
78736
+ const: "CONVERSATION_NOT_HANDED_OFF",
78737
+ type: "string"
78738
+ },
78739
+ message: {
78740
+ const: "The AI has not handed this conversation to the team, so there is nothing to give back to it.",
78741
+ type: "string"
78742
+ },
78743
+ retryable: {
78744
+ const: false,
78745
+ type: "boolean"
78746
+ },
78747
+ data: {
78748
+ additionalProperties: false,
78749
+ type: "object",
78750
+ properties: {}
78751
+ }
78752
+ }
78753
+ },
78754
+ {
78755
+ additionalProperties: false,
78756
+ type: "object",
78757
+ required: [
78758
+ "code",
78759
+ "message",
78760
+ "retryable",
78761
+ "data"
78762
+ ],
78763
+ properties: {
78764
+ code: {
78765
+ const: "CONVERSATION_OPEN",
78766
+ type: "string"
78767
+ },
78768
+ message: {
78769
+ const: "The conversation is still open. Close it first.",
78770
+ type: "string"
78771
+ },
78772
+ retryable: {
78773
+ const: false,
78774
+ type: "boolean"
78775
+ },
78776
+ data: {
78777
+ additionalProperties: false,
78778
+ type: "object",
78779
+ properties: {}
78780
+ }
78781
+ }
78782
+ },
78783
+ {
78784
+ additionalProperties: false,
78785
+ type: "object",
78786
+ required: [
78787
+ "code",
78788
+ "message",
78789
+ "retryable",
78790
+ "data"
78791
+ ],
78792
+ properties: {
78793
+ code: {
78794
+ const: "DAILY_REPORT_IN_PROGRESS",
77758
78795
  type: "string"
77759
78796
  },
77760
78797
  message: {
77761
- const: "The contact has no phone number. Give the destination number in `to`.",
78798
+ const: "The daily report you asked for is still on its way; it arrives within a minute.",
77762
78799
  type: "string"
77763
78800
  },
77764
78801
  retryable: {
@@ -77783,11 +78820,11 @@ var schemaComponents = {
77783
78820
  ],
77784
78821
  properties: {
77785
78822
  code: {
77786
- const: "CONVERSATION_CLOSED",
78823
+ const: "DAILY_REPORT_RECIPIENTS_MISSING",
77787
78824
  type: "string"
77788
78825
  },
77789
78826
  message: {
77790
- const: "The conversation is closed. Start a new conversation to write again.",
78827
+ const: "The daily report has no recipients. Add them in `settings.dailyReport.recipients` first.",
77791
78828
  type: "string"
77792
78829
  },
77793
78830
  retryable: {
@@ -77812,11 +78849,11 @@ var schemaComponents = {
77812
78849
  ],
77813
78850
  properties: {
77814
78851
  code: {
77815
- const: "CONVERSATION_NOT_HANDED_OFF",
78852
+ const: "DEFINITION_NOT_ACTIVE",
77816
78853
  type: "string"
77817
78854
  },
77818
78855
  message: {
77819
- const: "The AI has not handed this conversation to the team, so there is nothing to give back to it.",
78856
+ const: "Facts can be asserted only under an active definition.",
77820
78857
  type: "string"
77821
78858
  },
77822
78859
  retryable: {
@@ -77841,11 +78878,11 @@ var schemaComponents = {
77841
78878
  ],
77842
78879
  properties: {
77843
78880
  code: {
77844
- const: "CONVERSATION_OPEN",
78881
+ const: "DEFINITION_OPTIONS_INVALID",
77845
78882
  type: "string"
77846
78883
  },
77847
78884
  message: {
77848
- const: "The conversation is still open. Close it first.",
78885
+ const: "Only a definition whose value type is `option` has options; it needs at least one, and option keys must be unique.",
77849
78886
  type: "string"
77850
78887
  },
77851
78888
  retryable: {
@@ -77870,11 +78907,11 @@ var schemaComponents = {
77870
78907
  ],
77871
78908
  properties: {
77872
78909
  code: {
77873
- const: "DAILY_REPORT_IN_PROGRESS",
78910
+ const: "DEFINITION_RETIRED",
77874
78911
  type: "string"
77875
78912
  },
77876
78913
  message: {
77877
- const: "The daily report you asked for is still on its way; it arrives within a minute.",
78914
+ const: "The definition is retired and can no longer change.",
77878
78915
  type: "string"
77879
78916
  },
77880
78917
  retryable: {
@@ -77899,11 +78936,11 @@ var schemaComponents = {
77899
78936
  ],
77900
78937
  properties: {
77901
78938
  code: {
77902
- const: "DAILY_REPORT_RECIPIENTS_MISSING",
78939
+ const: "DEFINITION_TYPE_LOCKED",
77903
78940
  type: "string"
77904
78941
  },
77905
78942
  message: {
77906
- const: "The daily report has no recipients. Add them in `settings.dailyReport.recipients` first.",
78943
+ const: "The value type and subject of a definition cannot change once it has facts. Retire it and create a new one instead.",
77907
78944
  type: "string"
77908
78945
  },
77909
78946
  retryable: {
@@ -77928,11 +78965,11 @@ var schemaComponents = {
77928
78965
  ],
77929
78966
  properties: {
77930
78967
  code: {
77931
- const: "DEFINITION_NOT_ACTIVE",
78968
+ const: "FACT_SUBJECT_MISMATCH",
77932
78969
  type: "string"
77933
78970
  },
77934
78971
  message: {
77935
- const: "Facts can be asserted only under an active definition.",
78972
+ const: "The fact's subject (a contact or a conversation) does not match what its definition describes.",
77936
78973
  type: "string"
77937
78974
  },
77938
78975
  retryable: {
@@ -77957,11 +78994,11 @@ var schemaComponents = {
77957
78994
  ],
77958
78995
  properties: {
77959
78996
  code: {
77960
- const: "DEFINITION_OPTIONS_INVALID",
78997
+ const: "FACT_VALUE_INVALID",
77961
78998
  type: "string"
77962
78999
  },
77963
79000
  message: {
77964
- const: "Only a definition whose value type is `option` has options; it needs at least one, and option keys must be unique.",
79001
+ const: "The value does not match the definition's value type, or names no active option.",
77965
79002
  type: "string"
77966
79003
  },
77967
79004
  retryable: {
@@ -77986,11 +79023,11 @@ var schemaComponents = {
77986
79023
  ],
77987
79024
  properties: {
77988
79025
  code: {
77989
- const: "DEFINITION_RETIRED",
79026
+ const: "HANDOFF_ALREADY_CONTINUED",
77990
79027
  type: "string"
77991
79028
  },
77992
79029
  message: {
77993
- const: "The definition is retired and can no longer change.",
79030
+ const: "This handoff was already given back to the AI to continue. It continues once per handoff; a new escalation can be given back again.",
77994
79031
  type: "string"
77995
79032
  },
77996
79033
  retryable: {
@@ -78015,15 +79052,15 @@ var schemaComponents = {
78015
79052
  ],
78016
79053
  properties: {
78017
79054
  code: {
78018
- const: "DEFINITION_TYPE_LOCKED",
79055
+ const: "REPLY_IN_PROGRESS",
78019
79056
  type: "string"
78020
79057
  },
78021
79058
  message: {
78022
- const: "The value type and subject of a definition cannot change once it has facts. Retire it and create a new one instead.",
79059
+ const: "The Agent is still replying in this conversation. Try again once the reply is delivered.",
78023
79060
  type: "string"
78024
79061
  },
78025
79062
  retryable: {
78026
- const: false,
79063
+ const: true,
78027
79064
  type: "boolean"
78028
79065
  },
78029
79066
  data: {
@@ -78044,11 +79081,11 @@ var schemaComponents = {
78044
79081
  ],
78045
79082
  properties: {
78046
79083
  code: {
78047
- const: "FACT_SUBJECT_MISMATCH",
79084
+ const: "IMPORT_FILE_INVALID",
78048
79085
  type: "string"
78049
79086
  },
78050
79087
  message: {
78051
- const: "The fact's subject (a contact or a conversation) does not match what its definition describes.",
79088
+ const: "The import file is not valid base64 of UTF-8 text. Save the spreadsheet as CSV UTF-8 and try again.",
78052
79089
  type: "string"
78053
79090
  },
78054
79091
  retryable: {
@@ -78073,11 +79110,11 @@ var schemaComponents = {
78073
79110
  ],
78074
79111
  properties: {
78075
79112
  code: {
78076
- const: "FACT_VALUE_INVALID",
79113
+ const: "IMPORT_FILE_TOO_LARGE",
78077
79114
  type: "string"
78078
79115
  },
78079
79116
  message: {
78080
- const: "The value does not match the definition's value type, or names no active option.",
79117
+ const: "The import file is larger than 12 MB. Split it into several files.",
78081
79118
  type: "string"
78082
79119
  },
78083
79120
  retryable: {
@@ -78102,11 +79139,11 @@ var schemaComponents = {
78102
79139
  ],
78103
79140
  properties: {
78104
79141
  code: {
78105
- const: "HANDOFF_ALREADY_CONTINUED",
79142
+ const: "IP_NETWORK_INVALID",
78106
79143
  type: "string"
78107
79144
  },
78108
79145
  message: {
78109
- const: "This handoff was already given back to the AI to continue. It continues once per handoff; a new escalation can be given back again.",
79146
+ const: "The IP network is not a valid IPv4 or IPv6 address or CIDR block.",
78110
79147
  type: "string"
78111
79148
  },
78112
79149
  retryable: {
@@ -78131,40 +79168,11 @@ var schemaComponents = {
78131
79168
  ],
78132
79169
  properties: {
78133
79170
  code: {
78134
- const: "REPLY_IN_PROGRESS",
78135
- type: "string"
78136
- },
78137
- message: {
78138
- const: "The Agent is still replying in this conversation. Try again once the reply is delivered.",
78139
- type: "string"
78140
- },
78141
- retryable: {
78142
- const: true,
78143
- type: "boolean"
78144
- },
78145
- data: {
78146
- additionalProperties: false,
78147
- type: "object",
78148
- properties: {}
78149
- }
78150
- }
78151
- },
78152
- {
78153
- additionalProperties: false,
78154
- type: "object",
78155
- required: [
78156
- "code",
78157
- "message",
78158
- "retryable",
78159
- "data"
78160
- ],
78161
- properties: {
78162
- code: {
78163
- const: "IMPORT_FILE_INVALID",
79171
+ const: "OUTSIDE_CONTACT_HOURS",
78164
79172
  type: "string"
78165
79173
  },
78166
79174
  message: {
78167
- const: "The import file is not valid base64 of UTF-8 text. Save the spreadsheet as CSV UTF-8 and try again.",
79175
+ const: "The profile's contact hours do not allow starting a conversation now. Try again within them.",
78168
79176
  type: "string"
78169
79177
  },
78170
79178
  retryable: {
@@ -78189,11 +79197,11 @@ var schemaComponents = {
78189
79197
  ],
78190
79198
  properties: {
78191
79199
  code: {
78192
- const: "IMPORT_FILE_TOO_LARGE",
79200
+ const: "PROFILE_VARIABLE_MISSING",
78193
79201
  type: "string"
78194
79202
  },
78195
79203
  message: {
78196
- const: "The import file is larger than 12 MB. Split it into several files.",
79204
+ const: "The profile's template parameters reference a variable that `variables` does not give.",
78197
79205
  type: "string"
78198
79206
  },
78199
79207
  retryable: {
@@ -78218,11 +79226,11 @@ var schemaComponents = {
78218
79226
  ],
78219
79227
  properties: {
78220
79228
  code: {
78221
- const: "IP_NETWORK_INVALID",
79229
+ const: "PROVIDER_ACCOUNT_EXISTS",
78222
79230
  type: "string"
78223
79231
  },
78224
79232
  message: {
78225
- const: "The IP network is not a valid IPv4 or IPv6 address or CIDR block.",
79233
+ const: "This provider account is already registered.",
78226
79234
  type: "string"
78227
79235
  },
78228
79236
  retryable: {
@@ -78247,11 +79255,11 @@ var schemaComponents = {
78247
79255
  ],
78248
79256
  properties: {
78249
79257
  code: {
78250
- const: "OUTSIDE_CONTACT_HOURS",
79258
+ const: "PROVIDER_ACCOUNT_IN_USE",
78251
79259
  type: "string"
78252
79260
  },
78253
79261
  message: {
78254
- const: "The profile's contact hours do not allow starting a conversation now. Try again within them.",
79262
+ const: "Channels or Agents still use this provider account. Move them to another account first.",
78255
79263
  type: "string"
78256
79264
  },
78257
79265
  retryable: {
@@ -78276,11 +79284,11 @@ var schemaComponents = {
78276
79284
  ],
78277
79285
  properties: {
78278
79286
  code: {
78279
- const: "PROFILE_VARIABLE_MISSING",
79287
+ const: "REPORT_FILTER_UNSUPPORTED",
78280
79288
  type: "string"
78281
79289
  },
78282
79290
  message: {
78283
- const: "The profile's template parameters reference a variable that `variables` does not give.",
79291
+ const: "A filter does not apply to the selected report.",
78284
79292
  type: "string"
78285
79293
  },
78286
79294
  retryable: {
@@ -78305,11 +79313,11 @@ var schemaComponents = {
78305
79313
  ],
78306
79314
  properties: {
78307
79315
  code: {
78308
- const: "PROVIDER_ACCOUNT_EXISTS",
79316
+ const: "REPORT_RANGE_INVALID",
78309
79317
  type: "string"
78310
79318
  },
78311
79319
  message: {
78312
- const: "This provider account is already registered.",
79320
+ const: "The report range is invalid: `from` must not be after `to`.",
78313
79321
  type: "string"
78314
79322
  },
78315
79323
  retryable: {
@@ -78334,11 +79342,11 @@ var schemaComponents = {
78334
79342
  ],
78335
79343
  properties: {
78336
79344
  code: {
78337
- const: "PROVIDER_ACCOUNT_IN_USE",
79345
+ const: "SOURCE_CONVERSATION_OPEN",
78338
79346
  type: "string"
78339
79347
  },
78340
79348
  message: {
78341
- const: "Channels or Agents still use this provider account. Move them to another account first.",
79349
+ const: "A fact can cite only a closed conversation as its source.",
78342
79350
  type: "string"
78343
79351
  },
78344
79352
  retryable: {
@@ -78363,11 +79371,11 @@ var schemaComponents = {
78363
79371
  ],
78364
79372
  properties: {
78365
79373
  code: {
78366
- const: "REPORT_FILTER_UNSUPPORTED",
79374
+ const: "SUPPRESSION_EXISTS",
78367
79375
  type: "string"
78368
79376
  },
78369
79377
  message: {
78370
- const: "A filter does not apply to the selected report.",
79378
+ const: "This organization already has this suppression rule.",
78371
79379
  type: "string"
78372
79380
  },
78373
79381
  retryable: {
@@ -78392,11 +79400,11 @@ var schemaComponents = {
78392
79400
  ],
78393
79401
  properties: {
78394
79402
  code: {
78395
- const: "REPORT_RANGE_INVALID",
79403
+ const: "TASK_NOT_RETRYABLE",
78396
79404
  type: "string"
78397
79405
  },
78398
79406
  message: {
78399
- const: "The report range is invalid: `from` must not be after `to`.",
79407
+ const: "This task cannot be retried: its kind never retries, or it already used every attempt. Start it again from its resource.",
78400
79408
  type: "string"
78401
79409
  },
78402
79410
  retryable: {
@@ -78421,11 +79429,11 @@ var schemaComponents = {
78421
79429
  ],
78422
79430
  properties: {
78423
79431
  code: {
78424
- const: "SOURCE_CONVERSATION_OPEN",
79432
+ const: "TIME_ZONE_UNKNOWN",
78425
79433
  type: "string"
78426
79434
  },
78427
79435
  message: {
78428
- const: "A fact can cite only a closed conversation as its source.",
79436
+ const: "The time zone is not in the IANA time zone database.",
78429
79437
  type: "string"
78430
79438
  },
78431
79439
  retryable: {
@@ -78450,11 +79458,11 @@ var schemaComponents = {
78450
79458
  ],
78451
79459
  properties: {
78452
79460
  code: {
78453
- const: "SUPPRESSION_EXISTS",
79461
+ const: "CHANNEL_AGENT_MISMATCH",
78454
79462
  type: "string"
78455
79463
  },
78456
79464
  message: {
78457
- const: "This organization already has this suppression rule.",
79465
+ const: "This Agent cannot serve this channel: voice channels need a voice Agent; WhatsApp and web channels need a text Agent.",
78458
79466
  type: "string"
78459
79467
  },
78460
79468
  retryable: {
@@ -78479,11 +79487,11 @@ var schemaComponents = {
78479
79487
  ],
78480
79488
  properties: {
78481
79489
  code: {
78482
- const: "TASK_NOT_RETRYABLE",
79490
+ const: "CHANNEL_CREATION_IN_APP",
78483
79491
  type: "string"
78484
79492
  },
78485
79493
  message: {
78486
- const: "This task cannot be retried: its kind never retries, or it already used every attempt. Start it again from its resource.",
79494
+ const: "An AI tool creates website chats and forms only. A person adds WhatsApp numbers and phone numbers in Settings → Channels, or through the REST API.",
78487
79495
  type: "string"
78488
79496
  },
78489
79497
  retryable: {
@@ -78508,11 +79516,11 @@ var schemaComponents = {
78508
79516
  ],
78509
79517
  properties: {
78510
79518
  code: {
78511
- const: "TIME_ZONE_UNKNOWN",
79519
+ const: "CHANNEL_AGENT_REQUIRED",
78512
79520
  type: "string"
78513
79521
  },
78514
79522
  message: {
78515
- const: "The time zone is not in the IANA time zone database.",
79523
+ const: "Inbound traffic requires an assigned Agent. Outbound traffic requires one except on WhatsApp notification channels.",
78516
79524
  type: "string"
78517
79525
  },
78518
79526
  retryable: {
@@ -78537,11 +79545,11 @@ var schemaComponents = {
78537
79545
  ],
78538
79546
  properties: {
78539
79547
  code: {
78540
- const: "CHANNEL_AGENT_MISMATCH",
79548
+ const: "CHANNEL_ENDPOINT_IN_USE",
78541
79549
  type: "string"
78542
79550
  },
78543
79551
  message: {
78544
- const: "This Agent cannot serve this channel: voice channels need a voice Agent; WhatsApp and web channels need a text Agent.",
79552
+ const: "Another channel already uses this number or endpoint.",
78545
79553
  type: "string"
78546
79554
  },
78547
79555
  retryable: {
@@ -78566,11 +79574,11 @@ var schemaComponents = {
78566
79574
  ],
78567
79575
  properties: {
78568
79576
  code: {
78569
- const: "CHANNEL_CREATION_IN_APP",
79577
+ const: "CHANNEL_NOT_READY",
78570
79578
  type: "string"
78571
79579
  },
78572
79580
  message: {
78573
- const: "An AI tool creates website chats and forms only. A person adds WhatsApp numbers and phone numbers in Settings → Channels, or through the REST API.",
79581
+ const: "The channel is not connected yet, or this kind of traffic is not enabled on it.",
78574
79582
  type: "string"
78575
79583
  },
78576
79584
  retryable: {
@@ -78595,11 +79603,11 @@ var schemaComponents = {
78595
79603
  ],
78596
79604
  properties: {
78597
79605
  code: {
78598
- const: "CHANNEL_AGENT_REQUIRED",
79606
+ const: "CHANNEL_TYPE_MISMATCH",
78599
79607
  type: "string"
78600
79608
  },
78601
79609
  message: {
78602
- const: "Inbound traffic requires an assigned Agent. Outbound traffic requires one except on WhatsApp notification channels.",
79610
+ const: "This operation or field does not apply to this channel's type.",
78603
79611
  type: "string"
78604
79612
  },
78605
79613
  retryable: {
@@ -78624,11 +79632,11 @@ var schemaComponents = {
78624
79632
  ],
78625
79633
  properties: {
78626
79634
  code: {
78627
- const: "CHANNEL_ENDPOINT_IN_USE",
79635
+ const: "CONVERSATION_VIEW_AUTHOR_ONLY",
78628
79636
  type: "string"
78629
79637
  },
78630
79638
  message: {
78631
- const: "Another channel already uses this number or endpoint.",
79639
+ const: "Only the person who saved this view can make it private; it would disappear for the rest of the team.",
78632
79640
  type: "string"
78633
79641
  },
78634
79642
  retryable: {
@@ -78653,11 +79661,11 @@ var schemaComponents = {
78653
79661
  ],
78654
79662
  properties: {
78655
79663
  code: {
78656
- const: "CHANNEL_NOT_READY",
79664
+ const: "CONVERSATION_VIEW_LIMIT_REACHED",
78657
79665
  type: "string"
78658
79666
  },
78659
79667
  message: {
78660
- const: "The channel is not connected yet, or this kind of traffic is not enabled on it.",
79668
+ const: "The organization already has 200 saved views. Delete one before saving another.",
78661
79669
  type: "string"
78662
79670
  },
78663
79671
  retryable: {
@@ -78682,11 +79690,11 @@ var schemaComponents = {
78682
79690
  ],
78683
79691
  properties: {
78684
79692
  code: {
78685
- const: "CHANNEL_TYPE_MISMATCH",
79693
+ const: "CONVERSATION_VIEW_NAME_TAKEN",
78686
79694
  type: "string"
78687
79695
  },
78688
79696
  message: {
78689
- const: "This operation or field does not apply to this channel's type.",
79697
+ const: "Another saved view already has this name. Choose a different name.",
78690
79698
  type: "string"
78691
79699
  },
78692
79700
  retryable: {
@@ -111722,6 +112730,78 @@ var schemaComponents = {
111722
112730
  }
111723
112731
  ]
111724
112732
  },
112733
+ sentiment: {
112734
+ description: "Comma-separated sentiments of the analysis.",
112735
+ pattern: "^(positive|neutral|negative)(,(positive|neutral|negative))*$",
112736
+ type: "string"
112737
+ },
112738
+ toolName: {
112739
+ description: "Conversations where the Agent called this tool: its exact name, as the transcript's tool parts show it (`toolName`). `count_conversations` with `groupBy=tool` lists the names with how many conversations used each.",
112740
+ maxLength: 128,
112741
+ minLength: 1,
112742
+ type: "string"
112743
+ },
112744
+ toolStatus: {
112745
+ description: "With `toolName`, a call of that tool ended this way; alone, a call of any tool did (`failed`: conversations where a tool failed).",
112746
+ anyOf: [
112747
+ {
112748
+ const: "completed",
112749
+ type: "string"
112750
+ },
112751
+ {
112752
+ const: "failed",
112753
+ type: "string"
112754
+ },
112755
+ {
112756
+ const: "denied",
112757
+ type: "string"
112758
+ }
112759
+ ]
112760
+ },
112761
+ factDefinition: {
112762
+ description: "Conversations whose current fact of this definition (its `key`) is known: about the conversation, or about its contact for a contact definition. With `factValue`, equal to that value.",
112763
+ pattern: "^[a-z][a-z0-9_]{0,63}$",
112764
+ type: "string"
112765
+ },
112766
+ factValue: {
112767
+ description: "With `factDefinition`: an option's key or label, a text (ignoring case), a number, a date (YYYY-MM-DD) or `true`/`false`.",
112768
+ maxLength: 500,
112769
+ minLength: 1,
112770
+ type: "string"
112771
+ },
112772
+ assessment: {
112773
+ description: "The conversation's yes/no assessments: `failed`, at least one answered no; `passed`, at least one answered and every answered one yes.",
112774
+ anyOf: [
112775
+ {
112776
+ const: "failed",
112777
+ type: "string"
112778
+ },
112779
+ {
112780
+ const: "passed",
112781
+ type: "string"
112782
+ }
112783
+ ]
112784
+ },
112785
+ messagesMin: {
112786
+ description: "At least this many messages.",
112787
+ minimum: 0,
112788
+ type: "integer"
112789
+ },
112790
+ messagesMax: {
112791
+ description: "At most this many messages.",
112792
+ minimum: 0,
112793
+ type: "integer"
112794
+ },
112795
+ durationMin: {
112796
+ description: "Calls of at least this many seconds.",
112797
+ minimum: 0,
112798
+ type: "integer"
112799
+ },
112800
+ durationMax: {
112801
+ description: "Calls of at most this many seconds.",
112802
+ minimum: 0,
112803
+ type: "integer"
112804
+ },
111725
112805
  sort: {
111726
112806
  default: "started",
111727
112807
  description: "`started` (newest first), `last_message` (most recent activity first) or `changed`: the changed feed, oldest change first, with deleted conversations as tombstones; a forward page's `pageInfo.nextCursor` is always a position to save and poll from.",
@@ -112073,6 +113153,83 @@ var schemaComponents = {
112073
113153
  type: "string"
112074
113154
  }
112075
113155
  ]
113156
+ },
113157
+ sentiment: {
113158
+ description: "Comma-separated sentiments of the analysis.",
113159
+ pattern: "^(positive|neutral|negative)(,(positive|neutral|negative))*$",
113160
+ type: "string"
113161
+ },
113162
+ toolName: {
113163
+ description: "Conversations where the Agent called this tool: its exact name, as the transcript's tool parts show it (`toolName`). `count_conversations` with `groupBy=tool` lists the names with how many conversations used each.",
113164
+ maxLength: 128,
113165
+ minLength: 1,
113166
+ type: "string"
113167
+ },
113168
+ toolStatus: {
113169
+ description: "With `toolName`, a call of that tool ended this way; alone, a call of any tool did (`failed`: conversations where a tool failed).",
113170
+ anyOf: [
113171
+ {
113172
+ const: "completed",
113173
+ type: "string"
113174
+ },
113175
+ {
113176
+ const: "failed",
113177
+ type: "string"
113178
+ },
113179
+ {
113180
+ const: "denied",
113181
+ type: "string"
113182
+ }
113183
+ ]
113184
+ },
113185
+ factDefinition: {
113186
+ description: "Conversations whose current fact of this definition (its `key`) is known: about the conversation, or about its contact for a contact definition. With `factValue`, equal to that value.",
113187
+ pattern: "^[a-z][a-z0-9_]{0,63}$",
113188
+ type: "string"
113189
+ },
113190
+ factValue: {
113191
+ description: "With `factDefinition`: an option's key or label, a text (ignoring case), a number, a date (YYYY-MM-DD) or `true`/`false`.",
113192
+ maxLength: 500,
113193
+ minLength: 1,
113194
+ type: "string"
113195
+ },
113196
+ assessment: {
113197
+ description: "The conversation's yes/no assessments: `failed`, at least one answered no; `passed`, at least one answered and every answered one yes.",
113198
+ anyOf: [
113199
+ {
113200
+ const: "failed",
113201
+ type: "string"
113202
+ },
113203
+ {
113204
+ const: "passed",
113205
+ type: "string"
113206
+ }
113207
+ ]
113208
+ },
113209
+ messagesMin: {
113210
+ description: "At least this many messages.",
113211
+ minimum: 0,
113212
+ type: "integer"
113213
+ },
113214
+ messagesMax: {
113215
+ description: "At most this many messages.",
113216
+ minimum: 0,
113217
+ type: "integer"
113218
+ },
113219
+ durationMin: {
113220
+ description: "Calls of at least this many seconds.",
113221
+ minimum: 0,
113222
+ type: "integer"
113223
+ },
113224
+ durationMax: {
113225
+ description: "Calls of at most this many seconds.",
113226
+ minimum: 0,
113227
+ type: "integer"
113228
+ },
113229
+ groupBy: {
113230
+ description: "`outcome`, `status`, `channel` (type), `agent`, `sentiment`, `tool` (each Agent tool and the conversations that used it), `toolError` (failed calls, of `toolName` when given, by error) or `fact:<definition key>` (the current value of that definition, such as the reason for contact).",
113231
+ pattern: "^(outcome|status|channel|agent|sentiment|tool|toolError|fact:[a-z][a-z0-9_]{0,63})$",
113232
+ type: "string"
112076
113233
  }
112077
113234
  },
112078
113235
  additionalProperties: false
@@ -118537,9 +119694,9 @@ var schemaComponents = {
118537
119694
  // src/generated/generation.json
118538
119695
  var generation_default = {
118539
119696
  formatVersion: 6,
118540
- release: "1.20261101.50133",
118541
- openapiSha256: "8d21074b9ddd85fdc62f5e87426ea93caa0b71de564823fe856a4fb91ec75f83",
118542
- openapiContentSha256: "b5391b5c8b2e6b4cb27f0005a1fdb1b50531d5f455fb868b039f51e7587e03da",
119697
+ release: "1.20261101.70110",
119698
+ openapiSha256: "6b4e628b78cf25beee158af805d84cd7e782ca0e4977749e0c46763c986b66e4",
119699
+ openapiContentSha256: "4e788d1263f27e67611185e5a290fc8c4c9d3c287f417a7bb8decd8e78ce32a6",
118543
119700
  forge: {
118544
119701
  repository: "https://github.com/cloudflare/forge",
118545
119702
  commit: "7f86447210b7bea3779bfdab3cd5655eade0eadb",
@@ -118552,7 +119709,7 @@ var generation_default = {
118552
119709
  outputs: [
118553
119710
  {
118554
119711
  path: "src/generated/commands.ts",
118555
- sha256: "219d8626378db6381556649b8a30c75e00760cb7cb418aca8d25823557f2a5a6"
119712
+ sha256: "72f40e9c20874491fa950a4f86820f9e7b8dfa38404776ccd7d3c7010099539d"
118556
119713
  }
118557
119714
  ]
118558
119715
  };
@@ -118907,10 +120064,19 @@ ${name}`);
118907
120064
  }
118908
120065
 
118909
120066
  // src/index.ts
118910
- var VERSION = "3.24.0";
120067
+ var VERSION = "3.26.0";
118911
120068
  var RELEASE = generation_default.release;
118912
120069
  var SDK_PATHS = new Map(Object.values(commands).map((command) => [command.operation, command.sdkPath]));
118913
120070
  var SERVICES = [...new Set(Object.keys(commands).map((name) => name.split(" ")[0]))].toSorted();
120071
+ var SERVICE_IDS = new Map(Object.entries(commands).map(([name, command]) => [
120072
+ command.operation.split(".")[0] ?? "",
120073
+ name.split(" ")[0] ?? ""
120074
+ ]));
120075
+ function commandWords(words) {
120076
+ const [first, ...rest] = words;
120077
+ const service = first === undefined ? undefined : SERVICE_IDS.get(first);
120078
+ return service === undefined ? words : [service, ...rest];
120079
+ }
118914
120080
  var HELP = `Arbol CLI ${VERSION} (Arbol API ${RELEASE}): the Arbol platform from your terminal.
118915
120081
 
118916
120082
  Usage
@@ -119091,7 +120257,7 @@ Run one with --help to see its fields.
119091
120257
  `;
119092
120258
  }
119093
120259
  async function main(argv, { root, keys } = {}) {
119094
- const words = parseArgs({ args: argv, allowPositionals: true, strict: false, options: GLOBAL }).positionals;
120260
+ const words = commandWords(parseArgs({ args: argv, allowPositionals: true, strict: false, options: GLOBAL }).positionals);
119095
120261
  const found = words[0] === "auth" ? null : findCommand(words);
119096
120262
  const fieldOptions = Object.fromEntries((found?.command.fields ?? []).map((field) => [field.flag, { type: "string" }]));
119097
120263
  let parsed;
@@ -119106,7 +120272,8 @@ async function main(argv, { root, keys } = {}) {
119106
120272
  throw new UsageError(`${error instanceof Error ? error.message : String(error)}
119107
120273
  Run arbol --help.`);
119108
120274
  }
119109
- const { positionals, values } = parsed;
120275
+ const { values } = parsed;
120276
+ const positionals = commandWords(parsed.positionals);
119110
120277
  if (values.version) {
119111
120278
  process.stdout.write(`arbol ${VERSION} (Arbol API ${RELEASE})
119112
120279
  `);