@naturali/cli 0.129.0 → 0.130.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 (2) hide show
  1. package/dist/index.mjs +375 -23
  2. package/package.json +2 -2
package/dist/index.mjs CHANGED
@@ -14,7 +14,7 @@ var __exportAll = (all, no_symbols) => {
14
14
  };
15
15
  //#endregion
16
16
  //#region package.json
17
- var version = "0.129.0";
17
+ var version = "0.130.0";
18
18
  //#endregion
19
19
  //#region ../sdk/src/generated/core/bodySerializer.gen.ts
20
20
  const serializeFormDataPair = (data, key, value) => {
@@ -2773,7 +2773,7 @@ var Generations = class {
2773
2773
  /**
2774
2774
  * List generations
2775
2775
  *
2776
- * Returns generations the caller can access, optionally filtered by agent, trace, orchestration run, node, and status. Replaces the former per-trace generations endpoint (use the trace_id query filter).
2776
+ * Returns generations the caller can access, optionally filtered by agent, trace, orchestration run, node, and status. The generations of one trace are the `trace_id` filter.
2777
2777
  *
2778
2778
  * Filtering by `orchestration_run_id` is the supported way to get from an orchestration run to the generations its agent nodes produced: a node execution record carries no generation id, so the pointer lives here, alongside the run's other attribution columns.
2779
2779
  *
@@ -3069,7 +3069,7 @@ var Memories = class {
3069
3069
  /**
3070
3070
  * Create a memory
3071
3071
  *
3072
- * Writes a fact to the specified memory store through the standard write algorithm: the content is embedded (or matched to text the store already holds), compared against the most similar currently-valid memory, and resolved to exactly one of three outcomes — `skipped` at or above `duplicate_threshold`, `superseded` at or above `supersede_threshold`, `created` below it. Every call records one assertion, whatever the outcome.
3072
+ * Writes a fact to the specified memory store through the standard write algorithm: the content is embedded (or matched to text the store already holds), compared against the most similar currently-valid memory, and resolved to exactly one of three outcomes — `skipped` at or above `duplicate_threshold`, `superseded` at or above `supersede_threshold`, `created` below it. `supersedes` overrides that comparison entirely, retiring the memory it names. Every call records one assertion, whatever the outcome.
3073
3073
  */
3074
3074
  static createMemory(options) {
3075
3075
  return (options.client ?? client).post({
@@ -3171,6 +3171,71 @@ var Memories = class {
3171
3171
  });
3172
3172
  }
3173
3173
  };
3174
+ var MemoryRules = class {
3175
+ /**
3176
+ * List memory rules
3177
+ *
3178
+ * Returns memory rules, newest first. Narrow to one store with `memory_store_id` — that form is authorized against the store itself, so it answers "what feeds this store?" in one call.
3179
+ */
3180
+ static listMemoryRules(options) {
3181
+ return (options.client ?? client).get({
3182
+ url: "/v1/projects/{project_id}/memory-rules",
3183
+ ...options
3184
+ });
3185
+ }
3186
+ /**
3187
+ * Create a memory rule
3188
+ *
3189
+ * Creates an ingestion rule on a memory store. With neither `agent_id` nor `tool_id` the built-in extractor runs, configurable through `prompt`, `ai_provider_id` and `model`.
3190
+ */
3191
+ static createMemoryRule(options) {
3192
+ return (options.client ?? client).post({
3193
+ url: "/v1/projects/{project_id}/memory-rules",
3194
+ ...options,
3195
+ headers: {
3196
+ "Content-Type": "application/json",
3197
+ ...options.headers
3198
+ }
3199
+ });
3200
+ }
3201
+ /**
3202
+ * Delete a memory rule
3203
+ *
3204
+ * Deletes a memory rule. The assertions it wrote are kept; their `rule_id` becomes null.
3205
+ */
3206
+ static deleteMemoryRule(options) {
3207
+ return (options.client ?? client).delete({
3208
+ url: "/v1/projects/{project_id}/memory-rules/{memory_rule_id}",
3209
+ ...options
3210
+ });
3211
+ }
3212
+ /**
3213
+ * Get a memory rule
3214
+ *
3215
+ * Returns a specific memory rule
3216
+ */
3217
+ static getMemoryRule(options) {
3218
+ return (options.client ?? client).get({
3219
+ url: "/v1/projects/{project_id}/memory-rules/{memory_rule_id}",
3220
+ ...options
3221
+ });
3222
+ }
3223
+ /**
3224
+ * Update a memory rule
3225
+ *
3226
+ * Updates a memory rule. Validation runs against the rule as it would stand after the change, so a one-field update cannot pair a handler with a stored extractor override from the side.
3227
+ */
3228
+ static updateMemoryRule(options) {
3229
+ return (options.client ?? client).patch({
3230
+ url: "/v1/projects/{project_id}/memory-rules/{memory_rule_id}",
3231
+ ...options,
3232
+ headers: {
3233
+ "Content-Type": "application/json",
3234
+ ...options.headers
3235
+ }
3236
+ });
3237
+ }
3238
+ };
3174
3239
  var MemoryStores = class {
3175
3240
  /**
3176
3241
  * List memory stores
@@ -4922,6 +4987,7 @@ var NaturaliClient = class {
4922
4987
  ingestionRules;
4923
4988
  knowledge;
4924
4989
  memories;
4990
+ memoryRules;
4925
4991
  memoryStores;
4926
4992
  modelRoutes;
4927
4993
  quotas;
@@ -4972,6 +5038,7 @@ var NaturaliClient = class {
4972
5038
  this.ingestionRules = bindResource(IngestionRules, this.http);
4973
5039
  this.knowledge = bindResource(Knowledge, this.http);
4974
5040
  this.memories = bindResource(Memories, this.http);
5041
+ this.memoryRules = bindResource(MemoryRules, this.http);
4975
5042
  this.memoryStores = bindResource(MemoryStores, this.http);
4976
5043
  this.modelRoutes = bindResource(ModelRoutes, this.http);
4977
5044
  this.quotas = bindResource(Quotas, this.http);
@@ -5017,6 +5084,7 @@ var src_exports = /* @__PURE__ */ __exportAll({
5017
5084
  IngestionRules: () => IngestionRules,
5018
5085
  Knowledge: () => Knowledge,
5019
5086
  Memories: () => Memories,
5087
+ MemoryRules: () => MemoryRules,
5020
5088
  MemoryStores: () => MemoryStores,
5021
5089
  ModelRoutes: () => ModelRoutes,
5022
5090
  Models: () => Models,
@@ -6936,13 +7004,6 @@ const routes = {
6936
7004
  "type": "object",
6937
7005
  "in": "body"
6938
7006
  },
6939
- {
6940
- "name": "extract",
6941
- "description": "Per-turn override of the agent's `knowledge_config.extraction` default. Omit to follow the agent's stored config. Set `false` to suppress automatic memory store extraction for this turn (e.g. an operational or tool-listing turn that would only add noise to a curated memory store). Set `true` to force extraction on for this turn even when the agent does not enable it by default, provided the agent has a `write_memory_store_id`. Has no effect on streaming or `requires_action` turns, which never extract.",
6942
- "required": false,
6943
- "type": "boolean",
6944
- "in": "body"
6945
- },
6946
7007
  {
6947
7008
  "name": "knowledge_config",
6948
7009
  "description": "Per-generation knowledge retrieval override. Array filters (memory_store_ids, document_ids, document_paths) are unioned with the agent's stored knowledge_config; `tags` pairs are merged with the override winning per key; scalar fields (min_score, limit) use the per-generation value when present.",
@@ -11463,7 +11524,7 @@ const routes = {
11463
11524
  "list-generations": {
11464
11525
  serviceClass: "Generations",
11465
11526
  operationId: "listGenerations",
11466
- description: "Returns generations the caller can access, optionally filtered by agent, trace, orchestration run, node, and status. Replaces the former per-trace generations endpoint (use the trace_id query filter). Filtering by `orchestration_run_id` is the supported way to get from an orchestration run to the generations its agent nodes produced: a node execution record carries no generation id, so the pointer lives here, alongside the run's other attribution columns.",
11527
+ description: "Returns generations the caller can access, optionally filtered by agent, trace, orchestration run, node, and status. The generations of one trace are the `trace_id` filter. Filtering by `orchestration_run_id` is the supported way to get from an orchestration run to the generations its agent nodes produced: a node execution record carries no generation id, so the pointer lives here, alongside the run's other attribution columns.",
11467
11528
  moduleDocsUrl: "https://docs.naturali.ai/docs/modules/generations",
11468
11529
  httpMethod: "get",
11469
11530
  pathParams: ["project_id"],
@@ -12335,13 +12396,6 @@ const routes = {
12335
12396
  "type": "number",
12336
12397
  "in": "body"
12337
12398
  },
12338
- {
12339
- "name": "min_score",
12340
- "description": "Deprecated alias for `min_similarity`, with identical behavior. While ranking was single-signal `score` equaled `similarity_score`, so this has only ever filtered cosine and an existing value keeps returning the same results. `min_similarity` wins when both are sent. Removed in v2.",
12341
- "required": false,
12342
- "type": "number",
12343
- "in": "body"
12344
- },
12345
12399
  {
12346
12400
  "name": "rrf_k",
12347
12401
  "description": "The `k` in the reciprocal rank fusion term `1 / (k + rank)`, which sets how steeply a result's contribution decays with its position in each ranked list. A smaller value weights the very top of each list more heavily. Defaults to the deployment's `KNOWLEDGE_RRF_K`, itself 60 by default. Only applies when `query` is provided.",
@@ -12351,7 +12405,7 @@ const routes = {
12351
12405
  },
12352
12406
  {
12353
12407
  "name": "recency_half_life_days",
12354
- "description": "Half-life, in days, of a recency decay applied to **memory store** results after fusion: a result's `score` is multiplied by `2 ^ (-age_in_days / recency_half_life_days)`, where age is measured from its `updated_at`. Document results are never decayed. `0` — the default, and the default of the deployment's `KNOWLEDGE_RECENCY_HALF_LIFE_DAYS` — disables the blend entirely; it is a switch, not a lower bound, and sending `0` turns off a deployment-wide decay for this one request. Accepts fractions (`0.5` is twelve hours). How many ranks a given half-life costs depends on `rrf_k`. Only applies when `query` is provided.",
12408
+ "description": "Half-life, in days, of a recency decay applied to **memory store** results after fusion: a result's `score` is multiplied by `2 ^ (-age_in_days / recency_half_life_days)`, where age is measured from its `updated_at`. Document results are never decayed. `0` — the default, and the default of the deployment's `KNOWLEDGE_RECENCY_HALF_LIFE_DAYS` — disables the blend entirely; it is a switch, not a lower bound, and sending `0` turns off a deployment-wide decay for this one request. Accepts fractions (`0.5` is twelve hours). How many ranks a given half-life costs depends on `rrf_k`. Only applies when `query` is provided. **No value is known to be safe in general**: every half-life measured against the reference corpus that lifted recency-sensitive queries also cost relevance-sensitive ones, which is why this ships disabled. Measure against your own corpus before setting it — see the Retrieval Quality guide.",
12355
12409
  "required": false,
12356
12410
  "type": "number",
12357
12411
  "in": "body"
@@ -12363,6 +12417,20 @@ const routes = {
12363
12417
  "type": "integer",
12364
12418
  "in": "body"
12365
12419
  },
12420
+ {
12421
+ "name": "include_documents",
12422
+ "description": "Set `false` to leave the document store out of this search. A `query` names no store, so it reaches both; the store-specific filters narrow *within* a store rather than choosing between them. This is the switch, and a filter naming the other store never overrides it. `false` for both stores is `400`.",
12423
+ "required": false,
12424
+ "type": "boolean",
12425
+ "in": "body"
12426
+ },
12427
+ {
12428
+ "name": "include_memories",
12429
+ "description": "Set `false` to leave the memory store out of this search. The mirror of `include_documents`, for a caller that wants documents alone.",
12430
+ "required": false,
12431
+ "type": "boolean",
12432
+ "in": "body"
12433
+ },
12366
12434
  {
12367
12435
  "name": "memory_store_ids",
12368
12436
  "description": "Search memories within these specific memory stores",
@@ -12386,7 +12454,7 @@ const routes = {
12386
12454
  },
12387
12455
  {
12388
12456
  "name": "tags",
12389
- "description": "Filter results to documents and memories whose `tags` contain every one of these key-value pairs (exact, case-sensitive match). The only filter that scopes both stores, so passing it alone searches both. For memories it matches at memory granularity: a memory is returned when its parent memory store's tags match or its own do.",
12457
+ "description": "Filter results to documents and memories whose `tags` contain every one of these key-value pairs (exact, case-sensitive match). Scopes both stores, so passing it alone searches both — as `query` does. For memories it matches at memory granularity: a memory is returned when its parent memory store's tags match or its own do.",
12390
12458
  "required": false,
12391
12459
  "type": "string",
12392
12460
  "in": "body"
@@ -12455,7 +12523,7 @@ const routes = {
12455
12523
  "create-memory": {
12456
12524
  serviceClass: "Memories",
12457
12525
  operationId: "createMemory",
12458
- description: "Writes a fact to the specified memory store through the standard write algorithm: the content is embedded (or matched to text the store already holds), compared against the most similar currently-valid memory, and resolved to exactly one of three outcomes — `skipped` at or above `duplicate_threshold`, `superseded` at or above `supersede_threshold`, `created` below it. Every call records one assertion, whatever the outcome.",
12526
+ description: "Writes a fact to the specified memory store through the standard write algorithm: the content is embedded (or matched to text the store already holds), compared against the most similar currently-valid memory, and resolved to exactly one of three outcomes — `skipped` at or above `duplicate_threshold`, `superseded` at or above `supersede_threshold`, `created` below it. `supersedes` overrides that comparison entirely, retiring the memory it names. Every call records one assertion, whatever the outcome.",
12459
12527
  moduleDocsUrl: "https://docs.naturali.ai/docs/modules/memories",
12460
12528
  httpMethod: "post",
12461
12529
  pathParams: ["project_id"],
@@ -12510,6 +12578,13 @@ const routes = {
12510
12578
  "type": "object",
12511
12579
  "in": "body"
12512
12580
  },
12581
+ {
12582
+ "name": "supersedes",
12583
+ "description": "The memory this write replaces, named outright. The declaration outranks the thresholds in both directions: the target is retired and the write returns `superseded` however similar or distant the two texts are. This is what reaches a contradiction cosine cannot see (\"The office is in Lisbon\" then \"We closed the Lisbon office\"). The target must be a still-valid memory in the same memory store, and the caller needs `memories:UpdateMemory` on it as well as `memories:CreateMemory` on the store.",
12584
+ "required": false,
12585
+ "type": "string",
12586
+ "in": "body"
12587
+ },
12513
12588
  {
12514
12589
  "name": "duplicate_threshold",
12515
12590
  "description": "Cosine similarity at or above which the incoming content is a duplicate of an existing memory and the write is skipped. Overrides the store's `duplicate_threshold` for this call; falls back to the store's value, then to `0.95`.",
@@ -12721,6 +12796,283 @@ const routes = {
12721
12796
  "in": "path"
12722
12797
  }]
12723
12798
  },
12799
+ "list-memory-rules": {
12800
+ serviceClass: "MemoryRules",
12801
+ operationId: "listMemoryRules",
12802
+ description: "Returns memory rules, newest first. Narrow to one store with `memory_store_id` — that form is authorized against the store itself, so it answers \"what feeds this store?\" in one call.",
12803
+ moduleDocsUrl: "https://docs.naturali.ai/docs/modules/memory-rules",
12804
+ httpMethod: "get",
12805
+ pathParams: ["project_id"],
12806
+ queryParams: [
12807
+ "memory_store_id",
12808
+ "limit",
12809
+ "offset"
12810
+ ],
12811
+ flags: [
12812
+ {
12813
+ "name": "project_id",
12814
+ "description": "Project public ID (proj_ prefix).",
12815
+ "required": true,
12816
+ "type": "string",
12817
+ "in": "path"
12818
+ },
12819
+ {
12820
+ "name": "memory_store_id",
12821
+ "description": "Only the rules of this memory store",
12822
+ "required": false,
12823
+ "type": "string",
12824
+ "in": "query"
12825
+ },
12826
+ {
12827
+ "name": "limit",
12828
+ "description": "Number of results per page",
12829
+ "required": false,
12830
+ "type": "integer",
12831
+ "in": "query"
12832
+ },
12833
+ {
12834
+ "name": "offset",
12835
+ "description": "Number of results to skip",
12836
+ "required": false,
12837
+ "type": "integer",
12838
+ "in": "query"
12839
+ }
12840
+ ]
12841
+ },
12842
+ "create-memory-rule": {
12843
+ serviceClass: "MemoryRules",
12844
+ operationId: "createMemoryRule",
12845
+ description: "Creates an ingestion rule on a memory store. With neither `agent_id` nor `tool_id` the built-in extractor runs, configurable through `prompt`, `ai_provider_id` and `model`.",
12846
+ moduleDocsUrl: "https://docs.naturali.ai/docs/modules/memory-rules",
12847
+ httpMethod: "post",
12848
+ pathParams: ["project_id"],
12849
+ queryParams: [],
12850
+ flags: [
12851
+ {
12852
+ "name": "project_id",
12853
+ "description": "Project public ID (proj_ prefix).",
12854
+ "required": true,
12855
+ "type": "string",
12856
+ "in": "path"
12857
+ },
12858
+ {
12859
+ "name": "memory_store_id",
12860
+ "description": "The destination store, and the rule's owning scope",
12861
+ "required": true,
12862
+ "type": "string",
12863
+ "in": "body"
12864
+ },
12865
+ {
12866
+ "name": "on",
12867
+ "description": "The event a firing reads. `agents.generation.completed` fires once per completed turn whatever the transport, and is the only event the built-in extractor may bind to. `conversations.message.generated` fires per persisted assistant reply and is conversation-backed, so it is for custom handlers.",
12868
+ "required": true,
12869
+ "type": "string",
12870
+ "in": "body"
12871
+ },
12872
+ {
12873
+ "name": "source_agent_ids",
12874
+ "description": "Agents whose turns this rule reads. Omit or send `null` for every agent in the store's project.",
12875
+ "required": false,
12876
+ "type": "array",
12877
+ "in": "body"
12878
+ },
12879
+ {
12880
+ "name": "agent_id",
12881
+ "description": "Handler agent (mutually exclusive with tool_id)",
12882
+ "required": false,
12883
+ "type": "string",
12884
+ "in": "body"
12885
+ },
12886
+ {
12887
+ "name": "tool_id",
12888
+ "description": "Handler tool (mutually exclusive with agent_id)",
12889
+ "required": false,
12890
+ "type": "string",
12891
+ "in": "body"
12892
+ },
12893
+ {
12894
+ "name": "action",
12895
+ "description": "Operation id, for a tool handler",
12896
+ "required": false,
12897
+ "type": "string",
12898
+ "in": "body"
12899
+ },
12900
+ {
12901
+ "name": "preset_parameters",
12902
+ "description": "Merged into a tool handler's input before invocation. The turn's own fields are reserved and win.",
12903
+ "required": false,
12904
+ "type": "object",
12905
+ "in": "body"
12906
+ },
12907
+ {
12908
+ "name": "prompt",
12909
+ "description": "Replaces the built-in extractor's task instructions. The JSON response contract and the transcript are always appended. Not valid with a handler.",
12910
+ "required": false,
12911
+ "type": "string",
12912
+ "in": "body"
12913
+ },
12914
+ {
12915
+ "name": "ai_provider_id",
12916
+ "description": "Provider override for the built-in extractor's completion. Not valid with a handler.",
12917
+ "required": false,
12918
+ "type": "string",
12919
+ "in": "body"
12920
+ },
12921
+ {
12922
+ "name": "model",
12923
+ "description": "Model override for the built-in extractor's completion. Not valid with a handler.",
12924
+ "required": false,
12925
+ "type": "string",
12926
+ "in": "body"
12927
+ },
12928
+ {
12929
+ "name": "enabled",
12930
+ "description": "A disabled rule is kept and never fires",
12931
+ "required": false,
12932
+ "type": "boolean",
12933
+ "in": "body"
12934
+ }
12935
+ ]
12936
+ },
12937
+ "get-memory-rule": {
12938
+ serviceClass: "MemoryRules",
12939
+ operationId: "getMemoryRule",
12940
+ description: "Returns a specific memory rule",
12941
+ moduleDocsUrl: "https://docs.naturali.ai/docs/modules/memory-rules",
12942
+ httpMethod: "get",
12943
+ pathParams: ["project_id", "memory_rule_id"],
12944
+ queryParams: [],
12945
+ flags: [{
12946
+ "name": "project_id",
12947
+ "description": "Project public ID (proj_ prefix).",
12948
+ "required": true,
12949
+ "type": "string",
12950
+ "in": "path"
12951
+ }, {
12952
+ "name": "memory_rule_id",
12953
+ "description": "Memory rule ID",
12954
+ "required": true,
12955
+ "type": "string",
12956
+ "in": "path"
12957
+ }]
12958
+ },
12959
+ "update-memory-rule": {
12960
+ serviceClass: "MemoryRules",
12961
+ operationId: "updateMemoryRule",
12962
+ description: "Updates a memory rule. Validation runs against the rule as it would stand after the change, so a one-field update cannot pair a handler with a stored extractor override from the side.",
12963
+ moduleDocsUrl: "https://docs.naturali.ai/docs/modules/memory-rules",
12964
+ httpMethod: "patch",
12965
+ pathParams: ["project_id", "memory_rule_id"],
12966
+ queryParams: [],
12967
+ flags: [
12968
+ {
12969
+ "name": "project_id",
12970
+ "description": "Project public ID (proj_ prefix).",
12971
+ "required": true,
12972
+ "type": "string",
12973
+ "in": "path"
12974
+ },
12975
+ {
12976
+ "name": "memory_rule_id",
12977
+ "description": "Memory rule ID",
12978
+ "required": true,
12979
+ "type": "string",
12980
+ "in": "path"
12981
+ },
12982
+ {
12983
+ "name": "on",
12984
+ "description": "The event a firing reads. `agents.generation.completed` fires once per completed turn whatever the transport, and is the only event the built-in extractor may bind to. `conversations.message.generated` fires per persisted assistant reply and is conversation-backed, so it is for custom handlers.",
12985
+ "required": false,
12986
+ "type": "string",
12987
+ "in": "body"
12988
+ },
12989
+ {
12990
+ "name": "source_agent_ids",
12991
+ "description": "Send `null` to widen the rule to every agent in the project",
12992
+ "required": false,
12993
+ "type": "array",
12994
+ "in": "body"
12995
+ },
12996
+ {
12997
+ "name": "agent_id",
12998
+ "description": "",
12999
+ "required": false,
13000
+ "type": "string",
13001
+ "in": "body"
13002
+ },
13003
+ {
13004
+ "name": "tool_id",
13005
+ "description": "",
13006
+ "required": false,
13007
+ "type": "string",
13008
+ "in": "body"
13009
+ },
13010
+ {
13011
+ "name": "action",
13012
+ "description": "",
13013
+ "required": false,
13014
+ "type": "string",
13015
+ "in": "body"
13016
+ },
13017
+ {
13018
+ "name": "preset_parameters",
13019
+ "description": "",
13020
+ "required": false,
13021
+ "type": "object",
13022
+ "in": "body"
13023
+ },
13024
+ {
13025
+ "name": "prompt",
13026
+ "description": "",
13027
+ "required": false,
13028
+ "type": "string",
13029
+ "in": "body"
13030
+ },
13031
+ {
13032
+ "name": "ai_provider_id",
13033
+ "description": "",
13034
+ "required": false,
13035
+ "type": "string",
13036
+ "in": "body"
13037
+ },
13038
+ {
13039
+ "name": "model",
13040
+ "description": "",
13041
+ "required": false,
13042
+ "type": "string",
13043
+ "in": "body"
13044
+ },
13045
+ {
13046
+ "name": "enabled",
13047
+ "description": "",
13048
+ "required": false,
13049
+ "type": "boolean",
13050
+ "in": "body"
13051
+ }
13052
+ ]
13053
+ },
13054
+ "delete-memory-rule": {
13055
+ serviceClass: "MemoryRules",
13056
+ operationId: "deleteMemoryRule",
13057
+ description: "Deletes a memory rule. The assertions it wrote are kept; their `rule_id` becomes null.",
13058
+ moduleDocsUrl: "https://docs.naturali.ai/docs/modules/memory-rules",
13059
+ httpMethod: "delete",
13060
+ pathParams: ["project_id", "memory_rule_id"],
13061
+ queryParams: [],
13062
+ flags: [{
13063
+ "name": "project_id",
13064
+ "description": "Project public ID (proj_ prefix).",
13065
+ "required": true,
13066
+ "type": "string",
13067
+ "in": "path"
13068
+ }, {
13069
+ "name": "memory_rule_id",
13070
+ "description": "Memory rule ID",
13071
+ "required": true,
13072
+ "type": "string",
13073
+ "in": "path"
13074
+ }]
13075
+ },
12724
13076
  "list-memory-stores": {
12725
13077
  serviceClass: "MemoryStores",
12726
13078
  operationId: "listMemoryStores",
@@ -15969,7 +16321,7 @@ const routes = {
15969
16321
  },
15970
16322
  {
15971
16323
  "name": "context_keys",
15972
- "description": "Optional allowlist of `tool_context` keys that may be forwarded to this tool as prefixed context headers (`X-Naturali-Context-<key>` by default). When `null` or omitted, every key in the caller's `tool_context` is forwarded — the behavior of every tool created before this field existed. When set, only the listed keys are, so a per-user credential in `tool_context` can be confined to the tools that need it; `[]` forwards none. The server-pinned identity keys (`session_id`, `actor_id`, `actor_external_id`) are always forwarded. A key consumed by a `{{context:<key>}}` token in this tool's own headers is substituted regardless of this list — the tool declared that header itself.",
16324
+ "description": "Optional allowlist of `tool_context` keys that may be forwarded to this tool as prefixed context headers (`X-Naturali-Context-<key>` by default). When `null` or omitted, every key in the caller's `tool_context` is forwarded. When set, only the listed keys are, so a per-user credential in `tool_context` can be confined to the tools that need it; `[]` forwards none. The server-pinned identity keys (`session_id`, `actor_id`, `actor_external_id`) are always forwarded. A key consumed by a `{{context:<key>}}` token in this tool's own headers is substituted regardless of this list — the tool declared that header itself.",
15973
16325
  "required": false,
15974
16326
  "type": "array",
15975
16327
  "in": "body"
@@ -16107,7 +16459,7 @@ const routes = {
16107
16459
  },
16108
16460
  {
16109
16461
  "name": "context_keys",
16110
- "description": "Optional allowlist of `tool_context` keys that may be forwarded to this tool as prefixed context headers (`X-Naturali-Context-<key>` by default). When `null` or omitted, every key in the caller's `tool_context` is forwarded — the behavior of every tool created before this field existed. When set, only the listed keys are, so a per-user credential in `tool_context` can be confined to the tools that need it; `[]` forwards none. The server-pinned identity keys (`session_id`, `actor_id`, `actor_external_id`) are always forwarded. A key consumed by a `{{context:<key>}}` token in this tool's own headers is substituted regardless of this list — the tool declared that header itself.",
16462
+ "description": "Optional allowlist of `tool_context` keys that may be forwarded to this tool as prefixed context headers (`X-Naturali-Context-<key>` by default). When `null` or omitted, every key in the caller's `tool_context` is forwarded. When set, only the listed keys are, so a per-user credential in `tool_context` can be confined to the tools that need it; `[]` forwards none. The server-pinned identity keys (`session_id`, `actor_id`, `actor_external_id`) are always forwarded. A key consumed by a `{{context:<key>}}` token in this tool's own headers is substituted regardless of this list — the tool declared that header itself.",
16111
16463
  "required": false,
16112
16464
  "type": "array",
16113
16465
  "in": "body"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@naturali/cli",
3
- "version": "0.129.0",
3
+ "version": "0.130.0",
4
4
  "description": "Command-line interface for the naturali.ai API, generated from its OpenAPI specs",
5
5
  "type": "module",
6
6
  "bin": {
@@ -24,7 +24,7 @@
24
24
  "commander": "^15.0.0"
25
25
  },
26
26
  "devDependencies": {
27
- "@naturali/sdk": "0.129.0",
27
+ "@naturali/sdk": "0.130.0",
28
28
  "@ttoss/openapi-codegen": "^0.3.0",
29
29
  "@types/node": "^26.5.1",
30
30
  "tsdown": "^0.23.0",