@arbol-ai/cli 2.13.0 → 2.14.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 +7 -1
  2. package/dist/index.js +418 -104
  3. package/package.json +6 -5
package/README.md CHANGED
@@ -140,7 +140,7 @@ bun install
140
140
  bun run forge # build the pinned Cloudflare Forge with cargo into .forge/ (once; needs Rust)
141
141
  bun run openapi # download https://api.getarbol.com/openapi.json
142
142
  bun run generate # src/generated/ from openapi.json with the plugin in generation/plugins/cli.ts
143
- bun run verify # typecheck, tests and dist/
143
+ bun run verify # typecheck and dist/; tests require an explicit human request
144
144
  ```
145
145
 
146
146
  `src/generated/` is the plugin's output, unedited; everything else in `src/` is the CLI itself.
@@ -187,3 +187,9 @@ is private. Provenance is disabled because npm does not support it for private s
187
187
  ## License
188
188
 
189
189
  [Apache License 2.0](LICENSE)
190
+
191
+ ## Validation
192
+
193
+ `bun run verify` checks types and builds the CLI without executing tests. Tests are
194
+ manual: run `bun run test` or `bun run verify:with-tests` only when a human requests
195
+ that run. Automatic verification, generation and publication use the static path.
package/dist/index.js CHANGED
@@ -5424,7 +5424,7 @@ var commands = {
5424
5424
  flag: "capacity",
5425
5425
  kind: "integer",
5426
5426
  required: false,
5427
- description: "Maximum concurrent units this resource or offering can accept.",
5427
+ description: "Legacy concurrent-session limit above 1; details.maxConcurrent takes precedence. The historical default 1 delegates to resource capacity.",
5428
5428
  default: 1
5429
5429
  },
5430
5430
  {
@@ -5511,7 +5511,7 @@ var commands = {
5511
5511
  minimum: 1,
5512
5512
  maximum: 1e4,
5513
5513
  type: "integer",
5514
- description: "Maximum concurrent units this resource or offering can accept.",
5514
+ description: "Legacy concurrent-session limit above 1; details.maxConcurrent takes precedence. The historical default 1 delegates to resource capacity.",
5515
5515
  default: 1
5516
5516
  },
5517
5517
  details: {
@@ -5797,7 +5797,7 @@ var commands = {
5797
5797
  flag: "capacity",
5798
5798
  kind: "integer",
5799
5799
  required: false,
5800
- description: "Maximum concurrent units this resource or offering can accept."
5800
+ description: "Legacy concurrent-session limit above 1; details.maxConcurrent takes precedence. The historical default 1 delegates to resource capacity."
5801
5801
  },
5802
5802
  {
5803
5803
  name: "durationMinutes",
@@ -5876,7 +5876,7 @@ var commands = {
5876
5876
  minimum: 1,
5877
5877
  maximum: 1e4,
5878
5878
  type: "integer",
5879
- description: "Maximum concurrent units this resource or offering can accept."
5879
+ description: "Legacy concurrent-session limit above 1; details.maxConcurrent takes precedence. The historical default 1 delegates to resource capacity."
5880
5880
  },
5881
5881
  details: {
5882
5882
  type: "object",
@@ -5923,6 +5923,80 @@ var commands = {
5923
5923
  ],
5924
5924
  description: "Lifecycle state controlling whether this record remains available to its domain consumers."
5925
5925
  },
5926
+ resourceRequirements: {
5927
+ maxItems: 30,
5928
+ type: "array",
5929
+ items: {
5930
+ additionalProperties: false,
5931
+ type: "object",
5932
+ required: [
5933
+ "kind"
5934
+ ],
5935
+ properties: {
5936
+ alternatives: {
5937
+ maxItems: 100,
5938
+ type: "array",
5939
+ items: {
5940
+ description: "Stable srs-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
5941
+ pattern: "^srs_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
5942
+ type: "string"
5943
+ },
5944
+ default: [],
5945
+ description: "Explicit resource alternatives for this requirement; an empty list allows any resource of the required kind."
5946
+ },
5947
+ kind: {
5948
+ anyOf: [
5949
+ {
5950
+ const: "practitioner",
5951
+ type: "string"
5952
+ },
5953
+ {
5954
+ const: "assistant",
5955
+ type: "string"
5956
+ },
5957
+ {
5958
+ const: "room",
5959
+ type: "string"
5960
+ },
5961
+ {
5962
+ const: "chair",
5963
+ type: "string"
5964
+ },
5965
+ {
5966
+ const: "equipment",
5967
+ type: "string"
5968
+ },
5969
+ {
5970
+ const: "location",
5971
+ type: "string"
5972
+ },
5973
+ {
5974
+ const: "team",
5975
+ type: "string"
5976
+ },
5977
+ {
5978
+ const: "generic",
5979
+ type: "string"
5980
+ }
5981
+ ],
5982
+ description: "Declared domain kind of this record or configuration element."
5983
+ },
5984
+ quantity: {
5985
+ minimum: 1,
5986
+ maximum: 100,
5987
+ type: "integer",
5988
+ default: 1,
5989
+ description: "Number of resources of this kind required by one booking."
5990
+ },
5991
+ required: {
5992
+ type: "boolean",
5993
+ default: true,
5994
+ description: "Whether this resource requirement must be satisfied for the booking to proceed."
5995
+ }
5996
+ }
5997
+ },
5998
+ description: "Complete replacement for future bookings. Existing appointment and hold allocations stay unchanged."
5999
+ },
5926
6000
  expectedVersion: {
5927
6001
  exclusiveMinimum: 0,
5928
6002
  description: "Version last read by the caller. The mutation fails if another writer has changed this record.",
@@ -7146,40 +7220,35 @@ var commands = {
7146
7220
  flag: "appointment-id",
7147
7221
  kind: "string",
7148
7222
  required: false,
7149
- description: "The appointment it relates to: a priority to bring forward.",
7150
- default: null
7223
+ description: "The appointment it relates to: a priority to bring forward."
7151
7224
  },
7152
7225
  {
7153
7226
  name: "conversationUrl",
7154
7227
  flag: "conversation-url",
7155
7228
  kind: "string",
7156
7229
  required: false,
7157
- description: "Agent conversation URL retained so the scheduling team can reopen the referring conversation.",
7158
- default: null
7230
+ description: "Agent conversation URL retained so the scheduling team can reopen the referring conversation."
7159
7231
  },
7160
7232
  {
7161
7233
  name: "note",
7162
7234
  flag: "note",
7163
7235
  kind: "string",
7164
7236
  required: false,
7165
- description: "Desk note attached to the waiting-list entry; null means no note is recorded.",
7166
- default: null
7237
+ description: "Desk note attached to the waiting-list entry; null means no note is recorded."
7167
7238
  },
7168
7239
  {
7169
7240
  name: "payer",
7170
7241
  flag: "payer",
7171
7242
  kind: "string",
7172
7243
  required: false,
7173
- description: "The payer the patient named, as said.",
7174
- default: null
7244
+ description: "The payer the patient named, as said."
7175
7245
  },
7176
7246
  {
7177
7247
  name: "phone",
7178
7248
  flag: "phone",
7179
7249
  kind: "string",
7180
7250
  required: false,
7181
- description: "Patient contact telephone number; null when no number was recorded.",
7182
- default: null
7251
+ description: "The contact phone supplied or confirmed by the person for this request. Replaces their stored contact phone; omitted or null preserves it."
7183
7252
  },
7184
7253
  {
7185
7254
  name: "reason",
@@ -7198,8 +7267,7 @@ var commands = {
7198
7267
  flag: "resource-id",
7199
7268
  kind: "string",
7200
7269
  required: false,
7201
- description: "One professional or agenda; null = any that offers the service.",
7202
- default: null
7270
+ description: "One professional or agenda; null = any that offers the service."
7203
7271
  },
7204
7272
  {
7205
7273
  name: "serviceId",
@@ -7248,8 +7316,7 @@ var commands = {
7248
7316
  {
7249
7317
  type: "null"
7250
7318
  }
7251
- ],
7252
- default: null
7319
+ ]
7253
7320
  },
7254
7321
  conversationUrl: {
7255
7322
  anyOf: [
@@ -7262,7 +7329,6 @@ var commands = {
7262
7329
  type: "null"
7263
7330
  }
7264
7331
  ],
7265
- default: null,
7266
7332
  description: "Agent conversation URL retained so the scheduling team can reopen the referring conversation."
7267
7333
  },
7268
7334
  note: {
@@ -7274,7 +7340,6 @@ var commands = {
7274
7340
  type: "null"
7275
7341
  }
7276
7342
  ],
7277
- default: null,
7278
7343
  description: "Desk note attached to the waiting-list entry; null means no note is recorded."
7279
7344
  },
7280
7345
  patient: {
@@ -7290,8 +7355,7 @@ var commands = {
7290
7355
  {
7291
7356
  type: "null"
7292
7357
  }
7293
- ],
7294
- default: null
7358
+ ]
7295
7359
  },
7296
7360
  phone: {
7297
7361
  anyOf: [
@@ -7302,8 +7366,53 @@ var commands = {
7302
7366
  type: "null"
7303
7367
  }
7304
7368
  ],
7305
- default: null,
7306
- description: "Patient contact telephone number; null when no number was recorded."
7369
+ description: "The contact phone supplied or confirmed by the person for this request. Replaces their stored contact phone; omitted or null preserves it."
7370
+ },
7371
+ preferences: {
7372
+ additionalProperties: false,
7373
+ type: "object",
7374
+ required: [],
7375
+ properties: {
7376
+ from: {
7377
+ description: "From this local date (YYYY-MM-DD).",
7378
+ anyOf: [
7379
+ {
7380
+ format: "date",
7381
+ type: "string"
7382
+ },
7383
+ {
7384
+ type: "null"
7385
+ }
7386
+ ],
7387
+ default: null
7388
+ },
7389
+ times: {
7390
+ description: '"Martes y jueves en la mañana".',
7391
+ anyOf: [
7392
+ {
7393
+ type: "string"
7394
+ },
7395
+ {
7396
+ type: "null"
7397
+ }
7398
+ ],
7399
+ default: null
7400
+ },
7401
+ to: {
7402
+ description: "Until this local date (YYYY-MM-DD).",
7403
+ anyOf: [
7404
+ {
7405
+ format: "date",
7406
+ type: "string"
7407
+ },
7408
+ {
7409
+ type: "null"
7410
+ }
7411
+ ],
7412
+ default: null
7413
+ }
7414
+ },
7415
+ description: "Patient availability preferences retained with the waiting-list entry."
7307
7416
  },
7308
7417
  reason: {
7309
7418
  anyOf: [
@@ -7333,8 +7442,7 @@ var commands = {
7333
7442
  {
7334
7443
  type: "null"
7335
7444
  }
7336
- ],
7337
- default: null
7445
+ ]
7338
7446
  },
7339
7447
  serviceId: {
7340
7448
  description: "Service identifier within the authenticated organization.",
@@ -7368,11 +7476,69 @@ var commands = {
7368
7476
  }
7369
7477
  },
7370
7478
  title: "Add a patient to the waiting list",
7371
- description: "Put a patient on the clinic's waiting list for the team to act on. Use reason 'payer_review' instead of booking when the patient's payer (EPS) has bookingPolicy 'staff_only' in get_intake_settings (create_appointment refuses them): the team coordinates with the doctor and books it. Use reason 'priority' right after create_appointment when the patient asked for a priority (urgent) appointment: pass that appointment's id as appointmentId so the team can bring it forward. Always pass conversationUrl: this conversation's link in Arbol's Contactabilidad (https://raiz.getarbol.com/conversations/…), so the team opens it there. Pass the patient's name, document and documentType, phone, serviceId (and resourceId only when the patient asked for one professional) and the payer as the patient said it. Calling again for the same patient, service and reason returns the same entry. Then tell the patient the clinic's team will contact them.",
7479
+ description: "Put a patient on the clinic's waiting list for the team to act on, only with the person's consent. Use reason 'payer_review' instead of booking when the patient's payer (EPS) has bookingPolicy 'staff_only' in get_intake_settings (create_appointment refuses them): the team coordinates with the doctor and books it. Use reason 'priority' right after create_appointment when the patient asked for a priority (urgent) appointment: pass that appointment's id as appointmentId so the team can bring it forward. Always pass conversationUrl: this conversation's link in Arbol's Contactabilidad (https://raiz.getarbol.com/conversations/…), so the team opens it there. Pass the patient's name, document and documentType, phone, serviceId and the payer as the patient said it. Use resourceId only for the professional the person requested. Calling again for the same patient, service and reason returns the same open entry and updates supplied consented preferences, note, payer, conversation or appointment association. A supplied confirmed phone replaces the patient contact phone; omitted or null phone preserves it. Omitted fields preserve their values; resourceId:null explicitly accepts any professional. When supplying preferences, send the complete consented date/time window; null fields clear those limits. Identical repeats do not change the version. Staff status, priority and original queue position are preserved. A closed entry is not reopened. This registers a waiting-list request, never an appointment. Then tell the patient the clinic's team will contact them.",
7372
7480
  effect: "write",
7373
7481
  confirmation: null,
7374
7482
  hidden: false
7375
7483
  },
7484
+ "agenda waitlist list": {
7485
+ operation: "agenda.waitlist.list",
7486
+ sdkPath: [
7487
+ "agenda",
7488
+ "waitlist",
7489
+ "list"
7490
+ ],
7491
+ pathField: null,
7492
+ fields: [
7493
+ {
7494
+ name: "offeringId",
7495
+ flag: "offering-id",
7496
+ kind: "string",
7497
+ required: false,
7498
+ description: "Only entries recorded for this exact offering, which only entries from before services and agendas were chosen separately have; newer entries carry serviceId and resourceId instead."
7499
+ },
7500
+ {
7501
+ name: "resourceId",
7502
+ flag: "resource-id",
7503
+ kind: "string",
7504
+ required: false,
7505
+ description: "Only entries that asked for this professional or agenda; entries open to any agenda (resourceId null) are left out."
7506
+ },
7507
+ {
7508
+ name: "serviceId",
7509
+ flag: "service-id",
7510
+ kind: "string",
7511
+ required: false,
7512
+ description: "Only entries for this service, whichever agenda they asked for."
7513
+ }
7514
+ ],
7515
+ inputSchema: {
7516
+ additionalProperties: false,
7517
+ type: "object",
7518
+ properties: {
7519
+ offeringId: {
7520
+ description: "Only entries recorded for this exact offering, which only entries from before services and agendas were chosen separately have; newer entries carry serviceId and resourceId instead.",
7521
+ pattern: "^off_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
7522
+ type: "string"
7523
+ },
7524
+ resourceId: {
7525
+ description: "Only entries that asked for this professional or agenda; entries open to any agenda (resourceId null) are left out.",
7526
+ pattern: "^srs_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
7527
+ type: "string"
7528
+ },
7529
+ serviceId: {
7530
+ description: "Only entries for this service, whichever agenda they asked for.",
7531
+ pattern: "^svc_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
7532
+ type: "string"
7533
+ }
7534
+ }
7535
+ },
7536
+ title: "List Waitlist",
7537
+ description: "List the organization’s waitlist entries: open ones first (urgent, then the longest waiting), then closed ones, most recently changed first, up to 500. Narrow them by serviceId and resourceId (the agenda an entry asked for); offeringId finds only entries from before services and agendas were chosen separately.",
7538
+ effect: "read",
7539
+ confirmation: null,
7540
+ hidden: false
7541
+ },
7376
7542
  "axxa authorizations lookup": {
7377
7543
  operation: "axxa.authorizations.lookup",
7378
7544
  sdkPath: [
@@ -30311,6 +30477,8 @@ var schemaComponents = {
30311
30477
  "locations",
30312
30478
  "name",
30313
30479
  "occupationMinutes",
30480
+ "scheduleSummary",
30481
+ "scheduleTimezones",
30314
30482
  "service",
30315
30483
  "serviceId",
30316
30484
  "truncatedAgendas"
@@ -30439,6 +30607,17 @@ var schemaComponents = {
30439
30607
  }
30440
30608
  ]
30441
30609
  },
30610
+ scheduleSummary: {
30611
+ description: "Human-readable service hours and closures. Availability remains authoritative.",
30612
+ type: "string"
30613
+ },
30614
+ scheduleTimezones: {
30615
+ description: "IANA timezones of the agendas in this bounded projection; hours are interpreted locally.",
30616
+ type: "array",
30617
+ items: {
30618
+ type: "string"
30619
+ }
30620
+ },
30442
30621
  service: {
30443
30622
  additionalProperties: false,
30444
30623
  description: "Current service policy and patient instructions; this projection does not establish payer coverage.",
@@ -31029,7 +31208,7 @@ var schemaComponents = {
31029
31208
  type: "string"
31030
31209
  },
31031
31210
  message: {
31032
- const: "The requested operation does not exist.",
31211
+ const: "The requested resource does not exist.",
31033
31212
  type: "string"
31034
31213
  },
31035
31214
  retryable: {
@@ -31683,35 +31862,6 @@ var schemaComponents = {
31683
31862
  }
31684
31863
  }
31685
31864
  },
31686
- {
31687
- additionalProperties: false,
31688
- type: "object",
31689
- required: [
31690
- "code",
31691
- "message",
31692
- "retryable",
31693
- "data"
31694
- ],
31695
- properties: {
31696
- code: {
31697
- const: "AUTHORIZATION_FAILED",
31698
- type: "string"
31699
- },
31700
- message: {
31701
- const: "The identity provider could not authorize this action.",
31702
- type: "string"
31703
- },
31704
- retryable: {
31705
- const: false,
31706
- type: "boolean"
31707
- },
31708
- data: {
31709
- additionalProperties: false,
31710
- type: "object",
31711
- properties: {}
31712
- }
31713
- }
31714
- },
31715
31865
  {
31716
31866
  additionalProperties: false,
31717
31867
  type: "object",
@@ -32176,35 +32326,6 @@ var schemaComponents = {
32176
32326
  }
32177
32327
  }
32178
32328
  },
32179
- {
32180
- additionalProperties: false,
32181
- type: "object",
32182
- required: [
32183
- "code",
32184
- "message",
32185
- "retryable",
32186
- "data"
32187
- ],
32188
- properties: {
32189
- code: {
32190
- const: "SCHEDULING_CONFLICT",
32191
- type: "string"
32192
- },
32193
- message: {
32194
- const: "The schedule changed or this action conflicts with its current state. Refresh before retrying.",
32195
- type: "string"
32196
- },
32197
- retryable: {
32198
- const: false,
32199
- type: "boolean"
32200
- },
32201
- data: {
32202
- additionalProperties: false,
32203
- type: "object",
32204
- properties: {}
32205
- }
32206
- }
32207
- },
32208
32329
  {
32209
32330
  additionalProperties: false,
32210
32331
  type: "object",
@@ -33626,6 +33747,64 @@ var schemaComponents = {
33626
33747
  }
33627
33748
  }
33628
33749
  },
33750
+ {
33751
+ additionalProperties: false,
33752
+ type: "object",
33753
+ required: [
33754
+ "code",
33755
+ "message",
33756
+ "retryable",
33757
+ "data"
33758
+ ],
33759
+ properties: {
33760
+ code: {
33761
+ const: "REMOVAL_WORKFLOW_UNAVAILABLE",
33762
+ type: "string"
33763
+ },
33764
+ message: {
33765
+ const: "Durable removal is unavailable here; use the bounded manual removal operations.",
33766
+ type: "string"
33767
+ },
33768
+ retryable: {
33769
+ const: false,
33770
+ type: "boolean"
33771
+ },
33772
+ data: {
33773
+ additionalProperties: false,
33774
+ type: "object",
33775
+ properties: {}
33776
+ }
33777
+ }
33778
+ },
33779
+ {
33780
+ additionalProperties: false,
33781
+ type: "object",
33782
+ required: [
33783
+ "code",
33784
+ "message",
33785
+ "retryable",
33786
+ "data"
33787
+ ],
33788
+ properties: {
33789
+ code: {
33790
+ const: "REMOVAL_JOB_CONFLICT",
33791
+ type: "string"
33792
+ },
33793
+ message: {
33794
+ const: "A removal is already active, or this idempotency key belongs to another decision.",
33795
+ type: "string"
33796
+ },
33797
+ retryable: {
33798
+ const: false,
33799
+ type: "boolean"
33800
+ },
33801
+ data: {
33802
+ additionalProperties: false,
33803
+ type: "object",
33804
+ properties: {}
33805
+ }
33806
+ }
33807
+ },
33629
33808
  {
33630
33809
  additionalProperties: false,
33631
33810
  type: "object",
@@ -33963,7 +34142,7 @@ var schemaComponents = {
33963
34142
  minimum: 1,
33964
34143
  maximum: 1e4,
33965
34144
  type: "integer",
33966
- description: "Maximum concurrent units this resource or offering can accept."
34145
+ description: "Legacy offering concurrency limit when above one and details.maxConcurrent is absent; one defers to resource capacity."
33967
34146
  },
33968
34147
  details: {
33969
34148
  type: "object",
@@ -64795,7 +64974,7 @@ var schemaComponents = {
64795
64974
  minimum: 1,
64796
64975
  maximum: 1e4,
64797
64976
  type: "integer",
64798
- description: "Maximum concurrent units this resource or offering can accept.",
64977
+ description: "Legacy concurrent-session limit above 1; details.maxConcurrent takes precedence. The historical default 1 delegates to resource capacity.",
64799
64978
  default: 1
64800
64979
  },
64801
64980
  details: {
@@ -65009,7 +65188,7 @@ var schemaComponents = {
65009
65188
  minimum: 1,
65010
65189
  maximum: 1e4,
65011
65190
  type: "integer",
65012
- description: "Maximum concurrent units this resource or offering can accept."
65191
+ description: "Legacy concurrent-session limit above 1; details.maxConcurrent takes precedence. The historical default 1 delegates to resource capacity."
65013
65192
  },
65014
65193
  details: {
65015
65194
  type: "object",
@@ -65056,6 +65235,80 @@ var schemaComponents = {
65056
65235
  ],
65057
65236
  description: "Lifecycle state controlling whether this record remains available to its domain consumers."
65058
65237
  },
65238
+ resourceRequirements: {
65239
+ maxItems: 30,
65240
+ type: "array",
65241
+ items: {
65242
+ additionalProperties: false,
65243
+ type: "object",
65244
+ required: [
65245
+ "kind"
65246
+ ],
65247
+ properties: {
65248
+ alternatives: {
65249
+ maxItems: 100,
65250
+ type: "array",
65251
+ items: {
65252
+ description: "Stable srs-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
65253
+ pattern: "^srs_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
65254
+ type: "string"
65255
+ },
65256
+ default: [],
65257
+ description: "Explicit resource alternatives for this requirement; an empty list allows any resource of the required kind."
65258
+ },
65259
+ kind: {
65260
+ anyOf: [
65261
+ {
65262
+ const: "practitioner",
65263
+ type: "string"
65264
+ },
65265
+ {
65266
+ const: "assistant",
65267
+ type: "string"
65268
+ },
65269
+ {
65270
+ const: "room",
65271
+ type: "string"
65272
+ },
65273
+ {
65274
+ const: "chair",
65275
+ type: "string"
65276
+ },
65277
+ {
65278
+ const: "equipment",
65279
+ type: "string"
65280
+ },
65281
+ {
65282
+ const: "location",
65283
+ type: "string"
65284
+ },
65285
+ {
65286
+ const: "team",
65287
+ type: "string"
65288
+ },
65289
+ {
65290
+ const: "generic",
65291
+ type: "string"
65292
+ }
65293
+ ],
65294
+ description: "Declared domain kind of this record or configuration element."
65295
+ },
65296
+ quantity: {
65297
+ minimum: 1,
65298
+ maximum: 100,
65299
+ type: "integer",
65300
+ default: 1,
65301
+ description: "Number of resources of this kind required by one booking."
65302
+ },
65303
+ required: {
65304
+ type: "boolean",
65305
+ default: true,
65306
+ description: "Whether this resource requirement must be satisfied for the booking to proceed."
65307
+ }
65308
+ }
65309
+ },
65310
+ description: "Complete replacement for future bookings. Existing appointment and hold allocations stay unchanged."
65311
+ },
65059
65312
  expectedVersion: {
65060
65313
  exclusiveMinimum: 0,
65061
65314
  description: "Version last read by the caller. The mutation fails if another writer has changed this record.",
@@ -65917,6 +66170,27 @@ var schemaComponents = {
65917
66170
  }
65918
66171
  }
65919
66172
  },
66173
+ AgendaWaitlistListInput: {
66174
+ additionalProperties: false,
66175
+ type: "object",
66176
+ properties: {
66177
+ offeringId: {
66178
+ description: "Only entries recorded for this exact offering, which only entries from before services and agendas were chosen separately have; newer entries carry serviceId and resourceId instead.",
66179
+ pattern: "^off_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
66180
+ type: "string"
66181
+ },
66182
+ resourceId: {
66183
+ description: "Only entries that asked for this professional or agenda; entries open to any agenda (resourceId null) are left out.",
66184
+ pattern: "^srs_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
66185
+ type: "string"
66186
+ },
66187
+ serviceId: {
66188
+ description: "Only entries for this service, whichever agenda they asked for.",
66189
+ pattern: "^svc_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
66190
+ type: "string"
66191
+ }
66192
+ }
66193
+ },
65920
66194
  AgendaWaitlistJoinInput: {
65921
66195
  additionalProperties: false,
65922
66196
  type: "object",
@@ -65937,8 +66211,7 @@ var schemaComponents = {
65937
66211
  {
65938
66212
  type: "null"
65939
66213
  }
65940
- ],
65941
- default: null
66214
+ ]
65942
66215
  },
65943
66216
  conversationUrl: {
65944
66217
  anyOf: [
@@ -65951,7 +66224,6 @@ var schemaComponents = {
65951
66224
  type: "null"
65952
66225
  }
65953
66226
  ],
65954
- default: null,
65955
66227
  description: "Agent conversation URL retained so the scheduling team can reopen the referring conversation."
65956
66228
  },
65957
66229
  note: {
@@ -65963,7 +66235,6 @@ var schemaComponents = {
65963
66235
  type: "null"
65964
66236
  }
65965
66237
  ],
65966
- default: null,
65967
66238
  description: "Desk note attached to the waiting-list entry; null means no note is recorded."
65968
66239
  },
65969
66240
  patient: {
@@ -65979,8 +66250,7 @@ var schemaComponents = {
65979
66250
  {
65980
66251
  type: "null"
65981
66252
  }
65982
- ],
65983
- default: null
66253
+ ]
65984
66254
  },
65985
66255
  phone: {
65986
66256
  anyOf: [
@@ -65991,8 +66261,53 @@ var schemaComponents = {
65991
66261
  type: "null"
65992
66262
  }
65993
66263
  ],
65994
- default: null,
65995
- description: "Patient contact telephone number; null when no number was recorded."
66264
+ description: "The contact phone supplied or confirmed by the person for this request. Replaces their stored contact phone; omitted or null preserves it."
66265
+ },
66266
+ preferences: {
66267
+ additionalProperties: false,
66268
+ type: "object",
66269
+ required: [],
66270
+ properties: {
66271
+ from: {
66272
+ description: "From this local date (YYYY-MM-DD).",
66273
+ anyOf: [
66274
+ {
66275
+ format: "date",
66276
+ type: "string"
66277
+ },
66278
+ {
66279
+ type: "null"
66280
+ }
66281
+ ],
66282
+ default: null
66283
+ },
66284
+ times: {
66285
+ description: '"Martes y jueves en la mañana".',
66286
+ anyOf: [
66287
+ {
66288
+ type: "string"
66289
+ },
66290
+ {
66291
+ type: "null"
66292
+ }
66293
+ ],
66294
+ default: null
66295
+ },
66296
+ to: {
66297
+ description: "Until this local date (YYYY-MM-DD).",
66298
+ anyOf: [
66299
+ {
66300
+ format: "date",
66301
+ type: "string"
66302
+ },
66303
+ {
66304
+ type: "null"
66305
+ }
66306
+ ],
66307
+ default: null
66308
+ }
66309
+ },
66310
+ description: "Patient availability preferences retained with the waiting-list entry."
65996
66311
  },
65997
66312
  reason: {
65998
66313
  anyOf: [
@@ -66022,8 +66337,7 @@ var schemaComponents = {
66022
66337
  {
66023
66338
  type: "null"
66024
66339
  }
66025
- ],
66026
- default: null
66340
+ ]
66027
66341
  },
66028
66342
  serviceId: {
66029
66343
  description: "Service identifier within the authenticated organization.",
@@ -76462,9 +76776,9 @@ var schemaComponents = {
76462
76776
  // src/generated/generation.json
76463
76777
  var generation_default = {
76464
76778
  formatVersion: 6,
76465
- release: "1.20261028.154640",
76466
- openapiSha256: "ad5390014f03435778f78ed96f225be573562243387a8a6ba154ed948dca09df",
76467
- openapiContentSha256: "472217811eecc0bec1e867938c2520765a603f3c97917a2523904bb68e072998",
76779
+ release: "1.20261028.202015",
76780
+ openapiSha256: "513a2324aeeace2d574f76d49eb9d3dbfc8113a97849ff8e418e7d17a8d2bfba",
76781
+ openapiContentSha256: "268d85ea2cea9f6a0cc5de011c11912128724fb1e1a101e2b12cb628a5e2c13d",
76468
76782
  forge: {
76469
76783
  repository: "https://github.com/cloudflare/forge",
76470
76784
  commit: "7f86447210b7bea3779bfdab3cd5655eade0eadb",
@@ -76477,7 +76791,7 @@ var generation_default = {
76477
76791
  outputs: [
76478
76792
  {
76479
76793
  path: "src/generated/commands.ts",
76480
- sha256: "2ea1b193fbf3c63d0cc2d0de630415c489f0b14a73a6343d3da4886132d253e6"
76794
+ sha256: "f773acce3f565ee909c2c58b6238fb1ca080710f919a48b9ff97fe62cb789c61"
76481
76795
  }
76482
76796
  ]
76483
76797
  };
@@ -76832,7 +77146,7 @@ ${name}`);
76832
77146
  }
76833
77147
 
76834
77148
  // src/index.ts
76835
- var VERSION = "2.13.0";
77149
+ var VERSION = "2.14.0";
76836
77150
  var RELEASE = generation_default.release;
76837
77151
  var SDK_PATHS = new Map(Object.values(commands).map((command) => [command.operation, command.sdkPath]));
76838
77152
  var SERVICES = [...new Set(Object.keys(commands).map((name) => name.split(" ")[0]))].toSorted();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arbol-ai/cli",
3
- "version": "2.13.0",
3
+ "version": "2.14.0",
4
4
  "description": "The Arbol CLI: the Arbol API from your terminal, with commands generated by Cloudflare Forge from the public OpenAPI.",
5
5
  "keywords": [
6
6
  "arbol",
@@ -41,10 +41,11 @@
41
41
  "typecheck": "tsc --noEmit",
42
42
  "test": "bun test tests",
43
43
  "build": "bun scripts/build.ts",
44
- "verify": "bun run typecheck && bun run test && bun run build"
44
+ "verify": "bun run typecheck && bun run build",
45
+ "verify:with-tests": "bun run typecheck && bun run test && bun run build"
45
46
  },
46
47
  "dependencies": {
47
- "@arbol-ai/sdk": "2.14.0",
48
+ "@arbol-ai/sdk": "2.15.0",
48
49
  "ajv": "8.20.0",
49
50
  "ajv-formats": "3.0.1",
50
51
  "oauth4webapi": "3.8.8"
@@ -59,8 +60,8 @@
59
60
  "packageManager": "bun@1.4.3",
60
61
  "arbol": {
61
62
  "openapi": {
62
- "release": "1.20261028.154640",
63
- "sha256": "472217811eecc0bec1e867938c2520765a603f3c97917a2523904bb68e072998"
63
+ "release": "1.20261028.202015",
64
+ "sha256": "268d85ea2cea9f6a0cc5de011c11912128724fb1e1a101e2b12cb628a5e2c13d"
64
65
  }
65
66
  }
66
67
  }