@zackbart/connecta 0.9.0 → 0.9.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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,55 @@
2
2
 
3
3
  All notable changes to this package are documented here.
4
4
 
5
+ ## 0.9.1 — 2026-07-29
6
+
7
+ A code-mode routing release. Agents that needed an unknown address *and* a
8
+ dependent call used to spend two outer executions on it — one to search, one to
9
+ act. They now spend one: schema-bearing `connecta.search()` matches carry the
10
+ exact field names a dependent program needs, and `execute_code` says to search
11
+ inside the run rather than ahead of it. A deployment can ignore all of this
12
+ unless it runs code mode; nothing in the published surface, the nine base
13
+ meta-tools, or `search_tools` responses changed.
14
+
15
+ Measured against the previous release across 60 matched runs per arm with a
16
+ pinned model: the dependent one-pass route went 0/10 to 10/10, the intended
17
+ route 41/60 to 52/60, exact addresses and arguments 58/60 to 60/60, and outer
18
+ round trips fell 10.8%. Final-answer correctness stayed at 60/60 in both arms.
19
+ The trade is real and recorded rather than buried: agent *output* tokens rose
20
+ 38.3% and non-cached host input 107.1%, both reproducing across replications,
21
+ while total agent input still fell 1.7%. Search performance is untouched —
22
+ 10,000-tool warm-search p50 stays near 3 ms.
23
+
24
+ ### Added
25
+
26
+ - **Schema key metadata in code mode.** `connecta.search()` matches that carry
27
+ schemas also carry `inputKeys`, `requiredInputKeys`, and `outputKeys`. The
28
+ names come from the same walk that renders the compact schema, so a top-level
29
+ `$ref` resolves and an `allOf` composes instead of reporting an empty field
30
+ list beside a schema that plainly lists fields. A schema that is not an object
31
+ shape — a union, an array, an unresolvable `$ref` — gets no lists rather than
32
+ empty ones: absent means "read the schema", where `[]` would claim the tool
33
+ takes no fields. A program that wants the bytes back passes
34
+ `includeSchemaKeys: false`.
35
+
36
+ ### Changed
37
+
38
+ - **`execute_code` routes dependent unknown-address work in one execution.**
39
+ Its description, the server instructions, and the usage guide agreed on the
40
+ two-round-trip pattern; they now agree on the one-pass one, and still send
41
+ search-only and single-call work to `search_tools` and `call_tool`.
42
+ - **The dependent example names its fields.** It previously indexed
43
+ `requiredInputKeys[0]`, which is a positional guess in a description that
44
+ forbids guessing, and worked only because the benchmark's tool has exactly
45
+ one required key.
46
+
47
+ ### Fixed
48
+
49
+ - **The workflow-by-id benchmark fixture no longer contradicts its own
50
+ prompt.** It asked for "the integration's JSON result" while naming a
51
+ projection of it, so no answer satisfied both readings and a wording defect
52
+ scored as a routing failure.
53
+
5
54
  ## 0.9.0 — 2026-07-29
6
55
 
7
56
  Connecta now speaks the 2026-07-28 MCP revision on both sides while retaining
package/README.md CHANGED
@@ -24,14 +24,15 @@ Claude / Cursor ── MCP ──▶ connecta ───┼── remoteMcp("lin
24
24
  └── api("internal") → fetch(...)
25
25
  ```
26
26
 
27
- The agent discovers instead of preloading: `search_tools` ranks matches,
28
- `describe_tools` returns schemas for only the addresses about to be called,
29
- `call_tool` / `batch_call` / `call_destructive_tool` invoke them, and
30
- `list_connectors`, `authorize_connector`, `get_result`, and `skills` round out
31
- the nine. An optional tenth, `execute_code`, runs model-written JavaScript in
32
- a sandbox with no network, filesystem, or environment access — only the
33
- read-only tools in scope. Context holds nine definitions whether ten tools sit
34
- behind them or a thousand.
27
+ The agent discovers instead of preloading: `search_tools` ranks matches and can
28
+ return their compact schemas in the same response, while `describe_tools`
29
+ expands only schemas that remain unclear. `call_tool` / `batch_call` /
30
+ `call_destructive_tool` invoke them, and `list_connectors`,
31
+ `authorize_connector`, `get_result`, and `skills` round out the nine. An
32
+ optional tenth, `execute_code`, runs model-written JavaScript in a sandbox with
33
+ no network, filesystem, or environment access only the read-only tools in
34
+ scope. Context holds nine definitions whether ten tools sit behind them or a
35
+ thousand.
35
36
 
36
37
  Three properties are load-bearing enough to name here; the rest live in the
37
38
  [ethos](./ethos.md). **Read-only is fail-closed**: anything not explicitly
@@ -18,6 +18,8 @@ export interface CatalogSearchArgs {
18
18
  offset?: number;
19
19
  fullDescriptions?: boolean;
20
20
  includeSchemas?: "compact" | "json";
21
+ /** Code-mode helper metadata; never exposed by the public search_tools schema. */
22
+ includeSchemaKeys?: boolean;
21
23
  }
22
24
  export interface CatalogDescribeArgs {
23
25
  addresses?: unknown;
@@ -33,6 +35,9 @@ interface CatalogSearchEntry {
33
35
  description?: string;
34
36
  inputSchema?: unknown;
35
37
  outputSchema?: unknown;
38
+ inputKeys?: string[];
39
+ requiredInputKeys?: string[];
40
+ outputKeys?: string[];
36
41
  annotations?: ToolDef["annotations"];
37
42
  };
38
43
  }
@@ -126,6 +131,9 @@ export declare function flatSearchResult(page: CatalogSearchPage): {
126
131
  description?: string;
127
132
  inputSchema?: unknown;
128
133
  outputSchema?: unknown;
134
+ inputKeys?: string[];
135
+ requiredInputKeys?: string[];
136
+ outputKeys?: string[];
129
137
  annotations?: ToolDef["annotations"];
130
138
  }[];
131
139
  total: number;
@@ -1 +1 @@
1
- {"version":3,"file":"catalog-service.d.ts","sourceRoot":"","sources":["../src/catalog-service.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EACV,yBAAyB,EACzB,YAAY,EACb,MAAM,eAAe,CAAC;AAUvB,OAAO,KAAK,EACV,SAAS,EAET,OAAO,EACR,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,0BAA0B,SAAU,CAAC;AAIlD,qBAAa,oBAAqB,SAAQ,KAAK;IAE3C,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,kBAAkB;gBAAzC,IAAI,EAAE,cAAc,GAAG,kBAAkB,EAClD,OAAO,EAAE,MAAM;CAKlB;AAoCD,2EAA2E;AAC3E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAazE;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,UAAU,kBAAkB;IAC1B,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,WAAW,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;KACtC,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,iBAAiB,GACzB;IACE,EAAE,EAAE,IAAI,CAAC;IACT,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB,GACD;IACE,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,gBAAgB,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAUN;;;;GAIG;AACH,qBAAa,cAAc;IAQvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM;IAR1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;gBAG9C,QAAQ,EAAE,YAAY,EAC9B,OAAO,EAAE,MAAM,EACxB,OAAO,GAAE;QACP,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,WAAW,CAAC,EAAE,MAAM,CAAC;KACjB;IAQF,aAAa,CACjB,EAAE,EAAE,MAAM,EACV,WAAW,GAAE,yBAA8B,GAC1C,OAAO,CAAC,OAAO,EAAE,CAAC;IAkBrB,OAAO,CAAC,gBAAgB;IAYlB,WAAW,CACf,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,yBAA8B,GAC1C,OAAO,CAAC,iBAAiB,CAAC;IAkD7B;;;;OAIG;IACG,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,EACtC,WAAW,GAAE,yBAA8B,GAC1C,OAAO,CAAC,iBAAiB,CAAC;IAoEvB,MAAM,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA4G3D,QAAQ,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;CA0EzE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB;;;;YAEnD,MAAM;gBACF,MAAM;sBACA,MAAM;gBACZ,MAAM;eACP,kBAAkB,CAAC,MAAM,CAAC,EAAE;;;;;;EA+BtC;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB;;;;cAzd9C,MAAM;iBACH,MAAM;sBACD,MAAM;sBACN,OAAO;uBACN,OAAO;sBACR,OAAO,CAAC,aAAa,CAAC;;;;;;EA8dvC"}
1
+ {"version":3,"file":"catalog-service.d.ts","sourceRoot":"","sources":["../src/catalog-service.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { compactSchema, lexicalSearchQuery, rankTools, summarizeDescription, } from "./catalog.js";
1
+ import { compactSchema, lexicalCorpusStatistics, lexicalSearchQuery, rankTools, schemaObjectKeys, summarizeDescription, } from "./catalog.js";
2
2
  import { mapSettledWithConcurrency, resolveDiscoveryConcurrency, } from "./concurrency.js";
3
3
  import { classifyCallError, messageLooksRetryable } from "./errors.js";
4
4
  import { connectorGuide, connectorSkillName, } from "./skills.js";
@@ -50,6 +50,24 @@ export function boundedDiscoveryText(value, hint) {
50
50
  }
51
51
  return text;
52
52
  }
53
+ /**
54
+ * Code-mode key metadata for one match. Each half is omitted when its schema
55
+ * does not resolve to an object shape, so a program reads "no metadata, use the
56
+ * rendered schema" rather than "this tool has no fields".
57
+ */
58
+ function schemaKeyMetadata(input, output) {
59
+ const inputKeys = schemaObjectKeys(input);
60
+ const outputKeys = schemaObjectKeys(output);
61
+ return {
62
+ ...(inputKeys
63
+ ? {
64
+ inputKeys: inputKeys.properties,
65
+ requiredInputKeys: inputKeys.required,
66
+ }
67
+ : {}),
68
+ ...(outputKeys ? { outputKeys: outputKeys.properties } : {}),
69
+ };
70
+ }
53
71
  function framingError(code, message) {
54
72
  return { code, message, retryable: messageLooksRetryable(message) };
55
73
  }
@@ -223,6 +241,7 @@ export class CatalogService {
223
241
  const catalogs = await mapSettledWithConcurrency(connectors, this.concurrency, (connector) => this.loadForDiscovery(connector.id, `search_tools probe of "${connector.id}"`));
224
242
  const matches = [];
225
243
  let matchMode = "all";
244
+ const statistics = lexicalCorpusStatistics(catalogs.flatMap((catalog) => catalog.status === "fulfilled" ? [catalog.value] : []), retrievalQuery);
226
245
  const collectMatches = (mode) => {
227
246
  matches.length = 0;
228
247
  let orderBase = 0;
@@ -232,7 +251,7 @@ export class CatalogService {
232
251
  throw new Error("Catalog result has no corresponding connector");
233
252
  }
234
253
  if (catalog.status === "fulfilled") {
235
- for (const ranked of rankTools(catalog.value, retrievalQuery, mode)) {
254
+ for (const ranked of rankTools(catalog.value, retrievalQuery, mode, statistics)) {
236
255
  matches.push({
237
256
  connector,
238
257
  tool: ranked.tool,
@@ -273,6 +292,9 @@ export class CatalogService {
273
292
  outputSchema: renderSchema(match.tool.outputSchema, args.includeSchemas),
274
293
  }
275
294
  : {}),
295
+ ...(args.includeSchemas && args.includeSchemaKeys
296
+ ? schemaKeyMetadata(input, match.tool.outputSchema)
297
+ : {}),
276
298
  ...(match.tool.annotations
277
299
  ? { annotations: match.tool.annotations }
278
300
  : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"catalog-service.js","sourceRoot":"","sources":["../src/catalog-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog-service.js","sourceRoot":"","sources":["../src/catalog-service.ts"],"names":[],"mappings":"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"}
package/dist/catalog.d.ts CHANGED
@@ -12,8 +12,41 @@ export interface RankedTool {
12
12
  score: number;
13
13
  order: number;
14
14
  }
15
+ export interface LexicalCorpusStatistics {
16
+ documentCount: number;
17
+ documentFrequency: ReadonlyMap<string, number>;
18
+ nameMatches: ReadonlyMap<string, ReadonlySet<ToolDef>>;
19
+ descriptionMatches: ReadonlyMap<string, ReadonlySet<ToolDef>>;
20
+ }
21
+ /**
22
+ * Compute query-specific document frequencies across every available catalog.
23
+ * The caller does this once per search and shares the result with each
24
+ * connector rank, so ubiquitous words contribute less than discriminative
25
+ * ones without making any action word a stopword.
26
+ */
27
+ export declare function lexicalCorpusStatistics(toolSets: ToolDef[][], query: string): LexicalCorpusStatistics;
15
28
  /** Rank a connector's tools while caching its normalized plain-data index. */
16
- export declare function rankTools(tools: ToolDef[], query: string, mode?: LexicalMatchMode): RankedTool[];
29
+ export declare function rankTools(tools: ToolDef[], query: string, mode?: LexicalMatchMode, statistics?: LexicalCorpusStatistics): RankedTool[];
17
30
  /** Render and cache a compact TypeScript-like representation of JSON Schema. */
18
31
  export declare function compactSchema(schema: JsonSchema): string;
32
+ /** The property and required names a schema resolves to, or undefined. */
33
+ export interface SchemaObjectKeys {
34
+ properties: string[];
35
+ required: string[];
36
+ }
37
+ /**
38
+ * Walk a schema the way renderSchema does — composing `allOf` and resolving
39
+ * `$ref` against the root's `$defs`/`definitions` — and collect the top-level
40
+ * property names it would render. A shallow `Object.keys(schema.properties)`
41
+ * disagrees with the rendered compact schema for exactly the shapes real
42
+ * connectors emit (a top-level `$ref` to a `$defs` entry, or the OpenAPI
43
+ * "extend this base" `allOf`), which is worse than no metadata at all: it
44
+ * reports an empty field list for a tool that plainly has fields.
45
+ *
46
+ * Returns undefined when the schema is not an object shape at all — a union,
47
+ * array, enum, or unresolvable `$ref`. Absent metadata tells a caller to read
48
+ * the rendered schema instead; an empty array would claim the tool takes no
49
+ * fields.
50
+ */
51
+ export declare function schemaObjectKeys(schema: JsonSchema | undefined): SchemaObjectKeys | undefined;
19
52
  //# sourceMappingURL=catalog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAItD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,IAAI,EAAE,OAAO,GACZ,MAAM,GAAG,SAAS,CAMpB;AAgDD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMxD;AAQD,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,SAAS,CAAC;AAEjD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAkDD,8EAA8E;AAC9E,wBAAgB,SAAS,CACvB,KAAK,EAAE,OAAO,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,gBAAwB,GAC7B,UAAU,EAAE,CASd;AAuID,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAexD"}
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAItD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,IAAI,EAAE,OAAO,GACZ,MAAM,GAAG,SAAS,CAMpB;AA2DD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMxD;AAeD,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,SAAS,CAAC;AAEjD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAyFD,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;CAC/D;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,OAAO,EAAE,EAAE,EACrB,KAAK,EAAE,MAAM,GACZ,uBAAuB,CAqDzB;AA8DD,8EAA8E;AAC9E,wBAAgB,SAAS,CACvB,KAAK,EAAE,OAAO,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,gBAAwB,EAC9B,UAAU,GAAE,uBAGX,GACA,UAAU,EAAE,CASd;AAuID,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAexD;AAED,0EAA0E;AAC1E,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,UAAU,GAAG,SAAS,GAC7B,gBAAgB,GAAG,SAAS,CAW9B"}
package/dist/catalog.js CHANGED
@@ -9,8 +9,18 @@ export function summarizeDescription(text, full) {
9
9
  return compact;
10
10
  return `${compact.slice(0, DEFAULT_DESCRIPTION_LENGTH - 1).trimEnd()}…`;
11
11
  }
12
+ function lexicalTokens(text) {
13
+ return text
14
+ .replace(/([A-Z]+)([A-Z][a-z])/g, "$1 $2")
15
+ .replace(/([a-z0-9])([A-Z])/g, "$1 $2")
16
+ .toLowerCase()
17
+ .replace(/[^a-z0-9]+/g, " ")
18
+ .trim()
19
+ .split(/\s+/)
20
+ .filter(Boolean);
21
+ }
12
22
  function normalized(text) {
13
- return text.toLowerCase().replace(/[^a-z0-9]+/g, " ").trim();
23
+ return lexicalTokens(text).join(" ");
14
24
  }
15
25
  /**
16
26
  * Conversational framing selected by the #188 research run before the #189
@@ -63,60 +73,182 @@ export function lexicalSearchQuery(query) {
63
73
  const contentTerms = terms.filter((term) => !CONVERSATIONAL_QUERY_WORDS.has(term));
64
74
  return contentTerms.length > 0 ? contentTerms.join(" ") : query;
65
75
  }
66
- const searchDocuments = new WeakMap();
76
+ const searchIndexes = new WeakMap();
77
+ function indexFor(tools) {
78
+ let index = searchIndexes.get(tools);
79
+ if (!index) {
80
+ const nameTokenDocuments = new Map();
81
+ const descriptionTokenDocuments = new Map();
82
+ const addTokens = (target, tokens, tool) => {
83
+ for (const token of new Set(tokens)) {
84
+ const documents = target.get(token) ?? [];
85
+ documents.push(tool);
86
+ target.set(token, documents);
87
+ }
88
+ };
89
+ const documents = tools.map((tool) => {
90
+ const nameTokens = lexicalTokens(tool.name);
91
+ const descriptionTokens = lexicalTokens(tool.description ?? "");
92
+ addTokens(nameTokenDocuments, nameTokens, tool);
93
+ addTokens(descriptionTokenDocuments, descriptionTokens, tool);
94
+ return {
95
+ tool,
96
+ name: nameTokens.join(" "),
97
+ nameTokens,
98
+ descriptionTokens,
99
+ };
100
+ });
101
+ index = {
102
+ documents,
103
+ nameTokenDocuments,
104
+ descriptionTokenDocuments,
105
+ };
106
+ searchIndexes.set(tools, index);
107
+ }
108
+ return index;
109
+ }
67
110
  function documentsFor(tools) {
68
- let docs = searchDocuments.get(tools);
69
- if (!docs) {
70
- docs = tools.map((tool) => ({
71
- tool,
72
- name: normalized(tool.name),
73
- description: normalized(tool.description ?? ""),
74
- }));
75
- searchDocuments.set(tools, docs);
111
+ return indexFor(tools).documents;
112
+ }
113
+ /**
114
+ * Whole-token equality is the ordinary lexical match. A deliberately narrow
115
+ * inflection check retains useful singular/plural and past-tense recall
116
+ * without bringing back arbitrary substring matches (`list` must not match
117
+ * `enlist`, and `record` must not match the noun `recording`).
118
+ */
119
+ function inflectionVariants(base) {
120
+ return [
121
+ `${base}s`,
122
+ `${base}es`,
123
+ `${base}ed`,
124
+ ...(base.endsWith("e") ? [`${base}d`] : []),
125
+ ...(base.endsWith("y")
126
+ ? [
127
+ `${base.slice(0, -1)}ies`,
128
+ `${base.slice(0, -1)}ied`,
129
+ ]
130
+ : []),
131
+ ];
132
+ }
133
+ function matchingTokenCandidates(term) {
134
+ const candidates = new Set([term, ...inflectionVariants(term)]);
135
+ const possibleBases = [
136
+ ...(term.endsWith("s") ? [term.slice(0, -1)] : []),
137
+ ...(term.endsWith("es") ? [term.slice(0, -2)] : []),
138
+ ...(term.endsWith("ed") ? [term.slice(0, -2)] : []),
139
+ ...(term.endsWith("d") ? [term.slice(0, -1)] : []),
140
+ ...(term.endsWith("ies")
141
+ ? [`${term.slice(0, -3)}y`]
142
+ : []),
143
+ ...(term.endsWith("ied")
144
+ ? [`${term.slice(0, -3)}y`]
145
+ : []),
146
+ ];
147
+ for (const base of possibleBases) {
148
+ if (base && inflectionVariants(base).includes(term)) {
149
+ candidates.add(base);
150
+ }
76
151
  }
77
- return docs;
152
+ return candidates;
153
+ }
154
+ /**
155
+ * Compute query-specific document frequencies across every available catalog.
156
+ * The caller does this once per search and shares the result with each
157
+ * connector rank, so ubiquitous words contribute less than discriminative
158
+ * ones without making any action word a stopword.
159
+ */
160
+ export function lexicalCorpusStatistics(toolSets, query) {
161
+ const terms = [...new Set(lexicalTokens(query))];
162
+ if (terms.length === 0) {
163
+ return {
164
+ documentCount: toolSets.reduce((total, tools) => total + tools.length, 0),
165
+ documentFrequency: new Map(),
166
+ nameMatches: new Map(),
167
+ descriptionMatches: new Map(),
168
+ };
169
+ }
170
+ const nameMatches = new Map();
171
+ const descriptionMatches = new Map();
172
+ for (const term of terms) {
173
+ const termNameMatches = new Set();
174
+ const termDescriptionMatches = new Set();
175
+ for (const tools of toolSets) {
176
+ const index = indexFor(tools);
177
+ for (const candidate of matchingTokenCandidates(term)) {
178
+ for (const tool of index.nameTokenDocuments.get(candidate) ?? []) {
179
+ termNameMatches.add(tool);
180
+ }
181
+ for (const tool of index.descriptionTokenDocuments.get(candidate) ?? []) {
182
+ termDescriptionMatches.add(tool);
183
+ }
184
+ }
185
+ }
186
+ nameMatches.set(term, termNameMatches);
187
+ descriptionMatches.set(term, termDescriptionMatches);
188
+ }
189
+ const documentFrequency = new Map(terms.map((term) => [
190
+ term,
191
+ new Set([
192
+ ...(nameMatches.get(term) ?? []),
193
+ ...(descriptionMatches.get(term) ?? []),
194
+ ]).size,
195
+ ]));
196
+ return {
197
+ documentCount: toolSets.reduce((total, tools) => total + tools.length, 0),
198
+ documentFrequency,
199
+ nameMatches,
200
+ descriptionMatches,
201
+ };
202
+ }
203
+ function inverseDocumentFrequency(term, statistics) {
204
+ const frequency = statistics.documentFrequency.get(term) ?? 0;
205
+ return Math.log(1 +
206
+ (statistics.documentCount - frequency + 0.5) /
207
+ (frequency + 0.5));
78
208
  }
79
- function scoreDocument(doc, phrase, terms, mode) {
209
+ function scoreDocument(doc, phrase, terms, mode, statistics) {
80
210
  if (!phrase)
81
211
  return 0;
82
- const haystack = `${doc.name} ${doc.description}`;
83
- const matchedTerms = terms.filter((term) => haystack.includes(term));
212
+ const matchedTerms = terms.filter((term) => statistics.nameMatches.get(term)?.has(doc.tool) ||
213
+ statistics.descriptionMatches.get(term)?.has(doc.tool));
84
214
  if (mode === "all" && matchedTerms.length !== terms.length)
85
215
  return null;
86
- if (mode === "partial") {
87
- if (matchedTerms.length === 0)
88
- return null;
89
- const nameMatches = matchedTerms.filter((term) => doc.name.includes(term)).length;
90
- // Coverage wins first, then the number of those terms found in the tool
91
- // name. Catalog order breaks the remaining ties at the caller.
92
- return matchedTerms.length * 1_000 + nameMatches;
93
- }
94
- let score = 0;
216
+ if (matchedTerms.length === 0)
217
+ return null;
218
+ // Coverage remains meaningful in partial mode, but is IDF-weighted rather
219
+ // than a raw term count: one rare domain term can beat several ubiquitous
220
+ // catalog verbs.
221
+ let score = matchedTerms.reduce((total, term) => total + 4 * inverseDocumentFrequency(term, statistics), 0);
222
+ const phraseWeight = terms.reduce((total, term) => total + inverseDocumentFrequency(term, statistics), 0);
95
223
  if (doc.name === phrase)
96
- score += 1_000;
97
- else if (doc.name.startsWith(phrase))
98
- score += 800;
99
- else if (doc.name.includes(phrase))
100
- score += 600;
101
- for (const term of terms) {
102
- if (doc.name === term)
103
- score += 200;
104
- else if (doc.name.startsWith(term))
105
- score += 120;
106
- else if (doc.name.includes(term))
107
- score += 80;
108
- if (doc.description.includes(term))
109
- score += 10;
224
+ score += 40 * phraseWeight;
225
+ else if (doc.name.startsWith(`${phrase} `))
226
+ score += 24 * phraseWeight;
227
+ else if (` ${doc.name} `.includes(` ${phrase} `)) {
228
+ score += 16 * phraseWeight;
229
+ }
230
+ for (const term of matchedTerms) {
231
+ const weight = inverseDocumentFrequency(term, statistics);
232
+ if (doc.nameTokens.includes(term))
233
+ score += 12 * weight;
234
+ else if (statistics.nameMatches.get(term)?.has(doc.tool)) {
235
+ score += 8 * weight;
236
+ }
237
+ if (doc.descriptionTokens.includes(term))
238
+ score += 3 * weight;
239
+ else if (statistics.descriptionMatches.get(term)?.has(doc.tool)) {
240
+ score += 1.5 * weight;
241
+ }
110
242
  }
111
243
  return score;
112
244
  }
113
245
  /** Rank a connector's tools while caching its normalized plain-data index. */
114
- export function rankTools(tools, query, mode = "all") {
246
+ export function rankTools(tools, query, mode = "all", statistics = lexicalCorpusStatistics([tools], query)) {
115
247
  const phrase = normalized(query);
116
- const terms = phrase.split(/\s+/).filter(Boolean);
248
+ const terms = [...new Set(phrase.split(/\s+/).filter(Boolean))];
117
249
  const ranked = [];
118
250
  documentsFor(tools).forEach((doc, order) => {
119
- const score = scoreDocument(doc, phrase, terms, mode);
251
+ const score = scoreDocument(doc, phrase, terms, mode, statistics);
120
252
  if (score !== null)
121
253
  ranked.push({ tool: doc.tool, score, order });
122
254
  });
@@ -263,4 +395,96 @@ export function compactSchema(schema) {
263
395
  compactSchemas.set(schema, rendered);
264
396
  return rendered;
265
397
  }
398
+ /**
399
+ * Walk a schema the way renderSchema does — composing `allOf` and resolving
400
+ * `$ref` against the root's `$defs`/`definitions` — and collect the top-level
401
+ * property names it would render. A shallow `Object.keys(schema.properties)`
402
+ * disagrees with the rendered compact schema for exactly the shapes real
403
+ * connectors emit (a top-level `$ref` to a `$defs` entry, or the OpenAPI
404
+ * "extend this base" `allOf`), which is worse than no metadata at all: it
405
+ * reports an empty field list for a tool that plainly has fields.
406
+ *
407
+ * Returns undefined when the schema is not an object shape at all — a union,
408
+ * array, enum, or unresolvable `$ref`. Absent metadata tells a caller to read
409
+ * the rendered schema instead; an empty array would claim the tool takes no
410
+ * fields.
411
+ */
412
+ export function schemaObjectKeys(schema) {
413
+ if (!schema)
414
+ return undefined;
415
+ const defs = {
416
+ ...schema.$defs,
417
+ ...schema.definitions,
418
+ };
419
+ try {
420
+ return objectKeys(schema, defs, new Set(), 0);
421
+ }
422
+ catch {
423
+ return undefined;
424
+ }
425
+ }
426
+ /** Merge in declaration order, first occurrence winning, as renderSchema renders. */
427
+ function mergedKeys(parts) {
428
+ if (parts.length === 0)
429
+ return undefined;
430
+ return {
431
+ properties: [...new Set(parts.flatMap((part) => part.properties))],
432
+ required: [...new Set(parts.flatMap((part) => part.required))],
433
+ };
434
+ }
435
+ /** The key-collecting twin of renderSchema; the branch order must match it. */
436
+ function objectKeys(schema, defs, seen, depth) {
437
+ if (depth > 4)
438
+ return undefined;
439
+ if (schema === null || typeof schema !== "object")
440
+ return undefined;
441
+ const s = schema;
442
+ if (Array.isArray(s.allOf)) {
443
+ const { allOf: _members, ...own } = s;
444
+ const parts = declaresShape(own)
445
+ ? [objectKeys(own, defs, seen, depth)]
446
+ : [];
447
+ for (const member of s.allOf) {
448
+ parts.push(objectKeys(member, defs, seen, depth + 1));
449
+ }
450
+ // An allOf whose members are not all object shapes renders as an
451
+ // intersection with a non-object half; no single key list describes it.
452
+ return parts.every((part) => part !== undefined)
453
+ ? mergedKeys(parts)
454
+ : undefined;
455
+ }
456
+ if (typeof s.$ref === "string") {
457
+ const name = refName(s.$ref);
458
+ if (seen.has(name))
459
+ return undefined;
460
+ const target = defs[name];
461
+ if (target === undefined)
462
+ return undefined;
463
+ seen.add(name);
464
+ const resolved = objectKeys(target, defs, seen, depth);
465
+ seen.delete(name);
466
+ return resolved;
467
+ }
468
+ if (Array.isArray(s.oneOf ?? s.anyOf))
469
+ return undefined;
470
+ if (Array.isArray(s.enum))
471
+ return undefined;
472
+ if (s.const !== undefined)
473
+ return undefined;
474
+ if (s.type === "array" || s.items)
475
+ return undefined;
476
+ if (s.type === "object" || s.properties) {
477
+ const props = s.properties;
478
+ if (props === null || Array.isArray(props) || typeof props !== "object") {
479
+ return { properties: [], required: [] };
480
+ }
481
+ return {
482
+ properties: Object.keys(props),
483
+ required: Array.isArray(s.required)
484
+ ? s.required.filter((key) => typeof key === "string")
485
+ : [],
486
+ };
487
+ }
488
+ return undefined;
489
+ }
266
490
  //# sourceMappingURL=catalog.js.map