@epilot/cli 0.1.215 → 0.1.217

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 (77) hide show
  1. package/README.md +1 -1
  2. package/definitions/app.json +82 -1
  3. package/definitions/environments.json +42 -2
  4. package/definitions/external-values.json +34 -4
  5. package/dist/{access-token-DX7MHLCM.js → access-token-3M2UX4T6.js} +2 -2
  6. package/dist/{add-component-CPOHR77O.js → add-component-OPHPQVKJ.js} +2 -2
  7. package/dist/{add-function-T25YLXXU.js → add-function-5CYOHZ7P.js} +2 -2
  8. package/dist/{address-LODQVOZK.js → address-J4KS6BOG.js} +2 -2
  9. package/dist/{address-suggestions-WN62MEFC.js → address-suggestions-QWVT62EJ.js} +2 -2
  10. package/dist/{ai-agents-4TRCWNFW.js → ai-agents-HF4YITS3.js} +2 -2
  11. package/dist/{api-L2UDZ5E3.js → api-X5RFKKY2.js} +2 -2
  12. package/dist/app-ZGZWK7T7.js +26 -0
  13. package/dist/{audit-logs-VSNPRUYK.js → audit-logs-3HPYMEC5.js} +2 -2
  14. package/dist/{automation-WWNOHTKD.js → automation-B5LPDDHE.js} +2 -2
  15. package/dist/{billing-V7O5ZKBE.js → billing-65PESTXT.js} +2 -2
  16. package/dist/bin/epilot.js +58 -58
  17. package/dist/{blueprint-manifest-6MNANRKN.js → blueprint-manifest-DAZKXY6Y.js} +2 -2
  18. package/dist/{calendar-2X6AMNIB.js → calendar-KKMDDYL2.js} +2 -2
  19. package/dist/{chat-ZZDDBZDP.js → chat-CJGKHP3Z.js} +2 -2
  20. package/dist/{chunk-CU24J4YW.js → chunk-5L5T6X6K.js} +1 -1
  21. package/dist/{chunk-7Z24MXXQ.js → chunk-FQEFNWP5.js} +1 -1
  22. package/dist/{chunk-S652YHV4.js → chunk-PSPOGWKK.js} +1 -1
  23. package/dist/{configuration-hub-VZMPEFIM.js → configuration-hub-ECWKJBGK.js} +2 -2
  24. package/dist/{consent-HIKK37A7.js → consent-UQUUE7J6.js} +2 -2
  25. package/dist/{customer-portal-IVAH2ABS.js → customer-portal-NX5UJKEV.js} +2 -2
  26. package/dist/{dashboard-SM3QOIWB.js → dashboard-RSLWJKGP.js} +2 -2
  27. package/dist/{data-governance-THSDZKGP.js → data-governance-FHKBA3BN.js} +2 -2
  28. package/dist/{deduplication-IG3GVVY5.js → deduplication-CC3WHXZY.js} +2 -2
  29. package/dist/{deploy-QWRI5EQW.js → deploy-XZGEQ6GR.js} +2 -2
  30. package/dist/{design-IW3RCLLK.js → design-NUR555F3.js} +2 -2
  31. package/dist/{dev-C3Y2WXLA.js → dev-24VLQZQ4.js} +2 -2
  32. package/dist/{document-RLVNHVZY.js → document-MIEHS4ZA.js} +2 -2
  33. package/dist/{email-settings-DOKMJEMN.js → email-settings-VOAWAJVR.js} +2 -2
  34. package/dist/{email-template-LS4K2IU7.js → email-template-PDWVABPF.js} +2 -2
  35. package/dist/{entity-4J2LLIC2.js → entity-Q5XRPXK3.js} +2 -2
  36. package/dist/{entity-mapping-77BJLQ3K.js → entity-mapping-XTP5EZKN.js} +2 -2
  37. package/dist/{environments-A3F6PRZG.js → environments-KOSJ2RJN.js} +2 -2
  38. package/dist/{event-catalog-EOFRRU57.js → event-catalog-UB6V5VFA.js} +2 -2
  39. package/dist/{export-5ZVVNKOI.js → export-LU2GYUH5.js} +2 -2
  40. package/dist/{external-values-ZONFYOAT.js → external-values-QTRGFXHM.js} +2 -2
  41. package/dist/{file-TMPPYQVJ.js → file-NIQI7POE.js} +2 -2
  42. package/dist/{iban-4TZXKM6G.js → iban-LHWCBAQ7.js} +2 -2
  43. package/dist/{identity-ZOGR5KTJ.js → identity-A2YGE6NU.js} +2 -2
  44. package/dist/{init-2A7VYGFB.js → init-SXCLEVSU.js} +2 -2
  45. package/dist/{integration-toolkit-MRJY35JM.js → integration-toolkit-2G7IAM6J.js} +2 -2
  46. package/dist/{journey-JTNPNUW7.js → journey-44RFHMEI.js} +2 -2
  47. package/dist/{kanban-EHMXYY6X.js → kanban-YQNWUEP5.js} +2 -2
  48. package/dist/{message-3CFMC2EQ.js → message-765PKUPP.js} +2 -2
  49. package/dist/{metering-IOFRPLRJ.js → metering-X4X4IB2N.js} +2 -2
  50. package/dist/{notes-4LNI2DSG.js → notes-S2RGS5GS.js} +2 -2
  51. package/dist/{notification-FAAMD4BP.js → notification-7OC2VNY4.js} +2 -2
  52. package/dist/{organization-D2TYO6EM.js → organization-E3LUMPDA.js} +2 -2
  53. package/dist/{partner-directory-QAHJQDJU.js → partner-directory-E46TTPOH.js} +2 -2
  54. package/dist/{permissions-CCVTLQYX.js → permissions-E3UUYQ7Y.js} +2 -2
  55. package/dist/{phone-integration-5OFREWPD.js → phone-integration-HNX6JZJI.js} +2 -2
  56. package/dist/{pricing-2PD6CYCR.js → pricing-7E2AGIBW.js} +2 -2
  57. package/dist/{pricing-tier-KJIAOKFK.js → pricing-tier-3WCRO2JD.js} +2 -2
  58. package/dist/{purpose-Q3XELOO2.js → purpose-YHKYRAEX.js} +2 -2
  59. package/dist/{query-QPDNT432.js → query-5BSWYUX5.js} +2 -2
  60. package/dist/{remove-component-2H7KC4T2.js → remove-component-OEIF3NPI.js} +2 -2
  61. package/dist/{review-4K6FIYT5.js → review-25ONTL5I.js} +2 -2
  62. package/dist/{sandbox-UY6XVHTG.js → sandbox-YMP32UAJ.js} +2 -2
  63. package/dist/{sharing-PDYZQ5LG.js → sharing-JDHABGOF.js} +2 -2
  64. package/dist/{snapshot-3ZTZ4F3B.js → snapshot-777DZOU7.js} +2 -2
  65. package/dist/{submission-YM44KTLV.js → submission-4OOXHJQU.js} +2 -2
  66. package/dist/{targeting-2K7PX2AU.js → targeting-ZN3TTNBW.js} +2 -2
  67. package/dist/{template-variables-WGI6FPJY.js → template-variables-QKRWZ73M.js} +2 -2
  68. package/dist/{upgrade-D6PXOSEU.js → upgrade-HV4QFQDL.js} +1 -1
  69. package/dist/{user-4YUMBUJW.js → user-ZEYIH72Y.js} +2 -2
  70. package/dist/{validate-FEJDHSDW.js → validate-U32MNCLO.js} +2 -2
  71. package/dist/{validation-rules-OVDJFOYW.js → validation-rules-BLNNCBAS.js} +2 -2
  72. package/dist/{versions-K27O4Y5V.js → versions-REG3C7BJ.js} +2 -2
  73. package/dist/{webhooks-2M3TTBOA.js → webhooks-55M66HQZ.js} +2 -2
  74. package/dist/{workflow-75R7ZWNB.js → workflow-QBBYQCHF.js} +2 -2
  75. package/dist/{workflow-definition-CC3E5NTD.js → workflow-definition-D3BXTZK4.js} +2 -2
  76. package/package.json +1 -1
  77. package/dist/app-3TUST5YY.js +0 -26
package/README.md CHANGED
@@ -29,7 +29,7 @@ npm install -g @epilot/cli
29
29
 
30
30
  <!-- usage-help -->
31
31
  ```
32
- epilot v0.1.215 — CLI for epilot APIs
32
+ epilot v0.1.217 — CLI for epilot APIs
33
33
 
34
34
  USAGE
35
35
  epilot <api> <operationId> [params...] [flags]
@@ -5325,7 +5325,7 @@
5325
5325
  },
5326
5326
  "ExternalValuesHook": {
5327
5327
  "type": "object",
5328
- "description": "One external call that returns one or more typed results. Interpolated templates (Liquid) have access to `Context`, `Consumer`, `Options`, `Env` and — for `result` templates — `Response` and `AuthResponse` (each is also available snake_case, e.g. `{{ context.input }}`).\n\n`Context` is the single name → value map the consumer supplies. The names in it are up to the consumer — by convention the journey runtime passes the validated value of a validation rule as `context.input` and every configured context binding under its own configured name.\n",
5328
+ "description": "One external call that returns one or more typed results. Interpolated templates (Liquid) have access to `Context`, `Consumer`, `Options`, `Env` and — for `result` templates — `Response` and `AuthResponse` (each is also available snake_case, e.g. `{{ context.contract }}`).\n\n`Context` is the name → value map the consumer supplies, one entry per context requirement it bound: `Context.<schema>` for an `entity` requirement, `Context.<name>` for a `value` requirement. Declare what a hook reads from `Context` in `contexts` so consumers can require it.\n",
5329
5329
  "required": [
5330
5330
  "id",
5331
5331
  "name",
@@ -5433,6 +5433,13 @@
5433
5433
  "default": "skip",
5434
5434
  "description": "Behaviour when the external system is unavailable (timeout, network or upstream error). `skip`: consumers ignore conditions depending on this hook. `block`: consumers treat the dependent action as not allowed."
5435
5435
  },
5436
+ "contexts": {
5437
+ "type": "array",
5438
+ "description": "The requirements the hook reads from `Context` (at most 10). An `entity` requirement means the consumer supplies the bound entities of that schema under `Context.<schema>` (e.g. `{{ Context.contract[0].external_id }}` needs `{ type: entity, schema: contract }`). A `value` requirement means the consumer supplies one scalar value under `Context.<name>` (e.g. `{{ Context.reading_date }}` needs `{ type: value, name: reading_date, value_type: date }`); value inputs are optional at runtime, so templates must cope with their absence. Entity schemas are unique, value names are unique, and a value name must not equal an entity schema of the same hook (both land in `Context`). More requirement types will be added later; consumers must ignore types they do not know.",
5439
+ "items": {
5440
+ "$ref": "#/components/schemas/ContextRequirement"
5441
+ }
5442
+ },
5436
5443
  "cache": {
5437
5444
  "type": "object",
5438
5445
  "description": "Response caching. Off when omitted.",
@@ -5457,6 +5464,80 @@
5457
5464
  }
5458
5465
  }
5459
5466
  },
5467
+ "ContextRequirement": {
5468
+ "description": "A requirement a hook reads from `Context`, discriminated by `type`. More types will be added later; consumers must ignore types they do not know.",
5469
+ "oneOf": [
5470
+ {
5471
+ "$ref": "#/components/schemas/EntityContextRequirement"
5472
+ },
5473
+ {
5474
+ "$ref": "#/components/schemas/ValueContextRequirement"
5475
+ }
5476
+ ],
5477
+ "discriminator": {
5478
+ "propertyName": "type",
5479
+ "mapping": {
5480
+ "entity": "#/components/schemas/EntityContextRequirement",
5481
+ "value": "#/components/schemas/ValueContextRequirement"
5482
+ }
5483
+ }
5484
+ },
5485
+ "EntityContextRequirement": {
5486
+ "type": "object",
5487
+ "description": "The consumer supplies the bound entities of `schema` under `Context.<schema>`.",
5488
+ "required": [
5489
+ "type",
5490
+ "schema"
5491
+ ],
5492
+ "properties": {
5493
+ "type": {
5494
+ "type": "string",
5495
+ "enum": [
5496
+ "entity"
5497
+ ]
5498
+ },
5499
+ "schema": {
5500
+ "type": "string",
5501
+ "pattern": "^[a-z0-9_-]{1,100}$",
5502
+ "description": "Entity schema slug, e.g. `contract`.",
5503
+ "example": "contract"
5504
+ }
5505
+ }
5506
+ },
5507
+ "ValueContextRequirement": {
5508
+ "type": "object",
5509
+ "description": "The consumer supplies one scalar value under `Context.<name>`, e.g. a date the customer entered in a journey block. A value input is optional: the consumer sends it when it has a value and omits it otherwise, so the hook's templates must cope with its absence, e.g. `{{ Context.reading_date | default: \"now\" | date: \"%Y-%m-%d\" }}`. `date` values are ISO 8601 strings (`YYYY-MM-DD` or a date-time).",
5510
+ "required": [
5511
+ "type",
5512
+ "name",
5513
+ "value_type"
5514
+ ],
5515
+ "properties": {
5516
+ "type": {
5517
+ "type": "string",
5518
+ "enum": [
5519
+ "value"
5520
+ ]
5521
+ },
5522
+ "name": {
5523
+ "type": "string",
5524
+ "pattern": "^[a-z][a-z0-9_]{0,63}$",
5525
+ "description": "Key under which the value is sent (`Context.<name>`). Same pattern as validation rule parameter names. Unique among the hook's `value` requirements and must not equal the `schema` of an `entity` requirement of the same hook.",
5526
+ "example": "reading_date"
5527
+ },
5528
+ "value_type": {
5529
+ "type": "string",
5530
+ "enum": [
5531
+ "number",
5532
+ "text",
5533
+ "date",
5534
+ "boolean"
5535
+ ],
5536
+ "description": "Type of the value: `number` and `boolean` are sent as JSON numbers and booleans, `text` as a string, `date` as an ISO 8601 string (`YYYY-MM-DD` or a date-time).",
5537
+ "example": "date"
5538
+ }
5539
+ }
5540
+ },
5460
5541
  "ExternalValuesResult": {
5461
5542
  "type": "object",
5462
5543
  "description": "A single typed value extracted from the hook response. Exactly one of `template`, `path` or `jsonata` must be set.\n",
@@ -20,6 +20,11 @@
20
20
  "/v1/environments": {
21
21
  "get": {
22
22
  "operationId": "listEnvironmentVariables",
23
+ "x-epilot-permissions": [
24
+ {
25
+ "action": "environments:edit"
26
+ }
27
+ ],
23
28
  "summary": "listEnvironmentVariables",
24
29
  "description": "List all environment variables for the organization. Returns metadata only, no secret values.",
25
30
  "tags": [
@@ -49,6 +54,11 @@
49
54
  },
50
55
  "post": {
51
56
  "operationId": "createEnvironmentVariable",
57
+ "x-epilot-permissions": [
58
+ {
59
+ "action": "environments:edit"
60
+ }
61
+ ],
52
62
  "summary": "createEnvironmentVariable",
53
63
  "description": "Create a new environment variable or secret for the organization. If `group` is provided and the group does not yet exist, it is created automatically.",
54
64
  "tags": [
@@ -96,6 +106,11 @@
96
106
  "/v1/environments/groups": {
97
107
  "get": {
98
108
  "operationId": "listEnvironmentGroups",
109
+ "x-epilot-permissions": [
110
+ {
111
+ "action": "environments:edit"
112
+ }
113
+ ],
99
114
  "summary": "listEnvironmentGroups",
100
115
  "description": "List all environment groups for the organization.",
101
116
  "tags": [
@@ -137,6 +152,11 @@
137
152
  ],
138
153
  "put": {
139
154
  "operationId": "putEnvironmentGroup",
155
+ "x-epilot-permissions": [
156
+ {
157
+ "action": "environments:edit"
158
+ }
159
+ ],
140
160
  "summary": "putEnvironmentGroup",
141
161
  "description": "Create or update an environment group by name. Acts as an upsert — creates the group if it does not exist.",
142
162
  "tags": [
@@ -186,6 +206,11 @@
186
206
  },
187
207
  "delete": {
188
208
  "operationId": "deleteEnvironmentGroup",
209
+ "x-epilot-permissions": [
210
+ {
211
+ "action": "environments:delete"
212
+ }
213
+ ],
189
214
  "summary": "deleteEnvironmentGroup",
190
215
  "description": "Deletes a group. Variables assigned to this group become ungrouped.",
191
216
  "tags": [
@@ -225,6 +250,11 @@
225
250
  ],
226
251
  "get": {
227
252
  "operationId": "getEnvironmentVariable",
253
+ "x-epilot-permissions": [
254
+ {
255
+ "action": "environments:edit"
256
+ }
257
+ ],
228
258
  "summary": "getEnvironmentVariable",
229
259
  "description": "Get an environment variable by key. Returns value for non-secret types, omitted for SecretString.",
230
260
  "tags": [
@@ -257,6 +287,11 @@
257
287
  },
258
288
  "put": {
259
289
  "operationId": "updateEnvironmentVariable",
290
+ "x-epilot-permissions": [
291
+ {
292
+ "action": "environments:edit"
293
+ }
294
+ ],
260
295
  "summary": "updateEnvironmentVariable",
261
296
  "description": "Create or update an environment variable. Acts as an upsert — creates the variable if it does not exist. If `group` is provided and the group does not yet exist, it is created automatically.",
262
297
  "tags": [
@@ -312,6 +347,11 @@
312
347
  },
313
348
  "delete": {
314
349
  "operationId": "deleteEnvironmentVariable",
350
+ "x-epilot-permissions": [
351
+ {
352
+ "action": "environments:delete"
353
+ }
354
+ ],
315
355
  "summary": "deleteEnvironmentVariable",
316
356
  "description": "Delete an environment variable by key.",
317
357
  "tags": [
@@ -348,7 +388,7 @@
348
388
  "schemas": {
349
389
  "EnvironmentValueType": {
350
390
  "type": "string",
351
- "description": "The structure a variable's value holds. `SecretString` is encrypted at rest and\nits value is never returned. `Text`, `Number`, `Boolean`, `Map`, `JSON` and `Link`\nmay be served to browser-facing consumers; `String` and `SecretString` may not. A\n`List` inherits this from its element type: a `List` is served only when its\n`itemType` is itself client-safe, so a `List<String>` or `List<SecretString>` is not.\n",
391
+ "description": "The structure a variable's value holds. `SecretString` is encrypted at rest and\nits value is never returned. Every other type\nmay be served to browser-facing consumers. A `List` inherits this from its element\ntype: a `List<SecretString>` is never served.\n",
352
392
  "enum": [
353
393
  "String",
354
394
  "SecretString",
@@ -423,7 +463,7 @@
423
463
  "additionalProperties": true
424
464
  },
425
465
  "LinkValue": {
426
- "description": "One URL with a label and description a customer reads. `label` and\n`description` are each either a plain string or one string per language;\nthe two fields decide that independently — a plain string means \"the\nsame in every language\". A translated field must carry the fallback\nlanguage.\n\nThe URL must be absolute and `http`/`https` only. This value is served\nto browser-facing consumers, so `javascript:` and `data:` URLs are\nrejected at write time.\n\nWritten flat rather than composed from a shared field set: `allOf` plus\n`additionalProperties: false` is rejected by most validators, because\neach branch sees the sibling's properties as unknown. The composition\nlives in zod (LinkFieldsSchema) — see src/core/value-types.ts.\n\nEach translated value of `label` and `description` is also limited to\nthe same maximum as the plain-string form above — 255 characters for\n`label`, 1024 for `description`. The limit is enforced by the server\neven though the shared `StringTranslations` schema referenced below\ndoes not itself declare it.\n",
466
+ "description": "One URL with a label and description a customer reads. `label` and\n`description` are each either a plain string or one string per language;\nthe two fields decide that independently — a plain string means \"the\nsame in every language\". A translated field must carry the fallback\nlanguage.\n\nThe URL must be absolute and use `http`, `https`, `mailto` or `tel`.\n`mailto:` needs at least one address (`name@domain`) and may carry\n`?subject=…`; `tel:` needs a phone number (digits, an optional leading\n`+`, spaces, `-`, `.`, `(`, `)`) and may carry `;ext=…`. The checks are\ndeliberately light. This value is served to browser-facing consumers,\nso every other scheme — `javascript:` and `data:` included — is rejected\nat write time.\n\nWritten flat rather than composed from a shared field set: `allOf` plus\n`additionalProperties: false` is rejected by most validators, because\neach branch sees the sibling's properties as unknown. The composition\nlives in zod (LinkFieldsSchema) — see src/core/value-types.ts.\n\nEach translated value of `label` and `description` is also limited to\nthe same maximum as the plain-string form above — 255 characters for\n`label`, 1024 for `description`. The limit is enforced by the server\neven though the shared `StringTranslations` schema referenced below\ndoes not itself declare it.\n",
427
467
  "type": "object",
428
468
  "required": [
429
469
  "url",
@@ -241,7 +241,7 @@
241
241
  "properties": {
242
242
  "context": {
243
243
  "type": "object",
244
- "description": "Everything the consumer supplies for interpolation, as one name → value map.\nExposed to the hook's Liquid templates as `Context` / `context`, e.g.\n`{{ context.contract[0].external_id }}`.\n\nOne entry per context requirement the consumer bound (see\n`ExternalValueHookSummary.contexts`): for an `entity` requirement, the bound\nentities of that schema under its schema slug. This API gives no name special\ntreatment.\n",
244
+ "description": "Everything the consumer supplies for interpolation, as one name → value map.\nExposed to the hook's Liquid templates as `Context` / `context`, e.g.\n`{{ context.contract[0].external_id }}`.\n\nOne entry per context requirement the consumer bound (see\n`ExternalValueHookSummary.contexts`): for an `entity` requirement, the bound\nentities of that schema under its schema slug; for a `value` requirement, the\nbound scalar under its `name` (e.g. `\"reading_date\": \"2026-03-01\"`), omitted when\nthe consumer has no value. This API gives no name special treatment.\n",
245
245
  "additionalProperties": true
246
246
  },
247
247
  "consumer": {
@@ -428,7 +428,7 @@
428
428
  },
429
429
  "contexts": {
430
430
  "type": "array",
431
- "description": "What the hook needs the consumer to supply in `context`, as declared in the hook\nconfig. Omitted when the hook declares none. A rule builder must require these\ncontexts on any rule that uses the hook, so the caller passes them in `context`.\nMore requirement types will follow; consumers ignore types they do not know.\n",
431
+ "description": "What the hook needs the consumer to supply in `context`, as declared in the hook\nconfig. Omitted when the hook declares none. A rule builder must require these\ncontexts (and offer these value inputs) on any rule that uses the hook, so the\ncaller passes them in `context`. More requirement types may follow; consumers\nignore types they do not know.\n",
432
432
  "items": {
433
433
  "$ref": "#/components/schemas/ContextRequirement"
434
434
  }
@@ -436,16 +436,20 @@
436
436
  }
437
437
  },
438
438
  "ContextRequirement": {
439
- "description": "Something a hook needs the consumer to supply in `context`, discriminated by `type`.\nToday only `entity`; more types will follow. Consumers ignore types they do not know.\n",
439
+ "description": "Something a hook needs the consumer to supply in `context`, discriminated by `type`:\nbound entities (`entity`) or an optional scalar input (`value`). More types may follow;\nconsumers ignore types they do not know.\n",
440
440
  "oneOf": [
441
441
  {
442
442
  "$ref": "#/components/schemas/EntityContextRequirement"
443
+ },
444
+ {
445
+ "$ref": "#/components/schemas/ValueContextRequirement"
443
446
  }
444
447
  ],
445
448
  "discriminator": {
446
449
  "propertyName": "type",
447
450
  "mapping": {
448
- "entity": "#/components/schemas/EntityContextRequirement"
451
+ "entity": "#/components/schemas/EntityContextRequirement",
452
+ "value": "#/components/schemas/ValueContextRequirement"
449
453
  }
450
454
  }
451
455
  },
@@ -470,6 +474,32 @@
470
474
  }
471
475
  }
472
476
  },
477
+ "ValueContextRequirement": {
478
+ "type": "object",
479
+ "description": "An optional scalar input. When the consumer has a value it supplies it under\n`Context.<name>` (dates as ISO 8601 strings, `YYYY-MM-DD` or a date-time); otherwise the\nkey is absent, so the hook template must provide a fallback, e.g.\n`{{ Context.reading_date | default: \"now\" | date: \"%Y-%m-%d\" }}` declares\n`{ type: value, name: reading_date, value_type: date }`. `name` is unique among the hook's\n`value` requirements and never equals the `schema` of one of its `entity` requirements.\n",
480
+ "required": [
481
+ "type",
482
+ "name",
483
+ "value_type"
484
+ ],
485
+ "properties": {
486
+ "type": {
487
+ "type": "string",
488
+ "enum": [
489
+ "value"
490
+ ]
491
+ },
492
+ "name": {
493
+ "type": "string",
494
+ "pattern": "^[a-z][a-z0-9_]{0,63}$",
495
+ "description": "Key under `Context`, same pattern as validation rule parameter names.",
496
+ "example": "reading_date"
497
+ },
498
+ "value_type": {
499
+ "$ref": "#/components/schemas/ExternalValueType"
500
+ }
501
+ }
502
+ },
473
503
  "ExternalValueHookList": {
474
504
  "type": "object",
475
505
  "required": [
@@ -4,8 +4,8 @@ import {
4
4
  } from "./chunk-EY42RC57.js";
5
5
  import {
6
6
  callApi
7
- } from "./chunk-S652YHV4.js";
8
- import "./chunk-7Z24MXXQ.js";
7
+ } from "./chunk-PSPOGWKK.js";
8
+ import "./chunk-FQEFNWP5.js";
9
9
  import "./chunk-IOLKUHUB.js";
10
10
  import "./chunk-SQ55BTMV.js";
11
11
  import "./chunk-QPUCHKXS.js";
@@ -3,8 +3,8 @@ import {
3
3
  log,
4
4
  readManifest,
5
5
  writeManifest
6
- } from "./chunk-CU24J4YW.js";
7
- import "./chunk-7Z24MXXQ.js";
6
+ } from "./chunk-5L5T6X6K.js";
7
+ import "./chunk-FQEFNWP5.js";
8
8
  import "./chunk-SQ55BTMV.js";
9
9
  import "./chunk-QPUCHKXS.js";
10
10
  import "./chunk-7ZQ666ZQ.js";
@@ -4,8 +4,8 @@ import {
4
4
  readManifest,
5
5
  validateScheduleExpression,
6
6
  writeManifest
7
- } from "./chunk-CU24J4YW.js";
8
- import "./chunk-7Z24MXXQ.js";
7
+ } from "./chunk-5L5T6X6K.js";
8
+ import "./chunk-FQEFNWP5.js";
9
9
  import "./chunk-SQ55BTMV.js";
10
10
  import "./chunk-QPUCHKXS.js";
11
11
  import "./chunk-7ZQ666ZQ.js";
@@ -4,8 +4,8 @@ import {
4
4
  } from "./chunk-EY42RC57.js";
5
5
  import {
6
6
  callApi
7
- } from "./chunk-S652YHV4.js";
8
- import "./chunk-7Z24MXXQ.js";
7
+ } from "./chunk-PSPOGWKK.js";
8
+ import "./chunk-FQEFNWP5.js";
9
9
  import "./chunk-IOLKUHUB.js";
10
10
  import "./chunk-SQ55BTMV.js";
11
11
  import "./chunk-QPUCHKXS.js";
@@ -4,8 +4,8 @@ import {
4
4
  } from "./chunk-EY42RC57.js";
5
5
  import {
6
6
  callApi
7
- } from "./chunk-S652YHV4.js";
8
- import "./chunk-7Z24MXXQ.js";
7
+ } from "./chunk-PSPOGWKK.js";
8
+ import "./chunk-FQEFNWP5.js";
9
9
  import "./chunk-IOLKUHUB.js";
10
10
  import "./chunk-SQ55BTMV.js";
11
11
  import "./chunk-QPUCHKXS.js";
@@ -4,8 +4,8 @@ import {
4
4
  } from "./chunk-EY42RC57.js";
5
5
  import {
6
6
  callApi
7
- } from "./chunk-S652YHV4.js";
8
- import "./chunk-7Z24MXXQ.js";
7
+ } from "./chunk-PSPOGWKK.js";
8
+ import "./chunk-FQEFNWP5.js";
9
9
  import "./chunk-IOLKUHUB.js";
10
10
  import "./chunk-SQ55BTMV.js";
11
11
  import "./chunk-QPUCHKXS.js";
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  callApi
4
- } from "./chunk-S652YHV4.js";
5
- import "./chunk-7Z24MXXQ.js";
4
+ } from "./chunk-PSPOGWKK.js";
5
+ import "./chunk-FQEFNWP5.js";
6
6
  import "./chunk-IOLKUHUB.js";
7
7
  import "./chunk-SQ55BTMV.js";
8
8
  import "./chunk-QPUCHKXS.js";
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env node
2
+
3
+ // src/commands/app/index.ts
4
+ import { defineCommand } from "citty";
5
+ var app_default = defineCommand({
6
+ meta: {
7
+ name: "app",
8
+ description: "Manage epilot Apps \u2014 create, deploy, and manage app manifests"
9
+ },
10
+ subCommands: {
11
+ init: () => import("./init-SXCLEVSU.js").then((m) => m.default),
12
+ "add-component": () => import("./add-component-OPHPQVKJ.js").then((m) => m.default),
13
+ "remove-component": () => import("./remove-component-OEIF3NPI.js").then((m) => m.default),
14
+ "add-function": () => import("./add-function-5CYOHZ7P.js").then((m) => m.default),
15
+ validate: () => import("./validate-U32MNCLO.js").then((m) => m.default),
16
+ deploy: () => import("./deploy-XZGEQ6GR.js").then((m) => m.default),
17
+ dev: () => import("./dev-24VLQZQ4.js").then((m) => m.default),
18
+ export: () => import("./export-LU2GYUH5.js").then((m) => m.default),
19
+ versions: () => import("./versions-REG3C7BJ.js").then((m) => m.default),
20
+ review: () => import("./review-25ONTL5I.js").then((m) => m.default),
21
+ api: () => import("./api-X5RFKKY2.js").then((m) => m.default)
22
+ }
23
+ });
24
+ export {
25
+ app_default as default
26
+ };
@@ -4,8 +4,8 @@ import {
4
4
  } from "./chunk-EY42RC57.js";
5
5
  import {
6
6
  callApi
7
- } from "./chunk-S652YHV4.js";
8
- import "./chunk-7Z24MXXQ.js";
7
+ } from "./chunk-PSPOGWKK.js";
8
+ import "./chunk-FQEFNWP5.js";
9
9
  import "./chunk-IOLKUHUB.js";
10
10
  import "./chunk-SQ55BTMV.js";
11
11
  import "./chunk-QPUCHKXS.js";
@@ -4,8 +4,8 @@ import {
4
4
  } from "./chunk-EY42RC57.js";
5
5
  import {
6
6
  callApi
7
- } from "./chunk-S652YHV4.js";
8
- import "./chunk-7Z24MXXQ.js";
7
+ } from "./chunk-PSPOGWKK.js";
8
+ import "./chunk-FQEFNWP5.js";
9
9
  import "./chunk-IOLKUHUB.js";
10
10
  import "./chunk-SQ55BTMV.js";
11
11
  import "./chunk-QPUCHKXS.js";
@@ -4,8 +4,8 @@ import {
4
4
  } from "./chunk-EY42RC57.js";
5
5
  import {
6
6
  callApi
7
- } from "./chunk-S652YHV4.js";
8
- import "./chunk-7Z24MXXQ.js";
7
+ } from "./chunk-PSPOGWKK.js";
8
+ import "./chunk-FQEFNWP5.js";
9
9
  import "./chunk-IOLKUHUB.js";
10
10
  import "./chunk-SQ55BTMV.js";
11
11
  import "./chunk-QPUCHKXS.js";
@@ -11,7 +11,7 @@ import { defineCommand } from "citty";
11
11
  var main = defineCommand({
12
12
  meta: {
13
13
  name: "epilot",
14
- version: "0.1.215",
14
+ version: "0.1.217",
15
15
  description: "CLI for epilot APIs"
16
16
  },
17
17
  args: {
@@ -32,62 +32,62 @@ var main = defineCommand({
32
32
  profile: () => import("../profile-G2FH3DXR.js").then((m) => m.default),
33
33
  config: () => import("../config-PJWYWLQH.js").then((m) => m.default),
34
34
  completion: () => import("../completion-M33AEL4C.js").then((m) => m.default),
35
- upgrade: () => import("../upgrade-D6PXOSEU.js").then((m) => m.default),
36
- "access-token": () => import("../access-token-DX7MHLCM.js").then((m) => m.default),
37
- address: () => import("../address-LODQVOZK.js").then((m) => m.default),
38
- "address-suggestions": () => import("../address-suggestions-WN62MEFC.js").then((m) => m.default),
39
- "ai-agents": () => import("../ai-agents-4TRCWNFW.js").then((m) => m.default),
40
- app: () => import("../app-3TUST5YY.js").then((m) => m.default),
41
- "audit-logs": () => import("../audit-logs-VSNPRUYK.js").then((m) => m.default),
42
- automation: () => import("../automation-WWNOHTKD.js").then((m) => m.default),
43
- billing: () => import("../billing-V7O5ZKBE.js").then((m) => m.default),
44
- "blueprint-manifest": () => import("../blueprint-manifest-6MNANRKN.js").then((m) => m.default),
45
- calendar: () => import("../calendar-2X6AMNIB.js").then((m) => m.default),
46
- chat: () => import("../chat-ZZDDBZDP.js").then((m) => m.default),
47
- "configuration-hub": () => import("../configuration-hub-VZMPEFIM.js").then((m) => m.default),
48
- consent: () => import("../consent-HIKK37A7.js").then((m) => m.default),
49
- "customer-portal": () => import("../customer-portal-IVAH2ABS.js").then((m) => m.default),
50
- dashboard: () => import("../dashboard-SM3QOIWB.js").then((m) => m.default),
51
- "data-governance": () => import("../data-governance-THSDZKGP.js").then((m) => m.default),
52
- deduplication: () => import("../deduplication-IG3GVVY5.js").then((m) => m.default),
53
- design: () => import("../design-IW3RCLLK.js").then((m) => m.default),
54
- document: () => import("../document-RLVNHVZY.js").then((m) => m.default),
55
- "email-settings": () => import("../email-settings-DOKMJEMN.js").then((m) => m.default),
56
- "email-template": () => import("../email-template-LS4K2IU7.js").then((m) => m.default),
57
- entity: () => import("../entity-4J2LLIC2.js").then((m) => m.default),
58
- "entity-mapping": () => import("../entity-mapping-77BJLQ3K.js").then((m) => m.default),
59
- environments: () => import("../environments-A3F6PRZG.js").then((m) => m.default),
60
- "event-catalog": () => import("../event-catalog-EOFRRU57.js").then((m) => m.default),
61
- "external-values": () => import("../external-values-ZONFYOAT.js").then((m) => m.default),
62
- file: () => import("../file-TMPPYQVJ.js").then((m) => m.default),
63
- iban: () => import("../iban-4TZXKM6G.js").then((m) => m.default),
64
- identity: () => import("../identity-ZOGR5KTJ.js").then((m) => m.default),
65
- "integration-toolkit": () => import("../integration-toolkit-MRJY35JM.js").then((m) => m.default),
66
- journey: () => import("../journey-JTNPNUW7.js").then((m) => m.default),
67
- kanban: () => import("../kanban-EHMXYY6X.js").then((m) => m.default),
68
- message: () => import("../message-3CFMC2EQ.js").then((m) => m.default),
69
- metering: () => import("../metering-IOFRPLRJ.js").then((m) => m.default),
70
- notes: () => import("../notes-4LNI2DSG.js").then((m) => m.default),
71
- notification: () => import("../notification-FAAMD4BP.js").then((m) => m.default),
72
- organization: () => import("../organization-D2TYO6EM.js").then((m) => m.default),
73
- "partner-directory": () => import("../partner-directory-QAHJQDJU.js").then((m) => m.default),
74
- permissions: () => import("../permissions-CCVTLQYX.js").then((m) => m.default),
75
- "phone-integration": () => import("../phone-integration-5OFREWPD.js").then((m) => m.default),
76
- pricing: () => import("../pricing-2PD6CYCR.js").then((m) => m.default),
77
- "pricing-tier": () => import("../pricing-tier-KJIAOKFK.js").then((m) => m.default),
78
- purpose: () => import("../purpose-Q3XELOO2.js").then((m) => m.default),
79
- query: () => import("../query-QPDNT432.js").then((m) => m.default),
80
- sandbox: () => import("../sandbox-UY6XVHTG.js").then((m) => m.default),
81
- sharing: () => import("../sharing-PDYZQ5LG.js").then((m) => m.default),
82
- snapshot: () => import("../snapshot-3ZTZ4F3B.js").then((m) => m.default),
83
- submission: () => import("../submission-YM44KTLV.js").then((m) => m.default),
84
- targeting: () => import("../targeting-2K7PX2AU.js").then((m) => m.default),
85
- "template-variables": () => import("../template-variables-WGI6FPJY.js").then((m) => m.default),
86
- user: () => import("../user-4YUMBUJW.js").then((m) => m.default),
87
- "validation-rules": () => import("../validation-rules-OVDJFOYW.js").then((m) => m.default),
88
- webhooks: () => import("../webhooks-2M3TTBOA.js").then((m) => m.default),
89
- workflow: () => import("../workflow-75R7ZWNB.js").then((m) => m.default),
90
- "workflow-definition": () => import("../workflow-definition-CC3E5NTD.js").then((m) => m.default)
35
+ upgrade: () => import("../upgrade-HV4QFQDL.js").then((m) => m.default),
36
+ "access-token": () => import("../access-token-3M2UX4T6.js").then((m) => m.default),
37
+ address: () => import("../address-J4KS6BOG.js").then((m) => m.default),
38
+ "address-suggestions": () => import("../address-suggestions-QWVT62EJ.js").then((m) => m.default),
39
+ "ai-agents": () => import("../ai-agents-HF4YITS3.js").then((m) => m.default),
40
+ app: () => import("../app-ZGZWK7T7.js").then((m) => m.default),
41
+ "audit-logs": () => import("../audit-logs-3HPYMEC5.js").then((m) => m.default),
42
+ automation: () => import("../automation-B5LPDDHE.js").then((m) => m.default),
43
+ billing: () => import("../billing-65PESTXT.js").then((m) => m.default),
44
+ "blueprint-manifest": () => import("../blueprint-manifest-DAZKXY6Y.js").then((m) => m.default),
45
+ calendar: () => import("../calendar-KKMDDYL2.js").then((m) => m.default),
46
+ chat: () => import("../chat-CJGKHP3Z.js").then((m) => m.default),
47
+ "configuration-hub": () => import("../configuration-hub-ECWKJBGK.js").then((m) => m.default),
48
+ consent: () => import("../consent-UQUUE7J6.js").then((m) => m.default),
49
+ "customer-portal": () => import("../customer-portal-NX5UJKEV.js").then((m) => m.default),
50
+ dashboard: () => import("../dashboard-RSLWJKGP.js").then((m) => m.default),
51
+ "data-governance": () => import("../data-governance-FHKBA3BN.js").then((m) => m.default),
52
+ deduplication: () => import("../deduplication-CC3WHXZY.js").then((m) => m.default),
53
+ design: () => import("../design-NUR555F3.js").then((m) => m.default),
54
+ document: () => import("../document-MIEHS4ZA.js").then((m) => m.default),
55
+ "email-settings": () => import("../email-settings-VOAWAJVR.js").then((m) => m.default),
56
+ "email-template": () => import("../email-template-PDWVABPF.js").then((m) => m.default),
57
+ entity: () => import("../entity-Q5XRPXK3.js").then((m) => m.default),
58
+ "entity-mapping": () => import("../entity-mapping-XTP5EZKN.js").then((m) => m.default),
59
+ environments: () => import("../environments-KOSJ2RJN.js").then((m) => m.default),
60
+ "event-catalog": () => import("../event-catalog-UB6V5VFA.js").then((m) => m.default),
61
+ "external-values": () => import("../external-values-QTRGFXHM.js").then((m) => m.default),
62
+ file: () => import("../file-NIQI7POE.js").then((m) => m.default),
63
+ iban: () => import("../iban-LHWCBAQ7.js").then((m) => m.default),
64
+ identity: () => import("../identity-A2YGE6NU.js").then((m) => m.default),
65
+ "integration-toolkit": () => import("../integration-toolkit-2G7IAM6J.js").then((m) => m.default),
66
+ journey: () => import("../journey-44RFHMEI.js").then((m) => m.default),
67
+ kanban: () => import("../kanban-YQNWUEP5.js").then((m) => m.default),
68
+ message: () => import("../message-765PKUPP.js").then((m) => m.default),
69
+ metering: () => import("../metering-X4X4IB2N.js").then((m) => m.default),
70
+ notes: () => import("../notes-S2RGS5GS.js").then((m) => m.default),
71
+ notification: () => import("../notification-7OC2VNY4.js").then((m) => m.default),
72
+ organization: () => import("../organization-E3LUMPDA.js").then((m) => m.default),
73
+ "partner-directory": () => import("../partner-directory-E46TTPOH.js").then((m) => m.default),
74
+ permissions: () => import("../permissions-E3UUYQ7Y.js").then((m) => m.default),
75
+ "phone-integration": () => import("../phone-integration-HNX6JZJI.js").then((m) => m.default),
76
+ pricing: () => import("../pricing-7E2AGIBW.js").then((m) => m.default),
77
+ "pricing-tier": () => import("../pricing-tier-3WCRO2JD.js").then((m) => m.default),
78
+ purpose: () => import("../purpose-YHKYRAEX.js").then((m) => m.default),
79
+ query: () => import("../query-5BSWYUX5.js").then((m) => m.default),
80
+ sandbox: () => import("../sandbox-YMP32UAJ.js").then((m) => m.default),
81
+ sharing: () => import("../sharing-JDHABGOF.js").then((m) => m.default),
82
+ snapshot: () => import("../snapshot-777DZOU7.js").then((m) => m.default),
83
+ submission: () => import("../submission-4OOXHJQU.js").then((m) => m.default),
84
+ targeting: () => import("../targeting-ZN3TTNBW.js").then((m) => m.default),
85
+ "template-variables": () => import("../template-variables-QKRWZ73M.js").then((m) => m.default),
86
+ user: () => import("../user-ZEYIH72Y.js").then((m) => m.default),
87
+ "validation-rules": () => import("../validation-rules-BLNNCBAS.js").then((m) => m.default),
88
+ webhooks: () => import("../webhooks-55M66HQZ.js").then((m) => m.default),
89
+ workflow: () => import("../workflow-QBBYQCHF.js").then((m) => m.default),
90
+ "workflow-definition": () => import("../workflow-definition-D3BXTZK4.js").then((m) => m.default)
91
91
  }
92
92
  });
93
93
 
@@ -142,7 +142,7 @@ process.stderr.on("error", (err) => {
142
142
  if (err.code === "EPIPE") process.exit(0);
143
143
  throw err;
144
144
  });
145
- var VERSION = true ? "0.1.215" : (await null).default.version;
145
+ var VERSION = true ? "0.1.217" : (await null).default.version;
146
146
  var reorderedArgv = hoistFlagsAfterSubcommand(process.argv.slice(2));
147
147
  process.argv = [process.argv[0], process.argv[1], ...reorderedArgv];
148
148
  var args = process.argv.slice(2);
@@ -4,8 +4,8 @@ import {
4
4
  } from "./chunk-EY42RC57.js";
5
5
  import {
6
6
  callApi
7
- } from "./chunk-S652YHV4.js";
8
- import "./chunk-7Z24MXXQ.js";
7
+ } from "./chunk-PSPOGWKK.js";
8
+ import "./chunk-FQEFNWP5.js";
9
9
  import "./chunk-IOLKUHUB.js";
10
10
  import "./chunk-SQ55BTMV.js";
11
11
  import "./chunk-QPUCHKXS.js";
@@ -4,8 +4,8 @@ import {
4
4
  } from "./chunk-EY42RC57.js";
5
5
  import {
6
6
  callApi
7
- } from "./chunk-S652YHV4.js";
8
- import "./chunk-7Z24MXXQ.js";
7
+ } from "./chunk-PSPOGWKK.js";
8
+ import "./chunk-FQEFNWP5.js";
9
9
  import "./chunk-IOLKUHUB.js";
10
10
  import "./chunk-SQ55BTMV.js";
11
11
  import "./chunk-QPUCHKXS.js";
@@ -4,8 +4,8 @@ import {
4
4
  } from "./chunk-EY42RC57.js";
5
5
  import {
6
6
  callApi
7
- } from "./chunk-S652YHV4.js";
8
- import "./chunk-7Z24MXXQ.js";
7
+ } from "./chunk-PSPOGWKK.js";
8
+ import "./chunk-FQEFNWP5.js";
9
9
  import "./chunk-IOLKUHUB.js";
10
10
  import "./chunk-SQ55BTMV.js";
11
11
  import "./chunk-QPUCHKXS.js";