@cadenya/cadenya 1.3.1 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/client.d.ts CHANGED
@@ -31,7 +31,7 @@ export interface ClientOptions {
31
31
  * Defaults to 60000; a non-finite or <= 0 value disables the deadline.
32
32
  */
33
33
  timeout?: number;
34
- /** Headers sent with every request. */
34
+ /** Additional request headers. Browsers supply their own User-Agent by default. */
35
35
  defaultHeaders?: Record<string, string>;
36
36
  /** Custom fetch implementation. */
37
37
  fetch?: typeof fetch;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,mCAAmC;IACnC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,sHAAsH;IACtH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8GAA8G;IAC9G,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,OAAO;IAClB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAE5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;gBAEzB,OAAO,GAAE,aAAkB;CAuCxC"}
package/dist/client.js CHANGED
@@ -50,7 +50,7 @@ export class Cadenya {
50
50
  authHeader: () => ({ Authorization: `Bearer ${apiKey}` }),
51
51
  maxRetries: options.maxRetries ?? 0,
52
52
  timeout: options.timeout,
53
- defaultHeaders: { 'User-Agent': 'cadenya-typescript/1.3.0 (api 1.0)', ...options.defaultHeaders },
53
+ defaultHeaders: { ...nodeUserAgent('cadenya-typescript/1.5.0 (api 1.0)'), ...options.defaultHeaders },
54
54
  fetch: options.fetch,
55
55
  logger: options.logger,
56
56
  logLevel: options.logLevel,
@@ -76,6 +76,13 @@ export class Cadenya {
76
76
  this.workspaceSecrets = new WorkspaceSecrets(this._client);
77
77
  }
78
78
  }
79
+ // Browser-authored User-Agent headers require CORS permission. Only Node-compatible
80
+ // runtimes receive the SDK default; browsers and workers use their native header.
81
+ function nodeUserAgent(value) {
82
+ const nodeVersion = globalThis
83
+ .process?.versions?.node;
84
+ return nodeVersion ? { 'User-Agent': value } : {};
85
+ }
79
86
  function readEnv(name) {
80
87
  const env = globalThis
81
88
  .process?.env;
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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","sourcesContent":["// Generated by redwood. Do not edit by hand.\n\nimport { HttpClient } from './core/http.js';\nimport type { Logger, LogLevel } from './core/http.js';\nimport { Webhooks } from './webhooks.js';\nimport { Accounts } from './resources/accounts.js';\nimport { ApiKeys } from './resources/api-keys.js';\nimport { WorkspaceAdmin } from './resources/workspace-admin.js';\nimport { Profiles } from './resources/profiles.js';\nimport { Workspaces } from './resources/workspaces.js';\nimport { Agents } from './resources/agents.js';\nimport { AiProviderKeys } from './resources/ai-provider-keys.js';\nimport { Models } from './resources/models.js';\nimport { MemoryLayers } from './resources/memory-layers.js';\nimport { Objectives } from './resources/objectives.js';\nimport { ToolSearch } from './resources/tool-search.js';\nimport { Tenants } from './resources/tenants.js';\nimport { ToolSets } from './resources/tool-sets.js';\nimport { Uploads } from './resources/uploads.js';\nimport { WidgetSessions } from './resources/widget-sessions.js';\nimport { Widgets } from './resources/widgets.js';\nimport { WorkspaceSecrets } from './resources/workspace-secrets.js';\n\nexport interface ClientOptions {\n /** API key. Defaults to the CADENYA_API_KEY environment variable. */\n apiKey?: string;\n /** Override the API base URL. Defaults to https://api.cadenya.com. */\n baseURL?: string;\n /** Max automatic retries for retryable failures. Defaults to 0. */\n maxRetries?: number;\n /**\n * Deadline for ordinary (non-streaming) requests in milliseconds; override\n * per request with `options.timeout`. Streams bound only response-header\n * acquisition — body lifetime stays under the caller's AbortSignal.\n * Defaults to 60000; a non-finite or <= 0 value disables the deadline.\n */\n timeout?: number;\n /** Headers sent with every request. */\n defaultHeaders?: Record<string, string>;\n /** Custom fetch implementation. */\n fetch?: typeof fetch;\n /** Destination for SDK logs. Defaults to `console`. */\n logger?: Logger;\n /** 'debug' | 'warn' (default) | 'off'. Never logs headers or bodies. */\n logLevel?: LogLevel;\n /** Default `workspaceId` for every call that takes one. Defaults to the CADENYA_WORKSPACE_ID environment variable. */\n workspaceId?: string;\n /** Secret for webhook signature verification. Defaults to the CADENYA_WEBHOOK_SECRET environment variable. */\n webhookSecret?: string;\n}\n\nexport class Cadenya {\n readonly accounts: Accounts;\n readonly apiKeys: ApiKeys;\n readonly workspaceAdmin: WorkspaceAdmin;\n readonly profiles: Profiles;\n readonly workspaces: Workspaces;\n readonly agents: Agents;\n readonly aiProviderKeys: AiProviderKeys;\n readonly models: Models;\n readonly memoryLayers: MemoryLayers;\n readonly objectives: Objectives;\n readonly toolSearch: ToolSearch;\n readonly tenants: Tenants;\n readonly toolSets: ToolSets;\n readonly uploads: Uploads;\n readonly widgetSessions: WidgetSessions;\n readonly widgets: Widgets;\n readonly workspaceSecrets: WorkspaceSecrets;\n readonly webhooks: Webhooks;\n\n private readonly _client: HttpClient;\n\n constructor(options: ClientOptions = {}) {\n // Presence is not validity: empty strings from options or environment\n // are configuration mistakes, not credentials.\n const apiKey = resolveOption('apiKey', options.apiKey, readEnv('CADENYA_API_KEY'));\n if (!apiKey) {\n throw new Error(\n \"Missing API key. Pass it with `new Cadenya({ apiKey })` or set the CADENYA_API_KEY environment variable.\",\n );\n }\n this._client = new HttpClient({\n baseURL: resolveOption('baseURL', options.baseURL, readEnv('CADENYA_BASE_URL')) ?? 'https://api.cadenya.com',\n authHeader: () => ({ Authorization: `Bearer ${apiKey}` }),\n maxRetries: options.maxRetries ?? 0,\n timeout: options.timeout,\n defaultHeaders: { 'User-Agent': 'cadenya-typescript/1.3.0 (api 1.0)', ...options.defaultHeaders },\n fetch: options.fetch,\n logger: options.logger,\n logLevel: options.logLevel,\n defaults: { workspaceId: resolveOption('workspaceId', options.workspaceId, readEnv('CADENYA_WORKSPACE_ID')) },\n });\n this.webhooks = new Webhooks(resolveOption('webhookSecret', options.webhookSecret, readEnv('CADENYA_WEBHOOK_SECRET')));\n this.accounts = new Accounts(this._client);\n this.apiKeys = new ApiKeys(this._client);\n this.workspaceAdmin = new WorkspaceAdmin(this._client);\n this.profiles = new Profiles(this._client);\n this.workspaces = new Workspaces(this._client);\n this.agents = new Agents(this._client);\n this.aiProviderKeys = new AiProviderKeys(this._client);\n this.models = new Models(this._client);\n this.memoryLayers = new MemoryLayers(this._client);\n this.objectives = new Objectives(this._client);\n this.toolSearch = new ToolSearch(this._client);\n this.tenants = new Tenants(this._client);\n this.toolSets = new ToolSets(this._client);\n this.uploads = new Uploads(this._client);\n this.widgetSessions = new WidgetSessions(this._client);\n this.widgets = new Widgets(this._client);\n this.workspaceSecrets = new WorkspaceSecrets(this._client);\n }\n}\n\nfunction readEnv(name: string): string | undefined {\n const env = (globalThis as { process?: { env?: Record<string, string | undefined> } })\n .process?.env;\n return env?.[name];\n}\n\n// Presence is not validity: an explicitly provided option must be usable —\n// a blank value is a configuration mistake and never silently falls back to\n// the environment or a default. Only an OMITTED option reads the env.\nfunction resolveOption(\n label: string,\n explicit: string | undefined,\n env: string | undefined,\n): string | undefined {\n if (explicit !== undefined) {\n const value = explicit.trim();\n if (!value) {\n throw new Error(\n `${label} must not be blank when provided explicitly; omit it to use the environment instead.`,\n );\n }\n return value;\n }\n return env?.trim() || undefined;\n}\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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","sourcesContent":["// Generated by redwood. Do not edit by hand.\n\nimport { HttpClient } from './core/http.js';\nimport type { Logger, LogLevel } from './core/http.js';\nimport { Webhooks } from './webhooks.js';\nimport { Accounts } from './resources/accounts.js';\nimport { ApiKeys } from './resources/api-keys.js';\nimport { WorkspaceAdmin } from './resources/workspace-admin.js';\nimport { Profiles } from './resources/profiles.js';\nimport { Workspaces } from './resources/workspaces.js';\nimport { Agents } from './resources/agents.js';\nimport { AiProviderKeys } from './resources/ai-provider-keys.js';\nimport { Models } from './resources/models.js';\nimport { MemoryLayers } from './resources/memory-layers.js';\nimport { Objectives } from './resources/objectives.js';\nimport { ToolSearch } from './resources/tool-search.js';\nimport { Tenants } from './resources/tenants.js';\nimport { ToolSets } from './resources/tool-sets.js';\nimport { Uploads } from './resources/uploads.js';\nimport { WidgetSessions } from './resources/widget-sessions.js';\nimport { Widgets } from './resources/widgets.js';\nimport { WorkspaceSecrets } from './resources/workspace-secrets.js';\n\nexport interface ClientOptions {\n /** API key. Defaults to the CADENYA_API_KEY environment variable. */\n apiKey?: string;\n /** Override the API base URL. Defaults to https://api.cadenya.com. */\n baseURL?: string;\n /** Max automatic retries for retryable failures. Defaults to 0. */\n maxRetries?: number;\n /**\n * Deadline for ordinary (non-streaming) requests in milliseconds; override\n * per request with `options.timeout`. Streams bound only response-header\n * acquisition — body lifetime stays under the caller's AbortSignal.\n * Defaults to 60000; a non-finite or <= 0 value disables the deadline.\n */\n timeout?: number;\n /** Additional request headers. Browsers supply their own User-Agent by default. */\n defaultHeaders?: Record<string, string>;\n /** Custom fetch implementation. */\n fetch?: typeof fetch;\n /** Destination for SDK logs. Defaults to `console`. */\n logger?: Logger;\n /** 'debug' | 'warn' (default) | 'off'. Never logs headers or bodies. */\n logLevel?: LogLevel;\n /** Default `workspaceId` for every call that takes one. Defaults to the CADENYA_WORKSPACE_ID environment variable. */\n workspaceId?: string;\n /** Secret for webhook signature verification. Defaults to the CADENYA_WEBHOOK_SECRET environment variable. */\n webhookSecret?: string;\n}\n\nexport class Cadenya {\n readonly accounts: Accounts;\n readonly apiKeys: ApiKeys;\n readonly workspaceAdmin: WorkspaceAdmin;\n readonly profiles: Profiles;\n readonly workspaces: Workspaces;\n readonly agents: Agents;\n readonly aiProviderKeys: AiProviderKeys;\n readonly models: Models;\n readonly memoryLayers: MemoryLayers;\n readonly objectives: Objectives;\n readonly toolSearch: ToolSearch;\n readonly tenants: Tenants;\n readonly toolSets: ToolSets;\n readonly uploads: Uploads;\n readonly widgetSessions: WidgetSessions;\n readonly widgets: Widgets;\n readonly workspaceSecrets: WorkspaceSecrets;\n readonly webhooks: Webhooks;\n\n private readonly _client: HttpClient;\n\n constructor(options: ClientOptions = {}) {\n // Presence is not validity: empty strings from options or environment\n // are configuration mistakes, not credentials.\n const apiKey = resolveOption('apiKey', options.apiKey, readEnv('CADENYA_API_KEY'));\n if (!apiKey) {\n throw new Error(\n \"Missing API key. Pass it with `new Cadenya({ apiKey })` or set the CADENYA_API_KEY environment variable.\",\n );\n }\n this._client = new HttpClient({\n baseURL: resolveOption('baseURL', options.baseURL, readEnv('CADENYA_BASE_URL')) ?? 'https://api.cadenya.com',\n authHeader: () => ({ Authorization: `Bearer ${apiKey}` }),\n maxRetries: options.maxRetries ?? 0,\n timeout: options.timeout,\n defaultHeaders: { ...nodeUserAgent('cadenya-typescript/1.5.0 (api 1.0)'), ...options.defaultHeaders },\n fetch: options.fetch,\n logger: options.logger,\n logLevel: options.logLevel,\n defaults: { workspaceId: resolveOption('workspaceId', options.workspaceId, readEnv('CADENYA_WORKSPACE_ID')) },\n });\n this.webhooks = new Webhooks(resolveOption('webhookSecret', options.webhookSecret, readEnv('CADENYA_WEBHOOK_SECRET')));\n this.accounts = new Accounts(this._client);\n this.apiKeys = new ApiKeys(this._client);\n this.workspaceAdmin = new WorkspaceAdmin(this._client);\n this.profiles = new Profiles(this._client);\n this.workspaces = new Workspaces(this._client);\n this.agents = new Agents(this._client);\n this.aiProviderKeys = new AiProviderKeys(this._client);\n this.models = new Models(this._client);\n this.memoryLayers = new MemoryLayers(this._client);\n this.objectives = new Objectives(this._client);\n this.toolSearch = new ToolSearch(this._client);\n this.tenants = new Tenants(this._client);\n this.toolSets = new ToolSets(this._client);\n this.uploads = new Uploads(this._client);\n this.widgetSessions = new WidgetSessions(this._client);\n this.widgets = new Widgets(this._client);\n this.workspaceSecrets = new WorkspaceSecrets(this._client);\n }\n}\n\n// Browser-authored User-Agent headers require CORS permission. Only Node-compatible\n// runtimes receive the SDK default; browsers and workers use their native header.\nfunction nodeUserAgent(value: string): Record<string, string> {\n const nodeVersion = (globalThis as { process?: { versions?: { node?: string } } })\n .process?.versions?.node;\n return nodeVersion ? { 'User-Agent': value } : {};\n}\n\nfunction readEnv(name: string): string | undefined {\n const env = (globalThis as { process?: { env?: Record<string, string | undefined> } })\n .process?.env;\n return env?.[name];\n}\n\n// Presence is not validity: an explicitly provided option must be usable —\n// a blank value is a configuration mistake and never silently falls back to\n// the environment or a default. Only an OMITTED option reads the env.\nfunction resolveOption(\n label: string,\n explicit: string | undefined,\n env: string | undefined,\n): string | undefined {\n if (explicit !== undefined) {\n const value = explicit.trim();\n if (!value) {\n throw new Error(\n `${label} must not be blank when provided explicitly; omit it to use the environment instead.`,\n );\n }\n return value;\n }\n return env?.trim() || undefined;\n}\n"]}
@@ -124,7 +124,7 @@ export declare class WidgetSessions {
124
124
  *
125
125
  * @example
126
126
  * ```ts
127
- * const widgetSession = await client.widgetSessions.create({ spec: { widgetId: 'sample' } });
127
+ * const widgetSession = await client.widgetSessions.create({ spec: { subject: { id: 'sample' }, tenant: { id: 'sample' }, widgetId: 'sample' } });
128
128
  * ```
129
129
  */
130
130
  create(params: WidgetSessionCreateParams, options?: RequestOptions): APIPromise<WidgetSession>;
@@ -31,7 +31,7 @@ export class WidgetSessions {
31
31
  *
32
32
  * @example
33
33
  * ```ts
34
- * const widgetSession = await client.widgetSessions.create({ spec: { widgetId: 'sample' } });
34
+ * const widgetSession = await client.widgetSessions.create({ spec: { subject: { id: 'sample' }, tenant: { id: 'sample' }, widgetId: 'sample' } });
35
35
  * ```
36
36
  */
37
37
  create(params, options) {
@@ -1 +1 @@
1
- {"version":3,"file":"widget-sessions.js","sourceRoot":"","sources":["../../src/resources/widget-sessions.ts"],"names":[],"mappings":"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","sourcesContent":["// Generated by redwood. Do not edit by hand.\n\nimport { HttpClient, RequestOptions, APIPromise, pathSegment, snapshotParams } from '../core/http.js';\nimport { Page } from '../core/pagination.js';\nimport type { CreateOperationMetadata, CreateWidgetSessionRequest_Secret, DeleteTenantWidgetSessionsResponse, ListWidgetSessionsResponse, WidgetSession, WidgetSessionServiceListWidgetSessionsState, WidgetSessionSpecParam } from '../types.js';\nimport { wireWidgetSessionSpec } from '../types.js';\n\nexport interface WidgetSessionListParams {\n /**\n * Workspace ID.\n * \n * Defaults to the client-level `workspaceId` option or the CADENYA_WORKSPACE_ID environment variable.\n */\n workspaceId?: string;\n /**\n * Maximum number of results to return.\n */\n limit?: number;\n /**\n * Pagination cursor from previous response.\n */\n cursor?: string;\n /**\n * Filter to sessions on a specific widget. Accepts the canonical `wgt_…`\n * form or the `external_id:<value>` form.\n */\n widgetId?: string;\n /**\n * Filter to sessions belonging to a tenant. Accepts the canonical\n * `tenant_…` form or the `external_id:<value>` form.\n */\n tenantId?: string;\n /**\n * Filter to sessions asserted for a subject. Accepts the canonical\n * `subj_…` form or the `external_id:<value>` form; the external_id form is\n * scoped within a tenant and requires `tenant_id` to also be set.\n */\n subjectId?: string;\n /**\n * Filter by state.\n */\n state?: WidgetSessionServiceListWidgetSessionsState;\n /**\n * Filters by metadata labels. Comma-separated key=value pairs,\n * e.g. \"env=prod,team=ai\". A resource matches only if every pair\n * matches exactly (AND semantics).\n */\n labels?: string;\n /**\n * Sort order for results (asc or desc by creation time).\n */\n sortOrder?: string;\n /**\n * When true, the `info` field on each returned session is populated.\n * Requests with this flag count more against your rate limit.\n */\n includeInfo?: boolean;\n}\n\nexport interface WidgetSessionCreateParams {\n spec: WidgetSessionSpecParam;\n /**\n * Workspace ID.\n * \n * Defaults to the client-level `workspaceId` option or the CADENYA_WORKSPACE_ID environment variable.\n */\n workspaceId?: string;\n metadata?: CreateOperationMetadata;\n /**\n * Secrets to attach to the session.\n */\n secrets?: Array<CreateWidgetSessionRequest_Secret>;\n}\n\nexport interface WidgetSessionDeleteTenantParams {\n /**\n * Workspace ID.\n * \n * Defaults to the client-level `workspaceId` option or the CADENYA_WORKSPACE_ID environment variable.\n */\n workspaceId?: string;\n /**\n * Tenant whose sessions to delete. Required — an empty value is rejected\n * rather than matching everything. Accepts the canonical `tenant_…` form or\n * the `external_id:<value>` form.\n */\n tenantId?: string;\n}\n\nexport interface WidgetSessionRetrieveParams {\n /**\n * Workspace ID.\n * \n * Defaults to the client-level `workspaceId` option or the CADENYA_WORKSPACE_ID environment variable.\n */\n workspaceId?: string;\n}\n\nexport interface WidgetSessionDeleteParams {\n /**\n * Workspace ID.\n * \n * Defaults to the client-level `workspaceId` option or the CADENYA_WORKSPACE_ID environment variable.\n */\n workspaceId?: string;\n}\n\nexport interface WidgetSessionRevokeParams {\n /**\n * Workspace ID.\n * \n * Defaults to the client-level `workspaceId` option or the CADENYA_WORKSPACE_ID environment variable.\n */\n workspaceId?: string;\n}\n\nexport class WidgetSessions {\n constructor(private readonly _client: HttpClient) {}\n\n /**\n * List widget sessions\n * \n * @example\n * ```ts\n * const page = await client.widgetSessions.list();\n * for await (const item of page) {\n * // auto-fetches every page\n * }\n * ```\n */\n async list(params?: WidgetSessionListParams, options?: RequestOptions): Promise<Page<WidgetSession>> {\n const workspaceId = String(params?.workspaceId ?? this._client.defaults['workspaceId'] ?? '').trim() || undefined;\n if (workspaceId === undefined) throw new Error(\"Missing 'workspaceId': pass it in params, set it on the client, or set the CADENYA_WORKSPACE_ID environment variable.\");\n const _base = snapshotParams(params);\n const response = await this._client.request<ListWidgetSessionsResponse>({ method: 'GET', path: `/v1/workspaces/${pathSegment('workspaceId', workspaceId)}/widget_sessions`, query: { limit: params?.limit, cursor: params?.cursor, widgetId: params?.widgetId, tenantId: params?.tenantId, subjectId: params?.subjectId, state: params?.state, labels: params?.labels, sortOrder: params?.sortOrder, includeInfo: params?.includeInfo } }, options);\n return new Page(response.items ?? [], response.pagination?.nextCursor, (cursor) => this.list({ ..._base, cursor: cursor }, options));\n }\n\n /**\n * Create a widget session\n * \n * @example\n * ```ts\n * const widgetSession = await client.widgetSessions.create({ spec: { widgetId: 'sample' } });\n * ```\n */\n create(params: WidgetSessionCreateParams, options?: RequestOptions): APIPromise<WidgetSession> {\n return this._client.requestAPI<WidgetSession>(() => {\n const workspaceId = String(params.workspaceId ?? this._client.defaults['workspaceId'] ?? '').trim() || undefined;\n if (workspaceId === undefined) throw new Error(\"Missing 'workspaceId': pass it in params, set it on the client, or set the CADENYA_WORKSPACE_ID environment variable.\");\n return { method: 'POST', path: `/v1/workspaces/${pathSegment('workspaceId', workspaceId)}/widget_sessions`, body: { metadata: params.metadata, spec: wireWidgetSessionSpec(params.spec), secrets: params.secrets } };\n }, options);\n }\n\n /**\n * Delete all of a tenant's widget sessions\n * \n * @example\n * ```ts\n * const deleteTenantWidgetSessionsResponse = await client.widgetSessions.deleteTenant();\n * ```\n */\n deleteTenant(params?: WidgetSessionDeleteTenantParams, options?: RequestOptions): APIPromise<DeleteTenantWidgetSessionsResponse> {\n return this._client.requestAPI<DeleteTenantWidgetSessionsResponse>(() => {\n const workspaceId = String(params?.workspaceId ?? this._client.defaults['workspaceId'] ?? '').trim() || undefined;\n if (workspaceId === undefined) throw new Error(\"Missing 'workspaceId': pass it in params, set it on the client, or set the CADENYA_WORKSPACE_ID environment variable.\");\n return { method: 'DELETE', path: `/v1/workspaces/${pathSegment('workspaceId', workspaceId)}/widget_sessions`, query: { tenantId: params?.tenantId } };\n }, options);\n }\n\n /**\n * Get a widget session by ID\n * \n * @example\n * ```ts\n * const widgetSession = await client.widgetSessions.retrieve('_123');\n * ```\n */\n retrieve(id: string, params?: WidgetSessionRetrieveParams, options?: RequestOptions): APIPromise<WidgetSession> {\n return this._client.requestAPI<WidgetSession>(() => {\n const workspaceId = String(params?.workspaceId ?? this._client.defaults['workspaceId'] ?? '').trim() || undefined;\n if (workspaceId === undefined) throw new Error(\"Missing 'workspaceId': pass it in params, set it on the client, or set the CADENYA_WORKSPACE_ID environment variable.\");\n return { method: 'GET', path: `/v1/workspaces/${pathSegment('workspaceId', workspaceId)}/widget_sessions/${pathSegment('id', id)}` };\n }, options);\n }\n\n /**\n * Delete a widget session\n * \n * @example\n * ```ts\n * await client.widgetSessions.delete('_123');\n * ```\n */\n delete(id: string, params?: WidgetSessionDeleteParams, options?: RequestOptions): APIPromise<void> {\n return this._client.requestAPI<void>(() => {\n const workspaceId = String(params?.workspaceId ?? this._client.defaults['workspaceId'] ?? '').trim() || undefined;\n if (workspaceId === undefined) throw new Error(\"Missing 'workspaceId': pass it in params, set it on the client, or set the CADENYA_WORKSPACE_ID environment variable.\");\n return { method: 'DELETE', path: `/v1/workspaces/${pathSegment('workspaceId', workspaceId)}/widget_sessions/${pathSegment('id', id)}`, void: true };\n }, options);\n }\n\n /**\n * Revoke a widget session\n * \n * @example\n * ```ts\n * const widgetSession = await client.widgetSessions.revoke('_123');\n * ```\n */\n revoke(id: string, params?: WidgetSessionRevokeParams, options?: RequestOptions): APIPromise<WidgetSession> {\n return this._client.requestAPI<WidgetSession>(() => {\n const workspaceId = String(params?.workspaceId ?? this._client.defaults['workspaceId'] ?? '').trim() || undefined;\n if (workspaceId === undefined) throw new Error(\"Missing 'workspaceId': pass it in params, set it on the client, or set the CADENYA_WORKSPACE_ID environment variable.\");\n return { method: 'POST', path: `/v1/workspaces/${pathSegment('workspaceId', workspaceId)}/widget_sessions/${pathSegment('id', id)}:revoke` };\n }, options);\n }\n}\n"]}
1
+ {"version":3,"file":"widget-sessions.js","sourceRoot":"","sources":["../../src/resources/widget-sessions.ts"],"names":[],"mappings":"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","sourcesContent":["// Generated by redwood. Do not edit by hand.\n\nimport { HttpClient, RequestOptions, APIPromise, pathSegment, snapshotParams } from '../core/http.js';\nimport { Page } from '../core/pagination.js';\nimport type { CreateOperationMetadata, CreateWidgetSessionRequest_Secret, DeleteTenantWidgetSessionsResponse, ListWidgetSessionsResponse, WidgetSession, WidgetSessionServiceListWidgetSessionsState, WidgetSessionSpecParam } from '../types.js';\nimport { wireWidgetSessionSpec } from '../types.js';\n\nexport interface WidgetSessionListParams {\n /**\n * Workspace ID.\n * \n * Defaults to the client-level `workspaceId` option or the CADENYA_WORKSPACE_ID environment variable.\n */\n workspaceId?: string;\n /**\n * Maximum number of results to return.\n */\n limit?: number;\n /**\n * Pagination cursor from previous response.\n */\n cursor?: string;\n /**\n * Filter to sessions on a specific widget. Accepts the canonical `wgt_…`\n * form or the `external_id:<value>` form.\n */\n widgetId?: string;\n /**\n * Filter to sessions belonging to a tenant. Accepts the canonical\n * `tenant_…` form or the `external_id:<value>` form.\n */\n tenantId?: string;\n /**\n * Filter to sessions asserted for a subject. Accepts the canonical\n * `subj_…` form or the `external_id:<value>` form; the external_id form is\n * scoped within a tenant and requires `tenant_id` to also be set.\n */\n subjectId?: string;\n /**\n * Filter by state.\n */\n state?: WidgetSessionServiceListWidgetSessionsState;\n /**\n * Filters by metadata labels. Comma-separated key=value pairs,\n * e.g. \"env=prod,team=ai\". A resource matches only if every pair\n * matches exactly (AND semantics).\n */\n labels?: string;\n /**\n * Sort order for results (asc or desc by creation time).\n */\n sortOrder?: string;\n /**\n * When true, the `info` field on each returned session is populated.\n * Requests with this flag count more against your rate limit.\n */\n includeInfo?: boolean;\n}\n\nexport interface WidgetSessionCreateParams {\n spec: WidgetSessionSpecParam;\n /**\n * Workspace ID.\n * \n * Defaults to the client-level `workspaceId` option or the CADENYA_WORKSPACE_ID environment variable.\n */\n workspaceId?: string;\n metadata?: CreateOperationMetadata;\n /**\n * Secrets to attach to the session.\n */\n secrets?: Array<CreateWidgetSessionRequest_Secret>;\n}\n\nexport interface WidgetSessionDeleteTenantParams {\n /**\n * Workspace ID.\n * \n * Defaults to the client-level `workspaceId` option or the CADENYA_WORKSPACE_ID environment variable.\n */\n workspaceId?: string;\n /**\n * Tenant whose sessions to delete. Required — an empty value is rejected\n * rather than matching everything. Accepts the canonical `tenant_…` form or\n * the `external_id:<value>` form.\n */\n tenantId?: string;\n}\n\nexport interface WidgetSessionRetrieveParams {\n /**\n * Workspace ID.\n * \n * Defaults to the client-level `workspaceId` option or the CADENYA_WORKSPACE_ID environment variable.\n */\n workspaceId?: string;\n}\n\nexport interface WidgetSessionDeleteParams {\n /**\n * Workspace ID.\n * \n * Defaults to the client-level `workspaceId` option or the CADENYA_WORKSPACE_ID environment variable.\n */\n workspaceId?: string;\n}\n\nexport interface WidgetSessionRevokeParams {\n /**\n * Workspace ID.\n * \n * Defaults to the client-level `workspaceId` option or the CADENYA_WORKSPACE_ID environment variable.\n */\n workspaceId?: string;\n}\n\nexport class WidgetSessions {\n constructor(private readonly _client: HttpClient) {}\n\n /**\n * List widget sessions\n * \n * @example\n * ```ts\n * const page = await client.widgetSessions.list();\n * for await (const item of page) {\n * // auto-fetches every page\n * }\n * ```\n */\n async list(params?: WidgetSessionListParams, options?: RequestOptions): Promise<Page<WidgetSession>> {\n const workspaceId = String(params?.workspaceId ?? this._client.defaults['workspaceId'] ?? '').trim() || undefined;\n if (workspaceId === undefined) throw new Error(\"Missing 'workspaceId': pass it in params, set it on the client, or set the CADENYA_WORKSPACE_ID environment variable.\");\n const _base = snapshotParams(params);\n const response = await this._client.request<ListWidgetSessionsResponse>({ method: 'GET', path: `/v1/workspaces/${pathSegment('workspaceId', workspaceId)}/widget_sessions`, query: { limit: params?.limit, cursor: params?.cursor, widgetId: params?.widgetId, tenantId: params?.tenantId, subjectId: params?.subjectId, state: params?.state, labels: params?.labels, sortOrder: params?.sortOrder, includeInfo: params?.includeInfo } }, options);\n return new Page(response.items ?? [], response.pagination?.nextCursor, (cursor) => this.list({ ..._base, cursor: cursor }, options));\n }\n\n /**\n * Create a widget session\n * \n * @example\n * ```ts\n * const widgetSession = await client.widgetSessions.create({ spec: { subject: { id: 'sample' }, tenant: { id: 'sample' }, widgetId: 'sample' } });\n * ```\n */\n create(params: WidgetSessionCreateParams, options?: RequestOptions): APIPromise<WidgetSession> {\n return this._client.requestAPI<WidgetSession>(() => {\n const workspaceId = String(params.workspaceId ?? this._client.defaults['workspaceId'] ?? '').trim() || undefined;\n if (workspaceId === undefined) throw new Error(\"Missing 'workspaceId': pass it in params, set it on the client, or set the CADENYA_WORKSPACE_ID environment variable.\");\n return { method: 'POST', path: `/v1/workspaces/${pathSegment('workspaceId', workspaceId)}/widget_sessions`, body: { metadata: params.metadata, spec: wireWidgetSessionSpec(params.spec), secrets: params.secrets } };\n }, options);\n }\n\n /**\n * Delete all of a tenant's widget sessions\n * \n * @example\n * ```ts\n * const deleteTenantWidgetSessionsResponse = await client.widgetSessions.deleteTenant();\n * ```\n */\n deleteTenant(params?: WidgetSessionDeleteTenantParams, options?: RequestOptions): APIPromise<DeleteTenantWidgetSessionsResponse> {\n return this._client.requestAPI<DeleteTenantWidgetSessionsResponse>(() => {\n const workspaceId = String(params?.workspaceId ?? this._client.defaults['workspaceId'] ?? '').trim() || undefined;\n if (workspaceId === undefined) throw new Error(\"Missing 'workspaceId': pass it in params, set it on the client, or set the CADENYA_WORKSPACE_ID environment variable.\");\n return { method: 'DELETE', path: `/v1/workspaces/${pathSegment('workspaceId', workspaceId)}/widget_sessions`, query: { tenantId: params?.tenantId } };\n }, options);\n }\n\n /**\n * Get a widget session by ID\n * \n * @example\n * ```ts\n * const widgetSession = await client.widgetSessions.retrieve('_123');\n * ```\n */\n retrieve(id: string, params?: WidgetSessionRetrieveParams, options?: RequestOptions): APIPromise<WidgetSession> {\n return this._client.requestAPI<WidgetSession>(() => {\n const workspaceId = String(params?.workspaceId ?? this._client.defaults['workspaceId'] ?? '').trim() || undefined;\n if (workspaceId === undefined) throw new Error(\"Missing 'workspaceId': pass it in params, set it on the client, or set the CADENYA_WORKSPACE_ID environment variable.\");\n return { method: 'GET', path: `/v1/workspaces/${pathSegment('workspaceId', workspaceId)}/widget_sessions/${pathSegment('id', id)}` };\n }, options);\n }\n\n /**\n * Delete a widget session\n * \n * @example\n * ```ts\n * await client.widgetSessions.delete('_123');\n * ```\n */\n delete(id: string, params?: WidgetSessionDeleteParams, options?: RequestOptions): APIPromise<void> {\n return this._client.requestAPI<void>(() => {\n const workspaceId = String(params?.workspaceId ?? this._client.defaults['workspaceId'] ?? '').trim() || undefined;\n if (workspaceId === undefined) throw new Error(\"Missing 'workspaceId': pass it in params, set it on the client, or set the CADENYA_WORKSPACE_ID environment variable.\");\n return { method: 'DELETE', path: `/v1/workspaces/${pathSegment('workspaceId', workspaceId)}/widget_sessions/${pathSegment('id', id)}`, void: true };\n }, options);\n }\n\n /**\n * Revoke a widget session\n * \n * @example\n * ```ts\n * const widgetSession = await client.widgetSessions.revoke('_123');\n * ```\n */\n revoke(id: string, params?: WidgetSessionRevokeParams, options?: RequestOptions): APIPromise<WidgetSession> {\n return this._client.requestAPI<WidgetSession>(() => {\n const workspaceId = String(params?.workspaceId ?? this._client.defaults['workspaceId'] ?? '').trim() || undefined;\n if (workspaceId === undefined) throw new Error(\"Missing 'workspaceId': pass it in params, set it on the client, or set the CADENYA_WORKSPACE_ID environment variable.\");\n return { method: 'POST', path: `/v1/workspaces/${pathSegment('workspaceId', workspaceId)}/widget_sessions/${pathSegment('id', id)}:revoke` };\n }, options);\n }\n}\n"]}
package/dist/types.d.ts CHANGED
@@ -2303,6 +2303,10 @@ export interface ObjectiveError {
2303
2303
  message: string;
2304
2304
  }
2305
2305
  export interface ObjectiveEvent {
2306
+ /**
2307
+ * Durable events use objevt_ IDs, the only IDs accepted as reconnect
2308
+ * cursors. Live-only heartbeats use hb_ IDs and have no SSE id: field.
2309
+ */
2306
2310
  metadata: OperationMetadata;
2307
2311
  data: ObjectiveEventData;
2308
2312
  contextWindowId: string;
@@ -2322,7 +2326,7 @@ export interface ObjectiveEvent {
2322
2326
  */
2323
2327
  startedAt?: string;
2324
2328
  }
2325
- export type ObjectiveEventData = ObjectiveEventData_UserMessage | ObjectiveEventData_ToolApprovalRequested | ObjectiveEventData_ToolApproved | ObjectiveEventData_ToolDenied | ObjectiveEventData_ToolCalled | ObjectiveEventData_Error | ObjectiveEventData_AssistantMessage | ObjectiveEventData_ToolResult | ObjectiveEventData_ToolError | ObjectiveEventData_ContextWindowCompacted | ObjectiveEventData_MemoryRead | ObjectiveEventData_Cancelled | ObjectiveEventData_SubAgentSpawned | ObjectiveEventData_SubAgentUpdated | ObjectiveEventData_Finalized | ObjectiveEventData_Notice | ObjectiveEventData_TimedOut | ObjectiveEventData_Reasoning | ObjectiveEventData_StateChanged;
2329
+ export type ObjectiveEventData = ObjectiveEventData_UserMessage | ObjectiveEventData_ToolApprovalRequested | ObjectiveEventData_ToolApproved | ObjectiveEventData_ToolDenied | ObjectiveEventData_ToolCalled | ObjectiveEventData_Error | ObjectiveEventData_AssistantMessage | ObjectiveEventData_ToolResult | ObjectiveEventData_ToolError | ObjectiveEventData_ContextWindowCompacted | ObjectiveEventData_MemoryRead | ObjectiveEventData_Cancelled | ObjectiveEventData_SubAgentSpawned | ObjectiveEventData_SubAgentUpdated | ObjectiveEventData_Finalized | ObjectiveEventData_Notice | ObjectiveEventData_TimedOut | ObjectiveEventData_Reasoning | ObjectiveEventData_StateChanged | ObjectiveEventData_Heartbeat;
2326
2330
  export interface ObjectiveEventInfo {
2327
2331
  objective?: OperationMetadata;
2328
2332
  createdBy: Profile;
@@ -2374,6 +2378,14 @@ export interface ObjectiveFinalized {
2374
2378
  */
2375
2379
  output?: Record<string, unknown>;
2376
2380
  }
2381
+ /**
2382
+ * ObjectiveHeartbeat reports recent execution liveness. It is transient:
2383
+ * delivered only on live streams, never stored in event history or delivered
2384
+ * to webhooks. Its hb_ event ID is not a reconnect cursor. Heartbeats do not
2385
+ * change objective state or promise progress from the model.
2386
+ */
2387
+ export interface ObjectiveHeartbeat {
2388
+ }
2377
2389
  /**
2378
2390
  * ObjectiveInfo provides read-only aggregated statistics about an objective's execution
2379
2391
  */
@@ -3208,6 +3220,7 @@ export interface SetToolCallContentRequest_ImageBlock {
3208
3220
  export interface SetToolCallContentRequest_TextBlock {
3209
3221
  text: string;
3210
3222
  }
3223
+ export type StatusDetails = WidgetSessionErrorInfo | GoogleProtobufAny;
3211
3224
  /**
3212
3225
  * The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).
3213
3226
  */
@@ -3223,7 +3236,7 @@ export interface Status {
3223
3236
  /**
3224
3237
  * A list of messages that carry the error details. There is a common set of message types for APIs to use.
3225
3238
  */
3226
- details?: Array<GoogleProtobufAny>;
3239
+ details?: Array<StatusDetails>;
3227
3240
  }
3228
3241
  export interface SubAgentSpawned {
3229
3242
  agent: ResourceMetadata;
@@ -4448,7 +4461,7 @@ export type WebhookDeliveryDataStatus = 'WEBHOOK_DELIVERY_STATUS_UNSPECIFIED' |
4448
4461
  /**
4449
4462
  * The type of objective event that triggered this webhook delivery
4450
4463
  */
4451
- export type WebhookDeliveryDataEventType = 'OBJECTIVE_EVENT_TYPE_UNSPECIFIED' | 'OBJECTIVE_EVENT_TYPE_USER_MESSAGE' | 'OBJECTIVE_EVENT_TYPE_TOOL_APPROVAL_REQUESTED' | 'OBJECTIVE_EVENT_TYPE_TOOL_APPROVED' | 'OBJECTIVE_EVENT_TYPE_TOOL_DENIED' | 'OBJECTIVE_EVENT_TYPE_TOOL_CALLED' | 'OBJECTIVE_EVENT_TYPE_ERROR' | 'OBJECTIVE_EVENT_TYPE_ASSISTANT_MESSAGE' | 'OBJECTIVE_EVENT_TYPE_TOOL_RESULT' | 'OBJECTIVE_EVENT_TYPE_TOOL_ERROR' | 'OBJECTIVE_EVENT_TYPE_CONTEXT_WINDOW_COMPACTED' | 'OBJECTIVE_EVENT_TYPE_MEMORY_READ' | 'OBJECTIVE_EVENT_TYPE_CANCELLED' | 'OBJECTIVE_EVENT_TYPE_SUB_AGENT_SPAWNED' | 'OBJECTIVE_EVENT_TYPE_SUB_AGENT_UPDATED' | 'OBJECTIVE_EVENT_TYPE_FINALIZED' | 'OBJECTIVE_EVENT_TYPE_NOTICE' | 'OBJECTIVE_EVENT_TYPE_TIMED_OUT' | 'OBJECTIVE_EVENT_TYPE_REASONING' | 'OBJECTIVE_EVENT_TYPE_STATE_CHANGED';
4464
+ export type WebhookDeliveryDataEventType = 'OBJECTIVE_EVENT_TYPE_UNSPECIFIED' | 'OBJECTIVE_EVENT_TYPE_USER_MESSAGE' | 'OBJECTIVE_EVENT_TYPE_TOOL_APPROVAL_REQUESTED' | 'OBJECTIVE_EVENT_TYPE_TOOL_APPROVED' | 'OBJECTIVE_EVENT_TYPE_TOOL_DENIED' | 'OBJECTIVE_EVENT_TYPE_TOOL_CALLED' | 'OBJECTIVE_EVENT_TYPE_ERROR' | 'OBJECTIVE_EVENT_TYPE_ASSISTANT_MESSAGE' | 'OBJECTIVE_EVENT_TYPE_TOOL_RESULT' | 'OBJECTIVE_EVENT_TYPE_TOOL_ERROR' | 'OBJECTIVE_EVENT_TYPE_CONTEXT_WINDOW_COMPACTED' | 'OBJECTIVE_EVENT_TYPE_MEMORY_READ' | 'OBJECTIVE_EVENT_TYPE_CANCELLED' | 'OBJECTIVE_EVENT_TYPE_SUB_AGENT_SPAWNED' | 'OBJECTIVE_EVENT_TYPE_SUB_AGENT_UPDATED' | 'OBJECTIVE_EVENT_TYPE_FINALIZED' | 'OBJECTIVE_EVENT_TYPE_NOTICE' | 'OBJECTIVE_EVENT_TYPE_TIMED_OUT' | 'OBJECTIVE_EVENT_TYPE_REASONING' | 'OBJECTIVE_EVENT_TYPE_STATE_CHANGED' | 'OBJECTIVE_EVENT_TYPE_HEARTBEAT';
4452
4465
  export interface WebhookDeliveryData {
4453
4466
  /**
4454
4467
  * Related resources
@@ -4538,8 +4551,9 @@ export type WidgetSessionState = 'STATE_UNSPECIFIED' | 'STATE_ACTIVE' | 'STATE_E
4538
4551
  * a widget, minted server-to-server by the customer's backend. The session
4539
4552
  * carries all customer-asserted context — tenant, subject, labels, secrets —
4540
4553
  * and every conversation (objective) created through the widget inherits it.
4541
- * The bearer token returned at mint is short-lived and refreshed at the
4542
- * widget host; the session row is what makes revocation possible.
4554
+ * The browser renews short-lived bearer tokens at the widget host with
4555
+ * RenewWidgetSession, authenticated by its existing token. Renewal preserves
4556
+ * this bounded grant and does not extend its hard expiry.
4543
4557
  */
4544
4558
  export interface WidgetSession {
4545
4559
  metadata: OperationMetadata;
@@ -4556,6 +4570,44 @@ export interface WidgetSession {
4556
4570
  * headers server-side — never returned by any API.
4557
4571
  */
4558
4572
  secrets: Array<WidgetSession_Secret>;
4573
+ /**
4574
+ * Present only on creation. The same envelope is returned by
4575
+ * RenewWidgetSession on the widget host. Omitted on reads, lists, and revocation.
4576
+ * Existing spec.token/spec.token_expires_at and info.host remain populated
4577
+ * on creation for v1 compatibility and agree with these credentials.
4578
+ */
4579
+ credentials?: WidgetSessionCredentials;
4580
+ }
4581
+ /**
4582
+ * WidgetSessionCredentials is the only credential envelope the customer's
4583
+ * backend forwards to the browser. Never log or persist its token. Responses
4584
+ * containing credentials use Cache-Control: no-store. Both initial and later
4585
+ * issuance use the same schema; no refresh token or management key is included.
4586
+ */
4587
+ export interface WidgetSessionCredentials {
4588
+ /**
4589
+ * Canonical wsess_ identifier. Ordinary renewal cannot change the session.
4590
+ */
4591
+ sessionId: string;
4592
+ /**
4593
+ * Authoritative hostname, without a scheme or path. Use HTTPS with this
4594
+ * host; never construct it or accept a host change during renewal.
4595
+ */
4596
+ host: string;
4597
+ /**
4598
+ * Short-lived bearer credential for the widget host only.
4599
+ */
4600
+ token: string;
4601
+ /**
4602
+ * Exact token expiry, at most 15 minutes after issuance and never later
4603
+ * than session_expires_at. Equals JWT exp without the 60-second validation
4604
+ * tolerance added. Renew proactively before this timestamp.
4605
+ */
4606
+ tokenExpiresAt: string;
4607
+ /**
4608
+ * Immutable hard session expiry. Issuance never extends this deadline.
4609
+ */
4610
+ sessionExpiresAt: string;
4559
4611
  }
4560
4612
  /**
4561
4613
  * WidgetSessionInfo provides read-only server-derived data about a session.
@@ -4591,7 +4643,7 @@ export interface WidgetSessionInfo {
4591
4643
  messageCount: number;
4592
4644
  /**
4593
4645
  * When the session last created a conversation, sent a message, or
4594
- * refreshed a token.
4646
+ * received a newly issued token.
4595
4647
  */
4596
4648
  lastActiveAt?: string;
4597
4649
  }
@@ -4605,18 +4657,19 @@ export interface WidgetSessionSpec {
4605
4657
  */
4606
4658
  widgetId: string;
4607
4659
  /**
4608
- * Optional tenant assertion — the customer's org/company identifier for the
4609
- * visitor. Upserts the tenant record in the workspace and tags the session
4610
- * and every conversation it creates. Conversation listing at the widget
4611
- * host is scoped to this tenant.
4660
+ * Required tenant assertion — the customer's organization identifier.
4661
+ * Upserts the tenant record in the workspace. Every conversation created
4662
+ * through this session inherits the tenant and subject identity.
4612
4663
  */
4613
- tenant?: TenantAssertion;
4664
+ tenant: TenantAssertion;
4614
4665
  /**
4615
- * Optional subject assertion — the visitor within the tenant (e.g. their
4616
- * user id in the customer's namespace). Requires `tenant`; a subject
4617
- * asserted without a tenant is rejected with InvalidArgument.
4666
+ * Required subject assertion — the visitor's ID within the tenant.
4667
+ * Sessions with the same tenant and subject share conversation history on
4668
+ * the same widget and agent, subject to the current session's permissions.
4669
+ * A static ID deliberately shares that history; use a distinct ID per
4670
+ * visitor when their conversations should be separate.
4618
4671
  */
4619
- subject?: SubjectAssertion;
4672
+ subject: SubjectAssertion;
4620
4673
  /**
4621
4674
  * Hard session expiry. Tokens never outlive it; after it passes the session
4622
4675
  * transitions to STATE_EXPIRED. Defaults to a server-chosen horizon when
@@ -4624,14 +4677,14 @@ export interface WidgetSessionSpec {
4624
4677
  */
4625
4678
  expiresAt?: string;
4626
4679
  /**
4627
- * The session bearer token. Returned only on creation — subsequent reads
4628
- * omit it. The token is short-lived; the widget refreshes it at the widget
4629
- * host without involving the customer's backend.
4680
+ * Legacy creation-only alias of credentials.token; omitted on reads.
4681
+ * Supported throughout v1. New clients should consume credentials.
4682
+ * The browser obtains replacements with RenewWidgetSession at the widget host.
4630
4683
  */
4631
4684
  token: string;
4632
4685
  /**
4633
- * Expiry of the token returned in `token`. Distinct from `expires_at`,
4634
- * which bounds the session itself.
4686
+ * Legacy creation-only alias of credentials.token_expires_at, supported
4687
+ * throughout v1. Distinct from expires_at, which bounds the session itself.
4635
4688
  */
4636
4689
  tokenExpiresAt?: string;
4637
4690
  /**
@@ -5074,6 +5127,10 @@ export interface ObjectiveEventData_StateChanged {
5074
5127
  type: 'stateChanged';
5075
5128
  stateChanged: ObjectiveStateChanged;
5076
5129
  }
5130
+ export interface ObjectiveEventData_Heartbeat {
5131
+ type: 'heartbeat';
5132
+ heartbeat: ObjectiveHeartbeat;
5133
+ }
5077
5134
  export interface CallableTool_Tool {
5078
5135
  type: 'tool';
5079
5136
  tool: ResourceMetadata;
@@ -5301,10 +5358,26 @@ export interface ModelSpec_Capability_Caching {
5301
5358
  type: 'caching';
5302
5359
  caching: Capability_Caching;
5303
5360
  }
5361
+ /**
5362
+ * TOKEN_EXPIRED identifies access-token expiry beyond the 60-second clock-skew tolerance. That token cannot renew; use already-installed newer credentials or require explicit app reauthentication. SESSION_* reasons are terminal. Never infer renewability from HTTP status alone.
5363
+ */
5364
+ export type WidgetSessionErrorReason = 'TOKEN_EXPIRED' | 'SESSION_REVOKED' | 'SESSION_EXPIRED' | 'SESSION_EXHAUSTED';
5365
+ /**
5366
+ * google.rpc.ErrorInfo detail for widget lifecycle failures. Match both domain and reason; ignore unknown reasons rather than renewing automatically.
5367
+ */
5368
+ export interface WidgetSessionErrorInfo {
5369
+ '@type': 'type.googleapis.com/google.rpc.ErrorInfo';
5370
+ domain: 'api.cadenya.com';
5371
+ reason: WidgetSessionErrorReason;
5372
+ /**
5373
+ * Optional non-sensitive context. Never contains tokens or secrets.
5374
+ */
5375
+ metadata?: Record<string, string>;
5376
+ }
5304
5377
  export type AgentServiceListAgentsState = 'STATE_UNSPECIFIED' | 'STATE_DRAFT' | 'STATE_PUBLISHED' | 'STATE_ARCHIVED';
5305
5378
  export type AgentServiceListAgentsVariationSelectionMode = 'VARIATION_SELECTION_MODE_UNSPECIFIED' | 'VARIATION_SELECTION_MODE_RANDOM' | 'VARIATION_SELECTION_MODE_WEIGHTED';
5306
5379
  export type AgentServiceListAgentFeedbackSentiment = 'FEEDBACK_SENTIMENT_UNSPECIFIED' | 'FEEDBACK_SENTIMENT_POSITIVE' | 'FEEDBACK_SENTIMENT_NEGATIVE';
5307
- export type AgentServiceListAgentWebhookDeliveriesEventType = 'OBJECTIVE_EVENT_TYPE_UNSPECIFIED' | 'OBJECTIVE_EVENT_TYPE_USER_MESSAGE' | 'OBJECTIVE_EVENT_TYPE_TOOL_APPROVAL_REQUESTED' | 'OBJECTIVE_EVENT_TYPE_TOOL_APPROVED' | 'OBJECTIVE_EVENT_TYPE_TOOL_DENIED' | 'OBJECTIVE_EVENT_TYPE_TOOL_CALLED' | 'OBJECTIVE_EVENT_TYPE_ERROR' | 'OBJECTIVE_EVENT_TYPE_ASSISTANT_MESSAGE' | 'OBJECTIVE_EVENT_TYPE_TOOL_RESULT' | 'OBJECTIVE_EVENT_TYPE_TOOL_ERROR' | 'OBJECTIVE_EVENT_TYPE_CONTEXT_WINDOW_COMPACTED' | 'OBJECTIVE_EVENT_TYPE_MEMORY_READ' | 'OBJECTIVE_EVENT_TYPE_CANCELLED' | 'OBJECTIVE_EVENT_TYPE_SUB_AGENT_SPAWNED' | 'OBJECTIVE_EVENT_TYPE_SUB_AGENT_UPDATED' | 'OBJECTIVE_EVENT_TYPE_FINALIZED' | 'OBJECTIVE_EVENT_TYPE_NOTICE' | 'OBJECTIVE_EVENT_TYPE_TIMED_OUT' | 'OBJECTIVE_EVENT_TYPE_REASONING' | 'OBJECTIVE_EVENT_TYPE_STATE_CHANGED';
5380
+ export type AgentServiceListAgentWebhookDeliveriesEventType = 'OBJECTIVE_EVENT_TYPE_UNSPECIFIED' | 'OBJECTIVE_EVENT_TYPE_USER_MESSAGE' | 'OBJECTIVE_EVENT_TYPE_TOOL_APPROVAL_REQUESTED' | 'OBJECTIVE_EVENT_TYPE_TOOL_APPROVED' | 'OBJECTIVE_EVENT_TYPE_TOOL_DENIED' | 'OBJECTIVE_EVENT_TYPE_TOOL_CALLED' | 'OBJECTIVE_EVENT_TYPE_ERROR' | 'OBJECTIVE_EVENT_TYPE_ASSISTANT_MESSAGE' | 'OBJECTIVE_EVENT_TYPE_TOOL_RESULT' | 'OBJECTIVE_EVENT_TYPE_TOOL_ERROR' | 'OBJECTIVE_EVENT_TYPE_CONTEXT_WINDOW_COMPACTED' | 'OBJECTIVE_EVENT_TYPE_MEMORY_READ' | 'OBJECTIVE_EVENT_TYPE_CANCELLED' | 'OBJECTIVE_EVENT_TYPE_SUB_AGENT_SPAWNED' | 'OBJECTIVE_EVENT_TYPE_SUB_AGENT_UPDATED' | 'OBJECTIVE_EVENT_TYPE_FINALIZED' | 'OBJECTIVE_EVENT_TYPE_NOTICE' | 'OBJECTIVE_EVENT_TYPE_TIMED_OUT' | 'OBJECTIVE_EVENT_TYPE_REASONING' | 'OBJECTIVE_EVENT_TYPE_STATE_CHANGED' | 'OBJECTIVE_EVENT_TYPE_HEARTBEAT';
5308
5381
  export type MemoryServiceListMemoryLayersType = 'MEMORY_LAYER_TYPE_UNSPECIFIED' | 'MEMORY_LAYER_TYPE_EPISODIC' | 'MEMORY_LAYER_TYPE_SKILLS';
5309
5382
  export type ModelServiceListModelsState = 'STATE_UNSPECIFIED' | 'STATE_ENABLED' | 'STATE_DISABLED';
5310
5383
  export type ObjectiveServiceListObjectivesState = 'OBJECTIVE_STATE_UNSPECIFIED' | 'OBJECTIVE_STATE_PENDING' | 'OBJECTIVE_STATE_RUNNING' | 'OBJECTIVE_STATE_WAITING' | 'OBJECTIVE_STATE_FAILED' | 'OBJECTIVE_STATE_CANCELLED' | 'OBJECTIVE_STATE_FINALIZED' | 'OBJECTIVE_STATE_TIMED_OUT';
@@ -5362,18 +5435,19 @@ export interface WidgetSessionSpecParam {
5362
5435
  */
5363
5436
  widgetId: string;
5364
5437
  /**
5365
- * Optional tenant assertion — the customer's org/company identifier for the
5366
- * visitor. Upserts the tenant record in the workspace and tags the session
5367
- * and every conversation it creates. Conversation listing at the widget
5368
- * host is scoped to this tenant.
5438
+ * Required tenant assertion — the customer's organization identifier.
5439
+ * Upserts the tenant record in the workspace. Every conversation created
5440
+ * through this session inherits the tenant and subject identity.
5369
5441
  */
5370
- tenant?: TenantAssertion;
5442
+ tenant: TenantAssertion;
5371
5443
  /**
5372
- * Optional subject assertion — the visitor within the tenant (e.g. their
5373
- * user id in the customer's namespace). Requires `tenant`; a subject
5374
- * asserted without a tenant is rejected with InvalidArgument.
5444
+ * Required subject assertion — the visitor's ID within the tenant.
5445
+ * Sessions with the same tenant and subject share conversation history on
5446
+ * the same widget and agent, subject to the current session's permissions.
5447
+ * A static ID deliberately shares that history; use a distinct ID per
5448
+ * visitor when their conversations should be separate.
5375
5449
  */
5376
- subject?: SubjectAssertion;
5450
+ subject: SubjectAssertion;
5377
5451
  /**
5378
5452
  * Hard session expiry. Tokens never outlive it; after it passes the session
5379
5453
  * transitions to STATE_EXPIRED. Defaults to a server-chosen horizon when