pi-smart-router 1.0.0 → 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 (96) hide show
  1. package/.pi/extensions/smart-router/command-formatters.ts +2 -1
  2. package/.pi/extensions/smart-router/commands.ts +2 -1
  3. package/.pi/extensions/smart-router/types.ts +7 -1
  4. package/README.md +96 -6
  5. package/bin/pi-smart-router.mjs +6 -4
  6. package/config/benchmark-profiles.json +2 -2
  7. package/config/operator-config.json.example +7 -0
  8. package/config/p-success-weights.json +19 -12
  9. package/config/routing-calibration.json +157 -24
  10. package/data/contrib/example.json +5 -2
  11. package/dist/cli/smart-router-cli.d.ts +21 -3
  12. package/dist/cli/smart-router-cli.d.ts.map +1 -1
  13. package/dist/cli/smart-router-cli.js +56 -11
  14. package/dist/cli/smart-router-cli.js.map +1 -1
  15. package/dist/config/defaults.d.ts.map +1 -1
  16. package/dist/config/defaults.js +3 -1
  17. package/dist/config/defaults.js.map +1 -1
  18. package/dist/domain/matching/embedding-provider.d.ts +63 -1
  19. package/dist/domain/matching/embedding-provider.d.ts.map +1 -1
  20. package/dist/domain/matching/embedding-provider.js +117 -0
  21. package/dist/domain/matching/embedding-provider.js.map +1 -1
  22. package/dist/domain/matching/encoder-gate.d.ts +73 -0
  23. package/dist/domain/matching/encoder-gate.d.ts.map +1 -0
  24. package/dist/domain/matching/encoder-gate.js +66 -0
  25. package/dist/domain/matching/encoder-gate.js.map +1 -0
  26. package/dist/domain/matching/hydra-matcher.d.ts +45 -3
  27. package/dist/domain/matching/hydra-matcher.d.ts.map +1 -1
  28. package/dist/domain/matching/hydra-matcher.js +48 -3
  29. package/dist/domain/matching/hydra-matcher.js.map +1 -1
  30. package/dist/domain/pipeline/low-intensity-stage.d.ts.map +1 -1
  31. package/dist/domain/pipeline/low-intensity-stage.js +20 -2
  32. package/dist/domain/pipeline/low-intensity-stage.js.map +1 -1
  33. package/dist/domain/pipeline/router-pipeline.d.ts +5 -0
  34. package/dist/domain/pipeline/router-pipeline.d.ts.map +1 -1
  35. package/dist/domain/pipeline/router-pipeline.js +16 -0
  36. package/dist/domain/pipeline/router-pipeline.js.map +1 -1
  37. package/dist/domain/pipeline/triage-stage.d.ts +1 -0
  38. package/dist/domain/pipeline/triage-stage.d.ts.map +1 -1
  39. package/dist/domain/pipeline/triage-stage.js +21 -1
  40. package/dist/domain/pipeline/triage-stage.js.map +1 -1
  41. package/dist/domain/routing/tier-features.d.ts +3 -1
  42. package/dist/domain/routing/tier-features.d.ts.map +1 -1
  43. package/dist/domain/routing/tier-features.js +3 -2
  44. package/dist/domain/routing/tier-features.js.map +1 -1
  45. package/dist/domain/triage/triage-engine.d.ts +10 -1
  46. package/dist/domain/triage/triage-engine.d.ts.map +1 -1
  47. package/dist/domain/triage/triage-engine.js +19 -2
  48. package/dist/domain/triage/triage-engine.js.map +1 -1
  49. package/dist/domain/triage/triage-thresholds.d.ts +45 -0
  50. package/dist/domain/triage/triage-thresholds.d.ts.map +1 -0
  51. package/dist/domain/triage/triage-thresholds.js +107 -0
  52. package/dist/domain/triage/triage-thresholds.js.map +1 -0
  53. package/dist/domain/types/entities.d.ts +29 -0
  54. package/dist/domain/types/entities.d.ts.map +1 -1
  55. package/dist/domain/types/schemas.d.ts +65 -7
  56. package/dist/domain/types/schemas.d.ts.map +1 -1
  57. package/dist/domain/types/schemas.js +47 -3
  58. package/dist/domain/types/schemas.js.map +1 -1
  59. package/dist/infra/telemetry.d.ts +8 -0
  60. package/dist/infra/telemetry.d.ts.map +1 -1
  61. package/dist/infra/telemetry.js +10 -0
  62. package/dist/infra/telemetry.js.map +1 -1
  63. package/dist/infrastructure/persistence/sqlite-store.d.ts.map +1 -1
  64. package/dist/infrastructure/persistence/sqlite-store.js +48 -3
  65. package/dist/infrastructure/persistence/sqlite-store.js.map +1 -1
  66. package/dist/infrastructure/telemetry/dataset-recorder.d.ts.map +1 -1
  67. package/dist/infrastructure/telemetry/dataset-recorder.js +3 -0
  68. package/dist/infrastructure/telemetry/dataset-recorder.js.map +1 -1
  69. package/dist/infrastructure/telemetry/routing-telemetry.d.ts +1 -1
  70. package/dist/infrastructure/telemetry/routing-telemetry.d.ts.map +1 -1
  71. package/dist/infrastructure/telemetry/routing-telemetry.js +1 -1
  72. package/dist/infrastructure/telemetry/routing-telemetry.js.map +1 -1
  73. package/dist/infrastructure/telemetry/telemetry-scalar-fields.d.ts +4 -0
  74. package/dist/infrastructure/telemetry/telemetry-scalar-fields.d.ts.map +1 -1
  75. package/dist/infrastructure/telemetry/telemetry-scalar-fields.js +4 -0
  76. package/dist/infrastructure/telemetry/telemetry-scalar-fields.js.map +1 -1
  77. package/package.json +1 -1
  78. package/specs/001-build-smart-router/contracts/telemetry-contrib.schema.json +23 -1
  79. package/src/cli/smart-router-cli.ts +68 -9
  80. package/src/config/defaults.ts +3 -0
  81. package/src/domain/matching/embedding-provider.ts +205 -1
  82. package/src/domain/matching/encoder-gate.ts +121 -0
  83. package/src/domain/matching/hydra-matcher.ts +106 -6
  84. package/src/domain/pipeline/low-intensity-stage.ts +21 -2
  85. package/src/domain/pipeline/router-pipeline.ts +22 -0
  86. package/src/domain/pipeline/triage-stage.ts +23 -1
  87. package/src/domain/routing/tier-features.ts +3 -1
  88. package/src/domain/triage/triage-engine.ts +28 -2
  89. package/src/domain/triage/triage-thresholds.ts +153 -0
  90. package/src/domain/types/entities.ts +29 -0
  91. package/src/domain/types/schemas.ts +57 -7
  92. package/src/infra/telemetry.ts +14 -0
  93. package/src/infrastructure/persistence/sqlite-store.ts +61 -3
  94. package/src/infrastructure/telemetry/dataset-recorder.ts +3 -0
  95. package/src/infrastructure/telemetry/routing-telemetry.ts +1 -0
  96. package/src/infrastructure/telemetry/telemetry-scalar-fields.ts +5 -0
@@ -1 +1 @@
1
- {"version":3,"file":"smart-router-cli.d.ts","sourceRoot":"","sources":["../../src/cli/smart-router-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smart-router-cli.d.ts","sourceRoot":"","sources":["../../src/cli/smart-router-cli.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ import { join } from 'node:path';
9
9
  import { attachOutcomeLabelsToExport, deriveSuccessLabel, indexOutcomesByRequestId, } from '../domain/routing/p-success-classifier.js';
10
10
  import { DATASET_MAX_ENTRIES } from '../infrastructure/telemetry/dataset-limits.js';
11
11
  import { loadOrCreateDatasetPepper } from '../infrastructure/telemetry/dataset-recorder.js';
12
- import { hashSessionIdForTelemetryExport } from '../infra/telemetry.js';
12
+ import { hashRequestIdForTelemetryExport, hashSessionIdForTelemetryExport, } from '../infra/telemetry.js';
13
13
  export const UNPIN_SUBCOMMAND = 'unpin';
14
14
  export const EXPORT_TELEMETRY_CONTRIB_COMMAND = 'export telemetry-contrib';
15
15
  /**
@@ -48,6 +48,16 @@ export const TELEMETRY_CONTRIB_REJECT_KEYS = [
48
48
  ];
49
49
  /** Mirrors SP-116 tainted key pattern for ingest-safe export. */
50
50
  export const TELEMETRY_CONTRIB_TAINTED_KEY_PATTERN = /(?:^|_)(prompt|message|messages|content|tool_calls?|secret|password|token|api_key)(?:_|$)/i;
51
+ /**
52
+ * Privacy-safe count-only fields that the tainted pattern would otherwise
53
+ * reject by name (SP-285, #170). These carry integer counts — never content —
54
+ * so they are explicitly allowed: `prompt_length_chars` feeds the P(success)
55
+ * prompt_length feature; `message_count` feeds envelope-shape features.
56
+ */
57
+ export const TELEMETRY_CONTRIB_TAINTED_KEY_ALLOWLIST = [
58
+ 'prompt_length_chars',
59
+ 'message_count',
60
+ ];
51
61
  export class TelemetryContribValidationError extends Error {
52
62
  name = 'TelemetryContribValidationError';
53
63
  constructor(message, options) {
@@ -69,8 +79,9 @@ function collectForbiddenContribKeys(value, path = '', found = []) {
69
79
  }
70
80
  for (const [key, nested] of Object.entries(value)) {
71
81
  const keyPath = path ? `${path}.${key}` : key;
72
- if (TELEMETRY_CONTRIB_REJECT_KEYS.includes(key) ||
73
- TELEMETRY_CONTRIB_TAINTED_KEY_PATTERN.test(key)) {
82
+ if (!TELEMETRY_CONTRIB_TAINTED_KEY_ALLOWLIST.includes(key) &&
83
+ (TELEMETRY_CONTRIB_REJECT_KEYS.includes(key) ||
84
+ TELEMETRY_CONTRIB_TAINTED_KEY_PATTERN.test(key))) {
74
85
  found.push(keyPath);
75
86
  }
76
87
  collectForbiddenContribKeys(nested, keyPath, found);
@@ -111,16 +122,17 @@ export function isExportTelemetryContribInvocation(args) {
111
122
  }
112
123
  export function parseExportTelemetryContribArgs(args) {
113
124
  if (!isExportTelemetryContribInvocation(args)) {
114
- throw new Error('Usage: export telemetry-contrib [--limit N]');
125
+ throw new Error('Usage: export telemetry-contrib [--limit N] [--embeddings]');
115
126
  }
116
127
  const tokens = args.trim().split(/\s+/).filter(Boolean);
117
128
  let limit = DEFAULT_TELEMETRY_CONTRIB_EXPORT_LIMIT;
129
+ let includeEmbeddings = false;
118
130
  for (let i = 2; i < tokens.length; i++) {
119
131
  const token = tokens[i];
120
132
  if (token === '--limit') {
121
133
  const next = tokens[i + 1];
122
134
  if (!next) {
123
- throw new Error('Usage: export telemetry-contrib [--limit N]');
135
+ throw new Error('Usage: export telemetry-contrib [--limit N] [--embeddings]');
124
136
  }
125
137
  limit = parsePositiveLimit(next);
126
138
  i++;
@@ -130,9 +142,13 @@ export function parseExportTelemetryContribArgs(args) {
130
142
  limit = parsePositiveLimit(token.slice('--limit='.length));
131
143
  continue;
132
144
  }
145
+ if (token === '--embeddings') {
146
+ includeEmbeddings = true;
147
+ continue;
148
+ }
133
149
  throw new Error(`Unknown argument: ${token}`);
134
150
  }
135
- return { limit };
151
+ return { limit, includeEmbeddings };
136
152
  }
137
153
  function parsePositiveLimit(raw) {
138
154
  const parsed = Number.parseInt(raw, 10);
@@ -182,11 +198,18 @@ function resolveSessionIdHash(record, outcomes, pepper) {
182
198
  return hashSessionIdForTelemetryExport('', pepper);
183
199
  }
184
200
  /** Map a dataset row plus linked outcomes to a privacy-safe telemetry contrib record. */
185
- export function toTelemetryContribRecord(record, outcomes = [], pepper) {
201
+ export function toTelemetryContribRecord(record, outcomes = [], pepper, options) {
186
202
  const { success, outcome_signals } = deriveSuccessLabel(outcomes);
203
+ // SP-285 / #170: raw encoder embeddings are larger and more revealing than
204
+ // scalar features, so community contrib rows omit them unless the operator
205
+ // passes --embeddings (capture itself is a separate opt-in env var).
206
+ const includeEmbeddings = options?.includeEmbeddings ?? false;
187
207
  const contrib = {
188
208
  version: TELEMETRY_CONTRIB_VERSION,
189
209
  timestamp: record.timestamp,
210
+ // SP-285 / #170: stable per-install row id — request_id is stripped below,
211
+ // row_id keeps aggregate dedup + reproducible training splits possible.
212
+ row_id: hashRequestIdForTelemetryExport(record.request_id, pepper),
190
213
  session_id_hash: resolveSessionIdHash(record, outcomes, pepper),
191
214
  turn_type: record.turn_type,
192
215
  stage: record.stage,
@@ -196,6 +219,11 @@ export function toTelemetryContribRecord(record, outcomes = [], pepper) {
196
219
  routing_latency_ms: record.routing_latency_ms,
197
220
  estimated_cost_usd: record.estimated_cost_usd,
198
221
  estimated_input_tokens: record.estimated_input_tokens,
222
+ // SP-285 / #170: prompt_length_chars + message_count were previously
223
+ // dropped on this path, starving the P(success) prompt_length feature
224
+ // (Sept dogfood coefficient → 0) and edit-distance proxies.
225
+ prompt_length_chars: record.prompt_length_chars,
226
+ message_count: record.message_count,
199
227
  has_tool_context: record.has_tool_context,
200
228
  compaction_flag: record.compaction_flag,
201
229
  triage_verdict: record.triage_verdict,
@@ -218,6 +246,9 @@ export function toTelemetryContribRecord(record, outcomes = [], pepper) {
218
246
  success_label: success,
219
247
  outcome_signals,
220
248
  };
249
+ if (includeEmbeddings && record.embedding !== null) {
250
+ contrib.embedding = record.embedding;
251
+ }
221
252
  for (const key of TELEMETRY_CONTRIB_STRIP_KEYS) {
222
253
  delete contrib[key];
223
254
  }
@@ -246,11 +277,11 @@ export function validateTelemetryContribRecord(record, context) {
246
277
  assertTelemetryContribRecordSafe(record, context);
247
278
  return sanitizeTelemetryContribRecord(record);
248
279
  }
249
- export function buildTelemetryContribRecords(datasetRecords, outcomeRecords = [], pepper) {
280
+ export function buildTelemetryContribRecords(datasetRecords, outcomeRecords = [], pepper, options) {
250
281
  const outcomesByRequest = indexOutcomesByRequestId(outcomeRecords);
251
282
  return datasetRecords.map((record) => {
252
283
  const linkedOutcomes = outcomesByRequest.get(record.request_id) ?? [];
253
- const contrib = toTelemetryContribRecord(record, linkedOutcomes, pepper);
284
+ const contrib = toTelemetryContribRecord(record, linkedOutcomes, pepper, options);
254
285
  validateTelemetryContribRecord(contrib, record.request_id);
255
286
  return contrib;
256
287
  });
@@ -262,7 +293,9 @@ export async function exportTelemetryContrib(ctx, options) {
262
293
  // install but never correlatable across installs (SP-249/SP-250). Loaded
263
294
  // lazily — no pepper file is created when there is nothing to export.
264
295
  const pepper = datasetRecords.length > 0 ? loadOrCreateDatasetPepper(ctx.cwd) : undefined;
265
- const records = buildTelemetryContribRecords(datasetRecords, outcomeRecords, pepper);
296
+ const records = buildTelemetryContribRecords(datasetRecords, outcomeRecords, pepper, {
297
+ includeEmbeddings: ctx.includeEmbeddings,
298
+ });
266
299
  const json = formatTelemetryContribJson(records);
267
300
  if (records.length === 0 || options?.writeFile === false) {
268
301
  return { path: null, recordCount: records.length, json };
@@ -275,7 +308,7 @@ export async function exportTelemetryContrib(ctx, options) {
275
308
  return { path: exportPath, recordCount: records.length, json };
276
309
  }
277
310
  /** Join dataset export shape with outcome labels, then strip to contrib-safe fields. */
278
- export function datasetExportRowToTelemetryContrib(exportRecord, outcomes, pepper) {
311
+ export function datasetExportRowToTelemetryContrib(exportRecord, outcomes, pepper, options) {
279
312
  const joined = attachOutcomeLabelsToExport(exportRecord, outcomes);
280
313
  const contrib = {
281
314
  version: TELEMETRY_CONTRIB_VERSION,
@@ -284,6 +317,13 @@ export function datasetExportRowToTelemetryContrib(exportRecord, outcomes, peppe
284
317
  for (const key of TELEMETRY_CONTRIB_STRIP_KEYS) {
285
318
  delete contrib[key];
286
319
  }
320
+ // SP-285 / #170: stable per-install row id (raw request_id stripped above).
321
+ if (typeof exportRecord.row_id === 'string' && exportRecord.row_id.length > 0) {
322
+ contrib.row_id = exportRecord.row_id;
323
+ }
324
+ else if (typeof exportRecord.request_id === 'string' && exportRecord.request_id.length > 0) {
325
+ contrib.row_id = hashRequestIdForTelemetryExport(exportRecord.request_id, pepper);
326
+ }
287
327
  if (typeof exportRecord.session_id_hash === 'string') {
288
328
  contrib.session_id_hash = exportRecord.session_id_hash;
289
329
  }
@@ -291,6 +331,11 @@ export function datasetExportRowToTelemetryContrib(exportRecord, outcomes, peppe
291
331
  contrib.session_id_hash = hashSessionIdForTelemetryExport(exportRecord.session_id, pepper);
292
332
  }
293
333
  delete contrib.session_id;
334
+ // SP-285 / #170: community contrib rows omit captured embeddings unless the
335
+ // operator explicitly opts in with --embeddings.
336
+ if (!(options?.includeEmbeddings ?? false)) {
337
+ delete contrib.embedding;
338
+ }
294
339
  return validateTelemetryContribRecord(contrib);
295
340
  }
296
341
  export const smartRouterCliSubcommands = {
@@ -1 +1 @@
1
- {"version":3,"file":"smart-router-cli.js","sourceRoot":"","sources":["../../src/cli/smart-router-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smart-router-cli.js","sourceRoot":"","sources":["../../src/cli/smart-router-cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAWL,KAAK,cAAc,EACpB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,iCAAiC,EACjC,yBAAyB,EACzB,gCAAgC,EAChC,mBAAmB,EACnB,kCAAkC,EAClC,4BAA4B,EAC5B,qCAAqC,EACrC,oCAAoC,EACpC,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AAEpC,4GAA4G;AAC5G,wBAAgB,4BAA4B,CAC1C,IAAI,GAAE,cAAwC,GAC7C,cAAc,CAOhB;AAED,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,cAAc,CAuCnD,CAAC"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAYL,KAAK,cAAc,EACpB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,iCAAiC,EACjC,yBAAyB,EACzB,gCAAgC,EAChC,mBAAmB,EACnB,kCAAkC,EAClC,4BAA4B,EAC5B,qCAAqC,EACrC,oCAAoC,EACpC,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AAEpC,4GAA4G;AAC5G,wBAAgB,4BAA4B,CAC1C,IAAI,GAAE,cAAwC,GAC7C,cAAc,CAOhB;AAED,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,cAAc,CAyCnD,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * Operator configuration defaults (FR-021).
3
3
  * Values sourced from specs/001-build-smart-router/data-model.md § Configuration (Operator).
4
4
  */
5
- import { DEFAULT_ADAPTIVE_REASONING_CONFIG, DEFAULT_DEGRADED_ROUTE_CONFIG, DEFAULT_LOCAL_ZERO_CONFIG, DEFAULT_PLANNING_DELEGATE_CONFIG, DEFAULT_SAAR_CONFIG, DEFAULT_SPECULATIVE_PREWARM_CONFIG, DEFAULT_WORKLOAD_HEAT_CONFIG, resolveAdaptiveReasoningConfigFromEnv, resolvePlanningDelegateConfigFromEnv, resolveSaarConfigFromEnv, } from '../domain/types/schemas.js';
5
+ import { DEFAULT_ADAPTIVE_REASONING_CONFIG, DEFAULT_DEGRADED_ROUTE_CONFIG, DEFAULT_ENCODER_CASCADE_CONFIG, DEFAULT_LOCAL_ZERO_CONFIG, DEFAULT_PLANNING_DELEGATE_CONFIG, DEFAULT_SAAR_CONFIG, DEFAULT_SPECULATIVE_PREWARM_CONFIG, DEFAULT_WORKLOAD_HEAT_CONFIG, resolveAdaptiveReasoningConfigFromEnv, resolvePlanningDelegateConfigFromEnv, resolveSaarConfigFromEnv, } from '../domain/types/schemas.js';
6
6
  import { DEFAULT_LOW_INTENSITY_WEIGHTS } from '../domain/routing/tier-features.js';
7
7
  export { DEFAULT_ADAPTIVE_REASONING_CONFIG, DEFAULT_LOCAL_ZERO_CONFIG, DEFAULT_PLANNING_DELEGATE_CONFIG, DEFAULT_SAAR_CONFIG, DEFAULT_SPECULATIVE_PREWARM_CONFIG, DEFAULT_WORKLOAD_HEAT_CONFIG, resolveAdaptiveReasoningConfigFromEnv, resolvePlanningDelegateConfigFromEnv, resolveSaarConfigFromEnv, } from '../domain/types/schemas.js';
8
8
  /** Merge operator env overrides onto defaults (adaptive reasoning, SAAR and planning delegate sections). */
@@ -34,6 +34,8 @@ export const DEFAULT_OPERATOR_CONFIG = {
34
34
  hydra: {
35
35
  artifact_cache_path: '.pi-smart-router/models/',
36
36
  encoder: 'minilm',
37
+ /** Opt-in encoder cascade (SP-291, #173): default off. */
38
+ encoder_cascade: DEFAULT_ENCODER_CASCADE_CONFIG,
37
39
  hydra_heads: 'learned_projection',
38
40
  },
39
41
  low_intensity: {
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,iCAAiC,EACjC,6BAA6B,EAC7B,yBAAyB,EACzB,gCAAgC,EAChC,mBAAmB,EACnB,kCAAkC,EAClC,4BAA4B,EAC5B,qCAAqC,EACrC,oCAAoC,EACpC,wBAAwB,GAEzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAEnF,OAAO,EACL,iCAAiC,EACjC,yBAAyB,EACzB,gCAAgC,EAChC,mBAAmB,EACnB,kCAAkC,EAClC,4BAA4B,EAC5B,qCAAqC,EACrC,oCAAoC,EACpC,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AAEpC,4GAA4G;AAC5G,MAAM,UAAU,4BAA4B,CAC1C,OAAuB,uBAAuB;IAE9C,OAAO;QACL,GAAG,IAAI;QACP,kBAAkB,EAAE,qCAAqC,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAClF,IAAI,EAAE,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;QACzC,iBAAiB,EAAE,oCAAoC,CAAC,IAAI,CAAC,iBAAiB,CAAC;KAChF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAA6B;IAC/D,SAAS,EAAE;QACT,WAAW,EAAE,GAAG;QAChB,cAAc,EAAE,GAAG;QACnB,gBAAgB,EAAE,IAAI;KACvB;IACD,eAAe,EAAE;QACf,SAAS,EAAE,CAAC;KACb;IACD,OAAO,EAAE;QACP,cAAc,EAAE,EAAE;KACnB;IACD,KAAK,EAAE;QACL,kBAAkB,EAAE,EAAE;QACtB,4BAA4B,EAAE,CAAC;QAC/B,qBAAqB,EAAE,EAAE;KAC1B;IACD,KAAK,EAAE;QACL,mBAAmB,EAAE,0BAA0B;QAC/C,OAAO,EAAE,QAAQ;QACjB,WAAW,EAAE,oBAAoB;KAClC;IACD,aAAa,EAAE;QACb,OAAO,EAAE,6BAA6B;QACtC,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,IAAI;QACnB,eAAe,EAAE,GAAG;KACrB;IACD,IAAI,EAAE,mBAAmB;IACzB,iBAAiB,EAAE,gCAAgC;IACnD,UAAU,EAAE,yBAAyB;IACrC,cAAc,EAAE,6BAA6B;IAC7C,8EAA8E;IAC9E,aAAa,EAAE,4BAA4B;IAC3C,mFAAmF;IACnF,mBAAmB,EAAE,kCAAkC;IACvD,8EAA8E;IAC9E,kBAAkB,EAAE,iCAAiC;IACrD,iBAAiB,EAAE,KAAK;CAChB,CAAC"}
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,iCAAiC,EACjC,6BAA6B,EAC7B,8BAA8B,EAC9B,yBAAyB,EACzB,gCAAgC,EAChC,mBAAmB,EACnB,kCAAkC,EAClC,4BAA4B,EAC5B,qCAAqC,EACrC,oCAAoC,EACpC,wBAAwB,GAEzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAEnF,OAAO,EACL,iCAAiC,EACjC,yBAAyB,EACzB,gCAAgC,EAChC,mBAAmB,EACnB,kCAAkC,EAClC,4BAA4B,EAC5B,qCAAqC,EACrC,oCAAoC,EACpC,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AAEpC,4GAA4G;AAC5G,MAAM,UAAU,4BAA4B,CAC1C,OAAuB,uBAAuB;IAE9C,OAAO;QACL,GAAG,IAAI;QACP,kBAAkB,EAAE,qCAAqC,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAClF,IAAI,EAAE,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;QACzC,iBAAiB,EAAE,oCAAoC,CAAC,IAAI,CAAC,iBAAiB,CAAC;KAChF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAA6B;IAC/D,SAAS,EAAE;QACT,WAAW,EAAE,GAAG;QAChB,cAAc,EAAE,GAAG;QACnB,gBAAgB,EAAE,IAAI;KACvB;IACD,eAAe,EAAE;QACf,SAAS,EAAE,CAAC;KACb;IACD,OAAO,EAAE;QACP,cAAc,EAAE,EAAE;KACnB;IACD,KAAK,EAAE;QACL,kBAAkB,EAAE,EAAE;QACtB,4BAA4B,EAAE,CAAC;QAC/B,qBAAqB,EAAE,EAAE;KAC1B;IACD,KAAK,EAAE;QACL,mBAAmB,EAAE,0BAA0B;QAC/C,OAAO,EAAE,QAAQ;QACjB,0DAA0D;QAC1D,eAAe,EAAE,8BAA8B;QAC/C,WAAW,EAAE,oBAAoB;KAClC;IACD,aAAa,EAAE;QACb,OAAO,EAAE,6BAA6B;QACtC,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,IAAI;QACnB,eAAe,EAAE,GAAG;KACrB;IACD,IAAI,EAAE,mBAAmB;IACzB,iBAAiB,EAAE,gCAAgC;IACnD,UAAU,EAAE,yBAAyB;IACrC,cAAc,EAAE,6BAA6B;IAC7C,8EAA8E;IAC9E,aAAa,EAAE,4BAA4B;IAC3C,mFAAmF;IACnF,mBAAmB,EAAE,kCAAkC;IACvD,8EAA8E;IAC9E,kBAAkB,EAAE,iCAAiC;IACrD,iBAAiB,EAAE,KAAK;CAChB,CAAC"}
@@ -5,7 +5,8 @@
5
5
  * matching. One ONNX session per instance; share across matchers via a single
6
6
  * factory call and coordinated dispose().
7
7
  */
8
- import type { Encoder } from '../types/schemas.js';
8
+ import type { Encoder, EncoderCascadeConfig } from '../types/schemas.js';
9
+ import { type EncoderGateReasonCode } from './encoder-gate.js';
9
10
  export declare const EMBEDDING_DIM = 384;
10
11
  /** MiniLM ONNX model (384-dim, 512-token context). */
11
12
  export declare const MINILM_ONNX_MODEL = "Xenova/all-MiniLM-L6-v2";
@@ -70,4 +71,65 @@ export declare function createOnnxTextEmbedder(artifactCachePath: string, pinOpt
70
71
  export declare function createGraniteOnnxTextEmbedder(artifactCachePath: string, pinOptions?: OnnxPinOptions): Promise<TextEmbedder>;
71
72
  /** Select ONNX text embedder by operator encoder flag. */
72
73
  export declare function createTextEmbedder(encoder: Encoder | undefined, artifactCachePath: string, pinOptions?: OnnxPinOptions): Promise<TextEmbedder>;
74
+ /**
75
+ * Decision telemetry for the most recent cascade embed. Mirrors the routing
76
+ * feature-sidecar fields from #173 so the pipeline can copy them onto live
77
+ * decisions without reshaping (SP-292).
78
+ */
79
+ export interface CascadeEmbedderTelemetry {
80
+ /** Encoder that produced the embedding (never mixed across spaces). */
81
+ readonly encoder_selected: Encoder;
82
+ /** Gate token estimate for the embedded prompt. */
83
+ readonly token_estimate: number;
84
+ /** Configured cascade threshold in effect for the decision. */
85
+ readonly cascade_threshold: number;
86
+ /** SP-291 gate reason code (`under_threshold` / `over_threshold` / `granite_fallback`). */
87
+ readonly reason_code: EncoderGateReasonCode;
88
+ /**
89
+ * Present when an over-threshold prompt degraded to the primary encoder
90
+ * because the long-context session was unavailable (degrade, never mix).
91
+ */
92
+ readonly cascade_fallback_reason: EncoderGateReasonCode | null;
93
+ }
94
+ export interface CascadingTextEmbedder extends TextEmbedder {
95
+ /**
96
+ * Telemetry from the most recently completed embed(); null before the
97
+ * first embed. Concurrent embeds race on this snapshot — callers on the
98
+ * routing hot path embed sequentially per request.
99
+ */
100
+ lastTelemetry(): CascadeEmbedderTelemetry | null;
101
+ }
102
+ /** Type guard: does this embedder carry cascade decision telemetry? */
103
+ export declare function isCascadingTextEmbedder(embedder: TextEmbedder): embedder is CascadingTextEmbedder;
104
+ export interface CreateCascadingTextEmbedderOptions {
105
+ readonly pinOptions?: OnnxPinOptions;
106
+ /**
107
+ * Primary encoder for under-threshold / fallback embeds.
108
+ * Default: DEFAULT_ENCODER ('minilm'), matching `hydra.encoder` defaults.
109
+ */
110
+ readonly primaryEncoder?: Encoder;
111
+ /**
112
+ * Session factory override for tests. Default: createTextEmbedder bound to
113
+ * the cascade artifact cache path and pin options.
114
+ */
115
+ readonly sessionFactory?: (encoder: Encoder) => Promise<TextEmbedder>;
116
+ }
117
+ /**
118
+ * Lazy dual-session cascading embedder (SP-292, #173 part 2).
119
+ *
120
+ * Owns at most one ONNX session per encoder: the primary session loads on the
121
+ * first embed, the long-context (Granite) session loads only on the first
122
+ * over-threshold prompt — memory is paid only when the path fires. Selection
123
+ * is the SP-291 pure gate; token estimates default to prompt length (the
124
+ * turn-envelope-parity estimator).
125
+ *
126
+ * Failure behavior: degrade, never mix. If the long-context session fails to
127
+ * load or embed, the request is served by the primary encoder with reason
128
+ * code `granite_fallback` and the long-context encoder is marked unavailable
129
+ * for subsequent prompts. Never silently compares cross-encoder vectors.
130
+ *
131
+ * dispose() closes every session that was actually loaded (idempotent);
132
+ * embed() after dispose fails closed (SP-260 precedent).
133
+ */
134
+ export declare function createCascadingTextEmbedder(config: EncoderCascadeConfig, artifactCachePath: string, options?: CreateCascadingTextEmbedderOptions): CascadingTextEmbedder;
73
135
  //# sourceMappingURL=embedding-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"embedding-provider.d.ts","sourceRoot":"","sources":["../../../src/domain/matching/embedding-provider.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAGnD,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,4BAA4B,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,kBAAkB,8DAC8B,CAAC;AAE9D,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAID;;;;;;;;;GASG;AACH,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE/D,eAAO,MAAM,uBAAuB,EAAE,SAAS,mBAAmB,EAIjE,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,qBAAqB,mCAAmC,CAAC;AAEtE,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,+BAA+B,CAAC;AAC9D,eAAO,MAAM,iBAAiB,+BAA+B,CAAC;AAE9D,+EAA+E;AAC/E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IACvC,uFAAuF;IACvF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AA6FD;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC,CAuCf;AA0GD;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,iBAAiB,EAAE,MAAM,EACzB,UAAU,CAAC,EAAE,cAAc,GAC1B,OAAO,CAAC,YAAY,CAAC,CAEvB;AAED;;;GAGG;AACH,wBAAsB,6BAA6B,CACjD,iBAAiB,EAAE,MAAM,EACzB,UAAU,CAAC,EAAE,cAAc,GAC1B,OAAO,CAAC,YAAY,CAAC,CAEvB;AAED,0DAA0D;AAC1D,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,OAAO,YAAkB,EAClC,iBAAiB,EAAE,MAAM,EACzB,UAAU,CAAC,EAAE,cAAc,GAC1B,OAAO,CAAC,YAAY,CAAC,CAWvB"}
1
+ {"version":3,"file":"embedding-provider.d.ts","sourceRoot":"","sources":["../../../src/domain/matching/embedding-provider.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ import { createHash } from 'node:crypto';
9
9
  import { promises as fs } from 'node:fs';
10
10
  import path from 'node:path';
11
11
  import { DEFAULT_ENCODER } from '../types/schemas.js';
12
+ import { selectEncoderForPrompt, } from './encoder-gate.js';
12
13
  export const EMBEDDING_DIM = 384;
13
14
  /** MiniLM ONNX model (384-dim, 512-token context). */
14
15
  export const MINILM_ONNX_MODEL = 'Xenova/all-MiniLM-L6-v2';
@@ -222,4 +223,120 @@ export async function createTextEmbedder(encoder = DEFAULT_ENCODER, artifactCach
222
223
  }
223
224
  }
224
225
  }
226
+ /** Type guard: does this embedder carry cascade decision telemetry? */
227
+ export function isCascadingTextEmbedder(embedder) {
228
+ return (typeof embedder.lastTelemetry ===
229
+ 'function');
230
+ }
231
+ /**
232
+ * Lazy dual-session cascading embedder (SP-292, #173 part 2).
233
+ *
234
+ * Owns at most one ONNX session per encoder: the primary session loads on the
235
+ * first embed, the long-context (Granite) session loads only on the first
236
+ * over-threshold prompt — memory is paid only when the path fires. Selection
237
+ * is the SP-291 pure gate; token estimates default to prompt length (the
238
+ * turn-envelope-parity estimator).
239
+ *
240
+ * Failure behavior: degrade, never mix. If the long-context session fails to
241
+ * load or embed, the request is served by the primary encoder with reason
242
+ * code `granite_fallback` and the long-context encoder is marked unavailable
243
+ * for subsequent prompts. Never silently compares cross-encoder vectors.
244
+ *
245
+ * dispose() closes every session that was actually loaded (idempotent);
246
+ * embed() after dispose fails closed (SP-260 precedent).
247
+ */
248
+ export function createCascadingTextEmbedder(config, artifactCachePath, options) {
249
+ const primaryEncoder = options?.primaryEncoder ?? DEFAULT_ENCODER;
250
+ const longContextEncoder = config.long_context_encoder;
251
+ const factory = options?.sessionFactory ??
252
+ ((encoder) => createTextEmbedder(encoder, artifactCachePath, options?.pinOptions));
253
+ const sessions = new Map();
254
+ let longContextAvailable = true;
255
+ let disposed = false;
256
+ let last = null;
257
+ function sessionFor(encoder) {
258
+ let pending = sessions.get(encoder);
259
+ if (pending === undefined) {
260
+ pending = factory(encoder);
261
+ sessions.set(encoder, pending);
262
+ // A rejected session promise must not be cached forever — drop it so a
263
+ // later retry observes a fresh load attempt.
264
+ pending.catch(() => sessions.delete(encoder));
265
+ }
266
+ return pending;
267
+ }
268
+ function telemetry(decision, fallbackReason) {
269
+ return {
270
+ encoder_selected: decision.encoder,
271
+ token_estimate: decision.token_estimate,
272
+ cascade_threshold: config.token_threshold,
273
+ reason_code: fallbackReason ?? decision.reason_code,
274
+ cascade_fallback_reason: fallbackReason,
275
+ };
276
+ }
277
+ return {
278
+ async embed(text) {
279
+ if (disposed) {
280
+ throw new Error('CascadingTextEmbedder has been disposed; embed() fails closed. ' +
281
+ 'Create a new embedder via createCascadingTextEmbedder to continue.');
282
+ }
283
+ const decision = selectEncoderForPrompt(text, config, {
284
+ primaryEncoder,
285
+ longContextAvailable,
286
+ });
287
+ if (decision.encoder === longContextEncoder && longContextAvailable) {
288
+ try {
289
+ const session = await sessionFor(longContextEncoder);
290
+ const vector = await session.embed(text);
291
+ last = telemetry(decision, null);
292
+ return vector;
293
+ }
294
+ catch (error) {
295
+ // Degrade, never mix (#173): Granite session/artifacts unavailable →
296
+ // serve with the primary encoder and make the fallback explicit.
297
+ longContextAvailable = false;
298
+ sessions.delete(longContextEncoder);
299
+ console.warn('Encoder cascade: long-context encoder unavailable; degrading to primary encoder (granite_fallback)', {
300
+ long_context_encoder: longContextEncoder,
301
+ primary_encoder: primaryEncoder,
302
+ token_estimate: decision.token_estimate,
303
+ error: error instanceof Error ? error.message : String(error),
304
+ });
305
+ const session = await sessionFor(primaryEncoder);
306
+ const vector = await session.embed(text);
307
+ last = telemetry({ ...decision, encoder: primaryEncoder }, 'granite_fallback');
308
+ return vector;
309
+ }
310
+ }
311
+ const session = await sessionFor(primaryEncoder);
312
+ const vector = await session.embed(text);
313
+ last = telemetry({ ...decision, encoder: primaryEncoder }, decision.reason_code === 'granite_fallback' ? 'granite_fallback' : null);
314
+ return vector;
315
+ },
316
+ lastTelemetry() {
317
+ return last;
318
+ },
319
+ async dispose() {
320
+ if (disposed)
321
+ return; // idempotent: safe for shared-factory callers
322
+ disposed = true;
323
+ const pending = [...sessions.values()];
324
+ sessions.clear();
325
+ const failures = [];
326
+ for (const sessionPromise of pending) {
327
+ try {
328
+ const session = await sessionPromise;
329
+ await session.dispose();
330
+ }
331
+ catch (error) {
332
+ failures.push(error instanceof Error ? error.message : String(error));
333
+ }
334
+ }
335
+ // Fail loud: partially released cascade sessions must not pass silently.
336
+ if (failures.length > 0) {
337
+ throw new Error(`CascadingTextEmbedder dispose failed for ${failures.length} session(s): ${failures.join('; ')}`);
338
+ }
339
+ },
340
+ };
341
+ }
225
342
  //# sourceMappingURL=embedding-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"embedding-provider.js","sourceRoot":"","sources":["../../../src/domain/matching/embedding-provider.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AAEjC,sDAAsD;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,yBAAyB,CAAC;AAE3D;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAC7B,2DAA2D,CAAC;AAqB9D,MAAM,CAAC,MAAM,uBAAuB,GAAmC;IACrE,KAAK;IACL,QAAQ;IACR,SAAS;CACV,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,qBAAqB,GAAG,gCAAgC,CAAC;AAEtE,6EAA6E;AAC7E,MAAM,CAAC,MAAM,iBAAiB,GAAG,4BAA4B,CAAC;AAC9D,MAAM,CAAC,MAAM,iBAAiB,GAAG,4BAA4B,CAAC;AAe9D,MAAM,UAAU,GAAG,gBAAgB,CAAC;AAEpC,SAAS,cAAc,CAAC,OAAwB;IAC9C,MAAM,GAAG,GAAG,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC;IACxE,IAAK,uBAA6C,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACjE,OAAO,GAA0B,CAAC;IACpC,CAAC;IACD,MAAM,IAAI,KAAK,CACb,mCAAmC,GAAG,MAAM,iBAAiB,KAAK;QAChE,oBAAoB,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3D,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,WAAmB,EACnB,IAAyB;IAEzB,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,oEAAoE,WAAW,gBAAgB,CAChG,CAAC;QACJ,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,0BAA0B,WAAW,kCAAkC,CACxE,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,MAAsC,CAAC;IACzD,IACE,OAAO,SAAS,KAAK,QAAQ;QAC7B,SAAS,KAAK,IAAI;QAClB,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ;QAClC,SAAS,CAAC,IAAI,KAAK,IAAI,EACvB,CAAC;QACD,MAAM,IAAI,KAAK,CACb,0BAA0B,WAAW,6CAA6C,CACnF,CAAC;IACJ,CAAC;IACD,OAAO,SAAgC,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,QAAgB;IACxC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,kBAAkB,CAC/B,SAAiB,EACjB,OAAe,EACf,OAAe;IAEf,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACpD,IAAI,MAAM,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAExC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/E,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACpD,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACtD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC7D,IAAI,MAAM,UAAU,CAAC,SAAS,CAAC;gBAAE,OAAO,SAAS,CAAC;QACpD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,uCAAuC;IACzC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAe,EACf,SAAiB,EACjB,OAAwB;IAExB,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO;IAE3B,MAAM,WAAW,GACf,OAAO,EAAE,WAAW;QACpB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAC9B,qBAAqB,CAAC;IACxB,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAEzC,IAAI,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,sDAAsD,OAAO,OAAO,WAAW,gBAAgB,CAChG,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,6DAA6D;IACvE,CAAC;IAED,KAAK,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAClE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CACb,2BAA2B,OAAO,IAAI,OAAO,OAAO,WAAW,MAAM,cAAc,iBAAiB,CACrG,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACrE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,4CAA4C,OAAO,IAAI,OAAO,UAAU,SAAS,gBAAgB,CAClG,CAAC;QACJ,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,YAAY,KAAK,cAAc,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CACb,qCAAqC,OAAO,IAAI,OAAO,qBAAqB,cAAc,SAAS,YAAY,KAAK,MAAM,mCAAmC,CAC9J,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AA+BD,KAAK,UAAU,sBAAsB;IACnC,MAAM,UAAU,GAAG,2BAA2B,CAAC;IAC/C,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAuB,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,2BAA2B,UAAU,oBAAoB,UAAU,EAAE,CACtE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,OAAe,EACf,iBAAyB,EACzB,UAA2B;IAE3B,MAAM,GAAG,GAAG,MAAM,sBAAsB,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAiB,MAAM,GAAG,CAAC,QAAQ,CAChD,oBAAoB,EACpB,OAAO,EACP,EAAE,SAAS,EAAE,iBAAiB,EAAE,CACjC,CAAC;IAEF,6EAA6E;IAC7E,qEAAqE;IACrE,MAAM,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;IAErE,uEAAuE;IACvE,gEAAgE;IAChE,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,IAAY;YACtB,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CACb,oBAAoB,OAAO,4CAA4C;oBACrE,2DAA2D,CAC9D,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE;gBACnC,OAAO,EAAE,MAAM;gBACf,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;gBACzC,MAAM,IAAI,KAAK,CACb,sCAAsC,aAAa,SAAS,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CACjF,CAAC;YACJ,CAAC;YACD,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,CAAC;QAED,KAAK,CAAC,OAAO;YACX,IAAI,QAAQ;gBAAE,OAAO,CAAC,8CAA8C;YACpE,QAAQ,GAAG,IAAI,CAAC;YAChB,sEAAsE;YACtE,uEAAuE;YACvE,wEAAwE;YACxE,mCAAmC;YACnC,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC5C,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;gBAC1B,OAAO;YACT,CAAC;YACD,IAAI,OAAO,SAAS,CAAC,KAAK,EAAE,OAAO,KAAK,UAAU,EAAE,CAAC;gBACnD,MAAM,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBAChC,OAAO;YACT,CAAC;YACD,MAAM,IAAI,KAAK,CACb,+DAA+D,OAAO,IAAI;gBACxE,uEAAuE;gBACvE,4CAA4C,CAC/C,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,iBAAyB,EACzB,UAA2B;IAE3B,OAAO,yBAAyB,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;AACrF,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,iBAAyB,EACzB,UAA2B;IAE3B,OAAO,yBAAyB,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;AACtF,CAAC;AAED,0DAA0D;AAC1D,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,UAAmB,eAAe,EAClC,iBAAyB,EACzB,UAA2B;IAE3B,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,SAAS;YACZ,OAAO,6BAA6B,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;QACtE,KAAK,QAAQ;YACX,OAAO,sBAAsB,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;QAC/D,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,OAAO,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"embedding-provider.js","sourceRoot":"","sources":["../../../src/domain/matching/embedding-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Encoder cascade gate (SP-291, #173 part 1) — pure domain, unit-testable.
3
+ *
4
+ * Opt-in per-prompt encoder selection: when `hydra.encoder_cascade.enabled`
5
+ * is true, prompts whose estimated token count reaches `token_threshold` are
6
+ * routed to the long-context encoder (Granite 97M, SP-156) instead of the
7
+ * primary `hydra.encoder` (MiniLM, 512-token window). Default off: existing
8
+ * single-encoder installs are unaffected and pay zero added cost — the gate
9
+ * is pre-embedding arithmetic only.
10
+ *
11
+ * Token estimate parity: this module reuses the same estimator as the
12
+ * turn-envelope stage (`src/domain/pipeline/turn-envelope-stage.ts`):
13
+ * `estimated_input_tokens ?? prompt_text.length`. Callers pass
14
+ * `RoutingRequest.estimated_input_tokens` via options when present; the
15
+ * fallback is the prompt's character length.
16
+ *
17
+ * Hard constraint (#173): encoders embed into different vector spaces — the
18
+ * gate only SELECTS an encoder; per-encoder artifacts (centroids, learned
19
+ * projection) and the cascading embedder land in SP-292. Never mix spaces.
20
+ */
21
+ import type { Encoder, EncoderCascadeConfig } from '../types/schemas.js';
22
+ /** Gate outcomes per #173; attached to decision telemetry. */
23
+ export type EncoderGateReasonCode =
24
+ /** Cascade disabled — every prompt uses the primary encoder. */
25
+ 'cascade_disabled'
26
+ /** Estimate below the configured threshold — primary encoder. */
27
+ | 'under_threshold'
28
+ /** Estimate at/over the threshold — long-context encoder selected. */
29
+ | 'over_threshold'
30
+ /**
31
+ * Over threshold but the long-context encoder is unavailable — degrade to
32
+ * the primary encoder (continuity of routing wins; never mix vector spaces).
33
+ */
34
+ | 'granite_fallback';
35
+ export interface EncoderGateDecision {
36
+ readonly encoder: Encoder;
37
+ readonly reason_code: EncoderGateReasonCode;
38
+ readonly token_estimate: number;
39
+ }
40
+ export interface EncoderGateOptions {
41
+ /**
42
+ * Precomputed token estimate — pass `RoutingRequest.estimated_input_tokens`
43
+ * when set. Falls back to `prompt.length`, exactly mirroring the
44
+ * turn-envelope stage estimator (`estimated_input_tokens ?? prompt_text.length`).
45
+ */
46
+ readonly estimatedTokens?: number | undefined;
47
+ /**
48
+ * Primary encoder used when the cascade is disabled or does not fire.
49
+ * Default: DEFAULT_ENCODER ('minilm'), matching `hydra.encoder` defaults.
50
+ */
51
+ readonly primaryEncoder?: Encoder | undefined;
52
+ /**
53
+ * Long-context encoder availability signal (SP-292 embedder layer owns
54
+ * session/artifact health). When explicitly false, an over-threshold prompt
55
+ * degrades to the primary encoder with reason `granite_fallback`.
56
+ * Default: assumed available.
57
+ */
58
+ readonly longContextAvailable?: boolean;
59
+ }
60
+ /**
61
+ * Turn-envelope-parity token estimator: a caller-supplied estimate wins;
62
+ * otherwise the prompt's character length is the proxy (same formula as
63
+ * `turn-envelope-stage.ts` step 2b breakeven arithmetic).
64
+ */
65
+ export declare function estimatePromptTokens(prompt: string, estimatedTokens?: number): number;
66
+ /**
67
+ * Select the encoder for a prompt. Pure: no I/O, no ONNX sessions.
68
+ *
69
+ * Boundary semantics (per #173 eval table): `token_estimate >= token_threshold`
70
+ * routes to the long-context encoder; strictly below stays on the primary.
71
+ */
72
+ export declare function selectEncoderForPrompt(prompt: string, config: EncoderCascadeConfig, options?: EncoderGateOptions): EncoderGateDecision;
73
+ //# sourceMappingURL=encoder-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoder-gate.d.ts","sourceRoot":"","sources":["../../../src/domain/matching/encoder-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGzE,8DAA8D;AAC9D,MAAM,MAAM,qBAAqB;AAC/B,gEAAgE;AAC9D,kBAAkB;AACpB,iEAAiE;GAC/D,iBAAiB;AACnB,sEAAsE;GACpE,gBAAgB;AAClB;;;GAGG;GACD,kBAAkB,CAAC;AAEvB,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,qBAAqB,CAAC;IAC5C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9C;;;;;OAKG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CACzC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,eAAe,CAAC,EAAE,MAAM,GACvB,MAAM,CAER;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,oBAAoB,EAC5B,OAAO,CAAC,EAAE,kBAAkB,GAC3B,mBAAmB,CAiCrB"}