@epilot/cli 0.1.193 → 0.1.195

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 (86) hide show
  1. package/README.md +89 -1
  2. package/definitions/pricing.json +44 -7
  3. package/dist/{access-token-CMXAXZ3R.js → access-token-Q2UGZIMP.js} +4 -4
  4. package/dist/{add-component-KJLVM44N.js → add-component-USRY2DQG.js} +4 -4
  5. package/dist/{add-function-ODBHPWP6.js → add-function-RZTEKVSB.js} +4 -4
  6. package/dist/{address-556I5SBF.js → address-AX4UT6BO.js} +4 -4
  7. package/dist/{address-suggestions-5KHWKGNW.js → address-suggestions-GMVIIZY6.js} +4 -4
  8. package/dist/agent-auth-A2D2R6FP.js +42 -0
  9. package/dist/{ai-agents-5QBOUUL5.js → ai-agents-J2ZTLDLV.js} +4 -4
  10. package/dist/{api-MA3KZAHZ.js → api-3L3XZYSQ.js} +4 -4
  11. package/dist/app-RHHZR5YW.js +26 -0
  12. package/dist/{audit-logs-N6ZFVTBE.js → audit-logs-VLVHBCF5.js} +4 -4
  13. package/dist/auth-N3CDDMDS.js +235 -0
  14. package/dist/auth-login-ACQGAE72.js +34 -0
  15. package/dist/{auth-token-APXLIQAO.js → auth-token-JOSBGVGA.js} +2 -2
  16. package/dist/{automation-22LGZB4O.js → automation-NYSYIXDW.js} +4 -4
  17. package/dist/{billing-O4UZP4LR.js → billing-6SWQNULS.js} +4 -4
  18. package/dist/bin/epilot.js +84 -60
  19. package/dist/{blueprint-manifest-RGKFKTQW.js → blueprint-manifest-3RS3SQE6.js} +4 -4
  20. package/dist/{calendar-BAZUUP7W.js → calendar-WQIQK46M.js} +4 -4
  21. package/dist/{chat-Q2OKVJTT.js → chat-EMJD5AN5.js} +4 -4
  22. package/dist/{chunk-CMVLVDYF.js → chunk-36I64456.js} +7 -7
  23. package/dist/{chunk-7TLX5QRJ.js → chunk-5DFIPWJS.js} +3 -3
  24. package/dist/chunk-5Q3PQUI2.js +602 -0
  25. package/dist/{chunk-ENVFJFZZ.js → chunk-BYNI3AGG.js} +1 -1
  26. package/dist/{chunk-M3M3C5WH.js → chunk-G564QXNL.js} +17 -3
  27. package/dist/{chunk-YHQA2AVG.js → chunk-QPUCHKXS.js} +1 -0
  28. package/dist/{auth-login-3AY5U4JU.js → chunk-U4YGZRJY.js} +378 -11
  29. package/dist/{config-DGZIMLZK.js → config-PJWYWLQH.js} +1 -1
  30. package/dist/{configuration-hub-LVEKC5UV.js → configuration-hub-BVTAC26A.js} +4 -4
  31. package/dist/{consent-42RHQN4U.js → consent-UZSED4QQ.js} +4 -4
  32. package/dist/{customer-portal-CPYSHWMQ.js → customer-portal-CZSHTI3Q.js} +4 -4
  33. package/dist/{dashboard-X2MFX52H.js → dashboard-NQHQ65ME.js} +4 -4
  34. package/dist/{data-governance-6TG574RV.js → data-governance-WOUP2NNR.js} +4 -4
  35. package/dist/{deduplication-TT46SFOU.js → deduplication-EUAFCYY3.js} +4 -4
  36. package/dist/{deploy-7CEOUBVD.js → deploy-LRSKADBB.js} +4 -4
  37. package/dist/{design-IG7LWD4X.js → design-XR6C6OTA.js} +4 -4
  38. package/dist/{dev-SN44SGW4.js → dev-FGVM3R2Z.js} +4 -4
  39. package/dist/{document-5KYSBLGK.js → document-EWDEIA2Z.js} +4 -4
  40. package/dist/{email-settings-MZ7XM4H7.js → email-settings-IOHMQBXH.js} +4 -4
  41. package/dist/{email-template-FUMBRAJC.js → email-template-K6X722R7.js} +4 -4
  42. package/dist/{entity-VBD2YEZX.js → entity-Z6JH5EDY.js} +4 -4
  43. package/dist/{entity-mapping-YRLTIJQW.js → entity-mapping-PZY5PCRG.js} +4 -4
  44. package/dist/{environments-KTG3J2N5.js → environments-FL7IAAHN.js} +4 -4
  45. package/dist/{event-catalog-Z6XAAUZU.js → event-catalog-GUAWJ3RG.js} +4 -4
  46. package/dist/{export-OYADKVRF.js → export-IXXFKWBZ.js} +4 -4
  47. package/dist/{external-values-ZWMXARW2.js → external-values-A7C75KBV.js} +4 -4
  48. package/dist/{file-762S5MIJ.js → file-IRUY5MWL.js} +4 -4
  49. package/dist/{iban-KOXXBC27.js → iban-3MLGKYKV.js} +4 -4
  50. package/dist/{identity-6ZFNTQ3I.js → identity-LI26M7EG.js} +4 -4
  51. package/dist/{init-OUEJLN3K.js → init-HRF5Q2UW.js} +4 -4
  52. package/dist/{integration-toolkit-GGVOJ54C.js → integration-toolkit-GSDL2CE2.js} +4 -4
  53. package/dist/{journey-67YFR7GP.js → journey-ASQNGOEH.js} +4 -4
  54. package/dist/{kanban-ADY77D7C.js → kanban-7XW56ILD.js} +4 -4
  55. package/dist/{message-NDXC2GK4.js → message-XYB34GBX.js} +4 -4
  56. package/dist/{metering-RKYF77CI.js → metering-GJSVL6OZ.js} +4 -4
  57. package/dist/{notes-5TJY7RB5.js → notes-FZPFGPFO.js} +4 -4
  58. package/dist/{notification-H6YLABKW.js → notification-X6IHCJDI.js} +4 -4
  59. package/dist/org-UWRWFPRZ.js +427 -0
  60. package/dist/{organization-ILSV2FAU.js → organization-374MUWDY.js} +4 -4
  61. package/dist/{partner-directory-BCH6MF5E.js → partner-directory-BC7XF3VN.js} +4 -4
  62. package/dist/{permissions-YJNGIXNZ.js → permissions-UAXXL2OG.js} +4 -4
  63. package/dist/{pricing-G67JCXSJ.js → pricing-Q43OPFUT.js} +4 -4
  64. package/dist/{pricing-tier-ZHL7YDIR.js → pricing-tier-AHRG3AVC.js} +4 -4
  65. package/dist/{profile-OZJL5ZPT.js → profile-G2FH3DXR.js} +1 -1
  66. package/dist/{purpose-TLIZRKF2.js → purpose-FXBJ24XT.js} +4 -4
  67. package/dist/{query-RJFX7FVF.js → query-Y5XZZBFS.js} +4 -4
  68. package/dist/{remove-component-CM5KWCN6.js → remove-component-WQLTK36T.js} +4 -4
  69. package/dist/{review-MU2OAL5D.js → review-XWKQ2QBF.js} +4 -4
  70. package/dist/{sandbox-UVLVVTEA.js → sandbox-7DPZVDMD.js} +4 -4
  71. package/dist/{sharing-U5O6SIM2.js → sharing-4IMN5325.js} +4 -4
  72. package/dist/{snapshot-VSORAWHR.js → snapshot-OE7NRZGS.js} +4 -4
  73. package/dist/{submission-HVNOP5T6.js → submission-R2GYF5UV.js} +4 -4
  74. package/dist/{targeting-STSFTPYR.js → targeting-NLHZEKAE.js} +4 -4
  75. package/dist/{template-variables-MFDAUYI4.js → template-variables-BEBZD6IW.js} +4 -4
  76. package/dist/{upgrade-EBCK4LM6.js → upgrade-ON2KV5LK.js} +1 -1
  77. package/dist/{user-Y5N4UYAI.js → user-C2MPCWFC.js} +4 -4
  78. package/dist/{validate-N3KWJCCB.js → validate-L3EVLLDB.js} +4 -4
  79. package/dist/{validation-rules-LTKHB7BK.js → validation-rules-MCQP5FYV.js} +4 -4
  80. package/dist/{versions-M2OEVZZG.js → versions-U4M5UMIX.js} +4 -4
  81. package/dist/{webhooks-XU3W66DH.js → webhooks-CXLFLDRO.js} +4 -4
  82. package/dist/{workflow-N6IJ6LYR.js → workflow-WGG5Y45V.js} +4 -4
  83. package/dist/{workflow-definition-GTOTMANE.js → workflow-definition-P5RIZCJK.js} +4 -4
  84. package/package.json +3 -2
  85. package/dist/app-W7SP77LS.js +0 -26
  86. package/dist/auth-WMXFMPWE.js +0 -119
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.193 — CLI for epilot APIs
32
+ epilot v0.1.195 — CLI for epilot APIs
33
33
 
34
34
  USAGE
35
35
  epilot <api> <operationId> [params...] [flags]
@@ -60,6 +60,13 @@ COMMANDS
60
60
  profile Manage named profiles
61
61
  completion Generate shell completion scripts
62
62
 
63
+ AGENT MODE (optional)
64
+ auth login --agent Register this CLI as an Agent Auth agent (org switching, silent token refresh, scoped access profiles)
65
+ org list List your organizations and this CLI's access
66
+ org use <id> Switch the active organization
67
+ org request <id> Request access (--access <profile> --reason "…")
68
+ org current Show the active organization
69
+
63
70
  APIs
64
71
  access-token Access Token API
65
72
  address Address API
@@ -123,6 +130,8 @@ EXAMPLES
123
130
  $ epilot entity searchEntities -d '{"q":"*"}'
124
131
  $ epilot entity searchEntities --jsonata 'results[0]._title'
125
132
  $ echo '{"q":"*"}' | epilot entity searchEntities
133
+ $ epilot auth login --agent --org 739224 # agent mode (optional)
134
+ $ epilot org request 739224 --access config:write --reason "Fix the PV journey mapping"
126
135
 
127
136
  Run epilot <api> to list available operations.
128
137
  Run epilot <api> <operationId> --help for operation details.
@@ -158,6 +167,82 @@ Token resolution order:
158
167
  4. Stored credentials (`~/.config/epilot/credentials.json`)
159
168
  5. Interactive prompt (if TTY)
160
169
 
170
+ ### Agent mode (optional)
171
+
172
+ `epilot auth login --agent` registers the CLI through the
173
+ [Agent Auth Protocol](https://agentauthprotocol.com/specification/v1.0-draft) (via
174
+ [`@epilot/agent-auth`](../agent-auth)): your machine is a **host**, the CLI is an **agent** you approve once in the
175
+ browser, and short-lived epilot tokens are issued per organization and refreshed silently. In return you get
176
+ organization switching, scoped **access profiles** and sessions that outlive a single token. Plain logins are not
177
+ affected: a profile without an agent behaves exactly as before.
178
+
179
+ ```bash
180
+ # Register the CLI as an agent and approve it in the browser (read access, your login organization)
181
+ epilot auth login --agent
182
+
183
+ # A specific organization, an access profile and the purpose shown to the approving user
184
+ epilot auth login --agent --org 739224 --access config:write --reason "Fix the PV registration journey mapping"
185
+
186
+ # Non-interactive (CI / agents): requires --org; prints the approval URL and polls until approved
187
+ epilot auth login --agent --org 739224 --no-interactive --json
188
+
189
+ # Status shows the agent, its grants (profile, expiry, reason); logout revokes the agent
190
+ epilot auth status
191
+ epilot auth logout
192
+ ```
193
+
194
+ Access profiles scope what the issued tokens may do. `read` is the default and lives as long as the agent; every
195
+ other profile is an escalation that requires a `--reason` (10–200 characters, prompted for in a TTY) and expires.
196
+ The flag is `--access` because `--profile` already selects a [named CLI profile](#profiles):
197
+
198
+ | `--access` | Meaning | Read-only | Expires after |
199
+ | --- | --- | --- | --- |
200
+ | `read` | Read everything you can see | yes | never (agent lifetime) |
201
+ | `config:read` | Read configuration (journeys, automations, workflows, schemas, portals, designs) | yes | 7 days |
202
+ | `config:write` | Change configuration | no | 24 hours |
203
+ | `data:read` | Read business data (contacts, opportunities, orders, files, messages) | yes | 7 days |
204
+ | `data:write` | Change business data | no | 24 hours |
205
+ | `full` | Everything your account can do | no | 24 hours |
206
+
207
+ Anonymization is a read-only property: `--anonymize` (and `org request` without `--full-pii`) only applies to read
208
+ profiles. Combining `--anonymize` with a write profile is an error ("anonymize is only available with read
209
+ profiles"), because an agent must never write masked data back. `--readonly` with a write profile downgrades it to
210
+ its read sibling (`config:write` → `config:read`, `full` → `read`). On the approval page the user can only narrow what
211
+ the CLI asked for; the CLI then issues tokens for the profile that was actually granted.
212
+
213
+ #### Organizations
214
+
215
+ One approval grants access to one organization. Switching or adding organizations goes through `epilot org`
216
+ (agent mode only — without an agent the commands exit 1 with "This profile has no agent identity. Run
217
+ `epilot auth login --agent` first.", or `{"error":"agent_required"}` with `--json`):
218
+
219
+ ```bash
220
+ epilot org list # organizations with access (profile, anonymized, "expires in 23h", pending)
221
+ epilot org current # the active organization and its profile
222
+ epilot org use 911210 # switch: issues a token under the most permissive grant (asks for access otherwise)
223
+ epilot org use 911210 --access data:read # ...or under a specific granted profile
224
+ epilot org request 911210 # ask for read, anonymized access (approved in the browser)
225
+ epilot org request 911210 --full-pii # read access with unmasked personal data
226
+ epilot org request 911210 --access data:write --reason "Import meter readings from the portal export"
227
+ epilot org request 911210 --access full --reason "…" --no-interactive --json # prints the approval, exits 0 (pending)
228
+ ```
229
+
230
+ `--write` is a deprecated alias for `--access full`. Write profiles always get full personal data (`--full-pii` is
231
+ implied). After an approval that happened outside the CLI (e.g. from a `--no-interactive` request),
232
+ `epilot org use <id>` completes the switch; `auth status` lists every grant with its profile, expiry and reason.
233
+
234
+ #### Silent refresh
235
+
236
+ Issued tokens are short-lived. Whenever a command runs and the stored token of an agent-mode profile is missing or
237
+ expires within two minutes, the CLI issues a fresh one through the agent (same organization and profile) and stores
238
+ it — you stay logged in for as long as the agent and its grant are active. If the agent was revoked or expired, run
239
+ `epilot auth login --agent` again. A plain `epilot auth login` (or `--token`) on the same profile revokes that
240
+ profile's agent, so plain tokens are never replaced.
241
+
242
+ Local state lives in `~/.config/epilot/agent-auth/` (`host.json` for the machine key, `agents/<profile>.json` for
243
+ the per-profile agent; both mode 0600). `EPILOT_AGENT_AUTH_ISSUER` overrides the Agent Auth server URL (defaults per
244
+ stage: `--use-dev`, `--use-staging`).
245
+
161
246
  ## Profiles
162
247
 
163
248
  Manage multiple environments, similar to AWS CLI profiles:
@@ -383,6 +468,9 @@ Full documentation with sample calls and responses for all APIs:
383
468
  # Install dependencies
384
469
  pnpm install
385
470
 
471
+ # Build the workspace dependency once (bundled into the CLI by tsup; also needed by tests and `pnpm dev`)
472
+ pnpm --filter @epilot/agent-auth build
473
+
386
474
  # Generate API commands + definitions + docs from client specs
387
475
  pnpm generate
388
476
 
@@ -3946,7 +3946,7 @@
3946
3946
  }
3947
3947
  },
3948
3948
  "400": {
3949
- "description": "`VARIANT_UNPINNED`, `CONDITION_UNDEFINED`, `CONDITION_VALUE_INVALID`,\n`PIN_FORMAT_INVALID`, `DEFAULT_MARKER_RESERVED`, `DEFAULT_VARIANT_PINS_CONDITIONS`,\n`VALID_FROM_INVALID`, `VALUE_UNSTORABLE`, `IDENTIFIER_INVALID`, `ENTITY_TYPE_MISMATCH`.\n",
3949
+ "description": "`VARIANT_UNPINNED`, `CONDITION_UNDEFINED`, `CONDITION_VALUE_INVALID`,\n`PIN_FORMAT_INVALID`, `DEFAULT_MARKER_RESERVED`, `DEFAULT_VARIANT_PINS_CONDITIONS`,\n`VALID_FROM_INVALID`, `VALUE_UNSTORABLE`, `OVERRIDE_VALUE_INVALID`, `IDENTIFIER_INVALID`,\n`ENTITY_TYPE_MISMATCH`.\n",
3950
3950
  "content": {
3951
3951
  "application/json": {
3952
3952
  "schema": {
@@ -4487,7 +4487,7 @@
4487
4487
  }
4488
4488
  },
4489
4489
  "400": {
4490
- "description": "`VALID_FROM_IMMUTABLE`, `VALID_FROM_INVALID`, `VALUE_UNSTORABLE`, `IDENTIFIER_INVALID`,\n`ENTITY_TYPE_MISMATCH`.\n",
4490
+ "description": "`VALID_FROM_IMMUTABLE`, `VALID_FROM_INVALID`, `VALUE_UNSTORABLE`, `OVERRIDE_VALUE_INVALID`,\n`IDENTIFIER_INVALID`, `ENTITY_TYPE_MISMATCH`.\n",
4491
4491
  "content": {
4492
4492
  "application/json": {
4493
4493
  "schema": {
@@ -4589,7 +4589,7 @@
4589
4589
  }
4590
4590
  },
4591
4591
  "400": {
4592
- "description": "`VALID_FROM_IMMUTABLE`, `VALID_FROM_INVALID`, `VALUE_UNSTORABLE`, `IDENTIFIER_INVALID`,\n`ENTITY_TYPE_MISMATCH`.\n",
4592
+ "description": "`VALID_FROM_IMMUTABLE`, `VALID_FROM_INVALID`, `VALUE_UNSTORABLE`, `OVERRIDE_VALUE_INVALID`,\n`IDENTIFIER_INVALID`, `ENTITY_TYPE_MISMATCH`.\n",
4593
4593
  "content": {
4594
4594
  "application/json": {
4595
4595
  "schema": {
@@ -4963,7 +4963,7 @@
4963
4963
  }
4964
4964
  },
4965
4965
  "400": {
4966
- "description": "`VALID_FROM_INVALID`, `VALUE_UNSTORABLE`, `IDENTIFIER_INVALID`, `ENTITY_TYPE_MISMATCH`.",
4966
+ "description": "`VALID_FROM_INVALID`, `VALUE_UNSTORABLE`, `OVERRIDE_VALUE_INVALID`, `IDENTIFIER_INVALID`,\n`ENTITY_TYPE_MISMATCH`.\n",
4967
4967
  "content": {
4968
4968
  "application/json": {
4969
4969
  "schema": {
@@ -5179,7 +5179,7 @@
5179
5179
  }
5180
5180
  },
5181
5181
  "400": {
5182
- "description": "`VALID_FROM_IMMUTABLE`, `VALID_FROM_INVALID`, `VALUE_UNSTORABLE`, `IDENTIFIER_INVALID`,\n`ENTITY_TYPE_MISMATCH`.\n",
5182
+ "description": "`VALID_FROM_IMMUTABLE`, `VALID_FROM_INVALID`, `VALUE_UNSTORABLE`, `OVERRIDE_VALUE_INVALID`,\n`IDENTIFIER_INVALID`, `ENTITY_TYPE_MISMATCH`.\n",
5183
5183
  "content": {
5184
5184
  "application/json": {
5185
5185
  "schema": {
@@ -5291,7 +5291,7 @@
5291
5291
  }
5292
5292
  },
5293
5293
  "400": {
5294
- "description": "`VALID_FROM_IMMUTABLE`, `VALID_FROM_INVALID`, `VALUE_UNSTORABLE`, `IDENTIFIER_INVALID`,\n`ENTITY_TYPE_MISMATCH`.\n",
5294
+ "description": "`VALID_FROM_IMMUTABLE`, `VALID_FROM_INVALID`, `VALUE_UNSTORABLE`, `OVERRIDE_VALUE_INVALID`,\n`IDENTIFIER_INVALID`, `ENTITY_TYPE_MISMATCH`.\n",
5295
5295
  "content": {
5296
5296
  "application/json": {
5297
5297
  "schema": {
@@ -6017,7 +6017,7 @@
6017
6017
  },
6018
6018
  "ConditionalPricingErrorCode": {
6019
6019
  "type": "string",
6020
- "description": "Machine-readable failure mode of a conditional-pricing operation, so a client can branch on\nthe kind of failure instead of parsing the message. A `400` is about the request; a `409` is\nabout what is already stored. Refusals raised by request validation carry no `code` at all.\n\n- `SCHEMA_NOT_FOUND` (404): no conditional entity type by that slug\n- `ENTITY_NOT_FOUND` (404): the schema holds no entity with that id\n- `ENTITY_TYPE_MISMATCH` (400): that id belongs to an entity of another type than the slug named\n- `ENTITY_NOT_CONDITIONAL` (409): the entity is of the right type but was not created as a conditional one\n- `VARIANT_NOT_FOUND` (404): the entity has no such variant\n- `VERSION_NOT_FOUND` (404): the variant has no version at that `valid_from`\n- `NO_MATCHES` (404): nothing applied to the context and the entity has no `default` variant\n- `NO_ACTIVE_VERSION` (404): the variant has no version in effect at the instant asked about\n- `AMBIGUOUS_RESOLUTION` (409): several variants match the given context while a single result was requested\n- `TUPLE_CONFLICT` (409): the condition tuple is already claimed by another variant\n- `VERSION_CONFLICT` (409): a version already exists at the given `valid_from` on that variant\n- `CONDITION_UNDEFINED` (400): the request names a condition the entity's schema does not define\n- `VARIANT_PIN_UNDECLARED` (409): a variant a resolve would compose pins a condition the entity's schema no longer declares\n- `OPERATOR_UNSUPPORTED` (400): the requested predicate, or a sort, is not applicable to the condition's type\n- `CONTEXT_FORMAT_INVALID` (400): a resolve context or listing filter value is malformed for its condition type\n- `CONDITION_VALUE_INVALID` (400): a variant write pins a `select` value absent from the condition's declared `options`\n- `CONDITION_UNCONFIGURED` (409): a variant write pins a `select` condition whose `options` are absent or empty\n- `TOO_MANY_MATCHES` (400): a multi-match resolve exceeded its result cap\n- `WRITE_CONFLICT` (409): transient write contention, retryable unlike `TUPLE_CONFLICT`\n- `OFFSET_WINDOW_EXCEEDED` (400): a listing's `from` plus `size` reaches past the offset window the search index allows\n- `CURSOR_INVALID` (400): a paging cursor cannot be read, or does not belong to the read it was sent with\n- `VARIANT_LIMIT_REACHED` (409): the entity already holds every variant it may hold\n- `PIN_FORMAT_INVALID` (400): a variant pins a value malformed for its condition's type\n- `VARIANT_UNPINNED` (400): a variant write pins no condition and is not marked `default`, or a batch delete item addresses no variant\n- `LAST_VERSION_UNDELETABLE` (409): the delete would leave the variant with no version at all\n- `CONDITION_UNREADABLE` (409): the entity's schema declares a condition in a way this deploy cannot read\n- `SORT_INVALID` (400): a listing's `sort` is not `conditions.<name>:asc` or `conditions.<name>:desc`\n- `DEFAULT_MARKER_RESERVED` (400): a variant write's pins, or a resolve context, address the fallback marker — `default` or `_default`\n- `DEFAULT_VARIANT_PINS_CONDITIONS` (400): a variant marked `default` also pins real conditions\n- `VALID_FROM_IMMUTABLE` (400): a version write asks for a different `valid_from` than the version its own address names\n- `VARIANT_CONDITIONS_IMMUTABLE` (409): a version write carries a condition tuple other than the one its variant was created with\n- `IDENTIFIER_INVALID` (400): an id in the request cannot be used as a storage key — empty, carrying an unsupported character, or longer than 128 characters\n- `VALID_FROM_INVALID` (400): a `valid_from` is not one of the timestamp forms a version timeline can be sorted by\n- `VALUE_UNSTORABLE` (400): a write carries a value the store cannot hold, such as a non-finite number or one outside the table's numeric range\n- `CONDITIONAL_PRICING_NOT_ENABLED` (403): the organization has not opted in to Conditional Pricing\n- `CONDITIONAL_PRICING_NOT_READY` (409): the organization opted in minutes ago and a variant cannot be created until its setup finishes\n",
6020
+ "description": "Machine-readable failure mode of a conditional-pricing operation, so a client can branch on\nthe kind of failure instead of parsing the message. A `400` is about the request; a `409` is\nabout what is already stored. Refusals raised by request validation carry no `code` at all.\n\n- `SCHEMA_NOT_FOUND` (404): no conditional entity type by that slug\n- `ENTITY_NOT_FOUND` (404): the schema holds no entity with that id\n- `ENTITY_TYPE_MISMATCH` (400): that id belongs to an entity of another type than the slug named\n- `ENTITY_NOT_CONDITIONAL` (409): the entity is of the right type but was not created as a conditional one\n- `VARIANT_NOT_FOUND` (404): the entity has no such variant\n- `VERSION_NOT_FOUND` (404): the variant has no version at that `valid_from`\n- `NO_MATCHES` (404): nothing applied to the context and the entity has no `default` variant\n- `NO_ACTIVE_VERSION` (404): the variant has no version in effect at the instant asked about\n- `AMBIGUOUS_RESOLUTION` (409): several variants match the given context while a single result was requested\n- `TUPLE_CONFLICT` (409): the condition tuple is already claimed by another variant\n- `VERSION_CONFLICT` (409): a version already exists at the given `valid_from` on that variant\n- `CONDITION_UNDEFINED` (400): the request names a condition the entity's schema does not define\n- `VARIANT_PIN_UNDECLARED` (409): a variant a resolve would compose pins a condition the entity's schema no longer declares\n- `OPERATOR_UNSUPPORTED` (400): the requested predicate, or a sort, is not applicable to the condition's type\n- `CONTEXT_FORMAT_INVALID` (400): a resolve context or listing filter value is malformed for its condition type\n- `CONDITION_VALUE_INVALID` (400): a variant write pins a `select` value absent from the condition's declared `options`\n- `CONDITION_UNCONFIGURED` (409): a variant write pins a `select` condition whose `options` are absent or empty\n- `TOO_MANY_MATCHES` (400): a multi-match resolve exceeded its result cap\n- `WRITE_CONFLICT` (409): transient write contention, retryable unlike `TUPLE_CONFLICT`\n- `OFFSET_WINDOW_EXCEEDED` (400): a listing's `from` plus `size` reaches past the offset window the search index allows\n- `CURSOR_INVALID` (400): a paging cursor cannot be read, or does not belong to the read it was sent with\n- `VARIANT_LIMIT_REACHED` (409): the entity already holds every variant it may hold\n- `PIN_FORMAT_INVALID` (400): a variant pins a value malformed for its condition's type\n- `VARIANT_UNPINNED` (400): a variant write pins no condition and is not marked `default`, or a batch delete item addresses no variant\n- `LAST_VERSION_UNDELETABLE` (409): the delete would leave the variant with no version at all\n- `CONDITION_UNREADABLE` (409): the entity's schema declares a condition in a way this deploy cannot read\n- `SORT_INVALID` (400): a listing's `sort` is not `conditions.<name>:asc` or `conditions.<name>:desc`\n- `DEFAULT_MARKER_RESERVED` (400): a variant write's pins, or a resolve context, address the fallback marker — `default` or `_default`\n- `DEFAULT_VARIANT_PINS_CONDITIONS` (400): a variant marked `default` also pins real conditions\n- `VALID_FROM_IMMUTABLE` (400): a version write asks for a different `valid_from` than the version its own address names\n- `VARIANT_CONDITIONS_IMMUTABLE` (409): a version write carries a condition tuple other than the one its variant was created with\n- `IDENTIFIER_INVALID` (400): an id in the request cannot be used as a storage key — empty, carrying an unsupported character, or longer than 128 characters\n- `VALID_FROM_INVALID` (400): a `valid_from` is not one of the timestamp forms a version timeline can be sorted by\n- `VALUE_UNSTORABLE` (400): a write carries a value the store cannot hold, such as a non-finite number or one outside the table's numeric range\n- `OVERRIDE_VALUE_INVALID` (400): a write overrides a `currency` or `number` field, or an amount/decimal pair, with a value of the wrong type\n- `CONDITIONAL_PRICING_NOT_ENABLED` (403): the organization has not opted in to Conditional Pricing\n- `CONDITIONAL_PRICING_NOT_READY` (409): the organization opted in minutes ago and a variant cannot be created until its setup finishes\n",
6021
6021
  "enum": [
6022
6022
  "SCHEMA_NOT_FOUND",
6023
6023
  "ENTITY_NOT_FOUND",
@@ -6053,6 +6053,7 @@
6053
6053
  "IDENTIFIER_INVALID",
6054
6054
  "VALID_FROM_INVALID",
6055
6055
  "VALUE_UNSTORABLE",
6056
+ "OVERRIDE_VALUE_INVALID",
6056
6057
  "CONDITIONAL_PRICING_NOT_ENABLED",
6057
6058
  "CONDITIONAL_PRICING_NOT_READY"
6058
6059
  ]
@@ -8987,6 +8988,42 @@
8987
8988
  }
8988
8989
  }
8989
8990
  },
8991
+ {
8992
+ "type": "object",
8993
+ "description": "An override whose value is not of the type its field holds. A field declared by a\n`currency` attribute `x` takes `x` as a number, `x_decimal` as a non-empty string and\n`x_currency` as one of the attribute's currency codes, in any case. A field declared\nby a `number` attribute takes a string, or a number where the attribute sets\n`data_type: number`. A field a capability manages that neither attribute type\ndeclares, such as `tiers`, is checked at any depth by the amount/decimal convention:\na key `K_decimal` is a non-empty string, and a `K` beside it is a number. No other\nvalue is checked, and a decimal string is not parsed.\n",
8994
+ "required": [
8995
+ "code",
8996
+ "details"
8997
+ ],
8998
+ "properties": {
8999
+ "code": {
9000
+ "type": "string",
9001
+ "enum": [
9002
+ "OVERRIDE_VALUE_INVALID"
9003
+ ]
9004
+ },
9005
+ "details": {
9006
+ "type": "object",
9007
+ "additionalProperties": false,
9008
+ "required": [
9009
+ "path",
9010
+ "expected"
9011
+ ],
9012
+ "properties": {
9013
+ "path": {
9014
+ "type": "string",
9015
+ "description": "Where the value sits, as a dotted path of the request's own keys, with array\nentries by index.\n",
9016
+ "example": "values.tiers.0.unit_amount_decimal"
9017
+ },
9018
+ "expected": {
9019
+ "type": "string",
9020
+ "description": "What the value has to be, in prose.",
9021
+ "example": "a non-empty string"
9022
+ }
9023
+ }
9024
+ }
9025
+ }
9026
+ },
8990
9027
  {
8991
9028
  "type": "object",
8992
9029
  "description": "The organization has not opted in to Conditional Pricing. Opting in is done once, by\nepilot, from the organization's settings; nothing in this API enables it.\n",
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  callApi
4
- } from "./chunk-CMVLVDYF.js";
4
+ } from "./chunk-36I64456.js";
5
+ import "./chunk-BYNI3AGG.js";
5
6
  import "./chunk-IOLKUHUB.js";
6
- import "./chunk-ENVFJFZZ.js";
7
- import "./chunk-M3M3C5WH.js";
8
- import "./chunk-YHQA2AVG.js";
7
+ import "./chunk-G564QXNL.js";
8
+ import "./chunk-QPUCHKXS.js";
9
9
  import "./chunk-7ZQ666ZQ.js";
10
10
 
11
11
  // src/commands/apis/access-token.ts
@@ -3,10 +3,10 @@ import {
3
3
  log,
4
4
  readManifest,
5
5
  writeManifest
6
- } from "./chunk-7TLX5QRJ.js";
7
- import "./chunk-ENVFJFZZ.js";
8
- import "./chunk-M3M3C5WH.js";
9
- import "./chunk-YHQA2AVG.js";
6
+ } from "./chunk-5DFIPWJS.js";
7
+ import "./chunk-BYNI3AGG.js";
8
+ import "./chunk-G564QXNL.js";
9
+ import "./chunk-QPUCHKXS.js";
10
10
  import "./chunk-7ZQ666ZQ.js";
11
11
 
12
12
  // src/commands/app/add-component.ts
@@ -4,10 +4,10 @@ import {
4
4
  readManifest,
5
5
  validateScheduleExpression,
6
6
  writeManifest
7
- } from "./chunk-7TLX5QRJ.js";
8
- import "./chunk-ENVFJFZZ.js";
9
- import "./chunk-M3M3C5WH.js";
10
- import "./chunk-YHQA2AVG.js";
7
+ } from "./chunk-5DFIPWJS.js";
8
+ import "./chunk-BYNI3AGG.js";
9
+ import "./chunk-G564QXNL.js";
10
+ import "./chunk-QPUCHKXS.js";
11
11
  import "./chunk-7ZQ666ZQ.js";
12
12
 
13
13
  // src/commands/app/add-function.ts
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  callApi
4
- } from "./chunk-CMVLVDYF.js";
4
+ } from "./chunk-36I64456.js";
5
+ import "./chunk-BYNI3AGG.js";
5
6
  import "./chunk-IOLKUHUB.js";
6
- import "./chunk-ENVFJFZZ.js";
7
- import "./chunk-M3M3C5WH.js";
8
- import "./chunk-YHQA2AVG.js";
7
+ import "./chunk-G564QXNL.js";
8
+ import "./chunk-QPUCHKXS.js";
9
9
  import "./chunk-7ZQ666ZQ.js";
10
10
 
11
11
  // src/commands/apis/address.ts
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  callApi
4
- } from "./chunk-CMVLVDYF.js";
4
+ } from "./chunk-36I64456.js";
5
+ import "./chunk-BYNI3AGG.js";
5
6
  import "./chunk-IOLKUHUB.js";
6
- import "./chunk-ENVFJFZZ.js";
7
- import "./chunk-M3M3C5WH.js";
8
- import "./chunk-YHQA2AVG.js";
7
+ import "./chunk-G564QXNL.js";
8
+ import "./chunk-QPUCHKXS.js";
9
9
  import "./chunk-7ZQ666ZQ.js";
10
10
 
11
11
  // src/commands/apis/address-suggestions.ts
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ REFRESH_WINDOW_MS,
4
+ agentPath,
5
+ agentProfileKey,
6
+ deleteAgentRecord,
7
+ ensureHostKey,
8
+ forgetAgentForProfile,
9
+ formatExpiresIn,
10
+ getAgentAuthClient,
11
+ isAgentGoneError,
12
+ issueTokenForOrg,
13
+ loadAgentIdentity,
14
+ loadAgentRecord,
15
+ loadHostKey,
16
+ printLoginAgainHint,
17
+ refreshTokenIfNeeded,
18
+ resolveAgentAuthIssuer,
19
+ saveAgentRecord
20
+ } from "./chunk-5Q3PQUI2.js";
21
+ import "./chunk-G564QXNL.js";
22
+ import "./chunk-QPUCHKXS.js";
23
+ import "./chunk-7ZQ666ZQ.js";
24
+ export {
25
+ REFRESH_WINDOW_MS,
26
+ agentPath,
27
+ agentProfileKey,
28
+ deleteAgentRecord,
29
+ ensureHostKey,
30
+ forgetAgentForProfile,
31
+ formatExpiresIn,
32
+ getAgentAuthClient,
33
+ isAgentGoneError,
34
+ issueTokenForOrg,
35
+ loadAgentIdentity,
36
+ loadAgentRecord,
37
+ loadHostKey,
38
+ printLoginAgainHint,
39
+ refreshTokenIfNeeded,
40
+ resolveAgentAuthIssuer,
41
+ saveAgentRecord
42
+ };
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  callApi
4
- } from "./chunk-CMVLVDYF.js";
4
+ } from "./chunk-36I64456.js";
5
+ import "./chunk-BYNI3AGG.js";
5
6
  import "./chunk-IOLKUHUB.js";
6
- import "./chunk-ENVFJFZZ.js";
7
- import "./chunk-M3M3C5WH.js";
8
- import "./chunk-YHQA2AVG.js";
7
+ import "./chunk-G564QXNL.js";
8
+ import "./chunk-QPUCHKXS.js";
9
9
  import "./chunk-7ZQ666ZQ.js";
10
10
 
11
11
  // src/commands/apis/ai-agents.ts
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  callApi
4
- } from "./chunk-CMVLVDYF.js";
4
+ } from "./chunk-36I64456.js";
5
+ import "./chunk-BYNI3AGG.js";
5
6
  import "./chunk-IOLKUHUB.js";
6
- import "./chunk-ENVFJFZZ.js";
7
- import "./chunk-M3M3C5WH.js";
8
- import "./chunk-YHQA2AVG.js";
7
+ import "./chunk-G564QXNL.js";
8
+ import "./chunk-QPUCHKXS.js";
9
9
  import "./chunk-7ZQ666ZQ.js";
10
10
 
11
11
  // src/commands/app/api.ts
@@ -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-HRF5Q2UW.js").then((m) => m.default),
12
+ "add-component": () => import("./add-component-USRY2DQG.js").then((m) => m.default),
13
+ "remove-component": () => import("./remove-component-WQLTK36T.js").then((m) => m.default),
14
+ "add-function": () => import("./add-function-RZTEKVSB.js").then((m) => m.default),
15
+ validate: () => import("./validate-L3EVLLDB.js").then((m) => m.default),
16
+ deploy: () => import("./deploy-LRSKADBB.js").then((m) => m.default),
17
+ dev: () => import("./dev-FGVM3R2Z.js").then((m) => m.default),
18
+ export: () => import("./export-IXXFKWBZ.js").then((m) => m.default),
19
+ versions: () => import("./versions-U4M5UMIX.js").then((m) => m.default),
20
+ review: () => import("./review-XWKQ2QBF.js").then((m) => m.default),
21
+ api: () => import("./api-3L3XZYSQ.js").then((m) => m.default)
22
+ }
23
+ });
24
+ export {
25
+ app_default as default
26
+ };
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  callApi
4
- } from "./chunk-CMVLVDYF.js";
4
+ } from "./chunk-36I64456.js";
5
+ import "./chunk-BYNI3AGG.js";
5
6
  import "./chunk-IOLKUHUB.js";
6
- import "./chunk-ENVFJFZZ.js";
7
- import "./chunk-M3M3C5WH.js";
8
- import "./chunk-YHQA2AVG.js";
7
+ import "./chunk-G564QXNL.js";
8
+ import "./chunk-QPUCHKXS.js";
9
9
  import "./chunk-7ZQ666ZQ.js";
10
10
 
11
11
  // src/commands/apis/audit-logs.ts