@cadenya/cadenya 1.0.2 → 1.2.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.
Files changed (63) hide show
  1. package/api.md +45 -45
  2. package/dist/client.d.ts +2 -2
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +4 -4
  5. package/dist/client.js.map +1 -1
  6. package/dist/core/http.d.ts +6 -1
  7. package/dist/core/http.d.ts.map +1 -1
  8. package/dist/core/http.js +33 -6
  9. package/dist/core/http.js.map +1 -1
  10. package/dist/index.d.ts +1 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +1 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/resources/agent-variations.d.ts +42 -32
  15. package/dist/resources/agent-variations.d.ts.map +1 -1
  16. package/dist/resources/agent-variations.js +22 -20
  17. package/dist/resources/agent-variations.js.map +1 -1
  18. package/dist/resources/agents.d.ts +4 -2
  19. package/dist/resources/agents.d.ts.map +1 -1
  20. package/dist/resources/agents.js +1 -1
  21. package/dist/resources/agents.js.map +1 -1
  22. package/dist/resources/ai-provider-keys.d.ts +11 -1
  23. package/dist/resources/ai-provider-keys.d.ts.map +1 -1
  24. package/dist/resources/ai-provider-keys.js +2 -2
  25. package/dist/resources/ai-provider-keys.js.map +1 -1
  26. package/dist/resources/memory-layers.d.ts +1 -1
  27. package/dist/resources/memory-layers.js +1 -1
  28. package/dist/resources/memory-layers.js.map +1 -1
  29. package/dist/resources/models.d.ts +51 -1
  30. package/dist/resources/models.d.ts.map +1 -1
  31. package/dist/resources/models.js +32 -0
  32. package/dist/resources/models.js.map +1 -1
  33. package/dist/resources/objectives.d.ts +1 -46
  34. package/dist/resources/objectives.d.ts.map +1 -1
  35. package/dist/resources/objectives.js +0 -35
  36. package/dist/resources/objectives.js.map +1 -1
  37. package/dist/resources/tool-search.d.ts +1 -1
  38. package/dist/resources/tool-search.js +1 -1
  39. package/dist/resources/tool-search.js.map +1 -1
  40. package/dist/resources/tools.d.ts +1 -1
  41. package/dist/resources/tools.js +1 -1
  42. package/dist/resources/tools.js.map +1 -1
  43. package/dist/types.d.ts +449 -100
  44. package/dist/types.d.ts.map +1 -1
  45. package/dist/types.js +40 -0
  46. package/dist/types.js.map +1 -1
  47. package/dist/webhooks.d.ts +7 -1
  48. package/dist/webhooks.d.ts.map +1 -1
  49. package/dist/webhooks.js.map +1 -1
  50. package/package.json +1 -1
  51. package/src/client.ts +4 -4
  52. package/src/core/http.ts +45 -6
  53. package/src/index.ts +1 -1
  54. package/src/resources/agent-variations.ts +59 -47
  55. package/src/resources/agents.ts +4 -2
  56. package/src/resources/ai-provider-keys.ts +13 -3
  57. package/src/resources/memory-layers.ts +1 -1
  58. package/src/resources/models.ts +67 -1
  59. package/src/resources/objectives.ts +1 -62
  60. package/src/resources/tool-search.ts +1 -1
  61. package/src/resources/tools.ts +1 -1
  62. package/src/types.ts +517 -103
  63. package/src/webhooks.ts +7 -1
package/src/types.ts CHANGED
@@ -10,16 +10,52 @@
10
10
  export type AIProviderConfig =
11
11
  | AIProviderConfig_Openrouter
12
12
  | AIProviderConfig_Openai
13
- | AIProviderConfig_OpenaiCompatible;
13
+ | AIProviderConfig_OpenaiCompatible
14
+ | AIProviderConfig_Vertex
15
+ | AIProviderConfig_Bedrock;
14
16
 
15
17
  /**
16
18
  * AIProviderCredential is the secret material used to authenticate with a
17
19
  * provider. The set case must correspond to AIProviderKeySpec.provider. The
18
- * server encrypts the serialized message at rest and never returns it on reads.
20
+ * server classifies and encrypts sensitive fields at rest and never returns
21
+ * secret values on reads.
19
22
  */
20
23
  export type AIProviderCredential =
21
24
  | AIProviderCredential_ApiKey
22
- | AIProviderCredential_Headers;
25
+ | AIProviderCredential_Headers
26
+ | AIProviderCredential_GoogleServiceAccount
27
+ | AIProviderCredential_AwsAccessKey;
28
+
29
+ /**
30
+ * AIProviderCredentialFieldStatus is the safe read representation of one
31
+ * credential field. Value is populated only when sensitive is false.
32
+ */
33
+ export interface AIProviderCredentialFieldStatus {
34
+ name?: string;
35
+ sensitive?: boolean;
36
+ configured?: boolean;
37
+ value?: string;
38
+ }
39
+
40
+ /**
41
+ * AIProviderCredentialPatch changes selected fields of the current credential.
42
+ * Omitted values are retained and clear_fields explicitly removes optional
43
+ * fields. Changing type replaces the credential and requires all mandatory
44
+ * fields for the new type.
45
+ */
46
+ export interface AIProviderCredentialPatch {
47
+ credentials?: AIProviderCredential;
48
+ clearFields?: Array<string>;
49
+ }
50
+
51
+ /**
52
+ * AIProviderCredentialStatus describes the stored authentication method and
53
+ * its fields without returning secret material.
54
+ */
55
+ export interface AIProviderCredentialStatus {
56
+ type?: string;
57
+ fields?: Array<AIProviderCredentialFieldStatus>;
58
+ }
23
59
 
24
60
  /**
25
61
  * AIProviderKey is a credential for an AI provider, scoped to a workspace.
@@ -38,6 +74,11 @@ export interface AIProviderKey {
38
74
  info?: AIProviderKeyInfo;
39
75
  }
40
76
 
77
+ /**
78
+ * How models on this key are maintained; see ModelManagement.
79
+ */
80
+ export type AiProviderKeyInfoModelManagement = 'MODEL_MANAGEMENT_UNSPECIFIED' | 'MODEL_MANAGEMENT_CADENYA' | 'MODEL_MANAGEMENT_SYNCED' | 'MODEL_MANAGEMENT_CUSTOMIZABLE' | 'MODEL_MANAGEMENT_MANUAL';
81
+
41
82
  /**
42
83
  * AIProviderKeyInfo carries server-derived, read-only details about a key, for
43
84
  * AI provider management UIs.
@@ -56,12 +97,21 @@ export interface AIProviderKeyInfo {
56
97
  * These are not added or maintained by account administrators.
57
98
  */
58
99
  isPromotional: boolean;
100
+ /**
101
+ * Safe-to-display credential state. Secret values are never populated;
102
+ * configured reports whether a value is present without revealing it.
103
+ */
104
+ credentialStatus?: AIProviderCredentialStatus;
105
+ /**
106
+ * How models on this key are maintained; see ModelManagement.
107
+ */
108
+ modelManagement: AiProviderKeyInfoModelManagement;
59
109
  }
60
110
 
61
111
  /**
62
112
  * The AI provider this key authenticates against.
63
113
  */
64
- export type AiProviderKeySpecProvider = 'AI_PROVIDER_UNSPECIFIED' | 'AI_PROVIDER_OPENROUTER' | 'AI_PROVIDER_OPENAI' | 'AI_PROVIDER_ANTHROPIC' | 'AI_PROVIDER_GEMINI' | 'AI_PROVIDER_OPENAI_COMPATIBLE';
114
+ export type AiProviderKeySpecProvider = 'AI_PROVIDER_UNSPECIFIED' | 'AI_PROVIDER_OPENROUTER' | 'AI_PROVIDER_OPENAI' | 'AI_PROVIDER_ANTHROPIC' | 'AI_PROVIDER_GEMINI' | 'AI_PROVIDER_OPENAI_COMPATIBLE' | 'AI_PROVIDER_VERTEX' | 'AI_PROVIDER_BEDROCK';
65
115
 
66
116
  export interface AIProviderKeySpec {
67
117
  /**
@@ -75,8 +125,9 @@ export interface AIProviderKeySpec {
75
125
  credentials?: AIProviderCredential;
76
126
  /**
77
127
  * Non-secret, provider-specific settings (OpenAI org/project, OpenRouter
78
- * region, OpenAI-compatible base URL). The set case must correspond to
79
- * `provider`. Returned on reads. Optional: omit to accept provider defaults.
128
+ * region, OpenAI-compatible base URL, Vertex project/location, or Bedrock
129
+ * Region). The set case must correspond to `provider`. Returned on reads.
130
+ * Optional for providers that have usable defaults.
80
131
  */
81
132
  config?: AIProviderConfig;
82
133
  }
@@ -223,7 +274,8 @@ export interface AccountSpec {
223
274
  /**
224
275
  * Attach a single tool, tool set, or sub-agent to a variation. Exactly one
225
276
  * of the target fields must be set; the assignment kind is inferred from the
226
- * populated field.
277
+ * populated field. Adding an existing target returns AlreadyExists.
278
+ * All targets must be in the variation's workspace and eligible for assignment.
227
279
  */
228
280
  export type AddAgentVariationAssignmentRequest =
229
281
  | AddAgentVariationAssignmentRequest_ToolId
@@ -231,9 +283,10 @@ export type AddAgentVariationAssignmentRequest =
231
283
  | AddAgentVariationAssignmentRequest_SubAgentId;
232
284
 
233
285
  /**
234
- * Attach a memory layer to a variation. The request is rejected when:
286
+ * Attach a memory layer to a variation. Use UpdateAgentVariationMemoryLayer or
287
+ * replace the spec list to reposition an existing layer. Rejected when:
288
+ * - the layer is already assigned, regardless of position (AlreadyExists)
235
289
  * - the layer is system-managed (FailedPrecondition)
236
- * - the layer is already assigned to this variation (AlreadyExists)
237
290
  * - the variation is already at the 10-assignment cap (FailedPrecondition)
238
291
  * - the position is already in use on this variation (InvalidArgument)
239
292
  */
@@ -442,7 +495,7 @@ export interface AgentScheduleSpec_Schedule {
442
495
 
443
496
  /**
444
497
  * Controls how variations are automatically selected when creating objectives
445
- * Defaults to RANDOM when unspecified
498
+ * Defaults to WEIGHTED when unspecified
446
499
  */
447
500
  export type AgentSpecVariationSelectionMode = 'VARIATION_SELECTION_MODE_UNSPECIFIED' | 'VARIATION_SELECTION_MODE_RANDOM' | 'VARIATION_SELECTION_MODE_WEIGHTED';
448
501
 
@@ -460,9 +513,9 @@ export interface AgentSpec {
460
513
  webhookEventsUrl?: string;
461
514
  /**
462
515
  * Controls how variations are automatically selected when creating objectives
463
- * Defaults to RANDOM when unspecified
516
+ * Defaults to WEIGHTED when unspecified
464
517
  */
465
- variationSelectionMode: AgentSpecVariationSelectionMode;
518
+ variationSelectionMode?: AgentSpecVariationSelectionMode;
466
519
  /**
467
520
  * SystemPromptDataSchema enforces the shape of system_prompt_data when objectives are created. This is valuable when using liquid formatting in agent
468
521
  * variation system prompt templates. The schema is also used when the agent is attached as a sub-agent, as it becomes the tool's input parameter schema.
@@ -540,26 +593,27 @@ export interface AgentVariationInfo {
540
593
  * Total number of objective feedbacks received for this variation
541
594
  */
542
595
  feedbackCount: number;
543
- /**
544
- * All tools, tool sets, and sub-agents assigned to this variation.
545
- * Populated on reads so clients can render a variation's full assignment
546
- * list without calling the add/remove endpoints just to enumerate.
547
- */
548
- assignments: Array<VariationAssignment>;
549
- /**
550
- * Read-only list of memory layer assignments for this variation,
551
- * returned in ascending `position` (most specific first — resolution
552
- * order). Capped at 10 entries.
553
- */
554
- memoryLayerAssignments: Array<VariationMemoryLayerAssignment>;
555
596
  /**
556
597
  * Count of memory layer assignments.
557
598
  */
558
599
  memoryLayerCount: number;
600
+ /**
601
+ * Number of distinct callable tools available through this variation's
602
+ * assignments after normalization. Expands tool sets and deduplicates tools
603
+ * also assigned directly. Each sub-agent contributes one callable tool;
604
+ * its own assignments are not expanded. Counts the full normalized set,
605
+ * regardless of which tools progressive discovery has loaded.
606
+ */
607
+ effectiveToolCount: number;
559
608
  }
560
609
 
561
610
  /**
562
- * AgentVariationSpec defines the operational configuration for a variation
611
+ * AgentVariationSpec defines the complete operational configuration for a
612
+ * variation, including assignments. Reads always populate both assignment lists,
613
+ * even when include_info is false. Create and update validate and persist the
614
+ * configuration atomically: any invalid target or cascade rejects the entire
615
+ * request. Targets must belong to the variation's workspace and pass the same
616
+ * eligibility checks as the dedicated add methods.
563
617
  */
564
618
  export interface AgentVariationSpec {
565
619
  /**
@@ -600,6 +654,22 @@ export interface AgentVariationSpec {
600
654
  * creation is rejected with InvalidArgument.
601
655
  */
602
656
  firstUserMessageTemplate?: string;
657
+ /**
658
+ * Complete set of assigned tools, tool sets, and sub-agents. Order has no
659
+ * meaning. Duplicate (target kind, canonical target ID) pairs are collapsed.
660
+ * On create, omitted or empty means no assignments. On update, selecting
661
+ * spec.assignments in update_mask replaces the entire set; empty clears it.
662
+ */
663
+ assignments?: Array<VariationAssignment>;
664
+ /**
665
+ * Complete baseline memory cascade, returned in ascending position. At most
666
+ * 10 whole layers; system-managed layers cannot be assigned. Duplicate layer
667
+ * IDs (after alias resolution) or positions are InvalidArgument. Validate the
668
+ * final cascade, so swapping two positions in one update is supported.
669
+ * On create, omitted or empty means no layers. On update, selecting
670
+ * spec.memory_layer_assignments replaces the entire list; empty clears it.
671
+ */
672
+ memoryLayerAssignments?: Array<VariationMemoryLayerAssignment>;
603
673
  }
604
674
 
605
675
  /**
@@ -823,11 +893,18 @@ export interface BareMetadata {
823
893
  /**
824
894
  * Human-readable name of the referenced resource, populated by the server
825
895
  * on reads for convenience. Absent on references to resources that do not
826
- * have a name (e.g., objective tasks).
896
+ * have a name.
827
897
  */
828
898
  name?: string;
829
899
  }
830
900
 
901
+ /**
902
+ * BedrockConfig selects the AWS source Region used for Bedrock Runtime calls.
903
+ */
904
+ export interface BedrockConfig {
905
+ region?: string;
906
+ }
907
+
831
908
  /**
832
909
  * CallableTool is a union that represents a tool that can be called by an agent. In Cadenya, a tool that is used within an agent objective
833
910
  * might be a user-defined tool (IE: MCP, HTTP), another Agent (useful to separate context), or a Cadenya Tool (one Cadenya provides).
@@ -1142,7 +1219,9 @@ export interface CreateAgentRequest {
1142
1219
  metadata: CreateResourceMetadata;
1143
1220
  spec: AgentSpec;
1144
1221
  /**
1145
- * Optional default variation to add to the agent on create
1222
+ * Optional default variation to add to the agent on create. Its spec accepts
1223
+ * assignments and memory_layer_assignments using the same atomic validation
1224
+ * as CreateAgentVariation. Failure rejects the entire agent creation.
1146
1225
  */
1147
1226
  defaultVariation?: CreateAgentVariationRequest;
1148
1227
  }
@@ -1195,6 +1274,26 @@ export interface CreateMemoryLayerRequest {
1195
1274
  spec: MemoryLayerSpec;
1196
1275
  }
1197
1276
 
1277
+ /**
1278
+ * Create model request. The model is created on the given AI provider key with
1279
+ * PROVENANCE_MANUALLY_ENTERED and STATE_ENABLED. The key must be customer
1280
+ * provided and its provider must accept manual definitions (see
1281
+ * AIProviderKeyInfo.model_management).
1282
+ */
1283
+ export interface CreateModelRequest {
1284
+ /**
1285
+ * Workspace ID.
1286
+ */
1287
+ workspaceId?: string;
1288
+ /**
1289
+ * The AI provider key the model routes through. Accepts the canonical
1290
+ * `aipk_…` form or the `external_id:<value>` form.
1291
+ */
1292
+ aiProviderKeyId?: string;
1293
+ metadata: CreateResourceMetadata;
1294
+ spec: ModelSpec;
1295
+ }
1296
+
1198
1297
  /**
1199
1298
  * Request to submit feedback for an objective
1200
1299
  */
@@ -1443,6 +1542,24 @@ export interface CredentialAPIKey {
1443
1542
  apiKey?: string;
1444
1543
  }
1445
1544
 
1545
+ /**
1546
+ * CredentialAWSAccessKey carries AWS SigV4 credentials. Optional presence is
1547
+ * used by credential patches so omitted values remain unchanged.
1548
+ */
1549
+ export interface CredentialAWSAccessKey {
1550
+ accessKeyId?: string;
1551
+ secretAccessKey?: string;
1552
+ sessionToken?: string;
1553
+ }
1554
+
1555
+ /**
1556
+ * CredentialGoogleServiceAccount carries an in-memory Google service-account
1557
+ * credential document.
1558
+ */
1559
+ export interface CredentialGoogleServiceAccount {
1560
+ json?: string;
1561
+ }
1562
+
1446
1563
  /**
1447
1564
  * CredentialHeaders carries arbitrary HTTP headers sent with every request to
1448
1565
  * the provider (e.g. {"Authorization": "Bearer ...", "X-Api-Key": "..."}).
@@ -1646,11 +1763,6 @@ export interface ListObjectiveFeedbackResponse {
1646
1763
  pagination?: Page;
1647
1764
  }
1648
1765
 
1649
- export interface ListObjectiveTasksResponse {
1650
- items: Array<ObjectiveTask>;
1651
- pagination?: Page;
1652
- }
1653
-
1654
1766
  export interface ListObjectiveToolCallsResponse {
1655
1767
  items: Array<ObjectiveToolCall>;
1656
1768
  pagination?: Page;
@@ -1994,6 +2106,13 @@ export interface MemoryReference {
1994
2106
  */
1995
2107
  export type ModelState = 'STATE_UNSPECIFIED' | 'STATE_ENABLED' | 'STATE_DISABLED';
1996
2108
 
2109
+ /**
2110
+ * Where this definition came from. Output only; set at creation. Synced
2111
+ * models reject edits to metadata.name and spec, manually entered models
2112
+ * accept them.
2113
+ */
2114
+ export type ModelProvenance = 'PROVENANCE_UNSPECIFIED' | 'PROVENANCE_SYNCED_FROM_PROVIDER' | 'PROVENANCE_MANUALLY_ENTERED';
2115
+
1997
2116
  export interface Model {
1998
2117
  /**
1999
2118
  * Resource metadata
@@ -2013,6 +2132,40 @@ export interface Model {
2013
2132
  * :enable and :disable actions to transition.
2014
2133
  */
2015
2134
  state: ModelState;
2135
+ /**
2136
+ * Where this definition came from. Output only; set at creation. Synced
2137
+ * models reject edits to metadata.name and spec, manually entered models
2138
+ * accept them.
2139
+ */
2140
+ provenance: ModelProvenance;
2141
+ /**
2142
+ * Customer price overrides. Output only here; set through UpdateModel with
2143
+ * pricing_override.* mask paths. When an override is present, spec's price
2144
+ * fields already reflect it (they are the effective prices).
2145
+ */
2146
+ pricingOverride?: ModelPricingOverride;
2147
+ /**
2148
+ * The rates before any customer override: the catalog rate for a synced
2149
+ * model, the entered rate for a manually entered one. Output only. When a
2150
+ * side matches the spec price, an override may still be present; inspect
2151
+ * pricing_override field presence to determine whether an override is set.
2152
+ */
2153
+ basePricing: ModelBasePricing;
2154
+ }
2155
+
2156
+ /**
2157
+ * ModelBasePricing is a model's default rates in cents per million tokens,
2158
+ * unaffected by pricing overrides. Zero means the rate is not known.
2159
+ */
2160
+ export interface ModelBasePricing {
2161
+ /**
2162
+ * Default input token rate, in cents per million tokens.
2163
+ */
2164
+ inputPricePerMillionTokens: string;
2165
+ /**
2166
+ * Default output token rate, in cents per million tokens.
2167
+ */
2168
+ outputPricePerMillionTokens: string;
2016
2169
  }
2017
2170
 
2018
2171
  /**
@@ -2037,6 +2190,22 @@ export interface ModelInfo {
2037
2190
  lastUsedAt?: string;
2038
2191
  }
2039
2192
 
2193
+ /**
2194
+ * ModelPricingOverride replaces the catalog prices for a model. Each field is
2195
+ * independent: an absent field keeps the catalog price, a present field (zero
2196
+ * included) replaces it. Prices are cents per million tokens.
2197
+ */
2198
+ export interface ModelPricingOverride {
2199
+ /**
2200
+ * Override for input token price, in cents per million tokens.
2201
+ */
2202
+ inputPricePerMillionTokens?: string;
2203
+ /**
2204
+ * Override for output token price, in cents per million tokens.
2205
+ */
2206
+ outputPricePerMillionTokens?: string;
2207
+ }
2208
+
2040
2209
  export interface ModelSpec {
2041
2210
  /**
2042
2211
  * The model provider (e.g., "anthropic", "openai", "google")
@@ -2055,11 +2224,16 @@ export interface ModelSpec {
2055
2224
  */
2056
2225
  maxOutputTokens: number;
2057
2226
  /**
2058
- * Cost per million input tokens in cents (e.g., 300 = $3.00)
2227
+ * Cost per million input tokens in cents (e.g., 300 = $3.00). On reads this
2228
+ * is the effective price: the catalog price unless
2229
+ * Model.pricing_override replaces it. Writes only apply to manually
2230
+ * entered models; use UpdateModel's pricing_override paths to override a
2231
+ * synced model's price.
2059
2232
  */
2060
2233
  inputPricePerMillionTokens: string;
2061
2234
  /**
2062
- * Cost per million output tokens in cents (e.g., 1500 = $15.00)
2235
+ * Cost per million output tokens in cents (e.g., 1500 = $15.00). Effective
2236
+ * price on reads, see input_price_per_million_tokens.
2063
2237
  */
2064
2238
  outputPricePerMillionTokens: string;
2065
2239
  /**
@@ -2068,6 +2242,15 @@ export interface ModelSpec {
2068
2242
  * (and its mode) lives here too, as the "reasoning" capability.
2069
2243
  */
2070
2244
  capabilities: Array<ModelSpec_Capability>;
2245
+ /**
2246
+ * The identifier the provider expects in inference requests, exactly as the
2247
+ * provider spells it: an OpenAI model name, a Vertex publisher model
2248
+ * resource, a Bedrock inference-profile ID or ARN, or an OpenAI-compatible
2249
+ * endpoint's model ID. Distinct from metadata.external_id, which is
2250
+ * Cadenya's slug. Verified with a minimal provider completion on creation
2251
+ * and whenever the identifier changes.
2252
+ */
2253
+ providerModelId: string;
2071
2254
  }
2072
2255
 
2073
2256
  /**
@@ -2110,7 +2293,7 @@ export interface Notice {
2110
2293
  /**
2111
2294
  * The current lifecycle state of the objective.
2112
2295
  */
2113
- export type ObjectiveState = 'STATE_UNSPECIFIED' | 'STATE_PENDING' | 'STATE_RUNNING' | 'STATE_WAITING' | 'STATE_FAILED' | 'STATE_CANCELLED' | 'STATE_FINALIZED' | 'STATE_TIMED_OUT';
2296
+ export type ObjectiveState = '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';
2114
2297
 
2115
2298
  /**
2116
2299
  * Objective is the data for an objective. It contains the snapshotted fields for the selected agent and variation. Secrets are returned
@@ -2177,7 +2360,7 @@ export interface Objective {
2177
2360
  memoryCascade: Array<MemoryReference>;
2178
2361
  /**
2179
2362
  * The output of the objective, populated when the objective completes. Will match the schema of output_json_schema or output_json_inferred.
2180
- * This will only be set if the state of the objective is set to STATE_FINALIZED
2363
+ * This will only be set if the state of the objective is set to OBJECTIVE_STATE_FINALIZED
2181
2364
  */
2182
2365
  output?: Record<string, unknown>;
2183
2366
  /**
@@ -2342,7 +2525,8 @@ export type ObjectiveEventData =
2342
2525
  | ObjectiveEventData_Finalized
2343
2526
  | ObjectiveEventData_Notice
2344
2527
  | ObjectiveEventData_TimedOut
2345
- | ObjectiveEventData_Reasoning;
2528
+ | ObjectiveEventData_Reasoning
2529
+ | ObjectiveEventData_StateChanged;
2346
2530
 
2347
2531
  export interface ObjectiveEventInfo {
2348
2532
  objective?: OperationMetadata;
@@ -2467,31 +2651,38 @@ export interface ObjectiveInfo {
2467
2651
  }
2468
2652
 
2469
2653
  /**
2470
- * ObjectiveTask represents a task within an objective, typically created and managed by an AI agent
2471
- * to track progress toward completing the objective.
2654
+ * The state before this write. OBJECTIVE_STATE_UNSPECIFIED when the
2655
+ * objective was just created.
2472
2656
  */
2473
- export interface ObjectiveTask {
2474
- metadata: BareMetadata;
2475
- data: ObjectiveTaskData;
2476
- }
2657
+ export type ObjectiveStateChangedFromState = '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';
2477
2658
 
2478
- export interface ObjectiveTaskData {
2479
- /**
2480
- * The sequential number of this task within the objective (auto-assigned, 1-based)
2481
- */
2482
- number: number;
2659
+ /**
2660
+ * The state after this write.
2661
+ */
2662
+ export type ObjectiveStateChangedToState = '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';
2663
+
2664
+ /**
2665
+ * ObjectiveStateChanged is written every time the objective's lifecycle state
2666
+ * is set, including the initial move into OBJECTIVE_STATE_PENDING at creation. Terminal
2667
+ * transitions also write their dedicated event (cancelled, timedOut,
2668
+ * finalized, error) immediately before this one, so consumers that only care
2669
+ * about the outcome can keep listening for those.
2670
+ */
2671
+ export interface ObjectiveStateChanged {
2483
2672
  /**
2484
- * Description of the task to be completed
2673
+ * The state before this write. OBJECTIVE_STATE_UNSPECIFIED when the
2674
+ * objective was just created.
2485
2675
  */
2486
- task: string;
2676
+ fromState: ObjectiveStateChangedFromState;
2487
2677
  /**
2488
- * Whether the task has been completed
2678
+ * The state after this write.
2489
2679
  */
2490
- completed: boolean;
2680
+ toState: ObjectiveStateChangedToState;
2491
2681
  /**
2492
- * Timestamp when the task was marked as completed
2682
+ * The status message recorded with the transition, if any (e.g.
2683
+ * "Continued", or the error summary on a failure).
2493
2684
  */
2494
- completedAt?: string;
2685
+ message?: string;
2495
2686
  }
2496
2687
 
2497
2688
  /**
@@ -2639,6 +2830,11 @@ export interface ObjectiveToolCallResult_ImageBlock {
2639
2830
 
2640
2831
  export interface ObjectiveToolCallResult_TextBlock {
2641
2832
  text: string;
2833
+ /**
2834
+ * Size of the stored text in bytes. Filled by the server at record time;
2835
+ * zero on results recorded before this field existed.
2836
+ */
2837
+ sizeBytes?: string;
2642
2838
  }
2643
2839
 
2644
2840
  /**
@@ -2936,6 +3132,38 @@ export interface Reasoning {
2936
3132
  content: string;
2937
3133
  }
2938
3134
 
3135
+ /**
3136
+ * Detach a target by its foreign key. Removing an unassigned target returns
3137
+ * NotFound. The parent variation must exist and be accessible.
3138
+ */
3139
+ export type RemoveAgentVariationAssignmentRequest =
3140
+ | RemoveAgentVariationAssignmentRequest_ToolId
3141
+ | RemoveAgentVariationAssignmentRequest_ToolSetId
3142
+ | RemoveAgentVariationAssignmentRequest_SubAgentId;
3143
+
3144
+ /**
3145
+ * Remove by memory layer ID. An unassigned layer returns NotFound.
3146
+ * The parent variation must still exist and be accessible.
3147
+ */
3148
+ export interface RemoveAgentVariationMemoryLayerRequest {
3149
+ /**
3150
+ * Workspace ID.
3151
+ */
3152
+ workspaceId?: string;
3153
+ /**
3154
+ * Agent ID. Accepts the canonical `agent_…` form or the `external_id:<value>` form.
3155
+ */
3156
+ agentId?: string;
3157
+ /**
3158
+ * Variation ID. Accepts the canonical `agentvar_…` form or the `external_id:<value>` form.
3159
+ */
3160
+ variationId?: string;
3161
+ /**
3162
+ * Layer to detach. Accepts memlyr_… or external_id:<value>.
3163
+ */
3164
+ memoryLayerId: string;
3165
+ }
3166
+
2939
3167
  export type ResolvedSecretSource = 'RESOLVED_SECRET_SOURCE_UNSPECIFIED' | 'RESOLVED_SECRET_SOURCE_WORKSPACE' | 'RESOLVED_SECRET_SOURCE_TOOLSET' | 'RESOLVED_SECRET_SOURCE_OBJECTIVE';
2940
3168
 
2941
3169
  /**
@@ -4163,6 +4391,11 @@ export interface UpdateAIProviderKeyRequest {
4163
4391
  * Fields to update.
4164
4392
  */
4165
4393
  updateMask?: string;
4394
+ /**
4395
+ * Field-level credential changes. This is independent of update_mask;
4396
+ * legacy clients may continue replacing spec.credentials atomically.
4397
+ */
4398
+ credentialPatch?: AIProviderCredentialPatch;
4166
4399
  }
4167
4400
 
4168
4401
  export interface UpdateAPIKeyRequest {
@@ -4253,7 +4486,7 @@ export interface UpdateAgentScheduleRequest {
4253
4486
  /**
4254
4487
  * Update an existing memory layer assignment. Only `position` is mutable.
4255
4488
  * A new position that collides with another assignment on the same variation
4256
- * is rejected with InvalidArgument.
4489
+ * is rejected with InvalidArgument. An unassigned layer returns NotFound.
4257
4490
  */
4258
4491
  export interface UpdateAgentVariationMemoryLayerRequest {
4259
4492
  /**
@@ -4268,11 +4501,14 @@ export interface UpdateAgentVariationMemoryLayerRequest {
4268
4501
  * Variation ID. Accepts the canonical `agentvar_…` form or the `external_id:<value>` form.
4269
4502
  */
4270
4503
  variationId?: string;
4271
- id?: string;
4504
+ /**
4505
+ * Layer to reposition. Accepts memlyr_… or external_id:<value>.
4506
+ */
4507
+ memoryLayerId: string;
4272
4508
  /**
4273
4509
  * New position. Only field currently updatable on an assignment.
4274
4510
  */
4275
- position?: number;
4511
+ position: number;
4276
4512
  }
4277
4513
 
4278
4514
  /**
@@ -4294,7 +4530,13 @@ export interface UpdateAgentVariationRequest {
4294
4530
  metadata?: UpdateResourceMetadata;
4295
4531
  spec?: AgentVariationSpec;
4296
4532
  /**
4297
- * Fields to update
4533
+ * Fields to update. Assignment lists are replaced as a whole, never merged.
4534
+ * Select spec.assignments or spec.memory_layer_assignments to replace/clear
4535
+ * one list. Selecting spec replaces the entire spec (including omitted lists);
4536
+ * * replaces all mutable fields. Element/index paths are not supported.
4537
+ * Without a mask, infer paths from non-empty fields: non-empty assignment
4538
+ * lists replace existing lists, while omitted/empty lists remain unchanged.
4539
+ * To clear a list, explicitly include its path in the mask.
4298
4540
  */
4299
4541
  updateMask?: string;
4300
4542
  }
@@ -4322,6 +4564,42 @@ export interface UpdateMemoryLayerRequest {
4322
4564
  updateMask?: string;
4323
4565
  }
4324
4566
 
4567
+ /**
4568
+ * Update model request. update_mask must list leaf paths: metadata.name,
4569
+ * metadata.external_id, metadata.labels, spec.provider_model_id,
4570
+ * spec.provider, spec.family, spec.max_input_tokens, spec.max_output_tokens,
4571
+ * spec.capabilities, pricing_override.input_price_per_million_tokens, and
4572
+ * pricing_override.output_price_per_million_tokens. Synced models
4573
+ * (PROVENANCE_SYNCED_FROM_PROVIDER) reject metadata.name and spec.* paths.
4574
+ * spec price fields are never writable; price changes go through
4575
+ * pricing_override, where a masked-but-absent field clears the override.
4576
+ * Metadata and spec must be present when their respective paths are masked.
4577
+ */
4578
+ export interface UpdateModelRequest {
4579
+ /**
4580
+ * Workspace ID.
4581
+ */
4582
+ workspaceId?: string;
4583
+ /**
4584
+ * Model ID. Accepts the canonical `model_…` form or the `external_id:<value>` form.
4585
+ */
4586
+ id?: string;
4587
+ metadata?: UpdateResourceMetadata;
4588
+ /**
4589
+ * When any spec.* path is masked, send the complete spec (current values
4590
+ * plus edits); it is validated as a whole.
4591
+ */
4592
+ spec?: ModelSpec;
4593
+ /**
4594
+ * Customer price overrides, applied per masked path.
4595
+ */
4596
+ pricingOverride?: ModelPricingOverride;
4597
+ /**
4598
+ * Fields to update. Required; leaf paths only.
4599
+ */
4600
+ updateMask?: string;
4601
+ }
4602
+
4325
4603
  /**
4326
4604
  * UpdateResourceMetadata contains the user-provided fields for updating
4327
4605
  * a workspace-scoped resource. Read-only fields (id, account_id, workspace_id, profile_id,
@@ -4519,49 +4797,44 @@ export interface UserMessage {
4519
4797
  }
4520
4798
 
4521
4799
  /**
4522
- * A read-only reference to a single tool, tool set, or sub-agent attached to
4523
- * a variation. Read the full set of assignments via `AgentVariationInfo.assignments`;
4524
- * mutations go through the dedicated add/remove assignment endpoints.
4525
- *
4526
- * The `id` identifies the assignment itself (not the referenced resource) and
4527
- * is the handle used to remove the assignment. It is returned by the add
4528
- * endpoint and present on every entry in `AgentVariationInfo.assignments`.
4800
+ * A tool, tool set, or sub-agent assigned to a variation, identified only by
4801
+ * the target resource ID. The same shape is accepted in a spec and returned
4802
+ * on reads. Assignment junction records are an internal implementation detail.
4529
4803
  */
4530
4804
  export type VariationAssignment =
4531
- | VariationAssignment_Tool
4532
- | VariationAssignment_ToolSet
4533
- | VariationAssignment_Agent;
4805
+ | VariationAssignment_ToolId
4806
+ | VariationAssignment_ToolSetId
4807
+ | VariationAssignment_SubAgentId;
4534
4808
 
4535
4809
  /**
4536
- * VariationMemoryLayerAssignment attaches a single MemoryLayer to a
4537
- * variation at a given position in the variation's baseline memory
4538
- * cascade. A variation has at most one assignment per memory_layer_id.
4539
- *
4540
- * Variations only support whole-layer attachments — entry pinning is an
4541
- * objective-level capability.
4810
+ * A whole memory layer in a variation's baseline memory cascade. Identified
4811
+ * by the memory layer ID; no assignment junction ID is exposed. Entry pinning
4812
+ * remains an objective-level capability.
4542
4813
  */
4543
4814
  export interface VariationMemoryLayerAssignment {
4544
4815
  /**
4545
- * Assignment row id — handle for removing the assignment. Distinct
4546
- * from the referenced memory layer's id.
4816
+ * Accepts the canonical memlyr_… ID or external_id:<value> on input.
4817
+ * Reads always return the canonical ID.
4547
4818
  */
4548
- id: string;
4549
- /**
4550
- * The attached memory layer.
4551
- */
4552
- memoryLayer: BareMetadata;
4819
+ memoryLayerId: string;
4553
4820
  /**
4554
- * Position in the variation's baseline cascade. Position is
4555
- * specificity, CSS-style: a LOWER position is more specific and is
4556
- * consulted first; the highest-position assignment is the most
4557
- * general fallback. Gaps are fine — only relative position matters.
4558
- * Positions must be unique within a variation; a request that would
4559
- * collide with an existing assignment's position is rejected with
4560
- * InvalidArgument.
4821
+ * Position is specificity: lower positions are consulted first; the highest
4822
+ * position is the most general fallback. Gaps and zero are valid. Positions
4823
+ * must be unique within a variation. Explicitly required in a full spec;
4824
+ * only AddAgentVariationMemoryLayer can choose an append position for you.
4561
4825
  */
4562
4826
  position: number;
4563
4827
  }
4564
4828
 
4829
+ /**
4830
+ * VertexConfig configures the Google Cloud project and location used by the
4831
+ * Vertex AI backend. Both are required for service-account authentication.
4832
+ */
4833
+ export interface VertexConfig {
4834
+ projectId?: string;
4835
+ location?: string;
4836
+ }
4837
+
4565
4838
  export interface WebhookDelivery {
4566
4839
  metadata: OperationMetadata;
4567
4840
  /**
@@ -4575,7 +4848,7 @@ export type WebhookDeliveryDataStatus = 'WEBHOOK_DELIVERY_STATUS_UNSPECIFIED' |
4575
4848
  /**
4576
4849
  * The type of objective event that triggered this webhook delivery
4577
4850
  */
4578
- 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';
4851
+ 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';
4579
4852
 
4580
4853
  export interface WebhookDeliveryData {
4581
4854
  /**
@@ -4920,22 +5193,28 @@ export interface ObjectiveEventWebhookData {
4920
5193
  data: ObjectiveEventWebhookDataData;
4921
5194
  }
4922
5195
 
4923
- export interface VariationAssignment_Tool {
4924
- type: 'tool';
4925
- tool: BareMetadata;
4926
- id: string;
5196
+ export interface VariationAssignment_ToolId {
5197
+ type: 'toolId';
5198
+ /**
5199
+ * Canonical tool ID.
5200
+ */
5201
+ toolId: string;
4927
5202
  }
4928
5203
 
4929
- export interface VariationAssignment_ToolSet {
4930
- type: 'toolSet';
4931
- toolSet: BareMetadata;
4932
- id: string;
5204
+ export interface VariationAssignment_ToolSetId {
5205
+ type: 'toolSetId';
5206
+ /**
5207
+ * Canonical tool set ID.
5208
+ */
5209
+ toolSetId: string;
4933
5210
  }
4934
5211
 
4935
- export interface VariationAssignment_Agent {
4936
- type: 'agent';
4937
- agent: BareMetadata;
4938
- id: string;
5212
+ export interface VariationAssignment_SubAgentId {
5213
+ type: 'subAgentId';
5214
+ /**
5215
+ * Canonical sub-agent ID.
5216
+ */
5217
+ subAgentId: string;
4939
5218
  }
4940
5219
 
4941
5220
  export interface ObjectiveToolCallResult_ContentBlock_Text {
@@ -5263,6 +5542,11 @@ export interface ObjectiveEventData_Reasoning {
5263
5542
  reasoning: Reasoning;
5264
5543
  }
5265
5544
 
5545
+ export interface ObjectiveEventData_StateChanged {
5546
+ type: 'stateChanged';
5547
+ stateChanged: ObjectiveStateChanged;
5548
+ }
5549
+
5266
5550
  export interface CallableTool_Tool {
5267
5551
  type: 'tool';
5268
5552
  tool: ResourceMetadata;
@@ -5373,6 +5657,57 @@ export interface AddAgentVariationAssignmentRequest_SubAgentId {
5373
5657
  variationId?: string;
5374
5658
  }
5375
5659
 
5660
+ export interface RemoveAgentVariationAssignmentRequest_ToolId {
5661
+ type: 'toolId';
5662
+ toolId: string;
5663
+ /**
5664
+ * Workspace ID.
5665
+ */
5666
+ workspaceId?: string;
5667
+ /**
5668
+ * Agent ID. Accepts the canonical `agent_…` form or the `external_id:<value>` form.
5669
+ */
5670
+ agentId?: string;
5671
+ /**
5672
+ * Variation ID. Accepts the canonical `agentvar_…` form or the `external_id:<value>` form.
5673
+ */
5674
+ variationId?: string;
5675
+ }
5676
+
5677
+ export interface RemoveAgentVariationAssignmentRequest_ToolSetId {
5678
+ type: 'toolSetId';
5679
+ toolSetId: string;
5680
+ /**
5681
+ * Workspace ID.
5682
+ */
5683
+ workspaceId?: string;
5684
+ /**
5685
+ * Agent ID. Accepts the canonical `agent_…` form or the `external_id:<value>` form.
5686
+ */
5687
+ agentId?: string;
5688
+ /**
5689
+ * Variation ID. Accepts the canonical `agentvar_…` form or the `external_id:<value>` form.
5690
+ */
5691
+ variationId?: string;
5692
+ }
5693
+
5694
+ export interface RemoveAgentVariationAssignmentRequest_SubAgentId {
5695
+ type: 'subAgentId';
5696
+ subAgentId: string;
5697
+ /**
5698
+ * Workspace ID.
5699
+ */
5700
+ workspaceId?: string;
5701
+ /**
5702
+ * Agent ID. Accepts the canonical `agent_…` form or the `external_id:<value>` form.
5703
+ */
5704
+ agentId?: string;
5705
+ /**
5706
+ * Variation ID. Accepts the canonical `agentvar_…` form or the `external_id:<value>` form.
5707
+ */
5708
+ variationId?: string;
5709
+ }
5710
+
5376
5711
  export interface AIProviderCredential_ApiKey {
5377
5712
  type: 'apiKey';
5378
5713
  /**
@@ -5391,6 +5726,24 @@ export interface AIProviderCredential_Headers {
5391
5726
  headers: CredentialHeaders;
5392
5727
  }
5393
5728
 
5729
+ export interface AIProviderCredential_GoogleServiceAccount {
5730
+ type: 'googleServiceAccount';
5731
+ /**
5732
+ * Google service-account JSON for Vertex AI. The server accepts only the
5733
+ * service_account credential type and never writes the JSON to plaintext
5734
+ * storage.
5735
+ */
5736
+ googleServiceAccount: CredentialGoogleServiceAccount;
5737
+ }
5738
+
5739
+ export interface AIProviderCredential_AwsAccessKey {
5740
+ type: 'awsAccessKey';
5741
+ /**
5742
+ * AWS access credentials for Bedrock SigV4 authentication.
5743
+ */
5744
+ awsAccessKey: CredentialAWSAccessKey;
5745
+ }
5746
+
5394
5747
  export interface AIProviderConfig_Openrouter {
5395
5748
  type: 'openrouter';
5396
5749
  openrouter: OpenRouterConfig;
@@ -5406,6 +5759,16 @@ export interface AIProviderConfig_OpenaiCompatible {
5406
5759
  openaiCompatible: OpenAICompatibleConfig;
5407
5760
  }
5408
5761
 
5762
+ export interface AIProviderConfig_Vertex {
5763
+ type: 'vertex';
5764
+ vertex: VertexConfig;
5765
+ }
5766
+
5767
+ export interface AIProviderConfig_Bedrock {
5768
+ type: 'bedrock';
5769
+ bedrock: BedrockConfig;
5770
+ }
5771
+
5409
5772
  export interface ModelSpec_Capability_Temperature {
5410
5773
  type: 'temperature';
5411
5774
  temperature: Capability_Temperature;
@@ -5447,13 +5810,13 @@ export type AgentServiceListAgentsVariationSelectionMode = 'VARIATION_SELECTION_
5447
5810
 
5448
5811
  export type AgentServiceListAgentFeedbackSentiment = 'FEEDBACK_SENTIMENT_UNSPECIFIED' | 'FEEDBACK_SENTIMENT_POSITIVE' | 'FEEDBACK_SENTIMENT_NEGATIVE';
5449
5812
 
5450
- 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';
5813
+ 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';
5451
5814
 
5452
5815
  export type MemoryServiceListMemoryLayersType = 'MEMORY_LAYER_TYPE_UNSPECIFIED' | 'MEMORY_LAYER_TYPE_EPISODIC' | 'MEMORY_LAYER_TYPE_SKILLS';
5453
5816
 
5454
5817
  export type ModelServiceListModelsState = 'STATE_UNSPECIFIED' | 'STATE_ENABLED' | 'STATE_DISABLED';
5455
5818
 
5456
- export type ObjectiveServiceListObjectivesState = 'STATE_UNSPECIFIED' | 'STATE_PENDING' | 'STATE_RUNNING' | 'STATE_WAITING' | 'STATE_FAILED' | 'STATE_CANCELLED' | 'STATE_FINALIZED' | 'STATE_TIMED_OUT';
5819
+ 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';
5457
5820
 
5458
5821
  export type ObjectiveServiceListObjectiveToolCallsStatus = 'TOOL_CALL_STATUS_UNSPECIFIED' | 'TOOL_CALL_STATUS_AUTO_APPROVED' | 'TOOL_CALL_STATUS_WAITING_FOR_APPROVAL' | 'TOOL_CALL_STATUS_APPROVED' | 'TOOL_CALL_STATUS_DENIED';
5459
5822
 
@@ -5514,6 +5877,8 @@ export interface ObjectiveEpisodicConfigParam {
5514
5877
  key: string;
5515
5878
  }
5516
5879
 
5880
+ export type RemoveAgentVariationAssignmentRequestParam = RemoveAgentVariationAssignmentRequest_ToolIdParam | RemoveAgentVariationAssignmentRequest_ToolSetIdParam | RemoveAgentVariationAssignmentRequest_SubAgentIdParam;
5881
+
5517
5882
  export interface WidgetSessionSpecParam {
5518
5883
  /**
5519
5884
  * Widget this session is minted against. Accepts the canonical `wgt_…` form
@@ -5567,6 +5932,21 @@ export interface AddAgentVariationAssignmentRequest_SubAgentIdParam {
5567
5932
  subAgentId: string;
5568
5933
  }
5569
5934
 
5935
+ export interface RemoveAgentVariationAssignmentRequest_ToolIdParam {
5936
+ type: 'toolId';
5937
+ toolId: string;
5938
+ }
5939
+
5940
+ export interface RemoveAgentVariationAssignmentRequest_ToolSetIdParam {
5941
+ type: 'toolSetId';
5942
+ toolSetId: string;
5943
+ }
5944
+
5945
+ export interface RemoveAgentVariationAssignmentRequest_SubAgentIdParam {
5946
+ type: 'subAgentId';
5947
+ subAgentId: string;
5948
+ }
5949
+
5570
5950
 
5571
5951
  // ---- request wire projections (strip readOnly at runtime) ----
5572
5952
 
@@ -5619,6 +5999,16 @@ export function wireObjectiveEpisodicConfig(value: ObjectiveEpisodicConfigParam
5619
5999
  return out;
5620
6000
  }
5621
6001
 
6002
+ export function wireRemoveAgentVariationAssignmentRequest(value: RemoveAgentVariationAssignmentRequestParam | null | undefined): unknown {
6003
+ if (value == null || typeof value !== 'object') return value;
6004
+ switch ((value as never as Record<string, unknown>)["type"]) {
6005
+ case "toolId": return wireRemoveAgentVariationAssignmentRequest_ToolId((value as never));
6006
+ case "toolSetId": return wireRemoveAgentVariationAssignmentRequest_ToolSetId((value as never));
6007
+ case "subAgentId": return wireRemoveAgentVariationAssignmentRequest_SubAgentId((value as never));
6008
+ default: return value;
6009
+ }
6010
+ }
6011
+
5622
6012
  export function wireWidgetSessionSpec(value: WidgetSessionSpecParam | null | undefined): unknown {
5623
6013
  if (value == null || typeof value !== 'object') return value;
5624
6014
  const out: Record<string, unknown> = {};
@@ -5654,3 +6044,27 @@ export function wireAddAgentVariationAssignmentRequest_SubAgentId(value: AddAgen
5654
6044
  return out;
5655
6045
  }
5656
6046
 
6047
+ export function wireRemoveAgentVariationAssignmentRequest_ToolId(value: RemoveAgentVariationAssignmentRequest_ToolIdParam | null | undefined): unknown {
6048
+ if (value == null || typeof value !== 'object') return value;
6049
+ const out: Record<string, unknown> = {};
6050
+ if (value.type !== undefined) out["type"] = value.type;
6051
+ if (value.toolId !== undefined) out["toolId"] = value.toolId;
6052
+ return out;
6053
+ }
6054
+
6055
+ export function wireRemoveAgentVariationAssignmentRequest_ToolSetId(value: RemoveAgentVariationAssignmentRequest_ToolSetIdParam | null | undefined): unknown {
6056
+ if (value == null || typeof value !== 'object') return value;
6057
+ const out: Record<string, unknown> = {};
6058
+ if (value.type !== undefined) out["type"] = value.type;
6059
+ if (value.toolSetId !== undefined) out["toolSetId"] = value.toolSetId;
6060
+ return out;
6061
+ }
6062
+
6063
+ export function wireRemoveAgentVariationAssignmentRequest_SubAgentId(value: RemoveAgentVariationAssignmentRequest_SubAgentIdParam | null | undefined): unknown {
6064
+ if (value == null || typeof value !== 'object') return value;
6065
+ const out: Record<string, unknown> = {};
6066
+ if (value.type !== undefined) out["type"] = value.type;
6067
+ if (value.subAgentId !== undefined) out["subAgentId"] = value.subAgentId;
6068
+ return out;
6069
+ }
6070
+