@epilot/cli 0.1.197 → 0.1.198

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 (75) hide show
  1. package/README.md +1 -1
  2. package/definitions/integration-toolkit.json +133 -16
  3. package/dist/{access-token-ET64ZIBR.js → access-token-6M73U65X.js} +2 -2
  4. package/dist/{add-component-XCRR2EH2.js → add-component-Y4QT4T7A.js} +2 -2
  5. package/dist/{add-function-LLCJZBLC.js → add-function-LCYMPAFP.js} +2 -2
  6. package/dist/{address-33JGSOJK.js → address-RRFWS66E.js} +2 -2
  7. package/dist/{address-suggestions-OB77BAO5.js → address-suggestions-IUFHAOF3.js} +2 -2
  8. package/dist/{ai-agents-TZSCY2IE.js → ai-agents-FOHPTQYY.js} +2 -2
  9. package/dist/{api-6XLKIJUY.js → api-EVTACZQZ.js} +2 -2
  10. package/dist/app-KXOWP7PW.js +26 -0
  11. package/dist/{audit-logs-2IBHNBOG.js → audit-logs-3J4N6UYR.js} +2 -2
  12. package/dist/{automation-P4V236HL.js → automation-7Y76HTRK.js} +2 -2
  13. package/dist/{billing-WNFOX4EV.js → billing-YY2TSJTU.js} +2 -2
  14. package/dist/bin/epilot.js +58 -58
  15. package/dist/{blueprint-manifest-RZNDT6XZ.js → blueprint-manifest-CMKSIHJ4.js} +2 -2
  16. package/dist/{calendar-EJ2D3CPO.js → calendar-MZ4LZ3CN.js} +2 -2
  17. package/dist/{chat-D26TZ6SS.js → chat-GUVIMPCI.js} +2 -2
  18. package/dist/{chunk-LF5BQEWG.js → chunk-2HWJT4DW.js} +1 -1
  19. package/dist/{chunk-NUYQ3HT6.js → chunk-HTDQ45IO.js} +1 -1
  20. package/dist/{chunk-CPWEMM6W.js → chunk-NIWZ5U7G.js} +1 -1
  21. package/dist/{configuration-hub-FVKV5QLE.js → configuration-hub-BM35YSCV.js} +2 -2
  22. package/dist/{consent-5KOTE3UN.js → consent-AYZ5FUL7.js} +2 -2
  23. package/dist/{customer-portal-U6AMKO6N.js → customer-portal-JJK5332Z.js} +2 -2
  24. package/dist/{dashboard-Q6GWRAKJ.js → dashboard-G3GN6IOU.js} +2 -2
  25. package/dist/{data-governance-Q7KQXGQL.js → data-governance-BZITK3ZN.js} +2 -2
  26. package/dist/{deduplication-ANGISOJG.js → deduplication-E22YOLQE.js} +2 -2
  27. package/dist/{deploy-YP2VKNTX.js → deploy-QHJ4C2F2.js} +2 -2
  28. package/dist/{design-M4IL5A3L.js → design-XTEAXLGB.js} +2 -2
  29. package/dist/{dev-DAFXJL7Y.js → dev-3XIOTHNS.js} +2 -2
  30. package/dist/{document-C6CQX5E6.js → document-MO4ZXSYJ.js} +2 -2
  31. package/dist/{email-settings-LXDYFY46.js → email-settings-W3VTKFBS.js} +2 -2
  32. package/dist/{email-template-A5KJY75P.js → email-template-APFUMUYX.js} +2 -2
  33. package/dist/{entity-T3MFRMVC.js → entity-YL2PRN6H.js} +2 -2
  34. package/dist/{entity-mapping-LKO2TMCG.js → entity-mapping-UAJKGXPN.js} +2 -2
  35. package/dist/{environments-B624UQKV.js → environments-KALTTHAM.js} +2 -2
  36. package/dist/{event-catalog-ZIG2U66E.js → event-catalog-4LNI3DYU.js} +2 -2
  37. package/dist/{export-ETOD6QZD.js → export-NMTFU6A5.js} +2 -2
  38. package/dist/{external-values-4MOX6T56.js → external-values-BCGFLIFW.js} +2 -2
  39. package/dist/{file-22RQYRYK.js → file-V5XG75F6.js} +2 -2
  40. package/dist/{iban-NQOJDH72.js → iban-Y5JREQ5G.js} +2 -2
  41. package/dist/{identity-HL32QWLO.js → identity-XQTU4C6U.js} +2 -2
  42. package/dist/{init-SJVQEDIN.js → init-KCFFN5YH.js} +2 -2
  43. package/dist/{integration-toolkit-MU6BLHWC.js → integration-toolkit-2R5ZP4I2.js} +2 -2
  44. package/dist/{journey-5RKU7YDG.js → journey-3MNDPSG5.js} +2 -2
  45. package/dist/{kanban-HI7FUJVV.js → kanban-LPNW5LPK.js} +2 -2
  46. package/dist/{message-BOTK5KMI.js → message-BEIBRVIC.js} +2 -2
  47. package/dist/{metering-NFQQ6DMB.js → metering-M5O6CTMK.js} +2 -2
  48. package/dist/{notes-SXWJ4EGU.js → notes-KMOZ7T5D.js} +2 -2
  49. package/dist/{notification-SSJZWRY2.js → notification-OUAOFWAM.js} +2 -2
  50. package/dist/{organization-WDESY7KO.js → organization-AXMBLMOH.js} +2 -2
  51. package/dist/{partner-directory-NDMUNBXL.js → partner-directory-4O5WL5P2.js} +2 -2
  52. package/dist/{permissions-FJZAGGIK.js → permissions-QQPFPNPZ.js} +2 -2
  53. package/dist/{phone-integration-AM543CIO.js → phone-integration-QN2BKQCR.js} +2 -2
  54. package/dist/{pricing-QINXHZV5.js → pricing-DL3HPEHE.js} +2 -2
  55. package/dist/{pricing-tier-UHFVEGRC.js → pricing-tier-7DP562MY.js} +2 -2
  56. package/dist/{purpose-S4GPL7XI.js → purpose-2VPP2CXM.js} +2 -2
  57. package/dist/{query-XZ4I3CEO.js → query-UD7IJVHV.js} +2 -2
  58. package/dist/{remove-component-TFATVOVG.js → remove-component-RDBF3UZ7.js} +2 -2
  59. package/dist/{review-KTBLGM6J.js → review-H4VIW7QN.js} +2 -2
  60. package/dist/{sandbox-AVP6H6U5.js → sandbox-REGYRKJC.js} +2 -2
  61. package/dist/{sharing-WBRU6WRW.js → sharing-RPMG2ZU3.js} +2 -2
  62. package/dist/{snapshot-RHFJJ7LQ.js → snapshot-ZXFXSPRR.js} +2 -2
  63. package/dist/{submission-GXR6HR5O.js → submission-M4IPK4YH.js} +2 -2
  64. package/dist/{targeting-OK2HJXIS.js → targeting-UDDWIUFQ.js} +2 -2
  65. package/dist/{template-variables-7HAOOAQK.js → template-variables-7BOB5KCW.js} +2 -2
  66. package/dist/{upgrade-VBJTO5HF.js → upgrade-LKXESLZZ.js} +1 -1
  67. package/dist/{user-S2EQZGUY.js → user-PJEPOBDO.js} +2 -2
  68. package/dist/{validate-KNM26XJ3.js → validate-A2YTP4MJ.js} +2 -2
  69. package/dist/{validation-rules-3CFHL7CD.js → validation-rules-O3M25AHM.js} +2 -2
  70. package/dist/{versions-UDDR7I2N.js → versions-Q53TBTDC.js} +2 -2
  71. package/dist/{webhooks-GH3FPH7F.js → webhooks-Q5XPARTY.js} +2 -2
  72. package/dist/{workflow-LN5NPR6U.js → workflow-YDERCC6Y.js} +2 -2
  73. package/dist/{workflow-definition-IZPUBPAU.js → workflow-definition-DMWOZER5.js} +2 -2
  74. package/package.json +1 -1
  75. package/dist/app-65T5B232.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.197 — CLI for epilot APIs
32
+ epilot v0.1.198 — CLI for epilot APIs
33
33
 
34
34
  USAGE
35
35
  epilot <api> <operationId> [params...] [flags]
@@ -2,7 +2,7 @@
2
2
  "openapi": "3.0.3",
3
3
  "info": {
4
4
  "title": "Integration Toolkit API",
5
- "version": "1.38.1",
5
+ "version": "1.43.0",
6
6
  "description": "API for integrating with external systems in a standardised way."
7
7
  },
8
8
  "tags": [
@@ -2974,7 +2974,12 @@
2974
2974
  "/v1/integrations/{integrationId}/monitoring/inbound-events": {
2975
2975
  "post": {
2976
2976
  "operationId": "queryInboundMonitoringEvents",
2977
- "x-epilot-permissions": [],
2977
+ "x-epilot-permissions": [
2978
+ {
2979
+ "action": "integration:view",
2980
+ "resource": "integration:{integrationId}"
2981
+ }
2982
+ ],
2978
2983
  "summary": "queryInboundMonitoringEvents",
2979
2984
  "description": "Query inbound monitoring events for a specific integration.\nReturns detailed information about inbound sync events from ERP systems,\nincluding success rates, error breakdowns, and processing metrics.\n",
2980
2985
  "tags": [
@@ -3013,6 +3018,9 @@
3013
3018
  "401": {
3014
3019
  "$ref": "#/components/responses/Unauthorized"
3015
3020
  },
3021
+ "403": {
3022
+ "$ref": "#/components/responses/Forbidden"
3023
+ },
3016
3024
  "404": {
3017
3025
  "$ref": "#/components/responses/NotFound"
3018
3026
  },
@@ -3025,7 +3033,12 @@
3025
3033
  "/v1/integrations/{integrationId}/monitoring/stats": {
3026
3034
  "post": {
3027
3035
  "operationId": "getMonitoringStats",
3028
- "x-epilot-permissions": [],
3036
+ "x-epilot-permissions": [
3037
+ {
3038
+ "action": "integration:view",
3039
+ "resource": "integration:{integrationId}"
3040
+ }
3041
+ ],
3029
3042
  "summary": "getMonitoringStats",
3030
3043
  "description": "Get aggregated statistics for both inbound and outbound monitoring events for a specific integration.\nReturns summary metrics for inbound (ERP sync) and outbound (webhook delivery) events,\nincluding success/error counts and optional breakdowns.\n",
3031
3044
  "tags": [
@@ -3064,6 +3077,9 @@
3064
3077
  "401": {
3065
3078
  "$ref": "#/components/responses/Unauthorized"
3066
3079
  },
3080
+ "403": {
3081
+ "$ref": "#/components/responses/Forbidden"
3082
+ },
3067
3083
  "404": {
3068
3084
  "$ref": "#/components/responses/NotFound"
3069
3085
  },
@@ -3076,7 +3092,12 @@
3076
3092
  "/v1/integrations/{integrationId}/monitoring/timeseries": {
3077
3093
  "post": {
3078
3094
  "operationId": "getMonitoringTimeSeries",
3079
- "x-epilot-permissions": [],
3095
+ "x-epilot-permissions": [
3096
+ {
3097
+ "action": "integration:view",
3098
+ "resource": "integration:{integrationId}"
3099
+ }
3100
+ ],
3080
3101
  "summary": "getMonitoringTimeSeries",
3081
3102
  "description": "Get time-series aggregated event counts for monitoring charts.\nReturns pre-bucketed counts at configurable intervals for both inbound and outbound events.\nMaximum of 200 buckets per request. Returns 400 if the time range and interval would exceed this limit.\n",
3082
3103
  "tags": [
@@ -3115,6 +3136,9 @@
3115
3136
  "401": {
3116
3137
  "$ref": "#/components/responses/Unauthorized"
3117
3138
  },
3139
+ "403": {
3140
+ "$ref": "#/components/responses/Forbidden"
3141
+ },
3118
3142
  "404": {
3119
3143
  "$ref": "#/components/responses/NotFound"
3120
3144
  },
@@ -3127,7 +3151,12 @@
3127
3151
  "/v1/integrations/{integrationId}/outbound-status": {
3128
3152
  "get": {
3129
3153
  "operationId": "getOutboundStatus",
3130
- "x-epilot-permissions": [],
3154
+ "x-epilot-permissions": [
3155
+ {
3156
+ "action": "integration:view",
3157
+ "resource": "integration:{integrationId}"
3158
+ }
3159
+ ],
3131
3160
  "summary": "getOutboundStatus",
3132
3161
  "description": "Get the status of all outbound use cases for a specific integration.\nReturns conflict information when events or webhooks are disabled but the use case is enabled.\n",
3133
3162
  "tags": [
@@ -3159,6 +3188,9 @@
3159
3188
  "401": {
3160
3189
  "$ref": "#/components/responses/Unauthorized"
3161
3190
  },
3191
+ "403": {
3192
+ "$ref": "#/components/responses/Forbidden"
3193
+ },
3162
3194
  "404": {
3163
3195
  "$ref": "#/components/responses/NotFound"
3164
3196
  },
@@ -3656,7 +3688,12 @@
3656
3688
  "/v1/integrations/{integrationId}/monitoring/access-logs": {
3657
3689
  "post": {
3658
3690
  "operationId": "queryAccessLogs",
3659
- "x-epilot-permissions": [],
3691
+ "x-epilot-permissions": [
3692
+ {
3693
+ "action": "integration:view",
3694
+ "resource": "integration:{integrationId}"
3695
+ }
3696
+ ],
3660
3697
  "summary": "queryAccessLogs",
3661
3698
  "description": "Query API access logs for a specific integration's organization.\nReturns access token usage analytics filtered by user_id (access token).\nSupports infinite scroll pagination with cursor-based navigation.\n",
3662
3699
  "tags": [
@@ -3695,6 +3732,9 @@
3695
3732
  "401": {
3696
3733
  "$ref": "#/components/responses/Unauthorized"
3697
3734
  },
3735
+ "403": {
3736
+ "$ref": "#/components/responses/Forbidden"
3737
+ },
3698
3738
  "404": {
3699
3739
  "$ref": "#/components/responses/NotFound"
3700
3740
  },
@@ -3707,7 +3747,12 @@
3707
3747
  "/v1/integrations/{integrationId}/monitoring/outbound-events": {
3708
3748
  "post": {
3709
3749
  "operationId": "queryOutboundMonitoringEvents",
3710
- "x-epilot-permissions": [],
3750
+ "x-epilot-permissions": [
3751
+ {
3752
+ "action": "integration:view",
3753
+ "resource": "integration:{integrationId}"
3754
+ }
3755
+ ],
3711
3756
  "summary": "queryOutboundMonitoringEvents",
3712
3757
  "description": "Query outbound monitoring events for a specific integration.\nReturns detailed information about outbound event deliveries,\nfiltered by event_name (event_catalog_event) linked to the integration's outbound use cases.\n",
3713
3758
  "tags": [
@@ -3746,6 +3791,9 @@
3746
3791
  "401": {
3747
3792
  "$ref": "#/components/responses/Unauthorized"
3748
3793
  },
3794
+ "403": {
3795
+ "$ref": "#/components/responses/Forbidden"
3796
+ },
3749
3797
  "404": {
3750
3798
  "$ref": "#/components/responses/NotFound"
3751
3799
  },
@@ -3758,9 +3806,14 @@
3758
3806
  "/v2/integrations/{integrationId}/monitoring/events": {
3759
3807
  "post": {
3760
3808
  "operationId": "queryMonitoringEventsV2",
3761
- "x-epilot-permissions": [],
3809
+ "x-epilot-permissions": [
3810
+ {
3811
+ "action": "integration:view",
3812
+ "resource": "integration:{integrationId}"
3813
+ }
3814
+ ],
3762
3815
  "summary": "queryMonitoringEventsV2",
3763
- "description": "Query monitoring events from the unified erp_monitoring_v2 table.\nReturns all event types (inbound, outbound, file_proxy, etc.) in a single list.\nReplaces the separate v1 inbound-events and outbound-events endpoints.\n",
3816
+ "description": "Query monitoring events from the unified erp_monitoring_v2 table.\nReturns all event types (inbound, outbound, file_proxy, etc.) in a single list.\nReplaces the separate v1 inbound-events and outbound-events endpoints.\nRequires the `integration:view` grant for the integration: event\ndetails can carry customer data (a mapped poll message's delivered\npayload, for example).\n",
3764
3817
  "tags": [
3765
3818
  "monitoring",
3766
3819
  "integrations"
@@ -3797,6 +3850,9 @@
3797
3850
  "401": {
3798
3851
  "$ref": "#/components/responses/Unauthorized"
3799
3852
  },
3853
+ "403": {
3854
+ "$ref": "#/components/responses/Forbidden"
3855
+ },
3800
3856
  "404": {
3801
3857
  "$ref": "#/components/responses/NotFound"
3802
3858
  },
@@ -3809,7 +3865,12 @@
3809
3865
  "/v2/integrations/{integrationId}/monitoring/stats": {
3810
3866
  "post": {
3811
3867
  "operationId": "getMonitoringStatsV2",
3812
- "x-epilot-permissions": [],
3868
+ "x-epilot-permissions": [
3869
+ {
3870
+ "action": "integration:view",
3871
+ "resource": "integration:{integrationId}"
3872
+ }
3873
+ ],
3813
3874
  "summary": "getMonitoringStatsV2",
3814
3875
  "description": "Get aggregated statistics from the unified erp_monitoring_v2 table.\nReturns combined metrics for all event types with optional breakdowns.\n",
3815
3876
  "tags": [
@@ -3848,6 +3909,9 @@
3848
3909
  "401": {
3849
3910
  "$ref": "#/components/responses/Unauthorized"
3850
3911
  },
3912
+ "403": {
3913
+ "$ref": "#/components/responses/Forbidden"
3914
+ },
3851
3915
  "404": {
3852
3916
  "$ref": "#/components/responses/NotFound"
3853
3917
  },
@@ -3860,7 +3924,12 @@
3860
3924
  "/v2/integrations/{integrationId}/monitoring/time-series": {
3861
3925
  "post": {
3862
3926
  "operationId": "getMonitoringTimeSeriesV2",
3863
- "x-epilot-permissions": [],
3927
+ "x-epilot-permissions": [
3928
+ {
3929
+ "action": "integration:view",
3930
+ "resource": "integration:{integrationId}"
3931
+ }
3932
+ ],
3864
3933
  "summary": "getMonitoringTimeSeriesV2",
3865
3934
  "description": "Get time-series aggregated event counts from the unified erp_monitoring_v2 table.\nReturns bucketed counts for chart rendering.\n",
3866
3935
  "tags": [
@@ -3899,6 +3968,9 @@
3899
3968
  "401": {
3900
3969
  "$ref": "#/components/responses/Unauthorized"
3901
3970
  },
3971
+ "403": {
3972
+ "$ref": "#/components/responses/Forbidden"
3973
+ },
3902
3974
  "404": {
3903
3975
  "$ref": "#/components/responses/NotFound"
3904
3976
  },
@@ -3911,7 +3983,12 @@
3911
3983
  "/v2/integrations/{integrationId}/monitoring/events/{eventId}/associated": {
3912
3984
  "get": {
3913
3985
  "operationId": "getAssociatedMonitoringEvents",
3914
- "x-epilot-permissions": [],
3986
+ "x-epilot-permissions": [
3987
+ {
3988
+ "action": "integration:view",
3989
+ "resource": "integration:{integrationId}"
3990
+ }
3991
+ ],
3915
3992
  "summary": "getAssociatedMonitoringEvents",
3916
3993
  "description": "Returns all monitoring events sharing the same event_id, ordered chronologically.\nAlso includes the original inbound event payload from erp_incoming_events if available.\nUsed to display a full event trace/timeline.\n",
3917
3994
  "tags": [
@@ -3949,6 +4026,9 @@
3949
4026
  "401": {
3950
4027
  "$ref": "#/components/responses/Unauthorized"
3951
4028
  },
4029
+ "403": {
4030
+ "$ref": "#/components/responses/Forbidden"
4031
+ },
3952
4032
  "500": {
3953
4033
  "$ref": "#/components/responses/InternalServerError"
3954
4034
  }
@@ -4025,7 +4105,8 @@
4025
4105
  "operationId": "getMonitoringTraceByCorrelation",
4026
4106
  "x-epilot-permissions": [
4027
4107
  {
4028
- "action": "integration:view"
4108
+ "action": "integration:view",
4109
+ "resource": "integration:{integrationId}"
4029
4110
  }
4030
4111
  ],
4031
4112
  "summary": "getMonitoringTraceByCorrelation",
@@ -5188,7 +5269,7 @@
5188
5269
  },
5189
5270
  "ErpImportIssue": {
5190
5271
  "type": "object",
5191
- "description": "A problem found during validation, scoped to the file as a whole rather than to\nindividual rows.\n\n`code` is the translation key and the other fields are its parameters — there is\ndeliberately no message to display. Each code appears at most once, with\neverything it has to say aggregated into that one entry.\n\nThe conditional codes describe a file that cannot be written as variants:\n\n- `TIER_ROWS_NOT_GROUPED` — rows of one variant are spread through the file;\n `columns` names what to group by.\n- `TIER_BANDS_CONFLICT` — two rows of one variant claim the same band.\n- `CONDITION_VALUE_MISSING` — a condition column is blank in every row.\n- `VARIANT_VALUE_CONFLICT` — rows of one variant disagree on a value outside\n `from_rows`; the first row's value is what would be written.\n- `ATTRIBUTE_NOT_OVERRIDABLE` — the schema does not let a variant override this\n attribute, so the mapped value would be discarded.\n- `ATTRIBUTE_NOT_IN_SCHEMA` — the schema does not have the attribute at all.\n\nThe rest reject the mapping against the entity schemas, before the file is read, and\nname the thing at fault in `subject`: `IS_CONDITIONAL_NOT_CONSTANT`,\n`SCHEMA_NOT_CONDITIONABLE`, `SCHEMA_NOT_FOUND`, `SCHEMA_DECLARES_NO_CONDITIONS`,\n`GROUPING_KEY_NOT_A_COLUMN`, `GROUPING_KEY_IS_SORT_COLUMN`,\n`CONDITIONAL_TARGET_MODE_UNSUPPORTED` (a conditional target with any `mode` other\nthan `upsert` — a row of such a target addresses one variant-version, while every\nother mode acts on whole entities; removing variants through an import is not\nsupported yet, and to remove a whole entity, map it as a non-conditional target).",
5272
+ "description": "A problem found during validation, scoped to the file as a whole rather than to\nindividual rows.\n\n`code` is the translation key and the other fields are its parameters — there is\ndeliberately no message to display. Each code appears at most once (once per\n`expected` for `VALUE_FORMAT_INVALID`), with everything it has to say aggregated\ninto that one entry.\n\n`VALUE_FORMAT_INVALID` — the mapping produces values in a format the entity schema\ndoes not store; `expected` says which format, and `columns` names every column\n(or, for a value built by an expression, the attribute) that holds one.\n\n`MAPPING_EXPRESSION_FAILED` (a warning) — a mapping expression failed for some rows,\nincluding `$number()` on a value it cannot convert such as `12,50` or on a blank cell,\nso importing anyway leaves those values out; `attributes` names the attribute it fills.\n\n`FROM_ROWS_EXPRESSION_FAILED` — an expression in a `conditional.from_rows` item failed\nfor some rows. Blocking, unlike a field: the import would skip every entry of that\ntarget built in the same chunk, not one value; `attributes` names the list attribute.\n\n`lines` points at up to five file lines an issue was seen on, as examples.\n\nThe conditional codes describe a file that cannot be written as variants:\n\n- `TIER_ROWS_NOT_GROUPED` — rows of one variant are spread through the file;\n `columns` names what to group by.\n- `TIER_BANDS_CONFLICT` — two rows of one variant claim the same band.\n- `CONDITION_VALUE_MISSING` — a condition column is blank in every row.\n- `VARIANT_VALUE_CONFLICT` — rows of one variant disagree on a value outside\n `from_rows`; the first row's value is what would be written.\n- `ATTRIBUTE_NOT_OVERRIDABLE` — the schema does not let a variant override this\n attribute, so the mapped value would be discarded.\n- `ATTRIBUTE_NOT_IN_SCHEMA` — the schema does not have the attribute at all.\n\nThe rest reject the mapping against the entity schemas, before the file is read, and\nname the thing at fault in `subject`: `IS_CONDITIONAL_NOT_CONSTANT`,\n`SCHEMA_NOT_CONDITIONABLE`, `SCHEMA_NOT_FOUND`, `SCHEMA_DECLARES_NO_CONDITIONS`,\n`GROUPING_KEY_NOT_A_COLUMN`, `GROUPING_KEY_IS_SORT_COLUMN`,\n`CONDITIONAL_TARGET_MODE_UNSUPPORTED` (a conditional target with any `mode` other\nthan `upsert` — a row of such a target addresses one variant-version, while every\nother mode acts on whole entities; removing variants through an import is not\nsupported yet, and to remove a whole entity, map it as a non-conditional target).",
5192
5273
  "required": [
5193
5274
  "code",
5194
5275
  "severity"
@@ -5217,7 +5298,10 @@
5217
5298
  "SCHEMA_DECLARES_NO_CONDITIONS",
5218
5299
  "GROUPING_KEY_NOT_A_COLUMN",
5219
5300
  "GROUPING_KEY_IS_SORT_COLUMN",
5220
- "CONDITIONAL_TARGET_MODE_UNSUPPORTED"
5301
+ "CONDITIONAL_TARGET_MODE_UNSUPPORTED",
5302
+ "VALUE_FORMAT_INVALID",
5303
+ "MAPPING_EXPRESSION_FAILED",
5304
+ "FROM_ROWS_EXPRESSION_FAILED"
5221
5305
  ]
5222
5306
  },
5223
5307
  "severity": {
@@ -5247,13 +5331,46 @@
5247
5331
  }
5248
5332
  }
5249
5333
  },
5334
+ "attributes": {
5335
+ "type": "array",
5336
+ "description": "The mapping fields this issue is about, where the value is not a file column as it is: an expression builds it, or the expression fails. VALUE_FORMAT_INVALID (beside `columns`, which holds the values taken from a column as they are), MAPPING_EXPRESSION_FAILED and FROM_ROWS_EXPRESSION_FAILED.",
5337
+ "items": {
5338
+ "type": "object",
5339
+ "required": [
5340
+ "name"
5341
+ ],
5342
+ "properties": {
5343
+ "name": {
5344
+ "type": "string",
5345
+ "description": "The attribute the mapping writes, like `unit_amount_decimal`."
5346
+ }
5347
+ }
5348
+ }
5349
+ },
5350
+ "lines": {
5351
+ "type": "array",
5352
+ "description": "Up to five lines of the file this issue was seen on, as examples rather than the full list. The header is line 1. BLANK_ROWS_SKIPPED, VALUE_FORMAT_INVALID, MAPPING_EXPRESSION_FAILED, FROM_ROWS_EXPRESSION_FAILED, TIER_ROWS_NOT_GROUPED (where a variant's rows start again), TIER_BANDS_CONFLICT and VARIANT_VALUE_CONFLICT (the row at odds with the first).",
5353
+ "items": {
5354
+ "type": "integer"
5355
+ }
5356
+ },
5250
5357
  "subject": {
5251
5358
  "type": "string",
5252
5359
  "description": "What the issue is about — an attribute, an entity type slug, or an \"attribute reads column\" pair — to substitute into the client's copy for the code. Independent of `columns`; a code can carry both."
5253
5360
  },
5254
5361
  "row": {
5255
5362
  "type": "integer",
5256
- "description": "The offending data row, 1-based as the user counts rows. MALFORMED_ROW only."
5363
+ "description": "The offending row's line in the file, the header being line 1 — the number a spreadsheet or text editor shows, and the same numbering as `lines`. MALFORMED_ROW only."
5364
+ },
5365
+ "expected": {
5366
+ "type": "string",
5367
+ "description": "The format the values should have had. VALUE_FORMAT_INVALID only.\n- `number` — a JSON number; the mapping produces text (wrap the column in `$number()`). - `text` — text; the mapping produces a number. - `decimal` — a plain number with a dot as text, like `12.50`. - `date` — a date like `2026-01-01`, optionally with a time and offset like\n `2026-01-01T08:00:00Z`.",
5368
+ "enum": [
5369
+ "number",
5370
+ "text",
5371
+ "decimal",
5372
+ "date"
5373
+ ]
5257
5374
  }
5258
5375
  }
5259
5376
  },
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  callApi
4
- } from "./chunk-CPWEMM6W.js";
5
- import "./chunk-NUYQ3HT6.js";
4
+ } from "./chunk-NIWZ5U7G.js";
5
+ import "./chunk-HTDQ45IO.js";
6
6
  import "./chunk-IOLKUHUB.js";
7
7
  import "./chunk-SQ55BTMV.js";
8
8
  import "./chunk-QPUCHKXS.js";
@@ -3,8 +3,8 @@ import {
3
3
  log,
4
4
  readManifest,
5
5
  writeManifest
6
- } from "./chunk-LF5BQEWG.js";
7
- import "./chunk-NUYQ3HT6.js";
6
+ } from "./chunk-2HWJT4DW.js";
7
+ import "./chunk-HTDQ45IO.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-LF5BQEWG.js";
8
- import "./chunk-NUYQ3HT6.js";
7
+ } from "./chunk-2HWJT4DW.js";
8
+ import "./chunk-HTDQ45IO.js";
9
9
  import "./chunk-SQ55BTMV.js";
10
10
  import "./chunk-QPUCHKXS.js";
11
11
  import "./chunk-7ZQ666ZQ.js";
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  callApi
4
- } from "./chunk-CPWEMM6W.js";
5
- import "./chunk-NUYQ3HT6.js";
4
+ } from "./chunk-NIWZ5U7G.js";
5
+ import "./chunk-HTDQ45IO.js";
6
6
  import "./chunk-IOLKUHUB.js";
7
7
  import "./chunk-SQ55BTMV.js";
8
8
  import "./chunk-QPUCHKXS.js";
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  callApi
4
- } from "./chunk-CPWEMM6W.js";
5
- import "./chunk-NUYQ3HT6.js";
4
+ } from "./chunk-NIWZ5U7G.js";
5
+ import "./chunk-HTDQ45IO.js";
6
6
  import "./chunk-IOLKUHUB.js";
7
7
  import "./chunk-SQ55BTMV.js";
8
8
  import "./chunk-QPUCHKXS.js";
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  callApi
4
- } from "./chunk-CPWEMM6W.js";
5
- import "./chunk-NUYQ3HT6.js";
4
+ } from "./chunk-NIWZ5U7G.js";
5
+ import "./chunk-HTDQ45IO.js";
6
6
  import "./chunk-IOLKUHUB.js";
7
7
  import "./chunk-SQ55BTMV.js";
8
8
  import "./chunk-QPUCHKXS.js";
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  callApi
4
- } from "./chunk-CPWEMM6W.js";
5
- import "./chunk-NUYQ3HT6.js";
4
+ } from "./chunk-NIWZ5U7G.js";
5
+ import "./chunk-HTDQ45IO.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-KCFFN5YH.js").then((m) => m.default),
12
+ "add-component": () => import("./add-component-Y4QT4T7A.js").then((m) => m.default),
13
+ "remove-component": () => import("./remove-component-RDBF3UZ7.js").then((m) => m.default),
14
+ "add-function": () => import("./add-function-LCYMPAFP.js").then((m) => m.default),
15
+ validate: () => import("./validate-A2YTP4MJ.js").then((m) => m.default),
16
+ deploy: () => import("./deploy-QHJ4C2F2.js").then((m) => m.default),
17
+ dev: () => import("./dev-3XIOTHNS.js").then((m) => m.default),
18
+ export: () => import("./export-NMTFU6A5.js").then((m) => m.default),
19
+ versions: () => import("./versions-Q53TBTDC.js").then((m) => m.default),
20
+ review: () => import("./review-H4VIW7QN.js").then((m) => m.default),
21
+ api: () => import("./api-EVTACZQZ.js").then((m) => m.default)
22
+ }
23
+ });
24
+ export {
25
+ app_default as default
26
+ };
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  callApi
4
- } from "./chunk-CPWEMM6W.js";
5
- import "./chunk-NUYQ3HT6.js";
4
+ } from "./chunk-NIWZ5U7G.js";
5
+ import "./chunk-HTDQ45IO.js";
6
6
  import "./chunk-IOLKUHUB.js";
7
7
  import "./chunk-SQ55BTMV.js";
8
8
  import "./chunk-QPUCHKXS.js";
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  callApi
4
- } from "./chunk-CPWEMM6W.js";
5
- import "./chunk-NUYQ3HT6.js";
4
+ } from "./chunk-NIWZ5U7G.js";
5
+ import "./chunk-HTDQ45IO.js";
6
6
  import "./chunk-IOLKUHUB.js";
7
7
  import "./chunk-SQ55BTMV.js";
8
8
  import "./chunk-QPUCHKXS.js";
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  callApi
4
- } from "./chunk-CPWEMM6W.js";
5
- import "./chunk-NUYQ3HT6.js";
4
+ } from "./chunk-NIWZ5U7G.js";
5
+ import "./chunk-HTDQ45IO.js";
6
6
  import "./chunk-IOLKUHUB.js";
7
7
  import "./chunk-SQ55BTMV.js";
8
8
  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.197",
14
+ version: "0.1.198",
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-MKB6GT45.js").then((m) => m.default),
35
- upgrade: () => import("../upgrade-VBJTO5HF.js").then((m) => m.default),
36
- "access-token": () => import("../access-token-ET64ZIBR.js").then((m) => m.default),
37
- address: () => import("../address-33JGSOJK.js").then((m) => m.default),
38
- "address-suggestions": () => import("../address-suggestions-OB77BAO5.js").then((m) => m.default),
39
- "ai-agents": () => import("../ai-agents-TZSCY2IE.js").then((m) => m.default),
40
- app: () => import("../app-65T5B232.js").then((m) => m.default),
41
- "audit-logs": () => import("../audit-logs-2IBHNBOG.js").then((m) => m.default),
42
- automation: () => import("../automation-P4V236HL.js").then((m) => m.default),
43
- billing: () => import("../billing-WNFOX4EV.js").then((m) => m.default),
44
- "blueprint-manifest": () => import("../blueprint-manifest-RZNDT6XZ.js").then((m) => m.default),
45
- calendar: () => import("../calendar-EJ2D3CPO.js").then((m) => m.default),
46
- chat: () => import("../chat-D26TZ6SS.js").then((m) => m.default),
47
- "configuration-hub": () => import("../configuration-hub-FVKV5QLE.js").then((m) => m.default),
48
- consent: () => import("../consent-5KOTE3UN.js").then((m) => m.default),
49
- "customer-portal": () => import("../customer-portal-U6AMKO6N.js").then((m) => m.default),
50
- dashboard: () => import("../dashboard-Q6GWRAKJ.js").then((m) => m.default),
51
- "data-governance": () => import("../data-governance-Q7KQXGQL.js").then((m) => m.default),
52
- deduplication: () => import("../deduplication-ANGISOJG.js").then((m) => m.default),
53
- design: () => import("../design-M4IL5A3L.js").then((m) => m.default),
54
- document: () => import("../document-C6CQX5E6.js").then((m) => m.default),
55
- "email-settings": () => import("../email-settings-LXDYFY46.js").then((m) => m.default),
56
- "email-template": () => import("../email-template-A5KJY75P.js").then((m) => m.default),
57
- entity: () => import("../entity-T3MFRMVC.js").then((m) => m.default),
58
- "entity-mapping": () => import("../entity-mapping-LKO2TMCG.js").then((m) => m.default),
59
- environments: () => import("../environments-B624UQKV.js").then((m) => m.default),
60
- "event-catalog": () => import("../event-catalog-ZIG2U66E.js").then((m) => m.default),
61
- "external-values": () => import("../external-values-4MOX6T56.js").then((m) => m.default),
62
- file: () => import("../file-22RQYRYK.js").then((m) => m.default),
63
- iban: () => import("../iban-NQOJDH72.js").then((m) => m.default),
64
- identity: () => import("../identity-HL32QWLO.js").then((m) => m.default),
65
- "integration-toolkit": () => import("../integration-toolkit-MU6BLHWC.js").then((m) => m.default),
66
- journey: () => import("../journey-5RKU7YDG.js").then((m) => m.default),
67
- kanban: () => import("../kanban-HI7FUJVV.js").then((m) => m.default),
68
- message: () => import("../message-BOTK5KMI.js").then((m) => m.default),
69
- metering: () => import("../metering-NFQQ6DMB.js").then((m) => m.default),
70
- notes: () => import("../notes-SXWJ4EGU.js").then((m) => m.default),
71
- notification: () => import("../notification-SSJZWRY2.js").then((m) => m.default),
72
- organization: () => import("../organization-WDESY7KO.js").then((m) => m.default),
73
- "partner-directory": () => import("../partner-directory-NDMUNBXL.js").then((m) => m.default),
74
- permissions: () => import("../permissions-FJZAGGIK.js").then((m) => m.default),
75
- "phone-integration": () => import("../phone-integration-AM543CIO.js").then((m) => m.default),
76
- pricing: () => import("../pricing-QINXHZV5.js").then((m) => m.default),
77
- "pricing-tier": () => import("../pricing-tier-UHFVEGRC.js").then((m) => m.default),
78
- purpose: () => import("../purpose-S4GPL7XI.js").then((m) => m.default),
79
- query: () => import("../query-XZ4I3CEO.js").then((m) => m.default),
80
- sandbox: () => import("../sandbox-AVP6H6U5.js").then((m) => m.default),
81
- sharing: () => import("../sharing-WBRU6WRW.js").then((m) => m.default),
82
- snapshot: () => import("../snapshot-RHFJJ7LQ.js").then((m) => m.default),
83
- submission: () => import("../submission-GXR6HR5O.js").then((m) => m.default),
84
- targeting: () => import("../targeting-OK2HJXIS.js").then((m) => m.default),
85
- "template-variables": () => import("../template-variables-7HAOOAQK.js").then((m) => m.default),
86
- user: () => import("../user-S2EQZGUY.js").then((m) => m.default),
87
- "validation-rules": () => import("../validation-rules-3CFHL7CD.js").then((m) => m.default),
88
- webhooks: () => import("../webhooks-GH3FPH7F.js").then((m) => m.default),
89
- workflow: () => import("../workflow-LN5NPR6U.js").then((m) => m.default),
90
- "workflow-definition": () => import("../workflow-definition-IZPUBPAU.js").then((m) => m.default)
35
+ upgrade: () => import("../upgrade-LKXESLZZ.js").then((m) => m.default),
36
+ "access-token": () => import("../access-token-6M73U65X.js").then((m) => m.default),
37
+ address: () => import("../address-RRFWS66E.js").then((m) => m.default),
38
+ "address-suggestions": () => import("../address-suggestions-IUFHAOF3.js").then((m) => m.default),
39
+ "ai-agents": () => import("../ai-agents-FOHPTQYY.js").then((m) => m.default),
40
+ app: () => import("../app-KXOWP7PW.js").then((m) => m.default),
41
+ "audit-logs": () => import("../audit-logs-3J4N6UYR.js").then((m) => m.default),
42
+ automation: () => import("../automation-7Y76HTRK.js").then((m) => m.default),
43
+ billing: () => import("../billing-YY2TSJTU.js").then((m) => m.default),
44
+ "blueprint-manifest": () => import("../blueprint-manifest-CMKSIHJ4.js").then((m) => m.default),
45
+ calendar: () => import("../calendar-MZ4LZ3CN.js").then((m) => m.default),
46
+ chat: () => import("../chat-GUVIMPCI.js").then((m) => m.default),
47
+ "configuration-hub": () => import("../configuration-hub-BM35YSCV.js").then((m) => m.default),
48
+ consent: () => import("../consent-AYZ5FUL7.js").then((m) => m.default),
49
+ "customer-portal": () => import("../customer-portal-JJK5332Z.js").then((m) => m.default),
50
+ dashboard: () => import("../dashboard-G3GN6IOU.js").then((m) => m.default),
51
+ "data-governance": () => import("../data-governance-BZITK3ZN.js").then((m) => m.default),
52
+ deduplication: () => import("../deduplication-E22YOLQE.js").then((m) => m.default),
53
+ design: () => import("../design-XTEAXLGB.js").then((m) => m.default),
54
+ document: () => import("../document-MO4ZXSYJ.js").then((m) => m.default),
55
+ "email-settings": () => import("../email-settings-W3VTKFBS.js").then((m) => m.default),
56
+ "email-template": () => import("../email-template-APFUMUYX.js").then((m) => m.default),
57
+ entity: () => import("../entity-YL2PRN6H.js").then((m) => m.default),
58
+ "entity-mapping": () => import("../entity-mapping-UAJKGXPN.js").then((m) => m.default),
59
+ environments: () => import("../environments-KALTTHAM.js").then((m) => m.default),
60
+ "event-catalog": () => import("../event-catalog-4LNI3DYU.js").then((m) => m.default),
61
+ "external-values": () => import("../external-values-BCGFLIFW.js").then((m) => m.default),
62
+ file: () => import("../file-V5XG75F6.js").then((m) => m.default),
63
+ iban: () => import("../iban-Y5JREQ5G.js").then((m) => m.default),
64
+ identity: () => import("../identity-XQTU4C6U.js").then((m) => m.default),
65
+ "integration-toolkit": () => import("../integration-toolkit-2R5ZP4I2.js").then((m) => m.default),
66
+ journey: () => import("../journey-3MNDPSG5.js").then((m) => m.default),
67
+ kanban: () => import("../kanban-LPNW5LPK.js").then((m) => m.default),
68
+ message: () => import("../message-BEIBRVIC.js").then((m) => m.default),
69
+ metering: () => import("../metering-M5O6CTMK.js").then((m) => m.default),
70
+ notes: () => import("../notes-KMOZ7T5D.js").then((m) => m.default),
71
+ notification: () => import("../notification-OUAOFWAM.js").then((m) => m.default),
72
+ organization: () => import("../organization-AXMBLMOH.js").then((m) => m.default),
73
+ "partner-directory": () => import("../partner-directory-4O5WL5P2.js").then((m) => m.default),
74
+ permissions: () => import("../permissions-QQPFPNPZ.js").then((m) => m.default),
75
+ "phone-integration": () => import("../phone-integration-QN2BKQCR.js").then((m) => m.default),
76
+ pricing: () => import("../pricing-DL3HPEHE.js").then((m) => m.default),
77
+ "pricing-tier": () => import("../pricing-tier-7DP562MY.js").then((m) => m.default),
78
+ purpose: () => import("../purpose-2VPP2CXM.js").then((m) => m.default),
79
+ query: () => import("../query-UD7IJVHV.js").then((m) => m.default),
80
+ sandbox: () => import("../sandbox-REGYRKJC.js").then((m) => m.default),
81
+ sharing: () => import("../sharing-RPMG2ZU3.js").then((m) => m.default),
82
+ snapshot: () => import("../snapshot-ZXFXSPRR.js").then((m) => m.default),
83
+ submission: () => import("../submission-M4IPK4YH.js").then((m) => m.default),
84
+ targeting: () => import("../targeting-UDDWIUFQ.js").then((m) => m.default),
85
+ "template-variables": () => import("../template-variables-7BOB5KCW.js").then((m) => m.default),
86
+ user: () => import("../user-PJEPOBDO.js").then((m) => m.default),
87
+ "validation-rules": () => import("../validation-rules-O3M25AHM.js").then((m) => m.default),
88
+ webhooks: () => import("../webhooks-Q5XPARTY.js").then((m) => m.default),
89
+ workflow: () => import("../workflow-YDERCC6Y.js").then((m) => m.default),
90
+ "workflow-definition": () => import("../workflow-definition-DMWOZER5.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.197" : (await null).default.version;
145
+ var VERSION = true ? "0.1.198" : (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);
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  callApi
4
- } from "./chunk-CPWEMM6W.js";
5
- import "./chunk-NUYQ3HT6.js";
4
+ } from "./chunk-NIWZ5U7G.js";
5
+ import "./chunk-HTDQ45IO.js";
6
6
  import "./chunk-IOLKUHUB.js";
7
7
  import "./chunk-SQ55BTMV.js";
8
8
  import "./chunk-QPUCHKXS.js";