@deepraxis/cli 0.1.1-dev.d25d171 → 0.1.1-dev.d775f1e

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/COMMANDS.md +11 -16
  2. package/dist/praxis.js +187 -422
  3. package/package.json +1 -1
package/COMMANDS.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Generated by `bun run commands`. DO NOT EDIT.
4
4
 
5
- 426 HTTP operations; 428 commands including aliases.
5
+ 421 HTTP operations; 423 commands including aliases.
6
6
 
7
7
  Environment: `PRAXIS_ENV=develop|production` (dev package defaults to `develop`; stable package defaults to `production`). No `--env` option.
8
8
 
@@ -31,11 +31,18 @@ Handwritten commands: `login`, `logout`, `whoami`, `org list`, `org switch <orga
31
31
  | `praxis agent computer lease renew create` | `agent.computers.leases.renew.create` | POST `/agent/v1/computers/{computer_id}/leases/{lease_id}/renew` | `--computer`, `--lease` |
32
32
  | `praxis agent computer list` | `agent.computers.list` | GET `/agent/v1/computers` | `--param-limit`, `--page` |
33
33
  | `praxis agent computer update <computer_id>` | `agent.computers.update` | POST `/agent/v1/computers/{computer_id}` | `--name` |
34
- | `praxis agent create` | `agent.agents.create` | POST `/agent/v1/agents` | `--name`, `--description`, `--system`, `--kind`, `--computer-id`, `--subagent-model`, `--avatar`, `--environment-id`, `--vault-ids`, `--preset` |
34
+ | `praxis agent create` | `agent.agents.create` | POST `/agent/v1/agents` | `--name`, `--description`, `--system`, `--kind`, `--computer-id`, `--subagent-model`, `--image-model`, `--avatar`, `--environment-id`, `--vault-ids`, `--preset` |
35
35
  | `praxis agent customer auth access-token create` | `agent.agents.customers.auth.accessTokens.create` | POST `/agent/v1/agents/{agent_id}/customers/auth/access_tokens` | `--agent` |
36
36
  | `praxis agent customer auth access-token delete-current` | `agent.agents.customers.auth.accessTokens.deleteCurrent` | DELETE `/agent/v1/agents/{agent_id}/customers/auth/access_tokens/current` | `--agent` |
37
37
  | `praxis agent customer auth access-token renew create` | `agent.agents.customers.auth.accessTokens.renew.create` | POST `/agent/v1/agents/{agent_id}/customers/auth/access_tokens/renew` | `--agent` |
38
38
  | `praxis agent customer auth grant-code create` | `agent.agents.customers.auth.grantCodes.create` | POST `/agent/v1/agents/{agent_id}/customers/auth/grant_codes` | `--agent`, `--customer-id`, `--param-version`, `--origin`, `--expires-in`, `--max-session-seconds`, `--anonymous-access-token`, `--hosted` |
39
+ | `praxis agent customer block create` | `agent.agents.customers.block.create` | POST `/agent/v1/agents/{agent_id}/customers/{customer_id}/block` | `--agent`, `--customer` |
40
+ | `praxis agent customer delete <customer_id>` | `agent.agents.customers.delete` | DELETE `/agent/v1/agents/{agent_id}/customers/{customer_id}` | `--agent`, `--confirm` |
41
+ | `praxis agent customer get <customer_id>` | `agent.agents.customers.retrieve` | GET `/agent/v1/agents/{agent_id}/customers/{customer_id}` | `--agent` |
42
+ | `praxis agent customer get-deletion <customer_id>` | `agent.agents.customers.retrieveDeletion` | GET `/agent/v1/agents/{agent_id}/customers/{customer_id}/deletion` | `--agent` |
43
+ | `praxis agent customer list` | `agent.agents.customers.list` | GET `/agent/v1/agents/{agent_id}/customers` | `--agent`, `--param-limit`, `--page`, `--q`, `--type`, `--blocked` |
44
+ | `praxis agent customer revoke-token create` | `agent.agents.customers.revokeTokens.create` | POST `/agent/v1/agents/{agent_id}/customers/{customer_id}/revoke_tokens` | `--agent`, `--customer` |
45
+ | `praxis agent customer unblock create` | `agent.agents.customers.unblock.create` | POST `/agent/v1/agents/{agent_id}/customers/{customer_id}/unblock` | `--agent`, `--customer` |
39
46
  | `praxis agent deployment archive <deployment_id>` | `agent.deployments.archive` | POST `/agent/v1/deployments/{deployment_id}/archive` | |
40
47
  | `praxis agent deployment create` | `agent.deployments.create` | POST `/agent/v1/deployments` | `--environment-id`, `--name`, `--description`, `--vault-ids` |
41
48
  | `praxis agent deployment get <deployment_id>` | `agent.deployments.retrieve` | GET `/agent/v1/deployments/{deployment_id}` | |
@@ -46,25 +53,13 @@ Handwritten commands: `login`, `logout`, `whoami`, `org list`, `org switch <orga
46
53
  | `praxis agent deployment update <deployment_id>` | `agent.deployments.update` | POST `/agent/v1/deployments/{deployment_id}` | `--description`, `--environment-id`, `--name`, `--vault-ids` |
47
54
  | `praxis agent deployment-run get <deployment_run_id>` | `agent.deploymentRuns.retrieve` | GET `/agent/v1/deployment_runs/{deployment_run_id}` | |
48
55
  | `praxis agent deployment-run list` | `agent.deploymentRuns.list` | GET `/agent/v1/deployment_runs` | `--created-at-gt`, `--created-at-gte`, `--created-at-lt`, `--created-at-lte`, `--deployment-id`, `--has-error`, `--trigger-type`, `--param-limit`, `--page` |
49
- | `praxis agent embed exchange create` | `agent.embed.exchange.create` | POST `/agent/v1/embed/exchange` | `--code` |
50
- | `praxis agent embed get-appearance` | `agent.embed.retrieveAppearance` | GET `/agent/v1/embed/appearance` | |
51
- | `praxis agent embed-token anonymous create` | `agent.embedTokens.anonymous.create` | POST `/agent/v1/embed_tokens/anonymous` | `--publishable-key`, `--visitor-secret` |
52
- | `praxis agent embed-token create` | `agent.embedTokens.create` | POST `/agent/v1/embed_tokens` | `--hosted`, `--agent`, `--param-version`, `--external-user-id`, `--ttl-seconds`, `--budget-cents`, `--allowed-origins` |
53
- | `praxis agent embed-token list` | `agent.embedTokens.list` | GET `/agent/v1/embed_tokens` | `--agent-id`, `--external-user-id`, `--param-limit`, `--page` |
54
- | `praxis agent embed-token revoke create` | `agent.embedTokens.revoke.create` | POST `/agent/v1/embed_tokens/{id}/revoke` | `--embed-token` |
55
- | `praxis agent end-user block create` | `agent.agents.endUsers.block.create` | POST `/agent/v1/agents/{agent_id}/end_users/{external_user_id}/block` | `--agent`, `--end-user` |
56
- | `praxis agent end-user delete <external_user_id>` | `agent.agents.endUsers.delete` | DELETE `/agent/v1/agents/{agent_id}/end_users/{external_user_id}` | `--agent`, `--confirm` |
57
- | `praxis agent end-user get <external_user_id>` | `agent.agents.endUsers.retrieve` | GET `/agent/v1/agents/{agent_id}/end_users/{external_user_id}` | `--agent` |
58
- | `praxis agent end-user get-deletion <external_user_id>` | `agent.agents.endUsers.retrieveDeletion` | GET `/agent/v1/agents/{agent_id}/end_users/{external_user_id}/deletion` | `--agent` |
59
- | `praxis agent end-user list` | `agent.agents.endUsers.list` | GET `/agent/v1/agents/{agent_id}/end_users` | `--agent`, `--param-limit`, `--page`, `--q` |
60
- | `praxis agent end-user revoke-token create` | `agent.agents.endUsers.revokeTokens.create` | POST `/agent/v1/agents/{agent_id}/end_users/{external_user_id}/revoke_tokens` | `--agent`, `--end-user` |
61
- | `praxis agent end-user unblock create` | `agent.agents.endUsers.unblock.create` | POST `/agent/v1/agents/{agent_id}/end_users/{external_user_id}/unblock` | `--agent`, `--end-user` |
62
56
  | `praxis agent environment archive <environment_id>` | `agent.environments.archive` | POST `/agent/v1/environments/{environment_id}/archive` | |
63
57
  | `praxis agent environment create` | `agent.environments.create` | POST `/agent/v1/environments` | `--name`, `--description` |
64
58
  | `praxis agent environment get <environment_id>` | `agent.environments.retrieve` | GET `/agent/v1/environments/{environment_id}` | |
65
59
  | `praxis agent environment list` | `agent.environments.list` | GET `/agent/v1/environments` | `--include-archived`, `--param-limit`, `--page` |
66
60
  | `praxis agent environment update <environment_id>` | `agent.environments.update` | POST `/agent/v1/environments/{environment_id}` | `--description`, `--name` |
67
61
  | `praxis agent get <agent_id>` | `agent.agents.retrieve` | GET `/agent/v1/agents/{agent_id}` | `--param-version` |
62
+ | `praxis agent get-appearance <agent_id>` | `agent.agents.retrieveAppearance` | GET `/agent/v1/agents/{agent_id}/appearance` | |
68
63
  | `praxis agent list` | `agent.agents.list` | GET `/agent/v1/agents` | `--created-at-gte`, `--created-at-lte`, `--include-archived`, `--param-limit`, `--page`, `--kind` |
69
64
  | `praxis agent session archive <session_id>` | `agent.sessions.archive` | POST `/agent/v1/sessions/{session_id}/archive` | |
70
65
  | `praxis agent session background-task get-output <task_id>` | `agent.sessions.backgroundTasks.retrieveOutput` | GET `/agent/v1/sessions/{session_id}/background_tasks/{task_id}/output` | `--session`, `--offset`, `--max-bytes` |
@@ -105,7 +100,7 @@ Handwritten commands: `login`, `logout`, `whoami`, `org list`, `org switch <orga
105
100
  | `praxis agent skill version list` | `agent.skills.versions.list` | GET `/agent/v1/skills/{skill_id}/versions` | `--skill`, `--param-limit`, `--page` |
106
101
  | `praxis agent toolset list` | `agent.toolsets.list` | GET `/agent/v1/toolsets` | |
107
102
  | `praxis agent unarchive create` | `agent.agents.unarchive.create` | POST `/agent/v1/agents/{agent_id}/unarchive` | `--agent` |
108
- | `praxis agent update <agent_id>` | `agent.agents.update` | POST `/agent/v1/agents/{agent_id}` | `--description`, `--name`, `--system`, `--param-version`, `--apply`, `--version-note`, `--kind`, `--computer-id`, `--subagent-model`, `--avatar`, `--environment-id`, `--vault-ids`, `--preset` |
103
+ | `praxis agent update <agent_id>` | `agent.agents.update` | POST `/agent/v1/agents/{agent_id}` | `--description`, `--name`, `--system`, `--param-version`, `--apply`, `--version-note`, `--kind`, `--computer-id`, `--subagent-model`, `--image-model`, `--avatar`, `--environment-id`, `--vault-ids`, `--preset` |
109
104
  | `praxis agent version apply <version>` | `agent.agents.versions.apply` | POST `/agent/v1/agents/{agent_id}/versions/{version}/apply` | `--agent` |
110
105
  | `praxis agent version list` | `agent.agents.versions.list` | GET `/agent/v1/agents/{agent_id}/versions` | `--agent`, `--param-limit`, `--page` |
111
106
  | `praxis application asset upload` | `application.assets.upload.create` | POST `/application/v1/assets/upload` | `--jwt` |
package/dist/praxis.js CHANGED
@@ -113,7 +113,7 @@ var operations = [
113
113
  name: "multiagent",
114
114
  type: "object",
115
115
  required: false,
116
- description: "A coordinator topology: the session's primary thread orchestrates\nwork by spawning session threads, each running an agent drawn from the `agents`\nroster."
116
+ description: `Coordinator roster. A bare string agent id is equivalent to {type: "agent", id}; omitting its version pins the referenced agent's current saved version when this roster is saved. {type: "self"} refers to this agent. Specify a concrete version to pin it explicitly.`
117
117
  },
118
118
  {
119
119
  name: "skills",
@@ -141,7 +141,7 @@ across all toolsets allowed.`
141
141
  type: "array",
142
142
  itemType: "object",
143
143
  required: false,
144
- description: "Platform resources and services this service agent's codemode may reach, as one list of typed bindings. Only kind=service accepts a nonempty list; personal agents return 400. There are two kinds. A resource binding names one resource with id and access: database (id db_..., read_only or read_write), vector_store (id vs_..., read_only or read_write), file (id file- plus 24 letters or digits, as the File API returns it; read_only), media_library (any id without ':' or whitespace, read_only or read_write), model (a model catalog id, invoke), workflow and script (id <namespace>/<name>, invoke). A service binding opens a whole service and carries only enabled: search or browser. At most 20 bindings per type, no repeated type and id, and each service type at most once. A session is authorized by the agent version it runs: newly added bindings apply only to new sessions, and a version saved with apply=false changes no access until it is applied. Applying a version that disables, removes or downgrades a binding revokes it immediately in running sessions on older versions. A resource that is not bound returns 404, a service that is not opened returns 403, and a write to a resource bound read_only returns 403 BINDING_READ_ONLY. Unknown types, fields on the wrong kind (id, access or instructions on a service binding), wrong access and malformed ids return 400. The former databases, vector_stores and files fields are removed and return 400. Omit on create for no bindings."
144
+ description: "Platform resources and services this service agent's codemode may reach, as one list of typed bindings. Only kind=service accepts a nonempty list; personal agents return 400. There are two kinds. A resource binding names one resource with id and access: database (id db_..., read_only or read_write), vector_store (id vs_..., read_only or read_write), file (id file- plus 24 letters or digits, as the File API returns it; read_only), media_library (any id without ':' or whitespace, read_only or read_write), model (a model catalog id, invoke), workflow and script (id <namespace>/<name>, invoke). A service binding opens a whole service and carries only enabled: search or browser. At most 20 bindings per type, no repeated type and id, and each service type at most once. A session is authorized by the agent version it runs: newly added bindings apply only to new sessions, and a version saved with apply=false changes no access until it is applied. Applying a version that disables, removes or downgrades a binding revokes it immediately in running sessions on older versions. A resource that is not bound returns 404, a service that is not opened returns 403, and a write to a resource bound read_only returns 403 BINDING_READ_ONLY. Unknown types, fields on the wrong kind (id, access or instructions on a service binding), wrong access and malformed ids return 400. The former databases, vector_stores and files fields are removed and return 400. Omit on create for no bindings. Saving checks added or changed database, vector_store, media_library and file bindings in the organization: unknown or deleted ids return 400. If an owner is unavailable or takes more than 3 seconds, saving succeeds with verified=false for the affected bindings. Unchanged bindings keep their previous verification result and are not rechecked. workflow and script ids are not verified at save time."
145
145
  },
146
146
  {
147
147
  name: "kind",
@@ -165,6 +165,12 @@ across all toolsets allowed.`
165
165
  required: false,
166
166
  description: "Praxis extension: default subagent model ID, pinned in the agent revision. Call model overrides this; otherwise it overrides the roster member model or the parent model for built-ins. Null clears the default. /agent/v1 only."
167
167
  },
168
+ {
169
+ name: "image_model",
170
+ type: "string",
171
+ required: false,
172
+ description: "Model used by the imagine image tool; defaults to gpt-image-2 when unset. Only models that can generate images are accepted. Omit to preserve; null clears the configured model. /agent/v1 only."
173
+ },
168
174
  {
169
175
  name: "subagents",
170
176
  type: "array",
@@ -228,7 +234,7 @@ across all toolsets allowed.`
228
234
  resource: "agent.agents",
229
235
  method: "retrieve",
230
236
  summary: "Get agent",
231
- description: "Read one agent by id. The top level is the latest saved version, the editable head whose version you send back for optimistic concurrency; after a save with apply false it differs from active_version, and new sessions use active_version, which you read with version=active. With version, read a specific saved version. The response lists every native tool with its resolved configuration in one agent_toolset_20260401 entry, so it can be sent back unchanged to agents.update. Use agents.versions.list to enumerate versions.",
237
+ description: "Read the agent configuration currently effective for new sessions. By default, version equals active_version and latest_version identifies the newest saved version, including an unapplied save. Use latest_version for optimistic concurrency when updating. Pass version as a positive integer to read that saved version; version=active is equivalent to omission. The response lists every native tool with its resolved configuration in one agent_toolset_20260401 entry, so tools can be sent back unchanged to agents.update. Use agents.versions.list to enumerate saved versions.",
232
238
  http: "GET",
233
239
  path: "/agent/v1/agents/{agent_id}",
234
240
  streaming: "no",
@@ -245,7 +251,7 @@ across all toolsets allowed.`
245
251
  name: "version",
246
252
  type: "number",
247
253
  required: false,
248
- description: "Agent version to read; omit for the latest saved version. An integer of at least 1 (versions are listed by agents.versions.list), or the string active for the version new sessions use."
254
+ description: "Agent version to read. Omit, or send active, for the currently effective version used by new sessions. Send an integer of at least 1 from agents.versions.list to read that saved version. The default response also includes latest_version, the newest saved version number."
249
255
  }
250
256
  ]
251
257
  },
@@ -253,7 +259,7 @@ across all toolsets allowed.`
253
259
  resource: "agent.agents",
254
260
  method: "update",
255
261
  summary: "Update agent",
256
- description: "Update an agent. Send the current version in the body for optimistic concurrency: a stale version returns 409, and an update that changes nothing keeps the version number. Any real change saves a new version. apply defaults to true and moves active_version to the new version, or to the latest when configuration is unchanged; apply false saves without applying. version_note optionally records up to 280 characters on a newly created version; null means no note, and a note sent when the request changes nothing else returns 400 because a note is stored only with a new version. Existing sessions and tokens keep their version. Omitted fields keep their value. multiagent takes null or a coordinator roster; subagent_model keeps its value when omitted and is cleared by null. Archived agents cannot be updated. tools: [] removes every tool, while tools: null returns 400 (tools cannot be null; send [] to remove every tool). On update, omit skills to keep them, send an array to replace them, or send [] or null to clear them. skills attaches uploaded custom skills as [{type: \"custom\", skill_id, version?}] (skill_id from skills.create or skills.list; at most 20, no repeated skill_id). Omit version, or send \"latest\", to use the skill's newest version when a session starts. type anthropic returns 400.",
262
+ description: "Save configuration changes as a new immutable version. Send latest_version from a default retrieve or update response as the request version for optimistic concurrency; a stale value returns 409. apply defaults to true and makes the new version effective; apply false saves without changing active_version. The response contains the effective configuration, with version equal to active_version and latest_version naming the newest saved version. An unchanged configuration, including a note-only update, is a no-op returning 200 and the current effective version without creating or activating a version. version_note records up to 280 characters only when a configuration change creates a new version; null is equivalent to omission. Use agents.versions.apply to activate an existing saved version. Existing sessions and tokens keep their version. Omitted fields keep their value. multiagent takes null or a coordinator roster; subagent_model keeps its value when omitted and is cleared by null. Archived agents cannot be updated. tools: [] removes every tool, while tools: null returns 400 (tools cannot be null; send [] to remove every tool). On update, omit skills to keep them, send an array to replace them, or send [] or null to clear them. skills attaches uploaded custom skills as [{type: \"custom\", skill_id, version?}] (skill_id from skills.create or skills.list; at most 20, no repeated skill_id). Omit version, or send \"latest\", to use the skill's newest version when a session starts. type anthropic returns 400.",
257
263
  http: "POST",
258
264
  path: "/agent/v1/agents/{agent_id}",
259
265
  streaming: "no",
@@ -300,7 +306,7 @@ to 64 chars each) with values up to 512 chars.`
300
306
  name: "multiagent",
301
307
  type: "object",
302
308
  required: false,
303
- description: "A coordinator topology: the session's primary thread orchestrates\nwork by spawning session threads, each running an agent drawn from the `agents`\nroster."
309
+ description: `Coordinator roster. A bare string agent id is equivalent to {type: "agent", id}; omitting its version pins the referenced agent's current saved version when this roster is saved. {type: "self"} refers to this agent. Specify a concrete version to pin it explicitly.`
304
310
  },
305
311
  {
306
312
  name: "name",
@@ -334,22 +340,19 @@ toolsets allowed.`
334
340
  name: "version",
335
341
  type: "number",
336
342
  required: false,
337
- description: `The agent's current version, used to prevent concurrent overwrites.
338
- Obtain this value from a create or retrieve response. Must be at least 1 if
339
- specified. When supplied, the request fails if it does not match the server's
340
- current version; omit to apply the update unconditionally.`
343
+ description: "Newest saved version used for optimistic concurrency. Obtain latest_version from the default retrieve or update response, or version from versions.list. A stale value returns 409; omit for an unconditional update."
341
344
  },
342
345
  {
343
346
  name: "apply",
344
347
  type: "boolean",
345
348
  required: false,
346
- description: "Defaults to true: apply the newly saved version, or the latest version when configuration is unchanged. Set false to save without changing active_version. Unlike Managed Agents, saving and applying can be separate."
349
+ description: "Defaults to true: apply a newly saved configuration version. Set false to save without changing active_version. An unchanged configuration is a no-op, including note-only updates; use versions.apply to activate a saved version."
347
350
  },
348
351
  {
349
352
  name: "version_note",
350
353
  type: "string",
351
354
  required: false,
352
- description: "Optional change explanation stored as note on the new immutable version, up to 280 characters. Omission or null stores no note. A note sent when nothing else changes returns 400 (nothing to save), because a note is stored only with a new version."
355
+ description: "Optional change explanation, at most 280 characters. Recorded only when a configuration change creates a new immutable version. A note-only update is a no-op returning 200 and the current effective version. Null is equivalent to omission."
353
356
  },
354
357
  {
355
358
  name: "bindings",
@@ -380,6 +383,12 @@ current version; omit to apply the update unconditionally.`
380
383
  required: false,
381
384
  description: "Praxis extension: default subagent model ID, pinned in the agent revision. Call model overrides this; otherwise it overrides the roster member model or the parent model for built-ins. Null clears the default. /agent/v1 only."
382
385
  },
386
+ {
387
+ name: "image_model",
388
+ type: "string",
389
+ required: false,
390
+ description: "Model used by the imagine image tool; defaults to gpt-image-2 when unset. Only models that can generate images are accepted. Omit to preserve; null clears the configured model. /agent/v1 only."
391
+ },
383
392
  {
384
393
  name: "subagents",
385
394
  type: "array",
@@ -439,6 +448,26 @@ current version; omit to apply the update unconditionally.`
439
448
  ]
440
449
  }
441
450
  },
451
+ {
452
+ resource: "agent.agents",
453
+ method: "retrieveAppearance",
454
+ summary: "Get agent appearance",
455
+ description: `Read the saved chat appearance of a service agent.
456
+
457
+ Agent Kit calls this from the page with a customer access token of this agent; your API key and console members can read it too. A token of another agent returns 404. The body is the same as the embed appearance read; a missing appearance returns the agent's own name and avatar only. Responses are private and cacheable for 60 seconds.`,
458
+ http: "GET",
459
+ path: "/agent/v1/agents/{agent_id}/appearance",
460
+ streaming: "no",
461
+ pagination: false,
462
+ pathParams: [
463
+ {
464
+ name: "agent_id",
465
+ sdkName: "agent_id",
466
+ description: "Service agent id from agent creation or listing; with a customer access token, the agent the token was issued for."
467
+ }
468
+ ],
469
+ query: []
470
+ },
442
471
  {
443
472
  resource: "agent.agents",
444
473
  method: "archive",
@@ -457,6 +486,61 @@ current version; omit to apply the update unconditionally.`
457
486
  ],
458
487
  query: []
459
488
  },
489
+ {
490
+ resource: "agent.agents.customers",
491
+ method: "list",
492
+ summary: "List customers",
493
+ description: `List the customers of a service agent, identified and anonymous, most recently seen first.
494
+
495
+ Call this from your backend with your API key, or from the console. Customers follow Shopify Admin customers (list, retrieve, block, sign-out and data deletion of the people who use your storefront), so that experience applies. The list includes customers who signed in but have not started a session yet, and customers recorded under your own ids by embed tokens before customer sign-in existed; an id first seen that way is identified unless it starts with anon_. Unlike Shopify, a customer can be anonymous: a visitor admitted with the publishable key gets an anon_ id, and when it later signs in with anonymous_access_token it is merged: merged_into names the identified customer, and its sessions count toward that customer. Filter with q (a case-sensitive customer id prefix), type (identified or anonymous) and blocked (true or false). limit is 1 to 100, default 20; reuse next_page with the same filters and limit. A customer access token gets 404. Example: GET /agent/v1/agents/agent_example/customers?type=identified&blocked=false&limit=50.`,
496
+ http: "GET",
497
+ path: "/agent/v1/agents/{agent_id}/customers",
498
+ streaming: "no",
499
+ pagination: false,
500
+ pathParams: [
501
+ {
502
+ name: "agent_id",
503
+ sdkName: "agent_id",
504
+ description: "Active service agent id from agent creation or listing."
505
+ }
506
+ ],
507
+ query: [
508
+ {
509
+ name: "limit",
510
+ type: "integer",
511
+ required: false,
512
+ description: "Maximum customers per page, 1 to 100; defaults to 20."
513
+ },
514
+ {
515
+ name: "page",
516
+ type: "string",
517
+ required: false,
518
+ description: "next_page from the previous response with the same q, type, blocked and limit."
519
+ },
520
+ {
521
+ name: "q",
522
+ type: "string",
523
+ required: false,
524
+ description: "Case-sensitive literal prefix of the customer id; omit for all customers."
525
+ },
526
+ {
527
+ name: "type",
528
+ type: "string",
529
+ enum: [
530
+ "identified",
531
+ "anonymous"
532
+ ],
533
+ required: false,
534
+ description: "Only identified or only anonymous customers; omit for both."
535
+ },
536
+ {
537
+ name: "blocked",
538
+ type: "boolean",
539
+ required: false,
540
+ description: "true for blocked customers only, false for customers who are not blocked; omit for both."
541
+ }
542
+ ]
543
+ },
460
544
  {
461
545
  resource: "agent.agents.customers.auth.accessTokens",
462
546
  method: "create",
@@ -614,65 +698,26 @@ Call this from your backend with your API key after your own login succeeds, the
614
698
  }
615
699
  },
616
700
  {
617
- resource: "agent.agents.endUsers",
618
- method: "list",
619
- summary: "List End Users",
620
- description: `List users who have sessions or token issuance history on a service agent.
621
-
622
- Ordered by last_active_at and external_user_id descending. q is a case-sensitive literal prefix, including underscores. limit is 1–100, default 20. Reuse next_page with the same organization, agent, q and limit. Preemptively blocked users without history do not appear. End-user credentials and inaccessible or personal agents return 404.`,
623
- http: "GET",
624
- path: "/agent/v1/agents/{agent_id}/end_users",
625
- streaming: "no",
626
- pagination: false,
627
- pathParams: [
628
- {
629
- name: "agent_id",
630
- sdkName: "agent_id",
631
- description: "Active service agent identifier from agent creation or listing."
632
- }
633
- ],
634
- query: [
635
- {
636
- name: "limit",
637
- type: "integer",
638
- required: false,
639
- description: "Maximum users per page; defaults to 20."
640
- },
641
- {
642
- name: "page",
643
- type: "string",
644
- required: false,
645
- description: "next_page from the previous response with the same agent, q and limit."
646
- },
647
- {
648
- name: "q",
649
- type: "string",
650
- required: false,
651
- description: "Case-sensitive literal prefix of external_user_id; omit or use an empty string for all users."
652
- }
653
- ]
654
- },
655
- {
656
- resource: "agent.agents.endUsers",
701
+ resource: "agent.agents.customers",
657
702
  method: "delete",
658
- summary: "Delete end-user data",
659
- description: `Delete a host application's end-user data from one service agent after explicit confirmation.
703
+ summary: "Delete customer data",
704
+ description: `Delete a customer's data from one service agent after explicit confirmation.
660
705
 
661
- Develop only. Set confirm to the exact external_user_id; missing or mismatched confirmation returns 400. Returns 202 with a pending task id, not completion. Poll the deletion endpoint. Concurrent requests reuse the unfinished task; retry DELETE after failure to resume it. Tokens are revoked and the user is blocked before a seven-day recovery snapshot is verified. Sessions including child sessions, conversation data, grants and feedback are then removed. A pre-existing block remains; a temporary block is removed on success. Attachment metadata is recorded and File attachments are retained. No charge is introduced by this operation. Example: DELETE /agent/v1/agents/agent_example/end_users/customer_123?confirm=customer_123.`,
706
+ Develop only. Set confirm to the exact customer id; a missing or different confirm returns 400 naming the value to send. Returns 202 with a pending task id; poll the deletion endpoint. Concurrent requests reuse the unfinished task; retry DELETE after failure to resume it. Tokens are revoked and the customer is blocked before a seven-day recovery snapshot is verified; sessions including child sessions, conversation data, grants and feedback are then removed. A block that existed before stays; a temporary block is removed on success. File attachments are retained. Example: DELETE /agent/v1/agents/agent_example/customers/cus_8f2a91?confirm=cus_8f2a91.`,
662
707
  http: "DELETE",
663
- path: "/agent/v1/agents/{agent_id}/end_users/{external_user_id}",
708
+ path: "/agent/v1/agents/{agent_id}/customers/{customer_id}",
664
709
  streaming: "no",
665
710
  pagination: false,
666
711
  pathParams: [
667
712
  {
668
713
  name: "agent_id",
669
714
  sdkName: "agent_id",
670
- description: "Active service agent identifier from agent creation or listing."
715
+ description: "Active service agent id from agent creation or listing."
671
716
  },
672
717
  {
673
- name: "external_user_id",
674
- sdkName: "external_user_id",
675
- description: "Host user identifier supplied at issuance or from end-user listing."
718
+ name: "customer_id",
719
+ sdkName: "customer_id",
720
+ description: "Customer id from customer listing, or your own customer_id."
676
721
  }
677
722
  ],
678
723
  query: [
@@ -680,131 +725,131 @@ Develop only. Set confirm to the exact external_user_id; missing or mismatched c
680
725
  name: "confirm",
681
726
  type: "string",
682
727
  required: true,
683
- description: "Must exactly equal the external_user_id path parameter to confirm destructive deletion."
728
+ description: "Must equal the customer_id path parameter exactly, confirming the destructive deletion."
684
729
  }
685
730
  ]
686
731
  },
687
732
  {
688
- resource: "agent.agents.endUsers",
733
+ resource: "agent.agents.customers",
689
734
  method: "retrieve",
690
- summary: "Get End User",
691
- description: `Inspect one end user and their twenty most recently updated sessions.
735
+ summary: "Get customer",
736
+ description: `Retrieve one customer of a service agent with its twenty most recently updated sessions.
692
737
 
693
- Use external_user_id from listing or your host application. Users without session or issuance history return 404, including preemptively blocked users. End-user credentials and inaccessible or personal agents return 404.`,
738
+ Use the customer id from the list or your own customer_id. An unknown customer returns 404 CUSTOMER_NOT_FOUND, and so does a customer access token. Unlike Shopify, an identified customer's session_count, cost and recent_sessions include the sessions of anonymous customers merged into it; the merged anonymous customer still shows its own sessions and its merged_into.`,
694
739
  http: "GET",
695
- path: "/agent/v1/agents/{agent_id}/end_users/{external_user_id}",
740
+ path: "/agent/v1/agents/{agent_id}/customers/{customer_id}",
696
741
  streaming: "no",
697
742
  pagination: false,
698
743
  pathParams: [
699
744
  {
700
745
  name: "agent_id",
701
746
  sdkName: "agent_id",
702
- description: "Active service agent identifier from agent creation or listing."
747
+ description: "Active service agent id from agent creation or listing."
703
748
  },
704
749
  {
705
- name: "external_user_id",
706
- sdkName: "external_user_id",
707
- description: "Host user identifier supplied at issuance or from end-user listing."
750
+ name: "customer_id",
751
+ sdkName: "customer_id",
752
+ description: "Customer id from customer listing, or your own customer_id."
708
753
  }
709
754
  ],
710
755
  query: []
711
756
  },
712
757
  {
713
- resource: "agent.agents.endUsers.block",
758
+ resource: "agent.agents.customers.block",
714
759
  method: "create",
715
- summary: "Block End User",
716
- description: `Block token issuance and session creation, then revoke existing tokens for an end user.
760
+ summary: "Block customer",
761
+ description: `Block a customer and end every sign-in it has on this agent.
717
762
 
718
- May block a user before any history exists; timestamps are then null and counts and cost are zero. Requires an embed policy, otherwise returns 409 with setup guidance. Deduplicates the policy blocklist and retains its 1000-user maximum. If revocation returns 502, the user remains blocked; retry to finish revocation. Repeats keep the user blocked and revoke any remaining grants. End-user credentials and inaccessible or personal agents return 404.`,
763
+ Blocks the customer, then ends every live sign-in the way logout does: each access token is revoked and its open event streams close. From then on grant_codes, access_tokens, renew and new sessions for this customer return CUSTOMER_BLOCKED until you unblock it. Idempotent: a repeat keeps the first block time and revokes whatever is still live. If credential revocation fails the request returns 502 and the customer stays blocked; retry to finish. An unknown customer returns 404 CUSTOMER_NOT_FOUND.`,
719
764
  http: "POST",
720
- path: "/agent/v1/agents/{agent_id}/end_users/{external_user_id}/block",
765
+ path: "/agent/v1/agents/{agent_id}/customers/{customer_id}/block",
721
766
  streaming: "no",
722
767
  pagination: false,
723
768
  pathParams: [
724
769
  {
725
770
  name: "agent_id",
726
771
  sdkName: "agent_id",
727
- description: "Active service agent identifier from agent creation or listing."
772
+ description: "Active service agent id from agent creation or listing."
728
773
  },
729
774
  {
730
- name: "external_user_id",
731
- sdkName: "external_user_id",
732
- description: "Host user identifier supplied at issuance or from end-user listing."
775
+ name: "customer_id",
776
+ sdkName: "customer_id",
777
+ description: "Customer id from customer listing, or your own customer_id."
733
778
  }
734
779
  ],
735
780
  query: []
736
781
  },
737
782
  {
738
- resource: "agent.agents.endUsers",
783
+ resource: "agent.agents.customers",
739
784
  method: "retrieveDeletion",
740
- summary: "Get end-user deletion",
741
- description: `Poll the latest deletion task for an end user, including after the user data has been removed.
785
+ summary: "Get customer deletion",
786
+ description: `Poll the latest deletion task of a customer, including after its data has been removed.
742
787
 
743
- Use the same agent_id and external_user_id as the confirmed DELETE. Status is pending, snapshotting, deleting, done or failed. Counts are empty until a verified snapshot exists. A failed task remains blocked and resumes when DELETE is retried with matching confirmation. snapshot_key is an operator recovery reference retained for seven days, not a public download URL. End-user credentials, inaccessible or personal agents, and missing tasks return 404. This read does not create a task or charge usage.`,
788
+ Use the same agent_id and customer id as the confirmed DELETE. Status is pending, snapshotting, deleting, done or failed. Counts are empty until a verified snapshot exists. snapshot_key is an operator recovery reference retained for seven days, not a download URL. A customer access token and a missing task return 404.`,
744
789
  http: "GET",
745
- path: "/agent/v1/agents/{agent_id}/end_users/{external_user_id}/deletion",
790
+ path: "/agent/v1/agents/{agent_id}/customers/{customer_id}/deletion",
746
791
  streaming: "no",
747
792
  pagination: false,
748
793
  pathParams: [
749
794
  {
750
795
  name: "agent_id",
751
796
  sdkName: "agent_id",
752
- description: "Active service agent identifier from agent creation or listing."
797
+ description: "Active service agent id from agent creation or listing."
753
798
  },
754
799
  {
755
- name: "external_user_id",
756
- sdkName: "external_user_id",
757
- description: "Host user identifier supplied at issuance or from end-user listing."
800
+ name: "customer_id",
801
+ sdkName: "customer_id",
802
+ description: "Customer id from customer listing, or your own customer_id."
758
803
  }
759
804
  ],
760
805
  query: []
761
806
  },
762
807
  {
763
- resource: "agent.agents.endUsers.revokeTokens",
808
+ resource: "agent.agents.customers.revokeTokens",
764
809
  method: "create",
765
- summary: "Revoke End User Tokens",
766
- description: `Revoke all issued tokens for an end user and terminate their open embed streams.
810
+ summary: "Revoke customer tokens",
811
+ description: `Sign a customer out everywhere without blocking it.
767
812
 
768
- Revokes credentials before marking grants revoked. Upstream failure returns 502 without changing grant revocation timestamps. Returns the count of newly revoked grants; a repeat without new grants returns zero. Does not block future issuance. End-user credentials and inaccessible or personal agents return 404.`,
813
+ Ends every live sign-in of the customer, revoking each access token and closing its open event streams; the customer can sign in again right away. Returns the number of access tokens this request revoked; a repeat returns 0. Credential revocation failure returns 502; retry to finish. An unknown customer returns 404 CUSTOMER_NOT_FOUND.`,
769
814
  http: "POST",
770
- path: "/agent/v1/agents/{agent_id}/end_users/{external_user_id}/revoke_tokens",
815
+ path: "/agent/v1/agents/{agent_id}/customers/{customer_id}/revoke_tokens",
771
816
  streaming: "no",
772
817
  pagination: false,
773
818
  pathParams: [
774
819
  {
775
820
  name: "agent_id",
776
821
  sdkName: "agent_id",
777
- description: "Active service agent identifier from agent creation or listing."
822
+ description: "Active service agent id from agent creation or listing."
778
823
  },
779
824
  {
780
- name: "external_user_id",
781
- sdkName: "external_user_id",
782
- description: "Host user identifier supplied at issuance or from end-user listing."
825
+ name: "customer_id",
826
+ sdkName: "customer_id",
827
+ description: "Customer id from customer listing, or your own customer_id."
783
828
  }
784
829
  ],
785
830
  query: []
786
831
  },
787
832
  {
788
- resource: "agent.agents.endUsers.unblock",
833
+ resource: "agent.agents.customers.unblock",
789
834
  method: "create",
790
- summary: "Unblock End User",
791
- description: `Allow an end user to receive new tokens and create new sessions again.
835
+ summary: "Unblock customer",
836
+ description: `Allow a blocked customer to sign in and start sessions again.
792
837
 
793
- Removes the user from the blocklist; previously revoked tokens stay revoked. Idempotent. Requires an embed policy, otherwise returns 409 with setup guidance. Returns null timestamps and zero counts and cost when no session or issuance history exists. End-user credentials and inaccessible or personal agents return 404.`,
838
+ Idempotent. Access tokens revoked while the customer was blocked stay revoked; sign the customer in again with a new grant code. An unknown customer returns 404 CUSTOMER_NOT_FOUND.`,
794
839
  http: "POST",
795
- path: "/agent/v1/agents/{agent_id}/end_users/{external_user_id}/unblock",
840
+ path: "/agent/v1/agents/{agent_id}/customers/{customer_id}/unblock",
796
841
  streaming: "no",
797
842
  pagination: false,
798
843
  pathParams: [
799
844
  {
800
845
  name: "agent_id",
801
846
  sdkName: "agent_id",
802
- description: "Active service agent identifier from agent creation or listing."
847
+ description: "Active service agent id from agent creation or listing."
803
848
  },
804
849
  {
805
- name: "external_user_id",
806
- sdkName: "external_user_id",
807
- description: "Host user identifier supplied at issuance or from end-user listing."
850
+ name: "customer_id",
851
+ sdkName: "customer_id",
852
+ description: "Customer id from customer listing, or your own customer_id."
808
853
  }
809
854
  ],
810
855
  query: []
@@ -831,7 +876,7 @@ Removes the user from the blocklist; previously revoked tokens stay revoked. Ide
831
876
  resource: "agent.agents.versions",
832
877
  method: "list",
833
878
  summary: "List agent versions",
834
- description: "List the saved versions of one agent, in pages of at most 100 (default 20). Each item is the full agent definition at that version, so you can compare what changed between versions. active is true only for the item that new sessions use; active_version on each item is the agent-level value, kept for compatibility. Use agents.retrieve with version to read a single one; agent_id comes from agents.list or agents.create.",
879
+ description: "List the saved versions of one agent in ascending version number, oldest first, in pages of at most 100 (default 20). Each item is the full agent definition at that saved version, so you can compare configurations. active is true only for the item new sessions use. active_version on every item is the same agent-level currently effective version; it is not that item's version. Use agents.retrieve with version to read a single saved version; agent_id comes from agents.list or agents.create. Pass next_page as page to continue.",
835
880
  http: "GET",
836
881
  path: "/agent/v1/agents/{agent_id}/versions",
837
882
  streaming: "no",
@@ -862,7 +907,7 @@ Removes the user from the blocklist; previously revoked tokens stay revoked. Ide
862
907
  resource: "agent.agents.versions",
863
908
  method: "apply",
864
909
  summary: "Apply Agent Version",
865
- description: "Apply a version from agents.versions.list by its version number. This idempotent operation changes active_version without creating a version; existing sessions and tokens keep their version. The response is the latest saved agent with its current active_version. Missing versions return 404 Agent version not found; archived agents return 409 Agent is archived. For example, POST /agent/v1/agents/{agent_id}/versions/2/apply with no body.",
910
+ description: "Apply a saved version from agents.versions.list for new sessions and newly issued tokens, without creating a version. Existing sessions and tokens retain their version. The response contains the effective configuration with version equal to active_version and latest_version naming the newest saved version. Missing versions return 404; archived agents return 409. For example, POST /agent/v1/agents/{agent_id}/versions/2/apply with no body.",
866
911
  http: "POST",
867
912
  path: "/agent/v1/agents/{agent_id}/versions/{version}/apply",
868
913
  streaming: "no",
@@ -1639,214 +1684,6 @@ null to clear. Maximum 50.`
1639
1684
  ],
1640
1685
  query: []
1641
1686
  },
1642
- {
1643
- resource: "agent.embed",
1644
- method: "retrieveAppearance",
1645
- summary: "Read chat appearance",
1646
- description: "Load saved appearance for an iframe or Hosted chat page. Supply an end-user embed token as Bearer authorization, or a console-issued publishable key in Praxis-Publishable-Key before anonymous token issuance. The credential selects the agent; identity_number and agent_id query parameters are rejected with 400. Missing appearance returns an empty object. Kit option names retain camelCase. Responses are private and cacheable for 60 seconds. Component hosts configure Kit in their own code instead.",
1647
- http: "GET",
1648
- path: "/agent/v1/embed/appearance",
1649
- streaming: "no",
1650
- pagination: false,
1651
- pathParams: [],
1652
- query: []
1653
- },
1654
- {
1655
- resource: "agent.embed.exchange",
1656
- method: "create",
1657
- summary: "Exchange Hosted Code",
1658
- description: `Redeem a single-use hosted link credential for an end-user token.
1659
-
1660
- Read code from the c fragment parameter of hosted_url returned by embed token creation with hosted true, then remove the fragment before exchanging. No Authorization header is required; the code authenticates this request. The code expires after 60 seconds and is consumed atomically on exchange, so concurrent attempts have only one winner. Expired, used and unknown codes return the same 404 body. Keep the token in memory and return to the host website for a fresh link when it expires; exchange cannot refresh it. Requests are IP limited per minute using the anonymous entrypoint budget (default 20). Example body is {"code":"<code from hosted_url>"}.`,
1661
- http: "POST",
1662
- path: "/agent/v1/embed/exchange",
1663
- streaming: "no",
1664
- pagination: false,
1665
- pathParams: [],
1666
- query: [],
1667
- body: {
1668
- required: true,
1669
- fields: [
1670
- {
1671
- name: "code",
1672
- type: "string",
1673
- required: true,
1674
- description: "Single-use credential from the c fragment parameter of hosted_url returned by embed token creation. Valid for 60 seconds."
1675
- }
1676
- ]
1677
- }
1678
- },
1679
- {
1680
- resource: "agent.embedTokens",
1681
- method: "list",
1682
- summary: "List Embed Tokens",
1683
- description: `List embed token issuance records in your organization.
1684
-
1685
- Includes expired and revoked grants; returns neither token nor token_id. Sorts by created_at, then grant id, both descending. agent_id accepts agent_ or agt_; external_user_id matches exactly. limit is 1–100 (default 20). Reuse next_page as page with the same filters and organization; a mismatch returns 400. End-user credentials return 404.`,
1686
- http: "GET",
1687
- path: "/agent/v1/embed_tokens",
1688
- streaming: "no",
1689
- pagination: false,
1690
- pathParams: [],
1691
- query: [
1692
- {
1693
- name: "agent_id",
1694
- type: "string",
1695
- required: false,
1696
- description: "Filter by service agent identifier (agent_ or agt_ prefix)."
1697
- },
1698
- {
1699
- name: "external_user_id",
1700
- type: "string",
1701
- required: false,
1702
- description: "Exact host user identifier supplied at issuance."
1703
- },
1704
- {
1705
- name: "limit",
1706
- type: "integer",
1707
- required: false,
1708
- description: "Maximum records per page; defaults to 20."
1709
- },
1710
- {
1711
- name: "page",
1712
- type: "string",
1713
- required: false,
1714
- description: "next_page from a previous response with the same filters."
1715
- }
1716
- ]
1717
- },
1718
- {
1719
- resource: "agent.embedTokens",
1720
- method: "create",
1721
- summary: "Create Embed Token",
1722
- description: `Issue a short-lived credential on your backend for an end user of a service agent.
1723
-
1724
- Requires an active service agent in your organization with an embed policy. Pins the requested version or the latest version and snapshots the policy environment, vaults and resources; metadata comes from the request. Blocked users cannot receive tokens. Keep your API key on the backend and pass only the returned token to the frontend. Every call creates a new grant; issuance is not idempotent. Set hosted to true to also receive hosted_url; redirect the user there within 60 seconds. The agent must have an identity_number. The URL fragment contains a single-use exchange credential, not the token. Omit hosted or set false for ordinary token issuance.`,
1725
- http: "POST",
1726
- path: "/agent/v1/embed_tokens",
1727
- streaming: "no",
1728
- pagination: false,
1729
- pathParams: [],
1730
- query: [],
1731
- body: {
1732
- required: true,
1733
- fields: [
1734
- {
1735
- name: "hosted",
1736
- type: "boolean",
1737
- required: false,
1738
- description: "Set true to also return a hosted chat URL with a single-use credential valid for 60 seconds. Defaults to false; the agent must have an identity_number."
1739
- },
1740
- {
1741
- name: "agent",
1742
- type: "string",
1743
- required: true,
1744
- description: "Service agent ID or identity_number from agent retrieval; it must belong to your organization and be active."
1745
- },
1746
- {
1747
- name: "version",
1748
- type: "integer",
1749
- required: false,
1750
- description: "Existing agent version to pin. Omit to pin the latest version at issuance."
1751
- },
1752
- {
1753
- name: "external_user_id",
1754
- type: "string",
1755
- required: true,
1756
- description: "Your application's stable end-user identifier, scoped to this organization and agent."
1757
- },
1758
- {
1759
- name: "ttl_seconds",
1760
- type: "integer",
1761
- required: false,
1762
- description: "Token lifetime in seconds. Defaults to the embed policy TTL and cannot exceed its maximum or 3600 seconds."
1763
- },
1764
- {
1765
- name: "budget_cents",
1766
- type: "integer",
1767
- required: false,
1768
- description: "Session budget in cents. Defaults to the embed policy session budget and cannot exceed its maximum."
1769
- },
1770
- {
1771
- name: "system_message",
1772
- type: "array",
1773
- itemType: "object",
1774
- required: false,
1775
- description: "Optional host context as text blocks, limited to 8192 UTF-8 bytes in total."
1776
- },
1777
- {
1778
- name: "agent_override",
1779
- type: "object",
1780
- required: false,
1781
- description: "Optional system prompt override, accepted only when the embed policy allows agent overrides."
1782
- },
1783
- {
1784
- name: "allowed_origins",
1785
- type: "array",
1786
- itemType: "string",
1787
- required: false,
1788
- description: "Optional subset of the policy origin entries, compared exactly. Omit to snapshot every policy origin."
1789
- },
1790
- {
1791
- name: "metadata",
1792
- type: "object",
1793
- required: false,
1794
- description: "Host metadata preserved verbatim; at most 16 keys of 1–64 characters and string values of at most 512 characters. Defaults to an empty object."
1795
- }
1796
- ]
1797
- }
1798
- },
1799
- {
1800
- resource: "agent.embedTokens.anonymous",
1801
- method: "create",
1802
- summary: "Issue anonymous visitor token",
1803
- description: `Obtain a short-lived embedding token for a visitor without an account using the agent owner's publishable key.
1804
-
1805
- No Authorization header is required. Send the browser Origin allowed by the agent policy. Save a returned visitor_secret and reuse it for refreshes; only new visitors receive one. Unknown secrets create new visitors, and extra fields including visitor_id return 400. Issuance uses the key creator's organization membership, the key session budget and the smaller of the policy TTL maximum and 3600 seconds. IP requests are limited per minute (default 20); UTC daily session and spending caps are checked across the key's primary sessions created that day. Token issuance itself does not create a session or charge usage; subsequent sessions bill the host organization. Example body: {"publishable_key":"pk_praxis_example"}.`,
1806
- http: "POST",
1807
- path: "/agent/v1/embed_tokens/anonymous",
1808
- streaming: "no",
1809
- pagination: false,
1810
- pathParams: [],
1811
- query: [],
1812
- body: {
1813
- required: true,
1814
- fields: [
1815
- {
1816
- name: "publishable_key",
1817
- type: "string",
1818
- required: true,
1819
- description: "Public key created by the service agent owner; safe to include in browser code."
1820
- },
1821
- {
1822
- name: "visitor_secret",
1823
- type: "string",
1824
- required: false,
1825
- description: "Secret returned by a previous anonymous issuance for this key. Omit for a new visitor; an unknown secret creates a new visitor."
1826
- }
1827
- ]
1828
- }
1829
- },
1830
- {
1831
- resource: "agent.embedTokens.revoke",
1832
- method: "create",
1833
- summary: "Revoke Embed Token",
1834
- description: `Revoke an embed token and close its open event streams.
1835
-
1836
- Use an id from issuance or listing. Revokes the credential before setting revoked_at; upstream failure leaves it unset. Streams receive session.error (EMBED_TOKEN_REVOKED), then close immediately; other credentials are unaffected. Idempotent; repeats return the original revoked record without another revocation or audit. Missing or foreign grants and end-user credentials return 404.`,
1837
- http: "POST",
1838
- path: "/agent/v1/embed_tokens/{id}/revoke",
1839
- streaming: "no",
1840
- pagination: false,
1841
- pathParams: [
1842
- {
1843
- name: "id",
1844
- sdkName: "id",
1845
- description: "Grant id returned by issuance or listing."
1846
- }
1847
- ],
1848
- query: []
1849
- },
1850
1687
  {
1851
1688
  resource: "agent.environments",
1852
1689
  method: "list",
@@ -18307,7 +18144,7 @@ var setRunFeedback = (options) => (options.client ?? client).post({
18307
18144
  ...options.headers
18308
18145
  }
18309
18146
  });
18310
- var listEndUsers = (options) => (options.client ?? client).get({
18147
+ var listCustomers = (options) => (options.client ?? client).get({
18311
18148
  security: [{
18312
18149
  key: "BearerAuth",
18313
18150
  scheme: "bearer",
@@ -18317,10 +18154,10 @@ var listEndUsers = (options) => (options.client ?? client).get({
18317
18154
  name: "X-API-Key",
18318
18155
  type: "apiKey"
18319
18156
  }],
18320
- url: "/agent/v1/agents/{agent_id}/end_users",
18157
+ url: "/agent/v1/agents/{agent_id}/customers",
18321
18158
  ...options
18322
18159
  });
18323
- var deleteEndUser = (options) => (options.client ?? client).delete({
18160
+ var deleteCustomer = (options) => (options.client ?? client).delete({
18324
18161
  security: [{
18325
18162
  key: "BearerAuth",
18326
18163
  scheme: "bearer",
@@ -18330,10 +18167,10 @@ var deleteEndUser = (options) => (options.client ?? client).delete({
18330
18167
  name: "X-API-Key",
18331
18168
  type: "apiKey"
18332
18169
  }],
18333
- url: "/agent/v1/agents/{agent_id}/end_users/{external_user_id}",
18170
+ url: "/agent/v1/agents/{agent_id}/customers/{customer_id}",
18334
18171
  ...options
18335
18172
  });
18336
- var getEndUser = (options) => (options.client ?? client).get({
18173
+ var getCustomer = (options) => (options.client ?? client).get({
18337
18174
  security: [{
18338
18175
  key: "BearerAuth",
18339
18176
  scheme: "bearer",
@@ -18343,10 +18180,10 @@ var getEndUser = (options) => (options.client ?? client).get({
18343
18180
  name: "X-API-Key",
18344
18181
  type: "apiKey"
18345
18182
  }],
18346
- url: "/agent/v1/agents/{agent_id}/end_users/{external_user_id}",
18183
+ url: "/agent/v1/agents/{agent_id}/customers/{customer_id}",
18347
18184
  ...options
18348
18185
  });
18349
- var getEndUserDeletion = (options) => (options.client ?? client).get({
18186
+ var getCustomerDeletion = (options) => (options.client ?? client).get({
18350
18187
  security: [{
18351
18188
  key: "BearerAuth",
18352
18189
  scheme: "bearer",
@@ -18356,10 +18193,10 @@ var getEndUserDeletion = (options) => (options.client ?? client).get({
18356
18193
  name: "X-API-Key",
18357
18194
  type: "apiKey"
18358
18195
  }],
18359
- url: "/agent/v1/agents/{agent_id}/end_users/{external_user_id}/deletion",
18196
+ url: "/agent/v1/agents/{agent_id}/customers/{customer_id}/deletion",
18360
18197
  ...options
18361
18198
  });
18362
- var revokeEndUserTokens = (options) => (options.client ?? client).post({
18199
+ var blockCustomer = (options) => (options.client ?? client).post({
18363
18200
  security: [{
18364
18201
  key: "BearerAuth",
18365
18202
  scheme: "bearer",
@@ -18369,10 +18206,10 @@ var revokeEndUserTokens = (options) => (options.client ?? client).post({
18369
18206
  name: "X-API-Key",
18370
18207
  type: "apiKey"
18371
18208
  }],
18372
- url: "/agent/v1/agents/{agent_id}/end_users/{external_user_id}/revoke_tokens",
18209
+ url: "/agent/v1/agents/{agent_id}/customers/{customer_id}/block",
18373
18210
  ...options
18374
18211
  });
18375
- var blockEndUser = (options) => (options.client ?? client).post({
18212
+ var unblockCustomer = (options) => (options.client ?? client).post({
18376
18213
  security: [{
18377
18214
  key: "BearerAuth",
18378
18215
  scheme: "bearer",
@@ -18382,10 +18219,10 @@ var blockEndUser = (options) => (options.client ?? client).post({
18382
18219
  name: "X-API-Key",
18383
18220
  type: "apiKey"
18384
18221
  }],
18385
- url: "/agent/v1/agents/{agent_id}/end_users/{external_user_id}/block",
18222
+ url: "/agent/v1/agents/{agent_id}/customers/{customer_id}/unblock",
18386
18223
  ...options
18387
18224
  });
18388
- var unblockEndUser = (options) => (options.client ?? client).post({
18225
+ var revokeCustomerTokens = (options) => (options.client ?? client).post({
18389
18226
  security: [{
18390
18227
  key: "BearerAuth",
18391
18228
  scheme: "bearer",
@@ -18395,35 +18232,10 @@ var unblockEndUser = (options) => (options.client ?? client).post({
18395
18232
  name: "X-API-Key",
18396
18233
  type: "apiKey"
18397
18234
  }],
18398
- url: "/agent/v1/agents/{agent_id}/end_users/{external_user_id}/unblock",
18235
+ url: "/agent/v1/agents/{agent_id}/customers/{customer_id}/revoke_tokens",
18399
18236
  ...options
18400
18237
  });
18401
- var createCustomerGrantCode = (options) => (options.client ?? client).post({
18402
- security: [{
18403
- key: "BearerAuth",
18404
- scheme: "bearer",
18405
- type: "http"
18406
- }, {
18407
- key: "ApiKeyAuth",
18408
- name: "X-API-Key",
18409
- type: "apiKey"
18410
- }],
18411
- url: "/agent/v1/agents/{agent_id}/customers/auth/grant_codes",
18412
- ...options,
18413
- headers: {
18414
- "Content-Type": "application/json",
18415
- ...options.headers
18416
- }
18417
- });
18418
- var createCustomerAccessToken = (options) => (options.client ?? client).post({
18419
- url: "/agent/v1/agents/{agent_id}/customers/auth/access_tokens",
18420
- ...options,
18421
- headers: {
18422
- "Content-Type": "application/json",
18423
- ...options.headers
18424
- }
18425
- });
18426
- var renewCustomerAccessToken = (options) => (options.client ?? client).post({
18238
+ var getAgentAppearance = (options) => (options.client ?? client).get({
18427
18239
  security: [{
18428
18240
  key: "BearerAuth",
18429
18241
  scheme: "bearer",
@@ -18433,10 +18245,10 @@ var renewCustomerAccessToken = (options) => (options.client ?? client).post({
18433
18245
  name: "X-API-Key",
18434
18246
  type: "apiKey"
18435
18247
  }],
18436
- url: "/agent/v1/agents/{agent_id}/customers/auth/access_tokens/renew",
18248
+ url: "/agent/v1/agents/{agent_id}/appearance",
18437
18249
  ...options
18438
18250
  });
18439
- var deleteCurrentCustomerAccessToken = (options) => (options.client ?? client).delete({
18251
+ var createCustomerGrantCode = (options) => (options.client ?? client).post({
18440
18252
  security: [{
18441
18253
  key: "BearerAuth",
18442
18254
  scheme: "bearer",
@@ -18446,26 +18258,22 @@ var deleteCurrentCustomerAccessToken = (options) => (options.client ?? client).d
18446
18258
  name: "X-API-Key",
18447
18259
  type: "apiKey"
18448
18260
  }],
18449
- url: "/agent/v1/agents/{agent_id}/customers/auth/access_tokens/current",
18450
- ...options
18451
- });
18452
- var exchangeEmbedCode = (options) => (options.client ?? client).post({
18453
- url: "/agent/v1/embed/exchange",
18261
+ url: "/agent/v1/agents/{agent_id}/customers/auth/grant_codes",
18454
18262
  ...options,
18455
18263
  headers: {
18456
18264
  "Content-Type": "application/json",
18457
18265
  ...options.headers
18458
18266
  }
18459
18267
  });
18460
- var createAnonymousEmbedToken = (options) => (options.client ?? client).post({
18461
- url: "/agent/v1/embed_tokens/anonymous",
18268
+ var createCustomerAccessToken = (options) => (options.client ?? client).post({
18269
+ url: "/agent/v1/agents/{agent_id}/customers/auth/access_tokens",
18462
18270
  ...options,
18463
18271
  headers: {
18464
18272
  "Content-Type": "application/json",
18465
18273
  ...options.headers
18466
18274
  }
18467
18275
  });
18468
- var listEmbedTokens = (options) => (options?.client ?? client).get({
18276
+ var renewCustomerAccessToken = (options) => (options.client ?? client).post({
18469
18277
  security: [{
18470
18278
  key: "BearerAuth",
18471
18279
  scheme: "bearer",
@@ -18475,27 +18283,10 @@ var listEmbedTokens = (options) => (options?.client ?? client).get({
18475
18283
  name: "X-API-Key",
18476
18284
  type: "apiKey"
18477
18285
  }],
18478
- url: "/agent/v1/embed_tokens",
18286
+ url: "/agent/v1/agents/{agent_id}/customers/auth/access_tokens/renew",
18479
18287
  ...options
18480
18288
  });
18481
- var createEmbedToken = (options) => (options.client ?? client).post({
18482
- security: [{
18483
- key: "BearerAuth",
18484
- scheme: "bearer",
18485
- type: "http"
18486
- }, {
18487
- key: "ApiKeyAuth",
18488
- name: "X-API-Key",
18489
- type: "apiKey"
18490
- }],
18491
- url: "/agent/v1/embed_tokens",
18492
- ...options,
18493
- headers: {
18494
- "Content-Type": "application/json",
18495
- ...options.headers
18496
- }
18497
- });
18498
- var revokeEmbedToken = (options) => (options.client ?? client).post({
18289
+ var deleteCurrentCustomerAccessToken = (options) => (options.client ?? client).delete({
18499
18290
  security: [{
18500
18291
  key: "BearerAuth",
18501
18292
  scheme: "bearer",
@@ -18505,7 +18296,7 @@ var revokeEmbedToken = (options) => (options.client ?? client).post({
18505
18296
  name: "X-API-Key",
18506
18297
  type: "apiKey"
18507
18298
  }],
18508
- url: "/agent/v1/embed_tokens/{id}/revoke",
18299
+ url: "/agent/v1/agents/{agent_id}/customers/auth/access_tokens/current",
18509
18300
  ...options
18510
18301
  });
18511
18302
  var computersList = (options) => (options?.client ?? client).get({
@@ -18806,15 +18597,6 @@ var listSessionCompactions = (options) => (options.client ?? client).get({
18806
18597
  url: "/agent/v1/sessions/{session_id}/compactions",
18807
18598
  ...options
18808
18599
  });
18809
- var getEmbedAppearance = (options) => (options?.client ?? client).get({
18810
- security: [{
18811
- key: "BearerAuth",
18812
- scheme: "bearer",
18813
- type: "http"
18814
- }, { name: "Praxis-Publishable-Key", type: "apiKey" }],
18815
- url: "/agent/v1/embed/appearance",
18816
- ...options
18817
- });
18818
18600
  var createAudioSpeech = (options) => (options.client ?? client).post({
18819
18601
  security: [{
18820
18602
  key: "BearerAuth",
@@ -24177,25 +23959,24 @@ function createAgent(transport) {
24177
23959
  grantCodes: {
24178
23960
  create: bind(transport, createCustomerGrantCode)
24179
23961
  }
24180
- }
24181
- },
24182
- endUsers: {
23962
+ },
24183
23963
  block: {
24184
- create: bind(transport, blockEndUser)
23964
+ create: bind(transport, blockCustomer)
24185
23965
  },
24186
- delete: bind(transport, deleteEndUser),
24187
- list: bind(transport, listEndUsers),
24188
- retrieve: bind(transport, getEndUser),
24189
- retrieveDeletion: bind(transport, getEndUserDeletion),
23966
+ delete: bind(transport, deleteCustomer),
23967
+ list: bind(transport, listCustomers),
23968
+ retrieve: bind(transport, getCustomer),
23969
+ retrieveDeletion: bind(transport, getCustomerDeletion),
24190
23970
  revokeTokens: {
24191
- create: bind(transport, revokeEndUserTokens)
23971
+ create: bind(transport, revokeCustomerTokens)
24192
23972
  },
24193
23973
  unblock: {
24194
- create: bind(transport, unblockEndUser)
23974
+ create: bind(transport, unblockCustomer)
24195
23975
  }
24196
23976
  },
24197
23977
  list: bind(transport, agentsList),
24198
23978
  retrieve: bind(transport, agentsRetrieve),
23979
+ retrieveAppearance: bind(transport, getAgentAppearance),
24199
23980
  unarchive: {
24200
23981
  create: bind(transport, unarchiveAgent)
24201
23982
  },
@@ -24245,22 +24026,6 @@ function createAgent(transport) {
24245
24026
  },
24246
24027
  update: bind(transport, deploymentsUpdate)
24247
24028
  },
24248
- embed: {
24249
- exchange: {
24250
- create: bind(transport, exchangeEmbedCode)
24251
- },
24252
- retrieveAppearance: bind(transport, getEmbedAppearance)
24253
- },
24254
- embedTokens: {
24255
- anonymous: {
24256
- create: bind(transport, createAnonymousEmbedToken)
24257
- },
24258
- create: bind(transport, createEmbedToken),
24259
- list: bind(transport, listEmbedTokens),
24260
- revoke: {
24261
- create: bind(transport, revokeEmbedToken)
24262
- }
24263
- },
24264
24029
  environments: {
24265
24030
  archive: bind(transport, environmentsArchive),
24266
24031
  create: bind(transport, environmentsCreate),
@@ -27029,7 +26794,7 @@ function startProgress(ctx, write = (text) => writeOutput({ stderr: text })) {
27029
26794
  }
27030
26795
 
27031
26796
  // src/main.ts
27032
- var version = "0.1.1-dev.d25d171";
26797
+ var version = "0.1.1-dev.d775f1e";
27033
26798
  var commands = commandTree(operations);
27034
26799
  var manual = [["login"], ["logout"], ["whoami"], ["org", "list"], ["org", "switch"], ["api"], ["skill"]];
27035
26800
  function route(argv) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deepraxis/cli",
3
- "version": "0.1.1-dev.d25d171",
3
+ "version": "0.1.1-dev.d775f1e",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "praxis": "dist/praxis.js"