@soat/cli 0.48.0 → 0.49.1

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 +28 -8
  2. package/package.json +13 -13
package/dist/index.mjs CHANGED
@@ -13,7 +13,7 @@ import * as os from "node:os";
13
13
  import { createHmac, timingSafeEqual } from "node:crypto";
14
14
 
15
15
  //#region package.json
16
- var version = "0.48.0";
16
+ var version = "0.49.1";
17
17
 
18
18
  //#endregion
19
19
  //#region src/cli-wrappers/wrappers/formations.ts
@@ -4967,7 +4967,7 @@ var routes = {
4967
4967
  "search-knowledge": {
4968
4968
  serviceClass: "Knowledge",
4969
4969
  operationId: "searchKnowledge",
4970
- description: "Searches across documents and memory entries using semantic search, file paths, document IDs, memory IDs, or tags. At least one of `query`, `tags`, `document_paths`, `document_ids`, or `memory_ids` must be provided.",
4970
+ description: "Searches across documents and memory entries using hybrid retrieval — a vector query and a full-text query per source, fused by reciprocal rank — or by file paths, document IDs, memory IDs, or tags. At least one of `query`, `tags`, `document_paths`, `document_ids`, or `memory_ids` must be provided.",
4971
4971
  moduleDocsUrl: "https://soat.ttoss.dev/docs/modules/knowledge",
4972
4972
  httpMethod: "post",
4973
4973
  pathParams: [],
@@ -4980,13 +4980,31 @@ var routes = {
4980
4980
  "in": "body"
4981
4981
  }, {
4982
4982
  "name": "query",
4983
- "description": "Semantic search query text",
4983
+ "description": "Search query text. Runs a vector query and a full-text query over each store and fuses the rankings; the full-text channel matches exact tokens and phrases, the vector channel everything else.",
4984
4984
  "required": false,
4985
4985
  "type": "string",
4986
4986
  "in": "body"
4987
+ }, {
4988
+ "name": "min_similarity",
4989
+ "description": "Minimum raw cosine `similarity_score` a **vector** candidate must reach to take part in ranking, applied before fusion. Only applies when `query` is provided. Lexical candidates are deliberately exempt: a result that literally contains the searched token is the evidence, and dropping it for a low cosine is the failure hybrid search exists to prevent. Not a floor on `score`, whose fused value encodes rank position rather than similarity.",
4990
+ "required": false,
4991
+ "type": "number",
4992
+ "in": "body"
4987
4993
  }, {
4988
4994
  "name": "min_score",
4989
- "description": "Minimum `score` a result must reach to be returned. Filters on the implementation-defined `score`, not on `similarity_score`, so the cutoff follows the ranking. Only applies when `query` is provided. Because the scale behind `score` is not part of the contract, treat a tuned value as tied to the deployment rather than portable.",
4995
+ "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.",
4996
+ "required": false,
4997
+ "type": "number",
4998
+ "in": "body"
4999
+ }, {
5000
+ "name": "rrf_k",
5001
+ "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.",
5002
+ "required": false,
5003
+ "type": "integer",
5004
+ "in": "body"
5005
+ }, {
5006
+ "name": "recency_half_life_days",
5007
+ "description": "Half-life, in days, of a recency decay applied to **memory** 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.",
4990
5008
  "required": false,
4991
5009
  "type": "number",
4992
5010
  "in": "body"
@@ -9345,12 +9363,13 @@ program.argument("[command]", "API command in kebab-case (e.g. list-actors)").ar
9345
9363
  }
9346
9364
  process.exit(0);
9347
9365
  }
9366
+ const parsedFlags = parseUnknownWithRepeats({
9367
+ cliArgs: rawArgs
9368
+ });
9348
9369
  const wrapped = applyWrapperForCommand({
9349
9370
  commandName,
9350
9371
  route,
9351
- parsedFlags: parseUnknownWithRepeats({
9352
- cliArgs: rawArgs
9353
- })
9372
+ parsedFlags
9354
9373
  });
9355
9374
  const flags = wrapped.flags.single;
9356
9375
  const repeatedFlags = wrapped.flags.repeated;
@@ -9395,7 +9414,8 @@ program.argument("[command]", "API command in kebab-case (e.g. list-actors)").ar
9395
9414
  console.error(`Missing required path parameter(s): ${missingPathParams.join(", ")}.\nProvide with --${missingPathParams[0]} <value>, --id <value>, or a positional argument: soat ${commandName} <id>`);
9396
9415
  process.exit(1);
9397
9416
  }
9398
- const client = resolveClient(flags["profile"] ?? program.opts().profile);
9417
+ const profileOpt = flags["profile"] ?? program.opts().profile;
9418
+ const client = resolveClient(profileOpt);
9399
9419
  const serviceClass = resolveServiceClass(route.serviceClass);
9400
9420
  if (!serviceClass) {
9401
9421
  console.error(`SDK class "${route.serviceClass}" not found.`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soat/cli",
3
- "version": "0.48.0",
3
+ "version": "0.49.1",
4
4
  "description": "CLI for SOAT — open-source infrastructure for production-ready AI agents.",
5
5
  "keywords": [
6
6
  "ai-agents",
@@ -20,22 +20,22 @@
20
20
  "license": "Apache-2.0",
21
21
  "type": "module",
22
22
  "dependencies": {
23
- "@inquirer/input": "^5.1.2",
24
- "@inquirer/password": "^5.1.1",
25
- "@soat/sdk": "0.48.0",
26
- "@ttoss/logger": "^0.8.19",
23
+ "@inquirer/input": "^5.1.6",
24
+ "@inquirer/password": "^5.2.2",
25
+ "@soat/sdk": "0.49.1",
26
+ "@ttoss/logger": "^0.8.20",
27
27
  "commander": "^15.0.0",
28
- "js-yaml": "^5.2.1"
28
+ "js-yaml": "^5.4.2"
29
29
  },
30
30
  "devDependencies": {
31
- "@ttoss/config": "^1.37.17",
32
- "@ttoss/openapi-codegen": "^0.2.0",
33
- "@ttoss/test-utils": "^4.2.18",
31
+ "@ttoss/config": "^1.38.0",
32
+ "@ttoss/openapi-codegen": "^0.3.0",
33
+ "@ttoss/test-utils": "^4.2.19",
34
34
  "@types/jest": "^30.0.0",
35
- "@types/node": "^26.1.1",
36
- "jest": "^30.4.2",
37
- "tsdown": "^0.22.7",
38
- "tsx": "^4.23.1",
35
+ "@types/node": "^26.5.1",
36
+ "jest": "^30.5.1",
37
+ "tsdown": "^0.23.0",
38
+ "tsx": "^4.23.13",
39
39
  "typescript": "~6.0.3"
40
40
  },
41
41
  "files": [