harness-mcp-v2 3.2.3 → 3.2.5

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 (111) hide show
  1. package/README.md +62 -3
  2. package/build/config.d.ts +22 -3
  3. package/build/config.d.ts.map +1 -1
  4. package/build/config.js +10 -0
  5. package/build/config.js.map +1 -1
  6. package/build/data/examples/index.d.ts +2 -0
  7. package/build/data/examples/index.d.ts.map +1 -1
  8. package/build/data/examples/index.js +4 -0
  9. package/build/data/examples/index.js.map +1 -1
  10. package/build/data/schemas/v0/pipeline.d.ts.map +1 -1
  11. package/build/data/schemas/v0/pipeline.js +31 -10
  12. package/build/data/schemas/v0/pipeline.js.map +1 -1
  13. package/build/data/schemas/v0/template.d.ts.map +1 -1
  14. package/build/data/schemas/v0/template.js +28 -10
  15. package/build/data/schemas/v0/template.js.map +1 -1
  16. package/build/index.js +67 -11
  17. package/build/index.js.map +1 -1
  18. package/build/prompts/build-deploy-app.d.ts.map +1 -1
  19. package/build/prompts/build-deploy-app.js +4 -3
  20. package/build/prompts/build-deploy-app.js.map +1 -1
  21. package/build/prompts/create-agent.d.ts.map +1 -1
  22. package/build/prompts/create-agent.js +21 -1
  23. package/build/prompts/create-agent.js.map +1 -1
  24. package/build/prompts/create-pipeline.d.ts.map +1 -1
  25. package/build/prompts/create-pipeline.js +1 -0
  26. package/build/prompts/create-pipeline.js.map +1 -1
  27. package/build/registry/extractors.d.ts +10 -3
  28. package/build/registry/extractors.d.ts.map +1 -1
  29. package/build/registry/extractors.js +27 -9
  30. package/build/registry/extractors.js.map +1 -1
  31. package/build/registry/toolsets/chaos-descriptions.d.ts +23 -19
  32. package/build/registry/toolsets/chaos-descriptions.d.ts.map +1 -1
  33. package/build/registry/toolsets/chaos-descriptions.js +134 -48
  34. package/build/registry/toolsets/chaos-descriptions.js.map +1 -1
  35. package/build/registry/toolsets/chaos.d.ts.map +1 -1
  36. package/build/registry/toolsets/chaos.js +323 -56
  37. package/build/registry/toolsets/chaos.js.map +1 -1
  38. package/build/registry/toolsets/dbops.js +2 -2
  39. package/build/registry/toolsets/dbops.js.map +1 -1
  40. package/build/registry/toolsets/idp.d.ts.map +1 -1
  41. package/build/registry/toolsets/idp.js +0 -6
  42. package/build/registry/toolsets/idp.js.map +1 -1
  43. package/build/registry/toolsets/pipelines.d.ts.map +1 -1
  44. package/build/registry/toolsets/pipelines.js +7 -5
  45. package/build/registry/toolsets/pipelines.js.map +1 -1
  46. package/build/registry/toolsets/pull-requests.d.ts.map +1 -1
  47. package/build/registry/toolsets/pull-requests.js +47 -2
  48. package/build/registry/toolsets/pull-requests.js.map +1 -1
  49. package/build/registry/toolsets/templates.d.ts.map +1 -1
  50. package/build/registry/toolsets/templates.js +28 -4
  51. package/build/registry/toolsets/templates.js.map +1 -1
  52. package/build/search/embedding-content.d.ts +5 -0
  53. package/build/search/embedding-content.d.ts.map +1 -0
  54. package/build/search/embedding-content.js +31 -0
  55. package/build/search/embedding-content.js.map +1 -0
  56. package/build/search/index.d.ts +8 -0
  57. package/build/search/index.d.ts.map +1 -0
  58. package/build/search/index.js +6 -0
  59. package/build/search/index.js.map +1 -0
  60. package/build/search/local-provider.d.ts +37 -0
  61. package/build/search/local-provider.d.ts.map +1 -0
  62. package/build/search/local-provider.js +269 -0
  63. package/build/search/local-provider.js.map +1 -0
  64. package/build/search/manager.d.ts +39 -0
  65. package/build/search/manager.d.ts.map +1 -0
  66. package/build/search/manager.js +283 -0
  67. package/build/search/manager.js.map +1 -0
  68. package/build/search/null-provider.d.ts +9 -0
  69. package/build/search/null-provider.d.ts.map +1 -0
  70. package/build/search/null-provider.js +8 -0
  71. package/build/search/null-provider.js.map +1 -0
  72. package/build/search/remote-provider.d.ts +28 -0
  73. package/build/search/remote-provider.d.ts.map +1 -0
  74. package/build/search/remote-provider.js +139 -0
  75. package/build/search/remote-provider.js.map +1 -0
  76. package/build/search/routing-eval.d.ts +49 -0
  77. package/build/search/routing-eval.d.ts.map +1 -0
  78. package/build/search/routing-eval.js +80 -0
  79. package/build/search/routing-eval.js.map +1 -0
  80. package/build/search/types.d.ts +58 -0
  81. package/build/search/types.d.ts.map +1 -0
  82. package/build/search/types.js +7 -0
  83. package/build/search/types.js.map +1 -0
  84. package/build/tools/harness-execute.d.ts.map +1 -1
  85. package/build/tools/harness-execute.js +19 -7
  86. package/build/tools/harness-execute.js.map +1 -1
  87. package/build/tools/harness-get.d.ts +2 -1
  88. package/build/tools/harness-get.d.ts.map +1 -1
  89. package/build/tools/harness-get.js +21 -1
  90. package/build/tools/harness-get.js.map +1 -1
  91. package/build/tools/harness-list.d.ts +2 -1
  92. package/build/tools/harness-list.d.ts.map +1 -1
  93. package/build/tools/harness-list.js +22 -1
  94. package/build/tools/harness-list.js.map +1 -1
  95. package/build/tools/harness-search.d.ts +20 -1
  96. package/build/tools/harness-search.d.ts.map +1 -1
  97. package/build/tools/harness-search.js +124 -14
  98. package/build/tools/harness-search.js.map +1 -1
  99. package/build/tools/index.d.ts +2 -1
  100. package/build/tools/index.d.ts.map +1 -1
  101. package/build/tools/index.js +4 -4
  102. package/build/tools/index.js.map +1 -1
  103. package/build/utils/http-health.d.ts +11 -0
  104. package/build/utils/http-health.d.ts.map +1 -0
  105. package/build/utils/http-health.js +11 -0
  106. package/build/utils/http-health.js.map +1 -0
  107. package/build/utils/http-sessions.d.ts +8 -0
  108. package/build/utils/http-sessions.d.ts.map +1 -0
  109. package/build/utils/http-sessions.js +12 -0
  110. package/build/utils/http-sessions.js.map +1 -0
  111. package/package.json +5 -1
@@ -13,10 +13,8 @@ const RELEVANCE_TIERS = {
13
13
  pipeline: 1, service: 1, environment: 1, connector: 1, execution: 1,
14
14
  template: 2, trigger: 2, input_set: 2, secret: 2, fme_feature_flag: 2,
15
15
  repository: 2, infrastructure: 2,
16
- // SCS types at tier 2 — same priority as other domain-specific resources
17
16
  scs_artifact_source: 2, artifact_security: 2, code_repo_security: 2,
18
17
  scs_artifact_component: 2, scs_compliance_result: 2,
19
- // Everything else defaults to tier 3
20
18
  };
21
19
  function getTier(resourceType) {
22
20
  return RELEVANCE_TIERS[resourceType] ?? 3;
@@ -26,7 +24,56 @@ function asResourceScope(value) {
26
24
  ? value
27
25
  : undefined;
28
26
  }
29
- export function registerSearchTool(server, registry, client) {
27
+ /**
28
+ * Tier-1 types always included in semantic routing even when embeddings miss them.
29
+ * Prevents confident-but-wrong routing from silently skipping core CI/CD entities.
30
+ */
31
+ export const SEMANTIC_ROUTING_SAFETY_FLOOR = ["pipeline", "service", "environment", "connector"];
32
+ /**
33
+ * Routing threshold — semantic hits above this score are used to predict which
34
+ * resource types scatter-gather should target. Higher = more conservative routing
35
+ * (fewer types skipped, safer). Lower = more aggressive (more savings, higher miss risk).
36
+ */
37
+ const SEMANTIC_ROUTING_THRESHOLD = 0.5;
38
+ /**
39
+ * Display threshold — semantic hits above this (but below routing threshold) are still
40
+ * shown as tier-0 results even if they didn't influence routing.
41
+ */
42
+ const SEMANTIC_DISPLAY_THRESHOLD = 0.35;
43
+ /**
44
+ * Extract unique resource types from semantic results that meet the routing threshold.
45
+ * Uses both:
46
+ * - `resources` corpus hits: live Harness data already indexed for this account
47
+ * - `mcp_resources` corpus hits: resource_definition and entity_schema entries whose
48
+ * resource_type field maps directly to a listable API type (e.g. resource-def:connector
49
+ * → "connector"). These are the primary routing signal since mcp_resources is always
50
+ * indexed at startup whereas resources may be sparse.
51
+ */
52
+ export function extractRoutingTypes(semanticResults, allTargetTypes) {
53
+ const targetSet = new Set(allTargetTypes);
54
+ const predicted = new Set();
55
+ for (const sr of semanticResults) {
56
+ if (sr.score < SEMANTIC_ROUTING_THRESHOLD)
57
+ continue;
58
+ const rt = sr.metadata["resource_type"];
59
+ if (rt && targetSet.has(rt)) {
60
+ predicted.add(rt);
61
+ }
62
+ }
63
+ return predicted.size > 0 ? Array.from(predicted) : null;
64
+ }
65
+ /** Union predicted types with tier-1 safety floor types present in the candidate set. */
66
+ export function applyRoutingSafetyFloor(predicted, candidateTypes) {
67
+ const candidateSet = new Set(candidateTypes);
68
+ const routed = new Set(predicted);
69
+ for (const rt of SEMANTIC_ROUTING_SAFETY_FLOOR) {
70
+ if (candidateSet.has(rt)) {
71
+ routed.add(rt);
72
+ }
73
+ }
74
+ return Array.from(routed);
75
+ }
76
+ export function registerSearchTool(server, registry, client, searchManager) {
30
77
  const listableTypes = registry.getTypesForOperation("list");
31
78
  server.registerTool("harness_search", {
32
79
  description: "Search across multiple Harness resource types. Returns results ranked by relevance. Accepts a Harness URL for scope.",
@@ -53,26 +100,62 @@ export function registerSearchTool(server, registry, client) {
53
100
  const mergedArgs = applyUrlDefaults(args, args.url, { includeResourceScope: true });
54
101
  const requestedScope = asResourceScope(mergedArgs.resource_scope);
55
102
  const hasExplicitResourceTypes = (args.resource_types?.length ?? 0) > 0;
56
- // Determine which resource types to search
57
- let targetTypes = args.resource_types ?? [];
58
- if (targetTypes.length === 0) {
59
- // Search all types that support list
60
- targetTypes = registry.getAllResourceTypes().filter((rt) => registry.supportsOperation(rt, "list"));
103
+ // Determine the full candidate type list (before semantic narrowing)
104
+ let candidateTypes = args.resource_types ?? [];
105
+ if (candidateTypes.length === 0) {
106
+ candidateTypes = registry.getAllResourceTypes().filter((rt) => registry.supportsOperation(rt, "list"));
61
107
  }
62
108
  if (requestedScope && !hasExplicitResourceTypes) {
63
- targetTypes = targetTypes.filter((rt) => registry.getSupportedScopes(rt).includes(requestedScope));
109
+ candidateTypes = candidateTypes.filter((rt) => registry.getSupportedScopes(rt).includes(requestedScope));
64
110
  }
111
+ // --- Semantic routing ---
112
+ // Run semantic search first. If it returns high-confidence hits for specific
113
+ // resource types, narrow scatter-gather to only those types.
114
+ const provider = searchManager?.getProvider();
115
+ let semanticResults = [];
116
+ let routedTypes = null;
117
+ let semanticRouted = false;
118
+ if (provider?.isAvailable() && !hasExplicitResourceTypes) {
119
+ semanticResults = await provider.search(args.query, {
120
+ corpus: "all",
121
+ accountId: client.account,
122
+ k: 30,
123
+ });
124
+ if (semanticResults.length > 0) {
125
+ const predictedTypes = extractRoutingTypes(semanticResults, candidateTypes);
126
+ if (predictedTypes) {
127
+ routedTypes = applyRoutingSafetyFloor(predictedTypes, candidateTypes);
128
+ semanticRouted = true;
129
+ const floorAdded = routedTypes.filter((rt) => !predictedTypes.includes(rt));
130
+ log.info(`Semantic routing: narrowed from ${candidateTypes.length} → ${routedTypes.length} types`, {
131
+ query: args.query,
132
+ routed_types: routedTypes,
133
+ predicted_types: predictedTypes,
134
+ safety_floor_added: floorAdded,
135
+ top_score: semanticResults[0]?.score,
136
+ skipped: candidateTypes.length - routedTypes.length,
137
+ });
138
+ }
139
+ else {
140
+ log.info(`Semantic search: no high-confidence routing hits, falling back to full scatter-gather`, {
141
+ query: args.query,
142
+ results: semanticResults.length,
143
+ top_score: semanticResults[0]?.score ?? 0,
144
+ });
145
+ }
146
+ }
147
+ }
148
+ const targetTypes = routedTypes ?? candidateTypes;
149
+ // --- Scatter-gather over targetTypes ---
65
150
  const entries = [];
66
151
  const errors = {};
67
- // Run searches with concurrency limit to avoid overwhelming the API
68
152
  const MAX_CONCURRENCY = 5;
69
153
  const settled = [];
70
154
  let searched = 0;
71
155
  for (let i = 0; i < targetTypes.length; i += MAX_CONCURRENCY) {
72
- // Check for cancellation between batches
73
156
  signal.throwIfAborted();
74
157
  const batch = targetTypes.slice(i, i + MAX_CONCURRENCY);
75
- await sendProgress(extra, searched, targetTypes.length, `Searching batch ${Math.floor(i / MAX_CONCURRENCY) + 1}...`);
158
+ await sendProgress(extra, searched, targetTypes.length, `Searching batch ${Math.floor(i / MAX_CONCURRENCY) + 1} of ${Math.ceil(targetTypes.length / MAX_CONCURRENCY)}${semanticRouted ? " (semantic-routed)" : ""}...`);
76
159
  const batchResults = await Promise.all(batch.map(async (rt) => {
77
160
  try {
78
161
  const result = await registry.dispatch(client, rt, "list", {
@@ -118,16 +201,43 @@ export function registerSearchTool(server, registry, client) {
118
201
  errors[rt] = error;
119
202
  }
120
203
  }
121
- // Sort by tier ascending, then by match_count descending within tier
204
+ // --- Merge semantic results ---
205
+ // Tier-0: semantic hits (schemas, examples, resource defs, and any live resources
206
+ // not already in keyword results) above display threshold
207
+ const keywordIds = new Set(entries.flatMap(e => e.items.map(i => String(i["identifier"] ?? i["id"] ?? ""))));
208
+ const seenSemanticIds = new Set();
209
+ let semanticMatchCount = 0;
210
+ for (const sr of semanticResults) {
211
+ if (sr.score < SEMANTIC_DISPLAY_THRESHOLD)
212
+ continue;
213
+ const dedupeId = sr.metadata["identifier"] || sr.id;
214
+ if (seenSemanticIds.has(dedupeId))
215
+ continue;
216
+ seenSemanticIds.add(dedupeId);
217
+ if (sr.metadata["identifier"] && keywordIds.has(sr.metadata["identifier"]))
218
+ continue;
219
+ semanticMatchCount++;
220
+ entries.push({
221
+ resource_type: sr.metadata["resource_type"] ?? sr.corpus,
222
+ tier: 0,
223
+ match_count: 1,
224
+ items: [{ ...sr.metadata, _id: sr.id, _semantic_score: sr.score, _corpus: sr.corpus }],
225
+ total: 1,
226
+ });
227
+ }
122
228
  entries.sort((a, b) => {
123
229
  if (a.tier !== b.tier)
124
230
  return a.tier - b.tier;
125
231
  return b.match_count - a.match_count;
126
232
  });
233
+ const skippedTypes = semanticRouted
234
+ ? candidateTypes.filter((rt) => !targetTypes.includes(rt))
235
+ : [];
127
236
  return jsonResult({
128
237
  query: args.query,
129
- total_matches: totalMatches,
238
+ total_matches: totalMatches + semanticMatchCount,
130
239
  searched_types: targetTypes.length,
240
+ ...(semanticRouted ? { semantic_routed: true, types_skipped: skippedTypes } : {}),
131
241
  results: entries,
132
242
  ...(Object.keys(errors).length > 0 ? { errors } : {}),
133
243
  });
@@ -1 +1 @@
1
- {"version":3,"file":"harness-search.js","sourceRoot":"","sources":["../../src/tools/harness-search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"harness-search.js","sourceRoot":"","sources":["../../src/tools/harness-search.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import type { Registry } from "../registry/index.js";
3
3
  import type { HarnessClient } from "../client/harness-client.js";
4
4
  import type { Config } from "../config.js";
5
5
  import type { SchemaEntry } from "../data/schemas/types.js";
6
+ import type { SearchManager } from "../search/index.js";
6
7
  import "../data/examples/load-all.js";
7
- export declare function registerAllTools(server: McpServer, registry: Registry, client: HarnessClient, config: Config, additionalSchemas?: Record<string, SchemaEntry>): void;
8
+ export declare function registerAllTools(server: McpServer, registry: Registry, client: HarnessClient, config: Config, additionalSchemas?: Record<string, SchemaEntry>, searchManager?: SearchManager): void;
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAa3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,8BAA8B,CAAC;AAGtC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,IAAI,CAYpK"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAa3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,8BAA8B,CAAC;AAGtC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAYnM"}
@@ -10,15 +10,15 @@ import { registerDescribeTool } from "./harness-describe.js";
10
10
  import { registerStatusTool } from "./harness-status.js";
11
11
  import { registerSchemaTool } from "./harness-schema.js";
12
12
  import "../data/examples/load-all.js";
13
- export function registerAllTools(server, registry, client, config, additionalSchemas) {
14
- registerListTool(server, registry, client);
15
- registerGetTool(server, registry, client);
13
+ export function registerAllTools(server, registry, client, config, additionalSchemas, searchManager) {
14
+ registerListTool(server, registry, client, searchManager);
15
+ registerGetTool(server, registry, client, searchManager);
16
16
  registerCreateTool(server, registry, client, config);
17
17
  registerUpdateTool(server, registry, client, config);
18
18
  registerDeleteTool(server, registry, client, config);
19
19
  registerExecuteTool(server, registry, client, config);
20
20
  registerDiagnoseTool(server, registry, client, config);
21
- registerSearchTool(server, registry, client);
21
+ registerSearchTool(server, registry, client, searchManager);
22
22
  registerDescribeTool(server, registry);
23
23
  registerStatusTool(server, registry, client, config);
24
24
  registerSchemaTool(server, registry, client, additionalSchemas);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,8BAA8B,CAAC;AAGtC,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,QAAkB,EAAE,MAAqB,EAAE,MAAc,EAAE,iBAA+C;IAC5J,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC3C,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1C,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvD,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7C,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvC,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAClE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,8BAA8B,CAAC;AAGtC,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,QAAkB,EAAE,MAAqB,EAAE,MAAc,EAAE,iBAA+C,EAAE,aAA6B;IAC3L,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;IAC1D,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;IACzD,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvD,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;IAC5D,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvC,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAClE,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { SearchReadiness } from "../search/types.js";
2
+ export interface HttpHealthResponse {
3
+ statusCode: 200;
4
+ body: {
5
+ status: "ok";
6
+ sessions: number;
7
+ search: SearchReadiness;
8
+ };
9
+ }
10
+ export declare function buildHttpHealthResponse(search: SearchReadiness, sessions: number): HttpHealthResponse;
11
+ //# sourceMappingURL=http-health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-health.d.ts","sourceRoot":"","sources":["../../src/utils/http-health.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,GAAG,CAAC;IAChB,IAAI,EAAE;QACJ,MAAM,EAAE,IAAI,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,eAAe,CAAC;KACzB,CAAC;CACH;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CASrG"}
@@ -0,0 +1,11 @@
1
+ export function buildHttpHealthResponse(search, sessions) {
2
+ return {
3
+ statusCode: 200,
4
+ body: {
5
+ status: "ok",
6
+ sessions,
7
+ search,
8
+ },
9
+ };
10
+ }
11
+ //# sourceMappingURL=http-health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-health.js","sourceRoot":"","sources":["../../src/utils/http-health.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,uBAAuB,CAAC,MAAuB,EAAE,QAAgB;IAC/E,OAAO;QACL,UAAU,EAAE,GAAG;QACf,IAAI,EAAE;YACJ,MAAM,EAAE,IAAI;YACZ,QAAQ;YACR,MAAM;SACP;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface HttpSessionActivity {
2
+ lastActivity: number;
3
+ activeRequests: number;
4
+ }
5
+ export declare function beginSessionRequest(session: HttpSessionActivity, now?: number): void;
6
+ export declare function endSessionRequest(session: HttpSessionActivity, now?: number): void;
7
+ export declare function isSessionExpired(session: HttpSessionActivity, ttlMs: number, now?: number): boolean;
8
+ //# sourceMappingURL=http-sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-sessions.d.ts","sourceRoot":"","sources":["../../src/utils/http-sessions.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,SAAa,GAAG,IAAI,CAGxF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,SAAa,GAAG,IAAI,CAGtF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,OAAO,CAEvG"}
@@ -0,0 +1,12 @@
1
+ export function beginSessionRequest(session, now = Date.now()) {
2
+ session.activeRequests += 1;
3
+ session.lastActivity = now;
4
+ }
5
+ export function endSessionRequest(session, now = Date.now()) {
6
+ session.activeRequests = Math.max(0, session.activeRequests - 1);
7
+ session.lastActivity = now;
8
+ }
9
+ export function isSessionExpired(session, ttlMs, now = Date.now()) {
10
+ return session.activeRequests === 0 && now - session.lastActivity > ttlMs;
11
+ }
12
+ //# sourceMappingURL=http-sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-sessions.js","sourceRoot":"","sources":["../../src/utils/http-sessions.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,mBAAmB,CAAC,OAA4B,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAChF,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC;IAC5B,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAA4B,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAC9E,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;IACjE,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAA4B,EAAE,KAAa,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAC5F,OAAO,OAAO,CAAC,cAAc,KAAK,CAAC,IAAI,GAAG,GAAG,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC;AAC5E,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "harness-mcp-v2",
3
- "version": "3.2.3",
3
+ "version": "3.2.5",
4
4
  "description": "Give AI agents full access to the Harness.io platform — manage pipelines, deployments, cloud costs, chaos engineering, feature flags, SEI, and 125+ resource types through 11 MCP tools",
5
5
  "type": "module",
6
6
  "main": "build/index.js",
@@ -21,6 +21,7 @@
21
21
  "sync-schemas": "node scripts/sync-schemas.js",
22
22
  "sync-entity-schemas": "node scripts/sync-entity-schemas.js",
23
23
  "check-schema-coverage": "node scripts/check-schema-coverage.js",
24
+ "search:benchmark": "node scripts/benchmark-search-routing.mjs",
24
25
  "docs:generate": "node scripts/generate-docs.js",
25
26
  "docs:check": "node scripts/generate-docs.js --check",
26
27
  "standards:check": "vitest run tests/coding-standards tests/registry/structural-validation.test.ts",
@@ -110,5 +111,8 @@
110
111
  "packageManager": "pnpm@10.18.2",
111
112
  "engines": {
112
113
  "node": ">=20.0.0"
114
+ },
115
+ "optionalDependencies": {
116
+ "@huggingface/transformers": "^4.2.0"
113
117
  }
114
118
  }